*** empty log message ***
[bpt/guile.git] / aclocal.m4
index f417fce..e96cd4e 100644 (file)
@@ -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 <hag@ai.mit.edu> 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 <dlfcn.h>
+#include <stdio.h>
+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.h>],[
-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.h>],[
-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.h>],[
-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)
 ])