1# Copyright (c) 1999-2001 by Red Hat, Inc. All rights reserved. 2# 3# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED 4# OR IMPLIED. ANY USE IS AT YOUR OWN RISK. 5# 6# Permission is hereby granted to use or copy this program 7# for any purpose, provided the above notices are retained on all copies. 8# Permission to modify the code and to distribute modified code is granted, 9# provided the above notices are retained, and a notice that the code was 10# modified is included with the above copyright notice. 11# 12# Original author: Tom Tromey 13# Modified by: Grzegorz Jakacki <jakacki at acm dot org> 14 15dnl Process this file with autoconf to produce configure. 16 17# Initialization 18# ============== 19 20AC_INIT(gc,7.0,Hans.Boehm@hp.com) 21 ## version must conform to [0-9]+[.][0-9]+(alpha[0-9]+)? 22AC_CONFIG_SRCDIR(gcj_mlc.c) 23AC_CANONICAL_TARGET 24AC_PREREQ(2.53) 25AC_REVISION($Revision: 1.25 $) 26GC_SET_VERSION 27AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects nostdinc]) 28AM_MAINTAINER_MODE 29 30AC_SUBST(PACKAGE) 31AC_SUBST(GC_VERSION) 32 33AM_PROG_CC_C_O 34AC_PROG_CXX 35 36AM_PROG_AS 37## FIXME: really needed? (AC_LIBTOOL already provides this) 38AC_CHECK_TOOL(AR, ar) 39AC_CHECK_TOOL(RANLIB, ranlib, :) # :) 40 41AC_PROG_INSTALL 42 43. ${srcdir}/configure.host 44 45GC_CFLAGS=${gc_cflags} 46AC_SUBST(GC_CFLAGS) 47 48AC_ARG_ENABLE(threads, 49 [AC_HELP_STRING([--enable-threads=TYPE], [choose threading package])], 50 THREADS=$enableval, 51 [ AC_MSG_CHECKING([for thread model used by GCC]) 52 THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'` 53 if test -z "$THREADS"; then 54 THREADS=no 55 fi 56 AC_MSG_RESULT([$THREADS]) ]) 57 58AC_ARG_ENABLE(parallel-mark, 59 [AC_HELP_STRING([--enable-parallel-mark], 60 [parallelize marking and free list construction])], 61 [case "$THREADS" in 62 no | none | single) 63 AC_MSG_ERROR([Parallel mark requires --enable-threads=x spec]) 64 ;; 65 esac ] 66) 67 68AC_ARG_ENABLE(cplusplus, 69 [AC_HELP_STRING([--enable-cplusplus], [install C++ support])]) 70 71INCLUDES=-I${srcdir}/include 72THREADDLLIBS= 73need_atomic_ops_asm=false 74## Libraries needed to support dynamic loading and/or threads. 75case "$THREADS" in 76 no | none | single) 77 THREADS=none 78 ;; 79 posix | pthreads) 80 THREADS=posix 81 THREADDLLIBS=-lpthread 82 case "$host" in 83 x86-*-linux* | ia64-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* | alpha-*-linux*) 84 AC_DEFINE(GC_LINUX_THREADS) 85 AC_DEFINE(_REENTRANT) 86 if test "${enable_parallel_mark}" = yes; then 87 AC_DEFINE(PARALLEL_MARK) 88 fi 89 AC_DEFINE(THREAD_LOCAL_ALLOC) 90 AC_MSG_WARN("Explict GC_INIT() calls may be required."); 91 ;; 92 *-*-linux*) 93 AC_DEFINE(GC_LINUX_THREADS) 94 AC_DEFINE(_REENTRANT) 95 ;; 96 *-*-aix*) 97 AC_DEFINE(GC_AIX_THREADS) 98 AC_DEFINE(_REENTRANT) 99 ;; 100 *-*-hpux11*) 101 AC_MSG_WARN("Only HP/UX 11 POSIX threads are supported.") 102 AC_DEFINE(GC_HPUX_THREADS) 103 AC_DEFINE(_POSIX_C_SOURCE,199506L) 104 if test "${enable_parallel_mark}" = yes; then 105 AC_DEFINE(PARALLEL_MARK) 106 fi 107 AC_DEFINE(THREAD_LOCAL_ALLOC) 108 AC_MSG_WARN("Explict GC_INIT() calls may be required."); 109 THREADDLLIBS="-lpthread -lrt" 110 # HPUX needs REENTRANT for the _r calls. 111 AC_DEFINE(_REENTRANT, 1, [Required define if using POSIX threads]) 112 ;; 113 *-*-hpux10*) 114 AC_MSG_WARN("Only HP-UX 11 POSIX threads are supported.") 115 ;; 116 *-*-freebsd*) 117 AC_MSG_WARN("FreeBSD does not yet fully support threads with Boehm GC.") 118 AC_DEFINE(GC_FREEBSD_THREADS) 119 INCLUDES="$INCLUDES -pthread" 120 ;; 121 *-*-kfreebsd*-gnu) 122 AC_DEFINE(GC_FREEBSD_THREADS) 123 INCLUDES="$INCLUDES -pthread" 124 THREADDLLIBS=-pthread 125 AC_DEFINE(_REENTRANT) 126 if test "${enable_parallel_mark}" = yes; then 127 AC_DEFINE(PARALLEL_MARK) 128 fi 129 AC_DEFINE(THREAD_LOCAL_ALLOC) 130 AC_DEFINE(USE_COMPILER_TLS) 131 ;; 132 *-*-gnu*) 133 AC_DEFINE(GC_GNU_THREADS) 134 AC_DEFINE(_REENTRANT) 135 AC_DEFINE(THREAD_LOCAL_ALLOC) 136 ;; 137 *-*-netbsd*) 138 AC_MSG_WARN("Only on NetBSD 2.0 or later.") 139 AC_DEFINE(GC_NETBSD_THREADS) 140 AC_DEFINE(_REENTRANT) 141 AC_DEFINE(_PTHREADS) 142 THREADDLLIBS="-lpthread -lrt" 143 ;; 144 *-*-solaris*) 145 AC_DEFINE(GC_SOLARIS_THREADS) 146 AC_DEFINE(THREAD_LOCAL_ALLOC) 147 THREADDLLIBS="-lpthread -lrt" 148 if test "$GCC" != yes; then 149 CFLAGS="$CFLAGS -O" 150 need_atomic_ops_asm=true 151 fi 152 ;; 153 *-*-irix*) 154 AC_DEFINE(GC_IRIX_THREADS) 155 ;; 156 *-*-cygwin*) 157 AC_DEFINE(GC_WIN32_THREADS) 158 AC_DEFINE(THREAD_LOCAL_ALLOC) 159 win32_threads=true 160 ;; 161 *-*-darwin*) 162 AC_DEFINE(GC_DARWIN_THREADS) 163 AC_DEFINE(THREAD_LOCAL_ALLOC) 164 AC_MSG_WARN("Explict GC_INIT() calls may be required."); 165 if test "${enable_parallel_mark}" = yes; then 166 AC_DEFINE(PARALLEL_MARK) 167 fi 168 darwin_threads=true 169 ;; 170 *-*-osf*) 171 AC_DEFINE(GC_OSF1_THREADS) 172 if test "${enable_parallel_mark}" = yes; then 173 AC_DEFINE(PARALLEL_MARK) 174 AC_DEFINE(THREAD_LOCAL_ALLOC) 175 AC_MSG_WARN("Explict GC_INIT() calls may be required."); 176 # May want to enable it in other cases, too. 177 # Measurements havent yet been done. 178 fi 179 INCLUDES="$INCLUDES -pthread" 180 THREADDLLIBS="-lpthread -lrt" 181 ;; 182 *) 183 AC_MSG_ERROR("Pthreads not supported by the GC on this platform.") 184 ;; 185 esac 186 ;; 187 win32) 188 AC_DEFINE(GC_WIN32_THREADS) 189 dnl Wine getenv may not return NULL for missing entry 190 AC_DEFINE(NO_GETENV) 191 ;; 192 dgux386) 193 THREADS=dgux386 194 AC_MSG_RESULT($THREADDLLIBS) 195 # Use pthread GCC switch 196 THREADDLLIBS=-pthread 197 if test "${enable_parallel_mark}" = yes; then 198 AC_DEFINE(PARALLEL_MARK) 199 fi 200 AC_DEFINE(THREAD_LOCAL_ALLOC) 201 AC_MSG_WARN("Explict GC_INIT() calls may be required."); 202 AC_DEFINE(GC_DGUX386_THREADS) 203 AC_DEFINE(DGUX_THREADS) 204 # Enable _POSIX4A_DRAFT10_SOURCE with flag -pthread 205 INCLUDES="-pthread $INCLUDES" 206 ;; 207 aix) 208 THREADS=posix 209 THREADDLLIBS=-lpthread 210 AC_DEFINE(GC_AIX_THREADS) 211 AC_DEFINE(_REENTRANT) 212 ;; 213 decosf1 | irix | mach | os2 | solaris | dce | vxworks) 214 AC_MSG_ERROR(thread package $THREADS not yet supported) 215 ;; 216 *) 217 AC_MSG_ERROR($THREADS is an unknown thread package) 218 ;; 219esac 220AC_SUBST(THREADDLLIBS) 221AM_CONDITIONAL(THREADS, test x$THREADS != xnone) 222AM_CONDITIONAL(PTHREADS, test x$THREADS = xposix) 223AM_CONDITIONAL(DARWIN_THREADS, test x$darwin_threads = xtrue) 224AM_CONDITIONAL(WIN32_THREADS, test x$win32_threads = xtrue) 225 226case "$host" in 227 powerpc-*-darwin*) 228 powerpc_darwin=true 229 ;; 230esac 231 232# Darwin needs a few extra special tests to deal with variation in the 233# system headers. 234case "$host" in 235 powerpc*-*-darwin*) 236 AC_CHECK_MEMBER(ppc_thread_state_t.r0, 237 AC_DEFINE(HAS_PPC_THREAD_STATE_R0,1, 238 [ppc_thread_state_t has field r0]),, 239 [#include <mach/thread_status.h>]) 240 AC_CHECK_MEMBER(ppc_thread_state_t.__r0, 241 AC_DEFINE(HAS_PPC_THREAD_STATE___R0,1,dnl 242 [ppc_thread_state_t has field __r0]),, 243 [#include <mach/thread_status.h>]) 244 AC_CHECK_MEMBER(ppc_thread_state64_t.r0, 245 AC_DEFINE(HAS_PPC_THREAD_STATE64_R0,1,dnl 246 [ppc_thread_state64_t has field r0]),, 247 [#include <mach/thread_status.h>]) 248 AC_CHECK_MEMBER(ppc_thread_state64_t.__r0, 249 AC_DEFINE(HAS_PPC_THREAD_STATE64___R0,1,dnl 250 [ppc_thread_state64_t has field __r0]),, 251 [#include <mach/thread_status.h>]) 252 ;; 253 i?86*-*-darwin*) 254 AC_CHECK_MEMBER(x86_thread_state32_t.eax, 255 AC_DEFINE(HAS_X86_THREAD_STATE32_EAX,1,dnl 256 [x86_thread_state32_t has field eax]),, 257 [#include <sys/cdefs.h> 258 #include <mach/thread_status.h>]) 259 AC_CHECK_MEMBER(x86_thread_state32_t.__eax, 260 AC_DEFINE(HAS_X86_THREAD_STATE32___EAX,1,dnl 261 [x86_thread_state32_t has field __eax]),, 262 [#include <sys/cdefs.h> 263 #include <mach/thread_status.h>]) 264 ;; 265 x86_64-*-darwin*) 266 AC_CHECK_MEMBER(x86_thread_state64_t.rax, 267 AC_DEFINE(HAS_X86_THREAD_STATE64_RAX,1,dnl 268 [x86_thread_state64_t has field rax]),, 269 [#include <sys/cdefs.h> 270 #include <mach/thread_status.h>]) 271 AC_CHECK_MEMBER(x86_thread_state64_t.__rax, 272 AC_DEFINE(HAS_X86_THREAD_STATE64___RAX,1,dnl 273 [x86_thread_state64_t has field __rax]),, 274 [#include <sys/cdefs.h> 275 #include <mach/thread_status.h>]) 276 ;; 277 *) ;; 278esac 279 280AC_MSG_CHECKING(for xlc) 281AC_TRY_COMPILE([],[ 282 #ifndef __xlC__ 283 # error 284 #endif 285], [compiler_xlc=yes], [compiler_xlc=no]) 286AC_MSG_RESULT($compiler_xlc) 287AM_CONDITIONAL(COMPILER_XLC,test $compiler_xlc = yes) 288if test $compiler_xlc = yes -a "$powerpc_darwin" = true; then 289 # the darwin stack-frame-walking code is completely broken on xlc 290 AC_DEFINE(DARWIN_DONT_PARSE_STACK) 291fi 292 293# We never want libdl on darwin. It is a fake libdl that just ends up making 294# dyld calls anyway 295case "$host" in 296 *-*-darwin*) ;; 297 *) 298 AC_CHECK_LIB(dl, dlopen, THREADDLLIBS="$THREADDLLIBS -ldl") 299 ;; 300esac 301 302# extra LD Flags which are required for targets 303case "${host}" in 304 *-*-darwin*) 305 extra_ldflags_libgc=-Wl,-single_module 306 ;; 307esac 308AC_SUBST(extra_ldflags_libgc) 309 310AC_SUBST(EXTRA_TEST_LIBS) 311 312target_all=libgc.la 313AC_SUBST(target_all) 314 315dnl If the target is an eCos system, use the appropriate eCos 316dnl I/O routines. 317dnl FIXME: this should not be a local option but a global target 318dnl system; at present there is no eCos target. 319TARGET_ECOS="no" 320AC_ARG_WITH(ecos, 321[ --with-ecos enable runtime eCos target support], 322TARGET_ECOS="$with_ecos" 323) 324 325addobjs= 326addlibs= 327CXXINCLUDES= 328case "$TARGET_ECOS" in 329 no) 330 ;; 331 *) 332 AC_DEFINE(ECOS) 333 CXXINCLUDES="-I${TARGET_ECOS}/include" 334 addobjs="$addobjs ecos.lo" 335 ;; 336esac 337 338AM_CONDITIONAL(CPLUSPLUS, test "${enable_cplusplus}" = yes) 339 340AC_SUBST(CXX) 341 342AC_SUBST(INCLUDES) 343AC_SUBST(CXXINCLUDES) 344 345# Configuration of shared libraries 346# 347AC_MSG_CHECKING(whether to build shared libraries) 348AC_ENABLE_SHARED 349 350case "$host" in 351 alpha-*-openbsd*) 352 enable_shared=no 353 AC_MSG_RESULT(no) 354 ;; 355 *) 356 AC_MSG_RESULT(yes) 357 ;; 358esac 359 360# Configuration of machine-dependent code 361# 362AC_MSG_CHECKING(which machine-dependent code should be used) 363machdep= 364case "$host" in 365 alpha-*-openbsd*) 366 machdep="mach_dep.lo" 367 if test x"${ac_cv_lib_dl_dlopen}" != xyes ; then 368 AC_MSG_WARN(OpenBSD/Alpha without dlopen(). Shared library support is disabled) 369 fi 370 ;; 371 alpha*-*-linux*) 372 machdep="mach_dep.lo" 373 ;; 374 i?86-*-solaris2.[[89]] | i?86-*-solaris2.1?) 375 AC_DEFINE(SOLARIS25_PROC_VDB_BUG_FIXED) 376 ;; 377 mipstx39-*-elf*) 378 machdep="mach_dep.lo" 379 AC_DEFINE(STACKBASE, __stackbase) 380 AC_DEFINE(DATASTART_IS_ETEXT) 381 ;; 382 mips-dec-ultrix*) 383 machdep="mach-dep.lo" 384 ;; 385 mips-nec-sysv*|mips-unknown-sysv*) 386 ;; 387 mips*-*-linux*) 388 ;; 389 mips-*-*) 390 machdep="mach_dep.lo" 391 dnl AC_DEFINE(NO_EXECUTE_PERMISSION) 392 dnl This is now redundant, but it is also important for incremental GC 393 dnl performance under Irix. 394 ;; 395 sparc-*-netbsd*) 396 machdep="mach_dep.lo sparc_netbsd_mach_dep.lo" 397 ;; 398 sparc-sun-solaris2.3) 399 machdep="mach_dep.lo sparc_mach_dep.lo" 400 AC_DEFINE(SUNOS53_SHARED_LIB) 401 ;; 402 sparc*-sun-solaris2.*) 403 machdep="mach_dep.lo sparc_mach_dep.lo" 404 ;; 405 ia64-*-*) 406 machdep="mach_dep.lo ia64_save_regs_in_stack.lo" 407 ;; 408esac 409if test x"$machdep" = x; then 410AC_MSG_RESULT($machdep) 411 machdep="mach_dep.lo" 412fi 413addobjs="$addobjs $machdep" 414AC_SUBST(addobjs) 415AC_SUBST(addlibs) 416 417AC_PROG_LIBTOOL 418 419# 420# Check for AViiON Machines running DGUX 421# 422ac_is_dgux=no 423AC_CHECK_HEADER(sys/dg_sys_info.h, 424[ac_is_dgux=yes;]) 425 426 ## :GOTCHA: we do not check anything but sys/dg_sys_info.h 427if test $ac_is_dgux = yes; then 428 if test "$enable_full_debug" = "yes"; then 429 CFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" 430 CXXFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" 431 else 432 CFLAGS="-DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" 433 CXXFLAGS="-DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2" 434 fi 435 AC_SUBST(CFLAGS) 436 AC_SUBST(CXXFLAGS) 437fi 438 439dnl We use these options to decide which functions to include. 440AC_ARG_WITH(target-subdir, 441[ --with-target-subdir=SUBDIR 442 configuring with a cross compiler]) 443AC_ARG_WITH(cross-host, 444[ --with-cross-host=HOST configuring with a cross compiler]) 445 446# automake wants to see AC_EXEEXT. But we don't need it. And having 447# it is actually a problem, because the compiler we're passed can't 448# necessarily do a full link. So we fool automake here. 449if false; then 450 # autoconf 2.50 runs AC_EXEEXT by default, and the macro expands 451 # to nothing, so nothing would remain between `then' and `fi' if it 452 # were not for the `:' below. 453 : 454 AC_EXEEXT 455fi 456 457dnl As of 4.13a2, the collector will not properly work on Solaris when 458dnl built with gcc and -O. So we remove -O in the appropriate case. 459dnl Not needed anymore on Solaris. 460AC_MSG_CHECKING(whether Solaris gcc optimization fix is necessary) 461case "$host" in 462 *aix*) 463 if test "$GCC" = yes; then 464 AC_MSG_RESULT(yes) 465 new_CFLAGS= 466 for i in $CFLAGS; do 467 case "$i" in 468 -O*) 469 ;; 470 *) 471 new_CFLAGS="$new_CFLAGS $i" 472 ;; 473 esac 474 done 475 CFLAGS="$new_CFLAGS" 476 else 477 AC_MSG_RESULT(no) 478 fi 479 ;; 480 *) AC_MSG_RESULT(no) ;; 481esac 482 483dnl Include defines that have become de facto standard. 484dnl ALL_INTERIOR_POINTERS can be overridden in startup code. 485AC_DEFINE(NO_EXECUTE_PERMISSION) 486AC_DEFINE(ALL_INTERIOR_POINTERS) 487 488 489dnl Interface Selection 490dnl ------------------- 491dnl 492dnl By default, make the library as general as possible. 493dnl enable_gcj_support=no 494AC_ARG_ENABLE(gcj-support, 495 [AC_HELP_STRING([--disable-gcj-support], 496 [Disable support for gcj.])]) 497AM_CONDITIONAL(ENABLE_GCJ_SUPPORT, 498 [test x"$enable_gcj_support" != xno]) 499if test x"$enable_gcj_support" != xno; then 500 AC_DEFINE(GC_GCJ_SUPPORT, 1, [Define to include support for gcj]) 501fi 502 503AC_ARG_ENABLE(java-finalization, 504 [AC_HELP_STRING([--disable-java-finalization], 505 [Disable support for java finalization.])]) 506if test x"$enable_java_finalization" != xno; then 507 AC_DEFINE(JAVA_FINALIZATION) 508fi 509 510AC_ARG_ENABLE(atomic-uncollectable, 511 [AC_HELP_STRING([--disable-atomic-uncollectible], 512 [Disable support for atomic uncollectible allocation.])]) 513if test x"$enable_atomic_uncollectible" != x"no"; then 514 AC_DEFINE(ATOMIC_UNCOLLECTABLE, 1, 515 [Define to enable atomic uncollectible allocation.]) 516fi 517 518AC_ARG_ENABLE(redirect-malloc, 519 [AC_HELP_STRING([--enable-redirect-malloc], 520 [Redirect malloc and friends to GC routines])]) 521 522if test "${enable_redirect_malloc}" = yes; then 523 if test "${enable_full_debug}" = yes; then 524 AC_DEFINE(REDIRECT_MALLOC, GC_debug_malloc_replacement) 525 AC_DEFINE(REDIRECT_REALLOC, GC_debug_realloc_replacement) 526 AC_DEFINE(REDIRECT_FREE, GC_debug_free) 527 else 528 AC_DEFINE(REDIRECT_MALLOC, GC_malloc) 529 fi 530fi 531 532AC_ARG_ENABLE(large-config, 533 [AC_HELP_STRING([--enable-large-config], 534 [Optimize for large (> 100 MB) heap or root set])]) 535 536if test "${enable_large_config}" = yes; then 537 AC_DEFINE(LARGE_CONFIG, 1, [Define to optimize for large heaps or root sets]) 538fi 539 540dnl This is something of a hack. When cross-compiling we turn off 541dnl some functionality. We also enable the "small" configuration. 542dnl These is only correct when targetting an embedded system. FIXME. 543if test -n "${with_cross_host}"; then 544 AC_DEFINE(NO_CLOCK) 545 AC_DEFINE(SMALL_CONFIG) 546 AC_DEFINE(NO_DEBUGGING) 547fi 548 549 550dnl Debugging 551dnl --------- 552 553UNWINDLIBS= 554AC_ARG_ENABLE(gc-debug, 555[AC_HELP_STRING([--enable-gc-debug], 556 [include full support for pointer backtracing etc.])], 557[ if test "$enable_gc_debug" = "yes"; then 558 AC_MSG_WARN("Should define GC_DEBUG and use debug alloc. in clients.") 559 AC_DEFINE(KEEP_BACK_PTRS) 560 AC_DEFINE(DBG_HDRS_ALL) 561 case $host in 562 ia64-*-linux* ) 563 AC_DEFINE(MAKE_BACK_GRAPH) 564 AC_DEFINE(SAVE_CALL_COUNT, 8) 565 AC_CHECK_LIB(unwind, backtrace, [ 566 AC_DEFINE(GC_HAVE_BUILTIN_BACKTRACE) 567 UNWINDLIBS=-lunwind 568 AC_MSG_WARN("Client code may need to link against libunwind.") 569 ]) 570 ;; 571 x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* ) 572 AC_DEFINE(MAKE_BACK_GRAPH) 573 AC_MSG_WARN("Client must not use -fomit-frame-pointer.") 574 AC_DEFINE(SAVE_CALL_COUNT, 8) 575 ;; 576 i[3456]86-*-dgux*) 577 AC_DEFINE(MAKE_BACK_GRAPH) 578 ;; 579 esac ] 580 fi) 581 582AC_SUBST(UNWINDLIBS) 583 584AC_ARG_ENABLE(gc-assertions, 585 [AC_HELP_STRING([--enable-gc-assertions], 586 [collector-internal assertion checking])]) 587if test "${enable_gc_assertions}" = yes; then 588 AC_DEFINE(GC_ASSERTIONS) 589fi 590 591AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host") 592 593 594dnl Atomic Ops 595dnl ---------- 596 597atomic_ops_libs=-latomic_ops 598AC_CHECK_HEADER(atomic_ops.h, 599 [ AC_MSG_NOTICE([Using pre-installed libatomic_ops]) ], 600 [ ao_dir= 601 for candidate in ${srcdir}/libatomic_ops*; do 602 case $candidate in 603 *.tar.gz) 604 ;; 605 *install) 606 dnl generated by alternate Makefile. 607 ;; 608 *) 609 if test -e "$candidate"; then 610 ao_dir="$candidate" 611 fi 612 ;; 613 esac 614 done 615 if test -z "$ao_dir"; then 616 AC_MSG_ERROR([Missig libatomic_ops.]) 617 fi 618 ao_version="${ao_dir#*libatomic_ops-}" 619 AC_MSG_NOTICE([Using internal version of libatomic_ops]) 620 621 dnl Automake does not accept shell variables in AC_CONFIG_SUBDIRS 622 test -e ${srcdir}/libatomic_ops \ 623 || ln -s ${ao_dir} ${srcdir}/libatomic_ops 624 AC_CONFIG_SUBDIRS(libatomic_ops) 625 626 dnl Also copy the source files to be linked in. 627 test -e ${srcdir}/atomic_ops.c \ 628 || ln -s ${srcdir}/libatomic_ops/src/atomic_ops.c \ 629 ${srcdir}/atomic_ops.c 630 631 test -e ${srcdir}/atomic_ops_sysdeps.S \ 632 || ln -s ${srcdir}/libatomic_ops/src/atomic_ops_sysdeps.S \ 633 ${srcdir}/atomic_ops_sysdeps.S 634 635 dnl This gets the source include files, which is often close enough. 636 dnl It also makes atomic_ops_sysdeps.S assemble. 637 GC_CFLAGS="${GC_CFLAGS} -I \$(top_srcdir)/libatomic_ops/src" 638 maybe_libatomic_ops="libatomic_ops" 639 ]) 640 641AM_CONDITIONAL(USE_INTERNAL_LIBATOMIC_OPS, 642 test -n "$maybe_libatomic_ops" -a "$THREADS" != "none") 643AM_CONDITIONAL(NEED_ATOMIC_OPS_ASM, test -n "$maybe_libatomic_ops" -a x$need_atomic_ops_asm = xtrue) 644AC_SUBST(atomic_ops_libs) 645 646dnl Produce the Files 647dnl ----------------- 648 649AC_CONFIG_FILES([Makefile bdw-gc.pc]) 650 651AC_CONFIG_COMMANDS([default],, 652 [ srcdir=${srcdir} 653 host=${host} 654 CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} 655 CC="${CC}" 656 DEFS="$DEFS" ]) 657 658AC_OUTPUT 659