1 dnl $Id: aclocal.m4,v 1.66 2001/01/30 11:13:26 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 `echo "$fptools_cv_happy_version" | sed -e "s/\(.*\)\..*/\1/g"` "-eq" "1" &&
179 test `echo "$fptools_cv_happy_version" | sed -e "s/.*\.\(.*\)/\1/g"` "-lt" "9" ); then
180 if test -d $srcdir/ghc; then
182 echo "Happy version 1.9 or later is required to compile GHC."
187 HappyVersion=$fptools_cv_happy_version;
188 AC_SUBST(HappyVersion)
192 dnl What's the best way of doing context diffs?
194 dnl (NB: NeXTStep thinks diff'ing a file against itself is "trouble")
196 AC_DEFUN(FPTOOLS_PROG_DIFF,
197 [AC_CACHE_CHECK([for ok way to do context diffs], fptools_cv_context_diffs,
198 [echo foo > conftest1
200 if diff -C 1 conftest1 conftest2 > /dev/null 2>&1 ; then
201 fptools_cv_context_diffs='diff -C 1'
203 if diff -c1 conftest1 conftest2 > /dev/null 2>&1 ; then
204 fptools_cv_context_diffs='diff -c1'
206 echo "Can't figure out how to do context diffs."
207 echo "Neither \`diff -C 1' nor \`diff -c1' works."
211 rm -f conftest1 conftest2
213 ContextDiffCmd=$fptools_cv_context_diffs
214 AC_SUBST(ContextDiffCmd)
218 dnl Finding the Right Yacc
220 AC_DEFUN(FPTOOLS_PROG_YACCY,
222 if test "$YACC" = "yacc"; then
223 AC_CACHE_CHECK([if it is an OK yacc], ac_cv_prog_yacc,
224 [AC_CHECK_PROG(WhatCmd, what, what, :)
225 $WhatCmd $YACC > conftest.out
226 if egrep 'y1\.c 1\..*SMI' conftest.out >/dev/null 2>&1; then
227 echo "I don't trust your $YaccCmd; it looks like an old Sun yacc"
228 if test -f /usr/lang/yacc; then
229 echo "I'm going to use /usr/lang/yacc instead"
230 ac_cv_prog_yacc=/usr/lang/yacc
232 echo "I'm assuming the worst...no parser generator at all"
235 elif egrep 'y1\.c.*Revision: 4\.2\.6\.3.*DEC' conftest.out >/dev/null 2>&1; then
236 echo "I don't trust your $YaccCmd; it looks like a lame DEC yacc"
237 echo "I'm assuming the worst...no parser generator at all"
240 ac_cv_prog_yacc=$YACC
245 ac_cv_prog_yacc=$YACC
247 YaccCmd=$ac_cv_prog_yacc
251 dnl *** Checking for ar and its arguments + whether we need ranlib.
253 dnl ArCmd and RANLIB are AC_SUBST'ed
255 AC_DEFUN(FPTOOLS_PROG_AR_AND_RANLIB,
256 [AC_PATH_PROG(ArCmd,ar)
257 if test -z "$ArCmd"; then
258 echo "You don't seem to have ar in your PATH...I have no idea how to make a library"
261 if $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then
264 elif $ArCmd cqs conftest.a >/dev/null 2>/dev/null; then
267 elif $ArCmd clq conftest.a >/dev/null 2>/dev/null; then
270 elif $ArCmd cq conftest.a >/dev/null 2>/dev/null; then
273 elif $ArCmd cq conftest.a 2>&1 | grep 'no archive members specified' >/dev/null 2>/dev/null; then
277 echo "I can't figure out how to use your $ArCmd"
281 test -n "$ArCmd" && test -n "$verbose" && echo " setting ArCmd to $ArCmd"
283 if test -z "$NeedRanLib"; then
285 test -n "$verbose" && echo " setting RANLIB to $RANLIB"
293 dnl AC_SHEBANG_PERL - can we she-bang perl?
295 AC_DEFUN(FPTOOLS_SHEBANG_PERL,
296 [AC_CACHE_CHECK([if your perl works in shell scripts], fptools_cv_shebang_perl,
301 (SHELL=/bin/sh; export SHELL; ./conftest 69 > /dev/null)
302 if test $? -ne 69; then
303 fptools_cv_shebang_perl=yes
305 fptools_cv_shebang_perl=no
311 dnl Extra testing of the result AC_PROG_CC, testing the gcc version no.
312 dnl *Must* be called after AC_PROG_CC
314 AC_DEFUN(FPTOOLS_HAVE_GCC,
315 [AC_CACHE_CHECK([whether you have an ok gcc], fptools_cv_have_gcc,
316 [if test -z "$GCC"; then
318 echo "You would be better off with gcc"
319 echo "Perhaps it is already installed, but not in your PATH?"
320 fptools_cv_have_gcc='no'
323 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' `"
325 if test `eval $cmd_string 2>/dev/null` != "1"; then
327 echo "I'm not sure if your version of gcc will work,"
328 echo "but it's worth a shot, eh?"
330 fptools_cv_have_gcc='yes'
333 HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
337 dnl Small feature test for perl version. Assumes PerlCmd
338 dnl contains path to perl binary
340 AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION,
341 [$PerlCmd -v >conftest.out 2>&1
342 if grep "version 5" conftest.out >/dev/null 2>&1; then
345 if grep "v5.6" conftest.out >/dev/null 2>&1; then
348 if grep "version 6" conftest.out >/dev/null 2>&1; then
351 echo "Your version of perl probably won't work."
359 dnl FPTOOLS_GHC_VERSION(version)
360 dnl FPTOOLS_GHC_VERSION(major, minor [, patchlevel])
361 dnl FPTOOLS_GHC_VERSION(version, major, minor, patchlevel)
363 dnl Test for version of installed ghc. Uses $GHC.
364 dnl [original version pinched from c2hs]
366 AC_DEFUN(FPTOOLS_GHC_VERSION,
367 [define([FPTOOLS_CV_GHC_VERSION], [fptools_cv_ghc_version])dnl
368 AC_CACHE_CHECK([version of ghc], FPTOOLS_CV_GHC_VERSION, [dnl
369 ${WithGhc-ghc} --version > conftestghc 2>&1
370 cat conftestghc >&AC_FD_CC
371 dnl `Useless Use Of cat' award...
372 changequote(<<, >>)dnl
373 FPTOOLS_CV_GHC_VERSION=`cat conftestghc | sed -n -e 's/, patchlevel *\([0-9]\)/.\1/;s/.* version \([0-9][0-9.]*\).*/\1/p'`
376 if test "[$]FPTOOLS_CV_GHC_VERSION" = ""
378 FPTOOLS_CV_GHC_VERSION='unknown'
380 changequote(<<, >>)dnl
381 FPTOOLS_CV_GHC_VERSION<<_major>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^\([0-9]\).*/\1/'`
382 FPTOOLS_CV_GHC_VERSION<<_minor>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^[0-9]\.\([0-9]*\).*/\1/'`
383 FPTOOLS_CV_GHC_VERSION<<_pl>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -n -e 's/^[0-9]\.[0-9]*\.\([0-9]*\)/\1/p'`
385 if test "[$]FPTOOLS_CV_GHC_VERSION[_pl]" = ""
387 FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor]"
388 FPTOOLS_CV_GHC_VERSION[_pl]="0"
390 FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor].[$]FPTOOLS_CV_GHC_VERSION[_pl]"
393 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]"
395 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
396 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
398 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
399 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
400 [$3]="[$]FPTOOLS_CV_GHC_VERSION[_pl]"
402 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]"
403 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
404 [$3]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
405 [$4]="[$]FPTOOLS_CV_GHC_VERSION[_pl]"
406 ], [AC_MSG_ERROR([wrong number of arguments to [$0]])])dnl
407 undefine([FPTOOLS_CV_GHC_VERSION])dnl
411 dnl ** figure out the alignment restriction of a type
412 dnl (required SIZEOF test but AC_CHECK_SIZEOF doesn't call PROVIDE
413 dnl so we can't call REQUIRE)
415 dnl FPTOOLS_CHECK_ALIGNMENT(TYPE)
416 AC_DEFUN(FPTOOLS_CHECK_ALIGNMENT,
417 [changequote(<<, >>)dnl
418 dnl The name to #define.
419 define(<<AC_TYPE_NAME>>, translit(alignment_$1, [a-z *], [A-Z_P]))dnl
420 dnl The cache variable name.
421 define(<<AC_CV_NAME>>, translit(ac_cv_alignment_$1, [ *], [_p]))dnl
422 dnl The name of the corresponding size.
423 define(<<AC_CV_SIZEOF_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
425 AC_MSG_CHECKING(alignment of $1)
426 AC_CACHE_VAL(AC_CV_NAME,
433 #define offsetof(ty,field) ((size_t)((char *)&((ty *)0)->field - (char *)(ty *)0))
438 FILE *f=fopen("conftestval", "w");
440 fprintf(f, "%d", offsetof(struct { char c; $1 ty;},ty));
443 AC_CV_NAME=`cat conftestval`,
444 AC_CV_NAME=$AC_CV_SIZEOF_NAME,
445 AC_CV_NAME=$AC_CV_SIZEOF_NAME)])
446 AC_MSG_RESULT($AC_CV_NAME)
447 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
448 AC_PROVIDE($AC_TYPE_NAME)
449 undefine([AC_TYPE_NAME])dnl
450 undefine([AC_CV_NAME])dnl
451 undefine([AC_CV_SIZEOF_NAME])dnl
454 dnl ** Map an arithmetic C type to a Haskell type.
455 dnl Based on autconf's AC_CHECK_SIZEOF.
457 dnl FPTOOLS_CHECK_HTYPE(TYPE [, DEFAULT_VALUE, [, VALUE-FOR-CROSS-COMPILATION])
458 AC_DEFUN(FPTOOLS_CHECK_HTYPE,
459 [changequote(<<, >>)dnl
460 dnl The name to #define.
461 define(<<AC_TYPE_NAME>>, translit(htype_$1, [a-z *], [A-Z_P]))dnl
462 dnl The cache variable name.
463 define(<<AC_CV_NAME>>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl
465 AC_MSG_CHECKING(Haskell type for $1)
466 AC_CACHE_VAL(AC_CV_NAME,
467 [AC_TRY_RUN([#include <stdio.h>
482 FILE *f=fopen("conftestval", "w");
484 if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {
486 ((testing)(-1) < (testing)0) ? "Int" : "Word",
490 (sizeof(testing) > sizeof(double)) ? "LDouble" :
491 (sizeof(testing) == sizeof(double)) ? "Double" : "Float");
495 }], AC_CV_NAME=`cat conftestval`,
496 ifelse([$2], , AC_CV_NAME=NotReallyAType, AC_CV_NAME=$2),
497 ifelse([$3], , AC_CV_NAME=NotReallyATypeCross, AC_CV_NAME=$3))]) dnl
498 AC_MSG_RESULT($AC_CV_NAME)
499 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
500 undefine([AC_TYPE_NAME])dnl
501 undefine([AC_CV_NAME])dnl
504 dnl ** figure out whether C compiler supports 'long long's
505 dnl (Closely based on Andreas Zeller's macro for testing
506 dnl for this under C++)
508 dnl If the C compiler supports `long long' types,
509 dnl define `HAVE_LONG_LONG'.
511 AC_DEFUN(FPTOOLS_C_LONG_LONG,
513 AC_REQUIRE([AC_PROG_CC])
514 AC_MSG_CHECKING(whether ${CC} supports long long types)
515 AC_CACHE_VAL(fptools_cv_have_long_long,
519 AC_TRY_COMPILE(,[long long a;],
520 fptools_cv_have_long_long=yes,
521 fptools_cv_have_long_long=no)
524 AC_MSG_RESULT($fptools_cv_have_long_long)
525 if test "$fptools_cv_have_long_long" = yes; then
526 AC_DEFINE(HAVE_LONG_LONG)
530 dnl ** Obtain the value of a C constant.
531 dnl The value will be `(-1)' if the constant is undefined.
533 dnl This is set up so that the argument can be a shell variable.
535 AC_DEFUN(FPTOOLS_CHECK_CCONST,
537 eval "def_name=CCONST_$1"
538 eval "cv_name=ac_cv_cconst_$1"
539 AC_MSG_CHECKING(value of $1)
540 AC_CACHE_VAL($cv_name,
541 [AC_TRY_RUN([#include <stdio.h>
545 FILE *f=fopen("conftestval", "w");
547 fprintf(f, "%d\n", $1);
550 eval "$cv_name=`cat conftestval`",
552 ifelse([$2], , , eval "$cv_name=$2"))])dnl
553 eval "fptools_check_cconst_result=`echo '$'{$cv_name}`"
554 AC_MSG_RESULT($fptools_check_cconst_result)
555 AC_DEFINE_UNQUOTED($def_name, $fptools_check_cconst_result)
556 unset fptools_check_cconst_result
559 dnl ** Invoke AC_CHECK_CCONST on each argument (which have to separate with
562 AC_DEFUN(FPTOOLS_CHECK_CCONSTS,
563 [for ac_const_name in $1
565 FPTOOLS_CHECK_CCONST($ac_const_name)dnl
570 dnl *** Can we open files in binary mode? ***
572 AC_DEFUN(FPTOOLS_O_BINARY,
574 AC_REQUIRE([AC_PROG_CC])
575 AC_MSG_CHECKING(whether we can open files in binary mode)
576 AC_CACHE_VAL(fptools_cv_have_o_binary,
585 fptools_cv_have_o_binary=yes,
586 fptools_cv_have_o_binary=no)
589 AC_MSG_RESULT($fptools_cv_have_o_binary)
590 if test "$fptools_cv_have_o_binary" = yes; then
591 AC_DEFINE(HAVE_O_BINARY)
595 dnl *** Which one comes first, .text or .data? ***
597 AC_DEFUN(FPTOOLS_CODE_BEFORE_DATA,
598 [AC_CACHE_CHECK([if code section appears before data], fptools_cv_code_bef_data,
600 int f() { return 1; }
602 int main() { return ((char*)&f > (char*)&i); }
605 fptools_cv_code_bef_data=yes, fptools_cv_code_bef_data=no,false)])
606 if test "$fptools_cv_code_bef_data" = yes; then
607 AC_DEFINE(CODE_BEFORE_DATA)
611 dnl *** Helper function **
613 AC_DEFUN(FPTOOLS_IN_SCOPE,AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no))
615 dnl *** What's the end-of-text-section marker called? ***
617 AC_DEFUN(FPTOOLS_END_TEXT_SECTION,
618 [AC_MSG_CHECKING([for end of text section marker])
620 for i in data_start _data_start etext _etext __etext; do
621 FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text)
622 if test "$fptools_end_of_text" = yes; then
623 AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, $i))
624 AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, $i))
629 if test "$not_done" = 1; then
630 FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text);
631 if test "$fptools_end_of_text" = yes; then
632 AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, etext))
633 AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, etext asm("etext")))
635 AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, dunno_what_it_is)
636 AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, dunno_what_it_is)
639 AC_MSG_RESULT([$]fptools_cv_end_of_text)
642 dnl *** What's the end-of-data-section marker called? ***
644 AC_DEFUN(FPTOOLS_END_DATA_SECTION,
645 [AC_MSG_CHECKING([for end of data section marker])
647 for i in end _end __end; do
648 FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data)
649 if test "$fptools_end_of_data" = yes; then
650 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, $i)])
651 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, $i)])
656 if test "$not_done" = 1; then
657 FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data);
658 if test "$fptools_end_of_data" = yes; then
659 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, end asm("end"))])
660 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, end)])
662 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, dunno_what_it_is)])
663 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, dunno_what_it_is)])
666 AC_MSG_RESULT([$]fptools_cv_end_of_data)
671 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
673 dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)
675 AC_DEFUN(FPTOOLS_TRY_LINK_NOWARN,
679 cat > conftest.$ac_ext <<EOF
680 dnl This sometimes fails to find confdefs.h, for some reason.
681 dnl [#]line __oline__ "[$]0"
682 [#]line __oline__ "configure"
683 #include "confdefs.h"
685 int t() { return 0; }
687 if AC_TRY_EVAL(ac_link); then
692 ifelse([$4], , , [else
702 dnl Loosely based on AC_CHECK_LIB in acgeneral.m4 in autoconf distribution
704 dnl FPTOOLS_CHECK_FLAG_NOWARN(NAME, FLAG, CODE, iftrue, iffalse)
706 AC_DEFUN(FPTOOLS_CHECK_FLAG_NOWARN,
707 [AC_MSG_CHECKING([for $1])
708 AC_CACHE_VAL(ac_cv_flag_$1,
709 [FPTOOLS_TRY_LINK_NOWARN("$2", [main() { $3; exit(0); } ],
710 eval "ac_cv_flag_$1=yes",
711 eval "ac_cv_flag_$1=no"
714 if eval "test \"`echo '$ac_cv_flag_'$1`\" = yes"; then
724 dnl FPTOOLS_CHECK_LIB_NOWARN(LIBRARY, FUNCTION)
726 AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN,
727 [FPTOOLS_CHECK_FLAG_NOWARN([function_$2],[],[extern char $2(); $2();],
729 ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
731 AC_DEFINE_UNQUOTED($ac_tr_lib)
733 [FPTOOLS_CHECK_FLAG_NOWARN([library_$1],[-l$1],[extern char $2(); $2();],
735 ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
737 AC_DEFINE_UNQUOTED($ac_tr_lib)
743 dnl check for prototypes
745 AC_DEFUN(AC_C_PROTOTYPES,
746 [AC_CACHE_CHECK([prototypes], ac_cv_prototypes,
755 ac_cv_prototypes=yes,
756 ac_cv_prototypes=no)])
757 if test "$ac_cv_prototypes" = yes; then
758 AC_DEFINE(HAVE_PROTOTYPES)
762 dnl ** Check which CATALOG file we have to use with DocBook SGML.
764 dnl FPTOOLS_DOCBOOK_CATALOG(VARIABLE, JADE, STYLESHEET, CATALOGS-TO-CHECK-FOR)
766 dnl If any of the catalogs given in CATALOGS-TO-CHECK-FOR works on this
767 dnl platform, let VARIABLE refer to this catalog; otherwise, VARIABLE
768 dnl is set to "no". JADE is the jade executable and STYLESHEET
769 dnl a DocBook style sheet.
771 AC_DEFUN(FPTOOLS_DOCBOOK_CATALOG,
772 [AC_CACHE_CHECK([for DocBook CATALOG], fptools_cv_sgml_catalog,
774 cat > conftest.sgml << EOF
775 <!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
779 <Author><OtherName>Test</OtherName></Author>
780 <Address>Test</Address>
781 <PubDate>Test</PubDate>
783 <Sect1><Title>Test</Title>
790 fptools_cv_sgml_catalog=no
791 for fptools_catalog in $4; do
792 ac_try="$2 -t rtf -d $3#print -c $fptools_catalog conftest.sgml"
793 if AC_TRY_EVAL(ac_try); then
794 fptools_cv_sgml_catalog=[$]fptools_catalog
800 if test $fptools_cv_sgml_catalog != "no"; then
801 $1=$fptools_cv_sgml_catalog
805 dnl ######################################################################
806 dnl FPTOOLS_SEARCH_LIBS(INCLUDES, FUNCTION, SEARCH-LIBS [, ACTION-IF-FOUND
807 dnl [, ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
808 dnl Search for a library defining FUNC, if it's not already available.
809 dnl This is almost the same as AC_SEARCH_LIBS, but the INCLUDES can be
811 dnl ######################################################################
813 AC_DEFUN(FPTOOLS_SEARCH_LIBS,
815 AC_CACHE_CHECK([for library containing $2], [ac_cv_search_$2],
816 [ac_func_search_save_LIBS="$LIBS"
818 AC_TRY_LINK([$1], [$2()], [ac_cv_search_$2="none required"])
819 test "$ac_cv_search_$2" = "no" && for i in $3; do
820 LIBS="-l$i $6 $ac_func_search_save_LIBS"
821 AC_TRY_LINK([$1], [$2()],
822 [ac_cv_search_$2="-l$i"
825 LIBS="$ac_func_search_save_LIBS"])
826 if test "$ac_cv_search_$2" != "no"; then
827 test "$ac_cv_search_$2" = "none required" || LIBS="$ac_cv_search_$2 $LIBS"
833 dnl ####################### -*- Mode: M4 -*- ###########################
834 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
836 dnl This file is free software; you can redistribute it and/or modify it
837 dnl under the terms of the GNU General Public License as published by
838 dnl the Free Software Foundation; either version 2 of the License, or
839 dnl (at your option) any later version.
841 dnl This file is distributed in the hope that it will be useful, but
842 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
843 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
844 dnl General Public License for more details.
846 dnl You should have received a copy of the GNU General Public License
847 dnl along with this file; if not, write to:
849 dnl Free Software Foundation, Inc.
852 dnl Boston, MA 02111-1307, USA.
853 dnl ####################################################################
856 dnl @synopsis FPTOOLS_CHECK_LIBM
858 dnl Search for math library (typically -lm).
860 dnl The variable LIBM (which is not an output variable by default) is
861 dnl set to a value which is suitable for use in a Makefile (for example,
862 dnl in make's LOADLIBES macro) provided you AC_SUBST it first.
864 dnl @version 0.01 $Id: aclocal.m4,v 1.66 2001/01/30 11:13:26 simonmar Exp $
865 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
867 # FPTOOLS_CHECK_LIBM - check for math library
868 AC_DEFUN(FPTOOLS_CHECK_LIBM,
869 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
872 *-*-beos* | *-*-cygwin*)
873 # These system don't have libm
876 AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
877 AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
880 AC_CHECK_LIB(m, main, LIBM="-lm")
885 dnl ######################################################################
886 dnl NOTE: Because of portability issues between different autoconf
887 dnl versions the AC_HELP_STRING macro has been removed from FPTOOLS_HAVE_OPENGL.
888 dnl Furthermore, caching has been completely rewritten.
889 dnl ######################################################################
891 dnl ########################### -*- Mode: M4 -*- #######################
892 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
894 dnl This file is free software; you can redistribute it and/or modify it
895 dnl under the terms of the GNU General Public License as published by
896 dnl the Free Software Foundation; either version 2 of the License, or
897 dnl (at your option) any later version.
899 dnl This file is distributed in the hope that it will be useful, but
900 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
901 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
902 dnl General Public License for more details.
904 dnl You should have received a copy of the GNU General Public License
905 dnl along with this file; if not, write to:
907 dnl Free Software Foundation, Inc.
910 dnl Boston, MA 02111-1307, USA.
911 dnl ####################################################################
913 dnl @synopsis FPTOOLS_HAVE_OPENGL
915 dnl Search for OpenGL. We search first for Mesa (a GPL'ed version of
916 dnl OpenGL) before a vendor's version of OpenGL, unless we were
917 dnl specifically asked not to with `--with-Mesa=no' or `--without-Mesa'.
919 dnl The four "standard" OpenGL libraries are searched for: "-lGL",
920 dnl "-lGLU", "-lGLX" (or "-lMesaGL", "-lMesaGLU" as the case may be) and
923 dnl All of the libraries that are found (since "-lglut" or "-lGLX" might
924 dnl be missing) are added to the shell output variable "GL_LIBS", along
925 dnl with any other libraries that are necessary to successfully link an
926 dnl OpenGL application (e.g. the X11 libraries). Care has been taken to
927 dnl make sure that all of the libraries in "GL_LIBS" are listed in the
930 dnl Additionally, the shell output variable "GL_CFLAGS" is set to any
931 dnl flags (e.g. "-I" flags) that are necessary to successfully compile
932 dnl an OpenGL application.
934 dnl The following shell variable (which are not output variables) are
935 dnl also set to either "yes" or "no" (depending on which libraries were
936 dnl found) to help you determine exactly what was found.
943 dnl A complete little toy "Automake `make distcheck'" package of how to
944 dnl use this macro is available at:
946 dnl ftp://ftp.slac.stanford.edu/users/langston/autoconf/ac_opengl-0.01.tar.gz
948 dnl Please note that as the ac_opengl macro and the toy example evolves,
949 dnl the version number increases, so you may have to adjust the above
952 dnl @version 0.01 $Id: aclocal.m4,v 1.66 2001/01/30 11:13:26 simonmar Exp $
953 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
955 AC_DEFUN(FPTOOLS_HAVE_OPENGL,
957 AC_REQUIRE([AC_PROG_CC])
958 AC_REQUIRE([AC_PATH_X])
959 AC_REQUIRE([AC_PATH_XTRA])
960 AC_REQUIRE([FPTOOLS_CHECK_LIBM])
962 dnl Check for Mesa first, unless we were asked not to.
963 dnl AC_HELP_STRING([--with-Mesa],
964 dnl [Prefer the Mesa library over a vendors native OpenGL library (default=yes)],
965 dnl with_Mesa_help_string)
966 dnl AC_ARG_ENABLE(Mesa, $with_Mesa_help_string, use_Mesa=$enableval, use_Mesa=yes)
967 AC_ARG_ENABLE(Mesa, [ --with-Mesa Prefer the Mesa library over a vendors native OpenGL library (default=yes)], use_Mesa=$enableval, use_Mesa=yes)
969 if test x"$use_Mesa" = xyes; then
970 GL_search_list="MesaGL GL opengl32"
971 GLU_search_list="MesaGLU GLU glu32"
972 GLX_search_list="MesaGLX GLX"
974 GL_search_list="GL opengl32 MesaGL"
975 GLU_search_list="GLU glu32 MesaGLU"
976 GLX_search_list="GLX MesaGLX"
982 dnl If we are running under X11 then add in the appropriate libraries.
983 if ! test x"$no_x" = xyes; then
984 dnl Add everything we need to compile and link X programs to GL_CFLAGS
986 GL_CFLAGS="$X_CFLAGS"
987 GL_X_LIBS="$X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS $LIBM"
989 GL_save_CPPFLAGS="$CPPFLAGS"
990 CPPFLAGS="$GL_CFLAGS"
995 FPTOOLS_SEARCH_LIBS([#include <GL/gl.h>], glEnd, $GL_search_list, have_GL=yes, have_GL=no)
996 FPTOOLS_SEARCH_LIBS([#include <GL/glu.h>], gluNewQuadric, $GLU_search_list, have_GLU=yes, have_GLU=no)
997 FPTOOLS_SEARCH_LIBS([#include <GL/glx.h>], glXChooseVisual, $GLX_search_list, have_GLX=yes, have_GLX=no)
998 FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glutMainLoop, glut glut32, have_glut=yes, have_glut=no)
1000 if test -n "$LIBS"; then
1007 AC_CACHE_CHECK([OpenGL flags], mdl_cv_gl_cflags, [mdl_cv_gl_cflags="$GL_CFLAGS"])
1008 GL_CFLAGS="$mdl_cv_gl_cflags"
1010 AC_CACHE_CHECK([OpenGL libs], mdl_cv_gl_libs, [mdl_cv_gl_libs="$GL_LIBS"])
1011 GL_LIBS="$mdl_cv_gl_libs"
1014 dnl Reset GL_X_LIBS regardless, since it was just a temporary variable
1015 dnl and we don't want to be global namespace polluters.
1018 LIBS="$GL_save_LIBS"
1019 CPPFLAGS="$GL_save_CPPFLAGS"