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 8112 2007-06-20 17:54:36Z twisti $
27 dnl Process this file with autoconf to produce a configure script.
30 AC_INIT(cacao, 0.98+svn, cacao@cacaojvm.org)
31 AC_CONFIG_SRCDIR(src/cacao/cacao.c)
34 AM_INIT_AUTOMAKE([1.9.0 dist-bzip2])
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 | armv4 | 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="-D__S390__"
98 ARCH_CFLAGS="-mcpu=v9 -m64 -D__SPARC_64__"
103 ARCH_CFLAGS="-D__X86_64__"
108 ENABLE_STATICVM="yes"
109 ARCH_CFLAGS="-D__XDSPCORE__"
114 AC_MSG_ERROR($host_cpu systems are not supported at this time)
122 INTRP_CFLAGS="$ARCH_CFLAGS -D__WINDOWS__ -D__CYGWIN__ -Wall -Wno-long-long"
123 ARCH_CFLAGS="$ARCH_CFLAGS -D__WINDOWS__ -D__CYGWIN__ -ansi -pedantic -Wall -Wno-long-long"
128 INTRP_CFLAGS="$ARCH_CFLAGS -D__DARWIN__ -Wall -Wno-long-long"
129 ARCH_CFLAGS="$ARCH_CFLAGS -D__DARWIN__ -ansi -pedantic -Wall -Wno-long-long"
134 INTRP_CFLAGS="$ARCH_CFLAGS -D__FREEBSD__ -Wall -Wno-long-long -D_XOPEN_SOURCE_EXTENDED"
135 ARCH_CFLAGS="$ARCH_CFLAGS -D__FREEBSD__ -ansi -pedantic -Wall -Wno-long-long -D_XOPEN_SOURCE_EXTENDED"
140 INTRP_CFLAGS="$ARCH_CFLAGS -D__IRIX__"
141 ARCH_CFLAGS="$ARCH_CFLAGS -D__IRIX__"
146 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"
147 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"
150 dnl must be before *linux*
153 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"
154 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"
159 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"
160 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"
165 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"
166 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"
171 dnl on solaris the architecture defines 'sparc','sun','unix' are not set when cpp is called with -ansi
172 dnl therefore we add them here
173 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"
174 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"
182 dnl temporary set the CFLAGS for configure tests (e.g. inline keyword)
183 dnl we set it properly at the end of this file
184 CFLAGS="$ARCH_CFLAGS $OPT_CFLAGS"
186 dnl set interpreter flags
187 AC_SUBST(INTRP_CFLAGS)
189 dnl define some stuff required for --fullversion
190 AC_DEFINE_UNQUOTED(VERSION_CONFIGURE_ARGS, "$ac_configure_args", [configure arguments])
191 AC_DEFINE_UNQUOTED(VERSION_CC, "$CC", [CC used])
192 AC_DEFINE_UNQUOTED(VERSION_CFLAGS, "$OPT_CFLAGS $ARCH_CFLAGS", [CFLAGS used])
195 dnl define and substitute some architecture specific variables
196 AC_DEFINE_UNQUOTED([ARCH_DIR], "${ARCH_DIR}", [architecture directory])
199 AC_SUBST(USE_SCHEDULER)
202 dnl Checks for programs.
212 dnl Checks for header files.
216 dnl keep them alpha-sorted!
217 AC_CHECK_HEADERS([fcntl.h])
218 AC_CHECK_HEADERS([stdlib.h])
219 AC_CHECK_HEADERS([string.h])
220 AC_CHECK_HEADERS([time.h])
221 AC_CHECK_HEADERS([unistd.h])
222 AC_CHECK_HEADERS([sys/ioctl.h])
223 AC_CHECK_HEADERS([sys/mman.h])
224 AC_CHECK_HEADERS([sys/resource.h])
225 AC_CHECK_HEADERS([sys/select.h])
226 AC_CHECK_HEADERS([sys/stat.h])
227 AC_CHECK_HEADERS([sys/time.h])
228 AC_CHECK_HEADERS([sys/types.h])
230 dnl this is for fdlibm
231 AC_CHECK_HEADERS([stdint.h])
232 AC_CHECK_HEADERS([inttypes.h])
233 AC_CHECK_HEADERS([sys/config.h])
234 AC_CHECK_HEADERS([sys/types.h])
235 AC_EGREP_HEADER(uint32_t, stdint.h, AC_DEFINE(HAVE_INT32_DEFINED, 1, [Define to 1 if you have uint32_t]))
236 AC_EGREP_HEADER(uint32_t, inttypes.h, AC_DEFINE(HAVE_INT32_DEFINED, 1, [Define to 1 if you have uint32_t]))
237 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]))
238 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]))
240 dnl Checks for typedefs, structures, and compiler characteristics.
249 dnl Checks for library functions.
250 AC_PROG_GCC_TRADITIONAL
255 dnl keep them alpha-sorted!
256 AC_CHECK_FUNCS([atoi])
257 AC_CHECK_FUNCS([atol])
258 AC_CHECK_FUNCS([calloc])
259 AC_CHECK_FUNCS([confstr])
260 AC_CHECK_FUNCS([free])
261 AC_CHECK_FUNCS([fstat])
262 AC_CHECK_FUNCS([getcwd])
263 AC_CHECK_FUNCS([getpagesize])
264 AC_CHECK_FUNCS([getrusage])
265 AC_CHECK_FUNCS([gettimeofday])
266 AC_CHECK_FUNCS([ioctl])
267 AC_CHECK_FUNCS([isnan])
268 AC_CHECK_FUNCS([localtime])
269 AC_CHECK_FUNCS([localtime_r])
270 AC_CHECK_FUNCS([lseek])
271 AC_CHECK_FUNCS([mmap])
272 AC_CHECK_FUNCS([mprotect])
273 AC_CHECK_FUNCS([open])
274 AC_CHECK_FUNCS([scandir])
275 AC_CHECK_FUNCS([select])
276 AC_CHECK_FUNCS([strchr])
277 AC_CHECK_FUNCS([strdup])
278 AC_CHECK_FUNCS([strerror])
279 AC_CHECK_FUNCS([strncmp])
280 AC_CHECK_FUNCS([strstr])
281 AC_CHECK_FUNCS([time])
284 dnl Checks for libraries.
286 dnl Checking sizeof void *
287 AC_CHECK_SIZEOF(void *)
291 dnl define install prefix
292 if test "x$prefix" = "xNONE"; then
293 CACAO_PREFIX=$ac_default_prefix
297 AC_DEFINE_UNQUOTED([CACAO_PREFIX], "${CACAO_PREFIX}", [installation prefix])
298 AC_SUBST(CACAO_PREFIX)
300 dnl define libdir prefix
301 if test "x$libdir" = "xNONE"; then
302 CACAO_LIBDIR=$ac_default_libdir
306 dnl expand CACAO_LIBDIR to something that is usable in C code
307 AS_AC_EXPAND([CACAO_LIBDIR], ${CACAO_LIBDIR})
308 AC_DEFINE_UNQUOTED([CACAO_LIBDIR], "${CACAO_LIBDIR}", [library installation prefix])
309 AC_SUBST(CACAO_LIBDIR)
320 dnl check for stuff that should be done in software
322 AC_CHECK_SOFT_FLOAT_CMP
323 AC_CHECK_SOFT_DOUBLE_CMP
326 dnl check for interpreter
327 AC_ARG_ENABLE([intrp], [AS_HELP_STRING(--enable-intrp,enable interpreter [[default=no]])])
329 AC_MSG_CHECKING(whether interpreter should be compiled)
330 if test x"$enable_intrp" = "xyes"; then
332 AC_DEFINE([ENABLE_INTRP], 1, [enable interpreter])
333 AM_CONDITIONAL([ENABLE_INTRP], [true])
340 [AS_HELP_STRING(--with-ffi,use libffi to call native functions)],
342 AC_CHECK_HEADERS([ffi.h],, [AC_MSG_ERROR(cannot find ffi.h)])
343 AC_CHECK_LIB(ffi, ffi_call,, [AC_MSG_ERROR(cannot find libffi)])
344 AC_DEFINE([WITH_FFI], 1, [use libffi])],
347 dnl check for libffcall
348 AC_ARG_WITH([ffcall],
349 [AS_HELP_STRING(--with-ffcall,use libffcall to call native functions)],
351 AC_CHECK_HEADERS([avcall.h],, [AC_MSG_ERROR(cannot find avcall.h)])
352 AC_CHECK_LIB(avcall, __builtin_avcall,, [AC_MSG_ERROR(cannot find libavcall (from libffcall))])
353 AC_DEFINE([WITH_FFCALL], 1, [use libffcall])],
356 dnl check for libffi or libffcall
357 if test x"${WITH_FFI}" = "xyes" -a x"${WITH_FFCALL}" = "xyes"; then
358 AC_ERROR(Enable only libffi or libffcall.)
360 if test x"${WITH_FFI}" = "xno" -a x"${WITH_FFCALL}" = "xno"; then
361 AC_ERROR(Enable one of libffi or libffcall.)
366 AM_CONDITIONAL([ENABLE_INTRP], [false])
370 if test x"${ENABLE_JIT}" = "xno" -a x"${ENABLE_INTRP}" = "xno"; then
371 AC_ERROR(You have to enable at least the JIT or the interpreter.)
375 dnl check for garbage collector usage
376 AC_ARG_ENABLE([gc], [AS_HELP_STRING(--enable-gc,enable garbage collector support (none,boehm,cacao) [[default=boehm]])])
377 AC_MSG_CHECKING(whether GC should be enabled)
378 enable_gc=${enable_gc:-boehm}
381 AC_DEFINE([DISABLE_GC], 1, [disable garbage collector])
387 AC_DEFINE([ENABLE_GC_BOEHM], 1, [enable conservative boehm-gc])
389 AC_MSG_RESULT(yes, boehm-gc)
393 AC_DEFINE([ENABLE_GC_CACAO], 1, [enable exact cacao-gc])
395 AC_MSG_RESULT(yes, cacao-gc)
399 AC_MSG_ERROR($enable_gc is an unknown garbage collector package)
402 AM_CONDITIONAL([DISABLE_GC], test x"${ENABLE_GC}" = "xnone")
403 AM_CONDITIONAL([ENABLE_GC_BOEHM], test x"${ENABLE_GC}" = "xboehm")
404 AM_CONDITIONAL([ENABLE_GC_CACAO], test x"${ENABLE_GC}" = "xcacao")
408 dnl check for dump memory usage
409 AC_MSG_CHECKING(whether dump memory should be disabled)
410 AC_ARG_ENABLE([dump],
411 [AS_HELP_STRING(--disable-dump,disable dump memory (for debugging only!) [[default=yes]])],
412 [case "${enableval}" in
415 AC_DEFINE([DISABLE_DUMP], 1, [disable dump memory])
420 AC_MSG_RESULT(${DISABLE_DUMP})
424 AC_MSG_CHECKING(whether debug code generation should be enabled)
425 AC_ARG_ENABLE([debug],
426 [AS_HELP_STRING(--disable-debug,disable debug code generation [[default=yes]])],
427 [case "${enableval}" in
429 AC_DEFINE([NDEBUG], 1, [disable debug code])
435 if test x"${NDEBUG}" = "xno"; then
440 AM_CONDITIONAL([NDEBUG], test x"${NDEBUG}" = "xyes")
443 dnl check for memcheck support
444 AC_MSG_CHECKING(whether debugging memory checks should be enabled)
445 AC_ARG_ENABLE([memcheck],
446 [AS_HELP_STRING(--enable-memcheck,enable debugging memory checks [[default=no]])],
447 [case "${enableval}" in
448 yes) ENABLE_MEMCHECK=yes;;
449 *) ENABLE_MEMCHECK=no;;
451 [ENABLE_MEMCHECK=no])
452 AC_MSG_RESULT(${ENABLE_MEMCHECK})
453 AM_CONDITIONAL([ENABLE_MEMCHECK], test x"${ENABLE_MEMCHECK}" = "xyes")
455 if test x"${ENABLE_MEMCHECK}" = "xyes"; then
456 AC_DEFINE([ENABLE_MEMCHECK], 1, [perform debugging memory checks])
460 dnl check for vmlog support
461 AC_MSG_CHECKING(whether vmlog tracing should be enabled)
462 AC_ARG_ENABLE([vmlog],
463 [AS_HELP_STRING(--enable-vmlog,enable vmlog tracing [[default=no]])],
464 [case "${enableval}" in
465 yes) ENABLE_VMLOG=yes;;
469 AC_MSG_RESULT(${ENABLE_VMLOG})
470 AM_CONDITIONAL([ENABLE_VMLOG], test x"${ENABLE_VMLOG}" = "xyes")
472 if test x"${ENABLE_VMLOG}" = "xyes"; then
473 AC_DEFINE([ENABLE_VMLOG], 1, [enable vmlog tracing code])
477 dnl check for disassembler support
478 AC_MSG_CHECKING(whether disassembler should be enabled)
479 AC_ARG_ENABLE([disassembler],
480 [AS_HELP_STRING(--enable-disassembler,enable disassembler [[default=no]])],
481 [case "${enableval}" in
482 yes) ENABLE_DISASSEMBLER=yes;;
483 *) ENABLE_DISASSEMBLER=no;;
485 [ENABLE_DISASSEMBLER=no])
486 AC_MSG_RESULT(${ENABLE_DISASSEMBLER})
487 AM_CONDITIONAL([ENABLE_DISASSEMBLER], test x"${ENABLE_DISASSEMBLER}" = "xyes")
489 if test x"${ENABLE_DISASSEMBLER}" = "xyes"; then
490 AC_DEFINE([ENABLE_DISASSEMBLER], 1, [enable disassembler])
492 dnl check for binutils headers and libraries on some architectures for the
494 case "${ARCH_DIR}" in
495 arm | i386 | powerpc | x86_64 | sparc64 | powerpc64 | s390 | m68k)
496 AC_CHECK_HEADER([ansidecl.h],, [AC_MSG_ERROR(cannot find ansidecl.h)])
497 AC_CHECK_HEADER([symcat.h],, [AC_MSG_ERROR(cannot find symcat.h)])
498 AC_CHECK_HEADER([bfd.h],, [AC_MSG_ERROR(cannot find bfd.h)])
499 AC_CHECK_HEADER([dis-asm.h],, [AC_MSG_ERROR(cannot find dis-asm.h)])
502 cygwin | darwin | netbsd | solaris)
503 AC_CHECK_LIB(intl, dcgettext,, [AC_MSG_ERROR(cannot find libintl (from binutils))])
507 AC_CHECK_LIB(iberty, xstrerror,, [AC_MSG_ERROR(cannot find libiberty (from binutils))])
508 AC_CHECK_LIB(bfd, bfd_get_arch,, [AC_MSG_ERROR(cannot find libbfd (from binutils))])
509 AC_CHECK_LIB(opcodes, disassembler,, [AC_MSG_ERROR(cannot find libopcodes (from binutils))])
510 AC_DEFINE([WITH_BINUTILS_DISASSEMBLER], 1, [use binutils disassembler])
511 AM_CONDITIONAL([WITH_BINUTILS_DISASSEMBLER], [true])
514 AM_CONDITIONAL([WITH_BINUTILS_DISASSEMBLER], [false])
518 AM_CONDITIONAL([WITH_BINUTILS_DISASSEMBLER], [false])
522 dnl check for statistics
523 AC_MSG_CHECKING(whether statistics generation should be enabled)
524 AC_ARG_ENABLE([statistics],
525 [AS_HELP_STRING(--enable-statistics,enable statistics generation [[default=no]])],
526 [case "${enableval}" in
527 yes) ENABLE_STATISTICS=yes;;
528 *) ENABLE_STATISTICS=no;;
530 [ENABLE_STATISTICS=no])
531 AC_MSG_RESULT(${ENABLE_STATISTICS})
532 AM_CONDITIONAL([ENABLE_STATISTICS], test x"${ENABLE_STATISTICS}" = "xyes")
534 if test x"${ENABLE_STATISTICS}" = "xyes"; then
535 AC_DEFINE([ENABLE_STATISTICS], 1, [enable statistics])
539 dnl check for verifier
540 AC_MSG_CHECKING(whether classfile verification should be enabled)
541 AC_ARG_ENABLE([verifier],
542 [AS_HELP_STRING(--disable-verifier,disable classfile verification [[default=yes]])],
543 [case "${enableval}" in
544 no) ENABLE_VERIFIER=no;;
545 *) ENABLE_VERIFIER=yes;;
547 [ENABLE_VERIFIER=yes])
548 AC_MSG_RESULT(${ENABLE_VERIFIER})
549 AM_CONDITIONAL([ENABLE_VERIFIER], test x"${ENABLE_VERIFIER}" = "xyes")
551 if test x"${ENABLE_VERIFIER}" = "xyes"; then
552 AC_DEFINE([ENABLE_VERIFIER], 1, [enable classfile verification])
556 dnl check for compiler timing
557 AC_MSG_CHECKING(whether real-time timing should be enabled)
558 AC_ARG_ENABLE([rt-timing],
559 [AS_HELP_STRING(--enable-rt-timing,enable real-time timing [[default=no]])],
560 [case "${enableval}" in
561 yes) ENABLE_RT_TIMING=yes;;
562 *) ENABLE_RT_TIMING=no;;
564 [ENABLE_RT_TIMING=no])
565 AC_MSG_RESULT(${ENABLE_RT_TIMING})
566 AM_CONDITIONAL([ENABLE_RT_TIMING], test x"${ENABLE_RT_TIMING}" = "xyes")
568 if test x"${ENABLE_RT_TIMING}" = "xyes"; then
569 AC_DEFINE([ENABLE_RT_TIMING], 1, [enable real-time timing])
573 dnl check for cycle count statistics
574 AC_MSG_CHECKING(whether cycle count statistics should be enabled)
575 AC_ARG_ENABLE([cycles-stats],
576 [AS_HELP_STRING(--enable-cycles-stats,enable cycle count statistics [[default=no]])],
577 [case "${enableval}" in
578 yes) ENABLE_CYCLES_STATS=yes;;
579 *) ENABLE_CYCLES_STATS=no;;
581 [ENABLE_CYCLES_STATS=no])
582 AC_MSG_RESULT(${ENABLE_CYCLES_STATS})
583 AM_CONDITIONAL([ENABLE_CYCLES_STATS], test x"${ENABLE_CYCLES_STATS}" = "xyes")
585 if test x"${ENABLE_CYCLES_STATS}" = "xyes"; then
586 AC_DEFINE([ENABLE_CYCLES_STATS], 1, [enable cycle count statistics])
591 AC_MSG_CHECKING(whether to compile JVMTI support)
592 AC_ARG_ENABLE([jvmti],
593 [AS_HELP_STRING(--enable-jvmti,enable JVMTI [[default=no]])],
594 [case "${enableval}" in
595 yes) ENABLE_JVMTI=yes;;
599 AC_MSG_RESULT(${ENABLE_JVMTI})
600 AM_CONDITIONAL([ENABLE_JVMTI], test x"${ENABLE_JVMTI}" = "xyes")
602 if test x"${ENABLE_JVMTI}" = "xyes"; then
603 AC_DEFINE([ENABLE_JVMTI], 1, [use JVMTI])
607 AC_CHECK_ENABLE_THREADS
610 dnl check if if-conversion should be supported
611 AC_MSG_CHECKING(whether if-conversion should be supported)
612 AC_ARG_ENABLE([ifconv],
613 [AS_HELP_STRING(--disable-ifconv,disable if-conversion [[default=yes]])],
614 [case "${enableval}" in
615 no) ENABLE_IFCONV=no;;
616 *) ENABLE_IFCONV=yes;;
619 AC_MSG_RESULT(${ENABLE_IFCONV})
620 AM_CONDITIONAL([ENABLE_IFCONV], test x"${ENABLE_IFCONV}" = "xyes")
622 if test x"${ENABLE_IFCONV}" = "xyes"; then
623 AC_DEFINE([ENABLE_IFCONV], 1, [enable if-conversion])
627 dnl check for inlining
628 AC_MSG_CHECKING(whether method inlining should be supported)
629 AC_ARG_ENABLE([inlining],
630 [AS_HELP_STRING(--enable-inlining,enable method inlining [[default=no]])],
631 [case "${enableval}" in
632 yes) ENABLE_INLINING=yes;;
633 *) ENABLE_INLINING=no;;
635 [ENABLE_INLINING=no])
636 AC_MSG_RESULT(${ENABLE_INLINING})
637 AM_CONDITIONAL([ENABLE_INLINING], test x"${ENABLE_INLINING}" = "xyes")
639 if test x"${ENABLE_INLINING}" = "xyes"; then
640 AC_DEFINE([ENABLE_INLINING], 1, [use method inlining])
644 dnl check for inlining debug options
645 AC_MSG_CHECKING(whether method inlining debug options should be enabled)
646 AC_ARG_ENABLE([inlining-debug],
647 [AS_HELP_STRING(--enable-inlining-debug,enable method inlining debug options [[default=no]])],
648 [case "${enableval}" in
649 yes) ENABLE_INLINING_DEBUG=yes;;
650 *) ENABLE_INLINING_DEBUG=no;;
652 [ENABLE_INLINING_DEBUG=no])
653 AC_MSG_RESULT(${ENABLE_INLINING_DEBUG})
654 AM_CONDITIONAL([ENABLE_INLINING_DEBUG], test x"${ENABLE_INLINING_DEBUG}" = "xyes")
656 if test x"${ENABLE_INLINING_DEBUG}" = "xyes"; then
657 AC_DEFINE([ENABLE_INLINING_DEBUG], 1, [enable method inlining debug options])
661 dnl check for replacement
662 AC_MSG_CHECKING(whether on-stack replacement should be supported)
663 AC_ARG_ENABLE([replacement],
664 [AS_HELP_STRING(--enable-replacement,enable on-stack replacement [[default=no]])],
665 [case "${enableval}" in
666 yes) ENABLE_REPLACEMENT=yes;;
667 *) ENABLE_REPLACEMENT=no;;
669 [ENABLE_REPLACEMENT=no])
670 AC_MSG_RESULT(${ENABLE_REPLACEMENT})
671 AM_CONDITIONAL([ENABLE_REPLACEMENT], test x"${ENABLE_REPLACEMENT}" = "xyes")
673 if test x"${ENABLE_REPLACEMENT}" = "xyes"; then
674 AC_DEFINE([ENABLE_REPLACEMENT], 1, [use on-stack replacement])
678 dnl check for loop optimization
679 AC_MSG_CHECKING(whether loop optimization should be supported)
680 AC_ARG_ENABLE([loop],
681 [AS_HELP_STRING(--enable-loop,enable loop optimization [[default=no]])],
682 [case "${enableval}" in
683 yes) ENABLE_LOOP=yes;;
687 AC_MSG_RESULT(${ENABLE_LOOP})
688 AM_CONDITIONAL([ENABLE_LOOP], test x"${ENABLE_LOOP}" = "xyes")
690 if test x"${ENABLE_LOOP}" = "xyes"; then
691 AC_DEFINE([ENABLE_LOOP], 1, [use loop optimization])
695 dnl check if linear scan register allocator(lsra) with SSA should be used
696 AC_MSG_CHECKING(whether lsra with ssa should be supported)
698 [AS_HELP_STRING(--disable-ssa,disable ssa [[default=no]])],
699 [case "${enableval}" in
704 AC_MSG_RESULT(${ENABLE_SSA})
705 AM_CONDITIONAL([ENABLE_SSA], test x"${ENABLE_SSA}" = "xyes")
707 if test x"${ENABLE_SSA}" = "xyes"; then
708 AC_DEFINE([ENABLE_SSA], 1, [enable lsra with ssa])
713 dnl check if linear scan register allocator(lsra) should be used
714 AC_MSG_CHECKING(whether lsra should be supported)
715 AC_ARG_ENABLE([lsra],
716 [AS_HELP_STRING(--enable-lsra,enable linear scan register allocator [[default=no]])],
717 [case "${enableval}" in
718 yes) ENABLE_LSRA=yes;;
723 if test x"${ENABLE_LSRA}" = "xyes"; then
724 if test x"${ENABLE_SSA}" = "xyes"; then
728 AC_MSG_RESULT(${ENABLE_LSRA})
729 AM_CONDITIONAL([ENABLE_LSRA], test x"${ENABLE_LSRA}" = "xyes")
731 if test x"${ENABLE_LSRA}" = "xyes"; then
732 AC_DEFINE([ENABLE_LSRA], 1, [enable lsra])
736 dnl check if profiling should be supported
737 AC_MSG_CHECKING(whether profiling should be supported)
738 AC_ARG_ENABLE([profiling],
739 [AS_HELP_STRING(--enable-profiling,enable profiling [[default=no]])],
740 [case "${enableval}" in
741 yes) ENABLE_PROFILING=yes;;
742 *) ENABLE_PROFILING=no;;
744 [ENABLE_PROFILING=no])
745 AC_MSG_RESULT(${ENABLE_PROFILING})
746 AM_CONDITIONAL([ENABLE_PROFILING], test x"${ENABLE_PROFILING}" = "xyes")
748 if test x"${ENABLE_PROFILING}" = "xyes"; then
749 AC_DEFINE([ENABLE_PROFILING], 1, [enable profiling])
753 dnl check for instruction scheduler
754 AC_ARG_ENABLE([scheduler], [AS_HELP_STRING(--enable-scheduler,enable instruction scheduler [[default=no]])])
756 AC_MSG_CHECKING(whether instruction scheduler should be supported)
757 if test x"${USE_SCHEDULER}" = "x1" -o x"$enable_scheduler" = "xyes"; then
758 case "${ARCH_DIR}" in
762 AC_MSG_ERROR(instruction scheduler is not available for ${ARCH_DIR} code generator)
767 AC_DEFINE([USE_SCHEDULER], 1, [use scheduler])
768 AM_CONDITIONAL([USE_SCHEDULER], [true])
771 AM_CONDITIONAL([USE_SCHEDULER], [false])
775 dnl check if zlib should be used
776 AC_MSG_CHECKING(whether ZIP/JAR archives should be supported)
777 AC_ARG_ENABLE([zlib],
778 [AS_HELP_STRING(--disable-zlib,disable ZIP/JAR archive support (needs zlib) [[default=yes]])],
779 [case "${enableval}" in
784 AC_MSG_RESULT(${ENABLE_ZLIB})
786 if test x"${ENABLE_ZLIB}" = "xyes"; then
787 AC_CHECK_HEADERS([zconf.h],, [AC_MSG_ERROR(cannot find zconf.h)])
788 AC_CHECK_HEADERS([zlib.h],, [AC_MSG_ERROR(cannot find zlib.h)])
789 AC_CHECK_LIB(z, inflate,, [AC_MSG_ERROR(cannot find libz)])
790 AC_DEFINE([ENABLE_ZLIB], 1, [use zlib])
792 AM_CONDITIONAL([ENABLE_ZLIB], test x"${ENABLE_ZLIB}" = "xyes")
795 dnl check for stuff to be built
799 dnl check if a libjvm.so should be built
800 AC_MSG_CHECKING(whether to build a libjvm.so)
801 AC_ARG_ENABLE([libjvm],
802 [AS_HELP_STRING(--disable-libjvm,build a libjvm.so [[default=yes]])],
803 [case "${enableval}" in
804 no) ENABLE_LIBJVM=no;;
805 *) ENABLE_LIBJVM=yes;;
808 AC_MSG_RESULT(${ENABLE_LIBJVM})
809 AM_CONDITIONAL([ENABLE_LIBJVM], test x"${ENABLE_LIBJVM}" = "xyes")
810 AC_SUBST(ENABLE_LIBJVM)
812 if test x"${ENABLE_LIBJVM}" = "xyes"; then
813 AC_DEFINE([ENABLE_LIBJVM], 1, [enable libjvm.so])
815 dnl set AC_ENABLE_SHARED and AC_DISABLE_STATIC properly
828 dnl check if CACAO should be linked statically
829 AC_MSG_CHECKING(whether to link CACAO statically)
830 AC_ARG_ENABLE([staticvm],
831 [AS_HELP_STRING(--enable-staticvm,link CACAO statically [[default=no]])],
832 [case "${enableval}" in
833 yes) ENABLE_STATICVM=yes
834 AC_DEFINE([ENABLE_STATICVM], 1, [link CACAO statically])
836 *) ENABLE_STATICVM=no;;
838 [ENABLE_STATICVM=no])
839 AC_MSG_RESULT(${ENABLE_STATICVM})
840 AM_CONDITIONAL([ENABLE_STATICVM], test x"${ENABLE_STATICVM}" = "xyes")
841 AC_SUBST(ENABLE_STATICVM)
844 dnl where is CACAO's vm.zip
845 AC_MSG_CHECKING(where CACAO's vm.zip is installed)
846 AC_ARG_WITH([vm-zip],
847 [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]])],
848 [CACAO_VM_ZIP=${withval}],
849 [CACAO_VM_ZIP=${CACAO_PREFIX}/share/cacao/vm.zip])
850 AC_MSG_RESULT(${CACAO_VM_ZIP})
851 AC_DEFINE_UNQUOTED([CACAO_VM_ZIP], "${CACAO_VM_ZIP}", [CACAO's vm.zip])
852 AC_SUBST(CACAO_VM_ZIP)
855 AC_CHECK_WITH_CLASSPATH
856 AC_CHECK_WITH_CLASSPATH_PREFIX
857 AC_CHECK_WITH_CLASSPATH_CLASSES
858 AC_CHECK_WITH_CLASSPATH_LIBDIR
859 AC_CHECK_WITH_CLASSPATH_INCLUDEDIR
862 dnl if we compile for a JRE-style directory layout
863 AC_MSG_CHECKING(if we compile for a JRE-style directory layout)
864 AC_ARG_WITH([jre-layout],
865 [AS_HELP_STRING(--with-jre-layout,compile for JRE-style directory layout [[default=no]])],
866 [case "${enableval}" in
867 yes) WITH_JRE_LAYOUT=yes
868 AC_DEFINE([WITH_JRE_LAYOUT], 1, [with JRE layout])
870 *) WITH_JRE_LAYOUT=no;;
872 [WITH_JRE_LAYOUT=no])
873 AC_MSG_RESULT(${WITH_JRE_LAYOUT})
876 dnl check if GNU Classpath should be linked statically into CACAO
877 AC_MSG_CHECKING(whether to link GNU Classpath native libraries statically into CACAO)
878 AC_ARG_WITH([static-classpath],
879 [AS_HELP_STRING(--with-static-classpath,link GNU classpath native libraries statically into CACAO [[default=no]])],
880 [case "${enableval}" in
881 yes) WITH_STATIC_CLASSPATH=yes;;
882 *) WITH_STATIC_CLASSPATH=no;;
884 [WITH_STATIC_CLASSPATH=no])
885 AC_MSG_RESULT(${WITH_STATIC_CLASSPATH})
887 if test x"${WITH_STATIC_CLASSPATH}" = "xyes"; then
888 AC_DEFINE([WITH_STATIC_CLASSPATH], 1, [link GNU classpath native libraries statically into CACAO])
890 dnl check for some classpath related stuff when we link statically
893 dnl we need this check for --enable-staticvm, otherwise ltdl can't find dlopen
894 if test x"${ENABLE_STATICVM}" = "xyes"; then
895 AC_CHECK_LIB(dl, dlopen,, [AC_MSG_ERROR(cannot find libdl)])
898 AC_CHECK_HEADERS([ltdl.h],, [AC_MSG_ERROR(cannot find ltdl.h)])
899 AC_CHECK_LIB(ltdl, lt_dlopen,, [AC_MSG_ERROR(cannot find libltdl)])
901 AM_CONDITIONAL([WITH_STATIC_CLASSPATH], test x"${WITH_STATIC_CLASSPATH}" = "xyes")
902 AC_SUBST(WITH_STATIC_CLASSPATH)
905 dnl check for some programs we need
912 dnl If debug build and regex.h available, enable debug filter
913 if test x"${NDEBUG}" = "xno"; then
914 AC_DEFINE(ENABLE_DEBUG_FILTER, 1, [debug filter])
916 dnl If vmlog enambled and regex.h available, enable vmlogfilter
917 AM_CONDITIONAL([ENABLE_VMLOGFILTER], [test x"${ENABLE_VMLOG}" = "xyes"])
920 AM_CONDITIONAL([ENABLE_VMLOGFILTER], [false])
924 dnl finally pass CFLAGS to Makefiles via AM_CFLAGS
926 AM_CFLAGS=$ARCH_CFLAGS
930 AC_CONFIG_FILES([Makefile]
932 [contrib/setenvinstalled]
933 [contrib/setenvsource]
934 [contrib/vmlog/Makefile]
935 [contrib/vmlog/t/Makefile]
937 [doc/handbook/Makefile]
941 [src/cacaoh/Makefile]
942 [src/fdlibm/Makefile]
945 [src/mm/cacao-gc/Makefile]
946 [src/native/Makefile]
947 [src/native/include/Makefile]
948 [src/native/jvmti/Makefile]
949 [src/native/tools/Makefile]
950 [src/native/vm/Makefile]
951 [src/native/vm/cldc1.1/Makefile]
952 [src/native/vm/gnu/Makefile]
953 [src/scripts/Makefile]
955 [src/threads/Makefile]
956 [src/threads/native/Makefile]
957 [src/threads/none/Makefile]
958 [src/toolbox/Makefile]
960 [src/vm/jit/Makefile]
961 [src/vm/jit/allocator/Makefile]
962 [src/vm/jit/alpha/Makefile]
963 [src/vm/jit/alpha/freebsd/Makefile]
964 [src/vm/jit/alpha/linux/Makefile]
965 [src/vm/jit/arm/Makefile]
966 [src/vm/jit/arm/linux/Makefile]
967 [src/vm/jit/i386/Makefile]
968 [src/vm/jit/i386/cygwin/Makefile]
969 [src/vm/jit/i386/darwin/Makefile]
970 [src/vm/jit/i386/freebsd/Makefile]
971 [src/vm/jit/i386/linux/Makefile]
972 [src/vm/jit/intrp/Makefile]
973 [src/vm/jit/inline/Makefile]
974 [src/vm/jit/loop/Makefile]
975 [src/vm/jit/m68k/Makefile]
976 [src/vm/jit/m68k/linux/Makefile]
977 [src/vm/jit/mips/Makefile]
978 [src/vm/jit/mips/irix/Makefile]
979 [src/vm/jit/mips/linux/Makefile]
980 [src/vm/jit/mips/uclinux/Makefile]
981 [src/vm/jit/optimizing/Makefile]
982 [src/vm/jit/parisc/Makefile]
983 [src/vm/jit/parisc/linux/Makefile]
984 [src/vm/jit/powerpc/Makefile]
985 [src/vm/jit/powerpc/darwin/Makefile]
986 [src/vm/jit/powerpc/linux/Makefile]
987 [src/vm/jit/powerpc/netbsd/Makefile]
988 [src/vm/jit/powerpc64/Makefile]
989 [src/vm/jit/powerpc64/linux/Makefile]
990 [src/vm/jit/s390/Makefile]
991 [src/vm/jit/schedule/Makefile]
992 [src/vm/jit/sparc64/Makefile]
993 [src/vm/jit/sparc64/linux/Makefile]
994 [src/vm/jit/sparc64/solaris/Makefile]
995 [src/vm/jit/tools/Makefile]
996 [src/vm/jit/verify/Makefile]
997 [src/vm/jit/x86_64/Makefile]
998 [src/vm/jit/x86_64/freebsd/Makefile]
999 [src/vm/jit/x86_64/linux/Makefile]
1000 [src/vmcore/Makefile]
1002 [tests/regression/Makefile]
1003 [tests/regression/codepatching/Makefile]
1004 [tests/regression/jasmin/Makefile]
1005 [tests/regression/native/Makefile]
1006 [tests/regression/resolving/Makefile]
1007 [tests/regression/resolving/classes1/Makefile]
1008 [tests/regression/resolving/classes2/Makefile]
1009 [tests/regression/resolving/classes3/Makefile]
1013 dnl now configure subpackages with OPT_CFLAGS and ARCH_CFLAGS
1016 AC_CONFIG_SUBDIRS(src/mm/boehm-gc)
1024 ## indent-tabs-mode: t
1025 ## c-basic-offset: 4
1027 ## compile-command: "automake --add-missing"