]> git.saurik.com Git - wxWidgets.git/blobdiff - configure.in
this code is now common (src/unix)
[wxWidgets.git] / configure.in
index 836dcafd69d6355fd9e3be0d8661c657929747d3..30088adaf45820eb77a893a043070c2a786f37e0 100644 (file)
@@ -11,7 +11,7 @@ dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
 dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
 dnl
 AC_DEFUN(AM_PATH_GTK,
-[dnl 
+[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],
@@ -51,7 +51,7 @@ dnl
 #include <gtk/gtk.h>
 #include <stdio.h>
 
-int 
+int
 main ()
 {
   int major, minor, micro;
@@ -64,8 +64,8 @@ main ()
    if (gtk_minor_version > 0) return FALSE;
 
    return !((gtk_major_version > major) ||
-           ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
-           ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)));
+           ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
+           ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)));
 }
 ],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
      CFLAGS="$ac_save_CFLAGS"
@@ -75,7 +75,7 @@ main ()
   fi
   if test "x$no_gtk" = x ; then
      AC_MSG_RESULT(yes)
-     ifelse([$2], , :, [$2])     
+     ifelse([$2], , :, [$2])
   else
      AC_MSG_RESULT(no)
      GTK_CFLAGS=""
@@ -185,7 +185,7 @@ AC_DEFUN(AC_INCLUDE_PATH_EXIST,
   if test $result = 0; then
     ac_path_to_include=""
   else
-    ac_path_to_include="-I$1"    
+    ac_path_to_include="-I$1"
   fi
 ])
 
@@ -197,7 +197,7 @@ AC_DEFUN(AC_LINK_PATH_EXIST,
   if test $result = 0; then
     ac_path_to_link=""
   else
-    ac_path_to_link="-L$1"    
+    ac_path_to_link="-L$1"
   fi
 ])
 
@@ -235,10 +235,18 @@ dnl ------------------------------------------------------------------------
 dnl search path for includes and libraries
 dnl ------------------------------------------------------------------------
 
+dnl VZ: added standard locations for Xm.h for Irix, HP-UX and SunOS (19.02.99)
 SEARCH_INCLUDE="\
+    /usr/Motif-1.2/include    \
+    /usr/Motif-2.1/include    \
+                              \
+    /usr/include/Motif1.2     \
+    /opt/xpm/include/X11      \
+                              \
     /usr/Motif1.2/include     \
-    /usr/dt/include/Xm        \
-                             \
+    /usr/dt/include           \
+    /usr/include/Xm           \
+                              \
     /usr/X11R6/include        \
     /usr/X11R5/include        \
     /usr/X11R4/include        \
@@ -279,19 +287,14 @@ SEARCH_INCLUDE="\
     /usr/lpp/Xamples/include  \
                               \
     /usr/local/include/gtk    \
-    /usr/local/include/Xm     \
     /usr/local/include/qt     \
-    /usr/X11R6/include/Xm     \
-    /usr/X11/include/Xm       \
     /usr/include/qt           \
                               \
     /usr/openwin/include      \
     /usr/openwin/share/include \
     "
 
-SEARCH_LIB="`echo "$SEARCH_INCLUDE" | sed s/include/lib/g` \
-    /usr/dt/lib \
-    "
+SEARCH_LIB="`echo "$SEARCH_INCLUDE" | sed s/include/lib/g` "
 
 dnl ------------------------------------------------------------------------
 dnl standard checks
@@ -314,7 +317,7 @@ CFLAGS=`echo "$CFLAGS" | sed 's/-g//g'`
 
 dnl does compiler support -c and -o simultaniously
 AC_PROG_CC_C_O
-dnl   defines NO_MINUS_C_MINUS_O if compiler does not accept 
+dnl   defines NO_MINUS_C_MINUS_O if compiler does not accept
 dnl                              both switches simultaniously
 dnl what is the c-preprocessor
 AC_PROG_CPP
@@ -385,7 +388,7 @@ echo dummy > sub/file
 ${MAKE-make} -f confMake VPATH=sub 2> config.log > /dev/null
 RESULT=$?
 rm -f sub/file check final_file confMake
-rmdir sub 
+rmdir sub
 if test "$RESULT" = 0; then
   AC_MSG_RESULT(yes)
 else
@@ -400,7 +403,7 @@ export MAKE=gmake; ./configure  for sh-type shells
 setenv MAKE gmake; ./configure  for csh-type shells
 Also please do remember to use gmake in this case every time
 you are trying to compile.
-) 
+)
 fi
 
 dnl ####################
@@ -447,7 +450,13 @@ AC_SUBST(GTK_JOYSTICK)
 dnl check for vprintf/vsprintf() which are GNU extensions
 AC_FUNC_VPRINTF
 dnl check for vsnprintf() which is another GNU extension
-AC_CHECK_FUNC(vsnprintf)
+AC_CHECK_FUNCS(vsnprintf)
+
+dnl check for usleep() and nanosleep() which is better in MT programs
+AC_CHECK_FUNCS(nanosleep,
+        AC_DEFINE(HAVE_NANOSLEEP),
+        [AC_CHECK_LIB(posix4, nanosleep, AC_DEFINE(HAVE_NANOSLEEP))])
+AC_CHECK_FUNCS(usleep)
 
 AC_LANG_SAVE
 AC_LANG_CPLUSPLUS
@@ -481,16 +490,16 @@ dnl # checks structures #
 dnl #####################
 
 AC_HEADER_STAT
-dnl   defines STAT_MACROS_BROKEN if S_ISDIR and S_ISREG 
+dnl   defines STAT_MACROS_BROKEN if S_ISDIR and S_ISREG
 dnl                              do not work properly
 AC_HEADER_TIME
 dnl   defines TIME_WITH_SYS_TIME if time.h and sys/time.h can
 dnl                              both be included
-AC_STRUCT_ST_BLKSIZE 
+AC_STRUCT_ST_BLKSIZE
 dnl   defines HAVE_ST_BLKSIZE if struct stat contains st_blksize
-AC_STRUCT_ST_BLOCKS 
+AC_STRUCT_ST_BLOCKS
 dnl   defines HAVE_ST_BLOCKS if struct stat contains st_blocks
-AC_STRUCT_ST_RDEV 
+AC_STRUCT_ST_RDEV
 dnl   defines HAVE_ST_RDEV if struct stat contains st_rdev
 AC_STRUCT_TM
 dnl   defines TM_IN_SYS_TIME if struct tm is not in time.h
@@ -519,6 +528,7 @@ dnl   defines WORDS_BIGENDIAN if system is big endian
 AC_CHECK_SIZEOF(int *)
 AC_CHECK_SIZEOF(int)
 AC_CHECK_SIZEOF(long)
+AC_CHECK_SIZEOF(long long)
 dnl   defines the size of certain types of variables in SIZEOF_???
 
 dnl ############################
@@ -535,10 +545,10 @@ dnl   defines HAVE_LONG_FILENAMES if filenames longer then
 dnl                               14 chars are supported
 
 dnl AC_SYS_RESTARTABLE_SYSCALLS
-dnl   defines HAVE_RESTARTABLE_SYSCALLS if the system restarts a 
+dnl   defines HAVE_RESTARTABLE_SYSCALLS if the system restarts a
 dnl                                     system call that is interrupted
 dnl                                     by a signal
-                                          
+
 dnl #################
 dnl # checks PARSER #
 dnl #################
@@ -556,9 +566,63 @@ dnl   defines LEXLIB with the appropriate library
 dnl what type is yytext
 AC_DECL_YYTEXT
 dnl   defines YYTEXT_POINTER  if yytext is char*
-dnl   defines LEX_OUTPUT_ROOT as to the base of the 
+dnl   defines LEX_OUTPUT_ROOT as to the base of the
 dnl                           filename output by the lexer
 
+dnl ###################################
+dnl ##  Check for dynamic load module #
+dnl ###################################
+
+DL_LIBRARY=
+AC_CHECK_FUNCS(dlopen, AC_DEFINE(HAVE_LIBDL),
+[AC_CHECK_LIB(dl, dlopen, [AC_DEFINE(HAVE_LIBDL) DL_LIBRARY="-ldl"],
+ [AC_CHECK_LIB(dld, dld_link, [AC_DEFINE(HAVE_DLD) DL_LIBRARY="-ldld"],
+   [AC_CHECK_FUNCS(shl_load, AC_DEFINE(HAVE_SHL_LOAD) )]
+  )]
+ )]
+)
+AC_SUBST(DL_LIBRARY)
+
+AC_CACHE_CHECK([for underscore before symbols], libltdl_cv_uscore, [
+  echo "main(){int i=1;} fnord(){int i=23; int ltuae=42;}" > conftest.c
+  ${CC} -c conftest.c > /dev/null
+  if (nm conftest.o | grep _fnord) > /dev/null; then
+    libltdl_cv_uscore=yes
+  else
+    libltdl_cv_uscore=no
+  fi
+  rm -f conftest*
+])
+
+if test x"$libltdl_cv_uscore" = xyes; then
+  if test x"$ac_cv_func_dlopen" = xyes ||
+     test x"$ac_cv_lib_dl_dlopen" = xyes ; then
+       AC_CACHE_CHECK([whether we have to add an underscore for dlsym],
+               libltdl_cv_need_uscore, [dnl
+               AC_TRY_RUN([
+#include <dlfcn.h>
+#include <stdio.h>
+fnord() { int i=42;}
+main() { void *self, *ptr1, *ptr2; self=dlopen(NULL,RTLD_LAZY);
+    if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
+    if(ptr1 && !ptr2) exit(0); } exit(1); }
+],     libltdl_cv_need_uscore=no, libltdl_cv_need_uscore=yes,
+       libltdl_cv_need_uscore=no
+)])
+  fi
+fi
+
+if test x"$libltdl_cv_need_uscore" = xyes; then
+   AC_DEFINE(NEED_USCORE)
+fi
+
+dnl ##########################################
+dnl ##  Check for specific library functions #
+dnl ##########################################
+
+dnl Checks for library functions.
+AC_CHECK_FUNCS(strerror)
+
 dnl ------------------------------------------------------------------------
 dnl main includes
 dnl ------------------------------------------------------------------------
@@ -613,13 +677,13 @@ case "${canonical}" in
       AC_DEFINE(__ALPHA__)
     fi
   ;;
-  *-*-irix5* | *-*-irix6* ) 
+  *-*-irix5* | *-*-irix6* )
     USE_SGI=1
     USE_SVR4=1
     AC_DEFINE(__SGI__)
     AC_DEFINE(__SVR4__)
   ;;
-  *-*-solaris2* ) 
+  *-*-solaris2* )
     USE_SUN=1
     USE_SOLARIS=1
     USE_SVR4=1
@@ -627,7 +691,7 @@ case "${canonical}" in
     AC_DEFINE(__SOLARIS__)
     AC_DEFINE(__SVR4__)
   ;;
-  *-*-sunos4* ) 
+  *-*-sunos4* )
     USE_SUN=1
     USE_SUNOS=1
     USE_BSD=1
@@ -641,25 +705,25 @@ case "${canonical}" in
     AC_DEFINE(__FREEBSD__)
     AC_DEFINE(__BSD__)
   ;;
-  *-*-osf* ) 
+  *-*-osf* )
     USE_ALPHA=1
     USE_OSF=1
     AC_DEFINE(__ALPHA__)
     AC_DEFINE(__OSF__)
   ;;
-  *-*-dgux5* ) 
+  *-*-dgux5* )
     USE_ALPHA=1
     USE_SVR4=1
     AC_DEFINE(__ALPHA__)
     AC_DEFINE(__SVR4__)
   ;;
-  *-*-sysv5* ) 
+  *-*-sysv5* )
     USE_SYSV=1
     USE_SVR4=1
     AC_DEFINE(__SYSV__)
     AC_DEFINE(__SVR4__)
   ;;
-  *-*-aix* ) 
+  *-*-aix* )
     USE_AIX=1
     USE_SYSV=1
     USE_SVR4=1
@@ -695,13 +759,16 @@ DEFAULT_wxUSE_IOSTREAMH=1
 
 DEFAULT_wxUSE_ZLIB=1
 DEFAULT_wxUSE_LIBPNG=1
+DEFAULT_wxUSE_LIBJPEG=0
 DEFAULT_wxUSE_ODBC=1
 
 DEFAULT_wxUSE_TIMEDATE=1
 DEFAULT_wxUSE_INTL=1
 DEFAULT_wxUSE_CONFIG=1
 DEFAULT_wxUSE_STREAMS=1
+DEFAULT_wxUSE_SOCKETS=1
 DEFAULT_wxUSE_SERIAL=1
+DEFAULT_wxUSE_DYNLIB_CLASS=1
 
 DEFAULT_wxUSE_AFM_FOR_POSTSCRIPT=1
 DEFAULT_WX_NORMALIZED_PS_FONTS=1
@@ -710,6 +777,7 @@ DEFAULT_wxUSE_POSTSCRIPT=1
 DEFAULT_wxUSE_IPC=1
 DEFAULT_wxUSE_RESOURCES=1
 DEFAULT_wxUSE_CLIPBOARD=1
+DEFAULT_wxUSE_TOOLTIPS=1
 DEFAULT_wxUSE_DRAG_AND_DROP=1
 
 DEFAULT_wxUSE_MDI_ARCHITECTURE=1
@@ -784,6 +852,10 @@ AC_OVERRIDES(threads,threads,
 **--with-threads          for enabling threads,
 wxUSE_THREADS)
 
+AC_OVERRIDES(dynlib,dynlib,
+**--with-dynlib           to compile wxLibrary class,
+wxUSE_DYNLIB_CLASS)
+
 dnl ----------------------------------------------------------------
 dnl user options for libraries
 dnl ----------------------------------------------------------------
@@ -796,6 +868,10 @@ AC_OVERRIDES(libpng,libpng,
 **--with-libpng           use libpng (PNG image format),
 wxUSE_LIBPNG)
 
+AC_OVERRIDES(libjpeg,libjpeg,
+**--with-libjpeg          use libjpeg (JPEG image format),
+wxUSE_LIBJPEG)
+
 AC_OVERRIDES(odbc,odbc,
 **--with-odbc             use iODBC and wxODBC classes,
 wxUSE_ODBC)
@@ -824,6 +900,10 @@ AC_OVERRIDES(serial,serial,
 **--with-serial           use class serialization,
 wxUSE_SERIAL)
 
+AC_OVERRIDES(sockets,sockets,
+**--with-sockets         use wxSocket etc classes,
+wxUSE_SOCKETS)
+
 dnl ----------------------------------------------------------------
 dnl user options for PostScript
 dnl ----------------------------------------------------------------
@@ -884,6 +964,10 @@ AC_OVERRIDES(clipboard,clipboard,
 **--with-clipboard        use wxClipboard classes,
 wxUSE_CLIPBOARD)
 
+AC_OVERRIDES(tooltips,tooltips,
+**--with-tooltips         use tooltips,
+wxUSE_TOOLTIPS)
+
 AC_OVERRIDES(dnd,dnd,
 **--with-dnd              use Drag'n'Drop classes,
 wxUSE_DRAG_AND_DROP)
@@ -916,6 +1000,13 @@ if test "$wxUSE_UNIX" = 1 ; then
   AC_DEFINE(__UNIX__)
 fi
 
+dnl ----------------------------------------------------------------
+dnl Linux: test for libc5/glibc2: glibc2 has gettext() included
+dnl ----------------------------------------------------------------
+if test "$USE_LINUX" = 1; then
+  AC_CHECK_LIB(c,gettext,AC_DEFINE(wxHAVE_GLIBC2))
+fi
+
 dnl ----------------------------------------------------------------
 dnl search for toolkit (widget sets)
 dnl ----------------------------------------------------------------
@@ -970,7 +1061,7 @@ fi
 
 if test "$wxUSE_MOTIF" = 1; then
    AC_MSG_CHECKING(for Motif/Lesstif includes)
-   AC_PATH_FIND_INCLUDES($SEARCH_INCLUDE,Xm.h)
+   AC_PATH_FIND_INCLUDES($SEARCH_INCLUDE,Xm/Xm.h)
    if test "$ac_find_includes" != "" ; then
      AC_MSG_RESULT(found $ac_find_includes)
      AC_MSG_CHECKING(for Motif/Lesstif library)
@@ -1005,17 +1096,17 @@ if test "$wxUSE_MOTIF" = 1; then
   else
      AC_MSG_ERROR(no)
   fi
-  
-  GUI_TK_LINK="-lXm -lXmu -lXt -lXpm -lX11 -lm"
-  GUI_TK_LINK="$CHECK_LINK $GUI_TK_LINK"
+
+  GUI_TK_LINK="-lXm -lXpm -lXmu -lXt -lX11 -lm"
+  GUI_TK_LIBRARY="$CHECK_LIB $GUI_TK_LINK"
   TOOLKIT=MOTIF
-  TOOLKIT_DEF="__WXMOTIF__ -D__LINUX__ -D__UNIX__"
+  TOOLKIT_DEF=__WXMOTIF__
   WX_LINK=-lwx_motif2
   MAKEINCLUDE=../motif.inc
 fi
 
 if test "$TOOLKIT" = ""; then
-  AC_MSG_ERROR(You must specify a toolkit: --with-gtk --with-qt --with-motif) 
+  AC_MSG_ERROR(You must specify a toolkit: --with-gtk --with-qt --with-motif)
 fi
 
 AC_SUBST(GUI_TK_INCLUDE)
@@ -1033,6 +1124,8 @@ dnl ----------------------------------------------------------------
 dnl Register compile options for makefiles and setup.h
 dnl ----------------------------------------------------------------
 
+EXTRA_LINK=
+
 WXDEBUG=
 if test "$wxUSE_DEBUG_GDB" = 1 ; then
   wxUSE_DEBUG_INFO=1
@@ -1043,7 +1136,7 @@ else
     WXDEBUG="-g"
     wxUSE_OPTIMISE=0
   else
-    WX_LINK="-s $WX_LINK"
+    EXTRA_LINK="-s $EXTRA_LINK"
   fi
 fi
 AC_SUBST(WXDEBUG)
@@ -1062,7 +1155,6 @@ if test "$wxUSE_MEM_TRACING" = 1 ; then
   AC_DEFINE_UNQUOTED(wxUSE_GLOBAL_MEMORY_OPERATORS,$wxUSE_MEM_TRACING)
 fi
 
-EXTRA_LINK=
 if test "$wxUSE_DMALLOC" = 1 ; then
   EXTRA_LINK="$EXTRA_LINK -ldmalloc"
 fi
@@ -1112,14 +1204,22 @@ fi
 AC_SUBST(Z_C_SRC)
 
 if test "$wxUSE_LIBPNG" = 1 ; then
-  AC_DEFINE_UNQUOTED(wxUSE_LIBPNG,$wxUSE_LIBPNG) 
+  AC_DEFINE_UNQUOTED(wxUSE_LIBPNG,$wxUSE_LIBPNG)
   PNG_C_SRC="\$(PNG_C_SRC)"
 fi
 AC_SUBST(PNG_C_SRC)
 
+JPEG_LINK=""
+if test "$wxUSE_LIBJPEG" = 1 ; then
+  AC_DEFINE_UNQUOTED(wxUSE_LIBJPEG,$wxUSE_LIBJPEG)
+  AC_CHECK_LIB(jpeg)
+  JPEG_LINK="-ljpeg"
+fi
+AC_SUBST(JPEG_LINK)
+
 IODBC_C_SRC=""
 if test "$wxUSE_ODBC" = 1 ; then
-  AC_DEFINE_UNQUOTED(wxUSE_ODBC,$wxUSE_ODBC) 
+  AC_DEFINE_UNQUOTED(wxUSE_ODBC,$wxUSE_ODBC)
   IODBC_C_SRC="\$(IODBC_C_SRC)"
 fi
 AC_SUBST(IODBC_C_SRC)
@@ -1144,10 +1244,39 @@ if test "$wxUSE_STREAMS" = 1 ; then
   AC_DEFINE_UNQUOTED(wxUSE_STREAMS,$wxUSE_STREAMS)
 fi
 
+if test "$wxUSE_SOCKETS" = 1 ; then
+  AC_DEFINE_UNQUOTED(wxUSE_SOCKETS,$wxUSE_SOCKETS)
+fi
+
 if test "$wxUSE_SERIAL" = 1 ; then
   AC_DEFINE_UNQUOTED(wxUSE_SERIAL,$wxUSE_SERIAL)
 fi
 
+dnl ------------------------------------------------------------------------
+dnl wxLibrary class
+dnl ------------------------------------------------------------------------
+
+HAVE_DL_FUNCS=0
+if test "$wxUSE_DYNLIB_CLASS" = "1"; then
+    dnl the test is a bit complicated because we check for dlopen() both with
+    dnl and without -ldl
+    AC_CHECK_FUNCS(dlopen,
+        [AC_DEFINE(HAVE_DLOPEN) HAVE_DL_FUNCS=1],
+        [AC_CHECK_LIB(dl, dlopen,
+            [AC_DEFINE(HAVE_DLOPEN) HAVE_DL_FUNCS=1])])
+    AC_CHECK_FUNCS(shl_load, [AC_DEFINE(HAVE_SHL_LOAD) HAVE_DL_FUNCS=1])
+
+    if test "$HAVE_DL_FUNCS" = 0; then
+        AC_MSG_WARN("--with-dynlib will be disabled because no function was found to load a shared library on this platform")
+
+        wxUSE_DYNLIB_CLASS=0
+    fi
+fi
+
+if test "$wxUSE_DYNLIB_CLASS" = 1 ; then
+  AC_DEFINE_UNQUOTED(wxUSE_DYNLIB_CLASS,$wxUSE_DYNLIB_CLASS)
+fi
+
 dnl ----------------------------------------------------------------
 dnl Register Prolog and Resources options for makefiles and setup.h
 dnl ----------------------------------------------------------------
@@ -1220,6 +1349,10 @@ if test "$wxUSE_CLIPBOARD" = 1 ; then
   AC_DEFINE_UNQUOTED(wxUSE_CLIPBOARD,$wxUSE_CLIPBOARD)
 fi
 
+if test "$wxUSE_TOOLTIPS" = 1 ; then
+  AC_DEFINE_UNQUOTED(wxUSE_TOOLTIPS,$wxUSE_TOOLTIPS)
+fi
+
 if test "$wxUSE_DRAG_AND_DROP" = 1 ; then
   AC_DEFINE_UNQUOTED(wxUSE_DRAG_AND_DROP,$wxUSE_DRAG_AND_DROP)
 fi
@@ -1235,27 +1368,23 @@ if test "$wxUSE_HELP" = 1 ; then
 fi
 AC_SUBST(HELP)
 
-dnl ----------------------------------------------------------------
-dnl select  dynamic loader (used by iODBC to load drivers)
-dnl ----------------------------------------------------------------
-
-AC_CHECK_LIB(dl,main,[DL_LIBRARY=-ldl],[DL_LIBRARY=])
-AC_SUBST(DL_LIBRARY)
-
 dnl ----------------------------------------------------------------
 dnl thread support
 dnl ----------------------------------------------------------------
 
+dnl   defines UNIX_THREAD it contains the source file to use for threads. (GL)
+dnl   defines THREADS_LINK it contains the thread library to link with. (GL)
+dnl   defines wxUSE_THREADS if thread support is activated. (GL)
+
 THREADS_LINK=""
 UNIX_THREAD=""
 
 if test "$wxUSE_THREADS" = "1"; then
-
      dnl For glibc 2 users who have the old libc 5 too
 
      AC_CHECK_LIB(pthread-0.7, pthread_create, [
        UNIX_THREAD="gtk/threadpsx.cpp"
-       THREADS_LINK="-lpthread-0.7"
+       THREADS_LINK="pthread-0.7"
      ],[
        AC_CHECK_HEADER(sys/prctl.h, [
           UNIX_THREAD="gtk/threadsgi.cpp"
@@ -1266,20 +1395,22 @@ if test "$wxUSE_THREADS" = "1"; then
 
      AC_CHECK_LIB(pthread, pthread_setcanceltype, [
        UNIX_THREAD="gtk/threadpsx.cpp"
-       THREADS_LINK="-lpthread"
+       THREADS_LINK="pthread"
      ])
     ])
 
+    if test "x$THREADS_LINK" = "x"; then
+        dnl thread functions are in libc_r under FreeBSD
+        AC_CHECK_LIB(c_r, pthread_create,
+                    [
+                        UNIX_THREAD="gtk/threadpsx.cpp"
+                        THREADS_LINK="c_r"
+                    ])
+    fi
+
     if test "$THREADS_LINK" != ""; then
       AC_DEFINE(wxUSE_THREADS)
     fi
-
-    dnl -lposix4 seems to be required on Solaris
-
-    AC_CHECK_LIB(posix4, printf, [
-      THREADS_LINK="$THREADS_LINK -lposix4"
-    ])
-    
 fi
 
 if test "$wxUSE_MOTIF" = "1"; then
@@ -1290,13 +1421,35 @@ if test -z "$UNIX_THREAD"; then
   wxUSE_THREADS=0
 fi
 
+dnl do other tests only if we are using threads
+if test "$wxUSE_THREADS" = "1"; then
+  THREADS_LINK2=""
+  AC_CHECK_LIB($THREADS_LINK, sched_yield,
+               AC_DEFINE(HAVE_SCHED_YIELD),
+               [AC_CHECK_LIB("posix4", sched_yield,
+                   [AC_DEFINE(HAVE_SCHED_YIELD) THREADS_LINK2="-lposix4"],
+                   AC_MSG_WARN(wxThread::Yield() will not work properly)
+                )]
+               )
+
+  AC_CHECK_LIB($THREADS_LINK, sched_get_priority_min,
+               AC_DEFINE(HAVE_THREAD_PRIORITY_FUNCTIONS),
+               [AC_CHECK_LIB("posix4", sched_get_priority_min,
+                   [AC_DEFINE(HAVE_THREAD_PRIORITY_FUNCTIONS) THREADS_LINK2="-lposix4"],
+                   AC_MSG_WARN(Setting thread priority will not work)
+                )]
+               )
+
+  AC_CHECK_LIB($THREADS_LINK, pthread_cancel,
+               AC_DEFINE(HAVE_PTHREAD_CANCEL),
+               AC_MSG_WARN(wxThread::Kill() will not work properly))
+
+  THREADS_LINK="-l$THREADS_LINK $THREADS_LINK2"
+fi
+
 AC_SUBST(UNIX_THREAD)
 AC_SUBST(THREADS_LINK)
 
-dnl   defines UNIX_THREAD it contains the source file to use for threads. (GL)
-dnl   defines THREADS_LINK it contains the thread library to link with. (GL)
-dnl   defines wxUSE_THREADS if thread support is activated. (GL)
-
 dnl ------------------------------------------------------------------------
 dnl compiler options for shared libs
 dnl ------------------------------------------------------------------------
@@ -1304,7 +1457,6 @@ dnl ------------------------------------------------------------------------
 PICFLAGS=
 CREATE_SHARED=
 case "${canonical}" in
-
   *-hp-hpux* )
     if test "$GCC" != "yes" ; then
       CXXFLAGS="${CXXFLAGS} +a1 -z -Aa -D_HPUX_SOURCE"
@@ -1322,14 +1474,14 @@ case "${canonical}" in
     CREATE_SHARED=sharedLinux
   ;;
 
-  *-*-irix5* | *-*-irix6* ) 
+  *-*-irix5* | *-*-irix6* )
     # PICFLAGS can remain empty, as pic is the default
     LDFLAGS="-Wl,+s"
     CREATE_SHARED=sharedIrix
     AC_DEFINE(SVR4)
   ;;
 
-  *-*-solaris2* ) 
+  *-*-solaris2* )
     if test "$GCC" != "yes" ; then
       PICFLAGS="-KPIC"
     else
@@ -1339,7 +1491,7 @@ case "${canonical}" in
     AC_DEFINE(SVR4)
   ;;
 
-  *-*-sunos4* ) 
+  *-*-sunos4* )
     if test "$GCC" != "yes" ; then
       PICFLAGS="-PIC"
     else
@@ -1356,12 +1508,12 @@ case "${canonical}" in
     AC_DEFINE(BSD)
   ;;
 
-  *-*-osf* ) 
+  *-*-osf* )
     PICFLAGS="-fPIC"
     CREATE_SHARED=sharedOSF
   ;;
 
-  *-*-dgux5* ) 
+  *-*-dgux5* )
     if test "$GCC" != "yes" ; then
       PICFLAGS="-K PIC"
     else
@@ -1371,7 +1523,7 @@ case "${canonical}" in
     AC_DEFINE(SVR4)
   ;;
 
-  *-*-sysv5* ) 
+  *-*-sysv5* )
     if test "$GCC" != "yes" ; then
       PICFLAGS="-K PIC"
     else
@@ -1381,7 +1533,7 @@ case "${canonical}" in
     AC_DEFINE(SVR4)
   ;;
 
-  *-*-aix* ) 
+  *-*-aix* )
     if test "$GCC" != "yes" ; then
       PICFLAGS="-bM\:SRE"
     else
@@ -1397,7 +1549,7 @@ case "${canonical}" in
 esac
 
 if test "x$GCC" = xyes; then
-  CFLAGS="${CFLAGS} -Wall -Wno-unused -Wno-uninitialized -D_REENTRANT -DLEX_SCANNER"
+  CFLAGS="${CFLAGS} -Wall -Wno-unused -Wno-uninitialized -D_REENTRANT -DLEX_SCANNER -DHAVE_LIBDL"
 fi
 
 if test "x$GXX" = xyes; then