1 dnl Process this file with autoconf to produce a configure script.
3 AC_INIT(ginac/basic.cpp)
6 dnl GiNaC library version information.
9 dnl GINACLIB_MICRO_VERSION += 1;
10 dnl GINACLIB_INTERFACE_AGE += 1;
11 dnl GINACLIB_BINARY_AGE += 1;
12 dnl if any functions have been added, set GINACLIB_INTERFACE_AGE to 0.
13 dnl if backwards compatibility has been broken,
14 dnl set GINACLIB_BINARY_AGE and GINACLIB_INTERFACE_AGE to 0.
16 dnl NOTE: these can't be renamed to GINAC_MAJOR_VERSION etc. because
17 dnl autoconf sees "AC_MAJOR_VERSION" and complains about an undefined macro
18 dnl (don't we all *love* M4?)...
20 GINACLIB_MAJOR_VERSION=0
21 GINACLIB_MINOR_VERSION=9
22 GINACLIB_MICRO_VERSION=4
23 GINACLIB_INTERFACE_AGE=1
25 GINACLIB_VERSION=$GINACLIB_MAJOR_VERSION.$GINACLIB_MINOR_VERSION.$GINACLIB_MICRO_VERSION
27 AC_SUBST(GINACLIB_MAJOR_VERSION)
28 AC_SUBST(GINACLIB_MINOR_VERSION)
29 AC_SUBST(GINACLIB_MICRO_VERSION)
30 AC_SUBST(GINACLIB_INTERFACE_AGE)
31 AC_SUBST(GINACLIB_BINARY_AGE)
32 AC_SUBST(GINACLIB_VERSION)
34 dnl GiNaC archive file version information.
36 dnl If properties have been added, ARCHIVE_VERSION += 1, ARCHIVE_AGE += 1.
37 dnl If backwards compatibility has been broken, set ARCHIVE_AGE to 0.
39 dnl The version number in newly created archives will be ARCHIVE_VERSION.
40 dnl Archives version (ARCHIVE_VERSION-ARCHIVE_AGE) thru ARCHIVE_VERSION can
41 dnl be read by this version of the GiNaC library.
46 AC_SUBST(ARCHIVE_VERSION)
48 AC_DEFINE_UNQUOTED(ARCHIVE_VERSION, $ARCHIVE_VERSION)
49 AC_DEFINE_UNQUOTED(ARCHIVE_AGE, $ARCHIVE_AGE)
51 dnl libtool versioning
52 LT_RELEASE=$GINACLIB_MAJOR_VERSION.$GINACLIB_MINOR_VERSION
53 LT_CURRENT=`expr $GINACLIB_MICRO_VERSION - $GINACLIB_INTERFACE_AGE`
54 LT_REVISION=$GINACLIB_INTERFACE_AGE
55 LT_AGE=`expr $GINACLIB_BINARY_AGE - $GINACLIB_INTERFACE_AGE`
62 dnl This defines PACKAGE and VERSION.
63 AM_CONFIG_HEADER(config.h)
64 AM_INIT_AUTOMAKE([GiNaC], $GINACLIB_VERSION)
66 dnl Check for the compiler and all the utilities needed for the build.
74 dnl Configure options.
75 AC_ARG_ENABLE(html-doc, [ --enable-html-doc build HTML documentation [default=no]], , enable_html_doc=no)
76 AC_ARG_ENABLE(ps-doc, [ --enable-ps-doc build PostScript documentation [default=no]], , enable_ps_doc=no)
78 dnl Check for data types which are needed by the hash function
79 dnl (golden_ratio_hash).
80 AC_CHECK_SIZEOF(long, 4)
81 AC_CHECK_SIZEOF(long long, 8)
82 AC_CHECK_SIZEOF(long double, 12)
84 dnl Switch to C++ language mode for the following libraries and headers.
87 dnl Check for stuff needed for building the GiNaC interactive shell (ginsh).
88 AC_CHECK_HEADERS(unistd.h)
89 AC_CHECK_HEADERS(readline/readline.h readline/history.h)
90 if test "x${ac_cv_header_readline_readline_h}" != "xyes" -o "x${ac_cv_header_readline_history_h}" != "xyes"; then
91 GINAC_WARNING([I could not find the headers for libreadline (needed for building ginsh).])
95 LIBS="$LIBTERMCAP $LIBS"
96 AC_CHECK_LIB(readline, readline)
97 if test "x${ac_cv_lib_readline_readline}" = "xyes"; then
98 GINAC_LIB_READLINE_VERSION
100 GINAC_WARNING([I could not find libreadline (needed by ginsh).])
106 dnl Make sure all the necessary new-style headers are installed on the system.
107 dnl If one of them cannot be found the system is probably not ANSI-conform
108 dnl enough so trying the .h-style headers is a waste of time.
109 AC_CHECK_HEADERS(iostream vector map string list typeinfo iterator stdexcept algorithm, ,
110 AC_MSG_ERROR([need to have ANSI compliant headers]))
111 dnl We need the sstream header. But since g++-2.95.n, n<3 does not provide
112 dnl it, we must fall back to strstream, which, however, suffers from fixed
113 dnl buffer sizes. So the fallback may produce a crippled library. NB: this
114 dnl fallback will disappear in future versions.
115 AC_CHECK_HEADERS(sstream strstream)
116 if test "x${ac_cv_header_sstream}" = "xno"; then
117 if test "x${ac_cv_header_strstream}" = "xno"; then
118 AC_MSG_ERROR([I could not find the <sstream> or <strstream> header.])
120 GINAC_WARNING([I could not find <sstream>. <strstream> may cause trouble.])
124 dnl We need to have Bruno Haible's CLN installed.
125 dnl (CLN versions >= 1.1.0 must have installed cln.m4 at a visible place,
126 dnl which provides this macro):
128 LIBS="$LIBS $CLN_LIBS"
129 CPPFLAGS="$CPPFLAGS $CLN_CPPFLAGS"
130 ], GINAC_ERROR([No suitable installed version of CLN could be found.]))
132 dnl Expand the cppflags and libraries needed by apps using GiNaC
133 GINACLIB_CPPFLAGS=$CPPFLAGS
135 AC_SUBST(GINACLIB_CPPFLAGS)
136 AC_SUBST(GINACLIB_LIBS)
138 dnl Check for utilities needed by the different kinds of documentation.
139 dnl Documantation needs only be built when extending it, so never mind if it
140 dnl cannot find those helpers:
141 AC_PATH_PROG(DOXYGEN, doxygen, "")
142 AC_PATH_PROG(LATEX, latex, "")
143 AC_PATH_PROG(MAKEINDEX, makeindex, "")
144 AC_PATH_PROG(DVIPS, dvips, "")
145 AC_PATH_PROG(FIG2DEV, fig2dev, "")
147 dnl Determine which documentation shall be built
150 if test "x${enable_html_doc}" = "xyes"; then
151 TUTORIAL_TARGETS="$TUTORIAL_TARGETS ginac.html"
152 if [[ "$DOXYGEN" ]]; then
153 REFERENCE_TARGETS="$REFERENCE_TARGETS index.html"
156 if test "x${enable_ps_doc}" = "xyes"; then
157 TUTORIAL_TARGETS="$TUTORIAL_TARGETS ginac.ps"
158 if [[ "$DOXYGEN" ]]; then
159 REFERENCE_TARGETS="$REFERENCE_TARGETS reference.ps"
162 AC_SUBST(TUTORIAL_TARGETS)
163 AC_SUBST(REFERENCE_TARGETS)
165 dnl Output makefiles etc.
179 doc/tutorial/Makefile
180 doc/reference/Makefile
181 ], [chmod +x ginac-config])
182 dnl Display a final warning if there has been a GINAC_ERROR or a GINAC_WARNING