[project @ 2001-06-30 00:12:52 by sof]
[ghc-hetmet.git] / aclocal.m4
1 dnl $Id: aclocal.m4,v 1.78 2001/06/30 00:12:52 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 *** Does libc contain GNU regex? ***
77 dnl 
78 AC_DEFUN(FPTOOLS_REGEX_IN_LIBC,
79 [AC_CACHE_CHECK([for GNU regex in libc], fptools_cv_have_regex,
80 [AC_TRY_LINK([#if HAVE_UNISTD_H
81 #include <unistd.h>
82 #endif
83 #include <regex.h>
84 ],[ struct re_pattern_buffer patbuf; 
85     re_compile_pattern("",0,&patbuf);
86     re_search_2 (&patbuf, "", 0, "",0, 0,0,0,0); ],
87 fptools_cv_have_regex=yes, fptools_cv_have_regex=no)])
88 if test "$fptools_cv_have_regex" = yes; then
89         HaveRegex=YES
90 else
91         HaveRegex=NO
92 fi
93 AC_SUBST(HaveRegex)
94 ])
95
96
97 dnl ** check for leading underscores in symbol names
98 dnl 
99 dnl Test for determining whether symbol names have a leading
100 dnl underscore.
101 dnl 
102 dnl We assume that they _haven't_ if anything goes wrong.
103 dnl
104 dnl Some nlist implementations seem to try to be compatible by ignoring
105 dnl a leading underscore sometimes (eg. FreeBSD).  We therefore have
106 dnl to work around this by checking for *no* leading underscore first.
107 dnl Sigh.  --SDM
108 dnl
109 AC_DEFUN(FPTOOLS_UNDERSCORE,
110 [AC_CHECK_LIB(elf, nlist, LIBS="-lelf $LIBS")dnl
111 AC_CACHE_CHECK([leading underscore in symbol names], fptools_cv_lead_uscore,
112
113 dnl
114 dnl Hack!: nlist() under Digital UNIX insist on there being an _,
115 dnl but symbol table listings shows none. What is going on here?!?
116 dnl
117 dnl Another hack: cygwin doesn't come with nlist.h , so we hardwire
118 dnl the underscoredness of that "platform"
119 changequote(<<, >>)dnl
120 <<
121 case $HostPlatform in
122 alpha-dec-osf*) fptools_cv_lead_uscore='no';;
123 *cygwin32) fptools_cv_lead_uscore='yes';;
124 *mingw32) fptools_cv_lead_uscore='yes';;
125 *) >>
126 changequote([, ])dnl
127 AC_TRY_RUN([#ifdef HAVE_NLIST_H
128 #include <nlist.h>
129 changequote(<<, >>)dnl
130 <<
131 struct nlist xYzzY1[] = {{"xYzzY1", 0},{0}};
132 struct nlist xYzzY2[] = {{"_xYzzY2", 0},{0}};
133 #endif
134
135 main(argc, argv)
136 int argc;
137 char **argv;
138 {
139 #ifdef HAVE_NLIST_H
140     if(nlist(argv[0], xYzzY1) == 0 && xYzzY1[0].n_value != 0)
141         exit(1);
142     if(nlist(argv[0], xYzzY2) == 0 && xYzzY2[0].n_value != 0)
143         exit(0);>>
144 changequote([, ])dnl
145 #endif
146     exit(1);
147 }], fptools_cv_lead_uscore=yes, fptools_cv_lead_uscore=no, fptools_cv_lead_uscore=NO)
148 ;;
149 esac);
150 LeadingUnderscore=`echo $fptools_cv_lead_uscore | sed 'y/yesno/YESNO/'`
151 AC_SUBST(LeadingUnderscore)
152 case $LeadingUnderscore in
153 YES) AC_DEFINE(LEADING_UNDERSCORE);;
154 esac
155 ])
156
157 dnl
158 dnl FPTOOLS_PROG_CHECK_VERSION(VERSIONSTR1, TEST, VERSIONSTR2,
159 dnl                            ACTION-IF-TRUE [, ACTION-IF-FALSE])
160 dnl
161 dnl compare versions field-wise (separator is '.')
162 dnl TEST is one of {-lt,-le,-eq,-ge,-gt}
163 dnl
164 dnl quite shell-independant and SUSv2 compliant code
165 dnl
166 dnl NOTE: the loop could be unrolled within autoconf, but the
167 dnl       macro code would be a) longer and b) harder to debug... ;)
168 dnl
169 AC_DEFUN(FPTOOLS_PROG_CHECK_VERSION,
170 [if ( IFS=".";
171       a="[$1]";  b="[$3]";
172       while test -n "$a$b"
173       do
174               set -- [$]a;  h1="[$]1";  shift 2>/dev/null;  a="[$]*"
175               set -- [$]b;  h2="[$]1";  shift 2>/dev/null;  b="[$]*"
176               test -n "[$]h1" || h1=0;  test -n "[$]h2" || h2=0
177               test [$]{h1} -eq [$]{h2} || break
178       done
179       test [$]{h1} [$2] [$]{h2}
180     )
181 then ifelse([$4],,[:],[
182   $4])
183 ifelse([$5],,,
184 [else
185   $5])
186 fi
187 ])])dnl
188
189
190 dnl
191 dnl Check for Happy and version.  If we're building GHC, then we need
192 dnl at least Happy version 1.9.  If there's no installed Happy, we look
193 dnl for a happy source tree and point the build system at that instead.
194 dnl
195 AC_DEFUN(FPTOOLS_HAPPY,
196 [
197 if test -d $srcdir/happy; then
198    SrcTreeHappyCmd=$hardtop/happy/src/happy-inplace
199 fi
200 AC_PATH_PROG(HappyCmd,happy,$SrcTreeHappyCmd)
201 AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
202 changequote(, )dnl
203 [if test x"$HappyCmd" = x"$SrcTreeHappyCmd"; then
204    fptools_cv_happy_version=`grep '^ProjectVersion[     ]*=' $srcdir/happy/mk/version.mk | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`;
205 elif test x"$HappyCmd" != x; then
206    fptools_cv_happy_version="`$HappyCmd -v |
207                           grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
208 else
209    fptools_cv_happy_version="";
210 fi;
211 changequote([, ])dnl
212 ])
213 if test -d $srcdir/ghc; then
214   FPTOOLS_PROG_CHECK_VERSION([$fptools_cv_happy_version],-lt,[1.9],
215   [AC_MSG_ERROR([Happy version 1.9 or later is required to compile GHC.])])dnl
216 fi
217 HappyVersion=$fptools_cv_happy_version;
218 AC_SUBST(HappyVersion)
219 ])
220
221 dnl
222 dnl What's the best way of doing context diffs?
223 dnl
224 dnl (NB: NeXTStep thinks diff'ing a file against itself is "trouble")
225 dnl
226 AC_DEFUN(FPTOOLS_PROG_DIFF,
227 [AC_CACHE_CHECK([for ok way to do context diffs], fptools_cv_context_diffs,
228 [echo foo > conftest1
229 echo foo > conftest2
230 if diff -C 1 conftest1 conftest2 > /dev/null 2>&1 ; then
231     fptools_cv_context_diffs='diff -C 1'
232 else
233     if diff -c1 conftest1 conftest2 > /dev/null 2>&1 ; then
234         fptools_cv_context_diffs='diff -c1'
235     else
236         echo "Can't figure out how to do context diffs."
237         echo "Neither \`diff -C 1' nor \`diff -c1' works."
238         exit 1
239     fi
240 fi
241 rm -f conftest1 conftest2
242 ])
243 ContextDiffCmd=$fptools_cv_context_diffs
244 AC_SUBST(ContextDiffCmd)
245 ])
246
247 dnl
248 dnl Finding the Right Yacc
249 dnl
250 AC_DEFUN(FPTOOLS_PROG_YACCY,
251 [AC_PROG_YACC
252 if test "$YACC" = "yacc"; then
253    AC_CACHE_CHECK([if it is an OK yacc], ac_cv_prog_yacc,
254    [AC_CHECK_PROG(WhatCmd, what, what, :)
255     $WhatCmd $YACC > conftest.out
256     if egrep 'y1\.c 1\..*SMI' conftest.out >/dev/null 2>&1; then
257         echo "I don't trust your $YaccCmd; it looks like an old Sun yacc"
258         if test -f /usr/lang/yacc; then
259            echo "I'm going to use /usr/lang/yacc instead"
260            ac_cv_prog_yacc=/usr/lang/yacc
261         else
262            echo "I'm assuming the worst...no parser generator at all"
263            ac_cv_prog_yacc=:
264         fi
265     elif egrep 'y1\.c.*Revision: 4\.2\.6\.3.*DEC' conftest.out >/dev/null 2>&1; then
266         echo "I don't trust your $YaccCmd; it looks like a lame DEC yacc"
267         echo "I'm assuming the worst...no parser generator at all"
268         ac_cv_prog_yacc=:
269     else
270         ac_cv_prog_yacc=$YACC
271     fi
272     rm -fr conftest*
273 ])
274 else
275     ac_cv_prog_yacc=$YACC
276 fi
277 YaccCmd=$ac_cv_prog_yacc
278 AC_SUBST(YaccCmd)
279 ])
280
281 dnl *** Checking for ar and its arguments + whether we need ranlib.
282 dnl
283 dnl ArCmd and RANLIB are AC_SUBST'ed
284 dnl 
285 AC_DEFUN(FPTOOLS_PROG_AR_AND_RANLIB,
286 [AC_PATH_PROG(ArCmd,ar)
287 if test -z "$ArCmd"; then
288     echo "You don't seem to have ar in your PATH...I have no idea how to make a library"
289     exit 1;
290 fi
291 if $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then
292     ArCmd="$ArCmd clqs"
293     NeedRanLib=''
294 elif $ArCmd cqs conftest.a >/dev/null 2>/dev/null; then
295     ArCmd="$ArCmd cqs"
296     NeedRanLib=''
297 elif $ArCmd clq conftest.a >/dev/null 2>/dev/null; then
298     ArCmd="$ArCmd clq"
299     NeedRanLib='YES'
300 elif $ArCmd cq conftest.a >/dev/null 2>/dev/null; then
301     ArCmd="$ArCmd cq"
302     NeedRanLib='YES'
303 elif $ArCmd cq conftest.a 2>&1 | grep 'no archive members specified' >/dev/null 2>/dev/null; then
304     ArCmd="$ArCmd cq"
305     NeedRanLib='YES'
306 else
307     echo "I can't figure out how to use your $ArCmd"
308     exit 1
309 fi
310 rm -rf conftest*
311 test -n "$ArCmd" && test -n "$verbose" && echo "        setting ArCmd to $ArCmd"
312 AC_SUBST(ArCmd)
313 if test -z "$NeedRanLib"; then
314     RANLIB=':'
315     test -n "$verbose" && echo "        setting RANLIB to $RANLIB"
316     AC_SUBST(RANLIB)
317 else
318     AC_PROG_RANLIB
319 fi
320 ])
321
322 dnl
323 dnl AC_SHEBANG_PERL - can we she-bang perl?
324 dnl
325 AC_DEFUN(FPTOOLS_SHEBANG_PERL,
326 [AC_CACHE_CHECK([if your perl works in shell scripts], fptools_cv_shebang_perl,
327 [echo "#!$PerlCmd"'
328 exit $1;
329 ' > conftest
330 chmod u+x conftest
331 (SHELL=/bin/sh; export SHELL; ./conftest 69 > /dev/null)
332 if test $? -ne 69; then
333    fptools_cv_shebang_perl=yes
334 else
335    fptools_cv_shebang_perl=no
336 fi
337 rm -f conftest
338 ])])
339
340 dnl
341 dnl Extra testing of the result AC_PROG_CC, testing the gcc version no.
342 dnl *Must* be called after AC_PROG_CC
343 dnl
344 AC_DEFUN(FPTOOLS_HAVE_GCC,
345 [AC_CACHE_CHECK([whether you have an ok gcc], fptools_cv_have_gcc,
346 [if test -z "$GCC"; then
347     echo ''
348     echo "You would be better off with gcc"
349     echo "Perhaps it is already installed, but not in your PATH?"
350     fptools_cv_have_gcc='no'
351 else
352 changequote(, )dnl
353     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' `"
354 changequote([, ])dnl
355     if test `eval $cmd_string 2>/dev/null` != "1"; then
356         echo ''
357         echo "I'm not sure if your version of gcc will work,"
358         echo "but it's worth a shot, eh?"
359     fi
360     fptools_cv_have_gcc='yes'
361 fi
362 ])
363 HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
364 AC_SUBST(HaveGcc)
365 ])
366
367 dnl Small feature test for perl version. Assumes PerlCmd
368 dnl contains path to perl binary
369 dnl
370 AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION,
371 [$PerlCmd -v >conftest.out 2>&1
372 if grep "version 5" conftest.out >/dev/null 2>&1; then
373    :
374 else
375   if grep "v5.6" conftest.out >/dev/null 2>&1; then
376      :
377   else
378      if grep "version 6" conftest.out >/dev/null 2>&1; then
379         :
380      else
381        echo "Your version of perl probably won't work."
382      fi
383   fi
384 fi
385 rm -fr conftest*
386 ])
387
388 dnl
389 dnl FPTOOLS_GHC_VERSION(version)
390 dnl FPTOOLS_GHC_VERSION(major, minor [, patchlevel])
391 dnl FPTOOLS_GHC_VERSION(version, major, minor, patchlevel)
392 dnl
393 dnl Test for version of installed ghc.  Uses $GHC.
394 dnl [original version pinched from c2hs]
395 dnl
396 AC_DEFUN(FPTOOLS_GHC_VERSION,
397 [define([FPTOOLS_CV_GHC_VERSION], [fptools_cv_ghc_version])dnl
398 AC_CACHE_CHECK([version of ghc], FPTOOLS_CV_GHC_VERSION, [dnl
399 ${WithGhc-ghc} --version > conftestghc 2>&1
400   cat conftestghc >&AC_FD_CC
401 dnl `Useless Use Of cat' award...
402 changequote(<<, >>)dnl
403   FPTOOLS_CV_GHC_VERSION=`cat conftestghc | sed -n -e 's/, patchlevel *\([0-9]\)/.\1/;s/.* version \([0-9][0-9.]*\).*/\1/p'`
404 changequote([, ])dnl
405   rm -fr conftest*
406   if test "[$]FPTOOLS_CV_GHC_VERSION" = ""
407   then
408     FPTOOLS_CV_GHC_VERSION='unknown'
409   fi])
410 changequote(<<, >>)dnl
411 FPTOOLS_CV_GHC_VERSION<<_major>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^\([0-9]\).*/\1/'`
412 FPTOOLS_CV_GHC_VERSION<<_minor>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^[0-9]\.\([0-9]*\).*/\1/'`
413 FPTOOLS_CV_GHC_VERSION<<_pl>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -n -e 's/^[0-9]\.[0-9]*\.\([0-9]*\)/\1/p'`
414 changequote([, ])dnl
415 if test "[$]FPTOOLS_CV_GHC_VERSION[_pl]" = ""
416 then
417   FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor]"
418   FPTOOLS_CV_GHC_VERSION[_pl]="0"
419 else
420   FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor].[$]FPTOOLS_CV_GHC_VERSION[_pl]"
421 fi
422 ifelse($#, [1], [dnl
423 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]"
424 ], $#, [2], [dnl
425 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
426 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
427 ], $#, [3], [dnl
428 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
429 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
430 [$3]="[$]FPTOOLS_CV_GHC_VERSION[_pl]"
431 ], $#, [4], [dnl
432 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]"
433 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
434 [$3]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
435 [$4]="[$]FPTOOLS_CV_GHC_VERSION[_pl]"
436 ], [AC_MSG_ERROR([wrong number of arguments to [$0]])])dnl
437 undefine([FPTOOLS_CV_GHC_VERSION])dnl
438 ])dnl
439
440
441 dnl ** figure out the alignment restriction of a type
442 dnl    (required SIZEOF test but AC_CHECK_SIZEOF doesn't call PROVIDE
443 dnl     so we can't call REQUIRE)
444
445 dnl FPTOOLS_CHECK_ALIGNMENT(TYPE)
446 AC_DEFUN(FPTOOLS_CHECK_ALIGNMENT,
447 [changequote(<<, >>)dnl
448 dnl The name to #define.
449 define(<<AC_TYPE_NAME>>, translit(alignment_$1, [a-z *], [A-Z_P]))dnl
450 dnl The cache variable name.
451 define(<<AC_CV_NAME>>, translit(ac_cv_alignment_$1, [ *], [_p]))dnl
452 dnl The name of the corresponding size.
453 define(<<AC_CV_SIZEOF_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
454 changequote([, ])dnl
455 AC_MSG_CHECKING(alignment of $1)
456 AC_CACHE_VAL(AC_CV_NAME,
457 [AC_TRY_RUN([
458 #include <stdio.h>
459 #if HAVE_STDDEF_H
460 #include <stddef.h>
461 #endif
462 #ifndef offsetof
463 #define offsetof(ty,field) ((size_t)((char *)&((ty *)0)->field - (char *)(ty *)0))
464 #endif
465 int
466 main()
467 {
468   FILE *f=fopen("conftestval", "w");
469   if (!f) exit(1);
470   fprintf(f, "%d", offsetof(struct { char c; $1 ty;},ty));
471   exit(0);
472 }],
473 AC_CV_NAME=`cat conftestval`,
474 AC_CV_NAME=$AC_CV_SIZEOF_NAME,
475 AC_CV_NAME=$AC_CV_SIZEOF_NAME)])
476 AC_MSG_RESULT($AC_CV_NAME)
477 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
478 AC_PROVIDE($AC_TYPE_NAME)
479 undefine([AC_TYPE_NAME])dnl
480 undefine([AC_CV_NAME])dnl
481 undefine([AC_CV_SIZEOF_NAME])dnl
482 ])
483
484 dnl ** Map an arithmetic C type to a Haskell type.
485 dnl    Based on autconf's AC_CHECK_SIZEOF.
486
487 dnl FPTOOLS_CHECK_HTYPE(TYPE [, DEFAULT_VALUE, [, VALUE-FOR-CROSS-COMPILATION])
488 AC_DEFUN(FPTOOLS_CHECK_HTYPE,
489 [changequote(<<, >>)dnl
490 dnl The name to #define.
491 define(<<AC_TYPE_NAME>>, translit(htype_$1, [a-z *], [A-Z_P]))dnl
492 dnl The cache variable name.
493 define(<<AC_CV_NAME>>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl
494 changequote([, ])dnl
495 AC_MSG_CHECKING(Haskell type for $1)
496 AC_CACHE_VAL(AC_CV_NAME,
497 [AC_TRY_RUN([#include <stdio.h>
498 #include <stddef.h>
499 #ifdef HAVE_SIGNAL_H
500 #include <signal.h>
501 #endif
502 #ifdef HAVE_TIME_H
503 #include <time.h>
504 #endif
505 #ifdef HAVE_GL_GL_H
506 #include <GL/gl.h>
507 #endif
508
509 typedef $1 testing;
510
511 main() {
512   FILE *f=fopen("conftestval", "w");
513   if (!f) exit(1);
514   if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {
515     fprintf(f, "%s%d\n",
516            ((testing)(-1) < (testing)0) ? "Int" : "Word",
517            sizeof(testing)*8);
518   } else {
519     fprintf(f,"%s\n",
520            (sizeof(testing) >  sizeof(double)) ? "LDouble" :
521            (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");
522   }
523   fclose(f);
524   exit(0);
525 }], AC_CV_NAME=`cat conftestval`,
526 ifelse([$2], , AC_CV_NAME=NotReallyAType,      AC_CV_NAME=$2),
527 ifelse([$3], , AC_CV_NAME=NotReallyATypeCross, AC_CV_NAME=$3))]) dnl
528 AC_MSG_RESULT($AC_CV_NAME)
529 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
530 undefine([AC_TYPE_NAME])dnl
531 undefine([AC_CV_NAME])dnl
532 ])
533
534 dnl ** figure out whether C compiler supports 'long long's
535 dnl    (Closely based on Andreas Zeller's macro for testing
536 dnl     for this under C++)
537 dnl
538 dnl    If the C compiler supports `long long' types,
539 dnl    define `HAVE_LONG_LONG'.
540 dnl
541 AC_DEFUN(FPTOOLS_C_LONG_LONG,
542 [
543 AC_REQUIRE([AC_PROG_CC])
544 AC_MSG_CHECKING(whether ${CC} supports long long types)
545 AC_CACHE_VAL(fptools_cv_have_long_long,
546 [
547 AC_LANG_SAVE
548 AC_LANG_C
549 AC_TRY_COMPILE(,[long long a;],
550 fptools_cv_have_long_long=yes,
551 fptools_cv_have_long_long=no)
552 AC_LANG_RESTORE
553 ])
554 AC_MSG_RESULT($fptools_cv_have_long_long)
555 if test "$fptools_cv_have_long_long" = yes; then
556 AC_DEFINE(HAVE_LONG_LONG)
557 fi
558 ])
559
560 dnl ** Obtain the value of a C constant.
561 dnl    The value will be `(-1)' if the constant is undefined.
562 dnl
563 dnl    This is set up so that the argument can be a shell variable.
564 dnl
565 AC_DEFUN(FPTOOLS_CHECK_CCONST,
566 [
567 eval "def_name=CCONST_$1"
568 eval "cv_name=ac_cv_cconst_$1"
569 AC_MSG_CHECKING(value of $1)
570 AC_CACHE_VAL($cv_name,
571 [AC_TRY_RUN([#include <stdio.h>
572 #include <errno.h>
573 main()
574 {
575   FILE *f=fopen("conftestval", "w");
576   if (!f) exit(1);
577   fprintf(f, "%d\n", $1);
578   exit(0);
579 }], 
580 eval "$cv_name=`cat conftestval`",
581 eval "$cv_name=-1",
582 ifelse([$2], , , eval "$cv_name=$2"))])dnl
583 eval "fptools_check_cconst_result=`echo '$'{$cv_name}`"
584 AC_MSG_RESULT($fptools_check_cconst_result)
585 AC_DEFINE_UNQUOTED($def_name, $fptools_check_cconst_result)
586 unset fptools_check_cconst_result
587 ])
588
589 dnl ** Invoke AC_CHECK_CCONST on each argument (which have to separate with 
590 dnl    spaces)
591 dnl
592 AC_DEFUN(FPTOOLS_CHECK_CCONSTS,
593 [for ac_const_name in $1
594 do
595 FPTOOLS_CHECK_CCONST($ac_const_name)dnl
596 done
597 ])
598
599
600 dnl *** Can we open files in binary mode? ***
601 dnl 
602 AC_DEFUN(FPTOOLS_O_BINARY,
603 [
604 AC_REQUIRE([AC_PROG_CC])
605 AC_MSG_CHECKING(whether we can open files in binary mode)
606 AC_CACHE_VAL(fptools_cv_have_o_binary,
607 [
608 AC_LANG_SAVE
609 AC_LANG_C
610 AC_TRY_COMPILE(,
611 [#ifdef HAVE_FCNTL_H
612 #include <fcntl.h>
613 #endif
614 int x = O_BINARY;],
615 fptools_cv_have_o_binary=yes,
616 fptools_cv_have_o_binary=no)
617 AC_LANG_RESTORE
618 ])
619 AC_MSG_RESULT($fptools_cv_have_o_binary)
620 if test "$fptools_cv_have_o_binary" = yes; then
621 AC_DEFINE(HAVE_O_BINARY)
622 fi
623 ])
624
625 dnl *** Which one comes first, .text or .data? ***
626 dnl 
627 AC_DEFUN(FPTOOLS_CODE_BEFORE_DATA,
628 [AC_CACHE_CHECK([if code section appears before data], fptools_cv_code_bef_data,
629 [AC_TRY_RUN([
630 int f() { return 1; }
631 int i;
632 int main() { return ((char*)&f > (char*)&i); }
633
634 ],
635 fptools_cv_code_bef_data=yes, fptools_cv_code_bef_data=no,false)])
636 if test "$fptools_cv_code_bef_data" = yes; then
637   AC_DEFINE(CODE_BEFORE_DATA)
638 fi
639 ])
640
641 dnl *** Helper function **
642 dnl 
643 AC_DEFUN(FPTOOLS_IN_SCOPE,AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no))
644
645 dnl *** What's the end-of-text-section marker called? ***
646 dnl
647 AC_DEFUN(FPTOOLS_END_TEXT_SECTION,
648 [AC_MSG_CHECKING([for end of text section marker])
649 not_done=1
650 for i in data_start _data_start etext _etext __etext; do
651   FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text)
652   if test "$fptools_end_of_text" = yes; then
653    AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, $i))
654    AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, $i))
655    not_done=0
656    break
657   fi
658 done
659 if test "$not_done" = 1; then
660 FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text);
661 if test "$fptools_end_of_text" = yes; then
662   AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, etext))
663   AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, etext asm("etext")))
664 else
665   AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, dunno_what_it_is)
666   AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, dunno_what_it_is)
667 fi
668 fi
669 AC_MSG_RESULT([$]fptools_cv_end_of_text)
670 ])
671
672 dnl *** What's the end-of-data-section marker called? ***
673 dnl
674 AC_DEFUN(FPTOOLS_END_DATA_SECTION,
675 [AC_MSG_CHECKING([for end of data section marker])
676 not_done=1
677 for i in end _end __end; do
678   FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data)
679   if test "$fptools_end_of_data" = yes; then
680    AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, $i)])
681    AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, $i)])
682    not_done=0
683    break
684   fi
685 done
686 if test "$not_done" = 1; then
687 FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data);
688 if test "$fptools_end_of_data" = yes; then
689   AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, end asm("end"))])
690   AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, end)])
691 else
692   AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, dunno_what_it_is)])
693   AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, dunno_what_it_is)])
694 fi
695 fi
696 AC_MSG_RESULT([$]fptools_cv_end_of_data)
697 ])
698
699
700
701 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
702
703 dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)
704
705 AC_DEFUN(FPTOOLS_TRY_LINK_NOWARN,
706 [
707 ac_save_LIBS="$LIBS"
708 LIBS=[$1];
709 cat > conftest.$ac_ext <<EOF
710 dnl This sometimes fails to find confdefs.h, for some reason.
711 dnl [#]line __oline__ "[$]0"
712 [#]line __oline__ "configure"
713 #include "confdefs.h"
714 [$2]
715 int t() { return 0; }
716 EOF
717 if AC_TRY_EVAL(ac_link); then
718   ifelse([$3], , :, [
719     LIBS="$ac_save_LIBS"
720     rm -rf conftest*
721     $3])
722   ifelse([$4], , , [else
723     LIBS="$ac_save_LIBS"
724     rm -rf conftest*
725     $4
726 ])dnl
727 fi
728 rm -f conftest*
729 ]
730 )
731
732 dnl Loosely based on AC_CHECK_LIB in acgeneral.m4 in autoconf distribution
733
734 dnl FPTOOLS_CHECK_FLAG_NOWARN(NAME, FLAG, CODE, iftrue, iffalse)
735
736 AC_DEFUN(FPTOOLS_CHECK_FLAG_NOWARN,
737 [AC_MSG_CHECKING([for $1])
738  AC_CACHE_VAL(ac_cv_flag_$1,
739    [FPTOOLS_TRY_LINK_NOWARN("$2", [main() { $3; exit(0); } ],
740      eval "ac_cv_flag_$1=yes",
741      eval "ac_cv_flag_$1=no"
742    )]
743  )
744 if eval "test \"`echo '$ac_cv_flag_'$1`\" = yes"; then
745   AC_MSG_RESULT(yes)
746   LIBS="$2 $LIBS"
747   $4
748 else
749   AC_MSG_RESULT(no)
750   $5
751 fi
752 ])
753
754 dnl FPTOOLS_CHECK_LIB_NOWARN(LIBRARY, FUNCTION)
755
756 AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN,
757 [FPTOOLS_CHECK_FLAG_NOWARN([function_$2],[],[extern char $2(); $2();],
758 [changequote(, )dnl
759   ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
760  changequote([, ])dnl
761  AC_DEFINE_UNQUOTED($ac_tr_lib)
762 ],
763 [FPTOOLS_CHECK_FLAG_NOWARN([library_$1],[-l$1],[extern char $2(); $2();],
764 [changequote(, )dnl
765   ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
766  changequote([, ])dnl
767  AC_DEFINE_UNQUOTED($ac_tr_lib)
768 ],
769 []
770 )])]
771 )
772
773 dnl check for prototypes
774 dnl
775 AC_DEFUN(AC_C_PROTOTYPES,
776 [AC_CACHE_CHECK([prototypes], ac_cv_prototypes,
777 [AC_TRY_COMPILE([
778 void foo(int);
779 void foo(i)
780 int i; { 
781 return;
782 }
783 ],
784 [int i;], 
785 ac_cv_prototypes=yes,
786 ac_cv_prototypes=no)])
787 if test "$ac_cv_prototypes" = yes; then
788 AC_DEFINE(HAVE_PROTOTYPES)
789 fi
790 ])
791
792 dnl ** Check which CATALOG file we have to use with DocBook SGML.
793 dnl
794 dnl FPTOOLS_DOCBOOK_CATALOG(VARIABLE, JADE, STYLESHEET, CATALOGS-TO-CHECK-FOR)
795 dnl
796 dnl If any of the catalogs given in CATALOGS-TO-CHECK-FOR works on this
797 dnl platform, let VARIABLE refer to this catalog; otherwise, VARIABLE
798 dnl is set to "no".  JADE is the jade executable and STYLESHEET
799 dnl a DocBook style sheet.
800 dnl
801 AC_DEFUN(FPTOOLS_DOCBOOK_CATALOG,
802 [AC_CACHE_CHECK([for DocBook CATALOG], fptools_cv_sgml_catalog,
803 [
804 cat > conftest.sgml << EOF
805 <!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
806 <Article>
807 <ArtHeader>
808 <Title>Test</Title>
809 <Author><OtherName>Test</OtherName></Author>
810 <Address>Test</Address>
811 <PubDate>Test</PubDate>
812 </ArtHeader>
813 <Sect1><Title>Test</Title>
814 <Para>
815 Test.
816 </Para>
817 </Sect1>
818 </Article>
819 EOF
820 fptools_cv_sgml_catalog=no
821 for fptools_catalog in $4; do
822   ac_try="$2 -t rtf -d $3#print -c $fptools_catalog conftest.sgml"
823   if AC_TRY_EVAL(ac_try); then
824     fptools_cv_sgml_catalog=[$]fptools_catalog
825     break
826   fi
827 done
828 ])
829 rm -rf conftest*
830 if test $fptools_cv_sgml_catalog != "no"; then
831   $1=$fptools_cv_sgml_catalog
832 fi
833 ])
834
835 dnl ######################################################################
836 dnl FPTOOLS_SEARCH_LIBS(INCLUDES, FUNCTION, SEARCH-LIBS [, ACTION-IF-FOUND
837 dnl                     [, ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
838 dnl Search for a library defining FUNC, if it's not already available.
839 dnl This is almost the same as AC_SEARCH_LIBS, but the INCLUDES can be
840 dnl specified.
841 dnl ######################################################################
842
843 AC_DEFUN(FPTOOLS_SEARCH_LIBS,
844 [AC_PREREQ([2.13])
845 AC_CACHE_CHECK([for library containing $2], [ac_cv_search_$2],
846 [ac_func_search_save_LIBS="$LIBS"
847 ac_cv_search_$2="no"
848 AC_TRY_LINK([$1], [$2()], [ac_cv_search_$2="none required"])
849 test "$ac_cv_search_$2" = "no" && for i in $3; do
850 LIBS="-l$i $6 $ac_func_search_save_LIBS"
851 AC_TRY_LINK([$1], [$2()],
852 [ac_cv_search_$2="-l$i"
853 break])
854 done
855 LIBS="$ac_func_search_save_LIBS"])
856 if test "$ac_cv_search_$2" != "no"; then
857   test "$ac_cv_search_$2" = "none required" || LIBS="$ac_cv_search_$2 $LIBS"
858   $4
859 else :
860   $5
861 fi])
862
863 dnl ####################### -*- Mode: M4 -*- ###########################
864 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
865 dnl
866 dnl This file is free software; you can redistribute it and/or modify it
867 dnl under the terms of the GNU General Public License as published by
868 dnl the Free Software Foundation; either version 2 of the License, or
869 dnl (at your option) any later version.
870 dnl
871 dnl This file is distributed in the hope that it will be useful, but
872 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
873 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
874 dnl General Public License for more details.
875 dnl
876 dnl You should have received a copy of the GNU General Public License
877 dnl along with this file; if not, write to:
878 dnl
879 dnl   Free Software Foundation, Inc.
880 dnl   Suite 330
881 dnl   59 Temple Place
882 dnl   Boston, MA 02111-1307, USA.
883 dnl ####################################################################
884
885
886 dnl @synopsis FPTOOLS_CHECK_LIBM
887 dnl 
888 dnl Search for math library (typically -lm).
889 dnl
890 dnl The variable LIBM (which is not an output variable by default) is
891 dnl set to a value which is suitable for use in a Makefile (for example,
892 dnl in make's LOADLIBES macro) provided you AC_SUBST it first.
893 dnl
894 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
895
896 # FPTOOLS_CHECK_LIBM - check for math library
897 AC_DEFUN(FPTOOLS_CHECK_LIBM,
898 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
899 LIBM=
900 case "$host" in
901 *-*-beos* | *-*-macosx*)
902   # These system don't have libm
903   ;;
904 *-ncr-sysv4.3*)
905   AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
906   AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
907   ;;
908 *)
909   AC_CHECK_LIB(m, main, LIBM="-lm")
910   ;;
911 esac
912 ])
913
914 dnl ######################################################################
915 dnl NOTE: Because of portability issues between different autoconf
916 dnl versions the AC_HELP_STRING macro has been removed from FPTOOLS_HAVE_OPENGL.
917 dnl Furthermore, caching has been completely rewritten.
918 dnl ######################################################################
919
920 dnl ########################### -*- Mode: M4 -*- #######################
921 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
922 dnl
923 dnl This file is free software; you can redistribute it and/or modify it
924 dnl under the terms of the GNU General Public License as published by
925 dnl the Free Software Foundation; either version 2 of the License, or
926 dnl (at your option) any later version.
927 dnl
928 dnl This file is distributed in the hope that it will be useful, but
929 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
930 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
931 dnl General Public License for more details.
932 dnl
933 dnl You should have received a copy of the GNU General Public License
934 dnl along with this file; if not, write to:
935 dnl
936 dnl   Free Software Foundation, Inc.
937 dnl   Suite 330
938 dnl   59 Temple Place
939 dnl   Boston, MA 02111-1307, USA.
940 dnl ####################################################################
941
942 dnl @synopsis FPTOOLS_HAVE_OPENGL
943 dnl 
944 dnl Search for OpenGL.  We search first for Mesa (a GPL'ed version of
945 dnl OpenGL) before a vendor's version of OpenGL, unless we were
946 dnl specifically asked not to with `--with-Mesa=no' or `--without-Mesa'.
947 dnl
948 dnl The four "standard" OpenGL libraries are searched for: "-lGL",
949 dnl "-lGLU", "-lGLX" (or "-lMesaGL", "-lMesaGLU" as the case may be) and
950 dnl "-lglut".
951 dnl
952 dnl All of the libraries that are found (since "-lglut" or "-lGLX" might
953 dnl be missing) are added to the shell output variable "GL_LIBS", along
954 dnl with any other libraries that are necessary to successfully link an
955 dnl OpenGL application (e.g. the X11 libraries).  Care has been taken to
956 dnl make sure that all of the libraries in "GL_LIBS" are listed in the
957 dnl proper order.
958 dnl
959 dnl Additionally, the shell output variable "GL_CFLAGS" is set to any
960 dnl flags (e.g. "-I" flags) that are necessary to successfully compile
961 dnl an OpenGL application.
962 dnl
963 dnl The following shell variable (which are not output variables) are
964 dnl also set to either "yes" or "no" (depending on which libraries were
965 dnl found) to help you determine exactly what was found.
966 dnl
967 dnl   have_GL
968 dnl   have_GLU
969 dnl   have_GLX
970 dnl   have_glut
971 dnl
972 dnl A complete little toy "Automake `make distcheck'" package of how to
973 dnl use this macro is available at:
974 dnl
975 dnl   ftp://ftp.slac.stanford.edu/users/langston/autoconf/ac_opengl-0.01.tar.gz
976 dnl
977 dnl Please note that as the ac_opengl macro and the toy example evolves,
978 dnl the version number increases, so you may have to adjust the above
979 dnl URL accordingly.
980 dnl
981 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
982
983 AC_DEFUN(FPTOOLS_HAVE_OPENGL,
984 [
985   AC_REQUIRE([AC_PROG_CC])
986   AC_REQUIRE([AC_PATH_X])
987   AC_REQUIRE([AC_PATH_XTRA])
988   AC_REQUIRE([FPTOOLS_CHECK_LIBM])
989
990 dnl Check for Mesa first, unless we were asked not to.
991 dnl    AC_HELP_STRING([--with-Mesa],
992 dnl                   [Prefer the Mesa library over a vendors native OpenGL library (default=yes)],
993 dnl                   with_Mesa_help_string)
994 dnl    AC_ARG_ENABLE(Mesa, $with_Mesa_help_string, use_Mesa=$enableval, use_Mesa=yes)
995   AC_ARG_ENABLE(Mesa, [  --with-Mesa             Prefer the Mesa library over a vendors native OpenGL library (default=yes)], use_Mesa=$enableval, use_Mesa=yes)
996
997   if test x"$use_Mesa" = xyes; then
998      GL_search_list="MesaGL  GL  opengl32"
999     GLU_search_list="MesaGLU GLU glu32"
1000     GLX_search_list="MesaGLX GLX"
1001   else
1002      GL_search_list="GL  opengl32 MesaGL"
1003     GLU_search_list="GLU glu32    MesaGLU"
1004     GLX_search_list="GLX          MesaGLX"
1005   fi      
1006
1007   AC_LANG_SAVE
1008   AC_LANG_C
1009
1010 dnl If we are running under X11 then add in the appropriate libraries.
1011   if ! test x"$no_x" = xyes; then
1012 dnl Add everything we need to compile and link X programs to GL_CFLAGS
1013 dnl and GL_X_LIBS.
1014     GL_CFLAGS="$X_CFLAGS"
1015     GL_X_LIBS="$X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS $LIBM"
1016   fi
1017   GL_save_CPPFLAGS="$CPPFLAGS"
1018   CPPFLAGS="$GL_CFLAGS"
1019
1020   GL_save_LIBS="$LIBS"
1021   LIBS="$GL_X_LIBS"
1022
1023   FPTOOLS_SEARCH_LIBS([#include <GL/gl.h>],   glEnd,           $GL_search_list,  have_GL=yes,   have_GL=no)
1024   FPTOOLS_SEARCH_LIBS([#include <GL/glu.h>],  gluNewQuadric,   $GLU_search_list, have_GLU=yes,  have_GLU=no)
1025   FPTOOLS_SEARCH_LIBS([#include <GL/glx.h>],  glXChooseVisual, $GLX_search_list, have_GLX=yes,  have_GLX=no)
1026   FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glutMainLoop,    glut glut32,      have_glut=yes, have_glut=no)
1027
1028   if test -n "$LIBS"; then
1029     GL_LIBS="$LIBS"
1030   else
1031     GL_LIBS=
1032     GL_CFLAGS=
1033   fi
1034
1035   AC_CACHE_CHECK([OpenGL flags], mdl_cv_gl_cflags, [mdl_cv_gl_cflags="$GL_CFLAGS"])
1036   GL_CFLAGS="$mdl_cv_gl_cflags"
1037   AC_SUBST(GL_CFLAGS)
1038   AC_CACHE_CHECK([OpenGL libs],  mdl_cv_gl_libs,   [mdl_cv_gl_libs="$GL_LIBS"])
1039   GL_LIBS="$mdl_cv_gl_libs"
1040   AC_SUBST(GL_LIBS)
1041
1042 dnl Reset GL_X_LIBS regardless, since it was just a temporary variable
1043 dnl and we don't want to be global namespace polluters.
1044   GL_X_LIBS=
1045
1046   LIBS="$GL_save_LIBS"
1047   CPPFLAGS="$GL_save_CPPFLAGS"
1048
1049   AC_LANG_RESTORE
1050 ])
1051
1052 # LocalWords:  fi
1053
1054 dnl 
1055 dnl acspecific.m4's defn of AC_PROG_LEX is a bit too permissive, as it
1056 dnl defaults to 'lex' if 'flex' isn't found (without checking whether
1057 dnl 'lex' is actually present along the user's PATH).
1058 dnl
1059 AC_DEFUN(AC_PROG_LEX_STRICT,
1060 [AC_CHECK_PROG(LEX, flex, flex)
1061 if test -z "$LEX"
1062 then
1063   AC_CHECK_PROG(LEX,lex,lex)
1064   test -z "$LEX" && AC_MSG_ERROR(['lex' or 'flex' is required to compile GHC.])
1065 fi
1066 ])
1067
1068 dnl
1069 dnl Check to see whether CC (gcc) supports a particular option.
1070 dnl 
1071 AC_DEFUN(FPTOOLS_CC_FLAG,
1072 [
1073 AC_CACHE_CHECK([whether $CC accepts $1], [ac_cv_cc_$2],
1074 [save_CFLAGS="$CFLAGS"
1075  CFLAGS="$CFLAGS $1"
1076  AC_LANG_C
1077  AC_TRY_COMPILE(,[int main(){return(0);}],
1078                  [ac_cv_cc_$2=yes],
1079                  [ac_cv_cc_$2=no])
1080  CFLAGS="$save_CFLAGS"
1081 ])
1082 if test "$ac_cv_cc_$2"x = "yesx"; then
1083   $2=$extra_flag;
1084 else
1085   $2=$extra_flag;
1086 fi;
1087 ])