3 dnl Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel,
4 dnl C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
5 dnl E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
6 dnl J. Wenninger, Institut f. Computersprachen - TU Wien
8 dnl This file is part of CACAO.
10 dnl This program is free software; you can redistribute it and/or
11 dnl modify it under the terms of the GNU General Public License as
12 dnl published by the Free Software Foundation; either version 2, or (at
13 dnl your option) any later version.
15 dnl This program is distributed in the hope that it will be useful, but
16 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
17 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18 dnl General Public License for more details.
20 dnl You should have received a copy of the GNU General Public License
21 dnl along with this program; if not, write to the Free Software
22 dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
25 dnl $Id: configure.ac 7434 2007-03-02 19:44:53Z edwin $
27 dnl Process this file with autoconf to produce a configure script.
30 AC_INIT(cacao, 0.97+svn, cacao@cacaojvm.org)
31 AC_CONFIG_SRCDIR(src/cacao/cacao.c)
34 AM_INIT_AUTOMAKE([1.9.0])
37 AM_CONFIG_HEADER([config.h])
39 AC_PREFIX_DEFAULT(/usr/local/cacao)
42 dnl set optimization and debugging for all architectures and systems
43 if test x"$CFLAGS" = "x"; then
51 alpha | alphaev56 | alphapca56 )
53 ARCH_CFLAGS="-mieee -D__ALPHA__"
56 arm | armv4tl | armv5b | armv5l )
58 ARCH_CFLAGS="-D__ARM__"
63 ARCH_CFLAGS="-D__PARISC__"
66 i386 | i486 | i586 | i686 )
68 ARCH_CFLAGS="-D__I386__"
73 ARCH_CFLAGS="-D__M68K__"
78 ARCH_CFLAGS="-D__MIPS__"
83 ARCH_CFLAGS="-D__POWERPC__"
88 ARCH_CFLAGS="-D__POWERPC64__"
93 ARCH_CFLAGS="-mcpu=v9 -m64 -D__SPARC_64__"
98 ARCH_CFLAGS="-D__X86_64__"
103 ENABLE_STATICVM="yes"
104 ARCH_CFLAGS="-D__XDSPCORE__"
110 ARCH_CFLAGS="-D__S390__"
115 AC_MSG_ERROR($host_cpu systems are not supported at this time)
123 INTRP_CFLAGS="$ARCH_CFLAGS -D__WINDOWS__ -D__CYGWIN__ -Wall -Wno-long-long"
124 ARCH_CFLAGS="$ARCH_CFLAGS -D__WINDOWS__ -D__CYGWIN__ -ansi -pedantic -Wall -Wno-long-long"
129 INTRP_CFLAGS="$ARCH_CFLAGS -D__DARWIN__ -Wall -Wno-long-long"
130 ARCH_CFLAGS="$ARCH_CFLAGS -D__DARWIN__ -ansi -pedantic -Wall -Wno-long-long"
135 INTRP_CFLAGS="$ARCH_CFLAGS -D__FREEBSD__ -Wall -Wno-long-long -D_XOPEN_SOURCE_EXTENDED"
136 ARCH_CFLAGS="$ARCH_CFLAGS -D__FREEBSD__ -ansi -pedantic -Wall -Wno-long-long -D_XOPEN_SOURCE_EXTENDED"
141 INTRP_CFLAGS="$ARCH_CFLAGS -D__IRIX__"
142 ARCH_CFLAGS="$ARCH_CFLAGS -D__IRIX__"
147 INTRP_CFLAGS="$ARCH_CFLAGS -D__FREEBSD__ -Wall -Wno-long-long -D_POSIX_C_SOURCE=199506L -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_BSD_SOURCE"
148 ARCH_CFLAGS="$ARCH_CFLAGS -D__FREEBSD__ -ansi -pedantic -Wall -Wno-long-long -D_POSIX_C_SOURCE=199506L -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_BSD_SOURCE"
151 dnl must be before *linux*
154 INTRP_CFLAGS="$ARCH_CFLAGS -D__LINUX__ -Wall -Wno-long-long -D_POSIX_C_SOURCE=199506L -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_BSD_SOURCE"
155 ARCH_CFLAGS="$ARCH_CFLAGS -D__LINUX__ -ansi -pedantic -Wall -Wno-long-long -D_POSIX_C_SOURCE=199506L -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_BSD_SOURCE"
160 INTRP_CFLAGS="$ARCH_CFLAGS -D__LINUX__ -Wall -Wno-long-long -D_POSIX_C_SOURCE=199506L -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_BSD_SOURCE"
161 ARCH_CFLAGS="$ARCH_CFLAGS -D__LINUX__ -ansi -pedantic -Wall -Wno-long-long -D_POSIX_C_SOURCE=199506L -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_BSD_SOURCE"
166 INTRP_CFLAGS="$ARCH_CFLAGS -D__NETBSD__ -Wall -Wno-long-long -D_POSIX_C_SOURCE=199506L -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_BSD_SOURCE"
167 ARCH_CFLAGS="$ARCH_CFLAGS -D__NETBSD__ -ansi -pedantic -Wall -Wno-long-long -D_POSIX_C_SOURCE=199506L -D_XOPEN_SOURCE=500 -D_XOPEN_SOURCE_EXTENDED -D_BSD_SOURCE"
172 dnl on solaris the architecture defines 'sparc','sun','unix' are not set when cpp is called with -ansi
173 dnl therefore we add them here
174 INTRP_CFLAGS="$ARCH_CFLAGS -D__SOLARIS__ -Wall -Wno-long-long -D_POSIX_C_SOURCE=199506L -D_XOPEN_SOURCE=500 -D__EXTENSIONS__ -D_BSD_SOURCE -Dsparc -Dsun -Dunix"
175 ARCH_CFLAGS="$ARCH_CFLAGS -D__SOLARIS__ -ansi -pedantic -Wall -Wno-long-long -D_POSIX_C_SOURCE=199506L -D_XOPEN_SOURCE=500 -D__EXTENSIONS__ -D_BSD_SOURCE -Dsparc -Dsun -Dunix"
183 dnl temporary set the CFLAGS for configure tests (e.g. inline keyword)
184 dnl we set it properly at the end of this file
185 CFLAGS="$ARCH_CFLAGS $OPT_CFLAGS"
187 dnl set interpreter flags
188 AC_SUBST(INTRP_CFLAGS)
190 dnl define some stuff required for --fullversion
191 AC_DEFINE_UNQUOTED(VERSION_CONFIGURE_ARGS, "$ac_configure_args", [configure arguments])
192 AC_DEFINE_UNQUOTED(VERSION_CC, "$CC", [CC used])
193 AC_DEFINE_UNQUOTED(VERSION_CFLAGS, "$OPT_CFLAGS $ARCH_CFLAGS", [CFLAGS used])
196 dnl define and substitute some architecture specific variables
197 AC_DEFINE_UNQUOTED([ARCH_DIR], "${ARCH_DIR}", [architecture directory])
200 AC_SUBST(USE_SCHEDULER)
203 dnl Checks for programs.
213 dnl Checks for header files.
216 AC_CHECK_HEADERS([fcntl.h])
217 AC_CHECK_HEADERS([sys/time.h])
218 AC_CHECK_HEADERS([unistd.h])
219 AC_CHECK_HEADERS([sys/ioctl.h])
221 dnl this is for fdlibm
222 AC_CHECK_HEADERS([stdint.h])
223 AC_CHECK_HEADERS([inttypes.h])
224 AC_CHECK_HEADERS([sys/config.h])
225 AC_CHECK_HEADERS([sys/types.h])
226 AC_EGREP_HEADER(uint32_t, stdint.h, AC_DEFINE(HAVE_INT32_DEFINED, 1, [Define to 1 if you have uint32_t]))
227 AC_EGREP_HEADER(uint32_t, inttypes.h, AC_DEFINE(HAVE_INT32_DEFINED, 1, [Define to 1 if you have uint32_t]))
228 AC_EGREP_HEADER(u_int32_t, sys/types.h, AC_DEFINE(HAVE_BSD_INT32_DEFINED, 1, [Define to 1 if you have BSD u_int32_t]))
229 AC_EGREP_HEADER(u_int32_t, sys/config.h, AC_DEFINE(HAVE_BSD_INT32_DEFINED, 1, [Define to 1 if you have BSD u_int32_t]))
231 dnl Checks for typedefs, structures, and compiler characteristics.
240 dnl Checks for library functions.
241 AC_PROG_GCC_TRADITIONAL
245 AC_CHECK_FUNCS([calloc mmap getpagesize free])
246 AC_CHECK_FUNCS([getcwd gettimeofday])
247 AC_CHECK_FUNCS([scandir])
248 AC_CHECK_FUNCS([isnan])
250 dnl Checks for libraries.
252 dnl Checking sizeof void *
253 AC_CHECK_SIZEOF(void *)
257 dnl define install prefix
258 if test "x$prefix" = "xNONE"; then
259 CACAO_PREFIX=$ac_default_prefix
263 AC_DEFINE_UNQUOTED([CACAO_PREFIX], "${CACAO_PREFIX}", [installation prefix])
264 AC_SUBST(CACAO_PREFIX)
266 dnl define libdir prefix
267 if test "x$libdir" = "xNONE"; then
268 CACAO_LIBDIR=$ac_default_libdir
272 dnl expand CACAO_LIBDIR to something that is usable in C code
273 AS_AC_EXPAND([CACAO_LIBDIR], ${CACAO_LIBDIR})
274 AC_DEFINE_UNQUOTED([CACAO_LIBDIR], "${CACAO_LIBDIR}", [library installation prefix])
275 AC_SUBST(CACAO_LIBDIR)
283 dnl check for stuff that should be done in software
285 AC_CHECK_SOFT_FLOAT_CMP
286 AC_CHECK_SOFT_DOUBLE_CMP
289 dnl check for interpreter
290 AC_ARG_ENABLE([intrp], [AS_HELP_STRING(--enable-intrp,enable interpreter [[default=no]])])
292 AC_MSG_CHECKING(whether interpreter should be compiled)
293 if test x"$enable_intrp" = "xyes"; then
295 AC_DEFINE([ENABLE_INTRP], 1, [enable interpreter])
296 AM_CONDITIONAL([ENABLE_INTRP], [true])
303 [AS_HELP_STRING(--with-ffi,use libffi to call native functions)],
305 AC_CHECK_HEADERS([ffi.h],, [AC_MSG_ERROR(cannot find ffi.h)])
306 AC_CHECK_LIB(ffi, ffi_call,, [AC_MSG_ERROR(cannot find libffi)])
307 AC_DEFINE([WITH_FFI], 1, [use libffi])],
310 dnl check for libffcall
311 AC_ARG_WITH([ffcall],
312 [AS_HELP_STRING(--with-ffcall,use libffcall to call native functions)],
314 AC_CHECK_HEADERS([avcall.h],, [AC_MSG_ERROR(cannot find avcall.h)])
315 AC_CHECK_LIB(avcall, __builtin_avcall,, [AC_MSG_ERROR(cannot find libavcall (from libffcall))])
316 AC_DEFINE([WITH_FFCALL], 1, [use libffcall])],
319 dnl check for libffi or libffcall
320 if test x"${WITH_FFI}" = "xyes" -a x"${WITH_FFCALL}" = "xyes"; then
321 AC_ERROR(Enable only libffi or libffcall.)
323 if test x"${WITH_FFI}" = "xno" -a x"${WITH_FFCALL}" = "xno"; then
324 AC_ERROR(Enable one of libffi or libffcall.)
329 AM_CONDITIONAL([ENABLE_INTRP], [false])
333 if test x"${ENABLE_JIT}" = "xno" -a x"${ENABLE_INTRP}" = "xno"; then
334 AC_ERROR(You have to enable at least the JIT or the interpreter.)
338 dnl check for garbage collector usage
339 AC_ARG_ENABLE([gc], [AS_HELP_STRING(--enable-gc,enable garbage collector support (none,boehm,cacao) [[default=boehm]])])
340 AC_MSG_CHECKING(whether GC should be enabled)
341 enable_gc=${enable_gc:-boehm}
344 AC_DEFINE([DISABLE_GC], 1, [disable garbage collector])
350 AC_DEFINE([ENABLE_GC_BOEHM], 1, [enable conservative boehm-gc])
352 AC_MSG_RESULT(yes, boehm-gc)
356 AC_DEFINE([ENABLE_GC_CACAO], 1, [enable exact cacao-gc])
358 AC_MSG_RESULT(yes, cacao-gc)
362 AC_MSG_ERROR($enable_gc is an unknown garbage collector package)
365 AM_CONDITIONAL([DISABLE_GC], test x"${ENABLE_GC}" = "xnone")
366 AM_CONDITIONAL([ENABLE_GC_BOEHM], test x"${ENABLE_GC}" = "xboehm")
367 AM_CONDITIONAL([ENABLE_GC_CACAO], test x"${ENABLE_GC}" = "xcacao")
370 dnl check for dump memory usage
371 AC_MSG_CHECKING(whether dump memory should be disabled)
372 AC_ARG_ENABLE([dump],
373 [AS_HELP_STRING(--disable-dump,disable dump memory (for debugging only!) [[default=yes]])],
374 [case "${enableval}" in
377 AC_DEFINE([DISABLE_DUMP], 1, [disable dump memory])
382 AC_MSG_RESULT(${DISABLE_DUMP})
386 AC_MSG_CHECKING(whether debug code generation should be enabled)
387 AC_ARG_ENABLE([debug],
388 [AS_HELP_STRING(--disable-debug,disable debug code generation [[default=yes]])],
389 [case "${enableval}" in
391 AC_DEFINE([NDEBUG], 1, [disable debug code])
397 if test x"${NDEBUG}" = "xno"; then
402 AM_CONDITIONAL([NDEBUG], test x"${NDEBUG}" = "xyes")
405 dnl check for memcheck support
406 AC_MSG_CHECKING(whether debugging memory checks should be enabled)
407 AC_ARG_ENABLE([memcheck],
408 [AS_HELP_STRING(--enable-memcheck,enable debugging memory checks [[default=no]])],
409 [case "${enableval}" in
410 yes) ENABLE_MEMCHECK=yes;;
411 *) ENABLE_MEMCHECK=no;;
413 [ENABLE_MEMCHECK=no])
414 AC_MSG_RESULT(${ENABLE_MEMCHECK})
415 AM_CONDITIONAL([ENABLE_MEMCHECK], test x"${ENABLE_MEMCHECK}" = "xyes")
417 if test x"${ENABLE_MEMCHECK}" = "xyes"; then
418 AC_DEFINE([ENABLE_MEMCHECK], 1, [perform debugging memory checks])
422 dnl check for disassembler support
423 AC_MSG_CHECKING(whether disassembler should be enabled)
424 AC_ARG_ENABLE([disassembler],
425 [AS_HELP_STRING(--enable-disassembler,enable disassembler [[default=no]])],
426 [case "${enableval}" in
427 yes) ENABLE_DISASSEMBLER=yes;;
428 *) ENABLE_DISASSEMBLER=no;;
430 [ENABLE_DISASSEMBLER=no])
431 AC_MSG_RESULT(${ENABLE_DISASSEMBLER})
432 AM_CONDITIONAL([ENABLE_DISASSEMBLER], test x"${ENABLE_DISASSEMBLER}" = "xyes")
434 if test x"${ENABLE_DISASSEMBLER}" = "xyes"; then
435 AC_DEFINE([ENABLE_DISASSEMBLER], 1, [enable disassembler])
437 dnl check for binutils headers and libraries on some architectures for the
439 case "${ARCH_DIR}" in
440 arm | i386 | powerpc | x86_64 | sparc64 | powerpc64 | s390)
441 AC_CHECK_HEADER([ansidecl.h],, [AC_MSG_ERROR(cannot find ansidecl.h)])
442 AC_CHECK_HEADER([symcat.h],, [AC_MSG_ERROR(cannot find symcat.h)])
443 AC_CHECK_HEADER([bfd.h],, [AC_MSG_ERROR(cannot find bfd.h)])
444 AC_CHECK_HEADER([dis-asm.h],, [AC_MSG_ERROR(cannot find dis-asm.h)])
447 cygwin | darwin | netbsd | solaris)
448 AC_CHECK_LIB(intl, dcgettext,, [AC_MSG_ERROR(cannot find libintl (from binutils))])
452 AC_CHECK_LIB(iberty, xstrerror,, [AC_MSG_ERROR(cannot find libiberty (from binutils))])
453 AC_CHECK_LIB(bfd, bfd_get_arch,, [AC_MSG_ERROR(cannot find libbfd (from binutils))])
454 AC_CHECK_LIB(opcodes, disassembler,, [AC_MSG_ERROR(cannot find libopcodes (from binutils))])
455 AC_DEFINE([WITH_BINUTILS_DISASSEMBLER], 1, [use binutils disassembler])
456 AM_CONDITIONAL([WITH_BINUTILS_DISASSEMBLER], [true])
459 AM_CONDITIONAL([WITH_BINUTILS_DISASSEMBLER], [false])
463 AM_CONDITIONAL([WITH_BINUTILS_DISASSEMBLER], [false])
467 dnl check for statistics
468 AC_MSG_CHECKING(whether statistics generation should be enabled)
469 AC_ARG_ENABLE([statistics],
470 [AS_HELP_STRING(--enable-statistics,enable statistics generation [[default=no]])],
471 [case "${enableval}" in
472 yes) ENABLE_STATISTICS=yes;;
473 *) ENABLE_STATISTICS=no;;
475 [ENABLE_STATISTICS=no])
476 AC_MSG_RESULT(${ENABLE_STATISTICS})
477 AM_CONDITIONAL([ENABLE_STATISTICS], test x"${ENABLE_STATISTICS}" = "xyes")
479 if test x"${ENABLE_STATISTICS}" = "xyes"; then
480 AC_DEFINE([ENABLE_STATISTICS], 1, [enable statistics])
484 dnl check for verifier
485 AC_MSG_CHECKING(whether classfile verification should be enabled)
486 AC_ARG_ENABLE([verifier],
487 [AS_HELP_STRING(--disable-verifier,disable classfile verification [[default=yes]])],
488 [case "${enableval}" in
489 no) ENABLE_VERIFIER=no;;
490 *) ENABLE_VERIFIER=yes;;
492 [ENABLE_VERIFIER=yes])
493 AC_MSG_RESULT(${ENABLE_VERIFIER})
494 AM_CONDITIONAL([ENABLE_VERIFIER], test x"${ENABLE_VERIFIER}" = "xyes")
496 if test x"${ENABLE_VERIFIER}" = "xyes"; then
497 AC_DEFINE([ENABLE_VERIFIER], 1, [enable classfile verification])
501 dnl check for compiler timing
502 AC_MSG_CHECKING(whether real-time timing should be enabled)
503 AC_ARG_ENABLE([rt-timing],
504 [AS_HELP_STRING(--enable-rt-timing,enable real-time timing [[default=no]])],
505 [case "${enableval}" in
506 yes) ENABLE_RT_TIMING=yes;;
507 *) ENABLE_RT_TIMING=no;;
509 [ENABLE_RT_TIMING=no])
510 AC_MSG_RESULT(${ENABLE_RT_TIMING})
511 AM_CONDITIONAL([ENABLE_RT_TIMING], test x"${ENABLE_RT_TIMING}" = "xyes")
513 if test x"${ENABLE_RT_TIMING}" = "xyes"; then
514 AC_DEFINE([ENABLE_RT_TIMING], 1, [enable real-time timing])
518 dnl check for cycle count statistics
519 AC_MSG_CHECKING(whether cycle count statistics should be enabled)
520 AC_ARG_ENABLE([cycles-stats],
521 [AS_HELP_STRING(--enable-cycles-stats,enable cycle count statistics [[default=no]])],
522 [case "${enableval}" in
523 yes) ENABLE_CYCLES_STATS=yes;;
524 *) ENABLE_CYCLES_STATS=no;;
526 [ENABLE_CYCLES_STATS=no])
527 AC_MSG_RESULT(${ENABLE_CYCLES_STATS})
528 AM_CONDITIONAL([ENABLE_CYCLES_STATS], test x"${ENABLE_CYCLES_STATS}" = "xyes")
530 if test x"${ENABLE_CYCLES_STATS}" = "xyes"; then
531 AC_DEFINE([ENABLE_CYCLES_STATS], 1, [enable cycle count statistics])
536 AC_MSG_CHECKING(whether to compile JVMTI support)
537 AC_ARG_ENABLE([jvmti],
538 [AS_HELP_STRING(--enable-jvmti,enable JVMTI [[default=no]])],
539 [case "${enableval}" in
540 yes) ENABLE_JVMTI=yes;;
544 AC_MSG_RESULT(${ENABLE_JVMTI})
545 AM_CONDITIONAL([ENABLE_JVMTI], test x"${ENABLE_JVMTI}" = "xyes")
547 if test x"${ENABLE_JVMTI}" = "xyes"; then
548 AC_DEFINE([ENABLE_JVMTI], 1, [use JVMTI])
553 AC_ARG_ENABLE([threads], [AS_HELP_STRING(--enable-threads,enable threads support (none,native) [[default=native]])])
554 AC_ARG_ENABLE([__thread], [AS_HELP_STRING(--enable-__thread,use TLS features)], [use__thread=$enableval], [use__thread=no])
556 AC_MSG_CHECKING(whether to include threads support)
557 enable_threads=${enable_threads:-native}
558 case "$enable_threads" in
561 dnl no threads for boehm
562 ac_configure_args="$ac_configure_args --disable-boehm-threads"
563 AM_CONDITIONAL([ENABLE_THREADS], [false])
566 native | posix | pthreads)
567 AC_DEFINE([ENABLE_THREADS], 1, [enable threads])
569 AM_CONDITIONAL([ENABLE_THREADS], [true])
571 AC_MSG_RESULT(yes, native)
572 AC_CHECK_LIB(pthread, main)
574 ARCH_CFLAGS="$ARCH_CFLAGS -D_REENTRANT"
576 dnl we changed ARCH_CFLAGS, set CFLAGS again
577 CFLAGS="$ARCH_CFLAGS $OPT_CFLAGS"
579 dnl tell boehm to support threads as well
580 ac_configure_args="$ac_configure_args --enable-boehm-threads=posix"
584 AC_MSG_ERROR($enable_threads is an unknown thread package)
589 dnl Check whether the compiler supports the __thread keyword.
590 if test "x$use__thread" != xno; then
591 AC_CACHE_CHECK([for __thread], ac_cv_gcc___thread,
592 [cat > conftest.c <<\EOF
595 if AC_TRY_COMMAND([${CC-cc} $ARCH_CFLAGS $OPT_CFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
596 ac_cv_gcc___thread=yes
598 ac_cv_gcc___thread=no
601 if test "$ac_cv_gcc___thread" = yes; then
602 AC_DEFINE([HAVE___THREAD], 1, [have __thread])
605 ac_cv_gcc___thread=no
609 dnl check if if-conversion should be supported
610 AC_MSG_CHECKING(whether if-conversion should be supported)
611 AC_ARG_ENABLE([ifconv],
612 [AS_HELP_STRING(--disable-ifconv,disable if-conversion [[default=yes]])],
613 [case "${enableval}" in
614 no) ENABLE_IFCONV=no;;
615 *) ENABLE_IFCONV=yes;;
618 AC_MSG_RESULT(${ENABLE_IFCONV})
619 AM_CONDITIONAL([ENABLE_IFCONV], test x"${ENABLE_IFCONV}" = "xyes")
621 if test x"${ENABLE_IFCONV}" = "xyes"; then
622 AC_DEFINE([ENABLE_IFCONV], 1, [enable if-conversion])
626 dnl check for inlining
627 AC_MSG_CHECKING(whether method inlining should be supported)
628 AC_ARG_ENABLE([inlining],
629 [AS_HELP_STRING(--enable-inlining,enable method inlining [[default=no]])],
630 [case "${enableval}" in
631 yes) ENABLE_INLINING=yes;;
632 *) ENABLE_INLINING=no;;
634 [ENABLE_INLINING=no])
635 AC_MSG_RESULT(${ENABLE_INLINING})
636 AM_CONDITIONAL([ENABLE_INLINING], test x"${ENABLE_INLINING}" = "xyes")
638 if test x"${ENABLE_INLINING}" = "xyes"; then
639 AC_DEFINE([ENABLE_INLINING], 1, [use method inlining])
643 dnl check for inlining debug options
644 AC_MSG_CHECKING(whether method inlining debug options should be enabled)
645 AC_ARG_ENABLE([inlining-debug],
646 [AS_HELP_STRING(--enable-inlining-debug,enable method inlining debug options [[default=no]])],
647 [case "${enableval}" in
648 yes) ENABLE_INLINING_DEBUG=yes;;
649 *) ENABLE_INLINING_DEBUG=no;;
651 [ENABLE_INLINING_DEBUG=no])
652 AC_MSG_RESULT(${ENABLE_INLINING_DEBUG})
653 AM_CONDITIONAL([ENABLE_INLINING_DEBUG], test x"${ENABLE_INLINING_DEBUG}" = "xyes")
655 if test x"${ENABLE_INLINING_DEBUG}" = "xyes"; then
656 AC_DEFINE([ENABLE_INLINING_DEBUG], 1, [enable method inlining debug options])
660 dnl check for replacement
661 AC_MSG_CHECKING(whether on-stack replacement should be supported)
662 AC_ARG_ENABLE([replacement],
663 [AS_HELP_STRING(--enable-replacement,enable on-stack replacement [[default=no]])],
664 [case "${enableval}" in
665 yes) ENABLE_REPLACEMENT=yes;;
666 *) ENABLE_REPLACEMENT=no;;
668 [ENABLE_REPLACEMENT=no])
669 AC_MSG_RESULT(${ENABLE_REPLACEMENT})
670 AM_CONDITIONAL([ENABLE_REPLACEMENT], test x"${ENABLE_REPLACEMENT}" = "xyes")
672 if test x"${ENABLE_REPLACEMENT}" = "xyes"; then
673 AC_DEFINE([ENABLE_REPLACEMENT], 1, [use on-stack replacement])
677 dnl check for loop optimization
678 AC_MSG_CHECKING(whether loop optimization should be supported)
679 AC_ARG_ENABLE([loop],
680 [AS_HELP_STRING(--enable-loop,enable loop optimization [[default=no]])],
681 [case "${enableval}" in
682 yes) ENABLE_LOOP=yes;;
686 AC_MSG_RESULT(${ENABLE_LOOP})
687 AM_CONDITIONAL([ENABLE_LOOP], test x"${ENABLE_LOOP}" = "xyes")
689 if test x"${ENABLE_LOOP}" = "xyes"; then
690 AC_DEFINE([ENABLE_LOOP], 1, [use loop optimization])
694 dnl check if linear scan register allocator(lsra) with SSA should be used
695 AC_MSG_CHECKING(whether lsra with ssa should be supported)
697 [AS_HELP_STRING(--disable-ssa,disable ssa [[default=no]])],
698 [case "${enableval}" in
703 AC_MSG_RESULT(${ENABLE_SSA})
704 AM_CONDITIONAL([ENABLE_SSA], test x"${ENABLE_SSA}" = "xyes")
706 if test x"${ENABLE_SSA}" = "xyes"; then
707 AC_DEFINE([ENABLE_SSA], 1, [enable lsra with ssa])
712 dnl check if linear scan register allocator(lsra) should be used
713 AC_MSG_CHECKING(whether lsra should be supported)
714 AC_ARG_ENABLE([lsra],
715 [AS_HELP_STRING(--enable-lsra,enable linear scan register allocator [[default=no]])],
716 [case "${enableval}" in
717 yes) ENABLE_LSRA=yes;;
722 if test x"${ENABLE_LSRA}" = "xyes"; then
723 if test x"${ENABLE_SSA}" = "xyes"; then
727 AC_MSG_RESULT(${ENABLE_LSRA})
728 AM_CONDITIONAL([ENABLE_LSRA], test x"${ENABLE_LSRA}" = "xyes")
730 if test x"${ENABLE_LSRA}" = "xyes"; then
731 AC_DEFINE([ENABLE_LSRA], 1, [enable lsra])
735 dnl check if profiling should be supported
736 AC_MSG_CHECKING(whether profiling should be supported)
737 AC_ARG_ENABLE([profiling],
738 [AS_HELP_STRING(--enable-profiling,enable profiling [[default=no]])],
739 [case "${enableval}" in
740 yes) ENABLE_PROFILING=yes;;
741 *) ENABLE_PROFILING=no;;
743 [ENABLE_PROFILING=no])
744 AC_MSG_RESULT(${ENABLE_PROFILING})
745 AM_CONDITIONAL([ENABLE_PROFILING], test x"${ENABLE_PROFILING}" = "xyes")
747 if test x"${ENABLE_PROFILING}" = "xyes"; then
748 AC_DEFINE([ENABLE_PROFILING], 1, [enable profiling])
752 dnl check for instruction scheduler
753 AC_ARG_ENABLE([scheduler], [AS_HELP_STRING(--enable-scheduler,enable instruction scheduler [[default=no]])])
755 AC_MSG_CHECKING(whether instruction scheduler should be supported)
756 if test x"${USE_SCHEDULER}" = "x1" -o x"$enable_scheduler" = "xyes"; then
757 case "${ARCH_DIR}" in
761 AC_MSG_ERROR(instruction scheduler is not available for ${ARCH_DIR} code generator)
766 AC_DEFINE([USE_SCHEDULER], 1, [use scheduler])
767 AM_CONDITIONAL([USE_SCHEDULER], [true])
770 AM_CONDITIONAL([USE_SCHEDULER], [false])
774 dnl check if zlib should be used
775 AC_MSG_CHECKING(whether ZIP/JAR archives should be supported)
776 AC_ARG_ENABLE([zlib],
777 [AS_HELP_STRING(--disable-zlib,disable ZIP/JAR archive support (needs zlib) [[default=yes]])],
778 [case "${enableval}" in
783 AC_MSG_RESULT(${ENABLE_ZLIB})
785 if test x"${ENABLE_ZLIB}" = "xyes"; then
786 AC_CHECK_HEADERS([zconf.h],, [AC_MSG_ERROR(cannot find zconf.h)])
787 AC_CHECK_HEADERS([zlib.h],, [AC_MSG_ERROR(cannot find zlib.h)])
788 AC_CHECK_LIB(z, inflate,, [AC_MSG_ERROR(cannot find libz)])
789 AC_DEFINE([ENABLE_ZLIB], 1, [use zlib])
791 AM_CONDITIONAL([ENABLE_ZLIB], test x"${ENABLE_ZLIB}" = "xyes")
794 dnl check for stuff to be built
798 dnl check if a libjvm.so should be built
799 AC_MSG_CHECKING(whether to build a libjvm.so)
800 AC_ARG_ENABLE([libjvm],
801 [AS_HELP_STRING(--disable-libjvm,build a libjvm.so [[default=yes]])],
802 [case "${enableval}" in
803 no) ENABLE_LIBJVM=no;;
804 *) ENABLE_LIBJVM=yes;;
807 AC_MSG_RESULT(${ENABLE_LIBJVM})
808 AM_CONDITIONAL([ENABLE_LIBJVM], test x"${ENABLE_LIBJVM}" = "xyes")
809 AC_SUBST(ENABLE_LIBJVM)
811 if test x"${ENABLE_LIBJVM}" = "xyes"; then
812 AC_DEFINE([ENABLE_LIBJVM], 1, [enable libjvm.so])
814 dnl set AC_ENABLE_SHARED and AC_DISABLE_STATIC properly
827 dnl check if CACAO should be linked statically
828 AC_MSG_CHECKING(whether to link CACAO statically)
829 AC_ARG_ENABLE([staticvm],
830 [AS_HELP_STRING(--enable-staticvm,link CACAO statically [[default=no]])],
831 [case "${enableval}" in
832 yes) ENABLE_STATICVM=yes
833 AC_DEFINE([ENABLE_STATICVM], 1, [link CACAO statically])
835 *) ENABLE_STATICVM=no;;
837 [ENABLE_STATICVM=no])
838 AC_MSG_RESULT(${ENABLE_STATICVM})
839 AM_CONDITIONAL([ENABLE_STATICVM], test x"${ENABLE_STATICVM}" = "xyes")
840 AC_SUBST(ENABLE_STATICVM)
843 dnl where is CACAO's vm.zip
844 AC_MSG_CHECKING(where CACAO's vm.zip is installed)
845 AC_ARG_WITH([vm-zip],
846 [AS_HELP_STRING(--with-vm-zip=<path>,path to CACAO's vm.zip (includes the name of the file and may be flat) [[default=/usr/local/cacao/share/cacao/vm.zip]])],
847 [CACAO_VM_ZIP=${withval}],
848 [CACAO_VM_ZIP=${CACAO_PREFIX}/share/cacao/vm.zip])
849 AC_MSG_RESULT(${CACAO_VM_ZIP})
850 AC_DEFINE_UNQUOTED([CACAO_VM_ZIP], "${CACAO_VM_ZIP}", [CACAO's vm.zip])
851 AC_SUBST(CACAO_VM_ZIP)
854 dnl which Java core library are we using?
855 AC_MSG_CHECKING(which Java core library to use)
856 AC_ARG_WITH([classpath],
857 [AS_HELP_STRING(--with-classpath=<type>,specifies which type of classpath to use as Java core library (gnu) [[default=gnu]])],
858 [case "${withval}" in
860 WITH_CLASSPATH=cldc1.1
861 AC_DEFINE([WITH_CLASSPATH_CLDC1_1], 1, [use Sun's CLDC1.1 classes])
862 AC_SUBST(WITH_CLASSPATH_CLDC1_1)
866 AC_DEFINE([WITH_CLASSPATH_GNU], 1, [use GNU Classpath])
867 AC_SUBST(WITH_CLASSPATH_GNU)
870 AC_MSG_ERROR(unknown classpath ${withval})
874 AC_DEFINE([WITH_CLASSPATH_GNU], 1, [use GNU Classpath])
875 AC_SUBST(WITH_CLASSPATH_GNU)])
876 AC_MSG_RESULT(${WITH_CLASSPATH})
877 AM_CONDITIONAL([WITH_CLASSPATH_CLDC1_1], test x"${WITH_CLASSPATH}" = "xcldc1.1")
878 AM_CONDITIONAL([WITH_CLASSPATH_GNU], test x"${WITH_CLASSPATH}" = "xgnu")
881 dnl where is Java core library installed?
882 AC_MSG_CHECKING(where Java core library is installed)
883 AC_ARG_WITH([classpath-prefix],
884 [AS_HELP_STRING(--with-classpath-prefix=<dir>,installation directory of Java core library [[default=/usr/local/classpath]])],
885 [CLASSPATH_PREFIX=${withval}],
886 [CLASSPATH_PREFIX=/usr/local/classpath])
887 AC_MSG_RESULT(${CLASSPATH_PREFIX})
888 AC_DEFINE_UNQUOTED([CLASSPATH_PREFIX], "${CLASSPATH_PREFIX}", [Java core library installation directory])
889 AC_SUBST(CLASSPATH_PREFIX)
892 dnl where are Java core library classes installed?
893 AC_MSG_CHECKING(where Java core library classes are installed)
894 AC_ARG_WITH([classpath-classes],
895 [AS_HELP_STRING(--with-classpath-classes=<path>,path to Java core library classes (includes the name of the file and may be flat) [[default=/usr/local/classpath/share/classpath/glibj.zip]])],
896 [CLASSPATH_CLASSES=${withval}],
897 [CLASSPATH_CLASSES=${CLASSPATH_PREFIX}/share/classpath/glibj.zip])
898 AC_MSG_RESULT(${CLASSPATH_CLASSES})
899 AC_DEFINE_UNQUOTED([CLASSPATH_CLASSES], "${CLASSPATH_CLASSES}", [Java core library classes])
900 AC_SUBST(CLASSPATH_CLASSES)
903 dnl where are Java core library native libraries installed?
904 AC_MSG_CHECKING(where Java core library native libraries are installed)
905 AC_ARG_WITH([classpath-libdir],
906 [AS_HELP_STRING(--with-classpath-libdir=<dir>,installation directory of Java core library native libraries [[default=/usr/local/classpath/lib]])],
907 [CLASSPATH_LIBDIR=${withval}],
908 [CLASSPATH_LIBDIR=${CLASSPATH_PREFIX}/lib])
909 AC_MSG_RESULT(${CLASSPATH_LIBDIR})
911 dnl expand CLASSPATH_LIBDIR to something that is usable in C code
912 AS_AC_EXPAND([CLASSPATH_LIBDIR], ${CLASSPATH_LIBDIR})
913 AC_DEFINE_UNQUOTED([CLASSPATH_LIBDIR], "${CLASSPATH_LIBDIR}", [Java core library native libraries installation directory])
914 AC_SUBST(CLASSPATH_LIBDIR)
917 dnl where are Java core library headers installed?
918 AC_MSG_CHECKING(where Java core library headers are installed)
919 AC_ARG_WITH([classpath-includedir],
920 [AS_HELP_STRING(--with-classpath-includedir=<dir>,installation directory of Java core library headers [[default=/usr/local/classpath/include]])],
921 [CLASSPATH_INCLUDEDIR=${withval}],
922 [CLASSPATH_INCLUDEDIR=${CLASSPATH_PREFIX}/include])
923 AC_MSG_RESULT(${CLASSPATH_INCLUDEDIR})
925 AC_CHECK_HEADER([${CLASSPATH_INCLUDEDIR}/jni.h],
926 [AC_DEFINE_UNQUOTED([CLASSPATH_JNI_H], "${CLASSPATH_INCLUDEDIR}/jni.h", [Java core library jni.h header])],
927 [AC_MSG_ERROR(cannot find jni.h)])
930 dnl if we compile for a JRE-style directory layout
931 AC_MSG_CHECKING(if we compile for a JRE-style directory layout)
932 AC_ARG_WITH([jre-layout],
933 [AS_HELP_STRING(--with-jre-layout,compile for JRE-style directory layout [[default=no]])],
934 [case "${enableval}" in
935 yes) WITH_JRE_LAYOUT=yes
936 AC_DEFINE([WITH_JRE_LAYOUT], 1, [with JRE layout])
938 *) WITH_JRE_LAYOUT=no;;
940 [WITH_JRE_LAYOUT=no])
941 AC_MSG_RESULT(${WITH_JRE_LAYOUT})
944 dnl check if GNU Classpath should be linked statically into CACAO
945 AC_MSG_CHECKING(whether to link GNU Classpath native libraries statically into CACAO)
946 AC_ARG_WITH([static-classpath],
947 [AS_HELP_STRING(--with-static-classpath,link GNU classpath native libraries statically into CACAO [[default=no]])],
948 [case "${enableval}" in
949 yes) WITH_STATIC_CLASSPATH=yes;;
950 *) WITH_STATIC_CLASSPATH=no;;
952 [WITH_STATIC_CLASSPATH=no])
953 AC_MSG_RESULT(${WITH_STATIC_CLASSPATH})
955 if test x"${WITH_STATIC_CLASSPATH}" = "xyes"; then
956 AC_DEFINE([WITH_STATIC_CLASSPATH], 1, [link GNU classpath native libraries statically into CACAO])
958 dnl check for some classpath related stuff when we link statically
961 dnl we need this check for --enable-staticvm, otherwise ltdl can't find dlopen
962 if test x"${ENABLE_STATICVM}" = "xyes"; then
963 AC_CHECK_LIB(dl, dlopen,, [AC_MSG_ERROR(cannot find libdl)])
966 AC_CHECK_HEADERS([ltdl.h],, [AC_MSG_ERROR(cannot find ltdl.h)])
967 AC_CHECK_LIB(ltdl, lt_dlopen,, [AC_MSG_ERROR(cannot find libltdl)])
969 AM_CONDITIONAL([WITH_STATIC_CLASSPATH], test x"${WITH_STATIC_CLASSPATH}" = "xyes")
970 AC_SUBST(WITH_STATIC_CLASSPATH)
973 dnl check for some programs we need
978 dnl finally pass CFLAGS to Makefiles via AM_CFLAGS
980 AM_CFLAGS=$ARCH_CFLAGS
984 AC_CONFIG_FILES([Makefile]
986 [contrib/setenvinstalled]
987 [contrib/setenvsource]
989 [doc/handbook/Makefile]
993 [src/cacaoh/Makefile]
994 [src/fdlibm/Makefile]
997 [src/mm/cacao-gc/Makefile]
998 [src/native/Makefile]
999 [src/native/include/Makefile]
1000 [src/native/jvmti/Makefile]
1001 [src/native/tools/Makefile]
1002 [src/native/vm/Makefile]
1003 [src/native/vm/cldc1.1/Makefile]
1004 [src/native/vm/gnu/Makefile]
1005 [src/scripts/Makefile]
1007 [src/threads/Makefile]
1008 [src/threads/native/Makefile]
1009 [src/threads/none/Makefile]
1010 [src/toolbox/Makefile]
1012 [src/vm/jit/Makefile]
1013 [src/vm/jit/allocator/Makefile]
1014 [src/vm/jit/alpha/Makefile]
1015 [src/vm/jit/alpha/freebsd/Makefile]
1016 [src/vm/jit/alpha/linux/Makefile]
1017 [src/vm/jit/arm/Makefile]
1018 [src/vm/jit/arm/linux/Makefile]
1019 [src/vm/jit/i386/Makefile]
1020 [src/vm/jit/i386/cygwin/Makefile]
1021 [src/vm/jit/i386/darwin/Makefile]
1022 [src/vm/jit/i386/freebsd/Makefile]
1023 [src/vm/jit/i386/linux/Makefile]
1024 [src/vm/jit/intrp/Makefile]
1025 [src/vm/jit/inline/Makefile]
1026 [src/vm/jit/loop/Makefile]
1027 [src/vm/jit/mips/Makefile]
1028 [src/vm/jit/mips/irix/Makefile]
1029 [src/vm/jit/mips/linux/Makefile]
1030 [src/vm/jit/optimizing/Makefile]
1031 [src/vm/jit/parisc/Makefile]
1032 [src/vm/jit/parisc/linux/Makefile]
1033 [src/vm/jit/powerpc/Makefile]
1034 [src/vm/jit/powerpc/darwin/Makefile]
1035 [src/vm/jit/powerpc/linux/Makefile]
1036 [src/vm/jit/powerpc/netbsd/Makefile]
1037 [src/vm/jit/powerpc64/Makefile]
1038 [src/vm/jit/powerpc64/linux/Makefile]
1039 [src/vm/jit/s390/Makefile]
1040 [src/vm/jit/schedule/Makefile]
1041 [src/vm/jit/sparc64/Makefile]
1042 [src/vm/jit/sparc64/linux/Makefile]
1043 [src/vm/jit/sparc64/solaris/Makefile]
1044 [src/vm/jit/tools/Makefile]
1045 [src/vm/jit/verify/Makefile]
1046 [src/vm/jit/x86_64/Makefile]
1047 [src/vm/jit/x86_64/freebsd/Makefile]
1048 [src/vm/jit/x86_64/linux/Makefile]
1049 [src/vmcore/Makefile]
1051 [tests/regression/Makefile]
1052 [tests/regression/codepatching/Makefile]
1053 [tests/regression/jasmin/Makefile]
1054 [tests/regression/native/Makefile]
1055 [tests/regression/resolving/Makefile]
1056 [tests/regression/resolving/classes1/Makefile]
1057 [tests/regression/resolving/classes2/Makefile]
1058 [tests/regression/resolving/classes3/Makefile]
1062 dnl now configure subpackages with OPT_CFLAGS and ARCH_CFLAGS
1065 AC_CONFIG_SUBDIRS(src/mm/boehm-gc)
1073 ## indent-tabs-mode: t
1074 ## c-basic-offset: 4
1076 ## compile-command: "automake --add-missing"