X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=acinclude.m4;h=3f64fdb52562116f1fda720ce4c40f5f8edeab36;hp=78cdcdfdbc90c51f78317fb6d3ff1ffc304de595;hb=8dc09f48182574d792a2ed7c37b66831d9267a6c;hpb=cc5c3d3ad656e57c3094f30349b475cacbb6d588;ds=sidebyside diff --git a/acinclude.m4 b/acinclude.m4 index 78cdcdfd..3f64fdb5 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -4,60 +4,35 @@ dnl additions' names with AC_ but with GINAC_ in order to steer clear of dnl future trouble. dnl =========================================================================== -dnl Generally, it is a bad idea to put specialized header files for a library -dnl into a generic directory like /usr/local/include/. Instead, one should put -dnl them into a subdirectory. GiNaC does it, NTL does it. Unfortunately, CLN -dnl doesn't do so but some people choose to do it by hand. In these cases we -dnl need to #include , otherwise #include . This macro -dnl tries to be clever and find out the correct way by defining the variable -dnl HAVE_CLN_CLN_H in config.h: -AC_DEFUN(GINAC_CHECK_CLN_H, - [AC_PROVIDE([$0]) - AC_CHECK_HEADERS(cln/cln.h, , - AC_CHECK_HEADERS(cln.h, , - AC_MSG_ERROR([cannot find header for Bruno Haible's CLN]); - ) - ) -]) +dnl Usage: GINAC_RLVERSION +dnl The maintainers of libreadline are complete morons: they don't care a shit +dnl about compatiblilty (which is not so bad by itself) and at the same time +dnl they don't export the version to the preprocessor so we could kluge around +dnl incomatiblities. The only reliable way to figure out the version is by +dnl checking the extern variable rl_library_version at runtime. &#@$%*! +AC_DEFUN(GINAC_LIB_READLINE_VERSION, +[AC_CACHE_CHECK([for version of libreadline], ginac_cv_rlversion, [ +AC_TRY_RUN([ +#include +#include +#include -dnl This macro is needed because the generic AC_CHECK_LIB doesn't work because -dnl C++ is more strongly typed than C. Therefore we need to work with the -dnl more fundamental AC_TRY_LINK instead. -AC_DEFUN(GINAC_CHECK_LIBCLN, - [AC_PROVIDE([$0]) - AC_MSG_CHECKING([for doublefactorial in -lcln]) - saved_LIBS="${LIBS}" - AC_CACHE_VAL(ginac_cv_lib_cln_link, - [LIBS="-lcln" - case "${ac_cv_header_cln_cln_h}" in - "yes") - AC_TRY_LINK([#include ], - [doublefactorial(2);], - ginac_cv_lib_cln_link="-lcln", - ginac_cv_lib_cln_link="fail") - ;; - *) - AC_TRY_LINK([#include ], - [doublefactorial(2);], - ginac_cv_lib_cln_link="-lcln", - ginac_cv_lib_cln_link="fail") - ;; - esac - ]) - case "${ginac_cv_lib_cln_link}" in -dnl linking worked: - "-lcln") - LIBS="${ginac_cv_lib_cln_link} ${saved_LIBS}" - AC_MSG_RESULT("yes") - ;; -dnl linking failed: - "fail") - LIBS="${saved_LIBS}" - AC_MSG_RESULT([no]) - GINAC_ERROR([I could not successfully link a test-program against libcln. - You either need to set \$LDFLAGS or install/update the CLN library.]) - ;; - esac +main() +{ + FILE *fd; + fd = fopen("conftest.out", "w"); + fprintf(fd, "%s\n", rl_library_version); + fclose(fd); + return 0; +}], ginac_cv_rlversion=`cat 'conftest.out'`, ginac_cv_rlversion='unknown', ginac_cv_rlversion='4.2')]) +if test "x${ginac_cv_rlversion}" != "xunknown"; then + RL_VERSION_MAJOR=`echo ${ginac_cv_rlversion} | sed -e 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\1/'` + AC_DEFINE_UNQUOTED(GINAC_RL_VERSION_MAJOR, $RL_VERSION_MAJOR, [Major version of installed readline library.]) + RL_VERSION_MINOR=`echo ${ginac_cv_rlversion} | sed -e 's/\([[0-9]]*\)\.\([[0-9]]*\).*/\2/'` + AC_DEFINE_UNQUOTED(GINAC_RL_VERSION_MINOR, $RL_VERSION_MINOR, [Minor version of installed readline library.]) +else + GINAC_WARNING([I could not run a test of libreadline (needed for building ginsh).]) +fi ]) dnl Usage: GINAC_TERMCAP @@ -99,7 +74,7 @@ ginac_warning_txt="$ginac_warning_txt ginac_warning=yes]) dnl Usage: GINAC_CHECK_ERRORS -dnl (preferably to be put at end of configure.in) +dnl (must be put at end of configure.in, because it exits on error) dnl This macro displays a warning message if GINAC_ERROR or GINAC_WARNING dnl has occured previously. AC_DEFUN(GINAC_CHECK_ERRORS,[ @@ -111,14 +86,17 @@ if test "x${ginac_error}" = "xyes"; then if test "x${ginac_warning_txt}" != "x"; then echo "${ginac_warning_txt}" fi - echo "deleting cache ${cache_file}" - rm -f $cache_file - else - if test x$ginac_warning = xyes; then - echo "=== The following minor problems have been detected by configure." - echo "=== Please check the messages below before running \"make\"." - echo "=== (see the section 'Common Problems' in the INSTALL file)" - echo "$ginac_warning_txt" - fi + if test "x$cache_file" != "x/dev/null"; then + echo "deleting cache ${cache_file}" + rm -f $cache_file + fi + exit 1 +else + if test "x${ginac_warning}" = "xyes"; then + echo "=== The following minor problems have been detected by configure." + echo "=== Please check the messages below before running \"make\"." + echo "=== (see the section 'Common Problems' in the INSTALL file)" + echo "$ginac_warning_txt" + fi echo "Configuration of GiNaC $VERSION done. Now type \"make\"." fi])