1 dnl $Id: aclocal.m4,v 1.71 2001/04/20 10:56:12 michaelw 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; re_compile_pattern("",0,&patbuf); ],
85 fptools_cv_have_regex=yes, fptools_cv_have_regex=no)])
86 if test "$fptools_cv_have_regex" = yes; then
95 dnl ** check for leading underscores in symbol names
97 dnl Test for determining whether symbol names have a leading
100 dnl We assume that they _haven't_ if anything goes wrong.
102 dnl Some nlist implementations seem to try to be compatible by ignoring
103 dnl a leading underscore sometimes (eg. FreeBSD). We therefore have
104 dnl to work around this by checking for *no* leading underscore first.
107 AC_DEFUN(FPTOOLS_UNDERSCORE,
108 [AC_CHECK_LIB(elf, nlist, LIBS="-lelf $LIBS")dnl
109 AC_CACHE_CHECK([leading underscore in symbol names], fptools_cv_lead_uscore,
112 dnl Hack!: nlist() under Digital UNIX insist on there being an _,
113 dnl but symbol table listings shows none. What is going on here?!?
115 dnl Another hack: cygwin doesn't come with nlist.h , so we hardwire
116 dnl the underscoredness of that "platform"
117 changequote(<<, >>)dnl
119 case $HostPlatform in
120 alpha-dec-osf*) fptools_cv_lead_uscore='no';;
121 *cygwin32) fptools_cv_lead_uscore='yes';;
122 *mingw32) fptools_cv_lead_uscore='yes';;
125 AC_TRY_RUN([#ifdef HAVE_NLIST_H
127 changequote(<<, >>)dnl
129 struct nlist xYzzY1[] = {{"xYzzY1", 0},{0}};
130 struct nlist xYzzY2[] = {{"_xYzzY2", 0},{0}};
138 if(nlist(argv[0], xYzzY1) == 0 && xYzzY1[0].n_value != 0)
140 if(nlist(argv[0], xYzzY2) == 0 && xYzzY2[0].n_value != 0)
145 }], fptools_cv_lead_uscore=yes, fptools_cv_lead_uscore=no, fptools_cv_lead_uscore=NO)
148 LeadingUnderscore=`echo $fptools_cv_lead_uscore | sed 'y/yesno/YESNO/'`
149 AC_SUBST(LeadingUnderscore)
150 case $LeadingUnderscore in
151 YES) AC_DEFINE(LEADING_UNDERSCORE);;
156 dnl FPTOOLS_PROG_CHECK_VERSION(VERSIONSTR1, TEST, VERSIONSTR2,
157 dnl ACTION-IF-TRUE [, ACTION-IF-FALSE])
159 dnl compare versions field-wise (separator is '.')
160 dnl TEST is one of {-lt,-le,-eq,-ge,-gt}
162 dnl quite shell-independant and SUSv2 compliant code
164 dnl NOTE: the loop could be unrolled within autoconf, but the
165 dnl macro code would be a) longer and b) harder to debug... ;)
167 AC_DEFUN(FPTOOLS_PROG_CHECK_VERSION,
172 set -- [$]a; h1="[$]1"; shift 2>/dev/null; a="[$]*"
173 set -- [$]b; h2="[$]1"; shift 2>/dev/null; b="[$]*"
174 test -n "[$]h1" || h1=0; test -n "[$]h2" || h2=0
175 test [$]{h1} -eq [$]{h2} || break
177 test [$]{h1} [$2] [$]{h2}
179 then ifelse([$4],,[:],[
189 dnl Check for Happy and version. If we're building GHC, then we need
190 dnl at least Happy version 1.9. If there's no installed Happy, we look
191 dnl for a happy source tree and point the build system at that instead.
193 AC_DEFUN(FPTOOLS_HAPPY,
195 if test -d $srcdir/happy; then
196 SrcTreeHappyCmd=$hardtop/happy/src/happy-inplace
198 AC_PATH_PROG(HappyCmd,happy,$SrcTreeHappyCmd)
199 AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
201 [if test x"$HappyCmd" = x"$SrcTreeHappyCmd"; then
202 fptools_cv_happy_version=`grep '^ProjectVersion[ ]*=' $srcdir/happy/mk/version.mk | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`;
203 elif test x"$HappyCmd" != x; then
204 fptools_cv_happy_version="`$HappyCmd -v |
205 grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
207 fptools_cv_happy_version="";
211 if test -d $srcdir/ghc; then
212 FPTOOLS_PROG_CHECK_VERSION([$fptools_cv_happy_version],-lt,[1.9],
213 [AC_MSG_ERROR([Happy version 1.9 or later is required to compile GHC.])])dnl
215 HappyVersion=$fptools_cv_happy_version;
216 AC_SUBST(HappyVersion)
220 dnl What's the best way of doing context diffs?
222 dnl (NB: NeXTStep thinks diff'ing a file against itself is "trouble")
224 AC_DEFUN(FPTOOLS_PROG_DIFF,
225 [AC_CACHE_CHECK([for ok way to do context diffs], fptools_cv_context_diffs,
226 [echo foo > conftest1
228 if diff -C 1 conftest1 conftest2 > /dev/null 2>&1 ; then
229 fptools_cv_context_diffs='diff -C 1'
231 if diff -c1 conftest1 conftest2 > /dev/null 2>&1 ; then
232 fptools_cv_context_diffs='diff -c1'
234 echo "Can't figure out how to do context diffs."
235 echo "Neither \`diff -C 1' nor \`diff -c1' works."
239 rm -f conftest1 conftest2
241 ContextDiffCmd=$fptools_cv_context_diffs
242 AC_SUBST(ContextDiffCmd)
246 dnl Finding the Right Yacc
248 AC_DEFUN(FPTOOLS_PROG_YACCY,
250 if test "$YACC" = "yacc"; then
251 AC_CACHE_CHECK([if it is an OK yacc], ac_cv_prog_yacc,
252 [AC_CHECK_PROG(WhatCmd, what, what, :)
253 $WhatCmd $YACC > conftest.out
254 if egrep 'y1\.c 1\..*SMI' conftest.out >/dev/null 2>&1; then
255 echo "I don't trust your $YaccCmd; it looks like an old Sun yacc"
256 if test -f /usr/lang/yacc; then
257 echo "I'm going to use /usr/lang/yacc instead"
258 ac_cv_prog_yacc=/usr/lang/yacc
260 echo "I'm assuming the worst...no parser generator at all"
263 elif egrep 'y1\.c.*Revision: 4\.2\.6\.3.*DEC' conftest.out >/dev/null 2>&1; then
264 echo "I don't trust your $YaccCmd; it looks like a lame DEC yacc"
265 echo "I'm assuming the worst...no parser generator at all"
268 ac_cv_prog_yacc=$YACC
273 ac_cv_prog_yacc=$YACC
275 YaccCmd=$ac_cv_prog_yacc
279 dnl *** Checking for ar and its arguments + whether we need ranlib.
281 dnl ArCmd and RANLIB are AC_SUBST'ed
283 AC_DEFUN(FPTOOLS_PROG_AR_AND_RANLIB,
284 [AC_PATH_PROG(ArCmd,ar)
285 if test -z "$ArCmd"; then
286 echo "You don't seem to have ar in your PATH...I have no idea how to make a library"
289 if $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then
292 elif $ArCmd cqs conftest.a >/dev/null 2>/dev/null; then
295 elif $ArCmd clq conftest.a >/dev/null 2>/dev/null; then
298 elif $ArCmd cq conftest.a >/dev/null 2>/dev/null; then
301 elif $ArCmd cq conftest.a 2>&1 | grep 'no archive members specified' >/dev/null 2>/dev/null; then
305 echo "I can't figure out how to use your $ArCmd"
309 test -n "$ArCmd" && test -n "$verbose" && echo " setting ArCmd to $ArCmd"
311 if test -z "$NeedRanLib"; then
313 test -n "$verbose" && echo " setting RANLIB to $RANLIB"
321 dnl AC_SHEBANG_PERL - can we she-bang perl?
323 AC_DEFUN(FPTOOLS_SHEBANG_PERL,
324 [AC_CACHE_CHECK([if your perl works in shell scripts], fptools_cv_shebang_perl,
329 (SHELL=/bin/sh; export SHELL; ./conftest 69 > /dev/null)
330 if test $? -ne 69; then
331 fptools_cv_shebang_perl=yes
333 fptools_cv_shebang_perl=no
339 dnl Extra testing of the result AC_PROG_CC, testing the gcc version no.
340 dnl *Must* be called after AC_PROG_CC
342 AC_DEFUN(FPTOOLS_HAVE_GCC,
343 [AC_CACHE_CHECK([whether you have an ok gcc], fptools_cv_have_gcc,
344 [if test -z "$GCC"; then
346 echo "You would be better off with gcc"
347 echo "Perhaps it is already installed, but not in your PATH?"
348 fptools_cv_have_gcc='no'
351 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' `"
353 if test `eval $cmd_string 2>/dev/null` != "1"; then
355 echo "I'm not sure if your version of gcc will work,"
356 echo "but it's worth a shot, eh?"
358 fptools_cv_have_gcc='yes'
361 HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
365 dnl Small feature test for perl version. Assumes PerlCmd
366 dnl contains path to perl binary
368 AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION,
369 [$PerlCmd -v >conftest.out 2>&1
370 if grep "version 5" conftest.out >/dev/null 2>&1; then
373 if grep "v5.6" conftest.out >/dev/null 2>&1; then
376 if grep "version 6" conftest.out >/dev/null 2>&1; then
379 echo "Your version of perl probably won't work."
387 dnl FPTOOLS_GHC_VERSION(version)
388 dnl FPTOOLS_GHC_VERSION(major, minor [, patchlevel])
389 dnl FPTOOLS_GHC_VERSION(version, major, minor, patchlevel)
391 dnl Test for version of installed ghc. Uses $GHC.
392 dnl [original version pinched from c2hs]
394 AC_DEFUN(FPTOOLS_GHC_VERSION,
395 [define([FPTOOLS_CV_GHC_VERSION], [fptools_cv_ghc_version])dnl
396 AC_CACHE_CHECK([version of ghc], FPTOOLS_CV_GHC_VERSION, [dnl
397 ${WithGhc-ghc} --version > conftestghc 2>&1
398 cat conftestghc >&AC_FD_CC
399 dnl `Useless Use Of cat' award...
400 changequote(<<, >>)dnl
401 FPTOOLS_CV_GHC_VERSION=`cat conftestghc | sed -n -e 's/, patchlevel *\([0-9]\)/.\1/;s/.* version \([0-9][0-9.]*\).*/\1/p'`
404 if test "[$]FPTOOLS_CV_GHC_VERSION" = ""
406 FPTOOLS_CV_GHC_VERSION='unknown'
408 changequote(<<, >>)dnl
409 FPTOOLS_CV_GHC_VERSION<<_major>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^\([0-9]\).*/\1/'`
410 FPTOOLS_CV_GHC_VERSION<<_minor>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^[0-9]\.\([0-9]*\).*/\1/'`
411 FPTOOLS_CV_GHC_VERSION<<_pl>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -n -e 's/^[0-9]\.[0-9]*\.\([0-9]*\)/\1/p'`
413 if test "[$]FPTOOLS_CV_GHC_VERSION[_pl]" = ""
415 FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor]"
416 FPTOOLS_CV_GHC_VERSION[_pl]="0"
418 FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor].[$]FPTOOLS_CV_GHC_VERSION[_pl]"
421 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]"
423 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
424 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
426 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
427 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
428 [$3]="[$]FPTOOLS_CV_GHC_VERSION[_pl]"
430 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]"
431 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
432 [$3]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
433 [$4]="[$]FPTOOLS_CV_GHC_VERSION[_pl]"
434 ], [AC_MSG_ERROR([wrong number of arguments to [$0]])])dnl
435 undefine([FPTOOLS_CV_GHC_VERSION])dnl
439 dnl ** figure out the alignment restriction of a type
440 dnl (required SIZEOF test but AC_CHECK_SIZEOF doesn't call PROVIDE
441 dnl so we can't call REQUIRE)
443 dnl FPTOOLS_CHECK_ALIGNMENT(TYPE)
444 AC_DEFUN(FPTOOLS_CHECK_ALIGNMENT,
445 [changequote(<<, >>)dnl
446 dnl The name to #define.
447 define(<<AC_TYPE_NAME>>, translit(alignment_$1, [a-z *], [A-Z_P]))dnl
448 dnl The cache variable name.
449 define(<<AC_CV_NAME>>, translit(ac_cv_alignment_$1, [ *], [_p]))dnl
450 dnl The name of the corresponding size.
451 define(<<AC_CV_SIZEOF_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
453 AC_MSG_CHECKING(alignment of $1)
454 AC_CACHE_VAL(AC_CV_NAME,
461 #define offsetof(ty,field) ((size_t)((char *)&((ty *)0)->field - (char *)(ty *)0))
466 FILE *f=fopen("conftestval", "w");
468 fprintf(f, "%d", offsetof(struct { char c; $1 ty;},ty));
471 AC_CV_NAME=`cat conftestval`,
472 AC_CV_NAME=$AC_CV_SIZEOF_NAME,
473 AC_CV_NAME=$AC_CV_SIZEOF_NAME)])
474 AC_MSG_RESULT($AC_CV_NAME)
475 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
476 AC_PROVIDE($AC_TYPE_NAME)
477 undefine([AC_TYPE_NAME])dnl
478 undefine([AC_CV_NAME])dnl
479 undefine([AC_CV_SIZEOF_NAME])dnl
482 dnl ** Map an arithmetic C type to a Haskell type.
483 dnl Based on autconf's AC_CHECK_SIZEOF.
485 dnl FPTOOLS_CHECK_HTYPE(TYPE [, DEFAULT_VALUE, [, VALUE-FOR-CROSS-COMPILATION])
486 AC_DEFUN(FPTOOLS_CHECK_HTYPE,
487 [changequote(<<, >>)dnl
488 dnl The name to #define.
489 define(<<AC_TYPE_NAME>>, translit(htype_$1, [a-z *], [A-Z_P]))dnl
490 dnl The cache variable name.
491 define(<<AC_CV_NAME>>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl
493 AC_MSG_CHECKING(Haskell type for $1)
494 AC_CACHE_VAL(AC_CV_NAME,
495 [AC_TRY_RUN([#include <stdio.h>
510 FILE *f=fopen("conftestval", "w");
512 if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {
514 ((testing)(-1) < (testing)0) ? "Int" : "Word",
518 (sizeof(testing) > sizeof(double)) ? "LDouble" :
519 (sizeof(testing) == sizeof(double)) ? "Double" : "Float");
523 }], AC_CV_NAME=`cat conftestval`,
524 ifelse([$2], , AC_CV_NAME=NotReallyAType, AC_CV_NAME=$2),
525 ifelse([$3], , AC_CV_NAME=NotReallyATypeCross, AC_CV_NAME=$3))]) dnl
526 AC_MSG_RESULT($AC_CV_NAME)
527 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
528 undefine([AC_TYPE_NAME])dnl
529 undefine([AC_CV_NAME])dnl
532 dnl ** figure out whether C compiler supports 'long long's
533 dnl (Closely based on Andreas Zeller's macro for testing
534 dnl for this under C++)
536 dnl If the C compiler supports `long long' types,
537 dnl define `HAVE_LONG_LONG'.
539 AC_DEFUN(FPTOOLS_C_LONG_LONG,
541 AC_REQUIRE([AC_PROG_CC])
542 AC_MSG_CHECKING(whether ${CC} supports long long types)
543 AC_CACHE_VAL(fptools_cv_have_long_long,
547 AC_TRY_COMPILE(,[long long a;],
548 fptools_cv_have_long_long=yes,
549 fptools_cv_have_long_long=no)
552 AC_MSG_RESULT($fptools_cv_have_long_long)
553 if test "$fptools_cv_have_long_long" = yes; then
554 AC_DEFINE(HAVE_LONG_LONG)
558 dnl ** Obtain the value of a C constant.
559 dnl The value will be `(-1)' if the constant is undefined.
561 dnl This is set up so that the argument can be a shell variable.
563 AC_DEFUN(FPTOOLS_CHECK_CCONST,
565 eval "def_name=CCONST_$1"
566 eval "cv_name=ac_cv_cconst_$1"
567 AC_MSG_CHECKING(value of $1)
568 AC_CACHE_VAL($cv_name,
569 [AC_TRY_RUN([#include <stdio.h>
573 FILE *f=fopen("conftestval", "w");
575 fprintf(f, "%d\n", $1);
578 eval "$cv_name=`cat conftestval`",
580 ifelse([$2], , , eval "$cv_name=$2"))])dnl
581 eval "fptools_check_cconst_result=`echo '$'{$cv_name}`"
582 AC_MSG_RESULT($fptools_check_cconst_result)
583 AC_DEFINE_UNQUOTED($def_name, $fptools_check_cconst_result)
584 unset fptools_check_cconst_result
587 dnl ** Invoke AC_CHECK_CCONST on each argument (which have to separate with
590 AC_DEFUN(FPTOOLS_CHECK_CCONSTS,
591 [for ac_const_name in $1
593 FPTOOLS_CHECK_CCONST($ac_const_name)dnl
598 dnl *** Can we open files in binary mode? ***
600 AC_DEFUN(FPTOOLS_O_BINARY,
602 AC_REQUIRE([AC_PROG_CC])
603 AC_MSG_CHECKING(whether we can open files in binary mode)
604 AC_CACHE_VAL(fptools_cv_have_o_binary,
613 fptools_cv_have_o_binary=yes,
614 fptools_cv_have_o_binary=no)
617 AC_MSG_RESULT($fptools_cv_have_o_binary)
618 if test "$fptools_cv_have_o_binary" = yes; then
619 AC_DEFINE(HAVE_O_BINARY)
623 dnl *** Which one comes first, .text or .data? ***
625 AC_DEFUN(FPTOOLS_CODE_BEFORE_DATA,
626 [AC_CACHE_CHECK([if code section appears before data], fptools_cv_code_bef_data,
628 int f() { return 1; }
630 int main() { return ((char*)&f > (char*)&i); }
633 fptools_cv_code_bef_data=yes, fptools_cv_code_bef_data=no,false)])
634 if test "$fptools_cv_code_bef_data" = yes; then
635 AC_DEFINE(CODE_BEFORE_DATA)
639 dnl *** Helper function **
641 AC_DEFUN(FPTOOLS_IN_SCOPE,AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no))
643 dnl *** What's the end-of-text-section marker called? ***
645 AC_DEFUN(FPTOOLS_END_TEXT_SECTION,
646 [AC_MSG_CHECKING([for end of text section marker])
648 for i in data_start _data_start etext _etext __etext; do
649 FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text)
650 if test "$fptools_end_of_text" = yes; then
651 AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, $i))
652 AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, $i))
657 if test "$not_done" = 1; then
658 FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text);
659 if test "$fptools_end_of_text" = yes; then
660 AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, etext))
661 AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, etext asm("etext")))
663 AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, dunno_what_it_is)
664 AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, dunno_what_it_is)
667 AC_MSG_RESULT([$]fptools_cv_end_of_text)
670 dnl *** What's the end-of-data-section marker called? ***
672 AC_DEFUN(FPTOOLS_END_DATA_SECTION,
673 [AC_MSG_CHECKING([for end of data section marker])
675 for i in end _end __end; do
676 FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data)
677 if test "$fptools_end_of_data" = yes; then
678 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, $i)])
679 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, $i)])
684 if test "$not_done" = 1; then
685 FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data);
686 if test "$fptools_end_of_data" = yes; then
687 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, end asm("end"))])
688 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, end)])
690 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, dunno_what_it_is)])
691 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, dunno_what_it_is)])
694 AC_MSG_RESULT([$]fptools_cv_end_of_data)
699 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
701 dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)
703 AC_DEFUN(FPTOOLS_TRY_LINK_NOWARN,
707 cat > conftest.$ac_ext <<EOF
708 dnl This sometimes fails to find confdefs.h, for some reason.
709 dnl [#]line __oline__ "[$]0"
710 [#]line __oline__ "configure"
711 #include "confdefs.h"
713 int t() { return 0; }
715 if AC_TRY_EVAL(ac_link); then
720 ifelse([$4], , , [else
730 dnl Loosely based on AC_CHECK_LIB in acgeneral.m4 in autoconf distribution
732 dnl FPTOOLS_CHECK_FLAG_NOWARN(NAME, FLAG, CODE, iftrue, iffalse)
734 AC_DEFUN(FPTOOLS_CHECK_FLAG_NOWARN,
735 [AC_MSG_CHECKING([for $1])
736 AC_CACHE_VAL(ac_cv_flag_$1,
737 [FPTOOLS_TRY_LINK_NOWARN("$2", [main() { $3; exit(0); } ],
738 eval "ac_cv_flag_$1=yes",
739 eval "ac_cv_flag_$1=no"
742 if eval "test \"`echo '$ac_cv_flag_'$1`\" = yes"; then
752 dnl FPTOOLS_CHECK_LIB_NOWARN(LIBRARY, FUNCTION)
754 AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN,
755 [FPTOOLS_CHECK_FLAG_NOWARN([function_$2],[],[extern char $2(); $2();],
757 ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
759 AC_DEFINE_UNQUOTED($ac_tr_lib)
761 [FPTOOLS_CHECK_FLAG_NOWARN([library_$1],[-l$1],[extern char $2(); $2();],
763 ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
765 AC_DEFINE_UNQUOTED($ac_tr_lib)
771 dnl check for prototypes
773 AC_DEFUN(AC_C_PROTOTYPES,
774 [AC_CACHE_CHECK([prototypes], ac_cv_prototypes,
783 ac_cv_prototypes=yes,
784 ac_cv_prototypes=no)])
785 if test "$ac_cv_prototypes" = yes; then
786 AC_DEFINE(HAVE_PROTOTYPES)
790 dnl ** Check which CATALOG file we have to use with DocBook SGML.
792 dnl FPTOOLS_DOCBOOK_CATALOG(VARIABLE, JADE, STYLESHEET, CATALOGS-TO-CHECK-FOR)
794 dnl If any of the catalogs given in CATALOGS-TO-CHECK-FOR works on this
795 dnl platform, let VARIABLE refer to this catalog; otherwise, VARIABLE
796 dnl is set to "no". JADE is the jade executable and STYLESHEET
797 dnl a DocBook style sheet.
799 AC_DEFUN(FPTOOLS_DOCBOOK_CATALOG,
800 [AC_CACHE_CHECK([for DocBook CATALOG], fptools_cv_sgml_catalog,
802 cat > conftest.sgml << EOF
803 <!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
807 <Author><OtherName>Test</OtherName></Author>
808 <Address>Test</Address>
809 <PubDate>Test</PubDate>
811 <Sect1><Title>Test</Title>
818 fptools_cv_sgml_catalog=no
819 for fptools_catalog in $4; do
820 ac_try="$2 -t rtf -d $3#print -c $fptools_catalog conftest.sgml"
821 if AC_TRY_EVAL(ac_try); then
822 fptools_cv_sgml_catalog=[$]fptools_catalog
828 if test $fptools_cv_sgml_catalog != "no"; then
829 $1=$fptools_cv_sgml_catalog
833 dnl ######################################################################
834 dnl FPTOOLS_SEARCH_LIBS(INCLUDES, FUNCTION, SEARCH-LIBS [, ACTION-IF-FOUND
835 dnl [, ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
836 dnl Search for a library defining FUNC, if it's not already available.
837 dnl This is almost the same as AC_SEARCH_LIBS, but the INCLUDES can be
839 dnl ######################################################################
841 AC_DEFUN(FPTOOLS_SEARCH_LIBS,
843 AC_CACHE_CHECK([for library containing $2], [ac_cv_search_$2],
844 [ac_func_search_save_LIBS="$LIBS"
846 AC_TRY_LINK([$1], [$2()], [ac_cv_search_$2="none required"])
847 test "$ac_cv_search_$2" = "no" && for i in $3; do
848 LIBS="-l$i $6 $ac_func_search_save_LIBS"
849 AC_TRY_LINK([$1], [$2()],
850 [ac_cv_search_$2="-l$i"
853 LIBS="$ac_func_search_save_LIBS"])
854 if test "$ac_cv_search_$2" != "no"; then
855 test "$ac_cv_search_$2" = "none required" || LIBS="$ac_cv_search_$2 $LIBS"
861 dnl ####################### -*- Mode: M4 -*- ###########################
862 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
864 dnl This file is free software; you can redistribute it and/or modify it
865 dnl under the terms of the GNU General Public License as published by
866 dnl the Free Software Foundation; either version 2 of the License, or
867 dnl (at your option) any later version.
869 dnl This file is distributed in the hope that it will be useful, but
870 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
871 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
872 dnl General Public License for more details.
874 dnl You should have received a copy of the GNU General Public License
875 dnl along with this file; if not, write to:
877 dnl Free Software Foundation, Inc.
880 dnl Boston, MA 02111-1307, USA.
881 dnl ####################################################################
884 dnl @synopsis FPTOOLS_CHECK_LIBM
886 dnl Search for math library (typically -lm).
888 dnl The variable LIBM (which is not an output variable by default) is
889 dnl set to a value which is suitable for use in a Makefile (for example,
890 dnl in make's LOADLIBES macro) provided you AC_SUBST it first.
892 dnl @version 0.01 $Id: aclocal.m4,v 1.71 2001/04/20 10:56:12 michaelw Exp $
893 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
895 # FPTOOLS_CHECK_LIBM - check for math library
896 AC_DEFUN(FPTOOLS_CHECK_LIBM,
897 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
900 *-*-beos* | *-*-macosx*)
901 # These system don't have libm
904 AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
905 AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
908 AC_CHECK_LIB(m, main, LIBM="-lm")
913 dnl ######################################################################
914 dnl NOTE: Because of portability issues between different autoconf
915 dnl versions the AC_HELP_STRING macro has been removed from FPTOOLS_HAVE_OPENGL.
916 dnl Furthermore, caching has been completely rewritten.
917 dnl ######################################################################
919 dnl ########################### -*- Mode: M4 -*- #######################
920 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
922 dnl This file is free software; you can redistribute it and/or modify it
923 dnl under the terms of the GNU General Public License as published by
924 dnl the Free Software Foundation; either version 2 of the License, or
925 dnl (at your option) any later version.
927 dnl This file is distributed in the hope that it will be useful, but
928 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
929 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
930 dnl General Public License for more details.
932 dnl You should have received a copy of the GNU General Public License
933 dnl along with this file; if not, write to:
935 dnl Free Software Foundation, Inc.
938 dnl Boston, MA 02111-1307, USA.
939 dnl ####################################################################
941 dnl @synopsis FPTOOLS_HAVE_OPENGL
943 dnl Search for OpenGL. We search first for Mesa (a GPL'ed version of
944 dnl OpenGL) before a vendor's version of OpenGL, unless we were
945 dnl specifically asked not to with `--with-Mesa=no' or `--without-Mesa'.
947 dnl The four "standard" OpenGL libraries are searched for: "-lGL",
948 dnl "-lGLU", "-lGLX" (or "-lMesaGL", "-lMesaGLU" as the case may be) and
951 dnl All of the libraries that are found (since "-lglut" or "-lGLX" might
952 dnl be missing) are added to the shell output variable "GL_LIBS", along
953 dnl with any other libraries that are necessary to successfully link an
954 dnl OpenGL application (e.g. the X11 libraries). Care has been taken to
955 dnl make sure that all of the libraries in "GL_LIBS" are listed in the
958 dnl Additionally, the shell output variable "GL_CFLAGS" is set to any
959 dnl flags (e.g. "-I" flags) that are necessary to successfully compile
960 dnl an OpenGL application.
962 dnl The following shell variable (which are not output variables) are
963 dnl also set to either "yes" or "no" (depending on which libraries were
964 dnl found) to help you determine exactly what was found.
971 dnl A complete little toy "Automake `make distcheck'" package of how to
972 dnl use this macro is available at:
974 dnl ftp://ftp.slac.stanford.edu/users/langston/autoconf/ac_opengl-0.01.tar.gz
976 dnl Please note that as the ac_opengl macro and the toy example evolves,
977 dnl the version number increases, so you may have to adjust the above
980 dnl @version 0.01 $Id: aclocal.m4,v 1.71 2001/04/20 10:56:12 michaelw Exp $
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"