| dnl === configure.ac --------------------------------------------------------=== |
| dnl SECTION 1: Initialization & Setup |
| dnl SECTION 2: Architecture, target, and host checks |
| dnl SECTION 3: Command line arguments for the configure script. |
| dnl SECTION 4: Check for programs we need and that they are the right version |
| dnl SECTION 5: Check for libraries |
| dnl SECTION 6: Check for header files |
| dnl SECTION 7: Check for types and structures |
| dnl SECTION 8: Check for specific functions needed |
| dnl SECTION 9: Additional checks, variables, etc. |
| dnl SECTION 10: Specify the output files and generate it |
| dnl |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 1: Initialization & Setup |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| dnl Initialize autoconf and define the package name, version number and |
| dnl email address for reporting bugs. |
| AC_INIT([vmkit],[0.1],[gael.thomas@lip6.fr]) |
| |
| dnl Provide a copyright substitution and ensure the copyright notice is included |
| dnl in the output of --version option of the generated configure script. |
| AC_COPYRIGHT([Copyright (c) 2013 Purdue Univeristy/Université Pierre et Marie Curie.]) |
| |
| dnl Indicate that we require autoconf 2.59 or later. Ths is needed because we |
| dnl use some autoconf macros only available in 2.59. |
| AC_PREREQ(2.59) |
| |
| dnl Verify that the source directory is valid. This makes sure that we are |
| dnl configuring reactor and not some other package (it validates --srcdir argument) |
| AC_CONFIG_SRCDIR([include/j3/j3config.h.in]) |
| |
| dnl Place all of the extra autoconf files into the config subdirectory. Tell |
| dnl various tools where the m4 autoconf macros are. |
| AC_CONFIG_AUX_DIR([autoconf]) |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 2: Architecture, target, and host checks |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| AC_CANONICAL_TARGET |
| |
| dnl Determine the platform type and cache its value. This helps us configure |
| dnl the System library to the correct build platform. |
| dnl Make sure we aren't attempting to configure for an unknown system |
| AC_CACHE_CHECK([type of operating system we're going to host on], |
| [vmkit_cv_os_type], |
| [case $host in |
| *-*-aix*) |
| AC_MSG_ERROR([Good luck porting vmkit to your host!]) ;; |
| *-*-irix*) |
| AC_MSG_ERROR([Good luck porting vmkit to your host!]) ;; |
| *-*-cygwin*) |
| AC_MSG_ERROR([Good luck porting vmkit to your host!]) ;; |
| *-*-darwin*) |
| OS="darwin" |
| SHLIBEXT=".dylib" |
| SHALL="-Wl,-all_load -Wl,-compatibility_version,1 -Wl,-current_version,1" |
| SHNOALL="" |
| EXEEXT="" ;; |
| *-*-freebsd*) |
| AC_MSG_ERROR([Good luck porting vmkit to your host!]) ;; |
| *-*-openbsd*) |
| AC_MSG_ERROR([Good luck porting vmkit to your host!]) ;; |
| *-*-netbsd*) |
| AC_MSG_ERROR([Good luck porting vmkit to your host!]) ;; |
| *-*-hpux*) |
| AC_MSG_ERROR([Good luck porting vmkit to your host!]) ;; |
| *-*-interix*) |
| AC_MSG_ERROR([Good luck porting vmkit to your host!]) ;; |
| *-*-linux*) |
| OS="linux" |
| SHLIBEXT=".so" |
| SHALL="-Wl,--whole-archive" |
| SHNOALL="-Wl,--no-whole-archive" |
| EXEEXT="" ;; |
| *-*-solaris*) |
| AC_MSG_ERROR([Good luck porting vmkit to your host!]) ;; |
| *-*-win32*) |
| AC_MSG_ERROR([Good luck porting vmkit to your host!]) ;; |
| *-*-mingw*) |
| AC_MSG_ERROR([Good luck porting vmkit to your host!]) ;; |
| *) |
| AC_MSG_ERROR([Good luck porting vmkit to your host!]) ;; |
| esac]) |
| |
| AC_SUBST([OS]) |
| AC_SUBST([SHLIBEXT]) |
| AC_SUBST([SHALL]) |
| AC_SUBST([SHNOALL]) |
| AC_SUBST([EXEEXT]) |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 3: Command line arguments for the configure script. |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| |
| dnl ************************************************************************** |
| dnl optimization and debug |
| dnl ************************************************************************** |
| AC_ARG_ENABLE(optimized, |
| AS_HELP_STRING([--enable-optimized], |
| [Build with all optimization flag enable (default is yes)]),, |
| enable_optimized=yes) |
| case "$enable_optimized" in |
| yes) AC_SUBST(OPTIMIZED,[1]) ;; |
| no) AC_SUBST(OPTIMIZED,[0]) ;; |
| *) AC_MSG_ERROR([Invalid setting for --enable-optimized. Use "yes" or "no"]) ;; |
| esac |
| |
| AC_ARG_ENABLE(debug, |
| AS_HELP_STRING([--enable-debug], |
| [Build with debug flags (default is no)]),, |
| enable_debug=no) |
| case "$enable_debug" in |
| yes) AC_SUBST(DEBUG,[1]) ;; |
| no) AC_SUBST(DEBUG,[0]) ;; |
| *) AC_MSG_ERROR([Invalid setting for --enable-debug. Use "yes" or "no"]) ;; |
| esac |
| |
| AC_ARG_ENABLE(assert, |
| AS_HELP_STRING([--enable-assert], |
| [Build with assert flags (default is yes)]),, |
| enable_assert=yes) |
| |
| case "$enable_assert" in |
| yes) AC_SUBST(ASSERT,[1]) ;; |
| no) AC_SUBST(ASSERT,[0]) ;; |
| *) AC_MSG_ERROR([Invalid setting for --enable-assert. Use "yes" or "no"]) ;; |
| esac |
| |
| if test "$enable_optimized" = "yes"; then |
| BUILD_NAME=Release |
| if test "$enable_debug" = "yes"; then |
| BUILD_NAME="$BUILD_NAME"+Debug |
| fi |
| else |
| if test "$enable_debug" = "yes"; then |
| BUILD_NAME=Debug |
| else |
| BUILD_NAME=Unoptimized |
| fi |
| fi |
| |
| if test "$enable_assert" = "yes"; then |
| BUILD_NAME="$BUILD_NAME"+Asserts |
| fi |
| |
| AC_SUBST([BUILD_NAME], ["$BUILD_NAME"]) |
| |
| dnl ************************************************************************** |
| dnl llvm |
| dnl ************************************************************************** |
| AC_ARG_WITH(llvm-config-path, |
| [AS_HELP_STRING(--with-llvm-config-path=path, |
| [llvm-config path (use default path)])], |
| [[LLVM_CONFIG=$with_llvm_config_path]], |
| [[LLVM_CONFIG="llvm-config"]] |
| ) |
| |
| if test ! -x "$LLVM_CONFIG"; then |
| AC_MSG_ERROR([Cannot find $LLVM_CONFIG (or not executable)]) |
| fi |
| |
| AC_ARG_WITH(llvm-runtime-config-path, |
| [AS_HELP_STRING(--with-llvm-runtime-config-path=path, |
| [llvm-runtime-config path (use llvm-config-path)])], |
| [[LLVM_RUNTIME_CONFIG=$with_llvm_runtime_config_path]], |
| [[LLVM_RUNTIME_CONFIG="$LLVM_CONFIG"]] |
| ) |
| |
| if test ! -x "$LLVM_RUNTIME_CONFIG"; then |
| AC_MSG_ERROR([Cannot find $LLVM_RUNTIME_CONFIG (or not executable)]) |
| fi |
| |
| LLVM_PATH="`$LLVM_CONFIG --bindir`" |
| |
| llvm_cfg=`$LLVM_RUNTIME_CONFIG --cxxflags | sed -e 's/-O3//'` |
| |
| if ! test -z "`echo $llvm_cfg | grep -- -fno-exceptions`"; then |
| AC_MSG_ERROR([You have to compile LLVM with exception enabled, please compile it with 'make REQUIRES_EH=1']) |
| fi |
| |
| AC_SUBST(LLVM_CXXFLAGS, [$llvm_cfg" "-I`$LLVM_RUNTIME_CONFIG --src-root`/include]) |
| AC_SUBST(LLVM_LIBS, [`$LLVM_RUNTIME_CONFIG --libs | tr '\n' ' '`]) |
| AC_SUBST(LLVM_LDFLAGS, [`$LLVM_RUNTIME_CONFIG --ldflags`]) |
| |
| dnl ************************************************************************** |
| dnl clang |
| dnl ************************************************************************** |
| AC_ARG_WITH(clang-path, |
| [AS_HELP_STRING(--with-clang-path=path, |
| [clang path (use llvm-config --bindir and then default path)])], |
| [[CLANG_PATH=$with_clang_path]] |
| ) |
| |
| if test -z "$CLANG_PATH" -a ! -z "$LLVM_CONFIG"; then |
| CLANG_PATH="`$LLVM_CONFIG --bindir`" |
| fi |
| |
| dnl ************************************************************************** |
| dnl OpenJDK |
| dnl ************************************************************************** |
| |
| AC_ARG_WITH(jdkhome, |
| [AS_HELP_STRING(--with-jdkhome, |
| [JRE home (default is $JAVA_HOME)])], |
| [[jdkhome=$with_jdkhome]], |
| [[jdkhome=""]] |
| ) |
| |
| if test -z "$jdkhome"; then |
| if test -z "$JAVA_HOME"; then |
| jdkhome=/usr/lib/java |
| else |
| jdkhome=$JAVA_HOME |
| fi |
| fi |
| |
| AC_SUBST([jdkhome]) |
| |
| dnl ************************************************************************** |
| dnl MMTk |
| dnl ************************************************************************** |
| |
| AC_ARG_WITH(mmtkpath, |
| [AS_HELP_STRING(--with-mmtkpath=path, |
| [MMTk path (default ../jikesrvm/target)])], |
| [[mmtkpath=$with_mmtkpath]], |
| [[mmtkpath="`pwd`/../jikesrvm/target"]] |
| ) |
| |
| if test ! -f "$mmtkpath/mmtk/mmtk.jar"; then |
| AC_MSG_ERROR([Cannot find MMTk in '$mmtkpath']) |
| fi |
| |
| AC_SUBST([mmtkpath]) |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 4: Check for programs we need and that they are the right version |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| AC_PROG_CPP |
| AC_PROG_INSTALL |
| |
| dnl AC_SUBST(SHLIBEXT,$libltdl_cv_shlibext) |
| |
| AC_DEFUN([AX_PATH_PROG_FAIL_OR_SUBST], [ |
| AC_PATH_PROG([$1], [$2], [no], [$3:$PATH]) |
| if test x"${$1}" == x"no"; then |
| AC_MSG_ERROR([Unable to find $2, please install it]) |
| fi |
| AC_SUBST([$1]) |
| ]) |
| |
| AX_PATH_PROG_FAIL_OR_SUBST([LLC], llc, $LLVM_PATH) |
| AX_PATH_PROG_FAIL_OR_SUBST([LLOPT], opt, $LLVM_PATH) |
| AX_PATH_PROG_FAIL_OR_SUBST([LLLINK], llvm-link, $LLVM_PATH) |
| AX_PATH_PROG_FAIL_OR_SUBST([LLNM], llvm-nm, $LLVM_PATH) |
| AX_PATH_PROG_FAIL_OR_SUBST([CLANG], clang, $CLANG_PATH) |
| AX_PATH_PROG_FAIL_OR_SUBST([CLANGXX], clang++, $CLANG_PATH) |
| AX_PATH_PROG_FAIL_OR_SUBST([GAWK], gawk, "") |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 5: Check for libraries |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| |
| dnl have to check: zlib, ncurses |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 6: Check for header files |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 7: Check for types and structures |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 8: Check for specific functions needed |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 9: Additional checks, variables, etc. |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| |
| dnl===-----------------------------------------------------------------------=== |
| dnl=== |
| dnl=== SECTION 10: Specify the output files and generate it |
| dnl=== |
| dnl===-----------------------------------------------------------------------=== |
| |
| dnl Configure header files |
| AC_CONFIG_FILES([Makefile.config include/vmkit/config.h include/j3/j3config.h]) |
| |
| AC_SUBST([ac_config_files]) |
| AC_SUBST([ac_config_headers]) |
| |
| AC_OUTPUT |