X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=configure.in;h=3c58e945fb45f74f5d16716456eac75c591ca5df;hb=53bbc91c98e21467de44abb3a1f6be1d1a23889d;hp=55ca1c3c8e39d88c38031484bc833e42ea223f6a;hpb=42d6748c9a388db5e14bfb6d5f126feaea6605dc;p=cacao.git diff --git a/configure.in b/configure.in index 55ca1c3c8..3c58e945f 100644 --- a/configure.in +++ b/configure.in @@ -1,69 +1,102 @@ -dnl autoconf; autoheader; automake - dnl Process this file with autoconf to produce a configure script. -AC_INIT(jit.c) + +AC_INIT(cacao, 0.90, cacao@complang.tuwien.ac.at) +AC_CONFIG_SRCDIR(src/cacao/cacao.c) AC_CANONICAL_HOST +AC_PREREQ(2.59) +AM_INIT_AUTOMAKE -AM_INIT_AUTOMAKE(cacao, 0.40) -AM_CONFIG_HEADER(config.h) +AM_CONFIG_HEADER([config.h]) AC_PREFIX_DEFAULT(/usr/local/cacao) dnl system type -ASMPART="asmpart.S" case "$host_cpu" in alpha* ) - SYSDEP_DIR="alpha" - CFLAGS="-ieee -O2 -g3" - COMPILER_SOURCES="compiler.h compiler.c" - COMPILER_OBJECTS="compiler.o" - AC_DEFINE(OLD_COMPILER) - AC_DEFINE(TRACE_ARGS_NUM, 6) - AC_DEFINE(USE_CODEMMAP) + ARCH_DIR="alpha" + STATIC_CLASSPATH="1" + CFLAGS="-mieee -D__ALPHA__" + ;; + +i386* | i486* | i586* | i686* ) + ARCH_DIR="i386" + STATIC_CLASSPATH="0" + CFLAGS="-D__I386__ $CFLAGS" ;; mips* ) - SYSDEP_DIR="mips" - ASMPART="asmpart.s" - CFLAGS="-64 -g -DMAP_ANONYMOUS=0 -woff 1048,1110,1164,1515" + ARCH_DIR="mips" + STATIC_CLASSPATH="1" + CFLAGS="-64 -O2 -OPT:Olimit=0 -g -woff 1110,1164,1515 -D__MIPS__" LIBS="-lelfutil" - COMPILER_SOURCES="" - COMPILER_OBJECTS="" - AC_DEFINE(TRACE_ARGS_NUM, 8) ;; -i386* | i486* | i586* | i686* ) - SYSDEP_DIR="i386" - CFLAGS="-O0 -g3 -D__I386__" - COMPILER_SOURCES="" - COMPILER_OBJECTS="i386/libdisass.a" +powerpc* | ppc* ) + ARCH_DIR="powerpc" + STATIC_CLASSPATH="1" + CFLAGS="-D__POWERPC__" ;; -sparc* | powerpc* | ppc* | * ) - AC_MSG_ERROR($host-cpu systems are not supported at this time) ;; +x86_64* ) + ARCH_DIR="x86_64" + STATIC_CLASSPATH="0" + CFLAGS="-D__X86_64__" + ;; +sparc* | * ) + AC_MSG_ERROR($host_cpu systems are not supported at this time) + ;; esac -AC_SUBST(COMPILER_SOURCES) -AC_SUBST(COMPILER_OBJECTS) -AC_SUBST(ASMPART) +case "$host_os" in +*linux* | *Linux* ) + CFLAGS="-ansi -pedantic -Wall -Wno-long-long -O0 -g3 $CFLAGS -D__LINUX__ -D_POSIX_C_SOURCE=199506L -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_BSD_SOURCE" + ;; +*darwin* ) + CFLAGS="-ansi -pedantic -Wall -Wno-long-long -O0 -g3 $CFLAGS -D__DARWIN__" + ;; +*irix* ) + CFLAGS="$CFLAGS -D__IRIX__" + ;; +* ) + ;; +esac + +dnl define install prefix +CFLAGS="$CFLAGS -DINSTALL_PREFIX=\"\\\"$prefix\\\"\"" + -AC_DEFINE_UNQUOTED(SYSDEP_DIR, "$SYSDEP_DIR") -AC_SUBST(SYSDEP_DIR) +AC_DEFINE_UNQUOTED([ARCH_DIR], "$ARCH_DIR", [Architecture directory]) +AC_SUBST(ARCH_DIR) + +AC_ARG_ENABLE([dynamicclasspath], [AS_HELP_STRING(--disable-dynamicclasspath, link classpath native code static even on platforms supporting dynamic loading)], [use_dynamicclasspath=$enableval], [use_dynamicclasspath=yes]) +dnl force static classpath linking ?? +AC_MSG_CHECKING(Link classpath static) +if test "xno" == "x$use_dynamicclasspath"; then + STATIC_CLASSPATH="1" +fi + +if test "$STATIC_CLASSPATH" == "1"; then + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi +AC_SUBST(STATIC_CLASSPATH) dnl Checks for programs. AC_PROG_CC +AM_PROG_AS AC_PROG_RANLIB AC_PROG_MAKE_SET -dnl Checks for libraries. -AC_CHECK_LIB(m, sin) - dnl Checks for header files. AC_HEADER_DIRENT AC_HEADER_STDC -AC_CHECK_HEADERS(fcntl.h sys/time.h unistd.h) +AC_CHECK_HEADERS([fcntl.h]) +AC_CHECK_HEADERS([sys/time.h]) +AC_CHECK_HEADERS([unistd.h]) +AC_CHECK_HEADERS([sys/ioctl.h]) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST @@ -80,6 +113,9 @@ AC_FUNC_MMAP AC_TYPE_SIGNAL AC_CHECK_FUNCS(getcwd gettimeofday mkdir mktime select socket) +dnl Checks for libraries. +AC_CHECK_LIB(m, fmod) + dnl Check for mmap header anomalies (missing MAP_FAILED, etc.) if test $ac_cv_func_mmap_fixed_mapped = yes; then AC_CACHE_CHECK(whether MAP_FAILED is defined, @@ -102,12 +138,26 @@ if test $ac_cv_func_mmap_fixed_mapped = yes; then ac_cv_map_anonymous=yes, ac_cv_map_anonymous=no)) + AC_CACHE_CHECK(whether MAP_ANON is defined, + ac_cv_map_anon, + AC_EGREP_CPP(yes, + [#include + #ifdef MAP_ANON + yes + #endif], + ac_cv_map_anon=yes, + ac_cv_map_anon=no)) + if test $ac_cv_map_failed = yes; then - AC_DEFINE(HAVE_MAP_FAILED) + AC_DEFINE([HAVE_MAP_FAILED], 1, [Define if defines MAP_FAILED]) fi if test $ac_cv_map_anonymous = yes; then - AC_DEFINE(HAVE_MAP_ANONYMOUS) + AC_DEFINE([HAVE_MAP_ANONYMOUS], 1, [Define if defines MAP_ANONYMOUS]) + fi + + if test $ac_cv_map_anon = yes; then + AC_DEFINE([HAVE_MAP_ANON], 1, [Define if defines MAP_ANON]) fi fi @@ -115,64 +165,165 @@ fi dnl Features dnl check arguments -AC_ARG_ENABLE(threads, [ --enable-threads enable threads support]) -AC_ARG_WITH(gc, [ --with-gc[=ARG] use garbage collector [gc2,gc1,boehm]]) +AC_ARG_ENABLE([threads], [AS_HELP_STRING(--enable-threads,enable threads support (none,green,native) [[default=native]])]) +AC_ARG_ENABLE([__thread], [AS_HELP_STRING(--disable-__thread,do not use TLS features even when supporting them)], [use__thread=$enableval], [use__thread=yes]) + dnl threads AC_MSG_CHECKING(whether to include threads support) -if test x"$enable_threads" = "xno"; then +enable_threads=${enable_threads:-native} +case "$enable_threads" in +no | none | single) + AC_MSG_RESULT(no) + dnl no threads for boehm + ac_configure_args="$ac_configure_args --disable-boehm-threads" + AM_CONDITIONAL([USE_THREADS], [false]) + AM_CONDITIONAL([NATIVE_THREADS], [false]) + ;; + +green | native | posix | pthreads) + AC_DEFINE([USE_THREADS], 1, [use threads]) + AC_DEFINE([EXTERNAL_OVERFLOW], 1, [external overflow]) + AC_DEFINE([DONT_FREE_FIRST], 1, [don't free first]) + + AM_CONDITIONAL([USE_THREADS], [true]) + + if test x"$enable_threads" != "xgreen"; then + AC_MSG_RESULT(yes, native) + AC_CHECK_LIB(pthread, main) + AC_DEFINE([NATIVE_THREADS], 1, [use pthreads]) + + CFLAGS="$CFLAGS -D_REENTRANT" + + dnl tell boehm to support threads as well and classpath to + dnl synchronize VM threads portably + ac_configure_args="$ac_configure_args --enable-boehm-threads=posix --enable-portable-native-sync" + AM_CONDITIONAL([NATIVE_THREADS], [true]) + + else + AC_MSG_RESULT(yes, green) + + dnl no threads for boehm + ac_configure_args="$ac_configure_args --disable-boehm-threads" + AM_CONDITIONAL([NATIVE_THREADS], [false]) + fi + ;; +*) + AC_MSG_ERROR($enable_threads is an unknown thread package) + ;; +esac + + +dnl Check whether the compiler supports the __thread keyword. +if test "x$use__thread" != xno; then + AC_CACHE_CHECK([for __thread], ac_cv_gcc___thread, + [cat > conftest.c <<\EOF +__thread int a = 42; +EOF + if AC_TRY_COMMAND([${CC-cc} $CFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then + ac_cv_gcc___thread=yes + else + ac_cv_gcc___thread=no + fi + rm -f conftest*]) + if test "$ac_cv_gcc___thread" = yes; then + AC_DEFINE([HAVE___THREAD], 1, [have __thread]) + fi +else + ac_cv_gcc___thread=no +fi + + +dnl check if zlib should be used +AC_ARG_ENABLE([zlib], [AS_HELP_STRING(--enable-zlib,enable zip archive class storage (needs zlib) [[default=yes]])]) + +AC_MSG_CHECKING(whether zip archives should be supported) +if test x"$enable_zlib" = "xno"; then AC_MSG_RESULT(no) + AM_CONDITIONAL([USE_ZLIB], [false]) else AC_MSG_RESULT(yes) + AC_DEFINE([USE_ZLIB], 1, [use zlib]) + AC_CHECK_HEADERS([zlib.h]) + AC_CHECK_LIB(z, main) + AM_CONDITIONAL([USE_ZLIB], [true]) +fi + + +dnl check arguments +AC_ARG_ENABLE([gtk-peer], [AS_HELP_STRING(--enable-gtk-peer,compile GTK native peers [[default=no]])]) + + +dnl enable gtk peer +AC_MSG_CHECKING(whether to use gtk awt peers) +if test x"$enable_gtk_peer" = "xyes"; then + AC_MSG_RESULT(yes) + AC_DEFINE([USE_GTK], 1, [use gtk]) + AM_CONDITIONAL([USE_GTK_PEER], [true]) - AC_DEFINE(USE_THREADS) - AC_DEFINE(EXTERNAL_OVERFLOW) - AC_DEFINE(DONT_FREE_FIRST) +else + AC_MSG_RESULT(no) + ac_configure_args="$ac_configure_args --disable-gtk-peer" + AM_CONDITIONAL([USE_GTK_PEER], [false]) +fi + + +if test "x1" == "x$STATIC_CLASSPATH"; then + AC_DEFINE([STATIC_CLASSPATH], 1, [use classpath statically linked]) + AM_CONDITIONAL([STATIC_CLASSPATH], [true]) - LIBTHREAD="libthreads.a" - THREAD_OBJ="threads/libthreads.a" - AC_SUBST(LIBTHREAD) - AC_SUBST(THREAD_OBJ) +else + AM_CONDITIONAL([STATIC_CLASSPATH], [false]) fi -dnl garbage collector version -AC_MSG_CHECKING(which garbage collector to use) -case "$with_gc" in -boehm ) - AC_MSG_RESULT(Boehm garbage collector) - GC_OBJ="mm/libboehm.a libgc.a" - if test ! -e libgc.a; then - AC_MSG_ERROR([libgc.a not found, see README.boehm]) - fi - AC_DEFINE(USE_BOEHM) - BOEHM_LIB=libboehm.a - ;; -gc1 ) - AC_MSG_RESULT(old garbage collector) - GC_OBJ="mm/libmm_old.a" - ;; -gc2 | "" ) - AC_MSG_RESULT(new garbage collector) - GC_OBJ="mm/libmm_new.a" - ;; -* ) - AC_MSG_ERROR(Invalid GC) - ;; -esac -AC_SUBST(GC_OBJ) -AC_SUBST(BOEHM_LIB) + +dnl set some essential classpath options, even if their classpath default is +dnl suitable for us +ac_configure_args="$ac_configure_args --enable-jni --disable-cni --disable-regen-headers --enable-static --enable-shared --enable-load-library" + + +dnl now configure boehm gc and gnu classpath +dnl the export is not my favorite (is there another way?) +export CFLAGS +AC_CONFIG_SUBDIRS(src/boehm-gc src/classpath) + AC_OUTPUT(Makefile \ - toolbox/Makefile \ - mm/Makefile \ - threads/Makefile \ - jit/Makefile \ - alpha/Makefile \ - mips/Makefile \ - i386/Makefile \ - nat/Makefile \ doc/Makefile \ - comp/Makefile \ - narray/Makefile \ - tst/Makefile \ - jvmtst/Makefile ) + doc/handbook/Makefile \ + man/Makefile \ + src/Makefile \ + src/cacao/Makefile \ + src/cacaoh/Makefile \ + src/mm/Makefile \ + src/native/Makefile \ + src/native/include/Makefile \ + src/native/tools/Makefile \ + src/native/vm/Makefile \ + src/threads/Makefile \ + src/threads/green/Makefile \ + src/threads/native/Makefile \ + src/toolbox/Makefile \ + src/vm/Makefile \ + src/vm/jit/Makefile \ + src/vm/jit/alpha/Makefile \ + src/vm/jit/i386/Makefile \ + src/vm/jit/inline/Makefile \ + src/vm/jit/loop/Makefile \ + src/vm/jit/mips/Makefile \ + src/vm/jit/powerpc/Makefile \ + src/vm/jit/tools/Makefile \ + src/vm/jit/verify/Makefile \ + src/vm/jit/x86_64/Makefile \ + tests/Makefile \ + tests/jvm98/Makefile \ + tests/kaffe/Makefile ) + + +## Local variables: +## mode: m4 +## indent-tabs-mode: t +## c-basic-offset: 4 +## tab-width: 8 +## compile-command: "automake --add-missing" +## End: