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