* configure.ac (AC_CHECK_HEADERS): Added sys/mman.h, sys/resource.h.
[cacao.git] / configure.ac
1 dnl configure.ac
2 dnl
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
7 dnl 
8 dnl This file is part of CACAO.
9 dnl 
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.
14 dnl 
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.
19 dnl 
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
23 dnl 02110-1301, USA.
24 dnl 
25 dnl $Id: configure.ac 7879 2007-05-07 13:45:19Z twisti $
26
27 dnl Process this file with autoconf to produce a configure script.
28
29
30 AC_INIT(cacao, 0.98rc, cacao@cacaojvm.org)
31 AC_CONFIG_SRCDIR(src/cacao/cacao.c)
32 AC_CANONICAL_HOST
33 AC_PREREQ(2.59)
34 AM_INIT_AUTOMAKE([1.9.0])
35 AM_MAINTAINER_MODE
36
37 AM_CONFIG_HEADER([config.h])
38
39 AC_PREFIX_DEFAULT(/usr/local/cacao)
40
41
42 dnl set optimization and debugging for all architectures and systems
43 if test x"$CFLAGS" = "x"; then
44     OPT_CFLAGS="-O0 -g3"
45 else
46     OPT_CFLAGS=$CFLAGS
47 fi
48
49 dnl system type
50 case "$host_cpu" in
51 alpha | alphaev56 | alphapca56 )
52     ARCH_DIR="alpha"
53     ARCH_CFLAGS="-mieee -D__ALPHA__"
54     ;;
55
56 arm | armv4 | armv4tl | armv5b | armv5l )
57     ARCH_DIR="arm"
58     ARCH_CFLAGS="-D__ARM__"
59     ;;
60
61 hppa2.0 )
62     ARCH_DIR="parisc"
63     ARCH_CFLAGS="-D__PARISC__"
64     ;;
65
66 i386 | i486 | i586 | i686 )
67     ARCH_DIR="i386"
68     ARCH_CFLAGS="-D__I386__"
69     ;;
70
71 m68k )
72     ARCH_DIR="m68k"
73     ARCH_CFLAGS="-D__M68K__"
74     ;;
75
76 mips | mipsel )
77     ARCH_DIR="mips"
78     ARCH_CFLAGS="-D__MIPS__"
79     ;;
80
81 powerpc )
82     ARCH_DIR="powerpc"
83     ARCH_CFLAGS="-D__POWERPC__"
84     ;;
85
86 powerpc64 )
87     ARCH_DIR="powerpc64"
88     ARCH_CFLAGS="-D__POWERPC64__"
89     ;;
90
91 s390 )
92     ARCH_DIR="s390"
93     ARCH_CFLAGS="-D__S390__"
94     ;;
95
96 sparc | sparc64 )
97     ARCH_DIR="sparc64"
98     ARCH_CFLAGS="-mcpu=v9 -m64 -D__SPARC_64__"
99     ;;
100
101 x86_64 )
102     ARCH_DIR="x86_64"
103     ARCH_CFLAGS="-D__X86_64__"
104     ;;
105
106 xdspcore )
107     ARCH_DIR="xdspcore"
108     ENABLE_STATICVM="yes"
109     ARCH_CFLAGS="-D__XDSPCORE__"
110     USE_SCHEDULER="1"
111     ;;
112
113 * )
114     AC_MSG_ERROR($host_cpu systems are not supported at this time)
115     ;;
116 esac
117
118 dnl host type
119 case "$host_os" in
120 *cygwin* )
121     OS_DIR="cygwin"
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"
124     ;;
125
126 *darwin* )
127     OS_DIR="darwin"
128     INTRP_CFLAGS="$ARCH_CFLAGS -D__DARWIN__ -Wall -Wno-long-long"
129     ARCH_CFLAGS="$ARCH_CFLAGS -D__DARWIN__ -ansi -pedantic -Wall -Wno-long-long"
130     ;;
131
132 *freebsd* )
133     OS_DIR="freebsd"
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"
136     ;;
137
138 *irix* )
139     OS_DIR="irix"
140     INTRP_CFLAGS="$ARCH_CFLAGS -D__IRIX__"
141     ARCH_CFLAGS="$ARCH_CFLAGS -D__IRIX__"
142     ;;
143
144 *kfreebsd*-gnu)
145     OS_DIR="freebsd"
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"
148     ;;
149
150 dnl must be before *linux*
151 *uclinux | *elf )
152     OS_DIR="uclinux"
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"
155     ;;
156
157 *linux* | *Linux* )
158     OS_DIR="linux"
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"
161     ;;
162
163 *netbsd* )
164     OS_DIR="netbsd"
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"
167     ;;
168
169 *solaris* )
170     OS_DIR="solaris"
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"
175     ;;
176
177 * )
178     ;;
179 esac
180
181
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"
185
186 dnl set interpreter flags
187 AC_SUBST(INTRP_CFLAGS)
188
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])
193
194
195 dnl define and substitute some architecture specific variables
196 AC_DEFINE_UNQUOTED([ARCH_DIR], "${ARCH_DIR}", [architecture directory])
197 AC_SUBST(ARCH_DIR)
198 AC_SUBST(OS_DIR)
199 AC_SUBST(USE_SCHEDULER)
200
201
202 dnl Checks for programs.
203 AC_PROG_CC
204 AM_PROG_AS
205 AC_PROG_LD
206 AC_PROG_LD_GNU
207 AC_PROG_RANLIB
208 AC_PROG_LN_S
209 AC_PROG_MAKE_SET
210 AM_PROG_MKDIR_P
211
212 dnl Checks for header files.
213 AC_HEADER_DIRENT
214 AC_HEADER_STDC
215
216 dnl keep them alpha-sorted!
217 AC_CHECK_HEADERS([fcntl.h])
218 AC_CHECK_HEADERS([unistd.h])
219 AC_CHECK_HEADERS([sys/ioctl.h])
220 AC_CHECK_HEADERS([sys/mman.h])
221 AC_CHECK_HEADERS([sys/resource.h])
222 AC_CHECK_HEADERS([sys/time.h])
223
224 dnl this is for fdlibm
225 AC_CHECK_HEADERS([stdint.h])
226 AC_CHECK_HEADERS([inttypes.h])
227 AC_CHECK_HEADERS([sys/config.h])
228 AC_CHECK_HEADERS([sys/types.h])
229 AC_EGREP_HEADER(uint32_t, stdint.h, AC_DEFINE(HAVE_INT32_DEFINED, 1, [Define to 1 if you have uint32_t]))
230 AC_EGREP_HEADER(uint32_t, inttypes.h, AC_DEFINE(HAVE_INT32_DEFINED, 1, [Define to 1 if you have uint32_t]))
231 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]))
232 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]))
233
234 dnl Checks for typedefs, structures, and compiler characteristics.
235 AC_C_CONST
236 AC_C_INLINE
237 AC_C_ATTRIBUTE
238 AC_TYPE_OFF_T
239 AC_TYPE_SIZE_T
240 AC_HEADER_TIME
241 AC_STRUCT_TM
242
243 dnl Checks for library functions.
244 AC_PROG_GCC_TRADITIONAL
245 AC_TYPE_SIGNAL
246 AC_FUNC_MEMCMP
247 AC_FUNC_MMAP
248
249 dnl keep them alpha-sorted!
250 AC_CHECK_FUNCS([calloc])
251 AC_CHECK_FUNCS([getpagesize])
252 AC_CHECK_FUNCS([free])
253 AC_CHECK_FUNCS([getcwd])
254 AC_CHECK_FUNCS([gettimeofday])
255 AC_CHECK_FUNCS([getrusage])
256 AC_CHECK_FUNCS([isnan])
257 AC_CHECK_FUNCS([mmap])
258 AC_CHECK_FUNCS([mprotect])
259 AC_CHECK_FUNCS([scandir])
260
261 dnl Checks for libraries.
262
263 dnl Checking sizeof void *
264 AC_CHECK_SIZEOF(void *)
265 AC_C_BIGENDIAN
266
267
268 dnl define install prefix
269 if test "x$prefix" = "xNONE"; then
270     CACAO_PREFIX=$ac_default_prefix
271 else
272     CACAO_PREFIX=$prefix
273 fi
274 AC_DEFINE_UNQUOTED([CACAO_PREFIX], "${CACAO_PREFIX}", [installation prefix])
275 AC_SUBST(CACAO_PREFIX)
276
277 dnl define libdir prefix
278 if test "x$libdir" = "xNONE"; then
279     CACAO_LIBDIR=$ac_default_libdir
280 else
281     CACAO_LIBDIR=$libdir
282 fi
283 dnl expand CACAO_LIBDIR to something that is usable in C code
284 AS_AC_EXPAND([CACAO_LIBDIR], ${CACAO_LIBDIR})
285 AC_DEFINE_UNQUOTED([CACAO_LIBDIR], "${CACAO_LIBDIR}", [library installation prefix])
286 AC_SUBST(CACAO_LIBDIR)
287
288
289 dnl Features
290
291 AC_CHECK_ENABLE_JAVA
292 AC_CHECK_ENABLE_JIT
293
294 dnl with-options
295 AC_CHECK_WITH_CACAOH
296
297 dnl check for stuff that should be done in software
298 AC_CHECK_SOFTFLOAT
299 AC_CHECK_SOFT_FLOAT_CMP
300 AC_CHECK_SOFT_DOUBLE_CMP
301
302
303 dnl check for interpreter
304 AC_ARG_ENABLE([intrp], [AS_HELP_STRING(--enable-intrp,enable interpreter [[default=no]])])
305
306 AC_MSG_CHECKING(whether interpreter should be compiled)
307 if test x"$enable_intrp" = "xyes"; then
308     AC_MSG_RESULT(yes)
309     AC_DEFINE([ENABLE_INTRP], 1, [enable interpreter])
310     AM_CONDITIONAL([ENABLE_INTRP], [true])
311     ENABLE_INTRP=yes
312
313     AC_ASM_SKIP16
314
315     dnl check for libffi
316     AC_ARG_WITH([ffi],
317                 [AS_HELP_STRING(--with-ffi,use libffi to call native functions)],
318                 [WITH_FFI=yes
319                  AC_CHECK_HEADERS([ffi.h],, [AC_MSG_ERROR(cannot find ffi.h)])
320                  AC_CHECK_LIB(ffi, ffi_call,, [AC_MSG_ERROR(cannot find libffi)])
321                  AC_DEFINE([WITH_FFI], 1, [use libffi])],
322                 [WITH_FFI=no])
323
324     dnl check for libffcall
325     AC_ARG_WITH([ffcall],
326                 [AS_HELP_STRING(--with-ffcall,use libffcall to call native functions)],
327                 [WITH_FFCALL=yes
328                  AC_CHECK_HEADERS([avcall.h],, [AC_MSG_ERROR(cannot find avcall.h)])
329                  AC_CHECK_LIB(avcall, __builtin_avcall,, [AC_MSG_ERROR(cannot find libavcall (from libffcall))])
330                  AC_DEFINE([WITH_FFCALL], 1, [use libffcall])],
331                 [WITH_FFCALL=no])
332
333     dnl check for libffi or libffcall
334     if test x"${WITH_FFI}" = "xyes" -a x"${WITH_FFCALL}" = "xyes"; then
335         AC_ERROR(Enable only libffi or libffcall.)
336     fi
337     if test x"${WITH_FFI}" = "xno" -a x"${WITH_FFCALL}" = "xno"; then
338         AC_ERROR(Enable one of libffi or libffcall.)
339     fi
340
341 else
342     AC_MSG_RESULT(no)
343     AM_CONDITIONAL([ENABLE_INTRP], [false])
344     ENABLE_INTRP="no"
345 fi
346
347 if test x"${ENABLE_JIT}" = "xno" -a x"${ENABLE_INTRP}" = "xno"; then
348     AC_ERROR(You have to enable at least the JIT or the interpreter.)
349 fi
350
351
352 dnl check for garbage collector usage
353 AC_ARG_ENABLE([gc], [AS_HELP_STRING(--enable-gc,enable garbage collector support (none,boehm,cacao) [[default=boehm]])])
354 AC_MSG_CHECKING(whether GC should be enabled)
355 enable_gc=${enable_gc:-boehm}
356 case "$enable_gc" in
357 no | none)
358     AC_DEFINE([DISABLE_GC], 1, [disable garbage collector])
359     ENABLE_GC=none
360     AC_MSG_RESULT(no)
361     ;;
362
363 boehm)
364     AC_DEFINE([ENABLE_GC_BOEHM], 1, [enable conservative boehm-gc])
365     ENABLE_GC=boehm
366     AC_MSG_RESULT(yes, boehm-gc)
367     ;;
368
369 cacao)
370     AC_DEFINE([ENABLE_GC_CACAO], 1, [enable exact cacao-gc])
371     ENABLE_GC=cacao
372     AC_MSG_RESULT(yes, cacao-gc)
373     ;;
374
375 *)
376     AC_MSG_ERROR($enable_gc is an unknown garbage collector package)
377     ;;
378 esac
379 AM_CONDITIONAL([DISABLE_GC], test x"${ENABLE_GC}" = "xnone")
380 AM_CONDITIONAL([ENABLE_GC_BOEHM], test x"${ENABLE_GC}" = "xboehm")
381 AM_CONDITIONAL([ENABLE_GC_CACAO], test x"${ENABLE_GC}" = "xcacao")
382
383
384
385 dnl check for dump memory usage
386 AC_MSG_CHECKING(whether dump memory should be disabled)
387 AC_ARG_ENABLE([dump],
388               [AS_HELP_STRING(--disable-dump,disable dump memory (for debugging only!) [[default=yes]])],
389               [case "${enableval}" in
390                    no)
391                        DISABLE_DUMP=yes
392                        AC_DEFINE([DISABLE_DUMP], 1, [disable dump memory])
393                        ;;
394                    *) DISABLE_DUMP=no;;
395                esac],
396                [DISABLE_DUMP=no])
397 AC_MSG_RESULT(${DISABLE_DUMP})
398
399
400 dnl check for debug
401 AC_MSG_CHECKING(whether debug code generation should be enabled)
402 AC_ARG_ENABLE([debug],
403               [AS_HELP_STRING(--disable-debug,disable debug code generation [[default=yes]])],
404               [case "${enableval}" in
405                    no) NDEBUG=yes
406                        AC_DEFINE([NDEBUG], 1, [disable debug code])
407                        ;;
408                    *) NDEBUG=no;;
409                esac],
410               [NDEBUG=no])
411
412 if test x"${NDEBUG}" = "xno"; then
413     AC_MSG_RESULT(yes)
414 else
415     AC_MSG_RESULT(no)
416 fi
417 AM_CONDITIONAL([NDEBUG], test x"${NDEBUG}" = "xyes")
418
419
420 dnl check for memcheck support
421 AC_MSG_CHECKING(whether debugging memory checks should be enabled)
422 AC_ARG_ENABLE([memcheck],
423               [AS_HELP_STRING(--enable-memcheck,enable debugging memory checks [[default=no]])],
424               [case "${enableval}" in
425                    yes) ENABLE_MEMCHECK=yes;;
426                    *) ENABLE_MEMCHECK=no;;
427                esac],
428               [ENABLE_MEMCHECK=no])
429 AC_MSG_RESULT(${ENABLE_MEMCHECK})
430 AM_CONDITIONAL([ENABLE_MEMCHECK], test x"${ENABLE_MEMCHECK}" = "xyes")
431
432 if test x"${ENABLE_MEMCHECK}" = "xyes"; then
433     AC_DEFINE([ENABLE_MEMCHECK], 1, [perform debugging memory checks])
434 fi
435
436
437 dnl check for vmlog support
438 AC_MSG_CHECKING(whether vmlog tracing should be enabled)
439 AC_ARG_ENABLE([vmlog],
440               [AS_HELP_STRING(--enable-vmlog,enable vmlog tracing [[default=no]])],
441               [case "${enableval}" in
442                    yes) ENABLE_VMLOG=yes;;
443                    *) ENABLE_VMLOG=no;;
444                esac],
445               [ENABLE_VMLOG=no])
446 AC_MSG_RESULT(${ENABLE_VMLOG})
447 AM_CONDITIONAL([ENABLE_VMLOG], test x"${ENABLE_VMLOG}" = "xyes")
448
449 if test x"${ENABLE_VMLOG}" = "xyes"; then
450     AC_DEFINE([ENABLE_VMLOG], 1, [enable vmlog tracing code])
451 fi
452
453
454 dnl check for disassembler support
455 AC_MSG_CHECKING(whether disassembler should be enabled)
456 AC_ARG_ENABLE([disassembler],
457               [AS_HELP_STRING(--enable-disassembler,enable disassembler [[default=no]])],
458               [case "${enableval}" in
459                    yes) ENABLE_DISASSEMBLER=yes;;
460                    *) ENABLE_DISASSEMBLER=no;;
461                esac],
462               [ENABLE_DISASSEMBLER=no])
463 AC_MSG_RESULT(${ENABLE_DISASSEMBLER})
464 AM_CONDITIONAL([ENABLE_DISASSEMBLER], test x"${ENABLE_DISASSEMBLER}" = "xyes")
465
466 if test x"${ENABLE_DISASSEMBLER}" = "xyes"; then
467     AC_DEFINE([ENABLE_DISASSEMBLER], 1, [enable disassembler])
468
469     dnl check for binutils headers and libraries on some architectures for the
470     dnl disassembler
471     case "${ARCH_DIR}" in
472         arm | i386 | powerpc | x86_64 | sparc64 | powerpc64 | s390 | m68k)
473             AC_CHECK_HEADER([ansidecl.h],, [AC_MSG_ERROR(cannot find ansidecl.h)])
474             AC_CHECK_HEADER([symcat.h],, [AC_MSG_ERROR(cannot find symcat.h)])
475             AC_CHECK_HEADER([bfd.h],, [AC_MSG_ERROR(cannot find bfd.h)])
476             AC_CHECK_HEADER([dis-asm.h],, [AC_MSG_ERROR(cannot find dis-asm.h)])
477
478             case "${OS_DIR}" in
479                 cygwin | darwin | netbsd | solaris)
480                      AC_CHECK_LIB(intl, dcgettext,, [AC_MSG_ERROR(cannot find libintl (from binutils))])
481                      ;;
482             esac
483
484             AC_CHECK_LIB(iberty, xstrerror,, [AC_MSG_ERROR(cannot find libiberty (from binutils))])
485             AC_CHECK_LIB(bfd, bfd_get_arch,, [AC_MSG_ERROR(cannot find libbfd (from binutils))])
486             AC_CHECK_LIB(opcodes, disassembler,, [AC_MSG_ERROR(cannot find libopcodes (from binutils))])
487             AC_DEFINE([WITH_BINUTILS_DISASSEMBLER], 1, [use binutils disassembler])
488             AM_CONDITIONAL([WITH_BINUTILS_DISASSEMBLER], [true])
489             ;;
490         * )
491             AM_CONDITIONAL([WITH_BINUTILS_DISASSEMBLER], [false])
492             ;;
493     esac
494 else
495     AM_CONDITIONAL([WITH_BINUTILS_DISASSEMBLER], [false])
496 fi
497
498
499 dnl check for statistics
500 AC_MSG_CHECKING(whether statistics generation should be enabled)
501 AC_ARG_ENABLE([statistics],
502               [AS_HELP_STRING(--enable-statistics,enable statistics generation [[default=no]])],
503               [case "${enableval}" in
504                    yes) ENABLE_STATISTICS=yes;;
505                    *) ENABLE_STATISTICS=no;;
506                esac],
507               [ENABLE_STATISTICS=no])
508 AC_MSG_RESULT(${ENABLE_STATISTICS})
509 AM_CONDITIONAL([ENABLE_STATISTICS], test x"${ENABLE_STATISTICS}" = "xyes")
510
511 if test x"${ENABLE_STATISTICS}" = "xyes"; then
512     AC_DEFINE([ENABLE_STATISTICS], 1, [enable statistics])
513 fi
514
515
516 dnl check for verifier
517 AC_MSG_CHECKING(whether classfile verification should be enabled)
518 AC_ARG_ENABLE([verifier],
519               [AS_HELP_STRING(--disable-verifier,disable classfile verification [[default=yes]])],
520               [case "${enableval}" in
521                    no) ENABLE_VERIFIER=no;;
522                    *) ENABLE_VERIFIER=yes;;
523                esac],
524               [ENABLE_VERIFIER=yes])
525 AC_MSG_RESULT(${ENABLE_VERIFIER})
526 AM_CONDITIONAL([ENABLE_VERIFIER], test x"${ENABLE_VERIFIER}" = "xyes")
527
528 if test x"${ENABLE_VERIFIER}" = "xyes"; then
529     AC_DEFINE([ENABLE_VERIFIER], 1, [enable classfile verification])
530 fi
531
532
533 dnl check for compiler timing
534 AC_MSG_CHECKING(whether real-time timing should be enabled)
535 AC_ARG_ENABLE([rt-timing],
536               [AS_HELP_STRING(--enable-rt-timing,enable real-time timing [[default=no]])],
537               [case "${enableval}" in
538                    yes) ENABLE_RT_TIMING=yes;;
539                    *) ENABLE_RT_TIMING=no;;
540                esac],
541               [ENABLE_RT_TIMING=no])
542 AC_MSG_RESULT(${ENABLE_RT_TIMING})
543 AM_CONDITIONAL([ENABLE_RT_TIMING], test x"${ENABLE_RT_TIMING}" = "xyes")
544
545 if test x"${ENABLE_RT_TIMING}" = "xyes"; then
546     AC_DEFINE([ENABLE_RT_TIMING], 1, [enable real-time timing])
547 fi
548
549
550 dnl check for cycle count statistics
551 AC_MSG_CHECKING(whether cycle count statistics should be enabled)
552 AC_ARG_ENABLE([cycles-stats],
553               [AS_HELP_STRING(--enable-cycles-stats,enable cycle count statistics [[default=no]])],
554               [case "${enableval}" in
555                    yes) ENABLE_CYCLES_STATS=yes;;
556                    *) ENABLE_CYCLES_STATS=no;;
557                esac],
558               [ENABLE_CYCLES_STATS=no])
559 AC_MSG_RESULT(${ENABLE_CYCLES_STATS})
560 AM_CONDITIONAL([ENABLE_CYCLES_STATS], test x"${ENABLE_CYCLES_STATS}" = "xyes")
561
562 if test x"${ENABLE_CYCLES_STATS}" = "xyes"; then
563     AC_DEFINE([ENABLE_CYCLES_STATS], 1, [enable cycle count statistics])
564 fi
565
566
567 dnl check for JVMTI
568 AC_MSG_CHECKING(whether to compile JVMTI support)
569 AC_ARG_ENABLE([jvmti],
570               [AS_HELP_STRING(--enable-jvmti,enable JVMTI [[default=no]])],
571               [case "${enableval}" in
572                    yes) ENABLE_JVMTI=yes;;
573                    *) ENABLE_JVMTI=no;;
574                esac],
575               [ENABLE_JVMTI=no])
576 AC_MSG_RESULT(${ENABLE_JVMTI})
577 AM_CONDITIONAL([ENABLE_JVMTI], test x"${ENABLE_JVMTI}" = "xyes")
578
579 if test x"${ENABLE_JVMTI}" = "xyes"; then
580     AC_DEFINE([ENABLE_JVMTI], 1, [use JVMTI])
581 fi
582
583
584 AC_CHECK_ENABLE_THREADS
585
586
587 dnl check if if-conversion should be supported
588 AC_MSG_CHECKING(whether if-conversion should be supported)
589 AC_ARG_ENABLE([ifconv],
590               [AS_HELP_STRING(--disable-ifconv,disable if-conversion [[default=yes]])],
591               [case "${enableval}" in
592                    no) ENABLE_IFCONV=no;;
593                    *) ENABLE_IFCONV=yes;;
594                esac],
595               [ENABLE_IFCONV=yes])
596 AC_MSG_RESULT(${ENABLE_IFCONV})
597 AM_CONDITIONAL([ENABLE_IFCONV], test x"${ENABLE_IFCONV}" = "xyes")
598    
599 if test x"${ENABLE_IFCONV}" = "xyes"; then
600     AC_DEFINE([ENABLE_IFCONV], 1, [enable if-conversion])
601 fi
602
603
604 dnl check for inlining
605 AC_MSG_CHECKING(whether method inlining should be supported)
606 AC_ARG_ENABLE([inlining],
607               [AS_HELP_STRING(--enable-inlining,enable method inlining [[default=no]])],
608               [case "${enableval}" in
609                    yes) ENABLE_INLINING=yes;;
610                    *) ENABLE_INLINING=no;;
611                esac],
612               [ENABLE_INLINING=no])
613 AC_MSG_RESULT(${ENABLE_INLINING})
614 AM_CONDITIONAL([ENABLE_INLINING], test x"${ENABLE_INLINING}" = "xyes")
615
616 if test x"${ENABLE_INLINING}" = "xyes"; then
617     AC_DEFINE([ENABLE_INLINING], 1, [use method inlining])
618 fi
619
620
621 dnl check for inlining debug options
622 AC_MSG_CHECKING(whether method inlining debug options should be enabled)
623 AC_ARG_ENABLE([inlining-debug],
624               [AS_HELP_STRING(--enable-inlining-debug,enable method inlining debug options [[default=no]])],
625               [case "${enableval}" in
626                    yes) ENABLE_INLINING_DEBUG=yes;;
627                    *) ENABLE_INLINING_DEBUG=no;;
628                esac],
629               [ENABLE_INLINING_DEBUG=no])
630 AC_MSG_RESULT(${ENABLE_INLINING_DEBUG})
631 AM_CONDITIONAL([ENABLE_INLINING_DEBUG], test x"${ENABLE_INLINING_DEBUG}" = "xyes")
632
633 if test x"${ENABLE_INLINING_DEBUG}" = "xyes"; then
634     AC_DEFINE([ENABLE_INLINING_DEBUG], 1, [enable method inlining debug options])
635 fi
636
637
638 dnl check for replacement
639 AC_MSG_CHECKING(whether on-stack replacement should be supported)
640 AC_ARG_ENABLE([replacement],
641               [AS_HELP_STRING(--enable-replacement,enable on-stack replacement [[default=no]])],
642               [case "${enableval}" in
643                    yes) ENABLE_REPLACEMENT=yes;;
644                    *) ENABLE_REPLACEMENT=no;;
645                esac],
646               [ENABLE_REPLACEMENT=no])
647 AC_MSG_RESULT(${ENABLE_REPLACEMENT})
648 AM_CONDITIONAL([ENABLE_REPLACEMENT], test x"${ENABLE_REPLACEMENT}" = "xyes")
649
650 if test x"${ENABLE_REPLACEMENT}" = "xyes"; then
651     AC_DEFINE([ENABLE_REPLACEMENT], 1, [use on-stack replacement])
652 fi
653
654
655 dnl check for loop optimization
656 AC_MSG_CHECKING(whether loop optimization should be supported)
657 AC_ARG_ENABLE([loop],
658               [AS_HELP_STRING(--enable-loop,enable loop optimization [[default=no]])],
659               [case "${enableval}" in
660                    yes) ENABLE_LOOP=yes;;
661                    *) ENABLE_LOOP=no;;
662                esac],
663               [ENABLE_LOOP=no])
664 AC_MSG_RESULT(${ENABLE_LOOP})
665 AM_CONDITIONAL([ENABLE_LOOP], test x"${ENABLE_LOOP}" = "xyes")
666
667 if test x"${ENABLE_LOOP}" = "xyes"; then
668     AC_DEFINE([ENABLE_LOOP], 1, [use loop optimization])
669 fi
670
671
672 dnl check if linear scan register allocator(lsra) with SSA should be used
673 AC_MSG_CHECKING(whether lsra with ssa should be supported)
674 AC_ARG_ENABLE([ssa],
675               [AS_HELP_STRING(--disable-ssa,disable ssa [[default=no]])],
676               [case "${enableval}" in
677                    no) ENABLE_SSA=no;;
678                    *) ENABLE_SSA=yes;;
679                esac],
680               [ENABLE_SSA=no])
681 AC_MSG_RESULT(${ENABLE_SSA})
682 AM_CONDITIONAL([ENABLE_SSA], test x"${ENABLE_SSA}" = "xyes")
683
684 if test x"${ENABLE_SSA}" = "xyes"; then
685     AC_DEFINE([ENABLE_SSA], 1, [enable lsra with ssa])
686     ENABLE_LSRA="no"
687 fi
688
689
690 dnl check if linear scan register allocator(lsra) should be used
691 AC_MSG_CHECKING(whether lsra should be supported)
692 AC_ARG_ENABLE([lsra],
693               [AS_HELP_STRING(--enable-lsra,enable linear scan register allocator [[default=no]])],
694               [case "${enableval}" in
695                    yes) ENABLE_LSRA=yes;;
696                    *) ENABLE_LSRA=no;;
697                esac],
698               [ENABLE_LSRA=no])
699    
700 if test x"${ENABLE_LSRA}" = "xyes"; then
701     if test x"${ENABLE_SSA}" = "xyes"; then
702         ENABLE_LSRA="no"
703     fi
704 fi
705 AC_MSG_RESULT(${ENABLE_LSRA})
706 AM_CONDITIONAL([ENABLE_LSRA], test x"${ENABLE_LSRA}" = "xyes")
707  
708 if test x"${ENABLE_LSRA}" = "xyes"; then
709     AC_DEFINE([ENABLE_LSRA], 1, [enable lsra])
710 fi
711
712
713 dnl check if profiling should be supported
714 AC_MSG_CHECKING(whether profiling should be supported)
715 AC_ARG_ENABLE([profiling],
716               [AS_HELP_STRING(--enable-profiling,enable profiling [[default=no]])],
717               [case "${enableval}" in
718                    yes) ENABLE_PROFILING=yes;;
719                    *) ENABLE_PROFILING=no;;
720                esac],
721               [ENABLE_PROFILING=no])
722 AC_MSG_RESULT(${ENABLE_PROFILING})
723 AM_CONDITIONAL([ENABLE_PROFILING], test x"${ENABLE_PROFILING}" = "xyes")
724    
725 if test x"${ENABLE_PROFILING}" = "xyes"; then
726     AC_DEFINE([ENABLE_PROFILING], 1, [enable profiling])
727 fi
728
729
730 dnl check for instruction scheduler
731 AC_ARG_ENABLE([scheduler], [AS_HELP_STRING(--enable-scheduler,enable instruction scheduler [[default=no]])])
732
733 AC_MSG_CHECKING(whether instruction scheduler should be supported)
734 if test x"${USE_SCHEDULER}" = "x1" -o x"$enable_scheduler" = "xyes"; then
735         case "${ARCH_DIR}" in
736                 xdspcore )
737                         ;;
738                 * )
739                         AC_MSG_ERROR(instruction scheduler is not available for ${ARCH_DIR} code generator)
740                         ;;
741         esac
742
743         AC_MSG_RESULT(yes)
744         AC_DEFINE([USE_SCHEDULER], 1, [use scheduler])
745         AM_CONDITIONAL([USE_SCHEDULER], [true])
746 else
747         AC_MSG_RESULT(no)
748         AM_CONDITIONAL([USE_SCHEDULER], [false])
749 fi
750
751
752 dnl check if zlib should be used
753 AC_MSG_CHECKING(whether ZIP/JAR archives should be supported)
754 AC_ARG_ENABLE([zlib],
755               [AS_HELP_STRING(--disable-zlib,disable ZIP/JAR archive support (needs zlib) [[default=yes]])],
756               [case "${enableval}" in
757                   no) ENABLE_ZLIB=no;;
758                   *) ENABLE_ZLIB=yes;;
759                esac],
760               [ENABLE_ZLIB=yes])
761 AC_MSG_RESULT(${ENABLE_ZLIB})
762
763 if test x"${ENABLE_ZLIB}" = "xyes"; then
764     AC_CHECK_HEADERS([zconf.h],, [AC_MSG_ERROR(cannot find zconf.h)])
765     AC_CHECK_HEADERS([zlib.h],, [AC_MSG_ERROR(cannot find zlib.h)])
766     AC_CHECK_LIB(z, inflate,, [AC_MSG_ERROR(cannot find libz)])
767     AC_DEFINE([ENABLE_ZLIB], 1, [use zlib])
768 fi
769 AM_CONDITIONAL([ENABLE_ZLIB], test x"${ENABLE_ZLIB}" = "xyes")
770
771
772 dnl check for stuff to be built
773 AC_CHECK_ENABLE_JNI
774
775
776 dnl check if a libjvm.so should be built
777 AC_MSG_CHECKING(whether to build a libjvm.so)
778 AC_ARG_ENABLE([libjvm],
779               [AS_HELP_STRING(--disable-libjvm,build a libjvm.so [[default=yes]])],
780               [case "${enableval}" in
781                   no) ENABLE_LIBJVM=no;;
782                   *) ENABLE_LIBJVM=yes;;
783                esac],
784               [ENABLE_LIBJVM=yes])
785 AC_MSG_RESULT(${ENABLE_LIBJVM})
786 AM_CONDITIONAL([ENABLE_LIBJVM], test x"${ENABLE_LIBJVM}" = "xyes")
787 AC_SUBST(ENABLE_LIBJVM)
788
789 if test x"${ENABLE_LIBJVM}" = "xyes"; then
790     AC_DEFINE([ENABLE_LIBJVM], 1, [enable libjvm.so])
791
792     dnl set AC_ENABLE_SHARED and AC_DISABLE_STATIC properly
793     enable_shared=yes
794     enable_static=no
795 else
796     enable_shared=no
797     enable_static=yes
798 fi
799
800 dnl libtool stuff
801 AC_LIBTOOL_DLOPEN
802 AC_PROG_LIBTOOL
803
804
805 dnl check if CACAO should be linked statically
806 AC_MSG_CHECKING(whether to link CACAO statically)
807 AC_ARG_ENABLE([staticvm],
808               [AS_HELP_STRING(--enable-staticvm,link CACAO statically [[default=no]])],
809               [case "${enableval}" in
810                   yes) ENABLE_STATICVM=yes
811                        AC_DEFINE([ENABLE_STATICVM], 1, [link CACAO statically])
812                        ;;
813                   *) ENABLE_STATICVM=no;;
814                esac],
815               [ENABLE_STATICVM=no])
816 AC_MSG_RESULT(${ENABLE_STATICVM})
817 AM_CONDITIONAL([ENABLE_STATICVM], test x"${ENABLE_STATICVM}" = "xyes")
818 AC_SUBST(ENABLE_STATICVM)
819
820
821 dnl where is CACAO's vm.zip
822 AC_MSG_CHECKING(where CACAO's vm.zip is installed)
823 AC_ARG_WITH([vm-zip],
824             [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]])],
825             [CACAO_VM_ZIP=${withval}],
826             [CACAO_VM_ZIP=${CACAO_PREFIX}/share/cacao/vm.zip])
827 AC_MSG_RESULT(${CACAO_VM_ZIP})
828 AC_DEFINE_UNQUOTED([CACAO_VM_ZIP], "${CACAO_VM_ZIP}", [CACAO's vm.zip])
829 AC_SUBST(CACAO_VM_ZIP)
830
831
832 AC_CHECK_WITH_CLASSPATH
833 AC_CHECK_WITH_CLASSPATH_PREFIX
834 AC_CHECK_WITH_CLASSPATH_CLASSES
835 AC_CHECK_WITH_CLASSPATH_LIBDIR
836 AC_CHECK_WITH_CLASSPATH_INCLUDEDIR
837
838
839 dnl if we compile for a JRE-style directory layout
840 AC_MSG_CHECKING(if we compile for a JRE-style directory layout)
841 AC_ARG_WITH([jre-layout],
842             [AS_HELP_STRING(--with-jre-layout,compile for JRE-style directory layout [[default=no]])],
843             [case "${enableval}" in
844                 yes) WITH_JRE_LAYOUT=yes
845                      AC_DEFINE([WITH_JRE_LAYOUT], 1, [with JRE layout])
846                      ;;
847                 *) WITH_JRE_LAYOUT=no;;
848              esac],
849             [WITH_JRE_LAYOUT=no])
850 AC_MSG_RESULT(${WITH_JRE_LAYOUT})
851
852
853 dnl check if GNU Classpath should be linked statically into CACAO
854 AC_MSG_CHECKING(whether to link GNU Classpath native libraries statically into CACAO)
855 AC_ARG_WITH([static-classpath],
856             [AS_HELP_STRING(--with-static-classpath,link GNU classpath native libraries statically into CACAO [[default=no]])],
857             [case "${enableval}" in
858                 yes) WITH_STATIC_CLASSPATH=yes;;
859                 *) WITH_STATIC_CLASSPATH=no;;
860              esac],
861             [WITH_STATIC_CLASSPATH=no])
862 AC_MSG_RESULT(${WITH_STATIC_CLASSPATH})
863
864 if test x"${WITH_STATIC_CLASSPATH}" = "xyes"; then
865     AC_DEFINE([WITH_STATIC_CLASSPATH], 1, [link GNU classpath native libraries statically into CACAO])
866
867     dnl check for some classpath related stuff when we link statically
868     AM_ICONV_LINK
869 else
870     dnl we need this check for --enable-staticvm, otherwise ltdl can't find dlopen
871     if test x"${ENABLE_STATICVM}" = "xyes"; then
872         AC_CHECK_LIB(dl, dlopen,, [AC_MSG_ERROR(cannot find libdl)])
873     fi
874
875     AC_CHECK_HEADERS([ltdl.h],, [AC_MSG_ERROR(cannot find ltdl.h)])
876     AC_CHECK_LIB(ltdl, lt_dlopen,, [AC_MSG_ERROR(cannot find libltdl)])
877 fi
878 AM_CONDITIONAL([WITH_STATIC_CLASSPATH], test x"${WITH_STATIC_CLASSPATH}" = "xyes")
879 AC_SUBST(WITH_STATIC_CLASSPATH)
880
881
882 dnl check for some programs we need
883 AC_PROG_JAVAC
884 AC_PROG_JAR
885
886
887 dnl finally pass CFLAGS to Makefiles via AM_CFLAGS
888 CFLAGS=$OPT_CFLAGS
889 AM_CFLAGS=$ARCH_CFLAGS
890 AC_SUBST(AM_CFLAGS)
891
892
893 AC_CONFIG_FILES([Makefile]
894                 [contrib/Makefile]
895                 [contrib/setenvinstalled]
896                 [contrib/setenvsource]
897                 [contrib/vmlog/Makefile]
898                 [contrib/vmlog/t/Makefile]
899                 [doc/Makefile]
900                 [doc/handbook/Makefile]
901                 [man/Makefile]
902                 [src/Makefile]
903                 [src/cacao/Makefile]
904                 [src/cacaoh/Makefile]
905                 [src/fdlibm/Makefile]
906                 [src/lib/Makefile]
907                 [src/mm/Makefile]
908                 [src/mm/cacao-gc/Makefile]
909                 [src/native/Makefile]
910                 [src/native/include/Makefile]
911                 [src/native/jvmti/Makefile]
912                 [src/native/tools/Makefile]
913                 [src/native/vm/Makefile]
914                 [src/native/vm/cldc1.1/Makefile]
915                 [src/native/vm/gnu/Makefile]
916                 [src/scripts/Makefile]
917                 [src/scripts/java]
918                 [src/threads/Makefile]
919                 [src/threads/native/Makefile]
920                 [src/threads/none/Makefile]
921                 [src/toolbox/Makefile]
922                 [src/vm/Makefile]
923                 [src/vm/jit/Makefile]
924                 [src/vm/jit/allocator/Makefile]
925                 [src/vm/jit/alpha/Makefile]
926                 [src/vm/jit/alpha/freebsd/Makefile]
927                 [src/vm/jit/alpha/linux/Makefile]
928                 [src/vm/jit/arm/Makefile]
929                 [src/vm/jit/arm/linux/Makefile]
930                 [src/vm/jit/i386/Makefile]
931                 [src/vm/jit/i386/cygwin/Makefile]
932                 [src/vm/jit/i386/darwin/Makefile]
933                 [src/vm/jit/i386/freebsd/Makefile]
934                 [src/vm/jit/i386/linux/Makefile]
935                 [src/vm/jit/intrp/Makefile]
936                 [src/vm/jit/inline/Makefile]
937                 [src/vm/jit/loop/Makefile]
938                 [src/vm/jit/m68k/Makefile]
939                 [src/vm/jit/m68k/linux/Makefile]
940                 [src/vm/jit/mips/Makefile]
941                 [src/vm/jit/mips/irix/Makefile]
942                 [src/vm/jit/mips/linux/Makefile]
943                 [src/vm/jit/optimizing/Makefile]
944                 [src/vm/jit/parisc/Makefile]
945                 [src/vm/jit/parisc/linux/Makefile]
946                 [src/vm/jit/powerpc/Makefile]
947                 [src/vm/jit/powerpc/darwin/Makefile]
948                 [src/vm/jit/powerpc/linux/Makefile]
949                 [src/vm/jit/powerpc/netbsd/Makefile]
950                 [src/vm/jit/powerpc64/Makefile]
951                 [src/vm/jit/powerpc64/linux/Makefile]
952                 [src/vm/jit/s390/Makefile]
953                 [src/vm/jit/schedule/Makefile]
954                 [src/vm/jit/sparc64/Makefile]
955                 [src/vm/jit/sparc64/linux/Makefile]
956                 [src/vm/jit/sparc64/solaris/Makefile]
957                 [src/vm/jit/tools/Makefile]
958                 [src/vm/jit/verify/Makefile]
959                 [src/vm/jit/x86_64/Makefile]
960                 [src/vm/jit/x86_64/freebsd/Makefile]
961                 [src/vm/jit/x86_64/linux/Makefile]
962                 [src/vmcore/Makefile]
963                 [tests/Makefile]
964                 [tests/regression/Makefile]
965                 [tests/regression/codepatching/Makefile]
966                 [tests/regression/jasmin/Makefile]
967                 [tests/regression/native/Makefile]
968                 [tests/regression/resolving/Makefile]
969                 [tests/regression/resolving/classes1/Makefile]
970                 [tests/regression/resolving/classes2/Makefile]
971                 [tests/regression/resolving/classes3/Makefile]
972                 )
973
974
975 dnl now configure subpackages with OPT_CFLAGS and ARCH_CFLAGS
976 export OPT_CFLAGS
977 export ARCH_CFLAGS
978 AC_CONFIG_SUBDIRS(src/mm/boehm-gc)
979
980
981 AC_OUTPUT
982
983
984 ## Local variables:
985 ## mode: m4
986 ## indent-tabs-mode: t
987 ## c-basic-offset: 4
988 ## tab-width: 8
989 ## compile-command: "automake --add-missing"
990 ## End: