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