On Sat, Sep 27, 2003 at 09:03:10AM +0200, PieterB wrote:
> Do I need to upgrade autoconf, or should I change something?
> Thanks for all your effort! It would be great if the default metakit
> would work with Python out of the box.

No, actually, I think downgrading autoconf would have worked.  There
were some constructs in configure.in which were deprecated and no
longer worked properly, and some macros were in a place where they
didn't make any sense.  In particular, AC_LANG_CXX was doing something
strange - not setting the executable extension, for example.

Try this one:

        <http://web.sabi.net/temp/metakit-2.4.9.2+njr2.tar.gz>

I built with Python support on FreeBSD 5.1 just five minutes ago and
it worked.  So hopefully it will for you too. :)

The changed files are attached.  The autogen.sh change is because
install-sh copying moved into automake; it complains now that you
aren't using automake, but works anyway.

-- 
=Nicholas Riley <[EMAIL PROTECTED]> | <http://www.uiuc.edu/ph/www/njriley>

Attachment: autogen.sh
Description: Bourne shell script

dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.5)
AC_INIT(Metakit, 2.4.9.2)
AC_CONFIG_SRCDIR(../include/mk4.h)
AC_CONFIG_AUX_DIR(scripts)
AC_CONFIG_HEADER(config.h)
AC_LANG(C++)

# Checks for programs.
AC_PROG_CXX
AC_PROG_INSTALL

MK_TARGETS="core"
MK_INSTALL="install-mk"

AC_ARG_WITH(python, AC_HELP_STRING([--with-python=PATH], [build the
  Mk4py extension for Python with headers in `PATH/include/python2.3';
  install the Mk4py modules in `PATH/lib/python2.3/site-packages'.  If
  PATH is of the form `HEADER,LIB', search for header files in HEADER,
  and install Mk4py in LIB.  If you omit the `=PATH' part, use the
  standard includedir and libdir.]),
  [with_python=${withval}], [with_python=no])

AC_MSG_CHECKING([for Python configuration])
case "$with_python" in
  "yes" )
        PY_INCLUDE_DIR="${prefix}/include/python2.3"
        PY_LIB_DIR="${prefix}/lib/python2.3/site-packages"
  ;;
  "no" )
        PY_INCLUDE_DIR="# no Python headers"
  ;;
  *","* )
        PY_INCLUDE_DIR="`echo $with_python | sed -e 's/,.*$//'`"
        PY_LIB_DIR="`echo $with_python | sed -e 's/^.*,//'`"
  ;;
  * )
    PY_INCLUDE_DIR="$with_python/include/python2.3"
    PY_LIB_DIR="$with_python/lib/python2.3/site-packages"
  ;;
esac

if test x"$with_python" = xno; then
  AC_MSG_RESULT(not enabled)
else
  MK_TARGETS="$MK_TARGETS python"
  MK_INSTALL="$MK_INSTALL install-python"
  if test -f "${PY_INCLUDE_DIR}/Python.h" ; then
    MK_TARGETS="$MK_TARGETS python"
    MK_INSTALL="$MK_INSTALL install-python"
    AC_MSG_RESULT($PY_INCLUDE_DIR and $PY_LIB_DIR)
    OLD_CPPFLAGS=$CPPFLAGS
    CPPFLAGS="-I$PY_INCLUDE_DIR $CPPFLAGS"
    dnl Mk4py doesn't include config.h, so include in $CPPFLAGS
    AC_CHECK_HEADER(unicodeobject.h, CPPFLAGS="$OLD_CPPFLAGS 
-DHAVE_UNICODEOBJECT_H=1", CPPFLAGS=$OLD_CPPFLAGS)
  else
    AC_MSG_RESULT(can't find ${PY_INCLUDE_DIR}/Python.h)
  fi
fi

AC_ARG_WITH(tcl, AC_HELP_STRING([--with-tcl=PATH], [build the Mk4tcl
  extension for Tcl with tcl.h in `PATH/tcl.h'; install the Mk4tcl
  package in `PATH/../lib'.  If PATH is of the form `HEADER,LIB',
  search for tcl.h in HEADER, and install Mk4tcl in LIB.  If you omit
  the `=PATH' part, use the standard includedir and libdir.]),
  [with_tcl=${withval}], [with_tcl=no])

AC_MSG_CHECKING([for Tcl headers])
case "$with_tcl" in
  "yes" )
        TCL_INCLUDE_DIR="${prefix}/include"
        TCL_LIB_DIR="${prefix}/lib/tcl8.4"
  ;;
  "no" )
        TCL_INCLUDE_DIR="# no Tcl headers"
  ;;
  *","* )
        TCL_INCLUDE_DIR="`echo $with_tcl | sed -e 's/,.*$//'`"
        TCL_LIB_DIR="`echo $with_tcl | sed -e 's/^.*,//'`"
  ;;
  * )
    TCL_INCLUDE_DIR="$with_tcl"
    TCL_LIB_DIR="$with_tcl/../lib"
  ;;
esac

if test x"$with_tcl" = xno ; then
  AC_MSG_RESULT(not enabled)
else
  MK_TARGETS="$MK_TARGETS tcl"
  MK_INSTALL="$MK_INSTALL install-tcl"
  if test -f "${TCL_INCLUDE_DIR}/tcl.h" ; then
    AC_MSG_RESULT(found ${TCL_INCLUDE_DIR}/tcl.h)
    MK_TARGETS="$MK_TARGETS tcl"
    MK_INSTALL="$MK_INSTALL install-tcl"
    AC_MSG_CHECKING(for Tcl package installation location)
    AC_MSG_RESULT(${TCL_LIB_DIR})
  else
    AC_MSG_ERROR([${TCL_INCLUDE_DIR} directory doesn't contain tcl.h])
  fi
fi

AC_ARG_ENABLE(threads, AC_HELP_STRING([--enable-threads], [build with threads]),
  [threads_ok=$enableval], [threads_ok=no])

AC_MSG_CHECKING([for building with threads])
if test "$threads_ok" = yes; then
  MK_THREADS="-Dq4_MULTI"
  AC_MSG_RESULT(yes)
else
  MK_THREADS=""
  AC_MSG_RESULT([no (default)])
fi

# Libtool support
AC_LIBTOOL_WIN32_DLL
AC_PROG_LIBTOOL

# Checks for libraries.

# Checks for header files.
AC_HEADER_STDC

# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_CHECK_SIZEOF(long,4)
AC_CHECK_TYPES(long long)

# Checks for library functions.
AC_CHECK_FUNCS(mmap memmove bcopy)

# Deal with shared lib differences
SHLIB_SUFFIX=".so"
MODULE_SUFFIX=".so"
STRIP_FLAGS=
LIBTOOL_SHLIB_FLAGS=
LIBTOOL_MODULE_FLAGS=-module

case $build_os in
  darwin*)
    SHLIB_SUFFIX=".dylib"
    # MODULE_SUFFIX remains .so (Darwin doesn't care)
    STRIP_FLAGS=-S
    ;;
  hpux*)
    SHLIB_SUFFIX=".sl"
    MODULE_SUFFIX=".sl"
    if test "X$build_cpu" = "Xia64" ; then
      # libtool insists on .so files for HP-UX/Itanium :(
        SHLIB_SUFFIX=".sl"
        MODULE_SUFFIX=".sl"
    fi
    ;;
  cyg*)
    SHLIB_SUFFIX=".dll"
    MODULE_SUFFIX=".dll"
    ;;
esac

# ---------------------------------------------------------
# Special hackery for hpux machines to allow usage of the
# metakit C++ library from within Tcl (C application).
#
# The special configurations are:
#
# (1)  CXX=aCC, CC=cc, build_os=hpux*, build_cpu=hppa
# (1a) CXX=aCC, CC=cc, build_os=hpux*, build_cpu=hppa2.0w (true 64 bit)
# (2)  CXX=aCC, CC=cc, build_os=hpux*, build_cpu=ia64
#
# [Ad 1]  Link against -lCsup and insert cpprt0_stub.o
# [Ad 1a] Link against -lCsup
# [Ad 2]  Link against -lCsup
#
# Variables to substitute
# = LINK_SPECIAL_FLAGS
# = LINK_SPECIAL_FILES

LINK_SPECIAL_FLAGS=""
LINK_SPECIAL_FILES=""

case $build_os in
  hpux*)
    if test "X$build_cpu" != "Xia64" -a "$threads_ok" = yes; then
       # Handle special link requirements of hpux-parisc in threaded case.
       LINK_SPECIAL_FLAGS="$LINK_SPECIAL_FLAGS -lpthread"
    fi

    if test \
        "`basename $CXX`x" = "aCCx" -a  \
        "Z`basename $CC`" = "Zcc"
    then
        # Native HP compilers

        if test "X$build_cpu" = "Xia64" ; then
            # Itanium: No -lstdc++
            LINK_SPECIAL_FLAGS="$LINK_SPECIAL_FLAGS -lCsup"
            LINK_SPECIAL_FILES=""
        else
            # pa-risc: The exact architecture of the cpu is now important.
            # Actually: The exact nature of the code we generate is important.

            case $CXXFLAGS in
              *DA2.0W*)
                # True 64 bit, no stdc++, no stubs
                LINK_SPECIAL_FLAGS="$LINK_SPECIAL_FLAGS -lCsup"
              ;;
              *)
                # Everything else
                LINK_SPECIAL_FLAGS="$LINK_SPECIAL_FLAGS -lCsup -Wl,cpprt0_stubs.o"
                LINK_SPECIAL_FILES="cpprt0_stubs.o"
                LDFLAGS="${LDFLAGS} -lstdc++"
              ;;
            esac
        fi
    fi
    ;;
  solaris2.*)
    # Tested for solaris-2.8.

    if test "x`basename $CXX`" = "xCC"
    then
        # Native SUN C++ compiler
        # Depending on 32/64 mode choose between runtime libraries

        # Stupid which can insert warnings into the output
        # instad of using stderr. Bah.

        base=`which $CXX 2>/dev/null`    ; # Full path of compiler.
        basea=`echo "$base" | sed -e 's/^Warning: ridiculously long PATH truncated//'`
        baseb=`dirname $basea` ; # Strip name of compiler
        basec=`dirname $baseb` ; # Strip bin directory
        CCRUNDIR="$basec/lib"

        case $CXXFLAGS in
            *xarch=v9*) CCRUNDIR="$CCRUNDIR/v9" ;;
            *)          :                       ;;
        esac

        LDFLAGS="${LDFLAGS} -L${CCRUNDIR} -lCrun"
    else
        # Setup not using CC, use -lstdc++, like for case '*' below.

        LDFLAGS="${LDFLAGS} -lstdc++"
    fi
    ;;
  linux*)
    LDFLAGS="${LDFLAGS} -lstdc++"
    LINK_SPECIAL_FLAGS="-rpath ${libdir}"
    ;;

  *)
    LDFLAGS="${LDFLAGS} -lstdc++"
    ;;
esac

AC_SUBST(LINK_SPECIAL_FLAGS)
AC_SUBST(LINK_SPECIAL_FILES)

# ---------------------------------------------------------


AC_SUBST(MK_TARGETS)
AC_SUBST(MK_INSTALL)
AC_SUBST(MK_THREADS)
AC_SUBST(PY_INCLUDE_DIR)
AC_SUBST(PY_LIB_DIR)
AC_SUBST(TCL_INCLUDE_DIR)
AC_SUBST(TCL_LIB_DIR)
AC_SUBST(EXEEXT)
AC_SUBST(CPPFLAGS)
AC_SUBST(LDFLAGS)
AC_SUBST(SHLIB_SUFFIX)
AC_SUBST(MODULE_SUFFIX)
AC_SUBST(LIBTOOL_SHLIB_FLAGS)
AC_SUBST(LIBTOOL_MODULE_FLAGS)
AC_SUBST(STRIP_FLAGS)

AC_OUTPUT(Makefile)

Reply via email to