+dnl
+dnl libgc checks
+dnl
+
+gc_headers=no
+gc=included
+use_included_gc=no
+
+if test -d $srcdir/libgc ; then
+ gc_default=included
+else
+ gc_default=boehm
+fi
+
+#
+# These are the flags that need to be stored in the mono.pc file for
+# compiling code that will embed Mono
+#
+libmono_cflags=""
+libmono_ldflags=""
+AC_SUBST(libmono_cflags)
+AC_SUBST(libmono_ldflags)
+
+# Thread configuration inspired by sleepycat's db
+AC_MSG_CHECKING([host platform characteristics])
+libgc_threads=no
+case "$host" in
+ *-*-mingw*|*-*-cygwin*)
+ platform_win32=yes
+ AC_DEFINE(PLATFORM_WIN32)
+ CC="gcc -mno-cygwin"
+ HOST_CC="gcc"
+# latest libgc already defines GC_WIN32_THREADS
+# CPPFLAGS="$CPPFLAGS -DGC_WIN32_THREADS -DWIN32_THREADS"
+ CPPFLAGS="$CPPFLAGS -DWIN32_THREADS"
+ libdl=
+ libgc_threads=win32
+ gc_default=boehm
+ ;;
+ *-*-*netbsd*)
+ platform_win32=no
+ CPPFLAGS="$CPPFLAGS -D_REENTRANT"
+ libmono_cflags="-D_REENTRANT"
+ LDFLAGS="$LDFLAGS -pthread"
+ libmono_ldflags="-pthread"
+ AC_DEFINE(NEED_LINK_UNLINK)
+ libdl=
+ libgc_threads=pthreads
+ ;;
+ *-*-*freebsd*|*-*-*openbsd*)
+ platform_win32=no
+ CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE"
+ libmono_cflags="-D_THREAD_SAFE"
+ LDFLAGS="$LDFLAGS -pthread"
+ libmono_ldflags="-pthread"
+ AC_DEFINE(NEED_LINK_UNLINK)
+ AC_DEFINE(PTHREAD_POINTER_ID)
+ libdl=
+ libgc_threads=pthreads
+ ;;
+ *-*-linux*)
+ platform_win32=no
+ CPPFLAGS="$CPPFLAGS -DGC_LINUX_THREADS -DMONO_USE_EXC_TABLES -D_GNU_SOURCE -D_REENTRANT -fexceptions"
+ libmono_cflags="-DMONO_USE_EXC_TABLES -fexceptions -D_REENTRANT"
+ libmono_ldflags="-lpthread"
+ libdl="-ldl"
+ libgc_threads=pthreads
+ ;;
+ *-*-solaris*)
+ platform_win32=no
+ CPPFLAGS="$CPPFLAGS -DGC_SOLARIS_THREADS -DGC_SOLARIS_PTHREADS -D_REENTRANT"
+ AC_DEFINE(NEED_LINK_UNLINK)
+ libmono_cflags="-D_REENTRANT"
+ libgc_threads=solaris
+ ;;
+ *-*-darwin*)
+ platform_win32=no
+ CPPFLAGS="$CPPFLAGS -no-cpp-precomp -D_THREAD_SAFE"
+ libmono_cflags="-D_THREAD_SAFE"
+ LDFLAGS="$LDFLAGS -pthread"
+ libmono_ldflags="-pthread"
+ AC_DEFINE(NEED_LINK_UNLINK)
+ AC_DEFINE(PTHREAD_POINTER_ID)
+ libdl=
+ libgc_threads=no
+ gc_default=none
+ ;;
+ *)
+ AC_MSG_WARN([*** Please add $host to configure.in checks!])
+ platform_win32=no
+ libdl="-ldl"
+ ;;
+esac
+AC_MSG_RESULT(ok)
+AM_CONDITIONAL(PLATFORM_WIN32, test x$platform_win32 = xyes)
+