blob: 992e4b891a5358a916444b4f88afe913efdd5e03 [file] [log] [blame]
dnl Process this file with autoconf to produce a configure script
AC_INIT([vmkit],[0.0.1])
AC_PREREQ([2.59])
AC_CONFIG_SRCDIR([lib/Mvm/Main.cpp])
dnl **************************************************************************
dnl configure date, in version.cc.in
dnl **************************************************************************
configure_date=`date '+%Y-%m-%d %H:%M:%S'`
AC_SUBST([configure_date])
dnl **************************************************************************
dnl Initialize target_cpu, target_os etc ...
dnl **************************************************************************
AC_CANONICAL_TARGET
dnl **************************************************************************
dnl Add some vars
dnl **************************************************************************
AM_CONDITIONAL(ARCH_IS_PPC, [test x"$target_cpu" = xpowerpc])
AM_CONDITIONAL(ARCH_IS_I686, [test x"$target_cpu" = xi686])
case $host in
*linux*) is_linux=true;;
*) is_linux=false;;
esac
AM_CONDITIONAL(IS_LINUX, [test x$is_linux = xtrue])
dnl **************************************************************************
dnl Initialize automake with a package version
dnl **************************************************************************
AM_INIT_AUTOMAKE
dnl Use config.h instad of -D macros
AM_CONFIG_HEADER(config.h)
dnl **************************************************************************
dnl LLVM Installation Prefix
dnl **************************************************************************
AC_ARG_WITH(llvm,
[AS_HELP_STRING(--with-llvm=something,
[LLVM installation prefix (default is /usr/local/)])],
[[llvmprefix=$withval]],
[[ echo Using /usr/local/ as llvm installation prefix.
llvmprefix=/usr/local/
]]
)
LLVMDYLIB="`$llvmprefix/Release/bin/llvm-config --ldflags all` `$llvmprefix/Release/bin/llvm-config --libs all`"
AC_SUBST([llvmprefix])
dnl Force some compilation flags
CXXFLAGS="$CXXFLAGS -fsigned-char -felide-constructors -fno-keep-static-consts -D_REENTRANT -I$PWD/include -I$llvmprefix/include -D__STDC_LIMIT_MACROS -rdynamic"
CFLAGS="$CFLAGS -D_REENTRANT"
dnl **************************************************************************
dnl Checks for programs.
dnl **************************************************************************
AC_PROG_CXX
AM_PROG_CC_C_O
dnl **************************************************************************
dnl check for lex and yacc or bison
dnl **************************************************************************
AM_PROG_LEX
AC_PROG_YACC
dnl **************************************************************************
dnl check for as
dnl **************************************************************************
AM_PROG_AS
dnl **************************************************************************
dnl Checks for header files.
dnl **************************************************************************
AC_HEADER_STDC
dnl **************************************************************************
dnl Checks for header files.
dnl **************************************************************************
AC_HEADER_STDC
case $target_os in
*linux*)
dnl libiberty, libopcode and libbfd are part of binutils
AC_CHECK_HEADER([bfd.h], [], \
AC_MSG_ERROR([You need to install the binutils devel package (bfd.h).])
)
AC_CHECK_HEADER([dis-asm.h], [], \
AC_MSG_ERROR([You need to install the binutils devel package (dis-asm.h).])
)
;;
esac
AC_CHECK_HEADER([zlib.h], [], \
AC_MSG_ERROR([You need to install the zlib devel package (zlib.h).])
)
dnl **************************************************************************
dnl Checks for libraries
dnl **************************************************************************
case $target_os in
*darwin*)
DYLIB_EXTENSION="dylib"
rdynamic=""
;;
*linux*)
AC_CHECK_LIB(iberty, xexit, [], \
[AC_MSG_ERROR([You need to install the binutils package (iberty).])]
)
AC_CHECK_LIB(bfd, bfd_get_arch, [], \
[AC_MSG_ERROR([You need to install the binutils package (bfd).])],
-liberty
)
AC_CHECK_LIB(opcodes, disassembler, [], \
[AC_MSG_ERROR([You need to install the binutils package (opcodes).])],
-lbfd -liberty
)
rdynamic="-rdynamic"
DYLIB_EXTENSION="so"
AC_DEFINE([HAVE_DISASSEMBLER], [1], [Using libopcodes])
;;
*) AC_MSG_ERROR([$target_os target is not supported.]);;
esac
AC_CHECK_LIB(z, inflate, [], \
[AC_MSG_ERROR([You need to install the zlib package (z).])]
)
AC_SUBST([rdynamic])
AC_SUBST([LLVMDYLIB])
AC_SUBST([DYLIB_EXTENSION])
dnl **************************************************************************
dnl VVM thread type
dnl **************************************************************************
AC_ARG_WITH(thread,
[AS_HELP_STRING(--with-thread=something,
[Thread type ('common' or 'no')])],
[thread=$withval],[thread=common]
)
AS_IF([test "x$thread" != "xno"],
[AC_CHECK_HEADER([pthread.h],,
[AC_MSG_WARN(phtread include NOT found)])
AC_CHECK_LIB(pthread, pthread_create, [],
[AC_MSG_ERROR([pthread library not found])])
]
)
AM_CONDITIONAL([HAVE_PTHREAD], [test "x$thread" != "xno"])
if test "x$thread" = xcommon; then
AC_DEFINE([HAVE_PTHREAD], [1], [Using pthread library])
fi
GCTHREAD_LIBS="$PWD/lib/Mvm/CommonThread/libuvm_common_thread.a"
AC_SUBST([GCTHREAD_LIBS])
dnl **************************************************************************
dnl Checks for typedefs, structures, and compiler characteristics.
dnl **************************************************************************
AC_C_CONST
dnl **************************************************************************
dnl
dnl **************************************************************************
AC_LIBTOOL_DLOPEN
AM_PROG_LIBTOOL
dnl **************************************************************************
dnl VVM GC type
dnl **************************************************************************
AC_ARG_WITH(gc,
[AS_HELP_STRING(--with-gc=something,
[GC type ('single-mmap' 'multi-mmap' or 'boehm')])],
[[gc=$withval]],
[[ echo Using mmap2 as vvm gc type.
gc=single-mmap
]]
)
dnl TODO find the libgc.a
if test "x$gc" = "xboehm"; then
AC_CHECK_LIB(gccpp, GC_malloc, [], \
[AC_MSG_ERROR([You need to install the boehm-gc package (gccpp).])]
)
AC_CHECK_HEADER([gc/gc.h], [], \
AC_MSG_ERROR([You need to install the boehm-gc devel package (gc/gc.h).])
)
GC_LIBS="-lgccpp -gc $PWD/lib/Mvm/BoehmGC/libuvm_gc_boehm.a"
CFLAGS="$CFLAGS -I$PWD/lib/Mvm/BoehmGC -DGC_THREADS"
CXXFLAGS="$CXXFLAGS -I$PWD/lib/Mvm/BoehmGC -DGC_THREADS"
AC_DEFINE([USE_GC_BOEHM], [1], [Using the boehm gc])
case $target_os in
*linux*)
CFLAGS="-DGC_LINUX_THREADS"
CXXFLAGS="$CXXFLAGS -DGC_LINUX_THREADS"
;;
esac
else
if test "x$gc" = "xmulti-mmap"; then
CFLAGS="$CFLAGS -I$PWD/lib/Mvm/GCMmap2 -DWITH_TRACER -DMULTIPLE_GC"
CXXFLAGS="$CXXFLAGS -I$PWD/lib/Mvm/GCMmap2 -DWITH_TRACER -DMULTIPLE_GC"
fi
GC_LIBS="$PWD/lib/Mvm/GCMmap2/libuvm_gc_mmap2.a \
$PWD/lib/Mvm/Allocator/libuvm_alloc.a"
CFLAGS="$CFLAGS -I$PWD/lib/Mvm/GCMmap2 -DWITH_TRACER"
CXXFLAGS="$CXXFLAGS -I$PWD/lib/Mvm/GCMmap2 -DWITH_TRACER"
AC_DEFINE([USE_GC_MMAP2], [1], [Using the gcmmap2])
fi
AC_SUBST([GC_LIBS])
AM_CONDITIONAL([GC_BOEHM], [test "x$gc" = "xboehm"])
AM_CONDITIONAL([GC_MULTI_MMAP], [test "x$gc" = "xmulti-mmap"])
AM_CONDITIONAL([GC_SINGLE_MMAP], [test "x$gc" = "xsingle-mmap"])
dnl **************************************************************************
dnl Virtual Machine type
dnl **************************************************************************
AC_ARG_WITH(vm-type,
[AS_HELP_STRING(--with-vm-type=something,
[VM type ('single' 'multi' or 'service')])],
[[vmtype=$withval]],
[[ echo Using single as vm type.
vmtype=single
]]
)
if test "x$vmtype" = "xmulti"; then
CFLAGS="$CFLAGS -DMULTIPLE_VM"
CXXFLAGS="$CXXFLAGS -DMULTIPLE_VM"
else
if test "x$vmtype" = "xservice"; then
CFLAGS="$CFLAGS -DMULTIPLE_VM -DSERVICE_GC -DMULTIPLE_GC -DSERVICE_VM -I$PWD/lib/Mvm/Allocator"
CXXFLAGS="$CXXFLAGS -DMULTIPLE_VM -DSERVICE_GC -DMULTIPLE_GC -DSERVICE_VM -I$PWD/lib/Mvm/Allocator"
fi
fi
AM_CONDITIONAL([SERVICE_BUILD], [test "x$vmtype" = "xservice"])
AM_CONDITIONAL([ISOLATE_BUILD], [test "x$vmtype" = "xmulti"])
dnl **************************************************************************
dnl GNU CLASSPATH version
dnl **************************************************************************
AC_ARG_WITH(gnu-classpath-version,
[AS_HELP_STRING(--with-gnu-classpath-version=something,
[GNU CLASSPATH VERSION (default is '0.97.1')])],
[[gnuclasspathversion=$withval]],
[[ echo Using '0.97.1' as GNU CLASSPATH version.
gnuclasspathversion=0.97.1
]]
)
gnuclasspathversionuvm=`echo $gnuclasspathversion | $SED s/\\\./-/`
AC_SUBST([gnuclasspathversion])
AC_SUBST([gnuclasspathversionuvm])
dnl **************************************************************************
dnl GNU CLASSPATH installation prefix
dnl **************************************************************************
AC_ARG_WITH(gnu-classpath-local-prefix,
[AS_HELP_STRING(--with-gnu-classpath-local-prefix=something,
[GNU CLASSPATH local prefix (no default)])],
[[gnuclasspathlocalprefix=$withval]],
[[ echo Not using GNU CLASSPATH local prefix.
gnuclasspathlocalprefix=''
]]
)
AC_ARG_WITH(gnu-classpath-installation-prefix,
[AS_HELP_STRING(--with-gnu-classpath-installation-prefix=something,
[GNU CLASSPATH installation prefix (default is '/usr/local/classpath')])],
[[gnuclasspathinstallationprefix=$withval]],
[[gnuclasspathinstallationprefix=/usr/local/classpath]]
)
if test "x${gnuclasspathlocalprefix}" = x; then
echo Using ${gnuclasspathinstallationprefix} as GNU CLASSPATH installation prefix;
classpathglibj=${gnuclasspathinstallationprefix}/share/classpath/glibj.zip;
classpathlibs=${gnuclasspathinstallationprefix}/lib/classpath/;
CFLAGS="$CFLAGS -I$gnuclasspathinstallationprefix/include"
CXXFLAGS="$CXXFLAGS -I$gnuclasspathinstallationprefix/include"
else
echo Using ${gnuclasspathlocalprefix} as GNU CLASSPATH local prefix;
classpathglibj=${gnuclasspathlocalprefix}/lib/;
classpathlibs=${gnuclasspathlocalprefix}/lib/;
CFLAGS="$CFLAGS -I$gnuclasspathlocalprefix/include"
CXXFLAGS="$CXXFLAGS -I$gnuclasspathlocalprefix/include"
fi
AC_SUBST([classpathglibj])
AC_SUBST([classpathlibs])
dnl **************************************************************************
dnl Local PNet directory
dnl **************************************************************************
AC_ARG_WITH(pnet-local-prefix,
[AS_HELP_STRING(--with-pnet-local-prefix=something,
[PNET local prefix (no default)])],
[[pnetlocalprefix=$withval]],
[[ echo Not using PNETlocal prefix.
pnetlocalprefix=''
]]
)
AM_CONDITIONAL([WITH_N3], [test "x$pnetlocalprefix" != "x"])
if test "x$pnetlocalprefix" != x; then
echo Using ${pnetlocalprefix} as PNET local prefix;
AC_DEFINE([WITH_N3], [1], [Compiling N3])
fi
AC_SUBST([pnetlocalprefix])
AC_CONFIG_FILES([
Makefile
lib/N3/Makefile
lib/N3/VMCore/Makefile
lib/JnJVM/Makefile
lib/JnJVM/Classpath/Makefile
lib/JnJVM/VMCore/Makefile
lib/JnJVM/LLVMRuntime/Makefile
lib/JnJVM/Classpath/Classpath.h
lib/Mvm/Makefile
lib/Mvm/GCMmap2/Makefile
lib/Mvm/BoehmGC/Makefile
lib/Mvm/CommonThread/Makefile
lib/Mvm/Allocator/Makefile
])
AC_OUTPUT