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