1 dnl Initialize autoconf
2 AC_INIT([[[LLVM]]],[[[1.3]]],[llvmbugs@cs.uiuc.edu])
4 dnl Place all of the extra autoconf files into the config subdirectory
5 AC_CONFIG_AUX_DIR([autoconf])
7 dnl Quit if the source directory has already been configured.
8 dnl NOTE: This relies upon undocumented autoconf behavior.
9 if test ${srcdir} != "."
11 if test -f ${srcdir}/include/Config/config.h
13 AC_MSG_ERROR([Already configured in ${srcdir}])
17 dnl Configure all of the projects present in our source tree.
18 for i in `ls ${srcdir}/projects`
22 if test -f ${srcdir}/projects/${i}/configure
24 AC_CONFIG_SUBDIRS(projects/${i})
29 dnl Configure a header file
30 AC_CONFIG_HEADERS(include/Config/config.h)
31 AC_CONFIG_MAKEFILE(Makefile)
32 AC_CONFIG_MAKEFILE(Makefile.common)
33 AC_CONFIG_MAKEFILE(lib/Makefile)
34 AC_CONFIG_MAKEFILE(runtime/Makefile)
35 AC_CONFIG_MAKEFILE(test/Makefile)
36 AC_CONFIG_MAKEFILE(test/Makefile.tests)
37 AC_CONFIG_MAKEFILE(test/QMTest/llvm.py)
38 AC_CONFIG_MAKEFILE(test/QMTest/llvmdb.py)
39 AC_CONFIG_MAKEFILE(test/Programs/Makefile)
40 AC_CONFIG_MAKEFILE(test/Programs/Makefile.programs)
41 AC_CONFIG_MAKEFILE(test/Programs/Makefile.tests)
42 AC_CONFIG_MAKEFILE(test/Programs/TEST.aa.Makefile)
43 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.report)
44 AC_CONFIG_MAKEFILE(test/Programs/TEST.aa.report)
45 AC_CONFIG_MAKEFILE(test/Programs/TEST.example.Makefile)
46 AC_CONFIG_MAKEFILE(test/Programs/TEST.nightly.Makefile)
47 AC_CONFIG_MAKEFILE(test/Programs/TEST.buildrepo.Makefile)
48 AC_CONFIG_MAKEFILE(test/Programs/TEST.jit.Makefile)
49 AC_CONFIG_MAKEFILE(test/Programs/TEST.nightly.report)
50 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.Makefile)
51 AC_CONFIG_MAKEFILE(test/Programs/TEST.jit.report)
52 AC_CONFIG_MAKEFILE(test/Programs/TEST.typesafe.Makefile)
53 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.gnuplot)
54 AC_CONFIG_MAKEFILE(test/Programs/TEST.vtl.Makefile)
55 AC_CONFIG_MAKEFILE(test/Programs/External/Makefile)
56 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile)
57 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile.spec)
58 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile.spec2000)
59 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile.spec95)
60 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Makefile)
61 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Makefile.multisrc)
62 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/analyzer/test.in)
63 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/distray/Makefile)
64 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/distray/test.in)
65 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/fourinarow/Makefile)
66 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/fourinarow/test.in)
67 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/mason/Makefile)
68 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/mason/test.in)
69 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/neural/Makefile)
70 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/neural/test.in)
71 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pcompress2/Makefile)
72 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pcompress2/test.in)
73 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pifft/Makefile)
74 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pifft/test.in)
75 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Makefile)
76 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Makefile.singlesrc)
77 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/UnitTests/SetjmpLongjmp/Makefile)
78 AC_CONFIG_MAKEFILE(tools/Makefile)
79 AC_CONFIG_MAKEFILE(utils/Makefile)
80 AC_CONFIG_MAKEFILE(projects/Makefile)
82 dnl Find the install program (needs to be done before canonical stuff)
85 dnl Check which host for which we're compiling. This will tell us which LLVM
86 dnl compiler will be used for compiling SSA into object code.
89 dnl Set the "OS" Makefile variable based on the system we are building on.
90 dnl We will use the build machine information to set some variables.
94 if test -d /home/vadve/lattner/local/x86/llvm-gcc
96 AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/x86/llvm-gcc/])
101 if test -d /home/vadve/lattner/local/sparc/llvm-gcc
103 AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/sparc/llvm-gcc/])
107 AC_SUBST(OS,[Cygwin])
110 AC_SUBST(OS,[Darwin])
115 *) AC_SUBST(OS,[Unknown])
119 dnl If we are targetting a Sparc machine running Solaris, pretend that it is
120 dnl V9, since that is all that we support at the moment, and autoconf will only
121 dnl tell us we're a sparc.
123 sparc*-*-solaris*) AC_SUBST(target,[[sparcv9-sun-solaris2.8]])
127 dnl Determine what our target architecture is and configure accordingly.
128 dnl This will allow Makefiles to make a distinction between the hardware and
131 i*86-*) AC_SUBST(ARCH,[x86])
133 sparc*-*) AC_SUBST(ARCH,[Sparc])
135 powerpc*-*) AC_SUBST(ARCH,[PowerPC])
137 *) AC_SUBST(ARCH,[Unknown])
141 dnl Check for compilation tools
146 dnl Ensure that compilation tools are GCC; we use GCC specific extensions
147 if test "$GCC" != "yes"
149 AC_MSG_ERROR([gcc required but not found])
151 if test "$GXX" != "yes"
153 AC_MSG_ERROR([g++ required but not found])
156 dnl Verify that GCC is version 3.0 or higher
157 gccmajor=`$CC --version | head -n 1 | awk '{print $NF;}' | cut -d. -f1`
158 if test "$gccmajor" -lt "3"
160 AC_MSG_ERROR([gcc 3.x required, but you have a lower version])
163 dnl Check for GNU Make. We use its extensions too, so don't build without it
165 if test -z "$_cv_gnu_make_command"
167 AC_MSG_ERROR([GNU Make required but not found])
170 dnl Checks for other tools
175 dnl Checks for tools we can get away with not having:
176 AC_PATH_PROG(DOT,[dot],[true dot])
177 AC_PATH_PROG(ETAGS,[etags],[true etags])
178 dnl Check if we know how to tell etags we are using C++:
179 etags_version=`$ETAGS --version 2>&1`
180 case "$etags_version" in
181 *[Ee]xuberant*) ETAGSFLAGS="--language-force=c++" ;;
182 *GNU\ Emacs*) ETAGSFLAGS="-l c++" ;;
185 AC_SUBST(ETAGSFLAGS,$ETAGSFLAGS)
186 AC_PATH_PROG(PYTHON,[python],[true python])
187 if test "$PYTHON" = "false"
189 AC_MSG_WARN([Python is required for the test suite, but it was not found])
191 AC_PATH_PROG(QMTEST,[qmtest],[true qmtest])
192 if test "$QMTEST" = "false"
194 AC_MSG_WARN([QMTest is required for the test suite, but it was not found])
197 dnl Verify that the version of python available is high enough for qmtest
198 pyversion=`$PYTHON -V 2>&1 | cut -d\ -f2`
199 pymajor=`echo $pyversion | cut -d. -f1`
200 pyminor=`echo $pyversion | cut -d. -f2`
202 if test "$pymajor" -ge "2"
204 if test "$pymajor" -eq "2"
206 if test "$pyminor" -lt "2"
208 AC_MSG_WARN([QMTest requires Python 2.2 or later])
212 AC_MSG_WARN([QMTest requires Python 2.2 or later])
215 dnl Verify that the source directory is valid
216 AC_CONFIG_SRCDIR(["Makefile.config.in"])
218 dnl Checks for libraries:
219 dnl libelf is for sparc only; we can ignore it if we don't have it
220 AC_CHECK_LIB(elf, elf_begin)
222 dnl dlopen() is required for plugin support.
223 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]))
225 dnl mallinfo is optional; the code can compile (minus features) without it
226 AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1],[Define if mallinfo() is available on this platform.]))
228 dnl pthread locking functions are optional - but llvm will not be thread-safe
230 AC_SEARCH_LIBS(pthread_mutex_lock,pthread,HAVE_PTHREAD_MUTEX_LOCK=1,HAVE_PTHREAD_MUTEX_LOCK=0)
231 AC_SUBST(HAVE_PTHREAD_MUTEX_LOCK)
233 dnl Checks for header files.
234 dnl We don't check for ancient stuff or things that are guaranteed to be there
235 dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers.
239 dnl Checks for POSIX and other various system-specific header files
240 AC_CHECK_HEADERS(fcntl.h limits.h sys/time.h unistd.h malloc.h sys/mman.h sys/resource.h dlfcn.h link.h execinfo.h windows.h)
242 dnl Check for things that need to be included in public headers, and so
243 dnl for which we may not have access to a HAVE_* preprocessor #define.
244 dnl (primarily used in DataTypes.h)
245 AC_CHECK_HEADER([sys/types.h],
246 [INCLUDE_SYS_TYPES_H='#include <sys/types.h>'],
247 [INCLUDE_SYS_TYPES_H=''])
248 AC_SUBST(INCLUDE_SYS_TYPES_H)
249 AC_CHECK_HEADER([inttypes.h],
250 [INCLUDE_INTTYPES_H='#include <inttypes.h>'],
251 [INCLUDE_INTTYPES_H=''])
252 AC_SUBST(INCLUDE_INTTYPES_H)
257 AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
258 AC_CHECK_TYPES([uint64_t],,AC_MSG_ERROR([Type uint64_t required but not found]))
262 dnl Check for various C features
265 dnl Check for the endianness of the target
266 AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[big]),AC_SUBST([ENDIAN],[little]))
268 dnl Check for C++ extensions
271 AC_CXX_HAVE_STD_ITERATOR
272 AC_CXX_HAVE_BI_ITERATOR
273 AC_CXX_HAVE_FWD_ITERATOR
277 dnl Checks for library functions.
280 if test "$ac_cv_func_mmap_fixed_mapped" = "no"
282 AC_MSG_WARN([mmap() required but not found])
285 if test "$ac_cv_func_mmap_file" = "no"
287 AC_MSG_WARN([mmap() of files required but not found])
289 AC_HEADER_MMAP_ANONYMOUS
291 AC_CHECK_FUNCS(getcwd gettimeofday strdup strtoq strtoll backtrace isatty mkstemp getrusage)
292 AC_CHECK_FUNC(mprotect,,AC_MSG_ERROR([Function mprotect() required but not found]))
294 dnl Determine if the linker supports the -R option.
297 dnl --enable/--with command-line options:
298 dnl Check whether they want to do an optimized build:
299 AC_ARG_ENABLE(optimized,AC_HELP_STRING([--enable-optimized],[Compile with optimizations enabled (default is NO)]),,enableval=no)
300 if test ${enableval} = "no"
302 AC_SUBST(ENABLE_OPTIMIZED,[[]])
304 AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
307 AC_DEFUN(EXTERNAL_BENCHMARK,
308 [m4_define([allcapsname],translit($1,a-z,A-Z))
310 AC_HELP_STRING([--enable-$1=ARG],
311 [Use $1 as a benchmark (srcs in DIR)]),
312 checkresult=$enableval,
314 AC_MSG_CHECKING([for $1 benchmark sources])
315 case "$checkresult" in
318 if test -d "$defaultdir"
320 AC_SUBST(allcapsname()[_ROOT],[$defaultdir])
321 AC_SUBST([USE_]allcapsname(),[USE_]allcapsname()=1)
322 checkresult="yes, found in $defaultdir"
328 AC_SUBST(allcapsname()[_ROOT],[])
329 AC_SUBST([USE_]allcapsname(),[])
332 *) if test -d "$checkresult"
334 AC_SUBST(allcapsname()[_ROOT],"$checkresult")
335 AC_SUBST([USE_]allcapsname(),[USE_]allcapsname()=1)
336 checkresult="yes, in $checkresult"
338 AC_SUBST(allcapsname()[_ROOT],[])
339 AC_SUBST([USE_]allcapsname(),[])
340 checkresult="no, not found in $checkresult"
344 AC_MSG_RESULT($checkresult)
345 m4_undefine([allcapsname])
348 EXTERNAL_BENCHMARK(spec95,/home/vadve/shared/benchmarks/spec95/benchspec)
349 EXTERNAL_BENCHMARK(spec2000,/home/vadve/shared/benchmarks/speccpu2000/benchspec)
350 EXTERNAL_BENCHMARK(povray,/home/vadve/shared/benchmarks/povray31)
352 dnl Precompiled Bytecode Option
353 AC_ARG_ENABLE(precompiled_bytecode,AC_HELP_STRING([--enable-precompiled_bytecode],[Use pre-compiled bytecode (default is NO)]),,enableval=no)
354 if test ${enableval} = "no"
358 AC_SUBST(UPB,[[USE_PRECOMPILED_BYTECODE=1]])
362 AC_ARG_ENABLE(llc_diffs,AC_HELP_STRING([--enable-llc_diffs],[Enable LLC Diffs when testing (default is YES)]),,enableval=yes)
363 if test ${enableval} = "no"
365 AC_SUBST(DISABLE_LLC_DIFFS,[DISABLE_LLC_DIFFS:=1])
367 AC_SUBST(DISABLE_LLC_DIFFS,[[]])
371 AC_ARG_ENABLE(jit,AC_HELP_STRING([--enable-jit],[Enable Just In Time Compiling (default is YES)]),,enableval=default)
372 if test ${enableval} = "no"
378 AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
381 AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
389 dnl Find the LLVM GCC-based C/C++ front end
390 AC_ARG_WITH(llvmgccdir,AC_HELP_STRING([--with-llvmgccdir],[Location of LLVM GCC front-end]),AC_SUBST(LLVMGCCDIR,[$withval]))
391 AC_MSG_CHECKING([for llvm-gcc])
393 if test -d "$LLVMGCCDIR"
395 if test -x "$LLVMGCCDIR/bin/gcc"
397 LLVM_GCC_CHECK="$LLVMGCCDIR/bin/gcc"
401 AC_MSG_RESULT($LLVM_GCC_CHECK)
402 if test "$LLVM_GCC_CHECK" = "no"
406 AC_MSG_CHECKING([whether llvm-gcc is sane])
408 if test -x "$LLVM_GCC_CHECK"
410 cp /dev/null conftest.c
411 "$LLVM_GCC_CHECK" -S -o - conftest.c | grep implementation > /dev/null 2>&1
417 llvmcc1path=`"$LLVM_GCC_CHECK" --print-prog-name=cc1`
418 AC_SUBST(LLVMCC1,$llvmcc1path)
419 llvmcc1pluspath=`"$LLVM_GCC_CHECK" --print-prog-name=cc1plus`
420 AC_SUBST(LLVMCC1PLUS,$llvmcc1pluspath)
422 AC_MSG_RESULT($LLVM_GCC_SANE)
423 if test "$LLVM_GCC_SANE" = "no"
428 dnl Location of the bytecode repository
429 AC_ARG_WITH(bcrepos,AC_HELP_STRING([--with-bcrepos],[Location of Bytecode Repository]),AC_SUBST(BCR,[$withval]),AC_SUBST(BCR,[/home/vadve/lattner/LLVMPrograms]))
432 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]))
434 dnl Get libtool's idea of what the shared library suffix is.
435 dnl (This is a hack; it relies on undocumented behavior.)
436 AC_MSG_CHECKING([for shared library suffix])
437 eval "SHLIBEXT=$shrext"
438 AC_MSG_RESULT($SHLIBEXT)
439 dnl Propagate it to the Makefiles and config.h (for gccld & bugpoint).
440 AC_SUBST(SHLIBEXT,$SHLIBEXT)
441 AC_DEFINE_UNQUOTED(SHLIBEXT,"$SHLIBEXT",
442 [Extension that shared libraries have, e.g., ".so".])
444 dnl Create the output files
445 AC_OUTPUT(Makefile.config
446 include/Support/DataTypes.h
447 include/Support/ThreadSupport.h
448 include/Support/hash_map
449 include/Support/hash_set
450 include/Support/iterator)
452 dnl Warn loudly if llvm-gcc was not obviously working
453 if test $llvmgccwarn = yes
455 AC_MSG_WARN([***** llvm C/C++ front end was not found, or does not])
456 AC_MSG_WARN([***** appear to be working.])
457 AC_MSG_WARN([***** ])
458 AC_MSG_WARN([***** Please check configure's --with-llvmgccdir option.])
459 AC_MSG_WARN([***** Runtime libraries (in llvm/runtime) will not be built,])
460 AC_MSG_WARN([***** but you should be able to build the llvm tools.])