* m4/jvm.m4: New file.
[cacao.git] / configure.ac
1 dnl configure.ac
2 dnl
3 dnl Copyright (C) 1996-2005, 2006, 2007, 2008
4 dnl CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
5 dnl 
6 dnl This file is part of CACAO.
7 dnl 
8 dnl This program is free software; you can redistribute it and/or
9 dnl modify it under the terms of the GNU General Public License as
10 dnl published by the Free Software Foundation; either version 2, or (at
11 dnl your option) any later version.
12 dnl 
13 dnl This program is distributed in the hope that it will be useful, but
14 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
15 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16 dnl General Public License for more details.
17 dnl 
18 dnl You should have received a copy of the GNU General Public License
19 dnl along with this program; if not, write to the Free Software
20 dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21 dnl 02110-1301, USA.
22
23 dnl Process this file with autoconf to produce a configure script.
24
25
26 AC_INIT(cacao, 1.1.0pre, cacao@cacaojvm.org)
27 AC_CONFIG_SRCDIR(src/cacao/cacao.cpp)
28 AC_CANONICAL_HOST
29 AC_PREREQ(2.59)
30 AM_INIT_AUTOMAKE([1.9.0 dist-bzip2 tar-ustar])
31 AM_MAINTAINER_MODE
32
33 AM_CONFIG_HEADER([config.h])
34
35 AC_PREFIX_DEFAULT(/usr/local/cacao)
36
37
38 dnl Host CPU type.
39 case "$host_cpu" in
40 alpha | alphaev56 | alphapca56 )
41     ARCH_DIR="alpha"
42     ARCH_FLAGS="-mieee -D__ALPHA__"
43     JAVA_ARCH="alpha"
44     ;;
45
46 arm | armv4 | armv4tl | armv5b | armv5l | armv5tel | armv5tejl )
47     ARCH_DIR="arm"
48     ARCH_FLAGS="-D__ARM__"
49     JAVA_ARCH="arm"
50     ;;
51
52 hppa2.0 )
53     ARCH_DIR="parisc"
54     ARCH_FLAGS="-D__PARISC__"
55     JAVA_ARCH="hppa"
56     ;;
57
58 i386 | i486 | i586 | i686 )
59     ARCH_DIR="i386"
60     ARCH_FLAGS="-m32 -D__I386__"
61     JAVA_ARCH="i386"
62     ;;
63
64 m68k )
65     ARCH_DIR="m68k"
66     ARCH_FLAGS="-D__M68K__"
67     JAVA_ARCH="m68k"
68     ;;
69
70 mips | mipsel )
71     ARCH_DIR="mips"
72     ARCH_FLAGS="-D__MIPS__"
73     dnl Is this correct for mipsel?
74     JAVA_ARCH="mips"
75     ;;
76
77 powerpc )
78     ARCH_DIR="powerpc"
79     ARCH_FLAGS="-m32 -D__POWERPC__"
80     JAVA_ARCH="ppc"
81     ;;
82
83 powerpc64 )
84     ARCH_DIR="powerpc64"
85     ARCH_FLAGS="-m64 -D__POWERPC64__"
86     JAVA_ARCH="ppc64"
87     ;;
88
89 s390 )
90     ARCH_DIR="s390"
91     ARCH_FLAGS="-D__S390__"
92     JAVA_ARCH="s390"
93     ;;
94
95 sparc | sparc64 )
96     ARCH_DIR="sparc64"
97     ARCH_FLAGS="-mcpu=v9 -m64 -D__SPARC_64__"
98     dnl Is this correct for 64-bits?
99     JAVA_ARCH="sparc"
100     ;;
101
102 x86_64 )
103     ARCH_DIR="x86_64"
104     ARCH_FLAGS="-m64 -D__X86_64__"
105     JAVA_ARCH="amd64"
106     ;;
107
108 xdspcore )
109     ARCH_DIR="xdspcore"
110     ENABLE_STATICVM="yes"
111     ARCH_FLAGS="-D__XDSPCORE__"
112     USE_SCHEDULER="1"
113     ;;
114
115 * )
116     AC_MSG_ERROR([$host_cpu systems are currently not supported.])
117     ;;
118 esac
119
120
121 dnl Host operating system type.
122 case "$host_os" in
123 *cygwin* )
124     OS_DIR="cygwin"
125     OS_FLAGS="-D__WINDOWS__ -D__CYGWIN__"
126     INTRP_CFLAGS="-Wall -Wno-long-long $ARCH_FLAGS $OS_FLAGS"
127     ;;
128
129 *darwin* )
130     OS_DIR="darwin"
131     OS_FLAGS="-D__DARWIN__"
132     INTRP_CFLAGS="-Wall -Wno-long-long $ARCH_FLAGS $OS_FLAGS"
133     ;;
134
135 dnl Must be BEFORE *freebsd*.
136 *kfreebsd*-gnu)
137     OS_DIR="freebsd"
138     OS_FLAGS="-D__FREEBSD__ -D_POSIX_C_SOURCE=200112L -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED -D_BSD_SOURCE"
139     INTRP_CFLAGS="-Wall -Wno-long-long $ARCH_FLAGS $OS_FLAGS"
140     ;;
141
142 *freebsd* )
143     OS_DIR="freebsd"
144     OS_FLAGS="-D__FREEBSD__ -D_XOPEN_SOURCE_EXTENDED"
145     INTRP_CFLAGS="-Wall -Wno-long-long $ARCH_FLAGS $OS_FLAGS"
146     ;;
147
148 *irix* )
149     OS_DIR="irix"
150     OS_FLAGS="-D__IRIX__"
151     INTRP_CFLAGS="$ARCH_FLAGS $OS_FLAGS"
152     ;;
153
154 dnl Must be BEFORE *linux*.
155 *uclinux | *elf )
156     OS_DIR="uclinux"
157     OS_FLAGS="-D__LINUX__ -D_POSIX_C_SOURCE=200112L -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED -D_BSD_SOURCE"
158     INTRP_CFLAGS="-Wall -Wno-long-long $ARCH_FLAGS $OS_FLAGS"
159     ;;
160
161 *linux* | *Linux* )
162     OS_DIR="linux"
163     OS_FLAGS="-D__LINUX__ -D_POSIX_C_SOURCE=200112L -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED -D_BSD_SOURCE"
164     INTRP_CFLAGS="-Wall -Wno-long-long $ARCH_FLAGS $OS_FLAGS"
165     ;;
166
167 *netbsd* )
168     OS_DIR="netbsd"
169     OS_FLAGS="-D__NETBSD__ -D_POSIX_C_SOURCE=200112L -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED -D_BSD_SOURCE"
170     INTRP_CFLAGS="-Wall -Wno-long-long $ARCH_FLAGS $OS_FLAGS"
171     ;;
172
173 *solaris* )
174     OS_DIR="solaris"
175     dnl On solaris the architecture defines 'sparc', 'sun', 'unix' are
176     dnl not set when cpp is called with -std=c99, therefore we add them
177     dnl here.
178     OS_FLAGS="-D__SOLARIS__ -D_POSIX_C_SOURCE=200112L -D__EXTENSIONS__ -D_BSD_SOURCE"
179     CC_FLAGS="-D_XOPEN_SOURCE=600"
180     CXX_FLAGS="-D_XOPEN_SOURCE=500"
181     INTRP_CFLAGS="-Wall -Wno-long-long $ARCH_FLAGS $OS_FLAGS"
182     ;;
183
184 * )
185     AC_MSG_ERROR([$host_os operating systems are currently not supported.])
186     ;;
187 esac
188
189
190 dnl Set optimization and debugging for all architectures and systems.
191 dnl NOTE: Setting the CFLAGS/CXXFLAGS only works before calling AC_PROG_CC/AC_PROG_CXX.
192 if test x"$CFLAGS" = "x"; then
193     OPT_CFLAGS="-g -O0"
194 else
195     OPT_CFLAGS=$CFLAGS
196 fi
197
198 if test x"$CXXFLAGS" = "x"; then
199     OPT_CXXFLAGS="-g -O0"
200 else
201     OPT_CXXFLAGS=$CXXFLAGS
202 fi
203
204 dnl Check for compiler.
205 AC_PROG_CC
206 AC_PROG_CXX
207
208 dnl Check compiler vendor.
209 AX_COMPILER_VENDOR
210
211 dnl Set compiler flags depending on the compiler vendor.
212 case "$ax_cv_c_compiler_vendor" in
213 gnu )
214     CC_FLAGS="-std=c99 -pedantic -Wall -Wno-long-long $CC_FLAGS"
215     CXX_FLAGS="-std=c++98 -pedantic -Wall -Wno-long-long $CXX_FLAGS"
216     ;;
217
218 sgi )
219     CC_FLAGS="-c99 $CC_FLAGS"
220     CXX_FLAGS="$CXX_FLAGS"
221     ;;
222
223 sun )
224     CC_FLAGS="-xc99 $CC_FLAGS"
225     CXX_FLAGS="$CXX_FLAGS"
226     ;;
227
228 * )    
229     AC_MSG_ERROR([$ax_cv_c_compiler_vendor compilers are currently not supported.])
230     ;;
231 esac
232
233 dnl Temporary set the CFLAGS for configure tests (e.g. inline keyword)
234 dnl we set it properly at the end of this file.
235 CFLAGS="$OPT_CFLAGS $ARCH_FLAGS $OS_FLAGS $CC_FLAGS"
236 CXXFLAGS="$OPT_CXXFLAGS $ARCH_FLAGS $OS_FLAGS $CXX_FLAGS"
237
238 dnl set interpreter flags
239 AC_SUBST(INTRP_CFLAGS)
240
241 dnl define and substitute some architecture specific variables
242 AC_DEFINE_UNQUOTED([ARCH_DIR], "${ARCH_DIR}", [architecture directory])
243 AC_DEFINE_UNQUOTED([JAVA_ARCH], "${JAVA_ARCH}", [Java architecture name])
244 AC_SUBST(ARCH_DIR)
245 AC_SUBST(JAVA_ARCH)
246 AC_SUBST(OS_DIR)
247 AC_SUBST(USE_SCHEDULER)
248
249 dnl Checks for programs.
250 AM_PROG_AS
251 AC_PROG_LD
252 AC_PROG_LD_GNU
253 AC_PROG_LN_S
254 AC_PROG_MAKE_SET
255 AM_PROG_MKDIR_P
256
257 AM_CONDITIONAL([WITH_GNU_LD], [test x"$with_gnu_ld" = "xyes"])
258
259 dnl Checks for header files.
260 AC_HEADER_DIRENT
261 AC_HEADER_STDC
262
263 dnl Crucial header files.
264 AC_CHECK_HEADERS([stdbool.h],, [AC_MSG_ERROR(cannot find stdbool.h)])
265 AC_CHECK_HEADERS([stdint.h],, [AC_MSG_ERROR(cannot find stdint.h)])
266
267 dnl keep them alpha-sorted!
268 AC_CHECK_HEADERS([assert.h])
269 AC_CHECK_HEADERS([errno.h])
270 AC_CHECK_HEADERS([execinfo.h])
271 AC_CHECK_HEADERS([fcntl.h])
272 AC_CHECK_HEADERS([libgen.h])
273 AC_CHECK_HEADERS([netdb.h])
274 AC_CHECK_HEADERS([signal.h])
275 AC_CHECK_HEADERS([stdarg.h])
276 AC_CHECK_HEADERS([stdint.h])
277 AC_CHECK_HEADERS([stdio.h])
278 AC_CHECK_HEADERS([stdlib.h])
279 AC_CHECK_HEADERS([string.h])
280 AC_CHECK_HEADERS([time.h])
281 AC_CHECK_HEADERS([ucontext.h])
282 AC_CHECK_HEADERS([unistd.h])
283 AC_CHECK_HEADERS([sys/ioctl.h])
284 AC_CHECK_HEADERS([sys/mman.h])
285 AC_CHECK_HEADERS([sys/resource.h])
286 AC_CHECK_HEADERS([sys/select.h])
287 AC_CHECK_HEADERS([sys/socket.h])
288 AC_CHECK_HEADERS([sys/stat.h])
289 AC_CHECK_HEADERS([sys/time.h])
290 AC_CHECK_HEADERS([sys/types.h])
291
292 dnl Checks for typedefs, structures, and compiler characteristics.
293 AC_C_CONST
294 AC_C_INLINE
295 AC_C_ATTRIBUTE
296 AC_TYPE_OFF_T
297 AC_TYPE_SIZE_T
298 AC_HEADER_TIME
299 AC_STRUCT_TM
300
301 dnl Checks for libraries (NOTE: Should be done before function checks,
302 dnl as some functions may be in libraries we check for).
303 case "${OS_DIR}" in
304     solaris )
305          AC_CHECK_LIB([socket], [gethostname],, [AC_MSG_ERROR(cannot find libsocket)])
306          ;;
307 esac
308
309 dnl Checks for library functions.
310 AC_PROG_GCC_TRADITIONAL
311 AC_TYPE_SIGNAL
312 AC_FUNC_MEMCMP
313 AC_FUNC_MMAP
314
315 dnl keep them alpha-sorted!
316 AC_CHECK_FUNCS([abort])
317 AC_CHECK_FUNCS([accept])
318 AC_CHECK_FUNCS([access])
319 AC_CHECK_FUNCS([atoi])
320 AC_CHECK_FUNCS([atol])
321 AC_CHECK_FUNCS([backtrace])
322 AC_CHECK_FUNCS([backtrace_symbols])
323 AC_CHECK_FUNCS([calloc])
324 AC_CHECK_FUNCS([close])
325 AC_CHECK_FUNCS([confstr])
326 AC_CHECK_FUNCS([connect])
327 AC_CHECK_FUNCS([dirname])
328 AC_CHECK_FUNCS([fclose])
329 AC_CHECK_FUNCS([fflush])
330 AC_CHECK_FUNCS([fopen])
331 AC_CHECK_FUNCS([fprintf])
332 AC_CHECK_FUNCS([fread])
333 AC_CHECK_FUNCS([free])
334 AC_CHECK_FUNCS([fstat])
335 AC_CHECK_FUNCS([fsync])
336 AC_CHECK_FUNCS([ftruncate])
337 AC_CHECK_FUNCS([getcwd])
338 AC_CHECK_FUNCS([getenv])
339 AC_CHECK_FUNCS([gethostbyname])
340 AC_CHECK_FUNCS([gethostname])
341 AC_CHECK_FUNCS([getpagesize])
342 AC_CHECK_FUNCS([getrusage])
343 AC_CHECK_FUNCS([getsockname])
344 AC_CHECK_FUNCS([getsockopt])
345 AC_CHECK_FUNCS([gettimeofday])
346 AC_CHECK_FUNCS([htons])
347 AC_CHECK_FUNCS([ioctl])
348 AC_CHECK_FUNCS([isnan])
349 AC_CHECK_FUNCS([listen])
350 AC_CHECK_FUNCS([localtime])
351 AC_CHECK_FUNCS([localtime_r])
352 AC_CHECK_FUNCS([lseek])
353 AC_CHECK_FUNCS([malloc])
354 AC_CHECK_FUNCS([memcpy])
355 AC_CHECK_FUNCS([memset])
356 AC_CHECK_FUNCS([mmap])
357 AC_CHECK_FUNCS([mprotect])
358 AC_CHECK_FUNCS([open])
359 AC_CHECK_FUNCS([printf])
360 AC_CHECK_FUNCS([read])
361 AC_CHECK_FUNCS([readlink])
362 AC_CHECK_FUNCS([realloc])
363 AC_CHECK_FUNCS([recv])
364 AC_CHECK_FUNCS([scandir])
365 AC_CHECK_FUNCS([select])
366 AC_CHECK_FUNCS([send])
367 AC_CHECK_FUNCS([setsockopt])
368 AC_CHECK_FUNCS([shutdown])
369 AC_CHECK_FUNCS([socket])
370 AC_CHECK_FUNCS([stat])
371 AC_CHECK_FUNCS([str2sig])
372 AC_CHECK_FUNCS([strcat])
373 AC_CHECK_FUNCS([strchr])
374 AC_CHECK_FUNCS([strcpy])
375 AC_CHECK_FUNCS([strcmp])
376 AC_CHECK_FUNCS([strdup])
377 AC_CHECK_FUNCS([strerror])
378 AC_CHECK_FUNCS([strlen])
379 AC_CHECK_FUNCS([strncmp])
380 AC_CHECK_FUNCS([strstr])
381 AC_CHECK_FUNCS([time])
382 AC_CHECK_FUNCS([va_end])
383 AC_CHECK_FUNCS([va_start])
384 AC_CHECK_FUNCS([write])
385
386
387 dnl Checks for libraries.
388
389 dnl Checking sizeof void *
390 AC_CHECK_SIZEOF(void *)
391 AC_C_BIGENDIAN
392
393
394 dnl define install prefix
395 if test "x$prefix" = "xNONE"; then
396     CACAO_PREFIX=$ac_default_prefix
397 else
398     CACAO_PREFIX=$prefix
399 fi
400 AC_DEFINE_UNQUOTED([CACAO_PREFIX], "${CACAO_PREFIX}", [installation prefix])
401 AC_SUBST(CACAO_PREFIX)
402
403 dnl define libdir prefix
404 if test "x$libdir" = "xNONE"; then
405     CACAO_LIBDIR=$ac_default_libdir
406 else
407     CACAO_LIBDIR=$libdir
408 fi
409 dnl expand CACAO_LIBDIR to something that is usable in C code
410 AS_AC_EXPAND([CACAO_LIBDIR], ${CACAO_LIBDIR})
411 AC_DEFINE_UNQUOTED([CACAO_LIBDIR], "${CACAO_LIBDIR}", [library installation prefix])
412 AC_SUBST(CACAO_LIBDIR)
413
414
415 AC_CHECK_ENABLE_DL
416 AC_CHECK_ENABLE_JAVA
417
418 AC_CHECK_ENABLE_JIT
419 AC_CHECK_ENABLE_INTRP
420
421 if test x"${ENABLE_JIT}" = "xno" -a x"${ENABLE_INTRP}" = "xno"; then
422     AC_ERROR(You have to enable at least the JIT or the interpreter.)
423 fi
424
425 AC_CHECK_SOFTFLOAT
426 AC_CHECK_SOFT_FLOAT_CMP
427 AC_CHECK_SOFT_DOUBLE_CMP
428
429 AC_CHECK_ENABLE_GC
430 AC_CHECK_ENABLE_DEBUG
431 AC_CHECK_ENABLE_DUMP
432 AC_CHECK_ENABLE_MEMCHECK
433 AC_CHECK_ENABLE_HANDLES
434 AC_CHECK_ENABLE_VMLOG
435 AC_CHECK_ENABLE_DISASSEMBLER
436 AC_CHECK_ENABLE_STATISTICS
437 AC_CHECK_ENABLE_VERIFIER
438 AC_CHECK_ENABLE_RT_TIMING
439 AC_CHECK_ENABLE_CYCLE_STATS
440 AC_CHECK_ENABLE_JVMTI
441 AC_CHECK_ENABLE_THREADS
442 AC_CHECK_ENABLE_IFCONV
443 AC_CHECK_ENABLE_INLINING
444 AC_CHECK_ENABLE_INLINING_DEBUG
445 AC_CHECK_ENABLE_REPLACEMENT
446
447 dnl check for loop optimization
448 AC_MSG_CHECKING(whether loop optimization should be supported)
449 AC_ARG_ENABLE([loop],
450               [AS_HELP_STRING(--enable-loop,enable loop optimization [[default=no]])],
451               [case "${enableval}" in
452                    yes) ENABLE_LOOP=yes;;
453                    *) ENABLE_LOOP=no;;
454                esac],
455               [ENABLE_LOOP=no])
456 AC_MSG_RESULT(${ENABLE_LOOP})
457 AM_CONDITIONAL([ENABLE_LOOP], test x"${ENABLE_LOOP}" = "xyes")
458
459 if test x"${ENABLE_LOOP}" = "xyes"; then
460     AC_DEFINE([ENABLE_LOOP], 1, [use loop optimization])
461 fi
462
463
464 dnl check if linear scan register allocator(lsra) with SSA should be used
465 AC_MSG_CHECKING(whether lsra with ssa should be supported)
466 AC_ARG_ENABLE([ssa],
467               [AS_HELP_STRING(--disable-ssa,disable ssa [[default=disabled]])],
468               [case "${enableval}" in
469                    no) ENABLE_SSA=no;;
470                    *) ENABLE_SSA=yes;;
471                esac],
472               [ENABLE_SSA=no])
473 AC_MSG_RESULT(${ENABLE_SSA})
474 AM_CONDITIONAL([ENABLE_SSA], test x"${ENABLE_SSA}" = "xyes")
475 AM_CONDITIONAL([ENABLE_ESCAPE], test x"${ENABLE_SSA}" = "xyes")
476 AM_CONDITIONAL([ENABLE_ESCAPE_CHECK], test x"${ENABLE_SSA}" = "xyes")
477 AM_CONDITIONAL([ENABLE_TLH], test x"${ENABLE_SSA}" = "xyes")
478
479 if test x"${ENABLE_SSA}" = "xyes"; then
480     AC_DEFINE([ENABLE_SSA], 1, [enable lsra with ssa])
481     AC_DEFINE([ENABLE_ESCAPE], 1, [enable escape analysis with ssa])
482     AC_DEFINE([ENABLE_ESCAPE_CHECK], 1, [enable generating code to validate escape analysis results])
483     AC_DEFINE([ENABLE_TLH], 1, [enable thread local heap])
484     ENABLE_LSRA="no"
485 fi
486
487
488 dnl check if linear scan register allocator(lsra) should be used
489 AC_MSG_CHECKING(whether lsra should be supported)
490 AC_ARG_ENABLE([lsra],
491               [AS_HELP_STRING(--enable-lsra,enable linear scan register allocator [[default=no]])],
492               [case "${enableval}" in
493                    yes) ENABLE_LSRA=yes;;
494                    *) ENABLE_LSRA=no;;
495                esac],
496               [ENABLE_LSRA=no])
497    
498 if test x"${ENABLE_LSRA}" = "xyes"; then
499     if test x"${ENABLE_SSA}" = "xyes"; then
500         ENABLE_LSRA="no"
501     fi
502 fi
503 AC_MSG_RESULT(${ENABLE_LSRA})
504 AM_CONDITIONAL([ENABLE_LSRA], test x"${ENABLE_LSRA}" = "xyes")
505  
506 if test x"${ENABLE_LSRA}" = "xyes"; then
507     AC_DEFINE([ENABLE_LSRA], 1, [enable lsra])
508 fi
509
510 dnl check if profiling should be supported
511 AC_MSG_CHECKING(whether profiling should be supported)
512 AC_ARG_ENABLE([profiling],
513               [AS_HELP_STRING(--enable-profiling,enable profiling [[default=no]])],
514               [case "${enableval}" in
515                    yes) ENABLE_PROFILING=yes;;
516                    *) ENABLE_PROFILING=no;;
517                esac],
518               [ENABLE_PROFILING=no])
519 AC_MSG_RESULT(${ENABLE_PROFILING})
520 AM_CONDITIONAL([ENABLE_PROFILING], test x"${ENABLE_PROFILING}" = "xyes")
521    
522 if test x"${ENABLE_PROFILING}" = "xyes"; then
523     AC_DEFINE([ENABLE_PROFILING], 1, [enable profiling])
524 fi
525
526
527 dnl check for instruction scheduler
528 AC_ARG_ENABLE([scheduler], [AS_HELP_STRING(--enable-scheduler,enable instruction scheduler [[default=no]])])
529
530 AC_MSG_CHECKING(whether instruction scheduler should be supported)
531 if test x"${USE_SCHEDULER}" = "x1" -o x"$enable_scheduler" = "xyes"; then
532         case "${ARCH_DIR}" in
533                 xdspcore )
534                         ;;
535                 * )
536                         AC_MSG_ERROR(instruction scheduler is not available for ${ARCH_DIR} code generator)
537                         ;;
538         esac
539
540         AC_MSG_RESULT(yes)
541         AC_DEFINE([USE_SCHEDULER], 1, [use scheduler])
542         AM_CONDITIONAL([USE_SCHEDULER], [true])
543 else
544         AC_MSG_RESULT(no)
545         AM_CONDITIONAL([USE_SCHEDULER], [false])
546 fi
547
548 AC_CHECK_ENABLE_OPAGENT
549
550 AC_CHECK_ENABLE_ZLIB
551
552 dnl check for stuff to be built
553 AC_CHECK_ENABLE_JNI
554 AC_CHECK_ENABLE_LIBJVM
555
556 dnl ATTENTION: These check must be after setting
557 dnl enable_shared/enable_static (happens in AC_CHECK_ENABLE_LIBJVM),
558 dnl because libtool uses them to build the correct libraries.
559 AC_LIBTOOL_DLOPEN
560 AC_PROG_LIBTOOL
561
562 AC_CHECK_ENABLE_STATICVM
563 AC_CHECK_ENABLE_ANNOTATIONS
564 AC_CHECK_ENABLE_ASSERTION
565
566 dnl This one depends on AC_CHECK_ENABLE_ZLIB.
567 AC_CHECK_WITH_VM_ZIP
568
569 AC_CHECK_WITH_JAVA_RUNTIME_LIBRARY
570
571 dnl Now we check for jre-layout so we can skip some checks that are
572 dnl not required.
573 AC_CHECK_ENABLE_JRE_LAYOUT
574
575 AC_CHECK_WITH_JAVA_RUNTIME_LIBRARY_PREFIX
576 AC_CHECK_WITH_JAVA_RUNTIME_LIBRARY_CLASSES
577 AC_CHECK_WITH_BUILD_JAVA_RUNTIME_LIBRARY_CLASSES
578
579 if test x"${ENABLE_JRE_LAYOUT}" = "xno"; then
580    AC_CHECK_WITH_JAVA_RUNTIME_LIBRARY_LIBDIR
581 fi
582
583 dnl The check for jni_md.h must be before jni.h.
584 AC_CHECK_WITH_JNI_MD_H
585 AC_CHECK_WITH_JNI_H
586
587 dnl JVM, HPI, and JMM is only required for OpenJDK.
588 case "${WITH_JAVA_RUNTIME_LIBRARY}" in
589     openjdk)
590         AC_CHECK_WITH_JVM_MD_H
591         AC_CHECK_WITH_JVM_H
592         AC_CHECK_WITH_HPI_MD_H
593         AC_CHECK_WITH_HPI_H
594         AC_CHECK_WITH_JMM_H
595         ;;
596     *)
597         ;;
598 esac
599
600 dnl check for some programs we need
601
602 case "${WITH_JAVA_RUNTIME_LIBRARY}" in
603     cldc1.1 | gnuclasspath)
604         AC_PROG_JAVAC
605         AC_PROG_JAR
606         ;;
607     openjdk)
608         ;;
609     *)
610         AC_MSG_ERROR(unknown classpath configuration ${WITH_JAVA_RUNTIME_LIBRARY})
611         ;;
612 esac
613
614 AC_CHECK_WITH_JASMIN_JAR
615 AC_CHECK_WITH_JUNIT_JAR
616
617 AC_CHECK_HEADERS(
618         [regex.h], 
619         [
620                 dnl If debug build and regex.h available, enable debug filter
621                 if test x"${NDEBUG}" = "xno"; then
622                         AC_DEFINE(ENABLE_DEBUG_FILTER, 1, [debug filter])
623                 fi
624                 dnl If vmlog enambled and regex.h available, enable vmlogfilter
625                 AM_CONDITIONAL([ENABLE_VMLOGFILTER], [test x"${ENABLE_VMLOG}" = "xyes"])
626         ],
627         [
628                 AM_CONDITIONAL([ENABLE_VMLOGFILTER], [false])
629         ]
630 )
631
632 dnl python
633
634 AZ_PYTHON_DEFAULT
635 AZ_PYTHON_ENABLE
636 AZ_PYTHON_WITH
637 AZ_PYTHON_VERSION_ENSURE( [2.4] )
638 AZ_PYTHON_CSPEC
639 AZ_PYTHON_LSPEC
640
641
642 dnl define some stuff required for --fullversion
643 AC_DEFINE_UNQUOTED(VERSION_CONFIGURE_ARGS, "$ac_configure_args", [configure arguments])
644 AC_DEFINE_UNQUOTED(VERSION_CC, "$CC", [CC used])
645 AC_DEFINE_UNQUOTED(VERSION_CXX, "$CXX", [CXX used])
646 AC_DEFINE_UNQUOTED(VERSION_CFLAGS, "$OPT_CFLAGS $ARCH_CFLAGS $CC_FLAGS $CPPFLAGS", [CFLAGS used])
647 AC_DEFINE_UNQUOTED(VERSION_CXXFLAGS, "$OPT_CXXFLAGS $ARCH_CXXFLAGS $CXX_FLAGS $CPPFLAGS", [CXXFLAGS used])
648
649
650 dnl Finally pass flags to Makefiles.
651 CFLAGS="$OPT_CFLAGS"
652 CXXFLAGS="$OPT_CXXFLAGS"
653
654 AM_CFLAGS="$CC_FLAGS $ARCH_FLAGS $OS_FLAGS"
655 AM_CXXFLAGS="$CXX_FLAGS $ARCH_FLAGS $OS_FLAGS"
656 AM_CPPFLAGS="$CPPFLAGS"
657
658 AC_SUBST(AM_CFLAGS)
659 AC_SUBST(AM_CXXFLAGS)
660 AC_SUBST(AM_CPPFLAGS)
661
662
663 AC_CONFIG_FILES([Makefile]
664                 [contrib/Makefile]
665                 [contrib/setenvinstalled]
666                 [contrib/setenvsource]
667                 [contrib/vmlog/Makefile]
668                 [contrib/vmlog/t/Makefile]
669                 [doc/Makefile]
670                 [doc/doxygen/Makefile]
671                 [doc/handbook/Makefile]
672                 [man/Makefile]
673                 [src/Makefile]
674                 [src/cacao/Makefile]
675                 [src/classes/Makefile]
676                 [src/fdlibm/Makefile]
677                 [src/mm/Makefile]
678                 [src/mm/cacao-gc/Makefile]
679                 [src/native/Makefile]
680                 [src/native/include/Makefile]
681                 [src/native/jvmti/Makefile]
682                 [src/native/vm/Makefile]
683                 [src/native/vm/cldc1.1/Makefile]
684                 [src/native/vm/gnuclasspath/Makefile]
685                 [src/native/vm/openjdk/Makefile]
686                 [src/scripts/Makefile]
687                 [src/scripts/java]
688                 [src/threads/Makefile]
689                 [src/threads/none/Makefile]
690                 [src/threads/posix/Makefile]
691                 [src/toolbox/Makefile]
692                 [src/vm/Makefile]
693                 [src/vm/jit/Makefile]
694                 [src/vm/jit/allocator/Makefile]
695                 [src/vm/jit/alpha/Makefile]
696                 [src/vm/jit/alpha/freebsd/Makefile]
697                 [src/vm/jit/alpha/linux/Makefile]
698                 [src/vm/jit/arm/Makefile]
699                 [src/vm/jit/arm/linux/Makefile]
700                 [src/vm/jit/i386/Makefile]
701                 [src/vm/jit/i386/cygwin/Makefile]
702                 [src/vm/jit/i386/darwin/Makefile]
703                 [src/vm/jit/i386/freebsd/Makefile]
704                 [src/vm/jit/i386/linux/Makefile]
705                 [src/vm/jit/i386/solaris/Makefile]
706                 [src/vm/jit/intrp/Makefile]
707                 [src/vm/jit/inline/Makefile]
708                 [src/vm/jit/ir/Makefile]
709                 [src/vm/jit/loop/Makefile]
710                 [src/vm/jit/m68k/Makefile]
711                 [src/vm/jit/m68k/linux/Makefile]
712                 [src/vm/jit/mips/Makefile]
713                 [src/vm/jit/mips/irix/Makefile]
714                 [src/vm/jit/mips/linux/Makefile]
715                 [src/vm/jit/mips/uclinux/Makefile]
716                 [src/vm/jit/optimizing/Makefile]
717                 [src/vm/jit/parisc/Makefile]
718                 [src/vm/jit/parisc/linux/Makefile]
719                 [src/vm/jit/powerpc/Makefile]
720                 [src/vm/jit/powerpc/darwin/Makefile]
721                 [src/vm/jit/powerpc/linux/Makefile]
722                 [src/vm/jit/powerpc/netbsd/Makefile]
723                 [src/vm/jit/powerpc64/Makefile]
724                 [src/vm/jit/powerpc64/linux/Makefile]
725                 [src/vm/jit/s390/Makefile]
726                 [src/vm/jit/schedule/Makefile]
727                 [src/vm/jit/sparc64/Makefile]
728                 [src/vm/jit/sparc64/linux/Makefile]
729                 [src/vm/jit/sparc64/solaris/Makefile]
730                 [src/vm/jit/verify/Makefile]
731                 [src/vm/jit/x86_64/Makefile]
732                 [src/vm/jit/x86_64/freebsd/Makefile]
733                 [src/vm/jit/x86_64/linux/Makefile]
734                 [src/vm/jit/x86_64/solaris/Makefile]
735                 [tests/Makefile]
736                 [tests/regression/Makefile]
737                 [tests/regression/assertion/Makefile]
738                 [tests/regression/base/Makefile]
739                 [tests/regression/bugzilla/Makefile]
740                 [tests/regression/jasmin/Makefile]
741                 [tests/regression/native/Makefile]
742                 [tests/regression/resolving/Makefile]
743                 [tests/regression/resolving/classes1/Makefile]
744                 [tests/regression/resolving/classes2/Makefile]
745                 [tests/regression/resolving/classes3/Makefile]
746 )
747
748
749 dnl We only build the shared library objects but we use it as
750 dnl noinst_LTLIBRARIES.
751 ac_configure_args="$ac_configure_args --disable-static"
752 AC_CONFIG_SUBDIRS(src/mm/boehm-gc)
753
754
755 AC_OUTPUT
756
757
758 ## Local variables:
759 ## mode: m4
760 ## indent-tabs-mode: t
761 ## c-basic-offset: 4
762 ## tab-width: 8
763 ## compile-command: "automake --add-missing"
764 ## End: