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.1]]],[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 Quit if the source directory has already been configured.
24 dnl NOTE: This relies upon undocumented autoconf behavior.
25 if test ${srcdir} != "."
27 if test -f ${srcdir}/include/Config/config.h
29 AC_MSG_ERROR([Already configured in ${srcdir}])
34 dnl Configure all of the projects present in our source tree.
36 for i in `ls ${srcdir}/projects`
40 if test -f ${srcdir}/projects/${i}/configure
42 AC_CONFIG_SUBDIRS(projects/${i})
47 dnl Configure a header file
48 AC_CONFIG_HEADERS(include/Config/config.h)
49 AC_CONFIG_MAKEFILE(Makefile)
50 AC_CONFIG_MAKEFILE(Makefile.common)
51 AC_CONFIG_MAKEFILE(lib/Makefile)
52 AC_CONFIG_MAKEFILE(runtime/Makefile)
53 AC_CONFIG_MAKEFILE(test/Makefile)
54 AC_CONFIG_MAKEFILE(test/Makefile.tests)
55 AC_CONFIG_MAKEFILE(test/QMTest/llvm.py)
56 AC_CONFIG_MAKEFILE(test/QMTest/llvmdb.py)
57 AC_CONFIG_MAKEFILE(test/Programs/Makefile)
58 AC_CONFIG_MAKEFILE(test/Programs/Makefile.programs)
59 AC_CONFIG_MAKEFILE(test/Programs/TEST.aa.Makefile)
60 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.report)
61 AC_CONFIG_MAKEFILE(test/Programs/TEST.micro.report)
62 AC_CONFIG_MAKEFILE(test/Programs/TEST.aa.report)
63 AC_CONFIG_MAKEFILE(test/Programs/TEST.example.Makefile)
64 AC_CONFIG_MAKEFILE(test/Programs/TEST.nightly.Makefile)
65 AC_CONFIG_MAKEFILE(test/Programs/TEST.buildrepo.Makefile)
66 AC_CONFIG_MAKEFILE(test/Programs/TEST.jit.Makefile)
67 AC_CONFIG_MAKEFILE(test/Programs/TEST.nightly.report)
68 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.Makefile)
69 AC_CONFIG_MAKEFILE(test/Programs/TEST.jit.report)
70 AC_CONFIG_MAKEFILE(test/Programs/TEST.typesafe.Makefile)
71 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.gnuplot)
72 AC_CONFIG_MAKEFILE(test/Programs/TEST.micro.Makefile)
73 AC_CONFIG_MAKEFILE(test/Programs/External/Makefile)
74 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile)
75 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile.spec)
76 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Makefile)
77 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Makefile.multisrc)
78 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/analyzer/test.in)
79 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/distray/Makefile)
80 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/distray/test.in)
81 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/fourinarow/Makefile)
82 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/fourinarow/test.in)
83 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/mason/Makefile)
84 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/mason/test.in)
85 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/neural/Makefile)
86 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/neural/test.in)
87 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pcompress2/Makefile)
88 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pcompress2/test.in)
89 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pifft/Makefile)
90 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pifft/test.in)
91 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Makefile)
92 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Makefile.singlesrc)
93 AC_CONFIG_MAKEFILE(tools/Makefile)
94 AC_CONFIG_MAKEFILE(utils/Makefile)
95 AC_CONFIG_MAKEFILE(projects/Makefile)
97 dnl **************************************************************************
98 dnl * Determine which system we are building on
99 dnl **************************************************************************
101 dnl Check the install program (needs to be done before canonical stuff)
104 dnl Check which host for which we're compiling. This will tell us which LLVM
105 dnl compiler will be used for compiling SSA into object code.
108 dnl Set the "OS" Makefile variable based on the system we are building on.
109 dnl We will use the build machine information to set some variables.
113 if test -d /home/vadve/lattner/local/x86/llvm-gcc
115 AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/x86/llvm-gcc/])
121 if test -d /home/vadve/lattner/local/sparc/llvm-gcc
123 AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/sparc/llvm-gcc/])
128 AC_SUBST(OS,[Darwin])
131 *) AC_SUBST(OS,[Unknown])
135 dnl If we are targetting a Sparc machine running Solaris, pretend that it is
136 dnl V9, since that is all that we support at the moment, and autoconf will only
137 dnl tell us we're a sparc.
139 sparc*-*-solaris*) AC_SUBST(target,[[sparcv9-sun-solaris2.8]])
143 dnl Determine what our target architecture is and configure accordingly.
144 dnl This will allow Makefiles to make a distinction between the hardware and
147 i*86-*) AC_SUBST(ARCH,[x86])
149 sparc*-*) AC_SUBST(ARCH,[Sparc])
151 powerpc*-*) AC_SUBST(ARCH,[PowerPC])
153 *) AC_SUBST(ARCH,[Unknown])
157 dnl **************************************************************************
158 dnl * Check for programs.
159 dnl **************************************************************************
161 dnl Check for compilation tools
166 dnl Ensure that compilation tools are GCC; we use GCC specific extensions
167 if test "$GCC" != "yes"
169 AC_MSG_ERROR([gcc required but not found])
172 if test "$GXX" != "yes"
174 AC_MSG_ERROR([g++ required but not found])
177 dnl Verify that GCC is version 3.0 or higher
178 gccmajor=`$CC --version | head -n 1 | awk '{print $NF;}' | cut -d. -f1`
179 if test "$gccmajor" -lt "3"
181 AC_MSG_ERROR([gcc 3.x required])
184 dnl Check for GNU Make. We use its extensions to, so don't build without it
186 if test -z "$_cv_gnu_make_command"
188 AC_MSG_ERROR([GNU Make required but not found])
191 dnl Check for compiler-compiler tools (reminds me of Little Caesar's Pizza)
195 dnl Check for libtool
198 dnl Check for our special programs
199 AC_PATH_PROG(RPWD,[pwd],[false])
200 if test ${RPWD} = "false"
202 AC_MSG_ERROR([pwd required but not found])
205 AC_PATH_PROG(AR,[ar],[false])
206 if test ${AR} = "false"
208 AC_MSG_ERROR([ar required but not found])
211 AC_PATH_PROG(SED,[sed],[false])
212 if test ${SED} = "false"
214 AC_MSG_ERROR([sed required but not found])
217 AC_PATH_PROG(RM,[rm],[false])
218 if test ${RM} = "false"
220 AC_MSG_ERROR([rm required but not found])
223 AC_PATH_PROG(ECHO,[echo],[false])
224 if test ${ECHO} = "false"
226 AC_MSG_ERROR([echo required but not found])
229 AC_PATH_PROG(MKDIR,[mkdir],[false])
230 if test ${MKDIR} = "false"
232 AC_MSG_ERROR([mkdir required but not found])
235 AC_PATH_PROG(DATE,[date],[false])
236 if test ${DATE} = "false"
238 AC_MSG_ERROR([date required but not found])
241 AC_PATH_PROG(MV,[mv],[false])
242 if test ${MV} = "false"
244 AC_MSG_ERROR([mv required but not found])
247 AC_PATH_PROG(DOT,[dot],[false])
249 AC_PATH_PROG(ETAGS,[etags],[false])
251 AC_PATH_PROG(PYTHON,[python],[false])
252 if test ${PYTHON} = "false"
254 AC_MSG_WARN([python required but not found])
257 AC_PATH_PROG(QMTEST,[qmtest],[false])
258 if test ${QMTEST} = "false"
260 AC_MSG_WARN([qmtest required but not found])
263 dnl Verify that the version of python available is high enough for qmtest
264 pyversion=`$PYTHON -V 2>&1 | cut -d\ -f2`
265 pymajor=`echo $pyversion | cut -d. -f1`
266 pyminor=`echo $pyversion | cut -d. -f2`
268 if test "$pymajor" -ge "2"
270 if test "$pymajor" -eq "2"
272 if test "$pyminor" -lt "2"
274 AC_MSG_WARN([Python 2.2 or greater required for qmtest])
278 AC_MSG_WARN([Python 2.2 or greater required for qmtest])
281 dnl Verify that the source directory is valid
282 AC_CONFIG_SRCDIR(["Makefile.config.in"])
284 dnl **************************************************************************
285 dnl * Check for libraries.
286 dnl **************************************************************************
288 dnl libelf is for sparc only; we can ignore it if we don't have it
289 AC_CHECK_LIB(elf, elf_begin)
291 dnl dlopen() is required for plugin support.
292 AC_SEARCH_LIBS(dlopen,dl,AC_DEFINE([HAVE_DLOPEN],[1],[Define if dlopen() is available on this platform.]),AC_MSG_WARN([dlopen() not found - disabling plugin support]))
294 dnl mallinfo is optional; the code can compile (minus features) without it
295 AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1],[Define if mallinfo() is available on this platform.]))
297 dnl pthread locking functions are optional - but llvm will not be thread-safe
299 AC_SEARCH_LIBS(pthread_mutex_lock,pthread,AC_DEFINE(HAVE_PTHREAD_MUTEX_LOCK,1,[Define if PThread mutexes (e.g., pthread_mutex_lock) are available in the system's thread library.]))
302 dnl The math libraries are used by the test code, but not by the actual LLVM
305 dnl AC_CHECK_LIB(m, cos)
307 dnl **************************************************************************
308 dnl * Checks for header files.
309 dnl * Chances are, if the standard C or POSIX type header files are missing,
310 dnl * then LLVM just isn't going to compile. However, it is possible that
311 dnl * the necessary functions/macros will be included from other
312 dnl * (non-standard and non-obvious) header files.
314 dnl * So, we'll be gracious, give it a chance, and try to go on without
316 dnl **************************************************************************
320 dnl Check for ANSI C/POSIX header files
321 AC_CHECK_HEADERS(assert.h fcntl.h limits.h sys/time.h unistd.h errno.h signal.h math.h)
323 dnl Check for system specific header files
324 AC_CHECK_HEADERS(malloc.h sys/mman.h sys/resource.h)
326 dnl Check for header files associated with dlopen and friends
327 AC_CHECK_HEADERS(dlfcn.h link.h)
329 dnl **************************************************************************
330 dnl * Checks for typedefs, structures, and compiler characteristics.
331 dnl **************************************************************************
333 dnl Check for const and inline keywords
337 dnl Check for machine endian-ness
338 AC_C_BIGENDIAN(AC_DEFINE([ENDIAN_BIG],[],[Define if the machine is Big-Endian]),AC_DEFINE([ENDIAN_LITTLE],[],[Define if the machine is Little-Endian]))
343 AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
344 AC_CHECK_TYPES([uint64_t],,AC_MSG_ERROR([Type uint64_t required but not found]))
348 dnl Check for various C features
351 dnl Check for C++ extensions
354 AC_CXX_HAVE_EXT_SLIST
355 AC_CXX_HAVE_STD_ITERATOR
356 AC_CXX_HAVE_BI_ITERATOR
357 AC_CXX_HAVE_FWD_ITERATOR
359 dnl **************************************************************************
360 dnl * Checks for library functions.
361 dnl **************************************************************************
363 AC_PROG_GCC_TRADITIONAL
367 if test ${ac_cv_func_mmap_file} = "no"
369 AC_MSG_ERROR([mmap() of files required but not found])
371 AC_HEADER_MMAP_ANONYMOUS
373 AC_CHECK_FUNCS(getcwd gettimeofday strcspn strdup strerror strspn strstr strtod strtol strtoq strtoll)
376 dnl Need to check mmap for MAP_PRIVATE, MAP_ANONYMOUS, MAP_ANON, MAP_FIXED
377 dnl MAP_FIXED is only needed for Sparc
378 dnl MAP_ANON is used for Sparc and BSD
379 dnl Everyone should have MAP_PRIVATE
382 dnl Check for certain functions (even if we've already found them) so that we
383 dnl can quit with an error if they are unavailable.
385 dnl As the code is made more portable (i.e. less reliant on these functions,
386 dnl these checks should go away.
387 AC_CHECK_FUNC(mmap,,AC_MSG_ERROR([Function mmap() required but not found]))
388 AC_CHECK_FUNC(mprotect,,AC_MSG_ERROR([Function mprotect() required but not found]))
390 dnl Determine if the linker supports the -R option.
393 dnl **************************************************************************
394 dnl * Enable various compile-time options
395 dnl **************************************************************************
398 AC_ARG_ENABLE(purify,AC_HELP_STRING([--enable-purify],[Compile with purify (default is NO)]),,enableval="no")
399 if test ${enableval} = "no"
401 AC_SUBST(ENABLE_PURIFY,[[]])
403 AC_SUBST(ENABLE_PURIFY,[[ENABLE_PURIFY=1]])
407 AC_ARG_ENABLE(optimized,AC_HELP_STRING([--enable-optimized],[Compile with optimizations enabled (default is NO)]),,enableval=no)
408 if test ${enableval} = "no"
410 AC_SUBST(ENABLE_OPTIMIZED,[[]])
412 AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
416 AC_ARG_ENABLE(spec2000,AC_HELP_STRING([--enable-spec2000],[Compile SPEC 2000 benchmarks (default is NO)]),,enableval=no)
417 if test ${enableval} = "no"
419 if test -d /home/vadve/shared/benchmarks/speccpu2000/benchspec
421 AC_SUBST(SPEC_ROOT,[/home/vadve/shared/benchmarks/speccpu2000/benchspec])
422 AC_SUBST(USE_SPEC,[[USE_SPEC=1]])
424 AC_SUBST(USE_SPEC,[[]])
425 AC_SUBST(SPEC_ROOT,[])
428 if test ${enableval} = ""
430 AC_SUBST(SPEC_ROOT,[/home/vadve/shared/benchmarks/speccpu2000/benchspec])
432 AC_SUBST(SPEC_ROOT,[${enableval}])
434 AC_SUBST(USE_SPEC,[[USE_SPEC=1]])
437 dnl Precompiled Bytecode Option
438 AC_ARG_ENABLE(precompiled_bytecode,AC_HELP_STRING([--enable-precompiled_bytecode],[Use pre-compiled bytecode (default is NO)]),,enableval=no)
439 if test ${enableval} = "no"
443 AC_SUBST(UPB,[[USE_PRECOMPILED_BYTECODE=1]])
448 AC_ARG_ENABLE(llc_diffs,AC_HELP_STRING([--enable-llc_diffs],[Enable LLC Diffs when testing (default is YES)]),,enableval=yes)
449 if test ${enableval} = "no"
451 AC_SUBST(DISABLE_LLC_DIFFS,[DISABLE_LLC_DIFFS:=1])
453 AC_SUBST(DISABLE_LLC_DIFFS,[[]])
457 AC_ARG_ENABLE(jit,AC_HELP_STRING([--enable-jit],[Enable Just In Time Compiling (default is YES)]),,enableval=default)
459 if test ${enableval} = "no"
465 AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
468 AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
476 dnl **************************************************************************
477 dnl * Set the location of various third-party software packages
478 dnl **************************************************************************
480 dnl Location of the LLVM C front end
481 AC_ARG_WITH(llvmgccdir,AC_HELP_STRING([--with-llvmgccdir],[Location of LLVM GCC front-end]),AC_SUBST(LLVMGCCDIR,[$withval]))
483 AC_MSG_CHECKING([for llvm-gcc])
485 if test -d "$LLVMGCCDIR"
487 if test -x "$LLVMGCCDIR/bin/gcc"
489 LLVM_GCC_CHECK="$LLVMGCCDIR/bin/gcc"
493 AC_MSG_RESULT($LLVM_GCC_CHECK)
494 if test "$LLVM_GCC_CHECK" = "no"
499 AC_MSG_CHECKING([whether llvm-gcc is sane])
501 if test -x "$LLVM_GCC_CHECK"
503 cp /dev/null conftest.c
504 "$LLVM_GCC_CHECK" -S -o - conftest.c | grep implementation > /dev/null 2>&1
511 AC_MSG_RESULT($LLVM_GCC_SANE)
512 if test "$LLVM_GCC_SANE" = "no"
517 dnl Location of the bytecode repository
518 AC_ARG_WITH(bcrepos,AC_HELP_STRING([--with-bcrepos],[Location of Bytecode Repository]),AC_SUBST(BCR,[$withval]),AC_SUBST(BCR,[/home/vadve/lattner/LLVMPrograms]))
521 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]))
523 dnl Location of the purify program
524 AC_ARG_WITH(purify,AC_HELP_STRING([--with-purify],[Location of purify program]),AC_SUBST(PURIFY,[$withval]))
526 dnl **************************************************************************
527 dnl * Configure other software packages (via AC_CONFIG_SUBDIRS)
528 dnl **************************************************************************
530 dnl **************************************************************************
531 dnl * Create the output files
532 dnl **************************************************************************
533 AC_OUTPUT(Makefile.config)
535 if test $llvmgccwarn = yes
537 AC_MSG_WARN([***** llvm C/C++ front end was not found, or does not])
538 AC_MSG_WARN([***** appear to be working.])
539 AC_MSG_WARN([***** ])
540 AC_MSG_WARN([***** Please check configure's --with-llvmgccdir option.])
541 AC_MSG_WARN([***** Runtime libraries (in llvm/runtime) will not be built,])
542 AC_MSG_WARN([***** but you should be able to build the llvm tools.])