1 dnl $Id: aclocal.m4,v 1.65 2001/01/18 12:27:42 sewardj 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 expr "$fptools_cv_happy_version" "<" 1.9 > /dev/null 2>&1; then
179 if test -d $srcdir/ghc; then
181 echo "Happy version 1.9 or later is required to compile GHC."
186 HappyVersion=$fptools_cv_happy_version;
187 AC_SUBST(HappyVersion)
191 dnl What's the best way of doing context diffs?
193 dnl (NB: NeXTStep thinks diff'ing a file against itself is "trouble")
195 AC_DEFUN(FPTOOLS_PROG_DIFF,
196 [AC_CACHE_CHECK([for ok way to do context diffs], fptools_cv_context_diffs,
197 [echo foo > conftest1
199 if diff -C 1 conftest1 conftest2 > /dev/null 2>&1 ; then
200 fptools_cv_context_diffs='diff -C 1'
202 if diff -c1 conftest1 conftest2 > /dev/null 2>&1 ; then
203 fptools_cv_context_diffs='diff -c1'
205 echo "Can't figure out how to do context diffs."
206 echo "Neither \`diff -C 1' nor \`diff -c1' works."
210 rm -f conftest1 conftest2
212 ContextDiffCmd=$fptools_cv_context_diffs
213 AC_SUBST(ContextDiffCmd)
217 dnl Finding the Right Yacc
219 AC_DEFUN(FPTOOLS_PROG_YACCY,
221 if test "$YACC" = "yacc"; then
222 AC_CACHE_CHECK([if it is an OK yacc], ac_cv_prog_yacc,
223 [AC_CHECK_PROG(WhatCmd, what, what, :)
224 $WhatCmd $YACC > conftest.out
225 if egrep 'y1\.c 1\..*SMI' conftest.out >/dev/null 2>&1; then
226 echo "I don't trust your $YaccCmd; it looks like an old Sun yacc"
227 if test -f /usr/lang/yacc; then
228 echo "I'm going to use /usr/lang/yacc instead"
229 ac_cv_prog_yacc=/usr/lang/yacc
231 echo "I'm assuming the worst...no parser generator at all"
234 elif egrep 'y1\.c.*Revision: 4\.2\.6\.3.*DEC' conftest.out >/dev/null 2>&1; then
235 echo "I don't trust your $YaccCmd; it looks like a lame DEC yacc"
236 echo "I'm assuming the worst...no parser generator at all"
239 ac_cv_prog_yacc=$YACC
244 ac_cv_prog_yacc=$YACC
246 YaccCmd=$ac_cv_prog_yacc
250 dnl *** Checking for ar and its arguments + whether we need ranlib.
252 dnl ArCmd and RANLIB are AC_SUBST'ed
254 AC_DEFUN(FPTOOLS_PROG_AR_AND_RANLIB,
255 [AC_PATH_PROG(ArCmd,ar)
256 if test -z "$ArCmd"; then
257 echo "You don't seem to have ar in your PATH...I have no idea how to make a library"
260 if $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then
263 elif $ArCmd cqs conftest.a >/dev/null 2>/dev/null; then
266 elif $ArCmd clq conftest.a >/dev/null 2>/dev/null; then
269 elif $ArCmd cq conftest.a >/dev/null 2>/dev/null; then
272 elif $ArCmd cq conftest.a 2>&1 | grep 'no archive members specified' >/dev/null 2>/dev/null; then
276 echo "I can't figure out how to use your $ArCmd"
280 test -n "$ArCmd" && test -n "$verbose" && echo " setting ArCmd to $ArCmd"
282 if test -z "$NeedRanLib"; then
284 test -n "$verbose" && echo " setting RANLIB to $RANLIB"
292 dnl AC_SHEBANG_PERL - can we she-bang perl?
294 AC_DEFUN(FPTOOLS_SHEBANG_PERL,
295 [AC_CACHE_CHECK([if your perl works in shell scripts], fptools_cv_shebang_perl,
300 (SHELL=/bin/sh; export SHELL; ./conftest 69 > /dev/null)
301 if test $? -ne 69; then
302 fptools_cv_shebang_perl=yes
304 fptools_cv_shebang_perl=no
310 dnl Extra testing of the result AC_PROG_CC, testing the gcc version no.
311 dnl *Must* be called after AC_PROG_CC
313 AC_DEFUN(FPTOOLS_HAVE_GCC,
314 [AC_CACHE_CHECK([whether you have an ok gcc], fptools_cv_have_gcc,
315 [if test -z "$GCC"; then
317 echo "You would be better off with gcc"
318 echo "Perhaps it is already installed, but not in your PATH?"
319 fptools_cv_have_gcc='no'
322 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' `"
324 if test `eval $cmd_string 2>/dev/null` != "1"; then
326 echo "I'm not sure if your version of gcc will work,"
327 echo "but it's worth a shot, eh?"
329 fptools_cv_have_gcc='yes'
332 HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
336 dnl Small feature test for perl version. Assumes PerlCmd
337 dnl contains path to perl binary
339 AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION,
340 [$PerlCmd -v >conftest.out 2>&1
341 if grep "version 5" conftest.out >/dev/null 2>&1; then
344 if grep "v5.6" conftest.out >/dev/null 2>&1; then
347 if grep "version 6" conftest.out >/dev/null 2>&1; then
350 echo "Your version of perl probably won't work."
358 dnl FPTOOLS_GHC_VERSION(version)
359 dnl FPTOOLS_GHC_VERSION(major, minor [, patchlevel])
360 dnl FPTOOLS_GHC_VERSION(version, major, minor, patchlevel)
362 dnl Test for version of installed ghc. Uses $GHC.
363 dnl [original version pinched from c2hs]
365 AC_DEFUN(FPTOOLS_GHC_VERSION,
366 [define([FPTOOLS_CV_GHC_VERSION], [fptools_cv_ghc_version])dnl
367 AC_CACHE_CHECK([version of ghc], FPTOOLS_CV_GHC_VERSION, [dnl
368 ${WithGhc-ghc} --version > conftestghc 2>&1
369 cat conftestghc >&AC_FD_CC
370 dnl `Useless Use Of cat' award...
371 changequote(<<, >>)dnl
372 FPTOOLS_CV_GHC_VERSION=`cat conftestghc | sed -n -e 's/, patchlevel *\([0-9]\)/.\1/;s/.* version \([0-9][0-9.]*\).*/\1/p'`
375 if test "[$]FPTOOLS_CV_GHC_VERSION" = ""
377 FPTOOLS_CV_GHC_VERSION='unknown'
379 changequote(<<, >>)dnl
380 FPTOOLS_CV_GHC_VERSION<<_major>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^\([0-9]\).*/\1/'`
381 FPTOOLS_CV_GHC_VERSION<<_minor>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -e 's/^[0-9]\.\([0-9]*\).*/\1/'`
382 FPTOOLS_CV_GHC_VERSION<<_pl>>=`echo <<$>>FPTOOLS_CV_GHC_VERSION | sed -n -e 's/^[0-9]\.[0-9]*\.\([0-9]*\)/\1/p'`
384 if test "[$]FPTOOLS_CV_GHC_VERSION[_pl]" = ""
386 FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor]"
387 FPTOOLS_CV_GHC_VERSION[_pl]="0"
389 FPTOOLS_CV_GHC_VERSION[_all]="[$]FPTOOLS_CV_GHC_VERSION[_major].[$]FPTOOLS_CV_GHC_VERSION[_minor].[$]FPTOOLS_CV_GHC_VERSION[_pl]"
392 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]"
394 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
395 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
397 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
398 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
399 [$3]="[$]FPTOOLS_CV_GHC_VERSION[_pl]"
401 [$1]="[$]FPTOOLS_CV_GHC_VERSION[_all]"
402 [$2]="[$]FPTOOLS_CV_GHC_VERSION[_major]"
403 [$3]="[$]FPTOOLS_CV_GHC_VERSION[_minor]"
404 [$4]="[$]FPTOOLS_CV_GHC_VERSION[_pl]"
405 ], [AC_MSG_ERROR([wrong number of arguments to [$0]])])dnl
406 undefine([FPTOOLS_CV_GHC_VERSION])dnl
410 dnl ** figure out the alignment restriction of a type
411 dnl (required SIZEOF test but AC_CHECK_SIZEOF doesn't call PROVIDE
412 dnl so we can't call REQUIRE)
414 dnl FPTOOLS_CHECK_ALIGNMENT(TYPE)
415 AC_DEFUN(FPTOOLS_CHECK_ALIGNMENT,
416 [changequote(<<, >>)dnl
417 dnl The name to #define.
418 define(<<AC_TYPE_NAME>>, translit(alignment_$1, [a-z *], [A-Z_P]))dnl
419 dnl The cache variable name.
420 define(<<AC_CV_NAME>>, translit(ac_cv_alignment_$1, [ *], [_p]))dnl
421 dnl The name of the corresponding size.
422 define(<<AC_CV_SIZEOF_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
424 AC_MSG_CHECKING(alignment of $1)
425 AC_CACHE_VAL(AC_CV_NAME,
432 #define offsetof(ty,field) ((size_t)((char *)&((ty *)0)->field - (char *)(ty *)0))
437 FILE *f=fopen("conftestval", "w");
439 fprintf(f, "%d", offsetof(struct { char c; $1 ty;},ty));
442 AC_CV_NAME=`cat conftestval`,
443 AC_CV_NAME=$AC_CV_SIZEOF_NAME,
444 AC_CV_NAME=$AC_CV_SIZEOF_NAME)])
445 AC_MSG_RESULT($AC_CV_NAME)
446 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
447 AC_PROVIDE($AC_TYPE_NAME)
448 undefine([AC_TYPE_NAME])dnl
449 undefine([AC_CV_NAME])dnl
450 undefine([AC_CV_SIZEOF_NAME])dnl
453 dnl ** Map an arithmetic C type to a Haskell type.
454 dnl Based on autconf's AC_CHECK_SIZEOF.
456 dnl FPTOOLS_CHECK_HTYPE(TYPE [, DEFAULT_VALUE, [, VALUE-FOR-CROSS-COMPILATION])
457 AC_DEFUN(FPTOOLS_CHECK_HTYPE,
458 [changequote(<<, >>)dnl
459 dnl The name to #define.
460 define(<<AC_TYPE_NAME>>, translit(htype_$1, [a-z *], [A-Z_P]))dnl
461 dnl The cache variable name.
462 define(<<AC_CV_NAME>>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl
464 AC_MSG_CHECKING(Haskell type for $1)
465 AC_CACHE_VAL(AC_CV_NAME,
466 [AC_TRY_RUN([#include <stdio.h>
481 FILE *f=fopen("conftestval", "w");
483 if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {
485 ((testing)(-1) < (testing)0) ? "Int" : "Word",
489 (sizeof(testing) > sizeof(double)) ? "LDouble" :
490 (sizeof(testing) == sizeof(double)) ? "Double" : "Float");
494 }], AC_CV_NAME=`cat conftestval`,
495 ifelse([$2], , AC_CV_NAME=NotReallyAType, AC_CV_NAME=$2),
496 ifelse([$3], , AC_CV_NAME=NotReallyATypeCross, AC_CV_NAME=$3))]) dnl
497 AC_MSG_RESULT($AC_CV_NAME)
498 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
499 undefine([AC_TYPE_NAME])dnl
500 undefine([AC_CV_NAME])dnl
503 dnl ** figure out whether C compiler supports 'long long's
504 dnl (Closely based on Andreas Zeller's macro for testing
505 dnl for this under C++)
507 dnl If the C compiler supports `long long' types,
508 dnl define `HAVE_LONG_LONG'.
510 AC_DEFUN(FPTOOLS_C_LONG_LONG,
512 AC_REQUIRE([AC_PROG_CC])
513 AC_MSG_CHECKING(whether ${CC} supports long long types)
514 AC_CACHE_VAL(fptools_cv_have_long_long,
518 AC_TRY_COMPILE(,[long long a;],
519 fptools_cv_have_long_long=yes,
520 fptools_cv_have_long_long=no)
523 AC_MSG_RESULT($fptools_cv_have_long_long)
524 if test "$fptools_cv_have_long_long" = yes; then
525 AC_DEFINE(HAVE_LONG_LONG)
529 dnl ** Obtain the value of a C constant.
530 dnl The value will be `(-1)' if the constant is undefined.
532 dnl This is set up so that the argument can be a shell variable.
534 AC_DEFUN(FPTOOLS_CHECK_CCONST,
536 eval "def_name=CCONST_$1"
537 eval "cv_name=ac_cv_cconst_$1"
538 AC_MSG_CHECKING(value of $1)
539 AC_CACHE_VAL($cv_name,
540 [AC_TRY_RUN([#include <stdio.h>
544 FILE *f=fopen("conftestval", "w");
546 fprintf(f, "%d\n", $1);
549 eval "$cv_name=`cat conftestval`",
551 ifelse([$2], , , eval "$cv_name=$2"))])dnl
552 eval "fptools_check_cconst_result=`echo '$'{$cv_name}`"
553 AC_MSG_RESULT($fptools_check_cconst_result)
554 AC_DEFINE_UNQUOTED($def_name, $fptools_check_cconst_result)
555 unset fptools_check_cconst_result
558 dnl ** Invoke AC_CHECK_CCONST on each argument (which have to separate with
561 AC_DEFUN(FPTOOLS_CHECK_CCONSTS,
562 [for ac_const_name in $1
564 FPTOOLS_CHECK_CCONST($ac_const_name)dnl
569 dnl *** Can we open files in binary mode? ***
571 AC_DEFUN(FPTOOLS_O_BINARY,
573 AC_REQUIRE([AC_PROG_CC])
574 AC_MSG_CHECKING(whether we can open files in binary mode)
575 AC_CACHE_VAL(fptools_cv_have_o_binary,
584 fptools_cv_have_o_binary=yes,
585 fptools_cv_have_o_binary=no)
588 AC_MSG_RESULT($fptools_cv_have_o_binary)
589 if test "$fptools_cv_have_o_binary" = yes; then
590 AC_DEFINE(HAVE_O_BINARY)
594 dnl *** Which one comes first, .text or .data? ***
596 AC_DEFUN(FPTOOLS_CODE_BEFORE_DATA,
597 [AC_CACHE_CHECK([if code section appears before data], fptools_cv_code_bef_data,
599 int f() { return 1; }
601 int main() { return ((char*)&f > (char*)&i); }
604 fptools_cv_code_bef_data=yes, fptools_cv_code_bef_data=no,false)])
605 if test "$fptools_cv_code_bef_data" = yes; then
606 AC_DEFINE(CODE_BEFORE_DATA)
610 dnl *** Helper function **
612 AC_DEFUN(FPTOOLS_IN_SCOPE,AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no))
614 dnl *** What's the end-of-text-section marker called? ***
616 AC_DEFUN(FPTOOLS_END_TEXT_SECTION,
617 [AC_MSG_CHECKING([for end of text section marker])
619 for i in data_start _data_start etext _etext __etext; do
620 FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text)
621 if test "$fptools_end_of_text" = yes; then
622 AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, $i))
623 AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, $i))
628 if test "$not_done" = 1; then
629 FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text);
630 if test "$fptools_end_of_text" = yes; then
631 AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, etext))
632 AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, etext asm("etext")))
634 AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, dunno_what_it_is)
635 AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, dunno_what_it_is)
638 AC_MSG_RESULT([$]fptools_cv_end_of_text)
641 dnl *** What's the end-of-data-section marker called? ***
643 AC_DEFUN(FPTOOLS_END_DATA_SECTION,
644 [AC_MSG_CHECKING([for end of data section marker])
646 for i in end _end __end; do
647 FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data)
648 if test "$fptools_end_of_data" = yes; then
649 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, $i)])
650 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, $i)])
655 if test "$not_done" = 1; then
656 FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data);
657 if test "$fptools_end_of_data" = yes; then
658 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, end asm("end"))])
659 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, end)])
661 AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, dunno_what_it_is)])
662 AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, dunno_what_it_is)])
665 AC_MSG_RESULT([$]fptools_cv_end_of_data)
670 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
672 dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)
674 AC_DEFUN(FPTOOLS_TRY_LINK_NOWARN,
678 cat > conftest.$ac_ext <<EOF
679 dnl This sometimes fails to find confdefs.h, for some reason.
680 dnl [#]line __oline__ "[$]0"
681 [#]line __oline__ "configure"
682 #include "confdefs.h"
684 int t() { return 0; }
686 if AC_TRY_EVAL(ac_link); then
691 ifelse([$4], , , [else
701 dnl Loosely based on AC_CHECK_LIB in acgeneral.m4 in autoconf distribution
703 dnl FPTOOLS_CHECK_FLAG_NOWARN(NAME, FLAG, CODE, iftrue, iffalse)
705 AC_DEFUN(FPTOOLS_CHECK_FLAG_NOWARN,
706 [AC_MSG_CHECKING([for $1])
707 AC_CACHE_VAL(ac_cv_flag_$1,
708 [FPTOOLS_TRY_LINK_NOWARN("$2", [main() { $3; exit(0); } ],
709 eval "ac_cv_flag_$1=yes",
710 eval "ac_cv_flag_$1=no"
713 if eval "test \"`echo '$ac_cv_flag_'$1`\" = yes"; then
723 dnl FPTOOLS_CHECK_LIB_NOWARN(LIBRARY, FUNCTION)
725 AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN,
726 [FPTOOLS_CHECK_FLAG_NOWARN([function_$2],[],[extern char $2(); $2();],
728 ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
730 AC_DEFINE_UNQUOTED($ac_tr_lib)
732 [FPTOOLS_CHECK_FLAG_NOWARN([library_$1],[-l$1],[extern char $2(); $2();],
734 ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
736 AC_DEFINE_UNQUOTED($ac_tr_lib)
742 dnl check for prototypes
744 AC_DEFUN(AC_C_PROTOTYPES,
745 [AC_CACHE_CHECK([prototypes], ac_cv_prototypes,
754 ac_cv_prototypes=yes,
755 ac_cv_prototypes=no)])
756 if test "$ac_cv_prototypes" = yes; then
757 AC_DEFINE(HAVE_PROTOTYPES)
761 dnl ** Check which CATALOG file we have to use with DocBook SGML.
763 dnl FPTOOLS_DOCBOOK_CATALOG(VARIABLE, JADE, STYLESHEET, CATALOGS-TO-CHECK-FOR)
765 dnl If any of the catalogs given in CATALOGS-TO-CHECK-FOR works on this
766 dnl platform, let VARIABLE refer to this catalog; otherwise, VARIABLE
767 dnl is set to "no". JADE is the jade executable and STYLESHEET
768 dnl a DocBook style sheet.
770 AC_DEFUN(FPTOOLS_DOCBOOK_CATALOG,
771 [AC_CACHE_CHECK([for DocBook CATALOG], fptools_cv_sgml_catalog,
773 cat > conftest.sgml << EOF
774 <!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
778 <Author><OtherName>Test</OtherName></Author>
779 <Address>Test</Address>
780 <PubDate>Test</PubDate>
782 <Sect1><Title>Test</Title>
789 fptools_cv_sgml_catalog=no
790 for fptools_catalog in $4; do
791 ac_try="$2 -t rtf -d $3#print -c $fptools_catalog conftest.sgml"
792 if AC_TRY_EVAL(ac_try); then
793 fptools_cv_sgml_catalog=[$]fptools_catalog
799 if test $fptools_cv_sgml_catalog != "no"; then
800 $1=$fptools_cv_sgml_catalog
804 dnl ######################################################################
805 dnl FPTOOLS_SEARCH_LIBS(INCLUDES, FUNCTION, SEARCH-LIBS [, ACTION-IF-FOUND
806 dnl [, ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
807 dnl Search for a library defining FUNC, if it's not already available.
808 dnl This is almost the same as AC_SEARCH_LIBS, but the INCLUDES can be
810 dnl ######################################################################
812 AC_DEFUN(FPTOOLS_SEARCH_LIBS,
814 AC_CACHE_CHECK([for library containing $2], [ac_cv_search_$2],
815 [ac_func_search_save_LIBS="$LIBS"
817 AC_TRY_LINK([$1], [$2()], [ac_cv_search_$2="none required"])
818 test "$ac_cv_search_$2" = "no" && for i in $3; do
819 LIBS="-l$i $6 $ac_func_search_save_LIBS"
820 AC_TRY_LINK([$1], [$2()],
821 [ac_cv_search_$2="-l$i"
824 LIBS="$ac_func_search_save_LIBS"])
825 if test "$ac_cv_search_$2" != "no"; then
826 test "$ac_cv_search_$2" = "none required" || LIBS="$ac_cv_search_$2 $LIBS"
832 dnl ####################### -*- Mode: M4 -*- ###########################
833 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
835 dnl This file is free software; you can redistribute it and/or modify it
836 dnl under the terms of the GNU General Public License as published by
837 dnl the Free Software Foundation; either version 2 of the License, or
838 dnl (at your option) any later version.
840 dnl This file is distributed in the hope that it will be useful, but
841 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
842 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
843 dnl General Public License for more details.
845 dnl You should have received a copy of the GNU General Public License
846 dnl along with this file; if not, write to:
848 dnl Free Software Foundation, Inc.
851 dnl Boston, MA 02111-1307, USA.
852 dnl ####################################################################
855 dnl @synopsis FPTOOLS_CHECK_LIBM
857 dnl Search for math library (typically -lm).
859 dnl The variable LIBM (which is not an output variable by default) is
860 dnl set to a value which is suitable for use in a Makefile (for example,
861 dnl in make's LOADLIBES macro) provided you AC_SUBST it first.
863 dnl @version 0.01 $Id: aclocal.m4,v 1.65 2001/01/18 12:27:42 sewardj Exp $
864 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
866 # FPTOOLS_CHECK_LIBM - check for math library
867 AC_DEFUN(FPTOOLS_CHECK_LIBM,
868 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
871 *-*-beos* | *-*-cygwin*)
872 # These system don't have libm
875 AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw")
876 AC_CHECK_LIB(m, main, LIBM="$LIBM -lm")
879 AC_CHECK_LIB(m, main, LIBM="-lm")
884 dnl ######################################################################
885 dnl NOTE: Because of portability issues between different autoconf
886 dnl versions the AC_HELP_STRING macro has been removed from FPTOOLS_HAVE_OPENGL.
887 dnl Furthermore, caching has been completely rewritten.
888 dnl ######################################################################
890 dnl ########################### -*- Mode: M4 -*- #######################
891 dnl Copyright (C) 98, 1999 Matthew D. Langston <langston@SLAC.Stanford.EDU>
893 dnl This file is free software; you can redistribute it and/or modify it
894 dnl under the terms of the GNU General Public License as published by
895 dnl the Free Software Foundation; either version 2 of the License, or
896 dnl (at your option) any later version.
898 dnl This file is distributed in the hope that it will be useful, but
899 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
900 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
901 dnl General Public License for more details.
903 dnl You should have received a copy of the GNU General Public License
904 dnl along with this file; if not, write to:
906 dnl Free Software Foundation, Inc.
909 dnl Boston, MA 02111-1307, USA.
910 dnl ####################################################################
912 dnl @synopsis FPTOOLS_HAVE_OPENGL
914 dnl Search for OpenGL. We search first for Mesa (a GPL'ed version of
915 dnl OpenGL) before a vendor's version of OpenGL, unless we were
916 dnl specifically asked not to with `--with-Mesa=no' or `--without-Mesa'.
918 dnl The four "standard" OpenGL libraries are searched for: "-lGL",
919 dnl "-lGLU", "-lGLX" (or "-lMesaGL", "-lMesaGLU" as the case may be) and
922 dnl All of the libraries that are found (since "-lglut" or "-lGLX" might
923 dnl be missing) are added to the shell output variable "GL_LIBS", along
924 dnl with any other libraries that are necessary to successfully link an
925 dnl OpenGL application (e.g. the X11 libraries). Care has been taken to
926 dnl make sure that all of the libraries in "GL_LIBS" are listed in the
929 dnl Additionally, the shell output variable "GL_CFLAGS" is set to any
930 dnl flags (e.g. "-I" flags) that are necessary to successfully compile
931 dnl an OpenGL application.
933 dnl The following shell variable (which are not output variables) are
934 dnl also set to either "yes" or "no" (depending on which libraries were
935 dnl found) to help you determine exactly what was found.
942 dnl A complete little toy "Automake `make distcheck'" package of how to
943 dnl use this macro is available at:
945 dnl ftp://ftp.slac.stanford.edu/users/langston/autoconf/ac_opengl-0.01.tar.gz
947 dnl Please note that as the ac_opengl macro and the toy example evolves,
948 dnl the version number increases, so you may have to adjust the above
951 dnl @version 0.01 $Id: aclocal.m4,v 1.65 2001/01/18 12:27:42 sewardj Exp $
952 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
954 AC_DEFUN(FPTOOLS_HAVE_OPENGL,
956 AC_REQUIRE([AC_PROG_CC])
957 AC_REQUIRE([AC_PATH_X])
958 AC_REQUIRE([AC_PATH_XTRA])
959 AC_REQUIRE([FPTOOLS_CHECK_LIBM])
961 dnl Check for Mesa first, unless we were asked not to.
962 dnl AC_HELP_STRING([--with-Mesa],
963 dnl [Prefer the Mesa library over a vendors native OpenGL library (default=yes)],
964 dnl with_Mesa_help_string)
965 dnl AC_ARG_ENABLE(Mesa, $with_Mesa_help_string, use_Mesa=$enableval, use_Mesa=yes)
966 AC_ARG_ENABLE(Mesa, [ --with-Mesa Prefer the Mesa library over a vendors native OpenGL library (default=yes)], use_Mesa=$enableval, use_Mesa=yes)
968 if test x"$use_Mesa" = xyes; then
969 GL_search_list="MesaGL GL opengl32"
970 GLU_search_list="MesaGLU GLU glu32"
971 GLX_search_list="MesaGLX GLX"
973 GL_search_list="GL opengl32 MesaGL"
974 GLU_search_list="GLU glu32 MesaGLU"
975 GLX_search_list="GLX MesaGLX"
981 dnl If we are running under X11 then add in the appropriate libraries.
982 if ! test x"$no_x" = xyes; then
983 dnl Add everything we need to compile and link X programs to GL_CFLAGS
985 GL_CFLAGS="$X_CFLAGS"
986 GL_X_LIBS="$X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS $LIBM"
988 GL_save_CPPFLAGS="$CPPFLAGS"
989 CPPFLAGS="$GL_CFLAGS"
994 FPTOOLS_SEARCH_LIBS([#include <GL/gl.h>], glEnd, $GL_search_list, have_GL=yes, have_GL=no)
995 FPTOOLS_SEARCH_LIBS([#include <GL/glu.h>], gluNewQuadric, $GLU_search_list, have_GLU=yes, have_GLU=no)
996 FPTOOLS_SEARCH_LIBS([#include <GL/glx.h>], glXChooseVisual, $GLX_search_list, have_GLX=yes, have_GLX=no)
997 FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glutMainLoop, glut glut32, have_glut=yes, have_glut=no)
999 if test -n "$LIBS"; then
1006 AC_CACHE_CHECK([OpenGL flags], mdl_cv_gl_cflags, [mdl_cv_gl_cflags="$GL_CFLAGS"])
1007 GL_CFLAGS="$mdl_cv_gl_cflags"
1009 AC_CACHE_CHECK([OpenGL libs], mdl_cv_gl_libs, [mdl_cv_gl_libs="$GL_LIBS"])
1010 GL_LIBS="$mdl_cv_gl_libs"
1013 dnl Reset GL_X_LIBS regardless, since it was just a temporary variable
1014 dnl and we don't want to be global namespace polluters.
1017 LIBS="$GL_save_LIBS"
1018 CPPFLAGS="$GL_save_CPPFLAGS"