Commit | Line | Data |
---|---|---|
3a629497 JB |
1 | dnl On the NeXT, #including <utime.h> doesn't give you a definition for |
2 | dnl struct utime, unless you #define _POSIX_SOURCE. | |
3 | ||
4 | AC_DEFUN(GUILE_STRUCT_UTIMBUF, [ | |
5 | AC_CACHE_CHECK([whether we need POSIX to get struct utimbuf], | |
6 | guile_cv_struct_utimbuf_needs_posix, | |
7 | [AC_TRY_CPP([ | |
8 | #ifdef __EMX__ | |
9 | #include <sys/utime.h> | |
10 | #else | |
11 | #include <utime.h> | |
12 | #endif | |
13 | struct utime blah; | |
14 | ], | |
15 | guile_cv_struct_utimbuf_needs_posix=no, | |
16 | guile_cv_struct_utimbuf_needs_posix=yes)]) | |
17 | if test "$guile_cv_struct_utimbuf_needs_posix" = yes; then | |
18 | AC_DEFINE(UTIMBUF_NEEDS_POSIX) | |
19 | fi]) | |
20 | ||
21 | ||
22 | ||
23 | ||
24 | dnl | |
25 | dnl Apparently, at CMU they have a weird version of libc.h that is | |
26 | dnl installed in /usr/local/include and conflicts with unistd.h. | |
27 | dnl In these situations, we should not #include libc.h. | |
28 | dnl This test arranges to #define LIBC_H_WITH_UNISTD_H iff libc.h is | |
29 | dnl present on the system, and is safe to #include. | |
30 | dnl | |
31 | AC_DEFUN([GUILE_HEADER_LIBC_WITH_UNISTD], | |
32 | [ | |
33 | AC_CHECK_HEADERS(libc.h unistd.h) | |
34 | AC_CACHE_CHECK( | |
35 | "whether libc.h and unistd.h can be included together", | |
36 | guile_cv_header_libc_with_unistd, | |
37 | [ | |
38 | if test "$ac_cv_header_libc_h" = "no"; then | |
39 | guile_cv_header_libc_with_unistd="no" | |
42d0ffc9 | 40 | elif test "$ac_cv_header_unistd_h" = "no"; then |
3a629497 JB |
41 | guile_cv_header_libc_with_unistd="yes" |
42 | else | |
43 | AC_TRY_COMPILE( | |
44 | [ | |
45 | # include <libc.h> | |
46 | # include <unistd.h> | |
47 | ], | |
48 | [], | |
49 | [guile_cv_header_libc_with_unistd=yes], | |
50 | [guile_cv_header_libc_with_unistd=no] | |
51 | ) | |
52 | fi | |
53 | ] | |
54 | ) | |
55 | if test "$guile_cv_header_libc_with_unistd" = yes; then | |
56 | AC_DEFINE(LIBC_H_WITH_UNISTD_H) | |
57 | fi | |
58 | ] | |
59 | ) | |
0b89e78e MD |
60 | |
61 | ||
62 | ||
63 | dnl This is needed when we want to check for the same function repeatedly | |
64 | dnl with other parameters, such as libraries, varying. | |
65 | dnl | |
66 | dnl GUILE_NAMED_CHECK_FUNC(FUNCTION, TESTNAME, | |
67 | dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) | |
68 | AC_DEFUN(GUILE_NAMED_CHECK_FUNC, | |
69 | [AC_MSG_CHECKING([for $1]) | |
70 | AC_CACHE_VAL(ac_cv_func_$1_$2, | |
71 | [AC_TRY_LINK( | |
72 | dnl Don't include <ctype.h> because on OSF/1 3.0 it includes <sys/types.h> | |
73 | dnl which includes <sys/select.h> which contains a prototype for | |
74 | dnl select. Similarly for bzero. | |
75 | [/* System header to define __stub macros and hopefully few prototypes, | |
76 | which can conflict with char $1(); below. */ | |
77 | #include <assert.h> | |
78 | /* Override any gcc2 internal prototype to avoid an error. */ | |
79 | ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus | |
80 | extern "C" | |
81 | #endif | |
82 | ])dnl | |
83 | [/* We use char because int might match the return type of a gcc2 | |
84 | builtin and then its argument prototype would still apply. */ | |
85 | char $1(); | |
86 | ], [ | |
87 | /* The GNU C library defines this for functions which it implements | |
88 | to always fail with ENOSYS. Some functions are actually named | |
89 | something starting with __ and the normal name is an alias. */ | |
90 | #if defined (__stub_$1) || defined (__stub___$1) | |
91 | choke me | |
92 | #else | |
93 | $1(); | |
94 | #endif | |
95 | ], eval "ac_cv_func_$1_$2=yes", eval "ac_cv_func_$1_$2=no")]) | |
96 | if eval "test \"`echo '$ac_cv_func_'$1'_'$2`\" = yes"; then | |
97 | AC_MSG_RESULT(yes) | |
98 | ifelse([$3], , :, [$3]) | |
99 | else | |
100 | AC_MSG_RESULT(no) | |
101 | ifelse([$4], , , [$4 | |
102 | ])dnl | |
103 | fi | |
104 | ]) | |
2a0d7176 TP |
105 | |
106 | ||
107 | ||
108 | dnl Check checks whether dlsym (if present) requires a leading underscore. | |
109 | dnl Written by Dan Hagerty <hag@ai.mit.edu> for scsh-0.5.0. | |
110 | AC_DEFUN(GUILE_DLSYM_USCORE, [ | |
111 | AC_MSG_CHECKING(for underscore before symbols) | |
112 | AC_CACHE_VAL(guile_cv_uscore,[ | |
113 | echo "main(){int i=1;} | |
114 | fnord(){int i=23; int ltuae=42;}" > conftest.c | |
115 | ${CC} conftest.c > /dev/null | |
116 | if (nm a.out | grep _fnord) > /dev/null; then | |
117 | guile_cv_uscore=yes | |
118 | else | |
119 | guile_cv_uscore=no | |
120 | fi]) | |
121 | AC_MSG_RESULT($guile_cv_uscore) | |
122 | rm -f conftest.c a.out | |
123 | ||
124 | if test $guile_cv_uscore = yes; then | |
125 | AC_DEFINE(USCORE) | |
126 | ||
127 | if test $ac_cv_func_dlopen = yes -o $ac_cv_lib_dl_dlopen = yes ; then | |
128 | AC_MSG_CHECKING(whether dlsym always adds an underscore for us) | |
129 | AC_CACHE_VAL(guile_cv_dlsym_adds_uscore,AC_TRY_RUN( [ | |
130 | #include <dlfcn.h> | |
131 | #include <stdio.h> | |
132 | fnord() { int i=42;} | |
133 | main() { void *self, *ptr1, *ptr2; self=dlopen(NULL,RTLD_LAZY); | |
134 | if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord"); | |
135 | if(ptr1 && !ptr2) exit(0); } exit(1); } | |
136 | ], [guile_cv_dlsym_adds_uscore=yes | |
774b7f22 TP |
137 | AC_DEFINE(DLSYM_ADDS_USCORE) ], guile_cv_dlsym_adds_uscore=no, |
138 | guile_cv_dlsym_adds_uscore=no)) | |
2a0d7176 TP |
139 | |
140 | AC_MSG_RESULT($guile_cv_dlsym_adds_uscore) | |
141 | fi | |
142 | fi | |
143 | ]) | |
eb9ef08b MD |
144 | |
145 | dnl QTHREADS_CONFIGURE configures the QuickThreads package. The QT | |
146 | dnl sources should be in $srcdir/qt. If configuration succeeds, this | |
147 | dnl macro creates the appropriate symlinks in the qt object directory, | |
148 | dnl and sets the following variables, used in building libqthreads.a: | |
149 | dnl QTHREAD_LTLIBS --- set to libqthreads.la if configuration | |
150 | dnl succeeds, or the empty string if configuration fails. | |
151 | dnl qtmd_h, qtmds_s, qtmdc_c, qtdmdb_s --- the names of the machine- | |
152 | dnl dependent source files. | |
153 | dnl qthread_asflags --- flags to pass to the compiler when processing | |
154 | dnl assembly-language files. | |
155 | dnl | |
156 | dnl It also sets the following variables, which describe how clients | |
157 | dnl can link against libqthreads.a: | |
158 | dnl THREAD_PACKAGE --- set to "QT" if configuration succeeds, or | |
159 | dnl the empty string if configuration fails. | |
160 | dnl THREAD_CPPFLAGS --- set to `-I' flags for thread header files | |
161 | dnl THREAD_LIBS_LOCAL --- linker options for use in this source tree | |
162 | dnl THREAD_LIBS_INSTALLED --- linker options for use after this package | |
163 | dnl is installed | |
164 | dnl It would be nice if all thread configuration packages for Guile | |
165 | dnl followed the same conventions. | |
166 | dnl | |
167 | dnl All of the above variables will be substituted into Makefiles in | |
168 | dnl the usual autoconf fashion. | |
169 | dnl | |
170 | dnl We distinguish between THREAD_LIBS_LOCAL and | |
171 | dnl THREAD_LIBS_INSTALLED because the thread library might be in | |
172 | dnl this tree, and be built using libtool. This means that: | |
173 | dnl 1) when building other executables in this tree, one must | |
174 | dnl pass the relative path to the ../libfoo.la file, but | |
175 | dnl 2) once the whole package has been installed, users should | |
176 | dnl link using -lfoo. | |
177 | dnl Normally, we only care about the first case, but since the | |
178 | dnl guile-config script needs to give users all the flags they need | |
179 | dnl to link programs against guile, the GUILE_WITH_THREADS macro | |
180 | dnl needs to supply the second piece of information as well. | |
181 | dnl | |
182 | dnl This whole thing is a little confused about what ought to be | |
183 | dnl done in the top-level configure script, and what ought to be | |
184 | dnl taken care of in the subdirectory. For example, qtmds_s and | |
185 | dnl friends really ought not to be even mentioned in the top-level | |
186 | dnl configure script, but here they are. | |
187 | ||
188 | AC_DEFUN([QTHREADS_CONFIGURE],[ | |
189 | AC_REQUIRE([AC_PROG_LN_S]) | |
190 | ||
191 | AC_MSG_CHECKING(QuickThreads configuration) | |
192 | # How can we refer to the qt source directory from within the qt build | |
193 | # directory? For headers, we can rely on the fact that the qt src | |
194 | # directory appears in the #include path. | |
195 | qtsrcdir="`(cd $srcdir; pwd)`/qt" | |
196 | ||
197 | changequote(,)dnl We use [ and ] in a regexp in the case | |
198 | ||
199 | THREAD_PACKAGE=QT | |
200 | qthread_asflags='' | |
201 | case "$host" in | |
202 | i[3456]86-*-*) | |
203 | port_name=i386 | |
204 | qtmd_h=md/i386.h | |
205 | qtmds_s=md/i386.s | |
206 | qtmdc_c=md/null.c | |
207 | qtdmdb_s= | |
208 | case "$host" in | |
209 | *-*-netbsd* ) | |
210 | ## NetBSD needs to be told to pass the assembly code through | |
211 | ## the C preprocessor. Other GCC installations seem to do | |
212 | ## this by default, but NetBSD's doesn't. We could get the | |
213 | ## same effect by giving the file a name ending with .S | |
214 | ## instead of .s, but I don't see how to tell automake to do | |
215 | ## that. | |
216 | qthread_asflags='-x assembler-with-cpp' | |
217 | ;; | |
218 | esac | |
219 | ;; | |
220 | mips-sgi-irix[56]*) | |
221 | port_name=irix | |
222 | qtmd_h=md/mips.h | |
223 | qtmds_s=md/mips-irix5.s | |
224 | qtmdc_c=md/null.c | |
225 | qtdmdb_s=md/mips_b.s | |
226 | ;; | |
227 | mips-*-*) | |
228 | port_name=mips | |
229 | qtmd_h=md/mips.h | |
230 | qtmds_s=md/mips.s | |
231 | qtmdc_c=md/null.c | |
232 | qtdmdb_s=md/mips_b.s | |
233 | ;; | |
234 | sparc-*-sunos*) | |
235 | port_name=sparc-sunos | |
236 | qtmd_h=md/sparc.h | |
237 | qtmds_s=md/_sparc.s | |
238 | qtmdc_c=md/null.c | |
239 | qtdmdb_s=md/_sparc_b.s | |
240 | ;; | |
241 | sparc-*-*) | |
242 | port_name=sparc | |
243 | qtmd_h=md/sparc.h | |
244 | qtmds_s=md/sparc.s | |
245 | qtmdc_c=md/null.c | |
246 | qtdmdb_s=md/sparc_b.s | |
247 | ;; | |
6f9f0fb9 | 248 | alpha*-*-*) |
eb9ef08b MD |
249 | port_name=alpha |
250 | qtmd_h=md/axp.h | |
251 | qtmds_s=md/axp.s | |
252 | qtmdc_c=md/null.c | |
253 | qtdmdb_s=md/axp_b.s | |
254 | ;; | |
255 | *) | |
256 | echo "Unknown configuration; threads package disabled" | |
257 | THREAD_PACKAGE="" | |
258 | ;; | |
259 | esac | |
260 | changequote([, ]) | |
261 | ||
262 | # Did configuration succeed? | |
263 | if test -n "$THREAD_PACKAGE"; then | |
264 | AC_MSG_RESULT($port_name) | |
265 | QTHREAD_LTLIBS=libqthreads.la | |
266 | THREAD_CPPFLAGS="-I$qtsrcdir -I../qt" | |
267 | THREAD_LIBS_LOCAL="../qt/libqthreads.la" | |
268 | THREAD_LIBS_INSTALLED="-lqthreads" | |
269 | else | |
270 | AC_MSG_RESULT(none; disabled) | |
271 | fi | |
272 | ||
273 | AC_SUBST(QTHREAD_LTLIBS) | |
274 | AC_SUBST(qtmd_h) | |
275 | AC_SUBST(qtmds_s) | |
276 | AC_SUBST(qtmdc_c) | |
277 | AC_SUBST(qtdmdb_s) | |
278 | AC_SUBST(qthread_asflags) | |
279 | AC_SUBST(THREAD_PACKAGE) | |
280 | AC_SUBST(THREAD_CPPFLAGS) | |
281 | AC_SUBST(THREAD_LIBS_LOCAL) | |
282 | AC_SUBST(THREAD_LIBS_INSTALLED) | |
283 | ]) |