1. define -D_THREAD_SAFE, not -D_REENTRANT for MT programs under FreeBSD

(not as if it really helped with my test system, they still crash)
2. don't link with gthread if --disable-threads was specified


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13016 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2001-12-14 19:34:00 +00:00
parent e7ca6139d0
commit 3f345b477e
3 changed files with 1156 additions and 740 deletions

180
aclocal.m4 vendored
View File

@@ -10,14 +10,29 @@ dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
dnl PARTICULAR PURPOSE. dnl PARTICULAR PURPOSE.
# Configure paths for GTK+ dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
# Owen Taylor 97-11-3 dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
dnl
dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS. Uses variables
dnl gtk_config_prefix and/or gtk_config_exec_prefix if defined.
AC_DEFUN(AM_PATH_GTK, AC_DEFUN(AM_PATH_GTK,
[ [dnl
dnl Get the cflags and libraries from the gtk-config script
dnl
AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
gtk_config_prefix="$withval", gtk_config_prefix="")
AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
, enable_gtktest=yes)
for module in . $4
do
case "$module" in
gthread)
gtk_config_args="$gtk_config_args gthread"
;;
esac
done
if test x$gtk_config_exec_prefix != x ; then if test x$gtk_config_exec_prefix != x ; then
gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
if test x${GTK_CONFIG+set} != xset ; then if test x${GTK_CONFIG+set} != xset ; then
@@ -35,63 +50,156 @@ AC_DEFUN(AM_PATH_GTK,
min_gtk_version=ifelse([$1], ,0.99.7,$1) min_gtk_version=ifelse([$1], ,0.99.7,$1)
AC_MSG_CHECKING(for GTK - version >= $min_gtk_version) AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
no_gtk="" no_gtk=""
if test "$GTK_CONFIG" != "no" ; then if test "$GTK_CONFIG" = "no" ; then
GTK_CFLAGS=`$GTK_CONFIG --cflags` no_gtk=yes
GTK_LIBS=`$GTK_CONFIG --libs gthread` else
ac_save_CFLAGS="$CFLAGS" GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
ac_save_LIBS="$LIBS" GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
CFLAGS="$CFLAGS $GTK_CFLAGS" gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \
LIBS="$LIBS $GTK_LIBS" sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
if test "x$enable_gtktest" = "xyes" ; then
ac_save_CFLAGS="$CFLAGS"
ac_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $GTK_CFLAGS"
LIBS="$GTK_LIBS $LIBS"
dnl dnl
dnl Now check if the installed GTK is sufficiently new. (Also sanity dnl Now check if the installed GTK is sufficiently new. (Also sanity
dnl checks the results of gtk-config to some extent) dnl checks the results of gtk-config to some extent
dnl dnl
AC_TRY_RUN([ rm -f conf.gtktest
AC_TRY_RUN([
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <gtk/gtkfeatures.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
int int
main () main ()
{ {
int major, minor, micro; int major, minor, micro;
char *tmp_version;
if (sscanf("$min_gtk_version", "%d.%d.%d", &major, &minor, &micro) != 3) { system ("touch conf.gtktest");
/* HP/UX 9 (%@#!) writes to sscanf strings */
tmp_version = g_strdup("$min_gtk_version");
if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
printf("%s, bad version string\n", "$min_gtk_version"); printf("%s, bad version string\n", "$min_gtk_version");
exit(1); exit(1);
} }
if ((GTK_MAJOR_VERSION != gtk_major_version) || if ((gtk_major_version != $gtk_config_major_version) ||
(GTK_MINOR_VERSION != gtk_minor_version) || (gtk_minor_version != $gtk_config_minor_version) ||
(GTK_MICRO_VERSION != gtk_micro_version)) { (gtk_micro_version != $gtk_config_micro_version))
printf("Headers vs. library version mismatch!\n"); {
exit(1); printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
} $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
gtk_major_version, gtk_minor_version, gtk_micro_version);
if (gtk_minor_version == 1) return FALSE; printf ("*** was found! If gtk-config was correct, then it is best\n");
printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
return !((gtk_major_version > major) || printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
((gtk_major_version == major) && (gtk_minor_version > minor)) || printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))); printf("*** required on your system.\n");
printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n");
printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n");
printf("*** before re-running configure\n");
}
#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
(gtk_minor_version != GTK_MINOR_VERSION) ||
(gtk_micro_version != GTK_MICRO_VERSION))
{
printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
printf("*** library (version %d.%d.%d)\n",
gtk_major_version, gtk_minor_version, gtk_micro_version);
}
#endif /* defined (GTK_MAJOR_VERSION) ... */
else
{
if ((gtk_major_version > major) ||
((gtk_major_version == major) && (gtk_minor_version > minor)) ||
((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
{
return 0;
}
else
{
printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
gtk_major_version, gtk_minor_version, gtk_micro_version);
printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
major, minor, micro);
printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
printf("***\n");
printf("*** If you have already installed a sufficiently new version, this error\n");
printf("*** probably means that the wrong copy of the gtk-config shell script is\n");
printf("*** being found. The easiest way to fix this is to remove the old version\n");
printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n");
printf("*** correct copy of gtk-config. (In this case, you will have to\n");
printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
printf("*** so that the correct libraries are found at run-time))\n");
}
}
return 1;
} }
],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
CFLAGS="$ac_save_CFLAGS" CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS" LIBS="$ac_save_LIBS"
else fi
no_gtk=yes
fi fi
if test "x$no_gtk" = x ; then if test "x$no_gtk" = x ; then
AC_MSG_RESULT(yes) AC_MSG_RESULT(yes)
ifelse([$2], , :, [$2]) ifelse([$2], , :, [$2])
else else
AC_MSG_RESULT(no) AC_MSG_RESULT(no)
if test "$GTK_CONFIG" = "no" ; then
echo "*** The gtk-config script installed by GTK could not be found"
echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
echo "*** your path, or set the GTK_CONFIG environment variable to the"
echo "*** full path to gtk-config."
else
if test -f conf.gtktest ; then
:
else
echo "*** Could not run GTK test program, checking why..."
CFLAGS="$CFLAGS $GTK_CFLAGS"
LIBS="$LIBS $GTK_LIBS"
AC_TRY_LINK([
#include <gtk/gtk.h>
#include <stdio.h>
], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
[ echo "*** The test program compiled, but did not run. This usually means"
echo "*** that the run-time linker is not finding GTK or finding the wrong"
echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
echo "*** to the installed location Also, make sure you have run ldconfig if that"
echo "*** is required on your system"
echo "***"
echo "*** If you have an old version installed, it is best to remove it, although"
echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
echo "***"
echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
echo "*** came with the system with the command"
echo "***"
echo "*** rpm --erase --nodeps gtk gtk-devel" ],
[ echo "*** The test program failed to compile or link. See the file config.log for the"
echo "*** exact error that occured. This usually means GTK was incorrectly installed"
echo "*** or that you have moved GTK since it was installed. In the latter case, you"
echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ])
CFLAGS="$ac_save_CFLAGS"
LIBS="$ac_save_LIBS"
fi
fi
GTK_CFLAGS="" GTK_CFLAGS=""
GTK_LIBS="" GTK_LIBS=""
ifelse([$3], , :, [$3]) ifelse([$3], , :, [$3])
fi fi
AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_CFLAGS)
AC_SUBST(GTK_LIBS) AC_SUBST(GTK_LIBS)
rm -f conf.gtktest
]) ])
dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])

1692
configure vendored

File diff suppressed because it is too large Load Diff

View File

@@ -412,6 +412,9 @@ dnl _REENTRANT" and it's easier to just define this symbol for these platforms
dnl than checking it during run-time dnl than checking it during run-time
NEEDS_D_REENTRANT_FOR_R_FUNCS=0 NEEDS_D_REENTRANT_FOR_R_FUNCS=0
dnl the additional define needed for MT programs
CPP_MT_FLAG=-D_REENTRANT
dnl the list of all available toolkits dnl the list of all available toolkits
dnl dnl
dnl update NUM_TOOLKITS calculation below when adding a new toolkit here! dnl update NUM_TOOLKITS calculation below when adding a new toolkit here!
@@ -492,6 +495,7 @@ case "${host}" in
*-*-freebsd*) *-*-freebsd*)
USE_BSD=1 USE_BSD=1
USE_FREEBSD=1 USE_FREEBSD=1
CPP_MT_FLAG=-D_THREAD_SAFE
AC_DEFINE(__FREEBSD__) AC_DEFINE(__FREEBSD__)
AC_DEFINE(__BSD__) AC_DEFINE(__BSD__)
DEFAULT_DEFAULT_wxUSE_GTK=1 DEFAULT_DEFAULT_wxUSE_GTK=1
@@ -567,6 +571,7 @@ case "${host}" in
dnl PowerPC Darwin based distributions (including Mac OS X) dnl PowerPC Darwin based distributions (including Mac OS X)
USE_BSD=1 USE_BSD=1
USE_DARWIN=1 USE_DARWIN=1
CPP_MT_FLAG=
SO_SUFFIX=dylib SO_SUFFIX=dylib
AC_DEFINE(__BSD__) AC_DEFINE(__BSD__)
AC_DEFINE(__DARWIN__) AC_DEFINE(__DARWIN__)
@@ -1959,17 +1964,24 @@ if test "$wxUSE_GUI" = "yes"; then
gtk_version_cached=0 gtk_version_cached=0
AC_MSG_RESULT() AC_MSG_RESULT()
dnl we must link against lgthread unless the user
dnl used --disable-threads
GTK_MODULES=
if test "$wxUSE_THREADS" = "yes"; then
GTK_MODULES=gthread
fi
wx_cv_lib_gtk= wx_cv_lib_gtk=
if test "x$wxUSE_GTK2" = "xyes"; then if test "x$wxUSE_GTK2" = "xyes"; then
AM_PATH_GTK_2_0(1.3.1, wx_cv_lib_gtk=2.0, gthread) AM_PATH_GTK_2_0(1.3.1, wx_cv_lib_gtk=2.0, , $GTK_MODULES)
fi fi
if test -z "$wx_cv_lib_gtk"; then if test -z "$wx_cv_lib_gtk"; then
AM_PATH_GTK(1.2.7, wx_cv_lib_gtk=1.2.7) AM_PATH_GTK(1.2.7, wx_cv_lib_gtk=1.2.7, , $GTK_MODULES)
fi fi
if test -z "$wx_cv_lib_gtk"; then if test -z "$wx_cv_lib_gtk"; then
AM_PATH_GTK(1.2.3, wx_cv_lib_gtk=1.2.3) AM_PATH_GTK(1.2.3, wx_cv_lib_gtk=1.2.3, , $GTK_MODULES)
fi fi
if test -z "$wx_cv_lib_gtk"; then if test -z "$wx_cv_lib_gtk"; then
@@ -3434,10 +3446,8 @@ fi
if test "$wxUSE_THREADS" = "yes"; then if test "$wxUSE_THREADS" = "yes"; then
AC_DEFINE(wxUSE_THREADS) AC_DEFINE(wxUSE_THREADS)
dnl must define _REENTRANT for multithreaded code except for Darwin/Mac OS X dnl we must define _REENTRANT or something along these lines for MT code
if test "$USE_DARWIN" != 1; then TOOLCHAIN_DEFS="$TOOLCHAIN_DEFS $CPP_MT_FLAG"
TOOLCHAIN_DEFS="$TOOLCHAIN_DEFS -D_REENTRANT"
fi
SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS thread" SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS thread"
else else