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