build: faster check for standard C++ headers.
authorAlexei Sheplyakov <varg@theor.jinr.ru>
Sat, 6 Sep 2008 04:51:19 +0000 (08:51 +0400)
committerAlexei Sheplyakov <varg@theor.jinr.ru>
Tue, 9 Sep 2008 10:17:08 +0000 (14:17 +0400)
Include them all into a test program and check if it compiles (in order to reduce
the run time of the `configure' script).

acinclude.m4
configure.ac

index 9645620..886e7f2 100644 (file)
@@ -4,6 +4,33 @@ dnl additions' names with AC_ but with GINAC_ in order to steer clear of
 dnl future trouble.
 dnl ===========================================================================
 
+dnl Usage: GINAC_STD_CXX_HEADERS
+dnl Check for standard C++ headers, bail out if something is missing.
+AC_DEFUN([GINAC_STD_CXX_HEADERS], [
+AC_CACHE_CHECK([for standard C++ header files], [ginac_cv_std_cxx_headers], [
+       ginac_cv_std_cxx_headers="no"
+       AC_LANG_PUSH([C++])
+       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+               #include <iosfwd>
+               #include <iostream>
+               #include <vector>
+               #include <list>
+               #include <map>
+               #include <set>
+               #include <string>
+               #include <sstream>
+               #include <typeinfo>
+               #include <stdexcept>
+               #include <algorithm>
+               #include <limits>
+               #include <ctime>
+               ]])], [ginac_cv_std_cxx_headers="yes"])
+       AC_LANG_POP([C++])])
+if test "${ginac_cv_std_cxx_headers}" != "yes"; then
+       AC_MSG_ERROR([Standard ISO C++ 98 headers are missing])
+fi
+])
+
 dnl Usage: GINAC_LIBREADLINE
 dnl
 dnl Check if GNU readline library and headers are avialable.
index ab4c4b6..ab71085 100644 (file)
@@ -82,27 +82,14 @@ AC_CHECK_SIZEOF(void *)
 dnl Switch to C++ language mode for the following libraries and headers.
 AC_LANG([C++])
 
+dnl Make sure all the necessary standard headers are installed on the system.
+GINAC_STD_CXX_HEADERS
+
 dnl Check for stuff needed for building the GiNaC interactive shell (ginsh).
 AC_CHECK_HEADERS(unistd.h)
 GINAC_HAVE_RUSAGE
 GINAC_READLINE
 
-dnl Make sure all the necessary standard headers are installed on the system.
-AC_CHECK_HEADER(iosfwd, , GINAC_ERROR([The standard <iosfwd> header file could not be found.]))
-AC_CHECK_HEADER(iostream, , GINAC_ERROR([The standard <iostream> header file could not be found.]))
-AC_CHECK_HEADER(vector, , GINAC_ERROR([The standard <vector> header file could not be found.]))
-AC_CHECK_HEADER(list, , GINAC_ERROR([The standard <list> header file could not be found.]))
-AC_CHECK_HEADER(map, , GINAC_ERROR([The standard <map> header file could not be found.]))
-AC_CHECK_HEADER(string, , GINAC_ERROR([The standard <string> header file could not be found.]))
-AC_CHECK_HEADER(sstream, , GINAC_ERROR([The standard <sstream> header file could not be found.]))
-AC_CHECK_HEADER(typeinfo, , GINAC_ERROR([The standard <typeinfo> header file could not be found.]))
-AC_CHECK_HEADER(stdexcept, , GINAC_ERROR([The standard <stdexcept> header file could not be found.]))
-AC_CHECK_HEADER(algorithm, , GINAC_ERROR([The standard <algorithm> header file could not be found.]))
-AC_CHECK_HEADER(limits, , GINAC_ERROR([The standard <limits> header file could not be found.]))
-if test "x$CONFIG_RUSAGE" = "xno"; then
-    AC_CHECK_HEADER(ctime, , GINAC_ERROR([The standard <ctime> header file could not be found.]))
-fi
-
 DL_LIBS=""
 dnl Check for dl library (needed for GiNaC::compile).
 AC_CHECK_LIB(dl, dlopen,