[project @ 2000-06-15 20:22:53 by panne]
[ghc-hetmet.git] / aclocal.m4
1 dnl $Id: aclocal.m4,v 1.50 2000/06/15 20:22:53 panne Exp $
2 dnl 
3 dnl Extra autoconf macros for the Glasgow fptools
4 dnl
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.
8
9 dnl
10 dnl Is timezone around? (in a header file)
11 dnl 
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>
16 # include <time.h>
17 #else
18 # if HAVE_SYS_TIME_H
19 #  include <sys/time.h>
20 # else
21 #  include <time.h>
22 # endif
23 #endif
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)
28 fi
29 ])
30
31 dnl
32 dnl Has timezone the type time_t or long (HP-UX 10.20 apparently
33 dnl has `long'..)
34 dnl 
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>
39 # include <time.h>
40 #else
41 # if HAVE_SYS_TIME_H
42 #  include <sys/time.h>
43 # else
44 #  include <time.h>
45 # endif
46 #endif
47
48 extern time_t timezone; 
49 ],
50 [int i;], fptools_cv_type_timezone=time_t, fptools_cv_type_timezone=long)])
51 AC_DEFINE_UNQUOTED(TYPE_TIMEZONE, $fptools_cv_type_timezone)
52 ])
53
54 dnl *** Is altzone available? ***
55 dnl 
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>
60 # include <time.h>
61 #else
62 # if HAVE_SYS_TIME_H
63 #  include <sys/time.h>
64 # else
65 #  include <time.h>
66 # endif
67 #endif
68 ], [return altzone;], 
69 fptools_cv_altzone=yes, fptools_cv_altzone=no)])
70 if test "$fptools_cv_altzone" = yes; then
71   AC_DEFINE(HAVE_ALTZONE)
72 fi
73 ])
74
75
76 dnl ** check for leading underscores in symbol names
77 dnl 
78 dnl Test for determining whether symbol names have a leading
79 dnl underscore.
80 dnl 
81 dnl We assume that they _haven't_ if anything goes wrong.
82 dnl
83 dnl Some nlist implementations seem to try to be compatible by ignoring
84 dnl a leading underscore sometimes (eg. FreeBSD).  We therefore have
85 dnl to work around this by checking for *no* leading underscore first.
86 dnl Sigh.  --SDM
87 dnl
88 AC_DEFUN(FPTOOLS_UNDERSCORE,
89 [AC_CHECK_LIB(elf, nlist, LIBS="-lelf $LIBS")dnl
90 AC_CACHE_CHECK([leading underscore in symbol names], fptools_cv_lead_uscore,
91
92 dnl
93 dnl Hack!: nlist() under Digital UNIX insist on there being an _,
94 dnl but symbol table listings shows none. What is going on here?!?
95 dnl
96 dnl Another hack: cygwin doesn't come with nlist.h , so we hardwire
97 dnl the underscoredness of that "platform"
98 changequote(<<, >>)dnl
99 <<
100 case $HostPlatform in
101 alpha-dec-osf*) fptools_cv_lead_uscore='no';;
102 *cygwin32) fptools_cv_lead_uscore='yes';;
103 *mingw32) fptools_cv_lead_uscore='yes';;
104 *) >>
105 changequote([, ])dnl
106 AC_TRY_RUN([#ifdef HAVE_NLIST_H
107 #include <nlist.h>
108 changequote(<<, >>)dnl
109 <<
110 struct nlist xYzzY1[] = {{"xYzzY1", 0},{0}};
111 struct nlist xYzzY2[] = {{"_xYzzY2", 0},{0}};
112 #endif
113
114 main(argc, argv)
115 int argc;
116 char **argv;
117 {
118 #ifdef HAVE_NLIST_H
119     if(nlist(argv[0], xYzzY1) == 0 && xYzzY1[0].n_value != 0)
120         exit(1);
121     if(nlist(argv[0], xYzzY2) == 0 && xYzzY2[0].n_value != 0)
122         exit(0);>>
123 changequote([, ])dnl
124 #endif
125     exit(1);
126 }], fptools_cv_lead_uscore=yes, fptools_cv_lead_uscore=no, fptools_cv_lead_uscore=NO)
127 ;;
128 esac);
129 LeadingUnderscore=`echo $fptools_cv_lead_uscore | sed 'y/yesno/YESNO/'`
130 AC_SUBST(LeadingUnderscore)
131 case $LeadingUnderscore in
132 YES) AC_DEFINE(LEADING_UNDERSCORE);;
133 esac
134 ])
135
136 dnl
137 dnl Check for Happy and version.  If we're building GHC, then we need
138 dnl at least Happy version 1.6.  If there's no installed Happy, we look
139 dnl for a happy source tree and point the build system at that instead.
140 dnl
141 dnl ToDo: when we reset HappyCmd to the source tree, autoconf doesn't
142 dnl seems to insert it in the cache file.  sigh.
143 dnl
144 AC_DEFUN(FPTOOLS_HAPPY,
145 [AC_PATH_PROG(HappyCmd,happy)
146 AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
147 [if test x"$HappyCmd" != x; then
148    fptools_cv_happy_version="`$HappyCmd -v |
149 changequote(, )dnl
150                           grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
151 elif test -d $srcdir/happy; then
152    HappyCmd=$hardtop/happy/src/happy-inplace;
153    fptools_cv_happy_version=`grep '^ProjectVersion[     ]*=' $srcdir/happy/mk/version.mk | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`;
154    echo -n "using happy from the source tree... ";
155 else
156    fptools_cv_happy_version="";
157 fi;
158 changequote([, ])dnl
159 if expr "$fptools_cv_happy_version" "<" 1.6 > /dev/null 2>&1; then
160    if test -d $srcdir/ghc; then
161      echo
162      echo "Happy version 1.6 or later is required to compile GHC."
163      exit 1;
164    fi
165 fi;
166 ])
167 HappyVersion=$fptools_cv_happy_version;
168 AC_SUBST(HappyVersion)
169 ])
170
171 dnl
172 dnl What's the best way of doing context diffs?
173 dnl
174 dnl (NB: NeXTStep thinks diff'ing a file against itself is "trouble")
175 dnl
176 AC_DEFUN(FPTOOLS_PROG_DIFF,
177 [AC_CACHE_CHECK([for ok way to do context diffs], fptools_cv_context_diffs,
178 [echo foo > conftest1
179 echo foo > conftest2
180 if diff -C 1 conftest1 conftest2 > /dev/null 2>&1 ; then
181     fptools_cv_context_diffs='diff -C 1'
182 else
183     if diff -c1 conftest1 conftest2 > /dev/null 2>&1 ; then
184         fptools_cv_context_diffs='diff -c1'
185     else
186         echo "Can't figure out how to do context diffs."
187         echo "Neither \`diff -C 1' nor \`diff -c1' works."
188         exit 1
189     fi
190 fi
191 rm -f conftest1 conftest2
192 ])
193 ContextDiffCmd=$fptools_cv_context_diffs
194 AC_SUBST(ContextDiffCmd)
195 ])
196
197 dnl
198 dnl Finding the Right Yacc
199 dnl
200 AC_DEFUN(FPTOOLS_PROG_YACCY,
201 [AC_PROG_YACC
202 if test "$YACC" = "yacc"; then
203    AC_CACHE_CHECK([if it is an OK yacc], ac_cv_prog_yacc,
204    [AC_CHECK_PROG(WhatCmd, what, what, :)
205     $WhatCmd $YACC > conftest.out
206     if egrep 'y1\.c 1\..*SMI' conftest.out >/dev/null 2>&1; then
207         echo "I don't trust your $YaccCmd; it looks like an old Sun yacc"
208         if test -f /usr/lang/yacc; then
209            echo "I'm going to use /usr/lang/yacc instead"
210            ac_cv_prog_yacc=/usr/lang/yacc
211         else
212            echo "I'm assuming the worst...no parser generator at all"
213            ac_cv_prog_yacc=:
214         fi
215     elif egrep 'y1\.c.*Revision: 4\.2\.6\.3.*DEC' conftest.out >/dev/null 2>&1; then
216         echo "I don't trust your $YaccCmd; it looks like a lame DEC yacc"
217         echo "I'm assuming the worst...no parser generator at all"
218         ac_cv_prog_yacc=:
219     else
220         ac_cv_prog_yacc=$YACC
221     fi
222     rm -fr conftest*
223 ])
224 else
225     ac_cv_prog_yacc=$YACC
226 fi
227 YaccCmd=$ac_cv_prog_yacc
228 AC_SUBST(YaccCmd)
229 ])
230
231 dnl *** Checking for ar and its arguments + whether we need ranlib.
232 dnl
233 dnl ArCmd and RANLIB are AC_SUBST'ed
234 dnl 
235 AC_DEFUN(FPTOOLS_PROG_AR_AND_RANLIB,
236 [AC_PATH_PROG(ArCmd,ar)
237 if test -z "$ArCmd"; then
238     echo "You don't seem to have ar in your PATH...I have no idea how to make a library"
239     exit 1;
240 fi
241 if $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then
242     ArCmd="$ArCmd clqs"
243     NeedRanLib=''
244 elif $ArCmd cqs conftest.a >/dev/null 2>/dev/null; then
245     ArCmd="$ArCmd cqs"
246     NeedRanLib=''
247 elif $ArCmd clq conftest.a >/dev/null 2>/dev/null; then
248     ArCmd="$ArCmd clq"
249     NeedRanLib='YES'
250 elif $ArCmd cq conftest.a >/dev/null 2>/dev/null; then
251     ArCmd="$ArCmd cq"
252     NeedRanLib='YES'
253 elif $ArCmd cq conftest.a 2>&1 | grep 'no archive members specified' >/dev/null 2>/dev/null; then
254     ArCmd="$ArCmd cq"
255     NeedRanLib='YES'
256 else
257     echo "I can't figure out how to use your $ArCmd"
258     exit 1
259 fi
260 rm -rf conftest*
261 test -n "$ArCmd" && test -n "$verbose" && echo "        setting ArCmd to $ArCmd"
262 AC_SUBST(ArCmd)
263 if test -z "$NeedRanLib"; then
264     RANLIB=':'
265     test -n "$verbose" && echo "        setting RANLIB to $RANLIB"
266     AC_SUBST(RANLIB)
267 else
268     AC_PROG_RANLIB
269 fi
270 ])
271
272 dnl
273 dnl AC_SHEBANG_PERL - can we she-bang perl?
274 dnl
275 AC_DEFUN(FPTOOLS_SHEBANG_PERL,
276 [AC_CACHE_CHECK([if your perl works in shell scripts], fptools_cv_shebang_perl,
277 [echo "#!$PerlCmd"'
278 exit $1;
279 ' > conftest
280 chmod u+x conftest
281 (SHELL=/bin/sh; export SHELL; ./conftest 69 > /dev/null)
282 if test $? -ne 69; then
283    fptools_cv_shebang_perl=yes
284 else
285    fptools_cv_shebang_perl=no
286 fi
287 rm -f conftest
288 ])])
289
290 dnl
291 dnl Extra testing of the result AC_PROG_CC, testing the gcc version no.
292 dnl *Must* be called after AC_PROG_CC
293 dnl
294 AC_DEFUN(FPTOOLS_HAVE_GCC,
295 [AC_CACHE_CHECK([whether you have an ok gcc], fptools_cv_have_gcc,
296 [if test -z "$GCC"; then
297     echo ''
298     echo "You would be better off with gcc"
299     echo "Perhaps it is already installed, but not in your PATH?"
300     fptools_cv_have_gcc='no'
301 else
302 changequote(, )dnl
303     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' `"
304 changequote([, ])dnl
305     if test `eval $cmd_string 2>/dev/null` != "1"; then
306         echo ''
307         echo "I'm not sure if your version of gcc will work,"
308         echo "but it's worth a shot, eh?"
309     fi
310     fptools_cv_have_gcc='yes'
311 fi
312 ])
313 HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
314 AC_SUBST(HaveGcc)
315 ])
316
317 dnl Small feature test for perl version. Assumes PerlCmd
318 dnl contains path to perl binary
319 dnl
320 AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION,
321 [$PerlCmd -v >conftest.out 2>&1
322 if grep "version 5" conftest.out >/dev/null 2>&1; then
323    :
324 else
325    if grep "version 6" conftest.out >/dev/null 2>&1; then
326       :
327    else
328      echo "Your version of perl probably won't work."
329    fi
330 fi
331 rm -fr conftest*
332 ])
333
334 dnl ** figure out the alignment restriction of a type
335 dnl    (required SIZEOF test but AC_CHECK_SIZEOF doesn't call PROVIDE
336 dnl     so we can't call REQUIRE)
337
338 dnl FPTOOLS_CHECK_ALIGNMENT(TYPE)
339 AC_DEFUN(FPTOOLS_CHECK_ALIGNMENT,
340 [changequote(<<, >>)dnl
341 dnl The name to #define.
342 define(<<AC_TYPE_NAME>>, translit(alignment_$1, [a-z *], [A-Z_P]))dnl
343 dnl The cache variable name.
344 define(<<AC_CV_NAME>>, translit(ac_cv_alignment_$1, [ *], [_p]))dnl
345 dnl The name of the corresponding size.
346 define(<<AC_CV_SIZEOF_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
347 changequote([, ])dnl
348 AC_MSG_CHECKING(alignment of $1)
349 AC_CACHE_VAL(AC_CV_NAME,
350 [AC_TRY_RUN([
351 #include <stdio.h>
352 #if HAVE_STDDEF_H
353 #include <stddef.h>
354 #endif
355 #ifndef offsetof
356 #define offsetof(ty,field) ((size_t)((char *)&((ty *)0)->field - (char *)(ty *)0))
357 #endif
358 int
359 main()
360 {
361   FILE *f=fopen("conftestval", "w");
362   if (!f) exit(1);
363   fprintf(f, "%d\n", offsetof(struct { char c; $1 ty;},ty));
364   exit(0);
365 }],
366 AC_CV_NAME=`cat conftestval`,
367 AC_CV_NAME=$AC_CV_SIZEOF_NAME,
368 AC_CV_NAME=$AC_CV_SIZEOF_NAME)])
369 AC_MSG_RESULT($AC_CV_NAME)
370 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
371 AC_PROVIDE($AC_TYPE_NAME)
372 undefine([AC_TYPE_NAME])dnl
373 undefine([AC_CV_NAME])dnl
374 undefine([AC_CV_SIZEOF_NAME])dnl
375 ])
376
377 dnl ** Map an arithmetic C type to a Haskell type.
378 dnl    Based on autconf's AC_CHECK_SIZEOF.
379
380 dnl FPTOOLS_CHECK_HTYPE(TYPE [, DEFAULT_VALUE, [, VALUE-FOR-CROSS-COMPILATION])
381 AC_DEFUN(FPTOOLS_CHECK_HTYPE,
382 [changequote(<<, >>)dnl
383 dnl The name to #define.
384 define(<<AC_TYPE_NAME>>, translit(htype_$1, [a-z *], [A-Z_P]))dnl
385 dnl The cache variable name.
386 define(<<AC_CV_NAME>>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl
387 changequote([, ])dnl
388 AC_MSG_CHECKING(Haskell type for $1)
389 AC_CACHE_VAL(AC_CV_NAME,
390 [AC_TRY_RUN([#include <stdio.h>
391 #include <stddef.h>
392 #ifdef HAVE_SIGNAL_H
393 #include <signal.h>
394 #endif
395 #ifdef HAVE_TIME_H
396 #include <time.h>
397 #endif
398
399 typedef $1 testing;
400
401 main() {
402   FILE *f=fopen("conftestval", "w");
403   if (!f) exit(1);
404   if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {
405     fprintf(f, "%s%d\n",
406            ((testing)(-1) < (testing)0) ? "Int" : "Word",
407            sizeof(testing)*8);
408   } else {
409     fprintf(f,"%s\n",
410            (sizeof(testing) >  sizeof(double)) ? "LDouble" :
411            (sizeof(testing) == sizeof(double)) ? "Double"  : "Float");
412   }
413   fclose(f);
414   exit(0);
415 }], AC_CV_NAME=`cat conftestval`,
416 ifelse([$2], , AC_CV_NAME=NotReallyAType,      AC_CV_NAME=$2),
417 ifelse([$3], , AC_CV_NAME=NotReallyATypeCross, AC_CV_NAME=$3))]) dnl
418 AC_MSG_RESULT($AC_CV_NAME)
419 AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
420 undefine([AC_TYPE_NAME])dnl
421 undefine([AC_CV_NAME])dnl
422 ])
423
424 dnl ** figure out whether C compiler supports 'long long's
425 dnl    (Closely based on Andreas Zeller's macro for testing
426 dnl     for this under C++)
427 dnl
428 dnl    If the C compiler supports `long long' types,
429 dnl    define `HAVE_LONG_LONG'.
430 dnl
431 AC_DEFUN(FPTOOLS_C_LONG_LONG,
432 [
433 AC_REQUIRE([AC_PROG_CC])
434 AC_MSG_CHECKING(whether ${CC} supports long long types)
435 AC_CACHE_VAL(fptools_cv_have_long_long,
436 [
437 AC_LANG_SAVE
438 AC_LANG_C
439 AC_TRY_COMPILE(,[long long a;],
440 fptools_cv_have_long_long=yes,
441 fptools_cv_have_long_long=no)
442 AC_LANG_RESTORE
443 ])
444 AC_MSG_RESULT($fptools_cv_have_long_long)
445 if test "$fptools_cv_have_long_long" = yes; then
446 AC_DEFINE(HAVE_LONG_LONG)
447 fi
448 ])
449
450 dnl *** Can we open files in binary mode? ***
451 dnl 
452 AC_DEFUN(FPTOOLS_O_BINARY,
453 [
454 AC_REQUIRE([AC_PROG_CC])
455 AC_MSG_CHECKING(whether we can open files in binary mode)
456 AC_CACHE_VAL(fptools_cv_have_o_binary,
457 [
458 AC_LANG_SAVE
459 AC_LANG_C
460 AC_TRY_COMPILE(,
461 [#ifdef HAVE_FCNTL_H
462 #include <fcntl.h>
463 #endif
464 int x = O_BINARY;],
465 fptools_cv_have_o_binary=yes,
466 fptools_cv_have_o_binary=no)
467 AC_LANG_RESTORE
468 ])
469 AC_MSG_RESULT($fptools_cv_have_o_binary)
470 if test "$fptools_cv_have_o_binary" = yes; then
471 AC_DEFINE(HAVE_O_BINARY)
472 fi
473 ])
474
475 dnl *** Which one comes first, .text or .data? ***
476 dnl 
477 AC_DEFUN(FPTOOLS_CODE_BEFORE_DATA,
478 [AC_CACHE_CHECK([if code section appears before data], fptools_cv_code_bef_data,
479 [AC_TRY_RUN([
480 int f() { return 1; }
481 int i;
482 int main() { return ((char*)&f > (char*)&i); }
483
484 ],
485 fptools_cv_code_bef_data=yes, fptools_cv_code_bef_data=no,false)])
486 if test "$fptools_cv_code_bef_data" = yes; then
487   AC_DEFINE(CODE_BEFORE_DATA)
488 fi
489 ])
490
491 dnl *** Helper function **
492 dnl 
493 AC_DEFUN(FPTOOLS_IN_SCOPE,AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no))
494
495 dnl *** What's the end-of-text-section marker called? ***
496 dnl
497 AC_DEFUN(FPTOOLS_END_TEXT_SECTION,
498 [AC_MSG_CHECKING([for end of text section marker])
499 not_done=1
500 for i in data_start _data_start etext _etext __etext; do
501   FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text)
502   if test "$fptools_end_of_text" = yes; then
503    AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, $i))
504    AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, $i))
505    not_done=0
506    break
507   fi
508 done
509 if test "$not_done" = 1; then
510 FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text);
511 if test "$fptools_end_of_text" = yes; then
512   AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, etext))
513   AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, etext asm("etext")))
514 else
515   AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, dunno_what_it_is)
516   AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, dunno_what_it_is)
517 fi
518 fi
519 AC_MSG_RESULT([$]fptools_cv_end_of_text)
520 ])
521
522 dnl *** What's the end-of-data-section marker called? ***
523 dnl
524 AC_DEFUN(FPTOOLS_END_DATA_SECTION,
525 [AC_MSG_CHECKING([for end of data section marker])
526 not_done=1
527 for i in end _end __end; do
528   FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data)
529   if test "$fptools_end_of_data" = yes; then
530    AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, $i)])
531    AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, $i)])
532    not_done=0
533    break
534   fi
535 done
536 if test "$not_done" = 1; then
537 FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data);
538 if test "$fptools_end_of_data" = yes; then
539   AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, end asm("end"))])
540   AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, end)])
541 else
542   AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, dunno_what_it_is)])
543   AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, dunno_what_it_is)])
544 fi
545 fi
546 AC_MSG_RESULT([$]fptools_cv_end_of_data)
547 ])
548
549
550
551 dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
552
553 dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)
554
555 AC_DEFUN(FPTOOLS_TRY_LINK_NOWARN,
556 [
557 ac_save_LIBS="$LIBS"
558 LIBS=[$1];
559 cat > conftest.$ac_ext <<EOF
560 dnl This sometimes fails to find confdefs.h, for some reason.
561 dnl [#]line __oline__ "[$]0"
562 [#]line __oline__ "configure"
563 #include "confdefs.h"
564 [$2]
565 int t() { return 0; }
566 EOF
567 if AC_TRY_EVAL(ac_link); then
568   ifelse([$3], , :, [
569     LIBS="$ac_save_LIBS"
570     rm -rf conftest*
571     $3])
572   ifelse([$4], , , [else
573     LIBS="$ac_save_LIBS"
574     rm -rf conftest*
575     $4
576 ])dnl
577 fi
578 rm -f conftest*
579 ]
580 )
581
582 dnl Loosely based on AC_CHECK_LIB in acgeneral.m4 in autoconf distribution
583
584 dnl FPTOOLS_CHECK_FLAG_NOWARN(NAME, FLAG, CODE, iftrue, iffalse)
585
586 AC_DEFUN(FPTOOLS_CHECK_FLAG_NOWARN,
587 [AC_MSG_CHECKING([for $1])
588  AC_CACHE_VAL(ac_cv_flag_$1,
589    [FPTOOLS_TRY_LINK_NOWARN("$2", [main() { $3; exit(0); } ],
590      eval "ac_cv_flag_$1=yes",
591      eval "ac_cv_flag_$1=no"
592    )]
593  )
594 if eval "test \"`echo '$ac_cv_flag_'$1`\" = yes"; then
595   AC_MSG_RESULT(yes)
596   LIBS="$2 $LIBS"
597   $4
598 else
599   AC_MSG_RESULT(no)
600   $5
601 fi
602 ])
603
604 dnl FPTOOLS_CHECK_LIB_NOWARN(LIBRARY, FUNCTION)
605
606 AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN,
607 [FPTOOLS_CHECK_FLAG_NOWARN([function_$2],[],[extern char $2(); $2();],
608 [changequote(, )dnl
609   ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
610  changequote([, ])dnl
611  AC_DEFINE_UNQUOTED($ac_tr_lib)
612 ],
613 [FPTOOLS_CHECK_FLAG_NOWARN([library_$1],[-l$1],[extern char $2(); $2();],
614 [changequote(, )dnl
615   ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
616  changequote([, ])dnl
617  AC_DEFINE_UNQUOTED($ac_tr_lib)
618 ],
619 []
620 )])]
621 )
622
623 dnl check for prototypes
624 dnl
625 AC_DEFUN(AC_C_PROTOTYPES,
626 [AC_CACHE_CHECK([prototypes], ac_cv_prototypes,
627 [AC_TRY_COMPILE([
628 void foo(int);
629 void foo(i)
630 int i; { 
631 return;
632 }
633 ],
634 [int i;], 
635 ac_cv_prototypes=yes,
636 ac_cv_prototypes=no)])
637 if test "$ac_cv_prototypes" = yes; then
638 AC_DEFINE(HAVE_PROTOTYPES)
639 fi
640 ])
641
642 dnl ** Check which CATALOG file we have to use with DocBook SGML.
643 dnl
644 dnl FPTOOLS_DOCBOOK_CATALOG(VARIABLE, JADE, STYLESHEET, CATALOGS-TO-CHECK-FOR)
645 dnl
646 dnl If any of the catalogs given in CATALOGS-TO-CHECK-FOR works on this
647 dnl platform, let VARIABLE refer to this catalog; otherwise, VARIABLE
648 dnl is set to "no".  JADE is the jade executable and STYLESHEET
649 dnl a DocBook style sheet.
650 dnl
651 AC_DEFUN(FPTOOLS_DOCBOOK_CATALOG,
652 [AC_CACHE_CHECK([for DocBook CATALOG], fptools_cv_sgml_catalog,
653 [
654 cat > conftest.sgml << EOF
655 <!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
656 <Article>
657 <ArtHeader>
658 <Title>Test</Title>
659 <Author><OtherName>Test</OtherName></Author>
660 <Address>Test</Address>
661 <PubDate>Test</PubDate>
662 </ArtHeader>
663 <Sect1><Title>Test</Title>
664 <Para>
665 Test.
666 </Para>
667 </Sect1>
668 </Article>
669 EOF
670 fptools_cv_sgml_catalog=no
671 for fptools_catalog in $4; do
672   ac_try="$2 -t rtf -d $3#print -c $fptools_catalog conftest.sgml"
673   if AC_TRY_EVAL(ac_try); then
674     fptools_cv_sgml_catalog=[$]fptools_catalog
675     break
676   fi
677 done
678 ])
679 rm -rf conftest*
680 if test $fptools_cv_sgml_catalog != "no"; then
681   $1=$fptools_cv_sgml_catalog
682 fi
683 ])
684
685
686 # LocalWords:  fi