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 Check for GNU Make. We use its extensions to, so don't build without it
98 if test -z "$_cv_gnu_make_command"
100 AC_MSG_ERROR([GNU Make required but not found])
103 dnl Check for compiler-compiler tools (reminds me of Little Caesar's Pizza)
107 dnl Check for libtool
110 dnl Check for our special programs
111 AC_PATH_PROG(AR,[ar])
112 AC_PATH_PROG(SED,[sed])
113 AC_PATH_PROG(RM,[rm])
114 AC_PATH_PROG(ECHO,[echo])
115 AC_PATH_PROG(MKDIR,[mkdir])
116 AC_PATH_PROG(DATE,[date])
117 AC_PATH_PROG(MV,[mv])
118 AC_PATH_PROG(DOT,[dot])
119 AC_PATH_PROG(ETAGS,[etags])
120 AC_PATH_PROG(PURIFY,[purify])
122 dnl Verify that the source directory is valid
123 AC_CONFIG_SRCDIR(["Makefile.config.in"])
125 dnl **************************************************************************
126 dnl * Check for libraries.
127 dnl **************************************************************************
129 dnl libelf is for sparc only; we can ignore it if we don't have it
130 AC_CHECK_LIB(elf, elf_begin)
132 dnl dlopen() is required. If we don't find it, quit.
133 AC_SEARCH_LIBS(dlopen,dl,,AC_MSG_ERROR([dlopen() required but not found]))
135 dnl mallinfo is optional; the code can compile (minus features) without it
136 AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1]))
139 dnl The math libraries are used by the test code, but not by the actual LLVM
142 dnl AC_CHECK_LIB(m, cos)
144 dnl **************************************************************************
145 dnl * Checks for header files.
146 dnl * Chances are, if the standard C or POSIX type header files are missing,
147 dnl * then LLVM just isn't going to compile. However, it is possible that
148 dnl * the necessary functions/macros will be included from other
149 dnl * (non-standard and non-obvious) header files.
151 dnl * So, we'll be gracious, give it a chance, and try to go on without
153 dnl **************************************************************************
157 dnl Check for ANSI C/POSIX header files
158 AC_CHECK_HEADERS(assert.h fcntl.h limits.h sys/time.h unistd.h errno.h signal.h math.h)
160 dnl Check for system specific header files
161 AC_CHECK_HEADERS(malloc.h strings.h sys/mman.h sys/resource.h)
163 dnl Check for header files associated with dlopen and friends
164 AC_CHECK_HEADERS(dlfcn.h link.h)
166 dnl **************************************************************************
167 dnl * Checks for typedefs, structures, and compiler characteristics.
168 dnl **************************************************************************
170 dnl Check for const and inline keywords
174 dnl Check for machine endian-ness
175 AC_C_BIGENDIAN(AC_DEFINE([ENDIAN_BIG]),AC_DEFINE(ENDIAN_LITTLE))
180 AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
181 AC_CHECK_TYPES([uint64_t],,AC_MSG_ERROR([Type uint64_t required but not found]))
185 dnl Check for C++ extensions
186 AC_CXX_HAVE_EXT_HASH_MAP
187 AC_CXX_HAVE_EXT_HASH_SET
188 AC_CXX_HAVE_EXT_SLIST
189 AC_CXX_HAVE_STD_ITERATOR
190 AC_CXX_HAVE_BI_ITERATOR
191 AC_CXX_HAVE_FWD_ITERATOR
193 dnl **************************************************************************
194 dnl * Checks for library functions.
195 dnl **************************************************************************
197 AC_PROG_GCC_TRADITIONAL
201 if test ${ac_cv_func_mmap_file} = "no"
203 AC_MSG_ERROR([mmap() of files required but not found])
205 AC_HEADER_MMAP_ANONYMOUS
207 AC_CHECK_FUNCS(getcwd gettimeofday strcspn strdup strerror strspn strstr strtod strtol)
210 dnl Need to check mmap for MAP_PRIVATE, MAP_ANONYMOUS, MAP_ANON, MAP_FIXED
211 dnl MAP_FIXED is only needed for Sparc
212 dnl MAP_ANON is used for Sparc and BSD
213 dnl Everyone should have MAP_PRIVATE
216 dnl Check for certain functions (even if we've already found them) so that we
217 dnl can quit with an error if they are unavailable.
219 dnl As the code is made more portable (i.e. less reliant on these functions,
220 dnl these checks should go away.
221 AC_CHECK_FUNC(mmap,,AC_MSG_ERROR([Function mmap() required but not found]))
222 AC_CHECK_FUNC(mprotect,,AC_MSG_ERROR([Function mprotect() required but not found]))
224 dnl **************************************************************************
225 dnl * Enable various compile-time options
226 dnl **************************************************************************
229 AC_ARG_ENABLE(purify,AC_HELP_STRING([--enable-purify],[Compile with purify (default is NO)]),,enableval="no")
230 if test ${enableval} = "no"
232 AC_SUBST(ENABLE_PURIFY,[[]])
234 AC_SUBST(ENABLE_PURIFY,[[ENABLE_PURIFY=1]])
238 AC_ARG_ENABLE(optimized,AC_HELP_STRING([--enable-optimized],[Compile with optimizations enabled (default is NO)]),,enableval=no)
239 if test ${enableval} = "no"
241 AC_SUBST(ENABLE_OPTIMIZED,[[]])
243 AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
247 AC_ARG_ENABLE(spec,AC_HELP_STRING([--enable-spec],[Compile SPEC benchmarks (default is NO)]),,enableval=no)
248 if test ${enableval} = "no"
250 AC_SUBST(USE_SPEC,[[]])
252 AC_SUBST(USE_SPEC,[[USE_SPEC=1]])
255 dnl Precompiled Bytecode Option
256 AC_ARG_ENABLE(precompiled_bytecode,AC_HELP_STRING([--enable-precompiled_bytecode],[Use pre-compiled bytecode (default is NO)]),,enableval=no)
257 if test ${enableval} = "no"
261 AC_SUBST(UPB,[[USE_PRECOMPILED_BYTECODE=1]])
266 AC_ARG_ENABLE(llc_diffs,AC_HELP_STRING([--enable-llc_diffs],[Enable LLC Diffs when testing (default is YES)]),,enableval=yes)
267 if test ${enableval} = "no"
269 AC_SUBST(DISABLE_LLC_DIFFS,[DISABLE_LLC_DIFFS:=1])
271 AC_SUBST(DISABLE_LLC_DIFFS,[[]])
275 AC_ARG_ENABLE(jit,AC_HELP_STRING([--enable-jit],[Enable Just In Time Compiling (default is YES)]),,enableval=default)
277 if test ${enableval} = "no"
283 AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
286 AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
294 dnl **************************************************************************
295 dnl * Set the location of various third-party software packages
296 dnl **************************************************************************
298 dnl Location of SPEC benchmarks
299 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]))
301 dnl Location of the LLVM C front end
302 AC_ARG_WITH(llvmgccdir,AC_HELP_STRING([--with-llvmgccdir],[Location of LLVM GCC front-end]),AC_SUBST(LLVMGCCDIR,[$withval]))
304 dnl Location of the bytecode repository
305 AC_ARG_WITH(bcrepos,AC_HELP_STRING([--with-bcrepos],[Location of Bytecode Repository]),AC_SUBST(BCR,[$withval]),AC_SUBST(BCR,[/home/vadve/lattner/LLVMPrograms]))
308 AC_ARG_WITH(papi,AC_HELP_STRING([--with-papi],[Location of PAPI]),AC_SUBST(PAPIDIR,[$withval]),AC_SUBST(PAPIDIR,[/home/vadve/shared/papi-2.3.4.1]))
310 dnl Location of the purify program
311 AC_ARG_WITH(purify,AC_HELP_STRING([--with-purify],[Location of purify program]),AC_SUBST(PURIFY,[$withval]))
313 dnl Location for placing object files and built programs, libraries, etc
316 if test -d /localhome/${USER}
318 AC_SUBST(OBJROOT,[/localhome/${USER}])
320 AC_SUBST(OBJROOT,[.])
323 AC_SUBST(OBJROOT,[.])
326 AC_ARG_WITH(objroot,AC_HELP_STRING([--with-objroot],[Location where object files should be placed (default is .)]),AC_SUBST(OBJROOT,[$withval]))
328 dnl **************************************************************************
329 dnl * Create the output files
330 dnl **************************************************************************
331 AC_OUTPUT(Makefile.config)