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