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