d360647574c04c9a679911089f84edaff5b3e3ef
[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(compiler.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
19 mips* )
20         SYSDEP_DIR="mips" 
21         CFLAGS="-g -DMAP_ANONYMOUS=0 -woff 1048,1110,1164,1515"
22         LIBS="-lelfutil" ;;
23
24 sparc* | powerpc* | ppc* | * )
25         AC_MSG_ERROR($host-cpu systems are not supported at this time) ;;
26
27 esac
28
29 AC_DEFINE_UNQUOTED(SYSDEP_DIR, "$SYSDEP_DIR")
30 AC_SUBST(SYSDEP_DIR)
31
32 dnl Checks for programs.
33 AC_PROG_CC
34 AC_PROG_RANLIB
35
36 dnl Checks for libraries.
37 AC_CHECK_LIB(m, sin)
38
39 dnl Checks for header files.
40 AC_HEADER_DIRENT
41 AC_HEADER_STDC
42 AC_CHECK_HEADERS(fcntl.h sys/time.h unistd.h)
43
44 dnl Checks for typedefs, structures, and compiler characteristics.
45 AC_C_CONST
46 AC_C_INLINE
47 AC_TYPE_OFF_T
48 AC_TYPE_SIZE_T
49 AC_HEADER_TIME
50 AC_STRUCT_TM
51
52 dnl Checks for library functions.
53 AC_PROG_GCC_TRADITIONAL
54 AC_FUNC_MEMCMP
55 AC_FUNC_MMAP
56 AC_TYPE_SIGNAL
57 AC_CHECK_FUNCS(getcwd gettimeofday mkdir mktime select socket)
58
59 dnl Check for mmap header anomalies (missing MAP_FAILED, etc.)
60 if test $ac_cv_func_mmap_fixed_mapped = yes; then
61         AC_CACHE_CHECK(whether MAP_FAILED is defined,
62                        ac_cv_map_failed,
63                        AC_EGREP_CPP(yes, 
64                                     [#include <sys/mman.h>
65                                      #ifdef MAP_FAILED
66                                         yes
67                                      #endif],
68                                     ac_cv_map_failed=yes,
69                                     ac_cv_map_failed=no))
70
71         AC_CACHE_CHECK(whether MAP_ANONYMOUS is defined,
72                        ac_cv_map_anonymous,
73                        AC_EGREP_CPP(yes, 
74                                     [#include <sys/mman.h>
75                                      #ifdef MAP_ANONYMOUS
76                                         yes
77                                      #endif],
78                                     ac_cv_map_anonymous=yes,
79                                     ac_cv_map_anonymous=no))
80
81         if test $ac_cv_map_failed = yes; then
82                 AC_DEFINE(HAVE_MAP_FAILED) 
83         fi
84
85         if test $ac_cv_map_failed = yes; then
86                 AC_DEFINE(HAVE_MAP_ANONYMOUS) 
87         fi
88 fi
89
90
91 dnl Features
92
93 dnl check arguments
94 AC_ARG_ENABLE(threads, [  --enable-threads        enable threads support])
95 AC_ARG_ENABLE(gc2, [  --enable-gc2            enable new garbage collector])
96
97 dnl threads
98 AC_MSG_CHECKING(whether to include threads support)
99 if test x"$enable_threads" = "xno"; then
100         AC_MSG_RESULT(no)
101 else
102         AC_MSG_RESULT(yes)
103
104         AC_DEFINE(USE_THREADS)
105         AC_DEFINE(EXTERNAL_OVERFLOW)
106         AC_DEFINE(DONT_FREE_FIRST)
107
108         LIBTHREAD="libthreads.a"
109         THREAD_OBJ="threads/libthreads.a"
110         AC_SUBST(LIBTHREAD)
111         AC_SUBST(THREAD_OBJ)
112 fi
113
114 dnl garbage collector version
115 AC_MSG_CHECKING(which garbage collector to use)
116 if test x"$enable_gc2" = "xno"; then
117         AC_MSG_RESULT(old garbage collector)
118         GC_OBJ="mm/libmm_old.a"
119 else
120         AC_MSG_RESULT(new garbage collector)
121         GC_OBJ="mm/libmm_new.a"
122 fi
123 AC_SUBST(GC_OBJ)
124
125
126 AC_OUTPUT(Makefile \
127           toolbox/Makefile \
128           mm/Makefile \
129           threads/Makefile \
130           jit/Makefile \
131           alpha/Makefile \
132           mips/Makefile \
133           nat/Makefile \
134           comp/Makefile )