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
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...])
15 dnl **************************************************************************
17 dnl **************************************************************************
18 AC_INIT([[[LLVM]]],[[[1.0]]],[llvmbugs@cs.uiuc.edu])
20 dnl Place all of the extra autoconf files into the config subdirectory
21 AC_CONFIG_AUX_DIR([autoconf])
23 dnl Configure a header file
24 AC_CONFIG_HEADERS(include/Config/config.h)
26 dnl **************************************************************************
27 dnl * Determine which system we are building on
28 dnl **************************************************************************
30 dnl Check the install program (needs to be done before canonical stuff)
33 dnl Check which host for which we're compiling. This will tell us which LLVM
34 dnl compiler will be used for compiling SSA into object code.
38 dnl Now, for some of our own magic:
39 dnl We will use the build machine information to set some variables.
42 *i*86*) AC_SUBST(OS,[Linux])
43 AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/x86/llvm-gcc/])
46 *sparc*) AC_SUBST(OS,[SunOS])
47 AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/sparc/llvm-gcc/])
50 *) AC_SUBST(OS,[Unknown])
55 dnl If we are targetting a Sparc machine running Solaris, pretend that it is
56 dnl V9, since that is all that we support at the moment, and autoconf will only
57 dnl tell us we're a sparc.
60 *sparc*solaris*) AC_SUBST(target,[[sparcv9-sun-solaris2.8]])
65 dnl Determine what our target architecture is and configure accordingly.
66 dnl This will allow Makefiles to make a distinction between the hardware and
70 *i*86*) AC_SUBST(ARCH,[x86])
72 *sparc*solaris*) AC_SUBST(ARCH,[Sparc])
76 dnl **************************************************************************
77 dnl * Check for programs.
78 dnl **************************************************************************
80 dnl Check for compilation tools
85 dnl Ensure that compilation tools are GCC; we use GCC specific extensions
86 if test "$GCC" != "yes"
88 AC_MSG_ERROR([gcc required but not found])
91 if test "$GXX" != "yes"
93 AC_MSG_ERROR([g++ required but not found])
96 dnl Verify that GCC is version 3.0 or higher
97 gccmajor=`$CC --version | head -n 1 | awk '{print $NF;}' | cut -d. -f1`
98 if test "$gccmajor" -lt "3"
100 AC_MSG_ERROR([gcc 3.x required])
103 dnl Check for GNU Make. We use its extensions to, so don't build without it
105 if test -z "$_cv_gnu_make_command"
107 AC_MSG_ERROR([GNU Make required but not found])
110 dnl Check for compiler-compiler tools (reminds me of Little Caesar's Pizza)
114 dnl Check for libtool
117 dnl Check for our special programs
118 AC_PATH_PROG(RPWD,[pwd])
119 AC_PATH_PROG(AR,[ar])
120 AC_PATH_PROG(SED,[sed])
121 AC_PATH_PROG(RM,[rm])
122 AC_PATH_PROG(ECHO,[echo])
123 AC_PATH_PROG(MKDIR,[mkdir])
124 AC_PATH_PROG(DATE,[date])
125 AC_PATH_PROG(MV,[mv])
126 AC_PATH_PROG(DOT,[dot])
127 AC_PATH_PROG(ETAGS,[etags])
128 AC_PATH_PROG(PURIFY,[purify])
129 AC_PATH_PROG(PYTHON,[python])
130 AC_PATH_PROG(QMTEST,[qmtest])
132 dnl Verify that the version of python available is high enough for qmtest
133 pyversion=`$PYTHON -V 2>&1 | cut -d\ -f2`
134 pymajor=`echo $pyversion | cut -d. -f1`
135 pyminor=`echo $pyversion | cut -d. -f2`
137 if test "$pymajor" -ge "2"
139 if test "$pymajor" -eq "2"
141 if test "$pyminor" -lt "2"
143 AC_MSG_ERROR([Python 2.2 or greater required])
147 AC_MSG_ERROR([Python 2.2 or greater required])
150 dnl Verify that the source directory is valid
151 AC_CONFIG_SRCDIR(["Makefile.config.in"])
153 dnl **************************************************************************
154 dnl * Check for libraries.
155 dnl **************************************************************************
157 dnl libelf is for sparc only; we can ignore it if we don't have it
158 AC_CHECK_LIB(elf, elf_begin)
160 dnl dlopen() is required. If we don't find it, quit.
161 AC_SEARCH_LIBS(dlopen,dl,,AC_MSG_ERROR([dlopen() required but not found]))
163 dnl mallinfo is optional; the code can compile (minus features) without it
164 AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1]))
167 dnl The math libraries are used by the test code, but not by the actual LLVM
170 dnl AC_CHECK_LIB(m, cos)
172 dnl **************************************************************************
173 dnl * Checks for header files.
174 dnl * Chances are, if the standard C or POSIX type header files are missing,
175 dnl * then LLVM just isn't going to compile. However, it is possible that
176 dnl * the necessary functions/macros will be included from other
177 dnl * (non-standard and non-obvious) header files.
179 dnl * So, we'll be gracious, give it a chance, and try to go on without
181 dnl **************************************************************************
185 dnl Check for ANSI C/POSIX header files
186 AC_CHECK_HEADERS(assert.h fcntl.h limits.h sys/time.h unistd.h errno.h signal.h math.h)
188 dnl Check for system specific header files
189 AC_CHECK_HEADERS(malloc.h strings.h sys/mman.h sys/resource.h)
191 dnl Check for header files associated with dlopen and friends
192 AC_CHECK_HEADERS(dlfcn.h link.h)
194 dnl **************************************************************************
195 dnl * Checks for typedefs, structures, and compiler characteristics.
196 dnl **************************************************************************
198 dnl Check for const and inline keywords
202 dnl Check for machine endian-ness
203 AC_C_BIGENDIAN(AC_DEFINE([ENDIAN_BIG]),AC_DEFINE(ENDIAN_LITTLE))
208 AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
209 AC_CHECK_TYPES([uint64_t],,AC_MSG_ERROR([Type uint64_t required but not found]))
213 dnl Check for C++ extensions
214 AC_CXX_HAVE_EXT_HASH_MAP
215 AC_CXX_HAVE_EXT_HASH_SET
216 AC_CXX_HAVE_EXT_SLIST
217 AC_CXX_HAVE_STD_ITERATOR
218 AC_CXX_HAVE_BI_ITERATOR
219 AC_CXX_HAVE_FWD_ITERATOR
221 dnl **************************************************************************
222 dnl * Checks for library functions.
223 dnl **************************************************************************
225 AC_PROG_GCC_TRADITIONAL
229 if test ${ac_cv_func_mmap_file} = "no"
231 AC_MSG_ERROR([mmap() of files required but not found])
233 AC_HEADER_MMAP_ANONYMOUS
235 AC_CHECK_FUNCS(getcwd gettimeofday strcspn strdup strerror strspn strstr strtod strtol)
238 dnl Need to check mmap for MAP_PRIVATE, MAP_ANONYMOUS, MAP_ANON, MAP_FIXED
239 dnl MAP_FIXED is only needed for Sparc
240 dnl MAP_ANON is used for Sparc and BSD
241 dnl Everyone should have MAP_PRIVATE
244 dnl Check for certain functions (even if we've already found them) so that we
245 dnl can quit with an error if they are unavailable.
247 dnl As the code is made more portable (i.e. less reliant on these functions,
248 dnl these checks should go away.
249 AC_CHECK_FUNC(mmap,,AC_MSG_ERROR([Function mmap() required but not found]))
250 AC_CHECK_FUNC(mprotect,,AC_MSG_ERROR([Function mprotect() required but not found]))
252 dnl **************************************************************************
253 dnl * Enable various compile-time options
254 dnl **************************************************************************
257 AC_ARG_ENABLE(purify,AC_HELP_STRING([--enable-purify],[Compile with purify (default is NO)]),,enableval="no")
258 if test ${enableval} = "no"
260 AC_SUBST(ENABLE_PURIFY,[[]])
262 AC_SUBST(ENABLE_PURIFY,[[ENABLE_PURIFY=1]])
266 AC_ARG_ENABLE(optimized,AC_HELP_STRING([--enable-optimized],[Compile with optimizations enabled (default is NO)]),,enableval=no)
267 if test ${enableval} = "no"
269 AC_SUBST(ENABLE_OPTIMIZED,[[]])
271 AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
275 AC_ARG_ENABLE(spec,AC_HELP_STRING([--enable-spec],[Compile SPEC benchmarks (default is NO)]),,enableval=no)
276 if test ${enableval} = "no"
278 AC_SUBST(USE_SPEC,[[]])
280 AC_SUBST(USE_SPEC,[[USE_SPEC=1]])
283 dnl Precompiled Bytecode Option
284 AC_ARG_ENABLE(precompiled_bytecode,AC_HELP_STRING([--enable-precompiled_bytecode],[Use pre-compiled bytecode (default is NO)]),,enableval=no)
285 if test ${enableval} = "no"
289 AC_SUBST(UPB,[[USE_PRECOMPILED_BYTECODE=1]])
294 AC_ARG_ENABLE(llc_diffs,AC_HELP_STRING([--enable-llc_diffs],[Enable LLC Diffs when testing (default is YES)]),,enableval=yes)
295 if test ${enableval} = "no"
297 AC_SUBST(DISABLE_LLC_DIFFS,[DISABLE_LLC_DIFFS:=1])
299 AC_SUBST(DISABLE_LLC_DIFFS,[[]])
303 AC_ARG_ENABLE(jit,AC_HELP_STRING([--enable-jit],[Enable Just In Time Compiling (default is YES)]),,enableval=default)
305 if test ${enableval} = "no"
311 AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
314 AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
322 dnl **************************************************************************
323 dnl * Set the location of various third-party software packages
324 dnl **************************************************************************
326 dnl Location of SPEC benchmarks
327 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]))
329 dnl Location of the LLVM C front end
330 AC_ARG_WITH(llvmgccdir,AC_HELP_STRING([--with-llvmgccdir],[Location of LLVM GCC front-end]),AC_SUBST(LLVMGCCDIR,[$withval]))
332 dnl Location of the bytecode repository
333 AC_ARG_WITH(bcrepos,AC_HELP_STRING([--with-bcrepos],[Location of Bytecode Repository]),AC_SUBST(BCR,[$withval]),AC_SUBST(BCR,[/home/vadve/lattner/LLVMPrograms]))
336 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]))
338 dnl Location of the purify program
339 AC_ARG_WITH(purify,AC_HELP_STRING([--with-purify],[Location of purify program]),AC_SUBST(PURIFY,[$withval]))
341 dnl Location for placing object files and built programs, libraries, etc
344 if test -d /localhome/${USER}
346 AC_SUBST(OBJROOT,[/localhome/${USER}])
348 AC_SUBST(OBJROOT,[.])
351 AC_SUBST(OBJROOT,[.])
354 AC_ARG_WITH(objroot,AC_HELP_STRING([--with-objroot],[Location where object files should be placed (default is .)]),AC_SUBST(OBJROOT,[$withval]))
356 dnl **************************************************************************
357 dnl * Configure other software packages (via AC_CONFIG_SUBDIRS)
358 dnl **************************************************************************
360 dnl **************************************************************************
361 dnl * Create the output files
362 dnl **************************************************************************
363 AC_OUTPUT(Makefile.config)