- built with autoconf-2.59 and automake-1.8.2
[cacao.git] / configure.in
1 cdnl 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="-Wall -O2 -g3 -mieee -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="-Wall -O2 -g -DMAP_ANONYMOUS=0 -no-cpp-precomp -D__POWERPC__"
39         AC_DEFINE(TRACE_ARGS_NUM, 8)
40         ;;
41
42 x86_64* )
43         ARCH_DIR="x86_64"
44         CFLAGS="-Wall -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
63 AC_SUBST(COMPILER_OBJECTS)
64
65 AC_DEFINE_UNQUOTED(ARCH_DIR, "$ARCH_DIR")
66 AC_SUBST(ARCH_DIR)
67
68 dnl Checks for programs.
69 AC_PROG_CC
70 AM_PROG_AS
71 AC_PROG_RANLIB
72 AC_PROG_MAKE_SET
73
74 dnl Checks for libraries.
75 dnl AC_CHECK_LIB(m, sin)
76
77 dnl Checks for header files.
78 AC_HEADER_DIRENT
79 AC_HEADER_STDC
80 AC_CHECK_HEADERS([fcntl.h])
81 AC_CHECK_HEADERS([sys/time.h])
82 AC_CHECK_HEADERS([unistd.h])
83 AC_CHECK_HEADERS([sys/ioctl.h])
84
85 dnl Checks for typedefs, structures, and compiler characteristics.
86 AC_C_CONST
87 AC_C_INLINE
88 AC_TYPE_OFF_T
89 AC_TYPE_SIZE_T
90 AC_HEADER_TIME
91 AC_STRUCT_TM
92
93 dnl Checks for library functions.
94 AC_PROG_GCC_TRADITIONAL
95 AC_FUNC_MEMCMP
96 AC_FUNC_MMAP
97 AC_TYPE_SIGNAL
98 AC_CHECK_FUNCS(getcwd gettimeofday mkdir mktime select socket)
99
100 dnl Check for mmap header anomalies (missing MAP_FAILED, etc.)
101 if test $ac_cv_func_mmap_fixed_mapped = yes; then
102         AC_CACHE_CHECK(whether MAP_FAILED is defined,
103                        ac_cv_map_failed,
104                        AC_EGREP_CPP(yes, 
105                                     [#include <sys/mman.h>
106                                      #ifdef MAP_FAILED
107                                         yes
108                                      #endif],
109                                     ac_cv_map_failed=yes,
110                                     ac_cv_map_failed=no))
111
112         AC_CACHE_CHECK(whether MAP_ANONYMOUS is defined,
113                        ac_cv_map_anonymous,
114                        AC_EGREP_CPP(yes, 
115                                     [#include <sys/mman.h>
116                                      #ifdef MAP_ANONYMOUS
117                                         yes
118                                      #endif],
119                                     ac_cv_map_anonymous=yes,
120                                     ac_cv_map_anonymous=no))
121
122         if test $ac_cv_map_failed = yes; then
123                 AC_DEFINE(HAVE_MAP_FAILED) 
124         fi
125
126         if test $ac_cv_map_anonymous = yes; then
127                 AC_DEFINE(HAVE_MAP_ANONYMOUS) 
128         fi
129 fi
130
131
132 dnl Features
133
134 dnl check arguments
135 AC_ARG_ENABLE(threads, [  --enable-threads        enable threads support [default=yes]])
136 AC_ARG_ENABLE([__thread],
137             [  --disable-__thread      do not use TLS features even when supporting them],
138             [use__thread=$enablevalval],
139             [use__thread=yes])
140
141
142 dnl threads
143 AC_MSG_CHECKING(whether to include threads support)
144 if test x"$enable_threads" = "xno"; then
145         AC_MSG_RESULT(no)
146 else
147         AC_MSG_RESULT(yes)
148
149         AC_DEFINE(USE_THREADS)
150         AC_DEFINE(EXTERNAL_OVERFLOW)
151         AC_DEFINE(DONT_FREE_FIRST)
152
153         LIBTHREAD="libthreads.a"
154         THREAD_OBJ="threads/libthreads.a"
155         AC_SUBST(LIBTHREAD)
156         AC_SUBST(THREAD_OBJ)
157 fi
158
159 dnl Check whether the compiler supports the __thread keyword.
160 if test "x$use__thread" != xno; then
161   AC_CACHE_CHECK([for __thread], ac_cv_gcc___thread,
162   [cat > conftest.c <<\EOF
163 __thread int a = 42;
164 EOF
165   if AC_TRY_COMMAND([${CC-cc} $CFLAGS -c conftest.c >&AS_MESSAGE_LOG_FD]); then
166     ac_cv_gcc___thread=yes 
167   else
168     ac_cv_gcc___thread=no
169   fi
170   rm -f conftest*])
171   if test "$ac_cv_gcc___thread" = yes; then
172     AC_DEFINE(HAVE___THREAD)
173   fi
174 else
175   ac_cv_gcc___thread=no
176 fi
177
178 dnl check if zlib should be used
179 AC_ARG_ENABLE(zlib, [  --enable-zlib           enable zip archive class storage (experimental), needs zlib [default=no]])
180
181 AC_MSG_CHECKING(whether zip archives should be supported)
182 if test x"$enable_zlib" = "xyes"; then
183         ZIP_LIBS=-lz
184         ZIP_C=unzip.c
185         AC_DEFINE(USE_ZLIB)
186         AC_MSG_RESULT(yes)
187
188 else
189         ZIP_LIBS=""
190         ZIP_C=""
191         AC_MSG_RESULT(no)
192
193 fi
194 AC_SUBST(ZIP_LIBS)
195 AC_SUBST(ZIP_C)
196
197 dnl check arguments
198 AC_ARG_ENABLE(gtk-peer, [  --enable-gtk-peer       enable threads support [default=no]])
199
200 dnl threads
201 AC_MSG_CHECKING(whether to use gtk awt peers)
202 if test x"$enable_gtk_peer" = "xyes"; then
203         AC_MSG_RESULT(yes)
204         AWTPEERS="java.awt.peer.ComponentPeer \
205                 java.awt.peer.MenuPeer \
206                 java.awt.peer.MenuItemPeer \
207                 gnu.java.awt.peer.gtk.GdkPixbufDecoder \
208                 gnu.java.awt.peer.gtk.GtkMenuBarPeer \
209                 gnu.java.awt.peer.gtk.GtkScrollPanePeer \
210                 gnu.java.awt.peer.gtk.GtkMenuPeer \
211                 gnu.java.awt.peer.gtk.GtkTextComponentPeer \
212                 gnu.java.awt.peer.gtk.GtkComponentPeer \
213                 gnu.java.awt.peer.gtk.GtkPopupMenuPeer \
214                 gnu.java.awt.peer.gtk.GtkCheckboxGroupPeer \
215                 gnu.java.awt.peer.gtk.GtkMenuItemPeer \
216                 gnu.java.awt.peer.gtk.GdkGraphics \
217                 gnu.java.awt.peer.gtk.GtkToolkit \
218                 gnu.java.awt.peer.gtk.GtkCanvasPeer \
219                 gnu.java.awt.peer.gtk.GtkFramePeer \
220                 gnu.java.awt.peer.gtk.GdkFontMetrics \
221                 gnu.java.awt.peer.gtk.GtkScrollbarPeer \
222                 gnu.java.awt.peer.gtk.GtkGenericPeer \
223                 gnu.java.awt.peer.gtk.GtkListPeer \
224                 gnu.java.awt.peer.gtk.GtkLabelPeer \
225                 gnu.java.awt.peer.gtk.GtkTextAreaPeer \
226                 gnu.java.awt.peer.gtk.GtkCheckboxPeer \
227                 gnu.java.awt.peer.gtk.GtkFileDialogPeer \
228                 gnu.java.awt.peer.gtk.GtkImagePainter \
229                 gnu.java.awt.peer.gtk.GtkChoicePeer \
230                 gnu.java.awt.peer.gtk.GtkPanelPeer \
231                 gnu.java.awt.peer.gtk.GtkMainThread \
232                 gnu.java.awt.peer.gtk.GtkButtonPeer \
233                 gnu.java.awt.peer.gtk.GtkTextFieldPeer \
234                 gnu.java.awt.peer.gtk.GtkCheckboxMenuItemPeer \
235                 gnu.java.awt.peer.gtk.GtkClipboard \
236                 gnu.java.awt.peer.gtk.GtkWindowPeer"
237                 AWT_OBJS="gnuclasspathnat/native/jni/gtk-peer/.libs/libgtkpeer.a \
238                         -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 \
239                         -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 \
240                         -lgthread-2.0 -lart_lgpl_2"
241                 USEGTK=yes
242                 AC_SUBST(USEGTK)
243                 AC_SUBST(AWTPEERS)
244                 AC_SUBST(AWT_OBJS)
245                 AC_DEFINE(USE_GTK)
246
247 else
248         AWT_OBJS=
249         AWTPEERS=
250         USEGTK=no
251         AC_SUBST(USEGTK)
252         AC_SUBST(AWTPEERS)
253         AC_SUBST(AWT_OBJS)
254         AC_MSG_RESULT(no)
255 fi
256
257 dnl now configure boehm gc and gnu classpath
258 dnl the export is not my favorite (is there another way?)
259 export CFLAGS
260 AC_CONFIG_SUBDIRS(mm/boehm-gc gnuclasspathnat)
261
262 AC_OUTPUT(Makefile \
263           mm/Makefile \
264           toolbox/Makefile \
265           threads/Makefile \
266           jit/Makefile \
267           jit/loop/Makefile \
268           jit/alpha/Makefile \
269           jit/i386/Makefile \
270           jit/mips/Makefile \
271           jit/powerpc/Makefile \
272           jit/x86_64/Makefile \
273           nat/Makefile \
274           doc/Makefile \
275           tst/Makefile \
276           tst/kaffe/Makefile \
277           jvmtst/Makefile )
278
279
280