diff --git a/m4/sah_header_stdcxx.m4 b/m4/sah_header_stdcxx.m4 index 25cea4d165..7e1bd01d92 100644 --- a/m4/sah_header_stdcxx.m4 +++ b/m4/sah_header_stdcxx.m4 @@ -14,20 +14,56 @@ AC_DEFUN([SAH_HEADER_STDCXX],[ sah_stdcxx_headers="algorithm bitset cassert cctype cerrno cfloat climits clocale cmath complex csetjmp csignal cstdarg cstddef cstdio cstdlib cstring ctime deque fstream functional iomanip ios iosfwd iostream istream iterator limits list locale map memory numeric ostream queue set sstream stack stdexcept streambuf string utility valarray vector" AC_LANG_PUSH(C++) - AC_CHECK_HEADERS([$sah_stdcxx_headers]) - for header in $sah_stdcxx_headers + dnl First we'll check to see if they are all here in order to save time. + AC_MSG_CHECKING([standard C++ headers]) + tmp_includes= + for header in $sah_stdcxx_headers do - eval tmp_var=\$ac_cv_header_${header} - if test "$tmp_var" = "yes" - then - sah_cxx_includes="$sah_cxx_includes + tmp_includes="$tmp_includes #include <$header> " - fi done + AC_COMPILE_IFELSE([ + AC_LANG_PROGRAM([[ +$tmp_includes +$ac_includes_default + ]], + [] + )], + [ + ac_includes_default="${ac_includes_default} +${tmp_includes} +" + sah_cxx_includes=${tmp_includes} + AC_MSG_RESULT(yes) + for header in $sah_stdcxx_headers + do + eval ac_cv_header_${header}=yes + ac_uc_defn=HAVE_`echo ${header} | sed -e 's/[^a-zA-Z0-9_]/_/g' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + AC_DEFINE_UNQUOTED([${ac_uc_defn}],1,[Define to 1 if you have the ${header} header]) + AC_CACHE_CHECK([for C++ header <${header}>],[ac_cv_header_${header}]) + done + ], + [ + ac_includes_default="$save_inc" + AC_MSG_RESULT(no) + AC_CHECK_HEADERS([$sah_stdcxx_headers]) + for header in $sah_stdcxx_headers + do + eval tmp_var=\$ac_cv_header_${header} + if test "$tmp_var" = "yes" + then + sah_cxx_includes="$sah_cxx_includes +#include <$header> +" + fi + done + ] + ) + ac_includes_default="$save_inc" AC_CACHE_SAVE AC_LANG_POP - ac_includes_default="$save_inc" CONFIG_TEST= ])