Build libboehm.a only if needed
[cacao.git] / configure.in
1 dnl autoconf; autoheader; automake
2
3 dnl Process this file with autoconf to produce a configure script.
4 AC_INIT(jit.c)
5 AC_CANONICAL_HOST
6
7 AM_INIT_AUTOMAKE(cacao, 0.40)
8 AM_CONFIG_HEADER(config.h)
9
10 AC_PREFIX_DEFAULT(/usr/local/cacao)
11
12 dnl system type
13
14 case "$host_cpu" in
15 alpha* )
16         SYSDEP_DIR="alpha" 
17         CFLAGS="-ieee -O2 -g3"
18         COMPILER_SOURCES="compiler.h compiler.c" 
19         COMPILER_OBJECTS="compiler.o"
20         AC_DEFINE(OLD_COMPILER)
21         ;;
22
23 mips* )
24         SYSDEP_DIR="mips" 
25         CFLAGS="-64 -g -DMAP_ANONYMOUS=0 -woff 1048,1110,1164,1515"
26         LIBS="-lelfutil" 
27         COMPILER_SOURCES=""
28         COMPILER_OBJECTS=""
29         ;;
30
31 i386* | i486* | i586* | i686* )
32         SYSDEP_DIR="i386" 
33         CFLAGS="-O0 -g3 -D__I386__"
34         COMPILER_SOURCES="compiler.h compiler.c" 
35         COMPILER_OBJECTS="compiler.o"
36         ;;
37
38 sparc* | powerpc* | ppc* | * )
39         AC_MSG_ERROR($host-cpu systems are not supported at this time) ;;
40
41 esac
42
43 AC_SUBST(COMPILER_SOURCES)
44 AC_SUBST(COMPILER_OBJECTS)
45
46 AC_DEFINE_UNQUOTED(SYSDEP_DIR, "$SYSDEP_DIR")
47 AC_SUBST(SYSDEP_DIR)
48
49 dnl Checks for programs.
50 AC_PROG_CC
51 AC_PROG_RANLIB
52 AC_PROG_MAKE_SET
53
54 dnl Checks for libraries.
55 AC_CHECK_LIB(m, sin)
56
57 dnl Checks for header files.
58 AC_HEADER_DIRENT
59 AC_HEADER_STDC
60 AC_CHECK_HEADERS(fcntl.h sys/time.h unistd.h)
61
62 dnl Checks for typedefs, structures, and compiler characteristics.
63 AC_C_CONST
64 AC_C_INLINE
65 AC_TYPE_OFF_T
66 AC_TYPE_SIZE_T
67 AC_HEADER_TIME
68 AC_STRUCT_TM
69
70 dnl Checks for library functions.
71 AC_PROG_GCC_TRADITIONAL
72 AC_FUNC_MEMCMP
73 AC_FUNC_MMAP
74 AC_TYPE_SIGNAL
75 AC_CHECK_FUNCS(getcwd gettimeofday mkdir mktime select socket)
76
77 dnl Check for mmap header anomalies (missing MAP_FAILED, etc.)
78 if test $ac_cv_func_mmap_fixed_mapped = yes; then
79         AC_CACHE_CHECK(whether MAP_FAILED is defined,
80                        ac_cv_map_failed,
81                        AC_EGREP_CPP(yes, 
82                                     [#include <sys/mman.h>
83                                      #ifdef MAP_FAILED
84                                         yes
85                                      #endif],
86                                     ac_cv_map_failed=yes,
87                                     ac_cv_map_failed=no))
88
89         AC_CACHE_CHECK(whether MAP_ANONYMOUS is defined,
90                        ac_cv_map_anonymous,
91                        AC_EGREP_CPP(yes, 
92                                     [#include <sys/mman.h>
93                                      #ifdef MAP_ANONYMOUS
94                                         yes
95                                      #endif],
96                                     ac_cv_map_anonymous=yes,
97                                     ac_cv_map_anonymous=no))
98
99         if test $ac_cv_map_failed = yes; then
100                 AC_DEFINE(HAVE_MAP_FAILED) 
101         fi
102
103         if test $ac_cv_map_anonymous = yes; then
104                 AC_DEFINE(HAVE_MAP_ANONYMOUS) 
105         fi
106 fi
107
108
109 dnl Features
110
111 dnl check arguments
112 AC_ARG_ENABLE(threads, [  --enable-threads        enable threads support])
113 AC_ARG_WITH(gc, [  --with-gc[=ARG]         use garbage collector [gc2,gc1,boehm]])
114
115 dnl threads
116 AC_MSG_CHECKING(whether to include threads support)
117 if test x"$enable_threads" = "xno"; then
118         AC_MSG_RESULT(no)
119 else
120         AC_MSG_RESULT(yes)
121
122         AC_DEFINE(USE_THREADS)
123         AC_DEFINE(EXTERNAL_OVERFLOW)
124         AC_DEFINE(DONT_FREE_FIRST)
125
126         LIBTHREAD="libthreads.a"
127         THREAD_OBJ="threads/libthreads.a"
128         AC_SUBST(LIBTHREAD)
129         AC_SUBST(THREAD_OBJ)
130 fi
131
132 dnl garbage collector version
133 AC_MSG_CHECKING(which garbage collector to use)
134 case "$with_gc" in
135 boehm )
136         AC_MSG_RESULT(Boehm garbage collector)
137         GC_OBJ="mm/libboehm.a libgc.a"
138         if test ! -e libgc.a; then
139                 AC_MSG_ERROR(libgc.a not found)
140         fi
141         AC_DEFINE(USE_BOEHM)
142         BOEHM_LIB=libboehm.a
143         ;;
144 gc1 )
145         AC_MSG_RESULT(old garbage collector)
146         GC_OBJ="mm/libmm_old.a"
147         ;;
148 gc2 | "" )
149         AC_MSG_RESULT(new garbage collector)
150         GC_OBJ="mm/libmm_new.a"
151         ;;
152 * )
153         AC_MSG_ERROR(Invalid GC)
154         ;;
155 esac
156 AC_SUBST(GC_OBJ)
157 AC_SUBST(BOEHM_LIB)
158
159 AC_OUTPUT(Makefile \
160           toolbox/Makefile \
161           mm/Makefile \
162           threads/Makefile \
163           jit/Makefile \
164           alpha/Makefile \
165           mips/Makefile \
166           i386/Makefile \
167           nat/Makefile \
168           doc/Makefile \
169           comp/Makefile \
170           narray/Makefile \
171           tst/Makefile \
172           jvmtst/Makefile )