diff options
-rw-r--r-- | lib/make/aclocal.m4 | 45 | ||||
-rw-r--r-- | lib/make/cctk_Config.h.in | 5 | ||||
-rw-r--r-- | lib/make/configure.in | 33 |
3 files changed, 83 insertions, 0 deletions
diff --git a/lib/make/aclocal.m4 b/lib/make/aclocal.m4 index b7871e23..3a65e395 100644 --- a/lib/make/aclocal.m4 +++ b/lib/make/aclocal.m4 @@ -46,6 +46,51 @@ changequote([, ])dnl done ]) +dnl A simplified version of AC_CHECK_MEMBER from autoconf 2.50 and up +dnl CCTK_CHECK_MEMBER(AGGREGATE, MEMBER, +dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], +dnl [INCLUDES]) +dnl --------------------------------------------------------- +dnl AGGREGATE, MEMBER is for instance `struct passwd pw_gecos', shell +dnl variables are not a valid argument. +AC_DEFUN([CCTK_CHECK_MEMBER], +[dnl Extract the aggregate name, and the member name +ac_member_var=`echo $1['_']$2 | sed 'y% %_%'` +AC_MSG_CHECKING([for $1.$2]) +AC_CACHE_VAL(ac_cv_member_$ac_member_var, +[dnl +AC_TRY_COMPILE([$5], +[static $1 ac_aggr; +if (ac_aggr.$2) +return 0;], + eval "ac_cv_member_$ac_member_var=yes", + eval "ac_cv_member_$ac_member_var=no"dnl +) +if eval "test \"`echo '$''{'ac_cv_member_$ac_member_var'}'`\" = no"; then +AC_TRY_COMPILE([$5], +[static $1 ac_aggr; +if (sizeof ac_aggr.$2) +return 0;], + eval "ac_cv_member_$ac_member_var=yes", + eval "ac_cv_member_$ac_member_var=no"dnl +) +fi dnl +])dnl +if eval "test \"`echo '$ac_cv_member_'$ac_member_var`\" = yes"; then + AC_MSG_RESULT(yes) + ifelse([$3], , +[ac_tr_member=HAVE_MEMBER`echo $1 | sed -e 'y% %_%' \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` + AC_DEFINE_UNQUOTED($ac_tr_member) +], [$3]) +else + AC_MSG_RESULT(no) +ifelse([$4], , , [$4 +])dnl +fi +]) + + dnl A version of AC_TRY_COMPILER(TEST-PROGRAM, WORKING-VAR, CROSS-VAR) which, dnl if the TEST-PROGRAM could not be executed, does not throw away the stderr dnl but redirects it into the config.log logfile instead. diff --git a/lib/make/cctk_Config.h.in b/lib/make/cctk_Config.h.in index c5c8ccf8..13eb36f9 100644 --- a/lib/make/cctk_Config.h.in +++ b/lib/make/cctk_Config.h.in @@ -18,6 +18,10 @@ /* Various library functions */ #undef HAVE_GETHOSTBYNAME #undef HAVE_GETOPT_LONG_ONLY +#undef HAVE___CXA_DEMANGLE +#undef HAVE_DLADDR +#undef HAVE_BACKTRACE +#undef HAVE_BACKTRACE_SYMBOLS #undef HAVE_CRYPT #undef HAVE_FINITE #undef HAVE_ISNAN @@ -81,6 +85,7 @@ #undef HAVE_MALLOPT #undef HAVE_M_MMAP_THRESHOLD_VALUE #undef HAVE_SCHED_H +#undef HAVE_EXECINFO_H #undef HAVE_SCHED_GETAFFINITY #undef TIME_WITH_SYS_TIME diff --git a/lib/make/configure.in b/lib/make/configure.in index d4f3c8c1..d75c4274 100644 --- a/lib/make/configure.in +++ b/lib/make/configure.in @@ -686,6 +686,7 @@ CCTK_CHECK_HEADERS(crypt.h,[#ifdef HAVE_UNISTD_H CCTK_CHECK_HEADERS(signal.h) CCTK_CHECK_HEADERS(malloc.h) CCTK_CHECK_HEADERS(sched.h) +CCTK_CHECK_HEADERS(execinfo.h) AC_HEADER_TIME @@ -897,6 +898,38 @@ CCTK_FORTRAN_COMPLEX8 CCTK_FORTRAN_COMPLEX16 CCTK_FORTRAN_COMPLEX32 +dnl Do we whave __cxa_demangle +AC_LANG_SAVE +AC_LANG_CPLUSPLUS +CCTK_CHECK_HEADERS(cxxabi.h) +AC_MSG_CHECKING([for __cxa_demangle]) +AC_CACHE_VAL(cctk_cv_have___cxa_demangle, +[AC_TRY_COMPILE([#include <cxxabi.h>], +[abi::__cxa_demangle(0,0,0,0)], eval "cctk_cv_have___cxa_demangle=yes", +eval "cctk_cv_have___cxa_demangle=no") +]) +if test "x$cctk_cv_have___cxa_demangle" = xyes; then + AC_DEFINE(HAVE___CXA_DEMANGLE) + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi +AC_LANG_RESTORE + +dnl Do we have dladdr(3) and the structure it uses? +CCTK_CHECK_MEMBER(Dl_info, dli_sname, + CCTK_CHECK_FUNCS(dladdr, , CCTK_CHECK_LIB_FUNC(dl, dladdr)), + , + [#define _GNU_SOURCE 1 + #include <dlfcn.h>] ) + + +dnl Do we have backtrace(3) +CCTK_CHECK_FUNCS(backtrace, , ) + +dnl Do we have backtrace_symbols(3) +CCTK_CHECK_FUNCS(backtrace_symbols, , ) + dnl Do we have crypt(3) CCTK_CHECK_FUNC(crypt, , CCTK_CHECK_LIB_FUNC(crypt, crypt)) |