1 dnl $Id: aclocal.m4,v 1.75 2001/06/26 23:12:19 sof Exp $
3 dnl Extra autoconf macros for the Glasgow fptools
5 dnl To be a good autoconf citizen, names of local macros have
6 dnl prefixed with FPTOOLS_ to ensure we don't clash
7 dnl with any pre-supplied autoconf ones.
10 dnl Is timezone around? (in a header file)
12 AC_DEFUN(FPTOOLS_HAVE_TIMEZONE,
13 [AC_CACHE_CHECK([timezone], fptools_cv_have_timezone,
14 [AC_TRY_COMPILE([#if TIME_WITH_SYS_TIME
15 # include <sys/time.h>
19 # include <sys/time.h>
24 ], [return timezone;],
25 fptools_cv_have_timezone=yes, fptools_cv_have_timezone=no)])
26 if test "$fptools_cv_have_timezone" = yes; then
27 AC_DEFINE(HAVE_TIMEZONE)
32 dnl Has timezone the type time_t or long (HP-UX 10.20 apparently
35 AC_DEFUN(FPTOOLS_TYPE_TIMEZONE,
36 [AC_CACHE_CHECK([type of timezone], fptools_cv_type_timezone,
37 [AC_TRY_COMPILE([#if TIME_WITH_SYS_TIME
38 # include <sys/time.h>
42 # include <sys/time.h>
48 extern time_t timezone;
50 [int i;], fptools_cv_type_timezone=time_t, fptools_cv_type_timezone=long)])
51 AC_DEFINE_UNQUOTED(TYPE_TIMEZONE, $fptools_cv_type_timezone)
54 dnl *** Is altzone available? ***
56 AC_DEFUN(FPTOOLS_ALTZONE,
57 [AC_CACHE_CHECK([altzone], fptools_cv_altzone,
58 [AC_TRY_LINK([#if TIME_WITH_SYS_TIME
59 # include <sys/time.h>
63 # include <sys/time.h>
69 fptools_cv_altzone=yes, fptools_cv_altzone=no)])
70 if test "$fptools_cv_altzone" = yes; then
71 AC_DEFINE(HAVE_ALTZONE)
76 dnl *** Does libc contain GNU regex? ***
78 AC_DEFUN(FPTOOLS_REGEX_IN_LIBC,
79 [AC_CACHE_CHECK([for GNU regex in libc], fptools_cv_have_regex,
80 [AC_TRY_LINK([#if HAVE_UNISTD_H
84 ],[ struct re_pattern_buffer patbuf;
85 re_compile_pattern("",0,&patbuf);
86 re_search_2 (&patbuf, "", 0, "",0, 0,0,0,0); ],
87 fptools_cv_have_regex=yes, fptools_cv_have_regex=no)])
88 if test "$fptools_cv_have_regex" = yes; then
97 dnl ** check for leading underscores in symbol names
99 dnl Test for determining whether symbol names have a leading
102 dnl We assume that they _haven't_ if anything goes wrong.
104 dnl Some nlist implementations seem to try to be compatible by ignoring
105 dnl a leading underscore sometimes (eg. FreeBSD). We therefore have
106 dnl to work around this by checking for *no* leading underscore first.
109 AC_DEFUN(FPTOOLS_UNDERSCORE,
110 [AC_CHECK_LIB(elf, nlist, LIBS="-lelf $LIBS")dnl
111 AC_CACHE_CHECK([leading underscore in symbol names], fptools_cv_lead_uscore,
114 dnl Hack!: nlist() under Digital UNIX insist on there being an _,
115 dnl but symbol table listings shows none. What is going on here?!?
117 dnl Another hack: cygwin doesn't come with nlist.h , so we hardwire
118 dnl the underscoredness of that "platform"
119 changequote(<<, >>)dnl
121 case $HostPlatform in
122 alpha-dec-osf*) fptools_cv_lead_uscore='no';;
123 *cygwin32) fptools_cv_lead_uscore='yes';;
124 *mingw32) fptools_cv_lead_uscore='yes';;
127 AC_TRY_RUN([#ifdef HAVE_NLIST_H
129 changequote(<<, >>)dnl
131 struct nlist xYzzY1[] = {{"xYzzY1", 0},{0}};
132 struct nlist xYzzY2[] = {{"_xYzzY2", 0},{0}};
140 if(nlist(argv[0], xYzzY1) == 0 && xYzzY1[0].n_value != 0)
142 if(nlist(argv[0], xYzzY2) == 0 && xYzzY2[0].n_value != 0)
147 }], fptools_cv_lead_uscore=yes, fptools_cv_lead_uscore=no, fptools_cv_lead_uscore=NO)
150 LeadingUnderscore=`echo $fptools_cv_lead_uscore | sed 'y/yesno/YESNO/'`
151 AC_SUBST(LeadingUnderscore)
152 case $LeadingUnderscore in
153 YES) AC_DEFINE(LEADING_UNDERSCORE);;
158 dnl FPTOOLS_PROG_CHECK_VERSION(VERSIONSTR1, TEST, VERSIONSTR2,
159 dnl ACTION-IF-TRUE [, ACTION-IF-FALSE])
161 dnl compare versions field-wise (separator is '.')
162 dnl TEST is one of {-lt,-le,-eq,-ge,-gt}
164 dnl quite shell-independant and SUSv2 compliant code
166 dnl NOTE: the loop could be unrolled within autoconf, but the
167 dnl macro code would be a) longer and b) harder to debug... ;)
169 AC_DEFUN(FPTOOLS_PROG_CHECK_VERSION,
174 set -- [$]a; h1="[$]1"; shift 2>/dev/null; a="[$]*"
175 set -- [$]b; h2="[$]1"; shift 2>/dev/null; b="[$]*"
176 test -n "[$]h1" || h1=0; test -n "[$]h2" || h2=0
177 test [$]{h1} -eq [$]{h2} || break
179 test [$]{h1} [$2] [$]{h2}
181 then ifelse([$4],,[:],[
191 dnl Check for Happy and version. If we're building GHC, then we need
192 dnl at least Happy version 1.9. If there's no installed Happy, we look
193 dnl for a happy source tree and point the build system at that instead.
195 AC_DEFUN(FPTOOLS_HAPPY,
197 if test -d $srcdir/happy; then
198 SrcTreeHappyCmd=$hardtop/happy/src/happy-inplace
200 #AC_PATH_PROG(HappyCmd,happy,$SrcTreeHappyCmd)
201 HappyCmd=$SrcTreeHappyCmd
203 AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
205 [if test x"$HappyCmd" = x"$SrcTreeHappyCmd"; then
206 fptools_cv_happy_version=`grep '^ProjectVersion[ ]*=' $srcdir/happy/mk/version.mk | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`;
207 elif test x"$HappyCmd" != x; then
208 fptools_cv_happy_version="`$HappyCmd -v |
209 grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
211 fptools_cv_happy_version="";
215 if test -d $srcdir/ghc; then
216 FPTOOLS_PROG_CHECK_VERSION([$fptools_cv_happy_version],-lt,[1.9],
217 [AC_MSG_ERROR([Happy version 1.9 or later is required to compile GHC.])])dnl
219 HappyVersion=$fptools_cv_happy_version;
220 AC_SUBST(HappyVersion)
224 dnl What's the best way of doing context diffs?
226 dnl (NB: NeXTStep thinks diff'ing a file against itself is "trouble")
228 AC_DEFUN(FPTOOLS_PROG_DIFF,
229 [AC_CACHE_CHECK([for ok way to do context diffs], fptools_cv_context_diffs,
230 [echo foo > conftest1
232 if diff -C 1 conftest1 conftest2 > /dev/null 2>&1 ; then
233 fptools_cv_context_diffs='diff -C 1'
235 if diff -c1 conftest1 conftest2 > /dev/null 2>&1 ; then
236 fptools_cv_context_diffs='diff -c1'
238 echo "Can't figure out how to do context diffs."
239 echo "Neither \`diff -C 1' nor \`diff -c1' works."
243 rm -f conftest1 conftest2
245 ContextDiffCmd=$fptools_cv_context_diffs
246 AC_SUBST(ContextDiffCmd)
250 dnl Finding the Right Yacc
252 AC_DEFUN(FPTOOLS_PROG_YACCY,
254 if test "$YACC" = "yacc"; then
255 AC_CACHE_CHECK([if it is an OK yacc], ac_cv_prog_yacc,
256 [AC_CHECK_PROG(WhatCmd, what, what, :)
257 $WhatCmd $YACC > conftest.out
258 if egrep 'y1\.c 1\..*SMI' conftest.out >/dev/null 2>&1; then
259 echo "I don't trust your $YaccCmd; it looks like an old Sun yacc"
260 if test -f /usr/lang/yacc; then
261 echo "I'm going to use /usr/lang/yacc instead"
262 ac_cv_prog_yacc=/usr/lang/yacc
264 echo "I'm assuming the worst...no parser generator at all"
267 elif egrep 'y1\.c.*Revision: 4\.2\.6\.3.*DEC' conftest.out >/dev/null 2>&1; then
268 echo "I don't trust your $YaccCmd; it looks like a lame DEC yacc"
269 echo "I'm assuming the worst...no parser generator at all"
272 ac_cv_prog_yacc=$YACC
277 ac_cv_prog_yacc=$YACC
279 YaccCmd=$ac_cv_prog_yacc
283 dnl *** Checking for ar and its arguments + whether we need ranlib.
285 dnl ArCmd and RANLIB are AC_SUBST'ed
287 AC_DEFUN(FPTOOLS_PROG_AR_AND_RANLIB,
288 [AC_PATH_PROG(ArCmd,ar)
289 if test -z "$ArCmd"; then
290 echo "You don't seem to have ar in your PATH...I have no idea how to make a library"
293 if $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then
296 elif $ArCmd cqs conftest.a >/dev/null 2>/dev/null; then
299 elif $ArCmd clq conftest.a >/dev/null 2>/dev/null; then
302 elif $ArCmd cq conftest.a >/dev/null 2>/dev/null; then
305 elif $ArCmd cq conftest.a 2>&1 | grep 'no archive members specified' >/dev/null 2>/dev/null; then
309 echo "I can't figure out how to use your $ArCmd"
313 test -n "$ArCmd" && test -n "$verbose" && echo " setting ArCmd to $ArCmd"
315 if test -z "$NeedRanLib"; then
317 test -n "$verbose" && echo " setting RANLIB to $RANLIB"
325 dnl AC_SHEBANG_PERL - can we she-bang perl?
327 AC_DEFUN(FPTOOLS_SHEBANG_PERL,
328 [AC_CACHE_CHECK([if your perl works in shell scripts], fptools_cv_shebang_perl,
333 (SHELL=/bin/sh; export SHELL; ./conftest 69 > /dev/null)
334 if test $? -ne 69; then
335 fptools_cv_shebang_perl=yes
337 fptools_cv_shebang_perl=no
343 dnl Extra testing of the result AC_PROG_CC, testing the gcc version no.
344 dnl *Must* be called after AC_PROG_CC
346 AC_DEFUN(FPTOOLS_HAVE_GCC,
347 [AC_CACHE_CHECK([whether you have an ok gcc], fptools_cv_have_gcc,
348 [if test -z "$GCC"; then
350 echo "You would be better off with gcc"
351 echo "Perhaps it is already installed, but not in your PATH?"
352 fptools_cv_have_gcc='no'
355 cmd_string="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/expr 20 \\\< \1 \\\* 10 + \2/g' `"
357 if test `eval $cmd_string 2>/dev/null` != "1"; then
359 echo "I'm not sure if your version of gcc will work,"
360 echo "but it's worth a shot, eh?"
362 fptools_cv_have_gcc='yes'
365 HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
369 dnl Small feature test for perl version. Assumes PerlCmd
370 dnl contains path to perl binary
372 AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION,
373 [$PerlCmd -v >conftest.out 2>&1
374 if grep "version 5" conftest.out >/dev/null 2>&1; then
377 if grep "v5.6" conftest.out >/dev/null 2>&1; then
380 if grep "version 6" conftest.out >/dev/null 2>&1; then
383 echo "Your version of perl probably won't work."
391 dnl FPTOOLS_GHC_VERSION(version)
392 dnl FPTOOLS_GHC_VERSION(major, minor [, patchlevel])
393 dnl FPTOOLS_GHC_VERSION(version, major, minor, patchlevel)
395 dnl Test for version of installed ghc. Uses $GHC.
396 dnl [original version pinched from c2hs]
398 AC_DEFUN(FPTOOLS_GHC_VERSION,
399 [define([FPTOOLS_CV_GHC_VERSION], [fptools_cv_ghc_version])dnl
400 AC_CACHE_CHECK([version of ghc], FPTOOLS_CV_GHC_VERSION, [dnl
401 ${WithGhc-ghc} --version > conftestghc 2>&1
402 cat conftestghc >&AC_FD_CC
403 dnl `Useless Use Of cat' award...
404 changequote(<<, >>)dnl
405 FPTOOLS_CV_GHC_VERSION=`cat conftestghc | sed -n -e 's/, patchlevel *\([0-9]\)/.\1/;s/.* version \([0-9][0-9.]*\).*/\1/p'`
408 if test "[$]FPTOOLS_CV_GHC_VERSION" = ""
410 FPTOOLS_CV_GHC_VERSION='unknown'
412 changequote(<<, >>)dnl
413 FPTOOLS_CV_GHC_VERSION<<_major>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^\([0-9]\).*/\1/'`
414 FPTOOLS_CV_GHC_VERSION<<_minor>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^[0-9]\.\([0-9]*\).*/\1/'`
415 FPTOOLS_CV_GHC_VERSION<<_pl>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -n -e 's/^[0-9]\.[0-9]*\.\([0-9]*\)/\1/p'`
417 if test "[$]FPTOOLS_CV_GHC_VERSION[_pl]" = ""
419 FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor]"
420 FPTOOLS_CV_GHC_VERSION[_pl]="0"
422 FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor].[$]FPTOOLS_CV_GHC_VERSION[_pl]"
425 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]"
427 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
428 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
430 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
431 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
432 [$3]="[$]FPTOOLS_CV_GHC_VERSION[_pl]"
434 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]"
435 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
436 [$3]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
437 [$4]="[$]FPTOOLS_CV_GHC_VERSION[_pl]"
438 ], [AC_MSG_ERROR([wrong number of arguments to [$0]])])dnl
439 undefine([FPTOOLS_CV_GHC_VERSION])dnl
443 dnl ** figure out the alignment restriction of a type
444 dnl (required SIZEOF test but AC_CHECK_SIZEOF doesn't call PROVIDE
445 dnl so we can't call REQUIRE)
447 dnl FPTOOLS_CHECK_ALIGNMENT(TYPE)
448 AC_DEFUN(FPTOOLS_CHECK_ALIGNMENT,
449 [changequote(<<, >>)dnl
450 dnl The name to #define.
451 define(<<AC_TYPE_NAME>>, translit(alignment_$1, [a-z *], [A-Z_P]))dnl
452 dnl The cache variable name.
453 define(<<AC_CV_NAME>>, translit(ac_cv_alignment_$1, [ *], [_p]))dnl
454 dnl The name of the corresponding size.
455 define(<<AC_CV_SIZEOF_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
457 AC_MSG_CHECKING(alignment of $1)
458 AC_CACHE_VAL(AC_CV_NAME,
465 #define offsetof(ty,field) ((size_t)((char *)&((ty *)0)->field - (char *)(ty *)0))
470 FILE *f=fopen("conftestval", "w");
472 fprintf(f, "%d", offsetof(struct { char c; $1 ty;},ty));
475 AC_CV_NAME=`cat conftestval`,
476 AC_CV_NAME=$AC_CV_SIZEOF_NAME,
477 AC_CV_NAME=$AC_CV_SIZEOF_NAME)])
478 AC_MSG_RESULT($AC_CV_NAME)
479 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
480 AC_PROVIDE($AC_TYPE_NAME)
481 undefine([AC_TYPE_NAME])dnl
482 undefine([AC_CV_NAME])dnl
483 undefine([AC_CV_SIZEOF_NAME])dnl
486 dnl ** Map an arithmetic C type to a Haskell type.
487 dnl Based on autconf's AC_CHECK_SIZEOF.
489 dnl FPTOOLS_CHECK_HTYPE(TYPE [, DEFAULT_VALUE, [, VALUE-FOR-CROSS-COMPILATION])
490 AC_DEFUN(FPTOOLS_CHECK_HTYPE,
491 [changequote(<<, >>)dnl
492 dnl The name to #define.
493 define(<<AC_TYPE_NAME>>, translit(htype_$1, [a-z *], [A-Z_P]))dnl
494 dnl The cache variable name.
495 define(<<AC_CV_NAME>>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl
497 AC_MSG_CHECKING(Haskell type for $1)
498 AC_CACHE_VAL(AC_CV_NAME,
499 [AC_TRY_RUN([#include <stdio.h>
514 FILE *f=fopen("conftestval", "w");
516 if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {
518 ((testing)(-1) < (testing)0) ? "Int" : "Word",
522 (sizeof(testing) > sizeof(double)) ? "LDouble" :
523 (sizeof(testing) == sizeof(double)) ? "Double" : "Float");
527 }], AC_CV_NAME=`cat conftestval`,
528 ifelse([$2], , AC_CV_NAME=NotReallyAType, AC_CV_NAME=$2),
529 ifelse([$3], , AC_CV_NAME=NotReallyATypeCross, AC_CV_NAME=$3))]) dnl
530 AC_MSG_RESULT($AC_CV_NAME)
531 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
532 undefine([AC_TYPE_NAME])dnl
533 undefine([AC_CV_NAME])dnl
536 dnl ** figure out whether C compiler supports 'long long's
537 dnl (Closely based on Andreas Zeller's macro for testing
538 dnl for this under C++)
540 dnl If the C compiler supports `long long' types,
541 dnl define `HAVE_LONG_LONG'.
543 AC_DEFUN(FPTOOLS_C_LONG_LONG,
545 AC_REQUIRE([AC_PROG_CC])
546 AC_MSG_CHECKING(whether ${CC} supports long long types)
547 AC_CACHE_VAL(fptools_cv_have_long_long,
551 AC_TRY_COMPILE(,[long long a;],
552 fptools_cv_have_long_long=yes,
553 fptools_cv_have_long_long=no)
556 AC_MSG_RESULT($fptools_cv_have_long_long)
557 if test "$fptools_cv_have_long_long" = yes; then
558 AC_DEFINE(HAVE_LONG_LONG)
562 dnl ** Obtain the value of a C constant.
563 dnl The value will be `(-1)' if the constant is undefined.
565 dnl This is set up so that the argument can be a shell variable.
567 AC_DEFUN(FPTOOLS_CHECK_CCONST,
569 eval "def_name=CCONST_$1"
570 eval "cv_name=ac_cv_cconst_$1"
571 AC_MSG_CHECKING(value of $1)
572 AC_CACHE_VAL($cv_name,
573 [AC_TRY_RUN([#include <stdio.h>
577 FILE *f=fopen("conftestval", "w");
579 fprintf(f, "%d\n", $1);
582 eval "$cv_name=`cat conftestval`",
584 ifelse([$2], , , eval "$cv_name=$2"))])dnl
585 eval "fptools_check_cconst_result=`echo '$'{$cv_name}`"
586 AC_MSG_RESULT($fptools_check_cconst_result)
587 AC_DEFINE_UNQUOTED($def_name, $fptools_check_cconst_result)
588 unset fptools_check_cconst_result
591 dnl ** Invoke AC_CHECK_CCONST on each argument (which have to separate with
594 AC_DEFUN(FPTOOLS_CHECK_CCONSTS,
595 [for ac_const_name in $1
597 FPTOOLS_CHECK_CCONST($ac_const_name)dnl
602 dnl *** Can we open files in binary mode? ***
604 AC_DEFUN(FPTOOLS_O_BINARY,
606 AC_REQUIRE([AC_PROG_CC])
607 AC_MSG_CHECKING(whether we can open files in binary mode)
608 AC_CACHE_VAL(fptools_cv_have_o_binary,
617 fptools_cv_have_o_binary=yes,
618 fptools_cv_have_o_binary=no)
621 AC_MSG_RESULT($fptools_cv_have_o_binary)
622 if test "$fptools_cv_have_o_binary" = yes; then
623 AC_DEFINE(HAVE_O_BINARY)
627 dnl *** Which one comes first, .text or .data? ***
629 AC_DEFUN(FPTOOLS_CODE_BEFORE_DATA,
630 [AC_CACHE_CHECK([if code section appears before data], fptools_cv_code_bef_data,
632 int f() { return 1; }
634 int main() { return ((char*)&f > (char*)&i); }
637 fptools_cv_code_bef_data=yes, fptools_cv_code_bef_data=no,false)])
638 if test "$fptools_cv_code_bef_data" = yes; then
639 AC_DEFINE(CODE_BEFORE_DATA)
643 dnl *** Helper function **
645 AC_DEFUN(FPTOOLS_IN_SCOPE,AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no))
647 dnl *** What's the end-of-text-section marker called? ***
649 AC_DEFUN(FPTOOLS_END_TEXT_SECTION,
650 [AC_MSG_CHECKING([for end of text section marker])
652 for i in data_start _data_start etext _etext __etext; do
653 FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text)
654 if test "$fptools_end_of_text" = yes; then
655 AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, $i))
656 AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, $i))
661 if test "$not_done" = 1; then
662 FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text);
663 if test "$fptools_end_of_text" = yes; then
664 AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, etext))
665 AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, etext asm("etext")))
667 AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, dunno_what_it_is)
668 AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, dunno_what_it_is)
671 AC_MSG_RESULT([$]fptools_cv_end_of_text)
674 dnl *** What's the end-of-data-section marker called? ***
676 AC_DEFUN(FPTOOLS_END_DATA_SECTION,
677 [AC_MSG_CHECKING([for end of data section marker])
679 for i in end _end __end; do
680 FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data)
681 if test "$fptools_end_of_data" = yes; then
682 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, $i)])
683 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, $i)])
688 if test "$not_done" = 1; then
689 FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data);
690 if test "$fptools_end_of_data" = yes; then
691 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, end asm("end"))])
692 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, end)])
694 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, dunno_what_it_is)])
695 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, dunno_what_it_is)])
698 AC_MSG_RESULT([$]fptools_cv_end_of_data)
703 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
705 dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)
707 AC_DEFUN(FPTOOLS_TRY_LINK_NOWARN,
711 cat > conftest.$ac_ext <<EOF
712 dnl This sometimes fails to find confdefs.h, for some reason.
713 dnl [#]line __oline__ "[$]0"
714 [#]line __oline__ "configure"
715 #include "confdefs.h"
717 int t() { return 0; }
719 if AC_TRY_EVAL(ac_link); then
724 ifelse([$4], , , [else
734 dnl Loosely based on AC_CHECK_LIB in acgeneral.m4 in autoconf distribution
736 dnl FPTOOLS_CHECK_FLAG_NOWARN(NAME, FLAG, CODE, iftrue, iffalse)
738 AC_DEFUN(FPTOOLS_CHECK_FLAG_NOWARN,
739 [AC_MSG_CHECKING([for $1])
740 AC_CACHE_VAL(ac_cv_flag_$1,
741 [FPTOOLS_TRY_LINK_NOWARN("$2", [main() { $3; exit(0); } ],
742 eval "ac_cv_flag_$1=yes",
743 eval "ac_cv_flag_$1=no"
746 if eval "test \"`echo '$ac_cv_flag_'$1`\" = yes"; then
756 dnl FPTOOLS_CHECK_LIB_NOWARN(LIBRARY, FUNCTION)
758 AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN,
759 [FPTOOLS_CHECK_FLAG_NOWARN([function_$2],[],[extern char $2(); $2();],
761 ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
763 AC_DEFINE_UNQUOTED($ac_tr_lib)
765 [FPTOOLS_CHECK_FLAG_NOWARN([library_$1],[-l$1],[extern char $2(); $2();],
767 ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
769 AC_DEFINE_UNQUOTED($ac_tr_lib)
775 dnl check for prototypes
777 AC_DEFUN(AC_C_PROTOTYPES,
778 [AC_CACHE_CHECK([prototypes], ac_cv_prototypes,
787 ac_cv_prototypes=yes,
788 ac_cv_prototypes=no)])
789 if test "$ac_cv_prototypes" = yes; then
790 AC_DEFINE(HAVE_PROTOTYPES)
794 dnl ** Check which CATALOG file we have to use with DocBook SGML.
796 dnl FPTOOLS_DOCBOOK_CATALOG(VARIABLE, JADE, STYLESHEET, CATALOGS-TO-CHECK-FOR)
798 dnl If any of the catalogs given in CATALOGS-TO-CHECK-FOR works on this
799 dnl platform, let VARIABLE refer to this catalog; otherwise, VARIABLE
800 dnl is set to "no". JADE is the jade executable and STYLESHEET
801 dnl a DocBook style sheet.
803 AC_DEFUN(FPTOOLS_DOCBOOK_CATALOG,
804 [AC_CACHE_CHECK([for DocBook CATALOG], fptools_cv_sgml_catalog,
806 cat > conftest.sgml << EOF
807 <!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
811 <Author><OtherName>Test</OtherName></Author>
812 <Address>Test</Address>
813 <PubDate>Test</PubDate>
815 <Sect1><Title>Test</Title>
822 fptools_cv_sgml_catalog=no
823 for fptools_catalog in $4; do
824 ac_try="$2 -t rtf -d $3#print -c $fptools_catalog conftest.sgml"
825 if AC_TRY_EVAL(ac_try); then
826 fptools_cv_sgml_catalog=[$]fptools_catalog
832 if test $fptools_cv_sgml_catalog != "no"; then
833 $1=$fptools_cv_sgml_catalog
837 dnl ######################################################################
838 dnl FPTOOLS_SEARCH_LIBS(INCLUDES, FUNCTION, SEARCH-LIBS [, ACTION-IF-FOUND
839 dnl [, ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
840 dnl Search for a library defining FUNC, if it's not already available.
841 dnl This is almost the same as AC_SEARCH_LIBS, but the INCLUDES can be
843 dnl ######################################################################
845 AC_DEFUN(FPTOOLS_SEARCH_LIBS,
847 AC_CACHE_CHECK([for library containing $2], [ac_cv_search_$2],
848 [ac_func_search_save_LIBS="$LIBS"
850 AC_TRY_LINK([$1], [$2()], [ac_cv_search_$2="none required"])
851 test "$ac_cv_search_$2" = "no" && for i in $3; do
852 LIBS="-l$i $6 $ac_func_search_save_LIBS"
853 AC_TRY_LINK([$1], [$2()],
854 [ac_cv_search_$2="-l$i"
857 LIBS="$ac_func_search_save_LIBS"])
858 if test "$ac_cv_search_$2" != "no"; then
859 test "$ac_cv_search_$2" = "none required" || LIBS="$ac_cv_search_$2 $LIBS"
865 dnl ####################### -*- Mode: M4 -*- ###########################
866 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
868 dnl This file is free software; you can redistribute it and/or modify it
869 dnl under the terms of the GNU General Public License as published by
870 dnl the Free Software Foundation; either version 2 of the License, or
871 dnl (at your option) any later version.
873 dnl This file is distributed in the hope that it will be useful, but
874 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
875 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
876 dnl General Public License for more details.
878 dnl You should have received a copy of the GNU General Public License
879 dnl along with this file; if not, write to:
881 dnl Free Software Foundation, Inc.
884 dnl Boston, MA 02111-1307, USA.
885 dnl ####################################################################
888 dnl @synopsis FPTOOLS_CHECK_LIBM
890 dnl Search for math library (typically -lm).
892 dnl The variable LIBM (which is not an output variable by default) is
893 dnl set to a value which is suitable for use in a Makefile (for example,
894 dnl in make's LOADLIBES macro) provided you AC_SUBST it first.
896 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
898 # FPTOOLS_CHECK_LIBM - check for math library
899 AC_DEFUN(FPTOOLS_CHECK_LIBM,
900 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
903 *-*-beos* | *-*-macosx*)
904 # These system don't have libm
907 AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
908 AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
911 AC_CHECK_LIB(m, main, LIBM="-lm")
916 dnl ######################################################################
917 dnl NOTE: Because of portability issues between different autoconf
918 dnl versions the AC_HELP_STRING macro has been removed from FPTOOLS_HAVE_OPENGL.
919 dnl Furthermore, caching has been completely rewritten.
920 dnl ######################################################################
922 dnl ########################### -*- Mode: M4 -*- #######################
923 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
925 dnl This file is free software; you can redistribute it and/or modify it
926 dnl under the terms of the GNU General Public License as published by
927 dnl the Free Software Foundation; either version 2 of the License, or
928 dnl (at your option) any later version.
930 dnl This file is distributed in the hope that it will be useful, but
931 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
932 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
933 dnl General Public License for more details.
935 dnl You should have received a copy of the GNU General Public License
936 dnl along with this file; if not, write to:
938 dnl Free Software Foundation, Inc.
941 dnl Boston, MA 02111-1307, USA.
942 dnl ####################################################################
944 dnl @synopsis FPTOOLS_HAVE_OPENGL
946 dnl Search for OpenGL. We search first for Mesa (a GPL'ed version of
947 dnl OpenGL) before a vendor's version of OpenGL, unless we were
948 dnl specifically asked not to with `--with-Mesa=no' or `--without-Mesa'.
950 dnl The four "standard" OpenGL libraries are searched for: "-lGL",
951 dnl "-lGLU", "-lGLX" (or "-lMesaGL", "-lMesaGLU" as the case may be) and
954 dnl All of the libraries that are found (since "-lglut" or "-lGLX" might
955 dnl be missing) are added to the shell output variable "GL_LIBS", along
956 dnl with any other libraries that are necessary to successfully link an
957 dnl OpenGL application (e.g. the X11 libraries). Care has been taken to
958 dnl make sure that all of the libraries in "GL_LIBS" are listed in the
961 dnl Additionally, the shell output variable "GL_CFLAGS" is set to any
962 dnl flags (e.g. "-I" flags) that are necessary to successfully compile
963 dnl an OpenGL application.
965 dnl The following shell variable (which are not output variables) are
966 dnl also set to either "yes" or "no" (depending on which libraries were
967 dnl found) to help you determine exactly what was found.
974 dnl A complete little toy "Automake `make distcheck'" package of how to
975 dnl use this macro is available at:
977 dnl ftp://ftp.slac.stanford.edu/users/langston/autoconf/ac_opengl-0.01.tar.gz
979 dnl Please note that as the ac_opengl macro and the toy example evolves,
980 dnl the version number increases, so you may have to adjust the above
983 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
985 AC_DEFUN(FPTOOLS_HAVE_OPENGL,
987 AC_REQUIRE([AC_PROG_CC])
988 AC_REQUIRE([AC_PATH_X])
989 AC_REQUIRE([AC_PATH_XTRA])
990 AC_REQUIRE([FPTOOLS_CHECK_LIBM])
992 dnl Check for Mesa first, unless we were asked not to.
993 dnl AC_HELP_STRING([--with-Mesa],
994 dnl [Prefer the Mesa library over a vendors native OpenGL library (default=yes)],
995 dnl with_Mesa_help_string)
996 dnl AC_ARG_ENABLE(Mesa, $with_Mesa_help_string, use_Mesa=$enableval, use_Mesa=yes)
997 AC_ARG_ENABLE(Mesa, [ --with-Mesa Prefer the Mesa library over a vendors native OpenGL library (default=yes)], use_Mesa=$enableval, use_Mesa=yes)
999 if test x"$use_Mesa" = xyes; then
1000 GL_search_list="MesaGL GL opengl32"
1001 GLU_search_list="MesaGLU GLU glu32"
1002 GLX_search_list="MesaGLX GLX"
1004 GL_search_list="GL opengl32 MesaGL"
1005 GLU_search_list="GLU glu32 MesaGLU"
1006 GLX_search_list="GLX MesaGLX"
1012 dnl If we are running under X11 then add in the appropriate libraries.
1013 if ! test x"$no_x" = xyes; then
1014 dnl Add everything we need to compile and link X programs to GL_CFLAGS
1016 GL_CFLAGS="$X_CFLAGS"
1017 GL_X_LIBS="$X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS $LIBM"
1019 GL_save_CPPFLAGS="$CPPFLAGS"
1020 CPPFLAGS="$GL_CFLAGS"
1022 GL_save_LIBS="$LIBS"
1025 FPTOOLS_SEARCH_LIBS([#include <GL/gl.h>], glEnd, $GL_search_list, have_GL=yes, have_GL=no)
1026 FPTOOLS_SEARCH_LIBS([#include <GL/glu.h>], gluNewQuadric, $GLU_search_list, have_GLU=yes, have_GLU=no)
1027 FPTOOLS_SEARCH_LIBS([#include <GL/glx.h>], glXChooseVisual, $GLX_search_list, have_GLX=yes, have_GLX=no)
1028 FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glutMainLoop, glut glut32, have_glut=yes, have_glut=no)
1030 if test -n "$LIBS"; then
1037 AC_CACHE_CHECK([OpenGL flags], mdl_cv_gl_cflags, [mdl_cv_gl_cflags="$GL_CFLAGS"])
1038 GL_CFLAGS="$mdl_cv_gl_cflags"
1040 AC_CACHE_CHECK([OpenGL libs], mdl_cv_gl_libs, [mdl_cv_gl_libs="$GL_LIBS"])
1041 GL_LIBS="$mdl_cv_gl_libs"
1044 dnl Reset GL_X_LIBS regardless, since it was just a temporary variable
1045 dnl and we don't want to be global namespace polluters.
1048 LIBS="$GL_save_LIBS"
1049 CPPFLAGS="$GL_save_CPPFLAGS"
1057 dnl acspecific.m4's defn of AC_PROG_LEX is a bit too permissive, as it
1058 dnl defaults to 'lex' if 'flex' isn't found (without checking whether
1059 dnl 'lex' is actually present along the user's PATH).
1061 AC_DEFUN(AC_PROG_LEX_STRICT,
1062 [AC_CHECK_PROG(LEX, flex, flex)
1065 AC_CHECK_PROG(LEX,lex,lex)
1066 test -z "$LEX" && AC_MSG_ERROR(['lex' or 'flex' is required to compile GHC.])
1071 dnl Check to see whether CC (gcc) supports the -mwin32 option.
1073 AC_DEFUN(FPTOOLS_CC_MWIN32,
1074 [AC_CACHE_CHECK([whether $CC accepts -mwin32], ac_cv_cc_supports_mwin32,
1075 [save_CFLAGS="$CFLAGS"
1076 CFLAGS="$CFLAGS -mwin32"
1078 AC_TRY_COMPILE(,[int main(){return(0);}], ac_cv_cc_supports_mwin32=yes, ac_cv_cc_supports_mwin32=no)
1079 CFLAGS="$CFLAGS_save"])
1080 if test "$ac_cv_cc_supports_mwin32" = yes; then
1081 CC_MWIN32_FLAG="-mwin32";
1085 AC_SUBST(CC_MWIN32_FLAG)