1 dnl Initialize autoconf
2 AC_INIT([[LLVM]],[[1.4]],[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/llvm/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 header files
30 AC_CONFIG_HEADERS(include/llvm/Config/config.h)
32 dnl Configure other output file
33 AC_CONFIG_FILES(Makefile.config
34 include/llvm/Support/DataTypes.h
35 include/llvm/Support/ThreadSupport.h
36 include/llvm/ADT/hash_map
37 include/llvm/ADT/hash_set
38 include/llvm/ADT/iterator)
40 dnl Do special configuration of Makefiles
41 AC_CONFIG_MAKEFILE(Makefile)
42 AC_CONFIG_MAKEFILE(Makefile.common)
43 AC_CONFIG_MAKEFILE(examples/Makefile)
44 AC_CONFIG_MAKEFILE(lib/Makefile)
45 AC_CONFIG_MAKEFILE(runtime/Makefile)
46 AC_CONFIG_MAKEFILE(test/Makefile)
47 AC_CONFIG_MAKEFILE(test/Makefile.tests)
48 AC_CONFIG_MAKEFILE(test/QMTest/llvm.py)
49 AC_CONFIG_MAKEFILE(test/QMTest/llvmdb.py)
50 AC_CONFIG_MAKEFILE(test/Programs/Makefile)
51 AC_CONFIG_MAKEFILE(test/Programs/Makefile.programs)
52 AC_CONFIG_MAKEFILE(test/Programs/Makefile.tests)
53 AC_CONFIG_MAKEFILE(test/Programs/TEST.aa.Makefile)
54 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.report)
55 AC_CONFIG_MAKEFILE(test/Programs/TEST.aa.report)
56 AC_CONFIG_MAKEFILE(test/Programs/TEST.example.Makefile)
57 AC_CONFIG_MAKEFILE(test/Programs/TEST.nightly.Makefile)
58 AC_CONFIG_MAKEFILE(test/Programs/TEST.buildrepo.Makefile)
59 AC_CONFIG_MAKEFILE(test/Programs/TEST.jit.Makefile)
60 AC_CONFIG_MAKEFILE(test/Programs/TEST.nightly.report)
61 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.Makefile)
62 AC_CONFIG_MAKEFILE(test/Programs/TEST.jit.report)
63 AC_CONFIG_MAKEFILE(test/Programs/TEST.typesafe.Makefile)
64 AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.gnuplot)
65 AC_CONFIG_MAKEFILE(test/Programs/TEST.vtl.Makefile)
66 AC_CONFIG_MAKEFILE(test/Programs/External/Makefile)
67 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile)
68 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile.spec)
69 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile.spec2000)
70 AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile.spec95)
71 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Makefile)
72 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Makefile.multisrc)
73 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/analyzer/test.in)
74 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/distray/Makefile)
75 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/distray/test.in)
76 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/fourinarow/Makefile)
77 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/fourinarow/test.in)
78 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/mason/Makefile)
79 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/mason/test.in)
80 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/neural/Makefile)
81 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/neural/test.in)
82 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pcompress2/Makefile)
83 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pcompress2/test.in)
84 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pifft/Makefile)
85 AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pifft/test.in)
86 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Makefile)
87 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Makefile.singlesrc)
88 AC_CONFIG_MAKEFILE(test/Programs/SingleSource/UnitTests/SetjmpLongjmp/Makefile)
89 AC_CONFIG_MAKEFILE(tools/Makefile)
90 AC_CONFIG_MAKEFILE(utils/Makefile)
91 AC_CONFIG_MAKEFILE(projects/Makefile)
93 dnl Find the install program (needs to be done before canonical stuff)
96 dnl Check which host for which we're compiling. This will tell us which LLVM
97 dnl compiler will be used for compiling SSA into object code.
100 dnl Set the "OS" Makefile variable based on the system we are building on.
101 dnl We will use the build machine information to set some variables.
103 AC_MSG_CHECKING([support for generic build operating system])
110 AC_SUBST(OS,[Cygwin])
111 platform_type="Cygwin"
114 AC_SUBST(OS,[Darwin])
115 platform_type="Darwin"
119 platform_type="FreeBSD"
123 platform_type="Interix"
127 platform_type="Linux"
128 if test -d /home/vadve/lattner/local/x86/llvm-gcc
130 AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/x86/llvm-gcc/])
135 platform_type="SunOS"
136 if test -d /home/vadve/lattner/local/sparc/llvm-gcc
138 AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/sparc/llvm-gcc/])
143 platform_type="Win32"
146 AC_SUBST(OS,[Unknown])
147 platform_type="Unknown"
151 dnl Make sure we aren't attempting to configure for an unknown system
152 if test "$platform_type" = "Unknown" ; then
153 AC_MSG_ERROR([Platform is unknown, configure can't continue])
156 dnl Make a link from lib/System/platform to lib/System/$platform_type
157 dnl This helps the #inclusion of the system specific include files
158 dnl for the operating system abstraction library
159 AC_CONFIG_LINKS(lib/System/platform:lib/System/$platform_type)
161 AC_MSG_RESULT($platform_type)
163 AC_MSG_CHECKING(target architecture)
164 dnl If we are targetting a Sparc machine running Solaris, pretend that it is
165 dnl V9, since that is all that we support at the moment, and autoconf will only
166 dnl tell us we're a sparc.
168 sparc*-*-solaris*) AC_SUBST(target,[[sparcv9-sun-solaris2.8]])
172 dnl Determine what our target architecture is and configure accordingly.
173 dnl This will allow Makefiles to make a distinction between the hardware and
182 AC_SUBST(ARCH,[Sparc])
186 AC_SUBST(ARCH,[PowerPC])
190 AC_SUBST(ARCH,[Unknown])
196 dnl Check for compilation tools
201 dnl Ensure that compilation tools are GCC; we use GCC specific extensions
202 if test "$GCC" != "yes"
204 AC_MSG_ERROR([gcc required but not found])
206 if test "$GXX" != "yes"
208 AC_MSG_ERROR([g++ required but not found])
211 dnl Verify that GCC is version 3.0 or higher
212 gccmajor=`$CC --version | head -n 1 | awk '{print $NF;}' | cut -d. -f1`
213 if test "$gccmajor" -lt "3"
215 AC_MSG_ERROR([gcc 3.x required, but you have a lower version])
218 dnl Check for GNU Make. We use its extensions too, so don't build without it
220 if test -z "$_cv_gnu_make_command"
222 AC_MSG_ERROR([GNU Make required but not found])
225 dnl Checks for other tools
230 dnl Checks for tools we can get away with not having:
231 AC_PATH_PROG(DOT,[dot],[true dot])
232 AC_PATH_PROG(ETAGS,[etags],[true etags])
233 dnl Check if we know how to tell etags we are using C++:
234 etags_version=`$ETAGS --version 2>&1`
235 case "$etags_version" in
236 *[Ee]xuberant*) ETAGSFLAGS="--language-force=c++" ;;
237 *GNU\ Emacs*) ETAGSFLAGS="-l c++" ;;
240 AC_SUBST(ETAGSFLAGS,$ETAGSFLAGS)
241 AC_PATH_PROG(PYTHON,[python],[true python])
242 if test "$PYTHON" = "false"
244 AC_MSG_WARN([Python is required for the test suite, but it was not found])
246 AC_PATH_PROG(QMTEST,[qmtest],[true qmtest])
247 if test "$QMTEST" = "false"
249 AC_MSG_WARN([QMTest is required for the test suite, but it was not found])
252 dnl Verify that the version of python available is high enough for qmtest
253 pyversion=`$PYTHON -V 2>&1 | cut -d\ -f2`
254 pymajor=`echo $pyversion | cut -d. -f1`
255 pyminor=`echo $pyversion | cut -d. -f2`
257 if test "$pymajor" -ge "2"
259 if test "$pymajor" -eq "2"
261 if test "$pyminor" -lt "2"
263 AC_MSG_WARN([QMTest requires Python 2.2 or later])
267 AC_MSG_WARN([QMTest requires Python 2.2 or later])
270 dnl Verify that the source directory is valid
271 AC_CONFIG_SRCDIR(["Makefile.config.in"])
273 dnl Checks for libraries:
274 dnl libelf is for sparc only; we can ignore it if we don't have it
275 AC_CHECK_LIB(elf, elf_begin)
277 dnl dlopen() is required for plugin support.
278 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]))
280 dnl mallinfo is optional; the code can compile (minus features) without it
281 AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1],[Define if mallinfo() is available on this platform.]))
283 dnl pthread locking functions are optional - but llvm will not be thread-safe
285 AC_SEARCH_LIBS(pthread_mutex_lock,pthread,HAVE_PTHREAD_MUTEX_LOCK=1,HAVE_PTHREAD_MUTEX_LOCK=0)
286 AC_SUBST(HAVE_PTHREAD_MUTEX_LOCK)
288 dnl Checks for header files.
289 dnl We don't check for ancient stuff or things that are guaranteed to be there
290 dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers.
294 dnl Checks for POSIX and other various system-specific header files
295 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)
297 dnl Check for things that need to be included in public headers, and so
298 dnl for which we may not have access to a HAVE_* preprocessor #define.
299 dnl (primarily used in DataTypes.h)
300 AC_CHECK_HEADER([sys/types.h],
301 [INCLUDE_SYS_TYPES_H='#include <sys/types.h>'],
302 [INCLUDE_SYS_TYPES_H=''])
303 AC_SUBST(INCLUDE_SYS_TYPES_H)
304 AC_CHECK_HEADER([inttypes.h],
305 [INCLUDE_INTTYPES_H='#include <inttypes.h>'],
306 [INCLUDE_INTTYPES_H=''])
307 AC_SUBST(INCLUDE_INTTYPES_H)
308 AC_CHECK_HEADER([stdint.h],
309 [INCLUDE_STDINT_H='#include <stdint.h>'],
310 [INCLUDE_STDINT_H=''])
311 AC_SUBST(INCLUDE_STDINT_H)
317 AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
318 AC_CHECK_TYPES([uint64_t],,AC_MSG_ERROR([Type uint64_t required but not found]))
319 AC_CHECK_TYPES([u_int64_t])
323 dnl Check for various C features
326 dnl Check for the endianness of the target
327 AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[big]),AC_SUBST([ENDIAN],[little]))
329 dnl Check for C++ extensions
332 AC_CXX_HAVE_STD_ITERATOR
333 AC_CXX_HAVE_BI_ITERATOR
334 AC_CXX_HAVE_FWD_ITERATOR
339 dnl Checks for library functions.
342 if test "$ac_cv_func_mmap_fixed_mapped" = "no"
344 AC_MSG_WARN([mmap() required but not found])
347 if test "$ac_cv_func_mmap_file" = "no"
349 AC_MSG_WARN([mmap() of files required but not found])
351 AC_HEADER_MMAP_ANONYMOUS
353 AC_CHECK_FUNCS(getcwd gettimeofday strdup strtoq strtoll backtrace isatty mkstemp getrusage)
354 AC_CHECK_FUNC(mprotect,,AC_MSG_ERROR([Function mprotect() required but not found]))
356 dnl Determine if the linker supports the -R option.
359 dnl --enable/--with command-line options:
360 dnl Check whether they want to do an optimized build:
361 AC_ARG_ENABLE(optimized,AC_HELP_STRING([--enable-optimized],[Compile with optimizations enabled (default is NO)]),,enableval=no)
362 if test ${enableval} = "no"
364 AC_SUBST(ENABLE_OPTIMIZED,[[]])
366 AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
369 AC_DEFUN(EXTERNAL_BENCHMARK,
370 [m4_define([allcapsname],translit($1,a-z,A-Z))
372 AC_HELP_STRING([--enable-$1=ARG],
373 [Use $1 as a benchmark (srcs in DIR)]),
374 checkresult=$enableval,
376 AC_MSG_CHECKING([for $1 benchmark sources])
377 case "$checkresult" in
380 if test -d "$defaultdir"
382 AC_SUBST(allcapsname()[_ROOT],[$defaultdir])
383 AC_SUBST([USE_]allcapsname(),[USE_]allcapsname()=1)
384 checkresult="yes, found in $defaultdir"
390 AC_SUBST(allcapsname()[_ROOT],[])
391 AC_SUBST([USE_]allcapsname(),[])
394 *) if test -d "$checkresult"
396 AC_SUBST(allcapsname()[_ROOT],"$checkresult")
397 AC_SUBST([USE_]allcapsname(),[USE_]allcapsname()=1)
398 checkresult="yes, in $checkresult"
400 AC_SUBST(allcapsname()[_ROOT],[])
401 AC_SUBST([USE_]allcapsname(),[])
402 checkresult="no, not found in $checkresult"
406 AC_MSG_RESULT($checkresult)
407 m4_undefine([allcapsname])
410 EXTERNAL_BENCHMARK(spec95,/home/vadve/shared/benchmarks/spec95/benchspec)
411 EXTERNAL_BENCHMARK(spec2000,/home/vadve/shared/benchmarks/speccpu2000/benchspec)
412 EXTERNAL_BENCHMARK(povray,/home/vadve/shared/benchmarks/povray31)
414 dnl Precompiled Bytecode Option
415 AC_ARG_ENABLE(precompiled_bytecode,AC_HELP_STRING([--enable-precompiled_bytecode],[Use pre-compiled bytecode (default is NO)]),,enableval=no)
416 if test ${enableval} = "no"
420 AC_SUBST(UPB,[[USE_PRECOMPILED_BYTECODE=1]])
424 AC_ARG_ENABLE(llc_diffs,AC_HELP_STRING([--enable-llc_diffs],[Enable LLC Diffs when testing (default is YES)]),,enableval=yes)
425 if test ${enableval} = "no"
427 AC_SUBST(DISABLE_LLC_DIFFS,[DISABLE_LLC_DIFFS:=1])
429 AC_SUBST(DISABLE_LLC_DIFFS,[[]])
433 AC_ARG_ENABLE(jit,AC_HELP_STRING([--enable-jit],[Enable Just In Time Compiling (default is YES)]),,enableval=default)
434 if test ${enableval} = "no"
440 AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
443 AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
451 dnl Find the LLVM GCC-based C/C++ front end
452 AC_ARG_WITH(llvmgccdir,AC_HELP_STRING([--with-llvmgccdir],[Location of LLVM GCC front-end]),AC_SUBST(LLVMGCCDIR,[$withval]))
453 AC_MSG_CHECKING([for llvm-gcc])
455 if test -d "$LLVMGCCDIR"
457 if test -x "$LLVMGCCDIR/bin/gcc"
459 LLVM_GCC_CHECK="$LLVMGCCDIR/bin/gcc"
463 AC_MSG_RESULT($LLVM_GCC_CHECK)
464 if test "$LLVM_GCC_CHECK" = "no"
468 AC_MSG_CHECKING([whether llvm-gcc is sane])
470 if test -x "$LLVM_GCC_CHECK"
472 cp /dev/null conftest.c
473 "$LLVM_GCC_CHECK" -S -o - conftest.c | grep implementation > /dev/null 2>&1
479 llvmcc1path=`"$LLVM_GCC_CHECK" --print-prog-name=cc1`
480 AC_SUBST(LLVMCC1,$llvmcc1path)
481 llvmcc1pluspath=`"$LLVM_GCC_CHECK" --print-prog-name=cc1plus`
482 AC_SUBST(LLVMCC1PLUS,$llvmcc1pluspath)
484 AC_MSG_RESULT($LLVM_GCC_SANE)
485 if test "$LLVM_GCC_SANE" = "no"
490 dnl Location of the bytecode repository
491 AC_ARG_WITH(bcrepos,AC_HELP_STRING([--with-bcrepos],[Location of Bytecode Repository]),AC_SUBST(BCR,[$withval]),AC_SUBST(BCR,[/home/vadve/lattner/LLVMPrograms]))
494 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]))
496 dnl Get libtool's idea of what the shared library suffix is.
497 dnl (This is a hack; it relies on undocumented behavior.)
498 AC_MSG_CHECKING([for shared library suffix])
499 eval "SHLIBEXT=$shrext"
500 AC_MSG_RESULT($SHLIBEXT)
501 dnl Propagate it to the Makefiles and config.h (for gccld & bugpoint).
502 AC_SUBST(SHLIBEXT,$SHLIBEXT)
503 AC_DEFINE_UNQUOTED(SHLIBEXT,"$SHLIBEXT",
504 [Extension that shared libraries have, e.g., ".so".])
506 # Translate the various configuration directories and other basic
507 # information into substitutions that will end up in config.h.in so
508 # that these configured values can be hard-wired into a program.
509 eval LLVM_PREFIX="${prefix}";
510 eval LLVM_BINDIR="${prefix}/bin";
511 eval LLVM_LIBDIR="${prefix}/lib";
512 eval LLVM_DATADIR="${prefix}/data";
513 eval LLVM_DOCSDIR="${prefix}/docs";
514 eval LLVM_ETCDIR="${prefix}/etc";
515 eval LLVM_INCLUDEDIR="${prefix}/include";
516 eval LLVM_INFODIR="${prefix}/info";
517 eval LLVM_MANDIR="${prefix}/man";
518 LLVM_CONFIGTIME=`date`
519 AC_SUBST(LLVM_PREFIX)
520 AC_SUBST(LLVM_BINDIR)
521 AC_SUBST(LLVM_LIBDIR)
522 AC_SUBST(LLVM_DATADIR)
523 AC_SUBST(LLVM_DOCSDIR)
524 AC_SUBST(LLVM_ETCDIR)
525 AC_SUBST(LLVM_INCLUDEDIR)
526 AC_SUBST(LLVM_INFODIR)
527 AC_SUBST(LLVM_MANDIR)
528 AC_SUBST(LLVM_CONFIGTIME)
529 AC_DEFINE_UNQUOTED(LLVM_PREFIX,"$LLVM_PREFIX", [Installation prefix directory])
530 AC_DEFINE_UNQUOTED(LLVM_BINDIR, "$LLVM_BINDIR", [Installation directory for binary executables])
531 AC_DEFINE_UNQUOTED(LLVM_LIBDIR, "$LLVM_LIBDIR", [Installation directory for libraries])
532 AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DATADIR", [Installation directory for data files])
533 AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DOCSDIR", [Installation directory for documentation])
534 AC_DEFINE_UNQUOTED(LLVM_ETCDIR, "$LLVM_ETCDIR", [Installation directory for config files])
535 AC_DEFINE_UNQUOTED(LLVM_INCLUDEDIR, "$LLVM_INCLUDEDIR", [Installation directory for include files])
536 AC_DEFINE_UNQUOTED(LLVM_INFODIR, "$LLVM_INFODIR", [Installation directory for .info files])
537 AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR", [Installation directory for man pages])
538 AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME", [Time at which LLVM was configured])
540 dnl Create the output files
543 dnl Warn loudly if llvm-gcc was not obviously working
544 if test $llvmgccwarn = yes
546 AC_MSG_WARN([***** llvm C/C++ front end was not found, or does not])
547 AC_MSG_WARN([***** appear to be working.])
548 AC_MSG_WARN([***** ])
549 AC_MSG_WARN([***** Please check configure's --with-llvmgccdir option.])
550 AC_MSG_WARN([***** Runtime libraries (in llvm/runtime) will not be built,])
551 AC_MSG_WARN([***** but you should be able to build the llvm tools.])