1 dnl $Id: aclocal.m4,v 1.68 2001/03/13 14:59:56 simonmar 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 Check for Happy and version. If we're building GHC, then we need
157 dnl at least Happy version 1.9. If there's no installed Happy, we look
158 dnl for a happy source tree and point the build system at that instead.
160 dnl ToDo: when we reset HappyCmd to the source tree, autoconf doesn't
161 dnl seems to insert it in the cache file. sigh.
163 AC_DEFUN(FPTOOLS_HAPPY,
164 [AC_PATH_PROG(HappyCmd,happy)
165 AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
166 [if test x"$HappyCmd" != x; then
167 fptools_cv_happy_version="`$HappyCmd -v |
169 grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
170 elif test -d $srcdir/happy; then
171 HappyCmd=$hardtop/happy/src/happy-inplace;
172 fptools_cv_happy_version=`grep '^ProjectVersion[ ]*=' $srcdir/happy/mk/version.mk | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`;
173 echo -n "using happy from the source tree... ";
175 fptools_cv_happy_version="";
178 if test -d $srcdir/ghc; then
179 if ( test "$fptools_cv_happy_version" = "" || (
180 test `echo "$fptools_cv_happy_version" | sed -e "s/\(.*\)\..*/\1/g"` "-eq" "1" &&
181 test `echo "$fptools_cv_happy_version" | sed -e "s/.*\.\(.*\)/\1/g"` "-lt" "9" )); then
183 echo "Happy version 1.9 or later is required to compile GHC."
188 HappyVersion=$fptools_cv_happy_version;
189 AC_SUBST(HappyVersion)
193 dnl What's the best way of doing context diffs?
195 dnl (NB: NeXTStep thinks diff'ing a file against itself is "trouble")
197 AC_DEFUN(FPTOOLS_PROG_DIFF,
198 [AC_CACHE_CHECK([for ok way to do context diffs], fptools_cv_context_diffs,
199 [echo foo > conftest1
201 if diff -C 1 conftest1 conftest2 > /dev/null 2>&1 ; then
202 fptools_cv_context_diffs='diff -C 1'
204 if diff -c1 conftest1 conftest2 > /dev/null 2>&1 ; then
205 fptools_cv_context_diffs='diff -c1'
207 echo "Can't figure out how to do context diffs."
208 echo "Neither \`diff -C 1' nor \`diff -c1' works."
212 rm -f conftest1 conftest2
214 ContextDiffCmd=$fptools_cv_context_diffs
215 AC_SUBST(ContextDiffCmd)
219 dnl Finding the Right Yacc
221 AC_DEFUN(FPTOOLS_PROG_YACCY,
223 if test "$YACC" = "yacc"; then
224 AC_CACHE_CHECK([if it is an OK yacc], ac_cv_prog_yacc,
225 [AC_CHECK_PROG(WhatCmd, what, what, :)
226 $WhatCmd $YACC > conftest.out
227 if egrep 'y1\.c 1\..*SMI' conftest.out >/dev/null 2>&1; then
228 echo "I don't trust your $YaccCmd; it looks like an old Sun yacc"
229 if test -f /usr/lang/yacc; then
230 echo "I'm going to use /usr/lang/yacc instead"
231 ac_cv_prog_yacc=/usr/lang/yacc
233 echo "I'm assuming the worst...no parser generator at all"
236 elif egrep 'y1\.c.*Revision: 4\.2\.6\.3.*DEC' conftest.out >/dev/null 2>&1; then
237 echo "I don't trust your $YaccCmd; it looks like a lame DEC yacc"
238 echo "I'm assuming the worst...no parser generator at all"
241 ac_cv_prog_yacc=$YACC
246 ac_cv_prog_yacc=$YACC
248 YaccCmd=$ac_cv_prog_yacc
252 dnl *** Checking for ar and its arguments + whether we need ranlib.
254 dnl ArCmd and RANLIB are AC_SUBST'ed
256 AC_DEFUN(FPTOOLS_PROG_AR_AND_RANLIB,
257 [AC_PATH_PROG(ArCmd,ar)
258 if test -z "$ArCmd"; then
259 echo "You don't seem to have ar in your PATH...I have no idea how to make a library"
262 if $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then
265 elif $ArCmd cqs conftest.a >/dev/null 2>/dev/null; then
268 elif $ArCmd clq conftest.a >/dev/null 2>/dev/null; then
271 elif $ArCmd cq conftest.a >/dev/null 2>/dev/null; then
274 elif $ArCmd cq conftest.a 2>&1 | grep 'no archive members specified' >/dev/null 2>/dev/null; then
278 echo "I can't figure out how to use your $ArCmd"
282 test -n "$ArCmd" && test -n "$verbose" && echo " setting ArCmd to $ArCmd"
284 if test -z "$NeedRanLib"; then
286 test -n "$verbose" && echo " setting RANLIB to $RANLIB"
294 dnl AC_SHEBANG_PERL - can we she-bang perl?
296 AC_DEFUN(FPTOOLS_SHEBANG_PERL,
297 [AC_CACHE_CHECK([if your perl works in shell scripts], fptools_cv_shebang_perl,
302 (SHELL=/bin/sh; export SHELL; ./conftest 69 > /dev/null)
303 if test $? -ne 69; then
304 fptools_cv_shebang_perl=yes
306 fptools_cv_shebang_perl=no
312 dnl Extra testing of the result AC_PROG_CC, testing the gcc version no.
313 dnl *Must* be called after AC_PROG_CC
315 AC_DEFUN(FPTOOLS_HAVE_GCC,
316 [AC_CACHE_CHECK([whether you have an ok gcc], fptools_cv_have_gcc,
317 [if test -z "$GCC"; then
319 echo "You would be better off with gcc"
320 echo "Perhaps it is already installed, but not in your PATH?"
321 fptools_cv_have_gcc='no'
324 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' `"
326 if test `eval $cmd_string 2>/dev/null` != "1"; then
328 echo "I'm not sure if your version of gcc will work,"
329 echo "but it's worth a shot, eh?"
331 fptools_cv_have_gcc='yes'
334 HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
338 dnl Small feature test for perl version. Assumes PerlCmd
339 dnl contains path to perl binary
341 AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION,
342 [$PerlCmd -v >conftest.out 2>&1
343 if grep "version 5" conftest.out >/dev/null 2>&1; then
346 if grep "v5.6" conftest.out >/dev/null 2>&1; then
349 if grep "version 6" conftest.out >/dev/null 2>&1; then
352 echo "Your version of perl probably won't work."
360 dnl FPTOOLS_GHC_VERSION(version)
361 dnl FPTOOLS_GHC_VERSION(major, minor [, patchlevel])
362 dnl FPTOOLS_GHC_VERSION(version, major, minor, patchlevel)
364 dnl Test for version of installed ghc. Uses $GHC.
365 dnl [original version pinched from c2hs]
367 AC_DEFUN(FPTOOLS_GHC_VERSION,
368 [define([FPTOOLS_CV_GHC_VERSION], [fptools_cv_ghc_version])dnl
369 AC_CACHE_CHECK([version of ghc], FPTOOLS_CV_GHC_VERSION, [dnl
370 ${WithGhc-ghc} --version > conftestghc 2>&1
371 cat conftestghc >&AC_FD_CC
372 dnl `Useless Use Of cat' award...
373 changequote(<<, >>)dnl
374 FPTOOLS_CV_GHC_VERSION=`cat conftestghc | sed -n -e 's/, patchlevel *\([0-9]\)/.\1/;s/.* version \([0-9][0-9.]*\).*/\1/p'`
377 if test "[$]FPTOOLS_CV_GHC_VERSION" = ""
379 FPTOOLS_CV_GHC_VERSION='unknown'
381 changequote(<<, >>)dnl
382 FPTOOLS_CV_GHC_VERSION<<_major>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^\([0-9]\).*/\1/'`
383 FPTOOLS_CV_GHC_VERSION<<_minor>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^[0-9]\.\([0-9]*\).*/\1/'`
384 FPTOOLS_CV_GHC_VERSION<<_pl>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -n -e 's/^[0-9]\.[0-9]*\.\([0-9]*\)/\1/p'`
386 if test "[$]FPTOOLS_CV_GHC_VERSION[_pl]" = ""
388 FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor]"
389 FPTOOLS_CV_GHC_VERSION[_pl]="0"
391 FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor].[$]FPTOOLS_CV_GHC_VERSION[_pl]"
394 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]"
396 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
397 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
399 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
400 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
401 [$3]="[$]FPTOOLS_CV_GHC_VERSION[_pl]"
403 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]"
404 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
405 [$3]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
406 [$4]="[$]FPTOOLS_CV_GHC_VERSION[_pl]"
407 ], [AC_MSG_ERROR([wrong number of arguments to [$0]])])dnl
408 undefine([FPTOOLS_CV_GHC_VERSION])dnl
412 dnl ** figure out the alignment restriction of a type
413 dnl (required SIZEOF test but AC_CHECK_SIZEOF doesn't call PROVIDE
414 dnl so we can't call REQUIRE)
416 dnl FPTOOLS_CHECK_ALIGNMENT(TYPE)
417 AC_DEFUN(FPTOOLS_CHECK_ALIGNMENT,
418 [changequote(<<, >>)dnl
419 dnl The name to #define.
420 define(<<AC_TYPE_NAME>>, translit(alignment_$1, [a-z *], [A-Z_P]))dnl
421 dnl The cache variable name.
422 define(<<AC_CV_NAME>>, translit(ac_cv_alignment_$1, [ *], [_p]))dnl
423 dnl The name of the corresponding size.
424 define(<<AC_CV_SIZEOF_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
426 AC_MSG_CHECKING(alignment of $1)
427 AC_CACHE_VAL(AC_CV_NAME,
434 #define offsetof(ty,field) ((size_t)((char *)&((ty *)0)->field - (char *)(ty *)0))
439 FILE *f=fopen("conftestval", "w");
441 fprintf(f, "%d", offsetof(struct { char c; $1 ty;},ty));
444 AC_CV_NAME=`cat conftestval`,
445 AC_CV_NAME=$AC_CV_SIZEOF_NAME,
446 AC_CV_NAME=$AC_CV_SIZEOF_NAME)])
447 AC_MSG_RESULT($AC_CV_NAME)
448 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
449 AC_PROVIDE($AC_TYPE_NAME)
450 undefine([AC_TYPE_NAME])dnl
451 undefine([AC_CV_NAME])dnl
452 undefine([AC_CV_SIZEOF_NAME])dnl
455 dnl ** Map an arithmetic C type to a Haskell type.
456 dnl Based on autconf's AC_CHECK_SIZEOF.
458 dnl FPTOOLS_CHECK_HTYPE(TYPE [, DEFAULT_VALUE, [, VALUE-FOR-CROSS-COMPILATION])
459 AC_DEFUN(FPTOOLS_CHECK_HTYPE,
460 [changequote(<<, >>)dnl
461 dnl The name to #define.
462 define(<<AC_TYPE_NAME>>, translit(htype_$1, [a-z *], [A-Z_P]))dnl
463 dnl The cache variable name.
464 define(<<AC_CV_NAME>>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl
466 AC_MSG_CHECKING(Haskell type for $1)
467 AC_CACHE_VAL(AC_CV_NAME,
468 [AC_TRY_RUN([#include <stdio.h>
483 FILE *f=fopen("conftestval", "w");
485 if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {
487 ((testing)(-1) < (testing)0) ? "Int" : "Word",
491 (sizeof(testing) > sizeof(double)) ? "LDouble" :
492 (sizeof(testing) == sizeof(double)) ? "Double" : "Float");
496 }], AC_CV_NAME=`cat conftestval`,
497 ifelse([$2], , AC_CV_NAME=NotReallyAType, AC_CV_NAME=$2),
498 ifelse([$3], , AC_CV_NAME=NotReallyATypeCross, AC_CV_NAME=$3))]) dnl
499 AC_MSG_RESULT($AC_CV_NAME)
500 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
501 undefine([AC_TYPE_NAME])dnl
502 undefine([AC_CV_NAME])dnl
505 dnl ** figure out whether C compiler supports 'long long's
506 dnl (Closely based on Andreas Zeller's macro for testing
507 dnl for this under C++)
509 dnl If the C compiler supports `long long' types,
510 dnl define `HAVE_LONG_LONG'.
512 AC_DEFUN(FPTOOLS_C_LONG_LONG,
514 AC_REQUIRE([AC_PROG_CC])
515 AC_MSG_CHECKING(whether ${CC} supports long long types)
516 AC_CACHE_VAL(fptools_cv_have_long_long,
520 AC_TRY_COMPILE(,[long long a;],
521 fptools_cv_have_long_long=yes,
522 fptools_cv_have_long_long=no)
525 AC_MSG_RESULT($fptools_cv_have_long_long)
526 if test "$fptools_cv_have_long_long" = yes; then
527 AC_DEFINE(HAVE_LONG_LONG)
531 dnl ** Obtain the value of a C constant.
532 dnl The value will be `(-1)' if the constant is undefined.
534 dnl This is set up so that the argument can be a shell variable.
536 AC_DEFUN(FPTOOLS_CHECK_CCONST,
538 eval "def_name=CCONST_$1"
539 eval "cv_name=ac_cv_cconst_$1"
540 AC_MSG_CHECKING(value of $1)
541 AC_CACHE_VAL($cv_name,
542 [AC_TRY_RUN([#include <stdio.h>
546 FILE *f=fopen("conftestval", "w");
548 fprintf(f, "%d\n", $1);
551 eval "$cv_name=`cat conftestval`",
553 ifelse([$2], , , eval "$cv_name=$2"))])dnl
554 eval "fptools_check_cconst_result=`echo '$'{$cv_name}`"
555 AC_MSG_RESULT($fptools_check_cconst_result)
556 AC_DEFINE_UNQUOTED($def_name, $fptools_check_cconst_result)
557 unset fptools_check_cconst_result
560 dnl ** Invoke AC_CHECK_CCONST on each argument (which have to separate with
563 AC_DEFUN(FPTOOLS_CHECK_CCONSTS,
564 [for ac_const_name in $1
566 FPTOOLS_CHECK_CCONST($ac_const_name)dnl
571 dnl *** Can we open files in binary mode? ***
573 AC_DEFUN(FPTOOLS_O_BINARY,
575 AC_REQUIRE([AC_PROG_CC])
576 AC_MSG_CHECKING(whether we can open files in binary mode)
577 AC_CACHE_VAL(fptools_cv_have_o_binary,
586 fptools_cv_have_o_binary=yes,
587 fptools_cv_have_o_binary=no)
590 AC_MSG_RESULT($fptools_cv_have_o_binary)
591 if test "$fptools_cv_have_o_binary" = yes; then
592 AC_DEFINE(HAVE_O_BINARY)
596 dnl *** Which one comes first, .text or .data? ***
598 AC_DEFUN(FPTOOLS_CODE_BEFORE_DATA,
599 [AC_CACHE_CHECK([if code section appears before data], fptools_cv_code_bef_data,
601 int f() { return 1; }
603 int main() { return ((char*)&f > (char*)&i); }
606 fptools_cv_code_bef_data=yes, fptools_cv_code_bef_data=no,false)])
607 if test "$fptools_cv_code_bef_data" = yes; then
608 AC_DEFINE(CODE_BEFORE_DATA)
612 dnl *** Helper function **
614 AC_DEFUN(FPTOOLS_IN_SCOPE,AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no))
616 dnl *** What's the end-of-text-section marker called? ***
618 AC_DEFUN(FPTOOLS_END_TEXT_SECTION,
619 [AC_MSG_CHECKING([for end of text section marker])
621 for i in data_start _data_start etext _etext __etext; do
622 FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text)
623 if test "$fptools_end_of_text" = yes; then
624 AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, $i))
625 AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, $i))
630 if test "$not_done" = 1; then
631 FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text);
632 if test "$fptools_end_of_text" = yes; then
633 AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, etext))
634 AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, etext asm("etext")))
636 AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, dunno_what_it_is)
637 AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, dunno_what_it_is)
640 AC_MSG_RESULT([$]fptools_cv_end_of_text)
643 dnl *** What's the end-of-data-section marker called? ***
645 AC_DEFUN(FPTOOLS_END_DATA_SECTION,
646 [AC_MSG_CHECKING([for end of data section marker])
648 for i in end _end __end; do
649 FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data)
650 if test "$fptools_end_of_data" = yes; then
651 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, $i)])
652 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, $i)])
657 if test "$not_done" = 1; then
658 FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data);
659 if test "$fptools_end_of_data" = yes; then
660 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, end asm("end"))])
661 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, end)])
663 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, dunno_what_it_is)])
664 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, dunno_what_it_is)])
667 AC_MSG_RESULT([$]fptools_cv_end_of_data)
672 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
674 dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)
676 AC_DEFUN(FPTOOLS_TRY_LINK_NOWARN,
680 cat > conftest.$ac_ext <<EOF
681 dnl This sometimes fails to find confdefs.h, for some reason.
682 dnl [#]line __oline__ "[$]0"
683 [#]line __oline__ "configure"
684 #include "confdefs.h"
686 int t() { return 0; }
688 if AC_TRY_EVAL(ac_link); then
693 ifelse([$4], , , [else
703 dnl Loosely based on AC_CHECK_LIB in acgeneral.m4 in autoconf distribution
705 dnl FPTOOLS_CHECK_FLAG_NOWARN(NAME, FLAG, CODE, iftrue, iffalse)
707 AC_DEFUN(FPTOOLS_CHECK_FLAG_NOWARN,
708 [AC_MSG_CHECKING([for $1])
709 AC_CACHE_VAL(ac_cv_flag_$1,
710 [FPTOOLS_TRY_LINK_NOWARN("$2", [main() { $3; exit(0); } ],
711 eval "ac_cv_flag_$1=yes",
712 eval "ac_cv_flag_$1=no"
715 if eval "test \"`echo '$ac_cv_flag_'$1`\" = yes"; then
725 dnl FPTOOLS_CHECK_LIB_NOWARN(LIBRARY, FUNCTION)
727 AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN,
728 [FPTOOLS_CHECK_FLAG_NOWARN([function_$2],[],[extern char $2(); $2();],
730 ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
732 AC_DEFINE_UNQUOTED($ac_tr_lib)
734 [FPTOOLS_CHECK_FLAG_NOWARN([library_$1],[-l$1],[extern char $2(); $2();],
736 ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
738 AC_DEFINE_UNQUOTED($ac_tr_lib)
744 dnl check for prototypes
746 AC_DEFUN(AC_C_PROTOTYPES,
747 [AC_CACHE_CHECK([prototypes], ac_cv_prototypes,
756 ac_cv_prototypes=yes,
757 ac_cv_prototypes=no)])
758 if test "$ac_cv_prototypes" = yes; then
759 AC_DEFINE(HAVE_PROTOTYPES)
763 dnl ** Check which CATALOG file we have to use with DocBook SGML.
765 dnl FPTOOLS_DOCBOOK_CATALOG(VARIABLE, JADE, STYLESHEET, CATALOGS-TO-CHECK-FOR)
767 dnl If any of the catalogs given in CATALOGS-TO-CHECK-FOR works on this
768 dnl platform, let VARIABLE refer to this catalog; otherwise, VARIABLE
769 dnl is set to "no". JADE is the jade executable and STYLESHEET
770 dnl a DocBook style sheet.
772 AC_DEFUN(FPTOOLS_DOCBOOK_CATALOG,
773 [AC_CACHE_CHECK([for DocBook CATALOG], fptools_cv_sgml_catalog,
775 cat > conftest.sgml << EOF
776 <!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
780 <Author><OtherName>Test</OtherName></Author>
781 <Address>Test</Address>
782 <PubDate>Test</PubDate>
784 <Sect1><Title>Test</Title>
791 fptools_cv_sgml_catalog=no
792 for fptools_catalog in $4; do
793 ac_try="$2 -t rtf -d $3#print -c $fptools_catalog conftest.sgml"
794 if AC_TRY_EVAL(ac_try); then
795 fptools_cv_sgml_catalog=[$]fptools_catalog
801 if test $fptools_cv_sgml_catalog != "no"; then
802 $1=$fptools_cv_sgml_catalog
806 dnl ######################################################################
807 dnl FPTOOLS_SEARCH_LIBS(INCLUDES, FUNCTION, SEARCH-LIBS [, ACTION-IF-FOUND
808 dnl [, ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
809 dnl Search for a library defining FUNC, if it's not already available.
810 dnl This is almost the same as AC_SEARCH_LIBS, but the INCLUDES can be
812 dnl ######################################################################
814 AC_DEFUN(FPTOOLS_SEARCH_LIBS,
816 AC_CACHE_CHECK([for library containing $2], [ac_cv_search_$2],
817 [ac_func_search_save_LIBS="$LIBS"
819 AC_TRY_LINK([$1], [$2()], [ac_cv_search_$2="none required"])
820 test "$ac_cv_search_$2" = "no" && for i in $3; do
821 LIBS="-l$i $6 $ac_func_search_save_LIBS"
822 AC_TRY_LINK([$1], [$2()],
823 [ac_cv_search_$2="-l$i"
826 LIBS="$ac_func_search_save_LIBS"])
827 if test "$ac_cv_search_$2" != "no"; then
828 test "$ac_cv_search_$2" = "none required" || LIBS="$ac_cv_search_$2 $LIBS"
834 dnl ####################### -*- Mode: M4 -*- ###########################
835 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
837 dnl This file is free software; you can redistribute it and/or modify it
838 dnl under the terms of the GNU General Public License as published by
839 dnl the Free Software Foundation; either version 2 of the License, or
840 dnl (at your option) any later version.
842 dnl This file is distributed in the hope that it will be useful, but
843 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
844 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
845 dnl General Public License for more details.
847 dnl You should have received a copy of the GNU General Public License
848 dnl along with this file; if not, write to:
850 dnl Free Software Foundation, Inc.
853 dnl Boston, MA 02111-1307, USA.
854 dnl ####################################################################
857 dnl @synopsis FPTOOLS_CHECK_LIBM
859 dnl Search for math library (typically -lm).
861 dnl The variable LIBM (which is not an output variable by default) is
862 dnl set to a value which is suitable for use in a Makefile (for example,
863 dnl in make's LOADLIBES macro) provided you AC_SUBST it first.
865 dnl @version 0.01 $Id: aclocal.m4,v 1.68 2001/03/13 14:59:56 simonmar Exp $
866 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
868 # FPTOOLS_CHECK_LIBM - check for math library
869 AC_DEFUN(FPTOOLS_CHECK_LIBM,
870 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
873 *-*-beos* | *-*-macosx*)
874 # These system don't have libm
877 AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
878 AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
881 AC_CHECK_LIB(m, main, LIBM="-lm")
886 dnl ######################################################################
887 dnl NOTE: Because of portability issues between different autoconf
888 dnl versions the AC_HELP_STRING macro has been removed from FPTOOLS_HAVE_OPENGL.
889 dnl Furthermore, caching has been completely rewritten.
890 dnl ######################################################################
892 dnl ########################### -*- Mode: M4 -*- #######################
893 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
895 dnl This file is free software; you can redistribute it and/or modify it
896 dnl under the terms of the GNU General Public License as published by
897 dnl the Free Software Foundation; either version 2 of the License, or
898 dnl (at your option) any later version.
900 dnl This file is distributed in the hope that it will be useful, but
901 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
902 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
903 dnl General Public License for more details.
905 dnl You should have received a copy of the GNU General Public License
906 dnl along with this file; if not, write to:
908 dnl Free Software Foundation, Inc.
911 dnl Boston, MA 02111-1307, USA.
912 dnl ####################################################################
914 dnl @synopsis FPTOOLS_HAVE_OPENGL
916 dnl Search for OpenGL. We search first for Mesa (a GPL'ed version of
917 dnl OpenGL) before a vendor's version of OpenGL, unless we were
918 dnl specifically asked not to with `--with-Mesa=no' or `--without-Mesa'.
920 dnl The four "standard" OpenGL libraries are searched for: "-lGL",
921 dnl "-lGLU", "-lGLX" (or "-lMesaGL", "-lMesaGLU" as the case may be) and
924 dnl All of the libraries that are found (since "-lglut" or "-lGLX" might
925 dnl be missing) are added to the shell output variable "GL_LIBS", along
926 dnl with any other libraries that are necessary to successfully link an
927 dnl OpenGL application (e.g. the X11 libraries). Care has been taken to
928 dnl make sure that all of the libraries in "GL_LIBS" are listed in the
931 dnl Additionally, the shell output variable "GL_CFLAGS" is set to any
932 dnl flags (e.g. "-I" flags) that are necessary to successfully compile
933 dnl an OpenGL application.
935 dnl The following shell variable (which are not output variables) are
936 dnl also set to either "yes" or "no" (depending on which libraries were
937 dnl found) to help you determine exactly what was found.
944 dnl A complete little toy "Automake `make distcheck'" package of how to
945 dnl use this macro is available at:
947 dnl ftp://ftp.slac.stanford.edu/users/langston/autoconf/ac_opengl-0.01.tar.gz
949 dnl Please note that as the ac_opengl macro and the toy example evolves,
950 dnl the version number increases, so you may have to adjust the above
953 dnl @version 0.01 $Id: aclocal.m4,v 1.68 2001/03/13 14:59:56 simonmar Exp $
954 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
956 AC_DEFUN(FPTOOLS_HAVE_OPENGL,
958 AC_REQUIRE([AC_PROG_CC])
959 AC_REQUIRE([AC_PATH_X])
960 AC_REQUIRE([AC_PATH_XTRA])
961 AC_REQUIRE([FPTOOLS_CHECK_LIBM])
963 dnl Check for Mesa first, unless we were asked not to.
964 dnl AC_HELP_STRING([--with-Mesa],
965 dnl [Prefer the Mesa library over a vendors native OpenGL library (default=yes)],
966 dnl with_Mesa_help_string)
967 dnl AC_ARG_ENABLE(Mesa, $with_Mesa_help_string, use_Mesa=$enableval, use_Mesa=yes)
968 AC_ARG_ENABLE(Mesa, [ --with-Mesa Prefer the Mesa library over a vendors native OpenGL library (default=yes)], use_Mesa=$enableval, use_Mesa=yes)
970 if test x"$use_Mesa" = xyes; then
971 GL_search_list="MesaGL GL opengl32"
972 GLU_search_list="MesaGLU GLU glu32"
973 GLX_search_list="MesaGLX GLX"
975 GL_search_list="GL opengl32 MesaGL"
976 GLU_search_list="GLU glu32 MesaGLU"
977 GLX_search_list="GLX MesaGLX"
983 dnl If we are running under X11 then add in the appropriate libraries.
984 if ! test x"$no_x" = xyes; then
985 dnl Add everything we need to compile and link X programs to GL_CFLAGS
987 GL_CFLAGS="$X_CFLAGS"
988 GL_X_LIBS="$X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS $LIBM"
990 GL_save_CPPFLAGS="$CPPFLAGS"
991 CPPFLAGS="$GL_CFLAGS"
996 FPTOOLS_SEARCH_LIBS([#include <GL/gl.h>], glEnd, $GL_search_list, have_GL=yes, have_GL=no)
997 FPTOOLS_SEARCH_LIBS([#include <GL/glu.h>], gluNewQuadric, $GLU_search_list, have_GLU=yes, have_GLU=no)
998 FPTOOLS_SEARCH_LIBS([#include <GL/glx.h>], glXChooseVisual, $GLX_search_list, have_GLX=yes, have_GLX=no)
999 FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glutMainLoop, glut glut32, have_glut=yes, have_glut=no)
1001 if test -n "$LIBS"; then
1008 AC_CACHE_CHECK([OpenGL flags], mdl_cv_gl_cflags, [mdl_cv_gl_cflags="$GL_CFLAGS"])
1009 GL_CFLAGS="$mdl_cv_gl_cflags"
1011 AC_CACHE_CHECK([OpenGL libs], mdl_cv_gl_libs, [mdl_cv_gl_libs="$GL_LIBS"])
1012 GL_LIBS="$mdl_cv_gl_libs"
1015 dnl Reset GL_X_LIBS regardless, since it was just a temporary variable
1016 dnl and we don't want to be global namespace polluters.
1019 LIBS="$GL_save_LIBS"
1020 CPPFLAGS="$GL_save_CPPFLAGS"