native functions, getClassContext, currentClassLoader implementation (with stack...
[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(main.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         ARCH_DIR="alpha"
17         CFLAGS="-mieee -O2 -g3 -D__ALPHA__"
18         AC_DEFINE(TRACE_ARGS_NUM, 6)
19         AC_DEFINE(USE_CODEMMAP)
20         ;;
21
22 i386* | i486* | i586* | i686* )
23         ARCH_DIR="i386"
24         CFLAGS="-Wall -O2 -g3 -D__I386__"
25         AC_DEFINE(TRACE_ARGS_NUM, 8)
26         AC_DEFINE(USE_CODEMMAP)
27         ;;
28
29 mips* )
30         ARCH_DIR="mips"
31         CFLAGS="-64 -O2 -OPT:Olimit=0 -g -DMAP_ANONYMOUS=0 -woff 1110,1164,1515 -D__MIPS__"
32         LIBS="-lelfutil"
33         AC_DEFINE(TRACE_ARGS_NUM, 8)
34         ;;
35
36 powerpc* | ppc* )
37         ARCH_DIR="powerpc"
38         CFLAGS="-O2 -g -DMAP_ANONYMOUS=0 -no-cpp-precomp"
39         AC_DEFINE(TRACE_ARGS_NUM, 8)
40         ;;
41
42 x86_64* )
43         ARCH_DIR="x86_64"
44         CFLAGS="-O2 -g3 -D__X86_64__"
45         AC_DEFINE(TRACE_ARGS_NUM, 6)
46         AC_DEFINE(USE_CODEMMAP)
47         ;;
48
49 sparc* | * )
50         AC_MSG_ERROR($host_cpu systems are not supported at this time)
51         ;;
52 esac
53
54
55 case "$host_os" in
56 *linux* | *Linux* )
57         CFLAGS="$CFLAGS -D__LINUX__"
58         ;;
59 * )
60         ;;
61 esac
62 AC_SUBST(COMPILER_OBJECTS)
63
64 AC_DEFINE_UNQUOTED(ARCH_DIR, "$ARCH_DIR")
65 AC_SUBST(ARCH_DIR)
66
67 dnl Checks for programs.
68 AC_PROG_CC
69 AC_PROG_RANLIB
70 AC_PROG_MAKE_SET
71
72 dnl Checks for libraries.
73 AC_CHECK_LIB(m, sin)
74
75 dnl Checks for header files.
76 AC_HEADER_DIRENT
77 AC_HEADER_STDC
78 AC_CHECK_HEADERS([fcntl.h])
79 AC_CHECK_HEADERS([sys/time.h])
80 AC_CHECK_HEADERS([unistd.h])
81 AC_CHECK_HEADERS([sys/ioctl.h])
82
83 dnl Checks for typedefs, structures, and compiler characteristics.
84 AC_C_CONST
85 AC_C_INLINE
86 AC_TYPE_OFF_T
87 AC_TYPE_SIZE_T
88 AC_HEADER_TIME
89 AC_STRUCT_TM
90
91 dnl Checks for library functions.
92 AC_PROG_GCC_TRADITIONAL
93 AC_FUNC_MEMCMP
94 AC_FUNC_MMAP
95 AC_TYPE_SIGNAL
96 AC_CHECK_FUNCS(getcwd gettimeofday mkdir mktime select socket)
97 AC_CHECK_FUNCS(copysign copysignf)
98 AC_CHECK_FUNCS(finite finitef)
99 AC_CHECK_FUNCS(fmod fmodf)
100 AC_CHECK_FUNCS(isnan isnanf)
101
102 dnl Check for mmap header anomalies (missing MAP_FAILED, etc.)
103 if test $ac_cv_func_mmap_fixed_mapped = yes; then
104         AC_CACHE_CHECK(whether MAP_FAILED is defined,
105                        ac_cv_map_failed,
106                        AC_EGREP_CPP(yes, 
107                                     [#include <sys/mman.h>
108                                      #ifdef MAP_FAILED
109                                         yes
110                                      #endif],
111                                     ac_cv_map_failed=yes,
112                                     ac_cv_map_failed=no))
113
114         AC_CACHE_CHECK(whether MAP_ANONYMOUS is defined,
115                        ac_cv_map_anonymous,
116                        AC_EGREP_CPP(yes, 
117                                     [#include <sys/mman.h>
118                                      #ifdef MAP_ANONYMOUS
119                                         yes
120                                      #endif],
121                                     ac_cv_map_anonymous=yes,
122                                     ac_cv_map_anonymous=no))
123
124         if test $ac_cv_map_failed = yes; then
125                 AC_DEFINE(HAVE_MAP_FAILED) 
126         fi
127
128         if test $ac_cv_map_anonymous = yes; then
129                 AC_DEFINE(HAVE_MAP_ANONYMOUS) 
130         fi
131 fi
132
133
134 dnl Features
135
136 dnl check arguments
137 AC_ARG_ENABLE(threads, [  --enable-threads        enable threads support [default yes]])
138 AC_ARG_ENABLE([__thread],
139             [  --disable-__thread      do not use TLS features even when supporting them],
140             [use__thread=$enablevalval],
141             [use__thread=yes])
142
143
144 dnl threads
145 AC_MSG_CHECKING(whether to include threads support)
146 if test x"$enable_threads" = "xno"; then
147         AC_MSG_RESULT(no)
148 else
149         AC_MSG_RESULT(yes)
150
151         AC_DEFINE(USE_THREADS)
152         AC_DEFINE(EXTERNAL_OVERFLOW)
153         AC_DEFINE(DONT_FREE_FIRST)
154
155         LIBTHREAD="libthreads.a"
156         THREAD_OBJ="threads/libthreads.a"
157         AC_SUBST(LIBTHREAD)
158         AC_SUBST(THREAD_OBJ)
159 fi
160
161 dnl Check whether the compiler supports the __thread keyword.
162 if test "x$use__thread" != xno; then
163   AC_CACHE_CHECK([for __thread], ac_cv_gcc___thread,
164   [cat > conftest.c <<\EOF
165 __thread int a = 42;
166 EOF
167   if AC_TRY_COMMAND([${CC-cc} $CFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
168     ac_cv_gcc___thread=yes 
169   else
170     ac_cv_gcc___thread=no
171   fi
172   rm -f conftest*])
173   if test "$ac_cv_gcc___thread" = yes; then
174     AC_DEFINE(HAVE___THREAD)
175   fi
176 else
177   ac_cv_gcc___thread=no
178 fi
179
180 dnl now configure boehm gc
181 AC_CONFIG_SUBDIRS(mm/boehm-gc)
182
183
184 AC_ARG_WITH(classcompiler, [  --with-classcompiler[=ARG]         compiler for creating classpath  [jikes,javac13,complang] [default=javac13]])
185
186 dnl java compiler
187 AC_MSG_CHECKING(which java compiler to use to use)
188 case "$with_classcompiler" in
189 jikes )
190         AC_MSG_RESULT(jikes (good luck, doesn't seem to really work))
191         CCOMP="jikes"
192         ;;
193 complang )
194         AC_MSG_RESULT(complang, make sure that CLASSPATH is set correctly)
195         CCOMP="complang"
196         ;;
197 * | "")
198         AC_MSG_RESULT(javac13 (with -target 1.1))
199         CCOMP="javac13complang"
200         ;;
201 esac
202
203
204 dnl check if zlib should be used
205 AC_ARG_ENABLE(zlib, [  --enable-zlib           enable zip archive class storage (experimental), needs zlib [default no]])
206
207 AC_MSG_CHECKING(whether zip archives should be supported)
208 if test x"$enable_zlib" = "xyes"; then
209         ZIP_LIBS=-lz
210         ZIP_C=unzip.c
211         AC_DEFINE(USE_ZLIB)
212         AC_MSG_RESULT(yes)
213
214 else
215         ZIP_LIBS=""
216         ZIP_C=""
217         AC_MSG_RESULT(no)
218
219 fi
220 AC_SUBST(ZIP_LIBS)
221 AC_SUBST(ZIP_C)
222
223 dnl check arguments
224 AC_ARG_ENABLE(gtkpeer, [  --enable-gtkpeer        enable threads support [default no]])
225
226 dnl threads
227 AC_MSG_CHECKING(whether to use gtk awt peers)
228 if test x"$enable_gtkpeer" = "xyes"; then
229         AC_MSG_RESULT(yes)
230         AWTPEERS="java.awt.peer.ComponentPeer \
231                 java.awt.peer.MenuPeer \
232                 java.awt.peer.MenuItemPeer \
233                 gnu.java.awt.peer.gtk.GdkPixbufDecoder \
234                 gnu.java.awt.peer.gtk.GtkMenuBarPeer \
235                 gnu.java.awt.peer.gtk.GtkScrollPanePeer \
236                 gnu.java.awt.peer.gtk.GtkMenuPeer \
237                 gnu.java.awt.peer.gtk.GtkTextComponentPeer \
238                 gnu.java.awt.peer.gtk.GtkComponentPeer \
239                 gnu.java.awt.peer.gtk.GtkPopupMenuPeer \
240                 gnu.java.awt.peer.gtk.GtkCheckboxGroupPeer \
241                 gnu.java.awt.peer.gtk.GtkMenuItemPeer \
242                 gnu.java.awt.peer.gtk.GdkGraphics \
243                 gnu.java.awt.peer.gtk.GtkToolkit \
244                 gnu.java.awt.peer.gtk.GtkCanvasPeer \
245                 gnu.java.awt.peer.gtk.GtkFramePeer \
246                 gnu.java.awt.peer.gtk.GdkFontMetrics \
247                 gnu.java.awt.peer.gtk.GtkScrollbarPeer \
248                 gnu.java.awt.peer.gtk.GtkGenericPeer \
249                 gnu.java.awt.peer.gtk.GtkListPeer \
250                 gnu.java.awt.peer.gtk.GtkLabelPeer \
251                 gnu.java.awt.peer.gtk.GtkTextAreaPeer \
252                 gnu.java.awt.peer.gtk.GtkCheckboxPeer \
253                 gnu.java.awt.peer.gtk.GtkFileDialogPeer \
254                 gnu.java.awt.peer.gtk.GtkImagePainter \
255                 gnu.java.awt.peer.gtk.GtkChoicePeer \
256                 gnu.java.awt.peer.gtk.GtkPanelPeer \
257                 gnu.java.awt.peer.gtk.GtkMainThread \
258                 gnu.java.awt.peer.gtk.GtkButtonPeer \
259                 gnu.java.awt.peer.gtk.GtkTextFieldPeer \
260                 gnu.java.awt.peer.gtk.GtkCheckboxMenuItemPeer \
261                 gnu.java.awt.peer.gtk.GtkClipboard \
262                 gnu.java.awt.peer.gtk.GtkWindowPeer"
263                 AWT_OBJS="gnuclasspathnat/native/jni/gtk-peer/.libs/libgtkpeer.a \
264                         -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 \
265                         -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 \
266                         -lgthread-2.0 -lart_lgpl_2"
267                 USEGTK=yes
268                 AC_SUBST(USEGTK)
269                 AC_SUBST(AWTPEERS)
270                 AC_SUBST(AWT_OBJS)
271                 AC_DEFINE(USE_GTK)
272
273 else
274         AWT_OBJS=
275         AWTPEERS=
276         USEGTK=no
277         AC_SUBST(USEGTK)
278         AC_SUBST(AWTPEERS)
279         AC_SUBST(AWT_OBJS)
280         AC_MSG_RESULT(no)
281 fi
282
283 AC_OUTPUT(Makefile \
284           mm/Makefile \
285           toolbox/Makefile \
286           threads/Makefile \
287           jit/Makefile \
288           jit/loop/Makefile \
289           jit/alpha/Makefile \
290           jit/i386/Makefile \
291           jit/mips/Makefile \
292           jit/powerpc/Makefile \
293           jit/x86_64/Makefile \
294           nat/Makefile \
295           doc/Makefile \
296           tst/Makefile \
297           tst/kaffe/Makefile \
298           jvmtst/Makefile )
299
300
301 cd gnuclasspathnat
302 echo "========================================================================"
303 echo "calling: ./gnuclasspathnat/configure --prefix=$prefix/classpath --with-$CCOMP=yes --enable-jni=yes --enable-gtk-peer=$USEGTK --enable-shared=no --enable-static=yes --with-zip=no --enable-portable-native-sync -enable-java=no"
304 echo "========================================================================"
305
306 ./configure --prefix=$prefix/classpath --with-$CCOMP=yes \
307         --enable-jni=yes --enable-gtk-peer=$USEGTK --enable-shared=no --enable-static=yes --with-zip=no \
308         --enable-portable-native-sync -enable-java=no
309 cd ..
310
311
312