[project @ 2003-08-18 15:53:51 by panne]
[ghc.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
667 dnl ** Obtain the value of a C constant.
668 dnl    The value will be `(-1)' if the constant is undefined.
669 dnl
670 dnl    This is set up so that the argument can be a shell variable.
671 dnl
672 AC_DEFUN(FPTOOLS_CHECK_CCONST,
673 [
674 eval "cv_name=ac_cv_cconst_$1"
675 AC_MSG_CHECKING(value of $1)
676 AC_CACHE_VAL($cv_name,
677 [AC_TRY_RUN([#include <stdio.h>
678 #include <errno.h>
679 main()
680 {
681   FILE *f=fopen("conftestval", "w");
682   if (!f) exit(1);
683   fprintf(f, "%d\n", $1);
684   exit(0);
685 }], 
686 eval "$cv_name=`cat conftestval`",
687 eval "$cv_name=-1",
688 eval "$cv_name=-1")])dnl
689 eval "fptools_check_cconst_result=`echo '$'{$cv_name}`"
690 AC_MSG_RESULT($fptools_check_cconst_result)
691 AC_DEFINE_UNQUOTED(CCONST_$1, $fptools_check_cconst_result)
692 unset fptools_check_cconst_result
693 ])
694
695 dnl ** Invoke AC_CHECK_CCONST on each argument (which have to separate with 
696 dnl    spaces)
697 dnl
698 AC_DEFUN(FPTOOLS_CHECK_CCONSTS,
699 [for ac_const_name in $1
700 do
701 FPTOOLS_CHECK_CCONST($ac_const_name)dnl
702 done
703 ])
704
705
706 dnl *** Can we open files in binary mode? ***
707 dnl 
708 AC_DEFUN(FPTOOLS_O_BINARY,
709 [
710 AC_REQUIRE([AC_PROG_CC])
711 AC_MSG_CHECKING(whether we can open files in binary mode)
712 AC_CACHE_VAL(fptools_cv_have_o_binary,
713 [
714 AC_LANG_SAVE
715 AC_LANG_C
716 AC_TRY_COMPILE(
717 [#ifdef HAVE_FCNTL_H
718 #include <fcntl.h>
719 #endif],
720 [int x = O_BINARY;],
721 fptools_cv_have_o_binary=yes,
722 fptools_cv_have_o_binary=no)
723 AC_LANG_RESTORE
724 ])
725 AC_MSG_RESULT($fptools_cv_have_o_binary)
726 if test "$fptools_cv_have_o_binary" = yes; then
727 AC_DEFINE(HAVE_O_BINARY)
728 fi
729 ])
730
731 dnl *** Helper function **
732 dnl 
733 AC_DEFUN(FPTOOLS_IN_SCOPE,
734 [AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no)
735 ])
736
737
738 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
739
740 dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)
741
742 AC_DEFUN(FPTOOLS_TRY_LINK_NOWARN,
743 [
744 ac_save_LIBS="$LIBS"
745 LIBS=[$1];
746 cat > conftest.$ac_ext <<EOF
747 dnl This sometimes fails to find confdefs.h, for some reason.
748 dnl [#]line __oline__ "[$]0"
749 [#]line __oline__ "configure"
750 #include "confdefs.h"
751 [$2]
752 int t() { return 0; }
753 EOF
754 if AC_TRY_EVAL(ac_link); then
755   ifelse([$3], , :, [
756     LIBS="$ac_save_LIBS"
757     rm -rf conftest*
758     $3])
759   ifelse([$4], , , [else
760     LIBS="$ac_save_LIBS"
761     rm -rf conftest*
762     $4
763 ])dnl
764 fi
765 rm -f conftest*
766 ]
767 )
768
769 dnl Loosely based on AC_CHECK_LIB in acgeneral.m4 in autoconf distribution
770
771 dnl FPTOOLS_CHECK_FLAG_NOWARN(NAME, FLAG, CODE, iftrue, iffalse)
772
773 AC_DEFUN(FPTOOLS_CHECK_FLAG_NOWARN,
774 [AC_MSG_CHECKING([for $1])
775  AC_CACHE_VAL(ac_cv_flag_$1,
776    [FPTOOLS_TRY_LINK_NOWARN("$2", [main() { $3; exit(0); } ],
777      eval "ac_cv_flag_$1=yes",
778      eval "ac_cv_flag_$1=no"
779    )]
780  )
781 if eval "test \"`echo '$ac_cv_flag_'$1`\" = yes"; then
782   AC_MSG_RESULT(yes)
783   LIBS="$2 $LIBS"
784   $4
785 else
786   AC_MSG_RESULT(no)
787   $5
788 fi
789 ])
790
791 dnl FPTOOLS_CHECK_LIB_NOWARN(LIBRARY, FUNCTION)
792
793 AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN,
794 [FPTOOLS_CHECK_FLAG_NOWARN([function_$2],[],[extern char $2(); $2();],
795 [changequote(, )dnl
796   ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
797  changequote([, ])dnl
798  AC_DEFINE_UNQUOTED($ac_tr_lib)
799 ],
800 [FPTOOLS_CHECK_FLAG_NOWARN([library_$1],[-l$1],[extern char $2(); $2();],
801 [changequote(, )dnl
802   ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
803  changequote([, ])dnl
804  AC_DEFINE_UNQUOTED($ac_tr_lib)
805 ],
806 []
807 )])]
808 )
809
810 dnl check for prototypes
811 dnl
812 AC_DEFUN([AC_C_PROTOTYPES],
813 [AC_CACHE_CHECK([prototypes], ac_cv_prototypes,
814 [AC_TRY_COMPILE([
815 void foo(int);
816 void foo(i)
817 int i; { 
818 return;
819 }
820 ],
821 [int i;], 
822 ac_cv_prototypes=yes,
823 ac_cv_prototypes=no)])
824 if test "$ac_cv_prototypes" = yes; then
825 AC_DEFINE([HAVE_PROTOTYPES])
826 fi
827 ])
828
829 dnl ** Check which CATALOG file we have to use with DocBook SGML.
830 dnl
831 dnl FPTOOLS_DOCBOOK_CATALOG(VARIABLE, JADE, STYLESHEET, CATALOGS-TO-CHECK-FOR)
832 dnl
833 dnl If any of the catalogs given in CATALOGS-TO-CHECK-FOR works on this
834 dnl platform, let VARIABLE refer to this catalog; otherwise, VARIABLE
835 dnl is set to "no".  JADE is the jade executable and STYLESHEET
836 dnl a DocBook style sheet.
837 dnl
838 AC_DEFUN(FPTOOLS_DOCBOOK_CATALOG,
839 [AC_CACHE_CHECK([for DocBook CATALOG], fptools_cv_sgml_catalog,
840 [
841 cat > conftest.sgml << EOF
842 <!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
843 <Article>
844 <ArtHeader>
845 <Title>Test</Title>
846 <Author><OtherName>Test</OtherName></Author>
847 <Address>Test</Address>
848 <PubDate>Test</PubDate>
849 </ArtHeader>
850 <Sect1><Title>Test</Title>
851 <Para>
852 Test.
853 </Para>
854 </Sect1>
855 </Article>
856 EOF
857 fptools_cv_sgml_catalog=no
858 if test -z "$SGML_CATALOG_FILES" ; then
859  for fptools_catalog in $4; do
860    ac_try="$2 -t rtf -d $3#print -c $fptools_catalog conftest.sgml"
861    if AC_TRY_EVAL(ac_try); then
862      fptools_cv_sgml_catalog=[$]fptools_catalog
863      break
864    fi
865  done
866 else
867 # If the env var SGML_CATALOG_FILES is defined, assume things are cool.
868   fptools_cv_sgml_catalog="yes"
869 fi
870 ])
871 rm -rf conftest*
872 if test $fptools_cv_sgml_catalog != "no"; then
873   $1=$fptools_cv_sgml_catalog
874 fi
875 ])
876
877 dnl ######################################################################
878 dnl FPTOOLS_SEARCH_LIBS(INCLUDES, FUNCTION, SEARCH-LIBS [, ACTION-IF-FOUND
879 dnl                     [, ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
880 dnl Search for a library defining FUNC, if it's not already available.
881 dnl This is almost the same as AC_SEARCH_LIBS, but the INCLUDES can be
882 dnl specified.
883 dnl ######################################################################
884
885 AC_DEFUN(FPTOOLS_SEARCH_LIBS,
886 [AC_PREREQ([2.13])
887 AC_CACHE_CHECK([for library containing $2], [ac_cv_search_$2],
888 [ac_func_search_save_LIBS="$LIBS"
889 ac_cv_search_$2="no"
890 AC_TRY_LINK([$1], [$2()], [ac_cv_search_$2="none required"])
891 test "$ac_cv_search_$2" = "no" && for i in $3; do
892 LIBS="-l$i $6 $ac_func_search_save_LIBS"
893 AC_TRY_LINK([$1], [$2()],
894 [ac_cv_search_$2="-l$i"
895 break])
896 done
897 LIBS="$ac_func_search_save_LIBS"])
898 if test "$ac_cv_search_$2" != "no"; then
899   test "$ac_cv_search_$2" = "none required" || LIBS="$ac_cv_search_$2 $LIBS"
900   $4
901 else :
902   $5
903 fi])
904
905 dnl ####################### -*- Mode: M4 -*- ###########################
906 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
907 dnl
908 dnl This file is free software; you can redistribute it and/or modify it
909 dnl under the terms of the GNU General Public License as published by
910 dnl the Free Software Foundation; either version 2 of the License, or
911 dnl (at your option) any later version.
912 dnl
913 dnl This file is distributed in the hope that it will be useful, but
914 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
915 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
916 dnl General Public License for more details.
917 dnl
918 dnl You should have received a copy of the GNU General Public License
919 dnl along with this file; if not, write to:
920 dnl
921 dnl   Free Software Foundation, Inc.
922 dnl   Suite 330
923 dnl   59 Temple Place
924 dnl   Boston, MA 02111-1307, USA.
925 dnl ####################################################################
926
927
928 dnl @synopsis FPTOOLS_CHECK_LIBM
929 dnl 
930 dnl Search for math library (typically -lm).
931 dnl
932 dnl The variable LIBM (which is not an output variable by default) is
933 dnl set to a value which is suitable for use in a Makefile (for example,
934 dnl in make's LOADLIBES macro) provided you AC_SUBST it first.
935 dnl
936 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
937
938 # FPTOOLS_CHECK_LIBM - check for math library
939 AC_DEFUN(FPTOOLS_CHECK_LIBM,
940 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
941 LIBM=
942 case "$host" in
943 *-*-beos*)
944   # These system don't have libm
945   ;;
946 *-ncr-sysv4.3*)
947   AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
948   AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
949   ;;
950 *)
951   AC_CHECK_LIB(m, main, LIBM="-lm")
952   ;;
953 esac
954 ])
955
956 dnl ######################################################################
957 dnl Note: Caching has been completely rewritten, but is still no perfect yet.
958 dnl ######################################################################
959
960 dnl ########################### -*- Mode: M4 -*- #######################
961 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
962 dnl
963 dnl This file is free software; you can redistribute it and/or modify it
964 dnl under the terms of the GNU General Public License as published by
965 dnl the Free Software Foundation; either version 2 of the License, or
966 dnl (at your option) any later version.
967 dnl
968 dnl This file is distributed in the hope that it will be useful, but
969 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
970 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
971 dnl General Public License for more details.
972 dnl
973 dnl You should have received a copy of the GNU General Public License
974 dnl along with this file; if not, write to:
975 dnl
976 dnl   Free Software Foundation, Inc.
977 dnl   Suite 330
978 dnl   59 Temple Place
979 dnl   Boston, MA 02111-1307, USA.
980 dnl ####################################################################
981
982 dnl @synopsis FPTOOLS_HAVE_OPENGL
983 dnl 
984 dnl Search for OpenGL.  We search first for Mesa (a GPL'ed version of
985 dnl OpenGL) before a vendor's version of OpenGL if we were specifically
986 dnl asked to with `--with-Mesa=yes' or `--with-Mesa'.
987 dnl
988 dnl The four "standard" OpenGL libraries are searched for: "-lGL",
989 dnl "-lGLU", "-lGLX" (or "-lMesaGL", "-lMesaGLU" as the case may be) and
990 dnl "-lglut".
991 dnl
992 dnl All of the libraries that are found (since "-lglut" or "-lGLX" might
993 dnl be missing) are added to the shell output variable "GL_LIBS", along
994 dnl with any other libraries that are necessary to successfully link an
995 dnl OpenGL application (e.g. the X11 libraries).  Care has been taken to
996 dnl make sure that all of the libraries in "GL_LIBS" are listed in the
997 dnl proper order.
998 dnl
999 dnl Additionally, the shell output variable "GL_CFLAGS" is set to any
1000 dnl flags (e.g. "-I" flags) that are necessary to successfully compile
1001 dnl an OpenGL application.
1002 dnl
1003 dnl The following shell variable (which are not output variables) are
1004 dnl also set to either "yes" or "no" (depending on which libraries were
1005 dnl found) to help you determine exactly what was found.
1006 dnl
1007 dnl   have_GL
1008 dnl   have_GLU
1009 dnl   have_GLX
1010 dnl   have_glut
1011 dnl
1012 dnl A complete little toy "Automake `make distcheck'" package of how to
1013 dnl use this macro is available at:
1014 dnl
1015 dnl   ftp://ftp.slac.stanford.edu/users/langston/autoconf/ac_opengl-0.01.tar.gz
1016 dnl
1017 dnl Please note that as the ac_opengl macro and the toy example evolves,
1018 dnl the version number increases, so you may have to adjust the above
1019 dnl URL accordingly.
1020 dnl
1021 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
1022
1023 AC_DEFUN(FPTOOLS_HAVE_OPENGL,
1024 [
1025   AC_REQUIRE([AC_PROG_CC])
1026   AC_REQUIRE([AC_PATH_X])
1027   AC_REQUIRE([AC_PATH_XTRA])
1028   AC_REQUIRE([FPTOOLS_CHECK_LIBM])
1029
1030 dnl Check for Mesa first if we were asked to.
1031   AC_ARG_ENABLE(Mesa,
1032 [  --enable-mesa
1033         Prefer Mesa over a vendor's native OpenGL library (default=no)
1034 ],
1035                 use_Mesa=$enableval,
1036                 use_Mesa=no)
1037
1038   if test x"$use_Mesa" = xyes; then
1039      GL_search_list="MesaGL  GL  opengl32"
1040     GLU_search_list="MesaGLU GLU glu32"
1041     GLX_search_list="MesaGLX GLX"
1042   else
1043      GL_search_list="GL  opengl32 MesaGL"
1044     GLU_search_list="GLU glu32    MesaGLU"
1045     GLX_search_list="GLX          MesaGLX"
1046   fi      
1047
1048   AC_LANG_SAVE
1049   AC_LANG_C
1050
1051 dnl If we are running under X11 then add in the appropriate libraries.
1052   if test x"$no_x" != xyes; then
1053 dnl Add everything we need to compile and link X programs to GL_CFLAGS
1054 dnl and GL_X_LIBS/GLUT_X_LIBS.
1055     GL_CFLAGS="$CPPFLAGS $X_CFLAGS"
1056     GL_X_LIBS="$X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS $LIBM"
1057     GLUT_X_LIBS="$X_LIBS $X_PRE_LIBS -lXmu -lXt -lXi -lXext -lX11 $X_EXTRA_LIBS $LIBM"
1058   fi
1059   GL_save_CPPFLAGS="$CPPFLAGS"
1060   CPPFLAGS="$GL_CFLAGS"
1061
1062   GL_save_LIBS="$LIBS"
1063   LIBS="$GL_X_LIBS"
1064
1065   FPTOOLS_SEARCH_LIBS([#include <GL/gl.h>],   glEnd,         $GL_search_list,  have_GL=yes,   have_GL=no)
1066   FPTOOLS_SEARCH_LIBS([#include <GL/glu.h>],  gluNewQuadric, $GLU_search_list, have_GLU=yes,  have_GLU=no)
1067   FPTOOLS_SEARCH_LIBS([#include <GL/glx.h>],  glXWaitX,      $GLX_search_list, have_GLX=yes,  have_GLX=no)
1068
1069   if test -n "$LIBS"; then
1070     GL_LIBS="$LDFLAGS $LIBS"
1071   else
1072     GL_LIBS="$LDFLAGS"
1073     GL_CFLAGS=
1074   fi
1075
1076   LIBS="$GLUT_X_LIBS"
1077
1078   FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glutMainLoop,  glut32 glut,      have_glut=yes, have_glut=no)
1079
1080   if test -n "$LIBS"; then
1081     GLUT_LIBS="$LDFLAGS $LIBS"
1082   fi
1083
1084   AC_CACHE_CHECK([OpenGL flags], mdl_cv_gl_cflags, [mdl_cv_gl_cflags="$GL_CFLAGS"])
1085   GL_CFLAGS="$mdl_cv_gl_cflags"
1086   AC_SUBST(GL_CFLAGS)
1087   AC_CACHE_CHECK([OpenGL libs],  mdl_cv_gl_libs,   [mdl_cv_gl_libs="$GL_LIBS"])
1088   GL_LIBS="$mdl_cv_gl_libs"
1089   AC_SUBST(GL_LIBS)
1090   AC_CACHE_CHECK([GLUT libs],  mdl_cv_glut_libs,   [mdl_cv_glut_libs="$GLUT_LIBS"])
1091   GLUT_LIBS="$mdl_cv_glut_libs"
1092   AC_SUBST(GLUT_LIBS)
1093
1094 dnl Reset GL_X_LIBS/GLUT_X_LIBS regardless, since they were just temporary variables
1095 dnl and we don't want to be global namespace polluters.
1096   GL_X_LIBS=
1097   GLUT_X_LIBS=
1098
1099   LIBS="$GL_save_LIBS"
1100   CPPFLAGS="$GL_save_CPPFLAGS"
1101
1102   AC_LANG_RESTORE
1103 ])
1104
1105 # LocalWords:  fi
1106
1107
1108 dnl
1109 dnl Check to see whether CC (gcc) supports a particular option.
1110 dnl
1111 AC_DEFUN(FPTOOLS_CC_FLAG,
1112 [
1113 AC_CACHE_CHECK([whether $CC accepts $1], [ac_cv_cc_$2],
1114 [save_CFLAGS="$CFLAGS"
1115  CFLAGS="$CFLAGS $1"
1116  AC_LANG_C
1117  AC_TRY_COMPILE(,[int main(){return(0);}],
1118                  [ac_cv_cc_$2=yes],
1119                  [ac_cv_cc_$2=no])
1120  CFLAGS="$save_CFLAGS"
1121 ])
1122 if test "$ac_cv_cc_$2"x = "yesx"; then
1123   $2=$1;
1124 else
1125   $2="";
1126 fi;
1127 ])
1128
1129 dnl
1130 dnl Check to see whether 'struct msghdr' contains msg_control
1131 dnl 
1132 AC_DEFUN(FPTOOLS_MSGHDR_MSG_CONTROL,
1133 [AC_CACHE_CHECK([for msg_control in struct msghdr], fptools_cv_struct_msghdr_msg_control,
1134 [AC_TRY_COMPILE([#include <sys/types.h>
1135 #include <sys/uio.h>
1136 #include <sys/socket.h>], [struct msghdr m; m.msg_control;],
1137 fptools_cv_struct_msghdr_msg_control=yes, fptools_cv_struct_msghdr_msg_control=no)])
1138 if test $fptools_cv_struct_msghdr_msg_control = yes; then
1139   AC_DEFINE(HAVE_MSGHDR_MSG_CONTROL)
1140 fi
1141 AC_SUBST(HAVE_MSGHDR_MSG_CONTROL)dnl
1142 ])
1143
1144 dnl
1145 dnl Check to see whether 'struct msghdr' contains msg_accrights
1146 dnl 
1147 AC_DEFUN(FPTOOLS_MSGHDR_MSG_ACCRIGHTS,
1148 [AC_CACHE_CHECK([for msg_accrights in struct msghdr], fptools_cv_struct_msghdr_msg_accrights,
1149 [AC_TRY_COMPILE([#include <sys/types.h>
1150 #include <sys/uio.h>
1151 #include <sys/socket.h>], [struct msghdr m; m.msg_accrights;],
1152 fptools_cv_struct_msghdr_msg_accrights=yes, fptools_cv_struct_msghdr_msg_accrights=no)])
1153 if test $fptools_cv_struct_msghdr_msg_accrights = yes; then
1154   AC_DEFINE(HAVE_MSGHDR_MSG_ACCRIGHTS)
1155 fi
1156 AC_SUBST(HAVE_MSGHDR_MSG_ACCRIGHTS)dnl
1157 ])
1158