X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=configure.in;h=b5214346990766fc6ae315179201787f72f29fec;hb=eb399cf776f076ea145622641f3630de9b7365c4;hp=ba484df7237eafc8f07f908c0c98376d19751fb8;hpb=5bc68e8c5cb6809f0fe7cd1c7cf2a647605d56d1;p=cacao.git diff --git a/configure.in b/configure.in index ba484df72..b52143469 100644 --- a/configure.in +++ b/configure.in @@ -1,11 +1,13 @@ dnl autoconf; autoheader; automake dnl Process this file with autoconf to produce a configure script. -AC_INIT(main.c) +AC_INIT(cacao, 0.40, 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) @@ -14,36 +16,37 @@ dnl system type case "$host_cpu" in alpha* ) ARCH_DIR="alpha" - CFLAGS="-mieee -O0 -g3 -D__ALPHA__" - AC_DEFINE(TRACE_ARGS_NUM, 6) - AC_DEFINE(USE_CODEMMAP) + STATIC_CLASSPATH="1" + CFLAGS="-mieee -D__ALPHA__" + AC_DEFINE([TRACE_ARGS_NUM], 6, [Defines integer argument register count]) + AC_DEFINE([USE_CODEMMAP], 1, [use code mmap]) ;; i386* | i486* | i586* | i686* ) ARCH_DIR="i386" - CFLAGS="-Wall -O0 -g3 -D__I386__" - AC_DEFINE(TRACE_ARGS_NUM, 8) - AC_DEFINE(USE_CODEMMAP) + STATIC_CLASSPATH="0" + CFLAGS="-D__I386__" ;; mips* ) ARCH_DIR="mips" - CFLAGS="-64 -O2 -OPT:Olimit=0 -g -DMAP_ANONYMOUS=0 -woff 1110,1164,1515 -D__MIPS__" + STATIC_CLASSPATH="1" + CFLAGS="-64 -O2 -OPT:Olimit=0 -g -woff 1110,1164,1515 -D__MIPS__" LIBS="-lelfutil" - AC_DEFINE(TRACE_ARGS_NUM, 8) + AC_DEFINE([TRACE_ARGS_NUM], 8, [Defines integer argument register count]) ;; powerpc* | ppc* ) ARCH_DIR="powerpc" - CFLAGS="-O2 -g -DMAP_ANONYMOUS=0 -no-cpp-precomp" - AC_DEFINE(TRACE_ARGS_NUM, 8) + STATIC_CLASSPATH="1" + CFLAGS="-D__POWERPC__" + AC_DEFINE([TRACE_ARGS_NUM], 8, [Defines integer argument register count]) ;; x86_64* ) ARCH_DIR="x86_64" - CFLAGS="-O0 -g3 -D__X86_64__" - AC_DEFINE(TRACE_ARGS_NUM, 6) - AC_DEFINE(USE_CODEMMAP) + STATIC_CLASSPATH="1" + CFLAGS="-D__X86_64__" ;; sparc* | * ) @@ -51,19 +54,44 @@ sparc* | * ) ;; esac -AC_SUBST(COMPILER_OBJECTS) +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 + -AC_DEFINE_UNQUOTED(ARCH_DIR, "$ARCH_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 @@ -87,6 +115,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, @@ -109,12 +140,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 @@ -122,41 +167,163 @@ fi dnl Features dnl check arguments -AC_ARG_ENABLE(threads, [ --enable-threads enable threads support]) +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 + - AC_DEFINE(USE_THREADS) - AC_DEFINE(EXTERNAL_OVERFLOW) - AC_DEFINE(DONT_FREE_FIRST) +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" - LIBTHREAD="libthreads.a" - THREAD_OBJ="threads/libthreads.a" - AC_SUBST(LIBTHREAD) - AC_SUBST(THREAD_OBJ) + +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]) + +else + AC_MSG_RESULT(no) + ac_configure_args="$ac_configure_args --disable-gtk-peer" + AM_CONDITIONAL([USE_GTK_PEER], [false]) fi -dnl now configure boehm gc -AC_CONFIG_SUBDIRS(mm/boehm-gc) + +if test "x1" == "x$STATIC_CLASSPATH"; then + AC_DEFINE([STATIC_CLASSPATH], 1, [use classpath statically linked]) + AM_CONDITIONAL([STATIC_CLASSPATH], [true]) + +else + AM_CONDITIONAL([STATIC_CLASSPATH], [false]) +fi + + +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 \ - mm/Makefile \ - toolbox/Makefile \ - threads/Makefile \ - jit/Makefile \ - jit/loop/Makefile \ - jit/alpha/Makefile \ - jit/i386/Makefile \ - jit/mips/Makefile \ - jit/powerpc/Makefile \ - jit/x86_64/Makefile \ - nat/Makefile \ doc/Makefile \ - tst/Makefile \ - tst/kaffe/Makefile \ - jvmtst/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: