dnl When making releases do:
dnl
dnl WX_RELEASE_NUMBER += 1
-dnl WX_INTERFACE_AGE += 1
-dnl WX_BINARY_AGE += 1
dnl
-dnl if any functions have been added, do:
+dnl ..and update WX_CURRENT, WX_RELEASE and WX_AGE according to the
+dnl following rules:
dnl
-dnl WX_INTERFACE_AGE = 0
+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.
+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=3
WX_RELEASE_NUMBER=0
-WX_INTERFACE_AGE=0
-WX_BINARY_AGE=0
-
WX_VERSION=$WX_MAJOR_VERSION_NUMBER.$WX_MINOR_VERSION_NUMBER.$WX_RELEASE_NUMBER
-
-dnl wxWindows shared library versioning
WX_RELEASE=$WX_MAJOR_VERSION_NUMBER.$WX_MINOR_VERSION_NUMBER
-WX_CURRENT=`expr $WX_RELEASE_NUMBER - $WX_INTERFACE_AGE`
-WX_REVISION=$WX_INTERFACE_AGE
-WX_AGE=`expr $WX_BINARY_AGE - $WX_INTERFACE_AGE`
+
+WX_CURRENT=0
+WX_REVISION=0
+WX_AGE=0
+
dnl ------------------------------------------------------------------------
dnl Check platform (host system)
USE_UNIX=1
USE_WIN32=0
USE_BEOS=0
+USE_MAC=0
USE_LINUX=
USE_SGI=
USE_OSF=
USE_BSD=
USE_FREEBSD=
+USE_OPENBSD=
USE_NETBSD=
USE_VMS=
USE_ULTRIX=
AC_DEFINE(__BSD__)
DEFAULT_DEFAULT_wxUSE_GTK=1
;;
+ *-*-openbsd*)
+ USE_BSD=1
+ USE_OPENBSD=1
+ AC_DEFINE(__FREEBSD__)
+ AC_DEFINE(__OPENBSD__)
+ DEFAULT_DEFAULT_wxUSE_GTK=1
+ ;;
*-*-netbsd*)
USE_BSD=1
USE_NETBSD=1
DEFAULT_wxUSE_UNICODE=no
DEFAULT_wxUSE_WCSRTOMBS=no
+ DEFAULT_wxUSE_IMAGE=no
DEFAULT_wxUSE_GIF=no
DEFAULT_wxUSE_PCX=no
DEFAULT_wxUSE_PNM=no
+ DEFAULT_wxUSE_XPM=no
else
DEFAULT_wxUSE_THREADS=yes
DEFAULT_wxUSE_UNICODE=no
DEFAULT_wxUSE_WCSRTOMBS=no
+ DEFAULT_wxUSE_IMAGE=yes
DEFAULT_wxUSE_GIF=yes
DEFAULT_wxUSE_PCX=yes
DEFAULT_wxUSE_PNM=yes
+ DEFAULT_wxUSE_XPM=yes
fi
dnl WX_ARG_WITH should be used to select whether an external package will be
dnl support for image formats that do not rely on external library
dnl ---------------------------------------------------------------------------
+WX_ARG_ENABLE(image, [ --enable-image use wxImage class], wxUSE_IMAGE)
WX_ARG_ENABLE(gif, [ --enable-gif use gif images (GIF file format)], wxUSE_GIF)
WX_ARG_ENABLE(pcx, [ --enable-pcx use pcx images (PCX file format)], wxUSE_PCX)
WX_ARG_ENABLE(pnm, [ --enable-pnm use pnm images (PNM file format)], wxUSE_PNM)
+WX_ARG_ENABLE(pnm, [ --enable-xpm use xpm images (XPM file format)], wxUSE_XPM)
fi
dnl for GUI only
dnl distribute only wxBase sources/headers
GUIDIST="BASE_DIST"
DISTDIR="wxBase"
-
- dnl Apple MAC OS X specific extras
- if test "$USE_UNIX" = 1 ; then
- ALL_OBJECTS="${ALL_OBJECTS} dl_macosx.o"
- ALL_DEPFILES="${ALL_DEPFILES} dl_macosx.d"
- fi
fi
dnl the name of the (libtool) library
WX_ALL_INSTALLED="CREATE_INSTALLED_LINKS"
WX_ALL="CREATE_LINKS"
;;
- *-*-freebsd* | *-*-netbsd* )
+ *-*-freebsd* | *-*-openbsd* | *-*-netbsd* )
SHARED_LD="${CC} -shared -o"
PIC_FLAG="-fPIC"
if test "$wxUSE_OPENGL" = "yes"; then
fi
;;
*-*-darwin* )
- SHARED_LD="libtool -dynamic -o"
- PIC_FLAG="-fPIC"
+ SHARED_LD="${CXX} -dynamiclib -o"
+ PIC_FLAG="-dynamic -fPIC"
if test "$wxUSE_OPENGL" = "yes"; then
WX_ALL_INSTALLED="CREATE_INSTALLED_LINKS CREATE_INSTALLED_LINKS_GL"
WX_ALL="CREATE_LINKS CREATE_LINKS_GL"
WX_ALL_INSTALLED="CREATE_INSTALLED_LINKS"
WX_ALL="CREATE_LINKS"
fi
+ dnl add the resources target
+ WX_ALL="${WX_ALL} lib${WX_LIBRARY}-${WX_RELEASE}.${WX_CURRENT}.r"
+ dnl the name of the shared library
+ WX_LIBRARY_NAME_SHARED="lib${WX_LIBRARY}-${WX_RELEASE}.${WX_CURRENT}.${WX_REVISION}.${WX_AGE}.dylib"
+ WX_LIBRARY_NAME_SHARED_GL="lib${WX_LIBRARY}_gl-${WX_RELEASE}.${WX_CURRENT}.${WX_REVISION}.${WX_AGE}.dylib"
+ dnl the name of the links to the shared library
+ WX_LIBRARY_LINK1="lib${WX_LIBRARY}-${WX_RELEASE}.${WX_CURRENT}.dylib"
+ WX_LIBRARY_LINK2="lib${WX_LIBRARY}-${WX_RELEASE}.dylib"
+ WX_LIBRARY_LINK3="lib${WX_LIBRARY}.dylib"
+ WX_LIBRARY_LINK1_GL="lib${WX_LIBRARY}_gl-${WX_RELEASE}.${WX_CURRENT}.dylib"
+ WX_LIBRARY_LINK2_GL="lib${WX_LIBRARY}_gl-${WX_RELEASE}.dylib"
+ WX_LIBRARY_LINK3_GL="lib${WX_LIBRARY}_gl.dylib"
;;
*-*-osf* )
SHARED_LD="${CXX} -shared -o"
dnl defines uid_t and gid_t if not already defined
AC_TYPE_UID_T
+dnl check for wchar_t
+AC_CACHE_CHECK([for wchar_t], wx_cv_type_wchar_t,
+[
+ AC_TRY_COMPILE([#include <wchar.h>],
+ [
+ wchar_t wc, *ws;
+ wc = L'a';
+ ws = L"Hello, world!";
+ ],
+ wx_cv_type_wchar_t=yes,
+ wx_cv_type_wchar_t=no)
+])
+if test "$wx_cv_type_wchar_t" = yes ; then
+ AC_DEFINE(wxUSE_WCHAR_T)
+fi
+
dnl ---------------------------------------------------------------------------
dnl Checks for structures
dnl ---------------------------------------------------------------------------
dnl cross-compiling)
dnl defines the size of certain types of variables in SIZEOF_<TYPE>
AC_CHECK_SIZEOF(char, 1)
-AC_CHECK_SIZEOF(wchar_t, 4)
AC_CHECK_SIZEOF(short, 2)
AC_CHECK_SIZEOF(int *, 4)
AC_CHECK_SIZEOF(int, 4)
AC_CHECK_SIZEOF(long, 4)
AC_CHECK_SIZEOF(long long, 0)
+dnl we have to do it ourselves because SGI/Irix's stdio.h does not include
+dnl wchar_t an AC_CHECK_SIZEOF only includes stdio.h
+AC_CACHE_CHECK([size of wchar_t], wx_cv_sizeof_wchar_t,
+[
+ AC_TRY_RUN(
+ [
+ #include <wchar.h>
+ #include <stdio.h>
+ int main()
+ {
+ FILE *f=fopen("conftestval", "w");
+ if (!f) exit(1);
+ fprintf(f, "%i", sizeof(wchar_t));
+ exit(0);
+ }
+ ],
+ wx_cv_sizeof_wchar_t=`cat conftestval`,
+ wx_cv_sizeof_wchar_t=0,
+ wx_cv_sizeof_wchar_t=4
+ )
+])
+
+AC_DEFINE_UNQUOTED(SIZEOF_WCHAR_T, $wx_cv_sizeof_wchar_t)
+
+
dnl for bytesex stuff (don't use AC_C_BIGENDIAN to allow cross-compiling)
WX_C_BIGENDIAN
dnl check for vprintf/vsprintf() which are GNU extensions
AC_FUNC_VPRINTF
-AC_LANG_SAVE
-AC_LANG_CPLUSPLUS
dnl check for vsscanf() and vsnprintf() - on some platforms (Linux, glibc
dnl 2.1.1 for the first one, HP-UX for the second) it's available in the
dnl if we fail to find vsnprintf, also try for _vsnprintf as that is what
dnl we'll find under MSW if it exists.
+dnl final note: AC_TRY_COMPILE will only be executed if there is nothing in
+dnl the cache so we have to do AC_DEFINE(HAVE_VSNPRINTF) below and not inside
+dnl it or the symbol wouldn't be defined for the 2nd and subsequent configure
+dnl runs
+
dnl check for vsnprintf() - a safe version of vsprintf()
AC_CACHE_CHECK([for vsnprintf], wx_cv_func_vsnprintf,
[
vsnprintf(s, 42, fmt, argp);
va_end(argp);
], [
- AC_DEFINE(HAVE_VSNPRINTF)
wx_cv_func_vsnprintf=yes
], [
AC_TRY_COMPILE([
_vsnprintf(s, 42, fmt, argp);
va_end(argp);
], [
- AC_DEFINE(HAVE_VSNPRINTF)
wx_cv_func_vsnprintf=yes
], [
- AC_MSG_WARN(unsafe function sprintf will be used instead of snprintf)
wx_cv_func_vsnprintf=no
])
])
])
+if test "$wx_cv_func_vsnprintf" = yes; then
+ AC_DEFINE(HAVE_VSNPRINTF)
+else
+ AC_MSG_WARN(unsafe function sprintf will be used instead of snprintf)
+fi
+
dnl check for vsscanf()
AC_CACHE_CHECK([for vsscanf], wx_cv_func_vsscanf,
[
vsscanf("42", fmt, argp);
va_end(argp);
], [
- AC_DEFINE(HAVE_VSSCANF)
wx_cv_func_vsscanf=yes
], [
wx_cv_func_vsscanf=no
])
])
+if test "$wx_cv_func_vsscanf" = yes; then
+ AC_DEFINE(HAVE_VSSCANF)
+fi
+
AC_LANG_RESTORE
dnl the following tests are for Unix(like) systems only
if test "$TOOLKIT" != "MSW"; then
+dnl check for available version of iconv()
+
+AC_LANG_SAVE
+AC_LANG_CPLUSPLUS
+AC_CACHE_CHECK([if iconv() takes char**], wx_cv_iconv_takes_char,
+[
+ AC_TRY_COMPILE([#include <iconv.h>],
+ [
+ char **inbuf, **outbuf;
+ iconv_t cd;
+ size_t insz, outsz;
+ iconv(cd, inbuf, &insz, outbuf, &outsz);
+ ],
+ wx_cv_iconv_takes_char=yes,
+ wx_cv_iconv_takes_char=no)
+])
+AC_LANG_RESTORE
+if test "$wx_cv_iconv_takes_char" = yes ; then
+ AC_DEFINE(WX_ICONV_TAKES_CHAR)
+fi
+
+
dnl check for POSIX signals if we need them
if test "$wxUSE_ON_FATAL_EXCEPTION" = "yes" -a "$wxUSE_UNIX" = "yes"; then
AC_CHECK_FUNCS(sigaction)
dnl AIX calls the library libpthreads - thanks IBM!
if test "$USE_AIX" = 1; then
THREADS_LIB=pthreads
+ elif test "$USE_MAC" = 1; then
+ THREADS_LIB=cc_dynamic
else
THREADS_LIB=pthread
fi
pthread_cleanup_pop(0);
], [
wx_cv_func_pthread_cleanup_push=yes
- AC_DEFINE(HAVE_THREAD_CLEANUP_FUNCTIONS)
], [
wx_cv_func_pthread_cleanup_push=no
])
])
+ if test "$wx_cv_func_pthread_cleanup_push" = "yes"; then
+ AC_DEFINE(HAVE_THREAD_CLEANUP_FUNCTIONS)
+ fi
+
+ dnl mutexattr_t initialization is done in quite different ways on different
+ dnl platforms, so check for a few things:
+ dnl
+ dnl HAVE_MUTEX_RECURSIVE means that we can create recursive mutexes
+ dnl HAVE_MUTEXATTR_SETTYPE means that we do it using
+ dnl pthread_mutexattr_settype(PTHREAD_MUTEX_RECURSIVE) and if it is not
+ dnl defined, we do it by directly assigned
+ dnl PTHREAD_MUTEX_RECURSIVE_MUTEX_INITIALIZER_NP to attr
+
+ AC_CACHE_CHECK([for pthread_mutexattr_t], wx_cv_type_pthread_mutexattr_t,
+ [
+ AC_TRY_COMPILE([#include <pthread.h>],
+ [
+ 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
+ ]
+ )
+ ])
+
+ if test "$wx_cv_type_pthread_mutexattr_t" = "yes"; then
+ AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_T)
+ else
+ dnl don't despair, there may be another way to do it
+ AC_CACHE_CHECK([for PTHREAD_RECURSIVE_MUTEX_INITIALIZER],
+ wx_cv_type_pthread_rec_mutex_init,
+ [
+ AC_TRY_COMPILE([#include <pthread.h>],
+ [
+ pthread_mutex_t attr = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
+ ], [
+ wx_cv_type_pthread_rec_mutex_init=yes
+ ], [
+ wx_cv_type_pthread_rec_mutex_init=no
+ ]
+ )
+ ])
+ if test "$wx_cv_type_pthread_rec_mutex_init"="yes"; then
+ AC_DEFINE(HAVE_PTHREAD_RECURSIVE_MUTEX_INITIALIZER)
+ else
+ dnl this may break code working elsewhere, so at least warn about it
+ AC_MSG_WARN([wxMutex won't be recursive on this platform])
+ fi
+ fi
+
THREADS_LINK="-l$THREADS_LINK"
dnl building MT programs under Solaris with the native compiler requires -mt
if test "$wxUSE_THREADS" = "yes"; then
AC_DEFINE(wxUSE_THREADS)
- dnl must define _REENTRANT for multithreaded code
- CFLAGS="${CFLAGS} -D_REENTRANT"
- CXXFLAGS="${CXXFLAGS} -D_REENTRANT"
+ dnl must define _REENTRANT for multithreaded code except for Mac OS X
+ if test "$wxUSE_MAC" = "0"; then
+ CFLAGS="${CFLAGS} -D_REENTRANT"
+ CXXFLAGS="${CXXFLAGS} -D_REENTRANT"
+ fi
SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS thread"
else
fi
if test "$wxUSE_MAC" = 1 ; then
- TOOLKIT_DEF="${TOOLKIT_DEF} -D__UNIX__ -DTARGET_CARBON"
- TOOLKIT_INCLUDE="${TOOLKIT_INCLUDE}"
+ TOOLKIT_DEF="${TOOLKIT_DEF} -D__UNIX__ -D__POWERPC__ -DTARGET_CARBON"
+ CFLAGS="${CFLAGS} -fno-common -fpascal-strings"
+ CPPFLAGS="${CPPFLAGS} -fno-common -fpascal-strings"
+ AC_CHECK_PROG(REZ, Rez, Rez, /Developer/Tools/Rez)
+ AC_CHECK_PROG(DEREZ, Derez, Derez, /Developer/Tools/Derez)
+ RESCOMP=${REZ}
+ REZFLAGS="-d __UNIX__ -useDF"
+ DEREZFLAGS="Carbon.r -useDF"
+ RESFLAGS="Carbon.r -t APPL"
+ LIBWXMACRES="\$(LIBWX_MACRES)"
+ LIBWXMACRESCOMP="\$(LIBWX_MACRESCOMP)"
fi
if test "$wxUSE_CYGWIN" = 1 ; then
DEP_INFO_FLAGS=
CODE_GEN_FLAGS=
+CODE_GEN_FLAGS_CXX=
if test "$GCC" = yes ; then
if test "$wxUSE_NO_RTTI" = "yes" ; then
- CODE_GEN_FLAGS="$CODE_GEN_FLAGS -fno-rtti"
+ CODE_GEN_FLAGS_CXX="$CODE_GEN_FLAGS -fno-rtti"
fi
if test "$wxUSE_NO_EXCEPTIONS" = "yes" ; then
- CODE_GEN_FLAGS="$CODE_GEN_FLAGS -fno-exceptions"
+ CODE_GEN_FLAGS_CXX="$CODE_GEN_FLAGS -fno-exceptions"
fi
if test "$wxUSE_PERMISSIVE" = "yes" ; then
CODE_GEN_FLAGS="$CODE_GEN_FLAGS -fpermissive"
wxUSE_DRAG_AND_DROP=no
fi
+ if test "$wxUSE_MAC" = 1; then
+ AC_MSG_WARN([Drag and drop is not yet supported under Mac OS X])
+ wxUSE_DRAG_AND_DROP=no
+ fi
+
if test "$USE_WIN32" = 1; then
dnl check for ole headers and disable DnD if not present (earlier
dnl versions of mingw32 don't have them)
SAMPLES_SUBDIRS="$SAMPLES_SUBDIRS validate"
fi
+if test "$wxUSE_IMAGE" = "yes" ; then
+ AC_DEFINE(wxUSE_IMAGE)
+fi
+
if test "$wxUSE_GIF" = "yes" ; then
AC_DEFINE(wxUSE_GIF)
fi
AC_DEFINE(wxUSE_PNM)
fi
+if test "$wxUSE_XPM" = "yes" ; then
+ AC_DEFINE(wxUSE_XPM)
+fi
+
dnl ---------------------------------------------------------------------------
dnl get the string with OS info - used by wxGetOsDescription()
dnl ---------------------------------------------------------------------------
dnl
dnl note that we always link with -lm except for Mac OS X
dnl extended.c uses floor() and is always linked in
+EXTRA_LIBS="$LIBS $POSIX4_LINK $INET_LINK $WCHAR_LINK $THREADS_LINK $DMALLOC_LINK $DL_LINK $ZLIB_LINK -lm"
if test "$USE_MAC" = 1 ; then
- EXTRA_LIBS="$LIBS $POSIX4_LINK $INET_LINK $WCHAR_LINK $THREADS_LINK $DMALLOC_LINK $DL_LINK $ZLIB_LINK -framework System"
- CFLAGS="${CFLAGS} -fpascal-strings"
- CPPFLAGS="${CPPFLAGS} -fpascal-strings"
-else
- EXTRA_LIBS="$LIBS $POSIX4_LINK $INET_LINK $WCHAR_LINK $THREADS_LINK $DMALLOC_LINK $DL_LINK $ZLIB_LINK -lm"
+ EXTRA_LIBS="$EXTRA_LIBS -framework Carbon -framework System"
fi
if test "$wxUSE_GUI" = "yes"; then
EXTRA_LIBS="$GUILIBS $PNG_LINK $JPEG_LINK $TIFF_LINK $FREETYPE_LINK $EXTRA_LIBS"
AC_SUBST(PIC_FLAG)
AC_SUBST(DEP_INFO_FLAGS)
AC_SUBST(CODE_GEN_FLAGS)
+AC_SUBST(CODE_GEN_FLAGS_CXX)
AC_SUBST(BURNT_LIBRARY_NAME)
AC_SUBST(BURNT_LIBRARY_NAME_GL)
AC_SUBST(WX_TARGET_LIBRARY_SONAME)
AC_SUBST(RESPROGRAM)
AC_SUBST(RESCOMP)
AC_SUBST(RESFLAGS)
+dnl additional for Mac OS X
+AC_SUBST(REZ)
+AC_SUBST(REZFLAGS)
+AC_SUBST(DEREZ)
+AC_SUBST(DEREZFLAGS)
+AC_SUBST(LIBWXMACRES)
+AC_SUBST(LIBWXMACRESCOMP)
dnl These seam to be missing
AC_SUBST(DLLTOOL)
dnl the debian build process wants setup.h in the lib subdir so we
dnl can pretend wxWin is already installed, so we *copy* it there
-
+
if test ! -d lib; then
mkdir lib
fi
mkdir lib/wx/include/wx/${TOOLKIT_NAME}
fi
if test -f setup.h; then
- cp -f setup.h lib/wx/include/wx/${TOOLKIT_NAME}/setup.h
+ cp -fp setup.h lib/wx/include/wx/${TOOLKIT_NAME}/setup.h
fi
dnl *move* setup.h to its final place
mkdir include/wx/${TOOLKIT_DIR}
fi
if test -f setup.h; then
- mv -f setup.h include/wx/${TOOLKIT_DIR}/setup.h
+ cp -fp setup.h include/wx/${TOOLKIT_DIR}/setup.h
fi
],