564bcca8a61074e011704043741fd61ceed616a4
[ghc-hetmet.git] / aclocal.m4
1 # Extra autoconf macros for the Glasgow fptools
2 #
3 # To be a good autoconf citizen, names of local macros have prefixed with FP_ to
4 # ensure we don't clash with any pre-supplied autoconf ones.
5
6
7 # FP_EVAL_STDERR(COMMAND)
8 # ------------------------
9 # Eval COMMAND, save its stderr (without lines resulting from shell tracing)
10 # into the file conftest.err and the exit status in the variable fp_status.
11 AC_DEFUN([FP_EVAL_STDERR],
12 [{ (eval $1) 2>conftest.er1
13   fp_status=$?
14   grep -v '^ *+' conftest.er1 >conftest.err
15   rm -f conftest.er1
16   (exit $fp_status); }[]dnl
17 ])# FP_EVAL_STDERR
18
19
20 # FP_CHECK_FLAG(FLAG, [ACTION-IF-SUPPORTED], [ACTION-IF-NOT-SUPPORTED])
21 # -----------------------------------------------------------------------
22 # Check to see whether the compiler for the current language supports a
23 # particular option.
24 #
25 # Implementation note: When given an unkown option, GCC issues an warning on
26 # stderr only, but returns an exit value of 0 nevertheless. Consequently we have
27 # to check stderr *and* the exit value.
28 #
29 # Used by ghc.
30 AC_DEFUN(FP_CHECK_FLAG,
31 [AC_LANG_COMPILER_REQUIRE()dnl
32 AC_LANG_CASE([C],          [fp_compiler="$CC"  m4_pushdef([fp_Flags], [CFLAGS])],
33              [C++],        [fp_compiler="$CXX" m4_pushdef([fp_Flags], [CXXFLAGS])],
34              [Fortran 77], [fp_compiler="$F77" m4_pushdef([fp_Flags], [FFLAGS])])
35 m4_pushdef([fp_Cache], [fp_cv_[]fp_Flags[]AS_TR_SH([$1])])[]dnl
36 AC_CACHE_CHECK([whether $fp_compiler accepts $1], [fp_Cache],
37 [AC_LANG_CONFTEST([AC_LANG_PROGRAM()])
38 fp_save_flags="$fp_Flags"
39 fp_Flags="$fp_Flags $1"
40 fp_Cache=no
41 if FP_EVAL_STDERR([$ac_compile conftest.$ac_ext]) >/dev/null; then
42   test -s conftest.err || fp_Cache=yes
43 fi
44 fp_Flags="$fp_save_flags"
45 rm -f conftest.err conftest.$ac_ext])
46 AS_IF([test $fp_Cache = yes], [$2], [$3])[]dnl
47 m4_popdef([fp_Cache])[]dnl
48 m4_popdef([fp_Flags])[]dnl
49 ])# FP_CHECK_FLAG
50
51
52 # FP_PROG_CONTEXT_DIFF
53 # --------------------
54 # Figure out how to do context diffs. Sets the output variable ContextDiffCmd.
55 #
56 # Note: NeXTStep thinks diff'ing a file against itself is "trouble".
57 #
58 # Used by ghc, glafp-utils/ltx, and glafp-utils/runstdtest.
59 AC_DEFUN([FP_PROG_CONTEXT_DIFF],
60 [AC_CACHE_CHECK([for a working context diff], [fp_cv_context_diff],
61 [echo foo > conftest1
62 echo foo > conftest2
63 fp_cv_context_diff=no
64 for fp_var in '-C 1' '-c1'
65 do
66   if diff $fp_var conftest1 conftest2 > /dev/null 2>&1; then
67     fp_cv_context_diff="diff $fp_var"
68     break
69   fi
70 done])
71 if test x"$fp_cv_context_diff" = xno; then
72    AC_MSG_ERROR([cannot figure out how to do context diffs])
73 fi
74 AC_SUBST(ContextDiffCmd, [$fp_cv_context_diff])
75 ])# FP_PROG_CONTEXT_DIFF
76
77
78 # FP_DECL_ALTZONE
79 # -------------------
80 # Defines HAVE_DECL_ALTZONE to 1 if declared, 0 otherwise.
81 #
82 # Used by base package.
83 AC_DEFUN([FP_DECL_ALTZONE],
84 [AC_REQUIRE([AC_HEADER_TIME])dnl
85 AC_CHECK_HEADERS([sys/time.h])
86 AC_CHECK_DECLS([altzone], [], [],[#if TIME_WITH_SYS_TIME
87 # include <sys/time.h>
88 # include <time.h>
89 #else
90 # if HAVE_SYS_TIME_H
91 #  include <sys/time.h>
92 # else
93 #  include <time.h>
94 # endif
95 #endif])
96 ])# FP_DECL_ALTZONE
97
98
99 # FP_COMPUTE_INT(EXPRESSION, VARIABLE, INCLUDES, IF-FAILS)
100 # ---------------------------------------------------------
101 # Assign VARIABLE the value of the compile-time EXPRESSION using INCLUDES for
102 # compilation. Execute IF-FAILS when unable to determine the value. Works for
103 # cross-compilation, too.
104 #
105 # Implementation note: We are lazy and use an internal autoconf macro, but it
106 # is supported in autoconf versions 2.50 up to the actual 2.57, so there is
107 # little risk.
108 AC_DEFUN([FP_COMPUTE_INT],
109 [_AC_COMPUTE_INT([$1], [$2], [$3], [$4])[]dnl
110 ])# FP_COMPUTE_INT
111
112
113 # FP_CHECK_ALIGNMENT(TYPE, [IGNORED], [INCLUDES = DEFAULT-INCLUDES])
114 # ------------------------------------------------------------------
115 # A variation of AC_CHECK_SIZEOF for computing the alignment restrictions of a
116 # given type. Defines ALIGNMENT_TYPE.
117 AC_DEFUN([FP_CHECK_ALIGNMENT],
118 [AS_LITERAL_IF([$1], [],
119                [AC_FATAL([$0: requires literal arguments])])[]dnl
120 AC_CHECK_TYPE([$1], [], [], [$3])
121 AC_CACHE_CHECK([alignment of $1], AS_TR_SH([fp_cv_alignment_$1]),
122 [if test "$AS_TR_SH([ac_cv_type_$1])" = yes; then
123   FP_COMPUTE_INT([(long) (&((struct { char c; $1 ty; } *)0)->ty)],
124                  [AS_TR_SH([fp_cv_alignment_$1])],
125                  [AC_INCLUDES_DEFAULT([$3])],
126                  [AC_MSG_ERROR([cannot compute alignment ($1)
127 See `config.log' for more details.], [77])])
128 else
129   AS_TR_SH([fp_cv_alignment_$1])=0
130 fi])dnl
131 AC_DEFINE_UNQUOTED(AS_TR_CPP(alignment_$1), $AS_TR_SH([fp_cv_alignment_$1]),
132                    [The alignment of a `$1'.])
133 ])# FP_CHECK_ALIGNMENT
134
135
136 dnl ** check for leading underscores in symbol names
137 dnl 
138 dnl Test for determining whether symbol names have a leading
139 dnl underscore.
140 dnl 
141 dnl We assume that they _haven't_ if anything goes wrong.
142 dnl
143 dnl Some nlist implementations seem to try to be compatible by ignoring
144 dnl a leading underscore sometimes (eg. FreeBSD).  We therefore have
145 dnl to work around this by checking for *no* leading underscore first.
146 dnl Sigh.  --SDM
147 dnl
148 dnl Similarly on OpenBSD, but this test doesn't help. -- dons
149 dnl
150 AC_DEFUN(FPTOOLS_UNDERSCORE,
151 [AC_CHECK_LIB(elf, nlist, LIBS="-lelf $LIBS")dnl
152 AC_CACHE_CHECK([leading underscore in symbol names], fptools_cv_lead_uscore,
153
154 dnl
155 dnl Hack!: nlist() under Digital UNIX insist on there being an _,
156 dnl but symbol table listings shows none. What is going on here?!?
157 dnl
158 dnl Another hack: cygwin doesn't come with nlist.h , so we hardwire
159 dnl the underscoredness of that "platform"
160 changequote(<<, >>)dnl
161 <<
162 case $HostPlatform in
163 *openbsd*) # x86 openbsd is ELF from 3.4 >, meaning no leading uscore
164     case $build in
165         i386-*2\.[[0-9]] | i386-*3\.[[0-3]] ) fptools_cv_lead_uscore='yes' ;;
166         *)      fptools_cv_lead_uscore='no' ;;
167     esac ;;
168 alpha-dec-osf*) fptools_cv_lead_uscore='no';;
169 *cygwin32) fptools_cv_lead_uscore='yes';;
170 *mingw32) fptools_cv_lead_uscore='yes';;
171 *) >>
172 changequote([, ])dnl
173 AC_TRY_RUN([#ifdef HAVE_NLIST_H
174 #include <nlist.h>
175 changequote(<<, >>)dnl
176 <<
177 struct nlist xYzzY1[] = {{"xYzzY1", 0},{0}};
178 struct nlist xYzzY2[] = {{"_xYzzY2", 0},{0}};
179 #endif
180
181 main(argc, argv)
182 int argc;
183 char **argv;
184 {
185 #ifdef HAVE_NLIST_H
186     if(nlist(argv[0], xYzzY1) == 0 && xYzzY1[0].n_value != 0)
187         exit(1);
188     if(nlist(argv[0], xYzzY2) == 0 && xYzzY2[0].n_value != 0)
189         exit(0);>>
190 changequote([, ])dnl
191 #endif
192     exit(1);
193 }], fptools_cv_lead_uscore=yes, fptools_cv_lead_uscore=no, fptools_cv_lead_uscore=NO)
194 ;;
195 esac);
196 LeadingUnderscore=`echo $fptools_cv_lead_uscore | sed 'y/yesno/YESNO/'`
197 AC_SUBST(LeadingUnderscore)
198 case $LeadingUnderscore in
199 YES) AC_DEFINE([LEADING_UNDERSCORE], [1], [Define to 1 if C symbols have a leading underscore added by the compiler.]);;
200 esac
201 ])
202
203 dnl
204 dnl FPTOOLS_PROG_CHECK_VERSION(VERSIONSTR1, TEST, VERSIONSTR2,
205 dnl                            ACTION-IF-TRUE [, ACTION-IF-FALSE])
206 dnl
207 dnl compare versions field-wise (separator is '.')
208 dnl TEST is one of {-lt,-le,-eq,-ge,-gt}
209 dnl
210 dnl quite shell-independant and SUSv2 compliant code
211 dnl
212 dnl NOTE: the loop could be unrolled within autoconf, but the
213 dnl       macro code would be a) longer and b) harder to debug... ;)
214 dnl
215 AC_DEFUN(FPTOOLS_PROG_CHECK_VERSION,
216 [if ( IFS=".";
217       a="[$1]";  b="[$3]";
218       while test -n "$a$b"
219       do
220               set -- [$]a;  h1="[$]1";  shift 2>/dev/null;  a="[$]*"
221               set -- [$]b;  h2="[$]1";  shift 2>/dev/null;  b="[$]*"
222               test -n "[$]h1" || h1=0;  test -n "[$]h2" || h2=0
223               test [$]{h1} -eq [$]{h2} || break
224       done
225       test [$]{h1} [$2] [$]{h2}
226     )
227 then ifelse([$4],,[:],[
228   $4])
229 ifelse([$5],,,
230 [else
231   $5])
232 fi
233 ])])dnl
234
235
236 dnl
237 dnl Check for Greencard and version.
238 dnl
239 AC_DEFUN(FPTOOLS_GREENCARD,
240 [
241 AC_PATH_PROG(GreencardCmd,greencard)
242 AC_CACHE_CHECK([for version of greencard], fptools_cv_greencard_version,
243 changequote(, )dnl
244 [if test x"$GreencardCmd" != x; then
245    fptools_cv_greencard_version="`$GreencardCmd --version |
246                           grep 'version' | sed -e 's/greencard. version \([^ ]*\).*/\1/g'`"
247 else
248    fptools_cv_greencard_version=""
249 fi
250 changequote([, ])dnl
251 ])
252 FPTOOLS_PROG_CHECK_VERSION([$fptools_cv_greencard_version],-lt,$1,
253   [AC_MSG_ERROR([greencard version $1 or later is required (found '$fptools_cv_greencard_version')])])dnl
254 GreencardVersion=$fptools_cv_greencard_version
255 AC_SUBST(GreencardVersion)
256 ])
257
258 dnl
259 dnl Check for Happy and version.  If we're building GHC, then we need
260 dnl at least Happy version 1.13.  If there's no installed Happy, we look
261 dnl for a happy source tree and point the build system at that instead.
262 dnl
263 AC_DEFUN(FPTOOLS_HAPPY,
264 [
265 if test -d $srcdir/happy; then
266    SrcTreeHappyCmd=$hardtop/happy/src/happy-inplace
267 fi
268 if test x"$UseSrcTreeHappy" = xYES; then
269   HappyCmd=$SrcTreeHappyCmd
270 else
271   AC_PATH_PROG(HappyCmd,happy,$SrcTreeHappyCmd)
272 fi
273 AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
274 changequote(, )dnl
275 [if test x"$HappyCmd" = x"$SrcTreeHappyCmd"; then
276    fptools_cv_happy_version=`grep '^ProjectVersion[     ]*=' $srcdir/happy/mk/version.mk | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`;
277 elif test x"$HappyCmd" != x; then
278    fptools_cv_happy_version="`$HappyCmd -v |
279                           grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
280 else
281    fptools_cv_happy_version="";
282 fi;
283 changequote([, ])dnl
284 ])
285 if test -d $srcdir/ghc -a ! -f $srcdir/ghc/compiler/parser/Parser.hs; then
286   FPTOOLS_PROG_CHECK_VERSION([$fptools_cv_happy_version],-lt,[1.13],
287   [AC_MSG_ERROR([Happy version 1.13 or later is required to compile GHC.])])dnl
288 fi
289 HappyVersion=$fptools_cv_happy_version;
290 AC_SUBST(HappyVersion)
291 ])
292
293 dnl
294 dnl Check for Haddock and version.  If there's no installed Haddock, we look
295 dnl for a haddock source tree and point the build system at that instead.
296 dnl
297 AC_DEFUN(FPTOOLS_HADDOCK,
298 [
299 if test -d $srcdir/haddock; then
300    SrcTreeHaddockCmd=$hardtop/haddock/src/haddock-inplace
301 fi
302 if test x"$UseSrcTreeHaddock" = xYES; then
303   HaddockCmd=$SrcTreeHaddockCmd
304 else
305   AC_PATH_PROG(HaddockCmd,haddock,$SrcTreeHaddockCmd)
306 fi
307 dnl Darn, I forgot to make Haddock print out its version number when
308 dnl invoked with -v.  We could try generating some HTML and grepping
309 dnl through that to find the version number, but I think we'll make
310 dnl do without it for now.
311 ])
312
313 dnl
314 dnl Check for Alex and version.  If we're building GHC, then we need
315 dnl at least Alex version 2.0.  If there's no installed Alex, we look
316 dnl for a alex source tree and point the build system at that instead.
317 dnl
318 AC_DEFUN(FPTOOLS_ALEX,
319 [
320 if test -d $srcdir/alex; then
321    SrcTreeAlexCmd=$hardtop/alex/src/alex-inplace
322 fi
323 if test x"$UseSrcTreeAlex" = xYES; then
324   AlexCmd=$SrcTreeAlexCmd
325 else
326   AC_PATH_PROG(AlexCmd,alex,$SrcTreeAlexCmd)
327 fi
328 AC_CACHE_CHECK([for version of alex], fptools_cv_alex_version,
329 changequote(, )dnl
330 [if test x"$AlexCmd" = x"$SrcTreeAlexCmd"; then
331    fptools_cv_alex_version=`grep '^ProjectVersion[      ]*=' $srcdir/alex/mk/version.mk | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`;
332 elif test x"$AlexCmd" != x; then
333    fptools_cv_alex_version="`$AlexCmd -v |
334                           grep 'Alex [Vv]ersion' | sed -e 's/Alex [Vv]ersion \([0-9\.]*\).*/\1/g'`" ;
335 else
336    fptools_cv_alex_version="";
337 fi;
338 changequote([, ])dnl
339 ])
340 dnl if test -d $srcdir/ghc -a ! -f $srcdir/ghc/compiler/parser/Lexer.hs; then
341 dnl   FPTOOLS_PROG_CHECK_VERSION([$fptools_cv_alex_version],-lt,[2.0],
342 dnl   [AC_MSG_ERROR([Alex version 2.0 or later is required to compile GHC.])])dnl
343 dnl fi
344 AlexVersion=$fptools_cv_alex_version;
345 AC_SUBST(AlexVersion)
346 ])
347
348
349 dnl
350 dnl Check whether ld supports -x
351 dnl
352 AC_DEFUN(FPTOOLS_LD_X,
353 [AC_CACHE_CHECK([whether ld understands -x], fptools_cv_ld_x,
354 [
355 echo 'foo() {}' > conftest.c
356 ${CC-cc} -c conftest.c
357 if ${LdCmd} -r -x -o foo.o conftest.o; then
358    fptools_cv_ld_x=yes
359 else
360    fptools_cv_ld_x=no
361 fi
362 rm -rf conftest.c conftest.o foo.o
363 ])
364 if test "$fptools_cv_ld_x" = yes; then
365         LdXFlag=-x
366 else
367         LdXFlag=
368 fi
369 AC_SUBST(LdXFlag)
370 ])
371
372
373 dnl *** Checking for ar and its arguments + whether we need ranlib.
374 dnl
375 dnl ArCmd, ArSupportsInput and RANLIB are AC_SUBST'ed
376 dnl On Digital UNIX, we test for the -Z (compress) and
377 dnl -input (take list of files from external file) flags.
378 dnl 
379 AC_DEFUN(FPTOOLS_PROG_AR_AND_RANLIB,
380 [AC_PATH_PROG(ArCmdRaw,ar)
381 if test -z "$ArCmdRaw"; then
382     echo "You don't seem to have ar in your PATH...I have no idea how to make a library"
383     exit 1;
384 fi
385 dnl GNU ar needs special treatment: it appears to have problems with
386 dnl object files with the same name if you use the 's' modifier, but
387 dnl simple 'ar q' works fine, and doesn't need a separate ranlib.
388 if $ArCmdRaw --version | grep 'GNU' >/dev/null 2>/dev/null; then
389     ArCmdArgs='q'
390     NeedRanLib=''
391 elif $ArCmdRaw clqsZ conftest.a >/dev/null 2>/dev/null; then
392     ArCmdArgs="clqsZ"
393     NeedRanLib=''
394 elif $ArCmdRaw clqs conftest.a >/dev/null 2>/dev/null; then
395     ArCmdArgs="clqs"
396     NeedRanLib=''
397 elif $ArCmdRaw cqs conftest.a >/dev/null 2>/dev/null; then
398     ArCmdArgs="cqs"
399     NeedRanLib=''
400 elif $ArCmdRaw clq conftest.a >/dev/null 2>/dev/null; then
401     ArCmdArgs="clq"
402     NeedRanLib='YES'
403 elif $ArCmdRaw cq conftest.a >/dev/null 2>/dev/null; then
404     ArCmdArgs="cq"
405     NeedRanLib='YES'
406 elif $ArCmdRaw cq conftest.a 2>&1 | grep 'no archive members specified' >/dev/null 2>/dev/null; then
407     ArCmdArgs="cq"
408     NeedRanLib='YES'
409 else
410     echo "I can't figure out how to use your $ArCmd"
411     exit 1
412 fi
413 rm -rf conftest*
414 case $HostPlatform in
415  *mingw32) 
416           ArCmd="`cygpath -w ${ArCmdRaw} | sed -e 's@\\\\@/@g' ` ${ArCmdArgs}"
417           ;;
418  *) ArCmd="${ArCmdRaw} ${ArCmdArgs}"
419     ;;
420 esac
421 test -n "$ArCmd" && test -n "$verbose" && echo "        setting ArCmd to $ArCmd"
422 AC_SUBST(ArCmd)
423 if $ArCmd conftest.a -input /dev/null >/dev/null 2>/dev/null; then
424     ArSupportsInput='-input'
425 else
426     ArSupportsInput=''
427 fi
428 rm -rf conftest*
429 test -n "$ArSupportsInput" && test -n "$verbose" && echo "        setting ArSupportsInput to $ArSupportsInput"
430 AC_SUBST(ArSupportsInput)
431 if test -z "$NeedRanLib"; then
432     RANLIB=':'
433     test -n "$verbose" && echo "        setting RANLIB to $RANLIB"
434     AC_SUBST(RANLIB)
435 else
436     AC_PROG_RANLIB
437 fi
438 ])
439
440 dnl
441 dnl AC_SHEBANG_PERL - can we she-bang perl?
442 dnl
443 AC_DEFUN(FPTOOLS_SHEBANG_PERL,
444 [AC_CACHE_CHECK([if your perl works in shell scripts], fptools_cv_shebang_perl,
445 [echo "#!$PerlCmd"'
446 exit $1;
447 ' > conftest
448 chmod u+x conftest
449 (SHELL=/bin/sh; export SHELL; ./conftest 69 > /dev/null)
450 if test $? -ne 69; then
451    fptools_cv_shebang_perl=yes
452 else
453    fptools_cv_shebang_perl=no
454 fi
455 rm -f conftest
456 ])])
457
458 dnl
459 dnl Extra testing of the result AC_PROG_CC, testing the gcc version no.
460 dnl *Must* be called after AC_PROG_CC
461 dnl
462 AC_DEFUN(FPTOOLS_HAVE_GCC,
463 [AC_CACHE_CHECK([whether you have an ok gcc], fptools_cv_have_gcc,
464 [if test -z "$GCC"; then
465     echo ''
466     echo "You would be better off with gcc"
467     echo "Perhaps it is already installed, but not in your PATH?"
468     fptools_cv_have_gcc='no'
469 else
470 changequote(, )dnl
471     gcc_version_str="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1\.\2/g' `"
472 changequote([, ])dnl
473     fptools_cv_have_gcc='yes'
474     FPTOOLS_PROG_CHECK_VERSION($gcc_version_str, -lt, "2.0",
475         fptools_cv_have_gcc='no'
476         echo ""
477         echo "your gcc version appears to be ..."
478         $CC --version
479         echo "gcc prior to 2.0 and have never worked with ghc."
480         echo "we recommend 2.95.3, although versions back to 2.7.2 should be ok."
481         AC_MSG_ERROR([gcc 1.X has never been supported])
482     )
483 fi
484 ])
485 HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
486 AC_SUBST(HaveGcc)
487 ])
488
489 dnl
490 dnl Some OSs (Mandrake Linux, in particular) configure GCC with
491 dnl -momit-leaf-frame-pointer on by default.  If this is the case, we
492 dnl need to turn it off for mangling to work.  The test is currently a bit
493 dnl crude, using only the version number of gcc.
494 dnl
495 AC_DEFUN(FPTOOLS_GCC_NEEDS_NO_OMIT_LFPTR,
496 [AC_CACHE_CHECK([whether gcc needs -mno-omit-leaf-frame-pointer], fptools_cv_gcc_needs_no_omit_lfptr,
497 [
498  fptools_cv_gcc_needs_no_omit_lfptr='no'
499  FPTOOLS_PROG_CHECK_VERSION($gcc_version_str, -ge, "3.2",
500      fptools_cv_gcc_needs_no_omit_lfptr='yes')
501 ])
502 if test "$fptools_cv_gcc_needs_no_omit_lfptr" = "yes"; then
503    AC_DEFINE([HAVE_GCC_MNO_OMIT_LFPTR], [1], [Define to 1 if gcc supports -mno-omit-leaf-frame-pointer.])
504 fi
505 ])
506
507 dnl Small feature test for perl version. Assumes PerlCmd
508 dnl contains path to perl binary
509 dnl
510 AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION,
511 [$PerlCmd -v >conftest.out 2>&1
512 if grep "version 5" conftest.out >/dev/null 2>&1; then
513    :
514 else
515    if grep "v5.6" conftest.out >/dev/null 2>&1; then
516       :
517    else
518       if grep "v5.8" conftest.out >/dev/null 2>&1; then
519          :
520       else
521          if grep "version 6" conftest.out >/dev/null 2>&1; then
522             :
523          else
524             echo "Your version of perl probably won't work."
525          fi  
526       fi
527    fi
528 fi
529 rm -fr conftest*
530 ])
531
532 dnl
533 dnl Getting at the right version of 'find'
534 dnl (i.e., not the MS util on a Win32 box).
535 dnl
536 AC_DEFUN(FPTOOLS_FIND_FIND,
537 [
538 AC_PATH_PROG(Find2Cmd, find)
539 $Find2Cmd --version > conftest.out 2>&1 
540 if grep "FIND: Parameter format" conftest.out >/dev/null 2>&1 ; then
541    # Encountered MS' find utility, which is not what we're after.
542    #
543    # HACK - AC_CHECK_PROG is useful here in that does let you reject
544    # an (absolute) entry in the path (Find2Cmd). It is not so useful
545    # in that it doesn't let you (AFAIU) set VARIABLE equal to the 
546    # absolute path eventually found. So, hack around this by inspecting
547    # what variables hold the abs. path & use them directly.
548    AC_CHECK_PROG(FindCmd,find,`echo $ac_dir/$ac_word`,find,,$Find2Cmd)
549 else
550 FindCmd=$Find2Cmd
551 AC_SUBST(FindCmd)
552 fi
553 ])
554
555 dnl
556 dnl FPTOOLS_NOCACHE_CHECK prints a message, then sets the
557 dnl values of the second argument to the result of running
558 dnl the commands given by the third. It does not cache its
559 dnl result, so it is suitable for checks which should be
560 dnl run every time.
561 dnl
562 AC_DEFUN(FPTOOLS_NOCACHE_CHECK,
563 [AC_MSG_CHECKING([$1])
564  $3
565  AC_MSG_RESULT([$][$2])
566 ])
567
568 dnl
569 dnl FPTOOLS_GHC_VERSION(version)
570 dnl FPTOOLS_GHC_VERSION(major, minor [, patchlevel])
571 dnl FPTOOLS_GHC_VERSION(version, major, minor, patchlevel)
572 dnl
573 dnl Test for version of installed ghc.  Uses $GHC.
574 dnl [original version pinched from c2hs]
575 dnl
576 AC_DEFUN(FPTOOLS_GHC_VERSION,
577 [FPTOOLS_NOCACHE_CHECK([version of ghc], [fptools_version_of_ghc],
578 ["${WithGhc-ghc}" --version > conftestghc 2>&1
579   cat conftestghc >&AC_FD_CC
580 #Useless Use Of cat award...
581   fptools_version_of_ghc=`cat conftestghc | sed -n -e 's/, patchlevel *\([[0-9]]\)/.\1/;s/.* version \([[0-9]][[0-9.]]*\).*/\1/p'`
582   rm -fr conftest*
583   if test "[$]fptools_version_of_ghc" = ""
584   then
585     fptools_version_of_ghc='unknown'
586   fi
587 fptools_version_of_ghc[_major]=`echo [$]fptools_version_of_ghc | sed -e 's/^\([[0-9]]\).*/\1/'`
588 fptools_version_of_ghc[_minor]=`echo [$]fptools_version_of_ghc | sed -e 's/^[[0-9]]\.\([[0-9]]*\).*/\1/'`
589 fptools_version_of_ghc[_pl]=`echo [$]fptools_version_of_ghc | sed -n -e 's/^[[0-9]]\.[[0-9]]*\.\([[0-9]]*\)/\1/p'`
590 #
591 if test "[$]fptools_version_of_ghc[_pl]" = ""
592 then
593   fptools_version_of_ghc[_all]="[$]fptools_version_of_ghc[_major].[$]fptools_version_of_ghc[_minor]"
594   fptools_version_of_ghc[_pl]="0"
595 else
596   fptools_version_of_ghc[_all]="[$]fptools_version_of_ghc[_major].[$]fptools_version_of_ghc[_minor].[$]fptools_version_of_ghc[_pl]"
597 fi
598 #
599 ifelse($#, [1], [dnl
600 [$1]="[$]fptools_version_of_ghc[_all]"
601 ], $#, [2], [dnl
602 [$1]="[$]fptools_version_of_ghc[_major]"
603 [$2]="[$]fptools_version_of_ghc[_minor]"
604 ], $#, [3], [dnl
605 [$1]="[$]fptools_version_of_ghc[_major]"
606 [$2]="[$]fptools_version_of_ghc[_minor]"
607 [$3]="[$]fptools_version_of_ghc[_pl]"
608 ], $#, [4], [dnl
609 [$1]="[$]fptools_version_of_ghc[_all]"
610 [$2]="[$]fptools_version_of_ghc[_major]"
611 [$3]="[$]fptools_version_of_ghc[_minor]"
612 [$4]="[$]fptools_version_of_ghc[_pl]"
613 ])
614 ])
615 ])dnl
616
617
618 dnl ** Map an arithmetic C type to a Haskell type.
619 dnl    Based on autconf's AC_CHECK_SIZEOF.
620
621 dnl FPTOOLS_CHECK_HTYPE(TYPE [, DEFAULT_VALUE, [, VALUE-FOR-CROSS-COMPILATION])
622 AC_DEFUN(FPTOOLS_CHECK_HTYPE,
623 [changequote(<<, >>)dnl
624 dnl The name to #define.
625 define(<<AC_TYPE_NAME>>, translit(htype_$1, [a-z *], [A-Z_P]))dnl
626 dnl The cache variable name.
627 define(<<AC_CV_NAME>>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl
628 changequote([, ])dnl
629 AC_MSG_CHECKING(Haskell type for $1)
630 AC_CACHE_VAL(AC_CV_NAME,
631 [AC_TRY_RUN([#include <stdio.h>
632 #include <stddef.h>
633
634 #ifdef HAVE_SYS_TYPES_H
635 # include <sys/types.h>
636 #endif
637
638 #ifdef HAVE_UNISTD_H
639 # include <unistd.h>
640 #endif
641
642 #ifdef HAVE_SYS_STAT_H
643 # include <sys/stat.h>
644 #endif
645
646 #ifdef HAVE_FCNTL_H
647 # include <fcntl.h>
648 #endif
649
650 #ifdef HAVE_SIGNAL_H
651 # include <signal.h>
652 #endif
653
654 #ifdef HAVE_TIME_H
655 # include <time.h>
656 #endif
657
658 #ifdef HAVE_TERMIOS_H
659 # include <termios.h>
660 #endif
661
662 #ifdef HAVE_STRING_H
663 # include <string.h>
664 #endif
665
666 #ifdef HAVE_CTYPE_H
667 # include <ctype.h>
668 #endif
669
670 #ifdef HAVE_GL_GL_H
671 # include <GL/gl.h>
672 #endif
673
674 #ifdef HAVE_OPENGL_GL_H
675 # include <OpenGL/gl.h>
676 #endif
677
678 #ifdef HAVE_SYS_RESOURCE_H
679 # include <sys/resource.h>
680 #endif
681
682 typedef $1 testing;
683
684 main() {
685   FILE *f=fopen("conftestval", "w");
686   if (!f) exit(1);
687   if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {
688     fprintf(f, "%s%d\n",
689            ((testing)(-1) < (testing)0) ? "Int" : "Word",
690            sizeof(testing)*8);
691   } else {
692     fprintf(f,"%s\n",
693            (sizeof(testing) >  sizeof(double)) ? "LDouble" :
694            (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");
695   }
696   fclose(f);
697   exit(0);
698 }], AC_CV_NAME=`cat conftestval`,
699 ifelse([$2], , AC_CV_NAME=NotReallyAType,      AC_CV_NAME=$2),
700 ifelse([$3], , AC_CV_NAME=NotReallyATypeCross, AC_CV_NAME=$3))]) dnl
701 AC_MSG_RESULT($AC_CV_NAME)
702 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [Define to Haskell type for $1])
703 undefine([AC_TYPE_NAME])dnl
704 undefine([AC_CV_NAME])dnl
705 ])
706
707
708 dnl ** Obtain the value of a C constant.
709 dnl    The value will be `(-1)' if the constant is undefined.
710 dnl
711 dnl    This is set up so that the argument can be a shell variable.
712 dnl
713 AC_DEFUN(FPTOOLS_CHECK_CCONST,
714 [
715 eval "cv_name=ac_cv_cconst_$1"
716 AC_MSG_CHECKING(value of $1)
717 AC_CACHE_VAL($cv_name,
718 [AC_TRY_RUN([#include <stdio.h>
719 #include <errno.h>
720 main()
721 {
722   FILE *f=fopen("conftestval", "w");
723   if (!f) exit(1);
724   fprintf(f, "%d\n", $1);
725   exit(0);
726 }], 
727 eval "$cv_name=`cat conftestval`",
728 eval "$cv_name=-1",
729 eval "$cv_name=-1")])dnl
730 eval "fptools_check_cconst_result=`echo '$'{$cv_name}`"
731 AC_MSG_RESULT($fptools_check_cconst_result)
732 AC_DEFINE_UNQUOTED(CCONST_$1, $fptools_check_cconst_result, [The value of $1.])
733 unset fptools_check_cconst_result
734 ])
735
736
737 # FP_CHECK_CCONSTS_TEMPLATE(CONST...)
738 # -----------------------------------
739 m4_define([FP_CHECK_CCONSTS_TEMPLATE],
740 [AC_FOREACH([FP_Const], [$1],
741   [AH_TEMPLATE(AS_TR_CPP(CCONST_[]FP_Const),
742                [The value of ]FP_Const[.])])[]dnl
743 ])# FP_CHECK_CCONSTS_TEMPLATE
744
745
746 dnl ** Invoke AC_CHECK_CCONST on each argument (which have to separate with 
747 dnl    spaces)
748 dnl
749 AC_DEFUN(FPTOOLS_CHECK_CCONSTS,
750 [FP_CHECK_CCONSTS_TEMPLATE([$1])dnl
751 for ac_const_name in $1
752 do
753 FPTOOLS_CHECK_CCONST($ac_const_name)dnl
754 done
755 ])
756
757
758 dnl *** Can we open files in binary mode? ***
759 dnl 
760 AC_DEFUN(FPTOOLS_O_BINARY,
761 [
762 AC_REQUIRE([AC_PROG_CC])
763 AC_MSG_CHECKING(whether we can open files in binary mode)
764 AC_CACHE_VAL(fptools_cv_have_o_binary,
765 [
766 AC_LANG_SAVE
767 AC_LANG_C
768 AC_TRY_COMPILE(
769 [#ifdef HAVE_FCNTL_H
770 #include <fcntl.h>
771 #endif],
772 [int x = O_BINARY;],
773 fptools_cv_have_o_binary=yes,
774 fptools_cv_have_o_binary=no)
775 AC_LANG_RESTORE
776 ])
777 AC_MSG_RESULT($fptools_cv_have_o_binary)
778 if test "$fptools_cv_have_o_binary" = yes; then
779   AC_DEFINE([HAVE_O_BINARY], [1], [Define to 1 if fcntl.h defines O_BINARY.])
780 fi
781 ])
782
783
784 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
785
786 dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)
787
788 AC_DEFUN(FPTOOLS_TRY_LINK_NOWARN,
789 [
790 ac_save_LIBS="$LIBS"
791 LIBS=[$1];
792 cat > conftest.$ac_ext <<EOF
793 dnl This sometimes fails to find confdefs.h, for some reason.
794 dnl [#]line __oline__ "[$]0"
795 [#]line __oline__ "configure"
796 #include "confdefs.h"
797 [$2]
798 int t() { return 0; }
799 EOF
800 if AC_TRY_EVAL(ac_link); then
801   ifelse([$3], , :, [
802     LIBS="$ac_save_LIBS"
803     rm -rf conftest*
804     $3])
805   ifelse([$4], , , [else
806     LIBS="$ac_save_LIBS"
807     rm -rf conftest*
808     $4
809 ])dnl
810 fi
811 rm -f conftest*
812 ]
813 )
814
815 dnl Loosely based on AC_CHECK_LIB in acgeneral.m4 in autoconf distribution
816
817 dnl FPTOOLS_CHECK_FLAG_NOWARN(NAME, FLAG, CODE, iftrue, iffalse)
818
819 AC_DEFUN(FPTOOLS_CHECK_FLAG_NOWARN,
820 [AC_MSG_CHECKING([for $1])
821  AC_CACHE_VAL(ac_cv_flag_$1,
822    [FPTOOLS_TRY_LINK_NOWARN("$2", [main() { $3; exit(0); } ],
823      eval "ac_cv_flag_$1=yes",
824      eval "ac_cv_flag_$1=no"
825    )]
826  )
827 if eval "test \"`echo '$ac_cv_flag_'$1`\" = yes"; then
828   AC_MSG_RESULT(yes)
829   LIBS="$2 $LIBS"
830   $4
831 else
832   AC_MSG_RESULT(no)
833   $5
834 fi
835 ])
836
837 dnl FPTOOLS_CHECK_LIB_NOWARN(LIBRARY, FUNCTION)
838
839 AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN,
840 [FPTOOLS_CHECK_FLAG_NOWARN([function_$2],[],[extern char $2(); $2();],
841 [changequote(, )dnl
842   ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
843  changequote([, ])dnl
844  AC_DEFINE_UNQUOTED($ac_tr_lib)
845 ],
846 [FPTOOLS_CHECK_FLAG_NOWARN([library_$1],[-l$1],[extern char $2(); $2();],
847 [changequote(, )dnl
848   ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
849  changequote([, ])dnl
850  AC_DEFINE_UNQUOTED($ac_tr_lib)
851 ],
852 []
853 )])]
854 )
855
856
857 dnl ** Check which CATALOG file we have to use with DocBook SGML.
858 dnl
859 dnl FPTOOLS_DOCBOOK_CATALOG(VARIABLE, JADE, STYLESHEET, CATALOGS-TO-CHECK-FOR)
860 dnl
861 dnl If any of the catalogs given in CATALOGS-TO-CHECK-FOR works on this
862 dnl platform, let VARIABLE refer to this catalog; otherwise, VARIABLE
863 dnl is set to "no".  JADE is the jade executable and STYLESHEET
864 dnl a DocBook style sheet.
865 dnl
866 AC_DEFUN(FPTOOLS_DOCBOOK_CATALOG,
867 [AC_CACHE_CHECK([for DocBook CATALOG], fptools_cv_sgml_catalog,
868 [
869 cat > conftest.sgml << EOF
870 <!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
871 <Article>
872 <ArtHeader>
873 <Title>Test</Title>
874 <Author><OtherName>Test</OtherName></Author>
875 <Address>Test</Address>
876 <PubDate>Test</PubDate>
877 </ArtHeader>
878 <Sect1><Title>Test</Title>
879 <Para>
880 Test.
881 </Para>
882 </Sect1>
883 </Article>
884 EOF
885 fptools_cv_sgml_catalog=no
886 if test -z "$SGML_CATALOG_FILES" ; then
887  for fptools_catalog in $4; do
888    ac_try="$2 -t rtf -d $3#print -c $fptools_catalog conftest.sgml"
889    if AC_TRY_EVAL(ac_try); then
890      fptools_cv_sgml_catalog=[$]fptools_catalog
891      break
892    fi
893  done
894 else
895 # If the env var SGML_CATALOG_FILES is defined, assume things are cool.
896   fptools_cv_sgml_catalog="yes"
897 fi
898 ])
899 rm -rf conftest*
900 if test $fptools_cv_sgml_catalog != "no"; then
901   $1=$fptools_cv_sgml_catalog
902 fi
903 ])
904
905 dnl ######################################################################
906 dnl FPTOOLS_SEARCH_LIBS(INCLUDES, FUNCTION, SEARCH-LIBS [, ACTION-IF-FOUND
907 dnl                     [, ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
908 dnl Search for a library defining FUNC, if it's not already available.
909 dnl This is almost the same as AC_SEARCH_LIBS, but the INCLUDES can be
910 dnl specified.
911 dnl ######################################################################
912
913 AC_DEFUN(FPTOOLS_SEARCH_LIBS,
914 [AC_PREREQ([2.13])
915 AC_CACHE_CHECK([for library containing $2], [ac_cv_search_$2],
916 [ac_func_search_save_LIBS="$LIBS"
917 ac_cv_search_$2="no"
918 AC_TRY_LINK([$1], [$2()], [ac_cv_search_$2="none required"])
919 test "$ac_cv_search_$2" = "no" && for i in $3; do
920 LIBS="-l$i $6 $ac_func_search_save_LIBS"
921 AC_TRY_LINK([$1], [$2()],
922 [ac_cv_search_$2="-l$i"
923 break])
924 done
925 LIBS="$ac_func_search_save_LIBS"])
926 if test "$ac_cv_search_$2" != "no"; then
927   test "$ac_cv_search_$2" = "none required" || LIBS="$ac_cv_search_$2 $LIBS"
928   $4
929 else :
930   $5
931 fi])
932
933 dnl ####################### -*- Mode: M4 -*- ###########################
934 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
935 dnl
936 dnl This file is free software; you can redistribute it and/or modify it
937 dnl under the terms of the GNU General Public License as published by
938 dnl the Free Software Foundation; either version 2 of the License, or
939 dnl (at your option) any later version.
940 dnl
941 dnl This file is distributed in the hope that it will be useful, but
942 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
943 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
944 dnl General Public License for more details.
945 dnl
946 dnl You should have received a copy of the GNU General Public License
947 dnl along with this file; if not, write to:
948 dnl
949 dnl   Free Software Foundation, Inc.
950 dnl   Suite 330
951 dnl   59 Temple Place
952 dnl   Boston, MA 02111-1307, USA.
953 dnl ####################################################################
954
955
956 dnl @synopsis FPTOOLS_CHECK_LIBM
957 dnl 
958 dnl Search for math library (typically -lm).
959 dnl
960 dnl The variable LIBM (which is not an output variable by default) is
961 dnl set to a value which is suitable for use in a Makefile (for example,
962 dnl in make's LOADLIBES macro) provided you AC_SUBST it first.
963 dnl
964 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
965
966 # FPTOOLS_CHECK_LIBM - check for math library
967 AC_DEFUN(FPTOOLS_CHECK_LIBM,
968 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
969 LIBM=
970 case "$host" in
971 *-*-beos*)
972   # These system don't have libm
973   ;;
974 *-ncr-sysv4.3*)
975   AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
976   AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
977   ;;
978 *)
979   AC_CHECK_LIB(m, main, LIBM="-lm")
980   ;;
981 esac
982 ])
983
984 dnl ######################################################################
985 dnl Note: Caching has been completely rewritten, but is still no perfect yet.
986 dnl ######################################################################
987
988 dnl ########################### -*- Mode: M4 -*- #######################
989 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
990 dnl
991 dnl This file is free software; you can redistribute it and/or modify it
992 dnl under the terms of the GNU General Public License as published by
993 dnl the Free Software Foundation; either version 2 of the License, or
994 dnl (at your option) any later version.
995 dnl
996 dnl This file is distributed in the hope that it will be useful, but
997 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
998 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
999 dnl General Public License for more details.
1000 dnl
1001 dnl You should have received a copy of the GNU General Public License
1002 dnl along with this file; if not, write to:
1003 dnl
1004 dnl   Free Software Foundation, Inc.
1005 dnl   Suite 330
1006 dnl   59 Temple Place
1007 dnl   Boston, MA 02111-1307, USA.
1008 dnl ####################################################################
1009
1010 dnl @synopsis FPTOOLS_HAVE_OPENGL
1011 dnl 
1012 dnl Search for OpenGL.  We search first for Mesa (a GPL'ed version of
1013 dnl OpenGL) before a vendor's version of OpenGL if we were specifically
1014 dnl asked to with `--with-Mesa=yes' or `--with-Mesa'.
1015 dnl
1016 dnl The four "standard" OpenGL libraries are searched for: "-lGL",
1017 dnl "-lGLU", "-lGLX" (or "-lMesaGL", "-lMesaGLU" as the case may be) and
1018 dnl "-lglut".
1019 dnl
1020 dnl All of the libraries that are found (since "-lglut" or "-lGLX" might
1021 dnl be missing) are added to the shell output variable "GL_LIBS", along
1022 dnl with any other libraries that are necessary to successfully link an
1023 dnl OpenGL application (e.g. the X11 libraries).  Care has been taken to
1024 dnl make sure that all of the libraries in "GL_LIBS" are listed in the
1025 dnl proper order.
1026 dnl
1027 dnl Additionally, the shell output variable "GL_CFLAGS" is set to any
1028 dnl flags (e.g. "-I" flags) that are necessary to successfully compile
1029 dnl an OpenGL application.
1030 dnl
1031 dnl The following shell variable (which are not output variables) are
1032 dnl also set to either "yes" or "no" (depending on which libraries were
1033 dnl found) to help you determine exactly what was found.
1034 dnl
1035 dnl   have_GL
1036 dnl   have_GLU
1037 dnl   have_GLX
1038 dnl   have_glut
1039 dnl
1040 dnl A complete little toy "Automake `make distcheck'" package of how to
1041 dnl use this macro is available at:
1042 dnl
1043 dnl   ftp://ftp.slac.stanford.edu/users/langston/autoconf/ac_opengl-0.01.tar.gz
1044 dnl
1045 dnl Please note that as the ac_opengl macro and the toy example evolves,
1046 dnl the version number increases, so you may have to adjust the above
1047 dnl URL accordingly.
1048 dnl
1049 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
1050
1051 AC_DEFUN(FPTOOLS_HAVE_OPENGL,
1052 [
1053   AC_REQUIRE([AC_PROG_CC])
1054   AC_REQUIRE([AC_PATH_X])
1055   AC_REQUIRE([AC_PATH_XTRA])
1056   AC_REQUIRE([FPTOOLS_CHECK_LIBM])
1057
1058 dnl Check for Mesa first if we were asked to.
1059   AC_ARG_ENABLE(Mesa,
1060 [  --enable-mesa
1061         Prefer Mesa over a vendor's native OpenGL library (default=no)
1062 ],
1063                 use_Mesa=$enableval,
1064                 use_Mesa=no)
1065
1066   if test x"$use_Mesa" = xyes; then
1067      GL_search_list="MesaGL  GL  opengl32"
1068     GLU_search_list="MesaGLU GLU glu32"
1069     GLX_search_list="MesaGLX GLX"
1070   else
1071      GL_search_list="GL  opengl32 MesaGL"
1072     GLU_search_list="GLU glu32    MesaGLU"
1073     GLX_search_list="GLX          MesaGLX"
1074   fi      
1075
1076   AC_LANG_SAVE
1077   AC_LANG_C
1078
1079 dnl If we are running under X11 then add in the appropriate libraries.
1080   if test x"$no_x" != xyes; then
1081 dnl Add everything we need to compile and link X programs to GL_CFLAGS
1082 dnl and GL_X_LIBS/GLUT_X_LIBS.
1083     GL_CFLAGS="$CPPFLAGS $X_CFLAGS"
1084     GL_X_LIBS="$X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS $LIBM"
1085     GLUT_X_LIBS="$X_LIBS $X_PRE_LIBS -lXmu -lXt -lXi -lXext -lX11 $X_EXTRA_LIBS $LIBM"
1086   fi
1087   GL_save_CPPFLAGS="$CPPFLAGS"
1088   CPPFLAGS="$GL_CFLAGS"
1089
1090   GL_save_LIBS="$LIBS"
1091   LIBS="$GL_X_LIBS"
1092
1093   FPTOOLS_SEARCH_LIBS([#include <GL/gl.h>],   glEnd,         $GL_search_list,  have_GL=yes,   have_GL=no)
1094   FPTOOLS_SEARCH_LIBS([#include <GL/glu.h>],  gluNewQuadric, $GLU_search_list, have_GLU=yes,  have_GLU=no)
1095   FPTOOLS_SEARCH_LIBS([#include <GL/glx.h>],  glXWaitX,      $GLX_search_list, have_GLX=yes,  have_GLX=no)
1096
1097   if test -n "$LIBS"; then
1098     GL_LIBS="$LDFLAGS $LIBS"
1099   else
1100     GL_LIBS="$LDFLAGS"
1101     GL_CFLAGS=
1102   fi
1103
1104   LIBS="$GLUT_X_LIBS"
1105
1106   FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glutMainLoop,  glut32 glut,      have_glut=yes, have_glut=no)
1107
1108   if test -n "$LIBS"; then
1109     GLUT_LIBS="$LDFLAGS $LIBS"
1110   fi
1111
1112   AC_CACHE_CHECK([OpenGL flags], mdl_cv_gl_cflags, [mdl_cv_gl_cflags="$GL_CFLAGS"])
1113   GL_CFLAGS="$mdl_cv_gl_cflags"
1114   AC_SUBST(GL_CFLAGS)
1115   AC_CACHE_CHECK([OpenGL libs],  mdl_cv_gl_libs,   [mdl_cv_gl_libs="$GL_LIBS"])
1116   GL_LIBS="$mdl_cv_gl_libs"
1117   AC_SUBST(GL_LIBS)
1118   AC_CACHE_CHECK([GLUT libs],  mdl_cv_glut_libs,   [mdl_cv_glut_libs="$GLUT_LIBS"])
1119   GLUT_LIBS="$mdl_cv_glut_libs"
1120   AC_SUBST(GLUT_LIBS)
1121
1122 dnl Reset GL_X_LIBS/GLUT_X_LIBS regardless, since they were just temporary variables
1123 dnl and we don't want to be global namespace polluters.
1124   GL_X_LIBS=
1125   GLUT_X_LIBS=
1126
1127   LIBS="$GL_save_LIBS"
1128   CPPFLAGS="$GL_save_CPPFLAGS"
1129
1130   AC_LANG_RESTORE
1131 ])
1132
1133 # LocalWords:  fi