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/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/Config/config.h)
32 dnl Configure other output file
33 AC_CONFIG_FILES(Makefile.config
34 include/Support/DataTypes.h
35 include/Support/ThreadSupport.h
36 include/Support/hash_map
37 include/Support/hash_set
38 include/Support/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.
105 platform_type="Linux"
106 if test -d /home/vadve/lattner/local/x86/llvm-gcc
108 AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/x86/llvm-gcc/])
113 platform_type="SunOS"
114 if test -d /home/vadve/lattner/local/sparc/llvm-gcc
116 AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/sparc/llvm-gcc/])
120 AC_SUBST(OS,[Cygwin])
121 platform_type="Cygwin"
124 AC_SUBST(OS,[Darwin])
125 platform_type="Darwin"
133 platform_type="SunOS"
137 platform_type="Win32"
140 AC_SUBST(OS,[Unknown])
141 platform_type="Unknown"
145 dnl Make sure we aren't attempting to configure for an unknown system
146 if test $platform_type -eq "Unknown" ; then
147 AC_MSG_ERROR([Platform is unknown, configure can't continue])
150 dnl Make a link from lib/System/platform to lib/System/$platform_type
151 dnl This helps the #inclusion of the system specific include files
152 dnl for the operating system abstraction library
153 AC_CONFIG_LINKS(lib/System/platform:lib/System/$platform_type)
155 dnl If we are targetting a Sparc machine running Solaris, pretend that it is
156 dnl V9, since that is all that we support at the moment, and autoconf will only
157 dnl tell us we're a sparc.
159 sparc*-*-solaris*) AC_SUBST(target,[[sparcv9-sun-solaris2.8]])
163 dnl Determine what our target architecture is and configure accordingly.
164 dnl This will allow Makefiles to make a distinction between the hardware and
167 i*86-*) AC_SUBST(ARCH,[x86])
169 sparc*-*) AC_SUBST(ARCH,[Sparc])
171 powerpc*-*) AC_SUBST(ARCH,[PowerPC])
173 *) AC_SUBST(ARCH,[Unknown])
177 dnl Check for compilation tools
182 dnl Ensure that compilation tools are GCC; we use GCC specific extensions
183 if test "$GCC" != "yes"
185 AC_MSG_ERROR([gcc required but not found])
187 if test "$GXX" != "yes"
189 AC_MSG_ERROR([g++ required but not found])
192 dnl Verify that GCC is version 3.0 or higher
193 gccmajor=`$CC --version | head -n 1 | awk '{print $NF;}' | cut -d. -f1`
194 if test "$gccmajor" -lt "3"
196 AC_MSG_ERROR([gcc 3.x required, but you have a lower version])
199 dnl Check for GNU Make. We use its extensions too, so don't build without it
201 if test -z "$_cv_gnu_make_command"
203 AC_MSG_ERROR([GNU Make required but not found])
206 dnl Checks for other tools
211 dnl Checks for tools we can get away with not having:
212 AC_PATH_PROG(DOT,[dot],[true dot])
213 AC_PATH_PROG(ETAGS,[etags],[true etags])
214 dnl Check if we know how to tell etags we are using C++:
215 etags_version=`$ETAGS --version 2>&1`
216 case "$etags_version" in
217 *[Ee]xuberant*) ETAGSFLAGS="--language-force=c++" ;;
218 *GNU\ Emacs*) ETAGSFLAGS="-l c++" ;;
221 AC_SUBST(ETAGSFLAGS,$ETAGSFLAGS)
222 AC_PATH_PROG(PYTHON,[python],[true python])
223 if test "$PYTHON" = "false"
225 AC_MSG_WARN([Python is required for the test suite, but it was not found])
227 AC_PATH_PROG(QMTEST,[qmtest],[true qmtest])
228 if test "$QMTEST" = "false"
230 AC_MSG_WARN([QMTest is required for the test suite, but it was not found])
233 dnl Verify that the version of python available is high enough for qmtest
234 pyversion=`$PYTHON -V 2>&1 | cut -d\ -f2`
235 pymajor=`echo $pyversion | cut -d. -f1`
236 pyminor=`echo $pyversion | cut -d. -f2`
238 if test "$pymajor" -ge "2"
240 if test "$pymajor" -eq "2"
242 if test "$pyminor" -lt "2"
244 AC_MSG_WARN([QMTest requires Python 2.2 or later])
248 AC_MSG_WARN([QMTest requires Python 2.2 or later])
251 dnl Verify that the source directory is valid
252 AC_CONFIG_SRCDIR(["Makefile.config.in"])
254 dnl Checks for libraries:
255 dnl libelf is for sparc only; we can ignore it if we don't have it
256 AC_CHECK_LIB(elf, elf_begin)
258 dnl dlopen() is required for plugin support.
259 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]))
261 dnl mallinfo is optional; the code can compile (minus features) without it
262 AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1],[Define if mallinfo() is available on this platform.]))
264 dnl pthread locking functions are optional - but llvm will not be thread-safe
266 AC_SEARCH_LIBS(pthread_mutex_lock,pthread,HAVE_PTHREAD_MUTEX_LOCK=1,HAVE_PTHREAD_MUTEX_LOCK=0)
267 AC_SUBST(HAVE_PTHREAD_MUTEX_LOCK)
269 dnl Checks for header files.
270 dnl We don't check for ancient stuff or things that are guaranteed to be there
271 dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers.
275 dnl Checks for POSIX and other various system-specific header files
276 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)
278 dnl Check for things that need to be included in public headers, and so
279 dnl for which we may not have access to a HAVE_* preprocessor #define.
280 dnl (primarily used in DataTypes.h)
281 AC_CHECK_HEADER([sys/types.h],
282 [INCLUDE_SYS_TYPES_H='#include <sys/types.h>'],
283 [INCLUDE_SYS_TYPES_H=''])
284 AC_SUBST(INCLUDE_SYS_TYPES_H)
285 AC_CHECK_HEADER([inttypes.h],
286 [INCLUDE_INTTYPES_H='#include <inttypes.h>'],
287 [INCLUDE_INTTYPES_H=''])
288 AC_SUBST(INCLUDE_INTTYPES_H)
289 AC_CHECK_HEADER([stdint.h],
290 [INCLUDE_STDINT_H='#include <stdint.h>'],
291 [INCLUDE_STDINT_H=''])
292 AC_SUBST(INCLUDE_STDINT_H)
298 AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
299 AC_CHECK_TYPES([uint64_t],,AC_MSG_ERROR([Type uint64_t required but not found]))
303 dnl Check for various C features
306 dnl Check for the endianness of the target
307 AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[big]),AC_SUBST([ENDIAN],[little]))
309 dnl Check for C++ extensions
312 AC_CXX_HAVE_STD_ITERATOR
313 AC_CXX_HAVE_BI_ITERATOR
314 AC_CXX_HAVE_FWD_ITERATOR
319 dnl Checks for library functions.
322 if test "$ac_cv_func_mmap_fixed_mapped" = "no"
324 AC_MSG_WARN([mmap() required but not found])
327 if test "$ac_cv_func_mmap_file" = "no"
329 AC_MSG_WARN([mmap() of files required but not found])
331 AC_HEADER_MMAP_ANONYMOUS
333 AC_CHECK_FUNCS(getcwd gettimeofday strdup strtoq strtoll backtrace isatty mkstemp getrusage)
334 AC_CHECK_FUNC(mprotect,,AC_MSG_ERROR([Function mprotect() required but not found]))
336 dnl Determine if the linker supports the -R option.
339 dnl --enable/--with command-line options:
340 dnl Check whether they want to do an optimized build:
341 AC_ARG_ENABLE(optimized,AC_HELP_STRING([--enable-optimized],[Compile with optimizations enabled (default is NO)]),,enableval=no)
342 if test ${enableval} = "no"
344 AC_SUBST(ENABLE_OPTIMIZED,[[]])
346 AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
349 AC_DEFUN(EXTERNAL_BENCHMARK,
350 [m4_define([allcapsname],translit($1,a-z,A-Z))
352 AC_HELP_STRING([--enable-$1=ARG],
353 [Use $1 as a benchmark (srcs in DIR)]),
354 checkresult=$enableval,
356 AC_MSG_CHECKING([for $1 benchmark sources])
357 case "$checkresult" in
360 if test -d "$defaultdir"
362 AC_SUBST(allcapsname()[_ROOT],[$defaultdir])
363 AC_SUBST([USE_]allcapsname(),[USE_]allcapsname()=1)
364 checkresult="yes, found in $defaultdir"
370 AC_SUBST(allcapsname()[_ROOT],[])
371 AC_SUBST([USE_]allcapsname(),[])
374 *) if test -d "$checkresult"
376 AC_SUBST(allcapsname()[_ROOT],"$checkresult")
377 AC_SUBST([USE_]allcapsname(),[USE_]allcapsname()=1)
378 checkresult="yes, in $checkresult"
380 AC_SUBST(allcapsname()[_ROOT],[])
381 AC_SUBST([USE_]allcapsname(),[])
382 checkresult="no, not found in $checkresult"
386 AC_MSG_RESULT($checkresult)
387 m4_undefine([allcapsname])
390 EXTERNAL_BENCHMARK(spec95,/home/vadve/shared/benchmarks/spec95/benchspec)
391 EXTERNAL_BENCHMARK(spec2000,/home/vadve/shared/benchmarks/speccpu2000/benchspec)
392 EXTERNAL_BENCHMARK(povray,/home/vadve/shared/benchmarks/povray31)
394 dnl Precompiled Bytecode Option
395 AC_ARG_ENABLE(precompiled_bytecode,AC_HELP_STRING([--enable-precompiled_bytecode],[Use pre-compiled bytecode (default is NO)]),,enableval=no)
396 if test ${enableval} = "no"
400 AC_SUBST(UPB,[[USE_PRECOMPILED_BYTECODE=1]])
404 AC_ARG_ENABLE(llc_diffs,AC_HELP_STRING([--enable-llc_diffs],[Enable LLC Diffs when testing (default is YES)]),,enableval=yes)
405 if test ${enableval} = "no"
407 AC_SUBST(DISABLE_LLC_DIFFS,[DISABLE_LLC_DIFFS:=1])
409 AC_SUBST(DISABLE_LLC_DIFFS,[[]])
413 AC_ARG_ENABLE(jit,AC_HELP_STRING([--enable-jit],[Enable Just In Time Compiling (default is YES)]),,enableval=default)
414 if test ${enableval} = "no"
420 AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
423 AC_SUBST(JIT,[[TARGET_HAS_JIT=1]])
431 dnl Find the LLVM GCC-based C/C++ front end
432 AC_ARG_WITH(llvmgccdir,AC_HELP_STRING([--with-llvmgccdir],[Location of LLVM GCC front-end]),AC_SUBST(LLVMGCCDIR,[$withval]))
433 AC_MSG_CHECKING([for llvm-gcc])
435 if test -d "$LLVMGCCDIR"
437 if test -x "$LLVMGCCDIR/bin/gcc"
439 LLVM_GCC_CHECK="$LLVMGCCDIR/bin/gcc"
443 AC_MSG_RESULT($LLVM_GCC_CHECK)
444 if test "$LLVM_GCC_CHECK" = "no"
448 AC_MSG_CHECKING([whether llvm-gcc is sane])
450 if test -x "$LLVM_GCC_CHECK"
452 cp /dev/null conftest.c
453 "$LLVM_GCC_CHECK" -S -o - conftest.c | grep implementation > /dev/null 2>&1
459 llvmcc1path=`"$LLVM_GCC_CHECK" --print-prog-name=cc1`
460 AC_SUBST(LLVMCC1,$llvmcc1path)
461 llvmcc1pluspath=`"$LLVM_GCC_CHECK" --print-prog-name=cc1plus`
462 AC_SUBST(LLVMCC1PLUS,$llvmcc1pluspath)
464 AC_MSG_RESULT($LLVM_GCC_SANE)
465 if test "$LLVM_GCC_SANE" = "no"
470 dnl Location of the bytecode repository
471 AC_ARG_WITH(bcrepos,AC_HELP_STRING([--with-bcrepos],[Location of Bytecode Repository]),AC_SUBST(BCR,[$withval]),AC_SUBST(BCR,[/home/vadve/lattner/LLVMPrograms]))
474 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]))
476 dnl Get libtool's idea of what the shared library suffix is.
477 dnl (This is a hack; it relies on undocumented behavior.)
478 AC_MSG_CHECKING([for shared library suffix])
479 eval "SHLIBEXT=$shrext"
480 AC_MSG_RESULT($SHLIBEXT)
481 dnl Propagate it to the Makefiles and config.h (for gccld & bugpoint).
482 AC_SUBST(SHLIBEXT,$SHLIBEXT)
483 AC_DEFINE_UNQUOTED(SHLIBEXT,"$SHLIBEXT",
484 [Extension that shared libraries have, e.g., ".so".])
486 # Translate the various configuration directories and other basic
487 # information into substitutions that will end up in config.h.in so
488 # that these configured values can be hard-wired into a program.
489 eval LLVM_PREFIX="${prefix}";
490 eval LLVM_BINDIR="${prefix}/bin";
491 eval LLVM_LIBDIR="${prefix}/lib";
492 eval LLVM_DATADIR="${prefix}/data";
493 eval LLVM_DOCSDIR="${prefix}/docs";
494 eval LLVM_ETCDIR="${prefix}/etc";
495 eval LLVM_INCLUDEDIR="${prefix}/include";
496 eval LLVM_INFODIR="${prefix}/info";
497 eval LLVM_MANDIR="${prefix}/man";
498 LLVM_CONFIGTIME=`date`
499 AC_SUBST(LLVM_PREFIX)
500 AC_SUBST(LLVM_BINDIR)
501 AC_SUBST(LLVM_LIBDIR)
502 AC_SUBST(LLVM_DATADIR)
503 AC_SUBST(LLVM_DOCSDIR)
504 AC_SUBST(LLVM_ETCDIR)
505 AC_SUBST(LLVM_INCLUDEDIR)
506 AC_SUBST(LLVM_INFODIR)
507 AC_SUBST(LLVM_MANDIR)
508 AC_SUBST(LLVM_CONFIGTIME)
509 AC_DEFINE_UNQUOTED(LLVM_PREFIX,"$LLVM_PREFIX", [Installation prefix directory])
510 AC_DEFINE_UNQUOTED(LLVM_BINDIR, "$LLVM_BINDIR", [Installation directory for binary executables])
511 AC_DEFINE_UNQUOTED(LLVM_LIBDIR, "$LLVM_LIBDIR", [Installation directory for libraries])
512 AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DATADIR", [Installation directory for data files])
513 AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DOCSDIR", [Installation directory for documentation])
514 AC_DEFINE_UNQUOTED(LLVM_ETCDIR, "$LLVM_ETCDIR", [Installation directory for config files])
515 AC_DEFINE_UNQUOTED(LLVM_INCLUDEDIR, "$LLVM_INCLUDEDIR", [Installation directory for include files])
516 AC_DEFINE_UNQUOTED(LLVM_INFODIR, "$LLVM_INFODIR", [Installation directory for .info files])
517 AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR", [Installation directory for man pages])
518 AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME", [Time at which LLVM was configured])
520 dnl Create the output files
523 dnl Warn loudly if llvm-gcc was not obviously working
524 if test $llvmgccwarn = yes
526 AC_MSG_WARN([***** llvm C/C++ front end was not found, or does not])
527 AC_MSG_WARN([***** appear to be working.])
528 AC_MSG_WARN([***** ])
529 AC_MSG_WARN([***** Please check configure's --with-llvmgccdir option.])
530 AC_MSG_WARN([***** Runtime libraries (in llvm/runtime) will not be built,])
531 AC_MSG_WARN([***** but you should be able to build the llvm tools.])