diff --git a/guile-config/Makefile.am b/guile-config/Makefile.am index 19c7a6fbf..5007c700b 100644 --- a/guile-config/Makefile.am +++ b/guile-config/Makefile.am @@ -22,7 +22,7 @@ bin_SCRIPTS=guile-config CLEANFILES=guile-config -EXTRA_DIST=guile-config.in guile.m4 +EXTRA_DIST=guile-config.in guile.m4 qthreads.m4 ## FIXME: in the future there will be direct automake support for ## doing this. When that happens, switch over. diff --git a/guile-config/qthreads.m4 b/guile-config/qthreads.m4 new file mode 100644 index 000000000..585892c01 --- /dev/null +++ b/guile-config/qthreads.m4 @@ -0,0 +1,156 @@ +dnl Autoconf macros for configuring the QuickThreads package +dnl Jim Blandy --- July 1998 +dnl +dnl Copyright (C) 1998, 1999 Free Software Foundation, Inc. +dnl +dnl This file is part of GUILE. +dnl +dnl GUILE is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as +dnl published by the Free Software Foundation; either version 2, or +dnl (at your option) any later version. +dnl +dnl GUILE is distributed in the hope that it will be useful, but +dnl WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public +dnl License along with GUILE; see the file COPYING. If not, write +dnl to the Free Software Foundation, Inc., 59 Temple Place, Suite +dnl 330, Boston, MA 02111-1307 USA + + + +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, qtmds_s, qtmdc_c, qtdmdb_s --- the names of the machine- +dnl dependent source files. +dnl qthread_asflags --- flags to pass to the compiler when processing +dnl assembly-language files. +dnl +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_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 All of the above variables will be substituted into Makefiles in +dnl the usual autoconf fashion. +dnl +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 +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, qtmds_s 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) + + changequote(,)dnl We use [ and ] in a regexp in the case + + THREAD_PACKAGE=QT + qthread_asflags='' + 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= + case "$host" in + *-*-netbsd* ) + ## NetBSD needs to be told to pass the assembly code through + ## the C preprocessor. Other GCC installations seem to do + ## this by default, but NetBSD's doesn't. We could get the + ## same effect by giving the file a name ending with .S + ## instead of .s, but I don't see how to tell automake to do + ## that. + qthread_asflags='-x assembler-with-cpp' + ;; + esac + ;; + 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_LIBS_LOCAL="../qt/libqthreads.la" + THREAD_LIBS_INSTALLED="-lqthreads" + else + AC_MSG_RESULT(none; disabled) + fi + + AC_SUBST(QTHREAD_LTLIBS) + AC_SUBST(qtmd_h) + AC_SUBST(qtmds_s) + AC_SUBST(qtmdc_c) + AC_SUBST(qtdmdb_s) + AC_SUBST(qthread_asflags) + AC_SUBST(THREAD_PACKAGE) + AC_SUBST(THREAD_LIBS_LOCAL) + AC_SUBST(THREAD_LIBS_INSTALLED) +])