* socket.c (scm_fill_sockaddr): zero the address structure before
[bpt/guile.git] / qthreads.m4
1 dnl Autoconf macros for configuring the QuickThreads package
2 dnl Jim Blandy <jimb@red-bean.com> --- July 1998
3 dnl
4 dnl Copyright (C) 1998, 1999 Free Software Foundation, Inc.
5 dnl
6 dnl This file is part of GUILE.
7 dnl
8 dnl GUILE is free software; you can redistribute it and/or modify
9 dnl it under the terms of the GNU General Public License as
10 dnl published by the Free Software Foundation; either version 2, or
11 dnl (at your option) any later version.
12 dnl
13 dnl GUILE is distributed in the hope that it will be useful, but
14 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
15 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 dnl GNU General Public License for more details.
17 dnl
18 dnl You should have received a copy of the GNU General Public
19 dnl License along with GUILE; see the file COPYING. If not, write
20 dnl to the Free Software Foundation, Inc., 59 Temple Place, Suite
21 dnl 330, Boston, MA 02111-1307 USA
22
23
24
25 dnl QTHREADS_CONFIGURE configures the QuickThreads package. The QT
26 dnl sources should be in $srcdir/qt. If configuration succeeds, this
27 dnl macro creates the appropriate symlinks in the qt object directory,
28 dnl and sets the following variables, used in building libqthreads.a:
29 dnl QTHREAD_LTLIBS --- set to libqthreads.la if configuration
30 dnl succeeds, or the empty string if configuration fails.
31 dnl qtmd_h, qtmds_s, qtmdc_c, qtdmdb_s --- the names of the machine-
32 dnl dependent source files.
33 dnl qthread_asflags --- flags to pass to the compiler when processing
34 dnl assembly-language files.
35 dnl
36 dnl It also sets the following variables, which describe how clients
37 dnl can link against libqthreads.a:
38 dnl THREAD_PACKAGE --- set to "QT" if configuration succeeds, or
39 dnl the empty string if configuration fails.
40 dnl THREAD_CPPFLAGS --- set to `-I' flags for thread header files
41 dnl THREAD_LIBS_LOCAL --- linker options for use in this source tree
42 dnl THREAD_LIBS_INSTALLED --- linker options for use after this package
43 dnl is installed
44 dnl It would be nice if all thread configuration packages for Guile
45 dnl followed the same conventions.
46 dnl
47 dnl All of the above variables will be substituted into Makefiles in
48 dnl the usual autoconf fashion.
49 dnl
50 dnl We distinguish between THREAD_LIBS_LOCAL and
51 dnl THREAD_LIBS_INSTALLED because the thread library might be in
52 dnl this tree, and be built using libtool. This means that:
53 dnl 1) when building other executables in this tree, one must
54 dnl pass the relative path to the ../libfoo.la file, but
55 dnl 2) once the whole package has been installed, users should
56 dnl link using -lfoo.
57 dnl Normally, we only care about the first case, but since the
58 dnl guile-config script needs to give users all the flags they need
59 dnl to link programs against guile, the GUILE_WITH_THREADS macro
60 dnl needs to supply the second piece of information as well.
61 dnl
62 dnl This whole thing is a little confused about what ought to be
63 dnl done in the top-level configure script, and what ought to be
64 dnl taken care of in the subdirectory. For example, qtmds_s and
65 dnl friends really ought not to be even mentioned in the top-level
66 dnl configure script, but here they are.
67
68 AC_DEFUN([QTHREADS_CONFIGURE],[
69 AC_REQUIRE([AC_PROG_LN_S])
70
71 AC_MSG_CHECKING(QuickThreads configuration)
72 # How can we refer to the qt source directory from within the qt build
73 # directory? For headers, we can rely on the fact that the qt src
74 # directory appears in the #include path.
75 qtsrcdir="`(cd $srcdir; pwd)`/qt"
76
77 changequote(,)dnl We use [ and ] in a regexp in the case
78
79 THREAD_PACKAGE=QT
80 qthread_asflags=''
81 case "$host" in
82 i[3456]86-*-*)
83 port_name=i386
84 qtmd_h=md/i386.h
85 qtmds_s=md/i386.s
86 qtmdc_c=md/null.c
87 qtdmdb_s=
88 case "$host" in
89 *-*-netbsd* )
90 ## NetBSD needs to be told to pass the assembly code through
91 ## the C preprocessor. Other GCC installations seem to do
92 ## this by default, but NetBSD's doesn't. We could get the
93 ## same effect by giving the file a name ending with .S
94 ## instead of .s, but I don't see how to tell automake to do
95 ## that.
96 qthread_asflags='-x assembler-with-cpp'
97 ;;
98 esac
99 ;;
100 mips-sgi-irix[56]*)
101 port_name=irix
102 qtmd_h=md/mips.h
103 qtmds_s=md/mips-irix5.s
104 qtmdc_c=md/null.c
105 qtdmdb_s=md/mips_b.s
106 ;;
107 mips-*-*)
108 port_name=mips
109 qtmd_h=md/mips.h
110 qtmds_s=md/mips.s
111 qtmdc_c=md/null.c
112 qtdmdb_s=md/mips_b.s
113 ;;
114 sparc-*-sunos*)
115 port_name=sparc-sunos
116 qtmd_h=md/sparc.h
117 qtmds_s=md/_sparc.s
118 qtmdc_c=md/null.c
119 qtdmdb_s=md/_sparc_b.s
120 ;;
121 sparc-*-*)
122 port_name=sparc
123 qtmd_h=md/sparc.h
124 qtmds_s=md/sparc.s
125 qtmdc_c=md/null.c
126 qtdmdb_s=md/sparc_b.s
127 ;;
128 alpha*-*-*)
129 port_name=alpha
130 qtmd_h=md/axp.h
131 qtmds_s=md/axp.s
132 qtmdc_c=md/null.c
133 qtdmdb_s=md/axp_b.s
134 ;;
135 *)
136 echo "Unknown configuration; threads package disabled"
137 THREAD_PACKAGE=""
138 ;;
139 esac
140 changequote([, ])
141
142 # Did configuration succeed?
143 if test -n "$THREAD_PACKAGE"; then
144 AC_MSG_RESULT($port_name)
145 QTHREAD_LTLIBS=libqthreads.la
146 THREAD_CPPFLAGS="-I$qtsrcdir -I../qt"
147 THREAD_LIBS_LOCAL="../qt/libqthreads.la"
148 THREAD_LIBS_INSTALLED="-lqthreads"
149 else
150 AC_MSG_RESULT(none; disabled)
151 fi
152
153 AC_SUBST(QTHREAD_LTLIBS)
154 AC_SUBST(qtmd_h)
155 AC_SUBST(qtmds_s)
156 AC_SUBST(qtmdc_c)
157 AC_SUBST(qtdmdb_s)
158 AC_SUBST(qthread_asflags)
159 AC_SUBST(THREAD_PACKAGE)
160 AC_SUBST(THREAD_CPPFLAGS)
161 AC_SUBST(THREAD_LIBS_LOCAL)
162 AC_SUBST(THREAD_LIBS_INSTALLED)
163 ])