X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=boehm-gc%2Fconfigure.ac;h=2beaa1c188b5e113b6f13cbd04f1f8508638182a;hp=69ad5cd3ab9666aadd8c83953fd835efc5397ebc;hb=886a341f3ff7c1a2dec9207e1a68d1ea18e50e73;hpb=8f2a88edcd09290f720bad664a138483de55af7a diff --git a/boehm-gc/configure.ac b/boehm-gc/configure.ac index 69ad5cd3ab9..2beaa1c188b 100644 --- a/boehm-gc/configure.ac +++ b/boehm-gc/configure.ac @@ -1,4 +1,4 @@ -# Copyright (c) 1999, 2000, 2001, 2002, 2003 by Red Hat, Inc. All rights reserved. +# Copyright (c) 1999, 2000, 2001, 2002, 2003, 2006 by Red Hat, Inc. All rights reserved. # Copyright 2004 Nathanael Nerode # # THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED @@ -155,6 +155,17 @@ case "$THREADS" in *-*-hpux10*) AC_MSG_WARN("Only HP-UX 11 POSIX threads are supported.") ;; + *-*-kfreebsd*-gnu) + AC_DEFINE(GC_FREEBSD_THREADS) + INCLUDES="$INCLUDES -pthread" + THREADDLLIBS=-pthread + AC_DEFINE(_REENTRANT) + if test "${enable_parallel_mark}" = yes; then + AC_DEFINE(PARALLEL_MARK) + fi + AC_DEFINE(THREAD_LOCAL_ALLOC) + AC_DEFINE(USE_COMPILER_TLS, 1,[use tls for boehm]) + ;; *-*-freebsd*) AC_MSG_WARN("FreeBSD does not yet fully support threads with Boehm GC.") AC_DEFINE(GC_FREEBSD_THREADS,1,[support FreeBSD threads]) @@ -232,6 +243,54 @@ case "$host" in esac AM_CONDITIONAL(POWERPC_DARWIN,test x$powerpc_darwin = xtrue) +# Darwin needs a few extra special tests to deal with variation in the +# system headers. +case "$host" in + powerpc*-*-darwin*) + AC_CHECK_MEMBER(ppc_thread_state_t.r0, + AC_DEFINE(HAS_PPC_THREAD_STATE_R0,1, + [ppc_thread_state_t has field r0]),, + [#include ]) + AC_CHECK_MEMBER(ppc_thread_state_t.__r0, + AC_DEFINE(HAS_PPC_THREAD_STATE___R0,1,dnl + [ppc_thread_state_t has field __r0]),, + [#include ]) + AC_CHECK_MEMBER(ppc_thread_state64_t.r0, + AC_DEFINE(HAS_PPC_THREAD_STATE64_R0,1,dnl + [ppc_thread_state64_t has field r0]),, + [#include ]) + AC_CHECK_MEMBER(ppc_thread_state64_t.__r0, + AC_DEFINE(HAS_PPC_THREAD_STATE64___R0,1,dnl + [ppc_thread_state64_t has field __r0]),, + [#include ]) + ;; + i?86*-*-darwin*) + AC_CHECK_MEMBER(x86_thread_state32_t.eax, + AC_DEFINE(HAS_X86_THREAD_STATE32_EAX,1,dnl + [x86_thread_state32_t has field eax]),, + [#include + #include ]) + AC_CHECK_MEMBER(x86_thread_state32_t.__eax, + AC_DEFINE(HAS_X86_THREAD_STATE32___EAX,1,dnl + [x86_thread_state32_t has field __eax]),, + [#include + #include ]) + ;; + x86_64-*-darwin*) + AC_CHECK_MEMBER(x86_thread_state64_t.rax, + AC_DEFINE(HAS_X86_THREAD_STATE64_RAX,1,dnl + [x86_thread_state64_t has field rax]),, + [#include + #include ]) + AC_CHECK_MEMBER(x86_thread_state64_t.__rax, + AC_DEFINE(HAS_X86_THREAD_STATE64___RAX,1,dnl + [x86_thread_state64_t has field __rax]),, + [#include + #include ]) + ;; + *) ;; +esac + # We never want libdl on darwin. It is a fake libdl that just ends up making # dyld calls anyway case "$host" in @@ -296,6 +355,13 @@ case "$host" in ;; esac +# Checks for pthreads functions +# +oldLIBS="$LIBS" +LIBS="$LIBS $THREADLIBS" +AC_CHECK_FUNCS([pthread_getattr_np]) +LIBS="$oldLIBS" + # Configuration of machine-dependent code # # We don't set NO_EXECUTE_PERMISSION by default because gcj (and @@ -455,25 +521,6 @@ if test "${gc_use_mmap}" = "yes"; then AC_DEFINE(USE_MMAP, 1, [use MMAP instead of sbrk to get new memory]) fi -symver= -case "$target" in - *-*-linux* ) - cat > conftest.c < -void *tf (void *arg) { (void) arg; return NULL; } -int main (void) { pthread_t th; pthread_create (&th, NULL, tf, NULL); return 0; } -EOF - if $CC $CFLAGS -pthread -o conftest conftest.c > /dev/null 2>&1; then - symver=`readelf -s conftest 2> /dev/null | sed -n '/UND pthread_create@/{s/^.*@//;s/ .*$//;p;q}'` - fi - rm -f conftest conftest.c - ;; -esac -if test -n "$symver"; then - AC_DEFINE_UNQUOTED(GC_PTHREAD_SYM_VERSION, "$symver", [symbol version of pthread_create]) -fi - - if test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then toolexecdir='$(exec_prefix)/$(target_noncanonical)'