dnl
dnl When making releases, do
dnl 1. Increment ginac_lt_revision
-dnl 2. If any interfaces have been added since the last release, increment
-dnl ginac_lt_current and set ginac_lt_revision to 0.
-dnl 3. If any interfaces have been changed or removed since the last release,
-dnl make sure you increment ginac_minor_version above and reset both
-dnl ginac_lt_current and ginac_lt_revision to 0.
+dnl 2. If any interfaces have been added, removed, or changed since the last
+dnl release, increment ginac_lt_current and set ginac_lt_revision to 0.
+dnl 3. If any interfaces have been added since the last release, increment
+dnl ginac_lt_age.
+dnl 4. If any interfaces have been removed since the last release, set
+dnl ginac_lt_age to 0.
dnl
dnl Please note: the libtool naming scheme cannot guarantee that on all
dnl systems, the numbering is consecutive. It only guarantees that it is
dnl of leftover numbers. Not something we need to worry about yet. ;-)
m4_define([ginac_lt_current], [2])
m4_define([ginac_lt_revision], [0])
+m4_define([ginac_lt_age], [2])
-AC_INIT([GiNaC], ginac_version, [<ginac-list@ginac.de>])
+AC_INIT([GiNaC], ginac_version, [ginac-list@ginac.de], [ginac], [http://www.ginac.de/])
AC_PREREQ(2.59)
AC_CONFIG_SRCDIR(ginac/basic.cpp)
AC_CONFIG_AUX_DIR([config])
AC_DEFINE_UNQUOTED(ARCHIVE_VERSION, $ARCHIVE_VERSION, [Current GiNaC archive file version number])
AC_DEFINE_UNQUOTED(ARCHIVE_AGE, $ARCHIVE_AGE, [GiNaC archive file version age])
-dnl libtool versioning (We don't use libtool's age numbering since we promise
-dnl to keep the binary interface compatible if only ginac_micro_version changes.
-dnl In effect, age==current.)
-LT_VERSION_INFO="ginac_lt_current:ginac_lt_revision:ginac_lt_current"
-LT_RELEASE="ginac_release"
+dnl libtool versioning
+LT_VERSION_INFO="ginac_lt_current:ginac_lt_revision:ginac_lt_age"
+dnl TODO: remove LT_RELEASE after ABI gets changed. We used to set
+dnl LT_RELEASE (for no good reason), omitting it right now would
+dnl result in a spurious SONAME change.
+LT_RELEASE="1.5"
AC_SUBST(LT_VERSION_INFO)
AC_SUBST(LT_RELEASE)
-
dnl Check for the compiler and all the utilities needed for the build.
AC_PROG_CXX
AC_PROG_CXXCPP
AC_PROG_INSTALL
AM_PROG_LIBTOOL
-AM_PROG_LEX
+AC_PROG_LEX
AC_PROG_YACC
-
+AC_PATH_PROG(YACCEXE, $YACC, "")
dnl Switch to C++ language mode for the following libraries and headers.
AC_LANG([C++])
AC_CHECK_HEADERS(unistd.h)
GINAC_HAVE_RUSAGE
GINAC_READLINE
+AC_CHECK_FILE([ginsh/ginsh_parser.h], [],
+ [AS_IF([test -z "$YACCEXE"], [GINAC_WARNING([ginsh will not compile, because yacc/bison is missing.])])])
+AC_CHECK_FILE([ginsh/ginsh_lexer.cc], [],
+ [AS_IF([test x"$LEX" == x":"], [GINAC_WARNING([ginsh will not compile, because lex/flex is missing.])])])
dnl Check for dl library (needed for GiNaC::compile).
GINAC_EXCOMPILER
AC_PATH_PROG(LATEX, latex, "")
AC_PATH_PROG(PDFLATEX, pdflatex, "")
AC_PATH_PROG(MAKEINDEX, makeindex, "")
+AC_PATH_PROG(MAKEINFO, makeinfo, "")
AC_PATH_PROG(DVIPS, dvips, "")
AM_CONDITIONAL(CONFIG_TEX, [test ! \( -z "$LATEX" -o -z $"PDFLATEX" -o -z "$MAKEINDEX" -o -z "$DVIPS" \)])
AC_PATH_PROG(FIG2DEV, fig2dev, "")
AM_CONDITIONAL(CONFIG_FIG2DEV, [test ! -z "$FIG2DEV"])
-
+AS_IF([test -z "$FIG2DEV" -o -z "$MAKEINFO"],
+ [GINAC_WARNING([Documentation may not build, because fig2dev/texinfo is missing.])])
+AS_IF([test -z "$DOXYGEN"],
+ [GINAC_WARNING([Reference manual will not build, because doxygen is missing.])])
+AS_IF([test -z "$LATEX" -o -z "$PDFLATEX" -o -z "$DVIPS"],
+ [GINAC_WARNING([Some documentation formats may not build, because latex/pdflatex/dvips is missing.])])
+
dnl generate boilerplate code for the (new) parser.
dnl Only developers need this tool.
AC_PATH_PROG(AUTOGEN, autogen, "")
+AC_CHECK_FILE([ginac/parser/builtin_fcns.cpp], [],
+ [AS_IF([test -z "$AUTOGEN"], [GINAC_ERROR([Source will not compile, because autogen is missing.])])])
dnl Output makefiles etc.
AC_CONFIG_FILES([
doc/reference/Doxyfooter
])
AC_OUTPUT
+
dnl Display a final warning if there has been a GINAC_ERROR or a GINAC_WARNING
GINAC_CHECK_ERRORS