X-Git-Url: http://git.hcoop.net/bpt/guile.git/blobdiff_plain/51e6b88353371b484b8e46903364bdc79395931e..81aef0ba59907aa37882bac4b663a3b4922a9cf0:/aclocal.m4 diff --git a/aclocal.m4 b/aclocal.m4 index f417fce8c..e96cd4e63 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,6 +1,6 @@ -dnl aclocal.m4 generated automatically by aclocal 1.2c +dnl aclocal.m4 generated automatically by aclocal 1.3 -dnl Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. +dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc. dnl This Makefile.in is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -115,6 +115,45 @@ ifelse([$4], , , [$4 fi ]) + + +dnl Check checks whether dlsym (if present) requires a leading underscore. +dnl Written by Dan Hagerty for scsh-0.5.0. +AC_DEFUN(GUILE_DLSYM_USCORE, [ + AC_MSG_CHECKING(for underscore before symbols) + AC_CACHE_VAL(guile_cv_uscore,[ + echo "main(){int i=1;} + fnord(){int i=23; int ltuae=42;}" > conftest.c + ${CC} conftest.c > /dev/null + if (nm a.out | grep _fnord) > /dev/null; then + guile_cv_uscore=yes + else + guile_cv_uscore=no + fi]) + AC_MSG_RESULT($guile_cv_uscore) + rm -f conftest.c a.out + + if test $guile_cv_uscore = yes; then + AC_DEFINE(USCORE) + + if test $ac_cv_func_dlopen = yes -o $ac_cv_lib_dl_dlopen = yes ; then + AC_MSG_CHECKING(whether dlsym always adds an underscore for us) + AC_CACHE_VAL(guile_cv_dlsym_adds_uscore,AC_TRY_RUN( [ +#include +#include +fnord() { int i=42;} +main() { void *self, *ptr1, *ptr2; self=dlopen(NULL,RTLD_LAZY); + if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); + if(ptr1 && !ptr2) exit(0); } exit(1); } +], [guile_cv_dlsym_adds_uscore=yes + AC_DEFINE(DLSYM_ADDS_USCORE) ], guile_cv_dlsym_adds_uscore=no, + guile_cv_dlsym_adds_uscore=no)) + + AC_MSG_RESULT($guile_cv_dlsym_adds_uscore) + fi + fi +]) + # Do all the work for Automake. This macro actually does too much -- # some checks are only needed if your package does certain things. # But this isn't really a big deal. @@ -137,8 +176,8 @@ fi ifelse([$3],, AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE") AC_DEFINE_UNQUOTED(VERSION, "$VERSION")) -AM_SANITY_CHECK -AC_ARG_PROGRAM +AC_REQUIRE([AM_SANITY_CHECK]) +AC_REQUIRE([AC_ARG_PROGRAM]) dnl FIXME This is truly gross. missing_dir=`cd $ac_aux_dir && pwd` AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir) @@ -146,7 +185,7 @@ AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir) AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir) -AC_PROG_MAKE_SET]) +AC_REQUIRE([AC_PROG_MAKE_SET])]) # serial 1 @@ -177,6 +216,17 @@ if ( # -L didn't work. set X `ls -t $srcdir/configure conftestfile` fi + if test "[$]*" != "X $srcdir/configure conftestfile" \ + && test "[$]*" != "X conftestfile $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + test "[$]2" = conftestfile ) then @@ -252,66 +302,56 @@ done<<>>dnl>>) changequote([,]))]) -# serial 15 AM_PROG_LIBTOOL +# serial 24 AM_PROG_LIBTOOL AC_DEFUN(AM_PROG_LIBTOOL, -[AC_REQUIRE([AC_CANONICAL_HOST]) -AC_REQUIRE([AC_PROG_RANLIB]) -AC_REQUIRE([AC_PROG_CC]) -AC_REQUIRE([AM_PROG_LD]) -AC_REQUIRE([AM_PROG_NM]) -AC_REQUIRE([AC_PROG_LN_S]) - +[AC_REQUIRE([AM_ENABLE_SHARED])dnl +AC_REQUIRE([AM_ENABLE_STATIC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_RANLIB])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AM_PROG_LD])dnl +AC_REQUIRE([AM_PROG_NM])dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +dnl # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL) +AC_SUBST(LIBTOOL)dnl -dnl Allow the --disable-shared flag to stop us from building shared libs. -AC_ARG_ENABLE(shared, -[ --enable-shared build shared libraries [default=yes]], -[if test "$enableval" = no; then - enable_shared=no -else - enable_shared=yes -fi]) -libtool_shared= -test "$enable_shared" = no && libtool_shared=" --disable-shared" - -dnl Allow the --disable-static flag to stop us from building static libs. -AC_ARG_ENABLE(static, -[ --enable-static build static libraries [default=yes]], -[if test "$enableval" = no; then - enable_static=no -else - enable_static=yes -fi]) -libtool_static= -test "$enable_static" = no && libtool_static=" --disable-static" - -libtool_flags="$libtool_shared$libtool_static" +# Check for any special flags to pass to ltconfig. +libtool_flags= +test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared" +test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static" test "$silent" = yes && libtool_flags="$libtool_flags --silent" test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc" test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld" # Some flags need to be propagated to the compiler or linker for good # libtool support. -[case "$host" in +case "$host" in *-*-irix6*) - ac_save_CFLAGS="$CFLAGS" - # -n32 always needs to be added to the linker when using GCC. - test "$ac_cv_prog_gcc" = yes && CFLAGS="$CFLAGS -n32" - for f in '-32' '-64' '-cckr' '-n32' '-mips1' '-mips2' '-mips3' '-mips4'; do - if echo " $CC $CFLAGS " | egrep -e "[ ]$f[ ]" > /dev/null; then - LD="${LD-ld} $f" - fi - done - CFLAGS="$ac_save_CFLAGS" + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case "`/usr/bin/file conftest.o`" in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. CFLAGS="$CFLAGS -belf" ;; -esac] +esac # Actually configure libtool. ac_aux_dir is where install-sh is found. CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \ @@ -321,6 +361,77 @@ $libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \ || AC_MSG_ERROR([libtool configure failed]) ]) +# AM_ENABLE_SHARED - implement the --enable-shared flag +# Usage: AM_ENABLE_SHARED[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN(AM_ENABLE_SHARED, +[define([AM_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(shared, +changequote(<<, >>)dnl +<< --enable-shared build shared libraries [default=>>AM_ENABLE_SHARED_DEFAULT] +changequote([, ])dnl +[ --enable-shared=PKGS only build shared libraries if the current package + appears as an element in the PKGS list], +[p=${PACKAGE-default} +case "$enableval" in +yes) enable_shared=yes ;; +no) enable_shared=no ;; +*) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_shared=AM_ENABLE_SHARED_DEFAULT)dnl +]) + +# AM_DISABLE_SHARED - set the default shared flag to --disable-shared +AC_DEFUN(AM_DISABLE_SHARED, +[AM_ENABLE_SHARED(no)]) + +# AM_DISABLE_STATIC - set the default static flag to --disable-static +AC_DEFUN(AM_DISABLE_STATIC, +[AM_ENABLE_STATIC(no)]) + +# AM_ENABLE_STATIC - implement the --enable-static flag +# Usage: AM_ENABLE_STATIC[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN(AM_ENABLE_STATIC, +[define([AM_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(static, +changequote(<<, >>)dnl +<< --enable-static build static libraries [default=>>AM_ENABLE_STATIC_DEFAULT] +changequote([, ])dnl +[ --enable-static=PKGS only build shared libraries if the current package + appears as an element in the PKGS list], +[p=${PACKAGE-default} +case "$enableval" in +yes) enable_static=yes ;; +no) enable_static=no ;; +*) + enable_static=no + # Look at the argument we got. We use all the common list separators. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_static=AM_ENABLE_STATIC_DEFAULT)dnl +]) + + # AM_PROG_LD - find the path to the GNU or non-GNU linker AC_DEFUN(AM_PROG_LD, [AC_ARG_WITH(gnu-ld, @@ -334,7 +445,7 @@ if test "$ac_cv_prog_gcc" = yes; then ac_prog=`($CC -print-prog-name=ld) 2>&5` case "$ac_prog" in # Accept absolute paths. - /*) + /* | [A-Za-z]:\\*) test -z "$LD" && LD="$ac_prog" ;; "") @@ -398,18 +509,20 @@ AC_DEFUN(AM_PROG_NM, [AC_MSG_CHECKING([for BSD-compatible nm]) AC_CACHE_VAL(ac_cv_path_NM, [case "$NM" in -/*) +/* | [A-Za-z]:\\*) ac_cv_path_NM="$NM" # Let the user override the test with a path. ;; *) IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:" - for ac_dir in /usr/ucb $PATH /bin; do - test -z "$ac_dir" && dir=. + for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do + test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/nm; then # Check to see if the nm accepts a BSD-compat flag. - if ($ac_dir/nm -B /dev/null 2>&1; exit 0) | grep /dev/null >/dev/null; then + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ac_cv_path_NM="$ac_dir/nm -B" - elif ($ac_dir/nm -p /dev/null 2>&1; exit 0) | grep /dev/null >/dev/null; then + elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then ac_cv_path_NM="$ac_dir/nm -p" else ac_cv_path_NM="$ac_dir/nm" @@ -426,106 +539,129 @@ AC_MSG_RESULT([$NM]) AC_SUBST(NM) ]) -dnl -dnl CY_AC_WITH_THREADS determines which thread library the user intends -dnl to put underneath guile. Pass it the path to find the guile top-level -dnl source directory. Eg CY_AC_WITH_THREADS(../..) for tcl/unix. -dnl +dnl Autoconf macros for configuring the QuickThreads package -AC_DEFUN([CY_AC_WITH_THREADS],[ -AC_CACHE_CHECK("threads package type",cy_cv_threads_package,[ -AC_CACHE_VAL(cy_cv_threads_cflags,[ -AC_CACHE_VAL(cy_cv_threads_libs,[ -use_threads=no; -AC_ARG_WITH(threads,[ --with-threads thread interface], - use_threads=$withval, use_threads=no) -test -n "$use_threads" || use_threads=qt -threads_package=unknown -if test "$use_threads" != no; then -dnl -dnl Test for the qt threads package - used for cooperative threads -dnl This may not necessarily be built yet - so just check for the -dnl header files. -dnl - if test "$use_threads" = yes || test "$use_threads" = qt; then - # Look for qt in source directory. - if test -f $srcdir/qt/qt.c; then - qtsrcdir="`(cd $srcdir; pwd)`/qt" - threads_package=COOP - cy_cv_threads_cflags="-I$qtsrcdir -I../qt" - cy_cv_threads_libs="../qt/libqthreads.a" - fi - else - if test -f $use_threads/qt.c; then - # FIXME seems as though we should try to use an installed qt here. - threads_package=COOP - cy_cv_threads_cflags="-I$use_threads -I../qt" - cy_cv_threads_libs="../qt/libqthreads.a" - fi - fi - if test "$use_threads" = pthreads; then - # Look for pthreads in srcdir. See above to understand why - # we always set threads_package. - if test -f $srcdir/../../pthreads/pthreads/queue.c \ - || test -f $srcdir/../pthreads/pthreads/queue.c; then - threads_package=MIT - cy_cv_threads_cflags="-I$srcdir/../../pthreads/include" - cy_cv_threads_libs="-L../../pthreads/lib -lpthread" - fi - fi - saved_CPP="$CPPFLAGS" - saved_LD="$LDFLAGS" - saved_LIBS="$LIBS" - if test "$threads_package" = unknown; then -dnl -dnl Test for the FSU threads package +dnl QTHREADS_CONFIGURE configures the QuickThreads package. The QT +dnl sources should be in $srcdir/qt. If configuration succeeds, this +dnl macro creates the appropriate symlinks in the qt object directory, +dnl and sets the following variables, used in building libqthreads.a: +dnl QTHREAD_LTLIBS --- set to libqthreads.la if configuration +dnl succeeds, or the empty string if configuration fails. +dnl qtmd_h --- the name of the machine-dependent header file. dnl - CPPFLAGS="-I$use_threads/include" - LDFLAGS="-L$use_threads/lib" - LIBS="-lgthreads -lmalloc" - AC_TRY_LINK([#include ],[ -pthread_equal(NULL,NULL); -], threads_package=FSU) - fi - if test "$threads_package" = unknown; then +dnl It also sets the following variables, which describe how clients +dnl can link against libqthreads.a: +dnl THREAD_PACKAGE --- set to "QT" if configuration succeeds, or +dnl the empty string if configuration fails. +dnl THREAD_CPPFLAGS --- set to `-I' flags for thread header files +dnl THREAD_LIBS_LOCAL --- linker options for use in this source tree +dnl THREAD_LIBS_INSTALLED --- linker options for use after this package +dnl is installed +dnl It would be nice if all thread configuration packages for Guile +dnl followed the same conventions. dnl -dnl Test for the MIT threads package -dnl - LIBS="-lpthread" - AC_TRY_LINK([#include ],[ -pthread_equal(NULL,NULL); -], threads_package=MIT) - fi - if test "$threads_package" = unknown; then +dnl All of the above variables will be substituted into Makefiles in +dnl the usual autoconf fashion. dnl -dnl Test for the PCthreads package +dnl We distinguish between THREAD_LIBS_LOCAL and +dnl THREAD_LIBS_INSTALLED because the thread library might be in +dnl this tree, and be built using libtool. This means that: +dnl 1) when building other executables in this tree, one must +dnl pass the relative path to the ../libfoo.la file, but +dnl 2) once the whole package has been installed, users should +dnl link using -lfoo. +dnl Normally, we only care about the first case, but since the +dnl guile-config script needs to give users all the flags they need +dnl to link programs against guile, the GUILE_WITH_THREADS macro +dnl needs to supply the second piece of information as well. dnl - LIBS="-lpthreads" - AC_TRY_LINK([#include ],[ -pthread_equal(NULL,NULL); -], threads_package=PCthreads) - fi -dnl -dnl Set the appropriate flags! -dnl - cy_cv_threads_cflags="$CPPFLAGS $cy_cv_threads_cflags" - cy_cv_threads_libs="$LDFLAGS $LIBS $cy_cv_threads_libs" - cy_cv_threads_package=$threads_package - CPPFLAGS="$saved_CPP" - LDFLAGS="$saved_LD" - LIBS="$saved_LIBS" - if test "$threads_package" = unknown; then - AC_MSG_ERROR("cannot find thread library installation") +dnl This whole thing is a little confused about what ought to be +dnl done in the top-level configure script, and what ought to be +dnl taken care of in the subdirectory. For example, qtmdc_lo and +dnl friends really ought not to be even mentioned in the top-level +dnl configure script, but here they are. + +AC_DEFUN([QTHREADS_CONFIGURE],[ + AC_REQUIRE([AC_PROG_LN_S]) + + AC_MSG_CHECKING(QuickThreads configuration) + # How can we refer to the qt source directory from within the qt build + # directory? For headers, we can rely on the fact that the qt src + # directory appears in the #include path. + qtsrcdir="`(cd $srcdir; pwd)`/qt" + + changequote(,)dnl We use [ and ] in a regexp in the case + + THREAD_PACKAGE=QT + case "$host" in + i[3456]86-*-*) + port_name=i386 + qtmd_h=md/i386.h + qtmds_s=md/i386.s + qtmdc_c=md/null.c + qtdmdb_s= + ;; + mips-sgi-irix[56]*) + port_name=irix + qtmd_h=md/mips.h + qtmds_s=md/mips-irix5.s + qtmdc_c=md/null.c + qtdmdb_s=md/mips_b.s + ;; + mips-*-*) + port_name=mips + qtmd_h=md/mips.h + qtmds_s=md/mips.s + qtmdc_c=md/null.c + qtdmdb_s=md/mips_b.s + ;; + sparc-*-sunos*) + port_name=sparc-sunos + qtmd_h=md/sparc.h + qtmds_s=md/_sparc.s + qtmdc_c=md/null.c + qtdmdb_s=md/_sparc_b.s + ;; + sparc-*-*) + port_name=sparc + qtmd_h=md/sparc.h + qtmds_s=md/sparc.s + qtmdc_c=md/null.c + qtdmdb_s=md/sparc_b.s + ;; + alpha-*-*) + port_name=alpha + qtmd_h=md/axp.h + qtmds_s=md/axp.s + qtmdc_c=md/null.c + qtdmdb_s=md/axp_b.s + ;; + *) + echo "Unknown configuration; threads package disabled" + THREAD_PACKAGE="" + ;; + esac + changequote([, ]) + + # Did configuration succeed? + if test -n "$THREAD_PACKAGE"; then + AC_MSG_RESULT($port_name) + QTHREAD_LTLIBS=libqthreads.la + THREAD_CPPFLAGS="-I$qtsrcdir -I../qt" + THREAD_LIBS_LOCAL="../qt/libqthreads.la" + THREAD_LIBS_INSTALLED="-lqthreads" + else + AC_MSG_RESULT(none; disabled) fi -fi -]) -]) -], -dnl -dnl Set flags according to what is cached. -dnl -CPPFLAGS="$cy_cv_threads_cflags" -LIBS="$cy_cv_threads_libs" -) + + AC_SUBST(QTHREAD_LTLIBS) + AC_SUBST(qtmd_h) + AC_SUBST(qtmds_s) + AC_SUBST(qtmdc_c) + AC_SUBST(qtdmdb_s) + AC_SUBST(THREAD_PACKAGE) + AC_SUBST(THREAD_CPPFLAGS) + AC_SUBST(THREAD_LIBS_LOCAL) + AC_SUBST(THREAD_LIBS_INSTALLED) ])