* changed src/vm/jit/m68k/arch.h (JIT_COMPILER_VIA_SIGNAL): Added.
[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
25 dnl Process this file with autoconf to produce a configure script.
26
27
28 AC_INIT(cacao, 0.98+svn, cacao@cacaojvm.org)
29 AC_CONFIG_SRCDIR(src/cacao/cacao.c)
30 AC_CANONICAL_HOST
31 AC_PREREQ(2.59)
32 AM_INIT_AUTOMAKE([1.9.0 dist-bzip2])
33 AM_MAINTAINER_MODE
34
35 AM_CONFIG_HEADER([config.h])
36
37 AC_PREFIX_DEFAULT(/usr/local/cacao)
38
39
40 dnl set optimization and debugging for all architectures and systems
41 if test x"$CFLAGS" = "x"; then
42     OPT_CFLAGS="-O0 -g3"
43 else
44     OPT_CFLAGS=$CFLAGS
45 fi
46
47 dnl system type
48 case "$host_cpu" in
49 alpha | alphaev56 | alphapca56 )
50     ARCH_DIR="alpha"
51     ARCH_CFLAGS="-mieee -D__ALPHA__"
52     JAVA_ARCH="alpha"
53     ;;
54
55 arm | armv4 | armv4tl | armv5b | armv5l )
56     ARCH_DIR="arm"
57     ARCH_CFLAGS="-D__ARM__"
58     JAVA_ARCH="arm"
59     ;;
60
61 hppa2.0 )
62     ARCH_DIR="parisc"
63     ARCH_CFLAGS="-D__PARISC__"
64     JAVA_ARCH="hppa"
65     ;;
66
67 i386 | i486 | i586 | i686 )
68     ARCH_DIR="i386"
69     ARCH_CFLAGS="-D__I386__"
70     JAVA_ARCH="i386"
71     ;;
72
73 m68k )
74     ARCH_DIR="m68k"
75     ARCH_CFLAGS="-D__M68K__"
76     JAVA_ARCH="m68k"
77     ;;
78
79 mips | mipsel )
80     ARCH_DIR="mips"
81     ARCH_CFLAGS="-D__MIPS__"
82     dnl Is this correct for mipsel?
83     JAVA_ARCH="mips"
84     ;;
85
86 powerpc )
87     ARCH_DIR="powerpc"
88     ARCH_CFLAGS="-D__POWERPC__"
89     JAVA_ARCH="ppc"
90     ;;
91
92 powerpc64 )
93     ARCH_DIR="powerpc64"
94     ARCH_CFLAGS="-D__POWERPC64__"
95     JAVA_ARCH="ppc64"
96     ;;
97
98 s390 )
99     ARCH_DIR="s390"
100     ARCH_CFLAGS="-D__S390__"
101     JAVA_ARCH="s390"
102     ;;
103
104 sparc | sparc64 )
105     ARCH_DIR="sparc64"
106     ARCH_CFLAGS="-mcpu=v9 -m64 -D__SPARC_64__"
107     dnl Is this correct for 64-bits?
108     JAVA_ARCH="sparc"
109     ;;
110
111 x86_64 )
112     ARCH_DIR="x86_64"
113     ARCH_CFLAGS="-D__X86_64__"
114     JAVA_ARCH="amd64"
115     ;;
116
117 xdspcore )
118     ARCH_DIR="xdspcore"
119     ENABLE_STATICVM="yes"
120     ARCH_CFLAGS="-D__XDSPCORE__"
121     USE_SCHEDULER="1"
122     ;;
123
124 * )
125     AC_MSG_ERROR($host_cpu systems are not supported at this time)
126     ;;
127 esac
128
129 dnl host type
130 case "$host_os" in
131 *cygwin* )
132     OS_DIR="cygwin"
133     INTRP_CFLAGS="$ARCH_CFLAGS -D__WINDOWS__ -D__CYGWIN__ -Wall -Wno-long-long"
134     ARCH_CFLAGS="$ARCH_CFLAGS -D__WINDOWS__ -D__CYGWIN__ -ansi -pedantic -Wall -Wno-long-long"
135     ;;
136
137 *darwin* )
138     OS_DIR="darwin"
139     INTRP_CFLAGS="$ARCH_CFLAGS -D__DARWIN__ -Wall -Wno-long-long"
140     ARCH_CFLAGS="$ARCH_CFLAGS -D__DARWIN__ -ansi -pedantic -Wall -Wno-long-long"
141     ;;
142
143 *freebsd* )
144     OS_DIR="freebsd"
145     INTRP_CFLAGS="$ARCH_CFLAGS -D__FREEBSD__ -Wall -Wno-long-long -D_XOPEN_SOURCE_EXTENDED"
146     ARCH_CFLAGS="$ARCH_CFLAGS -D__FREEBSD__ -ansi -pedantic -Wall -Wno-long-long -D_XOPEN_SOURCE_EXTENDED"
147     ;;
148
149 *irix* )
150     OS_DIR="irix"
151     INTRP_CFLAGS="$ARCH_CFLAGS -D__IRIX__"
152     ARCH_CFLAGS="$ARCH_CFLAGS -D__IRIX__"
153     ;;
154
155 *kfreebsd*-gnu)
156     OS_DIR="freebsd"
157     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"
158     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"
159     ;;
160
161 dnl must be before *linux*
162 *uclinux | *elf )
163     OS_DIR="uclinux"
164     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"
165     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     ;;
167
168 *linux* | *Linux* )
169     OS_DIR="linux"
170     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"
171     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"
172     ;;
173
174 *netbsd* )
175     OS_DIR="netbsd"
176     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"
177     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"
178     ;;
179
180 *solaris* )
181     OS_DIR="solaris"
182         dnl on solaris the architecture defines 'sparc','sun','unix' are not set when cpp is called with -ansi
183         dnl therefore we add them here
184     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"
185     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"
186     ;;
187
188 * )
189     ;;
190 esac
191
192
193 dnl temporary set the CFLAGS for configure tests (e.g. inline keyword)
194 dnl we set it properly at the end of this file
195 CFLAGS="$ARCH_CFLAGS $OPT_CFLAGS"
196
197 dnl set interpreter flags
198 AC_SUBST(INTRP_CFLAGS)
199
200 dnl define some stuff required for --fullversion
201 AC_DEFINE_UNQUOTED(VERSION_CONFIGURE_ARGS, "$ac_configure_args", [configure arguments])
202 AC_DEFINE_UNQUOTED(VERSION_CC, "$CC", [CC used])
203 AC_DEFINE_UNQUOTED(VERSION_CFLAGS, "$OPT_CFLAGS $ARCH_CFLAGS", [CFLAGS used])
204
205
206 dnl define and substitute some architecture specific variables
207 AC_DEFINE_UNQUOTED([ARCH_DIR], "${ARCH_DIR}", [architecture directory])
208 AC_DEFINE_UNQUOTED([JAVA_ARCH], "${JAVA_ARCH}", [Java architecture name])
209 AC_SUBST(ARCH_DIR)
210 AC_SUBST(OS_DIR)
211 AC_SUBST(USE_SCHEDULER)
212
213
214 dnl Checks for programs.
215 AC_PROG_CC
216 AM_PROG_AS
217 AC_PROG_LD
218 AC_PROG_LD_GNU
219 AC_PROG_RANLIB
220 AC_PROG_LN_S
221 AC_PROG_MAKE_SET
222 AM_PROG_MKDIR_P
223
224 dnl Checks for header files.
225 AC_HEADER_DIRENT
226 AC_HEADER_STDC
227
228 dnl keep them alpha-sorted!
229 AC_CHECK_HEADERS([fcntl.h])
230 AC_CHECK_HEADERS([libgen.h])
231 AC_CHECK_HEADERS([netdb.h])
232 AC_CHECK_HEADERS([stdlib.h])
233 AC_CHECK_HEADERS([string.h])
234 AC_CHECK_HEADERS([time.h])
235 AC_CHECK_HEADERS([ucontext.h])
236 AC_CHECK_HEADERS([unistd.h])
237 AC_CHECK_HEADERS([sys/ioctl.h])
238 AC_CHECK_HEADERS([sys/mman.h])
239 AC_CHECK_HEADERS([sys/resource.h])
240 AC_CHECK_HEADERS([sys/select.h])
241 AC_CHECK_HEADERS([sys/socket.h])
242 AC_CHECK_HEADERS([sys/stat.h])
243 AC_CHECK_HEADERS([sys/time.h])
244 AC_CHECK_HEADERS([sys/types.h])
245
246 dnl this is for fdlibm
247 AC_CHECK_HEADERS([stdint.h])
248 AC_CHECK_HEADERS([inttypes.h])
249 AC_CHECK_HEADERS([sys/config.h])
250 AC_CHECK_HEADERS([sys/types.h])
251 AC_EGREP_HEADER(uint32_t, stdint.h, AC_DEFINE(HAVE_INT32_DEFINED, 1, [Define to 1 if you have uint32_t]))
252 AC_EGREP_HEADER(uint32_t, inttypes.h, AC_DEFINE(HAVE_INT32_DEFINED, 1, [Define to 1 if you have uint32_t]))
253 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]))
254 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]))
255
256 dnl Checks for typedefs, structures, and compiler characteristics.
257 AC_C_CONST
258 AC_C_INLINE
259 AC_C_ATTRIBUTE
260 AC_TYPE_OFF_T
261 AC_TYPE_SIZE_T
262 AC_HEADER_TIME
263 AC_STRUCT_TM
264
265 dnl Checks for libraries (NOTE: Should be done before function checks,
266 dnl as some functions may be in libraries we check for).
267 AC_CHECK_LIB(dl, dlopen,,)
268
269 dnl Checks for library functions.
270 AC_PROG_GCC_TRADITIONAL
271 AC_TYPE_SIGNAL
272 AC_FUNC_MEMCMP
273 AC_FUNC_MMAP
274
275 dnl keep them alpha-sorted!
276 AC_CHECK_FUNCS([accept])
277 AC_CHECK_FUNCS([access])
278 AC_CHECK_FUNCS([atoi])
279 AC_CHECK_FUNCS([atol])
280 AC_CHECK_FUNCS([calloc])
281 AC_CHECK_FUNCS([close])
282 AC_CHECK_FUNCS([confstr])
283 AC_CHECK_FUNCS([connect])
284 AC_CHECK_FUNCS([dirname])
285 AC_CHECK_FUNCS([fflush])
286 AC_CHECK_FUNCS([fopen])
287 AC_CHECK_FUNCS([fprintf])
288 AC_CHECK_FUNCS([free])
289 AC_CHECK_FUNCS([fstat])
290 AC_CHECK_FUNCS([fsync])
291 AC_CHECK_FUNCS([ftruncate])
292 AC_CHECK_FUNCS([getcwd])
293 AC_CHECK_FUNCS([gethostbyname])
294 AC_CHECK_FUNCS([gethostname])
295 AC_CHECK_FUNCS([getpagesize])
296 AC_CHECK_FUNCS([getrusage])
297 AC_CHECK_FUNCS([getsockname])
298 AC_CHECK_FUNCS([getsockopt])
299 AC_CHECK_FUNCS([gettimeofday])
300 AC_CHECK_FUNCS([htons])
301 AC_CHECK_FUNCS([ioctl])
302 AC_CHECK_FUNCS([isnan])
303 AC_CHECK_FUNCS([listen])
304 AC_CHECK_FUNCS([localtime])
305 AC_CHECK_FUNCS([localtime_r])
306 AC_CHECK_FUNCS([lseek])
307 AC_CHECK_FUNCS([malloc])
308 AC_CHECK_FUNCS([mmap])
309 AC_CHECK_FUNCS([mprotect])
310 AC_CHECK_FUNCS([open])
311 AC_CHECK_FUNCS([readlink])
312 AC_CHECK_FUNCS([recv])
313 AC_CHECK_FUNCS([scandir])
314 AC_CHECK_FUNCS([select])
315 AC_CHECK_FUNCS([send])
316 AC_CHECK_FUNCS([setsockopt])
317 AC_CHECK_FUNCS([shutdown])
318 AC_CHECK_FUNCS([socket])
319 AC_CHECK_FUNCS([strchr])
320 AC_CHECK_FUNCS([strdup])
321 AC_CHECK_FUNCS([strerror])
322 AC_CHECK_FUNCS([strncmp])
323 AC_CHECK_FUNCS([strstr])
324 AC_CHECK_FUNCS([time])
325
326
327 dnl Checks for libraries.
328
329 dnl Checking sizeof void *
330 AC_CHECK_SIZEOF(void *)
331 AC_C_BIGENDIAN
332
333
334 dnl define install prefix
335 if test "x$prefix" = "xNONE"; then
336     CACAO_PREFIX=$ac_default_prefix
337 else
338     CACAO_PREFIX=$prefix
339 fi
340 AC_DEFINE_UNQUOTED([CACAO_PREFIX], "${CACAO_PREFIX}", [installation prefix])
341 AC_SUBST(CACAO_PREFIX)
342
343 dnl define libdir prefix
344 if test "x$libdir" = "xNONE"; then
345     CACAO_LIBDIR=$ac_default_libdir
346 else
347     CACAO_LIBDIR=$libdir
348 fi
349 dnl expand CACAO_LIBDIR to something that is usable in C code
350 AS_AC_EXPAND([CACAO_LIBDIR], ${CACAO_LIBDIR})
351 AC_DEFINE_UNQUOTED([CACAO_LIBDIR], "${CACAO_LIBDIR}", [library installation prefix])
352 AC_SUBST(CACAO_LIBDIR)
353
354
355 AC_CHECK_ENABLE_LTDL
356
357 AC_CHECK_ENABLE_JAVA
358
359 AC_CHECK_ENABLE_JIT
360 AC_CHECK_ENABLE_INTRP
361
362 if test x"${ENABLE_JIT}" = "xno" -a x"${ENABLE_INTRP}" = "xno"; then
363     AC_ERROR(You have to enable at least the JIT or the interpreter.)
364 fi
365
366 AC_CHECK_SOFTFLOAT
367 AC_CHECK_SOFT_FLOAT_CMP
368 AC_CHECK_SOFT_DOUBLE_CMP
369
370 AC_CHECK_ENABLE_GC
371 AC_CHECK_ENABLE_DEBUG
372 AC_CHECK_ENABLE_DUMP
373
374
375 dnl check for memcheck support
376 AC_MSG_CHECKING(whether debugging memory checks should be enabled)
377 AC_ARG_ENABLE([memcheck],
378               [AS_HELP_STRING(--enable-memcheck,enable debugging memory checks [[default=no]])],
379               [case "${enableval}" in
380                    yes) ENABLE_MEMCHECK=yes;;
381                    *) ENABLE_MEMCHECK=no;;
382                esac],
383               [ENABLE_MEMCHECK=no])
384 AC_MSG_RESULT(${ENABLE_MEMCHECK})
385 AM_CONDITIONAL([ENABLE_MEMCHECK], test x"${ENABLE_MEMCHECK}" = "xyes")
386
387 if test x"${ENABLE_MEMCHECK}" = "xyes"; then
388     AC_DEFINE([ENABLE_MEMCHECK], 1, [perform debugging memory checks])
389 fi
390
391
392 dnl check for handles (indirection cells) support
393 AC_MSG_CHECKING(whether handles (indirection cells) should be enabled)
394 AC_ARG_ENABLE([handles],
395               [AS_HELP_STRING(--enable-handles,enable handles (indirection cells) [[default=no]])],
396               [case "${enableval}" in
397                    yes) ENABLE_HANDLES=yes;;
398                    *) ENABLE_HANDLES=no;;
399                esac],
400               [ENABLE_HANDLES=no])
401 AC_MSG_RESULT(${ENABLE_HANDLES})
402 AM_CONDITIONAL([ENABLE_HANDLES], test x"${ENABLE_HANDLES}" = "xyes")
403
404 if test x"${ENABLE_HANDLES}" = "xyes"; then
405     AC_DEFINE([ENABLE_HANDLES], 1, [enable handles (indirection cells)])
406 fi
407
408
409 dnl check for vmlog support
410 AC_MSG_CHECKING(whether vmlog tracing should be enabled)
411 AC_ARG_ENABLE([vmlog],
412               [AS_HELP_STRING(--enable-vmlog,enable vmlog tracing [[default=no]])],
413               [case "${enableval}" in
414                    yes) ENABLE_VMLOG=yes;;
415                    *) ENABLE_VMLOG=no;;
416                esac],
417               [ENABLE_VMLOG=no])
418 AC_MSG_RESULT(${ENABLE_VMLOG})
419 AM_CONDITIONAL([ENABLE_VMLOG], test x"${ENABLE_VMLOG}" = "xyes")
420
421 if test x"${ENABLE_VMLOG}" = "xyes"; then
422     AC_DEFINE([ENABLE_VMLOG], 1, [enable vmlog tracing code])
423 fi
424
425
426 dnl check for disassembler support
427 AC_MSG_CHECKING(whether disassembler should be enabled)
428 AC_ARG_ENABLE([disassembler],
429               [AS_HELP_STRING(--enable-disassembler,enable disassembler [[default=no]])],
430               [case "${enableval}" in
431                    yes) ENABLE_DISASSEMBLER=yes;;
432                    *) ENABLE_DISASSEMBLER=no;;
433                esac],
434               [ENABLE_DISASSEMBLER=no])
435 AC_MSG_RESULT(${ENABLE_DISASSEMBLER})
436 AM_CONDITIONAL([ENABLE_DISASSEMBLER], test x"${ENABLE_DISASSEMBLER}" = "xyes")
437
438 if test x"${ENABLE_DISASSEMBLER}" = "xyes"; then
439     AC_DEFINE([ENABLE_DISASSEMBLER], 1, [enable disassembler])
440
441     dnl check for binutils headers and libraries on some architectures for the
442     dnl disassembler
443     case "${ARCH_DIR}" in
444         arm | i386 | powerpc | x86_64 | sparc64 | powerpc64 | s390 | m68k)
445             AC_CHECK_HEADER([ansidecl.h],, [AC_MSG_ERROR(cannot find ansidecl.h)])
446             AC_CHECK_HEADER([symcat.h],, [AC_MSG_ERROR(cannot find symcat.h)])
447             AC_CHECK_HEADER([bfd.h],, [AC_MSG_ERROR(cannot find bfd.h)])
448             AC_CHECK_HEADER([dis-asm.h],, [AC_MSG_ERROR(cannot find dis-asm.h)])
449
450             case "${OS_DIR}" in
451                 cygwin | darwin | netbsd | solaris)
452                      AC_CHECK_LIB(intl, dcgettext,, [AC_MSG_ERROR(cannot find libintl (from binutils))])
453                      ;;
454             esac
455
456             case "${OS_DIR}" in
457                 solaris)
458                                          AC_CHECK_LIB(rt, sem_init,, [AC_MSG_ERROR(cannot find librt)])
459                      ;;
460             esac
461
462
463             AC_CHECK_LIB(iberty, xstrerror,, [AC_MSG_ERROR(cannot find libiberty (from binutils))])
464             AC_CHECK_LIB(bfd, bfd_get_arch,, [AC_MSG_ERROR(cannot find libbfd (from binutils))])
465             AC_CHECK_LIB(opcodes, disassembler,, [AC_MSG_ERROR(cannot find libopcodes (from binutils))])
466             AC_DEFINE([WITH_BINUTILS_DISASSEMBLER], 1, [use binutils disassembler])
467             AM_CONDITIONAL([WITH_BINUTILS_DISASSEMBLER], [true])
468             ;;
469         * )
470             AM_CONDITIONAL([WITH_BINUTILS_DISASSEMBLER], [false])
471             ;;
472     esac
473 else
474     AM_CONDITIONAL([WITH_BINUTILS_DISASSEMBLER], [false])
475 fi
476
477
478 dnl check for statistics
479 AC_MSG_CHECKING(whether statistics generation should be enabled)
480 AC_ARG_ENABLE([statistics],
481               [AS_HELP_STRING(--enable-statistics,enable statistics generation [[default=no]])],
482               [case "${enableval}" in
483                    yes) ENABLE_STATISTICS=yes;;
484                    *) ENABLE_STATISTICS=no;;
485                esac],
486               [ENABLE_STATISTICS=no])
487 AC_MSG_RESULT(${ENABLE_STATISTICS})
488 AM_CONDITIONAL([ENABLE_STATISTICS], test x"${ENABLE_STATISTICS}" = "xyes")
489
490 if test x"${ENABLE_STATISTICS}" = "xyes"; then
491     AC_DEFINE([ENABLE_STATISTICS], 1, [enable statistics])
492 fi
493
494
495 dnl check for verifier
496 AC_MSG_CHECKING(whether classfile verification should be enabled)
497 AC_ARG_ENABLE([verifier],
498               [AS_HELP_STRING(--disable-verifier,disable classfile verification [[default=yes]])],
499               [case "${enableval}" in
500                    no) ENABLE_VERIFIER=no;;
501                    *) ENABLE_VERIFIER=yes;;
502                esac],
503               [ENABLE_VERIFIER=yes])
504 AC_MSG_RESULT(${ENABLE_VERIFIER})
505 AM_CONDITIONAL([ENABLE_VERIFIER], test x"${ENABLE_VERIFIER}" = "xyes")
506
507 if test x"${ENABLE_VERIFIER}" = "xyes"; then
508     AC_DEFINE([ENABLE_VERIFIER], 1, [enable classfile verification])
509 fi
510
511
512 dnl check for compiler timing
513 AC_MSG_CHECKING(whether real-time timing should be enabled)
514 AC_ARG_ENABLE([rt-timing],
515               [AS_HELP_STRING(--enable-rt-timing,enable real-time timing [[default=no]])],
516               [case "${enableval}" in
517                    yes) ENABLE_RT_TIMING=yes;;
518                    *) ENABLE_RT_TIMING=no;;
519                esac],
520               [ENABLE_RT_TIMING=no])
521 AC_MSG_RESULT(${ENABLE_RT_TIMING})
522 AM_CONDITIONAL([ENABLE_RT_TIMING], test x"${ENABLE_RT_TIMING}" = "xyes")
523
524 if test x"${ENABLE_RT_TIMING}" = "xyes"; then
525     AC_DEFINE([ENABLE_RT_TIMING], 1, [enable real-time timing])
526 fi
527
528
529 dnl check for cycle count statistics
530 AC_MSG_CHECKING(whether cycle count statistics should be enabled)
531 AC_ARG_ENABLE([cycles-stats],
532               [AS_HELP_STRING(--enable-cycles-stats,enable cycle count statistics [[default=no]])],
533               [case "${enableval}" in
534                    yes) ENABLE_CYCLES_STATS=yes;;
535                    *) ENABLE_CYCLES_STATS=no;;
536                esac],
537               [ENABLE_CYCLES_STATS=no])
538 AC_MSG_RESULT(${ENABLE_CYCLES_STATS})
539 AM_CONDITIONAL([ENABLE_CYCLES_STATS], test x"${ENABLE_CYCLES_STATS}" = "xyes")
540
541 if test x"${ENABLE_CYCLES_STATS}" = "xyes"; then
542     AC_DEFINE([ENABLE_CYCLES_STATS], 1, [enable cycle count statistics])
543 fi
544
545
546 dnl check for JVMTI
547 AC_MSG_CHECKING(whether to compile JVMTI support)
548 AC_ARG_ENABLE([jvmti],
549               [AS_HELP_STRING(--enable-jvmti,enable JVMTI [[default=no]])],
550               [case "${enableval}" in
551                    yes) ENABLE_JVMTI=yes;;
552                    *) ENABLE_JVMTI=no;;
553                esac],
554               [ENABLE_JVMTI=no])
555 AC_MSG_RESULT(${ENABLE_JVMTI})
556 AM_CONDITIONAL([ENABLE_JVMTI], test x"${ENABLE_JVMTI}" = "xyes")
557
558 if test x"${ENABLE_JVMTI}" = "xyes"; then
559     AC_DEFINE([ENABLE_JVMTI], 1, [use JVMTI])
560 fi
561
562
563 AC_CHECK_ENABLE_THREADS
564
565
566 dnl check if if-conversion should be supported
567 AC_MSG_CHECKING(whether if-conversion should be supported)
568 AC_ARG_ENABLE([ifconv],
569               [AS_HELP_STRING(--disable-ifconv,disable if-conversion [[default=yes]])],
570               [case "${enableval}" in
571                    no) ENABLE_IFCONV=no;;
572                    *) ENABLE_IFCONV=yes;;
573                esac],
574               [ENABLE_IFCONV=yes])
575 AC_MSG_RESULT(${ENABLE_IFCONV})
576 AM_CONDITIONAL([ENABLE_IFCONV], test x"${ENABLE_IFCONV}" = "xyes")
577    
578 if test x"${ENABLE_IFCONV}" = "xyes"; then
579     AC_DEFINE([ENABLE_IFCONV], 1, [enable if-conversion])
580 fi
581
582
583 dnl check for inlining
584 AC_MSG_CHECKING(whether method inlining should be supported)
585 AC_ARG_ENABLE([inlining],
586               [AS_HELP_STRING(--enable-inlining,enable method inlining [[default=no]])],
587               [case "${enableval}" in
588                    yes) ENABLE_INLINING=yes;;
589                    *) ENABLE_INLINING=no;;
590                esac],
591               [ENABLE_INLINING=no])
592 AC_MSG_RESULT(${ENABLE_INLINING})
593 AM_CONDITIONAL([ENABLE_INLINING], test x"${ENABLE_INLINING}" = "xyes")
594
595 if test x"${ENABLE_INLINING}" = "xyes"; then
596     AC_DEFINE([ENABLE_INLINING], 1, [use method inlining])
597 fi
598
599
600 dnl check for inlining debug options
601 AC_MSG_CHECKING(whether method inlining debug options should be enabled)
602 AC_ARG_ENABLE([inlining-debug],
603               [AS_HELP_STRING(--enable-inlining-debug,enable method inlining debug options [[default=no]])],
604               [case "${enableval}" in
605                    yes) ENABLE_INLINING_DEBUG=yes;;
606                    *) ENABLE_INLINING_DEBUG=no;;
607                esac],
608               [ENABLE_INLINING_DEBUG=no])
609 AC_MSG_RESULT(${ENABLE_INLINING_DEBUG})
610 AM_CONDITIONAL([ENABLE_INLINING_DEBUG], test x"${ENABLE_INLINING_DEBUG}" = "xyes")
611
612 if test x"${ENABLE_INLINING_DEBUG}" = "xyes"; then
613     AC_DEFINE([ENABLE_INLINING_DEBUG], 1, [enable method inlining debug options])
614 fi
615
616
617 dnl check for replacement
618 AC_MSG_CHECKING(whether on-stack replacement should be supported)
619 AC_ARG_ENABLE([replacement],
620               [AS_HELP_STRING(--enable-replacement,enable on-stack replacement [[default=no]])],
621               [case "${enableval}" in
622                    yes) ENABLE_REPLACEMENT=yes;;
623                    *) ENABLE_REPLACEMENT=no;;
624                esac],
625               [ENABLE_REPLACEMENT=no])
626 AC_MSG_RESULT(${ENABLE_REPLACEMENT})
627 AM_CONDITIONAL([ENABLE_REPLACEMENT], test x"${ENABLE_REPLACEMENT}" = "xyes")
628
629 if test x"${ENABLE_REPLACEMENT}" = "xyes"; then
630     AC_DEFINE([ENABLE_REPLACEMENT], 1, [use on-stack replacement])
631 fi
632
633
634 dnl check for loop optimization
635 AC_MSG_CHECKING(whether loop optimization should be supported)
636 AC_ARG_ENABLE([loop],
637               [AS_HELP_STRING(--enable-loop,enable loop optimization [[default=no]])],
638               [case "${enableval}" in
639                    yes) ENABLE_LOOP=yes;;
640                    *) ENABLE_LOOP=no;;
641                esac],
642               [ENABLE_LOOP=no])
643 AC_MSG_RESULT(${ENABLE_LOOP})
644 AM_CONDITIONAL([ENABLE_LOOP], test x"${ENABLE_LOOP}" = "xyes")
645
646 if test x"${ENABLE_LOOP}" = "xyes"; then
647     AC_DEFINE([ENABLE_LOOP], 1, [use loop optimization])
648 fi
649
650
651 dnl check if linear scan register allocator(lsra) with SSA should be used
652 AC_MSG_CHECKING(whether lsra with ssa should be supported)
653 AC_ARG_ENABLE([ssa],
654               [AS_HELP_STRING(--disable-ssa,disable ssa [[default=no]])],
655               [case "${enableval}" in
656                    no) ENABLE_SSA=no;;
657                    *) ENABLE_SSA=yes;;
658                esac],
659               [ENABLE_SSA=no])
660 AC_MSG_RESULT(${ENABLE_SSA})
661 AM_CONDITIONAL([ENABLE_SSA], test x"${ENABLE_SSA}" = "xyes")
662
663 if test x"${ENABLE_SSA}" = "xyes"; then
664     AC_DEFINE([ENABLE_SSA], 1, [enable lsra with ssa])
665     ENABLE_LSRA="no"
666 fi
667
668
669 dnl check if linear scan register allocator(lsra) should be used
670 AC_MSG_CHECKING(whether lsra should be supported)
671 AC_ARG_ENABLE([lsra],
672               [AS_HELP_STRING(--enable-lsra,enable linear scan register allocator [[default=no]])],
673               [case "${enableval}" in
674                    yes) ENABLE_LSRA=yes;;
675                    *) ENABLE_LSRA=no;;
676                esac],
677               [ENABLE_LSRA=no])
678    
679 if test x"${ENABLE_LSRA}" = "xyes"; then
680     if test x"${ENABLE_SSA}" = "xyes"; then
681         ENABLE_LSRA="no"
682     fi
683 fi
684 AC_MSG_RESULT(${ENABLE_LSRA})
685 AM_CONDITIONAL([ENABLE_LSRA], test x"${ENABLE_LSRA}" = "xyes")
686  
687 if test x"${ENABLE_LSRA}" = "xyes"; then
688     AC_DEFINE([ENABLE_LSRA], 1, [enable lsra])
689 fi
690
691
692 dnl check if profiling should be supported
693 AC_MSG_CHECKING(whether profiling should be supported)
694 AC_ARG_ENABLE([profiling],
695               [AS_HELP_STRING(--enable-profiling,enable profiling [[default=no]])],
696               [case "${enableval}" in
697                    yes) ENABLE_PROFILING=yes;;
698                    *) ENABLE_PROFILING=no;;
699                esac],
700               [ENABLE_PROFILING=no])
701 AC_MSG_RESULT(${ENABLE_PROFILING})
702 AM_CONDITIONAL([ENABLE_PROFILING], test x"${ENABLE_PROFILING}" = "xyes")
703    
704 if test x"${ENABLE_PROFILING}" = "xyes"; then
705     AC_DEFINE([ENABLE_PROFILING], 1, [enable profiling])
706 fi
707
708
709 dnl check for instruction scheduler
710 AC_ARG_ENABLE([scheduler], [AS_HELP_STRING(--enable-scheduler,enable instruction scheduler [[default=no]])])
711
712 AC_MSG_CHECKING(whether instruction scheduler should be supported)
713 if test x"${USE_SCHEDULER}" = "x1" -o x"$enable_scheduler" = "xyes"; then
714         case "${ARCH_DIR}" in
715                 xdspcore )
716                         ;;
717                 * )
718                         AC_MSG_ERROR(instruction scheduler is not available for ${ARCH_DIR} code generator)
719                         ;;
720         esac
721
722         AC_MSG_RESULT(yes)
723         AC_DEFINE([USE_SCHEDULER], 1, [use scheduler])
724         AM_CONDITIONAL([USE_SCHEDULER], [true])
725 else
726         AC_MSG_RESULT(no)
727         AM_CONDITIONAL([USE_SCHEDULER], [false])
728 fi
729
730
731 AC_CHECK_ENABLE_ZLIB
732
733 dnl check for stuff to be built
734 AC_CHECK_ENABLE_JNI
735 AC_CHECK_ENABLE_LIBJVM
736
737 dnl ATTENTION: These check must be after setting
738 dnl enable_shared/enable_static (happens in AC_CHECK_ENABLE_LIBJVM),
739 dnl because libtool uses them to build the correct libraries.
740 AC_LIBTOOL_DLOPEN
741 AC_PROG_LIBTOOL
742
743 AC_CHECK_ENABLE_STATICVM
744 AC_CHECK_ENABLE_ANNOTATIONS
745
746
747 dnl where is CACAO's vm.zip
748 AC_MSG_CHECKING(where CACAO's vm.zip is installed)
749 AC_ARG_WITH([vm-zip],
750             [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]])],
751             [CACAO_VM_ZIP=${withval}],
752             [CACAO_VM_ZIP=${CACAO_PREFIX}/share/cacao/vm.zip])
753 AC_MSG_RESULT(${CACAO_VM_ZIP})
754 AC_DEFINE_UNQUOTED([CACAO_VM_ZIP], "${CACAO_VM_ZIP}", [CACAO's vm.zip])
755 AC_SUBST(CACAO_VM_ZIP)
756
757
758 AC_CHECK_WITH_CACAOH
759 AC_CHECK_WITH_CLASSPATH
760 AC_CHECK_WITH_CLASSPATH_PREFIX
761 AC_CHECK_WITH_CLASSPATH_CLASSES
762 AC_CHECK_WITH_CLASSPATH_LIBDIR
763 AC_CHECK_WITH_CLASSPATH_INCLUDEDIR
764 AC_CHECK_WITH_JRE_LAYOUT
765
766
767 dnl check for some programs we need
768
769 case "${WITH_CLASSPATH}" in
770     cldc1.1 | gnu)
771         AC_PROG_JAVAC
772         AC_PROG_JAR
773         ;;
774     sun)
775         ;;
776     *)
777         AC_MSG_ERROR(unknown classpath configuration ${WITH_CLASSPATH})
778         ;;
779 esac
780
781
782 AC_CHECK_HEADERS(
783         [regex.h], 
784         [
785                 dnl If debug build and regex.h available, enable debug filter
786                 if test x"${NDEBUG}" = "xno"; then
787                         AC_DEFINE(ENABLE_DEBUG_FILTER, 1, [debug filter])
788                 fi
789                 dnl If vmlog enambled and regex.h available, enable vmlogfilter
790                 AM_CONDITIONAL([ENABLE_VMLOGFILTER], [test x"${ENABLE_VMLOG}" = "xyes"])
791         ],
792         [
793                 AM_CONDITIONAL([ENABLE_VMLOGFILTER], [false])
794         ]
795 )
796
797 dnl finally pass CFLAGS to Makefiles via AM_CFLAGS
798 CFLAGS=$OPT_CFLAGS
799 AM_CFLAGS=$ARCH_CFLAGS
800 AC_SUBST(AM_CFLAGS)
801
802
803 AC_CONFIG_FILES([Makefile]
804                 [contrib/Makefile]
805                 [contrib/setenvinstalled]
806                 [contrib/setenvsource]
807                 [contrib/vmlog/Makefile]
808                 [contrib/vmlog/t/Makefile]
809                 [doc/Makefile]
810                 [doc/handbook/Makefile]
811                 [man/Makefile]
812                 [src/Makefile]
813                 [src/cacao/Makefile]
814                 [src/cacaoh/Makefile]
815                 [src/fdlibm/Makefile]
816                 [src/lib/Makefile]
817                 [src/mm/Makefile]
818                 [src/mm/cacao-gc/Makefile]
819                 [src/native/Makefile]
820                 [src/native/include/Makefile]
821                 [src/native/jvmti/Makefile]
822                 [src/native/vm/Makefile]
823                 [src/native/vm/cldc1.1/Makefile]
824                 [src/native/vm/gnu/Makefile]
825                 [src/native/vm/sun/Makefile]
826                 [src/scripts/Makefile]
827                 [src/scripts/java]
828                 [src/threads/Makefile]
829                 [src/threads/native/Makefile]
830                 [src/threads/none/Makefile]
831                 [src/toolbox/Makefile]
832                 [src/vm/Makefile]
833                 [src/vm/jit/Makefile]
834                 [src/vm/jit/allocator/Makefile]
835                 [src/vm/jit/alpha/Makefile]
836                 [src/vm/jit/alpha/freebsd/Makefile]
837                 [src/vm/jit/alpha/linux/Makefile]
838                 [src/vm/jit/arm/Makefile]
839                 [src/vm/jit/arm/linux/Makefile]
840                 [src/vm/jit/i386/Makefile]
841                 [src/vm/jit/i386/cygwin/Makefile]
842                 [src/vm/jit/i386/darwin/Makefile]
843                 [src/vm/jit/i386/freebsd/Makefile]
844                 [src/vm/jit/i386/linux/Makefile]
845                 [src/vm/jit/intrp/Makefile]
846                 [src/vm/jit/inline/Makefile]
847                 [src/vm/jit/loop/Makefile]
848                 [src/vm/jit/m68k/Makefile]
849                 [src/vm/jit/m68k/linux/Makefile]
850                 [src/vm/jit/mips/Makefile]
851                 [src/vm/jit/mips/irix/Makefile]
852                 [src/vm/jit/mips/linux/Makefile]
853                 [src/vm/jit/mips/uclinux/Makefile]
854                 [src/vm/jit/optimizing/Makefile]
855                 [src/vm/jit/parisc/Makefile]
856                 [src/vm/jit/parisc/linux/Makefile]
857                 [src/vm/jit/powerpc/Makefile]
858                 [src/vm/jit/powerpc/darwin/Makefile]
859                 [src/vm/jit/powerpc/linux/Makefile]
860                 [src/vm/jit/powerpc/netbsd/Makefile]
861                 [src/vm/jit/powerpc64/Makefile]
862                 [src/vm/jit/powerpc64/linux/Makefile]
863                 [src/vm/jit/s390/Makefile]
864                 [src/vm/jit/schedule/Makefile]
865                 [src/vm/jit/sparc64/Makefile]
866                 [src/vm/jit/sparc64/linux/Makefile]
867                 [src/vm/jit/sparc64/solaris/Makefile]
868                 [src/vm/jit/verify/Makefile]
869                 [src/vm/jit/x86_64/Makefile]
870                 [src/vm/jit/x86_64/freebsd/Makefile]
871                 [src/vm/jit/x86_64/linux/Makefile]
872                 [src/vmcore/Makefile]
873                 [tests/Makefile]
874                 [tests/regression/Makefile]
875                 [tests/regression/codepatching/Makefile]
876                 [tests/regression/jasmin/Makefile]
877                 [tests/regression/native/Makefile]
878                 [tests/regression/resolving/Makefile]
879                 [tests/regression/resolving/classes1/Makefile]
880                 [tests/regression/resolving/classes2/Makefile]
881                 [tests/regression/resolving/classes3/Makefile]
882 )
883
884
885 dnl now configure subpackages with OPT_CFLAGS and ARCH_CFLAGS
886 export OPT_CFLAGS
887 export ARCH_CFLAGS
888 AC_CONFIG_SUBDIRS(src/mm/boehm-gc)
889
890
891 AC_OUTPUT
892
893
894 ## Local variables:
895 ## mode: m4
896 ## indent-tabs-mode: t
897 ## c-basic-offset: 4
898 ## tab-width: 8
899 ## compile-command: "automake --add-missing"
900 ## End: