[project @ 1999-02-08 11:16:17 by sof]
[ghc-hetmet.git] / aclocal.m4
1 dnl $Id: aclocal.m4,v 1.38 1999/02/08 11:16:17 sof 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.
138 dnl
139 AC_DEFUN(FPTOOLS_HAPPY,
140 [AC_PATH_PROG(HappyCmd,happy)
141 AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
142 [if test x"$HappyCmd" != x; then
143    fptools_cv_happy_version="`$HappyCmd -v |
144 changequote(, )dnl
145                           grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
146 changequote([, ])dnl
147 else
148    fptools_cv_happy_version="";
149 fi;
150 if expr "$fptools_cv_happy_version" "<" 1.4 > /dev/null 2>&1; then
151    echo
152    echo "Happy version 1.4 or later is required to compile GHC."
153    exit 1;
154 fi;
155 ])
156 HappyVersion=$ac_cv_happy_version;
157 AC_SUBST(HappyVersion)
158 ])
159
160 dnl
161 dnl What's the best way of doing context diffs?
162 dnl
163 dnl (NB: NeXTStep thinks diff'ing a file against itself is "trouble")
164 dnl
165 AC_DEFUN(FPTOOLS_PROG_DIFF,
166 [AC_CACHE_CHECK([for ok way to do context diffs], fptools_cv_context_diffs,
167 [echo foo > conftest1
168 echo foo > conftest2
169 if diff -C 1 conftest1 conftest2 > /dev/null 2>&1 ; then
170     fptools_cv_context_diffs='diff -C 1'
171 else
172     if diff -c1 conftest1 conftest2 > /dev/null 2>&1 ; then
173         fptools_cv_context_diffs='diff -c1'
174     else
175         echo "Can't figure out how to do context diffs."
176         echo "Neither \`diff -C 1' nor \`diff -c1' works."
177         exit 1
178     fi
179 fi
180 rm -f conftest1 conftest2
181 ])
182 ContextDiffCmd=$fptools_cv_context_diffs
183 AC_SUBST(ContextDiffCmd)
184 ])
185
186 dnl
187 dnl Finding the Right Yacc
188 dnl
189 AC_DEFUN(FPTOOLS_PROG_YACCY,
190 [AC_PROG_YACC
191 if test "$YACC" = "yacc"; then
192    AC_CACHE_CHECK([if it is an OK yacc], ac_cv_prog_yacc,
193    [AC_CHECK_PROG(WhatCmd, what, what, :)
194     $WhatCmd $YACC > conftest.out
195     if egrep 'y1\.c 1\..*SMI' conftest.out >/dev/null 2>&1; then
196         echo "I don't trust your $YaccCmd; it looks like an old Sun yacc"
197         if test -f /usr/lang/yacc; then
198            echo "I'm going to use /usr/lang/yacc instead"
199            ac_cv_prog_yacc=/usr/lang/yacc
200         else
201            echo "I'm assuming the worst...no parser generator at all"
202            ac_cv_prog_yacc=:
203         fi
204     elif egrep 'y1\.c.*Revision: 4\.2\.6\.3.*DEC' conftest.out >/dev/null 2>&1; then
205         echo "I don't trust your $YaccCmd; it looks like a lame DEC yacc"
206         echo "I'm assuming the worst...no parser generator at all"
207         ac_cv_prog_yacc=:
208     else
209         ac_cv_prog_yacc=$YACC
210     fi
211     rm -fr conftest*
212 ])
213 else
214     ac_cv_prog_yacc=$YACC
215 fi
216 YaccCmd=$ac_cv_prog_yacc
217 AC_SUBST(YaccCmd)
218 ])
219
220 dnl *** Checking for ar and its arguments + whether we need ranlib.
221 dnl
222 dnl ArCmd and RANLIB are AC_SUBST'ed
223 dnl 
224 AC_DEFUN(FPTOOLS_PROG_AR_AND_RANLIB,
225 [AC_PATH_PROG(ArCmd,ar)
226 if test -z "$ArCmd"; then
227     echo "You don't seem to have ar in your PATH...I have no idea how to make a library"
228     exit 1;
229 fi
230 if $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then
231     ArCmd="$ArCmd clqs"
232     NeedRanLib=''
233 elif $ArCmd cqs conftest.a >/dev/null 2>/dev/null; then
234     ArCmd="$ArCmd cqs"
235     NeedRanLib=''
236 elif $ArCmd clq conftest.a >/dev/null 2>/dev/null; then
237     ArCmd="$ArCmd clq"
238     NeedRanLib='YES'
239 elif $ArCmd cq conftest.a >/dev/null 2>/dev/null; then
240     ArCmd="$ArCmd cq"
241     NeedRanLib='YES'
242 elif $ArCmd cq conftest.a 2>&1 | grep 'no archive members specified' >/dev/null 2>/dev/null; then
243     ArCmd="$ArCmd cq"
244     NeedRanLib='YES'
245 else
246     echo "I can't figure out how to use your $ArCmd"
247     exit 1
248 fi
249 rm -rf conftest*
250 test -n "$ArCmd" && test -n "$verbose" && echo "        setting ArCmd to $ArCmd"
251 AC_SUBST(ArCmd)
252 if test -z "$NeedRanLib"; then
253     RANLIB=':'
254     test -n "$verbose" && echo "        setting RANLIB to $RANLIB"
255     AC_SUBST(RANLIB)
256 else
257     AC_PROG_RANLIB
258 fi
259 ])
260
261 dnl
262 dnl AC_SHEBANG_PERL - can we she-bang perl?
263 dnl
264 AC_DEFUN(FPTOOLS_SHEBANG_PERL,
265 [AC_CACHE_CHECK([if your perl works in shell scripts], fptools_cv_shebang_perl,
266 [echo "#!$PerlCmd"'
267 exit $1;
268 ' > conftest
269 chmod u+x conftest
270 (SHELL=/bin/sh; export SHELL; ./conftest 69 > /dev/null)
271 if test $? -ne 69; then
272    fptools_cv_shebang_perl=yes
273 else
274    fptools_cv_shebang_perl=no
275 fi
276 rm -f conftest
277 ])])
278
279 dnl
280 dnl Extra testing of the result AC_PROG_CC, testing the gcc version no.
281 dnl *Must* be called after AC_PROG_CC
282 dnl
283 AC_DEFUN(FPTOOLS_HAVE_GCC,
284 [AC_CACHE_CHECK([whether you have an ok gcc], fptools_cv_have_gcc,
285 [if test -z "$GCC"; then
286     echo ''
287     echo "You would be better off with gcc"
288     echo "Perhaps it is already installed, but not in your PATH?"
289     fptools_cv_have_gcc='no'
290 else
291 changequote(, )dnl
292     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' `"
293 changequote([, ])dnl
294     if test `eval $cmd_string 2>/dev/null` != "1"; then
295         echo ''
296         echo "I'm not sure if your version of gcc will work,"
297         echo "but it's worth a shot, eh?"
298     fi
299     fptools_cv_have_gcc='yes'
300 fi
301 ])
302 HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
303 AC_SUBST(HaveGcc)
304 ])
305
306 dnl
307 dnl FPTOOLS_PROG_GNUCPP gathers the path to the cpp that the
308 dnl gcc driver calls upon.
309 dnl
310 dnl Substitutes: GNUCPP and RAWCPP (latter is 'GNUCPP -traditional')
311 dnl
312 AC_DEFUN(FPTOOLS_PROG_GNUCPP,
313 [AC_CACHE_CHECK([how to invoke GNU cpp directly], fptools_cv_gnu_cpp,
314 [if test "$HaveGcc" = "YES"; then
315         echo > conftest.c
316         gcc -v -E conftest.c >/dev/null 2>conftest.out
317         # \x5c = backslash
318         echo 'tr/\x5c/\//; /(\S+\/)cpp/ && print "[$]{1}cpp -iprefix [$]1";' > conftest.pl
319         fptools_cv_gnu_cpp="`eval $PerlCmd -n conftest.pl conftest.out`"
320         rm -fr conftest*
321  else
322         # We need to be able to invoke CPP directly, preferably
323         # with input from stdin (mkdependHS and hscpp depend on
324         # this at the moment).
325         # Take a guess at what to use, this probably won't work.
326         echo Warning: GNU cpp not found, using $CPP
327         fptools_cv_gnu_cpp = $CPP
328  fi
329 ])
330 GNUCPP=$fptools_cv_gnu_cpp
331 RAWCPP="$GNUCPP -traditional"
332 AC_SUBST(GNUCPP)
333 AC_SUBST(RAWCPP)
334 ])
335
336 dnl Small feature test for perl version. Assumes PerlCmd
337 dnl contains path to perl binary
338 dnl
339 AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION,
340 [$PerlCmd -v >conftest.out 2>&1
341 if grep "version 4" conftest.out >/dev/null 2>&1; then
342    if grep "Patch level: 35" conftest.out >/dev/null 2>&1; then
343       echo "
344 ************************************************************************
345 Uh-oh...looks like you have Perl 4.035.
346
347 Perl version 4.035 has a bug to do with recursion that will bite if
348 you run the lit2texi script, when making Info files from
349 literate files of various sorts.  Either use perl5, the last version of perl4 
350 (4.036), or an older version (e.g., perl 4.019). Failing that, don't create
351 any Info files :-)
352 ************************************************************************
353 "
354    fi
355 else
356    if grep "version 5" conftest.out >/dev/null 2>&1; then
357       :
358    else
359      echo "I'm not sure if your version of perl will work,"
360      echo "but it's worth a shot, eh?"
361    fi
362 fi
363 rm -fr conftest*
364 ])
365
366 dnl ** figure out the alignment restriction of a type
367 dnl    (required SIZEOF test but AC_CHECK_SIZEOF doesn't call PROVIDE
368 dnl     so we can't call REQUIRE)
369
370 dnl FPTOOLS_CHECK_ALIGNMENT(TYPE)
371 AC_DEFUN(FPTOOLS_CHECK_ALIGNMENT,
372 [changequote(<<, >>)dnl
373 dnl The name to #define.
374 define(<<AC_TYPE_NAME>>, translit(alignment_$1, [a-z *], [A-Z_P]))dnl
375 dnl The cache variable name.
376 define(<<AC_CV_NAME>>, translit(ac_cv_alignment_$1, [ *], [_p]))dnl
377 dnl The name of the corresponding size.
378 define(<<AC_CV_SIZEOF_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
379 changequote([, ])dnl
380 AC_MSG_CHECKING(alignment of $1)
381 AC_CACHE_VAL(AC_CV_NAME,
382 [AC_TRY_RUN([
383 #include <stdio.h>
384 #if HAVE_STDDEF_H
385 #include <stddef.h>
386 #endif
387 #ifndef offsetof
388 #define offsetof(ty,field) ((size_t)((char *)&((ty *)0)->field - (char *)(ty *)0))
389 #endif
390 int
391 main()
392 {
393   FILE *f=fopen("conftestval", "w");
394   if (!f) exit(1);
395   fprintf(f, "%d\n", offsetof(struct { char c; $1 ty;},ty));
396   exit(0);
397 }],
398 AC_CV_NAME=`cat conftestval`,
399 AC_CV_NAME=$AC_CV_SIZEOF_NAME,
400 AC_CV_NAME=$AC_CV_SIZEOF_NAME)])
401 AC_MSG_RESULT($AC_CV_NAME)
402 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
403 AC_PROVIDE($AC_TYPE_NAME)
404 undefine([AC_TYPE_NAME])dnl
405 undefine([AC_CV_NAME])dnl
406 undefine([AC_CV_SIZEOF_NAME])dnl
407 ])
408
409 dnl ** figure out whether C compiler supports 'long long's
410 dnl    (Closely based on Andreas Zeller's macro for testing
411 dnl     for this under C++)
412 dnl
413 dnl    If the C compiler supports `long long' types,
414 dnl    define `HAVE_LONG_LONG'.
415 dnl
416 AC_DEFUN(FPTOOLS_C_LONG_LONG,
417 [
418 AC_REQUIRE([AC_PROG_CC])
419 AC_MSG_CHECKING(whether ${CC} supports long long types)
420 AC_CACHE_VAL(fptools_cv_have_long_long,
421 [
422 AC_LANG_SAVE
423 AC_LANG_C
424 AC_TRY_COMPILE(,[long long a;],
425 fptools_cv_have_long_long=yes,
426 fptools_cv_have_long_long=no)
427 AC_LANG_RESTORE
428 ])
429 AC_MSG_RESULT($fptools_cv_have_long_long)
430 if test "$fptools_cv_have_long_long" = yes; then
431 AC_DEFINE(HAVE_LONG_LONG)
432 fi
433 ])
434
435 dnl *** Can we open files in binary mode? ***
436 dnl 
437 AC_DEFUN(FPTOOLS_O_BINARY,
438 [
439 AC_REQUIRE([AC_PROG_CC])
440 AC_MSG_CHECKING(whether we can open files in binary mode)
441 AC_CACHE_VAL(fptools_cv_have_o_binary,
442 [
443 AC_LANG_SAVE
444 AC_LANG_C
445 AC_TRY_COMPILE(,
446 [#ifdef HAVE_FCNTL_H
447 #include <fcntl.h>
448 #endif
449 int x = O_BINARY;],
450 fptools_cv_have_o_binary=yes,
451 fptools_cv_have_o_binary=no)
452 AC_LANG_RESTORE
453 ])
454 AC_MSG_RESULT($fptools_cv_have_o_binary)
455 if test "$fptools_cv_have_o_binary" = yes; then
456 AC_DEFINE(HAVE_O_BINARY)
457 fi
458 ])
459
460 dnl *** Which one comes first, .text or .data? ***
461 dnl 
462 AC_DEFUN(FPTOOLS_CODE_BEFORE_DATA,
463 [AC_CACHE_CHECK([if code section appears before data], fptools_cv_code_bef_data,
464 [AC_TRY_RUN([
465 int f() { return 1; }
466 int i;
467 int main() { return ((char*)&f > (char*)&i); }
468
469 ],
470 fptools_cv_code_bef_data=yes, fptools_cv_code_bef_data=no,false)])
471 if test "$fptools_cv_code_bef_data" = yes; then
472   AC_DEFINE(CODE_BEFORE_DATA)
473 fi
474 ])
475
476 dnl *** Helper function **
477 dnl 
478 AC_DEFUN(FPTOOLS_IN_SCOPE,AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no))
479
480 dnl *** What's the end-of-text-section marker called? ***
481 dnl
482 AC_DEFUN(FPTOOLS_END_TEXT_SECTION,
483 [AC_MSG_CHECKING([for end of text section marker])
484 not_done=1
485 for i in etext _etext __etext; do
486   FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text)
487   if test "$fptools_end_of_text" = yes; then
488    AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, $i))
489    AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, $i))
490    not_done=0
491    break
492   fi
493 done
494 if test "$not_done" = 1; then
495 FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text);
496 if test "$fptools_end_of_text" = yes; then
497   AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, etext))
498   AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, etext asm("etext")))
499 else
500   AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, dunno_what_it_is)
501   AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, dunno_what_it_is)
502 fi
503 fi
504 AC_MSG_RESULT([$]fptools_cv_end_of_text)
505 ])
506
507 dnl *** What's the end-of-data-section marker called? ***
508 dnl
509 AC_DEFUN(FPTOOLS_END_DATA_SECTION,
510 [AC_MSG_CHECKING([for end of data section marker])
511 not_done=1
512 for i in end _end __end; do
513   FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data)
514   if test "$fptools_end_of_data" = yes; then
515    AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, $i)])
516    AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, $i)])
517    not_done=0
518    break
519   fi
520 done
521 if test "$not_done" = 1; then
522 FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data);
523 if test "$fptools_end_of_data" = yes; then
524   AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, end asm("end"))])
525   AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, end)])
526 else
527   AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, dunno_what_it_is)])
528   AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, dunno_what_it_is)])
529 fi
530 fi
531 AC_MSG_RESULT([$]fptools_cv_end_of_data)
532 ])
533
534
535
536 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
537
538 dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)
539
540 AC_DEFUN(FPTOOLS_TRY_LINK_NOWARN,
541 [
542 ac_save_LIBS="$LIBS"
543 LIBS=[$1];
544 cat > conftest.$ac_ext <<EOF
545 dnl This sometimes fails to find confdefs.h, for some reason.
546 dnl [#]line __oline__ "[$]0"
547 [#]line __oline__ "configure"
548 #include "confdefs.h"
549 [$2]
550 int t() { return 0; }
551 EOF
552 if AC_TRY_EVAL(ac_link); then
553   ifelse([$3], , :, [
554     LIBS="$ac_save_LIBS"
555     rm -rf conftest*
556     $3])
557   ifelse([$4], , , [else
558     LIBS="$ac_save_LIBS"
559     rm -rf conftest*
560     $4
561 ])dnl
562 fi
563 rm -f conftest*
564 ]
565 )
566
567 dnl Loosely based on AC_CHECK_LIB in acgeneral.m4 in autoconf distribution
568
569 dnl FPTOOLS_CHECK_FLAG_NOWARN(NAME, FLAG, CODE, iftrue, iffalse)
570
571 AC_DEFUN(FPTOOLS_CHECK_FLAG_NOWARN,
572 [AC_MSG_CHECKING([for $1])
573  AC_CACHE_VAL(ac_cv_flag_$1,
574    [FPTOOLS_TRY_LINK_NOWARN("$2", [main() { $3; exit(0); } ],
575      eval "ac_cv_flag_$1=yes",
576      eval "ac_cv_flag_$1=no"
577    )]
578  )
579 if eval "test \"`echo '$ac_cv_flag_'$1`\" = yes"; then
580   AC_MSG_RESULT(yes)
581   LIBS="$2 $LIBS"
582   $4
583 else
584   AC_MSG_RESULT(no)
585   $5
586 fi
587 ])
588
589 dnl FPTOOLS_CHECK_LIB_NOWARN(LIBRARY, FUNCTION)
590
591 AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN,
592 [FPTOOLS_CHECK_FLAG_NOWARN([function_$2],[],[extern char $2(); $2();],
593 [changequote(, )dnl
594   ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
595  changequote([, ])dnl
596  AC_DEFINE_UNQUOTED($ac_tr_lib)
597 ],
598 [FPTOOLS_CHECK_FLAG_NOWARN([library_$1],[-l$1],[extern char $2(); $2();],
599 [changequote(, )dnl
600   ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
601  changequote([, ])dnl
602  AC_DEFINE_UNQUOTED($ac_tr_lib)
603 ],
604 []
605 )])]
606 )
607
608 dnl check for prototypes
609 dnl
610 AC_DEFUN(AC_C_PROTOTYPES,
611 [AC_CACHE_CHECK([prototypes], ac_cv_prototypes,
612 [AC_TRY_COMPILE([
613 void foo(int);
614 void foo(i)
615 int i; { 
616 return;
617 }
618 ],
619 [int i;], 
620 ac_cv_prototypes=yes,
621 ac_cv_prototypes=no)])
622 if test "$ac_cv_prototypes" = yes; then
623 AC_DEFINE(HAVE_PROTOTYPES)
624 fi
625 ])
626
627
628 # LocalWords:  fi