Added code that verifies that the source directory has not been configured
[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 Quit if the source directory has already been configured.
24 if test -f ${srcdir}/include/Config/config.h
25 then
26         AC_MSG_ERROR([Already configured in ${srcdir}])
27 fi
28
29
30 dnl Configure a header file
31 AC_CONFIG_HEADERS(include/Config/config.h)
32 AC_CONFIG_MAKEFILE(Makefile)
33 AC_CONFIG_MAKEFILE(Makefile.common)
34 AC_CONFIG_MAKEFILE(Makefile.rules)
35 AC_CONFIG_MAKEFILE(lib/Makefile)
36 AC_CONFIG_MAKEFILE(lib/Analysis/Makefile)
37 AC_CONFIG_MAKEFILE(lib/Analysis/DataStructure/Makefile)
38 AC_CONFIG_MAKEFILE(lib/Analysis/IPA/Makefile)
39 AC_CONFIG_MAKEFILE(lib/Analysis/LiveVar/Makefile)
40 AC_CONFIG_MAKEFILE(lib/AsmParser/Makefile)
41 AC_CONFIG_MAKEFILE(lib/Bytecode/Makefile)
42 AC_CONFIG_MAKEFILE(lib/Bytecode/Reader/Makefile)
43 AC_CONFIG_MAKEFILE(lib/Bytecode/Writer/Makefile)
44 AC_CONFIG_MAKEFILE(lib/CWriter/Makefile)
45 AC_CONFIG_MAKEFILE(lib/CodeGen/Makefile)
46 AC_CONFIG_MAKEFILE(lib/CodeGen/InstrSched/Makefile)
47 AC_CONFIG_MAKEFILE(lib/CodeGen/InstrSelection/Makefile)
48 AC_CONFIG_MAKEFILE(lib/CodeGen/ModuloScheduling/Makefile)
49 AC_CONFIG_MAKEFILE(lib/CodeGen/RegAlloc/Makefile)
50 AC_CONFIG_MAKEFILE(lib/CodeGen/SelectionDAG/Makefile)
51 AC_CONFIG_MAKEFILE(lib/ExecutionEngine/Makefile)
52 AC_CONFIG_MAKEFILE(lib/ExecutionEngine/Interpreter/Makefile)
53 AC_CONFIG_MAKEFILE(lib/ExecutionEngine/JIT/Makefile)
54 AC_CONFIG_MAKEFILE(lib/Support/Makefile)
55 AC_CONFIG_MAKEFILE(lib/Target/Makefile)
56 AC_CONFIG_MAKEFILE(lib/Target/Sparc/Makefile)
57 AC_CONFIG_MAKEFILE(lib/Target/X86/Makefile)
58 AC_CONFIG_MAKEFILE(lib/Transforms/Makefile)
59 AC_CONFIG_MAKEFILE(lib/Transforms/Hello/Makefile)
60 AC_CONFIG_MAKEFILE(lib/Transforms/IPO/Makefile)
61 AC_CONFIG_MAKEFILE(lib/Transforms/Instrumentation/Makefile)
62 AC_CONFIG_MAKEFILE(lib/Transforms/Instrumentation/ProfilePaths/Makefile)
63 AC_CONFIG_MAKEFILE(lib/Transforms/Scalar/Makefile)
64 AC_CONFIG_MAKEFILE(lib/Transforms/Utils/Makefile)
65 AC_CONFIG_MAKEFILE(lib/VMCore/Makefile)
66 AC_CONFIG_MAKEFILE(runtime/Makefile)
67 AC_CONFIG_MAKEFILE(runtime/GCCLibraries/Makefile)
68 AC_CONFIG_MAKEFILE(runtime/GCCLibraries/crtend/Makefile)
69 AC_CONFIG_MAKEFILE(runtime/GCCLibraries/libc/Makefile)
70 AC_CONFIG_MAKEFILE(runtime/GCCLibraries/libcurses/Makefile)
71 AC_CONFIG_MAKEFILE(runtime/GCCLibraries/libexception/Makefile)
72 AC_CONFIG_MAKEFILE(runtime/GCCLibraries/libg/Makefile)
73 AC_CONFIG_MAKEFILE(runtime/GCCLibraries/libgcc/Makefile)
74 AC_CONFIG_MAKEFILE(runtime/GCCLibraries/libm/Makefile)
75 AC_CONFIG_MAKEFILE(runtime/GCCLibraries/libmalloc/Makefile)
76 AC_CONFIG_MAKEFILE(runtime/GCCLibraries/libtermcap/Makefile)
77 AC_CONFIG_MAKEFILE(runtime/GCCLibraries/libucb/Makefile)
78 AC_CONFIG_MAKEFILE(runtime/GCCLibraries/libutempter/Makefile)
79 AC_CONFIG_MAKEFILE(runtime/GCCLibraries/libutil/Makefile)
80 AC_CONFIG_MAKEFILE(runtime/libdummy/Makefile)
81 AC_CONFIG_MAKEFILE(runtime/libtrace/Makefile)
82 AC_CONFIG_MAKEFILE(test/Makefile)
83 AC_CONFIG_MAKEFILE(test/Makefile.tests)
84 AC_CONFIG_MAKEFILE(test/Programs/Makefile)
85 AC_CONFIG_MAKEFILE(test/Programs/Makefile.programs)
86 AC_CONFIG_MAKEFILE(test/Programs/TEST.aa.Makefile)
87 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.report)
88 AC_CONFIG_MAKEFILE(test/Programs/TEST.micro.report)
89 AC_CONFIG_MAKEFILE(test/Programs/TEST.aa.report)
90 AC_CONFIG_MAKEFILE(test/Programs/TEST.example.Makefile)
91 AC_CONFIG_MAKEFILE(test/Programs/TEST.nightly.Makefile)
92 AC_CONFIG_MAKEFILE(test/Programs/TEST.buildrepo.Makefile)
93 AC_CONFIG_MAKEFILE(test/Programs/TEST.jit.Makefile)
94 AC_CONFIG_MAKEFILE(test/Programs/TEST.nightly.report)
95 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.Makefile)
96 AC_CONFIG_MAKEFILE(test/Programs/TEST.jit.report)
97 AC_CONFIG_MAKEFILE(test/Programs/TEST.typesafe.Makefile)
98 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.gnuplot)
99 AC_CONFIG_MAKEFILE(test/Programs/TEST.micro.Makefile)
100 AC_CONFIG_MAKEFILE(test/Programs/External/Makefile)
101 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile)
102 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile.spec)
103 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/CFP2000/Makefile)
104 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/CFP2000/179.art/Makefile)
105 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/CFP2000/183.equake/Makefile)
106 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/CFP2000/188.ammp/Makefile)
107 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/CINT2000/Makefile)
108 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/CINT2000/164.gzip/Makefile)
109 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/CINT2000/175.vpr/Makefile)
110 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/CINT2000/176.gcc/Makefile)
111 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/CINT2000/181.mcf/Makefile)
112 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/CINT2000/186.crafty/Makefile)
113 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/CINT2000/197.parser/Makefile)
114 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/CINT2000/254.gap/Makefile)
115 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/CINT2000/255.vortex/Makefile)
116 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/CINT2000/256.bzip2/Makefile)
117 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/CINT2000/300.twolf/Makefile)
118 AC_CONFIG_MAKEFILE(test/Programs/LLVMSource/Makefile)
119 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Makefile)
120 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Makefile.multisrc)
121 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Applications/Makefile)
122 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Applications/Burg/Makefile)
123 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Applications/aha/Makefile)
124 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Applications/sgefa/Makefile)
125 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Makefile)
126 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Fhourstones/Makefile)
127 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/McCat/Makefile)
128 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/McCat/01-qbsort/Makefile)
129 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/McCat/03-testtrie/Makefile)
130 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/McCat/04-bisect/Makefile)
131 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/McCat/05-eks/Makefile)
132 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/McCat/08-main/Makefile)
133 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/McCat/09-vor/Makefile)
134 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/McCat/12-IOtest/Makefile)
135 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/McCat/15-trie/Makefile)
136 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/McCat/17-bintr/Makefile)
137 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/McCat/18-imp/Makefile)
138 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Olden/Makefile)
139 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Olden/bh/Makefile)
140 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Olden/bisort/Makefile)
141 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Olden/em3d/Makefile)
142 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Olden/health/Makefile)
143 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Olden/mst/Makefile)
144 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Olden/perimeter/Makefile)
145 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Olden/power/Makefile)
146 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Olden/treeadd/Makefile)
147 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Olden/tsp/Makefile)
148 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Olden/voronoi/Makefile)
149 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/OptimizerEval/Makefile)
150 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Ptrdist/Makefile)
151 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Ptrdist/anagram/Makefile)
152 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Ptrdist/bc/Makefile)
153 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Ptrdist/ft/Makefile)
154 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Ptrdist/ks/Makefile)
155 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/Ptrdist/yacr2/Makefile)
156 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/llubenchmark/Makefile)
157 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/sim/Makefile)
158 AC_CONFIG_MAKEFILE(test/Programs/NoSource/Makefile)
159 AC_CONFIG_MAKEFILE(test/Programs/NoSource/Flex/Makefile)
160 AC_CONFIG_MAKEFILE(test/Programs/NoSource/Larn/Makefile)
161 AC_CONFIG_MAKEFILE(test/Programs/NoSource/Moria-5.5.2/Makefile)
162 AC_CONFIG_MAKEFILE(test/Programs/NoSource/Povray31/Makefile)
163 AC_CONFIG_MAKEFILE(test/Programs/NoSource/m4/Makefile)
164 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Makefile)
165 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Makefile.singlesrc)
166 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Gizmos/Makefile)
167 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Benchmarks/Makefile)
168 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Benchmarks/Dhrystone/Makefile)
169 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Benchmarks/Shootout/Makefile)
170 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Benchmarks/Stanford/Makefile)
171 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Benchmarks/Misc/Makefile)
172 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/CustomChecked/Makefile)
173 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/UnitTests/Makefile)
174 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/UnitTests/SetjmpLongjmp/Makefile)
175 AC_CONFIG_MAKEFILE(tools/Makefile)
176 AC_CONFIG_MAKEFILE(tools/analyze/Makefile)
177 AC_CONFIG_MAKEFILE(tools/as/Makefile)
178 AC_CONFIG_MAKEFILE(tools/bugpoint/Makefile)
179 AC_CONFIG_MAKEFILE(tools/dis/Makefile)
180 AC_CONFIG_MAKEFILE(tools/extract/Makefile)
181 AC_CONFIG_MAKEFILE(tools/gccas/Makefile)
182 AC_CONFIG_MAKEFILE(tools/gccld/Makefile)
183 AC_CONFIG_MAKEFILE(tools/link/Makefile)
184 AC_CONFIG_MAKEFILE(tools/llc/Makefile)
185 AC_CONFIG_MAKEFILE(tools/lli/Makefile)
186 AC_CONFIG_MAKEFILE(tools/opt/Makefile)
187 AC_CONFIG_MAKEFILE(tools/llee/Makefile)
188 AC_CONFIG_MAKEFILE(tools/llvm-as/Makefile)
189 AC_CONFIG_MAKEFILE(tools/llvm-ar/Makefile)
190 AC_CONFIG_MAKEFILE(tools/llvm-dis/Makefile)
191 AC_CONFIG_MAKEFILE(utils/Makefile)
192 AC_CONFIG_MAKEFILE(utils/Burg/Makefile)
193 AC_CONFIG_MAKEFILE(utils/Burg/Doc/Makefile)
194 AC_CONFIG_MAKEFILE(utils/TableGen/Makefile)
195 AC_CONFIG_MAKEFILE(www/docs/Makefile)
196 AC_CONFIG_MAKEFILE(projects/Makefile)
197 AC_CONFIG_MAKEFILE(projects/sample/Makefile)
198 AC_CONFIG_MAKEFILE(projects/sample/Makefile.common)
199 AC_CONFIG_MAKEFILE(projects/sample/Makefile.config)
200 AC_CONFIG_MAKEFILE(projects/sample/lib/Makefile)
201 AC_CONFIG_MAKEFILE(projects/sample/lib/sample/Makefile)
202 AC_CONFIG_MAKEFILE(projects/sample/tools/Makefile)
203 AC_CONFIG_MAKEFILE(projects/sample/tools/sample/Makefile)
204 AC_CONFIG_MAKEFILE(projects/ModuleMaker/Makefile)
205 AC_CONFIG_MAKEFILE(projects/ModuleMaker/Makefile.common)
206 AC_CONFIG_MAKEFILE(projects/ModuleMaker/tools/Makefile)
207 AC_CONFIG_MAKEFILE(projects/ModuleMaker/tools/ModuleMaker/Makefile)
208
209 dnl **************************************************************************
210 dnl * Determine which system we are building on
211 dnl **************************************************************************
212
213 dnl Check the install program (needs to be done before canonical stuff)
214 AC_PROG_INSTALL
215
216 dnl Check which host for which we're compiling.  This will tell us which LLVM
217 dnl compiler will be used for compiling SSA into object code.
218 AC_CANONICAL_TARGET
219
220 dnl
221 dnl Now, for some of our own magic:
222 dnl We will use the build machine information to set some variables.
223 dnl
224 case $build in
225         *i*86*)  AC_SUBST(OS,[Linux])
226                  AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/x86/llvm-gcc/])
227                  ;;
228
229         *sparc*) AC_SUBST(OS,[SunOS])
230                  AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/sparc/llvm-gcc/])
231                  ;;
232
233         *)       AC_SUBST(OS,[Unknown])
234                  ;;
235 esac
236
237 dnl
238 dnl If we are targetting a Sparc machine running Solaris, pretend that it is
239 dnl V9, since that is all that we support at the moment, and autoconf will only
240 dnl tell us we're a sparc.
241 dnl
242 case $target in
243         *sparc*solaris*)  AC_SUBST(target,[[sparcv9-sun-solaris2.8]])
244                           ;;
245 esac
246
247 dnl
248 dnl Determine what our target architecture is and configure accordingly.
249 dnl This will allow Makefiles to make a distinction between the hardware and
250 dnl the OS.
251 dnl
252 case $target in
253         *i*86*)           AC_SUBST(ARCH,[x86])
254                           ;;
255         *sparc*solaris*)  AC_SUBST(ARCH,[Sparc])
256                           ;;
257 esac
258
259 dnl **************************************************************************
260 dnl * Check for programs.
261 dnl **************************************************************************
262
263 dnl Check for compilation tools
264 AC_PROG_CXX
265 AC_PROG_CC(gcc)
266 AC_PROG_CPP
267
268 dnl Ensure that compilation tools are GCC; we use GCC specific extensions
269 if test "$GCC" != "yes"
270 then
271         AC_MSG_ERROR([gcc required but not found])
272 fi
273
274 if test "$GXX" != "yes"
275 then
276         AC_MSG_ERROR([g++ required but not found])
277 fi
278
279 dnl Verify that GCC is version 3.0 or higher
280 gccmajor=`$CC --version | head -n 1 | awk '{print $NF;}' | cut -d. -f1`
281 if test "$gccmajor" -lt "3"
282 then
283         AC_MSG_ERROR([gcc 3.x required])
284 fi
285
286 dnl Check for GNU Make.  We use its extensions to, so don't build without it
287 CHECK_GNU_MAKE
288 if test -z "$_cv_gnu_make_command"
289 then
290         AC_MSG_ERROR([GNU Make required but not found])
291 fi
292
293 dnl Check for compiler-compiler tools (reminds me of Little Caesar's Pizza)
294 AC_PROG_FLEX
295 AC_PROG_BISON
296
297 dnl Check for libtool
298 AC_PROG_LIBTOOL
299
300 dnl Check for our special programs
301 AC_PATH_PROG(RPWD,[pwd])
302 AC_PATH_PROG(AR,[ar])
303 AC_PATH_PROG(SED,[sed])
304 AC_PATH_PROG(RM,[rm])
305 AC_PATH_PROG(ECHO,[echo])
306 AC_PATH_PROG(MKDIR,[mkdir])
307 AC_PATH_PROG(DATE,[date])
308 AC_PATH_PROG(MV,[mv])
309 AC_PATH_PROG(DOT,[dot])
310 AC_PATH_PROG(ETAGS,[etags])
311 AC_PATH_PROG(PURIFY,[purify])
312 AC_PATH_PROG(PYTHON,[python])
313 AC_PATH_PROG(QMTEST,[qmtest])
314
315 dnl Verify that the version of python available is high enough for qmtest
316 pyversion=`$PYTHON -V 2>&1 | cut -d\  -f2`
317 pymajor=`echo $pyversion | cut -d. -f1`
318 pyminor=`echo $pyversion | cut -d. -f2`
319
320 if test "$pymajor" -ge "2"
321 then
322         if test "$pymajor" -eq "2"
323         then
324                 if test "$pyminor" -lt "2"
325                 then
326                         AC_MSG_ERROR([Python 2.2 or greater required])
327                 fi
328         fi
329 else
330         AC_MSG_ERROR([Python 2.2 or greater required])
331 fi
332
333 dnl Verify that the source directory is valid
334 AC_CONFIG_SRCDIR(["Makefile.config.in"])
335
336 dnl **************************************************************************
337 dnl * Check for libraries.
338 dnl **************************************************************************
339
340 dnl libelf is for sparc only; we can ignore it if we don't have it
341 AC_CHECK_LIB(elf, elf_begin)
342
343 dnl dlopen() is required.  If we don't find it, quit.
344 AC_SEARCH_LIBS(dlopen,dl,,AC_MSG_ERROR([dlopen() required but not found]))
345
346 dnl mallinfo is optional; the code can compile (minus features) without it
347 AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1]))
348
349 dnl
350 dnl The math libraries are used by the test code, but not by the actual LLVM
351 dnl code.
352 dnl
353 dnl AC_CHECK_LIB(m, cos)
354
355 dnl **************************************************************************
356 dnl * Checks for header files.
357 dnl *   Chances are, if the standard C or POSIX type header files are missing,
358 dnl *   then LLVM just isn't going to compile.  However, it is possible that
359 dnl *   the necessary functions/macros will be included from other
360 dnl *   (non-standard and non-obvious) header files.
361 dnl *
362 dnl *   So, we'll be gracious, give it a chance, and try to go on without
363 dnl *   them.
364 dnl **************************************************************************
365 AC_HEADER_STDC
366 AC_HEADER_SYS_WAIT
367
368 dnl Check for ANSI C/POSIX header files
369 AC_CHECK_HEADERS(assert.h fcntl.h limits.h sys/time.h unistd.h errno.h signal.h math.h)
370
371 dnl Check for system specific header files
372 AC_CHECK_HEADERS(malloc.h strings.h sys/mman.h sys/resource.h)
373
374 dnl Check for header files associated with dlopen and friends
375 AC_CHECK_HEADERS(dlfcn.h link.h)
376
377 dnl **************************************************************************
378 dnl * Checks for typedefs, structures, and compiler characteristics.
379 dnl **************************************************************************
380
381 dnl Check for const and inline keywords
382 AC_C_CONST
383 AC_C_INLINE
384
385 dnl Check for machine endian-ness
386 AC_C_BIGENDIAN(AC_DEFINE([ENDIAN_BIG]),AC_DEFINE(ENDIAN_LITTLE))
387
388 dnl Check for types
389 AC_TYPE_PID_T
390 AC_TYPE_SIZE_T
391 AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
392 AC_CHECK_TYPES([uint64_t],,AC_MSG_ERROR([Type uint64_t required but not found]))
393 AC_HEADER_TIME
394 AC_STRUCT_TM
395
396 dnl Check for C++ extensions
397 AC_CXX_HAVE_EXT_HASH_MAP
398 AC_CXX_HAVE_EXT_HASH_SET
399 AC_CXX_HAVE_EXT_SLIST
400 AC_CXX_HAVE_STD_ITERATOR
401 AC_CXX_HAVE_BI_ITERATOR
402 AC_CXX_HAVE_FWD_ITERATOR
403
404 dnl **************************************************************************
405 dnl * Checks for library functions.
406 dnl **************************************************************************
407 AC_FUNC_ALLOCA
408 AC_PROG_GCC_TRADITIONAL
409 AC_FUNC_MEMCMP
410 AC_FUNC_MMAP
411 AC_FUNC_MMAP_FILE
412 if test ${ac_cv_func_mmap_file} = "no"
413 then
414         AC_MSG_ERROR([mmap() of files required but not found])
415 fi
416 AC_HEADER_MMAP_ANONYMOUS
417 AC_TYPE_SIGNAL
418 AC_CHECK_FUNCS(getcwd gettimeofday strcspn strdup strerror strspn strstr strtod strtol)
419
420 dnl
421 dnl Need to check mmap for MAP_PRIVATE, MAP_ANONYMOUS, MAP_ANON, MAP_FIXED
422 dnl MAP_FIXED is only needed for Sparc
423 dnl MAP_ANON is used for Sparc and BSD
424 dnl Everyone should have MAP_PRIVATE
425 dnl
426
427 dnl Check for certain functions (even if we've already found them) so that we
428 dnl can quit with an error if they are unavailable.
429 dnl
430 dnl As the code is made more portable (i.e. less reliant on these functions,
431 dnl these checks should go away.
432 AC_CHECK_FUNC(mmap,,AC_MSG_ERROR([Function mmap() required but not found]))
433 AC_CHECK_FUNC(mprotect,,AC_MSG_ERROR([Function mprotect() required but not found]))
434
435 dnl **************************************************************************
436 dnl * Enable various compile-time options
437 dnl **************************************************************************
438
439 dnl Purify Option
440 AC_ARG_ENABLE(purify,AC_HELP_STRING([--enable-purify],[Compile with purify (default is NO)]),,enableval="no")
441 if test ${enableval} = "no"
442 then
443         AC_SUBST(ENABLE_PURIFY,[[]])
444 else
445         AC_SUBST(ENABLE_PURIFY,[[ENABLE_PURIFY=1]])
446 fi
447
448 dnl Optimized Option
449 AC_ARG_ENABLE(optimized,AC_HELP_STRING([--enable-optimized],[Compile with optimizations enabled (default is NO)]),,enableval=no)
450 if test ${enableval} = "no"
451 then
452         AC_SUBST(ENABLE_OPTIMIZED,[[]])
453 else
454         AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
455 fi
456
457 dnl Spec Benchmarks
458 AC_ARG_ENABLE(spec,AC_HELP_STRING([--enable-spec],[Compile SPEC benchmarks (default is NO)]),,enableval=no)
459 if test ${enableval} = "no"
460 then
461         AC_SUBST(USE_SPEC,[[]])
462 else
463         AC_SUBST(USE_SPEC,[[USE_SPEC=1]])
464 fi
465
466 dnl Precompiled Bytecode Option
467 AC_ARG_ENABLE(precompiled_bytecode,AC_HELP_STRING([--enable-precompiled_bytecode],[Use pre-compiled bytecode (default is NO)]),,enableval=no)
468 if test ${enableval} = "no"
469 then
470         AC_SUBST(UPB,[[]])
471 else
472         AC_SUBST(UPB,[[USE_PRECOMPILED_BYTECODE=1]])
473 fi
474
475
476 dnl LLC Diff Option
477 AC_ARG_ENABLE(llc_diffs,AC_HELP_STRING([--enable-llc_diffs],[Enable LLC Diffs when testing (default is YES)]),,enableval=yes)
478 if test ${enableval} = "no"
479 then
480         AC_SUBST(DISABLE_LLC_DIFFS,[DISABLE_LLC_DIFFS:=1])
481 else
482         AC_SUBST(DISABLE_LLC_DIFFS,[[]])
483 fi
484
485 dnl JIT Option
486 AC_ARG_ENABLE(jit,AC_HELP_STRING([--enable-jit],[Enable Just In Time Compiling (default is YES)]),,enableval=default)
487
488 if test ${enableval} = "no"
489 then
490         AC_SUBST(JIT,[[]])
491 else
492         case $target in
493                 *i*86*)
494                         AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
495                         ;;
496                 *sparc*)
497                         AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
498                         ;;
499                 *)
500                         AC_SUBST(JIT,[[]])
501                         ;;
502         esac
503 fi
504
505 dnl **************************************************************************
506 dnl * Set the location of various third-party software packages
507 dnl **************************************************************************
508
509 dnl Location of SPEC benchmarks
510 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]))
511
512 dnl Location of the LLVM C front end
513 AC_ARG_WITH(llvmgccdir,AC_HELP_STRING([--with-llvmgccdir],[Location of LLVM GCC front-end]),AC_SUBST(LLVMGCCDIR,[$withval]))
514
515 dnl Location of the bytecode repository
516 AC_ARG_WITH(bcrepos,AC_HELP_STRING([--with-bcrepos],[Location of Bytecode Repository]),AC_SUBST(BCR,[$withval]),AC_SUBST(BCR,[/home/vadve/lattner/LLVMPrograms]))
517
518 dnl Location of PAPI
519 AC_ARG_WITH(papi,AC_HELP_STRING([--with-papi],[Location of PAPI]),AC_SUBST(PAPIDIR,[$withval]),AC_SUBST(PAPIDIR,[/home/vadve/shared/Sparc/papi-2.3.4.1]))
520
521 dnl Location of the purify program
522 AC_ARG_WITH(purify,AC_HELP_STRING([--with-purify],[Location of purify program]),AC_SUBST(PURIFY,[$withval]))
523
524 dnl **************************************************************************
525 dnl * Configure other software packages (via AC_CONFIG_SUBDIRS)
526 dnl **************************************************************************
527
528 dnl **************************************************************************
529 dnl * Create the output files
530 dnl **************************************************************************
531 AC_OUTPUT(Makefile.config)