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