+dnl ===========================================================================
+dnl macros to find the a file in the list of include/lib paths
+dnl ===========================================================================
+
+dnl ---------------------------------------------------------------------------
+dnl call WX_PATH_FIND_INCLUDES(search path, header name), sets ac_find_includes
+dnl to the full name of the file that was found or leaves it empty if not found
+dnl ---------------------------------------------------------------------------
+AC_DEFUN(WX_PATH_FIND_INCLUDES,
+[
+ac_find_includes=
+for ac_dir in $1;
+ do
+ if test -f "$ac_dir/$2"; then
+ ac_find_includes=$ac_dir
+ break
+ fi
+ done
+])
+
+dnl ---------------------------------------------------------------------------
+dnl call WX_PATH_FIND_LIBRARIES(search path, header name), sets ac_find_includes
+dnl to the full name of the file that was found or leaves it empty if not found
+dnl ---------------------------------------------------------------------------
+AC_DEFUN(WX_PATH_FIND_LIBRARIES,
+[
+ac_find_libraries=
+for ac_dir in $1;
+ do
+ for ac_extension in a so sl dylib; do
+ if test -f "$ac_dir/lib$2.$ac_extension"; then
+ ac_find_libraries=$ac_dir
+ break 2
+ fi
+ done
+ done
+])
+
+dnl ---------------------------------------------------------------------------
+dnl Path to include, already defined
+dnl ---------------------------------------------------------------------------
+AC_DEFUN(WX_INCLUDE_PATH_EXIST,
+[
+ ac_path_to_include=$1
+ echo "$2" | grep "\-I$1" > /dev/null
+ result=$?
+ if test $result = 0; then
+ ac_path_to_include=""
+ else
+ ac_path_to_include="-I$1"
+ fi
+])
+
+dnl ---------------------------------------------------------------------------
+dnl Path to link, already defined
+dnl ---------------------------------------------------------------------------
+AC_DEFUN(WX_LINK_PATH_EXIST,
+[
+ echo "$2" | grep "\-L$1" > /dev/null
+ result=$?
+ if test $result = 0; then
+ ac_path_to_link=""
+ else
+ ac_path_to_link="-L$1"
+ fi
+])
+
+dnl ===========================================================================
+dnl C++ features test
+dnl ===========================================================================
+
+dnl ---------------------------------------------------------------------------
+dnl WX_CPP_NEW_HEADERS checks whether the compiler has "new" <iostream> header
+dnl or only the old <iostream.h> one - it may be generally assumed that if
+dnl <iostream> exists, the other "new" headers (without .h) exist too.
+dnl
+dnl call WX_CPP_NEW_HEADERS(actiof-if-true, action-if-false-or-cross-compiling)
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN(WX_CPP_NEW_HEADERS,
+[
+ if test "$cross_compiling" = "yes"; then
+ ifelse([$2], , :, [$2])
+ else
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+
+ AC_CHECK_HEADERS(iostream)
+
+ if test "$ac_cv_header_iostream" = "yes" ; then
+ ifelse([$1], , :, [$1])
+ else
+ ifelse([$2], , :, [$2])
+ fi
+
+ AC_LANG_RESTORE
+ fi
+])
+
+dnl ---------------------------------------------------------------------------
+dnl WX_CPP_BOOL checks whether the C++ compiler has a built in bool type
+dnl
+dnl call WX_CPP_BOOL - will define HAVE_BOOL if the compiler supports bool
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN(WX_CPP_BOOL,
+[
+ AC_CACHE_CHECK([if C++ compiler supports bool], wx_cv_cpp_bool,
+ [
+ AC_LANG_SAVE
+ AC_LANG_CPLUSPLUS
+
+ AC_TRY_COMPILE(
+ [
+ ],
+ [
+ bool b = true;
+
+ return 0;
+ ],
+ [
+ wx_cv_cpp_bool=yes
+ ],
+ [
+ wx_cv_cpp_bool=no
+ ]
+ )
+
+ AC_LANG_RESTORE
+ ])
+
+ if test "$wx_cv_cpp_bool" = "yes"; then
+ AC_DEFINE(HAVE_BOOL)
+ fi
+])
+
+dnl ---------------------------------------------------------------------------
+dnl a slightly better AC_C_BIGENDIAN macro which allows cross-compiling
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN(WX_C_BIGENDIAN,
+[AC_CACHE_CHECK(whether byte ordering is bigendian, ac_cv_c_bigendian,
+[ac_cv_c_bigendian=unknown
+# See if sys/param.h defines the BYTE_ORDER macro.
+AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/param.h>], [
+#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN
+ bogus endian macros
+#endif], [# It does; now see whether it defined to BIG_ENDIAN or not.
+AC_TRY_COMPILE([#include <sys/types.h>
+#include <sys/param.h>], [
+#if BYTE_ORDER != BIG_ENDIAN
+ not big endian
+#endif], ac_cv_c_bigendian=yes, ac_cv_c_bigendian=no)])
+if test $ac_cv_c_bigendian = unknown; then
+AC_TRY_RUN([main () {
+ /* Are we little or big endian? From Harbison&Steele. */
+ union
+ {
+ long l;
+ char c[sizeof (long)];
+ } u;
+ u.l = 1;
+ exit (u.c[sizeof (long) - 1] == 1);
+}], ac_cv_c_bigendian=no, ac_cv_c_bigendian=yes, ac_cv_c_bigendian=unknown)
+fi])
+if test $ac_cv_c_bigendian = unknown; then
+ AC_MSG_WARN([Assuming little-endian target machine - this may be overriden by adding the line "ac_cv_c_bigendian=${ac_cv_c_bigendian='yes'}" to config.cache file])
+fi
+if test $ac_cv_c_bigendian = yes; then
+ AC_DEFINE(WORDS_BIGENDIAN)
+fi
+])
+
+dnl ---------------------------------------------------------------------------
+dnl override AC_ARG_ENABLE/WITH to cache the results in .cache file
+dnl ---------------------------------------------------------------------------
+
+AC_DEFUN(WX_ARG_CACHE_INIT,
+ [
+ wx_arg_cache_file="configarg.cache"
+ echo "loading argument cache $wx_arg_cache_file"
+ rm -f ${wx_arg_cache_file}.tmp
+ touch ${wx_arg_cache_file}.tmp
+ touch ${wx_arg_cache_file}
+ ])
+
+AC_DEFUN(WX_ARG_CACHE_FLUSH,
+ [
+ echo "saving argument cache $wx_arg_cache_file"
+ mv ${wx_arg_cache_file}.tmp ${wx_arg_cache_file}
+ ])
+
+dnl this macro checks for a three-valued command line --with argument:
+dnl possible arguments are 'yes', 'no', or 'sys'
+dnl usage: WX_ARG_SYS_WITH(option, helpmessage, variable-name)
+AC_DEFUN(WX_ARG_SYS_WITH,
+ [
+ AC_MSG_CHECKING([for --with-$1])
+ no_cache=0
+ AC_ARG_WITH($1, [$2],
+ [
+ if test "$withval" = yes; then
+ ac_cv_use_$1='$3=yes'
+ elif test "$withval" = no; then
+ ac_cv_use_$1='$3=no'
+ elif test "$withval" = sys; then
+ ac_cv_use_$1='$3=sys'
+ else
+ AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no or sys])
+ fi
+ ],
+ [
+ LINE=`grep "$3" ${wx_arg_cache_file}`
+ if test "x$LINE" != x ; then
+ eval "DEFAULT_$LINE"
+ else
+ no_cache=1
+ fi
+
+ ac_cv_use_$1='$3='$DEFAULT_$3
+ ])
+
+ eval "$ac_cv_use_$1"
+ if test "$no_cache" != 1; then
+ echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
+ fi
+
+ if test "$$3" = yes; then
+ AC_MSG_RESULT(yes)
+ elif test "$$3" = no; then
+ AC_MSG_RESULT(no)
+ elif test "$$3" = sys; then
+ AC_MSG_RESULT(system version)
+ else
+ AC_MSG_ERROR([Invalid value for --with-$1: should be yes, no or sys])
+ fi
+ ])
+
+dnl this macro checks for a command line argument and caches the result
+dnl usage: WX_ARG_WITH(option, helpmessage, variable-name)
+AC_DEFUN(WX_ARG_WITH,
+ [
+ AC_MSG_CHECKING([for --with-$1])
+ no_cache=0
+ AC_ARG_WITH($1, [$2],
+ [
+ if test "$withval" = yes; then
+ ac_cv_use_$1='$3=yes'
+ else
+ ac_cv_use_$1='$3=no'
+ fi
+ ],
+ [
+ LINE=`grep "$3" ${wx_arg_cache_file}`
+ if test "x$LINE" != x ; then
+ eval "DEFAULT_$LINE"
+ else
+ no_cache=1
+ fi
+
+ ac_cv_use_$1='$3='$DEFAULT_$3
+ ])
+
+ eval "$ac_cv_use_$1"
+ if test "$no_cache" != 1; then
+ echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
+ fi
+
+ if test "$$3" = yes; then
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ fi
+ ])
+
+dnl like WX_ARG_WITH but uses AC_ARG_ENABLE instead of AC_ARG_WITH
+dnl usage: WX_ARG_ENABLE(option, helpmessage, variable-name)
+AC_DEFUN(WX_ARG_ENABLE,
+ [
+ AC_MSG_CHECKING([for --enable-$1])
+ no_cache=0
+ AC_ARG_ENABLE($1, [$2],
+ [
+ if test "$enableval" = yes; then
+ ac_cv_use_$1='$3=yes'
+ else
+ ac_cv_use_$1='$3=no'
+ fi
+ ],
+ [
+ LINE=`grep "$3" ${wx_arg_cache_file}`
+ if test "x$LINE" != x ; then
+ eval "DEFAULT_$LINE"
+ else
+ no_cache=1
+ fi
+
+ ac_cv_use_$1='$3='$DEFAULT_$3
+ ])
+
+ eval "$ac_cv_use_$1"
+ if test "$no_cache" != 1; then
+ echo $ac_cv_use_$1 >> ${wx_arg_cache_file}.tmp
+ fi
+
+ if test "$$3" = yes; then
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ fi
+ ])
+