dnl USE_UNIX must be set and not USE_WIN32
SO_SUFFIX=dll
PROGRAM_EXT=".exe"
- RESCOMP=windres
DEFAULT_DEFAULT_wxUSE_MSW=1
DEFAULT_STD_FLAG=no
;;
dnl FIXME: we should do a better job of testing for these
CC=winegcc
CXX=wineg++
- RESCOMP=wrc
LDFLAGS_GUI="-mwindows"
fi
dnl flush the cache because checking for programs might abort
AC_CACHE_SAVE
-dnl cross-compiling support: we're cross compiling if the build system is
-dnl different from the target one (assume host and target be always the same)
-if test "$build" != "$host" ; then
- if test "$USE_WIN32" = 1 -o "$USE_DOS" = 1 -o "$USE_UNIX" = 1; then
- CC=$host_alias-gcc
- CXX=$host_alias-c++
- AR=$host_alias-ar
- RANLIB=$host_alias-ranlib
- DLLTOOL=$host_alias-dlltool
- RESCOMP=$host_alias-windres
- STRIP=$host_alias-strip
- elif test "x$CC" '!=' "x"; then
- echo "You set CC, I assume you know what you are doing."
- else
- AC_MSG_ERROR($build_alias -> $host_alias cross compilation not supported yet.)
- fi
-fi
-
dnl C-compiler checks
dnl defines CC with the compiler to use
dnl defines GCC with yes if using gcc
dnl ar command
dnl defines AR with the appropriate command
-AC_CHECK_PROG(AR, ar, ar)
+AC_CHECK_TOOL(AR, ar)
if test "x$AR" = "x" ; then
AC_MSG_ERROR([ar is needed to build wxWidgets])
fi
esac
dnl strip command
-dnl defines STRIP as strip or nothing if not found
-AC_CHECK_PROG(STRIP, strip, strip, true)
+dnl defines STRIP as strip or nothing (true) if not found
+AC_CHECK_TOOL(STRIP, strip, true)
+
+dnl Win32 tools
+if test "$wxUSE_WINE" = "yes"; then
+ AC_CHECK_TOOL(RESCOMP, wrc)
+else
+ case "${host}" in
+ *-*-cygwin* | *-*-mingw32* )
+ AC_CHECK_TOOL(RESCOMP, windres)
+ AC_CHECK_TOOL(DLLTOOL, dlltool)
+ ;;
+ esac
+fi
dnl does make support "-include" (only GNU make does AFAIK)?
AC_CACHE_CHECK([if make is GNU make], wx_cv_prog_makeisgnu,
CXXFLAGS="$CXXFLAGS -qunique"
fi
-
dnl This case is for PowerPC OS X vs. everything else
case "${host}" in
powerpc-*-darwin* )
;;
esac
-if test "$wxUSE_GUI" = "yes"; then
- if test "$wxUSE_UNIX" = "yes" -a "$wxUSE_PM" != 1; then
- dnl defines HAVE_X11_XKBLIB_H
- AC_CHECK_HEADERS(X11/Xlib.h)
- AC_CHECK_HEADERS([X11/XKBlib.h], [], [],
- [
- #if HAVE_X11_XLIB_H
- #include <X11/Xlib.h>
- #endif
- ])
- fi
-fi
-
dnl ---------------------------------------------------------------------------
dnl Checks for compiler characteristics
dnl ---------------------------------------------------------------------------
if test "x$wx_largefile" = "xyes"; then
if test "x$ac_cv_sys_file_offset_bits" = "x64"; then
WX_LARGEFILE_FLAGS="-D_FILE_OFFSET_BITS=64 -D_LARGE_FILES"
+
+ dnl We get "Large Files (ILP32) not supported in strict ANSI mode."
+ dnl #error from HP standard headers unless __STDC_EXT__ is defined.
+ dnl The compiler should define it automatically, but some old g++
+ dnl versions don't define it, so test and add it if necessary. AFAIK
+ dnl the problem only affects the C++ compiler so it is added to
+ dnl CXXFLAGS only.
+ if test "$USE_HPUX" = 1 -a "$GXX" = "yes"; then
+ AC_CACHE_CHECK(
+ [if -D__STDC_EXT__ is required],
+ wx_cv_STDC_EXT_required,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE(
+ [],
+ [
+ #ifndef __STDC_EXT__
+ choke me
+ #endif
+ ],
+ wx_cv_STDC_EXT_required=no,
+ wx_cv_STDC_EXT_required=yes
+ )
+ AC_LANG_RESTORE
+ ]
+ )
+ if test "x$wx_cv_STDC_EXT_required" = "xyes"; then
+ CXXFLAGS="$CXXFLAGS -D__STDC_EXT__"
+ fi
+ fi
else
WX_LARGEFILE_FLAGS="-D_LARGE_FILES"
fi
CXXFLAGS="$CXXFLAGS -features=tmplife"
fi
+dnl Sun X11 headers are (still, in 2005!) non-ANSI and the best they could do
+dnl was to hack their C++ compiler to accept them silently -- but C compiler
+dnl still spits out dozens of warnings for each X include file, so suppress
+dnl them
+if test "x$SUNCC" = xyes; then
+ CFLAGS="$CFLAGS -erroff=E_NO_EXPLICIT_TYPE_GIVEN"
+fi
+
+dnl SGI mipsPro compiler gives this warning for "conversion from pointer to
+dnl same-sized integral type" even when there is an explicit cast and as there
+dnl is no way to turn it off and there are hundreds of these warnings in wx
+dnl sources, just turn it off for now
+dnl
+dnl a better long term solution would be to use #pragma set/reset woff in
+dnl wxPtrToUInt() and use it instead of casts elsewhere
+if test "x$SGICC" = "xyes"; then
+ CFLAGS="$CFLAGS -woff 3970"
+fi
+if test "x$SGICXX" = "xyes"; then
+ CXXFLAGS="$CXXFLAGS -woff 3970"
+fi
+
dnl check for std::string or std::wstring
if test "$wxUSE_STD_STRING" = "yes" -o "$wxUSE_STL" = "yes"; then
AC_LANG_PUSH(C++)
/usr/Motif-2.1/include \
/usr/Motif-1.2/include \
/usr/include/Motif1.2 \
- /opt/xpm/include/X11 \
- /opt/GBxpm/include/ \
- /opt/GBxpm/X11/include/ \
\
/usr/dt/include \
/usr/openwin/include \
/usr/local/X11/include \
/usr/local/include/X11 \
\
- /usr/X386/include \
- /usr/x386/include \
/usr/XFree86/include/X11 \
- \
- X:/XFree86/include \
- X:/XFree86/include/X11 \
- \
- /usr/include/gtk \
- /usr/local/include/gtk \
- /usr/include/glib \
- /usr/local/include/glib \
- \
- /usr/include/qt \
- /usr/local/include/qt \
- \
- /usr/local/arm/3.3.2/include \
- \
- /usr/include/windows \
- /usr/include/wine \
- /usr/local/include/wine \
- \
- /usr/unsupported/include \
- /usr/athena/include \
- /usr/local/x11r5/include \
- /usr/lpp/Xamples/include \
+ /usr/pkg/include \
\
/usr/openwin/share/include"
-dnl prepend lib and lib32 for IRIX where the files in these directories should
-dnl be found before the ones in lib64 for 32bit compilation -- of course, this
-dnl probably/surely breaks 64bit compilation... IMO the only real solution is to
-dnl stop using WX_PATH_FIND_LIBRARIES() at all and use AC_CHECK_LIB() instead
-dnl
-dnl also put 64 bit versions for Linux on AMD, they must come before the usual
-dnl locations or 64 bit compilation failed
-SEARCH_LIB="/usr/lib /usr/lib32 /usr/lib64 /usr/X11R6/lib64 `echo "$SEARCH_INCLUDE" | sed s/include/lib/g`"
+dnl try to find out the standard lib locations for the systems with multiple
+dnl ABIs
+AC_MSG_CHECKING([for libraries directory])
+
+case "${host}" in
+ *-*-irix6* )
+ AC_CACHE_VAL(
+ wx_cv_std_libpath,
+ [
+ for d in WX_STD_LIBPATH(); do
+ for e in a so sl dylib dll.a; do
+ libc="$d/libc.$e"
+ if test -f $libc; then
+ save_LIBS="$LIBS"
+ LIBS="$libc"
+ AC_LINK_IFELSE([int main() { return 0; }],
+ wx_cv_std_libpath=`echo $d | sed s@/usr/@@`)
+ LIBS="$save_LIBS"
+ if test "x$wx_cv_std_libpath" != "x"; then
+ break 2
+ fi
+ fi
+ done
+ done
+ if test "x$wx_cv_std_libpath" = "x"; then
+ wx_cv_std_libpath="lib"
+ fi
+ ]
+ )
+ ;;
+
+ *-*-solaris2* )
+ dnl use ../lib or ../lib/64 depending on the size of void*
+ if test "$ac_cv_sizeof_void_p" = 8 -a -d "/usr/lib/64"; then
+ wx_cv_std_libpath="lib/64"
+ else
+ wx_cv_std_libpath="lib"
+ fi
+ ;;
+
+ *-*-linux* )
+ dnl use ../lib or ../lib64 depending on the size of void*
+ if test "$ac_cv_sizeof_void_p" = 8 -a \
+ -d "/usr/lib64" -a ! -h "/usr/lib64"; then
+ wx_cv_std_libpath="lib64"
+ else
+ wx_cv_std_libpath="lib"
+ fi
+ ;;
+
+ *)
+ wx_cv_std_libpath="lib";
+ ;;
+esac
+
+AC_MSG_RESULT($wx_cv_std_libpath)
+
+SEARCH_LIB="`echo "$SEARCH_INCLUDE" | sed s@include@$wx_cv_std_libpath@g` /usr/$wx_cv_std_libpath"
dnl Cross compiling with gcc?
if test "$build" != "$host" -a "$GCC" = yes; then
dnl detect GTK2
wx_cv_lib_gtk=
- if test "x$wxGTK_VERSION" != "x1"; then
+ if test "x$wxGTK_VERSION" != "x1"
+ then
+ dnl The gthread.pc that ships with solaris returns '-mt',
+ dnl it's correct for Sun CC, but gcc requires '-pthreads'.
+ dnl So disable the compile check and remove the -mt below.
+ case "${host}" in
+ *-*-solaris2* )
+ if test "$wxUSE_THREADS" = "yes" -a "$GCC" = yes; then
+ enable_gtktest=no
+ fi
+ esac
+
AM_PATH_GTK_2_0(2.0.0, wx_cv_lib_gtk=2.0, , $GTK_MODULES)
+
+ dnl Remove the '-mt' for gcc on solaris
+ case "${host}" in
+ *-*-solaris2* )
+ if test "$wxUSE_THREADS" = "yes" -a "$GCC" = yes; then
+ GTK_CFLAGS=`echo $GTK_CFLAGS | sed 's/-mt//'`
+ GTK_LIBS=`echo $GTK_LIBS | sed 's/-mt//'`
+ fi
+ dnl solaris also requires -lX11 for static lib
+ if test "$wxUSE_SHARED" != "yes"; then
+ GTK_LIBS="$GTK_LIBS -lX11"
+ fi
+ esac
fi
dnl detect GTK1.x
dnl we need to cache GTK_CFLAGS and GTK_LIBS for the
dnl subsequent runs
wx_cv_cflags_gtk=$GTK_CFLAGS
- wx_cv_libs_gtk=$GTK_LIBS
+ wx_cv_libs_gtk=`echo $GTK_LIBS | sed -e 's/ -l[[^ ]]*cairo[[^ ]]*//g'`
fi
]
)
CFLAGS="$CFLAGS $wx_cv_cflags_gtk"
LIBS="$LIBS $wx_cv_libs_gtk"
- AC_CHECK_FUNCS([pango_font_family_is_monospace])
-
dnl gtk_icon_size_lookup is not available in the GTK+ headers
dnl that have shipped with some versions of Sun's JDS. Not using
dnl AC_CHECK_FUNCS here since it only checks the function exists
dnl we guess its path from the prefix
GUI_TK_LIBRARY="-L${prefix}/lib -lgpewidget $GUI_TK_LIBRARY"
WXGPE=1
- AC_MSG_RESULT(found at $ac_find_libraries)
+ AC_MSG_RESULT([found in $ac_find_libraries])
else
AC_MSG_RESULT(not found)
fi
dnl if test "$ac_find_libraries" != "" ; then
dnl WX_LINK_PATH_EXIST($ac_find_libraries,$GUI_TK_LIBRARY)
dnl GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lgpe"
- dnl AC_MSG_RESULT(found at $ac_find_libraries)
+ dnl AC_MSG_RESULT(found in $ac_find_libraries)
dnl else
dnl AC_MSG_RESULT(not found)
dnl fi
WX_INCLUDE_PATH_EXIST($ac_find_includes, $TOOLKIT_INCLUDE)
TOOLKIT_INCLUDE="$TOOLKIT_INCLUDE$ac_path_to_include"
else
+ save_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $TOOLKIT_INCLUDE"
+
AC_TRY_COMPILE(
[
#include <Xm/Xm.h>
],
[
AC_MSG_RESULT(no)
- AC_MSG_ERROR(please set CFLAGS to contain the location of Xm/Xm.h)
+ AC_MSG_ERROR(please set CPPFLAGS to contain the location of Xm/Xm.h)
]
)
+
+ CFLAGS=$save_CFLAGS
fi
- if test "$COMPILED_X_PROGRAM" = 0; then
- AC_MSG_CHECKING(for Motif/Lesstif library)
- WX_PATH_FIND_LIBRARIES($SEARCH_LIB, Xm)
- if test "$ac_find_libraries" != "" ; then
- AC_MSG_RESULT(found at $ac_find_libraries)
- WX_LINK_PATH_EXIST($ac_find_libraries, $GUI_TK_LIBRARY)
- GUI_TK_LIBRARY="$GUI_TK_LIBRARY$ac_path_to_link"
- else
- dnl it might happen that we found headers in one of the
- dnl standard paths but the libs are elsewhere - we do need to
- dnl try to compile a sample program then here
- save_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS $TOOLKIT_INCLUDE"
+ AC_MSG_CHECKING(for Motif/Lesstif library)
+ WX_PATH_FIND_LIBRARIES($SEARCH_LIB, Xm)
- AC_TRY_COMPILE(
- [
- #include <Xm/Xm.h>
- ],
- [
- int version;
- version = xmUseVersion;
- ],
- [
- AC_MSG_RESULT(found in default search path)
- COMPILED_X_PROGRAM=1
- ],
- [
- AC_MSG_RESULT(no)
- AC_MSG_ERROR(please set LDFLAGS to contain the location of libXm)
- ]
- )
+ if test "x$ac_find_libraries" != "x" ; then
+ AC_MSG_RESULT(found in $ac_find_libraries)
- CFLAGS=$save_CFLAGS
- fi
+ WX_LINK_PATH_EXIST($ac_find_libraries, $GUI_TK_LIBRARY)
+ GUI_TK_LIBRARY="$GUI_TK_LIBRARY$ac_path_to_link"
+ else
+ dnl it might happen that we found headers in one of the standard
+ dnl paths but the libs are elsewhere but still in default (linker)
+ dnl path -- try to compile a test program to check for this
+ save_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS $TOOLKIT_INCLUDE"
+ save_LIBS="$LIBS"
+ LIBS="$GUI_TK_LIBRARY -lXm -lXmu -lXext -lX11"
+
+ AC_TRY_LINK(
+ [
+ #include <Xm/Xm.h>
+ ],
+ [
+ int version;
+ version = xmUseVersion;
+ ],
+ [
+ AC_MSG_RESULT(found in default search path)
+ COMPILED_X_PROGRAM=1
+ ],
+ [
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR(please set LDFLAGS to contain the location of libXm)
+ ]
+ )
+
+ CFLAGS=$save_CFLAGS
+ LIBS="$save_LIBS"
fi
AC_MSG_CHECKING([if we need -lXp and/or -lSM -lICE])
AC_MSG_ERROR([can't link a simple motif program])
fi
+ dnl this seems to be needed under IRIX and shouldn't do any harm
+ dnl elsewhere
+ AC_CHECK_LIB(Sgm, [SgCreateList], [libsgm_link=" -lSgm"])
+
save_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS $TOOLKIT_INCLUDE"
- AC_MSG_CHECKING([for Motif 2])
- AC_TRY_COMPILE([
- #include <Xm/Xm.h>
- ],
- [
- #if XmVersion < 2000
- Not Motif 2
- #endif
- ],
- [
- AC_DEFINE(__WXMOTIF20__,1)
- AC_MSG_RESULT([found])
- ],
- [
- AC_DEFINE(__WXMOTIF20__,0)
- AC_MSG_RESULT([not found])
- ])
-
- AC_MSG_CHECKING([whether Motif is Lesstif])
- AC_TRY_COMPILE([
- #include <Xm/Xm.h>
- ],
- [
- #if !defined(LesstifVersion) || LesstifVersion <= 0
- Not Lesstif
- #endif
- ],
- [
- AC_DEFINE(__WXLESSTIF__,1)
- AC_MSG_RESULT([yes])
- ],
- [
- AC_DEFINE(__WXLESSTIF__,0)
- AC_MSG_RESULT([no])
- ])
+
+ AC_CACHE_CHECK([for Motif 2],
+ wx_cv_lib_motif2,
+ AC_TRY_COMPILE([
+ #include <Xm/Xm.h>
+ ],
+ [
+ #if XmVersion < 2000
+ Not Motif 2
+ #endif
+ ],
+ wx_cv_lib_motif2="yes",
+ wx_cv_lib_motif2="no"))
+ if test "$wx_cv_lib_motif2" = "yes"; then
+ AC_DEFINE(__WXMOTIF20__,1)
+ else
+ AC_DEFINE(__WXMOTIF20__,0)
+ fi
+
+ AC_CACHE_CHECK([whether Motif is Lesstif],
+ wx_cv_lib_lesstif,
+ AC_TRY_COMPILE([
+ #include <Xm/Xm.h>
+ ],
+ [
+ #if !defined(LesstifVersion) || LesstifVersion <= 0
+ Not Lesstif
+ #endif
+ ],
+ wx_cv_lib_lesstif="yes",
+ wx_cv_lib_lesstif="no")
+ )
+ if test "$wx_cv_lib_lesstif" = "yes"; then
+ AC_DEFINE(__WXLESSTIF__,1)
+ else
+ AC_DEFINE(__WXLESSTIF__,0)
+ fi
+
CFLAGS=$save_CFLAGS
- GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lXm${libp_link} -lXmu -lXext -lXt${libsm_ice_link} -lX11"
+ GUI_TK_LIBRARY="$GUI_TK_LIBRARY${libsgm_link} -lXm${libp_link} -lXmu -lXext -lXt${libsm_ice_link} -lX11"
TOOLKIT=MOTIF
GUIDIST=MOTIF_DIST
fi
if test "$ac_find_libraries" != "" ; then
WX_LINK_PATH_EXIST($ac_find_libraries,$GUI_TK_LIBRARY)
GUI_TK_LIBRARY="$GUI_TK_LIBRARY$ac_path_to_link"
- AC_MSG_RESULT(found at $ac_find_libraries)
+ AC_MSG_RESULT(found in $ac_find_libraries)
AC_CACHE_CHECK([for X11/xpm.h],
wx_cv_x11_xpm_h,
dnl Optional libraries included when system library is not used
dnl ---------------------------------------------------------------------------
+dnl do this after test for X11 above so that we have a chance of finding Xlib.h
+if test "$wxUSE_GUI" = "yes"; then
+ if test "$wxUSE_UNIX" = "yes" -a "$wxUSE_PM" != 1; then
+ dnl defines HAVE_X11_XKBLIB_H
+ AC_CHECK_HEADERS(X11/Xlib.h)
+ AC_CHECK_HEADERS([X11/XKBlib.h], [], [],
+ [
+ #if HAVE_X11_XLIB_H
+ #include <X11/Xlib.h>
+ #endif
+ ])
+ fi
+fi
+
dnl ----------------------------------------------------------------
dnl iODBC support
[
char *buf;
va_list ap;
- const char *fmt = "%s";
- vsnprintf(buf, 10u, fmt, ap);
+ vsnprintf(buf, 10u, "%s", ap);
],
wx_cv_func_vsnprintf_decl=yes,
wx_cv_func_vsnprintf_decl=no
if test "$wx_cv_func_vsnprintf_decl" = "yes"; then
AC_DEFINE(HAVE_VSNPRINTF_DECL)
+
+ dnl we know there is a vsnprintf declaration, but some old headers
+ dnl may have one taking a "char *" format instead of "const char *"
+ AC_CACHE_CHECK([if vsnprintf declaration is broken], wx_cv_func_broken_vsnprintf_decl,
+ [
+ AC_TRY_COMPILE(
+ [
+ #include <stdio.h>
+ #include <stdarg.h>
+ #ifdef __MSL__
+ #if __MSL__ >= 0x6000
+ namespace std {}
+ using namespace std;
+ #endif
+ #endif
+ ],
+ [
+ char *buf;
+ va_list ap;
+ const char *fmt = "%s";
+ vsnprintf(buf, 10u, fmt, ap);
+ ],
+ wx_cv_func_broken_vsnprintf_decl=no,
+ wx_cv_func_broken_vsnprintf_decl=yes
+ )
+ ]
+ )
+
+ if test "$wx_cv_func_broken_vsnprintf_decl" = "yes"; then
+ AC_DEFINE(HAVE_BROKEN_VSNPRINTF_DECL)
+ fi
fi
fi
],
[
char *buf;
- const char *fmt = "%s";
- snprintf(buf, 10u, fmt, "wx");
+ snprintf(buf, 10u, "%s", "wx");
],
wx_cv_func_snprintf_decl=yes,
wx_cv_func_snprintf_decl=no
if test "$wx_cv_func_snprintf_decl" = "yes"; then
AC_DEFINE(HAVE_SNPRINTF_DECL)
+
+ dnl we know there is an snprintf declaration, but some old headers
+ dnl may have one taking a "char *" format instead of "const char *"
+ AC_CACHE_CHECK([if snprintf declaration is broken], wx_cv_func_broken_snprintf_decl,
+ [
+ AC_TRY_COMPILE(
+ [
+ #include <stdio.h>
+ #include <stdarg.h>
+ #ifdef __MSL__
+ #if __MSL__ >= 0x6000
+ namespace std {}
+ using namespace std;
+ #endif
+ #endif
+ ],
+ [
+ char *buf;
+ const char *fmt = "%s";
+ snprintf(buf, 10u, fmt, "wx");
+ ],
+ wx_cv_func_broken_snprintf_decl=no,
+ wx_cv_func_broken_snprintf_decl=yes
+ )
+ ]
+ )
+
+ if test "$wx_cv_func_broken_snprintf_decl" = "yes"; then
+ AC_DEFINE(HAVE_BROKEN_SNPRINTF_DECL)
+ fi
fi
fi
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_CACHE_CHECK(for statfs declaration, wx_cv_func_statfs_decl,
- [
- #if defined(__BSD__)
- #include <sys/param.h>
- #include <sys/mount.h>
- #else
- #include <sys/vfs.h>
- #endif
- ],
- [
- struct statfs fs;
- statfs("", &fs);
- ],
- wx_cv_func_statfs_decl=yes,
- wx_cv_func_statfs_decl=no
+ AC_TRY_COMPILE(
+ [
+ #if defined(__BSD__)
+ #include <sys/param.h>
+ #include <sys/mount.h>
+ #else
+ #include <sys/vfs.h>
+ #endif
+ ],
+ [
+ struct statfs fs;
+ statfs("", &fs);
+ ],
+ wx_cv_func_statfs_decl=yes,
+ wx_cv_func_statfs_decl=no
+ )
)
AC_LANG_RESTORE
THREAD_OPTS="pthreads"
;;
*-hp-hpux* )
- if test "x$GCC" != "xyes"; then
+ if test "x$GCC" = "xyes"; then
+ dnl g++ versions before 3.3.2 don't support -pthread.
+ $CXX -dumpspecs | grep 'pthread:' >/dev/null ||
+ THREAD_OPTS=""
+ else
dnl HP-UX aCC only gives a warning, not an error about
dnl -pthread but it doesn't work and we have to use
dnl -lpthread there
[
pthread_mutexattr_t attr;
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
- ], [
- wx_cv_type_pthread_mutexattr_t=yes
- ], [
- wx_cv_type_pthread_mutexattr_t=no
- ]
+ ],
+ wx_cv_type_pthread_mutexattr_t=yes,
+ wx_cv_type_pthread_mutexattr_t=no
)
])
if test "$wx_cv_type_pthread_mutexattr_t" = "yes"; then
AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_T)
+
+ dnl check if we already have the declaration we need, it is not
+ dnl present in some systems' headers
+ AC_CACHE_CHECK([for pthread_mutexattr_settype declaration],
+ wx_cv_func_pthread_mutexattr_settype_decl, [
+ AC_TRY_COMPILE([#include <pthread.h>],
+ [
+ pthread_mutexattr_t attr;
+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
+ ],
+ wx_cv_func_pthread_mutexattr_settype_decl=yes,
+ wx_cv_func_pthread_mutexattr_settype_decl=no
+ )
+ ])
+ if test "$wx_cv_func_pthread_mutexattr_settype_decl" = "yes"; then
+ AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_SETTYPE_DECL)
+ fi
else
dnl don't despair, there may be another way to do it
AC_CACHE_CHECK([for PTHREAD_RECURSIVE_MUTEX_INITIALIZER],
dnl Unix implementation needs additional checks because audio support
dnl comes in many favours:
if test "$USE_UNIX" = "1" ; then
- AC_CHECK_HEADERS([sys/soundcard.h],,
- [DISABLED_CONTRIB="$DISABLED_CONTRIB mmedia"])
+ dnl it's not enough to check for just the header because OSS under NetBSD
+ dnl redefines ioctl as oss_ioctrl inside it and so we also need to test
+ dnl whether we need -lossaudio at link-time
+ AC_CACHE_CHECK([for ioctl() in sys/soundcard.h], ac_cv_header_sys_soundcard, [
+ AC_TRY_LINK([
+ #include <sys/soundcard.h>
+ ],
+ [
+ ioctl(0, SNDCTL_DSP_SYNC, 0);
+ ],
+ ac_cv_header_sys_soundcard=yes,
+ [
+ saveLibs="$LIBS"
+ LIBS="$saveLibs -lossaudio"
+ AC_TRY_LINK([
+ #include <sys/soundcard.h>
+ ],
+ [
+ ioctl(0, SNDCTL_DSP_SYNC, 0);
+ ],
+ ac_cv_header_sys_soundcard=yes,
+ [
+ LIBS="$saveLibs"
+ ac_cv_header_sys_soundcard=no
+ ]
+ )
+ ]
+ )
+ ])
+
+ if test "$ac_cv_header_sys_soundcard" = "yes"; then
+ AC_DEFINE(HAVE_SYS_SOUNDCARD_H)
+ else
+ DISABLED_CONTRIB="$DISABLED_CONTRIB mmedia"
+ fi
fi
WITH_PLUGIN_SDL=0
if test "$wxUSE_SOUND" = "yes"; then
dnl ---------------------------------------------------------------------------
dnl time/date functions
-dnl ------------------------------------------------------------------------
+dnl ---------------------------------------------------------------------------
if test "$wxUSE_DATETIME" = "yes"; then
- dnl check for strptime
+ dnl check for strptime and for its declaration as some systems lack it
AC_CHECK_FUNCS(strptime)
+ if test "$ac_cv_func_strptime" = "yes"; then
+ AC_CACHE_CHECK([for strptime declaration], wx_cv_func_strptime_decl,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+ AC_TRY_COMPILE(
+ [
+ #include <time.h>
+ ],
+ [
+ struct tm t;
+ strptime("foo", "bar", &t);
+ ],
+ wx_cv_func_strptime_decl=yes,
+ wx_cv_func_strptime_decl=no
+ )
+ AC_LANG_RESTORE
+ ]
+ )
+ fi
+ if test "$wx_cv_func_strptime_decl" = "yes"; then
+ AC_DEFINE(HAVE_STRPTIME_DECL)
+ fi
dnl check for timezone variable
dnl doesn't exist under Darwin / Mac OS X which uses tm_gmtoff instead
dnl converting between incompatible pointer types, so
dnl try to use it to get the correct behaviour at
dnl least with gcc (otherwise we'd always use size_t)
- CFLAGS_OLD="$CFLAGS"
+ CXXFLAGS_OLD="$CXXFLAGS"
if test "$GCC" = yes ; then
- CFLAGS="$CFLAGS -Werror"
+ CXXFLAGS="$CXXFLAGS -Werror"
fi
AC_TRY_COMPILE(
)
)
- CFLAGS="$CFLAGS_OLD"
+ CXXFLAGS="$CXXFLAGS_OLD"
]
)
])
wxUSE_SOCKETS=no
AC_MSG_WARN([Couldn't find socklen_t synonym for this system])
else
- AC_DEFINE_UNQUOTED(SOCKLEN_T, $wx_cv_type_getsockname3)
+ AC_DEFINE_UNQUOTED(WX_SOCKLEN_T, $wx_cv_type_getsockname3)
fi
dnl Do this again for getsockopt as it may be different
AC_CACHE_CHECK([what is the type of the fifth argument of getsockopt],
dnl converting between incompatible pointer types, so
dnl try to use it to get the correct behaviour at
dnl least with gcc (otherwise we'd always use size_t)
- CFLAGS_OLD="$CFLAGS"
+ CXXFLAGS_OLD="$CXXFLAGS"
if test "$GCC" = yes ; then
- CFLAGS="$CFLAGS -Werror"
+ CXXFLAGS="$CXXFLAGS -Werror"
fi
AC_TRY_COMPILE(
)
)
- CFLAGS="$CFLAGS_OLD"
+ CXXFLAGS="$CXXFLAGS_OLD"
]
)
])
-I\${top_srcdir}/include $TOOLKIT_INCLUDE"
dnl C/C++ compiler options used to compile wxWidgets
-if test "$GXX" = yes ; then
- dnl CXXWARNINGS="-Wall -W -Wcast-qual -Werror"
+dnl
+dnl check for icc before gcc as icc is also recognized as gcc
+if test "x$INTELCC" = "xyes" ; then
+ dnl Warnings which can't be easily suppressed in C code are disabled:
+ dnl
+ dnl remark #810: conversion from "x" to "y" may lose significant bits
+ dnl remark #869: parameter "foo" was never referenced
+ dnl remark #1572: floating-point equality and inequality comparisons
+ dnl are unreliable
+ dnl remark #1684: conversion from pointer to same-sized integral type
+ dnl
+ dnl (for others see below)
+ CWARNINGS="-Wall -wd810,869,981,1418,1572,1684"
+elif test "$GCC" = yes ; then
CWARNINGS="-Wall -Wundef"
- CXXWARNINGS="$CWARNINGS -Wno-ctor-dtor-privacy"
+fi
+
+if test "x$INTELCXX" = "xyes" ; then
+ dnl Intel compiler gives some warnings which simply can't be worked
+ dnl around or of which we have too many (810, 869) so it's impractical to
+ dnl keep them enabled even if in theory it would be nice and some others
+ dnl (279) are generated for standard macros and so there is nothing we can
+ dnl do about them
+ dnl
+ dnl remark #279: controlling expression is constant
+ dnl remark #383: value copied to temporary, reference to temporary used
+ dnl remark #444: destructor for base class "xxx" is not virtual
+ dnl remark #810: conversion from "x" to "y" may lose significant bits
+ dnl remark #869: parameter "foo" was never referenced
+ dnl remark #981: operands are evaluated in unspecified order
+ dnl remark #1418: external definition with no prior declaration
+ dnl remark #1419: external declaration in primary source file
+ CXXWARNINGS="-Wall -wd279,383,444,810,869,981,1418,1419"
+elif test "$GXX" = yes ; then
+ dnl CXXWARNINGS="-Wall -W -Wcast-qual -Werror"
+ CXXWARNINGS="-Wall -Wundef -Wno-ctor-dtor-privacy"
fi
EXTRA_CFLAGS="$WXDEBUG $WXODBCFLAG $PROFILE $OPTIMISE"
AC_BAKEFILE([m4_include(autoconf_inc.m4)])
-if test "$wxUSE_WINE" = "yes"; then
- RESCOMP=wrc
-fi
-
if test "$wxUSE_SHARED" = "yes"; then
dnl We get the shared build linker from bakefile, since it
esac
fi
-dnl According to Vaclav, if NO_GCC_PRAGMA is used for any reason it needs to
-dnl be in wx-config output. Not doing so could result in link problems.
-GCC_PRAGMA_FLAGS=""
-PCH_FLAGS=""
-
-dnl Find out if we have to define WX_PRECOMP (and thus NO_GCC_PRAGMA)
+dnl find out if the compiler supports PCH
+dnl
+dnl TODO: this should be in bakefile
if test $GCC_PCH = 1 ; then
- PCH_FLAGS="-DWX_PRECOMP"
- GCC_PRAGMA_FLAGS="-DNO_GCC_PRAGMA"
-else
- dnl Find out if we have to define NO_GCC_PRAGMA
- if test "$GCC" = yes; then
- AC_MSG_CHECKING([if this GCC version is >= 4.0 and needs -DNO_GCC_PRAGMA])
- AC_TRY_COMPILE([],
- [#if (__GNUC__ < 4)
- Not GCC 4.0 or greater
- #endif
- ],
- [GCC_PRAGMA_FLAGS="-DNO_GCC_PRAGMA"
- AC_MSG_RESULT([yes])],
- [AC_MSG_RESULT([no])
- case "${host}" in
- *-*-darwin* )
- dnl Some Apple's GCC version are broken and can't handle the
- dnl pragmas:
- GCC_PRAGMA_FLAGS="-DNO_GCC_PRAGMA"
- ;;
- *-*-mingw32* )
- dnl MinGW GCC versions > 3.2 have problems with
- dnl static member of classes derived from templates
- dnl in combination with #pragma interface/implementation
- dnl (the test case uses 4 files)
- dnl ... and with exceptions handling (undefined symbols needed
- dnl to correctly calls dtors when unwinding) as well
- if test "$wxUSE_STL" = "yes" -o \
- "$wxUSE_NO_EXCEPTIONS" != "yes" -o \
- "$wxUSE_NO_RTTI" != "yes"; then
- AC_MSG_CHECKING([if this MinGW version needs -DNO_GCC_PRAGMA])
- AC_TRY_COMPILE([],
- [#if !(__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2))
- Not GCC 3.2 or greater
- #endif
- ],
- [GCC_PRAGMA_FLAGS="-DNO_GCC_PRAGMA"
- AC_MSG_RESULT([yes])],
- [AC_MSG_RESULT([no])])
- fi
- ;;
- *-pc-os2_emx | *-pc-os2-emx )
- dnl GCC versions ported to OS/2 have similar problems with
- dnl static member of classes in combination with STL and
- dnl pragma interface/implementation
- if test "$wxUSE_STL" = "yes"; then
- AC_MSG_CHECKING([if this gcc version needs -DNO_GCC_PRAGMA])
- AC_TRY_COMPILE([],
- [#if !(__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2))
- Not GCC 3.2 or greater
- #endif
- ],
- [GCC_PRAGMA_FLAGS="-DNO_GCC_PRAGMA"
- AC_MSG_RESULT([yes])],
- [AC_MSG_RESULT([no])])
- fi
- ;;
- esac
-dnl closing bracket of if GCC < 4.0
- ] )
- fi
+ CPPFLAGS="-DWX_PRECOMP $CPPFLAGS"
fi
-CPPFLAGS="$PCH_FLAGS $GCC_PRAGMA_FLAGS $CPPFLAGS"
dnl for convenience, sort the samples in alphabetical order