1dnl === configure.ac --------------------------------------------------------=== 2dnl The LLVM Compiler Infrastructure 3dnl 4dnl This file is distributed under the University of Illinois Open Source 5dnl License. See LICENSE.TXT for details. 6dnl 7dnl===-----------------------------------------------------------------------=== 8dnl This is the LLVM configuration script. It is processed by the autoconf 9dnl program to produce a script named configure. This script contains the 10dnl configuration checks that LLVM needs in order to support multiple platforms. 11dnl This file is composed of 10 sections per the recommended organization of 12dnl autoconf input defined in the autoconf documentation. As this file evolves, 13dnl please keep the various types of checks within their sections. The sections 14dnl are as follows: 15dnl 16dnl SECTION 1: Initialization & Setup 17dnl SECTION 2: Architecture, target, and host checks 18dnl SECTION 3: Command line arguments for the configure script. 19dnl SECTION 4: Check for programs we need and that they are the right version 20dnl SECTION 5: Check for libraries 21dnl SECTION 6: Check for header files 22dnl SECTION 7: Check for types and structures 23dnl SECTION 8: Check for specific functions needed 24dnl SECTION 9: Additional checks, variables, etc. 25dnl SECTION 10: Specify the output files and generate it 26dnl 27dnl===-----------------------------------------------------------------------=== 28dnl=== 29dnl=== SECTION 1: Initialization & Setup 30dnl=== 31dnl===-----------------------------------------------------------------------=== 32dnl Initialize autoconf and define the package name, version number and 33dnl address for reporting bugs. 34 35AC_INIT([LLVM],[3.7.0svn],[http://llvm.org/bugs/]) 36 37LLVM_VERSION_MAJOR=3 38LLVM_VERSION_MINOR=7 39LLVM_VERSION_PATCH=0 40LLVM_VERSION_SUFFIX=svn 41 42AC_DEFINE_UNQUOTED([LLVM_VERSION_MAJOR], $LLVM_VERSION_MAJOR, [Major version of the LLVM API]) 43AC_DEFINE_UNQUOTED([LLVM_VERSION_MINOR], $LLVM_VERSION_MINOR, [Minor version of the LLVM API]) 44AC_DEFINE_UNQUOTED([LLVM_VERSION_PATCH], $LLVM_VERSION_PATCH, [Patch version of the LLVM API]) 45AC_DEFINE_UNQUOTED([LLVM_VERSION_STRING], "$PACKAGE_VERSION", [LLVM version string]) 46 47AC_SUBST([LLVM_VERSION_MAJOR]) 48AC_SUBST([LLVM_VERSION_MINOR]) 49AC_SUBST([LLVM_VERSION_PATCH]) 50AC_SUBST([LLVM_VERSION_SUFFIX]) 51 52dnl Provide a copyright substitution and ensure the copyright notice is included 53dnl in the output of --version option of the generated configure script. 54AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2015 University of Illinois at Urbana-Champaign."]) 55AC_COPYRIGHT([Copyright (c) 2003-2015 University of Illinois at Urbana-Champaign.]) 56 57dnl Indicate that we require autoconf 2.60 or later. 58AC_PREREQ(2.60) 59 60dnl Verify that the source directory is valid. This makes sure that we are 61dnl configuring LLVM and not some other package (it validates --srcdir argument) 62AC_CONFIG_SRCDIR([lib/IR/Module.cpp]) 63 64dnl Place all of the extra autoconf files into the config subdirectory. Tell 65dnl various tools where the m4 autoconf macros are. 66AC_CONFIG_AUX_DIR([autoconf]) 67 68dnl Quit if the source directory has already been configured. 69dnl NOTE: This relies upon undocumented autoconf behavior. 70if test ${srcdir} != "." ; then 71 if test -f ${srcdir}/include/llvm/Config/config.h ; then 72 AC_MSG_ERROR([Already configured in ${srcdir}]) 73 fi 74fi 75 76dnl Default to empty (i.e. assigning the null string to) CFLAGS and CXXFLAGS, 77dnl instead of the autoconf default (for example, '-g -O2' for CC=gcc). 78: ${CFLAGS=} 79: ${CXXFLAGS=} 80 81dnl We need to check for the compiler up here to avoid anything else 82dnl starting with a different one. 83AC_PROG_CC(clang gcc) 84AC_PROG_CXX(clang++ g++) 85AC_PROG_CPP 86 87dnl If CXX is Clang, check that it can find and parse C++ standard library 88dnl headers. 89if test "$CXX" = "clang++" ; then 90 AC_MSG_CHECKING([whether clang works]) 91 AC_LANG_PUSH([C++]) 92 dnl Note that space between 'include' and '(' is required. There's a broken 93 dnl regex in aclocal that otherwise will think that we call m4's include 94 dnl builtin. 95 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <limits> 96#if __has_include (<cxxabi.h>) 97#include <cxxabi.h> 98#endif 99#if __has_include (<unwind.h>) 100#include <unwind.h> 101#endif 102]])], 103[ 104 AC_MSG_RESULT([yes]) 105], 106[ 107 AC_MSG_RESULT([no]) 108 AC_MSG_ERROR([Selected compiler could not find or parse C++ standard library headers. Rerun with CC=c-compiler CXX=c++-compiler ./configure ...]) 109]) 110 AC_LANG_POP([C++]) 111fi 112 113dnl Set up variables that track whether the host compiler is GCC or Clang where 114dnl we can effectively sanity check them. We don't try to sanity check all the 115dnl other possible compilers. 116AC_MSG_CHECKING([whether GCC or Clang is our host compiler]) 117AC_LANG_PUSH([C++]) 118llvm_cv_cxx_compiler=unknown 119AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#if ! __clang__ 120 #error 121 #endif 122 ]])], 123 llvm_cv_cxx_compiler=clang, 124 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#if ! __GNUC__ 125 #error 126 #endif 127 ]])], 128 llvm_cv_cxx_compiler=gcc, [])]) 129AC_LANG_POP([C++]) 130AC_MSG_RESULT([${llvm_cv_cxx_compiler}]) 131 132dnl Configure all of the projects present in our source tree. While we could 133dnl just AC_CONFIG_SUBDIRS on the set of directories in projects that have a 134dnl configure script, that usage of the AC_CONFIG_SUBDIRS macro is deprecated. 135dnl Instead we match on the known projects. 136 137dnl 138dnl One tricky part of doing this is that some projects depend upon other 139dnl projects. For example, several projects rely upon the LLVM test suite. 140dnl We want to configure those projects first so that their object trees are 141dnl created before running the configure scripts of projects that depend upon 142dnl them. 143dnl 144 145dnl Several projects use the LLVM test suite, so configure it next. 146if test -d ${srcdir}/projects/test-suite ; then 147 AC_CONFIG_SUBDIRS([projects/test-suite]) 148fi 149 150dnl llvm-test is the old name of the test-suite, kept here for backwards 151dnl compatibility 152if test -d ${srcdir}/projects/llvm-test ; then 153 AC_CONFIG_SUBDIRS([projects/llvm-test]) 154fi 155 156dnl Some projects use poolalloc; configure that next 157if test -d ${srcdir}/projects/poolalloc ; then 158 AC_CONFIG_SUBDIRS([projects/poolalloc]) 159fi 160 161if test -d ${srcdir}/projects/llvm-poolalloc ; then 162 AC_CONFIG_SUBDIRS([projects/llvm-poolalloc]) 163fi 164 165dnl Check for all other projects 166for i in `ls ${srcdir}/projects` 167do 168 if test -d ${srcdir}/projects/${i} ; then 169 case ${i} in 170 safecode) AC_CONFIG_SUBDIRS([projects/safecode]) ;; 171 compiler-rt) ;; 172 test-suite) ;; 173 llvm-test) ;; 174 poolalloc) ;; 175 llvm-poolalloc) ;; 176 *) 177 AC_MSG_WARN([Unknown project (${i}) won't be configured automatically]) 178 ;; 179 esac 180 fi 181done 182 183dnl Disable the build of polly, even if it is checked out into tools/polly. 184AC_ARG_ENABLE(polly, 185 AS_HELP_STRING([--enable-polly], 186 [Use polly if available (default is YES)]),, 187 enableval=default) 188case "$enableval" in 189 yes) AC_SUBST(ENABLE_POLLY,[1]) ;; 190 no) AC_SUBST(ENABLE_POLLY,[0]) ;; 191 default) AC_SUBST(ENABLE_POLLY,[1]) ;; 192 *) AC_MSG_ERROR([Invalid setting for --enable-polly. Use "yes" or "no"]) ;; 193esac 194 195 196dnl Check if polly is checked out into tools/polly and configure it if 197dnl available. 198if (test -d ${srcdir}/tools/polly) && (test $ENABLE_POLLY -eq 1) ; then 199 AC_SUBST(LLVM_HAS_POLLY,1) 200 AC_CONFIG_SUBDIRS([tools/polly]) 201fi 202 203dnl===-----------------------------------------------------------------------=== 204dnl=== 205dnl=== SECTION 2: Architecture, target, and host checks 206dnl=== 207dnl===-----------------------------------------------------------------------=== 208 209dnl Check the target for which we're compiling and the host that will do the 210dnl compilations. This will tell us which LLVM compiler will be used for 211dnl compiling SSA into object code. This needs to be done early because 212dnl following tests depend on it. 213AC_CANONICAL_TARGET 214 215dnl Determine the platform type and cache its value. This helps us configure 216dnl the System library to the correct build platform. 217AC_CACHE_CHECK([type of operating system we're going to host on], 218 [llvm_cv_os_type], 219[case $host in 220 *-*-aix*) 221 llvm_cv_link_all_option="-Wl,--whole-archive" 222 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 223 llvm_cv_os_type="AIX" 224 llvm_cv_platform_type="Unix" ;; 225 *-*-irix*) 226 llvm_cv_link_all_option="-Wl,--whole-archive" 227 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 228 llvm_cv_os_type="IRIX" 229 llvm_cv_platform_type="Unix" ;; 230 *-*-cygwin*) 231 llvm_cv_link_all_option="-Wl,--whole-archive" 232 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 233 llvm_cv_os_type="Cygwin" 234 llvm_cv_platform_type="Unix" ;; 235 *-*-darwin*) 236 llvm_cv_link_all_option="-Wl,-all_load" 237 llvm_cv_no_link_all_option="-Wl,-noall_load" 238 llvm_cv_os_type="Darwin" 239 llvm_cv_platform_type="Unix" ;; 240 *-*-minix*) 241 llvm_cv_link_all_option="-Wl,-all_load" 242 llvm_cv_no_link_all_option="-Wl,-noall_load" 243 llvm_cv_os_type="Minix" 244 llvm_cv_platform_type="Unix" ;; 245 *-*-freebsd*) 246 llvm_cv_link_all_option="-Wl,--whole-archive" 247 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 248 llvm_cv_os_type="FreeBSD" 249 llvm_cv_platform_type="Unix" ;; 250 *-*-kfreebsd-gnu) 251 llvm_cv_link_all_option="-Wl,--whole-archive" 252 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 253 llvm_cv_os_type="GNU/kFreeBSD" 254 llvm_cv_platform_type="Unix" ;; 255 *-*-openbsd*) 256 llvm_cv_link_all_option="-Wl,--whole-archive" 257 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 258 llvm_cv_os_type="OpenBSD" 259 llvm_cv_platform_type="Unix" ;; 260 *-*-netbsd*) 261 llvm_cv_link_all_option="-Wl,--whole-archive" 262 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 263 llvm_cv_os_type="NetBSD" 264 llvm_cv_platform_type="Unix" ;; 265 *-*-dragonfly*) 266 llvm_cv_link_all_option="-Wl,--whole-archive" 267 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 268 llvm_cv_os_type="DragonFly" 269 llvm_cv_platform_type="Unix" ;; 270 *-*-bitrig*) 271 llvm_cv_link_all_option="-Wl,--whole-archive" 272 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 273 llvm_cv_os_type="Bitrig" 274 llvm_cv_platform_type="Unix" ;; 275 *-*-hpux*) 276 llvm_cv_link_all_option="-Wl,--whole-archive" 277 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 278 llvm_cv_os_type="HP-UX" 279 llvm_cv_platform_type="Unix" ;; 280 *-*-interix*) 281 llvm_cv_link_all_option="-Wl,--whole-archive" 282 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 283 llvm_cv_os_type="Interix" 284 llvm_cv_platform_type="Unix" ;; 285 *-*-linux*) 286 llvm_cv_link_all_option="-Wl,--whole-archive" 287 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 288 llvm_cv_os_type="Linux" 289 llvm_cv_platform_type="Unix" ;; 290 *-*-gnu*) 291 llvm_cv_link_all_option="-Wl,--whole-archive" 292 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 293 llvm_cv_os_type="GNU" 294 llvm_cv_platform_type="Unix" ;; 295 *-*-solaris*) 296 llvm_cv_link_all_option="-Wl,-z,allextract" 297 llvm_cv_no_link_all_option="-Wl,-z,defaultextract" 298 llvm_cv_os_type="SunOS" 299 llvm_cv_platform_type="Unix" ;; 300 *-*-win32*) 301 llvm_cv_link_all_option="-Wl,--whole-archive" 302 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 303 llvm_cv_os_type="Win32" 304 llvm_cv_platform_type="Win32" ;; 305 *-*-mingw*) 306 llvm_cv_link_all_option="-Wl,--whole-archive" 307 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 308 llvm_cv_os_type="MingW" 309 llvm_cv_platform_type="Win32" ;; 310 *-*-haiku*) 311 llvm_cv_link_all_option="-Wl,--whole-archive" 312 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 313 llvm_cv_os_type="Haiku" 314 llvm_cv_platform_type="Unix" ;; 315 *-unknown-eabi*) 316 llvm_cv_link_all_option="-Wl,--whole-archive" 317 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 318 llvm_cv_os_type="Freestanding" 319 llvm_cv_platform_type="Unix" ;; 320 *-unknown-elf*) 321 llvm_cv_link_all_option="-Wl,--whole-archive" 322 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 323 llvm_cv_os_type="Freestanding" 324 llvm_cv_platform_type="Unix" ;; 325 *) 326 llvm_cv_link_all_option="" 327 llvm_cv_no_link_all_option="" 328 llvm_cv_os_type="Unknown" 329 llvm_cv_platform_type="Unknown" ;; 330esac]) 331 332AC_CACHE_CHECK([type of operating system we're going to target], 333 [llvm_cv_target_os_type], 334[case $target in 335 *-*-aix*) 336 llvm_cv_target_os_type="AIX" ;; 337 *-*-irix*) 338 llvm_cv_target_os_type="IRIX" ;; 339 *-*-cygwin*) 340 llvm_cv_target_os_type="Cygwin" ;; 341 *-*-darwin*) 342 llvm_cv_target_os_type="Darwin" ;; 343 *-*-minix*) 344 llvm_cv_target_os_type="Minix" ;; 345 *-*-freebsd*) 346 llvm_cv_target_os_type="FreeBSD" ;; 347 *-*-kfreebsd-gnu) 348 llvm_cv_target_os_type="GNU/kFreeBSD" ;; 349 *-*-openbsd*) 350 llvm_cv_target_os_type="OpenBSD" ;; 351 *-*-netbsd*) 352 llvm_cv_target_os_type="NetBSD" ;; 353 *-*-dragonfly*) 354 llvm_cv_target_os_type="DragonFly" ;; 355 *-*-bitrig*) 356 llvm_cv_target_os_type="Bitrig" ;; 357 *-*-hpux*) 358 llvm_cv_target_os_type="HP-UX" ;; 359 *-*-interix*) 360 llvm_cv_target_os_type="Interix" ;; 361 *-*-linux*) 362 llvm_cv_target_os_type="Linux" ;; 363 *-*-gnu*) 364 llvm_cv_target_os_type="GNU" ;; 365 *-*-solaris*) 366 llvm_cv_target_os_type="SunOS" ;; 367 *-*-win32*) 368 llvm_cv_target_os_type="Win32" ;; 369 *-*-mingw*) 370 llvm_cv_target_os_type="MingW" ;; 371 *-*-haiku*) 372 llvm_cv_target_os_type="Haiku" ;; 373 *-*-rtems*) 374 llvm_cv_target_os_type="RTEMS" ;; 375 *-*-nacl*) 376 llvm_cv_target_os_type="NativeClient" ;; 377 *-unknown-eabi*) 378 llvm_cv_target_os_type="Freestanding" ;; 379 *-*-ps4) 380 llvm_cv_target_os_type="PS4" ;; 381 *) 382 llvm_cv_target_os_type="Unknown" ;; 383esac]) 384 385dnl Make sure we aren't attempting to configure for an unknown system 386if test "$llvm_cv_os_type" = "Unknown" ; then 387 AC_MSG_ERROR([Operating system is unknown, configure can't continue]) 388fi 389 390dnl Set the "OS" Makefile variable based on the platform type so the 391dnl makefile can configure itself to specific build hosts 392AC_SUBST(OS,$llvm_cv_os_type) 393AC_SUBST(HOST_OS,$llvm_cv_os_type) 394AC_SUBST(TARGET_OS,$llvm_cv_target_os_type) 395 396dnl Set the LINKALL and NOLINKALL Makefile variables based on the platform 397AC_SUBST(LINKALL,$llvm_cv_link_all_option) 398AC_SUBST(NOLINKALL,$llvm_cv_no_link_all_option) 399 400dnl Set the "LLVM_ON_*" variables based on llvm_cv_platform_type 401dnl This is used by lib/Support to determine the basic kind of implementation 402dnl to use. 403case $llvm_cv_platform_type in 404 Unix) 405 AC_DEFINE([LLVM_ON_UNIX],[1],[Define if this is Unixish platform]) 406 AC_SUBST(LLVM_ON_UNIX,[1]) 407 AC_SUBST(LLVM_ON_WIN32,[0]) 408 ;; 409 Win32) 410 AC_DEFINE([LLVM_ON_WIN32],[1],[Define if this is Win32ish platform]) 411 AC_SUBST(LLVM_ON_UNIX,[0]) 412 AC_SUBST(LLVM_ON_WIN32,[1]) 413 ;; 414esac 415 416dnl Determine what our target architecture is and configure accordingly. 417dnl This will allow Makefiles to make a distinction between the hardware and 418dnl the OS. 419AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch], 420[case $target in 421 i?86-*) llvm_cv_target_arch="x86" ;; 422 amd64-* | x86_64-*) llvm_cv_target_arch="x86_64" ;; 423 sparc*-*) llvm_cv_target_arch="Sparc" ;; 424 powerpc*-*) llvm_cv_target_arch="PowerPC" ;; 425 arm64*-*) llvm_cv_target_arch="AArch64" ;; 426 arm*-*) llvm_cv_target_arch="ARM" ;; 427 aarch64*-*) llvm_cv_target_arch="AArch64" ;; 428 mips-* | mips64-*) llvm_cv_target_arch="Mips" ;; 429 mipsel-* | mips64el-*) llvm_cv_target_arch="Mips" ;; 430 xcore-*) llvm_cv_target_arch="XCore" ;; 431 msp430-*) llvm_cv_target_arch="MSP430" ;; 432 hexagon-*) llvm_cv_target_arch="Hexagon" ;; 433 nvptx-*) llvm_cv_target_arch="NVPTX" ;; 434 s390x-*) llvm_cv_target_arch="SystemZ" ;; 435 *) llvm_cv_target_arch="Unknown" ;; 436esac]) 437 438if test "$llvm_cv_target_arch" = "Unknown" ; then 439 AC_MSG_WARN([Configuring LLVM for an unknown target archicture]) 440fi 441 442dnl Determine the LLVM native architecture for the target 443case "$llvm_cv_target_arch" in 444 x86) LLVM_NATIVE_ARCH="X86" ;; 445 x86_64) LLVM_NATIVE_ARCH="X86" ;; 446 *) LLVM_NATIVE_ARCH="$llvm_cv_target_arch" ;; 447esac 448 449dnl Define a substitution, ARCH, for the target architecture 450AC_SUBST(ARCH,$llvm_cv_target_arch) 451AC_SUBST(LLVM_NATIVE_ARCH,$LLVM_NATIVE_ARCH) 452 453dnl Determine what our host architecture. 454dnl This will allow MCJIT regress tests runs only for supported 455dnl platforms. 456case $host in 457 i?86-*) host_arch="x86" ;; 458 amd64-* | x86_64-*) host_arch="x86_64" ;; 459 sparc*-*) host_arch="Sparc" ;; 460 powerpc*-*) host_arch="PowerPC" ;; 461 arm64*-*) host_arch="AArch64" ;; 462 arm*-*) host_arch="ARM" ;; 463 aarch64*-*) host_arch="AArch64" ;; 464 mips-* | mips64-*) host_arch="Mips" ;; 465 mipsel-* | mips64el-*) host_arch="Mips" ;; 466 xcore-*) host_arch="XCore" ;; 467 msp430-*) host_arch="MSP430" ;; 468 hexagon-*) host_arch="Hexagon" ;; 469 s390x-*) host_arch="SystemZ" ;; 470 *) host_arch="Unknown" ;; 471esac 472 473if test "$host_arch" = "Unknown" ; then 474 AC_MSG_WARN([Configuring LLVM for an unknown host archicture]) 475fi 476 477AC_SUBST(HOST_ARCH,$host_arch) 478 479dnl Check for build platform executable suffix if we're cross-compiling 480if test "$cross_compiling" = yes; then 481 AC_SUBST(LLVM_CROSS_COMPILING, [1]) 482 AC_BUILD_EXEEXT 483 ac_build_prefix=${build_alias}- 484 AC_CHECK_PROG(BUILD_CXX, ${ac_build_prefix}g++, ${ac_build_prefix}g++) 485 if test -z "$BUILD_CXX"; then 486 AC_CHECK_PROG(BUILD_CXX, g++, g++) 487 if test -z "$BUILD_CXX"; then 488 AC_CHECK_PROG(BUILD_CXX, c++, c++, , , /usr/ucb/c++) 489 fi 490 fi 491else 492 AC_SUBST(LLVM_CROSS_COMPILING, [0]) 493fi 494 495dnl Check to see if there's a .svn or .git directory indicating that this 496dnl build is being done from a checkout. This sets up several defaults for 497dnl the command line switches. When we build with a checkout directory, 498dnl we get a debug with assertions turned on. Without, we assume a source 499dnl release and we get an optimized build without assertions. 500dnl See --enable-optimized and --enable-assertions below 501if test -d ".svn" -o -d "${srcdir}/.svn" -o -d ".git" -o -d "${srcdir}/.git"; then 502 cvsbuild="yes" 503 optimize="no" 504 AC_SUBST(CVSBUILD,[[CVSBUILD=1]]) 505else 506 cvsbuild="no" 507 optimize="yes" 508fi 509 510dnl===-----------------------------------------------------------------------=== 511dnl=== 512dnl=== SECTION 3: Command line arguments for the configure script. 513dnl=== 514dnl===-----------------------------------------------------------------------=== 515 516dnl --enable-libcpp : check whether or not to use libc++ on the command line 517AC_ARG_ENABLE(libcpp, 518 AS_HELP_STRING([--enable-libcpp], 519 [Use libc++ if available (default is NO)]),, 520 enableval=default) 521case "$enableval" in 522 yes) AC_SUBST(ENABLE_LIBCPP,[1]) ;; 523 no) AC_SUBST(ENABLE_LIBCPP,[0]) ;; 524 default) AC_SUBST(ENABLE_LIBCPP,[0]);; 525 *) AC_MSG_ERROR([Invalid setting for --enable-libcpp. Use "yes" or "no"]) ;; 526esac 527 528dnl Check both GCC and Clang for sufficiently modern versions. These checks can 529dnl be bypassed by passing a flag if necessary on a platform. We have to do 530dnl these checks here so that we have the configuration of the standard C++ 531dnl library finished. 532AC_ARG_ENABLE(compiler-version-checks, 533 AS_HELP_STRING([--enable-compiler-version-checks], 534 [Check the version of the host compiler (default is YES)]),, 535 enableval=default) 536case "$enableval" in 537 no) 538 ;; 539 yes|default) 540 AC_LANG_PUSH([C++]) 541 case "$llvm_cv_cxx_compiler" in 542 clang) 543 AC_MSG_CHECKING([whether Clang is new enough]) 544 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 545#if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 1) 546#error This version of Clang is too old to build LLVM 547#endif 548]])], 549 [AC_MSG_RESULT([yes])], 550 [AC_MSG_RESULT([no]) 551 AC_MSG_ERROR([ 552The selected Clang compiler is not new enough to build LLVM. Please upgrade to 553Clang 3.1. You may pass --disable-compiler-version-checks to configure to 554bypass these sanity checks.])]) 555 556 dnl Note that libstdc++4.6 is known broken for C++11 builds. The errors 557 dnl are sometimes deeply confusing though. Here we test for an obvious 558 dnl incomplete feature in 4.6's standard library that was completed in 559 dnl 4.7's. We also have to disable this test if 'ENABLE_LIBCPP' is set 560 dnl because the enable flags don't actually fix CXXFLAGS, they rely on 561 dnl that happening in the Makefile. 562 if test "$ENABLE_LIBCPP" -eq 0 ; then 563 AC_MSG_CHECKING([whether Clang will select a modern C++ standard library]) 564 llvm_cv_old_cxxflags="$CXXFLAGS" 565 CXXFLAGS="$CXXFLAGS -std=c++0x" 566 AC_LINK_IFELSE([AC_LANG_SOURCE([[ 567#include <atomic> 568std::atomic<float> x(0.0f); 569int main() { return (float)x; } 570]])], 571 [AC_MSG_RESULT([yes])], 572 [AC_MSG_RESULT([no]) 573 AC_MSG_ERROR([ 574We detected a missing feature in the standard C++ library that was known to be 575missing in libstdc++4.6 and implemented in libstdc++4.7. There are numerous 576C++11 problems with 4.6's library, and we don't support GCCs or libstdc++ older 577than 4.7. You will need to update your system and ensure Clang uses the newer 578standard library. 579 580If this error is incorrect or you need to force things to work, you may pass 581'--disable-compiler-version-checks' to configure to bypass this test.])]) 582 CXXFLAGS="$llvm_cv_old_cxxflags" 583 fi 584 ;; 585 gcc) 586 AC_MSG_CHECKING([whether GCC is new enough]) 587 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ 588#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7) 589#error This version of GCC is too old to build LLVM 590#endif 591]])], 592 [AC_MSG_RESULT([yes])], 593 [AC_MSG_RESULT([no]) 594 AC_MSG_ERROR([ 595The selected GCC C++ compiler is not new enough to build LLVM. Please upgrade 596to GCC 4.7. You may pass --disable-compiler-version-checks to configure to 597bypass these sanity checks.])]) 598 ;; 599 unknown) 600 ;; 601 esac 602 AC_LANG_POP([C++]) 603 ;; 604 *) 605 AC_MSG_ERROR([Invalid setting for --enable-compiler-version-checks. Use "yes" or "no"]) 606 ;; 607esac 608 609dnl --enable-cxx1y : check whether or not to use -std=c++1y on the command line 610AC_ARG_ENABLE(cxx1y, 611 AS_HELP_STRING([--enable-cxx1y], 612 [Use c++1y if available (default is NO)]),, 613 enableval=default) 614case "$enableval" in 615 yes) AC_SUBST(ENABLE_CXX1Y,[1]) ;; 616 no) AC_SUBST(ENABLE_CXX1Y,[0]) ;; 617 default) AC_SUBST(ENABLE_CXX1Y,[0]);; 618 *) AC_MSG_ERROR([Invalid setting for --enable-cxx1y. Use "yes" or "no"]) ;; 619esac 620 621dnl --enable-split-dwarf : check whether or not to use -gsplit-dwarf on the command 622dnl line 623AC_ARG_ENABLE(split-dwarf, 624 AS_HELP_STRING([--enable-split-dwarf], 625 [Use split-dwarf if available (default is NO)]),, 626 enableval=default) 627case "$enableval" in 628 yes) AC_SUBST(ENABLE_SPLIT_DWARF,[1]) ;; 629 no) AC_SUBST(ENABLE_SPLIT_DWARF,[0]) ;; 630 default) AC_SUBST(ENABLE_SPLIT_DWARF,[0]);; 631 *) AC_MSG_ERROR([Invalid setting for --enable-split-dwarf. Use "yes" or "no"]) ;; 632esac 633 634dnl --enable-clang-arcmt: check whether to enable clang arcmt 635clang_arcmt="yes" 636AC_ARG_ENABLE(clang-arcmt, 637 AS_HELP_STRING([--enable-clang-arcmt], 638 [Enable building of clang ARCMT (default is YES)]), 639 clang_arcmt="$enableval", 640 enableval="yes") 641case "$enableval" in 642 yes) AC_SUBST(ENABLE_CLANG_ARCMT,[1]) ;; 643 no) AC_SUBST(ENABLE_CLANG_ARCMT,[0]) ;; 644 default) AC_SUBST(ENABLE_CLANG_ARCMT,[1]);; 645 *) AC_MSG_ERROR([Invalid setting for --enable-clang-arcmt. Use "yes" or "no"]) ;; 646esac 647 648dnl --enable-clang-plugin-support: check whether to enable plugins in clang 649clang_plugin_support="yes" 650AC_ARG_ENABLE(clang-plugin-support, 651 AS_HELP_STRING([--enable-clang-plugin-support], 652 [Enable plugin support in clang (default is YES)]), 653 clang_plugin_support="$enableval", 654 enableval="yes") 655case "$enableval" in 656 yes) AC_SUBST(CLANG_PLUGIN_SUPPORT,[1]) ;; 657 no) AC_SUBST(CLANG_PLUGIN_SUPPORT,[0]) ;; 658 default) AC_SUBST(CLANG_PLUGIN_SUPPORT,[1]);; 659 *) AC_MSG_ERROR([Invalid setting for --enable-clang-plugin-support. Use "yes" or "no"]) ;; 660esac 661 662dnl --enable-clang-static-analyzer: check whether to enable static-analyzer 663clang_static_analyzer="yes" 664AC_ARG_ENABLE(clang-static-analyzer, 665 AS_HELP_STRING([--enable-clang-static-analyzer], 666 [Enable building of clang Static Analyzer (default is YES)]), 667 clang_static_analyzer="$enableval", 668 enableval="yes") 669case "$enableval" in 670 yes) AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[1]) ;; 671 no) 672 if test ${clang_arcmt} != "no" ; then 673 AC_MSG_ERROR([Cannot enable clang ARC Migration Tool while disabling static analyzer.]) 674 fi 675 AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[0]) 676 ;; 677 default) AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[1]);; 678 *) AC_MSG_ERROR([Invalid setting for --enable-clang-static-analyzer. Use "yes" or "no"]) ;; 679esac 680 681dnl --enable-optimized : check whether they want to do an optimized build: 682AC_ARG_ENABLE(optimized, AS_HELP_STRING( 683 --enable-optimized,[Compile with optimizations enabled (default is NO)]),,enableval=$optimize) 684if test ${enableval} = "no" ; then 685 AC_SUBST(ENABLE_OPTIMIZED,[[]]) 686else 687 AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]]) 688fi 689 690dnl --enable-profiling : check whether they want to do a profile build: 691AC_ARG_ENABLE(profiling, AS_HELP_STRING( 692 --enable-profiling,[Compile with profiling enabled (default is NO)]),,enableval="no") 693if test ${enableval} = "no" ; then 694 AC_SUBST(ENABLE_PROFILING,[[]]) 695else 696 AC_SUBST(ENABLE_PROFILING,[[ENABLE_PROFILING=1]]) 697fi 698 699dnl --enable-assertions : check whether they want to turn on assertions or not: 700AC_ARG_ENABLE(assertions,AS_HELP_STRING( 701 --enable-assertions,[Compile with assertion checks enabled (default is YES)]),, enableval="yes") 702if test ${enableval} = "yes" ; then 703 AC_SUBST(DISABLE_ASSERTIONS,[[]]) 704 assertions_enabled="yes" 705else 706 AC_SUBST(DISABLE_ASSERTIONS,[[DISABLE_ASSERTIONS=1]]) 707 assertions_enabled="no" 708fi 709 710dnl --enable-werror : check whether we want Werror on by default 711AC_ARG_ENABLE(werror,AS_HELP_STRING( 712 --enable-werror,[Compile with -Werror enabled (default is NO)]),, enableval="no") 713case "$enableval" in 714 yes) AC_SUBST(ENABLE_WERROR,[1]) ;; 715 no) AC_SUBST(ENABLE_WERROR,[0]) ;; 716 default) AC_SUBST(ENABLE_WERROR,[0]);; 717 *) AC_MSG_ERROR([Invalid setting for --enable-werror. Use "yes" or "no"]) ;; 718esac 719 720dnl --enable-expensive-checks : check whether they want to turn on expensive debug checks: 721AC_ARG_ENABLE(expensive-checks,AS_HELP_STRING( 722 --enable-expensive-checks,[Compile with expensive debug checks enabled (default is NO)]),, enableval="no") 723if test ${enableval} = "yes" ; then 724 AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[ENABLE_EXPENSIVE_CHECKS=1]]) 725 AC_SUBST(EXPENSIVE_CHECKS,[[yes]]) 726else 727 AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[]]) 728 AC_SUBST(EXPENSIVE_CHECKS,[[no]]) 729fi 730 731dnl --enable-abi-breaking-checks : decide whether we should compile in asserts and 732dnl checks that make the build ABI incompatible with an llvm built without these 733dnl checks enabled. 734AC_ARG_ENABLE(abi-breaking-checks,AS_HELP_STRING( 735 --enable-abi-breaking-checks,[Compile with abi-breaking asserts support (default is with-asserts)]),, enableval="with-asserts") 736case "$enableval" in 737 with-asserts) if test ${assertions_enabled} = "yes" ; then 738 AC_DEFINE([LLVM_ENABLE_ABI_BREAKING_CHECKS],[1],[Define to enable checks that alter the LLVM C++ ABI]) 739 AC_SUBST(ENABLE_ABI_BREAKING_CHECKS,[1]) 740 else 741 AC_SUBST(ENABLE_ABI_BREAKING_CHECKS,[0]) 742 fi ;; 743 yes) 744 AC_DEFINE([LLVM_ENABLE_ABI_BREAKING_CHECKS],[1],[Define to enable checks that alter the LLVM C++ ABI]) 745 AC_SUBST(ENABLE_ABI_BREAKING_CHECKS,[1]) 746 ;; 747 no) 748 AC_SUBST(ENABLE_ABI_BREAKING_CHECKS,[0]) 749 ;; 750 *) AC_MSG_ERROR([Invalid setting for --enable-abi-breaking-checks. Use "with-asserts", "yes" or "no"]) 751esac 752 753dnl --enable-debug-runtime : should runtime libraries have debug symbols? 754AC_ARG_ENABLE(debug-runtime, 755 AS_HELP_STRING(--enable-debug-runtime,[Build runtime libs with debug symbols (default is NO)]),,enableval=no) 756if test ${enableval} = "no" ; then 757 AC_SUBST(DEBUG_RUNTIME,[[]]) 758else 759 AC_SUBST(DEBUG_RUNTIME,[[DEBUG_RUNTIME=1]]) 760fi 761 762dnl --enable-debug-symbols : should even optimized compiler libraries 763dnl have debug symbols? 764AC_ARG_ENABLE(debug-symbols, 765 AS_HELP_STRING(--enable-debug-symbols,[Build compiler with debug symbols (default is NO if optimization is on and YES if it's off)]),,enableval=no) 766if test ${enableval} = "no" ; then 767 AC_SUBST(DEBUG_SYMBOLS,[[]]) 768else 769 AC_SUBST(DEBUG_SYMBOLS,[[DEBUG_SYMBOLS=1]]) 770fi 771 772dnl --enable-keep-symbols : do not strip installed executables 773AC_ARG_ENABLE(keep-symbols, 774 AS_HELP_STRING(--enable-keep-symbols,[Do not strip installed executables)]),,enableval=no) 775if test ${enableval} = "no" ; then 776 AC_SUBST(KEEP_SYMBOLS,[[]]) 777else 778 AC_SUBST(KEEP_SYMBOLS,[[KEEP_SYMBOLS=1]]) 779fi 780 781dnl --enable-jit: check whether they want to enable the jit 782AC_ARG_ENABLE(jit, 783 AS_HELP_STRING(--enable-jit, 784 [Enable Just In Time Compiling (default is YES)]),, 785 enableval=default) 786if test ${enableval} = "no" 787then 788 AC_SUBST(JIT,[[]]) 789else 790 case "$llvm_cv_target_arch" in 791 x86) AC_SUBST(TARGET_HAS_JIT,1) ;; 792 Sparc) AC_SUBST(TARGET_HAS_JIT,0) ;; 793 PowerPC) AC_SUBST(TARGET_HAS_JIT,1) ;; 794 x86_64) AC_SUBST(TARGET_HAS_JIT,1) ;; 795 ARM) AC_SUBST(TARGET_HAS_JIT,1) ;; 796 Mips) AC_SUBST(TARGET_HAS_JIT,1) ;; 797 XCore) AC_SUBST(TARGET_HAS_JIT,0) ;; 798 MSP430) AC_SUBST(TARGET_HAS_JIT,0) ;; 799 Hexagon) AC_SUBST(TARGET_HAS_JIT,0) ;; 800 NVPTX) AC_SUBST(TARGET_HAS_JIT,0) ;; 801 SystemZ) AC_SUBST(TARGET_HAS_JIT,1) ;; 802 *) AC_SUBST(TARGET_HAS_JIT,0) ;; 803 esac 804fi 805 806TARGETS_WITH_JIT="ARM AArch64 Mips PowerPC SystemZ X86" 807AC_SUBST(TARGETS_WITH_JIT,$TARGETS_WITH_JIT) 808 809dnl Allow enablement of building and installing docs 810AC_ARG_ENABLE(docs, 811 AS_HELP_STRING([--enable-docs], 812 [Build documents (default is YES)]),, 813 enableval=default) 814case "$enableval" in 815 yes) AC_SUBST(ENABLE_DOCS,[1]) ;; 816 no) AC_SUBST(ENABLE_DOCS,[0]) ;; 817 default) AC_SUBST(ENABLE_DOCS,[1]) ;; 818 *) AC_MSG_ERROR([Invalid setting for --enable-docs. Use "yes" or "no"]) ;; 819esac 820 821dnl Allow enablement of doxygen generated documentation 822AC_ARG_ENABLE(doxygen, 823 AS_HELP_STRING([--enable-doxygen], 824 [Build doxygen documentation (default is NO)]),, 825 enableval=default) 826case "$enableval" in 827 yes) AC_SUBST(ENABLE_DOXYGEN,[1]) ;; 828 no|default) AC_SUBST(ENABLE_DOXYGEN,[0]) ;; 829 *) AC_MSG_ERROR([Invalid setting for --enable-doxygen. Use "yes" or "no"]) ;; 830esac 831 832dnl Allow enablement of doxygen search engine 833AC_ARG_ENABLE(doxygen-search, 834 AS_HELP_STRING([--enable-doxygen-search], 835 [Enable doxygen search support (default is NO)]),, 836 enableval=default) 837ENABLE_DOXYGEN_SEARCH="$enableval" 838 839case "$enableval" in 840 yes|no|default) ;; 841 *) AC_MSG_ERROR([Invalid setting for --enable-doxygen-search. Use "yes" or "no"]) ;; 842esac 843 844AC_ARG_ENABLE(doxygen-external-search, 845 AS_HELP_STRING([--enable-doxygen-external-search], 846 [Enable doxygen exteranl search (default is NO)]),, 847 enableval=default) 848ENABLE_DOXYGEN_EXTERNAL_SEARCH="$enableval" 849 850case "$enableval" in 851 yes) 852 dnl To match with the CMake behavior, enable doxygen when 853 dnl --enable-doxygen-external-search is enabled. 854 case "$ENABLE_DOXYGEN_SEARCH" in 855 yes|default) ENABLE_DOXYGEN_SEARCH="yes" ;; 856 no) AC_MSG_ERROR([The option --enable-doxygen-external-search requires --enable-doxygen-search]) ;; 857 esac 858 ;; 859 no|default) ;; 860 *) AC_MSG_ERROR([Invalid setting for --enable-doxygen-external-search. Use "yes" or "no"]) ;; 861esac 862 863AC_ARG_WITH(doxygen-search-engine-url, 864 AS_HELP_STRING([--with-doxygen-search-engine-url], 865 [Specify the external search engine for doxygen]),,) 866WITH_DOXYGEN_SEARCH_ENGINE_URL="$withval" 867 868AC_ARG_WITH(doxygen-search-mappings, 869 AS_HELP_STRING([--with-doxygen-search-mappings], 870 [Specify the extra search mapping for doxygen]),,) 871WITH_DOXYGEN_SEARCH_MAPPINGS="$withval" 872 873case "$ENABLE_DOXYGEN_SEARCH" in 874 yes) 875 if test "$ENABLE_DOXYGEN" = "0" ; then 876 AC_MSG_ERROR([The option --enable-doxygen-search requires --enable-doxygen.]) 877 fi 878 879 AC_SUBST(enable_searchengine,[YES]) 880 881 case "$ENABLE_DOXYGEN_EXTERNAL_SEARCH" in 882 yes) 883 AC_SUBST(enable_external_search,[YES]) 884 AC_SUBST(enable_server_based_search,[YES]) 885 AC_SUBST(searchengine_url,["$WITH_DOXYGEN_SEARCH_ENGINE_URL"]) 886 AC_SUBST(extra_search_mappings,["$WITH_DOXYGEN_SEARCH_MAPPINGS"]) 887 ;; 888 889 no|default) 890 AC_SUBST(enable_external_search,[NO]) 891 AC_SUBST(enable_server_based_search,[NO]) 892 AC_SUBST(searchengine_url,[]) 893 AC_SUBST(extra_search_mappings,[]) 894 ;; 895 esac 896 ;; 897 898 no|default) 899 AC_SUBST(enable_searchengine,[NO]) 900 AC_SUBST(searchengine_url,[]) 901 AC_SUBST(enable_server_based_search,[NO]) 902 AC_SUBST(enable_external_search,[NO]) 903 AC_SUBST(extra_search_mappings,[]) 904 ;; 905 906 *) 907 AC_MSG_ERROR([Invalid setting for --enable-doxygen-search. Use "yes" or "no"]) 908 ;; 909esac 910 911dnl Allow enablement of doxygen generated Qt help files 912AC_ARG_ENABLE(doxygen-qt-help, 913 AS_HELP_STRING([--enable-doxygen-qt-help], 914 [Build Qt help files (default is NO)]),, 915 enableval=default) 916case "$enableval" in 917 yes) 918 if test "$ENABLE_DOXYGEN" = "0" ; then 919 AC_MSG_ERROR([The option --enable-doxygen-qt-help requires --enable-doxygen.]) 920 fi 921 922 AC_PATH_PROG(QHELPGENERATOR, [qhelpgenerator], [qhelpgenerator]) 923 924 dnl Qt help file for llvm doxygen documentation 925 AC_SUBST(llvm_doxygen_generate_qhp,[YES]) 926 AC_SUBST(llvm_doxygen_qch_filename,[org.llvm.qch]) 927 AC_SUBST(llvm_doxygen_qhp_namespace,[org.llvm]) 928 AC_SUBST(llvm_doxygen_qhelpgenerator_path,["$QHELPGENERATOR"]) 929 AC_SUBST(llvm_doxygen_qhp_cust_filter_name,["$PACKAGE_STRING"]) 930 AC_SUBST(llvm_doxygen_qhp_cust_filter_attrs,["$PACKAGE_NAME,$PACKAGE_VERSION"]) 931 932 dnl Qt help file for clang doxygen documentation 933 AC_SUBST(clang_doxygen_generate_qhp,[YES]) 934 AC_SUBST(clang_doxygen_qch_filename,[org.llvm.clang.qch]) 935 AC_SUBST(clang_doxygen_qhp_namespace,[org.llvm.clang]) 936 AC_SUBST(clang_doxygen_qhelpgenerator_path,["$QHELPGENERATOR"]) 937 AC_SUBST(clang_doxygen_qhp_cust_filter_name,["Clang $PACKAGE_VERSION"]) 938 AC_SUBST(clang_doxygen_qhp_cust_filter_attrs,["Clang,$PACKAGE_VERSION"]) 939 ;; 940 941 no|default) 942 AC_SUBST(llvm_doxygen_generate_qhp,[NO]) 943 AC_SUBST(llvm_doxygen_qch_filename,[]) 944 AC_SUBST(llvm_doxygen_qhp_namespace,[]) 945 AC_SUBST(llvm_doxygen_qhelpgenerator_path,[]) 946 AC_SUBST(llvm_doxygen_qhp_cust_filter_name,[]) 947 AC_SUBST(llvm_doxygen_qhp_cust_filter_attrs,[]) 948 949 AC_SUBST(clang_doxygen_generate_qhp,[NO]) 950 AC_SUBST(clang_doxygen_qch_filename,[]) 951 AC_SUBST(clang_doxygen_qhp_namespace,[]) 952 AC_SUBST(clang_doxygen_qhelpgenerator_path,[]) 953 AC_SUBST(clang_doxygen_qhp_cust_filter_name,["Clang $PACKAGE_VERSION"]) 954 AC_SUBST(clang_doxygen_qhp_cust_filter_attrs,["Clang,$PACKAGE_VERSION"]) 955 ;; 956 957 *) 958 AC_MSG_ERROR([Invalid setting for --enable-doxygen-qt-help. Use "yes" or "no"]) ;; 959esac 960 961dnl Allow disablement of threads 962AC_ARG_ENABLE(threads, 963 AS_HELP_STRING([--enable-threads], 964 [Use threads if available (default is YES)]),, 965 enableval=default) 966case "$enableval" in 967 yes) AC_SUBST(LLVM_ENABLE_THREADS,[1]) ;; 968 no) AC_SUBST(LLVM_ENABLE_THREADS,[0]) ;; 969 default) AC_SUBST(LLVM_ENABLE_THREADS,[1]) ;; 970 *) AC_MSG_ERROR([Invalid setting for --enable-threads. Use "yes" or "no"]) ;; 971esac 972AC_DEFINE_UNQUOTED([LLVM_ENABLE_THREADS],$LLVM_ENABLE_THREADS, 973 [Define if threads enabled]) 974 975dnl Allow disablement of pthread.h 976AC_ARG_ENABLE(pthreads, 977 AS_HELP_STRING([--enable-pthreads], 978 [Use pthreads if available (default is YES)]),, 979 enableval=default) 980case "$enableval" in 981 yes) AC_SUBST(ENABLE_PTHREADS,[1]) ;; 982 no) AC_SUBST(ENABLE_PTHREADS,[0]) ;; 983 default) AC_SUBST(ENABLE_PTHREADS,[1]) ;; 984 *) AC_MSG_ERROR([Invalid setting for --enable-pthreads. Use "yes" or "no"]) ;; 985esac 986 987dnl Allow disablement of zlib 988AC_ARG_ENABLE(zlib, 989 AS_HELP_STRING([--enable-zlib], 990 [Use zlib for compression/decompression if 991 available (default is YES)]),, 992 enableval=default) 993case "$enableval" in 994 yes) AC_SUBST(LLVM_ENABLE_ZLIB,[1]) ;; 995 no) AC_SUBST(LLVM_ENABLE_ZLIB,[0]) ;; 996 default) AC_SUBST(LLVM_ENABLE_ZLIB,[1]) ;; 997 *) AC_MSG_ERROR([Invalid setting for --enable-zlib. Use "yes" or "no"]) ;; 998esac 999AC_DEFINE_UNQUOTED([LLVM_ENABLE_ZLIB],$LLVM_ENABLE_ZLIB, 1000 [Define if zlib is enabled]) 1001 1002dnl Allow building without position independent code 1003AC_ARG_ENABLE(pic, 1004 AS_HELP_STRING([--enable-pic], 1005 [Build LLVM with Position Independent Code (default is YES)]),, 1006 enableval=default) 1007case "$enableval" in 1008 yes) AC_SUBST(ENABLE_PIC,[1]) ;; 1009 no) AC_SUBST(ENABLE_PIC,[0]) ;; 1010 default) AC_SUBST(ENABLE_PIC,[1]) ;; 1011 *) AC_MSG_ERROR([Invalid setting for --enable-pic. Use "yes" or "no"]) ;; 1012esac 1013AC_DEFINE_UNQUOTED([ENABLE_PIC],$ENABLE_PIC, 1014 [Define if position independent code is enabled]) 1015 1016dnl Allow building a shared library and linking tools against it. 1017AC_ARG_ENABLE(shared, 1018 AS_HELP_STRING([--enable-shared], 1019 [Build a shared library and link tools against it (default is NO)]),, 1020 enableval=default) 1021case "$enableval" in 1022 yes) AC_SUBST(ENABLE_SHARED,[1]) ;; 1023 no) AC_SUBST(ENABLE_SHARED,[0]) ;; 1024 default) AC_SUBST(ENABLE_SHARED,[0]) ;; 1025 *) AC_MSG_ERROR([Invalid setting for --enable-shared. Use "yes" or "no"]) ;; 1026esac 1027 1028dnl Allow libstdc++ is embedded in LLVM.dll. 1029AC_ARG_ENABLE(embed-stdcxx, 1030 AS_HELP_STRING([--enable-embed-stdcxx], 1031 [Build a shared library with embedded libstdc++ for Win32 DLL (default is NO)]),, 1032 enableval=default) 1033case "$enableval" in 1034 yes) AC_SUBST(ENABLE_EMBED_STDCXX,[1]) ;; 1035 no) AC_SUBST(ENABLE_EMBED_STDCXX,[0]) ;; 1036 default) AC_SUBST(ENABLE_EMBED_STDCXX,[0]) ;; 1037 *) AC_MSG_ERROR([Invalid setting for --enable-embed-stdcxx. Use "yes" or "no"]) ;; 1038esac 1039 1040dnl Enable embedding timestamp information into build. 1041AC_ARG_ENABLE(timestamps, 1042 AS_HELP_STRING([--enable-timestamps], 1043 [Enable embedding timestamp information in build (default is YES)]),, 1044 enableval=default) 1045case "$enableval" in 1046 yes) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;; 1047 no) AC_SUBST(ENABLE_TIMESTAMPS,[0]) ;; 1048 default) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;; 1049 *) AC_MSG_ERROR([Invalid setting for --enable-timestamps. Use "yes" or "no"]) ;; 1050esac 1051AC_DEFINE_UNQUOTED([ENABLE_TIMESTAMPS],$ENABLE_TIMESTAMPS, 1052 [Define if timestamp information (e.g., __DATE__) is allowed]) 1053 1054dnl Enable support for showing backtraces. 1055AC_ARG_ENABLE(backtraces, AS_HELP_STRING( 1056 [--enable-backtraces], 1057 [Enable embedding backtraces on crash (default is YES)]), 1058 [case "$enableval" in 1059 yes) llvm_cv_enable_backtraces="yes" ;; 1060 no) llvm_cv_enable_backtraces="no" ;; 1061 *) AC_MSG_ERROR([Invalid setting for --enable-backtraces. Use "yes" or "no"]) ;; 1062 esac], 1063 llvm_cv_enable_backtraces="yes") 1064if test "$llvm_cv_enable_backtraces" = "yes" ; then 1065 AC_DEFINE([ENABLE_BACKTRACES],[1], 1066 [Define if you want backtraces on crash]) 1067fi 1068 1069dnl Enable installing platform specific signal handling overrides, for improved 1070dnl CrashRecovery support or interaction with crash reporting software. This 1071dnl support may be inappropriate for some clients embedding LLVM as a library. 1072AC_ARG_ENABLE(crash-overrides, AS_HELP_STRING( 1073 [--enable-crash-overrides], 1074 [Enable crash handling overrides (default is YES)]), 1075 [case "$enableval" in 1076 yes) llvm_cv_enable_crash_overrides="yes" ;; 1077 no) llvm_cv_enable_crash_overrides="no" ;; 1078 *) AC_MSG_ERROR([Invalid setting for --enable-crash-overrides. Use "yes" or "no"]) ;; 1079 esac], 1080 llvm_cv_enable_crash_overrides="yes") 1081if test "$llvm_cv_enable_crash_overrides" = "yes" ; then 1082 AC_DEFINE([ENABLE_CRASH_OVERRIDES],[1], 1083 [Define to enable crash handling overrides]) 1084fi 1085 1086dnl List all possible targets 1087ALL_TARGETS="X86 Sparc PowerPC ARM AArch64 Mips XCore MSP430 CppBackend NVPTX Hexagon SystemZ R600" 1088AC_SUBST(ALL_TARGETS,$ALL_TARGETS) 1089 1090dnl Allow specific targets to be specified for building (or not) 1091TARGETS_TO_BUILD="" 1092AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-targets], 1093 [Build specific host targets: all or target1,target2,... Valid targets are: 1094 host, x86, x86_64, sparc, powerpc, arm64, arm, aarch64, mips, hexagon, 1095 xcore, msp430, nvptx, systemz, r600, and cpp (default=all)]),, 1096 enableval=all) 1097if test "$enableval" = host-only ; then 1098 enableval=host 1099fi 1100case "$enableval" in 1101 all) TARGETS_TO_BUILD="$ALL_TARGETS" ;; 1102 *)for a_target in `echo $enableval|sed -e 's/,/ /g' ` ; do 1103 case "$a_target" in 1104 x86) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;; 1105 x86_64) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;; 1106 sparc) TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;; 1107 powerpc) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;; 1108 aarch64) TARGETS_TO_BUILD="AArch64 $TARGETS_TO_BUILD" ;; 1109 arm64) TARGETS_TO_BUILD="AArch64 $TARGETS_TO_BUILD" ;; 1110 arm) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;; 1111 mips) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;; 1112 mipsel) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;; 1113 mips64) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;; 1114 mips64el) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;; 1115 xcore) TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;; 1116 msp430) TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;; 1117 cpp) TARGETS_TO_BUILD="CppBackend $TARGETS_TO_BUILD" ;; 1118 hexagon) TARGETS_TO_BUILD="Hexagon $TARGETS_TO_BUILD" ;; 1119 nvptx) TARGETS_TO_BUILD="NVPTX $TARGETS_TO_BUILD" ;; 1120 systemz) TARGETS_TO_BUILD="SystemZ $TARGETS_TO_BUILD" ;; 1121 r600) TARGETS_TO_BUILD="R600 $TARGETS_TO_BUILD" ;; 1122 host) case "$llvm_cv_target_arch" in 1123 x86) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;; 1124 x86_64) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;; 1125 Sparc) TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;; 1126 PowerPC) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;; 1127 AArch64) TARGETS_TO_BUILD="AArch64 $TARGETS_TO_BUILD" ;; 1128 ARM) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;; 1129 Mips) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;; 1130 XCore) TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;; 1131 MSP430) TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;; 1132 Hexagon) TARGETS_TO_BUILD="Hexagon $TARGETS_TO_BUILD" ;; 1133 NVPTX) TARGETS_TO_BUILD="NVPTX $TARGETS_TO_BUILD" ;; 1134 SystemZ) TARGETS_TO_BUILD="SystemZ $TARGETS_TO_BUILD" ;; 1135 *) AC_MSG_ERROR([Can not set target to build]) ;; 1136 esac ;; 1137 *) AC_MSG_ERROR([Unrecognized target $a_target]) ;; 1138 esac 1139 done 1140 ;; 1141esac 1142 1143AC_ARG_ENABLE([experimental-targets],AS_HELP_STRING([--enable-experimental-targets], 1144 [Build experimental host targets: disable or target1,target2,... 1145 (default=disable)]),, 1146 enableval=disable) 1147 1148if test ${enableval} != "disable" 1149then 1150 TARGETS_TO_BUILD="$enableval $TARGETS_TO_BUILD" 1151fi 1152 1153AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD) 1154 1155dnl Determine whether we are building LLVM support for the native architecture. 1156dnl If so, define LLVM_NATIVE_ARCH to that LLVM target. 1157for a_target in $TARGETS_TO_BUILD; do 1158 if test "$a_target" = "$LLVM_NATIVE_ARCH"; then 1159 AC_DEFINE_UNQUOTED(LLVM_NATIVE_ARCH, $LLVM_NATIVE_ARCH, 1160 [LLVM architecture name for the native architecture, if available]) 1161 LLVM_NATIVE_TARGET="LLVMInitialize${LLVM_NATIVE_ARCH}Target" 1162 LLVM_NATIVE_TARGETINFO="LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo" 1163 LLVM_NATIVE_TARGETMC="LLVMInitialize${LLVM_NATIVE_ARCH}TargetMC" 1164 LLVM_NATIVE_ASMPRINTER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter" 1165 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then 1166 LLVM_NATIVE_ASMPARSER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmParser" 1167 fi 1168 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/Makefile ; then 1169 LLVM_NATIVE_DISASSEMBLER="LLVMInitialize${LLVM_NATIVE_ARCH}Disassembler" 1170 fi 1171 AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGET, $LLVM_NATIVE_TARGET, 1172 [LLVM name for the native Target init function, if available]) 1173 AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETINFO, $LLVM_NATIVE_TARGETINFO, 1174 [LLVM name for the native TargetInfo init function, if available]) 1175 AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETMC, $LLVM_NATIVE_TARGETMC, 1176 [LLVM name for the native target MC init function, if available]) 1177 AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPRINTER, $LLVM_NATIVE_ASMPRINTER, 1178 [LLVM name for the native AsmPrinter init function, if available]) 1179 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then 1180 AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPARSER, $LLVM_NATIVE_ASMPARSER, 1181 [LLVM name for the native AsmParser init function, if available]) 1182 fi 1183 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/Makefile ; then 1184 AC_DEFINE_UNQUOTED(LLVM_NATIVE_DISASSEMBLER, $LLVM_NATIVE_DISASSEMBLER, 1185 [LLVM name for the native Disassembler init function, if available]) 1186 fi 1187 fi 1188done 1189 1190dnl Build the LLVM_TARGET and LLVM_... macros for Targets.def and the individual 1191dnl target feature def files. 1192LLVM_ENUM_TARGETS="" 1193LLVM_ENUM_ASM_PRINTERS="" 1194LLVM_ENUM_ASM_PARSERS="" 1195LLVM_ENUM_DISASSEMBLERS="" 1196for target_to_build in $TARGETS_TO_BUILD; do 1197 LLVM_ENUM_TARGETS="LLVM_TARGET($target_to_build) $LLVM_ENUM_TARGETS" 1198 if test -f ${srcdir}/lib/Target/${target_to_build}/*AsmPrinter.cpp ; then 1199 LLVM_ENUM_ASM_PRINTERS="LLVM_ASM_PRINTER($target_to_build) $LLVM_ENUM_ASM_PRINTERS"; 1200 fi 1201 if test -f ${srcdir}/lib/Target/${target_to_build}/AsmParser/Makefile ; then 1202 LLVM_ENUM_ASM_PARSERS="LLVM_ASM_PARSER($target_to_build) $LLVM_ENUM_ASM_PARSERS"; 1203 fi 1204 if test -f ${srcdir}/lib/Target/${target_to_build}/Disassembler/Makefile ; then 1205 LLVM_ENUM_DISASSEMBLERS="LLVM_DISASSEMBLER($target_to_build) $LLVM_ENUM_DISASSEMBLERS"; 1206 fi 1207done 1208AC_SUBST(LLVM_ENUM_TARGETS) 1209AC_SUBST(LLVM_ENUM_ASM_PRINTERS) 1210AC_SUBST(LLVM_ENUM_ASM_PARSERS) 1211AC_SUBST(LLVM_ENUM_DISASSEMBLERS) 1212 1213dnl Override the option to use for optimized builds. 1214AC_ARG_WITH(optimize-option, 1215 AS_HELP_STRING([--with-optimize-option], 1216 [Select the compiler options to use for optimized builds]),, 1217 withval=default) 1218AC_MSG_CHECKING([optimization flags]) 1219case "$withval" in 1220 default) 1221 case "$llvm_cv_os_type" in 1222 FreeBSD) optimize_option=-O2 ;; 1223 MingW) optimize_option=-O2 ;; 1224 *) optimize_option=-O3 ;; 1225 esac ;; 1226 *) optimize_option="$withval" ;; 1227esac 1228AC_SUBST(OPTIMIZE_OPTION,$optimize_option) 1229AC_MSG_RESULT([$optimize_option]) 1230 1231dnl Specify extra build options 1232AC_ARG_WITH(extra-options, 1233 AS_HELP_STRING([--with-extra-options], 1234 [Specify additional options to compile LLVM with]),, 1235 withval=default) 1236case "$withval" in 1237 default) EXTRA_OPTIONS= ;; 1238 *) EXTRA_OPTIONS=$withval ;; 1239esac 1240AC_SUBST(EXTRA_OPTIONS,$EXTRA_OPTIONS) 1241 1242dnl Specify extra linker build options 1243AC_ARG_WITH(extra-ld-options, 1244 AS_HELP_STRING([--with-extra-ld-options], 1245 [Specify additional options to link LLVM with]),, 1246 withval=default) 1247case "$withval" in 1248 default) EXTRA_LD_OPTIONS= ;; 1249 *) EXTRA_LD_OPTIONS=$withval ;; 1250esac 1251AC_SUBST(EXTRA_LD_OPTIONS,$EXTRA_LD_OPTIONS) 1252 1253dnl Allow specific bindings to be specified for building (or not) 1254AC_ARG_ENABLE([bindings],AS_HELP_STRING([--enable-bindings], 1255 [Build specific language bindings: all,auto,none,{binding-name} (default=auto)]),, 1256 enableval=default) 1257BINDINGS_TO_BUILD="" 1258case "$enableval" in 1259 yes | default | auto) BINDINGS_TO_BUILD="auto" ;; 1260 all ) BINDINGS_TO_BUILD="ocaml" ;; 1261 none | no) BINDINGS_TO_BUILD="" ;; 1262 *)for a_binding in `echo $enableval|sed -e 's/,/ /g' ` ; do 1263 case "$a_binding" in 1264 ocaml) BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD" ;; 1265 *) AC_MSG_ERROR([Unrecognized binding $a_binding]) ;; 1266 esac 1267 done 1268 ;; 1269esac 1270 1271dnl Allow the ocaml libdir to be overridden. This could go in a configure 1272dnl script for bindings/ocaml/configure, except that its auto value depends on 1273dnl OCAMLC, which is found here to support tests. 1274AC_ARG_WITH([ocaml-libdir], 1275 [AS_HELP_STRING([--with-ocaml-libdir], 1276 [Specify install location for ocaml bindings (default is stdlib)])], 1277 [], 1278 [withval=auto]) 1279case "$withval" in 1280 auto) with_ocaml_libdir="$withval" ;; 1281 /* | [[A-Za-z]]:[[\\/]]*) with_ocaml_libdir="$withval" ;; 1282 *) AC_MSG_ERROR([Invalid path for --with-ocaml-libdir. Provide full path]) ;; 1283esac 1284 1285AC_ARG_WITH(clang-srcdir, 1286 AS_HELP_STRING([--with-clang-srcdir], 1287 [Directory to the out-of-tree Clang source]),, 1288 withval="-") 1289case "$withval" in 1290 -) clang_src_root="" ;; 1291 /* | [[A-Za-z]]:[[\\/]]*) clang_src_root="$withval" ;; 1292 *) clang_src_root="$ac_pwd/$withval" ;; 1293esac 1294AC_SUBST(CLANG_SRC_ROOT,[$clang_src_root]) 1295 1296AC_ARG_WITH(clang-resource-dir, 1297 AS_HELP_STRING([--with-clang-resource-dir], 1298 [Relative directory from the Clang binary for resource files]),, 1299 withval="") 1300AC_DEFINE_UNQUOTED(CLANG_RESOURCE_DIR,"$withval", 1301 [Relative directory for resource files]) 1302 1303AC_ARG_WITH(c-include-dirs, 1304 AS_HELP_STRING([--with-c-include-dirs], 1305 [Colon separated list of directories clang will search for headers]),, 1306 withval="") 1307AC_DEFINE_UNQUOTED(C_INCLUDE_DIRS,"$withval", 1308 [Directories clang will search for headers]) 1309 1310# Clang normally uses the system c++ headers and libraries. With this option, 1311# clang will use the ones provided by a gcc installation instead. This option should 1312# be passed the same value that was used with --prefix when configuring gcc. 1313AC_ARG_WITH(gcc-toolchain, 1314 AS_HELP_STRING([--with-gcc-toolchain], 1315 [Directory where gcc is installed.]),, 1316 withval="") 1317AC_DEFINE_UNQUOTED(GCC_INSTALL_PREFIX,"$withval", 1318 [Directory where gcc is installed.]) 1319 1320AC_ARG_WITH(default-sysroot, 1321 AS_HELP_STRING([--with-default-sysroot], 1322 [Add --sysroot=<path> to all compiler invocations.]),, 1323 withval="") 1324AC_DEFINE_UNQUOTED(DEFAULT_SYSROOT,"$withval", 1325 [Default <path> to all compiler invocations for --sysroot=<path>.]) 1326 1327dnl Allow linking of LLVM with GPLv3 binutils code. 1328AC_ARG_WITH(binutils-include, 1329 AS_HELP_STRING([--with-binutils-include], 1330 [Specify path to binutils/include/ containing plugin-api.h file for gold plugin.]),, 1331 withval=default) 1332case "$withval" in 1333 default) WITH_BINUTILS_INCDIR=default ;; 1334 /* | [[A-Za-z]]:[[\\/]]*) WITH_BINUTILS_INCDIR=$withval ;; 1335 *) AC_MSG_ERROR([Invalid path for --with-binutils-include. Provide full path]) ;; 1336esac 1337if test "x$WITH_BINUTILS_INCDIR" != xdefault ; then 1338 AC_SUBST(BINUTILS_INCDIR,$WITH_BINUTILS_INCDIR) 1339 if test ! -f "$WITH_BINUTILS_INCDIR/plugin-api.h"; then 1340 echo "$WITH_BINUTILS_INCDIR/plugin-api.h" 1341 AC_MSG_ERROR([Invalid path to directory containing plugin-api.h.]); 1342 fi 1343fi 1344 1345dnl Specify the URL where bug reports should be submitted. 1346AC_ARG_WITH(bug-report-url, 1347 AS_HELP_STRING([--with-bug-report-url], 1348 [Specify the URL where bug reports should be submitted (default=http://llvm.org/bugs/)]),, 1349 withval="http://llvm.org/bugs/") 1350AC_DEFINE_UNQUOTED(BUG_REPORT_URL,"$withval", 1351 [Bug report URL.]) 1352 1353dnl --enable-terminfo: check whether the user wants to control use of terminfo: 1354AC_ARG_ENABLE(terminfo,AS_HELP_STRING( 1355 [--enable-terminfo], 1356 [Query the terminfo database if available (default is YES)]), 1357 [case "$enableval" in 1358 yes) llvm_cv_enable_terminfo="yes" ;; 1359 no) llvm_cv_enable_terminfo="no" ;; 1360 *) AC_MSG_ERROR([Invalid setting for --enable-terminfo. Use "yes" or "no"]) ;; 1361 esac], 1362 llvm_cv_enable_terminfo="yes") 1363case "$llvm_cv_enable_terminfo" in 1364 yes) AC_SUBST(ENABLE_TERMINFO,[1]) ;; 1365 no) AC_SUBST(ENABLE_TERMINFO,[0]) ;; 1366esac 1367 1368dnl --enable-libedit: check whether the user wants to turn off libedit. 1369AC_ARG_ENABLE(libedit,AS_HELP_STRING( 1370 [--enable-libedit], 1371 [Use libedit if available (default is YES)]), 1372 [case "$enableval" in 1373 yes) llvm_cv_enable_libedit="yes" ;; 1374 no) llvm_cv_enable_libedit="no" ;; 1375 *) AC_MSG_ERROR([Invalid setting for --enable-libedit. Use "yes" or "no"]) ;; 1376 esac], 1377 llvm_cv_enable_libedit="yes") 1378 1379dnl --enable-libffi : check whether the user wants to turn off libffi: 1380AC_ARG_ENABLE(libffi,AS_HELP_STRING( 1381 --enable-libffi,[Check for the presence of libffi (default is NO)]), 1382 [case "$enableval" in 1383 yes) llvm_cv_enable_libffi="yes" ;; 1384 no) llvm_cv_enable_libffi="no" ;; 1385 *) AC_MSG_ERROR([Invalid setting for --enable-libffi. Use "yes" or "no"]) ;; 1386 esac], 1387 llvm_cv_enable_libffi=no) 1388 1389AC_ARG_WITH(internal-prefix, 1390 AS_HELP_STRING([--with-internal-prefix], 1391 [Installation directory for internal files]),, 1392 withval="") 1393AC_SUBST(INTERNAL_PREFIX,[$withval]) 1394 1395dnl===-----------------------------------------------------------------------=== 1396dnl=== 1397dnl=== SECTION 4: Check for programs we need and that they are the right version 1398dnl=== 1399dnl===-----------------------------------------------------------------------=== 1400 1401dnl Check for the tools that the makefiles require 1402AC_CHECK_GNU_MAKE 1403AC_PROG_LN_S 1404AC_PATH_PROG(NM, [nm], [nm]) 1405AC_PATH_PROG(CMP, [cmp], [cmp]) 1406AC_PATH_PROG(CP, [cp], [cp]) 1407AC_PATH_PROG(DATE, [date], [date]) 1408AC_PATH_PROG(FIND, [find], [find]) 1409AC_PATH_PROG(GREP, [grep], [grep]) 1410AC_PATH_PROG(MKDIR,[mkdir],[mkdir]) 1411AC_PATH_PROG(MV, [mv], [mv]) 1412AC_PROG_RANLIB 1413AC_CHECK_TOOL(AR, ar, false) 1414AC_PATH_PROG(RM, [rm], [rm]) 1415AC_PATH_PROG(SED, [sed], [sed]) 1416AC_PATH_PROG(TAR, [tar], [gtar]) 1417AC_PATH_PROG(BINPWD,[pwd], [pwd]) 1418 1419dnl Looking for misc. graph plotting software 1420AC_PATH_PROG(DOT, [dot], [echo dot]) 1421if test "$DOT" != "echo dot" ; then 1422 AC_DEFINE([HAVE_DOT],[1],[Define if the dot program is available]) 1423 dnl If we're targeting for mingw we should emit windows paths, not msys 1424 if test "$llvm_cv_os_type" = "MingW" ; then 1425 DOT=`echo $DOT | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 1426 fi 1427 AC_DEFINE_UNQUOTED([LLVM_PATH_DOT],"$DOT${EXEEXT}", 1428 [Define to path to dot program if found or 'echo dot' otherwise]) 1429fi 1430 1431dnl Find the install program 1432AC_PROG_INSTALL 1433dnl Prepend src dir to install path dir if it's a relative path 1434dnl This is a hack for installs that take place in something other 1435dnl than the top level. 1436case "$INSTALL" in 1437 [[\\/$]]* | ?:[[\\/]]* ) ;; 1438 *) INSTALL="\\\$(TOPSRCDIR)/$INSTALL" ;; 1439esac 1440 1441dnl Checks for documentation and testing tools that we can do without. If these 1442dnl are not found then they are set to "true" which always succeeds but does 1443dnl nothing. This just lets the build output show that we could have done 1444dnl something if the tool was available. 1445AC_PATH_PROG(BZIP2, [bzip2]) 1446AC_PATH_PROG(CAT, [cat]) 1447AC_PATH_PROG(DOXYGEN, [doxygen]) 1448AC_PATH_PROG(GROFF, [groff]) 1449AC_PATH_PROG(GZIPBIN, [gzip]) 1450AC_PATH_PROG(PDFROFF, [pdfroff]) 1451AC_PATH_PROG(ZIP, [zip]) 1452AC_PATH_PROG(GO, [go]) 1453AC_PATH_PROGS(OCAMLFIND, [ocamlfind]) 1454AC_PATH_PROGS(GAS, [gas as]) 1455 1456dnl Get the version of the linker in use. 1457AC_LINK_GET_VERSION 1458 1459dnl Determine whether the linker supports the -R option. 1460AC_LINK_USE_R 1461 1462dnl Determine whether the compiler supports the -rdynamic option. 1463AC_LINK_EXPORT_DYNAMIC 1464 1465dnl Determine whether the linker supports the --version-script option. 1466AC_LINK_VERSION_SCRIPT 1467 1468AC_CHECK_HEADERS([errno.h]) 1469 1470case "$llvm_cv_os_type" in 1471 Cygwin|MingW|Win32) llvm_shlib_ext=.dll ;; 1472 Darwin) llvm_shlib_ext=.dylib ;; 1473 *) llvm_shlib_ext=.so ;; 1474esac 1475 1476AC_DEFINE_UNQUOTED([LTDL_SHLIB_EXT], ["$llvm_shlib_ext"], [The shared library extension]) 1477 1478AC_MSG_CHECKING([tool compatibility]) 1479 1480dnl Ensure that compilation tools are GCC or a GNU compatible compiler such as 1481dnl ICC; we use GCC specific options in the makefiles so the compiler needs 1482dnl to support those options. 1483dnl "icc" emits gcc signatures 1484dnl "icc -no-gcc" emits no gcc signature BUT is still compatible 1485ICC=no 1486IXX=no 1487case $CC in 1488 icc*|icpc*) 1489 ICC=yes 1490 IXX=yes 1491 ;; 1492 *) 1493 ;; 1494esac 1495 1496if test "$GCC" != "yes" && test "$ICC" != "yes" 1497then 1498 AC_MSG_ERROR([gcc|icc required but not found]) 1499fi 1500 1501dnl Ensure that compilation tools are compatible with GCC extensions 1502if test "$GXX" != "yes" && test "$IXX" != "yes" 1503then 1504 AC_MSG_ERROR([g++|clang++|icc required but not found]) 1505fi 1506 1507dnl Verify that GCC is version 3.0 or higher 1508if test "$GCC" = "yes" 1509then 1510 AC_COMPILE_IFELSE( 1511[ 1512 AC_LANG_SOURCE([[ 1513 #if !defined(__GNUC__) || __GNUC__ < 3 1514 #error Unsupported GCC version 1515 #endif 1516 ]]) 1517], 1518[], [AC_MSG_ERROR([gcc 3.x required, but you have a lower version])]) 1519fi 1520 1521dnl Check for GNU Make. We use its extensions, so don't build without it 1522if test -z "$llvm_cv_gnu_make_command" 1523then 1524 AC_MSG_ERROR([GNU Make required but not found]) 1525fi 1526 1527dnl Tool compatibility is okay if we make it here. 1528AC_MSG_RESULT([ok]) 1529 1530dnl Check optional compiler flags. 1531AC_MSG_CHECKING([optional compiler flags]) 1532CXX_FLAG_CHECK(NO_VARIADIC_MACROS, [-Wno-variadic-macros]) 1533CXX_FLAG_CHECK(NO_MISSING_FIELD_INITIALIZERS, [-Wno-missing-field-initializers]) 1534CXX_FLAG_CHECK(COVERED_SWITCH_DEFAULT, [-Wcovered-switch-default]) 1535 1536dnl GCC's potential uninitialized use analysis is weak and presents lots of 1537dnl false positives, so disable it. 1538NO_UNINITIALIZED= 1539NO_MAYBE_UNINITIALIZED= 1540if test "$GXX" = "yes" 1541then 1542 CXX_FLAG_CHECK(NO_MAYBE_UNINITIALIZED, [-Wno-maybe-uninitialized]) 1543 dnl gcc 4.7 introduced -Wmaybe-uninitialized to distinguish cases which are 1544 dnl known to be uninitialized from cases which might be uninitialized. We 1545 dnl still want to catch the first kind of errors. 1546 if test -z "$NO_MAYBE_UNINITIALIZED" 1547 then 1548 CXX_FLAG_CHECK(NO_UNINITIALIZED, [-Wno-uninitialized]) 1549 fi 1550fi 1551 1552dnl Check for misbehaving -Wcomment (gcc-4.7 has this) and maybe add 1553dnl -Wno-comment to the flags. 1554no_comment= 1555llvm_cv_old_cxxflags="$CXXFLAGS" 1556CXXFLAGS="$CXXFLAGS -Wcomment -Werror" 1557AC_COMPILE_IFELSE( 1558[ 1559 AC_LANG_SOURCE([[// Comment \o\ 1560// Another comment 1561int main() { return 0; } 1562 ]]) 1563], 1564[ 1565 no_comment=-Wno-comment 1566], 1567[]) 1568AC_SUBST(NO_COMMENT, [$no_comment]) 1569CXXFLAGS="$llvm_cv_old_cxxflags" 1570 1571AC_MSG_RESULT([$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED $NO_MAYBE_UNINITIALIZED $NO_COMMENT]) 1572 1573AC_ARG_WITH([python], 1574 [AS_HELP_STRING([--with-python], [path to python])], 1575 [PYTHON="$withval"]) 1576 1577if test -n "$PYTHON" && test -x "$PYTHON" ; then 1578 AC_MSG_CHECKING([for python]) 1579 AC_MSG_RESULT([user defined: $with_python]) 1580else 1581 if test -n "$PYTHON" ; then 1582 AC_MSG_WARN([specified python ($PYTHON) is not usable, searching path]) 1583 fi 1584 1585 AC_PATH_PROG([PYTHON], [python python2 python27], 1586 [AC_MSG_RESULT([not found]) 1587 AC_MSG_ERROR([could not find python 2.7 or higher])]) 1588fi 1589 1590AC_MSG_CHECKING([for python >= 2.7]) 1591ac_python_version=`$PYTHON -V 2>&1 | cut -d' ' -f2` 1592ac_python_version_major=`echo $ac_python_version | cut -d'.' -f1` 1593ac_python_version_minor=`echo $ac_python_version | cut -d'.' -f2` 1594ac_python_version_patch=`echo $ac_python_version | cut -d'.' -f3` 1595if test "$ac_python_version_major" -gt "2" || \ 1596 (test "$ac_python_version_major" -eq "2" && \ 1597 test "$ac_python_version_minor" -ge "7") ; then 1598 AC_MSG_RESULT([$PYTHON ($ac_python_version)]) 1599else 1600 AC_MSG_RESULT([not found]) 1601 AC_MSG_FAILURE([found python $ac_python_version ($PYTHON); required >= 2.7]) 1602fi 1603 1604dnl===-----------------------------------------------------------------------=== 1605dnl=== 1606dnl=== SECTION 5: Check for libraries 1607dnl=== 1608dnl===-----------------------------------------------------------------------=== 1609 1610AC_CHECK_LIB(m,sin) 1611if test "$llvm_cv_os_type" = "MingW" ; then 1612 AC_CHECK_LIB(imagehlp, main) 1613 AC_CHECK_LIB(psapi, main) 1614 AC_CHECK_LIB(shell32, main) 1615fi 1616 1617dnl dlopen() is required for plugin support. 1618AC_SEARCH_LIBS(dlopen,dl,LLVM_DEFINE_SUBST([HAVE_DLOPEN],[1], 1619 [Define if dlopen() is available on this platform.]), 1620 AC_MSG_WARN([dlopen() not found - disabling plugin support])) 1621 1622dnl Search for the clock_gettime() function. Note that we rely on the POSIX 1623dnl macros to detect whether clock_gettime is available, this just finds the 1624dnl right libraries to link with. 1625AC_SEARCH_LIBS(clock_gettime,rt) 1626 1627dnl The curses library is optional; used for querying terminal info 1628if test "$llvm_cv_enable_terminfo" = "yes" ; then 1629 dnl We need the has_color functionality in curses for it to be useful. 1630 AC_SEARCH_LIBS(setupterm,tinfo terminfo curses ncurses ncursesw, 1631 LLVM_DEFINE_SUBST([HAVE_TERMINFO],[1], 1632 [Define if the setupterm() function is supported this platform.])) 1633fi 1634 1635dnl The libedit library is optional; used by lib/LineEditor 1636if test "$llvm_cv_enable_libedit" = "yes" ; then 1637 AC_SEARCH_LIBS(el_init,edit, 1638 AC_DEFINE([HAVE_LIBEDIT],[1], 1639 [Define if libedit is available on this platform.])) 1640fi 1641 1642dnl libffi is optional; used to call external functions from the interpreter 1643if test "$llvm_cv_enable_libffi" = "yes" ; then 1644 AC_SEARCH_LIBS(ffi_call,ffi,AC_DEFINE([HAVE_FFI_CALL],[1], 1645 [Define if libffi is available on this platform.]), 1646 AC_MSG_ERROR([libffi not found - configure without --enable-libffi to compile without it])) 1647fi 1648 1649dnl mallinfo is optional; the code can compile (minus features) without it 1650AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1], 1651 [Define if mallinfo() is available on this platform.])) 1652 1653dnl pthread locking functions are optional - but llvm will not be thread-safe 1654dnl without locks. 1655if test "$LLVM_ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then 1656 AC_CHECK_LIB(pthread, pthread_mutex_init) 1657 AC_SEARCH_LIBS(pthread_mutex_lock,pthread, 1658 AC_DEFINE([HAVE_PTHREAD_MUTEX_LOCK],[1], 1659 [Have pthread_mutex_lock])) 1660 AC_SEARCH_LIBS(pthread_rwlock_init,pthread, 1661 AC_DEFINE([HAVE_PTHREAD_RWLOCK_INIT],[1], 1662 [Have pthread_rwlock_init])) 1663 AC_SEARCH_LIBS(pthread_getspecific,pthread, 1664 AC_DEFINE([HAVE_PTHREAD_GETSPECIFIC],[1], 1665 [Have pthread_getspecific])) 1666fi 1667 1668dnl zlib is optional; used for compression/uncompression 1669if test "$LLVM_ENABLE_ZLIB" -eq 1 ; then 1670 AC_CHECK_LIB(z, compress2) 1671fi 1672 1673dnl Allow OProfile support for JIT output. 1674AC_ARG_WITH(oprofile, 1675 AS_HELP_STRING([--with-oprofile=<prefix>], 1676 [Tell OProfile >= 0.9.4 how to symbolize JIT output]), 1677 [ 1678 AC_SUBST(USE_OPROFILE, [1]) 1679 case "$withval" in 1680 /usr|yes) llvm_cv_oppath=/usr/lib/oprofile ;; 1681 no) llvm_cv_oppath= 1682 AC_SUBST(USE_OPROFILE, [0]) ;; 1683 *) llvm_cv_oppath="${withval}/lib/oprofile" 1684 CPPFLAGS="-I${withval}/include";; 1685 esac 1686 case $llvm_cv_os_type in 1687 Linux) 1688 if test -n "$llvm_cv_oppath" ; then 1689 LIBS="$LIBS -lopagent -L${llvm_cv_oppath} -Wl,-rpath,${llvm_cv_oppath}" 1690 dnl Work around http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=537744: 1691 dnl libbfd is not included properly in libopagent in some Debian 1692 dnl versions. If libbfd isn't found at all, we assume opagent works 1693 dnl anyway. 1694 AC_SEARCH_LIBS(bfd_init, bfd, [], []) 1695 AC_SEARCH_LIBS(op_open_agent, opagent, [], [ 1696 echo "Error! You need to have libopagent around." 1697 exit 1 1698 ]) 1699 AC_CHECK_HEADER([opagent.h], [], [ 1700 echo "Error! You need to have opagent.h around." 1701 exit 1 1702 ]) 1703 fi ;; 1704 *) 1705 AC_MSG_ERROR([OProfile support is available on Linux only.]) ;; 1706 esac 1707 ], 1708 [ 1709 AC_SUBST(USE_OPROFILE, [0]) 1710 ]) 1711AC_DEFINE_UNQUOTED([LLVM_USE_OPROFILE],$USE_OPROFILE, 1712 [Define if we have the oprofile JIT-support library]) 1713 1714dnl Enable support for Intel JIT Events API. 1715AC_ARG_WITH(intel-jitevents, 1716 AS_HELP_STRING([--with-intel-jitevents Notify Intel JIT profiling API of generated code]), 1717 [ 1718 case "$withval" in 1719 yes) AC_SUBST(USE_INTEL_JITEVENTS,[1]);; 1720 no) AC_SUBST(USE_INTEL_JITEVENTS,[0]);; 1721 *) AC_MSG_ERROR([Invalid setting for --with-intel-jitevents. Use "yes" or "no"]);; 1722 esac 1723 1724 case $llvm_cv_os_type in 1725 Linux|Win32|Cygwin|MingW) ;; 1726 *) AC_MSG_ERROR([Intel JIT API support is available on Linux and Windows only.]);; 1727 esac 1728 1729 case "$llvm_cv_target_arch" in 1730 x86|x86_64) ;; 1731 *) AC_MSG_ERROR([Target architecture $llvm_cv_target_arch does not support Intel JIT Events API.]);; 1732 esac 1733 ], 1734 [ 1735 AC_SUBST(USE_INTEL_JITEVENTS, [0]) 1736 ]) 1737AC_DEFINE_UNQUOTED([LLVM_USE_INTEL_JITEVENTS],$USE_INTEL_JITEVENTS, 1738 [Define if we have the Intel JIT API runtime support library]) 1739 1740dnl Check for libxml2 1741dnl Right now we're just checking for the existence, we could also check for a 1742dnl particular version via --version on xml2-config 1743AC_CHECK_PROGS(XML2CONFIG, xml2-config) 1744 1745AC_MSG_CHECKING(for libxml2 includes) 1746if test "x$XML2CONFIG" = "x"; then 1747 AC_MSG_RESULT(xml2-config not found) 1748else 1749 LIBXML2_INC=`$XML2CONFIG --cflags` 1750 AC_MSG_RESULT($LIBXML2_INC) 1751 AC_CHECK_LIB(xml2, xmlReadFile,[AC_DEFINE([CLANG_HAVE_LIBXML],1,[Define if we have libxml2]) 1752 LIBXML2_LIBS="-lxml2"]) 1753fi 1754AC_SUBST(LIBXML2_LIBS) 1755AC_SUBST(LIBXML2_INC) 1756 1757dnl===-----------------------------------------------------------------------=== 1758dnl=== 1759dnl=== SECTION 6: Check for header files 1760dnl=== 1761dnl===-----------------------------------------------------------------------=== 1762 1763dnl First, use autoconf provided macros for specific headers that we need 1764dnl We don't check for ancient stuff or things that are guaranteed to be there 1765dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers. 1766dnl Generally we're looking for POSIX headers. 1767AC_HEADER_DIRENT 1768AC_HEADER_MMAP_ANONYMOUS 1769AC_HEADER_STAT 1770AC_HEADER_SYS_WAIT 1771AC_HEADER_TIME 1772 1773AC_LANG_PUSH([C++]) 1774dnl size_t must be defined before including cxxabi.h on FreeBSD 10.0. 1775AC_CHECK_HEADERS([cxxabi.h], [], [], 1776[#include <stddef.h> 1777]) 1778AC_LANG_POP([C++]) 1779 1780AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h inttypes.h link.h]) 1781AC_CHECK_HEADERS([malloc.h setjmp.h signal.h stdint.h termios.h unistd.h]) 1782AC_CHECK_HEADERS([utime.h]) 1783AC_CHECK_HEADERS([sys/mman.h sys/param.h sys/resource.h sys/time.h sys/uio.h]) 1784AC_CHECK_HEADERS([sys/ioctl.h malloc/malloc.h mach/mach.h]) 1785AC_CHECK_HEADERS([valgrind/valgrind.h]) 1786AC_CHECK_HEADERS([fenv.h]) 1787AC_CHECK_DECLS([FE_ALL_EXCEPT, FE_INEXACT], [], [], [[#include <fenv.h>]]) 1788if test "$LLVM_ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then 1789 AC_CHECK_HEADERS(pthread.h, 1790 AC_SUBST(HAVE_PTHREAD, 1), 1791 AC_SUBST(HAVE_PTHREAD, 0)) 1792else 1793 AC_SUBST(HAVE_PTHREAD, 0) 1794fi 1795if test "$LLVM_ENABLE_ZLIB" -eq 1 ; then 1796 AC_CHECK_HEADERS(zlib.h, 1797 AC_SUBST(HAVE_LIBZ, 1), 1798 AC_SUBST(HAVE_LIBZ, 0)) 1799else 1800 AC_SUBST(HAVE_LIBZ, 0) 1801fi 1802 1803dnl Try to find ffi.h. 1804if test "$llvm_cv_enable_libffi" = "yes" ; then 1805 AC_CHECK_HEADERS([ffi.h ffi/ffi.h]) 1806fi 1807 1808dnl Try to find Darwin specific crash reporting libraries. 1809AC_CHECK_HEADERS([CrashReporterClient.h]) 1810 1811dnl Try to find Darwin specific crash reporting global. 1812AC_MSG_CHECKING([__crashreporter_info__]) 1813AC_LINK_IFELSE( 1814[ 1815 AC_LANG_SOURCE([[ 1816 extern const char *__crashreporter_info__; 1817 int main() { 1818 __crashreporter_info__ = "test"; 1819 return 0; 1820 } 1821 ]]) 1822], 1823[ 1824 AC_MSG_RESULT([yes]) 1825 AC_DEFINE([HAVE_CRASHREPORTER_INFO], [1], [can use __crashreporter_info__]) 1826], 1827[ 1828 AC_MSG_RESULT([no]) 1829 AC_DEFINE([HAVE_CRASHREPORTER_INFO], [0], [can use __crashreporter_info__]) 1830]) 1831 1832dnl===-----------------------------------------------------------------------=== 1833dnl=== 1834dnl=== SECTION 7: Check for types and structures 1835dnl=== 1836dnl===-----------------------------------------------------------------------=== 1837 1838AC_HUGE_VAL_CHECK 1839AC_TYPE_PID_T 1840AC_TYPE_SIZE_T 1841AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[Define as the return type of signal handlers (`int' or `void').]) 1842AC_STRUCT_TM 1843AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found])) 1844AC_CHECK_TYPES([uint64_t],, 1845 AC_CHECK_TYPES([u_int64_t],, 1846 AC_MSG_ERROR([Type uint64_t or u_int64_t required but not found]))) 1847 1848dnl===-----------------------------------------------------------------------=== 1849dnl=== 1850dnl=== SECTION 8: Check for specific functions needed 1851dnl=== 1852dnl===-----------------------------------------------------------------------=== 1853 1854AC_CHECK_FUNCS([backtrace getcwd ]) 1855AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday ]) 1856AC_CHECK_FUNCS([isatty mkdtemp mkstemp ]) 1857AC_CHECK_FUNCS([mktemp posix_spawn pread realpath sbrk setrlimit ]) 1858AC_CHECK_FUNCS([strerror strerror_r setenv ]) 1859AC_CHECK_FUNCS([strtoll strtoq sysconf malloc_zone_statistics ]) 1860AC_CHECK_FUNCS([setjmp longjmp sigsetjmp siglongjmp writev]) 1861AC_CHECK_FUNCS([futimes futimens]) 1862AC_C_PRINTF_A 1863AC_FUNC_RAND48 1864 1865dnl Check for arc4random accessible via AC_INCLUDES_DEFAULT. 1866AC_CHECK_DECLS([arc4random]) 1867 1868dnl Check the declaration "Secure API" on Windows environments. 1869AC_CHECK_DECLS([strerror_s]) 1870 1871dnl Check symbols in libgcc.a for JIT on Mingw. 1872if test "$llvm_cv_os_type" = "MingW" ; then 1873 AC_CHECK_LIB(gcc,_alloca,AC_DEFINE([HAVE__ALLOCA],[1],[Have host's _alloca])) 1874 AC_CHECK_LIB(gcc,__alloca,AC_DEFINE([HAVE___ALLOCA],[1],[Have host's __alloca])) 1875 AC_CHECK_LIB(gcc,__chkstk,AC_DEFINE([HAVE___CHKSTK],[1],[Have host's __chkstk])) 1876 AC_CHECK_LIB(gcc,__chkstk_ms,AC_DEFINE([HAVE___CHKSTK_MS],[1],[Have host's __chkstk_ms])) 1877 AC_CHECK_LIB(gcc,___chkstk,AC_DEFINE([HAVE____CHKSTK],[1],[Have host's ___chkstk])) 1878 AC_CHECK_LIB(gcc,___chkstk_ms,AC_DEFINE([HAVE____CHKSTK_MS],[1],[Have host's ___chkstk_ms])) 1879 1880 AC_CHECK_LIB(gcc,__ashldi3,AC_DEFINE([HAVE___ASHLDI3],[1],[Have host's __ashldi3])) 1881 AC_CHECK_LIB(gcc,__ashrdi3,AC_DEFINE([HAVE___ASHRDI3],[1],[Have host's __ashrdi3])) 1882 AC_CHECK_LIB(gcc,__divdi3,AC_DEFINE([HAVE___DIVDI3],[1],[Have host's __divdi3])) 1883 AC_CHECK_LIB(gcc,__fixdfdi,AC_DEFINE([HAVE___FIXDFDI],[1],[Have host's __fixdfdi])) 1884 AC_CHECK_LIB(gcc,__fixsfdi,AC_DEFINE([HAVE___FIXSFDI],[1],[Have host's __fixsfdi])) 1885 AC_CHECK_LIB(gcc,__floatdidf,AC_DEFINE([HAVE___FLOATDIDF],[1],[Have host's __floatdidf])) 1886 AC_CHECK_LIB(gcc,__lshrdi3,AC_DEFINE([HAVE___LSHRDI3],[1],[Have host's __lshrdi3])) 1887 AC_CHECK_LIB(gcc,__moddi3,AC_DEFINE([HAVE___MODDI3],[1],[Have host's __moddi3])) 1888 AC_CHECK_LIB(gcc,__udivdi3,AC_DEFINE([HAVE___UDIVDI3],[1],[Have host's __udivdi3])) 1889 AC_CHECK_LIB(gcc,__umoddi3,AC_DEFINE([HAVE___UMODDI3],[1],[Have host's __umoddi3])) 1890 1891 AC_CHECK_LIB(gcc,__main,AC_DEFINE([HAVE___MAIN],[1],[Have host's __main])) 1892 AC_CHECK_LIB(gcc,__cmpdi2,AC_DEFINE([HAVE___CMPDI2],[1],[Have host's __cmpdi2])) 1893fi 1894 1895dnl Check Win32 API EnumerateLoadedModules. 1896if test "$llvm_cv_os_type" = "MingW" ; then 1897 AC_MSG_CHECKING([whether EnumerateLoadedModules() accepts new decl]) 1898 AC_COMPILE_IFELSE( 1899[ 1900 AC_LANG_SOURCE([[ 1901 #include <windows.h> 1902 #include <imagehlp.h> 1903 extern void foo(PENUMLOADED_MODULES_CALLBACK); 1904 extern void foo(BOOL(CALLBACK*)(PCSTR,ULONG_PTR,ULONG,PVOID)); 1905 ]]) 1906], 1907[ 1908 AC_MSG_RESULT([yes]) 1909 llvm_cv_win32_elmcb_pcstr="PCSTR" 1910], 1911[ 1912 AC_MSG_RESULT([no]) 1913 llvm_cv_win32_elmcb_pcstr="PSTR" 1914]) 1915 AC_DEFINE_UNQUOTED([WIN32_ELMCB_PCSTR],$llvm_cv_win32_elmcb_pcstr,[Type of 1st arg on ELM Callback]) 1916fi 1917 1918dnl Check for mmap support.We also need to know if /dev/zero is required to 1919dnl be opened for allocating RWX memory. 1920dnl Make sure we aren't attempting to configure for an unknown system 1921if test "$llvm_cv_platform_type" = "Unix" ; then 1922 AC_FUNC_MMAP 1923 AC_FUNC_MMAP_FILE 1924 AC_NEED_DEV_ZERO_FOR_MMAP 1925 1926 if test "$ac_cv_func_mmap_fixed_mapped" = "no" 1927 then 1928 AC_MSG_WARN([mmap() of a fixed address required but not supported]) 1929 fi 1930 if test "$ac_cv_func_mmap_file" = "no" 1931 then 1932 AC_MSG_WARN([mmap() of files required but not found]) 1933 fi 1934fi 1935 1936dnl atomic builtins are required for threading support. 1937AC_MSG_CHECKING(for GCC atomic builtins) 1938dnl Since we'll be using these atomic builtins in C++ files we should test 1939dnl the C++ compiler. 1940AC_LANG_PUSH([C++]) 1941AC_LINK_IFELSE( 1942[ 1943 AC_LANG_SOURCE([[ 1944 int main() { 1945 volatile unsigned long val = 1; 1946 __sync_synchronize(); 1947 __sync_val_compare_and_swap(&val, 1, 0); 1948 __sync_add_and_fetch(&val, 1); 1949 __sync_sub_and_fetch(&val, 1); 1950 return 0; 1951 } 1952 ]]) 1953], 1954[ 1955 AC_MSG_RESULT([yes]) 1956 AC_DEFINE([LLVM_HAS_ATOMICS], [1], [Has gcc/MSVC atomic intrinsics]) 1957], 1958[ 1959 AC_MSG_RESULT([no]) 1960 AC_DEFINE([LLVM_HAS_ATOMICS], [0], [Has gcc/MSVC atomic intrinsics]) 1961 AC_MSG_WARN([LLVM will be built thread-unsafe because atomic builtins are missing]) 1962]) 1963AC_LANG_POP([C++]) 1964 1965dnl===-----------------------------------------------------------------------=== 1966dnl=== 1967dnl=== SECTION 9: Additional checks, variables, etc. 1968dnl=== 1969dnl===-----------------------------------------------------------------------=== 1970 1971dnl Handle 32-bit linux systems running a 64-bit kernel. 1972dnl This has to come after section 4 because it invokes the compiler. 1973if test "$llvm_cv_os_type" = "Linux" -a "$llvm_cv_target_arch" = "x86_64" ; then 1974 AC_IS_LINUX_MIXED 1975 if test "$llvm_cv_linux_mixed" = "yes"; then 1976 llvm_cv_target_arch="x86" 1977 ARCH="x86" 1978 fi 1979fi 1980 1981dnl Check whether __dso_handle is present 1982AC_CHECK_FUNCS([__dso_handle]) 1983 1984dnl Propagate the shared library extension that the libltdl checks did to 1985dnl the Makefiles so we can use it there too 1986AC_SUBST(SHLIBEXT,$llvm_shlib_ext) 1987 1988dnl Translate the various configuration directories and other basic 1989dnl information into substitutions that will end up in Makefile.config.in 1990dnl that these configured values can be used by the makefiles 1991if test "${prefix}" = "NONE" ; then 1992 prefix="/usr/local" 1993fi 1994eval LLVM_PREFIX="${prefix}"; 1995eval LLVM_BINDIR="${prefix}/bin"; 1996eval LLVM_DATADIR="${prefix}/share/llvm"; 1997eval LLVM_DOCSDIR="${prefix}/share/doc/llvm"; 1998eval LLVM_ETCDIR="${prefix}/etc/llvm"; 1999eval LLVM_INCLUDEDIR="${prefix}/include"; 2000eval LLVM_INFODIR="${prefix}/info"; 2001eval LLVM_MANDIR="${prefix}/man"; 2002LLVM_CONFIGTIME=`date` 2003AC_SUBST(LLVM_PREFIX) 2004AC_SUBST(LLVM_BINDIR) 2005AC_SUBST(LLVM_DATADIR) 2006AC_SUBST(LLVM_DOCSDIR) 2007AC_SUBST(LLVM_ETCDIR) 2008AC_SUBST(LLVM_INCLUDEDIR) 2009AC_SUBST(LLVM_INFODIR) 2010AC_SUBST(LLVM_MANDIR) 2011AC_SUBST(LLVM_CONFIGTIME) 2012 2013dnl Disable embedding timestamps in the build directory, with ENABLE_TIMESTAMPS. 2014if test "${ENABLE_TIMESTAMPS}" = "0"; then 2015 LLVM_CONFIGTIME="(timestamp not enabled)" 2016fi 2017 2018dnl Place the various directories into the config.h file as #defines so that we 2019dnl can know about the installation paths within LLVM. 2020AC_DEFINE_UNQUOTED(LLVM_PREFIX,"$LLVM_PREFIX", 2021 [Installation prefix directory]) 2022AC_DEFINE_UNQUOTED(LLVM_BINDIR, "$LLVM_BINDIR", 2023 [Installation directory for binary executables]) 2024AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DATADIR", 2025 [Installation directory for data files]) 2026AC_DEFINE_UNQUOTED(LLVM_DOCSDIR, "$LLVM_DOCSDIR", 2027 [Installation directory for documentation]) 2028AC_DEFINE_UNQUOTED(LLVM_ETCDIR, "$LLVM_ETCDIR", 2029 [Installation directory for config files]) 2030AC_DEFINE_UNQUOTED(LLVM_INCLUDEDIR, "$LLVM_INCLUDEDIR", 2031 [Installation directory for include files]) 2032AC_DEFINE_UNQUOTED(LLVM_INFODIR, "$LLVM_INFODIR", 2033 [Installation directory for .info files]) 2034AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR", 2035 [Installation directory for man pages]) 2036AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME", 2037 [Time at which LLVM was configured]) 2038AC_DEFINE_UNQUOTED(LLVM_HOST_TRIPLE, "$host", 2039 [Host triple LLVM will be executed on]) 2040AC_DEFINE_UNQUOTED(LLVM_DEFAULT_TARGET_TRIPLE, "$target", 2041 [Target triple LLVM will generate code for by default]) 2042 2043dnl Determine which bindings to build. 2044if test "$BINDINGS_TO_BUILD" = auto ; then 2045 BINDINGS_TO_BUILD="" 2046 if test "x$OCAMLFIND" != x ; then 2047 BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD" 2048 fi 2049 if test "x$GO" != x ; then 2050 if $GO run ${srcdir}/bindings/go/conftest.go ; then 2051 BINDINGS_TO_BUILD="go $BINDINGS_TO_BUILD" 2052 fi 2053 fi 2054fi 2055AC_SUBST(BINDINGS_TO_BUILD,$BINDINGS_TO_BUILD) 2056 2057dnl Do any work necessary to ensure that bindings have what they need. 2058binding_prereqs_failed=0 2059for a_binding in $BINDINGS_TO_BUILD ; do 2060 case "$a_binding" in 2061 ocaml) 2062 if test "x$OCAMLFIND" = x ; then 2063 AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlfind not found. Try configure OCAMLFIND=/path/to/ocamlfind]) 2064 binding_prereqs_failed=1 2065 fi 2066 2067 if $OCAMLFIND opt -version >/dev/null 2>/dev/null ; then 2068 HAVE_OCAMLOPT=1 2069 else 2070 HAVE_OCAMLOPT=0 2071 fi 2072 AC_SUBST(HAVE_OCAMLOPT) 2073 2074 if ! $OCAMLFIND query ctypes >/dev/null 2>/dev/null; then 2075 AC_MSG_WARN([--enable-bindings=ocaml specified, but ctypes is not installed]) 2076 binding_prereqs_failed=1 2077 fi 2078 2079 if $OCAMLFIND query oUnit >/dev/null 2>/dev/null; then 2080 HAVE_OCAML_OUNIT=1 2081 else 2082 HAVE_OCAML_OUNIT=0 2083 AC_MSG_WARN([--enable-bindings=ocaml specified, but OUnit 2 is not installed. Tests will not run]) 2084 dnl oUnit is optional! 2085 fi 2086 AC_SUBST(HAVE_OCAML_OUNIT) 2087 2088 if test "x$with_ocaml_libdir" != xauto ; then 2089 AC_SUBST(OCAML_LIBDIR,$with_ocaml_libdir) 2090 else 2091 ocaml_stdlib="`"$OCAMLFIND" ocamlc -where`" 2092 if test "$LLVM_PREFIX" '<' "$ocaml_stdlib" -a "$ocaml_stdlib" '<' "$LLVM_PREFIX~" 2093 then 2094 # ocaml stdlib is beneath our prefix; use stdlib 2095 AC_SUBST(OCAML_LIBDIR,$ocaml_stdlib) 2096 else 2097 # ocaml stdlib is outside our prefix; use libdir/ocaml 2098 AC_SUBST(OCAML_LIBDIR,${prefix}/lib/ocaml) 2099 fi 2100 fi 2101 ;; 2102 go) 2103 if test "x$GO" = x ; then 2104 AC_MSG_WARN([--enable-bindings=go specified, but go not found. Try configure GO=/path/to/go]) 2105 binding_prereqs_failed=1 2106 else 2107 if $GO run ${srcdir}/bindings/go/conftest.go ; then 2108 : 2109 else 2110 AC_MSG_WARN([--enable-bindings=go specified, but need at least Go 1.2. Try configure GO=/path/to/go]) 2111 binding_prereqs_failed=1 2112 fi 2113 fi 2114 ;; 2115 esac 2116done 2117if test "$binding_prereqs_failed" = 1 ; then 2118 AC_MSG_ERROR([Prequisites for bindings not satisfied. Fix them or use configure --disable-bindings.]) 2119fi 2120 2121dnl Determine whether the compiler supports -fvisibility-inlines-hidden. 2122AC_CXX_USE_VISIBILITY_INLINES_HIDDEN 2123 2124dnl Determine linker rpath flag 2125if test "$llvm_cv_link_use_r" = "yes" ; then 2126 RPATH="-Wl,-R" 2127else 2128 RPATH="-Wl,-rpath" 2129fi 2130AC_SUBST(RPATH) 2131 2132dnl Determine linker rdynamic flag 2133if test "$llvm_cv_link_use_export_dynamic" = "yes" ; then 2134 RDYNAMIC="-rdynamic" 2135else 2136 RDYNAMIC="" 2137fi 2138AC_SUBST(RDYNAMIC) 2139 2140dnl===-----------------------------------------------------------------------=== 2141dnl=== 2142dnl=== SECTION 10: Specify the output files and generate it 2143dnl=== 2144dnl===-----------------------------------------------------------------------=== 2145 2146dnl Configure header files 2147dnl WARNING: dnl If you add or remove any of the following config headers, then 2148dnl you MUST also update Makefile so that the variable FilesToConfig 2149dnl contains the same list of files as AC_CONFIG_HEADERS below. This ensures the 2150dnl files can be updated automatically when their *.in sources change. 2151AC_CONFIG_HEADERS([include/llvm/Config/config.h include/llvm/Config/llvm-config.h]) 2152AH_TOP([#ifndef CONFIG_H 2153#define CONFIG_H]) 2154AH_BOTTOM([#endif]) 2155 2156AC_CONFIG_FILES([include/llvm/Config/Targets.def]) 2157AC_CONFIG_FILES([include/llvm/Config/AsmPrinters.def]) 2158AC_CONFIG_FILES([include/llvm/Config/AsmParsers.def]) 2159AC_CONFIG_FILES([include/llvm/Config/Disassemblers.def]) 2160AC_CONFIG_HEADERS([include/llvm/Support/DataTypes.h]) 2161 2162dnl Configure the makefile's configuration data 2163AC_CONFIG_FILES([Makefile.config]) 2164 2165dnl Configure the RPM spec file for LLVM 2166AC_CONFIG_FILES([llvm.spec]) 2167 2168dnl Configure doxygen's configuration file 2169AC_CONFIG_FILES([docs/doxygen.cfg]) 2170 2171dnl Configure clang, if present 2172if test "${clang_src_root}" = ""; then 2173 clang_src_root="$srcdir/tools/clang" 2174fi 2175if test -f ${clang_src_root}/README.txt; then 2176 dnl Clang supports build systems which use the multilib libdir suffix. 2177 dnl The autoconf system doesn't support this so stub out that variable. 2178 AC_DEFINE_UNQUOTED(CLANG_LIBDIR_SUFFIX,"", 2179 [Multilib suffix for libdir.]) 2180 2181 dnl Use variables to stay under 80 columns. 2182 configh="include/clang/Config/config.h" 2183 doxy="docs/doxygen.cfg" 2184 AC_CONFIG_HEADERS([tools/clang/${configh}:${clang_src_root}/${configh}.in]) 2185 AC_CONFIG_FILES([tools/clang/${doxy}:${clang_src_root}/${doxy}.in]) 2186fi 2187 2188dnl OCaml findlib META file 2189AC_CONFIG_FILES([bindings/ocaml/llvm/META.llvm]) 2190 2191dnl Add --program-prefix value to Makefile.rules. Already an ARG variable. 2192test "x$program_prefix" = "xNONE" && program_prefix="" 2193AC_SUBST([program_prefix]) 2194 2195 2196dnl Do special configuration of Makefiles 2197AC_CONFIG_COMMANDS([setup],,[llvm_src="${srcdir}"]) 2198AC_CONFIG_MAKEFILE(Makefile) 2199AC_CONFIG_MAKEFILE(Makefile.common) 2200AC_CONFIG_MAKEFILE(examples/Makefile) 2201AC_CONFIG_MAKEFILE(lib/Makefile) 2202AC_CONFIG_MAKEFILE(test/Makefile) 2203AC_CONFIG_MAKEFILE(test/Makefile.tests) 2204AC_CONFIG_MAKEFILE(unittests/Makefile) 2205AC_CONFIG_MAKEFILE(tools/Makefile) 2206AC_CONFIG_MAKEFILE(utils/Makefile) 2207AC_CONFIG_MAKEFILE(projects/Makefile) 2208AC_CONFIG_MAKEFILE(bindings/Makefile) 2209AC_CONFIG_MAKEFILE(bindings/ocaml/Makefile.ocaml) 2210 2211dnl Finally, crank out the output 2212AC_OUTPUT 2213