[project @ 2000-06-08 20:57:02 by panne]
[ghc-hetmet.git] / aclocal.m4
1 dnl $Id: aclocal.m4,v 1.49 2000/06/08 20:57:02 panne Exp $
2 dnl 
3 dnl Extra autoconf macros for the Glasgow fptools
4 dnl
5 dnl To be a good autoconf citizen, names of local macros have
6 dnl prefixed with FPTOOLS_ to ensure we don't clash
7 dnl with any pre-supplied autoconf ones.
8
9 dnl
10 dnl Is timezone around? (in a header file)
11 dnl 
12 AC_DEFUN(FPTOOLS_HAVE_TIMEZONE,
13 [AC_CACHE_CHECK([timezone], fptools_cv_have_timezone,
14 [AC_TRY_COMPILE([#if TIME_WITH_SYS_TIME
15 # include <sys/time.h>
16 # include <time.h>
17 #else
18 # if HAVE_SYS_TIME_H
19 #  include <sys/time.h>
20 # else
21 #  include <time.h>
22 # endif
23 #endif
24 ], [return timezone;], 
25 fptools_cv_have_timezone=yes, fptools_cv_have_timezone=no)])
26 if test "$fptools_cv_have_timezone" = yes; then
27   AC_DEFINE(HAVE_TIMEZONE)
28 fi
29 ])
30
31 dnl
32 dnl Has timezone the type time_t or long (HP-UX 10.20 apparently
33 dnl has `long'..)
34 dnl 
35 AC_DEFUN(FPTOOLS_TYPE_TIMEZONE,
36 [AC_CACHE_CHECK([type of timezone], fptools_cv_type_timezone,
37 [AC_TRY_COMPILE([#if TIME_WITH_SYS_TIME
38 # include <sys/time.h>
39 # include <time.h>
40 #else
41 # if HAVE_SYS_TIME_H
42 #  include <sys/time.h>
43 # else
44 #  include <time.h>
45 # endif
46 #endif
47
48 extern time_t timezone; 
49 ],
50 [int i;], fptools_cv_type_timezone=time_t, fptools_cv_type_timezone=long)])
51 AC_DEFINE_UNQUOTED(TYPE_TIMEZONE, $fptools_cv_type_timezone)
52 ])
53
54 dnl *** Is altzone available? ***
55 dnl 
56 AC_DEFUN(FPTOOLS_ALTZONE,
57 [AC_CACHE_CHECK([altzone], fptools_cv_altzone,
58 [AC_TRY_LINK([#if TIME_WITH_SYS_TIME
59 # include <sys/time.h>
60 # include <time.h>
61 #else
62 # if HAVE_SYS_TIME_H
63 #  include <sys/time.h>
64 # else
65 #  include <time.h>
66 # endif
67 #endif
68 ], [return altzone;], 
69 fptools_cv_altzone=yes, fptools_cv_altzone=no)])
70 if test "$fptools_cv_altzone" = yes; then
71   AC_DEFINE(HAVE_ALTZONE)
72 fi
73 ])
74
75
76 dnl ** check for leading underscores in symbol names
77 dnl 
78 dnl Test for determining whether symbol names have a leading
79 dnl underscore.
80 dnl 
81 dnl We assume that they _haven't_ if anything goes wrong.
82 dnl
83 dnl Some nlist implementations seem to try to be compatible by ignoring
84 dnl a leading underscore sometimes (eg. FreeBSD).  We therefore have
85 dnl to work around this by checking for *no* leading underscore first.
86 dnl Sigh.  --SDM
87 dnl
88 AC_DEFUN(FPTOOLS_UNDERSCORE,
89 [AC_CHECK_LIB(elf, nlist, LIBS="-lelf $LIBS")dnl
90 AC_CACHE_CHECK([leading underscore in symbol names], fptools_cv_lead_uscore,
91
92 dnl
93 dnl Hack!: nlist() under Digital UNIX insist on there being an _,
94 dnl but symbol table listings shows none. What is going on here?!?
95 dnl
96 dnl Another hack: cygwin doesn't come with nlist.h , so we hardwire
97 dnl the underscoredness of that "platform"
98 changequote(<<, >>)dnl
99 <<
100 case $HostPlatform in
101 alpha-dec-osf*) fptools_cv_lead_uscore='no';;
102 *cygwin32) fptools_cv_lead_uscore='yes';;
103 *mingw32) fptools_cv_lead_uscore='yes';;
104 *) >>
105 changequote([, ])dnl
106 AC_TRY_RUN([#ifdef HAVE_NLIST_H
107 #include <nlist.h>
108 changequote(<<, >>)dnl
109 <<
110 struct nlist xYzzY1[] = {{"xYzzY1", 0},{0}};
111 struct nlist xYzzY2[] = {{"_xYzzY2", 0},{0}};
112 #endif
113
114 main(argc, argv)
115 int argc;
116 char **argv;
117 {
118 #ifdef HAVE_NLIST_H
119     if(nlist(argv[0], xYzzY1) == 0 && xYzzY1[0].n_value != 0)
120         exit(1);
121     if(nlist(argv[0], xYzzY2) == 0 && xYzzY2[0].n_value != 0)
122         exit(0);>>
123 changequote([, ])dnl
124 #endif
125     exit(1);
126 }], fptools_cv_lead_uscore=yes, fptools_cv_lead_uscore=no, fptools_cv_lead_uscore=NO)
127 ;;
128 esac);
129 LeadingUnderscore=`echo $fptools_cv_lead_uscore | sed 'y/yesno/YESNO/'`
130 AC_SUBST(LeadingUnderscore)
131 case $LeadingUnderscore in
132 YES) AC_DEFINE(LEADING_UNDERSCORE);;
133 esac
134 ])
135
136 dnl
137 dnl Check for Happy and version.  If we're building GHC, then we need
138 dnl at least Happy version 1.6.  If there's no installed Happy, we look
139 dnl for a happy source tree and point the build system at that instead.
140 dnl
141 dnl ToDo: when we reset HappyCmd to the source tree, autoconf doesn't
142 dnl seems to insert it in the cache file.  sigh.
143 dnl
144 AC_DEFUN(FPTOOLS_HAPPY,
145 [AC_PATH_PROG(HappyCmd,happy)
146 AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
147 [if test x"$HappyCmd" != x; then
148    fptools_cv_happy_version="`$HappyCmd -v |
149 changequote(, )dnl
150                           grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
151 elif test -d $srcdir/happy; then
152    HappyCmd=$hardtop/happy/src/happy-inplace;
153    fptools_cv_happy_version=`grep '^ProjectVersion[     ]*=' $srcdir/happy/mk/version.mk | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`;
154    echo -n "using happy from the source tree... ";
155 else
156    fptools_cv_happy_version="";
157 fi;
158 changequote([, ])dnl
159 if expr "$fptools_cv_happy_version" "<" 1.6 > /dev/null 2>&1; then
160    if test -d $srcdir/ghc; then
161      echo
162      echo "Happy version 1.6 or later is required to compile GHC."
163      exit 1;
164    fi
165 fi;
166 ])
167 HappyVersion=$fptools_cv_happy_version;
168 AC_SUBST(HappyVersion)
169 ])
170
171 dnl
172 dnl What's the best way of doing context diffs?
173 dnl
174 dnl (NB: NeXTStep thinks diff'ing a file against itself is "trouble")
175 dnl
176 AC_DEFUN(FPTOOLS_PROG_DIFF,
177 [AC_CACHE_CHECK([for ok way to do context diffs], fptools_cv_context_diffs,
178 [echo foo > conftest1
179 echo foo > conftest2
180 if diff -C 1 conftest1 conftest2 > /dev/null 2>&1 ; then
181     fptools_cv_context_diffs='diff -C 1'
182 else
183     if diff -c1 conftest1 conftest2 > /dev/null 2>&1 ; then
184         fptools_cv_context_diffs='diff -c1'
185     else
186         echo "Can't figure out how to do context diffs."
187         echo "Neither \`diff -C 1' nor \`diff -c1' works."
188         exit 1
189     fi
190 fi
191 rm -f conftest1 conftest2
192 ])
193 ContextDiffCmd=$fptools_cv_context_diffs
194 AC_SUBST(ContextDiffCmd)
195 ])
196
197 dnl
198 dnl Finding the Right Yacc
199 dnl
200 AC_DEFUN(FPTOOLS_PROG_YACCY,
201 [AC_PROG_YACC
202 if test "$YACC" = "yacc"; then
203    AC_CACHE_CHECK([if it is an OK yacc], ac_cv_prog_yacc,
204    [AC_CHECK_PROG(WhatCmd, what, what, :)
205     $WhatCmd $YACC > conftest.out
206     if egrep 'y1\.c 1\..*SMI' conftest.out >/dev/null 2>&1; then
207         echo "I don't trust your $YaccCmd; it looks like an old Sun yacc"
208         if test -f /usr/lang/yacc; then
209            echo "I'm going to use /usr/lang/yacc instead"
210            ac_cv_prog_yacc=/usr/lang/yacc
211         else
212            echo "I'm assuming the worst...no parser generator at all"
213            ac_cv_prog_yacc=:
214         fi
215     elif egrep 'y1\.c.*Revision: 4\.2\.6\.3.*DEC' conftest.out >/dev/null 2>&1; then
216         echo "I don't trust your $YaccCmd; it looks like a lame DEC yacc"
217         echo "I'm assuming the worst...no parser generator at all"
218         ac_cv_prog_yacc=:
219     else
220         ac_cv_prog_yacc=$YACC
221     fi
222     rm -fr conftest*
223 ])
224 else
225     ac_cv_prog_yacc=$YACC
226 fi
227 YaccCmd=$ac_cv_prog_yacc
228 AC_SUBST(YaccCmd)
229 ])
230
231 dnl *** Checking for ar and its arguments + whether we need ranlib.
232 dnl
233 dnl ArCmd and RANLIB are AC_SUBST'ed
234 dnl 
235 AC_DEFUN(FPTOOLS_PROG_AR_AND_RANLIB,
236 [AC_PATH_PROG(ArCmd,ar)
237 if test -z "$ArCmd"; then
238     echo "You don't seem to have ar in your PATH...I have no idea how to make a library"
239     exit 1;
240 fi
241 if $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then
242     ArCmd="$ArCmd clqs"
243     NeedRanLib=''
244 elif $ArCmd cqs conftest.a >/dev/null 2>/dev/null; then
245     ArCmd="$ArCmd cqs"
246     NeedRanLib=''
247 elif $ArCmd clq conftest.a >/dev/null 2>/dev/null; then
248     ArCmd="$ArCmd clq"
249     NeedRanLib='YES'
250 elif $ArCmd cq conftest.a >/dev/null 2>/dev/null; then
251     ArCmd="$ArCmd cq"
252     NeedRanLib='YES'
253 elif $ArCmd cq conftest.a 2>&1 | grep 'no archive members specified' >/dev/null 2>/dev/null; then
254     ArCmd="$ArCmd cq"
255     NeedRanLib='YES'
256 else
257     echo "I can't figure out how to use your $ArCmd"
258     exit 1
259 fi
260 rm -rf conftest*
261 test -n "$ArCmd" && test -n "$verbose" && echo "        setting ArCmd to $ArCmd"
262 AC_SUBST(ArCmd)
263 if test -z "$NeedRanLib"; then
264     RANLIB=':'
265     test -n "$verbose" && echo "        setting RANLIB to $RANLIB"
266     AC_SUBST(RANLIB)
267 else
268     AC_PROG_RANLIB
269 fi
270 ])
271
272 dnl
273 dnl AC_SHEBANG_PERL - can we she-bang perl?
274 dnl
275 AC_DEFUN(FPTOOLS_SHEBANG_PERL,
276 [AC_CACHE_CHECK([if your perl works in shell scripts], fptools_cv_shebang_perl,
277 [echo "#!$PerlCmd"'
278 exit $1;
279 ' > conftest
280 chmod u+x conftest
281 (SHELL=/bin/sh; export SHELL; ./conftest 69 > /dev/null)
282 if test $? -ne 69; then
283    fptools_cv_shebang_perl=yes
284 else
285    fptools_cv_shebang_perl=no
286 fi
287 rm -f conftest
288 ])])
289
290 dnl
291 dnl Extra testing of the result AC_PROG_CC, testing the gcc version no.
292 dnl *Must* be called after AC_PROG_CC
293 dnl
294 AC_DEFUN(FPTOOLS_HAVE_GCC,
295 [AC_CACHE_CHECK([whether you have an ok gcc], fptools_cv_have_gcc,
296 [if test -z "$GCC"; then
297     echo ''
298     echo "You would be better off with gcc"
299     echo "Perhaps it is already installed, but not in your PATH?"
300     fptools_cv_have_gcc='no'
301 else
302 changequote(, )dnl
303     cmd_string="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/expr 20 \\\< \1 \\\* 10 + \2/g' `"
304 changequote([, ])dnl
305     if test `eval $cmd_string 2>/dev/null` != "1"; then
306         echo ''
307         echo "I'm not sure if your version of gcc will work,"
308         echo "but it's worth a shot, eh?"
309     fi
310     fptools_cv_have_gcc='yes'
311 fi
312 ])
313 HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
314 AC_SUBST(HaveGcc)
315 ])
316
317 dnl Small feature test for perl version. Assumes PerlCmd
318 dnl contains path to perl binary
319 dnl
320 AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION,
321 [$PerlCmd -v >conftest.out 2>&1
322 if grep "version 5" conftest.out >/dev/null 2>&1; then
323    :
324 else
325    if grep "version 6" conftest.out >/dev/null 2>&1; then
326       :
327    else
328      echo "Your version of perl probably won't work."
329    fi
330 fi
331 rm -fr conftest*
332 ])
333
334 dnl ** figure out the alignment restriction of a type
335 dnl    (required SIZEOF test but AC_CHECK_SIZEOF doesn't call PROVIDE
336 dnl     so we can't call REQUIRE)
337
338 dnl FPTOOLS_CHECK_ALIGNMENT(TYPE)
339 AC_DEFUN(FPTOOLS_CHECK_ALIGNMENT,
340 [changequote(<<, >>)dnl
341 dnl The name to #define.
342 define(<<AC_TYPE_NAME>>, translit(alignment_$1, [a-z *], [A-Z_P]))dnl
343 dnl The cache variable name.
344 define(<<AC_CV_NAME>>, translit(ac_cv_alignment_$1, [ *], [_p]))dnl
345 dnl The name of the corresponding size.
346 define(<<AC_CV_SIZEOF_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
347 changequote([, ])dnl
348 AC_MSG_CHECKING(alignment of $1)
349 AC_CACHE_VAL(AC_CV_NAME,
350 [AC_TRY_RUN([
351 #include <stdio.h>
352 #if HAVE_STDDEF_H
353 #include <stddef.h>
354 #endif
355 #ifndef offsetof
356 #define offsetof(ty,field) ((size_t)((char *)&((ty *)0)->field - (char *)(ty *)0))
357 #endif
358 int
359 main()
360 {
361   FILE *f=fopen("conftestval", "w");
362   if (!f) exit(1);
363   fprintf(f, "%d\n", offsetof(struct { char c; $1 ty;},ty));
364   exit(0);
365 }],
366 AC_CV_NAME=`cat conftestval`,
367 AC_CV_NAME=$AC_CV_SIZEOF_NAME,
368 AC_CV_NAME=$AC_CV_SIZEOF_NAME)])
369 AC_MSG_RESULT($AC_CV_NAME)
370 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
371 AC_PROVIDE($AC_TYPE_NAME)
372 undefine([AC_TYPE_NAME])dnl
373 undefine([AC_CV_NAME])dnl
374 undefine([AC_CV_SIZEOF_NAME])dnl
375 ])
376
377 dnl ** Map an arithmetic C type to a Haskell type.
378 dnl    Based on autconf's AC_CHECK_SIZEOF.
379
380 dnl FPTOOLS_CHECK_HTYPE(TYPE)
381 AC_DEFUN(FPTOOLS_CHECK_HTYPE,
382 [changequote(<<, >>)dnl
383 dnl The name to #define.
384 define(<<AC_TYPE_NAME>>, translit(htype_$1, [a-z *], [A-Z_P]))dnl
385 dnl The cache variable name.
386 define(<<AC_CV_NAME>>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl
387 changequote([, ])dnl
388 AC_MSG_CHECKING(Haskell type for $1)
389 AC_CACHE_VAL(AC_CV_NAME,
390 [AC_TRY_RUN([#include <stdio.h>
391 #include <stddef.h>
392 #ifdef HAVE_SIGNAL_H
393 #include <signal.h>
394 #endif
395 #ifdef HAVE_TIME_H
396 #include <time.h>
397 #endif
398
399 typedef $1 testing;
400
401 main() {
402   FILE *f=fopen("conftestval", "w");
403   if (!f) exit(1);
404   if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {
405     fprintf(f, "%s%d\n",
406            ((testing)(-1) < (testing)0) ? "Int" : "Word",
407            sizeof(testing)*8);
408   } else {
409     fprintf(f,"%s\n",
410            (sizeof(testing) >  sizeof(double)) ? "LDouble" :
411            (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");
412   }
413   fclose(f);
414   exit(0);
415 }], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=NotReallyAType, AC_CV_NAME=NotReallyAType)])dnl
416 AC_MSG_RESULT($AC_CV_NAME)
417 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
418 undefine([AC_TYPE_NAME])dnl
419 undefine([AC_CV_NAME])dnl
420 ])
421
422 dnl ** figure out whether C compiler supports 'long long's
423 dnl    (Closely based on Andreas Zeller's macro for testing
424 dnl     for this under C++)
425 dnl
426 dnl    If the C compiler supports `long long' types,
427 dnl    define `HAVE_LONG_LONG'.
428 dnl
429 AC_DEFUN(FPTOOLS_C_LONG_LONG,
430 [
431 AC_REQUIRE([AC_PROG_CC])
432 AC_MSG_CHECKING(whether ${CC} supports long long types)
433 AC_CACHE_VAL(fptools_cv_have_long_long,
434 [
435 AC_LANG_SAVE
436 AC_LANG_C
437 AC_TRY_COMPILE(,[long long a;],
438 fptools_cv_have_long_long=yes,
439 fptools_cv_have_long_long=no)
440 AC_LANG_RESTORE
441 ])
442 AC_MSG_RESULT($fptools_cv_have_long_long)
443 if test "$fptools_cv_have_long_long" = yes; then
444 AC_DEFINE(HAVE_LONG_LONG)
445 fi
446 ])
447
448 dnl *** Can we open files in binary mode? ***
449 dnl 
450 AC_DEFUN(FPTOOLS_O_BINARY,
451 [
452 AC_REQUIRE([AC_PROG_CC])
453 AC_MSG_CHECKING(whether we can open files in binary mode)
454 AC_CACHE_VAL(fptools_cv_have_o_binary,
455 [
456 AC_LANG_SAVE
457 AC_LANG_C
458 AC_TRY_COMPILE(,
459 [#ifdef HAVE_FCNTL_H
460 #include <fcntl.h>
461 #endif
462 int x = O_BINARY;],
463 fptools_cv_have_o_binary=yes,
464 fptools_cv_have_o_binary=no)
465 AC_LANG_RESTORE
466 ])
467 AC_MSG_RESULT($fptools_cv_have_o_binary)
468 if test "$fptools_cv_have_o_binary" = yes; then
469 AC_DEFINE(HAVE_O_BINARY)
470 fi
471 ])
472
473 dnl *** Which one comes first, .text or .data? ***
474 dnl 
475 AC_DEFUN(FPTOOLS_CODE_BEFORE_DATA,
476 [AC_CACHE_CHECK([if code section appears before data], fptools_cv_code_bef_data,
477 [AC_TRY_RUN([
478 int f() { return 1; }
479 int i;
480 int main() { return ((char*)&f > (char*)&i); }
481
482 ],
483 fptools_cv_code_bef_data=yes, fptools_cv_code_bef_data=no,false)])
484 if test "$fptools_cv_code_bef_data" = yes; then
485   AC_DEFINE(CODE_BEFORE_DATA)
486 fi
487 ])
488
489 dnl *** Helper function **
490 dnl 
491 AC_DEFUN(FPTOOLS_IN_SCOPE,AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no))
492
493 dnl *** What's the end-of-text-section marker called? ***
494 dnl
495 AC_DEFUN(FPTOOLS_END_TEXT_SECTION,
496 [AC_MSG_CHECKING([for end of text section marker])
497 not_done=1
498 for i in data_start _data_start etext _etext __etext; do
499   FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text)
500   if test "$fptools_end_of_text" = yes; then
501    AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, $i))
502    AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, $i))
503    not_done=0
504    break
505   fi
506 done
507 if test "$not_done" = 1; then
508 FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text);
509 if test "$fptools_end_of_text" = yes; then
510   AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, etext))
511   AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, etext asm("etext")))
512 else
513   AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, dunno_what_it_is)
514   AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, dunno_what_it_is)
515 fi
516 fi
517 AC_MSG_RESULT([$]fptools_cv_end_of_text)
518 ])
519
520 dnl *** What's the end-of-data-section marker called? ***
521 dnl
522 AC_DEFUN(FPTOOLS_END_DATA_SECTION,
523 [AC_MSG_CHECKING([for end of data section marker])
524 not_done=1
525 for i in end _end __end; do
526   FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data)
527   if test "$fptools_end_of_data" = yes; then
528    AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, $i)])
529    AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, $i)])
530    not_done=0
531    break
532   fi
533 done
534 if test "$not_done" = 1; then
535 FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data);
536 if test "$fptools_end_of_data" = yes; then
537   AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, end asm("end"))])
538   AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, end)])
539 else
540   AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, dunno_what_it_is)])
541   AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, dunno_what_it_is)])
542 fi
543 fi
544 AC_MSG_RESULT([$]fptools_cv_end_of_data)
545 ])
546
547
548
549 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
550
551 dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)
552
553 AC_DEFUN(FPTOOLS_TRY_LINK_NOWARN,
554 [
555 ac_save_LIBS="$LIBS"
556 LIBS=[$1];
557 cat > conftest.$ac_ext <<EOF
558 dnl This sometimes fails to find confdefs.h, for some reason.
559 dnl [#]line __oline__ "[$]0"
560 [#]line __oline__ "configure"
561 #include "confdefs.h"
562 [$2]
563 int t() { return 0; }
564 EOF
565 if AC_TRY_EVAL(ac_link); then
566   ifelse([$3], , :, [
567     LIBS="$ac_save_LIBS"
568     rm -rf conftest*
569     $3])
570   ifelse([$4], , , [else
571     LIBS="$ac_save_LIBS"
572     rm -rf conftest*
573     $4
574 ])dnl
575 fi
576 rm -f conftest*
577 ]
578 )
579
580 dnl Loosely based on AC_CHECK_LIB in acgeneral.m4 in autoconf distribution
581
582 dnl FPTOOLS_CHECK_FLAG_NOWARN(NAME, FLAG, CODE, iftrue, iffalse)
583
584 AC_DEFUN(FPTOOLS_CHECK_FLAG_NOWARN,
585 [AC_MSG_CHECKING([for $1])
586  AC_CACHE_VAL(ac_cv_flag_$1,
587    [FPTOOLS_TRY_LINK_NOWARN("$2", [main() { $3; exit(0); } ],
588      eval "ac_cv_flag_$1=yes",
589      eval "ac_cv_flag_$1=no"
590    )]
591  )
592 if eval "test \"`echo '$ac_cv_flag_'$1`\" = yes"; then
593   AC_MSG_RESULT(yes)
594   LIBS="$2 $LIBS"
595   $4
596 else
597   AC_MSG_RESULT(no)
598   $5
599 fi
600 ])
601
602 dnl FPTOOLS_CHECK_LIB_NOWARN(LIBRARY, FUNCTION)
603
604 AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN,
605 [FPTOOLS_CHECK_FLAG_NOWARN([function_$2],[],[extern char $2(); $2();],
606 [changequote(, )dnl
607   ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
608  changequote([, ])dnl
609  AC_DEFINE_UNQUOTED($ac_tr_lib)
610 ],
611 [FPTOOLS_CHECK_FLAG_NOWARN([library_$1],[-l$1],[extern char $2(); $2();],
612 [changequote(, )dnl
613   ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
614  changequote([, ])dnl
615  AC_DEFINE_UNQUOTED($ac_tr_lib)
616 ],
617 []
618 )])]
619 )
620
621 dnl check for prototypes
622 dnl
623 AC_DEFUN(AC_C_PROTOTYPES,
624 [AC_CACHE_CHECK([prototypes], ac_cv_prototypes,
625 [AC_TRY_COMPILE([
626 void foo(int);
627 void foo(i)
628 int i; { 
629 return;
630 }
631 ],
632 [int i;], 
633 ac_cv_prototypes=yes,
634 ac_cv_prototypes=no)])
635 if test "$ac_cv_prototypes" = yes; then
636 AC_DEFINE(HAVE_PROTOTYPES)
637 fi
638 ])
639
640 dnl ** Check which CATALOG file we have to use with DocBook SGML.
641 dnl
642 dnl FPTOOLS_DOCBOOK_CATALOG(VARIABLE, JADE, STYLESHEET, CATALOGS-TO-CHECK-FOR)
643 dnl
644 dnl If any of the catalogs given in CATALOGS-TO-CHECK-FOR works on this
645 dnl platform, let VARIABLE refer to this catalog; otherwise, VARIABLE
646 dnl is set to "no".  JADE is the jade executable and STYLESHEET
647 dnl a DocBook style sheet.
648 dnl
649 AC_DEFUN(FPTOOLS_DOCBOOK_CATALOG,
650 [AC_CACHE_CHECK([for DocBook CATALOG], fptools_cv_sgml_catalog,
651 [
652 cat > conftest.sgml << EOF
653 <!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
654 <Article>
655 <ArtHeader>
656 <Title>Test</Title>
657 <Author><OtherName>Test</OtherName></Author>
658 <Address>Test</Address>
659 <PubDate>Test</PubDate>
660 </ArtHeader>
661 <Sect1><Title>Test</Title>
662 <Para>
663 Test.
664 </Para>
665 </Sect1>
666 </Article>
667 EOF
668 fptools_cv_sgml_catalog=no
669 for fptools_catalog in $4; do
670   ac_try="$2 -t rtf -d $3#print -c $fptools_catalog conftest.sgml"
671   if AC_TRY_EVAL(ac_try); then
672     fptools_cv_sgml_catalog=[$]fptools_catalog
673     break
674   fi
675 done
676 ])
677 rm -rf conftest*
678 if test $fptools_cv_sgml_catalog != "no"; then
679   $1=$fptools_cv_sgml_catalog
680 fi
681 ])
682
683
684 # LocalWords:  fi