+dnl **************
+dnl *** NaCl ***
+dnl **************
+
+AC_ARG_ENABLE(nacl_codegen, [ --enable-nacl-codegen Enable Native Client code generation], enable_nacl_codegen=$enableval, enable_nacl_codegen=no)
+AC_ARG_ENABLE(nacl_gc, [ --enable-nacl-gc Enable Native Client garbage collection], enable_nacl_gc=$enableval, enable_nacl_gc=no)
+
+AM_CONDITIONAL(NACL_CODEGEN, test x$enable_nacl_codegen != xno)
+if test "x$enable_nacl_codegen" = "xyes"; then
+ MONO_NACL_ALIGN_MASK_OFF=1
+ CPPFLAGS="$CPPFLAGS -D__native_client_codegen__"
+ AC_DEFINE(TARGET_NACL, 1, [...])
+else
+ MONO_NACL_ALIGN_MASK_OFF=0
+ CPPFLAGS="$CPPFLAGS -D__default_codegen__"
+fi
+if test "x$enable_nacl_gc" = "xyes"; then
+ CPPFLAGS="$CPPFLAGS -finstrument-for-thread-suspension -D__native_client_gc__"
+fi
+AC_SUBST(MONO_NACL_ALIGN_MASK_OFF)
+
+dnl **************
+dnl *** LLVM ***
+dnl **************
+
+AC_ARG_ENABLE(llvm,[ --enable-llvm Enable the LLVM back-end], enable_llvm=$enableval, enable_llvm=no)
+AC_ARG_ENABLE(loadedllvm,[ --enable-loadedllvm Load the LLVM back-end dynamically], enable_llvm=$enableval && enable_loadedllvm=$enableval, enable_loadedllvm=no)
+
+if test "x$enable_llvm" = "xyes"; then
+ AC_PATH_PROG(LLVM_CONFIG, llvm-config, no)
+ if test "x$LLVM_CONFIG" = "xno"; then
+ AC_MSG_ERROR([llvm-config not found.])
+ fi
+
+ # The output of --cflags seems to include optimizations flags too
+ LLVM_CFLAGS=`$LLVM_CONFIG --cflags | sed -e 's/-O2//g' | sed -e 's/-O0//g' | sed -e 's/-fomit-frame-pointer//g' | sed -e 's/-fPIC//g'`
+ # LLVM is compiled with -fno-rtti, so we need this too, since our classes inherit
+ # from LLVM classes.
+ LLVM_CXXFLAGS="`$LLVM_CONFIG --cxxflags` -fno-rtti"
+ LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
+ LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit x86codegen`
+ LLVM_LIBS="$LLVM_LDFLAGS $LLVM_LIBS -lstdc++"
+
+ # Should be something like '2.6' or '2.7svn'
+ llvm_version=`$LLVM_CONFIG --version`
+ major_version=`echo $llvm_version | cut -c 1`
+ minor_version=`echo $llvm_version | cut -c 3`
+ if echo $llvm_version | grep -q 'mono'; then
+ AC_DEFINE(LLVM_MONO_BRANCH, 1, [Whenever we are using the mono branch of LLVM])
+ LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_MONO_BRANCH"
+ fi
+
+ AC_DEFINE_UNQUOTED(LLVM_MAJOR_VERSION, $major_version, [Major version of LLVM libraries])
+ AC_DEFINE_UNQUOTED(LLVM_MINOR_VERSION, $minor_version, [Minor version of LLVM libraries])
+ AC_DEFINE_UNQUOTED(LLVM_VERSION, "$llvm_version", [Full version of LLVM libraties])
+
+ # Have to pass these on the command line since mini-llvm-cpp.h already includes
+ # llvm's config.h
+ LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_MAJOR_VERSION=$major_version -DLLVM_MINOR_VERSION=$minor_version"
+
+ AC_SUBST(LLVM_CFLAGS)
+ AC_SUBST(LLVM_CXXFLAGS)
+ AC_SUBST(LLVM_LIBS)
+ AC_SUBST(LLVM_LDFLAGS)
+ AC_DEFINE(ENABLE_LLVM, 1, [Enable the LLVM back end])
+fi
+
+AM_CONDITIONAL(ENABLE_LLVM, [test x$enable_llvm = xyes])
+if test "x$enable_loadedllvm" = "xyes"; then
+ AC_DEFINE(MONO_LLVM_LOADED, 1, [The LLVM back end is dynamically loaded])
+fi
+AM_CONDITIONAL(LOADED_LLVM, [test x$enable_loadedllvm = xyes])
+