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