X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=autoconf%2Fconfigure.ac;h=4ca4296cc6e2ed53fd9c1c3c2a21961ce0309d97;hb=19ee52a3d7694fcdc3e8baec01dfde6d22c59900;hp=e0012759b2019403bf1d386a54f611be21fd87b4;hpb=b607cc8871bcae21d94775a65c285fe4ac479c75;p=oota-llvm.git diff --git a/autoconf/configure.ac b/autoconf/configure.ac index e0012759b20..4ca4296cc6e 100644 --- a/autoconf/configure.ac +++ b/autoconf/configure.ac @@ -1,5 +1,5 @@ dnl Initialize autoconf -AC_INIT([[[LLVM]]],[[[1.1]]],[llvmbugs@cs.uiuc.edu]) +AC_INIT([[LLVM]],[[1.4]],[llvmbugs@cs.uiuc.edu]) dnl Place all of the extra autoconf files into the config subdirectory AC_CONFIG_AUX_DIR([autoconf]) @@ -8,7 +8,7 @@ dnl Quit if the source directory has already been configured. dnl NOTE: This relies upon undocumented autoconf behavior. if test ${srcdir} != "." then - if test -f ${srcdir}/include/Config/config.h + if test -f ${srcdir}/include/llvm/Config/config.h then AC_MSG_ERROR([Already configured in ${srcdir}]) fi @@ -17,62 +17,43 @@ fi dnl Configure all of the projects present in our source tree. for i in `ls ${srcdir}/projects` do - if test ${i} != "CVS" - then - if test -f ${srcdir}/projects/${i}/configure - then - AC_CONFIG_SUBDIRS(projects/${i}) - fi + if test -d ${srcdir}/projects/${i} ; then + case ${i} in + "CVS") ;; + "sample") AC_CONFIG_SUBDIRS([projects/sample]) ;; + "Stacker") AC_CONFIG_SUBDIRS([projects/Stacker]) ;; + "llvm-test") AC_CONFIG_SUBDIRS([projects/llvm-test]) ;; + "llvm-reopt") AC_CONFIG_SUBDIRS([projects/llvm-reopt]);; + "llvm-gcc") AC_CONFIG_SUBDIRS([projects/llvm-gcc]) ;; + "llvm-java") AC_CONFIG_SUBDIRS([projects/llvm-java]) ;; + "llvm-tv") AC_CONFIG_SUBDIRS([projects/llvm-tv]) ;; + "llvm-fefw") AC_CONFIG_SUBDIRS([projects/llvm-fefw]) ;; + *) AC_CONFIG_SUBDIRS(${i}) ;; + esac fi done -dnl Configure a header file -AC_CONFIG_HEADERS(include/Config/config.h) +dnl Configure header files +AC_CONFIG_HEADERS(include/llvm/Config/config.h) + +dnl Configure other output file +AC_CONFIG_FILES(Makefile.config + include/llvm/Support/DataTypes.h + include/llvm/Support/ThreadSupport.h + include/llvm/ADT/hash_map + include/llvm/ADT/hash_set + include/llvm/ADT/iterator) + +dnl Do special configuration of Makefiles AC_CONFIG_MAKEFILE(Makefile) AC_CONFIG_MAKEFILE(Makefile.common) +AC_CONFIG_MAKEFILE(examples/Makefile) AC_CONFIG_MAKEFILE(lib/Makefile) AC_CONFIG_MAKEFILE(runtime/Makefile) AC_CONFIG_MAKEFILE(test/Makefile) AC_CONFIG_MAKEFILE(test/Makefile.tests) AC_CONFIG_MAKEFILE(test/QMTest/llvm.py) AC_CONFIG_MAKEFILE(test/QMTest/llvmdb.py) -AC_CONFIG_MAKEFILE(test/Programs/Makefile) -AC_CONFIG_MAKEFILE(test/Programs/Makefile.programs) -AC_CONFIG_MAKEFILE(test/Programs/TEST.aa.Makefile) -AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.report) -AC_CONFIG_MAKEFILE(test/Programs/TEST.micro.report) -AC_CONFIG_MAKEFILE(test/Programs/TEST.aa.report) -AC_CONFIG_MAKEFILE(test/Programs/TEST.example.Makefile) -AC_CONFIG_MAKEFILE(test/Programs/TEST.nightly.Makefile) -AC_CONFIG_MAKEFILE(test/Programs/TEST.buildrepo.Makefile) -AC_CONFIG_MAKEFILE(test/Programs/TEST.jit.Makefile) -AC_CONFIG_MAKEFILE(test/Programs/TEST.nightly.report) -AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.Makefile) -AC_CONFIG_MAKEFILE(test/Programs/TEST.jit.report) -AC_CONFIG_MAKEFILE(test/Programs/TEST.typesafe.Makefile) -AC_CONFIG_MAKEFILE(test/Programs/TEST.dsgraph.gnuplot) -AC_CONFIG_MAKEFILE(test/Programs/TEST.micro.Makefile) -AC_CONFIG_MAKEFILE(test/Programs/External/Makefile) -AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile) -AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile.spec) -AC_CONFIG_MAKEFILE(test/Programs/External/SPEC/Makefile.spec95) -AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Makefile) -AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Makefile.multisrc) -AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/analyzer/test.in) -AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/distray/Makefile) -AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/distray/test.in) -AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/fourinarow/Makefile) -AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/fourinarow/test.in) -AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/mason/Makefile) -AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/mason/test.in) -AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/neural/Makefile) -AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/neural/test.in) -AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pcompress2/Makefile) -AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pcompress2/test.in) -AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pifft/Makefile) -AC_CONFIG_MAKEFILE(test/Programs/MultiSource/Benchmarks/FreeBench/pifft/test.in) -AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Makefile) -AC_CONFIG_MAKEFILE(test/Programs/SingleSource/Makefile.singlesrc) AC_CONFIG_MAKEFILE(tools/Makefile) AC_CONFIG_MAKEFILE(utils/Makefile) AC_CONFIG_MAKEFILE(projects/Makefile) @@ -86,31 +67,68 @@ AC_CANONICAL_TARGET dnl Set the "OS" Makefile variable based on the system we are building on. dnl We will use the build machine information to set some variables. + +AC_MSG_CHECKING([support for generic build operating system]) case $build in + *-*-aix*) + AC_SUBST(OS,[AIX]) + platform_type="AIX" + ;; + *-*-cygwin*) + AC_SUBST(OS,[Cygwin]) + platform_type="Cygwin" + ;; + *-*-darwin*) + AC_SUBST(OS,[Darwin]) + platform_type="Darwin" + ;; + *-*-freebsd*) + AC_SUBST(OS,[Linux]) + platform_type="FreeBSD" + ;; + *-*-interix*) + AC_SUBST(OS,[SunOS]) + platform_type="Interix" + ;; *-*-linux*) AC_SUBST(OS,[Linux]) - if test -d /home/vadve/lattner/local/x86/llvm-gcc - then - AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/x86/llvm-gcc/]) - fi - ;; - + platform_type="Linux" + if test -d /home/vadve/lattner/local/x86/llvm-gcc + then + AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/x86/llvm-gcc/]) + fi + ;; *-*-solaris*) AC_SUBST(OS,[SunOS]) - if test -d /home/vadve/lattner/local/sparc/llvm-gcc - then - AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/sparc/llvm-gcc/]) - fi - ;; + platform_type="SunOS" + if test -d /home/vadve/lattner/local/sparc/llvm-gcc + then + AC_SUBST(LLVMGCCDIR,[/home/vadve/lattner/local/sparc/llvm-gcc/]) + fi + ;; + *-*-win32*) + AC_SUBST(OS,[Win32]) + platform_type="Win32" + ;; + *) + AC_SUBST(OS,[Unknown]) + platform_type="Unknown" + ;; +esac - *-*-darwin*) - AC_SUBST(OS,[Darwin]) - ;; +dnl Make sure we aren't attempting to configure for an unknown system +if test "$platform_type" = "Unknown" ; then + AC_MSG_ERROR([Platform is unknown, configure can't continue]) +fi - *) AC_SUBST(OS,[Unknown]) - ;; -esac +dnl Make a link from lib/System/platform to lib/System/$platform_type +dnl This helps the #inclusion of the system specific include files +dnl for the operating system abstraction library +AC_CONFIG_LINKS(lib/System/platform:lib/System/$platform_type) +AC_MSG_RESULT($platform_type) + +AC_MSG_CHECKING(target architecture) dnl If we are targetting a Sparc machine running Solaris, pretend that it is dnl V9, since that is all that we support at the moment, and autoconf will only dnl tell us we're a sparc. @@ -123,16 +141,26 @@ dnl Determine what our target architecture is and configure accordingly. dnl This will allow Makefiles to make a distinction between the hardware and dnl the OS. case $target in - i*86-*) AC_SUBST(ARCH,[x86]) - ;; - sparc*-*) AC_SUBST(ARCH,[Sparc]) - ;; - powerpc*-*) AC_SUBST(ARCH,[PowerPC]) - ;; - *) AC_SUBST(ARCH,[Unknown]) - ;; + i*86-*) + ARCH="x86" + AC_SUBST(ARCH,[x86]) + ;; + sparc*-*) + ARCH="Sparc" + AC_SUBST(ARCH,[Sparc]) + ;; + powerpc*-*) + ARCH="PowerPC" + AC_SUBST(ARCH,[PowerPC]) + ;; + *) + ARCH="Unknown" + AC_SUBST(ARCH,[Unknown]) + ;; esac +AC_MSG_RESULT($ARCH) + dnl Check for compilation tools AC_PROG_CXX AC_PROG_CC(gcc) @@ -156,7 +184,7 @@ then fi dnl Check for GNU Make. We use its extensions too, so don't build without it -CHECK_GNU_MAKE +AC_CHECK_GNU_MAKE if test -z "$_cv_gnu_make_command" then AC_MSG_ERROR([GNU Make required but not found]) @@ -222,7 +250,8 @@ AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1],[Define if mallinfo dnl pthread locking functions are optional - but llvm will not be thread-safe dnl without locks. -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.])) +AC_SEARCH_LIBS(pthread_mutex_lock,pthread,HAVE_PTHREAD_MUTEX_LOCK=1,HAVE_PTHREAD_MUTEX_LOCK=0) +AC_SUBST(HAVE_PTHREAD_MUTEX_LOCK) dnl Checks for header files. dnl We don't check for ancient stuff or things that are guaranteed to be there @@ -231,42 +260,66 @@ AC_HEADER_STDC AC_HEADER_SYS_WAIT dnl Checks for POSIX and other various system-specific header files -AC_CHECK_HEADERS(fcntl.h limits.h sys/time.h unistd.h malloc.h sys/mman.h sys/resource.h dlfcn.h link.h) +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) + +dnl Check for things that need to be included in public headers, and so +dnl for which we may not have access to a HAVE_* preprocessor #define. +dnl (primarily used in DataTypes.h) +AC_CHECK_HEADER([sys/types.h], + [INCLUDE_SYS_TYPES_H='#include '], + [INCLUDE_SYS_TYPES_H='']) +AC_SUBST(INCLUDE_SYS_TYPES_H) +AC_CHECK_HEADER([inttypes.h], + [INCLUDE_INTTYPES_H='#include '], + [INCLUDE_INTTYPES_H='']) +AC_SUBST(INCLUDE_INTTYPES_H) +AC_CHECK_HEADER([stdint.h], + [INCLUDE_STDINT_H='#include '], + [INCLUDE_STDINT_H='']) +AC_SUBST(INCLUDE_STDINT_H) + dnl Check for types AC_TYPE_PID_T AC_TYPE_SIZE_T AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found])) -AC_CHECK_TYPES([uint64_t],,AC_MSG_ERROR([Type uint64_t required but not found])) +AC_CHECK_TYPES([uint64_t],, + AC_CHECK_TYPES([u_int64_t],, + AC_MSG_ERROR([Type uint64_t or u_int64_t required but not found]))) AC_HEADER_TIME AC_STRUCT_TM dnl Check for various C features AC_C_PRINTF_A +dnl Check for the endianness of the target +AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[big]),AC_SUBST([ENDIAN],[little])) + dnl Check for C++ extensions AC_CXX_HAVE_HASH_MAP AC_CXX_HAVE_HASH_SET -AC_CXX_HAVE_EXT_SLIST AC_CXX_HAVE_STD_ITERATOR AC_CXX_HAVE_BI_ITERATOR AC_CXX_HAVE_FWD_ITERATOR +AC_FUNC_ISNAN +AC_FUNC_ISINF + dnl Checks for library functions. AC_FUNC_ALLOCA AC_FUNC_MMAP if test "$ac_cv_func_mmap_fixed_mapped" = "no" then - AC_MSG_ERROR([mmap() required but not found]) + AC_MSG_WARN([mmap() required but not found]) fi AC_FUNC_MMAP_FILE if test "$ac_cv_func_mmap_file" = "no" then - AC_MSG_ERROR([mmap() of files required but not found]) + AC_MSG_WARN([mmap() of files required but not found]) fi AC_HEADER_MMAP_ANONYMOUS AC_TYPE_SIGNAL -AC_CHECK_FUNCS(getcwd gettimeofday strdup strtoq strtoll) +AC_CHECK_FUNCS(getcwd gettimeofday strdup strtoq strtoll backtrace isatty mkstemp getrusage) AC_CHECK_FUNC(mprotect,,AC_MSG_ERROR([Function mprotect() required but not found])) dnl Determine if the linker supports the -R option. @@ -282,68 +335,6 @@ else AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]]) fi -dnl Spec 2000 Benchmarks -AC_ARG_ENABLE(spec2000,AC_HELP_STRING([--enable-spec2000],[Compile SPEC 2000 benchmarks (default is NO)]),,enableval=no) -if test ${enableval} = "no" -then - if test -d /home/vadve/shared/benchmarks/speccpu2000/benchspec - then - AC_SUBST(SPEC_ROOT,[/home/vadve/shared/benchmarks/speccpu2000/benchspec]) - AC_SUBST(USE_SPEC,[[USE_SPEC=1]]) - else - AC_SUBST(USE_SPEC,[[]]) - AC_SUBST(SPEC_ROOT,[]) - fi -else - if test ${enableval} = "" - then - AC_SUBST(SPEC_ROOT,[/home/vadve/shared/benchmarks/speccpu2000/benchspec]) - else - AC_SUBST(SPEC_ROOT,[${enableval}]) - fi - AC_SUBST(USE_SPEC,[[USE_SPEC=1]]) -fi - -dnl Spec 95 Benchmarks -AC_ARG_ENABLE(spec95,AC_HELP_STRING([--enable-spec95],[Compile SPEC 95 benchmarks (default is NO)]),,enableval=no) -if test ${enableval} = "no" -then - if test -d /home/vadve/shared/benchmarks/spec95_sparcv9/benchspec - then - AC_SUBST(SPEC95_ROOT,[/home/vadve/shared/benchmarks/spec95_sparcv9/benchspec]) - AC_SUBST(USE_SPEC95,[[USE_SPEC95=1]]) - else - AC_SUBST(USE_SPEC95,[[]]) - AC_SUBST(SPEC95_ROOT,[]) - fi -else - if test ${enableval} = "" - then - AC_SUBST(SPEC95_ROOT,[/home/vadve/shared/benchmarks/spec95_sparcv9/benchspec]) - else - AC_SUBST(SPEC95_ROOT,[${enableval}]) - fi - AC_SUBST(USE_SPEC95,[[USE_SPEC95=1]]) -fi - -dnl Precompiled Bytecode Option -AC_ARG_ENABLE(precompiled_bytecode,AC_HELP_STRING([--enable-precompiled_bytecode],[Use pre-compiled bytecode (default is NO)]),,enableval=no) -if test ${enableval} = "no" -then - AC_SUBST(UPB,[[]]) -else - AC_SUBST(UPB,[[USE_PRECOMPILED_BYTECODE=1]]) -fi - -dnl LLC Diff Option -AC_ARG_ENABLE(llc_diffs,AC_HELP_STRING([--enable-llc_diffs],[Enable LLC Diffs when testing (default is YES)]),,enableval=yes) -if test ${enableval} = "no" -then - AC_SUBST(DISABLE_LLC_DIFFS,[DISABLE_LLC_DIFFS:=1]) -else - AC_SUBST(DISABLE_LLC_DIFFS,[[]]) -fi - dnl JIT Option AC_ARG_ENABLE(jit,AC_HELP_STRING([--enable-jit],[Enable Just In Time Compiling (default is YES)]),,enableval=default) if test ${enableval} = "no" @@ -402,12 +393,6 @@ then llvmgccwarn=yes fi -dnl Location of the bytecode repository -AC_ARG_WITH(bcrepos,AC_HELP_STRING([--with-bcrepos],[Location of Bytecode Repository]),AC_SUBST(BCR,[$withval]),AC_SUBST(BCR,[/home/vadve/lattner/LLVMPrograms])) - -dnl Location of PAPI -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])) - dnl Get libtool's idea of what the shared library suffix is. dnl (This is a hack; it relies on undocumented behavior.) AC_MSG_CHECKING([for shared library suffix]) @@ -418,8 +403,42 @@ AC_SUBST(SHLIBEXT,$SHLIBEXT) AC_DEFINE_UNQUOTED(SHLIBEXT,"$SHLIBEXT", [Extension that shared libraries have, e.g., ".so".]) +# Translate the various configuration directories and other basic +# information into substitutions that will end up in config.h.in so +# that these configured values can be hard-wired into a program. +eval LLVM_PREFIX="${prefix}"; +eval LLVM_BINDIR="${prefix}/bin"; +eval LLVM_LIBDIR="${prefix}/lib"; +eval LLVM_DATADIR="${prefix}/data"; +eval LLVM_DOCSDIR="${prefix}/docs"; +eval LLVM_ETCDIR="${prefix}/etc"; +eval LLVM_INCLUDEDIR="${prefix}/include"; +eval LLVM_INFODIR="${prefix}/info"; +eval LLVM_MANDIR="${prefix}/man"; +LLVM_CONFIGTIME=`date` +AC_SUBST(LLVM_PREFIX) +AC_SUBST(LLVM_BINDIR) +AC_SUBST(LLVM_LIBDIR) +AC_SUBST(LLVM_DATADIR) +AC_SUBST(LLVM_DOCSDIR) +AC_SUBST(LLVM_ETCDIR) +AC_SUBST(LLVM_INCLUDEDIR) +AC_SUBST(LLVM_INFODIR) +AC_SUBST(LLVM_MANDIR) +AC_SUBST(LLVM_CONFIGTIME) +AC_DEFINE_UNQUOTED(LLVM_PREFIX,"$LLVM_PREFIX", [Installation prefix directory]) +AC_DEFINE_UNQUOTED(LLVM_BINDIR, "$LLVM_BINDIR", [Installation directory for binary executables]) +AC_DEFINE_UNQUOTED(LLVM_LIBDIR, "$LLVM_LIBDIR", [Installation directory for libraries]) +AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DATADIR", [Installation directory for data files]) +AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DOCSDIR", [Installation directory for documentation]) +AC_DEFINE_UNQUOTED(LLVM_ETCDIR, "$LLVM_ETCDIR", [Installation directory for config files]) +AC_DEFINE_UNQUOTED(LLVM_INCLUDEDIR, "$LLVM_INCLUDEDIR", [Installation directory for include files]) +AC_DEFINE_UNQUOTED(LLVM_INFODIR, "$LLVM_INFODIR", [Installation directory for .info files]) +AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR", [Installation directory for man pages]) +AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME", [Time at which LLVM was configured]) + dnl Create the output files -AC_OUTPUT(Makefile.config) +AC_OUTPUT() dnl Warn loudly if llvm-gcc was not obviously working if test $llvmgccwarn = yes