[project @ 2001-07-19 20:27:23 by sof]
[ghc-hetmet.git] / aclocal.m4
1 dnl $Id: aclocal.m4,v 1.80 2001/07/19 20:27:23 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_NOCACHE_CHECK prints a message, then sets the
390 dnl values of the second argument to the result of running
391 dnl the commands given by the third. It does not cache its
392 dnl result, so it is suitable for checks which should be
393 dnl run every time.
394 dnl
395 AC_DEFUN(FPTOOLS_NOCACHE_CHECK,
396 [AC_MSG_CHECKING([$1])
397  $3
398  AC_MSG_RESULT([$][$2])
399 ])
400
401 dnl
402 dnl FPTOOLS_GHC_VERSION(version)
403 dnl FPTOOLS_GHC_VERSION(major, minor [, patchlevel])
404 dnl FPTOOLS_GHC_VERSION(version, major, minor, patchlevel)
405 dnl
406 dnl Test for version of installed ghc.  Uses $GHC.
407 dnl [original version pinched from c2hs]
408 dnl
409 AC_DEFUN(FPTOOLS_GHC_VERSION,
410 [FPTOOLS_NOCACHE_CHECK([version of ghc], [fptools_version_of_ghc],
411 [${WithGhc-ghc} --version > conftestghc 2>&1
412   cat conftestghc >&AC_FD_CC
413 #Useless Use Of cat award...
414   fptools_version_of_ghc=`cat conftestghc | sed -n -e 's/, patchlevel *\([[0-9]]\)/.\1/;s/.* version \([[0-9]][[0-9.]]*\).*/\1/p'`
415   rm -fr conftest*
416   if test "[$]fptools_version_of_ghc" = ""
417   then
418     fptools_version_of_ghc='unknown'
419   fi
420 fptools_version_of_ghc[_major]=`echo [$]fptools_version_of_ghc | sed -e 's/^\([[0-9]]\).*/\1/'`
421 fptools_version_of_ghc[_minor]=`echo [$]fptools_version_of_ghc | sed -e 's/^[[0-9]]\.\([[0-9]]*\).*/\1/'`
422 fptools_version_of_ghc[_pl]=`echo [$]fptools_version_of_ghc | sed -n -e 's/^[[0-9]]\.[[0-9]]*\.\([[0-9]]*\)/\1/p'`
423 #
424 if test "[$]fptools_version_of_ghc[_pl]" = ""
425 then
426   fptools_version_of_ghc[_all]="[$]fptools_version_of_ghc[_major].[$]fptools_version_of_ghc[_minor]"
427   fptools_version_of_ghc[_pl]="0"
428 else
429   fptools_version_of_ghc[_all]="[$]fptools_version_of_ghc[_major].[$]fptools_version_of_ghc[_minor].[$]fptools_version_of_ghc[_pl]"
430 fi
431 #
432 ifelse($#, [1], [dnl
433 [$1]="[$]fptools_version_of_ghc[_all]"
434 ], $#, [2], [dnl
435 [$1]="[$]fptools_version_of_ghc[_major]"
436 [$2]="[$]fptools_version_of_ghc[_minor]"
437 ], $#, [3], [dnl
438 [$1]="[$]fptools_version_of_ghc[_major]"
439 [$2]="[$]fptools_version_of_ghc[_minor]"
440 [$3]="[$]fptools_version_of_ghc[_pl]"
441 ], $#, [4], [dnl
442 [$1]="[$]fptools_version_of_ghc[_all]"
443 [$2]="[$]fptools_version_of_ghc[_major]"
444 [$3]="[$]fptools_version_of_ghc[_minor]"
445 [$4]="[$]fptools_version_of_ghc[_pl]"
446 ])
447 ])
448 ])dnl
449
450
451 dnl ** figure out the alignment restriction of a type
452 dnl    (required SIZEOF test but AC_CHECK_SIZEOF doesn't call PROVIDE
453 dnl     so we can't call REQUIRE)
454
455 dnl FPTOOLS_CHECK_ALIGNMENT(TYPE)
456 AC_DEFUN(FPTOOLS_CHECK_ALIGNMENT,
457 [changequote(<<, >>)dnl
458 dnl The name to #define.
459 define(<<AC_TYPE_NAME>>, translit(alignment_$1, [a-z *], [A-Z_P]))dnl
460 dnl The cache variable name.
461 define(<<AC_CV_NAME>>, translit(ac_cv_alignment_$1, [ *], [_p]))dnl
462 dnl The name of the corresponding size.
463 define(<<AC_CV_SIZEOF_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
464 changequote([, ])dnl
465 AC_MSG_CHECKING(alignment of $1)
466 AC_CACHE_VAL(AC_CV_NAME,
467 [AC_TRY_RUN([
468 #include <stdio.h>
469 #if HAVE_STDDEF_H
470 #include <stddef.h>
471 #endif
472 #ifndef offsetof
473 #define offsetof(ty,field) ((size_t)((char *)&((ty *)0)->field - (char *)(ty *)0))
474 #endif
475 int
476 main()
477 {
478   FILE *f=fopen("conftestval", "w");
479   if (!f) exit(1);
480   fprintf(f, "%d", offsetof(struct { char c; $1 ty;},ty));
481   exit(0);
482 }],
483 AC_CV_NAME=`cat conftestval`,
484 AC_CV_NAME=$AC_CV_SIZEOF_NAME,
485 AC_CV_NAME=$AC_CV_SIZEOF_NAME)])
486 AC_MSG_RESULT($AC_CV_NAME)
487 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
488 AC_PROVIDE($AC_TYPE_NAME)
489 undefine([AC_TYPE_NAME])dnl
490 undefine([AC_CV_NAME])dnl
491 undefine([AC_CV_SIZEOF_NAME])dnl
492 ])
493
494 dnl ** Map an arithmetic C type to a Haskell type.
495 dnl    Based on autconf's AC_CHECK_SIZEOF.
496
497 dnl FPTOOLS_CHECK_HTYPE(TYPE [, DEFAULT_VALUE, [, VALUE-FOR-CROSS-COMPILATION])
498 AC_DEFUN(FPTOOLS_CHECK_HTYPE,
499 [changequote(<<, >>)dnl
500 dnl The name to #define.
501 define(<<AC_TYPE_NAME>>, translit(htype_$1, [a-z *], [A-Z_P]))dnl
502 dnl The cache variable name.
503 define(<<AC_CV_NAME>>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl
504 changequote([, ])dnl
505 AC_MSG_CHECKING(Haskell type for $1)
506 AC_CACHE_VAL(AC_CV_NAME,
507 [AC_TRY_RUN([#include <stdio.h>
508 #include <stddef.h>
509 #ifdef HAVE_SIGNAL_H
510 #include <signal.h>
511 #endif
512 #ifdef HAVE_TIME_H
513 #include <time.h>
514 #endif
515 #ifdef HAVE_GL_GL_H
516 #include <GL/gl.h>
517 #endif
518
519 typedef $1 testing;
520
521 main() {
522   FILE *f=fopen("conftestval", "w");
523   if (!f) exit(1);
524   if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {
525     fprintf(f, "%s%d\n",
526            ((testing)(-1) < (testing)0) ? "Int" : "Word",
527            sizeof(testing)*8);
528   } else {
529     fprintf(f,"%s\n",
530            (sizeof(testing) >  sizeof(double)) ? "LDouble" :
531            (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");
532   }
533   fclose(f);
534   exit(0);
535 }], AC_CV_NAME=`cat conftestval`,
536 ifelse([$2], , AC_CV_NAME=NotReallyAType,      AC_CV_NAME=$2),
537 ifelse([$3], , AC_CV_NAME=NotReallyATypeCross, AC_CV_NAME=$3))]) dnl
538 AC_MSG_RESULT($AC_CV_NAME)
539 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
540 undefine([AC_TYPE_NAME])dnl
541 undefine([AC_CV_NAME])dnl
542 ])
543
544 dnl ** figure out whether C compiler supports 'long long's
545 dnl    (Closely based on Andreas Zeller's macro for testing
546 dnl     for this under C++)
547 dnl
548 dnl    If the C compiler supports `long long' types,
549 dnl    define `HAVE_LONG_LONG'.
550 dnl
551 AC_DEFUN(FPTOOLS_C_LONG_LONG,
552 [
553 AC_REQUIRE([AC_PROG_CC])
554 AC_MSG_CHECKING(whether ${CC} supports long long types)
555 AC_CACHE_VAL(fptools_cv_have_long_long,
556 [
557 AC_LANG_SAVE
558 AC_LANG_C
559 AC_TRY_COMPILE(,[long long a;],
560 fptools_cv_have_long_long=yes,
561 fptools_cv_have_long_long=no)
562 AC_LANG_RESTORE
563 ])
564 AC_MSG_RESULT($fptools_cv_have_long_long)
565 if test "$fptools_cv_have_long_long" = yes; then
566 AC_DEFINE(HAVE_LONG_LONG)
567 fi
568 ])
569
570 dnl ** Obtain the value of a C constant.
571 dnl    The value will be `(-1)' if the constant is undefined.
572 dnl
573 dnl    This is set up so that the argument can be a shell variable.
574 dnl
575 AC_DEFUN(FPTOOLS_CHECK_CCONST,
576 [
577 eval "def_name=CCONST_$1"
578 eval "cv_name=ac_cv_cconst_$1"
579 AC_MSG_CHECKING(value of $1)
580 AC_CACHE_VAL($cv_name,
581 [AC_TRY_RUN([#include <stdio.h>
582 #include <errno.h>
583 main()
584 {
585   FILE *f=fopen("conftestval", "w");
586   if (!f) exit(1);
587   fprintf(f, "%d\n", $1);
588   exit(0);
589 }], 
590 eval "$cv_name=`cat conftestval`",
591 eval "$cv_name=-1",
592 eval "$cv_name=-1")])dnl
593 eval "fptools_check_cconst_result=`echo '$'{$cv_name}`"
594 AC_MSG_RESULT($fptools_check_cconst_result)
595 AC_DEFINE_UNQUOTED($def_name, $fptools_check_cconst_result)
596 unset fptools_check_cconst_result
597 ])
598
599 dnl ** Invoke AC_CHECK_CCONST on each argument (which have to separate with 
600 dnl    spaces)
601 dnl
602 AC_DEFUN(FPTOOLS_CHECK_CCONSTS,
603 [for ac_const_name in $1
604 do
605 FPTOOLS_CHECK_CCONST($ac_const_name)dnl
606 done
607 ])
608
609
610 dnl *** Can we open files in binary mode? ***
611 dnl 
612 AC_DEFUN(FPTOOLS_O_BINARY,
613 [
614 AC_REQUIRE([AC_PROG_CC])
615 AC_MSG_CHECKING(whether we can open files in binary mode)
616 AC_CACHE_VAL(fptools_cv_have_o_binary,
617 [
618 AC_LANG_SAVE
619 AC_LANG_C
620 AC_TRY_COMPILE(,
621 [#ifdef HAVE_FCNTL_H
622 #include <fcntl.h>
623 #endif
624 int x = O_BINARY;],
625 fptools_cv_have_o_binary=yes,
626 fptools_cv_have_o_binary=no)
627 AC_LANG_RESTORE
628 ])
629 AC_MSG_RESULT($fptools_cv_have_o_binary)
630 if test "$fptools_cv_have_o_binary" = yes; then
631 AC_DEFINE(HAVE_O_BINARY)
632 fi
633 ])
634
635 dnl *** Which one comes first, .text or .data? ***
636 dnl 
637 AC_DEFUN(FPTOOLS_CODE_BEFORE_DATA,
638 [AC_CACHE_CHECK([if code section appears before data], fptools_cv_code_bef_data,
639 [AC_TRY_RUN([
640 int f() { return 1; }
641 int i;
642 int main() { return ((char*)&f > (char*)&i); }
643
644 ],
645 fptools_cv_code_bef_data=yes, fptools_cv_code_bef_data=no,false)])
646 if test "$fptools_cv_code_bef_data" = yes; then
647   AC_DEFINE(CODE_BEFORE_DATA)
648 fi
649 ])
650
651 dnl *** Helper function **
652 dnl 
653 AC_DEFUN(FPTOOLS_IN_SCOPE,
654 [AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no)
655 ])
656
657 dnl *** What's the end-of-text-section marker called? ***
658 dnl
659 AC_DEFUN([FPTOOLS_END_TEXT_SECTION],
660 [AC_CACHE_CHECK([for end of text section marker],
661                 [fptools_cv_end_of_text],
662                 [fptools_cv_end_of_text=""
663                  not_done=1
664                  for i in data_start _data_start etext _etext __etext; do
665                    FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text)
666                    if test "$fptools_end_of_text" = yes; then
667                      fptools_cv_end_of_text=$i
668                      not_done=0
669                      break
670                    fi
671                  done
672                  if test "$not_done" = 1; then
673                    FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text)
674                    if test "$fptools_end_of_text" = yes; then
675                      fptools_cv_end_of_text="etext asm("etext")"
676                    fi
677                  fi])
678                  if test -n "$fptools_cv_end_of_text"; then
679                    AC_DEFINE_UNQUOTED([TEXT_SECTION_END_MARKER], $fptools_cv_end_of_text)
680                  else
681                    AC_DEFINE_UNQUOTED([TEXT_SECTION_END_MARKER], dunno_end_of_text)
682                  fi
683  AC_CACHE_CHECK([for end of text section marker declaration],
684                 [fptools_cv_end_of_text_decl],
685                 [fptools_cv_end_of_text_decl=""
686                  not_done=1
687                  for i in data_start _data_start etext _etext __etext; do
688                    FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text_decl)
689                    if test "$fptools_end_of_text_decl" = yes; then
690                      fptools_cv_end_of_text_decl=$i
691                      not_done=0
692                      break
693                    fi
694                  done
695                  if test "$not_done" = 1; then
696                    FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text_decl)
697                    if test "$fptools_end_of_text_decl" = yes; then
698                      fptools_cv_end_of_text_decl=etext
699                    fi
700                  fi])
701                  if test -n "$fptools_cv_end_of_text_decl"; then
702                    AC_DEFINE_UNQUOTED([TEXT_SECTION_END_MARKER_DECL], $fptools_cv_end_of_text_decl)
703                  else
704                    AC_DEFINE_UNQUOTED([TEXT_SECTION_END_MARKER_DECL], dunno_end_of_text_decl)
705                  fi
706 ])                 
707  
708 dnl *** What's the end-of-data-section marker called? ***
709 dnl
710 AC_DEFUN([FPTOOLS_END_DATA_SECTION],
711 [AC_CACHE_CHECK([for end of data section marker],
712                 [fptools_cv_end_of_data],
713                 [fptools_cv_end_of_data=""
714                  not_done=1
715                  for i in end _end __end; do
716                    FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data)
717                    if test "$fptools_end_of_data" = yes; then
718                      fptools_cv_end_of_data=$i
719                      not_done=0
720                      break
721                    fi
722                  done
723                  if test "$not_done" = 1; then
724                    FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data)
725                    if test "$fptools_end_of_data" = yes; then
726                      fptools_cv_end_of_data=end
727                    fi
728                  fi])
729                  if test -n "$fptools_cv_end_of_data"; then
730                    AC_DEFINE_UNQUOTED([DATA_SECTION_END_MARKER], $fptools_cv_end_of_data)
731                  else
732                    AC_DEFINE_UNQUOTED([DATA_SECTION_END_MARKER], dunno_end_of_data)
733                  fi
734  AC_CACHE_CHECK([for end of data section marker declaration],
735                 [fptools_cv_end_of_data_decl],
736                 [fptools_cv_end_of_data_decl=""
737                  not_done=1
738                  for i in end _end __end; do
739                    FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data_decl)
740                    if test "$fptools_end_of_data_decl" = yes; then
741                      fptools_cv_end_of_data_decl=$i
742                      not_done=0
743                      break
744                    fi
745                  done
746                  if test "$not_done" = 1; then
747                    FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data_decl)
748                    if test "$fptools_end_of_data_decl" = yes; then
749                      fptools_cv_end_of_data_decl=end
750                    fi
751                  fi])
752                  if test -n "$fptools_cv_end_of_data_decl"; then
753                    AC_DEFINE_UNQUOTED([DATA_SECTION_END_MARKER_DECL], $fptools_cv_end_of_data_decl)
754                  else
755                    AC_DEFINE_UNQUOTED([DATA_SECTION_END_MARKER_DECL], dunno_end_of_data_decl)
756                  fi
757 ])                 
758  
759
760 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
761
762 dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)
763
764 AC_DEFUN(FPTOOLS_TRY_LINK_NOWARN,
765 [
766 ac_save_LIBS="$LIBS"
767 LIBS=[$1];
768 cat > conftest.$ac_ext <<EOF
769 dnl This sometimes fails to find confdefs.h, for some reason.
770 dnl [#]line __oline__ "[$]0"
771 [#]line __oline__ "configure"
772 #include "confdefs.h"
773 [$2]
774 int t() { return 0; }
775 EOF
776 if AC_TRY_EVAL(ac_link); then
777   ifelse([$3], , :, [
778     LIBS="$ac_save_LIBS"
779     rm -rf conftest*
780     $3])
781   ifelse([$4], , , [else
782     LIBS="$ac_save_LIBS"
783     rm -rf conftest*
784     $4
785 ])dnl
786 fi
787 rm -f conftest*
788 ]
789 )
790
791 dnl Loosely based on AC_CHECK_LIB in acgeneral.m4 in autoconf distribution
792
793 dnl FPTOOLS_CHECK_FLAG_NOWARN(NAME, FLAG, CODE, iftrue, iffalse)
794
795 AC_DEFUN(FPTOOLS_CHECK_FLAG_NOWARN,
796 [AC_MSG_CHECKING([for $1])
797  AC_CACHE_VAL(ac_cv_flag_$1,
798    [FPTOOLS_TRY_LINK_NOWARN("$2", [main() { $3; exit(0); } ],
799      eval "ac_cv_flag_$1=yes",
800      eval "ac_cv_flag_$1=no"
801    )]
802  )
803 if eval "test \"`echo '$ac_cv_flag_'$1`\" = yes"; then
804   AC_MSG_RESULT(yes)
805   LIBS="$2 $LIBS"
806   $4
807 else
808   AC_MSG_RESULT(no)
809   $5
810 fi
811 ])
812
813 dnl FPTOOLS_CHECK_LIB_NOWARN(LIBRARY, FUNCTION)
814
815 AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN,
816 [FPTOOLS_CHECK_FLAG_NOWARN([function_$2],[],[extern char $2(); $2();],
817 [changequote(, )dnl
818   ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
819  changequote([, ])dnl
820  AC_DEFINE_UNQUOTED($ac_tr_lib)
821 ],
822 [FPTOOLS_CHECK_FLAG_NOWARN([library_$1],[-l$1],[extern char $2(); $2();],
823 [changequote(, )dnl
824   ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
825  changequote([, ])dnl
826  AC_DEFINE_UNQUOTED($ac_tr_lib)
827 ],
828 []
829 )])]
830 )
831
832 dnl check for prototypes
833 dnl
834 AC_DEFUN([AC_C_PROTOTYPES],
835 [AC_CACHE_CHECK([prototypes], ac_cv_prototypes,
836 [AC_TRY_COMPILE([
837 void foo(int);
838 void foo(i)
839 int i; { 
840 return;
841 }
842 ],
843 [int i;], 
844 ac_cv_prototypes=yes,
845 ac_cv_prototypes=no)])
846 if test "$ac_cv_prototypes" = yes; then
847 AC_DEFINE([HAVE_PROTOTYPES])
848 fi
849 ])
850
851 dnl ** Check which CATALOG file we have to use with DocBook SGML.
852 dnl
853 dnl FPTOOLS_DOCBOOK_CATALOG(VARIABLE, JADE, STYLESHEET, CATALOGS-TO-CHECK-FOR)
854 dnl
855 dnl If any of the catalogs given in CATALOGS-TO-CHECK-FOR works on this
856 dnl platform, let VARIABLE refer to this catalog; otherwise, VARIABLE
857 dnl is set to "no".  JADE is the jade executable and STYLESHEET
858 dnl a DocBook style sheet.
859 dnl
860 AC_DEFUN(FPTOOLS_DOCBOOK_CATALOG,
861 [AC_CACHE_CHECK([for DocBook CATALOG], fptools_cv_sgml_catalog,
862 [
863 cat > conftest.sgml << EOF
864 <!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
865 <Article>
866 <ArtHeader>
867 <Title>Test</Title>
868 <Author><OtherName>Test</OtherName></Author>
869 <Address>Test</Address>
870 <PubDate>Test</PubDate>
871 </ArtHeader>
872 <Sect1><Title>Test</Title>
873 <Para>
874 Test.
875 </Para>
876 </Sect1>
877 </Article>
878 EOF
879 fptools_cv_sgml_catalog=no
880 for fptools_catalog in $4; do
881   ac_try="$2 -t rtf -d $3#print -c $fptools_catalog conftest.sgml"
882   if AC_TRY_EVAL(ac_try); then
883     fptools_cv_sgml_catalog=[$]fptools_catalog
884     break
885   fi
886 done
887 ])
888 rm -rf conftest*
889 if test $fptools_cv_sgml_catalog != "no"; then
890   $1=$fptools_cv_sgml_catalog
891 fi
892 ])
893
894 dnl ######################################################################
895 dnl FPTOOLS_SEARCH_LIBS(INCLUDES, FUNCTION, SEARCH-LIBS [, ACTION-IF-FOUND
896 dnl                     [, ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
897 dnl Search for a library defining FUNC, if it's not already available.
898 dnl This is almost the same as AC_SEARCH_LIBS, but the INCLUDES can be
899 dnl specified.
900 dnl ######################################################################
901
902 AC_DEFUN(FPTOOLS_SEARCH_LIBS,
903 [AC_PREREQ([2.13])
904 AC_CACHE_CHECK([for library containing $2], [ac_cv_search_$2],
905 [ac_func_search_save_LIBS="$LIBS"
906 ac_cv_search_$2="no"
907 AC_TRY_LINK([$1], [$2()], [ac_cv_search_$2="none required"])
908 test "$ac_cv_search_$2" = "no" && for i in $3; do
909 LIBS="-l$i $6 $ac_func_search_save_LIBS"
910 AC_TRY_LINK([$1], [$2()],
911 [ac_cv_search_$2="-l$i"
912 break])
913 done
914 LIBS="$ac_func_search_save_LIBS"])
915 if test "$ac_cv_search_$2" != "no"; then
916   test "$ac_cv_search_$2" = "none required" || LIBS="$ac_cv_search_$2 $LIBS"
917   $4
918 else :
919   $5
920 fi])
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
945 dnl @synopsis FPTOOLS_CHECK_LIBM
946 dnl 
947 dnl Search for math library (typically -lm).
948 dnl
949 dnl The variable LIBM (which is not an output variable by default) is
950 dnl set to a value which is suitable for use in a Makefile (for example,
951 dnl in make's LOADLIBES macro) provided you AC_SUBST it first.
952 dnl
953 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
954
955 # FPTOOLS_CHECK_LIBM - check for math library
956 AC_DEFUN(FPTOOLS_CHECK_LIBM,
957 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
958 LIBM=
959 case "$host" in
960 *-*-beos* | *-*-macosx*)
961   # These system don't have libm
962   ;;
963 *-ncr-sysv4.3*)
964   AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
965   AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
966   ;;
967 *)
968   AC_CHECK_LIB(m, main, LIBM="-lm")
969   ;;
970 esac
971 ])
972
973 dnl ######################################################################
974 dnl NOTE: Because of portability issues between different autoconf
975 dnl versions the AC_HELP_STRING macro has been removed from FPTOOLS_HAVE_OPENGL.
976 dnl Furthermore, caching has been completely rewritten.
977 dnl ######################################################################
978
979 dnl ########################### -*- Mode: M4 -*- #######################
980 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
981 dnl
982 dnl This file is free software; you can redistribute it and/or modify it
983 dnl under the terms of the GNU General Public License as published by
984 dnl the Free Software Foundation; either version 2 of the License, or
985 dnl (at your option) any later version.
986 dnl
987 dnl This file is distributed in the hope that it will be useful, but
988 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
989 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
990 dnl General Public License for more details.
991 dnl
992 dnl You should have received a copy of the GNU General Public License
993 dnl along with this file; if not, write to:
994 dnl
995 dnl   Free Software Foundation, Inc.
996 dnl   Suite 330
997 dnl   59 Temple Place
998 dnl   Boston, MA 02111-1307, USA.
999 dnl ####################################################################
1000
1001 dnl @synopsis FPTOOLS_HAVE_OPENGL
1002 dnl 
1003 dnl Search for OpenGL.  We search first for Mesa (a GPL'ed version of
1004 dnl OpenGL) before a vendor's version of OpenGL, unless we were
1005 dnl specifically asked not to with `--with-Mesa=no' or `--without-Mesa'.
1006 dnl
1007 dnl The four "standard" OpenGL libraries are searched for: "-lGL",
1008 dnl "-lGLU", "-lGLX" (or "-lMesaGL", "-lMesaGLU" as the case may be) and
1009 dnl "-lglut".
1010 dnl
1011 dnl All of the libraries that are found (since "-lglut" or "-lGLX" might
1012 dnl be missing) are added to the shell output variable "GL_LIBS", along
1013 dnl with any other libraries that are necessary to successfully link an
1014 dnl OpenGL application (e.g. the X11 libraries).  Care has been taken to
1015 dnl make sure that all of the libraries in "GL_LIBS" are listed in the
1016 dnl proper order.
1017 dnl
1018 dnl Additionally, the shell output variable "GL_CFLAGS" is set to any
1019 dnl flags (e.g. "-I" flags) that are necessary to successfully compile
1020 dnl an OpenGL application.
1021 dnl
1022 dnl The following shell variable (which are not output variables) are
1023 dnl also set to either "yes" or "no" (depending on which libraries were
1024 dnl found) to help you determine exactly what was found.
1025 dnl
1026 dnl   have_GL
1027 dnl   have_GLU
1028 dnl   have_GLX
1029 dnl   have_glut
1030 dnl
1031 dnl A complete little toy "Automake `make distcheck'" package of how to
1032 dnl use this macro is available at:
1033 dnl
1034 dnl   ftp://ftp.slac.stanford.edu/users/langston/autoconf/ac_opengl-0.01.tar.gz
1035 dnl
1036 dnl Please note that as the ac_opengl macro and the toy example evolves,
1037 dnl the version number increases, so you may have to adjust the above
1038 dnl URL accordingly.
1039 dnl
1040 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
1041
1042 AC_DEFUN(FPTOOLS_HAVE_OPENGL,
1043 [
1044   AC_REQUIRE([AC_PROG_CC])
1045   AC_REQUIRE([AC_PATH_X])
1046   AC_REQUIRE([AC_PATH_XTRA])
1047   AC_REQUIRE([FPTOOLS_CHECK_LIBM])
1048
1049 dnl Check for Mesa first, unless we were asked not to.
1050 dnl    AC_HELP_STRING([--with-Mesa],
1051 dnl                   [Prefer the Mesa library over a vendors native OpenGL library (default=yes)],
1052 dnl                   with_Mesa_help_string)
1053 dnl    AC_ARG_ENABLE(Mesa, $with_Mesa_help_string, use_Mesa=$enableval, use_Mesa=yes)
1054   AC_ARG_ENABLE(Mesa, [  --with-Mesa             Prefer the Mesa library over a vendors native OpenGL library (default=yes)], use_Mesa=$enableval, use_Mesa=yes)
1055
1056   if test x"$use_Mesa" = xyes; then
1057      GL_search_list="MesaGL  GL  opengl32"
1058     GLU_search_list="MesaGLU GLU glu32"
1059     GLX_search_list="MesaGLX GLX"
1060   else
1061      GL_search_list="GL  opengl32 MesaGL"
1062     GLU_search_list="GLU glu32    MesaGLU"
1063     GLX_search_list="GLX          MesaGLX"
1064   fi      
1065
1066   AC_LANG_SAVE
1067   AC_LANG_C
1068
1069 dnl If we are running under X11 then add in the appropriate libraries.
1070   if ! test x"$no_x" = xyes; then
1071 dnl Add everything we need to compile and link X programs to GL_CFLAGS
1072 dnl and GL_X_LIBS.
1073     GL_CFLAGS="$X_CFLAGS"
1074     GL_X_LIBS="$X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS $LIBM"
1075   fi
1076   GL_save_CPPFLAGS="$CPPFLAGS"
1077   CPPFLAGS="$GL_CFLAGS"
1078
1079   GL_save_LIBS="$LIBS"
1080   LIBS="$GL_X_LIBS"
1081
1082   FPTOOLS_SEARCH_LIBS([#include <GL/gl.h>],   glEnd,           $GL_search_list,  have_GL=yes,   have_GL=no)
1083   FPTOOLS_SEARCH_LIBS([#include <GL/glu.h>],  gluNewQuadric,   $GLU_search_list, have_GLU=yes,  have_GLU=no)
1084   FPTOOLS_SEARCH_LIBS([#include <GL/glx.h>],  glXChooseVisual, $GLX_search_list, have_GLX=yes,  have_GLX=no)
1085   FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glutMainLoop,    glut glut32,      have_glut=yes, have_glut=no)
1086
1087   if test -n "$LIBS"; then
1088     GL_LIBS="$LIBS"
1089   else
1090     GL_LIBS=
1091     GL_CFLAGS=
1092   fi
1093
1094   AC_CACHE_CHECK([OpenGL flags], mdl_cv_gl_cflags, [mdl_cv_gl_cflags="$GL_CFLAGS"])
1095   GL_CFLAGS="$mdl_cv_gl_cflags"
1096   AC_SUBST(GL_CFLAGS)
1097   AC_CACHE_CHECK([OpenGL libs],  mdl_cv_gl_libs,   [mdl_cv_gl_libs="$GL_LIBS"])
1098   GL_LIBS="$mdl_cv_gl_libs"
1099   AC_SUBST(GL_LIBS)
1100
1101 dnl Reset GL_X_LIBS regardless, since it was just a temporary variable
1102 dnl and we don't want to be global namespace polluters.
1103   GL_X_LIBS=
1104
1105   LIBS="$GL_save_LIBS"
1106   CPPFLAGS="$GL_save_CPPFLAGS"
1107
1108   AC_LANG_RESTORE
1109 ])
1110
1111 # LocalWords:  fi
1112
1113 dnl 
1114 dnl acspecific.m4's defn of AC_PROG_LEX is a bit too permissive, as it
1115 dnl defaults to 'lex' if 'flex' isn't found (without checking whether
1116 dnl 'lex' is actually present along the user's PATH).
1117 dnl
1118 AC_DEFUN(AC_PROG_LEX_STRICT,
1119 [AC_CHECK_PROG(LEX, flex, flex)
1120 if test -z "$LEX"
1121 then
1122   AC_CHECK_PROG(LEX,lex,lex)
1123   test -z "$LEX" && AC_MSG_ERROR(['lex' or 'flex' is required to compile GHC.])
1124 fi
1125 ])
1126
1127 dnl
1128 dnl Check to see whether CC (gcc) supports a particular option.
1129 dnl 
1130 AC_DEFUN(FPTOOLS_CC_FLAG,
1131 [
1132 AC_CACHE_CHECK([whether $CC accepts $1], [ac_cv_cc_$2],
1133 [save_CFLAGS="$CFLAGS"
1134  CFLAGS="$CFLAGS $1"
1135  AC_LANG_C
1136  AC_TRY_COMPILE(,[int main(){return(0);}],
1137                  [ac_cv_cc_$2=yes],
1138                  [ac_cv_cc_$2=no])
1139  CFLAGS="$save_CFLAGS"
1140 ])
1141 if test "$ac_cv_cc_$2"x = "yesx"; then
1142   $2=$extra_flag;
1143 else
1144   $2=$extra_flag;
1145 fi;
1146 ])