- most functions were not static, but they should have been
[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.12)
5
6 dnl Configure options
7 AC_ARG_ENABLE(html-doc, [  --enable-help-doc       build HTML documentation [default=yes]], , enable_html_doc=yes)
8 AC_ARG_ENABLE(ps-doc,   [  --enable-ps-doc         build PostScript documentation [default=no]], , enable_ps_doc=no)
9
10 dnl GiNaC 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=0
27 GINACLIB_INTERFACE_AGE=0
28 GINACLIB_BINARY_AGE=0
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 libtool versioning
39 LT_RELEASE=$GINACLIB_MAJOR_VERSION.$GINACLIB_MINOR_VERSION
40 LT_CURRENT=`expr $GINACLIB_MICRO_VERSION - $GINACLIB_INTERFACE_AGE`
41 LT_REVISION=$GINACLIB_INTERFACE_AGE
42 LT_AGE=`expr $GINACLIB_BINARY_AGE - $GINACLIB_INTERFACE_AGE`
43
44 AC_SUBST(LT_RELEASE)
45 AC_SUBST(LT_CURRENT)
46 AC_SUBST(LT_REVISION)
47 AC_SUBST(LT_AGE)
48
49 dnl This defines PACKAGE and VERSION
50 AM_CONFIG_HEADER(config.h)
51 AM_INIT_AUTOMAKE([GiNaC], $GINACLIB_VERSION)
52 AM_MAINTAINER_MODE
53
54 dnl ===========================================================================
55 dnl Check for the compiler and all the utilities needed for the build:
56 dnl ===========================================================================
57 AC_PROG_CXX
58 AC_PROG_CXXCPP
59 AM_PROG_INSTALL
60 AM_PROG_LIBTOOL
61 AM_PROG_LEX
62 AC_PROG_YACC
63
64 dnl Switch to C++ language mode for the following libraries and headers:
65 AC_LANG_CPLUSPLUS
66
67 dnl Make sure the following libraries work by testing for symbols therein. 
68 dnl They are automatically added the the variable $LIBS and thus passed into
69 dnl the Makefile:
70 AC_CHECK_LIB(stdc++, cout)
71
72 dnl Make sure all the necessary new-style headers are installed on the system.
73 dnl If one of them cannot be found the system is probably not ANSI-conform
74 dnl enough so trying the .h-style headers is a waste of time.
75 AC_CHECK_HEADERS(iostream vector map string list typeinfo iterator strstream stdexcept algorithm, ,
76     AC_MSG_ERROR(need to have ANSI compliant headers))
77
78 dnl Check for stuff needed for building the GiNaC interactive shell (ginsh):
79 AC_CHECK_HEADERS(unistd.h)
80 AC_CHECK_HEADERS(readline/readline.h readline/history.h)
81 AC_CHECK_LIB(readline, readline)
82
83 dnl We need to have Bruno Haible's CLN installed (macros are in acinclude.m4):
84 GINAC_CHECK_CLN_H
85 GINAC_CHECK_LIBCLN
86
87 dnl Check for utilities needed by the different kinds of documentation.
88 dnl Documantation needs only be built when extending it, so never mind if it
89 dnl cannot find those helpers:
90 AC_PATH_PROG(DOXYGEN, doxygen, "")
91 AC_PATH_PROG(JADE, jade, "")
92 AC_PATH_PROG(JADETEX, jadetex, "")
93 AC_PATH_PROG(LATEX, latex, "")
94 AC_PATH_PROG(MAKEINDEX, makeindex, "")
95 AC_PATH_PROG(DVIPS, dvips, "")
96 AC_PATH_PROG(FIG2DEV, fig2dev, "")
97
98 dnl Determine which documentation shall be built
99 TUTORIAL_TARGETS=
100 REFERENCE_TARGETS=
101 if [[ "x$enable_html_doc" = "xyes" ]]; then
102   TUTORIAL_TARGETS="$TUTORIAL_TARGETS index.html"
103   REFERENCE_TARGETS="$REFERENCE_TARGETS index.html"
104 fi
105 if [[ "x$enable_ps_doc" = "xyes" ]]; then
106 # currently doesn't work
107 #  TUTORIAL_TARGETS="$TUTORIAL_TARGETS tutorial.ps"
108   REFERENCE_TARGETS="$REFERENCE_TARGETS reference.ps"
109 fi
110 AC_SUBST(TUTORIAL_TARGETS)
111 AC_SUBST(REFERENCE_TARGETS)
112
113 dnl ===========================================================================
114 dnl Produce a Makefile from Makefile.in:
115 dnl ===========================================================================
116 AC_OUTPUT([
117 Makefile
118 GiNaC.spec
119 ginac/Makefile
120 check/Makefile
121 ginsh/Makefile
122 doc/Makefile
123 doc/tutorial/Makefile
124 doc/reference/Makefile
125 ])
126 echo "Configuration done. Now type \"make\"."