+ if test "$optimise_b" = yes; then
+ OPTIMIZE=" -O2 -finline-functions"
+ # following two lines are compatibility while Patchy has not
+ # yet learnt about --enable-checking. But once it has, we
+ # don't want -DDEBUG twice, so we omit it here if it is going
+ # to get added anyway later.
+ elif test "$checks_b" != yes; then
+ DEFINES="$DEFINES -DDEBUG"
+ fi
+
+ if test "$checks_b" = yes; then
+ DEFINES="$DEFINES -DDEBUG"
+ fi
+
+ if test $profile_b = yes; then
+ EXTRA_LIBS="-pg"
+ OPTIMIZE="$OPTIMIZE -pg"
+ fi
+
+ if test $debug_b = yes; then
+ OPTIMIZE="$OPTIMIZE -g"
+ fi
+])
+
+AC_DEFUN(STEPMAKE_COMPILE, [
+
+ AC_REQUIRE([STEPMAKE_COMPILE_BEFORE])
+ AC_REQUIRE([AC_PROG_CC])
+
+ STEPMAKE_OPTIONAL_REQUIRED(CC, cc, $1)
+ LD='$(CC)'
+ AC_SUBST(LD)
+
+ # If -pipe requested, test if it works and add to CFLAGS.
+ if test "$pipe_b" = yes; then
+ save_cflags="$CFLAGS"
+ CFLAGS=" -pipe $CFLAGS";
+ AC_CACHE_CHECK([whether compiler understands -pipe],
+ [stepmake_cv_cflags_pipe],
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[/* -pipe test */]])],
+ [stepmake_cv_cflags_pipe=yes],
+ [stepmake_cv_cflags_pipe=no]))
+ CFLAGS=$save_cflags
+ if test $stepmake_cv_cflags_pipe = yes; then
+ OPTIMIZE="$OPTIMIZE -pipe"
+ fi
+ fi
+
+ CFLAGS="$CFLAGS $OPTIMIZE"
+ CPPFLAGS=${CPPFLAGS-""}
+
+ AC_MSG_CHECKING([for IEEE-conformance compiler flags])
+ save_cflags="$CFLAGS"
+ case "$host" in
+ alpha*-*-*)
+ dnl should do compile test?
+ AC_MSG_RESULT(-mieee)
+ CFLAGS=" -mieee $CFLAGS"
+ ;;
+ *)
+ AC_MSG_RESULT([none])
+ ;;
+ esac
+
+ AC_SUBST(cross_compiling)
+ AC_SUBST(CFLAGS)
+ AC_SUBST(CPPFLAGS)
+ AC_SUBST(LDFLAGS)
+ AC_SUBST(DEFINES)
+ AC_SUBST(EXTRA_LIBS)
+])
+
+AC_DEFUN(STEPMAKE_CXX, [
+ AC_PROG_CXX
+ STEPMAKE_OPTIONAL_REQUIRED(CXX, c++, $1)
+
+ CXXFLAGS="$CXXFLAGS $OPTIMIZE"
+
+ AC_SUBST(CXX)
+ AC_SUBST(CXXFLAGS)
+])
+
+
+AC_DEFUN(STEPMAKE_CXXTEMPLATE, [
+ AC_CACHE_CHECK([whether explicit instantiation is needed],
+ stepmake_cv_need_explicit_instantiation,
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+ template <class T> struct foo { static int baz; };
+ template <class T> int foo<T>::baz = 1;
+ ]], [[ return foo<int>::baz; ]])],[stepmake_cv_need_explicit_instantiation=no],[stepmake_cv_need_explicit_instantiation=yes]))
+ if test x"$stepmake_cv_need_explicit_instantiation"x = x"yes"x; then
+ AC_DEFINE(NEED_EXPLICIT_INSTANTIATION)
+ fi
+])
+
+AC_DEFUN(STEPMAKE_GXXCODEGENBUG, [
+ AC_MSG_CHECKING([options for known g++ bugs])
+ case "$GXX:$CXX_VERSION" in
+ yes:400600[[0-2]])
+ AC_MSG_RESULT([-fno-optimize-sibling-calls (tail call bug)])
+ CXXFLAGS="$CXXFLAGS -fno-optimize-sibling-calls"
+ ;;
+ yes:400700?)
+ AC_MSG_RESULT([-fno-tree-vrp (comparison bug)])
+ CXXFLAGS="$CXXFLAGS -fno-tree-vrp"
+ ;;
+ *) AC_MSG_RESULT([none])
+ esac
+ AC_SUBST(CXXFLAGS)
+])
+
+
+AC_DEFUN(STEPMAKE_DATADIR, [
+ presome=${prefix}
+ if test "$prefix" = "NONE"; then
+ presome=${ac_default_prefix}
+ fi
+
+ build_package_datadir=$ugh_ugh_autoconf250_builddir/out$CONFIGSUFFIX/share/$package
+
+ DATADIR=`echo ${datadir} | sed "s!\\\${datarootdir}!${presome}/share!"`
+ DATADIR=`echo ${DATADIR} | sed "s!\\\${prefix}!$presome!"`
+ BUILD_PACKAGE_DATADIR=`echo ${build_package_datadir} | sed "s!\\\${prefix}!$presome!"`
+
+ AC_SUBST(datadir)
+ AC_SUBST(datarootdir)
+ AC_SUBST(build_package_datadir)
+ AC_DEFINE_UNQUOTED(DATADIR, ["${DATADIR}"])
+ AC_DEFINE_UNQUOTED(BUILD_PACKAGE_DATADIR, ["${BUILD_PACKAGE_DATADIR}"])
+])
+
+## ugh: cut & paste programming from datadir.
+AC_DEFUN(STEPMAKE_LIBDIR, [
+ presome=${exec_prefix}
+ if test "$presome" = "NONE"; then
+ presome=${prefix}
+ fi
+ if test "$presome" = "NONE"; then
+ presome=${ac_default_prefix}
+ fi
+
+ build_package_libdir=$ugh_ugh_autoconf250_builddir/out$CONFIGSUFFIX/lib/$package
+
+ LIBDIR=`echo ${libdir} | sed "s!\\\${exec_prefix}!$presome!"`
+ BUILD_PACKAGE_LIBDIR=`echo ${build_package_libdir} | sed "s!\\\${exec_prefix}!$presome!"`
+
+ AC_SUBST(libdir)
+ AC_SUBST(build_package_libdir)
+ AC_DEFINE_UNQUOTED(LIBDIR, ["${LIBDIR}"])
+ AC_DEFINE_UNQUOTED(BUILD_PACKAGE_LIBDIR, ["${BUILD_PACKAGE_LIBDIR}"])
+])
+
+
+AC_DEFUN(STEPMAKE_PREFIX_EXPAND_FIXUP, [
+ # undo expanding of explicit --infodir=/usr/share
+ # to ease install-time override with prefix=...
+ strip=`echo $includedir | eval sed s@^$prefix@@`
+ if test "$includedir" = "`eval echo $prefix$strip`"; then
+ includedir='${prefix}'$strip''
+ fi
+ strip=`echo $libdir | eval sed s@^$exec_prefix@@`
+ if test "$libdir" = "`eval echo $exec_prefix$strip`"; then
+ libdir='${exec_prefix}'$strip''
+ fi
+ strip=`echo $infodir | eval sed s@^$datarootdir@@`
+ if test "$infodir" = "`eval echo $datarootdir$strip`"; then
+ infodir='${datarootdir}'$strip''
+ fi
+ strip=`echo $mandir | eval sed s@^$datarootdir@@`
+ if test "$mandir" = "`eval echo $datarootdir$strip`"; then
+ mandir='${datarootdir}'$strip''
+ fi
+])
+
+
+AC_DEFUN(STEPMAKE_END, [
+ STEPMAKE_PREFIX_EXPAND_FIXUP
+
+ AC_SUBST(OPTIONAL)
+ AC_SUBST(REQUIRED)
+
+ AC_CONFIG_FILES([$CONFIGFILE.make:config.make.in])
+ AC_OUTPUT
+
+ if test -n "$OPTIONAL"; then
+ echo
+ echo "WARNING: Please consider installing optional programs or files: $OPTIONAL"
+ fi
+
+ if test -n "$REQUIRED"; then
+ echo
+ echo "ERROR: Please install required programs: $REQUIRED"
+ fi
+
+ if test -n "$UNSUPPORTED"; then
+ echo
+ echo "ERROR: Please use older version of programs: $UNSUPPORTED"
+ fi
+
+ if test -n "$OPTIONAL$REQUIRED$UNSUPPORTED"; then
+ echo
+ echo "See INSTALL.txt for more information on how to build $PACKAGE_NAME"
+ if test -f config.cache ; then
+ echo "Remove config.cache before rerunning ./configure"
+ fi
+ fi
+
+ if test -n "$REQUIRED$UNSUPPORTED"; then
+ rm -f $srcdir/GNUmakefile
+ exit 1
+ fi
+
+ # regular in-place build
+ # test for srcdir_build = yes ?
+ if test "$srcdir_build" = "yes"; then
+ rm -f $srcdir/GNUmakefile
+ cp $srcdir/GNUmakefile.in $srcdir/GNUmakefile
+ chmod 444 $srcdir/GNUmakefile
+ else
+ if test -f $srcdir/GNUmakefile; then
+ cat <<EOF
+Source directory already configured. Please clean the source directory
+
+ make -C $srcdir distclean
+
+and rerun configure.
+EOF
+ exit 2
+ fi
+
+ abssrcdir="`cd $srcdir; pwd`"
+ absbuilddir="`pwd`"
+ for d in 2 3 4 5 ; do
+ for mf in `cd $srcdir ; find . -maxdepth $d -mindepth $d -name GNUmakefile`; do
+ case "$abssrcdir" in
+ "$absbuilddir"/*)
+# source is below build directory, always copy
+ ;;
+ *)
+ case "$abssrcdir/${mf#./}" in
+ "$absbuilddir"/*)
+# find descended into build directory, don't copy
+ continue
+ esac
+ esac
+ mkdir -p ${mf%/*}
+ cat <<EOF | $PYTHON - > $mf
+print 'depth=' + ('../' * ( $d-1 ) )
+print 'include \$(depth)/config\$(if \$(conf),-\$(conf),).make'
+print 'include \$(configure-srcdir)/$mf'
+print 'MODULE_INCLUDES += \$(src-dir)/\$(outbase)'
+EOF
+ done
+ for mf in `cd $srcdir ; find . -maxdepth $d -mindepth $d -name '*.make' | grep -v config.make `; do
+ case "$abssrcdir" in
+ "$absbuilddir"/*)
+# source is below build directory, always copy
+ ;;
+ *)
+ case "$abssrcdir/${mf#./}" in
+ "$absbuilddir"/*)
+# find descended into build directory, don't copy
+ continue
+ esac
+ esac
+ mkdir -p ${mf%/*}
+ cat <<EOF | $PYTHON - > $mf
+print 'include \$(depth)/config\$(if \$(conf),-\$(conf),).make'
+print 'include \$(configure-srcdir)/$mf'
+EOF
+ done
+ done
+
+ rm -f GNUmakefile
+ cat <<EOF > GNUmakefile
+depth = .
+include config\$(if \$(conf),-\$(conf),).make
+include \$(configure-srcdir)/GNUmakefile.in
+EOF
+ chmod 444 GNUmakefile
+ AC_SUBST(VPATH)
+ fi
+])
+
+
+AC_DEFUN(STEPMAKE_FLEX, [
+ # ugh, automake: we want (and check for) flex
+ # AC_PROG_LEX
+ # urg: automake 1.3: hope this doesn't break 1.2 ac_cv_pro_lex_root hack...
+
+ # AC_PROG_LEX()
+ # ugh, ugh
+ ac_cv_prog_lex_root=lex.yy
+ STEPMAKE_PROGS(FLEX, flex, $1)
+])
+
+
+AC_DEFUN(STEPMAKE_FLEXLEXER, [
+ AC_CHECK_HEADERS([FlexLexer.h],[true],[false])
+ if test $? -ne 0; then
+ warn='FlexLexer.h (flex package)'
+ STEPMAKE_ADD_ENTRY($1, $warn)
+ fi
+ # check for yyFlexLexer.yy_current_buffer,
+ # in 2.5.4 <= flex < 2.5.29
+ AC_CACHE_CHECK([for yyFlexLexer.yy_current_buffer],
+ [stepmake_cv_flexlexer_yy_current_buffer],
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+using namespace std;
+#include <FlexLexer.h>
+class yy_flex_lexer: public yyFlexLexer
+{
+ public:
+ yy_flex_lexer ()
+ {
+ yy_current_buffer = 0;
+ }
+};
+]])],
+ [stepmake_cv_flexlexer_yy_current_buffer=yes],
+ [stepmake_cv_flexlexer_yy_current_buffer=no]))
+ if test $stepmake_cv_flexlexer_yy_current_buffer = yes; then
+ AC_DEFINE(HAVE_FLEXLEXER_YY_CURRENT_BUFFER, 1, [Define to 1 if yyFlexLexer has yy_current_buffer.])
+ fi
+])
+
+
+
+AC_DEFUN(STEPMAKE_FLEXLEXER_LOCATION, [
+ AC_MSG_CHECKING([FlexLexer.h location])
+
+ # ugh.
+ cat <<EOF > conftest.cc
+using namespace std;
+#include <FlexLexer.h>
+EOF
+ FLEXLEXER_FILE=`eval $ac_cpp conftest.cc | \
+ sed 's!# 1 "\(.*FlexLexer.h\)"!@FLEXLEXER@\1@@!g' | grep '@@' | \
+ sed 's!.*@FLEXLEXER@\(.*\)@@.*$!\1!g' ` 1> /dev/null 2> /dev/null
+ rm conftest.cc
+ AC_SUBST(FLEXLEXER_FILE)
+ AC_MSG_RESULT($FLEXLEXER_FILE)
+])
+
+AC_DEFUN(STEPMAKE_GCC_OR_CLANG, [
+ STEPMAKE_HAS_CLANG()
+ if test "$HAS_CLANG" = "no"; then
+ if test "$GCC" = "yes"; then
+ STEPMAKE_CHECK_VERSION(CC, $1, $2)
+ else
+ warn="$CC (Please install *GNU* cc)"
+ STEPMAKE_ADD_ENTRY($1, $warn)
+ fi
+ fi
+ # no else, we're fine with any clang
+])
+
+AC_DEFUN(STEPMAKE_GETTEXT, [
+ presome=${prefix}
+ if test "$prefix" = "NONE"; then
+ presome=${ac_default_prefix}
+ fi
+ LOCALEDIR=`echo ${localedir} | sed "s!\\\${prefix}!$presome!"`
+
+ AC_SUBST(localedir)
+ AC_DEFINE_UNQUOTED(LOCALEDIR, ["${LOCALEDIR}"])
+ AC_CHECK_LIB(intl, gettext)
+ AC_CHECK_FUNCS(gettext)
+])
+
+
+# Check for guile, between minimum ($2) and maximum version ($3).
+# If missing, add entry to missing-list ($1, one of 'OPTIONAL', 'REQUIRED')
+AC_DEFUN(STEPMAKE_GUILE, [
+ AC_MSG_CHECKING([for guile])
+ guile="guile"
+ found="no"
+ for r in $GUILE guile guile2 guile2.0 guile-2.0 guile1 guile1.9 guile1.8 guile-1 guile-1.9 guile-1.8; do
+ exe=`STEPMAKE_GET_EXECUTABLE($r)`
+ if ! $exe --version > /dev/null 2>&1 ; then
+ continue
+ fi
+ ver=`STEPMAKE_GET_VERSION($exe)`
+ num=`STEPMAKE_NUMERIC_VERSION($ver)`
+ req=`STEPMAKE_NUMERIC_VERSION($2)`
+ sup=`STEPMAKE_NUMERIC_VERSION($3)`
+ if test -n "$2" && test "$num" -lt "$req"; then
+ guile=["$r >= $2 (installed: $ver)"]
+ continue
+ else
+ if test -n "$3" && test "$num" -ge "$sup"; then
+ guile=["$r < $3 (installed: $ver)"]
+ continue
+ else
+ guile=$r
+ found=$r
+ break
+ fi
+ fi
+ done
+ AC_MSG_RESULT([$found])
+ if test "$found" != "no"; then
+ AC_MSG_CHECKING([$guile version])
+ AC_MSG_RESULT([$ver])
+ GUILE=$found
+ else
+ STEPMAKE_ADD_ENTRY($1, $guile)
+ fi
+ STEPMAKE_PATH_PROG(GUILE, $GUILE)
+])
+
+
+# STEPMAKE_GUILE_FLAGS --- set flags for compiling and linking with Guile
+#
+# This macro runs the guile-config script, installed with Guile,
+# to find out where Guile's header files and libraries are
+# installed. It sets two variables, marked for substitution, as
+# by AC_SUBST.
+#
+# GUILE_CFLAGS --- flags to pass to a C or C++ compiler to build
+# code that uses Guile header files. This is almost
+# always just a -I flag.
+#
+# GUILE_LDFLAGS --- flags to pass to the linker to link a
+# program against Guile. This includes -lguile for
+# the Guile library itself, any libraries that Guile
+# itself requires (like -lqthreads), and so on. It may
+# also include a -L flag to tell the compiler where to
+# find the libraries.
+
+AC_DEFUN([STEPMAKE_GUILE_FLAGS], [
+ exe=`STEPMAKE_GET_EXECUTABLE($guile_config)`
+ if test -x $exe; then
+ AC_MSG_CHECKING([guile compile flags])
+ GUILE_CFLAGS="`$guile_config compile`"
+ AC_MSG_RESULT($GUILE_CFLAGS)
+ AC_MSG_CHECKING([guile link flags])
+ GUILE_LDFLAGS="`$guile_config link`"
+ AC_MSG_RESULT($GUILE_LDFLAGS)
+ fi
+ AC_SUBST(GUILE_CFLAGS)
+ AC_SUBST(GUILE_LDFLAGS)
+])
+
+
+# Check for guile-config, between minimum ($2) and maximum version ($3).
+# If missing, add entry to missing-list ($1, one of 'OPTIONAL', 'REQUIRED')
+AC_DEFUN(STEPMAKE_GUILE_DEVEL, [
+ ## First, let's just see if we can find Guile at all.
+ test -n "$target_alias" && target_guile_config=$target_alias-guile-config
+ test -n "$host_alias" && host_guile_config=$host_alias-guile-config
+ AC_MSG_CHECKING([for guile-config])
+ guile_config="guile-config"
+ found="no"
+ for r in $GUILE_CONFIG \
+ $target_guile_config $host_guile_config $build_guile_config \
+ guile-config \
+ guile2-config guile-2-config guile-config-2 \
+ guile2.2-config guile-2.2-config guile-config-2.2 \
+ guile2.0-config guile-2.0-config guile-config-2.0 \
+ guile1-config guile-1-config guile-config-1 \
+ guile1.9-config guile-1.9-config guile-config-1.9 \
+ guile1.8-config guile-1.8-config guile-config-1.8; \
+ do
+ exe=`STEPMAKE_GET_EXECUTABLE($r)`
+ if ! $exe --version > /dev/null 2>&1 ; then
+ continue
+ fi
+ ver=`STEPMAKE_GET_VERSION($exe)`
+ num=`STEPMAKE_NUMERIC_VERSION($ver)`
+ req=`STEPMAKE_NUMERIC_VERSION($2)`
+ sup=`STEPMAKE_NUMERIC_VERSION($3)`
+ if test -n "$2" -a "$num" -lt "$req"; then
+ guile_config=["$r >= $2 (installed: $ver)"]
+ continue
+ else
+ if test -n "$3" -a "$num" -ge "$sup"; then
+ guile_config=["$r < $3 (installed: $ver)"]
+ continue
+ else
+ guile_config=$r
+ found=$r
+ break
+ fi