configure.in 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571
  1. dnl Process this file with autoconf to produce a configure script.
  2. dnl
  3. dnl
  4. dnl
  5. dnl On AIX, we need xlc_r or cc_r if not explicitly set
  6. define(S48_CC, [dnl
  7. case "$target" in
  8. *-*-aix*) dnl
  9. if test -z "$CC" ; then
  10. AC_CHECK_PROGS(CC,cc_r xlc_r cc)
  11. fi
  12. ;;
  13. esac
  14. ])
  15. dnl
  16. dnl
  17. dnl Tests if it can compile and link with "-arch"-Flag on MacOSX,
  18. dnl keeps the "-arch"-Flag in the CFLAGS and LDFLAGS if test is
  19. dnl successfull.
  20. define(S48_OSX_ARCH_CHECK, [dnl
  21. AC_MSG_CHECKING([for gcc argument $1])
  22. save_CFLAGS="$CFLAGS"
  23. save_LDFLAGS="$LDFLAGS"
  24. CFLAGS="$CFLAGS -arch $1"
  25. LDFLAGS="$LDFLAGS -arch $1"
  26. compiles=0
  27. links=0
  28. AC_TRY_COMPILE([],[],compiles=1, compiles=0)
  29. AC_TRY_LINK([],[],links=1, links=0)
  30. if test "$links" = "1" -a "$compiles" = "1"; then
  31. AC_MSG_RESULT([OK])
  32. else
  33. CFLAGS="$save_CFLAGS"
  34. LDFLAGS="$save_LDFLAGS"
  35. AC_MSG_RESULT([failed])
  36. fi
  37. ])
  38. dnl
  39. dnl
  40. dnl Checks for valid "-arch"-Flags on MacOSX depending on the
  41. dnl parameters build_universal (see S48_ENABLE_UNIVERSAL_BINARY)
  42. dnl and force_32 (see S48_ENABLE_FORCE_32BIT).
  43. define(S48_OSX_ARCH_FLAGS, [dnl
  44. build_universal="$1"
  45. force_32="$2"
  46. if test "$build_universal" = 1 -a "$force_32" = 1; then
  47. S48_OSX_ARCH_CHECK(i386,32)
  48. S48_OSX_ARCH_CHECK(ppc,32)
  49. elif test "$build_universal" = 1 -a "$force_32" = 0; then
  50. if test "$BIT_SUFFIX" = 32; then
  51. S48_OSX_ARCH_CHECK(i386,32)
  52. S48_OSX_ARCH_CHECK(ppc,32)
  53. elif test "$BIT_SUFFIX" = 64; then
  54. S48_OSX_ARCH_CHECK(x86_64,64)
  55. S48_OSX_ARCH_CHECK(ppc64,64)
  56. fi
  57. fi
  58. ])
  59. dnl
  60. dnl
  61. dnl Force to use 32bit implementation.
  62. define(S48_ENABLE_FORCE_32BIT, [dnl
  63. AC_MSG_CHECKING([whether we must build a 32bit binary])
  64. dnl
  65. AC_ARG_ENABLE([force-32bit],
  66. [AC_HELP_STRING([--enable-force-32bit],
  67. [Build a 32bit binary on architectures where this is not the default])],
  68. [dnl
  69. S48_FORCE_32_P="1"
  70. BIT_SUFFIX="32"
  71. dnl For now only a Linux/AMD x86_64 version:
  72. case "$host" in
  73. x86_64-*-linux-gnu )
  74. CFLAGS="${CFLAGS} -m32";
  75. LDFLAGS="${LDFLAGS} -m32";
  76. dnl This is needed if 'gcc' resp. 'ld' is used to link a dynamic external below
  77. GCC_LDFLAGS="${GCC_LDFLAGS} -m32";
  78. LD_LDFLAGS="${LD_LDFLAGS} -melf_i386";
  79. ;;
  80. *darwin* ) dnl AC_MSG_RESULT([Found Darwin, will check later.])
  81. ;;
  82. * ) AC_MSG_ERROR([Don't know how to build a 32bit binary on this architecture])
  83. ;;
  84. esac
  85. AC_DEFINE([BUILD_32BIT], 1,
  86. [Define if we are building a 32bit binary on architectures where this is not the default.])
  87. AC_MSG_RESULT(yes)],
  88. [dnl
  89. S48_FORCE_32_P="0"
  90. AC_MSG_RESULT(no)])])
  91. dnl
  92. dnl
  93. dnl Determines the number of bits per byte
  94. define(S48_DETERMINE_BITS_PER_BYTE, [dnl
  95. AC_MSG_CHECKING(bits per byte)
  96. AC_CACHE_VAL(ac_cv_sizeof_void_p,
  97. [AC_TRY_RUN([#include <stdio.h>
  98. #include <stdlib.h>
  99. main()
  100. {
  101. unsigned char c = 1;
  102. int i = 0;
  103. FILE *f=fopen("conftestval", "w");
  104. if (!f) exit(1);
  105. while (c != 0) {
  106. i++;
  107. c = c << 1;
  108. }
  109. fprintf(f, "%d\n", i);
  110. exit(0);
  111. }],
  112. ac_cv_bits_per_byte=`cat conftestval`,
  113. ac_cv_bits_per_byte=0,
  114. AC_MSG_ERROR(failed to compile test program))])
  115. if test "$ac_cv_bits_per_byte" = "0" -o "$ac_cv_bits_per_byte" = ""; then
  116. AC_MSG_ERROR([Unable to determine bits per byte, see config.log for details.]);
  117. fi
  118. AC_MSG_RESULT($ac_cv_bits_per_byte)
  119. AC_DEFINE_UNQUOTED(BITS_PER_BYTE, [$ac_cv_bits_per_byte], [Check for the number of bits per byte])
  120. ])
  121. dnl
  122. dnl
  123. dnl Determines the size of a pointer.
  124. define(S48_DETERMINE_POINTER_SIZE, [dnl
  125. dnl Our own version of AC_CHECK_SIZEOF([void *])
  126. AC_MSG_CHECKING(size of void *)
  127. AC_CACHE_VAL(ac_cv_sizeof_void_p,
  128. [AC_TRY_RUN([#include <stdio.h>
  129. #include <stdlib.h>
  130. main()
  131. {
  132. FILE *f=fopen("conftestval", "w");
  133. if (!f) exit(1);
  134. fprintf(f, "%d\n", (int)sizeof(void *));
  135. exit(0);
  136. }],
  137. ac_cv_sizeof_void_p=`cat conftestval`,
  138. ac_cv_sizeof_void_p=0,
  139. AC_MSG_ERROR(failed to compile test program))])
  140. if test "$ac_cv_sizeof_void_p" = "0" -o "$ac_cv_sizeof_void_p" = ""; then
  141. AC_MSG_ERROR([Unable to determine sizeof (void *), see config.log for details.]);
  142. fi
  143. AC_MSG_RESULT($ac_cv_sizeof_void_p)
  144. AC_DEFINE_UNQUOTED(SIZEOF_VOID_P, [$ac_cv_sizeof_void_p], [Check for sizeof (void *)])
  145. ])
  146. dnl
  147. dnl
  148. dnl Determines the number of bits of desired build.
  149. define(S48_DETERMINE_BIT_SUFFIX, [dnl
  150. AC_MSG_CHECKING([for BIT_SUFFIX])
  151. if test $BIT_SUFFIX; then
  152. AC_MSG_RESULT([You forced BIT_SUFFIX to be $BIT_SUFFIX.])
  153. else
  154. BIT_SUFFIX=`expr $ac_cv_sizeof_void_p \* $ac_cv_bits_per_byte`
  155. AC_MSG_RESULT($BIT_SUFFIX)
  156. fi
  157. AC_DEFINE_UNQUOTED(WORDSIZE, [$BIT_SUFFIX], [Check for number of bits in a word])
  158. ])
  159. dnl
  160. dnl
  161. dnl
  162. dnl Option to build an universal binary on MacOSX.
  163. define(S48_ENABLE_UNIVERSAL_BINARY, [dnl
  164. AC_MSG_CHECKING([whether we are building a Universal Binary])
  165. dnl
  166. AC_ARG_ENABLE([universal-binary],
  167. [AC_HELP_STRING([--enable-universal-binary],
  168. [Build MacOS X Universal Binary])],
  169. [dnl
  170. case $host in
  171. *darwin* ) S48_BUILD_UNIVERSAL_P="1"
  172. AC_DEFINE([BUILD_UNIVERSAL_BINARY], 1,
  173. [Define if we are building an OS X Universal Binary.])
  174. AC_MSG_RESULT(yes)
  175. ;;
  176. * ) AC_MSG_ERROR([--enable-universal-binary only works on Mac OS X])
  177. ;;
  178. esac
  179. ],
  180. [dnl
  181. S48_BUILD_UNIVERSAL_P="0"
  182. AC_MSG_RESULT(no)])])
  183. dnl
  184. dnl
  185. dnl
  186. define(S48_PICK_GC, [dnl
  187. AC_ARG_ENABLE([gc],
  188. [AC_HELP_STRING([--enable-gc=GC],
  189. [choose garbage collector (twospace, bibop), default is twospace])],
  190. [dnl
  191. case $enableval in
  192. twospace )
  193. AC_DEFINE([S48_GC_TWOSPACE], 1, [Define if building with two-space GC.])
  194. GC_OBJS='${GC_TWOSPACE_OBJS}' ;;
  195. bibop )
  196. AC_DEFINE([S48_GC_BIBOP], 1, [Define if building with BIBOP GC.])
  197. GC_OBJS='${GC_BIBOP_OBJS}' ;;
  198. * ) AC_MSG_ERROR([Invalid argument to --enable-gc]) ;;
  199. esac
  200. ],
  201. [AC_DEFINE([S48_GC_TWOSPACE], 1, [Define if building with two-space GC.])
  202. GC_OBJS='${GC_TWOSPACE_OBJS}'])dnl
  203. ])dnl
  204. ])
  205. dnl
  206. dnl We might want AC_WORDS_BIGENDIAN in the future.
  207. dnl We might want AC_CHAR_UNSIGNED in the future.
  208. dnl
  209. define(S48_POSIX_LIBC, [dnl
  210. echo checking for RISC/OS POSIX library lossage
  211. if test -f /usr/posix/usr/lib/libc.a; then
  212. LIBS="${LIBS} /usr/posix/usr/lib/libc.a"
  213. fi
  214. ])dnl
  215. dnl
  216. dnl
  217. dnl Determine the name of compiler option for generating position
  218. dnl independent code.
  219. define(S48_PIC_OPTION_NAME, [dnl
  220. AC_MSG_CHECKING([how to compile position independent code])
  221. case "$host_os" in
  222. solaris* )
  223. if test "$GCC" = "yes"; then
  224. PIC="-fPIC"
  225. else
  226. # for SUN's compiler
  227. PIC="-KPIC"
  228. fi
  229. ;;
  230. darwin*|macosx* )
  231. # Code on this platform is PIC by default
  232. PIC=""
  233. ;;
  234. *)
  235. PIC="-fPIC"
  236. ;;
  237. esac
  238. if test "$PIC" = ""; then
  239. AC_MSG_RESULT(no extra option necessary)
  240. else
  241. AC_MSG_RESULT($PIC)
  242. fi
  243. ])dnl
  244. dnl
  245. dnl
  246. dnl
  247. dnl -rdynamic is needed for loading external code
  248. define(S48_LDFLAGS, [dnl
  249. AC_MSG_CHECKING([-rdynamic])
  250. oldLDFLAGS="$LDFLAGS"
  251. LDFLAGS="$LDFLAGS -rdynamic"
  252. AC_TRY_RUN([int main() { return 0;}],
  253. [AC_MSG_RESULT(yes)],
  254. [AC_MSG_RESULT(no)
  255. LDFLAGS="$oldLDFLAGS"],
  256. [AC_MSG_RESULT(no)
  257. LDFLAGS="$oldLDFLAGS"])
  258. AC_MSG_CHECKING([LDFLAGS_VM])
  259. case "$host_os" in
  260. aix* )
  261. if test "$GCC" = "yes"; then
  262. LDFLAGS_VM="-Xlinker -brtl -Xlinker -bE:$srcdir/c/scheme48.exp"
  263. else
  264. LDFLAGS_VM="-brtl -bE:$srcdir/c/scheme48.exp"
  265. fi
  266. ;;
  267. * )
  268. LDFLAGS_VM=
  269. ;;
  270. esac
  271. AC_MSG_RESULT([$LDFLAGS_VM])
  272. ])dnl
  273. dnl
  274. define(S48_INLINE, [dnl
  275. AC_MSG_CHECKING([for inline keyword])
  276. AC_COMPILE_IFELSE([#include <stdio.h>
  277. inline void f(void)
  278. {
  279. printf("inlined");
  280. }], [AC_MSG_RESULT([yes])
  281. AC_DEFINE([HAVE_INLINE], [1], [Define if the C compiler supports the inline keyword])],
  282. [AC_MSG_RESULT([no])])
  283. ])
  284. dnl
  285. define(S48_IEEE_ENDIANNESS, [dnl
  286. build_universal="$1"
  287. AC_MSG_CHECKING([IEEE floating-point endianness])
  288. if test "$build_universal" = "1";
  289. then
  290. AC_MSG_RESULT([building Universal Binary; using compiler defined macros instead])
  291. else
  292. AC_TRY_RUN([#include <stdio.h>
  293. #include <inttypes.h>
  294. typedef uint32_t word32_t;
  295. typedef union { double d; word32_t word[2]; } double_overlay;
  296. #define DOUBLE_WORD0(x) ((double_overlay*)&(x))->word[0]
  297. #define DOUBLE_WORD1(x) ((double_overlay*)&(x))->word[1]
  298. int
  299. main(void)
  300. {
  301. double n = 0.3;
  302. /* least significant byte first */
  303. if ((DOUBLE_WORD0(n) == 0x33333333) && (DOUBLE_WORD1(n) == 0x3fd33333))
  304. return 0;
  305. /* most significant byte first */
  306. else if ((DOUBLE_WORD1(n) == 0x33333333) && (DOUBLE_WORD0(n) == 0x3fd33333))
  307. return 1;
  308. else {
  309. fprintf(stderr, "WARNING: unknown IEEE format; assuming IEEE with least significant byte first\n");
  310. return 0;
  311. }
  312. }], ieee_endianness="least first", ieee_endianness="most first", ieee_endianness="least first")
  313. AC_MSG_RESULT([$ieee_endianness])
  314. if test "$ieee_endianness" = "most first"; then
  315. AC_DEFINE([IEEE_MOST_FIRST], 1, [Define if IEEE doubles are stored with most-significant byte first.])
  316. fi
  317. fi
  318. ])dnl
  319. dnl
  320. define(S48_CREATE_BUILD_DIRS, [dnl
  321. mkdir -p c/bibop
  322. mkdir -p c/unix
  323. mkdir -p c/posix
  324. mkdir -p c/fake
  325. ])dnl
  326. dnl
  327. dnl
  328. dnl
  329. define(S48_DYNAMIC_EXTERNALS, [dnl
  330. dnl
  331. AC_CHECK_PROGS([LD], [ld cc gcc])
  332. AC_MSG_CHECKING([compile and link flags for dynamic externals])
  333. DYNAMIC_EXTERNALS_LDFLAGS_IN_PLACE=""
  334. case "$host_os" in
  335. hpux* )
  336. dnl +z means position-independent code
  337. DYNAMIC_EXTERNALS_CFLAGS='+z -D_HPUX_SOURCE'
  338. DYNAMIC_EXTERNALS_LDFLAGS='-b'
  339. ;;
  340. aix* )
  341. DYNAMIC_EXTERNALS_CFLAGS=''
  342. dnl -bM:SRE means shared object
  343. dnl -brtl means run-time linking is enabled
  344. dnl -bnoentry means no default entry point
  345. DYNAMIC_EXTERNALS_LDFLAGS='-bM:SRE -brtl -bI:\$(incdir)/scheme48.exp -bnoentry -bE:\$(incdir)/scheme48-external.exp -lc'
  346. DYNAMIC_EXTERNALS_LDFLAGS_IN_PLACE='-bM:SRE -brtl -bI:\$(srcdir)/c/scheme48.exp -bnoentry -bE:\$(srcdir)/c/scheme48-external.exp -lc'
  347. ;;
  348. darwin*|macosx* )
  349. DYNAMIC_EXTERNALS_CFLAGS='-fno-common'
  350. DYNAMIC_EXTERNALS_LDFLAGS="$CFLAGS $LDFLAGS -bundle -flat_namespace -undefined suppress"
  351. dnl linker workaround for MacOSX
  352. LD="$CC"
  353. ;;
  354. solaris* )
  355. DYNAMIC_EXTERNALS_CFLAGS="$PIC"
  356. dnl -G means shared object
  357. DYNAMIC_EXTERNALS_LDFLAGS="$LDFLAGS -G"
  358. LD="$CC"
  359. ;;
  360. linux* )
  361. DYNAMIC_EXTERNALS_CFLAGS="$PIC"
  362. if test "$LD" = "ld"; then
  363. DYNAMIC_EXTERNALS_LDFLAGS="-shared $LD_LDFLAGS"
  364. else
  365. DYNAMIC_EXTERNALS_LDFLAGS="-shared $GCC_LDFLAGS"
  366. fi
  367. ;;
  368. cygwin* )
  369. LD="$CC"
  370. DYNAMIC_EXTERNALS_CFLAGS=""
  371. DYNAMIC_EXTERNALS_LDFLAGS='-shared $(bindir)/scheme48vm.a'
  372. DYNAMIC_EXTERNALS_LDFLAGS_IN_PLACE='-shared $(srcdir)/scheme48vm.a'
  373. ;;
  374. * )
  375. DYNAMIC_EXTERNALS_CFLAGS="$PIC"
  376. DYNAMIC_EXTERNALS_LDFLAGS='-shared'
  377. ;;
  378. esac
  379. if test -z "$DYNAMIC_EXTERNALS_LDFLAGS_IN_PLACE"; then
  380. DYNAMIC_EXTERNALS_LDFLAGS_IN_PLACE="$DYNAMIC_EXTERNALS_LDFLAGS"
  381. fi
  382. AC_MSG_RESULT([$DYNAMIC_EXTERNALS_CFLAGS, $DYNAMIC_EXTERNALS_LDFLAGS])
  383. ])dnl
  384. dnl
  385. AC_DEFUN([S48_PTHREAD_TRY_FLAGS], [
  386. if test "$pthreads_done" = "no"; then
  387. flags_result=""
  388. oldCFLAGS="$CFLAGS"
  389. CFLAGS="$CFLAGS $1"
  390. AC_TRY_RUN([#include <pthread.h>
  391. int
  392. main(void)
  393. {
  394. pthread_kill(pthread_self(), 0);
  395. }],
  396. [flags_result="$1 (compile)"],
  397. [CFLAGS="$oldCFLAGS"])
  398. oldLDFLAGS="$LDFLAGS"
  399. LDFLAGS="$LDFLAGS $1"
  400. AC_TRY_RUN([#include <pthread.h>
  401. int
  402. main(void)
  403. {
  404. pthread_kill(pthread_self(), 0);
  405. }],
  406. [flags_result="$flags_result $1 (link)"
  407. pthreads_done="yes"],
  408. [LDFLAGS="$oldLDFLAGS"])
  409. if test -n "$flags_result"; then
  410. AC_MSG_RESULT($flags_result)
  411. fi
  412. fi
  413. ])
  414. dnl
  415. dnl
  416. dnl must run after S48_DYNAMIC_EXTERNALS
  417. define(S48_PTHREADS, [dnl
  418. AC_CHECK_HEADERS([pthread.h],[dnl
  419. pthreads_done="no"
  420. AC_MSG_CHECKING([Pthreads support])
  421. S48_PTHREAD_TRY_FLAGS([-mt])
  422. S48_PTHREAD_TRY_FLAGS([-pthread])
  423. S48_PTHREAD_TRY_FLAGS([-pthreads])
  424. S48_PTHREAD_TRY_FLAGS([-mthreads])
  425. S48_PTHREAD_TRY_FLAGS([-thread])
  426. ])
  427. ])
  428. dnl
  429. dnl
  430. dnl must run after S48_DYNAMIC_EXTERNALS
  431. define(S48_MISALIGNED_DOUBLES, [dnl
  432. if test "$GCC" = "yes"; then
  433. AC_MSG_CHECKING([-munaligned-doubles])
  434. oldCFLAGS="$CFLAGS"
  435. CFLAGS="$CFLAGS -munaligned-doubles"
  436. AC_TRY_RUN([int main() { return 0;}],
  437. [AC_MSG_RESULT(yes)
  438. DYNAMIC_EXTERNALS_CFLAGS="$DYNAMIC_EXTERNALS_CFLAGS -munaligned-doubles"],
  439. [AC_MSG_RESULT(no)
  440. CFLAGS="$oldCFLAGS"],
  441. [AC_MSG_RESULT(no)
  442. CFLAGS="$oldCFLAGS"])
  443. fi
  444. ])dnl
  445. dnl
  446. dnl
  447. dnl
  448. AC_INIT(c/prescheme.h)
  449. AC_CONFIG_HEADER(c/sysdep.h)
  450. AC_CONFIG_HEADER(c/scheme48arch.h)
  451. AC_CANONICAL_HOST
  452. dnl set the cross-compile flag before we try anything.
  453. AC_TRY_RUN([int main() { return 0;}], [], [], [true])
  454. S48_CC
  455. S48_PICK_GC
  456. S48_ENABLE_FORCE_32BIT
  457. S48_DETERMINE_BITS_PER_BYTE
  458. S48_DETERMINE_POINTER_SIZE
  459. S48_DETERMINE_BIT_SUFFIX
  460. S48_ENABLE_UNIVERSAL_BINARY
  461. S48_OSX_ARCH_FLAGS($S48_BUILD_UNIVERSAL_P,$S48_FORCE_32_P)
  462. S48_PIC_OPTION_NAME
  463. S48_CREATE_BUILD_DIRS
  464. S48_LDFLAGS
  465. AC_ISC_POSIX
  466. S48_INLINE
  467. AC_PROG_INSTALL
  468. AC_CHECK_LIB(m, main)
  469. AC_CHECK_LIB(dl, main)
  470. AC_CHECK_LIB(mld, main)
  471. AC_CHECK_LIB(nsl, main)
  472. AC_CHECK_LIB(gen, main)
  473. AC_CHECK_LIB(socket, main)
  474. AC_CHECK_LIB(sun, getpwnam)
  475. S48_POSIX_LIBC
  476. AC_CONST
  477. AC_MSG_CHECKING(for socklen_t)
  478. AC_TRY_COMPILE([#include <sys/types.h>
  479. #include <sys/socket.h>
  480. socklen_t x;
  481. ],[],
  482. [AC_MSG_RESULT(yes)],
  483. [AC_TRY_COMPILE([#include <sys/types.h>
  484. #include <sys/socket.h>
  485. int accept (int,
  486. struct sockaddr *,
  487. size_t *);
  488. ],[],
  489. [AC_MSG_RESULT(size_t)
  490. AC_DEFINE(socklen_t,size_t)],
  491. [AC_MSG_RESULT(int)
  492. AC_DEFINE(socklen_t,int)])])
  493. AC_RETSIGTYPE
  494. AC_TYPE_UINTPTR_T
  495. AC_TYPE_UINT16_T
  496. AC_CHECK_HEADERS(libgen.h sys/timeb.h posix/time.h)
  497. AC_CHECK_HEADERS(sys/select.h)
  498. AC_CHECK_HEADERS(sysexits.h)
  499. AC_CHECK_HEADERS(langinfo.h)
  500. AC_CHECK_FUNC(nl_langinfo, [], [AC_LIBOBJ([c/fake/langinfo])])
  501. AC_CHECK_FUNCS(gettimeofday ftime select setitimer sigaction)
  502. AC_CHECK_HEADERS(poll.h)
  503. AC_CHECK_FUNCS(poll)
  504. AC_CHECK_FUNC(dlopen, [AC_DEFINE(HAVE_DLOPEN,
  505. 1, [Define to 1 if the interface to the dynamic linker exists])])
  506. AC_CHECK_FUNCS(socket chroot)
  507. AC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR),
  508. [AC_LIBOBJ([c/fake/strerror.o])])
  509. dnl Some idiot renamed `environ' as `__environ' in some versions of Linux.
  510. dnl POSIX says it's `environ'.
  511. AC_MSG_CHECKING([environ])
  512. AC_TRY_LINK([],
  513. [extern char **environ;
  514. if (environ)
  515. return 0;
  516. else
  517. return 1;],
  518. dnl Have `environ'
  519. [AC_DEFINE(ENVIRON_NAME,environ)
  520. AC_MSG_RESULT([using environ])],
  521. dnl Do not have `environ'
  522. [AC_TRY_LINK([],
  523. [extern char **__environ;
  524. if (__environ)
  525. return 0;
  526. else
  527. return 1;],
  528. dnl Have `__environ'
  529. [AC_DEFINE(ENVIRON_NAME,__environ)
  530. AC_MSG_RESULT([using __environ])],
  531. dnl Do not have `__environ'
  532. [AC_MSG_WARN([no environ variable found])
  533. AC_LIBOBJ([c/fake/environ.o])])])
  534. AC_MSG_CHECKING([__NEXT__])
  535. AC_TRY_LINK(,[
  536. #ifdef __NeXT__
  537. return 0;
  538. #else
  539. fail
  540. #endif
  541. ],
  542. CC="$CC -posix"
  543. AC_DEFINE(HAVE_SIGACTION)
  544. AC_MSG_RESULT([yes]),
  545. AC_MSG_RESULT([no]))
  546. S48_IEEE_ENDIANNESS($S48_BUILD_UNIVERSAL_P)
  547. S48_DYNAMIC_EXTERNALS
  548. S48_PTHREADS
  549. S48_MISALIGNED_DOUBLES
  550. AC_SUBST(CFLAGS)
  551. AC_SUBST(LDFLAGS)
  552. AC_SUBST(LD)
  553. AC_SUBST(LDFLAGS_VM)
  554. AC_SUBST(DYNAMIC_EXTERNALS_CFLAGS)
  555. AC_SUBST(DYNAMIC_EXTERNALS_LDFLAGS)
  556. AC_SUBST(DYNAMIC_EXTERNALS_LDFLAGS_IN_PLACE)
  557. AC_SUBST(GC_OBJS)
  558. AC_SUBST(S48_GC_TWOSPACE)
  559. AC_SUBST(S48_GC_BIBOP)
  560. AC_SUBST(BIT_SUFFIX)
  561. AC_OUTPUT(Makefile)