X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=autoconf%2Fconfigure.ac;h=0942c8e4e38824ccbaf007ecc480dde26e2702e9;hp=f376e03d979c884ffb432512fc1b2193c733cb16;hb=e520b7069e1cda16708697ddd96199a5418c01c6;hpb=2fbf9e2fda89c8d478abac7fd13bda524bfc9673 diff --git a/autoconf/configure.ac b/autoconf/configure.ac index f376e03d979..0942c8e4e38 100644 --- a/autoconf/configure.ac +++ b/autoconf/configure.ac @@ -31,14 +31,28 @@ dnl=== dnl===-----------------------------------------------------------------------=== dnl Initialize autoconf and define the package name, version number and dnl address for reporting bugs. -AC_INIT([LLVM],[3.5svn],[http://llvm.org/bugs/]) -LLVM_DEFINE_SUBST([LLVM_VERSION_MAJOR], [3], [Major version of the LLVM API]) -LLVM_DEFINE_SUBST([LLVM_VERSION_MINOR], [5], [Minor version of the LLVM API]) + +AC_INIT([LLVM],[3.7.0svn],[http://llvm.org/bugs/]) + +LLVM_VERSION_MAJOR=3 +LLVM_VERSION_MINOR=7 +LLVM_VERSION_PATCH=0 +LLVM_VERSION_SUFFIX=svn + +AC_DEFINE_UNQUOTED([LLVM_VERSION_MAJOR], $LLVM_VERSION_MAJOR, [Major version of the LLVM API]) +AC_DEFINE_UNQUOTED([LLVM_VERSION_MINOR], $LLVM_VERSION_MINOR, [Minor version of the LLVM API]) +AC_DEFINE_UNQUOTED([LLVM_VERSION_PATCH], $LLVM_VERSION_PATCH, [Patch version of the LLVM API]) +AC_DEFINE_UNQUOTED([LLVM_VERSION_STRING], "$PACKAGE_VERSION", [LLVM version string]) + +AC_SUBST([LLVM_VERSION_MAJOR]) +AC_SUBST([LLVM_VERSION_MINOR]) +AC_SUBST([LLVM_VERSION_PATCH]) +AC_SUBST([LLVM_VERSION_SUFFIX]) dnl Provide a copyright substitution and ensure the copyright notice is included dnl in the output of --version option of the generated configure script. -AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2014 University of Illinois at Urbana-Champaign."]) -AC_COPYRIGHT([Copyright (c) 2003-2014 University of Illinois at Urbana-Champaign.]) +AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2015 University of Illinois at Urbana-Champaign."]) +AC_COPYRIGHT([Copyright (c) 2003-2015 University of Illinois at Urbana-Champaign.]) dnl Indicate that we require autoconf 2.60 or later. AC_PREREQ(2.60) @@ -59,6 +73,19 @@ if test ${srcdir} != "." ; then fi fi +dnl Quit if it is an in-source build +if test ${srcdir} == "." ; then + AC_MSG_WARN([**************************************************************************************]) + AC_MSG_WARN([* *]) + AC_MSG_WARN([* WARNING *]) + AC_MSG_WARN([* *]) + AC_MSG_WARN([* In-source builds are deprecated. *]) + AC_MSG_WARN([* *]) + AC_MSG_WARN([* Please configure from a separate build directory! *]) + AC_MSG_WARN([* *]) + AC_MSG_WARN([**************************************************************************************]) +fi + dnl Default to empty (i.e. assigning the null string to) CFLAGS and CXXFLAGS, dnl instead of the autoconf default (for example, '-g -O2' for CC=gcc). : ${CFLAGS=} @@ -91,7 +118,7 @@ if test "$CXX" = "clang++" ; then ], [ AC_MSG_RESULT([no]) - AC_MSG_ERROR([Selected compiler could not find or parse C++ standard library headers. Rerun with CC=c-compiler CXX=c++-compiler ./configure ...]) + AC_MSG_ERROR([Selected compiler could not find or parse C++ standard library headers. Rerun with CC=c-compiler CXX=c++-compiler LLVM_SRC_DIR/configure ...]) ]) AC_LANG_POP([C++]) fi @@ -153,7 +180,6 @@ for i in `ls ${srcdir}/projects` do if test -d ${srcdir}/projects/${i} ; then case ${i} in - sample) AC_CONFIG_SUBDIRS([projects/sample]) ;; safecode) AC_CONFIG_SUBDIRS([projects/safecode]) ;; compiler-rt) ;; test-suite) ;; @@ -254,6 +280,11 @@ AC_CACHE_CHECK([type of operating system we're going to host on], llvm_cv_no_link_all_option="-Wl,--no-whole-archive" llvm_cv_os_type="DragonFly" llvm_cv_platform_type="Unix" ;; + *-*-bitrig*) + llvm_cv_link_all_option="-Wl,--whole-archive" + llvm_cv_no_link_all_option="-Wl,--no-whole-archive" + llvm_cv_os_type="Bitrig" + llvm_cv_platform_type="Unix" ;; *-*-hpux*) llvm_cv_link_all_option="-Wl,--whole-archive" llvm_cv_no_link_all_option="-Wl,--no-whole-archive" @@ -279,11 +310,6 @@ AC_CACHE_CHECK([type of operating system we're going to host on], llvm_cv_no_link_all_option="-Wl,-z,defaultextract" llvm_cv_os_type="SunOS" llvm_cv_platform_type="Unix" ;; - *-*-auroraux*) - llvm_cv_link_all_option="-Wl,-z,allextract" - llvm_cv_link_all_option="-Wl,-z,defaultextract" - llvm_cv_os_type="AuroraUX" - llvm_cv_platform_type="Unix" ;; *-*-win32*) llvm_cv_link_all_option="-Wl,--whole-archive" llvm_cv_no_link_all_option="-Wl,--no-whole-archive" @@ -339,6 +365,8 @@ AC_CACHE_CHECK([type of operating system we're going to target], llvm_cv_target_os_type="NetBSD" ;; *-*-dragonfly*) llvm_cv_target_os_type="DragonFly" ;; + *-*-bitrig*) + llvm_cv_target_os_type="Bitrig" ;; *-*-hpux*) llvm_cv_target_os_type="HP-UX" ;; *-*-interix*) @@ -349,8 +377,6 @@ AC_CACHE_CHECK([type of operating system we're going to target], llvm_cv_target_os_type="GNU" ;; *-*-solaris*) llvm_cv_target_os_type="SunOS" ;; - *-*-auroraux*) - llvm_cv_target_os_type="AuroraUX" ;; *-*-win32*) llvm_cv_target_os_type="Win32" ;; *-*-mingw*) @@ -363,6 +389,8 @@ AC_CACHE_CHECK([type of operating system we're going to target], llvm_cv_target_os_type="NativeClient" ;; *-unknown-eabi*) llvm_cv_target_os_type="Freestanding" ;; + *-*-ps4) + llvm_cv_target_os_type="PS4" ;; *) llvm_cv_target_os_type="Unknown" ;; esac]) @@ -407,6 +435,7 @@ AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch], amd64-* | x86_64-*) llvm_cv_target_arch="x86_64" ;; sparc*-*) llvm_cv_target_arch="Sparc" ;; powerpc*-*) llvm_cv_target_arch="PowerPC" ;; + arm64*-*) llvm_cv_target_arch="AArch64" ;; arm*-*) llvm_cv_target_arch="ARM" ;; aarch64*-*) llvm_cv_target_arch="AArch64" ;; mips-* | mips64-*) llvm_cv_target_arch="Mips" ;; @@ -442,6 +471,7 @@ case $host in amd64-* | x86_64-*) host_arch="x86_64" ;; sparc*-*) host_arch="Sparc" ;; powerpc*-*) host_arch="PowerPC" ;; + arm64*-*) host_arch="AArch64" ;; arm*-*) host_arch="ARM" ;; aarch64*-*) host_arch="AArch64" ;; mips-* | mips64-*) host_arch="Mips" ;; @@ -589,19 +619,19 @@ bypass these sanity checks.])]) ;; esac -dnl --enable-cxx11 : check whether or not to use -std=c++11 on the command line -AC_ARG_ENABLE(cxx11, - AS_HELP_STRING([--enable-cxx11], - [Use c++11 if available (default is NO)]),, +dnl --enable-cxx1y : check whether or not to use -std=c++1y on the command line +AC_ARG_ENABLE(cxx1y, + AS_HELP_STRING([--enable-cxx1y], + [Use c++1y if available (default is NO)]),, enableval=default) case "$enableval" in - yes) AC_SUBST(ENABLE_CXX11,[1]) ;; - no) AC_SUBST(ENABLE_CXX11,[0]) ;; - default) AC_SUBST(ENABLE_CXX11,[0]);; - *) AC_MSG_ERROR([Invalid setting for --enable-cxx11. Use "yes" or "no"]) ;; + yes) AC_SUBST(ENABLE_CXX1Y,[1]) ;; + no) AC_SUBST(ENABLE_CXX1Y,[0]) ;; + default) AC_SUBST(ENABLE_CXX1Y,[0]);; + *) AC_MSG_ERROR([Invalid setting for --enable-cxx1y. Use "yes" or "no"]) ;; esac -dnl --enable-fission : check whether or not to use -gsplit-dwarf on the command +dnl --enable-split-dwarf : check whether or not to use -gsplit-dwarf on the command dnl line AC_ARG_ENABLE(split-dwarf, AS_HELP_STRING([--enable-split-dwarf], @@ -628,6 +658,20 @@ case "$enableval" in *) AC_MSG_ERROR([Invalid setting for --enable-clang-arcmt. Use "yes" or "no"]) ;; esac +dnl --enable-clang-plugin-support: check whether to enable plugins in clang +clang_plugin_support="yes" +AC_ARG_ENABLE(clang-plugin-support, + AS_HELP_STRING([--enable-clang-plugin-support], + [Enable plugin support in clang (default is YES)]), + clang_plugin_support="$enableval", + enableval="yes") +case "$enableval" in + yes) AC_SUBST(CLANG_PLUGIN_SUPPORT,[1]) ;; + no) AC_SUBST(CLANG_PLUGIN_SUPPORT,[0]) ;; + default) AC_SUBST(CLANG_PLUGIN_SUPPORT,[1]);; + *) AC_MSG_ERROR([Invalid setting for --enable-clang-plugin-support. Use "yes" or "no"]) ;; +esac + dnl --enable-clang-static-analyzer: check whether to enable static-analyzer clang_static_analyzer="yes" AC_ARG_ENABLE(clang-static-analyzer, @@ -637,36 +681,16 @@ AC_ARG_ENABLE(clang-static-analyzer, enableval="yes") case "$enableval" in yes) AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[1]) ;; - no) + no) if test ${clang_arcmt} != "no" ; then AC_MSG_ERROR([Cannot enable clang ARC Migration Tool while disabling static analyzer.]) fi - AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[0]) + AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[0]) ;; default) AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[1]);; *) AC_MSG_ERROR([Invalid setting for --enable-clang-static-analyzer. Use "yes" or "no"]) ;; esac -dnl --enable-clang-rewriter: check whether to enable clang rewriter -AC_ARG_ENABLE(clang-rewriter, - AS_HELP_STRING([--enable-clang-rewriter], - [Enable building of clang rewriter (default is YES)]),, - enableval="yes") -case "$enableval" in - yes) AC_SUBST(ENABLE_CLANG_REWRITER,[1]) ;; - no) - if test ${clang_arcmt} != "no" ; then - AC_MSG_ERROR([Cannot enable clang ARC Migration Tool while disabling rewriter.]) - fi - if test ${clang_static_analyzer} != "no" ; then - AC_MSG_ERROR([Cannot enable clang static analyzer while disabling rewriter.]) - fi - AC_SUBST(ENABLE_CLANG_REWRITER,[0]) - ;; - default) AC_SUBST(ENABLE_CLANG_REWRITER,[1]);; - *) AC_MSG_ERROR([Invalid setting for --enable-clang-rewriter. Use "yes" or "no"]) ;; -esac - dnl --enable-optimized : check whether they want to do an optimized build: AC_ARG_ENABLE(optimized, AS_HELP_STRING( --enable-optimized,[Compile with optimizations enabled (default is NO)]),,enableval=$optimize) @@ -690,8 +714,10 @@ AC_ARG_ENABLE(assertions,AS_HELP_STRING( --enable-assertions,[Compile with assertion checks enabled (default is YES)]),, enableval="yes") if test ${enableval} = "yes" ; then AC_SUBST(DISABLE_ASSERTIONS,[[]]) + assertions_enabled="yes" else AC_SUBST(DISABLE_ASSERTIONS,[[DISABLE_ASSERTIONS=1]]) + assertions_enabled="no" fi dnl --enable-werror : check whether we want Werror on by default @@ -715,6 +741,28 @@ else AC_SUBST(EXPENSIVE_CHECKS,[[no]]) fi +dnl --enable-abi-breaking-checks : decide whether we should compile in asserts and +dnl checks that make the build ABI incompatible with an llvm built without these +dnl checks enabled. +AC_ARG_ENABLE(abi-breaking-checks,AS_HELP_STRING( + --enable-abi-breaking-checks,[Compile with abi-breaking asserts support (default is with-asserts)]),, enableval="with-asserts") +case "$enableval" in + with-asserts) if test ${assertions_enabled} = "yes" ; then + AC_DEFINE([LLVM_ENABLE_ABI_BREAKING_CHECKS],[1],[Define to enable checks that alter the LLVM C++ ABI]) + AC_SUBST(ENABLE_ABI_BREAKING_CHECKS,[1]) + else + AC_SUBST(ENABLE_ABI_BREAKING_CHECKS,[0]) + fi ;; + yes) + AC_DEFINE([LLVM_ENABLE_ABI_BREAKING_CHECKS],[1],[Define to enable checks that alter the LLVM C++ ABI]) + AC_SUBST(ENABLE_ABI_BREAKING_CHECKS,[1]) + ;; + no) + AC_SUBST(ENABLE_ABI_BREAKING_CHECKS,[0]) + ;; + *) AC_MSG_ERROR([Invalid setting for --enable-abi-breaking-checks. Use "with-asserts", "yes" or "no"]) +esac + dnl --enable-debug-runtime : should runtime libraries have debug symbols? AC_ARG_ENABLE(debug-runtime, AS_HELP_STRING(--enable-debug-runtime,[Build runtime libs with debug symbols (default is NO)]),,enableval=no) @@ -758,7 +806,6 @@ else PowerPC) AC_SUBST(TARGET_HAS_JIT,1) ;; x86_64) AC_SUBST(TARGET_HAS_JIT,1) ;; ARM) AC_SUBST(TARGET_HAS_JIT,1) ;; - AArch64) AC_SUBST(TARGET_HAS_JIT,0) ;; Mips) AC_SUBST(TARGET_HAS_JIT,1) ;; XCore) AC_SUBST(TARGET_HAS_JIT,0) ;; MSP430) AC_SUBST(TARGET_HAS_JIT,0) ;; @@ -769,7 +816,7 @@ else esac fi -TARGETS_WITH_JIT="AArch64 ARM Mips PowerPC SystemZ X86" +TARGETS_WITH_JIT="ARM AArch64 Mips PowerPC SystemZ X86" AC_SUBST(TARGETS_WITH_JIT,$TARGETS_WITH_JIT) dnl Allow enablement of building and installing docs @@ -791,11 +838,139 @@ AC_ARG_ENABLE(doxygen, enableval=default) case "$enableval" in yes) AC_SUBST(ENABLE_DOXYGEN,[1]) ;; - no) AC_SUBST(ENABLE_DOXYGEN,[0]) ;; - default) AC_SUBST(ENABLE_DOXYGEN,[0]) ;; + no|default) AC_SUBST(ENABLE_DOXYGEN,[0]) ;; *) AC_MSG_ERROR([Invalid setting for --enable-doxygen. Use "yes" or "no"]) ;; esac +dnl Allow enablement of doxygen search engine +AC_ARG_ENABLE(doxygen-search, + AS_HELP_STRING([--enable-doxygen-search], + [Enable doxygen search support (default is NO)]),, + enableval=default) +ENABLE_DOXYGEN_SEARCH="$enableval" + +case "$enableval" in + yes|no|default) ;; + *) AC_MSG_ERROR([Invalid setting for --enable-doxygen-search. Use "yes" or "no"]) ;; +esac + +AC_ARG_ENABLE(doxygen-external-search, + AS_HELP_STRING([--enable-doxygen-external-search], + [Enable doxygen exteranl search (default is NO)]),, + enableval=default) +ENABLE_DOXYGEN_EXTERNAL_SEARCH="$enableval" + +case "$enableval" in + yes) + dnl To match with the CMake behavior, enable doxygen when + dnl --enable-doxygen-external-search is enabled. + case "$ENABLE_DOXYGEN_SEARCH" in + yes|default) ENABLE_DOXYGEN_SEARCH="yes" ;; + no) AC_MSG_ERROR([The option --enable-doxygen-external-search requires --enable-doxygen-search]) ;; + esac + ;; + no|default) ;; + *) AC_MSG_ERROR([Invalid setting for --enable-doxygen-external-search. Use "yes" or "no"]) ;; +esac + +AC_ARG_WITH(doxygen-search-engine-url, + AS_HELP_STRING([--with-doxygen-search-engine-url], + [Specify the external search engine for doxygen]),,) +WITH_DOXYGEN_SEARCH_ENGINE_URL="$withval" + +AC_ARG_WITH(doxygen-search-mappings, + AS_HELP_STRING([--with-doxygen-search-mappings], + [Specify the extra search mapping for doxygen]),,) +WITH_DOXYGEN_SEARCH_MAPPINGS="$withval" + +case "$ENABLE_DOXYGEN_SEARCH" in + yes) + if test "$ENABLE_DOXYGEN" = "0" ; then + AC_MSG_ERROR([The option --enable-doxygen-search requires --enable-doxygen.]) + fi + + AC_SUBST(enable_searchengine,[YES]) + + case "$ENABLE_DOXYGEN_EXTERNAL_SEARCH" in + yes) + AC_SUBST(enable_external_search,[YES]) + AC_SUBST(enable_server_based_search,[YES]) + AC_SUBST(searchengine_url,["$WITH_DOXYGEN_SEARCH_ENGINE_URL"]) + AC_SUBST(extra_search_mappings,["$WITH_DOXYGEN_SEARCH_MAPPINGS"]) + ;; + + no|default) + AC_SUBST(enable_external_search,[NO]) + AC_SUBST(enable_server_based_search,[NO]) + AC_SUBST(searchengine_url,[]) + AC_SUBST(extra_search_mappings,[]) + ;; + esac + ;; + + no|default) + AC_SUBST(enable_searchengine,[NO]) + AC_SUBST(searchengine_url,[]) + AC_SUBST(enable_server_based_search,[NO]) + AC_SUBST(enable_external_search,[NO]) + AC_SUBST(extra_search_mappings,[]) + ;; + + *) + AC_MSG_ERROR([Invalid setting for --enable-doxygen-search. Use "yes" or "no"]) + ;; +esac + +dnl Allow enablement of doxygen generated Qt help files +AC_ARG_ENABLE(doxygen-qt-help, + AS_HELP_STRING([--enable-doxygen-qt-help], + [Build Qt help files (default is NO)]),, + enableval=default) +case "$enableval" in + yes) + if test "$ENABLE_DOXYGEN" = "0" ; then + AC_MSG_ERROR([The option --enable-doxygen-qt-help requires --enable-doxygen.]) + fi + + AC_PATH_PROG(QHELPGENERATOR, [qhelpgenerator], [qhelpgenerator]) + + dnl Qt help file for llvm doxygen documentation + AC_SUBST(llvm_doxygen_generate_qhp,[YES]) + AC_SUBST(llvm_doxygen_qch_filename,[org.llvm.qch]) + AC_SUBST(llvm_doxygen_qhp_namespace,[org.llvm]) + AC_SUBST(llvm_doxygen_qhelpgenerator_path,["$QHELPGENERATOR"]) + AC_SUBST(llvm_doxygen_qhp_cust_filter_name,["$PACKAGE_STRING"]) + AC_SUBST(llvm_doxygen_qhp_cust_filter_attrs,["$PACKAGE_NAME,$PACKAGE_VERSION"]) + + dnl Qt help file for clang doxygen documentation + AC_SUBST(clang_doxygen_generate_qhp,[YES]) + AC_SUBST(clang_doxygen_qch_filename,[org.llvm.clang.qch]) + AC_SUBST(clang_doxygen_qhp_namespace,[org.llvm.clang]) + AC_SUBST(clang_doxygen_qhelpgenerator_path,["$QHELPGENERATOR"]) + AC_SUBST(clang_doxygen_qhp_cust_filter_name,["Clang $PACKAGE_VERSION"]) + AC_SUBST(clang_doxygen_qhp_cust_filter_attrs,["Clang,$PACKAGE_VERSION"]) + ;; + + no|default) + AC_SUBST(llvm_doxygen_generate_qhp,[NO]) + AC_SUBST(llvm_doxygen_qch_filename,[]) + AC_SUBST(llvm_doxygen_qhp_namespace,[]) + AC_SUBST(llvm_doxygen_qhelpgenerator_path,[]) + AC_SUBST(llvm_doxygen_qhp_cust_filter_name,[]) + AC_SUBST(llvm_doxygen_qhp_cust_filter_attrs,[]) + + AC_SUBST(clang_doxygen_generate_qhp,[NO]) + AC_SUBST(clang_doxygen_qch_filename,[]) + AC_SUBST(clang_doxygen_qhp_namespace,[]) + AC_SUBST(clang_doxygen_qhelpgenerator_path,[]) + AC_SUBST(clang_doxygen_qhp_cust_filter_name,["Clang $PACKAGE_VERSION"]) + AC_SUBST(clang_doxygen_qhp_cust_filter_attrs,["Clang,$PACKAGE_VERSION"]) + ;; + + *) + AC_MSG_ERROR([Invalid setting for --enable-doxygen-qt-help. Use "yes" or "no"]) ;; +esac + dnl Allow disablement of threads AC_ARG_ENABLE(threads, AS_HELP_STRING([--enable-threads], @@ -922,15 +1097,15 @@ if test "$llvm_cv_enable_crash_overrides" = "yes" ; then fi dnl List all possible targets -ALL_TARGETS="X86 Sparc PowerPC AArch64 ARM Mips XCore MSP430 CppBackend NVPTX Hexagon SystemZ R600" +ALL_TARGETS="X86 Sparc PowerPC ARM AArch64 Mips XCore MSP430 CppBackend NVPTX Hexagon SystemZ AMDGPU BPF" AC_SUBST(ALL_TARGETS,$ALL_TARGETS) dnl Allow specific targets to be specified for building (or not) TARGETS_TO_BUILD="" AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-targets], [Build specific host targets: all or target1,target2,... Valid targets are: - host, x86, x86_64, sparc, powerpc, arm, aarch64, mips, hexagon, - xcore, msp430, nvptx, systemz, r600, and cpp (default=all)]),, + host, x86, x86_64, sparc, powerpc, arm64, arm, aarch64, mips, hexagon, + xcore, msp430, nvptx, systemz, r600, bpf, and cpp (default=all)]),, enableval=all) if test "$enableval" = host-only ; then enableval=host @@ -944,7 +1119,9 @@ case "$enableval" in sparc) TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;; powerpc) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;; aarch64) TARGETS_TO_BUILD="AArch64 $TARGETS_TO_BUILD" ;; + arm64) TARGETS_TO_BUILD="AArch64 $TARGETS_TO_BUILD" ;; arm) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;; + bpf) TARGETS_TO_BUILD="BPF $TARGETS_TO_BUILD" ;; mips) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;; mipsel) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;; mips64) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;; @@ -955,7 +1132,8 @@ case "$enableval" in hexagon) TARGETS_TO_BUILD="Hexagon $TARGETS_TO_BUILD" ;; nvptx) TARGETS_TO_BUILD="NVPTX $TARGETS_TO_BUILD" ;; systemz) TARGETS_TO_BUILD="SystemZ $TARGETS_TO_BUILD" ;; - r600) TARGETS_TO_BUILD="R600 $TARGETS_TO_BUILD" ;; + amdgpu) TARGETS_TO_BUILD="AMDGPU $TARGETS_TO_BUILD" ;; + r600) TARGETS_TO_BUILD="AMDGPU $TARGETS_TO_BUILD" ;; host) case "$llvm_cv_target_arch" in x86) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;; x86_64) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;; @@ -1161,6 +1339,13 @@ AC_ARG_WITH(default-sysroot, AC_DEFINE_UNQUOTED(DEFAULT_SYSROOT,"$withval", [Default to all compiler invocations for --sysroot=.]) +AC_ARG_WITH(clang-default-openmp-runtime, + AS_HELP_STRING([--with-clang-default-openmp-runtime], + [The default OpenMP runtime for Clang.]),, + withval="libgomp") +AC_DEFINE_UNQUOTED(CLANG_DEFAULT_OPENMP_RUNTIME,"$withval", + [Default OpenMP runtime used by -fopenmp.]) + dnl Allow linking of LLVM with GPLv3 binutils code. AC_ARG_WITH(binutils-include, AS_HELP_STRING([--with-binutils-include], @@ -1235,12 +1420,10 @@ dnl=== SECTION 4: Check for programs we need and that they are the right version dnl=== dnl===-----------------------------------------------------------------------=== -AC_PROG_NM -AC_SUBST(NM) - dnl Check for the tools that the makefiles require AC_CHECK_GNU_MAKE AC_PROG_LN_S +AC_PATH_PROG(NM, [nm], [nm]) AC_PATH_PROG(CMP, [cmp], [cmp]) AC_PATH_PROG(CP, [cp], [cp]) AC_PATH_PROG(DATE, [date], [date]) @@ -1256,16 +1439,6 @@ AC_PATH_PROG(TAR, [tar], [gtar]) AC_PATH_PROG(BINPWD,[pwd], [pwd]) dnl Looking for misc. graph plotting software -AC_PATH_PROG(GRAPHVIZ, [Graphviz], [echo Graphviz]) -if test "$GRAPHVIZ" != "echo Graphviz" ; then - AC_DEFINE([HAVE_GRAPHVIZ],[1],[Define if the Graphviz program is available]) - dnl If we're targeting for mingw we should emit windows paths, not msys - if test "$llvm_cv_os_type" = "MingW" ; then - GRAPHVIZ=`echo $GRAPHVIZ | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` - fi - AC_DEFINE_UNQUOTED([LLVM_PATH_GRAPHVIZ],"$GRAPHVIZ${EXEEXT}", - [Define to path to Graphviz program if found or 'echo Graphviz' otherwise]) -fi AC_PATH_PROG(DOT, [dot], [echo dot]) if test "$DOT" != "echo dot" ; then AC_DEFINE([HAVE_DOT],[1],[Define if the dot program is available]) @@ -1276,76 +1449,6 @@ if test "$DOT" != "echo dot" ; then AC_DEFINE_UNQUOTED([LLVM_PATH_DOT],"$DOT${EXEEXT}", [Define to path to dot program if found or 'echo dot' otherwise]) fi -AC_PATH_PROG(FDP, [fdp], [echo fdp]) -if test "$FDP" != "echo fdp" ; then - AC_DEFINE([HAVE_FDP],[1],[Define if the neat program is available]) - dnl If we're targeting for mingw we should emit windows paths, not msys - if test "$llvm_cv_os_type" = "MingW" ; then - FDP=`echo $FDP | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` - fi - AC_DEFINE_UNQUOTED([LLVM_PATH_FDP],"$FDP${EXEEXT}", - [Define to path to fdp program if found or 'echo fdp' otherwise]) -fi -AC_PATH_PROG(NEATO, [neato], [echo neato]) -if test "$NEATO" != "echo neato" ; then - AC_DEFINE([HAVE_NEATO],[1],[Define if the neat program is available]) - dnl If we're targeting for mingw we should emit windows paths, not msys - if test "$llvm_cv_os_type" = "MingW" ; then - NEATO=`echo $NEATO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` - fi - AC_DEFINE_UNQUOTED([LLVM_PATH_NEATO],"$NEATO${EXEEXT}", - [Define to path to neato program if found or 'echo neato' otherwise]) -fi -AC_PATH_PROG(TWOPI, [twopi], [echo twopi]) -if test "$TWOPI" != "echo twopi" ; then - AC_DEFINE([HAVE_TWOPI],[1],[Define if the neat program is available]) - dnl If we're targeting for mingw we should emit windows paths, not msys - if test "$llvm_cv_os_type" = "MingW" ; then - TWOPI=`echo $TWOPI | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` - fi - AC_DEFINE_UNQUOTED([LLVM_PATH_TWOPI],"$TWOPI${EXEEXT}", - [Define to path to twopi program if found or 'echo twopi' otherwise]) -fi -AC_PATH_PROG(CIRCO, [circo], [echo circo]) -if test "$CIRCO" != "echo circo" ; then - AC_DEFINE([HAVE_CIRCO],[1],[Define if the neat program is available]) - dnl If we're targeting for mingw we should emit windows paths, not msys - if test "$llvm_cv_os_type" = "MingW" ; then - CIRCO=`echo $CIRCO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` - fi - AC_DEFINE_UNQUOTED([LLVM_PATH_CIRCO],"$CIRCO${EXEEXT}", - [Define to path to circo program if found or 'echo circo' otherwise]) -fi -AC_PATH_PROGS(GV, [gv gsview32], [echo gv]) -if test "$GV" != "echo gv" ; then - AC_DEFINE([HAVE_GV],[1],[Define if the gv program is available]) - dnl If we're targeting for mingw we should emit windows paths, not msys - if test "$llvm_cv_os_type" = "MingW" ; then - GV=`echo $GV | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` - fi - AC_DEFINE_UNQUOTED([LLVM_PATH_GV],"$GV${EXEEXT}", - [Define to path to gv program if found or 'echo gv' otherwise]) -fi -AC_PATH_PROG(DOTTY, [dotty], [echo dotty]) -if test "$DOTTY" != "echo dotty" ; then - AC_DEFINE([HAVE_DOTTY],[1],[Define if the dotty program is available]) - dnl If we're targeting for mingw we should emit windows paths, not msys - if test "$llvm_cv_os_type" = "MingW" ; then - DOTTY=`echo $DOTTY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` - fi - AC_DEFINE_UNQUOTED([LLVM_PATH_DOTTY],"$DOTTY${EXEEXT}", - [Define to path to dotty program if found or 'echo dotty' otherwise]) -fi -AC_PATH_PROGS(XDOT, [xdot xdot.py], [echo xdot]) -if test "$XDOT" != "echo xdot" ; then - AC_DEFINE([HAVE_XDOT],[1],[Define if the xdot program is available]) - dnl If we're targeting for mingw we should emit windows paths, not msys - if test "$llvm_cv_os_type" = "MingW" ; then - XDOT=`echo $XDOT | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` - fi - AC_DEFINE_UNQUOTED([LLVM_PATH_XDOT],"$XDOT${EXEEXT}", - [Define to path to xdot program if found or 'echo xdot' otherwise]) -fi dnl Find the install program AC_PROG_INSTALL @@ -1368,10 +1471,8 @@ AC_PATH_PROG(GROFF, [groff]) AC_PATH_PROG(GZIPBIN, [gzip]) AC_PATH_PROG(PDFROFF, [pdfroff]) AC_PATH_PROG(ZIP, [zip]) -AC_PATH_PROGS(OCAMLC, [ocamlc]) -AC_PATH_PROGS(OCAMLOPT, [ocamlopt]) -AC_PATH_PROGS(OCAMLDEP, [ocamldep]) -AC_PATH_PROGS(OCAMLDOC, [ocamldoc]) +AC_PATH_PROG(GO, [go]) +AC_PATH_PROGS(OCAMLFIND, [ocamlfind]) AC_PATH_PROGS(GAS, [gas as]) dnl Get the version of the linker in use. @@ -1386,11 +1487,15 @@ AC_LINK_EXPORT_DYNAMIC dnl Determine whether the linker supports the --version-script option. AC_LINK_VERSION_SCRIPT -dnl Check for libtool and the library that has dlopen function (which must come -dnl before the AC_PROG_LIBTOOL check in order to enable dlopening libraries with -dnl libtool). -AC_LIBTOOL_DLOPEN -AC_LIB_LTDL +AC_CHECK_HEADERS([errno.h]) + +case "$llvm_cv_os_type" in + Cygwin|MingW|Win32) llvm_shlib_ext=.dll ;; + Darwin) llvm_shlib_ext=.dylib ;; + *) llvm_shlib_ext=.so ;; +esac + +AC_DEFINE_UNQUOTED([LTDL_SHLIB_EXT], ["$llvm_shlib_ext"], [The shared library extension]) AC_MSG_CHECKING([tool compatibility]) @@ -1465,7 +1570,27 @@ then CXX_FLAG_CHECK(NO_UNINITIALIZED, [-Wno-uninitialized]) fi fi -AC_MSG_RESULT([$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED $NO_MAYBE_UNINITIALIZED]) + +dnl Check for misbehaving -Wcomment (gcc-4.7 has this) and maybe add +dnl -Wno-comment to the flags. +no_comment= +llvm_cv_old_cxxflags="$CXXFLAGS" +CXXFLAGS="$CXXFLAGS -Wcomment -Werror" +AC_COMPILE_IFELSE( +[ + AC_LANG_SOURCE([[// Comment \o\ +// Another comment +int main() { return 0; } + ]]) +], +[ + no_comment=-Wno-comment +], +[]) +AC_SUBST(NO_COMMENT, [$no_comment]) +CXXFLAGS="$llvm_cv_old_cxxflags" + +AC_MSG_RESULT([$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED $NO_MAYBE_UNINITIALIZED $NO_COMMENT]) AC_ARG_WITH([python], [AS_HELP_STRING([--with-python], [path to python])], @@ -1479,23 +1604,23 @@ else AC_MSG_WARN([specified python ($PYTHON) is not usable, searching path]) fi - AC_PATH_PROG([PYTHON], [python python2 python26], + AC_PATH_PROG([PYTHON], [python python2 python27], [AC_MSG_RESULT([not found]) - AC_MSG_ERROR([could not find python 2.5 or higher])]) + AC_MSG_ERROR([could not find python 2.7 or higher])]) fi -AC_MSG_CHECKING([for python >= 2.5]) +AC_MSG_CHECKING([for python >= 2.7]) ac_python_version=`$PYTHON -V 2>&1 | cut -d' ' -f2` ac_python_version_major=`echo $ac_python_version | cut -d'.' -f1` ac_python_version_minor=`echo $ac_python_version | cut -d'.' -f2` ac_python_version_patch=`echo $ac_python_version | cut -d'.' -f3` if test "$ac_python_version_major" -gt "2" || \ (test "$ac_python_version_major" -eq "2" && \ - test "$ac_python_version_minor" -ge "5") ; then + test "$ac_python_version_minor" -ge "7") ; then AC_MSG_RESULT([$PYTHON ($ac_python_version)]) else AC_MSG_RESULT([not found]) - AC_MSG_FAILURE([found python $ac_python_version ($PYTHON); required >= 2.5]) + AC_MSG_FAILURE([found python $ac_python_version ($PYTHON); required >= 2.7]) fi dnl===-----------------------------------------------------------------------=== @@ -1507,6 +1632,7 @@ dnl===-----------------------------------------------------------------------=== AC_CHECK_LIB(m,sin) if test "$llvm_cv_os_type" = "MingW" ; then AC_CHECK_LIB(imagehlp, main) + AC_CHECK_LIB(ole32, main) AC_CHECK_LIB(psapi, main) AC_CHECK_LIB(shell32, main) fi @@ -1567,25 +1693,6 @@ if test "$LLVM_ENABLE_ZLIB" -eq 1 ; then AC_CHECK_LIB(z, compress2) fi -dnl Allow extra x86-disassembler library -AC_ARG_WITH(udis86, - AS_HELP_STRING([--with-udis86=], - [Use udis86 external x86 disassembler library]), - [ - AC_SUBST(USE_UDIS86, [1]) - case "$withval" in - /usr/lib|yes) ;; - *) LDFLAGS="$LDFLAGS -L${withval}" ;; - esac - AC_CHECK_LIB(udis86, ud_init, [], [ - echo "Error! You need to have libudis86 around." - exit -1 - ]) - ], - AC_SUBST(USE_UDIS86, [0])) -AC_DEFINE_UNQUOTED([USE_UDIS86],$USE_UDIS86, - [Define if use udis86 library]) - dnl Allow OProfile support for JIT output. AC_ARG_WITH(oprofile, AS_HELP_STRING([--with-oprofile=], @@ -1610,16 +1717,16 @@ AC_ARG_WITH(oprofile, AC_SEARCH_LIBS(bfd_init, bfd, [], []) AC_SEARCH_LIBS(op_open_agent, opagent, [], [ echo "Error! You need to have libopagent around." - exit -1 + exit 1 ]) AC_CHECK_HEADER([opagent.h], [], [ echo "Error! You need to have opagent.h around." - exit -1 + exit 1 ]) fi ;; *) AC_MSG_ERROR([OProfile support is available on Linux only.]) ;; - esac + esac ], [ AC_SUBST(USE_OPROFILE, [0]) @@ -1687,8 +1794,12 @@ AC_HEADER_SYS_WAIT AC_HEADER_TIME AC_LANG_PUSH([C++]) -AC_CHECK_HEADERS([cxxabi.h]) +dnl size_t must be defined before including cxxabi.h on FreeBSD 10.0. +AC_CHECK_HEADERS([cxxabi.h], [], [], +[#include +]) AC_LANG_POP([C++]) + AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h inttypes.h link.h]) AC_CHECK_HEADERS([malloc.h setjmp.h signal.h stdint.h termios.h unistd.h]) AC_CHECK_HEADERS([utime.h]) @@ -1763,9 +1874,7 @@ dnl=== SECTION 8: Check for specific functions needed dnl=== dnl===-----------------------------------------------------------------------=== -AC_CHECK_FUNCS([backtrace ceilf floorf roundf rintf nearbyintf getcwd ]) -AC_CHECK_FUNCS([powf fmodf strtof round ]) -AC_CHECK_FUNCS([log log2 log10 exp exp2]) +AC_CHECK_FUNCS([backtrace getcwd ]) AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday ]) AC_CHECK_FUNCS([isatty mkdtemp mkstemp ]) AC_CHECK_FUNCS([mktemp posix_spawn pread realpath sbrk setrlimit ]) @@ -1787,7 +1896,9 @@ if test "$llvm_cv_os_type" = "MingW" ; then AC_CHECK_LIB(gcc,_alloca,AC_DEFINE([HAVE__ALLOCA],[1],[Have host's _alloca])) AC_CHECK_LIB(gcc,__alloca,AC_DEFINE([HAVE___ALLOCA],[1],[Have host's __alloca])) AC_CHECK_LIB(gcc,__chkstk,AC_DEFINE([HAVE___CHKSTK],[1],[Have host's __chkstk])) + AC_CHECK_LIB(gcc,__chkstk_ms,AC_DEFINE([HAVE___CHKSTK_MS],[1],[Have host's __chkstk_ms])) AC_CHECK_LIB(gcc,___chkstk,AC_DEFINE([HAVE____CHKSTK],[1],[Have host's ___chkstk])) + AC_CHECK_LIB(gcc,___chkstk_ms,AC_DEFINE([HAVE____CHKSTK_MS],[1],[Have host's ___chkstk_ms])) AC_CHECK_LIB(gcc,__ashldi3,AC_DEFINE([HAVE___ASHLDI3],[1],[Have host's __ashldi3])) AC_CHECK_LIB(gcc,__ashrdi3,AC_DEFINE([HAVE___ASHRDI3],[1],[Have host's __ashrdi3])) @@ -1827,11 +1938,6 @@ if test "$llvm_cv_os_type" = "MingW" ; then AC_DEFINE_UNQUOTED([WIN32_ELMCB_PCSTR],$llvm_cv_win32_elmcb_pcstr,[Type of 1st arg on ELM Callback]) fi -dnl Check for variations in the Standard C++ library and STL. These macros are -dnl provided by LLVM in the autoconf/m4 directory. -AC_FUNC_ISNAN -AC_FUNC_ISINF - dnl Check for mmap support.We also need to know if /dev/zero is required to dnl be opened for allocating RWX memory. dnl Make sure we aren't attempting to configure for an unknown system @@ -1900,11 +2006,7 @@ AC_CHECK_FUNCS([__dso_handle]) dnl Propagate the shared library extension that the libltdl checks did to dnl the Makefiles so we can use it there too -AC_SUBST(SHLIBEXT,$libltdl_cv_shlibext) - -dnl Propagate the run-time library path variable that the libltdl -dnl checks found to the Makefiles so we can use it there too -AC_SUBST(SHLIBPATH_VAR,$libltdl_cv_shlibpath_var) +AC_SUBST(SHLIBEXT,$llvm_shlib_ext) dnl Translate the various configuration directories and other basic dnl information into substitutions that will end up in Makefile.config.in @@ -1964,37 +2066,52 @@ AC_DEFINE_UNQUOTED(LLVM_DEFAULT_TARGET_TRIPLE, "$target", dnl Determine which bindings to build. if test "$BINDINGS_TO_BUILD" = auto ; then BINDINGS_TO_BUILD="" - if test "x$OCAMLC" != x -a "x$OCAMLDEP" != x ; then + if test "x$OCAMLFIND" != x ; then BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD" fi + if test "x$GO" != x ; then + if $GO run ${srcdir}/bindings/go/conftest.go ; then + BINDINGS_TO_BUILD="go $BINDINGS_TO_BUILD" + fi + fi fi AC_SUBST(BINDINGS_TO_BUILD,$BINDINGS_TO_BUILD) -dnl This isn't really configurey, but it avoids having to repeat the list in -dnl other files. -AC_SUBST(ALL_BINDINGS,ocaml) - dnl Do any work necessary to ensure that bindings have what they need. binding_prereqs_failed=0 for a_binding in $BINDINGS_TO_BUILD ; do case "$a_binding" in ocaml) - if test "x$OCAMLC" = x ; then - AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlc not found. Try configure OCAMLC=/path/to/ocamlc]) + if test "x$OCAMLFIND" = x ; then + AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlfind not found. Try configure OCAMLFIND=/path/to/ocamlfind]) binding_prereqs_failed=1 fi - if test "x$OCAMLDEP" = x ; then - AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamldep not found. Try configure OCAMLDEP=/path/to/ocamldep]) + + if $OCAMLFIND opt -version >/dev/null 2>/dev/null ; then + HAVE_OCAMLOPT=1 + else + HAVE_OCAMLOPT=0 + fi + AC_SUBST(HAVE_OCAMLOPT) + + if ! $OCAMLFIND query ctypes >/dev/null 2>/dev/null; then + AC_MSG_WARN([--enable-bindings=ocaml specified, but ctypes is not installed]) binding_prereqs_failed=1 fi - if test "x$OCAMLOPT" = x ; then - AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlopt not found. Try configure OCAMLOPT=/path/to/ocamlopt]) - dnl ocamlopt is optional! + + if $OCAMLFIND query oUnit >/dev/null 2>/dev/null; then + HAVE_OCAML_OUNIT=1 + else + HAVE_OCAML_OUNIT=0 + AC_MSG_WARN([--enable-bindings=ocaml specified, but OUnit 2 is not installed. Tests will not run]) + dnl oUnit is optional! fi + AC_SUBST(HAVE_OCAML_OUNIT) + if test "x$with_ocaml_libdir" != xauto ; then AC_SUBST(OCAML_LIBDIR,$with_ocaml_libdir) else - ocaml_stdlib="`"$OCAMLC" -where`" + ocaml_stdlib="`"$OCAMLFIND" ocamlc -where`" if test "$LLVM_PREFIX" '<' "$ocaml_stdlib" -a "$ocaml_stdlib" '<' "$LLVM_PREFIX~" then # ocaml stdlib is beneath our prefix; use stdlib @@ -2005,6 +2122,19 @@ for a_binding in $BINDINGS_TO_BUILD ; do fi fi ;; + go) + if test "x$GO" = x ; then + AC_MSG_WARN([--enable-bindings=go specified, but go not found. Try configure GO=/path/to/go]) + binding_prereqs_failed=1 + else + if $GO run ${srcdir}/bindings/go/conftest.go ; then + : + else + AC_MSG_WARN([--enable-bindings=go specified, but need at least Go 1.2. Try configure GO=/path/to/go]) + binding_prereqs_failed=1 + fi + fi + ;; esac done if test "$binding_prereqs_failed" = 1 ; then @@ -2043,7 +2173,10 @@ dnl contains the same list of files as AC_CONFIG_HEADERS below. This ensures the dnl files can be updated automatically when their *.in sources change. AC_CONFIG_HEADERS([include/llvm/Config/config.h include/llvm/Config/llvm-config.h]) AH_TOP([#ifndef CONFIG_H -#define CONFIG_H]) +#define CONFIG_H + +/* Exported configuration */ +#include "llvm/Config/llvm-config.h"]) AH_BOTTOM([#endif]) AC_CONFIG_FILES([include/llvm/Config/Targets.def]) @@ -2066,6 +2199,11 @@ if test "${clang_src_root}" = ""; then clang_src_root="$srcdir/tools/clang" fi if test -f ${clang_src_root}/README.txt; then + dnl Clang supports build systems which use the multilib libdir suffix. + dnl The autoconf system doesn't support this so stub out that variable. + AC_DEFINE_UNQUOTED(CLANG_LIBDIR_SUFFIX,"", + [Multilib suffix for libdir.]) + dnl Use variables to stay under 80 columns. configh="include/clang/Config/config.h" doxy="docs/doxygen.cfg"