]> git.donarmstrong.com Git - lilypond.git/blobdiff - aclocal.m4
Web-ja: update introduction
[lilypond.git] / aclocal.m4
index f198d4c72725000c872df48e78df8445a9add70b..1228f6ca29c6208a89c19bdf8aee3f651a9c3dcb 100644 (file)
@@ -1,8 +1,5 @@
 dnl aclocal.m4   -*-shell-script-*-
-dnl WARNING WARNING WARNING
-dnl do not edit! this is aclocal.m4, generated from /home/hanwen/usr/src/lilypond/stepmake/aclocal.m4
-dnl aclocal.m4   -*-shell-script-*-
-dnl StepMake subroutines for configure.in
+dnl StepMake subroutines for configure.ac
 
 
 ### mostly interal macros
@@ -14,23 +11,44 @@ AC_DEFUN(STEPMAKE_GET_EXECUTABLE, [
     ## command -v doesn't work in zsh
     ## command -v "$1" 2>&1
     ## this test should work in ash, bash, pdksh (ksh), zsh
-    type -p "$1" 2>/dev/null | tail -1 | awk '{print $NF}'
+    type -p $1 2>/dev/null | tail -n 1 | awk '{print $NF}'
 ])
 
 
 # Get version string from executable ($1)
 AC_DEFUN(STEPMAKE_GET_VERSION, [
-    ## "$1" --version 2>&1 | grep -v '^$' | head -1 | awk '{print $NF}'
+    ## "$1" --version 2>&1 | grep -v '^$' | head -1 | awk '{print $NF}'
     ##
     ## ARG.
     ## Workaround for broken Debian gcc version string:
     ##     gcc (GCC) 3.1.1 20020606 (Debian prerelease)
     ##
-    ## Assume, and hunt for, dotted version multiplet.
-    changequote(<<, >>)dnl
-    "$1" --version 2>&1 | grep '[0-9]\.[0-9]' | head -1 | \
-       sed -e 's/.*[^-.0-9]\([0-9][0-9]*\.[0-9][.0-9]*\).*/\1/'
-    changequote([, ])dnl
+    ## -V: Workaround for python
+
+    changequote(<<, >>)#dnl
+
+    ## Assume and hunt for dotted version multiplet.
+    ## use eval trickery, because we cannot use multi-level $() instead of ``
+    ## for compatibility reasons.
+    
+    ## grab the first version number in  --version output.
+    eval _ver=\"\`("$1" --version || "$1" -V) 2>&1 |
+               grep -E '(^| )[0-9][0-9]*\.[0-9]' |
+               head -n 1 |
+               tr ' ' '\n' |
+               sed 's/\([0-9][0-9]*\.[0-9][0-9.]*\).*/\1/g' |
+               grep -E '(^| )[0-9][0-9]*\.[0-9]' |
+               head -n 1\`\"
+
+    if test -z "$_ver"; then
+        ## If empty, try date [fontforge]
+        eval _ver=\"\`("$1" --version || "$1" -V) 2>&1 \
+           | grep '\(^\|[^0-9a-f]\)[0-9]\{6,8\}\([^0-9a-f]\|$\)' \
+           | head -n 1 \
+           | sed -e 's/^[^.0-9]*//' -e 's/[^.0-9]*$//'\`\"
+    fi
+    echo "$_ver"
+    changequote([, ])#dnl
 ])
 
 # Calculate simplistic numeric version from version string ($1)
@@ -41,7 +59,7 @@ AC_DEFUN(STEPMAKE_NUMERIC_VERSION, [
       if ([$]3) {three = [$]3}
       else {three = 0}
     }
-    {printf "%d\n", [$]1*1000000 + [$]2*1000 + three}'
+    {printf "%.0f\n", [$]1*1000000 + [$]2*1000 + three}'
 ])
 
 
@@ -84,22 +102,46 @@ AC_DEFUN(STEPMAKE_CHECK_SEARCH_RESULT, [
 
 
 # Check version of program ($1)
-# If version is smaller than requested ($3),
-# add entry to missing-list ($2, one of 'OPTIONAL', 'REQUIRED').
+# If version ($4: optional argument, supply if version cannot be
+# parsed using --version or -V ) is smaller than requested ($3), add
+# entry to missing-list ($2, one of 'OPTIONAL', 'REQUIRED').
 AC_DEFUN(STEPMAKE_CHECK_VERSION, [
     r="`eval echo '$'"$1"`"
     AC_MSG_CHECKING([$r version])
     exe=`STEPMAKE_GET_EXECUTABLE($r)`
-    ver=`STEPMAKE_GET_VERSION($exe)`
+    if test -n "$4"; then
+        ver="$4"
+    else
+        ver=`STEPMAKE_GET_VERSION($exe)`
+    fi
     num=`STEPMAKE_NUMERIC_VERSION($ver)`
     req=`STEPMAKE_NUMERIC_VERSION($3)`
     AC_MSG_RESULT([$ver])
     if test "$num" -lt "$req"; then
-       STEPMAKE_ADD_ENTRY($2, ["$r $3 (installed: $ver)"])
+       STEPMAKE_ADD_ENTRY($2, ["$r >= $3 (installed: $ver)"])
+    fi
+    vervar="`echo $1 | tr '[a-z]' '[A-Z]'`_VERSION"
+    eval `echo $vervar=$num`
+##    AC_SUBST(`eval echo $vervar`)
+])
+
+# Check version of program ($1)
+# If version is greater than or equals unsupported ($3),
+# add entry to unsupported list ($2, 'UNSUPPORTED')
+AC_DEFUN(STEPMAKE_CHECK_VERSION_UNSUPPORTED, [
+    r="`eval echo '$'"$1"`"
+    AC_MSG_CHECKING([$r version])
+    exe=`STEPMAKE_GET_EXECUTABLE($r)`
+    ver=`STEPMAKE_GET_VERSION($exe)`
+    num=`STEPMAKE_NUMERIC_VERSION($ver)`
+    sup=`STEPMAKE_NUMERIC_VERSION($3)`
+    AC_MSG_RESULT([$ver])
+    if test "$num" -ge "$sup"; then
+       STEPMAKE_ADD_ENTRY($2, ["$r < $3 (installed: $ver)"])
     fi
 ])
 
-### Macros to build configure.in
+### Macros to build configure.ac
 
 
 AC_DEFUN(STEPMAKE_BIBTEX2HTML, [
@@ -126,60 +168,90 @@ AC_DEFUN(STEPMAKE_BISON, [
     fi
 ])
 
-
-AC_DEFUN(STEPMAKE_COMPILE, [
+AC_DEFUN(STEPMAKE_COMPILE_BEFORE, [
     # -O is necessary to get inlining
     CFLAGS=${CFLAGS-""}
     CXXFLAGS=${CXXFLAGS-$CFLAGS}
     LDFLAGS=${LDFLAGS-""}
-    checking_b=yes
     optimise_b=yes
+    checks_b=no
     profile_b=no
     debug_b=yes
-
-    AC_ARG_ENABLE(checking,
-    [  --enable-checking       set runtime checks (assert calls).  Default: on],
-    [checking_b=$enableval] )
+    pipe_b=yes
 
     AC_ARG_ENABLE(debugging,
-    [  --enable-debugging      compile with debugging info.  Default: on],
+    [AS_HELP_STRING([--enable-debugging],
+                    [compile with debugging info.  Default: on])],
     [debug_b=$enableval])
 
+    AC_ARG_ENABLE(checking,
+    [AS_HELP_STRING([--enable-checking],
+                    [compile with expensive run-time checks.  Default: off])],
+    [checks_b=$enableval])
+
     AC_ARG_ENABLE(optimising,
-    [  --enable-optimising     compile with optimising.  Default: on],
+    [AS_HELP_STRING([--enable-optimising],
+                    [compile with optimising.  Default: on])],
     [optimise_b=$enableval])
 
     AC_ARG_ENABLE(profiling, 
-    [  --enable-profiling      compile with gprof support.  Default: off],
+    [AS_HELP_STRING([--enable-profiling],
+                    [compile with gprof support.  Default: off])],
     [profile_b=$enableval])
     
-
-    if test "$checking_b" = no; then
-       # ugh
-       AC_DEFINE(NDEBUG)
-       DEFINES="$DEFINES -DNDEBUG"
-    fi
+    AC_ARG_ENABLE(pipe, 
+    [AS_HELP_STRING([--enable-pipe],
+                    [compile with -pipe.  Default: on])],
+    [pipe_b=$enableval])
 
     if test "$optimise_b" = yes; then
-       OPTIMIZE="-O2 -finline-functions"
+       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_LIBES="-pg"
+       EXTRA_LIBS="-pg"
        OPTIMIZE="$OPTIMIZE -pg"
     fi
 
-    if test $debug_b = yes; then       
+    if test $debug_b = yes; then
        OPTIMIZE="$OPTIMIZE -g"
     fi
+])
+
+AC_DEFUN(STEPMAKE_COMPILE, [
 
+    AC_REQUIRE([STEPMAKE_COMPILE_BEFORE])
+    AC_REQUIRE([AC_PROG_CC])
 
-    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-""}
 
@@ -189,120 +261,136 @@ AC_DEFUN(STEPMAKE_COMPILE, [
         alpha*-*-*)
            dnl should do compile test?
            AC_MSG_RESULT(-mieee)
-           CFLAGS="-mieee $CFLAGS"
+           CFLAGS=" -mieee $CFLAGS"
            ;;
        *)
            AC_MSG_RESULT([none])
            ;;
     esac
+
     AC_SUBST(cross_compiling)
     AC_SUBST(CFLAGS)
     AC_SUBST(CPPFLAGS)
     AC_SUBST(LDFLAGS)
-    AC_SUBST(ICFLAGS)
-    AC_SUBST(ILDFLAGS)
     AC_SUBST(DEFINES)
-    AC_SUBST(EXTRA_LIBES)
+    AC_SUBST(EXTRA_LIBS)
 ])
 
 AC_DEFUN(STEPMAKE_CXX, [
-    AC_LANG([C++])
     AC_PROG_CXX
     STEPMAKE_OPTIONAL_REQUIRED(CXX, c++, $1)
 
-    CPPFLAGS="$CPPFLAGS $DEFINES"
     CXXFLAGS="$CXXFLAGS $OPTIMIZE"
-    LDFLAGS="$LDFLAGS $EXTRA_LIBES"
 
-    AC_SUBST(CXXFLAGS)
     AC_SUBST(CXX)
-    LD='$(CXX)'
-    AC_SUBST(LD)
+    AC_SUBST(CXXFLAGS)
 ])
 
 
 AC_DEFUN(STEPMAKE_CXXTEMPLATE, [
     AC_CACHE_CHECK([whether explicit instantiation is needed],
-       lily_cv_need_explicit_instantiation,
+       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; ]])],[lily_cv_need_explicit_instantiation=no],[lily_cv_need_explicit_instantiation=yes]))
-    if test x"$lily_cv_need_explicit_instantiation"x = x"yes"x; then
+    ]], [[ 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, [
-    if test "$datadir" = "\${prefix}/share"; then
-           datadir='${prefix}/share'
-    fi
     presome=${prefix}
     if test "$prefix" = "NONE"; then
        presome=${ac_default_prefix}
     fi
     
-    package_datadir=$datadir/$package
-    local_package_datadir=$package_datadir/$FULL_VERSION
-    build_package_datadir=$ugh_ugh_autoconf250_builddir/share/$package
+    build_package_datadir=$ugh_ugh_autoconf250_builddir/out$CONFIGSUFFIX/share/$package
     
-    DATADIR=`echo ${datadir} | sed "s!\\\${prefix}!$presome!"`
-    PACKAGE_DATADIR=`echo ${package_datadir} | sed "s!\\\${prefix}!$presome!"`
-    LOCAL_PACKAGE_DATADIR=`echo ${local_package_datadir} | sed "s!\\\${prefix}!$presome!"`
+    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(package_datadir)
-    AC_SUBST(local_package_datadir)
+    AC_SUBST(datarootdir)
     AC_SUBST(build_package_datadir)
     AC_DEFINE_UNQUOTED(DATADIR, ["${DATADIR}"])
-    AC_DEFINE_UNQUOTED(PACKAGE_DATADIR, ["${PACKAGE_DATADIR}"])
-    AC_DEFINE_UNQUOTED(LOCAL_PACKAGE_DATADIR, ["${LOCAL_PACKAGE_DATADIR}"])
     AC_DEFINE_UNQUOTED(BUILD_PACKAGE_DATADIR, ["${BUILD_PACKAGE_DATADIR}"])
 ])
 
 ## ugh: cut & paste programming from datadir. 
 AC_DEFUN(STEPMAKE_LIBDIR, [
-    if test "$libdir" = "\${exec_prefix}/lib"; then
-           libdir='${exec_prefix}/lib'
-    fi
     presome=${exec_prefix}
-    if test "$exec_prefix" = "NONE"; then
-       presome=${ac_default_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
     
-    package_libdir=$libdir/$package
-    local_package_libdir=$package_libdir/$FULL_VERSION
-    build_package_libdir=$ugh_ugh_autoconf250_builddir/lib/$package
-    
-    DATADIR=`echo ${libdir} | sed "s!\\\${prefix}!$presome!"`
-    PACKAGE_LIBDIR=`echo ${package_libdir} | sed "s!\\\${prefix}!$presome!"`
-    LOCAL_PACKAGE_LIBDIR=`echo ${local_package_libdir} | sed "s!\\\${prefix}!$presome!"`
-    BUILD_PACKAGE_LIBDIR=`echo ${build_package_libdir} | sed "s!\\\${prefix}!$presome!"`
+    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(package_libdir)
-    AC_SUBST(local_package_libdir)
     AC_SUBST(build_package_libdir)
     AC_DEFINE_UNQUOTED(LIBDIR, ["${LIBDIR}"])
-    AC_DEFINE_UNQUOTED(PACKAGE_LIBDIR, ["${PACKAGE_LIBDIR}"])
-    AC_DEFINE_UNQUOTED(LOCAL_PACKAGE_LIBDIR, ["${LOCAL_PACKAGE_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
-
+    AC_OUTPUT
     
     if test -n "$OPTIONAL"; then
        echo
-        echo "WARNING: Please consider installing optional programs: $OPTIONAL"
+        echo "WARNING: Please consider installing optional programs or files: $OPTIONAL"
     fi
 
     if test -n "$REQUIRED"; then
@@ -310,13 +398,20 @@ AC_OUTPUT
         echo "ERROR: Please install required programs: $REQUIRED"
     fi
     
-    if test -n "$OPTIONAL$REQUIRED"; then
+    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"
-       echo "Remove config.cache before rerunning ./configure"
+       if test -f config.cache ; then
+           echo "Remove config.cache before rerunning ./configure"
+       fi 
     fi
     
-    if test -n "$REQUIRED"; then
+    if test -n "$REQUIRED$UNSUPPORTED"; then
        rm -f $srcdir/GNUmakefile
         exit 1
     fi
@@ -327,10 +422,69 @@ AC_OUTPUT
        rm -f $srcdir/GNUmakefile
        cp $srcdir/GNUmakefile.in $srcdir/GNUmakefile
        chmod 444 $srcdir/GNUmakefile
-    else # --srcdir build
-        rm -f GNUmakefile
-       cp $srcdir/make/srcdir.make.in GNUmakefile
-       chmod 444 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
 ])
 
@@ -353,18 +507,59 @@ AC_DEFUN(STEPMAKE_FLEXLEXER, [
        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_GCC, [
-    if test "$GCC" = "yes"; then
-        STEPMAKE_CHECK_VERSION(CC, $1, $2)
-    else
-       warn="$CC (Please install *GNU* cc)"
-       STEPMAKE_ADD_ENTRY($1, $warn)
-    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}
@@ -380,8 +575,44 @@ AC_DEFUN(STEPMAKE_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, [
-    STEPMAKE_PATH_PROG(GUILE, guile, $1)
+    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)
 ])
 
 
@@ -418,70 +649,128 @@ AC_DEFUN([STEPMAKE_GUILE_FLAGS], [
 ])
 
 
+# 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])
-    for guile_config in guile-config $target-guile-config $build-guile-config; do
-       AC_MSG_RESULT([$guile_config])
-       if ! $guile_config --version > /dev/null 2>&1 ; then
-           AC_MSG_WARN([cannot execute $guile_config])
-           AC_MSG_CHECKING([if we are cross compiling])
-           GUILE_CONFIG='echo no 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
-           GUILE_CONFIG=$guile_config
-           break
+           if test -n "$3" -a "$num" -ge "$sup"; then
+               guile_config=["$r < $3 (installed: $ver)"]
+               continue
+           else
+               guile_config=$r
+               found=$r
+               break
+           fi
        fi
     done
-    STEPMAKE_OPTIONAL_REQUIRED(GUILE_CONFIG, $guile_config, $1)
-    if test $? -ne 0; then
-        STEPMAKE_ADD_ENTRY($1, 'guile-config (guile-devel, guile-dev or libguile-dev package)')
-    fi 
-
-    STEPMAKE_CHECK_SEARCH_RESULT(GUILE_CONFIG)
-    # urg.  should test functionality rather than version.
-    if test $? -eq 0 -a -n "$2"; then
-       STEPMAKE_CHECK_VERSION(GUILE_CONFIG, $1, $2)
+    AC_MSG_RESULT([$found])
+    if test "$found" != "no"; then
+       AC_MSG_CHECKING([$guile_config version])
+       AC_MSG_RESULT([$ver])
+       GUILE_CONFIG=$found
+    else
+       STEPMAKE_ADD_ENTRY($1, "$guile_config (guile-devel, guile-dev or libguile-dev package)")
     fi
 
     AC_SUBST(GUILE_CONFIG)
     
     guile_version="$ver"
-    changequote(<<, >>)dnl
+    changequote(<<, >>)#dnl
     GUILE_MAJOR_VERSION=`expr $guile_version : '\([0-9]*\)'`
     GUILE_MINOR_VERSION=`expr $guile_version : '[0-9]*\.\([0-9]*\)'`
     GUILE_PATCH_LEVEL=`expr $guile_version : '[0-9]*\.[0-9]*\.\([0-9]*\)'`
-    changequote([, ])dnl
+    changequote([, ])#dnl
     STEPMAKE_GUILE_FLAGS
+    save_CPPFLAGS="$CPPFLAGS"
+    save_LIBS="$LIBS"
+    CPPFLAGS="$GUILE_CFLAGS $CPPFLAGS"
+    LIBS="$GUILE_LDFLAGS $LIBS"
+    AC_CHECK_HEADERS([libguile.h])
+    AC_CHECK_LIB(guile, scm_boot_guile)
+    AC_CHECK_FUNCS(scm_boot_guile,,libguile_b=no)
+    if test "$libguile_b" = "no"; then
+           warn='libguile (libguile-dev, guile-devel or guile-dev
+   package).'
+           STEPMAKE_ADD_ENTRY(REQUIRED, $warn)
+    fi
+    CPPFLAGS="$save_CPPFLAGS"
+    LIBS="$save_LIBS"
     AC_DEFINE_UNQUOTED(GUILE_MAJOR_VERSION, $GUILE_MAJOR_VERSION)
     AC_DEFINE_UNQUOTED(GUILE_MINOR_VERSION, $GUILE_MINOR_VERSION)
     AC_DEFINE_UNQUOTED(GUILE_PATCH_LEVEL, $GUILE_PATCH_LEVEL)
 ])
 
 
-AC_DEFUN(STEPMAKE_GXX, [
-    if test "$GXX" = "yes"; then
-        STEPMAKE_CHECK_VERSION(CXX, $1, $2)
-    else
-       warn="$CXX (Please install *GNU* c++)"
-       STEPMAKE_ADD_ENTRY($1, $warn)
+AC_DEFUN(STEPMAKE_DLOPEN, [
+    AC_CHECK_LIB(dl, dlopen)
+    AC_CHECK_FUNCS(dlopen)
+])
+
+AC_DEFUN(STEPMAKE_HAS_CLANG, [
+    AC_EGREP_CPP(yes,
+      [#ifdef __clang__
+       yes
+       #endif
+      ], HAS_CLANG=yes, HAS_CLANG=no)
+])
+
+AC_DEFUN(STEPMAKE_GXX_OR_CLANG, [
+    STEPMAKE_HAS_CLANG()
+    if test "$HAS_CLANG" = "no"; then
+        if test "$GXX" = "yes"; then
+            STEPMAKE_CHECK_VERSION(CXX, $1, $2)
+        else
+           warn="$CXX (Please install *GNU* c++)"
+           STEPMAKE_ADD_ENTRY($1, $warn)
+        fi
     fi
+    # no else, we're fine with any clang
 ])
 
 
 AC_DEFUN(STEPMAKE_INIT, [
 
-    AC_PREREQ(2.50)
     . $srcdir/VERSION
     FULL_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
+    MICRO_VERSION=$PATCH_LEVEL
+    TOPLEVEL_VERSION=$FULL_VERSION
     if test x$MY_PATCH_LEVEL != x; then
        FULL_VERSION=$FULL_VERSION.$MY_PATCH_LEVEL
     fi
-
+    VERSION=$FULL_VERSION
+    export MAJOR_VERSION MINOR_VERSION PATCH_LEVEL
     # urg: don't "fix" this: irix doesn't know about [:lower:] and [:upper:]
-    changequote(<<, >>)dnl
+    changequote(<<, >>)#dnl
     PACKAGE=`echo $PACKAGE_NAME | tr '[a-z]' '[A-Z]'`
     package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'`
-    changequote([, ])dnl
+    changequote([, ])#dnl
 
     # No versioning on directory names of sub-packages 
     # urg, urg
@@ -519,15 +808,17 @@ AC_DEFUN(STEPMAKE_INIT, [
 
        (cd stepmake 2>/dev/null || mkdir stepmake)
        (cd stepmake; rm -f bin; ln -s ../$srcdir/bin .)
-# only possible with autoconf < 2.50 -- hardcoded in configure.in
-#      AC_CONFIG_AUX_DIR(bin)
        stepmake=stepmake
     else
         AC_MSG_RESULT($PACKAGE)
 
        AC_MSG_CHECKING(builddir)
        ugh_ugh_autoconf250_builddir="`pwd`"
-       if test "$srcdir" = "."; then
+
+       here_dir=$(cd . && pwd)
+       full_src_dir=$(cd $srcdir && pwd)
+
+       if test "$full_src_dir" = "$here_dir"; then
            srcdir_build=yes
        else
            srcdir_build=no
@@ -542,20 +833,36 @@ AC_DEFUN(STEPMAKE_INIT, [
            stepmake="`cd $srcdir/stepmake; pwd`"
            AC_MSG_RESULT([$srcdir/stepmake  ($datadir/stepmake not found)])
        fi
-
-# only possible with autoconf < 2.50 -- hardcoded in configure.in
-#      AC_CONFIG_AUX_DIR(\
-#        stepmake/bin\
-#        $srcdir/stepmake/bin\
-#      )
     fi
 
     AC_SUBST(ugh_ugh_autoconf250_builddir)
+
+    # Use absolute directory for non-srcdir builds, so that build
+    # dir can be moved.
+    if test "$srcdir_build" = "no" ;  then 
+       srcdir="`cd $srcdir; pwd`"
+    fi
+    
+    AC_SUBST(srcdir)
     AC_SUBST(stepmake)
     AC_SUBST(package)
     AC_SUBST(PACKAGE)
     AC_SUBST(PACKAGE_NAME)
-    AC_DEFINE_UNQUOTED(PACKAGE, ["${PACKAGE_NAME}"])
+    AC_SUBST(VERSION)
+    AC_SUBST(MAJOR_VERSION)
+    AC_SUBST(MINOR_VERSION)
+    AC_SUBST(MICRO_VERSION)
+
+    # stepmake nonstandard names
+    AC_SUBST(PATCH_LEVEL)
+    AC_SUBST(TOPLEVEL_VERSION)
+    
+    # We don't need the upper case variant,
+    # so stick to macros are uppercase convention.
+    # AC_DEFINE_UNQUOTED(package, ["${package}"])
+    # AC_DEFINE_UNQUOTED(PACKAGE, ["${PACKAGE}"])
+    AC_DEFINE_UNQUOTED(PACKAGE, ["${package}"])
+    AC_DEFINE_UNQUOTED(PACKAGE_NAME, ["${PACKAGE_NAME}"])
     AC_DEFINE_UNQUOTED(TOPLEVEL_VERSION, ["${FULL_VERSION}"])
 
     if test -z "$package_depth"; then
@@ -571,11 +878,12 @@ AC_DEFUN(STEPMAKE_INIT, [
 
     CONFIGSUFFIX=
     AC_ARG_ENABLE(config,
-    [  --enable-config=CONF    put settings in config-CONF.make and config-CONF.h;
-                            do \`make conf=CONF' to get output in ./out-CONF],
+    [AS_HELP_STRING([--enable-config=CONF],
+                    [put settings in config-CONF.make and config-CONF.h;
+                   do `make conf=CONF' to get output in ./out-CONF])],
     [CONFIGURATION=$enableval])
 
-    ##'
+    ##'`#
 
     test -n "$CONFIGURATION" && CONFIGSUFFIX="-$CONFIGURATION"
     CONFIGFILE=config$CONFIGSUFFIX
@@ -598,8 +906,8 @@ AC_DEFUN(STEPMAKE_INIT, [
        AC_PATH_PROG(BASH, bash, $SHELL)
     fi
     AC_SUBST(SHELL)
-    
-    STEPMAKE_PATH_PROG(PYTHON, python, REQUIRED)
+
+    STEPMAKE_PYTHON(REQUIRED, 1.5, 3.0)
 
     if expr "$MAKE" : '.*\(echo\)' >/dev/null; then
        $MAKE -v 2> /dev/null | grep GNU > /dev/null
@@ -608,32 +916,20 @@ AC_DEFUN(STEPMAKE_INIT, [
            # STEPMAKE_WARN($warn)
            STEPMAKE_ADD_ENTRY(REQUIRED, $warn)
         fi
-    fi 
-
-    if test "$OSTYPE" = "cygwin" -o "$OSTYPE" = "cygwin32" -o "$OSTYPE" = "Windows_NT"; then
-       LN=cp # hard link does not work under cygnus-nt
-       LN_S='cp -r' # symbolic link does not work for native nt
-       ZIP="zip -r -9" #
-       program_suffix=.exe
-       ROOTSEP=':'
-        DIRSEP='/'
-       PATHSEP=':'
-       INSTALL="\$(SHELL) \$(stepdir)/../bin/install-dot-exe.sh -c"
-    else
-       ROOTSEP=':'
-       DIRSEP='/'
-       PATHSEP=':'
-       LN=ln
-       LN_S='ln -s'
-       ZIP="zip -r -9"
-        INSTALL="\$(SHELL) \$(stepdir)/../bin/install-sh -c"
     fi
+
+    ROOTSEP=':'
+    DIRSEP='/'
+    PATHSEP=':'
+    LN=ln
+    LN_S='ln -s'
+    ZIP="zip -r -9"
+
     AC_SUBST(program_prefix)
     AC_SUBST(program_suffix)
     AC_SUBST(ZIP)
     AC_SUBST(LN)
     AC_SUBST(LN_S)
-    AC_SUBST(INSTALL)
     AC_DEFINE_UNQUOTED(DIRSEP, ['${DIRSEP}'])
     AC_DEFINE_UNQUOTED(PATHSEP, ['${PATHSEP}'])
     AC_SUBST(DIRSEP)
@@ -645,63 +941,6 @@ AC_DEFUN(STEPMAKE_INIT, [
 ])
 
     
-AC_DEFUN(STEPMAKE_KPATHSEA, [
-       
-    AC_ARG_WITH(kpathsea-include,
-       [  --with-kpathsea-include=DIR
-                         location of the kpathsea include dir],[
-           if test "$withval" = "yes" -o "$withval" = "no"; then
-               AC_MSG_WARN(Usage: --with-kpathsea-include=includedir)
-           else
-               CPPFLAGS="$CPPFLAGS -I${withval}"
-           fi
-           ])
-    
-    AC_ARG_WITH(kpathsea-lib,
-       [  --with-kpathsea-lib=DIR location of the kpathsea lib dir],[
-           if test "$withval" = "yes" -o "$withval" = "no"; then
-               AC_MSG_WARN(Usage: --with-kpathsea-lib=libdir)
-           else
-               LDFLAGS="$LDFLAGS -L${withval}"
-           fi
-           ])
-    
-    kpathsea_b=yes
-    #FIXME --with-xxx is meant for specifying a PATH too,
-    # so this should read: --enable-kpathsea,
-    # or --with-kpathsea-include=PATH --with-kpathsea-lib=PATH
-    AC_ARG_WITH(kpathsea,
-    [  --with-kpathsea         use kpathsea lib.  Default: on],
-    [kpathsea_b=$with_kpathsea])
-
-    if test "$kpathsea_b" != "no"; then        
-       AC_CHECK_HEADERS([kpathsea/kpathsea.h])
-       AC_CHECK_LIB(kpathsea, kpse_find_file)
-       AC_CHECK_FUNCS(kpse_find_file,,kpathsea_b=no)
-       if test "$kpathsea_b" = "no"; then
-           warn='kpathsea (libkpathsea-dev or kpathsea-devel package)
-   Else, please specify the location of your kpathsea using
-   --with-kpathsea-include and --with-kpathsea-lib options.  You should
-   install kpathsea; see INSTALL.txt.  Rerun ./configure
-   --without-kpathsea only if kpathsea is not available for your
-   platform.'
-           STEPMAKE_ADD_ENTRY(REQUIRED, $warn)
-       fi
-    fi
-    AC_MSG_CHECKING(whether to use kpathsea)
-    if test "$kpathsea_b" != no; then
-        AC_MSG_RESULT(yes)
-       KPATHSEA=1
-    else
-        AC_MSG_RESULT(no)
-       KPATHSEA=0
-    fi
-
-    AC_SUBST(KPATHSEA)
-    AC_DEFINE_UNQUOTED(KPATHSEA, $KPATHSEA)
-])
-
-
 AC_DEFUN(STEPMAKE_LIB, [
     STEPMAKE_PROGS(AR, ar, $1)
     AC_PROG_RANLIB
@@ -732,13 +971,14 @@ AC_DEFUN(STEPMAKE_LOCALE, [
 
     # with/enable ??
     AC_ARG_WITH(localedir,
-    [  --with-localedir=LOCALE use LOCALE as locale dir.  Default:
-                            PREFIX/share/locale ],
+    [AS_HELP_STRING([--with-localedir=DIR],
+                    [location of locales.  Default: PREFIX/share/locale])],
     localedir=$with_localedir,
     localedir='${prefix}/share/locale')
 
     AC_ARG_WITH(lang,
-    [  --with-lang=LANG        use LANG as language to emit messages],
+    [AS_HELP_STRING([--with-lang=LANG],
+                    [use LANG as language to emit messages])],
     language=$with_lang,
     language=English)
 
@@ -764,31 +1004,9 @@ AC_DEFUN(STEPMAKE_LOCALE, [
 
 AC_DEFUN(STEPMAKE_MAKEINFO, [
     STEPMAKE_PROGS(MAKEINFO, makeinfo, $1)
-    if test "$MAKEINFO" = "makeinfo"; then
-       AC_MSG_CHECKING(whether makeinfo can split html by @node)
-       mkdir -p out
-       makeinfo --html --output=out/split <<EOF
-\input texinfo
-\input texinfo @c -*-texinfo-*-
-@setfilename split.info
-@settitle split.info
-@bye
-EOF
-       if test -d out/split; then
-           SPLITTING_MAKEINFO=yes
-           AC_MSG_RESULT(yes)
-           rm -rf out/split
-       else
-           AC_MSG_RESULT(no)
-           STEPMAKE_WARN(your html documentation will be one large file)
-           rm -rf out/split
-       fi
-    fi
-    AC_SUBST(SPLITTING_MAKEINFO)
 ])
 
 
-
 AC_DEFUN(STEPMAKE_MAN, [
     STEPMAKE_PROGS(GROFF, groff ditroff, $1)
     AC_SUBST(GROFF)
@@ -810,7 +1028,7 @@ AC_DEFUN(STEPMAKE_PATH_PROG, [
     AC_CHECK_PROGS($1, $2, no)
     STEPMAKE_OPTIONAL_REQUIRED($1, $2, $3)
     if test $? -eq 0; then
-       AC_PATH_PROG($1, $2)
+       AC_PATH_PROGS($1, $2)
        if test -n "$4"; then
            STEPMAKE_CHECK_VERSION($1, $3, $4)
        fi
@@ -835,58 +1053,157 @@ AC_DEFUN(STEPMAKE_PERL, [
 ])
 
 
+# Check for python, between minimum ($2) and maximum version ($3).
+# If missing, add entry to missing-list ($1, one of 'OPTIONAL', 'REQUIRED')
+AC_DEFUN(STEPMAKE_PYTHON, [
+    AC_MSG_CHECKING([for python])
+    python="python"
+    found="no"
+    for r in $PYTHON python python3 python3.3 python3.2 python3.1 python3.0 python2 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0; do
+       exe=`STEPMAKE_GET_EXECUTABLE($r)`
+       if ! $exe -V > /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
+           python=["$r >= $2 (installed: $ver)"]
+           continue
+       else
+           if test -n "$3" && test "$num" -ge "$sup"; then
+               python=["$r < $3 (installed: $ver)"]
+               continue
+           else
+               python=$r
+               found=$r
+               break
+           fi
+       fi
+    done
+    AC_MSG_RESULT([$found])
+    if test "$found" != "no"; then
+       AC_MSG_CHECKING([$python version])
+       AC_MSG_RESULT([$ver])
+       PYTHON=$found
+    else
+       STEPMAKE_ADD_ENTRY($1, $python)
+    fi
+    AC_PATH_PROG(PYTHON, $PYTHON)
+    AC_SUBST(PYTHON)
+])
+
+# Check for python-config, between minimum ($2) and maximum version ($3).
+# If missing, add entry to missing-list ($1, one of 'OPTIONAL', 'REQUIRED')
 AC_DEFUN(STEPMAKE_PYTHON_DEVEL, [
-    AC_CHECK_HEADERS([python2.2/Python.h python2.1/Python.h python2.0/Python.h python2/Python.h python/Python.h python1.5/Python.h Python.h],[PYTHON_HEADER=yes])
+    AC_ARG_WITH(python-include,
+       [AS_HELP_STRING([--with-python-include=DIR],
+                       [location of the python include dir])],[
+       if test "$withval" = "yes" -o "$withval" = "no"; then
+           AC_MSG_WARN(Usage: --with-python-include=includedir)
+       else
+           PYTHON_CFLAGS="-I${withval}"
+       fi
+    ])
+    
+    AC_ARG_WITH(python-lib,
+       [AS_HELP_STRING([--with-python-lib=NAME],
+                       [name of the python lib])],[
+       if test "$withval" = "yes" -o "$withval" = "no"; then
+           AC_MSG_WARN(Usage: --with-python-lib=name)
+       else
+           LDFLAGS="$LDFLAGS -l${withval}"
+       fi
+    ])
+
+    STEPMAKE_PYTHON($1, $2, $3)
+    AC_CHECK_PROGS(PYTHON_CONFIG, `basename $PYTHON`-config, no)
+
+    if test -z "$PYTHON_CFLAGS" -a "$PYTHON_CONFIG" != "no"; then
+        # Clean out junk: http://bugs.python.org/issue3290
+       # Python headers may need some -f* flags, leave them in.
+       # We want the sed commands to look like 's/-[WDOm][[:alnum:][:punct:]][[:alnum:][:punct:]]*//g' and 's/-arch [^[:space:]]*//g', but automake eats brackets.
+        #PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags | sed -e 's/-[[WDOm]][[[:alnum:][:punct:]]][[[:alnum:][:punct:]]]*//g' | sed -e 's/-arch @<:@^@<:@:space:@:>@@:>@*//g'`
+        # The above sed BRE matches parts of legal options, stipping down part of that option, resulting in invalid gcc arguments. Gentoo Bug #415793
+        # For instance, '-floop-stip-mime' becomes '-floop-strip', and '-fvect-cost-model' becomes '-fvect-cost'.
+        # Tentative fix to require a non alphanumeric character before the initial hyphen of the BRE or the hyphen being the first character in the string.
+        PYTHON_CFLAGS=`$PYTHON_CONFIG --cflags | sed -e 's/\(^\|[[^[:alnum:]]]\)-[[WDOm]][[[:alnum:][:punct:]]][[[:alnum:][:punct:]]]*//g' | sed -e 's/-arch @<:@^@<:@:space:@:>@@:>@*//g'`
+       PYTHON_LDFLAGS=`$PYTHON_CONFIG --ldflags`
+    fi
+    
+    if test -z "$PYTHON_CFLAGS" -a "$cross_compiling" = "no"; then
+       changequote(<<, >>)#dnl
+       # alternatively, for python >= 2.0
+       # 'import sys, distutils.sysconfig; sys.stdout.write (distutils.sysconfig.get_python_inc ())'
+       PYTHON_INCLUDE=`$PYTHON -c 'import sys; sys.stdout.write ("%s/include/python%s" % (sys.prefix, sys.version[:3]))'`
+       PYTHON_CFLAGS="-I$PYTHON_INCLUDE"
+       changequote([, ])#dnl
+    fi
+    
     if test -z "$PYTHON_HEADER"; then
-       warn='python.h (python-devel, python-dev or libpython-dev package)'
+       CPPFLAGS="$PYTHON_CFLAGS $CPPFLAGS"
+       AC_CHECK_HEADERS([Python.h],[PYTHON_HEADER=yes])
+    fi
+    
+    if test -z "$PYTHON_HEADER"; then
+       warn="Python.h (python-devel, python-dev or libpython-dev package)"
        STEPMAKE_ADD_ENTRY($1, $warn)
     fi
+    AC_SUBST(PYTHON_CFLAGS)
+    AC_SUBST(PYTHON_LDFLAGS)
+])
+
+
+
+AC_DEFUN(STEPMAKE_STL_DATA_METHOD, [
+    AC_CACHE_CHECK([for stl.data () method],
+       [stepmake_cv_stl_data_method],
+       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+#include <vector>
+using namespace std;
+vector <int> v;
+void *p = v.data ();
+]])],
+           [stepmake_cv_stl_data_method=yes],
+           [stepmake_cv_stl_data_method=no]))
+    if test $stepmake_cv_stl_data_method = yes; then
+       AC_DEFINE(HAVE_STL_DATA_METHOD, 1, [define if stl classes have data () method])
+    fi
 ])
 
 
 AC_DEFUN(STEPMAKE_TEXMF_DIRS, [
-    AC_ARG_ENABLE(tfm-path,
-    [  --enable-tfm-path=PATH  set path of tex directories where tfm files live,
-                            esp.: cmr10.tfm.  Default: use kpsewhich],
-    [tfm_path=$enableval],
-    [tfm_path=auto] )
-
-    # ugh
-    STEPMAKE_PROGS(KPSEWHICH, kpsewhich, OPTIONAL)
-    AC_MSG_CHECKING(for tfm path)
-
-    TFM_FONTS="cmr msam"
-
-    if test "x$tfm_path" = xauto ; then
-       if test "x$KPSEWHICH" != "xno" ; then
-           for i in $TFM_FONTS; do
-               dir=`$KPSEWHICH tfm ${i}10.tfm`
-               TFM_PATH="$TFM_PATH `dirname $dir`"
-           done
-       else
-           STEPMAKE_WARN(Please specify where cmr10.tfm lives:
-    ./configure --enable-tfm-path=/usr/local/TeX/lib/tex/fonts)
-       fi
+    STEPMAKE_PROGS(KPSEWHICH, kpsewhich, $1)
+
+    AC_MSG_CHECKING(for metapost required files)
+    if test "$MFPLAIN_MP" = ""; then
+        MFPLAIN_MP=`kpsewhich -format=mp mfplain`
+    fi
+    if test "$MFPLAIN_MP" = ""; then
+        AC_MSG_RESULT(no)
+        STEPMAKE_ADD_ENTRY($1,['metapost CTAN package (texlive-metapost)'])
     else
-         TFM_PATH=$tfm_path
+        AC_MSG_RESULT(yes)
     fi
-
-    TFM_PATH=`echo $TFM_PATH | tr ':' ' '`
-    AC_MSG_RESULT($TFM_PATH)
-    AC_SUBST(TFM_PATH)
 ])
 
-
 AC_DEFUN(STEPMAKE_TEXMF, [
-    # urg, never know what names these teTeX guys will think up
-
-    STEPMAKE_PROGS(METAFONT, mf mfont, $1)
-    STEPMAKE_PROGS(INIMETAFONT, inimf inimfont, $1)
+    STEPMAKE_PROGS(METAFONT, mf-nowin mf mfw mfont, $1)
+    STEPMAKE_PROGS(METAPOST, mpost, $1)
+    if test "$METAPOST" != ""; then
+       ver=`STEPMAKE_GET_VERSION($METAPOST)`
+       num=`STEPMAKE_NUMERIC_VERSION($ver)`
+       # Avoid buggy metapost versions: 1.600 <= x < 1.803
+       if test "$num" -ge "1600000" -a "$num" -lt "1803000"; then
+            STEPMAKE_ADD_ENTRY($1, ["mpost (due to a bug in metapost, versions 1.600 <= x < 1.803 are not supported; installed: $ver)"])
+       fi
+    fi
 
     AC_MSG_CHECKING(for working metafont mode)
     modelist='ljfour lj4 lj3 lj2 ljet laserjet'
     for MFMODE in $modelist; do
-       $METAFONT "\mode:=$MFMODE; mode_setup; end." > /dev/null 2>&1
+       $METAFONT -progname=mf "\mode:=$MFMODE; mode_setup; end." > /dev/null 2>&1
        if test -f mfput.tfm; then
            break;
        fi
@@ -905,3 +1222,209 @@ AC_DEFUN(STEPMAKE_WARN, [
 ])
 
 
+dnl PKG_CHECK_MODULES(GSTUFF, gtk+-2.0 >= 1.3 glib = 1.3.4, action-if, action-not)
+dnl defines GSTUFF_LIBS, GSTUFF_CFLAGS, see pkg-config man page
+dnl also defines GSTUFF_PKG_ERRORS on error
+AC_DEFUN(PKG_CHECK_MODULES, [
+  succeeded=no
+
+  if test -z "$PKG_CONFIG"; then
+    AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+  fi
+
+  if test "$PKG_CONFIG" = "no" ; then
+     echo "*** The pkg-config script could not be found. Make sure it is"
+     echo "*** in your path, or set the PKG_CONFIG environment variable"
+     echo "*** to the full path to pkg-config."
+     echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+  else
+     PKG_CONFIG_MIN_VERSION=0.9.0
+     if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+        AC_MSG_CHECKING(for $2)
+
+        if $PKG_CONFIG --exists "$2" ; then
+            AC_MSG_RESULT(yes)
+            succeeded=yes
+
+            AC_MSG_CHECKING($1_CFLAGS)
+            $1_CFLAGS=`$PKG_CONFIG --cflags "$2"`
+            AC_MSG_RESULT($$1_CFLAGS)
+
+            AC_MSG_CHECKING($1_LIBS)
+            $1_LIBS=`$PKG_CONFIG --libs "$2"`
+            AC_MSG_RESULT($$1_LIBS)
+        else
+            $1_CFLAGS=""
+            $1_LIBS=""
+            ## If we have a custom action on failure, don't print errors, but 
+            ## do set a variable so people can do so.
+            $1_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+            ifelse([$4], ,echo $$1_PKG_ERRORS,)
+        fi
+
+        AC_SUBST($1_CFLAGS)
+        AC_SUBST($1_LIBS)
+     fi
+  fi
+
+  if test $succeeded = yes; then
+     ifelse([$3], , :, [$3])
+  else
+     ifelse([$4], , AC_MSG_ERROR([Library requirements ($2) not met; consider adjusting the PKG_CONFIG_PATH environment variable if your libraries are in a nonstandard prefix so pkg-config can find them.]), [$4])
+  fi
+])
+
+AC_DEFUN(STEPMAKE_FREETYPE2, [
+    PKG_CHECK_MODULES(FREETYPE2, $1 >= $3, have_freetype2=yes, true)
+    if test "$have_freetype2" = yes; then
+       AC_DEFINE(HAVE_FREETYPE2)
+        save_CPPFLAGS="$CPPFLAGS"
+        save_LIBS="$LIBS"
+       CPPFLAGS="$FREETYPE2_CFLAGS $CPPFLAGS"
+       LIBS="$FREETYPE2_LIBS $LIBS"
+       AC_SUBST(FREETYPE2_CFLAGS)
+       AC_SUBST(FREETYPE2_LIBS)
+       CPPFLAGS="$save_CPPFLAGS"
+       LIBS="$save_LIBS"
+    else
+       # UGR
+       #r="lib$1-dev or $1-devel"
+       r="libfreetype6-dev or freetype?-devel"
+       ver="`pkg-config --modversion $1`"
+       STEPMAKE_ADD_ENTRY($2, ["$r >= $3 (installed: $ver)"])
+    fi
+])
+
+AC_DEFUN(STEPMAKE_PANGO, [
+    PKG_CHECK_MODULES(PANGO, $1 >= $3, have_pango16=yes, true)
+    if test "$have_pango16" = yes ; then
+       AC_DEFINE(HAVE_PANGO16)
+       # Do not pollute user-CPPFLAGS with configure-CPPFLAGS
+        save_CPPFLAGS="$CPPFLAGS"
+        save_LIBS="$LIBS"
+       CPPFLAGS="$PANGO_CFLAGS $CPPFLAGS"
+       LIBS="$PANGO_LIBS $LIBS"
+       AC_CHECK_HEADERS([pango/pangofc-fontmap.h])
+       AC_CHECK_FUNCS([pango_fc_font_map_add_decoder_find_func])
+       AC_SUBST(PANGO_CFLAGS)
+       AC_SUBST(PANGO_LIBS)
+       CPPFLAGS="$save_CPPFLAGS"
+       LIBS="$save_LIBS"
+    else
+       # UGR
+       #r="lib$1-dev or $1-devel"
+       r="libpango1.0-dev or pango1.0-devel"
+       ver="`pkg-config --modversion $1`"
+       STEPMAKE_ADD_ENTRY($2, ["$r >= $3 (installed: $ver)"])
+    fi
+])
+
+AC_DEFUN(STEPMAKE_PANGO_FT2, [
+    PKG_CHECK_MODULES(PANGO_FT2, $1 >= $3, have_pangoft2=yes, true)
+    if test "$have_pangoft2" = yes ; then
+       AC_DEFINE(HAVE_PANGO16)
+       AC_DEFINE(HAVE_PANGO_FT2)
+       # Do not pollute user-CPPFLAGS with configure-CPPFLAGS
+        save_CPPFLAGS="$CPPFLAGS"
+        save_LIBS="$LIBS"
+       CPPFLAGS="$CPPFLAGS $PANGO_FT2_CFLAGS"
+       LIBS="$PANGO_FT2_LIBS $LIBS"
+       AC_CHECK_HEADERS([pango/pangoft2.h])
+       AC_CHECK_FUNCS([pango_ft2_font_map_create_context])
+       AC_SUBST(PANGO_FT2_CFLAGS)
+       AC_SUBST(PANGO_FT2_LIBS)
+       CPPFLAGS="$save_CPPFLAGS"
+       LIBS="$save_LIBS"
+    else
+       # UGR
+       #r="lib$1-dev or $1-devel"e
+       r="libpango1.0-dev or pango?-devel"
+       ver="`pkg-config --modversion $1`"
+       STEPMAKE_ADD_ENTRY($2, ["$r >= $3 (installed: $ver)"])
+    fi
+])
+
+AC_DEFUN(STEPMAKE_PANGO_FT2_WITH_OTF_FEATURE, [
+        PKG_CHECK_MODULES(PANGO_FT2, $1 >= $3,
+                         have_pangoft2_with_otf_feature=yes, true)
+    if test "$have_pangoft2_with_otf_feature" = yes ; then
+       AC_DEFINE(HAVE_PANGO16)
+       AC_DEFINE(HAVE_PANGO_FT2)
+       AC_DEFINE(HAVE_PANGO_FT2_WITH_OTF_FEATURE)
+       # Do not pollute user-CPPFLAGS with configure-CPPFLAGS
+        save_CPPFLAGS="$CPPFLAGS"
+        save_LIBS="$LIBS"
+       CPPFLAGS="$CPPFLAGS $PANGO_FT2_CFLAGS"
+       LIBS="$PANGO_FT2_LIBS $LIBS"
+       AC_CHECK_HEADERS([pango/pangoft2.h])
+       AC_CHECK_FUNCS([pango_ft2_font_map_create_context])
+       AC_SUBST(PANGO_FT2_CFLAGS)
+       AC_SUBST(PANGO_FT2_LIBS)
+       CPPFLAGS="$save_CPPFLAGS"
+       LIBS="$save_LIBS"
+    else
+       # UGR
+       #r="lib$1-dev or $1-devel"e
+       r="libpango1.0-dev or pango?-devel"
+       ver="`pkg-config --modversion $1`"
+       STEPMAKE_ADD_ENTRY($2, ["$r >= $3 (It is required if you'd like "])
+       STEPMAKE_ADD_ENTRY($2, ["to use OpenType font feature. "])
+       STEPMAKE_ADD_ENTRY($2, ["installed: $ver)"])
+    fi
+])
+
+AC_DEFUN(STEPMAKE_FONTCONFIG, [
+    PKG_CHECK_MODULES(FONTCONFIG, $1 >= $3, have_fontconfig=yes, true)
+    if test "$have_fontconfig" = yes ; then
+       AC_DEFINE(HAVE_FONTCONFIG)
+       # Do not pollute user-CPPFLAGS with configure-CPPFLAGS
+        save_CPPFLAGS="$CPPFLAGS"
+        save_LIBS="$LIBS"
+       CPPFLAGS="$FONTCONFIG_CFLAGS $CPPFLAGS"
+       LIBS="$FONTCONFIG_LIBS $LIBS"
+       AC_SUBST(FONTCONFIG_CFLAGS)
+       AC_SUBST(FONTCONFIG_LIBS)
+       CPPFLAGS="$save_CPPFLAGS"
+       LIBS="$save_LIBS"
+    else
+       r="lib$1-dev or $1-devel"
+       ver="`pkg-config --modversion $1`"
+       STEPMAKE_ADD_ENTRY($2, ["$r >= $3 (installed: $ver)"])
+    fi
+])
+
+AC_DEFUN(STEPMAKE_WINDOWS, [
+    AC_CYGWIN
+    AC_MINGW32
+
+    if test "$CYGWIN" = "yes"; then
+       LN_S='cp -r' # Cygwin symbolic links do not work for native apps.
+       program_suffix=.exe
+       INSTALL="\$(SHELL) \$(stepdir)/../bin/install-dot-exe.sh -c"
+    elif test "$MINGW32" = "yes"; then
+       LN='cp -r'
+       LN_S='cp -r'
+       program_suffix=.exe
+       INSTALL="\$(SHELL) \$(stepdir)/../bin/install-dot-exe.sh -c"
+       PATHSEP=';'
+    fi
+
+    AC_SUBST(LN)
+    AC_SUBST(LN_S)
+    AC_DEFINE_UNQUOTED(DIRSEP, ['${DIRSEP}'])
+    AC_DEFINE_UNQUOTED(PATHSEP, ['${PATHSEP}'])
+    AC_SUBST(DIRSEP)
+    AC_SUBST(PATHSEP)
+    AC_SUBST(program_suffix)
+
+    AC_MSG_CHECKING([for some flavor of Windows])
+    if test "$CYGWIN$MINGW32" = "nono"; then
+        PLATFORM_WINDOWS=no
+    else
+        PLATFORM_WINDOWS=yes
+    fi
+    AC_MSG_RESULT([$PLATFORM_WINDOWS])
+    AC_SUBST(PLATFORM_WINDOWS)
+    STEPMAKE_PROGS(WINDRES, $target-windres windres, x)
+    AC_SUBST(WINDRES)
+])