X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=configure.in;h=b5214346990766fc6ae315179201787f72f29fec;hb=7385d492d0bd68ae7fa5cd558b60e084757114ee;hp=d7f02bf11d125de5774aec9aa5404691dcf1661a;hpb=3c84f7b70fb1128667faf2745c098e3771afcebd;p=cacao.git diff --git a/configure.in b/configure.in index d7f02bf11..b52143469 100644 --- a/configure.in +++ b/configure.in @@ -1,11 +1,13 @@ -cdnl autoconf; autoheader; automake +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="-Wall -O2 -g3 -mieee -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 -O2 -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="-Wall -O2 -g -DMAP_ANONYMOUS=0 -no-cpp-precomp -D__POWERPC__" - 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="-Wall -O2 -g3 -D__X86_64__" - AC_DEFINE(TRACE_ARGS_NUM, 6) - AC_DEFINE(USE_CODEMMAP) + STATIC_CLASSPATH="1" + CFLAGS="-D__X86_64__" ;; sparc* | * ) @@ -51,29 +54,44 @@ sparc* | * ) ;; esac - case "$host_os" in *linux* | *Linux* ) - CFLAGS="$CFLAGS -D__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_SUBST(COMPILER_OBJECTS) -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. -dnl AC_CHECK_LIB(m, sin) - dnl Checks for header files. AC_HEADER_DIRENT AC_HEADER_STDC @@ -97,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, @@ -119,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 @@ -132,29 +167,54 @@ fi dnl Features dnl check arguments -AC_ARG_ENABLE(threads, [ --enable-threads enable threads support [default=yes]]) -AC_ARG_ENABLE([__thread], - [ --disable-__thread do not use TLS features even when supporting them], - [use__thread=$enablevalval], - [use__thread=yes]) +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) -else - AC_MSG_RESULT(yes) + dnl no threads for boehm + ac_configure_args="$ac_configure_args --disable-boehm-threads" + AM_CONDITIONAL([USE_THREADS], [false]) + AM_CONDITIONAL([NATIVE_THREADS], [false]) + ;; - AC_DEFINE(USE_THREADS) - AC_DEFINE(EXTERNAL_OVERFLOW) - AC_DEFINE(DONT_FREE_FIRST) +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 - LIBTHREAD="libthreads.a" - THREAD_OBJ="threads/libthreads.a" - AC_SUBST(LIBTHREAD) - AC_SUBST(THREAD_OBJ) -fi dnl Check whether the compiler supports the __thread keyword. if test "x$use__thread" != xno; then @@ -169,112 +229,101 @@ EOF fi rm -f conftest*]) if test "$ac_cv_gcc___thread" = yes; then - AC_DEFINE(HAVE___THREAD) + 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, [ --enable-zlib enable zip archive class storage (experimental), needs zlib [default=no]]) +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" = "xyes"; then - ZIP_LIBS=-lz - ZIP_C=unzip.c - AC_DEFINE(USE_ZLIB) +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 -else - ZIP_LIBS="" - ZIP_C="" - AC_MSG_RESULT(no) -fi -AC_SUBST(ZIP_LIBS) -AC_SUBST(ZIP_C) +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 check arguments -AC_ARG_ENABLE(gtk-peer, [ --enable-gtk-peer enable threads support [default=no]]) +AC_ARG_ENABLE([gtk-peer], [AS_HELP_STRING(--enable-gtk-peer,compile GTK native peers [[default=no]])]) -dnl threads + +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) - AWTPEERS="java.awt.peer.ComponentPeer \ - java.awt.peer.MenuPeer \ - java.awt.peer.MenuItemPeer \ - gnu.java.awt.peer.gtk.GdkPixbufDecoder \ - gnu.java.awt.peer.gtk.GtkMenuBarPeer \ - gnu.java.awt.peer.gtk.GtkScrollPanePeer \ - gnu.java.awt.peer.gtk.GtkMenuPeer \ - gnu.java.awt.peer.gtk.GtkTextComponentPeer \ - gnu.java.awt.peer.gtk.GtkComponentPeer \ - gnu.java.awt.peer.gtk.GtkPopupMenuPeer \ - gnu.java.awt.peer.gtk.GtkCheckboxGroupPeer \ - gnu.java.awt.peer.gtk.GtkMenuItemPeer \ - gnu.java.awt.peer.gtk.GdkGraphics \ - gnu.java.awt.peer.gtk.GtkToolkit \ - gnu.java.awt.peer.gtk.GtkCanvasPeer \ - gnu.java.awt.peer.gtk.GtkFramePeer \ - gnu.java.awt.peer.gtk.GdkFontMetrics \ - gnu.java.awt.peer.gtk.GtkScrollbarPeer \ - gnu.java.awt.peer.gtk.GtkGenericPeer \ - gnu.java.awt.peer.gtk.GtkListPeer \ - gnu.java.awt.peer.gtk.GtkLabelPeer \ - gnu.java.awt.peer.gtk.GtkTextAreaPeer \ - gnu.java.awt.peer.gtk.GtkCheckboxPeer \ - gnu.java.awt.peer.gtk.GtkFileDialogPeer \ - gnu.java.awt.peer.gtk.GtkImagePainter \ - gnu.java.awt.peer.gtk.GtkChoicePeer \ - gnu.java.awt.peer.gtk.GtkPanelPeer \ - gnu.java.awt.peer.gtk.GtkMainThread \ - gnu.java.awt.peer.gtk.GtkButtonPeer \ - gnu.java.awt.peer.gtk.GtkTextFieldPeer \ - gnu.java.awt.peer.gtk.GtkCheckboxMenuItemPeer \ - gnu.java.awt.peer.gtk.GtkClipboard \ - gnu.java.awt.peer.gtk.GtkWindowPeer" - AWT_OBJS="gnuclasspathnat/native/jni/gtk-peer/.libs/libgtkpeer.a \ - -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 \ - -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 \ - -lgthread-2.0 -lart_lgpl_2" - USEGTK=yes - AC_SUBST(USEGTK) - AC_SUBST(AWTPEERS) - AC_SUBST(AWT_OBJS) - AC_DEFINE(USE_GTK) + AC_DEFINE([USE_GTK], 1, [use gtk]) + AM_CONDITIONAL([USE_GTK_PEER], [true]) else - AWT_OBJS= - AWTPEERS= - USEGTK=no - AC_SUBST(USEGTK) - AC_SUBST(AWTPEERS) - AC_SUBST(AWT_OBJS) 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]) + +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(mm/boehm-gc gnuclasspathnat) +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: