| 1 |
dnl Process this file with autoconf to produce a configure script.
|
| 2 |
|
| 3 |
AC_INIT
|
| 4 |
AC_CONFIG_SRCDIR(ginac/basic.cpp)
|
| 5 |
AC_PREREQ(2.50)
|
| 6 |
|
| 7 |
dnl GiNaC library version information.
|
| 8 |
dnl
|
| 9 |
dnl Making releases:
|
| 10 |
dnl GINACLIB_MICRO_VERSION += 1;
|
| 11 |
dnl GINACLIB_INTERFACE_AGE += 1;
|
| 12 |
dnl GINACLIB_BINARY_AGE += 1;
|
| 13 |
dnl if any functions have been added, set GINACLIB_INTERFACE_AGE to 0.
|
| 14 |
dnl if backwards compatibility has been broken,
|
| 15 |
dnl set GINACLIB_BINARY_AGE and GINACLIB_INTERFACE_AGE to 0.
|
| 16 |
dnl
|
| 17 |
dnl NOTE: these can't be renamed to GINAC_MAJOR_VERSION etc. because
|
| 18 |
dnl autoconf sees "AC_MAJOR_VERSION" and complains about an undefined macro
|
| 19 |
dnl (don't we all *love* M4?)...
|
| 20 |
|
| 21 |
GINACLIB_MAJOR_VERSION=1
|
| 22 |
GINACLIB_MINOR_VERSION=0
|
| 23 |
GINACLIB_MICRO_VERSION=1
|
| 24 |
GINACLIB_INTERFACE_AGE=1
|
| 25 |
GINACLIB_BINARY_AGE=1
|
| 26 |
GINACLIB_VERSION=$GINACLIB_MAJOR_VERSION.$GINACLIB_MINOR_VERSION.$GINACLIB_MICRO_VERSION
|
| 27 |
|
| 28 |
AC_SUBST(GINACLIB_MAJOR_VERSION)
|
| 29 |
AC_SUBST(GINACLIB_MINOR_VERSION)
|
| 30 |
AC_SUBST(GINACLIB_MICRO_VERSION)
|
| 31 |
AC_SUBST(GINACLIB_INTERFACE_AGE)
|
| 32 |
AC_SUBST(GINACLIB_BINARY_AGE)
|
| 33 |
AC_SUBST(GINACLIB_VERSION)
|
| 34 |
|
| 35 |
dnl GiNaC archive file version information.
|
| 36 |
dnl
|
| 37 |
dnl If properties have been added, ARCHIVE_VERSION += 1, ARCHIVE_AGE += 1.
|
| 38 |
dnl If backwards compatibility has been broken, set ARCHIVE_AGE to 0.
|
| 39 |
dnl
|
| 40 |
dnl The version number in newly created archives will be ARCHIVE_VERSION.
|
| 41 |
dnl Archives version (ARCHIVE_VERSION-ARCHIVE_AGE) thru ARCHIVE_VERSION can
|
| 42 |
dnl be read by this version of the GiNaC library.
|
| 43 |
|
| 44 |
ARCHIVE_VERSION=1
|
| 45 |
ARCHIVE_AGE=1
|
| 46 |
|
| 47 |
AC_SUBST(ARCHIVE_VERSION)
|
| 48 |
AC_SUBST(ARCHIVE_AGE)
|
| 49 |
AC_DEFINE_UNQUOTED(ARCHIVE_VERSION, $ARCHIVE_VERSION, [Current GiNaC archive file version number])
|
| 50 |
AC_DEFINE_UNQUOTED(ARCHIVE_AGE, $ARCHIVE_AGE, [GiNaC archive file version age])
|
| 51 |
|
| 52 |
dnl libtool versioning
|
| 53 |
LT_RELEASE=$GINACLIB_MAJOR_VERSION.$GINACLIB_MINOR_VERSION
|
| 54 |
LT_CURRENT=`expr $GINACLIB_MICRO_VERSION - $GINACLIB_INTERFACE_AGE`
|
| 55 |
LT_REVISION=$GINACLIB_INTERFACE_AGE
|
| 56 |
LT_AGE=`expr $GINACLIB_BINARY_AGE - $GINACLIB_INTERFACE_AGE`
|
| 57 |
|
| 58 |
AC_SUBST(LT_RELEASE)
|
| 59 |
AC_SUBST(LT_CURRENT)
|
| 60 |
AC_SUBST(LT_REVISION)
|
| 61 |
AC_SUBST(LT_AGE)
|
| 62 |
|
| 63 |
dnl This defines PACKAGE and VERSION.
|
| 64 |
AM_CONFIG_HEADER(config.h)
|
| 65 |
AM_INIT_AUTOMAKE([GiNaC], $GINACLIB_VERSION)
|
| 66 |
|
| 67 |
dnl Check for the compiler and all the utilities needed for the build.
|
| 68 |
AC_PROG_CXX
|
| 69 |
AC_PROG_CXXCPP
|
| 70 |
AC_PROG_INSTALL
|
| 71 |
AM_PROG_LIBTOOL
|
| 72 |
AM_PROG_LEX
|
| 73 |
AC_PROG_YACC
|
| 74 |
|
| 75 |
dnl Configure options.
|
| 76 |
AC_ARG_ENABLE(html-doc, [ --enable-html-doc build HTML documentation [default=no]], , enable_html_doc=no)
|
| 77 |
AC_ARG_ENABLE(ps-doc, [ --enable-ps-doc build PostScript documentation [default=no]], , enable_ps_doc=no)
|
| 78 |
|
| 79 |
dnl Check for data types which are needed by the hash function
|
| 80 |
dnl (golden_ratio_hash).
|
| 81 |
AC_CHECK_SIZEOF(long, 4)
|
| 82 |
AC_CHECK_SIZEOF(long long, 8)
|
| 83 |
AC_CHECK_SIZEOF(long double, 12)
|
| 84 |
|
| 85 |
dnl Switch to C++ language mode for the following libraries and headers.
|
| 86 |
AC_LANG([C++])
|
| 87 |
|
| 88 |
dnl Check for stuff needed for building the GiNaC interactive shell (ginsh).
|
| 89 |
AC_CHECK_HEADERS(unistd.h)
|
| 90 |
AC_CHECK_HEADERS(readline/readline.h readline/history.h)
|
| 91 |
if test "x${ac_cv_header_readline_readline_h}" != "xyes" -o "x${ac_cv_header_readline_history_h}" != "xyes"; then
|
| 92 |
GINAC_WARNING([I could not find the headers for libreadline (needed for building ginsh).])
|
| 93 |
fi
|
| 94 |
GINAC_TERMCAP
|
| 95 |
save_LIBS=$LIBS
|
| 96 |
LIBS="$LIBTERMCAP $LIBS"
|
| 97 |
AC_CHECK_LIB(readline, readline)
|
| 98 |
if test "x${ac_cv_lib_readline_readline}" = "xyes"; then
|
| 99 |
GINAC_LIB_READLINE_VERSION
|
| 100 |
else
|
| 101 |
GINAC_WARNING([I could not find libreadline (needed by ginsh).])
|
| 102 |
fi
|
| 103 |
GINSH_LIBS=$LIBS
|
| 104 |
LIBS=$save_LIBS
|
| 105 |
AC_SUBST(GINSH_LIBS)
|
| 106 |
|
| 107 |
dnl Make sure all the necessary standard headers are installed on the system.
|
| 108 |
AC_CHECK_HEADER(iosfwd, , GINAC_ERROR([The standard <iosfwd> header file could not be found.]))
|
| 109 |
AC_CHECK_HEADER(iostream, , GINAC_ERROR([The standard <iostream> header file could not be found.]))
|
| 110 |
AC_CHECK_HEADER(vector, , GINAC_ERROR([The standard <vector> header file could not be found.]))
|
| 111 |
AC_CHECK_HEADER(list, , GINAC_ERROR([The standard <list> header file could not be found.]))
|
| 112 |
AC_CHECK_HEADER(map, , GINAC_ERROR([The standard <map> header file could not be found.]))
|
| 113 |
AC_CHECK_HEADER(string, , GINAC_ERROR([The standard <string> header file could not be found.]))
|
| 114 |
AC_CHECK_HEADER(sstream, , GINAC_ERROR([The standard <sstream> header file could not be found.]))
|
| 115 |
AC_CHECK_HEADER(typeinfo, , GINAC_ERROR([The standard <typeinfo> header file could not be found.]))
|
| 116 |
AC_CHECK_HEADER(stdexcept, , GINAC_ERROR([The standard <stdexcept> header file could not be found.]))
|
| 117 |
AC_CHECK_HEADER(algorithm, , GINAC_ERROR([The standard <algorithm> header file could not be found.]))
|
| 118 |
|
| 119 |
dnl We need to have Bruno Haible's CLN installed.
|
| 120 |
dnl (CLN versions >= 1.1.0 must have installed cln.m4 at a visible place,
|
| 121 |
dnl which provides this macro):
|
| 122 |
AC_PATH_CLN(1.1.0, [
|
| 123 |
LIBS="$LIBS $CLN_LIBS"
|
| 124 |
CPPFLAGS="$CPPFLAGS $CLN_CPPFLAGS"
|
| 125 |
], GINAC_ERROR([No suitable installed version of CLN could be found.]))
|
| 126 |
|
| 127 |
dnl Expand the cppflags and libraries needed by apps using GiNaC
|
| 128 |
GINACLIB_CPPFLAGS=$CPPFLAGS
|
| 129 |
GINACLIB_LIBS=$LIBS
|
| 130 |
AC_SUBST(GINACLIB_CPPFLAGS)
|
| 131 |
AC_SUBST(GINACLIB_LIBS)
|
| 132 |
|
| 133 |
dnl Check for utilities needed by the different kinds of documentation.
|
| 134 |
dnl Documentation needs only be built when extending it, so never mind if it
|
| 135 |
dnl cannot find those helpers:
|
| 136 |
AC_PATH_PROG(DOXYGEN, doxygen, "")
|
| 137 |
AC_PATH_PROG(LATEX, latex, "")
|
| 138 |
AC_PATH_PROG(MAKEINDEX, makeindex, "")
|
| 139 |
AC_PATH_PROG(DVIPS, dvips, "")
|
| 140 |
AC_PATH_PROG(FIG2DEV, fig2dev, "")
|
| 141 |
|
| 142 |
dnl Determine which documentation shall be built
|
| 143 |
TUTORIAL_TARGETS=
|
| 144 |
REFERENCE_TARGETS=
|
| 145 |
if test "x${enable_html_doc}" = "xyes"; then
|
| 146 |
TUTORIAL_TARGETS="$TUTORIAL_TARGETS ginac.html"
|
| 147 |
if [[ "$DOXYGEN" ]]; then
|
| 148 |
REFERENCE_TARGETS="$REFERENCE_TARGETS index.html"
|
| 149 |
fi
|
| 150 |
fi
|
| 151 |
if test "x${enable_ps_doc}" = "xyes"; then
|
| 152 |
TUTORIAL_TARGETS="$TUTORIAL_TARGETS ginac.ps"
|
| 153 |
if [[ "$DOXYGEN" ]]; then
|
| 154 |
REFERENCE_TARGETS="$REFERENCE_TARGETS reference.ps"
|
| 155 |
fi
|
| 156 |
fi
|
| 157 |
AC_SUBST(TUTORIAL_TARGETS)
|
| 158 |
AC_SUBST(REFERENCE_TARGETS)
|
| 159 |
|
| 160 |
dnl Output makefiles etc.
|
| 161 |
AC_CONFIG_FILES([
|
| 162 |
Makefile
|
| 163 |
GiNaC.spec
|
| 164 |
ginac-config
|
| 165 |
ginac-config.1
|
| 166 |
ginac/Makefile
|
| 167 |
ginac/version.h
|
| 168 |
check/Makefile
|
| 169 |
ginsh/Makefile
|
| 170 |
ginsh/ginsh.1
|
| 171 |
tools/Makefile
|
| 172 |
tools/viewgar.1
|
| 173 |
doc/Makefile
|
| 174 |
doc/tutorial/Makefile
|
| 175 |
doc/reference/Makefile
|
| 176 |
])
|
| 177 |
AC_CONFIG_COMMANDS([default],[[chmod +x ginac-config]],[[]])
|
| 178 |
AC_OUTPUT
|
| 179 |
dnl Display a final warning if there has been a GINAC_ERROR or a GINAC_WARNING
|
| 180 |
GINAC_CHECK_ERRORS
|