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