1 dnl Process this file with autoconf to produce a configure script.
3 AC_INIT(ginac/basic.cpp)
7 AC_ARG_ENABLE(html-doc, [ --enable-html-doc build HTML documentation [default=yes]], , enable_html_doc=yes)
8 AC_ARG_ENABLE(ps-doc, [ --enable-ps-doc build PostScript documentation [default=yes]], , enable_ps_doc=yes)
9 AC_ARG_WITH(cint, [ --with-cint=CINTSYSDIR build GiNaC-cint C++ interpreter [default=no]], , with_cint=no)
11 dnl GiNaC library version information
14 dnl GINACLIB_MICRO_VERSION += 1;
15 dnl GINACLIB_INTERFACE_AGE += 1;
16 dnl GINACLIB_BINARY_AGE += 1;
17 dnl if any functions have been added, set GINACLIB_INTERFACE_AGE to 0.
18 dnl if backwards compatibility has been broken,
19 dnl set GINACLIB_BINARY_AGE and GINACLIB_INTERFACE_AGE to 0.
21 dnl NOTE: these can't be renamed to GINAC_MAJOR_VERSION etc. because
22 dnl autoconf sees "AC_MAJOR_VERSION" and complains about an undefined macro
23 dnl (don't we all *love* M4?)...
25 GINACLIB_MAJOR_VERSION=0
26 GINACLIB_MINOR_VERSION=4
27 GINACLIB_MICRO_VERSION=1
28 GINACLIB_INTERFACE_AGE=0
30 GINACLIB_VERSION=$GINACLIB_MAJOR_VERSION.$GINACLIB_MINOR_VERSION.$GINACLIB_MICRO_VERSION
32 AC_SUBST(GINACLIB_MAJOR_VERSION)
33 AC_SUBST(GINACLIB_MINOR_VERSION)
34 AC_SUBST(GINACLIB_MICRO_VERSION)
35 AC_SUBST(GINACLIB_INTERFACE_AGE)
36 AC_SUBST(GINACLIB_BINARY_AGE)
37 AC_SUBST(GINACLIB_VERSION)
39 dnl GiNaC archive file version information
41 dnl If properties have been added, ARCHIVE_VERSION += 1.
42 dnl If backwards compatibility has been broken, ARCHIVE_AGE to 0.
44 dnl The version number in newly created archives will be ARCHIVE_VERSION.
45 dnl Archives version (ARCHIVE_VERSION-ARCHIVE_AGE) thru ARCHIVE_VERSION can
46 dnl be read by this version of the GiNaC library.
51 AC_SUBST(ARCHIVE_VERSION)
53 AC_DEFINE_UNQUOTED(ARCHIVE_VERSION, $ARCHIVE_VERSION)
54 AC_DEFINE_UNQUOTED(ARCHIVE_AGE, $ARCHIVE_AGE)
56 dnl libtool versioning
57 LT_RELEASE=$GINACLIB_MAJOR_VERSION.$GINACLIB_MINOR_VERSION
58 LT_CURRENT=`expr $GINACLIB_MICRO_VERSION - $GINACLIB_INTERFACE_AGE`
59 LT_REVISION=$GINACLIB_INTERFACE_AGE
60 LT_AGE=`expr $GINACLIB_BINARY_AGE - $GINACLIB_INTERFACE_AGE`
67 dnl This defines PACKAGE and VERSION
68 AM_CONFIG_HEADER(config.h)
69 AM_INIT_AUTOMAKE([GiNaC], $GINACLIB_VERSION)
72 dnl ===========================================================================
73 dnl Check for the compiler and all the utilities needed for the build:
74 dnl ===========================================================================
82 dnl Check for data types which are needed by the hash function (golden_ratio_hash)
83 AC_CHECK_SIZEOF(long, 4)
84 AC_CHECK_SIZEOF(long long, 8)
85 AC_CHECK_SIZEOF(long double, 12)
87 dnl Switch to C++ language mode for the following libraries and headers:
90 dnl Check for stuff needed for building the GiNaC interactive shell (ginsh):
91 AC_CHECK_HEADERS(unistd.h)
92 AC_CHECK_HEADERS(readline/readline.h readline/history.h)
94 AC_CHECK_LIB(readline, readline)
99 dnl Make sure the following libraries work by testing for symbols therein.
100 dnl They are automatically added the the variable $LIBS and thus passed into
102 AC_CHECK_LIB(stdc++, cout)
104 dnl Make sure all the necessary new-style headers are installed on the system.
105 dnl If one of them cannot be found the system is probably not ANSI-conform
106 dnl enough so trying the .h-style headers is a waste of time.
107 AC_CHECK_HEADERS(iostream vector map string list typeinfo iterator stdexcept algorithm, ,
108 AC_MSG_ERROR(need to have ANSI compliant headers))
109 AC_CHECK_HEADERS(sstream strstream)
111 dnl We need to have Bruno Haible's CLN installed (macros are in acinclude.m4):
115 dnl Expand the cppflags and libraries needed by apps using GiNaC
116 GINACLIB_CPPFLAGS=$CPPFLAGS
118 AC_SUBST(GINACLIB_CPPFLAGS)
119 AC_SUBST(GINACLIB_LIBS)
121 dnl Check for utilities needed by the different kinds of documentation.
122 dnl Documantation needs only be built when extending it, so never mind if it
123 dnl cannot find those helpers:
124 AC_PATH_PROG(DOXYGEN, doxygen, "")
125 AC_PATH_PROG(LATEX, latex, "")
126 AC_PATH_PROG(MAKEINDEX, makeindex, "")
127 AC_PATH_PROG(DVIPS, dvips, "")
128 AC_PATH_PROG(FIG2DEV, fig2dev, "")
130 dnl Determine which documentation shall be built
133 if [[ "x$enable_html_doc" = "xyes" ]]; then
134 TUTORIAL_TARGETS="$TUTORIAL_TARGETS ginac.html"
135 if [[ "$DOXYGEN" ]]; then
136 REFERENCE_TARGETS="$REFERENCE_TARGETS index.html"
139 if [[ "x$enable_ps_doc" = "xyes" ]]; then
140 TUTORIAL_TARGETS="$TUTORIAL_TARGETS ginac.ps"
141 if [[ "$DOXYGEN" ]]; then
142 REFERENCE_TARGETS="$REFERENCE_TARGETS reference.ps"
145 AC_SUBST(TUTORIAL_TARGETS)
146 AC_SUBST(REFERENCE_TARGETS)
148 dnl Configure GiNaC-cint, if requested
149 if [[ "x$with_cint" != "xno" ]]; then
150 echo "with_cint is set to: $with_cint"
151 CINTSYSDIR=$with_cint
152 AC_PATH_PROG(CINT, cint, "", $CINTSYSDIR:$PATH)
153 AC_PATH_PROG(MAKECINT, makecint, "", $CINTSYSDIR:$PATH)
154 if [[ "$cint" -a "$makecint" ]]; then
155 AC_MSG_RESULT([Configuring GiNaC-cint])
157 AC_MSG_ERROR([Cannot configure GiNaC-cint])
161 dnl Output makefiles etc.
171 doc/tutorial/Makefile
172 doc/reference/Makefile
173 ], [chmod +x ginac-config])
174 echo "Configuration done. Now type \"make\"."