dnl Process this file with autoconf to produce a configure script. AC_INIT(ginac/basic.cpp) AC_PREREQ(2.13) dnl GiNaC library version information. dnl dnl Making releases: dnl GINACLIB_MICRO_VERSION += 1; dnl GINACLIB_INTERFACE_AGE += 1; dnl GINACLIB_BINARY_AGE += 1; dnl if any functions have been added, set GINACLIB_INTERFACE_AGE to 0. dnl if backwards compatibility has been broken, dnl set GINACLIB_BINARY_AGE and GINACLIB_INTERFACE_AGE to 0. dnl dnl NOTE: these can't be renamed to GINAC_MAJOR_VERSION etc. because dnl autoconf sees "AC_MAJOR_VERSION" and complains about an undefined macro dnl (don't we all *love* M4?)... GINACLIB_MAJOR_VERSION=0 GINACLIB_MINOR_VERSION=8 GINACLIB_MICRO_VERSION=3 GINACLIB_INTERFACE_AGE=0 GINACLIB_BINARY_AGE=0 GINACLIB_VERSION=$GINACLIB_MAJOR_VERSION.$GINACLIB_MINOR_VERSION.$GINACLIB_MICRO_VERSION AC_SUBST(GINACLIB_MAJOR_VERSION) AC_SUBST(GINACLIB_MINOR_VERSION) AC_SUBST(GINACLIB_MICRO_VERSION) AC_SUBST(GINACLIB_INTERFACE_AGE) AC_SUBST(GINACLIB_BINARY_AGE) AC_SUBST(GINACLIB_VERSION) dnl GiNaC archive file version information. dnl dnl If properties have been added, ARCHIVE_VERSION += 1, ARCHIVE_AGE += 1. dnl If backwards compatibility has been broken, set ARCHIVE_AGE to 0. dnl dnl The version number in newly created archives will be ARCHIVE_VERSION. dnl Archives version (ARCHIVE_VERSION-ARCHIVE_AGE) thru ARCHIVE_VERSION can dnl be read by this version of the GiNaC library. ARCHIVE_VERSION=0 ARCHIVE_AGE=0 AC_SUBST(ARCHIVE_VERSION) AC_SUBST(ARCHIVE_AGE) AC_DEFINE_UNQUOTED(ARCHIVE_VERSION, $ARCHIVE_VERSION) AC_DEFINE_UNQUOTED(ARCHIVE_AGE, $ARCHIVE_AGE) dnl libtool versioning LT_RELEASE=$GINACLIB_MAJOR_VERSION.$GINACLIB_MINOR_VERSION LT_CURRENT=`expr $GINACLIB_MICRO_VERSION - $GINACLIB_INTERFACE_AGE` LT_REVISION=$GINACLIB_INTERFACE_AGE LT_AGE=`expr $GINACLIB_BINARY_AGE - $GINACLIB_INTERFACE_AGE` AC_SUBST(LT_RELEASE) AC_SUBST(LT_CURRENT) AC_SUBST(LT_REVISION) AC_SUBST(LT_AGE) dnl This defines PACKAGE and VERSION. AM_CONFIG_HEADER(config.h) AM_INIT_AUTOMAKE([GiNaC], $GINACLIB_VERSION) dnl Check for the compiler and all the utilities needed for the build. AC_PROG_CXX AC_PROG_CXXCPP AC_PROG_INSTALL AM_PROG_LIBTOOL AM_PROG_LEX AC_PROG_YACC dnl Configure options. AC_ARG_ENABLE(html-doc, [ --enable-html-doc build HTML documentation [default=no]], , enable_html_doc=no) AC_ARG_ENABLE(ps-doc, [ --enable-ps-doc build PostScript documentation [default=no]], , enable_ps_doc=no) dnl Check for data types which are needed by the hash function dnl (golden_ratio_hash). AC_CHECK_SIZEOF(long, 4) AC_CHECK_SIZEOF(long long, 8) AC_CHECK_SIZEOF(long double, 12) dnl Switch to C++ language mode for the following libraries and headers. AC_LANG_CPLUSPLUS dnl Check for stuff needed for building the GiNaC interactive shell (ginsh). AC_CHECK_HEADERS(unistd.h) AC_CHECK_HEADERS(readline/readline.h readline/history.h) if test "x${ac_cv_header_readline_readline_h}" != "xyes" -o "x${ac_cv_header_readline_history_h}" != "xyes"; then GINAC_WARNING([I could not find the headers for libreadline (needed for building ginsh).]) fi GINAC_TERMCAP save_LIBS=$LIBS LIBS="$LIBTERMCAP $LIBS" AC_CHECK_LIB(readline, readline) if test "x${ac_cv_lib_readline_readline}" = "xyes"; then GINAC_LIB_READLINE_VERSION else GINAC_WARNING([I could not find libreadline (needed by ginsh).]) fi GINSH_LIBS=$LIBS LIBS=$save_LIBS AC_SUBST(GINSH_LIBS) dnl Make sure all the necessary new-style headers are installed on the system. dnl If one of them cannot be found the system is probably not ANSI-conform dnl enough so trying the .h-style headers is a waste of time. AC_CHECK_HEADERS(iostream vector map string list typeinfo iterator stdexcept algorithm, , AC_MSG_ERROR(need to have ANSI compliant headers)) AC_CHECK_HEADERS(sstream strstream) dnl We need to have Bruno Haible's CLN installed. dnl (CLN versions >= 1.1.0 must have installed cln.m4 at a visible place, dnl which provides this macro): AC_PATH_CLN(1.1.0, [ LIBS="$LIBS $CLN_LIBS" CPPFLAGS="$CPPFLAGS $CLN_CPPFLAGS" ], GINAC_ERROR([No suitable installed version of CLN could be found.])) dnl Expand the cppflags and libraries needed by apps using GiNaC GINACLIB_CPPFLAGS=$CPPFLAGS GINACLIB_LIBS=$LIBS AC_SUBST(GINACLIB_CPPFLAGS) AC_SUBST(GINACLIB_LIBS) dnl Check for utilities needed by the different kinds of documentation. dnl Documantation needs only be built when extending it, so never mind if it dnl cannot find those helpers: AC_PATH_PROG(DOXYGEN, doxygen, "") AC_PATH_PROG(LATEX, latex, "") AC_PATH_PROG(MAKEINDEX, makeindex, "") AC_PATH_PROG(DVIPS, dvips, "") AC_PATH_PROG(FIG2DEV, fig2dev, "") dnl Determine which documentation shall be built TUTORIAL_TARGETS= REFERENCE_TARGETS= if test "x${enable_html_doc}" = "xyes"; then TUTORIAL_TARGETS="$TUTORIAL_TARGETS ginac.html" if [[ "$DOXYGEN" ]]; then REFERENCE_TARGETS="$REFERENCE_TARGETS index.html" fi fi if test "x${enable_ps_doc}" = "xyes"; then TUTORIAL_TARGETS="$TUTORIAL_TARGETS ginac.ps" if [[ "$DOXYGEN" ]]; then REFERENCE_TARGETS="$REFERENCE_TARGETS reference.ps" fi fi AC_SUBST(TUTORIAL_TARGETS) AC_SUBST(REFERENCE_TARGETS) dnl Configure GiNaC-cint AC_ARG_WITH(cint, [ --with-cint=CINTSYSDIR build GiNaC-cint C++ interpreter [default=no]], , with_cint=no) dnl The variable GINACCINTDIR controls whether the subdirectory cint is entered dnl from the top-level Makefile or not. GINACCINTDIR= if test "x$with_cint" != "xno"; then dnl Maybe CINTSYSDIR was passed as an argument. In this case it should dnl override any CINTSYSDIR variable already set. if test "x$with_cint" != "xyes"; then CINTSYSDIR=$with_cint export CINTSYSDIR fi dnl Now have to handle two possbile cases, one with CINTSYSDIR set and one dnl without. In the first one we search for cint and makecint in CINTSYSDIR dnl and PATH, in the second there is only the PATH to search in. if test "x$CINTSYSDIR" != "x"; then AC_PATH_PROG(CINT, cint, , $CINTSYSDIR:$PATH) AC_PATH_PROG(MAKECINT, makecint, , $CINTSYSDIR:$PATH) if [[ "$CINT" -a "$MAKECINT" ]]; then AC_MSG_RESULT([creating cint/Makefile]) (cd cint && \ $MAKECINT -mk Makefile.makecint -o ginaccint.bin -m \ -D OBSCURE_CINT_HACK "$CPPFLAGS" -cc "$CXXFLAGS" \ -I .. -I $CINTSYSDIR -m -H ../ginac/ginac.h \ -C++ ginaccint.bin.cpp \ -l -L../ginac/.libs -lginac -lcln \ -cint -M0x110; \ cd ..) GINACCINTDIR="cint" AC_SUBST(CINTSYSDIR) else GINAC_WARNING([I could not find cint and makecint (needed for building GiNaC-cint).]) fi else AC_PATH_PROG(CINT, cint) AC_PATH_PROG(MAKECINT, makecint) if [[ "$CINT" -a "$MAKECINT" ]]; then AC_MSG_RESULT([creating cint/Makefile]) (cd cint && \ $MAKECINT -mk Makefile.makecint -o ginaccint.bin -m \ -D OBSCURE_CINT_HACK "$CPPFLAGS" -cc "$CXXFLAGS" \ -I .. -m -H ../ginac/ginac.h \ -C++ ginaccint.bin.cpp \ -l -L../ginac/.libs -lginac -lcln \ -cint -M0x110; \ cd ..) GINACCINTDIR="cint" else GINAC_WARNING([I could not find cint and makecint (needed for building GiNaC-cint).]) fi fi fi AC_SUBST(GINACCINTDIR) dnl Output makefiles etc. AC_OUTPUT([ Makefile GiNaC.spec ginac-config ginac-config.1 ginac/Makefile ginac/version.h check/Makefile ginsh/Makefile ginsh/ginsh.1 tools/Makefile tools/viewgar.1 doc/Makefile doc/tutorial/Makefile doc/reference/Makefile cint/Makefile cint/launch.h ], [chmod +x ginac-config]) dnl Display a final warning if there has been a GINAC_ERROR or a GINAC_WARNING GINAC_CHECK_ERRORS