$OpenBSD$
--- configure.in.orig	Thu Feb 16 23:07:50 2006
+++ configure.in	Sat Sep  2 18:38:46 2006
@@ -24,7 +24,7 @@ AC_CANONICAL_TARGET 
 AC_PREREQ(2.53)
 AC_REVISION($Revision: 1.2 $)
 GC_SET_VERSION
-AM_INIT_AUTOMAKE
+AM_INIT_AUTOMAKE(gc,6.7)
 
 AC_SUBST(PACKAGE)
 AC_SUBST(GC_VERSION)
@@ -32,10 +32,13 @@ AC_SUBST(GC_VERSION)
 AC_PROG_CC
 AC_PROG_CXX
 
+AC_C_INLINE
+
 AM_PROG_AS
 AC_CHECK_TOOL(AR, ar)
 AC_CHECK_TOOL(RANLIB, ranlib, :)  # :)
 
+AC_PROG_LIBTOOL
 AC_PROG_INSTALL
 
 AM_MAINTAINER_MODE
@@ -79,66 +82,88 @@ case "$THREADS" in
     THREADDLLIBS=-lpthread
     case "$host" in
      x86-*-linux* | ia64-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* | alpha-*-linux*)
-	AC_DEFINE(GC_LINUX_THREADS)
-	AC_DEFINE(_REENTRANT)
+	AC_DEFINE([GC_LINUX_THREADS], 1, [gc linux threads])
+	AC_DEFINE([_REENTRANT], 1, [reentrant])
         if test "${enable_parallel_mark}" = yes; then
-	  AC_DEFINE(PARALLEL_MARK)
+	  AC_DEFINE([PARALLEL_MARK], 1, [parallel mark])
 	fi
-	AC_DEFINE(THREAD_LOCAL_ALLOC)
+	AC_DEFINE([THREAD_LOCAL_ALLOC], 1, [thread local alloc])
 	;;
      *-*-linux*)
-	AC_DEFINE(GC_LINUX_THREADS)
-	AC_DEFINE(_REENTRANT)
+	AC_DEFINE([GC_LINUX_THREADS], 1, [gc linux threads])
+	AC_DEFINE([_REENTRANT], 1, [reentrant])
 	;;
      *-*-aix*)
-	AC_DEFINE(GC_AIX_THREADS)
-	AC_DEFINE(_REENTRANT)
+	AC_DEFINE([GC_AIX_THREADS], 1, [gc aix threads])
+	AC_DEFINE([_REENTRANT], 1, [reentrant])
 	;;
      *-*-hpux*)
 	AC_MSG_WARN("Only HP/UX 11 threads are supported.")
-	AC_DEFINE(GC_HPUX_THREADS)
-	AC_DEFINE(_POSIX_C_SOURCE,199506L)
+	AC_DEFINE([GC_HPUX_THREADS], 1, [gc hpux threads])
+	AC_DEFINE([_POSIX_C_SOURCE], 199506L, [posix c source])
 	if test "${enable_parallel_mark}" = yes; then
-	  AC_DEFINE(PARALLEL_MARK)
+	  AC_DEFINE([PARALLEL_MARK], 1, [parallel mark])
 	fi
-	AC_DEFINE(THREAD_LOCAL_ALLOC)
+	AC_DEFINE([THREAD_LOCAL_ALLOC], 1, [thread local alloc])
 	THREADDLLIBS="-lpthread -lrt"
 	;;
      *-*-freebsd*)
 	AC_MSG_WARN("FreeBSD does not yet fully support threads with Boehm GC.")
-	AC_DEFINE(GC_FREEBSD_THREADS)
+	AC_DEFINE([GC_FREEBSD_THREADS], 1, [gc freebsd threads])
 	INCLUDES="$INCLUDES -pthread"
 	THREADDLLIBS=-pthread
       	;;
+     *-*-openbsd*)
+	AC_DEFINE([GC_OPENBSD_PTHREADS], 1, [gc openbsd threads])
+	dnl AC_DEFINE([THREAD_LOCAL_ALLOC], 1, [thread local alloc])
+	dnl pthreads_support.c uses the sources libpthread and libc for accessing pthread_t
+	srclib=/usr/src/lib
+	libpthread=${srclib}/libpthread
+	libc=${srclib}/libc
+	if test ! -d "${libpthread}/uthread"; then
+		AC_MSG_ERROR("OpenBSD pthreads source directory'${libpthread}/uthread' not found.")
+	fi
+	if test ! -d "${libpthread}/arch/${host_cpu}"; then
+		AC_MSG_ERROR("OpenBSD pthreads source directory'${libpthread}/arch/${host_cpu}' not found.")
+	fi
+	if test ! -d "${libc}"; then
+		AC_MSG_ERROR("OpenBSD libc source directory '${libc}/include' not found.")
+	fi
+	INCLUDES="$INCLUDES -pthread"
+	INCLUDES="$INCLUDES -I${libpthread}/uthread -I${libpthread}/arch/${host_cpu}"
+	INCLUDES="$INCLUDES -I${libpthread}/arch/${host_cpu}"
+	INCLUDES="$INCLUDES -I${srclib}/libc/include"
+	THREADDLLIBS=-pthread
+      	;;
      *-*-netbsd*)
 	AC_MSG_WARN("Only on NetBSD 2.0 or later.")
-	AC_DEFINE(GC_NETBSD_THREADS)
-	AC_DEFINE(_REENTRANT)
-	AC_DEFINE(_PTHREADS)
+	AC_DEFINE([GC_NETBSD_THREADS], 1, [GC NetBSD threads])
+	AC_DEFINE([_REENTRANT], 1, [reentrant])
+	AC_DEFINE([_PTHREADS], 1, [pthreads])
 	THREADDLLIBS="-lpthread -lrt"
 	;;
      *-*-solaris*)
-	AC_DEFINE(GC_SOLARIS_THREADS)
-	AC_DEFINE(GC_SOLARIS_PTHREADS)
+	AC_DEFINE([GC_SOLARIS_THREADS], 1, [gc solaris threads])
+	AC_DEFINE([GC_SOLARIS_PTHREADS], 1, [gc solaris pthreads])
 	;;
      *-*-irix*)
-	AC_DEFINE(GC_IRIX_THREADS)
+	AC_DEFINE([GC_IRIX_THREADS], 1, [gc irix threads])
 	;;
      *-*-cygwin*)
-	AC_DEFINE(GC_WIN32_THREADS)
+	AC_DEFINE([GC_WIN32_THREADS], 1, [gc win32 threads])
 	;;
      *-*-darwin*)
-	AC_DEFINE(GC_DARWIN_THREADS)
-	AC_DEFINE(THREAD_LOCAL_ALLOC)
+	AC_DEFINE([GC_DARWIN_THREADS], 1, [gc darwin threads])
+	AC_DEFINE([THREAD_LOCAL_ALLOC], 1, [thread local alloc])
 	if test "${enable_parallel_mark}" = yes; then
-	  AC_DEFINE(PARALLEL_MARK)
+	  AC_DEFINE([PARALLEL_MARK], 1, [parallel mark])
 	fi
 	;;
      *-*-osf*)
-	AC_DEFINE(GC_OSF1_THREADS)
+	AC_DEFINE([GC_OSF1_THREADS], 1, [gc osf1 threads])
         if test "${enable_parallel_mark}" = yes; then
-	  AC_DEFINE(PARALLEL_MARK)
-	  AC_DEFINE(THREAD_LOCAL_ALLOC)
+	  AC_DEFINE([PARALLEL_MARK], 1, [parallel mark])
+	  AC_DEFINE([THREAD_LOCAL_ALLOC], 1, [thread local alloc])
 	  # May want to enable it in other cases, too.
 	  # Measurements havent yet been done.
 	fi
@@ -151,9 +176,9 @@ case "$THREADS" in
     esac
     ;;
  win32)
-    AC_DEFINE(GC_WIN32_THREADS)
+    AC_DEFINE([GC_WIN32_THREADS], 1, [gc win32 threads])
     dnl Wine getenv may not return NULL for missing entry
-    AC_DEFINE(NO_GETENV)
+    AC_DEFINE([NO_GETENV], 1, [no getenv])
     ;;
  dgux386)
     THREADS=dgux386
@@ -161,19 +186,19 @@ case "$THREADS" in
     # Use pthread GCC  switch
     THREADDLLIBS=-pthread
     if test "${enable_parallel_mark}" = yes; then
-        AC_DEFINE(PARALLEL_MARK)
+        AC_DEFINE([PARALLEL_MARK], 1, [parallel mark])
     fi
-    AC_DEFINE(THREAD_LOCAL_ALLOC)
-    AC_DEFINE(GC_DGUX386_THREADS)
-    AC_DEFINE(DGUX_THREADS)
+    AC_DEFINE([THREAD_LOCAL_ALLOC], 1, [thread local alloc])
+    AC_DEFINE([GC_DGUX386_THREADS], 1, [gc dgux386 threads])
+    AC_DEFINE([DGUX_THREADS], 1, [dgux threads])
     # Enable _POSIX4A_DRAFT10_SOURCE with flag -pthread
     INCLUDES="-pthread $INCLUDES"
     ;;
  aix)
     THREADS=posix
     THREADDLLIBS=-lpthread
-    AC_DEFINE(GC_AIX_THREADS)
-    AC_DEFINE(_REENTRANT)
+    AC_DEFINE([GC_AIX_THREADS], 1, [gc aix threads])
+    AC_DEFINE([_REENTRANT], 1, [reentrant])
     ;;
  decosf1 | irix | mach | os2 | solaris | dce | vxworks)
     AC_MSG_ERROR(thread package $THREADS not yet supported)
@@ -187,6 +212,8 @@ AC_SUBST(THREADDLLIBS)
 case "$host" in 
    powerpc-*-darwin*)
       powerpc_darwin=true
+      dnl CACAO: disable this for now
+      AC_DEFINE([DARWIN_DONT_PARSE_STACK], 1, [don't use FindTopOfStack])
       ;;
 esac
 AM_CONDITIONAL(POWERPC_DARWIN,test x$powerpc_darwin = xtrue)
@@ -237,7 +264,7 @@ case "$TARGET_ECOS" in
    no)
       ;;
    *)
-      AC_DEFINE(ECOS)
+      AC_DEFINE([ECOS], 1, [ecos])
       CXXINCLUDES="-I${TARGET_ECOS}/include"
       addobjs="$addobjs ecos.lo"
       ;;
@@ -285,12 +312,12 @@ case "$host" in
     machdep="alpha_mach_dep.lo"
     ;;
  i?86-*-solaris2.[[89]] | i?86-*-solaris2.1?)
-    AC_DEFINE(SOLARIS25_PROC_VDB_BUG_FIXED)
+    AC_DEFINE([SOLARIS25_PROC_VDB_BUG_FIXED], 1, [solaris 2.5 proc vdb bug fixed])
     ;;
  mipstx39-*-elf*)
     machdep="mips_ultrix_mach_dep.lo"
-    AC_DEFINE(STACKBASE, __stackbase)
-    AC_DEFINE(DATASTART_IS_ETEXT)
+    AC_DEFINE([STACKBASE], __stackbase, [stackbase])
+    AC_DEFINE([DATASTART_IS_ETEXT], 1, [datastart is etext])
     ;;
  mips-dec-ultrix*)
     machdep="mips_ultrix_mach-dep.lo"
@@ -301,14 +328,14 @@ case "$host" in
     ;; 
  mips-*-*)
     machdep="mips_sgi_mach_dep.lo"
-    AC_DEFINE(NO_EXECUTE_PERMISSION)
+    AC_DEFINE([NO_EXECUTE_PERMISSION], 1, [no execute permission])
     ;;
  sparc-*-netbsd*)
     machdep="sparc_netbsd_mach_dep.lo"
     ;;
  sparc-sun-solaris2.3)
     machdep="sparc_mach_dep.lo"
-    AC_DEFINE(SUNOS53_SHARED_LIB)
+    AC_DEFINE([SUNOS53_SHARED_LIB], 1, [sun os 5.3 shared lib])
     ;;
  sparc*-sun-solaris2.*)
     machdep="sparc_mach_dep.lo"
@@ -399,24 +426,24 @@ AC_SUBST(MY_CFLAGS)
 
 dnl Include defines that have become de facto standard.
 dnl ALL_INTERIOR_POINTERS can be overridden in startup code.
-AC_DEFINE(SILENT)
-AC_DEFINE(NO_SIGNALS)
-AC_DEFINE(NO_EXECUTE_PERMISSION)
-AC_DEFINE(ALL_INTERIOR_POINTERS)
+AC_DEFINE([SILENT], 1, [silent])
+AC_DEFINE([NO_SIGNALS], 1, [no signals])
+AC_DEFINE([NO_EXECUTE_PERMISSION], 1, [no exceute permission])
+AC_DEFINE([ALL_INTERIOR_POINTERS], 1, [all interior pointers])
 
 dnl By default, make the library as general as possible.
-AC_DEFINE(JAVA_FINALIZATION)
-AC_DEFINE(GC_GCJ_SUPPORT)
-AC_DEFINE(ATOMIC_UNCOLLECTABLE)
+AC_DEFINE([JAVA_FINALIZATION], 1, [java finalization])
+AC_DEFINE([GC_GCJ_SUPPORT], 1, [gc gcj support])
+AC_DEFINE([ATOMIC_UNCOLLECTABLE], 1, [atomic uncollectable])
 
 dnl This is something of a hack.  When cross-compiling we turn off
 dnl some functionality.  We also enable the "small" configuration.
 dnl These is only correct when targetting an embedded system.  FIXME.
 if test -n "${with_cross_host}"; then
-   AC_DEFINE(NO_SIGSET)
-   AC_DEFINE(NO_CLOCK)
-   AC_DEFINE(SMALL_CONFIG)
-   AC_DEFINE(NO_DEBUGGING)
+   AC_DEFINE([NO_SIGSET], 1, [no sigset])
+   AC_DEFINE([NO_CLOCK], 1, [no clock])
+   AC_DEFINE([SMALL_CONFIG], 1, [small config])
+   AC_DEFINE([NO_DEBUGGING], 1, [no debugging])
 fi
 
 UNWINDLIBS=
@@ -424,25 +451,25 @@ AC_ARG_ENABLE(full-debug,
 [  --enable-full-debug	include full support for pointer backtracing etc.],
 [ if test "$enable_full_debug" = "yes"; then
     AC_MSG_WARN("Should define GC_DEBUG and use debug alloc. in clients.")
-    AC_DEFINE(KEEP_BACK_PTRS)
-    AC_DEFINE(DBG_HDRS_ALL)
+    AC_DEFINE([KEEP_BACK_PTRS], 1, [keep back ptrs])
+    AC_DEFINE([DBG_HDRS_ALL], 1, [dbg hdrs all])
     case $host in
       ia64-*-linux* )
-	AC_DEFINE(MAKE_BACK_GRAPH)
-	AC_DEFINE(SAVE_CALL_COUNT, 8)
+	AC_DEFINE([MAKE_BACK_GRAPH], 1, [make back graph])
+	AC_DEFINE([SAVE_CALL_COUNT], 8, [save call count])
         AC_CHECK_LIB(unwind, backtrace, [
-	  AC_DEFINE(GC_HAVE_BUILTIN_BACKTRACE)
+	  AC_DEFINE([GC_HAVE_BUILTIN_BACKTRACE], 1, [have builtin backtrace])
 	  UNWINDLIBS=-lunwind
 	  AC_MSG_WARN("Client code may need to link against libunwind.")
 	])
       ;;
       x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
-	AC_DEFINE(MAKE_BACK_GRAPH)
+	AC_DEFINE([MAKE_BACK_GRAPH], 1, [make back graph])
 	AC_MSG_WARN("Client must not use -fomit-frame-pointer.")
-	AC_DEFINE(SAVE_CALL_COUNT, 8)
+	AC_DEFINE([SAVE_CALL_COUNT], 8, [save call count])
       ;;
       i[3456]86-*-dgux*)
-	AC_DEFINE(MAKE_BACK_GRAPH)
+	AC_DEFINE([MAKE_BACK_GRAPH], 1, [make back graph])
       ;;
     esac ]
   fi)
@@ -454,18 +481,18 @@ AC_ARG_ENABLE(redirect-malloc,
 
 if test "${enable_redirect_malloc}" = yes; then
     if test "${enable_full_debug}" = yes; then
-	AC_DEFINE(REDIRECT_MALLOC, GC_debug_malloc_replacement)
-	AC_DEFINE(REDIRECT_REALLOC, GC_debug_realloc_replacement)
-	AC_DEFINE(REDIRECT_FREE, GC_debug_free)
+	AC_DEFINE([REDIRECT_MALLOC], GC_debug_malloc_replacement, [redirect malloc])
+	AC_DEFINE([REDIRECT_REALLOC], GC_debug_realloc_replacement, [redirect realloc])
+	AC_DEFINE([REDIRECT_FREE], GC_debug_free, [redirect free])
     else
-	AC_DEFINE(REDIRECT_MALLOC, GC_malloc)
+	AC_DEFINE([REDIRECT_MALLOC], GC_malloc, [redirect malloc])
     fi
 fi
 
 AC_ARG_ENABLE(gc-assertions,
 [  --enable-gc-assertions  collector-internal assertion checking])
 if test "${enable_gc_assertions}" = yes; then
-    AC_DEFINE(GC_ASSERTIONS)
+    AC_DEFINE([GC_ASSERTIONS], 1, [gc assertions])
 fi
 
 AM_CONDITIONAL(USE_LIBDIR, test -z "$with_cross_host")
