Enable JIT when the platform supports it.
[oota-llvm.git] / autoconf / configure.ac
1 dnl Autoconf requirements
2 dnl AC_INIT(package, version, bug-report-address)
3 dnl information on the package
4 dnl checks for programs
5 dnl checks for libraries
6 dnl checks for header files
7 dnl checks for types
8 dnl checks for structures
9 dnl checks for compiler characteristics
10 dnl checks for library functions
11 dnl checks for system services
12 dnl AC_CONFIG_FILES([file...])
13 dnl AC_OUTPUT
14
15 dnl **************************************************************************
16 dnl * Initialize
17 dnl **************************************************************************
18 AC_INIT([[[LLVM]]],[[[1.0]]],[llvmbugs@cs.uiuc.edu])
19
20 dnl Place all of the extra autoconf files into the config subdirectory
21 AC_CONFIG_AUX_DIR([autoconf])
22
23 dnl Configure a header file
24 AC_CONFIG_HEADERS(include/Config/config.h)
25
26 dnl **************************************************************************
27 dnl * Determine which system we are building on
28 dnl **************************************************************************
29
30 dnl Check the install program (needs to be done before canonical stuff)
31 AC_PROG_INSTALL
32
33 dnl Check which host for which we're compiling.  This will tell us which LLVM
34 dnl compiler will be used for compiling SSA into object code.
35 AC_CANONICAL_TARGET
36
37 dnl
38 dnl Now, for some of our own magic:
39 dnl We will use the build machine information to set some variables.
40 dnl
41 case $build in
42         *i*86*)  AC_SUBST(OS,[Linux])
43                  AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/x86/llvm-gcc/])
44                  ;;
45
46         *sparc*) AC_SUBST(OS,[SunOS])
47                  AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/sparc/llvm-gcc/])
48                  ;;
49
50         *)       AC_SUBST(OS,[Unknown])
51                  ;;
52 esac
53
54 dnl
55 dnl If we are targetting a Sparc machine running Solaris, pretend that it is
56 dnl V9, since that is all that we support at the moment, and autoconf will only
57 dnl tell us we're a sparc.
58 dnl
59 case $target in
60         *sparc*solaris*)  AC_SUBST(target,[[sparcv9-sun-solaris2.8]])
61                           ;;
62 esac
63
64 dnl
65 dnl Determine what our target architecture is and configure accordingly.
66 dnl This will allow Makefiles to make a distinction between the hardware and
67 dnl the OS.
68 dnl
69 case $target in
70         *i*86*)           AC_SUBST(ARCH,[x86])
71                           ;;
72         *sparc*solaris*)  AC_SUBST(ARCH,[Sparc])
73                           ;;
74 esac
75
76 dnl **************************************************************************
77 dnl * Check for programs.
78 dnl **************************************************************************
79
80 dnl Check for compilation tools
81 AC_PROG_CXX
82 AC_PROG_CC(gcc)
83 AC_PROG_CPP
84
85 dnl Ensure that compilation tools are GCC; we use GCC specific extensions
86 if test "$GCC" != "yes"
87 then
88         AC_MSG_ERROR([gcc required but not found])
89 fi
90
91 if test "$GXX" != "yes"
92 then
93         AC_MSG_ERROR([g++ required but not found])
94 fi
95
96 dnl Check for GNU Make.  We use its extensions to, so don't build without it
97 CHECK_GNU_MAKE
98 if test -z "$_cv_gnu_make_command"
99 then
100         AC_MSG_ERROR([GNU Make required but not found])
101 fi
102
103 dnl Check for compiler-compiler tools (reminds me of Little Caesar's Pizza)
104 AC_PROG_FLEX
105 AC_PROG_BISON
106
107 dnl Check for libtool
108 AC_PROG_LIBTOOL
109
110 dnl Check for our special programs
111 AC_PATH_PROG(AR,[ar])
112 AC_PATH_PROG(SED,[sed])
113 AC_PATH_PROG(RM,[rm])
114 AC_PATH_PROG(ECHO,[echo])
115 AC_PATH_PROG(MKDIR,[mkdir])
116 AC_PATH_PROG(DATE,[date])
117 AC_PATH_PROG(MV,[mv])
118 AC_PATH_PROG(DOT,[dot])
119 AC_PATH_PROG(ETAGS,[etags])
120 AC_PATH_PROG(PURIFY,[purify])
121
122 dnl Verify that the source directory is valid
123 AC_CONFIG_SRCDIR(["Makefile.config.in"])
124
125 dnl **************************************************************************
126 dnl * Check for libraries.
127 dnl **************************************************************************
128
129 dnl libelf is for sparc only; we can ignore it if we don't have it
130 AC_CHECK_LIB(elf, elf_begin)
131
132 dnl dlopen() is required.  If we don't find it, quit.
133 AC_SEARCH_LIBS(dlopen,dl,,AC_MSG_ERROR([dlopen() required but not found]))
134
135 dnl mallinfo is optional; the code can compile (minus features) without it
136 AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1]))
137
138 dnl
139 dnl The math libraries are used by the test code, but not by the actual LLVM
140 dnl code.
141 dnl
142 dnl AC_CHECK_LIB(m, cos)
143
144 dnl **************************************************************************
145 dnl * Checks for header files.
146 dnl *   Chances are, if the standard C or POSIX type header files are missing,
147 dnl *   then LLVM just isn't going to compile.  However, it is possible that
148 dnl *   the necessary functions/macros will be included from other
149 dnl *   (non-standard and non-obvious) header files.
150 dnl *
151 dnl *   So, we'll be gracious, give it a chance, and try to go on without
152 dnl *   them.
153 dnl **************************************************************************
154 AC_HEADER_STDC
155 AC_HEADER_SYS_WAIT
156
157 dnl Check for ANSI C/POSIX header files
158 AC_CHECK_HEADERS(assert.h fcntl.h limits.h sys/time.h unistd.h errno.h signal.h math.h)
159
160 dnl Check for system specific header files
161 AC_CHECK_HEADERS(malloc.h strings.h sys/mman.h sys/resource.h)
162
163 dnl Check for header files associated with dlopen and friends
164 AC_CHECK_HEADERS(dlfcn.h link.h)
165
166 dnl **************************************************************************
167 dnl * Checks for typedefs, structures, and compiler characteristics.
168 dnl **************************************************************************
169
170 dnl Check for const and inline keywords
171 AC_C_CONST
172 AC_C_INLINE
173
174 dnl Check for machine endian-ness
175 AC_C_BIGENDIAN(AC_DEFINE([ENDIAN_BIG]),AC_DEFINE(ENDIAN_LITTLE))
176
177 dnl Check for types
178 AC_TYPE_PID_T
179 AC_TYPE_SIZE_T
180 AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
181 AC_CHECK_TYPES([uint64_t],,AC_MSG_ERROR([Type uint64_t required but not found]))
182 AC_HEADER_TIME
183 AC_STRUCT_TM
184
185 dnl Check for C++ extensions
186 AC_CXX_HAVE_EXT_HASH_MAP
187 AC_CXX_HAVE_EXT_HASH_SET
188 AC_CXX_HAVE_EXT_SLIST
189 AC_CXX_HAVE_STD_ITERATOR
190 AC_CXX_HAVE_BI_ITERATOR
191 AC_CXX_HAVE_FWD_ITERATOR
192
193 dnl **************************************************************************
194 dnl * Checks for library functions.
195 dnl **************************************************************************
196 AC_FUNC_ALLOCA
197 AC_PROG_GCC_TRADITIONAL
198 AC_FUNC_MEMCMP
199 AC_FUNC_MMAP
200 AC_FUNC_MMAP_FILE
201 if test ${ac_cv_func_mmap_file} = "no"
202 then
203         AC_MSG_ERROR([mmap() of files required but not found])
204 fi
205 AC_HEADER_MMAP_ANONYMOUS
206 AC_TYPE_SIGNAL
207 AC_CHECK_FUNCS(getcwd gettimeofday strcspn strdup strerror strspn strstr strtod strtol)
208
209 dnl
210 dnl Need to check mmap for MAP_PRIVATE, MAP_ANONYMOUS, MAP_ANON, MAP_FIXED
211 dnl MAP_FIXED is only needed for Sparc
212 dnl MAP_ANON is used for Sparc and BSD
213 dnl Everyone should have MAP_PRIVATE
214 dnl
215
216 dnl Check for certain functions (even if we've already found them) so that we
217 dnl can quit with an error if they are unavailable.
218 dnl
219 dnl As the code is made more portable (i.e. less reliant on these functions,
220 dnl these checks should go away.
221 AC_CHECK_FUNC(mmap,,AC_MSG_ERROR([Function mmap() required but not found]))
222 AC_CHECK_FUNC(mprotect,,AC_MSG_ERROR([Function mprotect() required but not found]))
223
224 dnl **************************************************************************
225 dnl * Enable various compile-time options
226 dnl **************************************************************************
227
228 dnl Purify Option
229 AC_ARG_ENABLE(purify,AC_HELP_STRING([--enable-purify],[Compile with purify (default is NO)]),,enableval="no")
230 if test ${enableval} = "no"
231 then
232         AC_SUBST(ENABLE_PURIFY,[[]])
233 else
234         AC_SUBST(ENABLE_PURIFY,[[ENABLE_PURIFY=1]])
235 fi
236
237 dnl Optimized Option
238 AC_ARG_ENABLE(optimized,AC_HELP_STRING([--enable-optimized],[Compile with optimizations enabled (default is NO)]),,enableval=no)
239 if test ${enableval} = "no"
240 then
241         AC_SUBST(ENABLE_OPTIMIZED,[[]])
242 else
243         AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
244 fi
245
246 dnl Spec Benchmarks
247 AC_ARG_ENABLE(spec,AC_HELP_STRING([--enable-spec],[Compile SPEC benchmarks (default is NO)]),,enableval=no)
248 if test ${enableval} = "no"
249 then
250         AC_SUBST(USE_SPEC,[[]])
251 else
252         AC_SUBST(USE_SPEC,[[USE_SPEC=1]])
253 fi
254
255 dnl Precompiled Bytecode Option
256 AC_ARG_ENABLE(precompiled_bytecode,AC_HELP_STRING([--enable-precompiled_bytecode],[Use pre-compiled bytecode (default is NO)]),,enableval=no)
257 if test ${enableval} = "no"
258 then
259         AC_SUBST(UPB,[[]])
260 else
261         AC_SUBST(UPB,[[USE_PRECOMPILED_BYTECODE=1]])
262 fi
263
264
265 dnl LLC Diff Option
266 AC_ARG_ENABLE(llc_diffs,AC_HELP_STRING([--enable-llc_diffs],[Enable LLC Diffs when testing (default is YES)]),,enableval=yes)
267 if test ${enableval} = "no"
268 then
269         AC_SUBST(DISABLE_LLC_DIFFS,[DISABLE_LLC_DIFFS:=1])
270 else
271         AC_SUBST(DISABLE_LLC_DIFFS,[[]])
272 fi
273
274 dnl JIT Option
275 AC_ARG_ENABLE(jit,AC_HELP_STRING([--enable-jit],[Enable Just In Time Compiling (default is YES)]),,enableval=default)
276
277 if test ${enableval} = "no"
278 then
279         AC_SUBST(JIT,[[]])
280 else
281         case $target in
282                 *i*86*)
283                         AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
284                         ;;
285                 *sparc*)
286                         AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
287                         ;;
288                 *)
289                         AC_SUBST(JIT,[[]])
290                         ;;
291         esac
292 fi
293
294 dnl **************************************************************************
295 dnl * Set the location of various third-party software packages
296 dnl **************************************************************************
297
298 dnl Location of SPEC benchmarks
299 AC_ARG_WITH(spec,AC_HELP_STRING([--with-spec],[Location of SPEC benchmarks]),AC_SUBST(SPEC_ROOT,[$withval]),AC_SUBST(SPEC_ROOT,[/home/vadve/shared/benchmarks/speccpu2000/benchspec]))
300
301 dnl Location of the LLVM C front end
302 AC_ARG_WITH(llvmgccdir,AC_HELP_STRING([--with-llvmgccdir],[Location of LLVM GCC front-end]),AC_SUBST(LLVMGCCDIR,[$withval]))
303
304 dnl Location of the bytecode repository
305 AC_ARG_WITH(bcrepos,AC_HELP_STRING([--with-bcrepos],[Location of Bytecode Repository]),AC_SUBST(BCR,[$withval]),AC_SUBST(BCR,[/home/vadve/lattner/LLVMPrograms]))
306
307 dnl Location of PAPI
308 AC_ARG_WITH(papi,AC_HELP_STRING([--with-papi],[Location of PAPI]),AC_SUBST(PAPIDIR,[$withval]),AC_SUBST(PAPIDIR,[/home/vadve/shared/papi-2.3.4.1]))
309
310 dnl Location of the purify program
311 AC_ARG_WITH(purify,AC_HELP_STRING([--with-purify],[Location of purify program]),AC_SUBST(PURIFY,[$withval]))
312
313 dnl Location for placing object files and built programs, libraries, etc
314 if test -d /localhome
315 then
316         AC_SUBST(OBJROOT,[/localhome/$USER])
317 else
318         AC_SUBST(OBJROOT,[.])
319 fi
320
321 AC_ARG_WITH(objroot,AC_HELP_STRING([--with-objroot],[Location where object files should be placed (default is .)]),AC_SUBST(OBJROOT,[$withval]))
322
323 dnl **************************************************************************
324 dnl * Create the output files
325 dnl **************************************************************************
326 AC_OUTPUT(Makefile.config)