dnl initialization
dnl ---------------------------------------------------------------------------
-AC_INIT([wxWidgets], [2.6.1], [wx-dev@lists.wxwidgets.org])
+AC_INIT([wxWidgets], [2.6.2], [wx-dev@lists.wxwidgets.org])
dnl the file passed to AC_CONFIG_SRCDIR should be specific to our package
AC_CONFIG_SRCDIR([wx-config.in])
dnl When making releases do:
dnl
dnl wx_release_number += 1
-dnl
-dnl ..and update WX_CURRENT, WX_REVISION and WX_AGE according to the
-dnl following rules:
-dnl
-dnl If any changes have been made to the public interface, that is if any
-dnl exported class, method, global or global type has been added, removed
-dnl or changed in any way, then do: WX_CURRENT += 1
-dnl
-dnl If source changes have been made that *do not* alter the public
-dnl interface then do: WX_REVISION += 1
-dnl If WX_CURRENT was incremented (as above) instead do: WX_REVISION = 0
-dnl
-dnl If any public interface was added, do: WX_AGE += 1
-dnl If any public interface was removed (or altered in a way effectively
-dnl removing the previous definition), instead do: WX_AGE = 0
-dnl
-dnl When the major or minor version numbers are incremented, all the above
-dnl variables should be reset to 0. wx_subrelease_number should be set to zero
-dnl when major, minor or release numbers change.
-dnl
-dnl The resulting library name will be of the form:
-dnl libwx_$(TOOLKIT)-$(WX_RELEASE).so.$(WX_CURRENT).$(WX_REVISION).$(WX_AGE)
wx_major_version_number=2
wx_minor_version_number=6
-wx_release_number=1
+wx_release_number=2
wx_subrelease_number=1
WX_RELEASE=$wx_major_version_number.$wx_minor_version_number
WX_MSW_VERSION=$wx_major_version_number$wx_minor_version_number$wx_release_number
-WX_CURRENT=1
-WX_REVISION=0
-WX_AGE=0
dnl ------------------------------------------------------------------------
DEFAULT_STD_FLAG=no
;;
- powerpc-*-darwin* )
- dnl PowerPC Darwin based distributions (including Mac OS X)
+ *-*-darwin* )
+ dnl Darwin based distributions (including Mac OS X)
USE_BSD=1
USE_DARWIN=1
SO_SUFFIX=dylib
WX_ARG_ENABLE(validators, [ --enable-validators use wxValidator and derived classes], wxUSE_VALIDATORS)
WX_ARG_ENABLE(busyinfo, [ --enable-busyinfo use wxBusyInfo], wxUSE_BUSYINFO)
WX_ARG_ENABLE(joystick, [ --enable-joystick use wxJoystick], wxUSE_JOYSTICK)
-WX_ARG_ENABLE(metafile, [ --enable-metafiles use wxMetaFile (Windows only)], wxUSE_METAFILE)
+WX_ARG_ENABLE(metafile, [ --enable-metafiles use wxMetaFile (Win32 only)], wxUSE_METAFILE)
WX_ARG_ENABLE(dragimage, [ --enable-dragimage use wxDragImage], wxUSE_DRAGIMAGE)
WX_ARG_ENABLE(accessibility,[ --enable-accessibility enable accessibility support], wxUSE_ACCESSIBILITY)
+if test "$wxUSE_MSW" = "1"; then
+ WX_ARG_ENABLE(dccache, [ --enable-dccache cache temporary wxDC objects (Win32 only)], wxUSE_DC_CACHEING)
+fi
+
dnl ---------------------------------------------------------------------------
dnl support for image formats that do not rely on external library
dnl ---------------------------------------------------------------------------
dnl The other BSD's should probably go in here too, since this is
dnl to workaround a strange static lib BSDism.
dnl Mac OS X install seems to ignore -p option...
- powerpc-*-darwin* )
+ *-*-darwin* )
INSTALL_PROGRAM="cp -fp"
INSTALL_DATA="cp -fp"
;;
dnl Platform specific tests
dnl ------------------------------------------------------------------------
-dnl xlC needs -qunique (at least on AIX) so that one source file can be
+dnl xlC needs -qunique under AIX so that one source file can be
dnl compiled to multiple object files and safely linked together.
-if test "x$XLCXX" = "xyes"; then
+if test "x$XLCXX" = "xyes" -a "x$USE_AIX" = "x1"; then
CXXFLAGS="$CXXFLAGS -qunique"
fi
-dnl This case is for OS X vs. everything else
+dnl This case is for PowerPC OS X vs. everything else
case "${host}" in
powerpc-*-darwin* )
AC_MSG_CHECKING([if __POWERPC__ is already defined])
[AC_MSG_RESULT([no])
AC_DEFINE(__POWERPC__)
])
+ ;;
+esac
+
+dnl This case is for OS X vs. everything else
+case "${host}" in
+ *-*-darwin* )
AC_MSG_CHECKING([if CoreFoundation/CFBase.h is usable])
AC_TRY_COMPILE([#include <CoreFoundation/CFBase.h>
],[],
LDFLAGS="$LDFLAGS -Zsysv-signals"
else
if test "$wx_cv_gccversion" = "EMX3"; then
- LIBS="$LIBS -lstdcxx"
+ LIBS="$LIBS -lstdcxx -lgcc"
LDFLAGS="$LDFLAGS -Zsysv-signals"
else
LIBS="$LIBS -lstdc++"
dnl defines HAVE_FNMATCH_H
AC_CHECK_HEADERS(fnmatch.h)
-if test "x$ac_cv_header_fnmatch_h" = "xyes"; then
- AC_CHECK_FUNCS(fnmatch)
-fi
-
dnl defines HAVE_LANGINFO_H (GNU libc locale parameters)
AC_CHECK_HEADERS(langinfo.h)
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 when compiling with g++ without this
+ dnl
+ dnl NB: gcc defines __STDC_EXT__=1 for C code, but not for C++, hence
+ dnl we do this only for CXXFLAGS and not CPPFLAGS
+ if test "$USE_HPUX" = 1 -a "$GXX" = "yes"; then
+ CXXFLAGS="$CXXFLAGS -D__STDC_EXT__=1"
+ fi
else
WX_LARGEFILE_FLAGS="-D_LARGE_FILES"
fi
dnl we don't use HAVE_DYNAMIC_CAST anywhere right now...
dnl AC_CXX_DYNAMIC_CAST
+dnl With Sun CC, temporaries have block scope by default. This flag is needed
+dnl to get the expression scope behaviour that conforms to the standard.
+if test "x$SUNCXX" = xyes; then
+ CXXFLAGS="$CXXFLAGS -features=tmplife"
+fi
+
dnl check for std::string or std::wstring
if test "$wxUSE_STD_STRING" = "yes" -o "$wxUSE_STL" = "yes"; then
AC_LANG_PUSH(C++)
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 Cross compiling with gcc?
+if test "$build" != "$host" -a "$GCC" = yes; then
+ dnl for gcc cross-compilers "$CC -print-prog-name=ld" prints the path to
+ dnl the linker. Stripping off the trailing '/bin/ld' gives us a candiate
+ dnl for a 'root' below which libraries and headers for the target system
+ dnl might be installed.
+ if cross_root=`$CC -print-prog-name=ld 2>/dev/null`; then
+ cross_root=`dirname $cross_root`
+ cross_root=`dirname $cross_root`
+
+ dnl substitute this candiate root for '^/usr' in the search lists,
+ dnl strip out any that don't start '^/usr'.
+ SEARCH_LIB=`for x in $SEARCH_LIB; do echo $x; done | sed -ne "s|^/usr|$cross_root|p"`
+ SEARCH_INCLUDE=`for x in $SEARCH_INCLUDE; do echo $x; done | sed -ne "s|^/usr|$cross_root|p"`
+
+ dnl also have pkg-config search for *.pc files under this 'root'
+ if test -z "$PKG_CONFIG_PATH"; then
+ PKG_CONFIG_PATH="$cross_root/local/lib/pkgconfig:$cross_root/lib/pkgconfig"
+ export PKG_CONFIG_PATH
+ fi
+
+ dnl AC_PATH_XTRA doesn't work currently unless -x-includes and
+ dnl -x-libraries are given on the command line. So if they are not
+ dnl set then set them here to plausible defaults.
+ if test -z "$x_includes" -o "$x_includes" = NONE; then
+ WX_PATH_FIND_INCLUDES($SEARCH_INCLUDE, X11/Intrinsic.h)
+ x_includes=$ac_find_includes
+ fi
+ if test -z "$x_libraries" -o "$x_libraries" = NONE; then
+ WX_PATH_FIND_LIBRARIES($SEARCH_LIB, Xt)
+ x_libraries=$ac_find_libraries
+ fi
+ fi
+fi
+
dnl ------------------------------------------------------------------------
dnl Check for libraries
dnl ------------------------------------------------------------------------
save_LIBS="$LIBS"
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
AC_DEFINE(NEED_GTK_ICON_SIZE_LOOKUP)
AC_MSG_RESULT([yes])
])
-
+
dnl test if we have at least GTK+ 2.4:
AC_MSG_CHECKING([if GTK+ is version >= 2.4])
AC_TRY_COMPILE([
[
AC_MSG_RESULT([no])
])
-
+
CFLAGS="$save_CFLAGS"
LIBS="$save_LIBS"
else
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
+ #error "Not Lesstif"
+ #endif
+ ],
+ [
+ AC_DEFINE(__WXLESSTIF__,1)
+ AC_MSG_RESULT([yes])
+ ],
+ [
+ AC_DEFINE(__WXLESSTIF__,0)
+ AC_MSG_RESULT([no])
+ ])
CFLAGS=$save_CFLAGS
GUI_TK_LIBRARY="$GUI_TK_LIBRARY -lXm${libp_link} -lXmu -lXext -lXt${libsm_ice_link} -lX11"
*-*-linux* | *-*-gnu* )
SAMPLES_RPATH_FLAG="-Wl,-rpath,\$(top_builddir)lib"
WXCONFIG_RPATH="-Wl,-rpath,\$libdir"
- ;;
+ ;;
*-*-solaris2* )
if test "$GCC" = yes ; then
fi
;;
- powerpc-*-darwin* )
+ *-*-darwin* )
install_name_tool=`which install_name_tool`
if test "$install_name_tool" -a -x "$install_name_tool"; then
SAMPLES_RPATH_POSTLINK="\$(top_builddir)change-install-names \$(LIBDIRNAME) \$(prefix) \$@"
AC_DEFINE(HAVE_WCSLEN)
fi
- dnl on HP-UX aCC and g++ need this define to find mbstrtowcs() &c
- if test "$USE_HPUX" = 1; then
+ dnl On HP-UX aCC need this define to find mbstrtowcs() &c
+ dnl Can't be used for g++ since the mbstate_t in wchar.h can conflict
+ dnl with g++'s in <cwchar> (unless -D_INCLUDE__STDC_A1_SOURCE is in the
+ dnl flags when g++ is configured, it will declare it's own).
+ if test "$USE_HPUX" = 1 -a "$GCC" != "yes"; then
CPPFLAGS="$CPPFLAGS -D_INCLUDE__STDC_A1_SOURCE "
fi
- dnl try to use wcsrtombs instead of wcstombs which is buggy in old GNU
- dnl libc versions if possible
- AC_CHECK_FUNCS(wcsrtombs)
+ dnl Try to use wcsrtombs instead of wcstombs which is buggy in old GNU
+ dnl libc versions if possible. AC_CHECK_FUNCS only checks it's in the
+ dnl library, not the header, so do a header check for mbstate_t first.
+ AC_CHECK_TYPES([mbstate_t],
+ [AC_CHECK_FUNCS(wcsrtombs)],
+ [],
+ [#include <wchar.h>])
else
AC_MSG_WARN([Wide character support is unavailable])
fi
dnl check for vsnprintf() -- a safe version of vsprintf())
dnl
-dnl the trouble here is that on some systems (notable HP-UX) this function is
+dnl the trouble here is that on some systems (e.g HP-UX 10) this function is
dnl present in libc but not in the system headers and so AC_CHECK_FUNCS (which,
dnl stupidly, provides a dummy function declaration inside its extension)
dnl succeeds, even with C++ compiler, but the compilation of wxWidgets fails
dnl yes it is -- now check if it is in the headers
AC_CACHE_CHECK([for vsnprintf declaration], wx_cv_func_vsnprintf_decl,
[
+ dnl our troubles are not over: HP-UX 11 prototypes vsnprintf() as
+ dnl taking "char *" and not "const char *" while Metrowerks does
+ dnl provide a correct vsnprintf declaration but in C++ mode it's
+ dnl always in std namespace and so we have to bring it in scope
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;
- vsnprintf(buf, 10u, "%s", ap);
+ const char *fmt = "%s";
+ vsnprintf(buf, 10u, fmt, ap);
],
wx_cv_func_vsnprintf_decl=yes,
- [
- dnl Metrowerks does provide a vsnprintf declaration
- dnl but in C++ mode it's always in std namespace.
- dnl FIXME: Do we have any UNIX C++ compilers that would
- dnl fail this test if using namespace std; was
- dnl simply always included?
- AC_TRY_COMPILE(
- [
- #include <stdio.h>
- #include <stdarg.h>
- using namespace std;
- ],
- [
- char *buf;
- va_list ap;
- vsnprintf(buf, 10u, "%s", ap);
- ],
- wx_cv_func_vsnprintf_decl=yes,
- wx_cv_func_vsnprintf_decl=no
- )
- ]
+ wx_cv_func_vsnprintf_decl=no
)
]
)
AC_LANG_RESTORE
+if test "x$ac_cv_header_fnmatch_h" = "xyes"; then
+ AC_CHECK_FUNCS(fnmatch)
+fi
+
+if test "$wxUSE_FILE" = "yes"; then
+ AC_CHECK_FUNCS(fsync)
+fi
dnl the following tests are for Unix(like) systems only
THREAD_OPTS="pthreads"
;;
*-hp-hpux* )
- dnl HP-UX aCC only gives a warning, not an error about
- dnl -pthread but it doesn't work and we have to use -lpthread
- dnl there
- if test "x$GCC" != "xyes"; then
+ if test "x$GCC" = "xyes"; then
+ dnl the correct option for gcc is -threads, at least under
+ dnl HP-UX 11.00
+ THREAD_OPTS="-threads"
+ fi
+ 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
THREAD_OPTS=""
fi
;;
if test "$wxUSE_THREADS" = "yes" ; then
AC_CHECK_FUNCS(thr_setconcurrency)
+ dnl can't use AC_CHECK_FUNCS for this one as it's usually a macro and so
+ dnl wouldn't be found by it
+ AC_CACHE_CHECK([for pthread_cleanup_push/pop], wx_cv_func_pthread_cleanup,
+ [
+ AC_TRY_COMPILE([#include <pthread.h>
+ void ThreadCleanupFunc(void *p);
+ ],
+ [
+ void *p;
+ pthread_cleanup_push(ThreadCleanupFunc, p);
+ pthread_cleanup_pop(0);
+ ], [
+ wx_cv_func_pthread_cleanup=yes
+ ], [
+ wx_cv_func_pthread_cleanup=no
+ ]
+ )
+ ])
+ if test "x$wx_cv_func_pthread_cleanup" = "xyes"; then
+ AC_DEFINE(wxHAVE_PTHREAD_CLEANUP)
+ fi
+
AC_CHECK_HEADERS(sched.h)
if test "$ac_cv_header_sched_h" = "yes"; then
AC_CHECK_FUNC(sched_yield,
AC_MSG_ERROR([wxExpr and old-style resources are now available in contrib only])
fi
+dnl ---------------------------------------------------------------------------
+dnl wxMetafile availability
+dnl ---------------------------------------------------------------------------
+
+if test "$wxUSE_METAFILE" = "yes"; then
+ if test "$wxUSE_MSW" != 1 -a "$wxUSE_MAC" != 1 -a "$wxUSE_PM" != 1; then
+ AC_MSG_WARN([wxMetafile is not available on this system... disabled])
+ wxUSE_METAFILE=no
+ fi
+fi
+
dnl ---------------------------------------------------------------------------
dnl IPC: IPC, Drag'n'Drop, Clipboard, ...
dnl ---------------------------------------------------------------------------
fi
fi
+if test "$wxUSE_DATAOBJ" = "yes"; then
+ if test "$wxUSE_MGL" = 1; then
+ AC_MSG_WARN([wxDataObject not yet supported under MGL... disabled])
+ wxUSE_DATAOBJ=no
+ else
+ AC_DEFINE(wxUSE_DATAOBJ)
+ fi
+else
+ AC_MSG_WARN([Clipboard and drag-and-drop require wxDataObject -- disabled])
+ wxUSE_CLIPBOARD=no
+ wxUSE_DRAG_AND_DROP=no
+fi
+
if test "$wxUSE_CLIPBOARD" = "yes"; then
if test "$wxUSE_MGL" = 1; then
AC_MSG_WARN([Clipboard not yet supported under MGL... disabled])
if test "$wxUSE_CLIPBOARD" = "yes"; then
AC_DEFINE(wxUSE_CLIPBOARD)
-
- dnl required by clipboard code in configuration check
- AC_DEFINE(wxUSE_DATAOBJ)
fi
fi
SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS access"
fi
+if test "$wxUSE_DC_CACHEING" = "yes"; then
+ AC_DEFINE(wxUSE_DC_CACHEING)
+fi
+
if test "$wxUSE_DRAGIMAGE" = "yes"; then
AC_DEFINE(wxUSE_DRAGIMAGE)
SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS dragimag"
dnl C/C++ compiler options used to compile wxWidgets
if test "$GXX" = yes ; then
dnl CXXWARNINGS="-Wall -W -Wcast-qual -Werror"
- CWARNINGS="-Wall"
+ CWARNINGS="-Wall -Wundef"
CXXWARNINGS="$CWARNINGS -Wno-ctor-dtor-privacy"
- dnl should enable this one day...
- dnl CXXWARNINGS="-Wall -Werror"
fi
EXTRA_CFLAGS="$WXDEBUG $WXODBCFLAG $PROFILE $OPTIMISE"
CPPFLAGS=`echo $WXDEBUG_DEFINE $INCLUDES $CPPFLAGS`
CFLAGS=`echo $CODE_GEN_FLAGS $EXTRA_CFLAGS $CFLAGS $CWARNINGS`
CXXFLAGS=`echo $CODE_GEN_FLAGS $CODE_GEN_FLAGS_CXX $EXTRA_CFLAGS $CXXFLAGS $CXXWARNINGS`
-
+
if test "x$MWCC" = "xyes"; then
dnl Correct MW 8.3 to be more similar to GCC. In particular we
dnl must use <regex.h> from system not our local copy on OS X,
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)
if test $GCC_PCH = 1 ; then
- CPPFLAGS="-DWX_PRECOMP $CPPFLAGS"
+ 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)
+ #error "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))
+ #error "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))
+ #error "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
fi
-
-dnl FIXME: This is a temporary measure until the need for it is also
-dnl removed from the headers.
-CPPFLAGS="-DNO_GCC_PRAGMA $CPPFLAGS"
+CPPFLAGS="$PCH_FLAGS $GCC_PRAGMA_FLAGS $CPPFLAGS"
dnl for convenience, sort the samples in alphabetical order
AC_SUBST(WXCONFIG_RPATH)
AC_SUBST(WXCONFIG_LDFLAGS_GUI)
AC_SUBST(WX_LARGEFILE_FLAGS)
+AC_SUBST(GCC_PRAGMA_FLAGS)
AC_SUBST(CODE_GEN_FLAGS)
AC_SUBST(CODE_GEN_FLAGS_CXX)
AC_SUBST(EXE_LINKER)