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