[project @ 1999-12-21 13:00:54 by simonmar]
[ghc-hetmet.git] / aclocal.m4
1 dnl $Id: aclocal.m4,v 1.46 1999/12/21 13:00:54 simonmar 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 4" conftest.out >/dev/null 2>&1; then
323    if grep "Patch level: 35" conftest.out >/dev/null 2>&1; then
324       echo "
325 ************************************************************************
326 Uh-oh...looks like you have Perl 4.035.
327
328 Perl version 4.035 has a bug to do with recursion that will bite if
329 you run the lit2texi script, when making Info files from
330 literate files of various sorts.  Either use perl5, the last version of perl4 
331 (4.036), or an older version (e.g., perl 4.019). Failing that, don't create
332 any Info files :-)
333 ************************************************************************
334 "
335    fi
336 else
337    if grep "version 5" conftest.out >/dev/null 2>&1; then
338       :
339    else
340      echo "I'm not sure if your version of perl will work,"
341      echo "but it's worth a shot, eh?"
342    fi
343 fi
344 rm -fr conftest*
345 ])
346
347 dnl ** figure out the alignment restriction of a type
348 dnl    (required SIZEOF test but AC_CHECK_SIZEOF doesn't call PROVIDE
349 dnl     so we can't call REQUIRE)
350
351 dnl FPTOOLS_CHECK_ALIGNMENT(TYPE)
352 AC_DEFUN(FPTOOLS_CHECK_ALIGNMENT,
353 [changequote(<<, >>)dnl
354 dnl The name to #define.
355 define(<<AC_TYPE_NAME>>, translit(alignment_$1, [a-z *], [A-Z_P]))dnl
356 dnl The cache variable name.
357 define(<<AC_CV_NAME>>, translit(ac_cv_alignment_$1, [ *], [_p]))dnl
358 dnl The name of the corresponding size.
359 define(<<AC_CV_SIZEOF_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
360 changequote([, ])dnl
361 AC_MSG_CHECKING(alignment of $1)
362 AC_CACHE_VAL(AC_CV_NAME,
363 [AC_TRY_RUN([
364 #include <stdio.h>
365 #if HAVE_STDDEF_H
366 #include <stddef.h>
367 #endif
368 #ifndef offsetof
369 #define offsetof(ty,field) ((size_t)((char *)&((ty *)0)->field - (char *)(ty *)0))
370 #endif
371 int
372 main()
373 {
374   FILE *f=fopen("conftestval", "w");
375   if (!f) exit(1);
376   fprintf(f, "%d\n", offsetof(struct { char c; $1 ty;},ty));
377   exit(0);
378 }],
379 AC_CV_NAME=`cat conftestval`,
380 AC_CV_NAME=$AC_CV_SIZEOF_NAME,
381 AC_CV_NAME=$AC_CV_SIZEOF_NAME)])
382 AC_MSG_RESULT($AC_CV_NAME)
383 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
384 AC_PROVIDE($AC_TYPE_NAME)
385 undefine([AC_TYPE_NAME])dnl
386 undefine([AC_CV_NAME])dnl
387 undefine([AC_CV_SIZEOF_NAME])dnl
388 ])
389
390 dnl ** figure out whether C compiler supports 'long long's
391 dnl    (Closely based on Andreas Zeller's macro for testing
392 dnl     for this under C++)
393 dnl
394 dnl    If the C compiler supports `long long' types,
395 dnl    define `HAVE_LONG_LONG'.
396 dnl
397 AC_DEFUN(FPTOOLS_C_LONG_LONG,
398 [
399 AC_REQUIRE([AC_PROG_CC])
400 AC_MSG_CHECKING(whether ${CC} supports long long types)
401 AC_CACHE_VAL(fptools_cv_have_long_long,
402 [
403 AC_LANG_SAVE
404 AC_LANG_C
405 AC_TRY_COMPILE(,[long long a;],
406 fptools_cv_have_long_long=yes,
407 fptools_cv_have_long_long=no)
408 AC_LANG_RESTORE
409 ])
410 AC_MSG_RESULT($fptools_cv_have_long_long)
411 if test "$fptools_cv_have_long_long" = yes; then
412 AC_DEFINE(HAVE_LONG_LONG)
413 fi
414 ])
415
416 dnl *** Can we open files in binary mode? ***
417 dnl 
418 AC_DEFUN(FPTOOLS_O_BINARY,
419 [
420 AC_REQUIRE([AC_PROG_CC])
421 AC_MSG_CHECKING(whether we can open files in binary mode)
422 AC_CACHE_VAL(fptools_cv_have_o_binary,
423 [
424 AC_LANG_SAVE
425 AC_LANG_C
426 AC_TRY_COMPILE(,
427 [#ifdef HAVE_FCNTL_H
428 #include <fcntl.h>
429 #endif
430 int x = O_BINARY;],
431 fptools_cv_have_o_binary=yes,
432 fptools_cv_have_o_binary=no)
433 AC_LANG_RESTORE
434 ])
435 AC_MSG_RESULT($fptools_cv_have_o_binary)
436 if test "$fptools_cv_have_o_binary" = yes; then
437 AC_DEFINE(HAVE_O_BINARY)
438 fi
439 ])
440
441 dnl *** Which one comes first, .text or .data? ***
442 dnl 
443 AC_DEFUN(FPTOOLS_CODE_BEFORE_DATA,
444 [AC_CACHE_CHECK([if code section appears before data], fptools_cv_code_bef_data,
445 [AC_TRY_RUN([
446 int f() { return 1; }
447 int i;
448 int main() { return ((char*)&f > (char*)&i); }
449
450 ],
451 fptools_cv_code_bef_data=yes, fptools_cv_code_bef_data=no,false)])
452 if test "$fptools_cv_code_bef_data" = yes; then
453   AC_DEFINE(CODE_BEFORE_DATA)
454 fi
455 ])
456
457 dnl *** Helper function **
458 dnl 
459 AC_DEFUN(FPTOOLS_IN_SCOPE,AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no))
460
461 dnl *** What's the end-of-text-section marker called? ***
462 dnl
463 AC_DEFUN(FPTOOLS_END_TEXT_SECTION,
464 [AC_MSG_CHECKING([for end of text section marker])
465 not_done=1
466 for i in data_start _data_start etext _etext __etext; do
467   FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text)
468   if test "$fptools_end_of_text" = yes; then
469    AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, $i))
470    AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, $i))
471    not_done=0
472    break
473   fi
474 done
475 if test "$not_done" = 1; then
476 FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text);
477 if test "$fptools_end_of_text" = yes; then
478   AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, etext))
479   AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, etext asm("etext")))
480 else
481   AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, dunno_what_it_is)
482   AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, dunno_what_it_is)
483 fi
484 fi
485 AC_MSG_RESULT([$]fptools_cv_end_of_text)
486 ])
487
488 dnl *** What's the end-of-data-section marker called? ***
489 dnl
490 AC_DEFUN(FPTOOLS_END_DATA_SECTION,
491 [AC_MSG_CHECKING([for end of data section marker])
492 not_done=1
493 for i in end _end __end; do
494   FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data)
495   if test "$fptools_end_of_data" = yes; then
496    AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, $i)])
497    AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, $i)])
498    not_done=0
499    break
500   fi
501 done
502 if test "$not_done" = 1; then
503 FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data);
504 if test "$fptools_end_of_data" = yes; then
505   AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, end asm("end"))])
506   AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, end)])
507 else
508   AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, dunno_what_it_is)])
509   AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, dunno_what_it_is)])
510 fi
511 fi
512 AC_MSG_RESULT([$]fptools_cv_end_of_data)
513 ])
514
515
516
517 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
518
519 dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)
520
521 AC_DEFUN(FPTOOLS_TRY_LINK_NOWARN,
522 [
523 ac_save_LIBS="$LIBS"
524 LIBS=[$1];
525 cat > conftest.$ac_ext <<EOF
526 dnl This sometimes fails to find confdefs.h, for some reason.
527 dnl [#]line __oline__ "[$]0"
528 [#]line __oline__ "configure"
529 #include "confdefs.h"
530 [$2]
531 int t() { return 0; }
532 EOF
533 if AC_TRY_EVAL(ac_link); then
534   ifelse([$3], , :, [
535     LIBS="$ac_save_LIBS"
536     rm -rf conftest*
537     $3])
538   ifelse([$4], , , [else
539     LIBS="$ac_save_LIBS"
540     rm -rf conftest*
541     $4
542 ])dnl
543 fi
544 rm -f conftest*
545 ]
546 )
547
548 dnl Loosely based on AC_CHECK_LIB in acgeneral.m4 in autoconf distribution
549
550 dnl FPTOOLS_CHECK_FLAG_NOWARN(NAME, FLAG, CODE, iftrue, iffalse)
551
552 AC_DEFUN(FPTOOLS_CHECK_FLAG_NOWARN,
553 [AC_MSG_CHECKING([for $1])
554  AC_CACHE_VAL(ac_cv_flag_$1,
555    [FPTOOLS_TRY_LINK_NOWARN("$2", [main() { $3; exit(0); } ],
556      eval "ac_cv_flag_$1=yes",
557      eval "ac_cv_flag_$1=no"
558    )]
559  )
560 if eval "test \"`echo '$ac_cv_flag_'$1`\" = yes"; then
561   AC_MSG_RESULT(yes)
562   LIBS="$2 $LIBS"
563   $4
564 else
565   AC_MSG_RESULT(no)
566   $5
567 fi
568 ])
569
570 dnl FPTOOLS_CHECK_LIB_NOWARN(LIBRARY, FUNCTION)
571
572 AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN,
573 [FPTOOLS_CHECK_FLAG_NOWARN([function_$2],[],[extern char $2(); $2();],
574 [changequote(, )dnl
575   ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
576  changequote([, ])dnl
577  AC_DEFINE_UNQUOTED($ac_tr_lib)
578 ],
579 [FPTOOLS_CHECK_FLAG_NOWARN([library_$1],[-l$1],[extern char $2(); $2();],
580 [changequote(, )dnl
581   ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
582  changequote([, ])dnl
583  AC_DEFINE_UNQUOTED($ac_tr_lib)
584 ],
585 []
586 )])]
587 )
588
589 dnl check for prototypes
590 dnl
591 AC_DEFUN(AC_C_PROTOTYPES,
592 [AC_CACHE_CHECK([prototypes], ac_cv_prototypes,
593 [AC_TRY_COMPILE([
594 void foo(int);
595 void foo(i)
596 int i; { 
597 return;
598 }
599 ],
600 [int i;], 
601 ac_cv_prototypes=yes,
602 ac_cv_prototypes=no)])
603 if test "$ac_cv_prototypes" = yes; then
604 AC_DEFINE(HAVE_PROTOTYPES)
605 fi
606 ])
607
608
609 # LocalWords:  fi