aclocal.m4 17.2 KB
Newer Older
chak's avatar
chak committed
1
dnl $Id: aclocal.m4,v 1.48 2000/05/31 00:55:10 chak Exp $
sof's avatar
sof committed
2 3 4
dnl 
dnl Extra autoconf macros for the Glasgow fptools
dnl
sof's avatar
sof committed
5 6 7
dnl To be a good autoconf citizen, names of local macros have
dnl prefixed with FPTOOLS_ to ensure we don't clash
dnl with any pre-supplied autoconf ones.
sof's avatar
sof committed
8

sof's avatar
sof committed
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
dnl
dnl Is timezone around? (in a header file)
dnl 
AC_DEFUN(FPTOOLS_HAVE_TIMEZONE,
[AC_CACHE_CHECK([timezone], fptools_cv_have_timezone,
[AC_TRY_COMPILE([#if TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
#  include <sys/time.h>
# else
#  include <time.h>
# endif
#endif
], [return timezone;], 
fptools_cv_have_timezone=yes, fptools_cv_have_timezone=no)])
if test "$fptools_cv_have_timezone" = yes; then
  AC_DEFINE(HAVE_TIMEZONE)
fi
])

sof's avatar
sof committed
31 32 33 34
dnl
dnl Has timezone the type time_t or long (HP-UX 10.20 apparently
dnl has `long'..)
dnl 
sof's avatar
sof committed
35 36
AC_DEFUN(FPTOOLS_TYPE_TIMEZONE,
[AC_CACHE_CHECK([type of timezone], fptools_cv_type_timezone,
sof's avatar
sof committed
37 38 39 40 41 42 43 44 45 46 47
[AC_TRY_COMPILE([#if TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
#  include <sys/time.h>
# else
#  include <time.h>
# endif
#endif

sof's avatar
sof committed
48
extern time_t timezone;	
sof's avatar
sof committed
49
],
sof's avatar
sof committed
50 51
[int i;], fptools_cv_type_timezone=time_t, fptools_cv_type_timezone=long)])
AC_DEFINE_UNQUOTED(TYPE_TIMEZONE, $fptools_cv_type_timezone)
sof's avatar
sof committed
52 53
])

sof's avatar
sof committed
54 55
dnl *** Is altzone available? ***
dnl 
sof's avatar
sof committed
56 57
AC_DEFUN(FPTOOLS_ALTZONE,
[AC_CACHE_CHECK([altzone], fptools_cv_altzone,
sof's avatar
sof committed
58 59 60 61 62 63 64 65 66 67 68
[AC_TRY_LINK([#if TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
#else
# if HAVE_SYS_TIME_H
#  include <sys/time.h>
# else
#  include <time.h>
# endif
#endif
], [return altzone;], 
sof's avatar
sof committed
69 70
fptools_cv_altzone=yes, fptools_cv_altzone=no)])
if test "$fptools_cv_altzone" = yes; then
sof's avatar
sof committed
71 72 73 74
  AC_DEFINE(HAVE_ALTZONE)
fi
])

sof's avatar
sof committed
75

sof's avatar
sof committed
76
dnl ** check for leading underscores in symbol names
sof's avatar
sof committed
77 78 79 80 81 82
dnl 
dnl Test for determining whether symbol names have a leading
dnl underscore.
dnl 
dnl We assume that they _haven't_ if anything goes wrong.
dnl
83 84 85 86 87
dnl Some nlist implementations seem to try to be compatible by ignoring
dnl a leading underscore sometimes (eg. FreeBSD).  We therefore have
dnl to work around this by checking for *no* leading underscore first.
dnl Sigh.  --SDM
dnl
sof's avatar
sof committed
88
AC_DEFUN(FPTOOLS_UNDERSCORE,
sof's avatar
sof committed
89
[AC_CHECK_LIB(elf, nlist, LIBS="-lelf $LIBS")dnl
sof's avatar
sof committed
90
AC_CACHE_CHECK([leading underscore in symbol names], fptools_cv_lead_uscore,
sof's avatar
sof committed
91 92 93

dnl
dnl Hack!: nlist() under Digital UNIX insist on there being an _,
sof's avatar
sof committed
94
dnl but symbol table listings shows none. What is going on here?!?
sof's avatar
sof committed
95
dnl
sof's avatar
sof committed
96 97
dnl Another hack: cygwin doesn't come with nlist.h , so we hardwire
dnl the underscoredness of that "platform"
98 99 100
changequote(<<, >>)dnl
<<
case $HostPlatform in
sof's avatar
sof committed
101
alpha-dec-osf*) fptools_cv_lead_uscore='no';;
sof's avatar
sof committed
102 103
*cygwin32) fptools_cv_lead_uscore='yes';;
*mingw32) fptools_cv_lead_uscore='yes';;
104 105
*) >>
changequote([, ])dnl
sof's avatar
sof committed
106 107 108 109
AC_TRY_RUN([#ifdef HAVE_NLIST_H
#include <nlist.h>
changequote(<<, >>)dnl
<<
110 111
struct nlist xYzzY1[] = {{"xYzzY1", 0},{0}};
struct nlist xYzzY2[] = {{"_xYzzY2", 0},{0}};
sof's avatar
sof committed
112 113 114 115 116 117 118
#endif

main(argc, argv)
int argc;
char **argv;
{
#ifdef HAVE_NLIST_H
119 120 121
    if(nlist(argv[0], xYzzY1) == 0 && xYzzY1[0].n_value != 0)
        exit(1);
    if(nlist(argv[0], xYzzY2) == 0 && xYzzY2[0].n_value != 0)
sof's avatar
sof committed
122 123 124 125
        exit(0);>>
changequote([, ])dnl
#endif
    exit(1);
126
}], fptools_cv_lead_uscore=yes, fptools_cv_lead_uscore=no, fptools_cv_lead_uscore=NO)
127 128
;;
esac);
sof's avatar
sof committed
129
LeadingUnderscore=`echo $fptools_cv_lead_uscore | sed 'y/yesno/YESNO/'`
sof's avatar
sof committed
130
AC_SUBST(LeadingUnderscore)
131 132 133
case $LeadingUnderscore in
YES) AC_DEFINE(LEADING_UNDERSCORE);;
esac
sof's avatar
sof committed
134 135
])

sof's avatar
sof committed
136
dnl
137 138 139 140 141 142
dnl Check for Happy and version.  If we're building GHC, then we need
dnl at least Happy version 1.6.  If there's no installed Happy, we look
dnl for a happy source tree and point the build system at that instead.
dnl
dnl ToDo: when we reset HappyCmd to the source tree, autoconf doesn't
dnl seems to insert it in the cache file.  sigh.
sof's avatar
sof committed
143
dnl
sof's avatar
sof committed
144
AC_DEFUN(FPTOOLS_HAPPY,
145
[AC_PATH_PROG(HappyCmd,happy)
sof's avatar
sof committed
146
AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
sof's avatar
sof committed
147
[if test x"$HappyCmd" != x; then
sof's avatar
sof committed
148
   fptools_cv_happy_version="`$HappyCmd -v |
sof's avatar
sof committed
149 150
changequote(, )dnl
			  grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
151 152 153 154
elif test -d $srcdir/happy; then
   HappyCmd=$hardtop/happy/src/happy-inplace;
   fptools_cv_happy_version=`grep '^ProjectVersion[ 	]*=' $srcdir/happy/mk/version.mk | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`;
   echo -n "using happy from the source tree... ";
sof's avatar
sof committed
155
else
sof's avatar
sof committed
156
   fptools_cv_happy_version="";
sof's avatar
sof committed
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 162 163 164
     echo
     echo "Happy version 1.6 or later is required to compile GHC."
     exit 1;
   fi
165
fi;
sof's avatar
sof committed
166
])
167
HappyVersion=$fptools_cv_happy_version;
sof's avatar
sof committed
168 169 170
AC_SUBST(HappyVersion)
])

sof's avatar
sof committed
171 172 173 174 175
dnl
dnl What's the best way of doing context diffs?
dnl
dnl (NB: NeXTStep thinks diff'ing a file against itself is "trouble")
dnl
sof's avatar
sof committed
176 177
AC_DEFUN(FPTOOLS_PROG_DIFF,
[AC_CACHE_CHECK([for ok way to do context diffs], fptools_cv_context_diffs,
sof's avatar
sof committed
178 179 180
[echo foo > conftest1
echo foo > conftest2
if diff -C 1 conftest1 conftest2 > /dev/null 2>&1 ; then
sof's avatar
sof committed
181
    fptools_cv_context_diffs='diff -C 1'
sof's avatar
sof committed
182 183
else
    if diff -c1 conftest1 conftest2 > /dev/null 2>&1 ; then
sof's avatar
sof committed
184
        fptools_cv_context_diffs='diff -c1'
sof's avatar
sof committed
185 186 187 188 189 190 191
    else
        echo "Can't figure out how to do context diffs."
        echo "Neither \`diff -C 1' nor \`diff -c1' works."
        exit 1
    fi
fi
rm -f conftest1 conftest2
192
])
sof's avatar
sof committed
193
ContextDiffCmd=$fptools_cv_context_diffs
sof's avatar
sof committed
194
AC_SUBST(ContextDiffCmd)
sof's avatar
sof committed
195 196
])

sof's avatar
sof committed
197 198 199
dnl
dnl Finding the Right Yacc
dnl
sof's avatar
sof committed
200
AC_DEFUN(FPTOOLS_PROG_YACCY,
sof's avatar
sof committed
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229
[AC_PROG_YACC
if test "$YACC" = "yacc"; then
   AC_CACHE_CHECK([if it is an OK yacc], ac_cv_prog_yacc,
   [AC_CHECK_PROG(WhatCmd, what, what, :)
    $WhatCmd $YACC > conftest.out
    if egrep 'y1\.c 1\..*SMI' conftest.out >/dev/null 2>&1; then
        echo "I don't trust your $YaccCmd; it looks like an old Sun yacc"
        if test -f /usr/lang/yacc; then
           echo "I'm going to use /usr/lang/yacc instead"
           ac_cv_prog_yacc=/usr/lang/yacc
        else
           echo "I'm assuming the worst...no parser generator at all"
           ac_cv_prog_yacc=:
        fi
    elif egrep 'y1\.c.*Revision: 4\.2\.6\.3.*DEC' conftest.out >/dev/null 2>&1; then
        echo "I don't trust your $YaccCmd; it looks like a lame DEC yacc"
        echo "I'm assuming the worst...no parser generator at all"
        ac_cv_prog_yacc=:
    else
	ac_cv_prog_yacc=$YACC
    fi
    rm -fr conftest*
])
else
    ac_cv_prog_yacc=$YACC
fi
YaccCmd=$ac_cv_prog_yacc
AC_SUBST(YaccCmd)
])
sof's avatar
sof committed
230

sof's avatar
sof committed
231 232 233 234
dnl *** Checking for ar and its arguments + whether we need ranlib.
dnl
dnl ArCmd and RANLIB are AC_SUBST'ed
dnl 
sof's avatar
sof committed
235
AC_DEFUN(FPTOOLS_PROG_AR_AND_RANLIB,
sof's avatar
sof committed
236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271
[AC_PATH_PROG(ArCmd,ar)
if test -z "$ArCmd"; then
    echo "You don't seem to have ar in your PATH...I have no idea how to make a library"
    exit 1;
fi
if $ArCmd clqs conftest.a >/dev/null 2>/dev/null; then
    ArCmd="$ArCmd clqs"
    NeedRanLib=''
elif $ArCmd cqs conftest.a >/dev/null 2>/dev/null; then
    ArCmd="$ArCmd cqs"
    NeedRanLib=''
elif $ArCmd clq conftest.a >/dev/null 2>/dev/null; then
    ArCmd="$ArCmd clq"
    NeedRanLib='YES'
elif $ArCmd cq conftest.a >/dev/null 2>/dev/null; then
    ArCmd="$ArCmd cq"
    NeedRanLib='YES'
elif $ArCmd cq conftest.a 2>&1 | grep 'no archive members specified' >/dev/null 2>/dev/null; then
    ArCmd="$ArCmd cq"
    NeedRanLib='YES'
else
    echo "I can't figure out how to use your $ArCmd"
    exit 1
fi
rm -rf conftest*
test -n "$ArCmd" && test -n "$verbose" && echo "        setting ArCmd to $ArCmd"
AC_SUBST(ArCmd)
if test -z "$NeedRanLib"; then
    RANLIB=':'
    test -n "$verbose" && echo "        setting RANLIB to $RANLIB"
    AC_SUBST(RANLIB)
else
    AC_PROG_RANLIB
fi
])

sof's avatar
sof committed
272
dnl
sof's avatar
sof committed
273
dnl AC_SHEBANG_PERL - can we she-bang perl?
sof's avatar
sof committed
274
dnl
sof's avatar
sof committed
275 276
AC_DEFUN(FPTOOLS_SHEBANG_PERL,
[AC_CACHE_CHECK([if your perl works in shell scripts], fptools_cv_shebang_perl,
sof's avatar
sof committed
277 278 279 280 281 282
[echo "#!$PerlCmd"'
exit $1;
' > conftest
chmod u+x conftest
(SHELL=/bin/sh; export SHELL; ./conftest 69 > /dev/null)
if test $? -ne 69; then
sof's avatar
sof committed
283
   fptools_cv_shebang_perl=yes
sof's avatar
sof committed
284
else
sof's avatar
sof committed
285
   fptools_cv_shebang_perl=no
sof's avatar
sof committed
286 287 288 289
fi
rm -f conftest
])])

sof's avatar
sof committed
290 291 292 293
dnl
dnl Extra testing of the result AC_PROG_CC, testing the gcc version no.
dnl *Must* be called after AC_PROG_CC
dnl
sof's avatar
sof committed
294 295
AC_DEFUN(FPTOOLS_HAVE_GCC,
[AC_CACHE_CHECK([whether you have an ok gcc], fptools_cv_have_gcc,
sof's avatar
sof committed
296 297 298 299
[if test -z "$GCC"; then
    echo ''
    echo "You would be better off with gcc"
    echo "Perhaps it is already installed, but not in your PATH?"
sof's avatar
sof committed
300
    fptools_cv_have_gcc='no'
sof's avatar
sof committed
301 302
else
changequote(, )dnl
sof's avatar
sof committed
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' `"
sof's avatar
sof committed
304 305 306 307 308 309
changequote([, ])dnl
    if test `eval $cmd_string 2>/dev/null` != "1"; then
	echo ''
        echo "I'm not sure if your version of gcc will work,"
        echo "but it's worth a shot, eh?"
    fi
sof's avatar
sof committed
310
    fptools_cv_have_gcc='yes'
sof's avatar
sof committed
311 312
fi
])
sof's avatar
sof committed
313
HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
sof's avatar
sof committed
314 315 316
AC_SUBST(HaveGcc)
])

sof's avatar
sof committed
317 318 319
dnl Small feature test for perl version. Assumes PerlCmd
dnl contains path to perl binary
dnl
sof's avatar
sof committed
320
AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION,
sof's avatar
sof committed
321
[$PerlCmd -v >conftest.out 2>&1
rrt's avatar
rrt committed
322 323
if grep "version 5" conftest.out >/dev/null 2>&1; then
   :
sof's avatar
sof committed
324
else
rrt's avatar
rrt committed
325
   if grep "version 6" conftest.out >/dev/null 2>&1; then
sof's avatar
sof committed
326 327
      :
   else
rrt's avatar
rrt committed
328
     echo "Your version of perl probably won't work."
sof's avatar
sof committed
329 330 331 332
   fi
fi
rm -fr conftest*
])
reid's avatar
reid committed
333

sof's avatar
sof committed
334
dnl ** figure out the alignment restriction of a type
reid's avatar
reid committed
335 336 337
dnl    (required SIZEOF test but AC_CHECK_SIZEOF doesn't call PROVIDE
dnl     so we can't call REQUIRE)

sof's avatar
sof committed
338 339
dnl FPTOOLS_CHECK_ALIGNMENT(TYPE)
AC_DEFUN(FPTOOLS_CHECK_ALIGNMENT,
reid's avatar
reid committed
340 341 342 343 344 345 346 347 348 349 350
[changequote(<<, >>)dnl
dnl The name to #define.
define(<<AC_TYPE_NAME>>, translit(alignment_$1, [a-z *], [A-Z_P]))dnl
dnl The cache variable name.
define(<<AC_CV_NAME>>, translit(ac_cv_alignment_$1, [ *], [_p]))dnl
dnl The name of the corresponding size.
define(<<AC_CV_SIZEOF_NAME>>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl
changequote([, ])dnl
AC_MSG_CHECKING(alignment of $1)
AC_CACHE_VAL(AC_CV_NAME,
[AC_TRY_RUN([
sof's avatar
sof committed
351 352 353 354 355 356 357 358
#include <stdio.h>
#if HAVE_STDDEF_H
#include <stddef.h>
#endif
#ifndef offsetof
#define offsetof(ty,field) ((size_t)((char *)&((ty *)0)->field - (char *)(ty *)0))
#endif
int
reid's avatar
reid committed
359 360
main()
{
sof's avatar
sof committed
361 362 363 364 365 366
  FILE *f=fopen("conftestval", "w");
  if (!f) exit(1);
  fprintf(f, "%d\n", offsetof(struct { char c; $1 ty;},ty));
  exit(0);
}],
AC_CV_NAME=`cat conftestval`,
reid's avatar
reid committed
367 368 369 370 371 372 373 374 375 376
AC_CV_NAME=$AC_CV_SIZEOF_NAME,
AC_CV_NAME=$AC_CV_SIZEOF_NAME)])
AC_MSG_RESULT($AC_CV_NAME)
AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME)
AC_PROVIDE($AC_TYPE_NAME)
undefine([AC_TYPE_NAME])dnl
undefine([AC_CV_NAME])dnl
undefine([AC_CV_SIZEOF_NAME])dnl
])

sof's avatar
sof committed
377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401
dnl ** figure out whether C compiler supports 'long long's
dnl    (Closely based on Andreas Zeller's macro for testing
dnl     for this under C++)
dnl
dnl    If the C compiler supports `long long' types,
dnl    define `HAVE_LONG_LONG'.
dnl
AC_DEFUN(FPTOOLS_C_LONG_LONG,
[
AC_REQUIRE([AC_PROG_CC])
AC_MSG_CHECKING(whether ${CC} supports long long types)
AC_CACHE_VAL(fptools_cv_have_long_long,
[
AC_LANG_SAVE
AC_LANG_C
AC_TRY_COMPILE(,[long long a;],
fptools_cv_have_long_long=yes,
fptools_cv_have_long_long=no)
AC_LANG_RESTORE
])
AC_MSG_RESULT($fptools_cv_have_long_long)
if test "$fptools_cv_have_long_long" = yes; then
AC_DEFINE(HAVE_LONG_LONG)
fi
])
sof's avatar
sof committed
402 403 404 405 406 407 408 409 410 411 412

dnl *** Can we open files in binary mode? ***
dnl 
AC_DEFUN(FPTOOLS_O_BINARY,
[
AC_REQUIRE([AC_PROG_CC])
AC_MSG_CHECKING(whether we can open files in binary mode)
AC_CACHE_VAL(fptools_cv_have_o_binary,
[
AC_LANG_SAVE
AC_LANG_C
sof's avatar
sof committed
413 414 415 416 417
AC_TRY_COMPILE(,
[#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
int x = O_BINARY;],
sof's avatar
sof committed
418 419 420 421 422 423 424 425 426
fptools_cv_have_o_binary=yes,
fptools_cv_have_o_binary=no)
AC_LANG_RESTORE
])
AC_MSG_RESULT($fptools_cv_have_o_binary)
if test "$fptools_cv_have_o_binary" = yes; then
AC_DEFINE(HAVE_O_BINARY)
fi
])
sof's avatar
sof committed
427

sof's avatar
sof committed
428 429 430 431 432 433 434 435 436 437
dnl *** Which one comes first, .text or .data? ***
dnl 
AC_DEFUN(FPTOOLS_CODE_BEFORE_DATA,
[AC_CACHE_CHECK([if code section appears before data], fptools_cv_code_bef_data,
[AC_TRY_RUN([
int f() { return 1; }
int i;
int main() { return ((char*)&f > (char*)&i); }

],
sof's avatar
sof committed
438
fptools_cv_code_bef_data=yes, fptools_cv_code_bef_data=no,false)])
sof's avatar
sof committed
439 440 441 442 443 444 445 446 447 448 449 450
if test "$fptools_cv_code_bef_data" = yes; then
  AC_DEFINE(CODE_BEFORE_DATA)
fi
])

dnl *** Helper function **
dnl 
AC_DEFUN(FPTOOLS_IN_SCOPE,AC_TRY_LINK([extern char* $1;],[return (int)&$2], $3=yes, $3=no))

dnl *** What's the end-of-text-section marker called? ***
dnl
AC_DEFUN(FPTOOLS_END_TEXT_SECTION,
sof's avatar
sof committed
451
[AC_MSG_CHECKING([for end of text section marker])
sof's avatar
sof committed
452
not_done=1
453
for i in data_start _data_start etext _etext __etext; do
sof's avatar
sof committed
454 455 456 457
  FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_text)
  if test "$fptools_end_of_text" = yes; then
   AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, $i))
   AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, $i))
sof's avatar
sof committed
458 459 460 461
   not_done=0
   break
  fi
done
462
if test "$not_done" = 1; then
sof's avatar
sof committed
463 464 465 466
FPTOOLS_IN_SCOPE(etext asm("etext"),etext,fptools_end_of_text);
if test "$fptools_end_of_text" = yes; then
  AC_CACHE_VAL([fptools_cv_end_of_text], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, etext))
  AC_CACHE_VAL([fptools_cv_end_of_text_decl], AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, etext asm("etext")))
sof's avatar
sof committed
467
else
sof's avatar
sof committed
468 469
  AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER_DECL, dunno_what_it_is)
  AC_DEFINE_UNQUOTED(TEXT_SECTION_END_MARKER, dunno_what_it_is)
sof's avatar
sof committed
470 471
fi
fi
sof's avatar
sof committed
472 473
AC_MSG_RESULT([$]fptools_cv_end_of_text)
])
sof's avatar
sof committed
474 475 476 477

dnl *** What's the end-of-data-section marker called? ***
dnl
AC_DEFUN(FPTOOLS_END_DATA_SECTION,
sof's avatar
sof committed
478
[AC_MSG_CHECKING([for end of data section marker])
sof's avatar
sof committed
479 480
not_done=1
for i in end _end __end; do
sof's avatar
sof committed
481 482 483 484
  FPTOOLS_IN_SCOPE($i,$i,fptools_end_of_data)
  if test "$fptools_end_of_data" = yes; then
   AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, $i)])
   AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, $i)])
sof's avatar
sof committed
485 486 487 488
   not_done=0
   break
  fi
done
489
if test "$not_done" = 1; then
sof's avatar
sof committed
490 491 492 493
FPTOOLS_IN_SCOPE(end asm("end"),end,fptools_end_of_data);
if test "$fptools_end_of_data" = yes; then
  AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, end asm("end"))])
  AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, end)])
sof's avatar
sof committed
494
else
sof's avatar
sof committed
495 496
  AC_CACHE_VAL([fptools_cv_end_of_data_decl], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER_DECL, dunno_what_it_is)])
  AC_CACHE_VAL([fptools_cv_end_of_data], [AC_DEFINE_UNQUOTED(DATA_SECTION_END_MARKER, dunno_what_it_is)])
sof's avatar
sof committed
497 498
fi
fi
sof's avatar
sof committed
499 500
AC_MSG_RESULT([$]fptools_cv_end_of_data)
])
reid's avatar
reid committed
501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594



dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning

dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)

AC_DEFUN(FPTOOLS_TRY_LINK_NOWARN,
[
ac_save_LIBS="$LIBS"
LIBS=[$1];
cat > conftest.$ac_ext <<EOF
dnl This sometimes fails to find confdefs.h, for some reason.
dnl [#]line __oline__ "[$]0"
[#]line __oline__ "configure"
#include "confdefs.h"
[$2]
int t() { return 0; }
EOF
if AC_TRY_EVAL(ac_link); then
  ifelse([$3], , :, [
    LIBS="$ac_save_LIBS"
    rm -rf conftest*
    $3])
  ifelse([$4], , , [else
    LIBS="$ac_save_LIBS"
    rm -rf conftest*
    $4
])dnl
fi
rm -f conftest*
]
)

dnl Loosely based on AC_CHECK_LIB in acgeneral.m4 in autoconf distribution

dnl FPTOOLS_CHECK_FLAG_NOWARN(NAME, FLAG, CODE, iftrue, iffalse)

AC_DEFUN(FPTOOLS_CHECK_FLAG_NOWARN,
[AC_MSG_CHECKING([for $1])
 AC_CACHE_VAL(ac_cv_flag_$1,
   [FPTOOLS_TRY_LINK_NOWARN("$2", [main() { $3; exit(0); } ],
     eval "ac_cv_flag_$1=yes",
     eval "ac_cv_flag_$1=no"
   )]
 )
if eval "test \"`echo '$ac_cv_flag_'$1`\" = yes"; then
  AC_MSG_RESULT(yes)
  LIBS="$2 $LIBS"
  $4
else
  AC_MSG_RESULT(no)
  $5
fi
])

dnl FPTOOLS_CHECK_LIB_NOWARN(LIBRARY, FUNCTION)

AC_DEFUN(FPTOOLS_CHECK_LIB_NOWARN,
[FPTOOLS_CHECK_FLAG_NOWARN([function_$2],[],[extern char $2(); $2();],
[changequote(, )dnl
  ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
 changequote([, ])dnl
 AC_DEFINE_UNQUOTED($ac_tr_lib)
],
[FPTOOLS_CHECK_FLAG_NOWARN([library_$1],[-l$1],[extern char $2(); $2();],
[changequote(, )dnl
  ac_tr_lib=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
 changequote([, ])dnl
 AC_DEFINE_UNQUOTED($ac_tr_lib)
],
[]
)])]
)

dnl check for prototypes
dnl
AC_DEFUN(AC_C_PROTOTYPES,
[AC_CACHE_CHECK([prototypes], ac_cv_prototypes,
[AC_TRY_COMPILE([
void foo(int);
void foo(i)
int i; { 
return;
}
],
[int i;], 
ac_cv_prototypes=yes,
ac_cv_prototypes=no)])
if test "$ac_cv_prototypes" = yes; then
AC_DEFINE(HAVE_PROTOTYPES)
fi
])

chak's avatar
chak committed
595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637
dnl ** Check which CATALOG file we have to use with DocBook SGML.
dnl
dnl FPTOOLS_DOCBOOK_CATALOG(VARIABLE, JADE, STYLESHEET, CATALOGS-TO-CHECK-FOR)
dnl
dnl If any of the catalogs given in CATALOGS-TO-CHECK-FOR works on this
dnl platform, let VARIABLE refer to this catalog; otherwise, VARIABLE
dnl is set to "no".  JADE is the jade executable and STYLESHEET
dnl a DocBook style sheet.
dnl
AC_DEFUN(FPTOOLS_DOCBOOK_CATALOG,
[AC_CACHE_CHECK([for DocBook CATALOG], fptools_cv_sgml_catalog,
[
cat > conftest.sgml << EOF
<!DOCTYPE Article PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
<Article>
<ArtHeader>
<Title>Test</Title>
<Author><OtherName>Test</OtherName></Author>
<Address>Test</Address>
<PubDate>Test</PubDate>
</ArtHeader>
<Sect1><Title>Test</Title>
<Para>
Test.
</Para>
</Sect1>
</Article>
EOF
fptools_cv_sgml_catalog=no
for fptools_catalog in $4; do
  ac_try="$2 -t rtf -d $3#print -c $fptools_catalog conftest.sgml"
  if AC_TRY_EVAL(ac_try); then
    fptools_cv_sgml_catalog=[$]fptools_catalog
    break
  fi
done
])
rm -rf conftest*
if test $fptools_cv_sgml_catalog != "no"; then
  $1=$fptools_cv_sgml_catalog
fi
])

reid's avatar
reid committed
638 639

# LocalWords:  fi