- updated for class series->class pseries
[ginac.git] / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2
3 AC_INIT(ginac/basic.cpp)
4 AC_PREREQ(2.13)
5
6 dnl Configure options
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
10 dnl GiNaC library version information
11 dnl
12 dnl Making releases:
13 dnl   GINACLIB_MICRO_VERSION += 1;
14 dnl   GINACLIB_INTERFACE_AGE += 1;
15 dnl   GINACLIB_BINARY_AGE += 1;
16 dnl if any functions have been added, set GINACLIB_INTERFACE_AGE to 0.
17 dnl if backwards compatibility has been broken,
18 dnl set GINACLIB_BINARY_AGE and GINACLIB_INTERFACE_AGE to 0.
19 dnl
20 dnl NOTE: these can't be renamed to GINAC_MAJOR_VERSION etc. because
21 dnl autoconf sees "AC_MAJOR_VERSION" and complains about an undefined macro
22 dnl (don't we all *love* autoconf?)...
23
24 GINACLIB_MAJOR_VERSION=0
25 GINACLIB_MINOR_VERSION=4
26 GINACLIB_MICRO_VERSION=1
27 GINACLIB_INTERFACE_AGE=0
28 GINACLIB_BINARY_AGE=1
29 GINACLIB_VERSION=$GINACLIB_MAJOR_VERSION.$GINACLIB_MINOR_VERSION.$GINACLIB_MICRO_VERSION
30
31 AC_SUBST(GINACLIB_MAJOR_VERSION)
32 AC_SUBST(GINACLIB_MINOR_VERSION)
33 AC_SUBST(GINACLIB_MICRO_VERSION)
34 AC_SUBST(GINACLIB_INTERFACE_AGE)
35 AC_SUBST(GINACLIB_BINARY_AGE)
36 AC_SUBST(GINACLIB_VERSION)
37
38 dnl GiNaC archive file version information
39 dnl
40 dnl If properties have been added, ARCHIVE_VERSION += 1.
41 dnl If backwards compatibility has been broken, ARCHIVE_AGE to 0.
42 dnl
43 dnl The version number in newly created archives will be ARCHIVE_VERSION.
44 dnl Archives version (ARCHIVE_VERSION-ARCHIVE_AGE) thru ARCHIVE_VERSION can
45 dnl be read by this version of the GiNaC library.
46
47 ARCHIVE_VERSION=0
48 ARCHIVE_AGE=0
49
50 AC_SUBST(ARCHIVE_VERSION)
51 AC_SUBST(ARCHIVE_AGE)
52 AC_DEFINE_UNQUOTED(ARCHIVE_VERSION, $ARCHIVE_VERSION)
53 AC_DEFINE_UNQUOTED(ARCHIVE_AGE, $ARCHIVE_AGE)
54
55 dnl libtool versioning
56 LT_RELEASE=$GINACLIB_MAJOR_VERSION.$GINACLIB_MINOR_VERSION
57 LT_CURRENT=`expr $GINACLIB_MICRO_VERSION - $GINACLIB_INTERFACE_AGE`
58 LT_REVISION=$GINACLIB_INTERFACE_AGE
59 LT_AGE=`expr $GINACLIB_BINARY_AGE - $GINACLIB_INTERFACE_AGE`
60
61 AC_SUBST(LT_RELEASE)
62 AC_SUBST(LT_CURRENT)
63 AC_SUBST(LT_REVISION)
64 AC_SUBST(LT_AGE)
65
66 dnl This defines PACKAGE and VERSION
67 AM_CONFIG_HEADER(config.h)
68 AM_INIT_AUTOMAKE([GiNaC], $GINACLIB_VERSION)
69 AM_MAINTAINER_MODE
70
71 dnl ===========================================================================
72 dnl Check for the compiler and all the utilities needed for the build:
73 dnl ===========================================================================
74 AC_PROG_CXX
75 AC_PROG_CXXCPP
76 AC_PROG_INSTALL
77 AM_PROG_LIBTOOL
78 AM_PROG_LEX
79 AC_PROG_YACC
80
81 dnl Check for data types which are needed by the hash function (golden_ratio_hash)
82 AC_CHECK_SIZEOF(long, 4)
83 AC_CHECK_SIZEOF(long long, 8)
84 AC_CHECK_SIZEOF(long double, 12)
85
86 dnl Switch to C++ language mode for the following libraries and headers:
87 AC_LANG_CPLUSPLUS
88
89 dnl Check for stuff needed for building the GiNaC interactive shell (ginsh):
90 AC_CHECK_HEADERS(unistd.h)
91 AC_CHECK_HEADERS(readline/readline.h readline/history.h)
92 save_LIBS=$LIBS
93 AC_CHECK_LIB(readline, readline)
94 GINSH_LIBS=$LIBS
95 LIBS=$save_LIBS
96 AC_SUBST(GINSH_LIBS)
97
98 dnl Make sure the following libraries work by testing for symbols therein. 
99 dnl They are automatically added the the variable $LIBS and thus passed into
100 dnl the Makefile:
101 AC_CHECK_LIB(stdc++, cout)
102
103 dnl Make sure all the necessary new-style headers are installed on the system.
104 dnl If one of them cannot be found the system is probably not ANSI-conform
105 dnl enough so trying the .h-style headers is a waste of time.
106 AC_CHECK_HEADERS(iostream vector map string list typeinfo iterator strstream stdexcept algorithm, ,
107     AC_MSG_ERROR(need to have ANSI compliant headers))
108
109 dnl We need to have Bruno Haible's CLN installed (macros are in acinclude.m4):
110 GINAC_CHECK_CLN_H
111 GINAC_CHECK_LIBCLN
112
113 dnl Expand the cppflags and libraries needed by apps using GiNaC
114 GINACLIB_CPPFLAGS=$CPPFLAGS
115 GINACLIB_LIBS=$LIBS
116 AC_SUBST(GINACLIB_CPPFLAGS)
117 AC_SUBST(GINACLIB_LIBS)
118
119 dnl Check for utilities needed by the different kinds of documentation.
120 dnl Documantation needs only be built when extending it, so never mind if it
121 dnl cannot find those helpers:
122 AC_PATH_PROG(DOXYGEN, doxygen, "")
123 AC_PATH_PROG(LATEX, latex, "")
124 AC_PATH_PROG(MAKEINDEX, makeindex, "")
125 AC_PATH_PROG(DVIPS, dvips, "")
126 AC_PATH_PROG(FIG2DEV, fig2dev, "")
127
128 dnl Determine which documentation shall be built
129 TUTORIAL_TARGETS=
130 REFERENCE_TARGETS=
131 if [[ "x$enable_html_doc" = "xyes" ]]; then
132   TUTORIAL_TARGETS="$TUTORIAL_TARGETS ginac.html"
133   if [[ "$DOXYGEN" ]]; then
134     REFERENCE_TARGETS="$REFERENCE_TARGETS index.html"
135   fi
136 fi
137 if [[ "x$enable_ps_doc" = "xyes" ]]; then
138   TUTORIAL_TARGETS="$TUTORIAL_TARGETS ginac.ps"
139   if [[ "$DOXYGEN" ]]; then
140     REFERENCE_TARGETS="$REFERENCE_TARGETS reference.ps"
141   fi
142 fi
143 AC_SUBST(TUTORIAL_TARGETS)
144 AC_SUBST(REFERENCE_TARGETS)
145
146 dnl Output makefiles etc.
147 AC_OUTPUT([
148 Makefile
149 GiNaC.spec
150 ginac-config
151 ginac/Makefile
152 check/Makefile
153 ginsh/Makefile
154 tools/Makefile
155 doc/Makefile
156 doc/tutorial/Makefile
157 doc/reference/Makefile
158 ], [chmod +x ginac-config])
159 echo "Configuration done. Now type \"make\"."