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=6
22 GINACLIB_MICRO_VERSION=0
23 GINACLIB_INTERFACE_AGE=0
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, 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)
67 dnl Check for the compiler and all the utilities needed for the build.
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 AC_ARG_WITH(cint, [ --with-cint=CINTSYSDIR build GiNaC-cint C++ interpreter [default=no]], , with_cint=no)
80 dnl Check for data types which are needed by the hash function (golden_ratio_hash).
81 AC_CHECK_SIZEOF(long, 4)
82 AC_CHECK_SIZEOF(long long, 8)
83 AC_CHECK_SIZEOF(long double, 12)
85 dnl Switch to C++ language mode for the following libraries and headers.
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).])
96 LIBS="$LIBTERMCAP $LIBS"
97 AC_CHECK_LIB(readline, readline)
98 if test "x${ac_cv_lib_readline_readline}" != "xyes"; then
99 GINAC_WARNING([I could not find libreadline (needed by ginsh).])
105 dnl Make sure the following libraries work by testing for symbols therein.
106 dnl They are automatically added the the variable $LIBS and thus passed into
108 AC_CHECK_LIB(stdc++, cout)
110 dnl Make sure all the necessary new-style headers are installed on the system.
111 dnl If one of them cannot be found the system is probably not ANSI-conform
112 dnl enough so trying the .h-style headers is a waste of time.
113 AC_CHECK_HEADERS(iostream vector map string list typeinfo iterator stdexcept algorithm, ,
114 AC_MSG_ERROR(need to have ANSI compliant headers))
115 AC_CHECK_HEADERS(sstream strstream)
117 dnl We need to have Bruno Haible's CLN installed (macros are in acinclude.m4):
121 dnl Expand the cppflags and libraries needed by apps using GiNaC
122 GINACLIB_CPPFLAGS=$CPPFLAGS
124 AC_SUBST(GINACLIB_CPPFLAGS)
125 AC_SUBST(GINACLIB_LIBS)
127 dnl Check for utilities needed by the different kinds of documentation.
128 dnl Documantation needs only be built when extending it, so never mind if it
129 dnl cannot find those helpers:
130 AC_PATH_PROG(DOXYGEN, doxygen, "")
131 AC_PATH_PROG(LATEX, latex, "")
132 AC_PATH_PROG(MAKEINDEX, makeindex, "")
133 AC_PATH_PROG(DVIPS, dvips, "")
134 AC_PATH_PROG(FIG2DEV, fig2dev, "")
136 dnl Determine which documentation shall be built
139 if test "x${enable_html_doc}" = "xyes"; then
140 TUTORIAL_TARGETS="$TUTORIAL_TARGETS ginac.html"
141 if [[ "$DOXYGEN" ]]; then
142 REFERENCE_TARGETS="$REFERENCE_TARGETS index.html"
145 if test "x${enable_ps_doc}" = "xyes"; then
146 TUTORIAL_TARGETS="$TUTORIAL_TARGETS ginac.ps"
147 if [[ "$DOXYGEN" ]]; then
148 REFERENCE_TARGETS="$REFERENCE_TARGETS reference.ps"
151 AC_SUBST(TUTORIAL_TARGETS)
152 AC_SUBST(REFERENCE_TARGETS)
154 dnl Configure GiNaC-cint
156 if test "x$with_cint" != "xno"; then
157 if test "x$enable_static" != "xyes"; then
158 AC_MSG_ERROR([currently GiNaC-cint needs to build a static libginac])
160 if test "x$with_cint" = "xyes"; then
161 if test "x$CINTSYSDIR" = "x"; then
162 AC_MSG_ERROR([please export \$CINTSYSDIR or specify --with-cint=CINTSYSDIR])
165 CINTSYSDIR=$with_cint
168 AC_PATH_PROG(CINT, cint, "", $CINTSYSDIR:$PATH)
169 AC_PATH_PROG(MAKECINT, makecint, "", $CINTSYSDIR:$PATH)
170 if [[ "$CINT" -a "$MAKECINT" ]]; then
171 AC_MSG_RESULT([creating cint/Makefile])
173 $MAKECINT -mk Makefile.makecint -o ginaccint.bin -m \
174 -D OBSCURE_CINT_HACK \
175 -I .. -I $CINTSYSDIR -m -H ../ginac/ginac.h \
176 -C++ ginaccint.bin.cpp \
177 -l -L../ginac/.libs -lginac -lcln \
182 AC_MSG_ERROR([Cannot configure GiNaC-cint])
186 AC_SUBST(GINACCINTDIR)
188 dnl Output makefiles etc.
199 doc/tutorial/Makefile
200 doc/reference/Makefile
203 ], [chmod +x ginac-config cint/ginaccint])
204 dnl Display a final warning if there has been a GINAC_ERROR or a GINAC_WARNING