Added __ALPHA__ and __MIPS__ architecture defines.
[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 sparc* | powerpc* | ppc* | * )
51         AC_MSG_ERROR($host-cpu systems are not supported at this time) ;;
52
53 esac
54
55 AC_SUBST(COMPILER_OBJECTS)
56 AC_SUBST(ASMPART)
57
58 AC_DEFINE_UNQUOTED(SYSDEP_DIR, "$SYSDEP_DIR")
59 AC_SUBST(SYSDEP_DIR)
60
61 dnl Checks for programs.
62 AC_PROG_CC
63 AC_PROG_RANLIB
64 AC_PROG_MAKE_SET
65
66 dnl Checks for libraries.
67 AC_CHECK_LIB(m, sin)
68
69 dnl Checks for header files.
70 AC_HEADER_DIRENT
71 AC_HEADER_STDC
72 AC_CHECK_HEADERS([fcntl.h])
73 AC_CHECK_HEADERS([sys/time.h])
74 AC_CHECK_HEADERS([unistd.h])
75 AC_CHECK_HEADERS([sys/ioctl.h])
76
77 dnl Checks for typedefs, structures, and compiler characteristics.
78 AC_C_CONST
79 AC_C_INLINE
80 AC_TYPE_OFF_T
81 AC_TYPE_SIZE_T
82 AC_HEADER_TIME
83 AC_STRUCT_TM
84
85 dnl Checks for library functions.
86 AC_PROG_GCC_TRADITIONAL
87 AC_FUNC_MEMCMP
88 AC_FUNC_MMAP
89 AC_TYPE_SIGNAL
90 AC_CHECK_FUNCS(getcwd gettimeofday mkdir mktime select socket)
91
92 dnl Check for mmap header anomalies (missing MAP_FAILED, etc.)
93 if test $ac_cv_func_mmap_fixed_mapped = yes; then
94         AC_CACHE_CHECK(whether MAP_FAILED is defined,
95                        ac_cv_map_failed,
96                        AC_EGREP_CPP(yes, 
97                                     [#include <sys/mman.h>
98                                      #ifdef MAP_FAILED
99                                         yes
100                                      #endif],
101                                     ac_cv_map_failed=yes,
102                                     ac_cv_map_failed=no))
103
104         AC_CACHE_CHECK(whether MAP_ANONYMOUS is defined,
105                        ac_cv_map_anonymous,
106                        AC_EGREP_CPP(yes, 
107                                     [#include <sys/mman.h>
108                                      #ifdef MAP_ANONYMOUS
109                                         yes
110                                      #endif],
111                                     ac_cv_map_anonymous=yes,
112                                     ac_cv_map_anonymous=no))
113
114         if test $ac_cv_map_failed = yes; then
115                 AC_DEFINE(HAVE_MAP_FAILED) 
116         fi
117
118         if test $ac_cv_map_anonymous = yes; then
119                 AC_DEFINE(HAVE_MAP_ANONYMOUS) 
120         fi
121 fi
122
123
124 dnl Features
125
126 dnl check arguments
127 AC_ARG_ENABLE(threads, [  --enable-threads        enable threads support])
128 AC_ARG_WITH(gc, [  --with-gc[=ARG]         use garbage collector [gc2,gc1,boehm]])
129
130 dnl threads
131 AC_MSG_CHECKING(whether to include threads support)
132 if test x"$enable_threads" = "xno"; then
133         AC_MSG_RESULT(no)
134 else
135         AC_MSG_RESULT(yes)
136
137         AC_DEFINE(USE_THREADS)
138         AC_DEFINE(EXTERNAL_OVERFLOW)
139         AC_DEFINE(DONT_FREE_FIRST)
140
141         LIBTHREAD="libthreads.a"
142         THREAD_OBJ="threads/libthreads.a"
143         AC_SUBST(LIBTHREAD)
144         AC_SUBST(THREAD_OBJ)
145 fi
146
147 dnl garbage collector version
148 AC_MSG_CHECKING(which garbage collector to use)
149 case "$with_gc" in
150 boehm )
151         AC_MSG_RESULT(Boehm garbage collector)
152         GC_OBJ="mm/libboehm.a libgc.a"
153         if test ! -e libgc.a; then
154                 AC_MSG_ERROR([libgc.a not found, see README.boehm])
155         fi
156         AC_DEFINE(USE_BOEHM)
157         BOEHM_LIB=libboehm.a
158         ;;
159 gc1 )
160         AC_MSG_RESULT(old garbage collector)
161         GC_OBJ="mm/libmm_old.a"
162         ;;
163 gc2 | "" )
164         AC_MSG_RESULT(new garbage collector)
165         GC_OBJ="mm/libmm_new.a"
166         ;;
167 * )
168         AC_MSG_ERROR(Invalid GC)
169         ;;
170 esac
171 AC_SUBST(GC_OBJ)
172 AC_SUBST(BOEHM_LIB)
173
174 AC_OUTPUT(Makefile \
175           toolbox/Makefile \
176           mm/Makefile \
177           threads/Makefile \
178           jit/Makefile \
179           alpha/Makefile \
180           mips/Makefile \
181           i386/Makefile \
182           x86_64/Makefile \
183           nat/Makefile \
184           doc/Makefile \
185           comp/Makefile \
186           narray/Makefile \
187           tst/Makefile \
188           jvmtst/Makefile )