1 dnl $Id: aclocal.m4,v 1.78 2001/06/30 00:12:52 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 AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
203 [if test x"$HappyCmd" = x"$SrcTreeHappyCmd"; then
204 fptools_cv_happy_version=`grep '^ProjectVersion[ ]*=' $srcdir/happy/mk/version.mk | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`;
205 elif test x"$HappyCmd" != x; then
206 fptools_cv_happy_version="`$HappyCmd -v |
207 grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
209 fptools_cv_happy_version="";
213 if test -d $srcdir/ghc; then
214 FPTOOLS_PROG_CHECK_VERSION([$fptools_cv_happy_version],-lt,[1.9],
215 [AC_MSG_ERROR([Happy version 1.9 or later is required to compile GHC.])])dnl
217 HappyVersion=$fptools_cv_happy_version;
218 AC_SUBST(HappyVersion)
222 dnl What's the best way of doing context diffs?
224 dnl (NB: NeXTStep thinks diff'ing a file against itself is "trouble")
226 AC_DEFUN(FPTOOLS_PROG_DIFF,
227 [AC_CACHE_CHECK([for ok way to do context diffs], fptools_cv_context_diffs,
228 [echo foo > conftest1
230 if diff -C 1 conftest1 conftest2 > /dev/null 2>&1 ; then
231 fptools_cv_context_diffs='diff -C 1'
233 if diff -c1 conftest1 conftest2 > /dev/null 2>&1 ; then
234 fptools_cv_context_diffs='diff -c1'
236 echo "Can't figure out how to do context diffs."
237 echo "Neither \`diff -C 1' nor \`diff -c1' works."
241 rm -f conftest1 conftest2
243 ContextDiffCmd=$fptools_cv_context_diffs
244 AC_SUBST(ContextDiffCmd)
248 dnl Finding the Right Yacc
250 AC_DEFUN(FPTOOLS_PROG_YACCY,
252 if test "$YACC" = "yacc"; then
253 AC_CACHE_CHECK([if it is an OK yacc], ac_cv_prog_yacc,
254 [AC_CHECK_PROG(WhatCmd, what, what, :)
255 $WhatCmd $YACC > conftest.out
256 if egrep 'y1\.c 1\..*SMI' conftest.out >/dev/null 2>&1; then
257 echo "I don't trust your $YaccCmd; it looks like an old Sun yacc"
258 if test -f /usr/lang/yacc; then
259 echo "I'm going to use /usr/lang/yacc instead"
260 ac_cv_prog_yacc=/usr/lang/yacc
262 echo "I'm assuming the worst...no parser generator at all"
265 elif egrep 'y1\.c.*Revision: 4\.2\.6\.3.*DEC' conftest.out >/dev/null 2>&1; then
266 echo "I don't trust your $YaccCmd; it looks like a lame DEC yacc"
267 echo "I'm assuming the worst...no parser generator at all"
270 ac_cv_prog_yacc=$YACC
275 ac_cv_prog_yacc=$YACC
277 YaccCmd=$ac_cv_prog_yacc
281 dnl *** Checking for ar and its arguments + whether we need ranlib.
283 dnl ArCmd and RANLIB are AC_SUBST'ed
285 AC_DEFUN(FPTOOLS_PROG_AR_AND_RANLIB,
286 [AC_PATH_PROG(ArCmd,ar)
287 if test -z "$ArCmd"; then
288 echo "You don't seem to have ar in your PATH...I have no idea how to make a library"
291 if $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then
294 elif $ArCmd cqs conftest.a >/dev/null 2>/dev/null; then
297 elif $ArCmd clq conftest.a >/dev/null 2>/dev/null; then
300 elif $ArCmd cq conftest.a >/dev/null 2>/dev/null; then
303 elif $ArCmd cq conftest.a 2>&1 | grep 'no archive members specified' >/dev/null 2>/dev/null; then
307 echo "I can't figure out how to use your $ArCmd"
311 test -n "$ArCmd" && test -n "$verbose" && echo " setting ArCmd to $ArCmd"
313 if test -z "$NeedRanLib"; then
315 test -n "$verbose" && echo " setting RANLIB to $RANLIB"
323 dnl AC_SHEBANG_PERL - can we she-bang perl?
325 AC_DEFUN(FPTOOLS_SHEBANG_PERL,
326 [AC_CACHE_CHECK([if your perl works in shell scripts], fptools_cv_shebang_perl,
331 (SHELL=/bin/sh; export SHELL; ./conftest 69 > /dev/null)
332 if test $? -ne 69; then
333 fptools_cv_shebang_perl=yes
335 fptools_cv_shebang_perl=no
341 dnl Extra testing of the result AC_PROG_CC, testing the gcc version no.
342 dnl *Must* be called after AC_PROG_CC
344 AC_DEFUN(FPTOOLS_HAVE_GCC,
345 [AC_CACHE_CHECK([whether you have an ok gcc], fptools_cv_have_gcc,
346 [if test -z "$GCC"; then
348 echo "You would be better off with gcc"
349 echo "Perhaps it is already installed, but not in your PATH?"
350 fptools_cv_have_gcc='no'
353 cmd_string="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/expr 20 \\\< \1 \\\* 10 + \2/g' `"
355 if test `eval $cmd_string 2>/dev/null` != "1"; then
357 echo "I'm not sure if your version of gcc will work,"
358 echo "but it's worth a shot, eh?"
360 fptools_cv_have_gcc='yes'
363 HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
367 dnl Small feature test for perl version. Assumes PerlCmd
368 dnl contains path to perl binary
370 AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION,
371 [$PerlCmd -v >conftest.out 2>&1
372 if grep "version 5" conftest.out >/dev/null 2>&1; then
375 if grep "v5.6" conftest.out >/dev/null 2>&1; then
378 if grep "version 6" conftest.out >/dev/null 2>&1; then
381 echo "Your version of perl probably won't work."
389 dnl FPTOOLS_GHC_VERSION(version)
390 dnl FPTOOLS_GHC_VERSION(major, minor [, patchlevel])
391 dnl FPTOOLS_GHC_VERSION(version, major, minor, patchlevel)
393 dnl Test for version of installed ghc. Uses $GHC.
394 dnl [original version pinched from c2hs]
396 AC_DEFUN(FPTOOLS_GHC_VERSION,
397 [define([FPTOOLS_CV_GHC_VERSION], [fptools_cv_ghc_version])dnl
398 AC_CACHE_CHECK([version of ghc], FPTOOLS_CV_GHC_VERSION, [dnl
399 ${WithGhc-ghc} --version > conftestghc 2>&1
400 cat conftestghc >&AC_FD_CC
401 dnl `Useless Use Of cat' award...
402 changequote(<<, >>)dnl
403 FPTOOLS_CV_GHC_VERSION=`cat conftestghc | sed -n -e 's/, patchlevel *\([0-9]\)/.\1/;s/.* version \([0-9][0-9.]*\).*/\1/p'`
406 if test "[$]FPTOOLS_CV_GHC_VERSION" = ""
408 FPTOOLS_CV_GHC_VERSION='unknown'
410 changequote(<<, >>)dnl
411 FPTOOLS_CV_GHC_VERSION<<_major>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^\([0-9]\).*/\1/'`
412 FPTOOLS_CV_GHC_VERSION<<_minor>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^[0-9]\.\([0-9]*\).*/\1/'`
413 FPTOOLS_CV_GHC_VERSION<<_pl>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -n -e 's/^[0-9]\.[0-9]*\.\([0-9]*\)/\1/p'`
415 if test "[$]FPTOOLS_CV_GHC_VERSION[_pl]" = ""
417 FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor]"
418 FPTOOLS_CV_GHC_VERSION[_pl]="0"
420 FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor].[$]FPTOOLS_CV_GHC_VERSION[_pl]"
423 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]"
425 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
426 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
428 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
429 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
430 [$3]="[$]FPTOOLS_CV_GHC_VERSION[_pl]"
432 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]"
433 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
434 [$3]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
435 [$4]="[$]FPTOOLS_CV_GHC_VERSION[_pl]"
436 ], [AC_MSG_ERROR([wrong number of arguments to [$0]])])dnl
437 undefine([FPTOOLS_CV_GHC_VERSION])dnl
441 dnl ** figure out the alignment restriction of a type
442 dnl (required SIZEOF test but AC_CHECK_SIZEOF doesn't call PROVIDE
443 dnl so we can't call REQUIRE)
445 dnl FPTOOLS_CHECK_ALIGNMENT(TYPE)
446 AC_DEFUN(FPTOOLS_CHECK_ALIGNMENT,
447 [changequote(<<, >>)dnl
448 dnl The name to #define.
449 define(<<AC_TYPE_NAME>>, translit(alignment_$1, [a-z *], [A-Z_P]))dnl
450 dnl The cache variable name.
451 define(<<AC_CV_NAME>>, translit(ac_cv_alignment_$1, [ *], [_p]))dnl
452 dnl The name of the corresponding size.
453 define(<<AC_CV_SIZEOF_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
455 AC_MSG_CHECKING(alignment of $1)
456 AC_CACHE_VAL(AC_CV_NAME,
463 #define offsetof(ty,field) ((size_t)((char *)&((ty *)0)->field - (char *)(ty *)0))
468 FILE *f=fopen("conftestval", "w");
470 fprintf(f, "%d", offsetof(struct { char c; $1 ty;},ty));
473 AC_CV_NAME=`cat conftestval`,
474 AC_CV_NAME=$AC_CV_SIZEOF_NAME,
475 AC_CV_NAME=$AC_CV_SIZEOF_NAME)])
476 AC_MSG_RESULT($AC_CV_NAME)
477 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
478 AC_PROVIDE($AC_TYPE_NAME)
479 undefine([AC_TYPE_NAME])dnl
480 undefine([AC_CV_NAME])dnl
481 undefine([AC_CV_SIZEOF_NAME])dnl
484 dnl ** Map an arithmetic C type to a Haskell type.
485 dnl Based on autconf's AC_CHECK_SIZEOF.
487 dnl FPTOOLS_CHECK_HTYPE(TYPE [, DEFAULT_VALUE, [, VALUE-FOR-CROSS-COMPILATION])
488 AC_DEFUN(FPTOOLS_CHECK_HTYPE,
489 [changequote(<<, >>)dnl
490 dnl The name to #define.
491 define(<<AC_TYPE_NAME>>, translit(htype_$1, [a-z *], [A-Z_P]))dnl
492 dnl The cache variable name.
493 define(<<AC_CV_NAME>>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl
495 AC_MSG_CHECKING(Haskell type for $1)
496 AC_CACHE_VAL(AC_CV_NAME,
497 [AC_TRY_RUN([#include <stdio.h>
512 FILE *f=fopen("conftestval", "w");
514 if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {
516 ((testing)(-1) < (testing)0) ? "Int" : "Word",
520 (sizeof(testing) > sizeof(double)) ? "LDouble" :
521 (sizeof(testing) == sizeof(double)) ? "Double" : "Float");
525 }], AC_CV_NAME=`cat conftestval`,
526 ifelse([$2], , AC_CV_NAME=NotReallyAType, AC_CV_NAME=$2),
527 ifelse([$3], , AC_CV_NAME=NotReallyATypeCross, AC_CV_NAME=$3))]) dnl
528 AC_MSG_RESULT($AC_CV_NAME)
529 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
530 undefine([AC_TYPE_NAME])dnl
531 undefine([AC_CV_NAME])dnl
534 dnl ** figure out whether C compiler supports 'long long's
535 dnl (Closely based on Andreas Zeller's macro for testing
536 dnl for this under C++)
538 dnl If the C compiler supports `long long' types,
539 dnl define `HAVE_LONG_LONG'.
541 AC_DEFUN(FPTOOLS_C_LONG_LONG,
543 AC_REQUIRE([AC_PROG_CC])
544 AC_MSG_CHECKING(whether ${CC} supports long long types)
545 AC_CACHE_VAL(fptools_cv_have_long_long,
549 AC_TRY_COMPILE(,[long long a;],
550 fptools_cv_have_long_long=yes,
551 fptools_cv_have_long_long=no)
554 AC_MSG_RESULT($fptools_cv_have_long_long)
555 if test "$fptools_cv_have_long_long" = yes; then
556 AC_DEFINE(HAVE_LONG_LONG)
560 dnl ** Obtain the value of a C constant.
561 dnl The value will be `(-1)' if the constant is undefined.
563 dnl This is set up so that the argument can be a shell variable.
565 AC_DEFUN(FPTOOLS_CHECK_CCONST,
567 eval "def_name=CCONST_$1"
568 eval "cv_name=ac_cv_cconst_$1"
569 AC_MSG_CHECKING(value of $1)
570 AC_CACHE_VAL($cv_name,
571 [AC_TRY_RUN([#include <stdio.h>
575 FILE *f=fopen("conftestval", "w");
577 fprintf(f, "%d\n", $1);
580 eval "$cv_name=`cat conftestval`",
582 ifelse([$2], , , eval "$cv_name=$2"))])dnl
583 eval "fptools_check_cconst_result=`echo '$'{$cv_name}`"
584 AC_MSG_RESULT($fptools_check_cconst_result)
585 AC_DEFINE_UNQUOTED($def_name, $fptools_check_cconst_result)
586 unset fptools_check_cconst_result
589 dnl ** Invoke AC_CHECK_CCONST on each argument (which have to separate with
592 AC_DEFUN(FPTOOLS_CHECK_CCONSTS,
593 [for ac_const_name in $1
595 FPTOOLS_CHECK_CCONST($ac_const_name)dnl
600 dnl *** Can we open files in binary mode? ***
602 AC_DEFUN(FPTOOLS_O_BINARY,
604 AC_REQUIRE([AC_PROG_CC])
605 AC_MSG_CHECKING(whether we can open files in binary mode)
606 AC_CACHE_VAL(fptools_cv_have_o_binary,
615 fptools_cv_have_o_binary=yes,
616 fptools_cv_have_o_binary=no)
619 AC_MSG_RESULT($fptools_cv_have_o_binary)
620 if test "$fptools_cv_have_o_binary" = yes; then
621 AC_DEFINE(HAVE_O_BINARY)
625 dnl *** Which one comes first, .text or .data? ***
627 AC_DEFUN(FPTOOLS_CODE_BEFORE_DATA,
628 [AC_CACHE_CHECK([if code section appears before data], fptools_cv_code_bef_data,
630 int f() { return 1; }
632 int main() { return ((char*)&f > (char*)&i); }
635 fptools_cv_code_bef_data=yes, fptools_cv_code_bef_data=no,false)])
636 if test "$fptools_cv_code_bef_data" = yes; then
637 AC_DEFINE(CODE_BEFORE_DATA)
641 dnl *** Helper function **
643 AC_DEFUN(FPTOOLS_IN_SCOPE,AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no))
645 dnl *** What's the end-of-text-section marker called? ***
647 AC_DEFUN(FPTOOLS_END_TEXT_SECTION,
648 [AC_MSG_CHECKING([for end of text section marker])
650 for i in data_start _data_start etext _etext __etext; do
651 FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text)
652 if test "$fptools_end_of_text" = yes; then
653 AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, $i))
654 AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, $i))
659 if test "$not_done" = 1; then
660 FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text);
661 if test "$fptools_end_of_text" = yes; then
662 AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, etext))
663 AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, etext asm("etext")))
665 AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, dunno_what_it_is)
666 AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, dunno_what_it_is)
669 AC_MSG_RESULT([$]fptools_cv_end_of_text)
672 dnl *** What's the end-of-data-section marker called? ***
674 AC_DEFUN(FPTOOLS_END_DATA_SECTION,
675 [AC_MSG_CHECKING([for end of data section marker])
677 for i in end _end __end; do
678 FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data)
679 if test "$fptools_end_of_data" = yes; then
680 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, $i)])
681 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, $i)])
686 if test "$not_done" = 1; then
687 FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data);
688 if test "$fptools_end_of_data" = yes; then
689 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, end asm("end"))])
690 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, end)])
692 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, dunno_what_it_is)])
693 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, dunno_what_it_is)])
696 AC_MSG_RESULT([$]fptools_cv_end_of_data)
701 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
703 dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)
705 AC_DEFUN(FPTOOLS_TRY_LINK_NOWARN,
709 cat > conftest.$ac_ext <<EOF
710 dnl This sometimes fails to find confdefs.h, for some reason.
711 dnl [#]line __oline__ "[$]0"
712 [#]line __oline__ "configure"
713 #include "confdefs.h"
715 int t() { return 0; }
717 if AC_TRY_EVAL(ac_link); then
722 ifelse([$4], , , [else
732 dnl Loosely based on AC_CHECK_LIB in acgeneral.m4 in autoconf distribution
734 dnl FPTOOLS_CHECK_FLAG_NOWARN(NAME, FLAG, CODE, iftrue, iffalse)
736 AC_DEFUN(FPTOOLS_CHECK_FLAG_NOWARN,
737 [AC_MSG_CHECKING([for $1])
738 AC_CACHE_VAL(ac_cv_flag_$1,
739 [FPTOOLS_TRY_LINK_NOWARN("$2", [main() { $3; exit(0); } ],
740 eval "ac_cv_flag_$1=yes",
741 eval "ac_cv_flag_$1=no"
744 if eval "test \"`echo '$ac_cv_flag_'$1`\" = yes"; then
754 dnl FPTOOLS_CHECK_LIB_NOWARN(LIBRARY, FUNCTION)
756 AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN,
757 [FPTOOLS_CHECK_FLAG_NOWARN([function_$2],[],[extern char $2(); $2();],
759 ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
761 AC_DEFINE_UNQUOTED($ac_tr_lib)
763 [FPTOOLS_CHECK_FLAG_NOWARN([library_$1],[-l$1],[extern char $2(); $2();],
765 ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
767 AC_DEFINE_UNQUOTED($ac_tr_lib)
773 dnl check for prototypes
775 AC_DEFUN(AC_C_PROTOTYPES,
776 [AC_CACHE_CHECK([prototypes], ac_cv_prototypes,
785 ac_cv_prototypes=yes,
786 ac_cv_prototypes=no)])
787 if test "$ac_cv_prototypes" = yes; then
788 AC_DEFINE(HAVE_PROTOTYPES)
792 dnl ** Check which CATALOG file we have to use with DocBook SGML.
794 dnl FPTOOLS_DOCBOOK_CATALOG(VARIABLE, JADE, STYLESHEET, CATALOGS-TO-CHECK-FOR)
796 dnl If any of the catalogs given in CATALOGS-TO-CHECK-FOR works on this
797 dnl platform, let VARIABLE refer to this catalog; otherwise, VARIABLE
798 dnl is set to "no". JADE is the jade executable and STYLESHEET
799 dnl a DocBook style sheet.
801 AC_DEFUN(FPTOOLS_DOCBOOK_CATALOG,
802 [AC_CACHE_CHECK([for DocBook CATALOG], fptools_cv_sgml_catalog,
804 cat > conftest.sgml << EOF
805 <!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
809 <Author><OtherName>Test</OtherName></Author>
810 <Address>Test</Address>
811 <PubDate>Test</PubDate>
813 <Sect1><Title>Test</Title>
820 fptools_cv_sgml_catalog=no
821 for fptools_catalog in $4; do
822 ac_try="$2 -t rtf -d $3#print -c $fptools_catalog conftest.sgml"
823 if AC_TRY_EVAL(ac_try); then
824 fptools_cv_sgml_catalog=[$]fptools_catalog
830 if test $fptools_cv_sgml_catalog != "no"; then
831 $1=$fptools_cv_sgml_catalog
835 dnl ######################################################################
836 dnl FPTOOLS_SEARCH_LIBS(INCLUDES, FUNCTION, SEARCH-LIBS [, ACTION-IF-FOUND
837 dnl [, ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
838 dnl Search for a library defining FUNC, if it's not already available.
839 dnl This is almost the same as AC_SEARCH_LIBS, but the INCLUDES can be
841 dnl ######################################################################
843 AC_DEFUN(FPTOOLS_SEARCH_LIBS,
845 AC_CACHE_CHECK([for library containing $2], [ac_cv_search_$2],
846 [ac_func_search_save_LIBS="$LIBS"
848 AC_TRY_LINK([$1], [$2()], [ac_cv_search_$2="none required"])
849 test "$ac_cv_search_$2" = "no" && for i in $3; do
850 LIBS="-l$i $6 $ac_func_search_save_LIBS"
851 AC_TRY_LINK([$1], [$2()],
852 [ac_cv_search_$2="-l$i"
855 LIBS="$ac_func_search_save_LIBS"])
856 if test "$ac_cv_search_$2" != "no"; then
857 test "$ac_cv_search_$2" = "none required" || LIBS="$ac_cv_search_$2 $LIBS"
863 dnl ####################### -*- Mode: M4 -*- ###########################
864 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
866 dnl This file is free software; you can redistribute it and/or modify it
867 dnl under the terms of the GNU General Public License as published by
868 dnl the Free Software Foundation; either version 2 of the License, or
869 dnl (at your option) any later version.
871 dnl This file is distributed in the hope that it will be useful, but
872 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
873 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
874 dnl General Public License for more details.
876 dnl You should have received a copy of the GNU General Public License
877 dnl along with this file; if not, write to:
879 dnl Free Software Foundation, Inc.
882 dnl Boston, MA 02111-1307, USA.
883 dnl ####################################################################
886 dnl @synopsis FPTOOLS_CHECK_LIBM
888 dnl Search for math library (typically -lm).
890 dnl The variable LIBM (which is not an output variable by default) is
891 dnl set to a value which is suitable for use in a Makefile (for example,
892 dnl in make's LOADLIBES macro) provided you AC_SUBST it first.
894 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
896 # FPTOOLS_CHECK_LIBM - check for math library
897 AC_DEFUN(FPTOOLS_CHECK_LIBM,
898 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
901 *-*-beos* | *-*-macosx*)
902 # These system don't have libm
905 AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
906 AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
909 AC_CHECK_LIB(m, main, LIBM="-lm")
914 dnl ######################################################################
915 dnl NOTE: Because of portability issues between different autoconf
916 dnl versions the AC_HELP_STRING macro has been removed from FPTOOLS_HAVE_OPENGL.
917 dnl Furthermore, caching has been completely rewritten.
918 dnl ######################################################################
920 dnl ########################### -*- Mode: M4 -*- #######################
921 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
923 dnl This file is free software; you can redistribute it and/or modify it
924 dnl under the terms of the GNU General Public License as published by
925 dnl the Free Software Foundation; either version 2 of the License, or
926 dnl (at your option) any later version.
928 dnl This file is distributed in the hope that it will be useful, but
929 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
930 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
931 dnl General Public License for more details.
933 dnl You should have received a copy of the GNU General Public License
934 dnl along with this file; if not, write to:
936 dnl Free Software Foundation, Inc.
939 dnl Boston, MA 02111-1307, USA.
940 dnl ####################################################################
942 dnl @synopsis FPTOOLS_HAVE_OPENGL
944 dnl Search for OpenGL. We search first for Mesa (a GPL'ed version of
945 dnl OpenGL) before a vendor's version of OpenGL, unless we were
946 dnl specifically asked not to with `--with-Mesa=no' or `--without-Mesa'.
948 dnl The four "standard" OpenGL libraries are searched for: "-lGL",
949 dnl "-lGLU", "-lGLX" (or "-lMesaGL", "-lMesaGLU" as the case may be) and
952 dnl All of the libraries that are found (since "-lglut" or "-lGLX" might
953 dnl be missing) are added to the shell output variable "GL_LIBS", along
954 dnl with any other libraries that are necessary to successfully link an
955 dnl OpenGL application (e.g. the X11 libraries). Care has been taken to
956 dnl make sure that all of the libraries in "GL_LIBS" are listed in the
959 dnl Additionally, the shell output variable "GL_CFLAGS" is set to any
960 dnl flags (e.g. "-I" flags) that are necessary to successfully compile
961 dnl an OpenGL application.
963 dnl The following shell variable (which are not output variables) are
964 dnl also set to either "yes" or "no" (depending on which libraries were
965 dnl found) to help you determine exactly what was found.
972 dnl A complete little toy "Automake `make distcheck'" package of how to
973 dnl use this macro is available at:
975 dnl ftp://ftp.slac.stanford.edu/users/langston/autoconf/ac_opengl-0.01.tar.gz
977 dnl Please note that as the ac_opengl macro and the toy example evolves,
978 dnl the version number increases, so you may have to adjust the above
981 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
983 AC_DEFUN(FPTOOLS_HAVE_OPENGL,
985 AC_REQUIRE([AC_PROG_CC])
986 AC_REQUIRE([AC_PATH_X])
987 AC_REQUIRE([AC_PATH_XTRA])
988 AC_REQUIRE([FPTOOLS_CHECK_LIBM])
990 dnl Check for Mesa first, unless we were asked not to.
991 dnl AC_HELP_STRING([--with-Mesa],
992 dnl [Prefer the Mesa library over a vendors native OpenGL library (default=yes)],
993 dnl with_Mesa_help_string)
994 dnl AC_ARG_ENABLE(Mesa, $with_Mesa_help_string, use_Mesa=$enableval, use_Mesa=yes)
995 AC_ARG_ENABLE(Mesa, [ --with-Mesa Prefer the Mesa library over a vendors native OpenGL library (default=yes)], use_Mesa=$enableval, use_Mesa=yes)
997 if test x"$use_Mesa" = xyes; then
998 GL_search_list="MesaGL GL opengl32"
999 GLU_search_list="MesaGLU GLU glu32"
1000 GLX_search_list="MesaGLX GLX"
1002 GL_search_list="GL opengl32 MesaGL"
1003 GLU_search_list="GLU glu32 MesaGLU"
1004 GLX_search_list="GLX MesaGLX"
1010 dnl If we are running under X11 then add in the appropriate libraries.
1011 if ! test x"$no_x" = xyes; then
1012 dnl Add everything we need to compile and link X programs to GL_CFLAGS
1014 GL_CFLAGS="$X_CFLAGS"
1015 GL_X_LIBS="$X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS $LIBM"
1017 GL_save_CPPFLAGS="$CPPFLAGS"
1018 CPPFLAGS="$GL_CFLAGS"
1020 GL_save_LIBS="$LIBS"
1023 FPTOOLS_SEARCH_LIBS([#include <GL/gl.h>], glEnd, $GL_search_list, have_GL=yes, have_GL=no)
1024 FPTOOLS_SEARCH_LIBS([#include <GL/glu.h>], gluNewQuadric, $GLU_search_list, have_GLU=yes, have_GLU=no)
1025 FPTOOLS_SEARCH_LIBS([#include <GL/glx.h>], glXChooseVisual, $GLX_search_list, have_GLX=yes, have_GLX=no)
1026 FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glutMainLoop, glut glut32, have_glut=yes, have_glut=no)
1028 if test -n "$LIBS"; then
1035 AC_CACHE_CHECK([OpenGL flags], mdl_cv_gl_cflags, [mdl_cv_gl_cflags="$GL_CFLAGS"])
1036 GL_CFLAGS="$mdl_cv_gl_cflags"
1038 AC_CACHE_CHECK([OpenGL libs], mdl_cv_gl_libs, [mdl_cv_gl_libs="$GL_LIBS"])
1039 GL_LIBS="$mdl_cv_gl_libs"
1042 dnl Reset GL_X_LIBS regardless, since it was just a temporary variable
1043 dnl and we don't want to be global namespace polluters.
1046 LIBS="$GL_save_LIBS"
1047 CPPFLAGS="$GL_save_CPPFLAGS"
1055 dnl acspecific.m4's defn of AC_PROG_LEX is a bit too permissive, as it
1056 dnl defaults to 'lex' if 'flex' isn't found (without checking whether
1057 dnl 'lex' is actually present along the user's PATH).
1059 AC_DEFUN(AC_PROG_LEX_STRICT,
1060 [AC_CHECK_PROG(LEX, flex, flex)
1063 AC_CHECK_PROG(LEX,lex,lex)
1064 test -z "$LEX" && AC_MSG_ERROR(['lex' or 'flex' is required to compile GHC.])
1069 dnl Check to see whether CC (gcc) supports a particular option.
1071 AC_DEFUN(FPTOOLS_CC_FLAG,
1073 AC_CACHE_CHECK([whether $CC accepts $1], [ac_cv_cc_$2],
1074 [save_CFLAGS="$CFLAGS"
1077 AC_TRY_COMPILE(,[int main(){return(0);}],
1080 CFLAGS="$save_CFLAGS"
1082 if test "$ac_cv_cc_$2"x = "yesx"; then