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