From: Vadim Zeitlin Date: Fri, 10 Nov 2006 01:00:17 +0000 (+0000) Subject: use AC_CACHE_CHECK instead of AC_MSG_CHECKING + check to avoid unnecessary checking... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/d92b393c9065210dbbb076cb19ec28806ceedc21?hp=224d4f6d7ca1ad289dd86ec6971964d77d94d3a6 use AC_CACHE_CHECK instead of AC_MSG_CHECKING + check to avoid unnecessary checking for cached tests git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43252 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/configure.in b/configure.in index bdd1f619a2..150d88551f 100644 --- a/configure.in +++ b/configure.in @@ -2131,41 +2131,59 @@ if test "$wxUSE_STD_STRING" = "yes" -o "$wxUSE_STL" = "yes"; then fi dnl check if declares std::[w]string - AC_MSG_CHECKING([for $std_string in ]) - AC_TRY_COMPILE([#include ], - [$std_string foo;], - [AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_STD_WSTRING)], - [AC_MSG_RESULT(no) - AC_MSG_CHECKING([if std::basic_string<$char_type> works]) - AC_TRY_COMPILE([ - #ifdef HAVE_WCHAR_H - # ifdef __CYGWIN__ - # include - # endif - # include - #endif - #ifdef HAVE_STDLIB_H - # include - #endif - #include - #include - ], - [std::basic_string<$char_type> foo; - const $char_type* dummy = foo.c_str();], - [AC_MSG_RESULT(yes)], - [AC_MSG_RESULT([no]) - if test "$wxUSE_STL" = "yes"; then - AC_MSG_ERROR([Can't use --enable-stl without $std_string or std::basic_string<$char_type>]) - elif grep wxUSE_STD_STRING $wx_arg_cache_file >/dev/null; then - AC_MSG_ERROR([Can't use --enable-std_string without $std_string or std::basic_string<$char_type>]) - else - AC_MSG_WARN([No $std_string or std::basic_string<$char_type>, switching to --disable-std_string]) - wxUSE_STD_STRING=no - fi - ] - ) - ]) + AC_CACHE_CHECK([for $std_string in ], + wx_cv_class_stdstring, + [ + AC_TRY_COMPILE([#include ], + [$std_string foo;], + wx_cv_class_stdstring=yes, + wx_cv_class_stdstring=no + ) + ] + ) + + if test "$wx_cv_class_stdstring" = yes; then + if test "$wxUSE_UNICODE" = "yes"; then + AC_DEFINE(HAVE_STD_WSTRING) + fi + dnl we don't need HAVE_STD_STRING, we just suppose it's available if + dnl wxUSE_STD_STRING==yes + else + AC_CACHE_CHECK([if std::basic_string<$char_type> works], + wx_cv_class_stdbasicstring, + [ + AC_TRY_COMPILE([ + #ifdef HAVE_WCHAR_H + # ifdef __CYGWIN__ + # include + # endif + # include + #endif + #ifdef HAVE_STDLIB_H + # include + #endif + #include + #include + ], + [std::basic_string<$char_type> foo; + const $char_type* dummy = foo.c_str();], + wx_cv_class_stdbasicstring=yes, + wx_cv_class_stdbasicstring=no + ) + ] + ) + + if test "$wx_cv_class_stdbasicstring" != yes; then + if test "$wxUSE_STL" = "yes"; then + AC_MSG_ERROR([Can't use --enable-stl without $std_string or std::basic_string<$char_type>]) + elif grep wxUSE_STD_STRING $wx_arg_cache_file >/dev/null; then + AC_MSG_ERROR([Can't use --enable-std_string without $std_string or std::basic_string<$char_type>]) + else + AC_MSG_WARN([No $std_string or std::basic_string<$char_type>, switching to --disable-std_string]) + wxUSE_STD_STRING=no + fi + fi + fi fi if test "$wxUSE_STD_IOSTREAM" = "yes"; then @@ -2184,59 +2202,82 @@ fi if test "$wxUSE_STL" = "yes"; then dnl check for basic STL functionality - AC_MSG_CHECKING([for basic STL functionality]) - AC_TRY_COMPILE([#include - #include - #include - #include - #include ], - [std::vector moo; - std::list foo; - std::vector::iterator it = - std::find_if(moo.begin(), moo.end(), - std::bind2nd(std::less(), 3));], - [AC_MSG_RESULT([yes])], - [AC_MSG_RESULT([no]) - AC_MSG_ERROR([Basic STL functionality missing])]) + AC_CACHE_CHECK([for basic STL functionality], + wx_cv_lib_stl, + [AC_TRY_COMPILE([#include + #include + #include + #include + #include ], + [std::vector moo; + std::list foo; + std::vector::iterator it = + std::find_if(moo.begin(), moo.end(), + std::bind2nd(std::less(), 3));], + wx_cv_lib_stl=yes, + wx_cv_lib_stl=no, + ) + + if test "$wx_cv_lib_stl" != yes; then + AC_MSG_ERROR([Can't use --enable-stl as basic STL functionality is missing]) + fi dnl check for compliant std::string::compare - AC_MSG_CHECKING([for compliant std::string::compare]) - AC_TRY_COMPILE([#include ], - [std::string foo, bar; - foo.compare(bar); - foo.compare(1, 1, bar); - foo.compare(1, 1, bar, 1, 1); - foo.compare(""); - foo.compare(1, 1, ""); - foo.compare(1, 1, "", 2);], - [AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_STD_STRING_COMPARE)], - [AC_MSG_RESULT(no)]) + AC_CACHE_CHECK([for compliant std::string::compare], + wx_cv_func_stdstring_compare, + [AC_TRY_COMPILE([#include ], + [std::string foo, bar; + foo.compare(bar); + foo.compare(1, 1, bar); + foo.compare(1, 1, bar, 1, 1); + foo.compare(""); + foo.compare(1, 1, ""); + foo.compare(1, 1, "", 2);], + wx_cv_func_stdstring_compare=yes, + wx_cv_func_stdstring_compare=no + )] + ) + + if test "$wx_cv_func_stdstring_compare" = yes; then + AC_DEFINE(HAVE_STD_STRING_COMPARE) + fi dnl check for hash_map and hash_set headers AC_CHECK_HEADER([hash_map], - [AC_MSG_CHECKING([for hash_map and hash_set]) - AC_TRY_COMPILE([#include - #include ], - [std::hash_map, std::equal_to > test1; - std::hash_set, std::equal_to > test2;], - [AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_HASH_MAP) - AC_DEFINE(HAVE_STD_HASH_MAP)], - [AC_MSG_RESULT(no)]) - ]) + [AC_CACHE_CHECK([for standard hash_map and hash_set], + wx_cv_class_stdhashmapset, + [AC_TRY_COMPILE([#include + #include ], + [std::hash_map, std::equal_to > test1; + std::hash_set, std::equal_to > test2;], + wx_cv_class_stdhashmapset=yes, + wx_cv_class_stdhashmapset=no) + ] + )] + ) + + if test "$wx_cv_class_stdhashmapset" = yes; then + AC_DEFINE(HAVE_HASH_MAP) + AC_DEFINE(HAVE_STD_HASH_MAP) + fi AC_CHECK_HEADER([ext/hash_map], - [AC_MSG_CHECKING([for hash_map and hash_set]) - AC_TRY_COMPILE([#include - #include ], - [__gnu_cxx::hash_map, std::equal_to > test1; - __gnu_cxx::hash_set, std::equal_to > test2;], - [AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_EXT_HASH_MAP) - AC_DEFINE(HAVE_GNU_CXX_HASH_MAP)], - [AC_MSG_RESULT(no)]) - ]) + [AC_CACHE_CHECK([for GNU hash_map and hash_set], + wx_cv_class_gnuhashmapset, + [AC_TRY_COMPILE([#include + #include ], + [__gnu_cxx::hash_map, std::equal_to > test1; + __gnu_cxx::hash_set, std::equal_to > test2;], + wx_cv_class_gnuhashmapset=yes, + wx_cv_class_gnuhashmapset=no) + ] + )] + ) + + if test "$wx_cv_class_gnuhashmapset" = yes; then + AC_DEFINE(HAVE_EXT_HASH_MAP) + AC_DEFINE(HAVE_GNU_CXX_HASH_MAP) + fi fi dnl pop C++