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