blob: 5c5572a1eb3e96e3abde18a14f6888cc36a4820c [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)
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])
43 dnl Turned off DISABLE_LLC_DIFFS now that LLC/x86 is
44 dnl viable for almost all our test cases.
45 dnl AC_SUBST(DISABLE_LLC_DIFFS,[[DISABLE_LLC_DIFFS:=1]])
46 AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/x86/llvm-gcc/])
47 ;;
48
49 *sparc*) AC_SUBST(OS,[SunOS])
50 AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/sparc/llvm-gcc/])
51 ;;
52
53 *) AC_SUBST(OS,[Unknown])
54 ;;
55esac
56
57dnl
58dnl If we are targetting a Sparc machine running Solaris, pretend that it is
59dnl V9, since that is all that we support at the moment, and autoconf will only
60dnl tell us we're a sparc.
61dnl
62case $target in
63 *sparc*solaris*) AC_SUBST(target,[[sparcv9-sun-solaris2.8]])
64 ;;
65esac
66
67dnl
68dnl Determine what our target architecture is and configure accordingly.
69dnl This will allow Makefiles to make a distinction between the hardware and
70dnl the OS.
71dnl
72case $target in
73 *i*86*) AC_SUBST(ARCH,[x86])
74 ;;
75 *sparc*solaris*) AC_SUBST(ARCH,[Sparc])
76 ;;
77esac
78
79dnl **************************************************************************
80dnl * Check for programs.
81dnl **************************************************************************
82
83dnl Check for compilation tools
84AC_PROG_CXX
85AC_PROG_CC(gcc)
86AC_PROG_CPP
87
88dnl Ensure that compilation tools are GCC; we use GCC specific extensions
89if test "$GCC" != "yes"
90then
91 AC_MSG_ERROR([gcc required but not found])
92fi
93
94if test "$GXX" != "yes"
95then
96 AC_MSG_ERROR([g++ required but not found])
97fi
98
99dnl Check for GNU Make. We use its extensions to, so don't build without it
100CHECK_GNU_MAKE
101if test -z "$_cv_gnu_make_command"
102then
103 AC_MSG_ERROR([GNU Make required but not found])
104fi
105
106dnl Check for compiler-compiler tools (reminds me of Little Caesar's Pizza)
107AC_PROG_FLEX
108AC_PROG_BISON
109
110dnl Check for libtool
111AC_PROG_LIBTOOL
112
113dnl Check for our special programs
114AC_PATH_PROG(AR,[ar])
115AC_PATH_PROG(SED,[sed])
116AC_PATH_PROG(RM,[rm])
117AC_PATH_PROG(ECHO,[echo])
118AC_PATH_PROG(MKDIR,[mkdir])
119AC_PATH_PROG(DATE,[date])
120AC_PATH_PROG(MV,[mv])
121AC_PATH_PROG(DOT,[dot])
122AC_PATH_PROG(ETAGS,[etags])
123AC_PATH_PROG(PURIFY,[purify])
124
125dnl Verify that the source directory is valid
126AC_CONFIG_SRCDIR(["Makefile.config.in"])
127
128dnl **************************************************************************
129dnl * Check for libraries.
130dnl **************************************************************************
131
132dnl libelf is for sparc only; we can ignore it if we don't have it
133AC_CHECK_LIB(elf, elf_begin)
134
135dnl dlopen() is required. If we don't find it, quit.
136AC_SEARCH_LIBS(dlopen,dl,,AC_MSG_ERROR([dlopen() required but not found]))
137
138dnl mallinfo is optional; the code can compile (minus features) without it
139AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1]))
140
141dnl
142dnl The math libraries are used by the test code, but not by the actual LLVM
143dnl code.
144dnl
145dnl AC_CHECK_LIB(m, cos)
146
147dnl **************************************************************************
148dnl * Checks for header files.
149dnl * Chances are, if the standard C or POSIX type header files are missing,
150dnl * then LLVM just isn't going to compile. However, it is possible that
151dnl * the necessary functions/macros will be included from other
152dnl * (non-standard and non-obvious) header files.
153dnl *
154dnl * So, we'll be gracious, give it a chance, and try to go on without
155dnl * them.
156dnl **************************************************************************
157AC_HEADER_STDC
158AC_HEADER_SYS_WAIT
159
160dnl Check for ANSI C/POSIX header files
161AC_CHECK_HEADERS(assert.h fcntl.h limits.h sys/time.h unistd.h errno.h signal.h math.h)
162
163dnl Check for system specific header files
164AC_CHECK_HEADERS(malloc.h strings.h sys/mman.h sys/resource.h)
165
166dnl Check for header files associated with dlopen and friends
167AC_CHECK_HEADERS(dlfcn.h link.h)
168
169dnl **************************************************************************
170dnl * Checks for typedefs, structures, and compiler characteristics.
171dnl **************************************************************************
172
173dnl Check for const and inline keywords
174AC_C_CONST
175AC_C_INLINE
176
177dnl Check for machine endian-ness
178AC_C_BIGENDIAN(AC_DEFINE([ENDIAN_BIG]),AC_DEFINE(ENDIAN_LITTLE))
179
180dnl Check for types
181AC_TYPE_PID_T
182AC_TYPE_SIZE_T
183AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
184AC_CHECK_TYPES([uint64_t],,AC_MSG_ERROR([Type uint64_t required but not found]))
185AC_HEADER_TIME
186AC_STRUCT_TM
187
188dnl Check for C++ extensions
189AC_CXX_HAVE_EXT_HASH_MAP
190AC_CXX_HAVE_EXT_HASH_SET
191AC_CXX_HAVE_EXT_SLIST
192AC_CXX_HAVE_STD_ITERATOR
193AC_CXX_HAVE_BI_ITERATOR
194AC_CXX_HAVE_FWD_ITERATOR
195
196dnl **************************************************************************
197dnl * Checks for library functions.
198dnl **************************************************************************
199AC_FUNC_ALLOCA
200AC_PROG_GCC_TRADITIONAL
201AC_FUNC_MEMCMP
202AC_FUNC_MMAP
203AC_FUNC_MMAP_FILE
204if test ${ac_cv_func_mmap_file} = "no"
205then
206 AC_MSG_ERROR([mmap() of files required but not found])
207fi
208AC_HEADER_MMAP_ANONYMOUS
209AC_TYPE_SIGNAL
210AC_CHECK_FUNCS(getcwd gettimeofday strcspn strdup strerror strspn strstr strtod strtol)
211
212dnl
213dnl Need to check mmap for MAP_PRIVATE, MAP_ANONYMOUS, MAP_ANON, MAP_FIXED
214dnl MAP_FIXED is only needed for Sparc
215dnl MAP_ANON is used for Sparc and BSD
216dnl Everyone should have MAP_PRIVATE
217dnl
218
219dnl Check for certain functions (even if we've already found them) so that we
220dnl can quit with an error if they are unavailable.
221dnl
222dnl As the code is made more portable (i.e. less reliant on these functions,
223dnl these checks should go away.
224AC_CHECK_FUNC(mmap,,AC_MSG_ERROR([Function mmap() required but not found]))
225AC_CHECK_FUNC(mprotect,,AC_MSG_ERROR([Function mprotect() required but not found]))
226
227dnl **************************************************************************
228dnl * Enable various compile-time options
229dnl **************************************************************************
230AC_ARG_ENABLE(purify,AC_HELP_STRING([--enable-purify],[Compile with purify (default is NO)]), AC_SUBST(ENABLE_PURIFY,[[ENABLE_PURIFY=1]]), AC_SUBST(ENABLE_PURIFY,[[]]))
231AC_ARG_ENABLE(optimized,AC_HELP_STRING([--enable-optimized],[Compile with optimizations enabled (default is NO)]), AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]]), AC_SUBST(ENABLE_OPTIMIZED,[[]]))
232AC_ARG_ENABLE(spec,AC_HELP_STRING([--enable-spec],[Compile SPEC benchmarks (default is NO)]), AC_SUBST(USE_SPEC,[[USE_SPEC=1]]), AC_SUBST(USE_SPEC,[[]]))
233AC_ARG_ENABLE(precompiled_bytecode,AC_HELP_STRING([--enable-precompiled_bytecode],[Use pre-compiled bytecode (default is NO)]), AC_SUBST(UPB,[[USE_PRECOMPILED_BYTECODE=1]]), AC_SUBST(UPB,[[]]))
234case $build in
235 *i*86*) AC_ARG_ENABLE(jit,AC_HELP_STRING([--enable-jit],[Enable Just In Time Compiling (default is NO)]), AC_SUBST(JIT,[[TARGET_HAS_JIT=1]]), AC_SUBST(JIT,[[]]))
236 ;;
237 *)
238 ;;
239esac
240
241dnl **************************************************************************
242dnl * Set the location of various third-party software packages
243dnl **************************************************************************
244AC_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]))
245AC_ARG_WITH(llvmgccdir,AC_HELP_STRING([--with-llvmgccdir],[Location of LLVM GCC front-end]),AC_SUBST(LLVMGCCDIR,[$withval]))
246AC_ARG_WITH(bcrepos,AC_HELP_STRING([--with-bcrepos],[Location of Bytecode Repository]),AC_SUBST(BCR,[$withval]),AC_SUBST(BCR,[/home/vadve/lattner/LLVMPrograms]))
247AC_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]))
248AC_ARG_WITH(objroot,AC_HELP_STRING([--with-objroot],[Location where object files should be placed (default is .)]),AC_SUBST(OBJROOT,[$withval]),AC_SUBST(OBJROOT,[.]))
249AC_ARG_WITH(purify,AC_HELP_STRING([--with-purify],[Location of purify program]),AC_SUBST(PURIFY,[$withval]))
250
251AC_OUTPUT(Makefile.config)