configure.ac revision e78085a3c03de648a481e9751c3094c517bd7123
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 email address for reporting bugs. 34AC_INIT([[llvm]],[[3.0svn]],[llvmbugs@cs.uiuc.edu]) 35 36dnl Provide a copyright substitution and ensure the copyright notice is included 37dnl in the output of --version option of the generated configure script. 38AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2011 University of Illinois at Urbana-Champaign."]) 39AC_COPYRIGHT([Copyright (c) 2003-2011 University of Illinois at Urbana-Champaign.]) 40 41dnl Indicate that we require autoconf 2.59 or later. Ths is needed because we 42dnl use some autoconf macros only available in 2.59. 43AC_PREREQ(2.59) 44 45dnl Verify that the source directory is valid. This makes sure that we are 46dnl configuring LLVM and not some other package (it validates --srcdir argument) 47AC_CONFIG_SRCDIR([lib/VMCore/Module.cpp]) 48 49dnl Place all of the extra autoconf files into the config subdirectory. Tell 50dnl various tools where the m4 autoconf macros are. 51AC_CONFIG_AUX_DIR([autoconf]) 52 53dnl Quit if the source directory has already been configured. 54dnl NOTE: This relies upon undocumented autoconf behavior. 55if test ${srcdir} != "." ; then 56 if test -f ${srcdir}/include/llvm/Config/config.h ; then 57 AC_MSG_ERROR([Already configured in ${srcdir}]) 58 fi 59fi 60 61dnl Configure all of the projects present in our source tree. While we could 62dnl just AC_CONFIG_SUBDIRS on the set of directories in projects that have a 63dnl configure script, that usage of the AC_CONFIG_SUBDIRS macro is deprecated. 64dnl Instead we match on the known projects. 65 66dnl 67dnl One tricky part of doing this is that some projects depend upon other 68dnl projects. For example, several projects rely upon the LLVM test suite. 69dnl We want to configure those projects first so that their object trees are 70dnl created before running the configure scripts of projects that depend upon 71dnl them. 72dnl 73 74dnl Several projects use llvm-gcc, so configure that first 75if test -d ${srcdir}/projects/llvm-gcc ; then 76 AC_CONFIG_SUBDIRS([projects/llvm-gcc]) 77fi 78 79dnl Several projects use the LLVM test suite, so configure it next. 80if test -d ${srcdir}/projects/test-suite ; then 81 AC_CONFIG_SUBDIRS([projects/test-suite]) 82fi 83 84dnl llvm-test is the old name of the test-suite, kept here for backwards 85dnl compatibility 86if test -d ${srcdir}/projects/llvm-test ; then 87 AC_CONFIG_SUBDIRS([projects/llvm-test]) 88fi 89 90dnl Some projects use poolalloc; configure that next 91if test -d ${srcdir}/projects/poolalloc ; then 92 AC_CONFIG_SUBDIRS([projects/poolalloc]) 93fi 94 95if test -d ${srcdir}/projects/llvm-poolalloc ; then 96 AC_CONFIG_SUBDIRS([projects/llvm-poolalloc]) 97fi 98 99dnl Check for all other projects 100for i in `ls ${srcdir}/projects` 101do 102 if test -d ${srcdir}/projects/${i} ; then 103 case ${i} in 104 sample) AC_CONFIG_SUBDIRS([projects/sample]) ;; 105 privbracket) AC_CONFIG_SUBDIRS([projects/privbracket]) ;; 106 llvm-stacker) AC_CONFIG_SUBDIRS([projects/llvm-stacker]) ;; 107 llvm-reopt) AC_CONFIG_SUBDIRS([projects/llvm-reopt]);; 108 llvm-java) AC_CONFIG_SUBDIRS([projects/llvm-java]) ;; 109 llvm-tv) AC_CONFIG_SUBDIRS([projects/llvm-tv]) ;; 110 safecode) AC_CONFIG_SUBDIRS([projects/safecode]) ;; 111 llvm-kernel) AC_CONFIG_SUBDIRS([projects/llvm-kernel]) ;; 112 llvm-gcc) ;; 113 test-suite) ;; 114 llvm-test) ;; 115 poolalloc) ;; 116 llvm-poolalloc) ;; 117 *) 118 AC_MSG_WARN([Unknown project (${i}) won't be configured automatically]) 119 ;; 120 esac 121 fi 122done 123 124dnl Disable the build of polly, even if it is checked out into tools/polly. 125AC_ARG_ENABLE(polly, 126 AS_HELP_STRING([--enable-polly], 127 [Use polly if available (default is YES)]),, 128 enableval=default) 129case "$enableval" in 130 yes) AC_SUBST(ENABLE_POLLY,[1]) ;; 131 no) AC_SUBST(ENABLE_POLLY,[0]) ;; 132 default) AC_SUBST(ENABLE_POLLY,[1]) ;; 133 *) AC_MSG_ERROR([Invalid setting for --enable-polly. Use "yes" or "no"]) ;; 134esac 135 136 137dnl Check if polly is checked out into tools/polly and configure it if 138dnl available. 139if (test -d ${srcdir}/tools/polly) && (test $ENABLE_POLLY -eq 1) ; then 140 AC_SUBST(LLVM_HAS_POLLY,1) 141 AC_CONFIG_SUBDIRS([tools/polly]) 142fi 143 144dnl===-----------------------------------------------------------------------=== 145dnl=== 146dnl=== SECTION 2: Architecture, target, and host checks 147dnl=== 148dnl===-----------------------------------------------------------------------=== 149 150dnl Check the target for which we're compiling and the host that will do the 151dnl compilations. This will tell us which LLVM compiler will be used for 152dnl compiling SSA into object code. This needs to be done early because 153dnl following tests depend on it. 154AC_CANONICAL_TARGET 155 156dnl Determine the platform type and cache its value. This helps us configure 157dnl the System library to the correct build platform. 158AC_CACHE_CHECK([type of operating system we're going to host on], 159 [llvm_cv_os_type], 160[case $host in 161 *-*-aix*) 162 llvm_cv_link_all_option="-Wl,--whole-archive" 163 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 164 llvm_cv_os_type="AIX" 165 llvm_cv_platform_type="Unix" ;; 166 *-*-irix*) 167 llvm_cv_link_all_option="-Wl,--whole-archive" 168 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 169 llvm_cv_os_type="IRIX" 170 llvm_cv_platform_type="Unix" ;; 171 *-*-cygwin*) 172 llvm_cv_link_all_option="-Wl,--whole-archive" 173 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 174 llvm_cv_os_type="Cygwin" 175 llvm_cv_platform_type="Unix" ;; 176 *-*-darwin*) 177 llvm_cv_link_all_option="-Wl,-all_load" 178 llvm_cv_no_link_all_option="-Wl,-noall_load" 179 llvm_cv_os_type="Darwin" 180 llvm_cv_platform_type="Unix" ;; 181 *-*-minix*) 182 llvm_cv_link_all_option="-Wl,-all_load" 183 llvm_cv_no_link_all_option="-Wl,-noall_load" 184 llvm_cv_os_type="Minix" 185 llvm_cv_platform_type="Unix" ;; 186 *-*-freebsd*) 187 llvm_cv_link_all_option="-Wl,--whole-archive" 188 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 189 llvm_cv_os_type="FreeBSD" 190 llvm_cv_platform_type="Unix" ;; 191 *-*-openbsd*) 192 llvm_cv_link_all_option="-Wl,--whole-archive" 193 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 194 llvm_cv_os_type="OpenBSD" 195 llvm_cv_platform_type="Unix" ;; 196 *-*-netbsd*) 197 llvm_cv_link_all_option="-Wl,--whole-archive" 198 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 199 llvm_cv_os_type="NetBSD" 200 llvm_cv_platform_type="Unix" ;; 201 *-*-dragonfly*) 202 llvm_cv_link_all_option="-Wl,--whole-archive" 203 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 204 llvm_cv_os_type="DragonFly" 205 llvm_cv_platform_type="Unix" ;; 206 *-*-hpux*) 207 llvm_cv_link_all_option="-Wl,--whole-archive" 208 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 209 llvm_cv_os_type="HP-UX" 210 llvm_cv_platform_type="Unix" ;; 211 *-*-interix*) 212 llvm_cv_link_all_option="-Wl,--whole-archive" 213 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 214 llvm_cv_os_type="Interix" 215 llvm_cv_platform_type="Unix" ;; 216 *-*-linux*) 217 llvm_cv_link_all_option="-Wl,--whole-archive" 218 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 219 llvm_cv_os_type="Linux" 220 llvm_cv_platform_type="Unix" ;; 221 *-*-solaris*) 222 llvm_cv_link_all_option="-Wl,-z,allextract" 223 llvm_cv_no_link_all_option="-Wl,-z,defaultextract" 224 llvm_cv_os_type="SunOS" 225 llvm_cv_platform_type="Unix" ;; 226 *-*-auroraux*) 227 llvm_cv_link_all_option="-Wl,-z,allextract" 228 llvm_cv_link_all_option="-Wl,-z,defaultextract" 229 llvm_cv_os_type="AuroraUX" 230 llvm_cv_platform_type="Unix" ;; 231 *-*-win32*) 232 llvm_cv_link_all_option="-Wl,--whole-archive" 233 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 234 llvm_cv_os_type="Win32" 235 llvm_cv_platform_type="Win32" ;; 236 *-*-mingw*) 237 llvm_cv_link_all_option="-Wl,--whole-archive" 238 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 239 llvm_cv_os_type="MingW" 240 llvm_cv_platform_type="Win32" ;; 241 *-*-haiku*) 242 llvm_cv_link_all_option="-Wl,--whole-archive" 243 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 244 llvm_cv_os_type="Haiku" 245 llvm_cv_platform_type="Unix" ;; 246 *-unknown-eabi*) 247 llvm_cv_link_all_option="-Wl,--whole-archive" 248 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 249 llvm_cv_os_type="Freestanding" 250 llvm_cv_platform_type="Unix" ;; 251 *-unknown-elf*) 252 llvm_cv_link_all_option="-Wl,--whole-archive" 253 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 254 llvm_cv_os_type="Freestanding" 255 llvm_cv_platform_type="Unix" ;; 256 *) 257 llvm_cv_link_all_option="" 258 llvm_cv_no_link_all_option="" 259 llvm_cv_os_type="Unknown" 260 llvm_cv_platform_type="Unknown" ;; 261esac]) 262 263AC_CACHE_CHECK([type of operating system we're going to target], 264 [llvm_cv_target_os_type], 265[case $target in 266 *-*-aix*) 267 llvm_cv_target_os_type="AIX" ;; 268 *-*-irix*) 269 llvm_cv_target_os_type="IRIX" ;; 270 *-*-cygwin*) 271 llvm_cv_target_os_type="Cygwin" ;; 272 *-*-darwin*) 273 llvm_cv_target_os_type="Darwin" ;; 274 *-*-minix*) 275 llvm_cv_target_os_type="Minix" ;; 276 *-*-freebsd*) 277 llvm_cv_target_os_type="FreeBSD" ;; 278 *-*-openbsd*) 279 llvm_cv_target_os_type="OpenBSD" ;; 280 *-*-netbsd*) 281 llvm_cv_target_os_type="NetBSD" ;; 282 *-*-dragonfly*) 283 llvm_cv_target_os_type="DragonFly" ;; 284 *-*-hpux*) 285 llvm_cv_target_os_type="HP-UX" ;; 286 *-*-interix*) 287 llvm_cv_target_os_type="Interix" ;; 288 *-*-linux*) 289 llvm_cv_target_os_type="Linux" ;; 290 *-*-solaris*) 291 llvm_cv_target_os_type="SunOS" ;; 292 *-*-auroraux*) 293 llvm_cv_target_os_type="AuroraUX" ;; 294 *-*-win32*) 295 llvm_cv_target_os_type="Win32" ;; 296 *-*-mingw*) 297 llvm_cv_target_os_type="MingW" ;; 298 *-*-haiku*) 299 llvm_cv_target_os_type="Haiku" ;; 300 *-*-rtems*) 301 llvm_cv_target_os_type="RTEMS" ;; 302 *-unknown-eabi*) 303 llvm_cv_target_os_type="Freestanding" ;; 304 *) 305 llvm_cv_target_os_type="Unknown" ;; 306esac]) 307 308dnl Make sure we aren't attempting to configure for an unknown system 309if test "$llvm_cv_os_type" = "Unknown" ; then 310 AC_MSG_ERROR([Operating system is unknown, configure can't continue]) 311fi 312 313dnl Set the "OS" Makefile variable based on the platform type so the 314dnl makefile can configure itself to specific build hosts 315AC_SUBST(OS,$llvm_cv_os_type) 316AC_SUBST(HOST_OS,$llvm_cv_os_type) 317AC_SUBST(TARGET_OS,$llvm_cv_target_os_type) 318 319dnl Set the LINKALL and NOLINKALL Makefile variables based on the platform 320AC_SUBST(LINKALL,$llvm_cv_link_all_option) 321AC_SUBST(NOLINKALL,$llvm_cv_no_link_all_option) 322 323dnl Set the "LLVM_ON_*" variables based on llvm_cv_platform_type 324dnl This is used by lib/Support to determine the basic kind of implementation 325dnl to use. 326case $llvm_cv_platform_type in 327 Unix) 328 AC_DEFINE([LLVM_ON_UNIX],[1],[Define if this is Unixish platform]) 329 AC_SUBST(LLVM_ON_UNIX,[1]) 330 AC_SUBST(LLVM_ON_WIN32,[0]) 331 ;; 332 Win32) 333 AC_DEFINE([LLVM_ON_WIN32],[1],[Define if this is Win32ish platform]) 334 AC_SUBST(LLVM_ON_UNIX,[0]) 335 AC_SUBST(LLVM_ON_WIN32,[1]) 336 ;; 337esac 338 339dnl Determine what our target architecture is and configure accordingly. 340dnl This will allow Makefiles to make a distinction between the hardware and 341dnl the OS. 342AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch], 343[case $target in 344 i?86-*) llvm_cv_target_arch="x86" ;; 345 amd64-* | x86_64-*) llvm_cv_target_arch="x86_64" ;; 346 sparc*-*) llvm_cv_target_arch="Sparc" ;; 347 powerpc*-*) llvm_cv_target_arch="PowerPC" ;; 348 alpha*-*) llvm_cv_target_arch="Alpha" ;; 349 arm*-*) llvm_cv_target_arch="ARM" ;; 350 mips-*) llvm_cv_target_arch="Mips" ;; 351 xcore-*) llvm_cv_target_arch="XCore" ;; 352 msp430-*) llvm_cv_target_arch="MSP430" ;; 353 s390x-*) llvm_cv_target_arch="SystemZ" ;; 354 bfin-*) llvm_cv_target_arch="Blackfin" ;; 355 mblaze-*) llvm_cv_target_arch="MBlaze" ;; 356 ptx-*) llvm_cv_target_arch="PTX" ;; 357 *) llvm_cv_target_arch="Unknown" ;; 358esac]) 359 360if test "$llvm_cv_target_arch" = "Unknown" ; then 361 AC_MSG_WARN([Configuring LLVM for an unknown target archicture]) 362fi 363 364# Determine the LLVM native architecture for the target 365case "$llvm_cv_target_arch" in 366 x86) LLVM_NATIVE_ARCH="X86" ;; 367 x86_64) LLVM_NATIVE_ARCH="X86" ;; 368 *) LLVM_NATIVE_ARCH="$llvm_cv_target_arch" ;; 369esac 370 371dnl Define a substitution, ARCH, for the target architecture 372AC_SUBST(ARCH,$llvm_cv_target_arch) 373 374dnl Check for the endianness of the target 375AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[big]),AC_SUBST([ENDIAN],[little])) 376 377dnl Check for build platform executable suffix if we're crosscompiling 378if test "$cross_compiling" = yes; then 379 AC_SUBST(LLVM_CROSS_COMPILING, [1]) 380 AC_BUILD_EXEEXT 381 ac_build_prefix=${build_alias}- 382 AC_CHECK_PROG(BUILD_CXX, ${ac_build_prefix}g++, ${ac_build_prefix}g++) 383 if test -z "$BUILD_CXX"; then 384 AC_CHECK_PROG(BUILD_CXX, g++, g++) 385 if test -z "$BUILD_CXX"; then 386 AC_CHECK_PROG(BUILD_CXX, c++, c++, , , /usr/ucb/c++) 387 fi 388 fi 389else 390 AC_SUBST(LLVM_CROSS_COMPILING, [0]) 391fi 392 393dnl Check to see if there's a .svn or .git directory indicating that this 394dnl build is being done from a checkout. This sets up several defaults for 395dnl the command line switches. When we build with a checkout directory, 396dnl we get a debug with assertions turned on. Without, we assume a source 397dnl release and we get an optimized build without assertions. 398dnl See --enable-optimized and --enable-assertions below 399if test -d ".svn" -o -d "${srcdir}/.svn" -o -d ".git" -o -d "${srcdir}/.git"; then 400 cvsbuild="yes" 401 optimize="no" 402 AC_SUBST(CVSBUILD,[[CVSBUILD=1]]) 403else 404 cvsbuild="no" 405 optimize="yes" 406fi 407 408dnl===-----------------------------------------------------------------------=== 409dnl=== 410dnl=== SECTION 3: Command line arguments for the configure script. 411dnl=== 412dnl===-----------------------------------------------------------------------=== 413 414dnl --enable-optimized : check whether they want to do an optimized build: 415AC_ARG_ENABLE(optimized, AS_HELP_STRING( 416 --enable-optimized,[Compile with optimizations enabled (default is NO)]),,enableval=$optimize) 417if test ${enableval} = "no" ; then 418 AC_SUBST(ENABLE_OPTIMIZED,[[]]) 419else 420 AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]]) 421fi 422 423dnl --enable-profiling : check whether they want to do a profile build: 424AC_ARG_ENABLE(profiling, AS_HELP_STRING( 425 --enable-profiling,[Compile with profiling enabled (default is NO)]),,enableval="no") 426if test ${enableval} = "no" ; then 427 AC_SUBST(ENABLE_PROFILING,[[]]) 428else 429 AC_SUBST(ENABLE_PROFILING,[[ENABLE_PROFILING=1]]) 430fi 431 432dnl --enable-assertions : check whether they want to turn on assertions or not: 433AC_ARG_ENABLE(assertions,AS_HELP_STRING( 434 --enable-assertions,[Compile with assertion checks enabled (default is YES)]),, enableval="yes") 435if test ${enableval} = "yes" ; then 436 AC_SUBST(DISABLE_ASSERTIONS,[[]]) 437else 438 AC_SUBST(DISABLE_ASSERTIONS,[[DISABLE_ASSERTIONS=1]]) 439fi 440 441dnl --enable-expensive-checks : check whether they want to turn on expensive debug checks: 442AC_ARG_ENABLE(expensive-checks,AS_HELP_STRING( 443 --enable-expensive-checks,[Compile with expensive debug checks enabled (default is NO)]),, enableval="no") 444if test ${enableval} = "yes" ; then 445 AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[ENABLE_EXPENSIVE_CHECKS=1]]) 446 AC_SUBST(EXPENSIVE_CHECKS,[[yes]]) 447else 448 AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[]]) 449 AC_SUBST(EXPENSIVE_CHECKS,[[no]]) 450fi 451 452dnl --enable-debug-runtime : should runtime libraries have debug symbols? 453AC_ARG_ENABLE(debug-runtime, 454 AS_HELP_STRING(--enable-debug-runtime,[Build runtime libs with debug symbols (default is NO)]),,enableval=no) 455if test ${enableval} = "no" ; then 456 AC_SUBST(DEBUG_RUNTIME,[[]]) 457else 458 AC_SUBST(DEBUG_RUNTIME,[[DEBUG_RUNTIME=1]]) 459fi 460 461dnl --enable-debug-symbols : should even optimized compiler libraries 462dnl have debug symbols? 463AC_ARG_ENABLE(debug-symbols, 464 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) 465if test ${enableval} = "no" ; then 466 AC_SUBST(DEBUG_SYMBOLS,[[]]) 467else 468 AC_SUBST(DEBUG_SYMBOLS,[[DEBUG_SYMBOLS=1]]) 469fi 470 471dnl --enable-jit: check whether they want to enable the jit 472AC_ARG_ENABLE(jit, 473 AS_HELP_STRING(--enable-jit, 474 [Enable Just In Time Compiling (default is YES)]),, 475 enableval=default) 476if test ${enableval} = "no" 477then 478 AC_SUBST(JIT,[[]]) 479else 480 case "$llvm_cv_target_arch" in 481 x86) AC_SUBST(TARGET_HAS_JIT,1) ;; 482 Sparc) AC_SUBST(TARGET_HAS_JIT,0) ;; 483 PowerPC) AC_SUBST(TARGET_HAS_JIT,1) ;; 484 x86_64) AC_SUBST(TARGET_HAS_JIT,1) ;; 485 Alpha) AC_SUBST(TARGET_HAS_JIT,0) ;; 486 ARM) AC_SUBST(TARGET_HAS_JIT,1) ;; 487 Mips) AC_SUBST(TARGET_HAS_JIT,1) ;; 488 XCore) AC_SUBST(TARGET_HAS_JIT,0) ;; 489 MSP430) AC_SUBST(TARGET_HAS_JIT,0) ;; 490 SystemZ) AC_SUBST(TARGET_HAS_JIT,0) ;; 491 Blackfin) AC_SUBST(TARGET_HAS_JIT,0) ;; 492 MBlaze) AC_SUBST(TARGET_HAS_JIT,0) ;; 493 PTX) AC_SUBST(TARGET_HAS_JIT,0) ;; 494 *) AC_SUBST(TARGET_HAS_JIT,0) ;; 495 esac 496fi 497 498dnl Allow enablement of building and installing docs 499AC_ARG_ENABLE(docs, 500 AS_HELP_STRING([--enable-docs], 501 [Build documents (default is YES)]),, 502 enableval=default) 503case "$enableval" in 504 yes) AC_SUBST(ENABLE_DOCS,[1]) ;; 505 no) AC_SUBST(ENABLE_DOCS,[0]) ;; 506 default) AC_SUBST(ENABLE_DOCS,[1]) ;; 507 *) AC_MSG_ERROR([Invalid setting for --enable-docs. Use "yes" or "no"]) ;; 508esac 509 510dnl Allow enablement of doxygen generated documentation 511AC_ARG_ENABLE(doxygen, 512 AS_HELP_STRING([--enable-doxygen], 513 [Build doxygen documentation (default is NO)]),, 514 enableval=default) 515case "$enableval" in 516 yes) AC_SUBST(ENABLE_DOXYGEN,[1]) ;; 517 no) AC_SUBST(ENABLE_DOXYGEN,[0]) ;; 518 default) AC_SUBST(ENABLE_DOXYGEN,[0]) ;; 519 *) AC_MSG_ERROR([Invalid setting for --enable-doxygen. Use "yes" or "no"]) ;; 520esac 521 522dnl Allow disablement of threads 523AC_ARG_ENABLE(threads, 524 AS_HELP_STRING([--enable-threads], 525 [Use threads if available (default is YES)]),, 526 enableval=default) 527case "$enableval" in 528 yes) AC_SUBST(ENABLE_THREADS,[1]) ;; 529 no) AC_SUBST(ENABLE_THREADS,[0]) ;; 530 default) AC_SUBST(ENABLE_THREADS,[1]) ;; 531 *) AC_MSG_ERROR([Invalid setting for --enable-threads. Use "yes" or "no"]) ;; 532esac 533AC_DEFINE_UNQUOTED([ENABLE_THREADS],$ENABLE_THREADS,[Define if threads enabled]) 534 535dnl Allow disablement of pthread.h 536AC_ARG_ENABLE(pthreads, 537 AS_HELP_STRING([--enable-pthreads], 538 [Use pthreads if available (default is YES)]),, 539 enableval=default) 540case "$enableval" in 541 yes) AC_SUBST(ENABLE_PTHREADS,[1]) ;; 542 no) AC_SUBST(ENABLE_PTHREADS,[0]) ;; 543 default) AC_SUBST(ENABLE_PTHREADS,[1]) ;; 544 *) AC_MSG_ERROR([Invalid setting for --enable-pthreads. Use "yes" or "no"]) ;; 545esac 546 547dnl Allow building without position independent code 548AC_ARG_ENABLE(pic, 549 AS_HELP_STRING([--enable-pic], 550 [Build LLVM with Position Independent Code (default is YES)]),, 551 enableval=default) 552case "$enableval" in 553 yes) AC_SUBST(ENABLE_PIC,[1]) ;; 554 no) AC_SUBST(ENABLE_PIC,[0]) ;; 555 default) AC_SUBST(ENABLE_PIC,[1]) ;; 556 *) AC_MSG_ERROR([Invalid setting for --enable-pic. Use "yes" or "no"]) ;; 557esac 558AC_DEFINE_UNQUOTED([ENABLE_PIC],$ENABLE_PIC, 559 [Define if position independent code is enabled]) 560 561dnl Allow building a shared library and linking tools against it. 562AC_ARG_ENABLE(shared, 563 AS_HELP_STRING([--enable-shared], 564 [Build a shared library and link tools against it (default is NO)]),, 565 enableval=default) 566case "$enableval" in 567 yes) AC_SUBST(ENABLE_SHARED,[1]) ;; 568 no) AC_SUBST(ENABLE_SHARED,[0]) ;; 569 default) AC_SUBST(ENABLE_SHARED,[0]) ;; 570 *) AC_MSG_ERROR([Invalid setting for --enable-shared. Use "yes" or "no"]) ;; 571esac 572 573dnl Allow libstdc++ is embedded in LLVM.dll. 574AC_ARG_ENABLE(embed-stdcxx, 575 AS_HELP_STRING([--enable-embed-stdcxx], 576 [Build a shared library with embedded libstdc++ for Win32 DLL (default is YES)]),, 577 enableval=default) 578case "$enableval" in 579 yes) AC_SUBST(ENABLE_EMBED_STDCXX,[1]) ;; 580 no) AC_SUBST(ENABLE_EMBED_STDCXX,[0]) ;; 581 default) AC_SUBST(ENABLE_EMBED_STDCXX,[1]) ;; 582 *) AC_MSG_ERROR([Invalid setting for --enable-embed-stdcxx. Use "yes" or "no"]) ;; 583esac 584 585dnl Enable embedding timestamp information into build. 586AC_ARG_ENABLE(timestamps, 587 AS_HELP_STRING([--enable-timestamps], 588 [Enable embedding timestamp information in build (default is YES)]),, 589 enableval=default) 590case "$enableval" in 591 yes) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;; 592 no) AC_SUBST(ENABLE_TIMESTAMPS,[0]) ;; 593 default) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;; 594 *) AC_MSG_ERROR([Invalid setting for --enable-timestamps. Use "yes" or "no"]) ;; 595esac 596AC_DEFINE_UNQUOTED([ENABLE_TIMESTAMPS],$ENABLE_TIMESTAMPS, 597 [Define if timestamp information (e.g., __DATE___) is allowed]) 598 599dnl Allow specific targets to be specified for building (or not) 600TARGETS_TO_BUILD="" 601AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-targets], 602 [Build specific host targets: all or target1,target2,... Valid targets are: 603 host, x86, x86_64, sparc, powerpc, alpha, arm, mips, spu, 604 xcore, msp430, systemz, blackfin, ptx, cbe, and cpp (default=all)]),, 605 enableval=all) 606if test "$enableval" = host-only ; then 607 enableval=host 608fi 609case "$enableval" in 610 all) TARGETS_TO_BUILD="X86 Sparc PowerPC Alpha ARM Mips CellSPU XCore MSP430 SystemZ Blackfin CBackend CppBackend MBlaze PTX" ;; 611 *)for a_target in `echo $enableval|sed -e 's/,/ /g' ` ; do 612 case "$a_target" in 613 x86) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;; 614 x86_64) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;; 615 sparc) TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;; 616 powerpc) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;; 617 alpha) TARGETS_TO_BUILD="Alpha $TARGETS_TO_BUILD" ;; 618 arm) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;; 619 mips) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;; 620 spu) TARGETS_TO_BUILD="CellSPU $TARGETS_TO_BUILD" ;; 621 xcore) TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;; 622 msp430) TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;; 623 systemz) TARGETS_TO_BUILD="SystemZ $TARGETS_TO_BUILD" ;; 624 blackfin) TARGETS_TO_BUILD="Blackfin $TARGETS_TO_BUILD" ;; 625 cbe) TARGETS_TO_BUILD="CBackend $TARGETS_TO_BUILD" ;; 626 cpp) TARGETS_TO_BUILD="CppBackend $TARGETS_TO_BUILD" ;; 627 mblaze) TARGETS_TO_BUILD="MBlaze $TARGETS_TO_BUILD" ;; 628 ptx) TARGETS_TO_BUILD="PTX $TARGETS_TO_BUILD" ;; 629 host) case "$llvm_cv_target_arch" in 630 x86) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;; 631 x86_64) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;; 632 Sparc) TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;; 633 PowerPC) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;; 634 Alpha) TARGETS_TO_BUILD="Alpha $TARGETS_TO_BUILD" ;; 635 ARM) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;; 636 Mips) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;; 637 MBlaze) TARGETS_TO_BUILD="MBlaze $TARGETS_TO_BUILD" ;; 638 CellSPU|SPU) TARGETS_TO_BUILD="CellSPU $TARGETS_TO_BUILD" ;; 639 XCore) TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;; 640 MSP430) TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;; 641 s390x) TARGETS_TO_BUILD="SystemZ $TARGETS_TO_BUILD" ;; 642 Blackfin) TARGETS_TO_BUILD="Blackfin $TARGETS_TO_BUILD" ;; 643 PTX) TARGETS_TO_BUILD="PTX $TARGETS_TO_BUILD" ;; 644 *) AC_MSG_ERROR([Can not set target to build]) ;; 645 esac ;; 646 *) AC_MSG_ERROR([Unrecognized target $a_target]) ;; 647 esac 648 done 649 ;; 650esac 651AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD) 652 653# Determine whether we are building LLVM support for the native architecture. 654# If so, define LLVM_NATIVE_ARCH to that LLVM target. 655for a_target in $TARGETS_TO_BUILD; do 656 if test "$a_target" = "$LLVM_NATIVE_ARCH"; then 657 AC_DEFINE_UNQUOTED(LLVM_NATIVE_ARCH, $LLVM_NATIVE_ARCH, 658 [LLVM architecture name for the native architecture, if available]) 659 LLVM_NATIVE_TARGET="LLVMInitialize${LLVM_NATIVE_ARCH}Target" 660 LLVM_NATIVE_TARGETINFO="LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo" 661 LLVM_NATIVE_TARGETMC="LLVMInitialize${LLVM_NATIVE_ARCH}TargetMC" 662 LLVM_NATIVE_ASMPRINTER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter" 663 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then 664 LLVM_NATIVE_ASMPARSER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmParser" 665 fi 666 AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGET, $LLVM_NATIVE_TARGET, 667 [LLVM name for the native Target init function, if available]) 668 AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETINFO, $LLVM_NATIVE_TARGETINFO, 669 [LLVM name for the native TargetInfo init function, if available]) 670 AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETMC, $LLVM_NATIVE_TARGETMC, 671 [LLVM name for the native target MC init function, if available]) 672 AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPRINTER, $LLVM_NATIVE_ASMPRINTER, 673 [LLVM name for the native AsmPrinter init function, if available]) 674 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then 675 AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPARSER, $LLVM_NATIVE_ASMPARSER, 676 [LLVM name for the native AsmParser init function, if available]) 677 fi 678 fi 679done 680 681# Build the LLVM_TARGET and LLVM_... macros for Targets.def and the individual 682# target feature def files. 683LLVM_ENUM_TARGETS="" 684LLVM_ENUM_ASM_PRINTERS="" 685LLVM_ENUM_ASM_PARSERS="" 686LLVM_ENUM_DISASSEMBLERS="" 687for target_to_build in $TARGETS_TO_BUILD; do 688 LLVM_ENUM_TARGETS="LLVM_TARGET($target_to_build) $LLVM_ENUM_TARGETS" 689 if test -f ${srcdir}/lib/Target/${target_to_build}/*AsmPrinter.cpp ; then 690 LLVM_ENUM_ASM_PRINTERS="LLVM_ASM_PRINTER($target_to_build) $LLVM_ENUM_ASM_PRINTERS"; 691 fi 692 if test -f ${srcdir}/lib/Target/${target_to_build}/AsmParser/Makefile ; then 693 LLVM_ENUM_ASM_PARSERS="LLVM_ASM_PARSER($target_to_build) $LLVM_ENUM_ASM_PARSERS"; 694 fi 695 if test -f ${srcdir}/lib/Target/${target_to_build}/Disassembler/Makefile ; then 696 LLVM_ENUM_DISASSEMBLERS="LLVM_DISASSEMBLER($target_to_build) $LLVM_ENUM_DISASSEMBLERS"; 697 fi 698done 699AC_SUBST(LLVM_ENUM_TARGETS) 700AC_SUBST(LLVM_ENUM_ASM_PRINTERS) 701AC_SUBST(LLVM_ENUM_ASM_PARSERS) 702AC_SUBST(LLVM_ENUM_DISASSEMBLERS) 703 704dnl Prevent the CBackend from using printf("%a") for floating point so older 705dnl C compilers that cannot deal with the 0x0p+0 hex floating point format 706dnl can still compile the CBE's output 707AC_ARG_ENABLE([cbe-printf-a],AS_HELP_STRING([--enable-cbe-printf-a], 708 [Enable C Backend output with hex floating point via %a (default is YES)]),, 709 enableval=default) 710case "$enableval" in 711 yes) AC_SUBST(ENABLE_CBE_PRINTF_A,[1]) ;; 712 no) AC_SUBST(ENABLE_CBE_PRINTF_A,[0]) ;; 713 default) AC_SUBST(ENABLE_CBE_PRINTF_A,[1]) ;; 714 *) AC_MSG_ERROR([Invalid setting for --enable-cbe-printf-a. Use "yes" or "no"]) ;; 715esac 716AC_DEFINE_UNQUOTED([ENABLE_CBE_PRINTF_A],$ENABLE_CBE_PRINTF_A, 717 [Define if CBE is enabled for printf %a output]) 718 719dnl Allow a specific llvm-gcc/llvm-g++ pair to be used with this LLVM config. 720AC_ARG_WITH(llvmgccdir, 721 AS_HELP_STRING([--with-llvmgccdir], 722 [Specify location of llvm-gcc install dir (default searches PATH)]),, 723 withval=default) 724case "$withval" in 725 default) WITH_LLVMGCCDIR=default ;; 726 /* | [[A-Za-z]]:[[\\/]]*) WITH_LLVMGCCDIR=$withval ;; 727 *) AC_MSG_ERROR([Invalid path for --with-llvmgccdir. Provide full path]) ;; 728esac 729 730dnl Allow a specific llvm-gcc compiler to be used with this LLVM config. 731AC_ARG_WITH(llvmgcc, 732 AS_HELP_STRING([--with-llvmgcc], 733 [Specify location of llvm-gcc driver (default searches PATH)]), 734 LLVMGCC=$with_llvmgcc 735 WITH_LLVMGCCDIR="",) 736 737dnl Allow a specific llvm-g++ compiler to be used with this LLVM config. 738AC_ARG_WITH(llvmgxx, 739 AS_HELP_STRING([--with-llvmgxx], 740 [Specify location of llvm-g++ driver (default searches PATH)]), 741 LLVMGXX=$with_llvmgxx 742 WITH_LLVMGCCDIR="",) 743 744if test -n "$LLVMGCC"; then 745 LLVMGCCCOMMAND="$LLVMGCC" 746fi 747 748if test -n "$LLVMGXX"; then 749 LLVMGXXCOMMAND="$LLVMGXX" 750fi 751 752if test -n "$LLVMGCC" && test -z "$LLVMGXX"; then 753 AC_MSG_ERROR([Invalid llvm-g++. Use --with-llvmgxx when --with-llvmgcc is used]); 754fi 755 756if test -n "$LLVMGXX" && test -z "$LLVMGCC"; then 757 AC_MSG_ERROR([Invalid llvm-gcc. Use --with-llvmgcc when --with-llvmgxx is used]); 758fi 759 760dnl Allow a specific Clang compiler to be used with this LLVM config. 761AC_ARG_WITH(clang, 762 AS_HELP_STRING([--with-clang], 763 [Specify location of clang compiler (default is --with-built-clang)]), 764 [],[with_clang=default]) 765 766dnl Enable use of the built Clang. 767AC_ARG_WITH(built-clang, 768 AS_HELP_STRING([--with-built-clang], 769 [Use the compiled Clang as the LLVM compiler (default=check)]), 770 [],[with_built_clang=check]) 771 772dnl Select the Clang compiler option. 773dnl 774dnl If --with-clang is given, always honor that; otherwise honor 775dnl --with-built-clang, or check if we have the clang sources. 776AC_MSG_CHECKING([clang compiler]) 777WITH_CLANGPATH="" 778WITH_BUILT_CLANG=0 779if test "$with_clang" != "default"; then 780 WITH_CLANGPATH="$with_clang" 781 if ! test -x "$WITH_CLANGPATH"; then 782 AC_MSG_ERROR([invalid --with-clang, path does not specify an executable]) 783 fi 784elif test "$with_built_clang" = "yes"; then 785 WITH_BUILT_CLANG=1 786elif test "$with_built_clang" = "no"; then 787 WITH_BUILT_CLANG=0 788else 789 if test "$with_built_clang" != "check"; then 790 AC_MSG_ERROR([invalid value for --with-built-clang.]) 791 fi 792 793 if test -f ${srcdir}/tools/clang/README.txt; then 794 WITH_BUILT_CLANG=1 795 fi 796fi 797 798if ! test -z "$WITH_CLANGPATH"; then 799 AC_MSG_RESULT([$WITH_CLANGPATH]) 800 WITH_CLANGXXPATH=`"$WITH_CLANGPATH" --print-prog-name=clang++` 801elif test "$WITH_BUILT_CLANG" = "1"; then 802 AC_MSG_RESULT([built]) 803else 804 AC_MSG_RESULT([none]) 805fi 806AC_SUBST(CLANGPATH,$WITH_CLANGPATH) 807AC_SUBST(CLANGXXPATH,$WITH_CLANGXXPATH) 808AC_SUBST(ENABLE_BUILT_CLANG,$WITH_BUILT_CLANG) 809 810dnl Override the option to use for optimized builds. 811AC_ARG_WITH(optimize-option, 812 AS_HELP_STRING([--with-optimize-option], 813 [Select the compiler options to use for optimized builds]),, 814 withval=default) 815AC_MSG_CHECKING([optimization flags]) 816case "$withval" in 817 default) 818 case "$llvm_cv_os_type" in 819 FreeBSD) optimize_option=-O2 ;; 820 MingW) optimize_option=-O2 ;; 821 *) optimize_option=-O3 ;; 822 esac ;; 823 *) optimize_option="$withval" ;; 824esac 825AC_SUBST(OPTIMIZE_OPTION,$optimize_option) 826AC_MSG_RESULT([$optimize_option]) 827 828dnl Specify extra build options 829AC_ARG_WITH(extra-options, 830 AS_HELP_STRING([--with-extra-options], 831 [Specify additional options to compile LLVM with]),, 832 withval=default) 833case "$withval" in 834 default) EXTRA_OPTIONS= ;; 835 *) EXTRA_OPTIONS=$withval ;; 836esac 837AC_SUBST(EXTRA_OPTIONS,$EXTRA_OPTIONS) 838 839dnl Specify extra linker build options 840AC_ARG_WITH(extra-ld-options, 841 AS_HELP_STRING([--with-extra-ld-options], 842 [Specify additional options to link LLVM with]),, 843 withval=default) 844case "$withval" in 845 default) EXTRA_LD_OPTIONS= ;; 846 *) EXTRA_LD_OPTIONS=$withval ;; 847esac 848AC_SUBST(EXTRA_LD_OPTIONS,$EXTRA_LD_OPTIONS) 849 850dnl Allow specific bindings to be specified for building (or not) 851AC_ARG_ENABLE([bindings],AS_HELP_STRING([--enable-bindings], 852 [Build specific language bindings: all,auto,none,{binding-name} (default=auto)]),, 853 enableval=default) 854BINDINGS_TO_BUILD="" 855case "$enableval" in 856 yes | default | auto) BINDINGS_TO_BUILD="auto" ;; 857 all ) BINDINGS_TO_BUILD="ocaml" ;; 858 none | no) BINDINGS_TO_BUILD="" ;; 859 *)for a_binding in `echo $enableval|sed -e 's/,/ /g' ` ; do 860 case "$a_binding" in 861 ocaml) BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD" ;; 862 *) AC_MSG_ERROR([Unrecognized binding $a_binding]) ;; 863 esac 864 done 865 ;; 866esac 867 868dnl Allow the ocaml libdir to be overridden. This could go in a configure 869dnl script for bindings/ocaml/configure, except that its auto value depends on 870dnl OCAMLC, which is found here to support tests. 871AC_ARG_WITH([ocaml-libdir], 872 [AS_HELP_STRING([--with-ocaml-libdir], 873 [Specify install location for ocaml bindings (default is stdlib)])], 874 [], 875 [withval=auto]) 876case "$withval" in 877 auto) with_ocaml_libdir="$withval" ;; 878 /* | [[A-Za-z]]:[[\\/]]*) with_ocaml_libdir="$withval" ;; 879 *) AC_MSG_ERROR([Invalid path for --with-ocaml-libdir. Provide full path]) ;; 880esac 881 882AC_ARG_WITH(clang-resource-dir, 883 AS_HELP_STRING([--with-clang-resource-dir], 884 [Relative directory from the Clang binary for resource files]),, 885 withval="") 886AC_DEFINE_UNQUOTED(CLANG_RESOURCE_DIR,"$withval", 887 [Relative directory for resource files]) 888 889AC_ARG_WITH(c-include-dirs, 890 AS_HELP_STRING([--with-c-include-dirs], 891 [Colon separated list of directories clang will search for headers]),, 892 withval="") 893AC_DEFINE_UNQUOTED(C_INCLUDE_DIRS,"$withval", 894 [Directories clang will search for headers]) 895 896AC_ARG_WITH(cxx-include-root, 897 AS_HELP_STRING([--with-cxx-include-root], 898 [Directory with the libstdc++ headers.]),, 899 withval="") 900AC_DEFINE_UNQUOTED(CXX_INCLUDE_ROOT,"$withval", 901 [Directory with the libstdc++ headers.]) 902 903AC_ARG_WITH(cxx-include-arch, 904 AS_HELP_STRING([--with-cxx-include-arch], 905 [Architecture of the libstdc++ headers.]),, 906 withval="") 907AC_DEFINE_UNQUOTED(CXX_INCLUDE_ARCH,"$withval", 908 [Arch the libstdc++ headers.]) 909 910AC_ARG_WITH(cxx-include-32bit-dir, 911 AS_HELP_STRING([--with-cxx-include-32bit-dir], 912 [32 bit multilib dir.]),, 913 withval="") 914AC_DEFINE_UNQUOTED(CXX_INCLUDE_32BIT_DIR,"$withval", 915 [32 bit multilib directory.]) 916 917AC_ARG_WITH(cxx-include-64bit-dir, 918 AS_HELP_STRING([--with-cxx-include-64bit-dir], 919 [64 bit multilib directory.]),, 920 withval="") 921AC_DEFINE_UNQUOTED(CXX_INCLUDE_64BIT_DIR,"$withval", 922 [64 bit multilib directory.]) 923 924dnl Allow linking of LLVM with GPLv3 binutils code. 925AC_ARG_WITH(binutils-include, 926 AS_HELP_STRING([--with-binutils-include], 927 [Specify path to binutils/include/ containing plugin-api.h file for gold plugin.]),, 928 withval=default) 929case "$withval" in 930 default) WITH_BINUTILS_INCDIR=default ;; 931 /* | [[A-Za-z]]:[[\\/]]*) WITH_BINUTILS_INCDIR=$withval ;; 932 *) AC_MSG_ERROR([Invalid path for --with-binutils-include. Provide full path]) ;; 933esac 934if test "x$WITH_BINUTILS_INCDIR" != xdefault ; then 935 AC_SUBST(BINUTILS_INCDIR,$WITH_BINUTILS_INCDIR) 936 if test ! -f "$WITH_BINUTILS_INCDIR/plugin-api.h"; then 937 echo "$WITH_BINUTILS_INCDIR/plugin-api.h" 938 AC_MSG_ERROR([Invalid path to directory containing plugin-api.h.]); 939 fi 940fi 941 942dnl Specify the URL where bug reports should be submitted. 943AC_ARG_WITH(bug-report-url, 944 AS_HELP_STRING([--with-bug-report-url], 945 [Specify the URL where bug reports should be submitted (default=http://llvm.org)]),, 946 withval="http://llvm.org") 947AC_DEFINE_UNQUOTED(BUG_REPORT_URL,"$withval", 948 [Bug report URL.]) 949 950dnl --enable-libffi : check whether the user wants to turn off libffi: 951AC_ARG_ENABLE(libffi,AS_HELP_STRING( 952 --enable-libffi,[Check for the presence of libffi (default is NO)]), 953 [case "$enableval" in 954 yes) llvm_cv_enable_libffi="yes" ;; 955 no) llvm_cv_enable_libffi="no" ;; 956 *) AC_MSG_ERROR([Invalid setting for --enable-libffi. Use "yes" or "no"]) ;; 957 esac], 958 llvm_cv_enable_libffi=no) 959 960dnl===-----------------------------------------------------------------------=== 961dnl=== 962dnl=== SECTION 4: Check for programs we need and that they are the right version 963dnl=== 964dnl===-----------------------------------------------------------------------=== 965 966dnl Check for compilation tools 967AC_PROG_CPP 968AC_PROG_CC(gcc) 969AC_PROG_CXX(g++) 970 971AC_PROG_NM 972AC_SUBST(NM) 973 974dnl Check for the tools that the makefiles require 975AC_CHECK_GNU_MAKE 976AC_PROG_LN_S 977AC_PATH_PROG(CMP, [cmp], [cmp]) 978AC_PATH_PROG(CP, [cp], [cp]) 979AC_PATH_PROG(DATE, [date], [date]) 980AC_PATH_PROG(FIND, [find], [find]) 981AC_PATH_PROG(GREP, [grep], [grep]) 982AC_PATH_PROG(MKDIR,[mkdir],[mkdir]) 983AC_PATH_PROG(MV, [mv], [mv]) 984AC_PROG_RANLIB 985AC_CHECK_TOOL(AR, ar, false) 986AC_PATH_PROG(RM, [rm], [rm]) 987AC_PATH_PROG(SED, [sed], [sed]) 988AC_PATH_PROG(TAR, [tar], [gtar]) 989AC_PATH_PROG(BINPWD,[pwd], [pwd]) 990 991dnl Looking for misc. graph plotting software 992AC_PATH_PROG(GRAPHVIZ, [Graphviz], [echo Graphviz]) 993if test "$GRAPHVIZ" != "echo Graphviz" ; then 994 AC_DEFINE([HAVE_GRAPHVIZ],[1],[Define if the Graphviz program is available]) 995 dnl If we're targeting for mingw we should emit windows paths, not msys 996 if test "$llvm_cv_os_type" = "MingW" ; then 997 GRAPHVIZ=`echo $GRAPHVIZ | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 998 fi 999 AC_DEFINE_UNQUOTED([LLVM_PATH_GRAPHVIZ],"$GRAPHVIZ${EXEEXT}", 1000 [Define to path to Graphviz program if found or 'echo Graphviz' otherwise]) 1001fi 1002AC_PATH_PROG(DOT, [dot], [echo dot]) 1003if test "$DOT" != "echo dot" ; then 1004 AC_DEFINE([HAVE_DOT],[1],[Define if the dot program is available]) 1005 dnl If we're targeting for mingw we should emit windows paths, not msys 1006 if test "$llvm_cv_os_type" = "MingW" ; then 1007 DOT=`echo $DOT | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 1008 fi 1009 AC_DEFINE_UNQUOTED([LLVM_PATH_DOT],"$DOT${EXEEXT}", 1010 [Define to path to dot program if found or 'echo dot' otherwise]) 1011fi 1012AC_PATH_PROG(FDP, [fdp], [echo fdp]) 1013if test "$FDP" != "echo fdp" ; then 1014 AC_DEFINE([HAVE_FDP],[1],[Define if the neat program is available]) 1015 dnl If we're targeting for mingw we should emit windows paths, not msys 1016 if test "$llvm_cv_os_type" = "MingW" ; then 1017 FDP=`echo $FDP | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 1018 fi 1019 AC_DEFINE_UNQUOTED([LLVM_PATH_FDP],"$FDP${EXEEXT}", 1020 [Define to path to fdp program if found or 'echo fdp' otherwise]) 1021fi 1022AC_PATH_PROG(NEATO, [neato], [echo neato]) 1023if test "$NEATO" != "echo neato" ; then 1024 AC_DEFINE([HAVE_NEATO],[1],[Define if the neat program is available]) 1025 dnl If we're targeting for mingw we should emit windows paths, not msys 1026 if test "$llvm_cv_os_type" = "MingW" ; then 1027 NEATO=`echo $NEATO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 1028 fi 1029 AC_DEFINE_UNQUOTED([LLVM_PATH_NEATO],"$NEATO${EXEEXT}", 1030 [Define to path to neato program if found or 'echo neato' otherwise]) 1031fi 1032AC_PATH_PROG(TWOPI, [twopi], [echo twopi]) 1033if test "$TWOPI" != "echo twopi" ; then 1034 AC_DEFINE([HAVE_TWOPI],[1],[Define if the neat program is available]) 1035 dnl If we're targeting for mingw we should emit windows paths, not msys 1036 if test "$llvm_cv_os_type" = "MingW" ; then 1037 TWOPI=`echo $TWOPI | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 1038 fi 1039 AC_DEFINE_UNQUOTED([LLVM_PATH_TWOPI],"$TWOPI${EXEEXT}", 1040 [Define to path to twopi program if found or 'echo twopi' otherwise]) 1041fi 1042AC_PATH_PROG(CIRCO, [circo], [echo circo]) 1043if test "$CIRCO" != "echo circo" ; then 1044 AC_DEFINE([HAVE_CIRCO],[1],[Define if the neat program is available]) 1045 dnl If we're targeting for mingw we should emit windows paths, not msys 1046 if test "$llvm_cv_os_type" = "MingW" ; then 1047 CIRCO=`echo $CIRCO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 1048 fi 1049 AC_DEFINE_UNQUOTED([LLVM_PATH_CIRCO],"$CIRCO${EXEEXT}", 1050 [Define to path to circo program if found or 'echo circo' otherwise]) 1051fi 1052AC_PATH_PROGS(GV, [gv gsview32], [echo gv]) 1053if test "$GV" != "echo gv" ; then 1054 AC_DEFINE([HAVE_GV],[1],[Define if the gv program is available]) 1055 dnl If we're targeting for mingw we should emit windows paths, not msys 1056 if test "$llvm_cv_os_type" = "MingW" ; then 1057 GV=`echo $GV | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 1058 fi 1059 AC_DEFINE_UNQUOTED([LLVM_PATH_GV],"$GV${EXEEXT}", 1060 [Define to path to gv program if found or 'echo gv' otherwise]) 1061fi 1062AC_PATH_PROG(DOTTY, [dotty], [echo dotty]) 1063if test "$DOTTY" != "echo dotty" ; then 1064 AC_DEFINE([HAVE_DOTTY],[1],[Define if the dotty program is available]) 1065 dnl If we're targeting for mingw we should emit windows paths, not msys 1066 if test "$llvm_cv_os_type" = "MingW" ; then 1067 DOTTY=`echo $DOTTY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 1068 fi 1069 AC_DEFINE_UNQUOTED([LLVM_PATH_DOTTY],"$DOTTY${EXEEXT}", 1070 [Define to path to dotty program if found or 'echo dotty' otherwise]) 1071fi 1072AC_PATH_PROG(XDOT_PY, [xdot.py], [echo xdot.py]) 1073if test "$XDOT_PY" != "echo xdot.py" ; then 1074 AC_DEFINE([HAVE_XDOT_PY],[1],[Define if the xdot.py program is available]) 1075 dnl If we're targeting for mingw we should emit windows paths, not msys 1076 if test "$llvm_cv_os_type" = "MingW" ; then 1077 XDOT_PY=`echo $XDOT_PY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 1078 fi 1079 AC_DEFINE_UNQUOTED([LLVM_PATH_XDOT_PY],"$XDOT_PY${EXEEXT}", 1080 [Define to path to xdot.py program if found or 'echo xdot.py' otherwise]) 1081fi 1082 1083dnl Look for a sufficiently recent version of Perl. 1084LLVM_PROG_PERL([5.006]) 1085AC_SUBST(PERL) 1086if test x"$PERL" = xnone; then 1087 AC_SUBST(HAVE_PERL,0) 1088 AC_MSG_ERROR([perl is required but was not found, please install it]) 1089else 1090 AC_SUBST(HAVE_PERL,1) 1091fi 1092 1093dnl Find the install program 1094AC_PROG_INSTALL 1095dnl Prepend src dir to install path dir if it's a relative path 1096dnl This is a hack for installs that take place in something other 1097dnl than the top level. 1098case "$INSTALL" in 1099 [[\\/$]]* | ?:[[\\/]]* ) ;; 1100 *) INSTALL="\\\$(TOPSRCDIR)/$INSTALL" ;; 1101esac 1102 1103dnl Checks for documentation and testing tools that we can do without. If these 1104dnl are not found then they are set to "true" which always succeeds but does 1105dnl nothing. This just lets the build output show that we could have done 1106dnl something if the tool was available. 1107AC_PATH_PROG(BZIP2, [bzip2]) 1108AC_PATH_PROG(CAT, [cat]) 1109AC_PATH_PROG(DOXYGEN, [doxygen]) 1110AC_PATH_PROG(GROFF, [groff]) 1111AC_PATH_PROG(GZIPBIN, [gzip]) 1112AC_PATH_PROG(POD2HTML, [pod2html]) 1113AC_PATH_PROG(POD2MAN, [pod2man]) 1114AC_PATH_PROG(PDFROFF, [pdfroff]) 1115AC_PATH_PROG(RUNTEST, [runtest]) 1116DJ_AC_PATH_TCLSH 1117AC_PATH_PROG(ZIP, [zip]) 1118AC_PATH_PROGS(OCAMLC, [ocamlc]) 1119AC_PATH_PROGS(OCAMLOPT, [ocamlopt]) 1120AC_PATH_PROGS(OCAMLDEP, [ocamldep]) 1121AC_PATH_PROGS(OCAMLDOC, [ocamldoc]) 1122AC_PATH_PROGS(GAS, [gas as]) 1123 1124dnl Get the version of the linker in use. 1125AC_LINK_GET_VERSION 1126 1127dnl Determine whether the linker supports the -R option. 1128AC_LINK_USE_R 1129 1130dnl Determine whether the linker supports the -export-dynamic option. 1131AC_LINK_EXPORT_DYNAMIC 1132 1133dnl Determine whether the linker supports the --version-script option. 1134AC_LINK_VERSION_SCRIPT 1135 1136dnl Check for libtool and the library that has dlopen function (which must come 1137dnl before the AC_PROG_LIBTOOL check in order to enable dlopening libraries with 1138dnl libtool). 1139AC_LIBTOOL_DLOPEN 1140AC_LIB_LTDL 1141 1142if test "$WITH_LLVMGCCDIR" = "default" ; then 1143 LLVMGCC="llvm-gcc${EXEEXT}" 1144 LLVMGXX="llvm-g++${EXEEXT}" 1145 LLVMGCCCOMMAND="$LLVMGCC" 1146 LLVMGXXCOMMAND="$LLVMGXX" 1147 AC_SUBST(LLVMGCCCOMMAND,$LLVMGCCCOMMAND) 1148 AC_SUBST(LLVMGXXCOMMAND,$LLVMGXXCOMMAND) 1149 AC_PATH_PROG(LLVMGCC, $LLVMGCC, []) 1150 AC_PATH_PROG(LLVMGXX, $LLVMGXX, []) 1151else 1152 if test -z "$LLVMGCC"; then 1153 LLVMGCC="$WITH_LLVMGCCDIR/bin/llvm-gcc${EXEEXT}" 1154 LLVMGCCCOMMAND="$LLVMGCC" 1155 fi 1156 if test -z "$LLVMGXX"; then 1157 LLVMGXX="$WITH_LLVMGCCDIR/bin/llvm-g++${EXEEXT}" 1158 LLVMGXXCOMMAND="$LLVMGXX" 1159 fi 1160 1161 AC_SUBST(LLVMGCC,$LLVMGCC) 1162 AC_SUBST(LLVMGXX,$LLVMGXX) 1163 AC_SUBST(LLVMGCCCOMMAND,$LLVMGCCCOMMAND) 1164 AC_SUBST(LLVMGXXCOMMAND,$LLVMGXXCOMMAND) 1165fi 1166 1167dnl Select the LLVM capable compiler to use, we default to using llvm-gcc if 1168dnl found, otherwise clang if available. 1169AC_ARG_WITH(llvmcc, 1170 AS_HELP_STRING([--with-llvmcc=<name>], 1171 [Choose the LLVM capable compiler to use (llvm-gcc, clang, or none; default=check)]), 1172 [],[with_llvmcc=check]) 1173AC_MSG_CHECKING([LLVM capable compiler]) 1174if test "$with_llvmcc" != "check"; then 1175 if (test "$with_llvmcc" != "llvm-gcc" && 1176 test "$with_llvmcc" != "clang" && 1177 test "$with_llvmcc" != "none"); then 1178 AC_MSG_ERROR([invalid value for --with-llvmcc, expected 'llvm-gcc', 'clang', or 'none'.]) 1179 fi 1180 WITH_LLVMCC="$with_llvmcc" 1181elif test -n "$LLVMGCC"; then 1182 WITH_LLVMCC=llvm-gcc 1183elif test -n "$WITH_CLANGPATH" || test "$WITH_BUILT_CLANG" -ne "0"; then 1184 WITH_LLVMCC=clang 1185else 1186 WITH_LLVMCC=none 1187fi 1188AC_MSG_RESULT([$WITH_LLVMCC]) 1189AC_SUBST(LLVMCC_OPTION,$WITH_LLVMCC) 1190 1191AC_MSG_CHECKING([tool compatibility]) 1192 1193dnl Ensure that compilation tools are GCC or a GNU compatible compiler such as 1194dnl ICC; we use GCC specific options in the makefiles so the compiler needs 1195dnl to support those options. 1196dnl "icc" emits gcc signatures 1197dnl "icc -no-gcc" emits no gcc signature BUT is still compatible 1198ICC=no 1199IXX=no 1200case $CC in 1201 icc*|icpc*) 1202 ICC=yes 1203 IXX=yes 1204 ;; 1205 *) 1206 ;; 1207esac 1208 1209if test "$GCC" != "yes" && test "$ICC" != "yes" 1210then 1211 AC_MSG_ERROR([gcc|icc required but not found]) 1212fi 1213 1214dnl Ensure that compilation tools are compatible with GCC extensions 1215if test "$GXX" != "yes" && test "$IXX" != "yes" 1216then 1217 AC_MSG_ERROR([g++|clang++|icc required but not found]) 1218fi 1219 1220dnl Verify that GCC is version 3.0 or higher 1221if test "$GCC" = "yes" 1222then 1223 AC_COMPILE_IFELSE([[#if !defined(__GNUC__) || __GNUC__ < 3 1224#error Unsupported GCC version 1225#endif 1226]], [], [AC_MSG_ERROR([gcc 3.x required, but you have a lower version])]) 1227fi 1228 1229dnl Check for GNU Make. We use its extensions, so don't build without it 1230if test -z "$llvm_cv_gnu_make_command" 1231then 1232 AC_MSG_ERROR([GNU Make required but not found]) 1233fi 1234 1235dnl Tool compatibility is okay if we make it here. 1236AC_MSG_RESULT([ok]) 1237 1238dnl Check optional compiler flags. 1239AC_MSG_CHECKING([optional compiler flags]) 1240CXX_FLAG_CHECK(NO_VARIADIC_MACROS, [-Wno-variadic-macros]) 1241CXX_FLAG_CHECK(NO_MISSING_FIELD_INITIALIZERS, [-Wno-missing-field-initializers]) 1242AC_MSG_RESULT([$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS]) 1243 1244dnl===-----------------------------------------------------------------------=== 1245dnl=== 1246dnl=== SECTION 5: Check for libraries 1247dnl=== 1248dnl===-----------------------------------------------------------------------=== 1249 1250AC_CHECK_LIB(m,sin) 1251if test "$llvm_cv_os_type" = "MingW" ; then 1252 AC_CHECK_LIB(imagehlp, main) 1253 AC_CHECK_LIB(psapi, main) 1254fi 1255 1256dnl dlopen() is required for plugin support. 1257AC_SEARCH_LIBS(dlopen,dl,AC_DEFINE([HAVE_DLOPEN],[1], 1258 [Define if dlopen() is available on this platform.]), 1259 AC_MSG_WARN([dlopen() not found - disabling plugin support])) 1260 1261dnl libffi is optional; used to call external functions from the interpreter 1262if test "$llvm_cv_enable_libffi" = "yes" ; then 1263 AC_SEARCH_LIBS(ffi_call,ffi,AC_DEFINE([HAVE_FFI_CALL],[1], 1264 [Define if libffi is available on this platform.]), 1265 AC_MSG_ERROR([libffi not found - configure without --enable-libffi to compile without it])) 1266fi 1267 1268dnl mallinfo is optional; the code can compile (minus features) without it 1269AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1], 1270 [Define if mallinfo() is available on this platform.])) 1271 1272dnl pthread locking functions are optional - but llvm will not be thread-safe 1273dnl without locks. 1274if test "$ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then 1275 AC_CHECK_LIB(pthread, pthread_mutex_init) 1276 AC_SEARCH_LIBS(pthread_mutex_lock,pthread, 1277 AC_DEFINE([HAVE_PTHREAD_MUTEX_LOCK],[1], 1278 [Have pthread_mutex_lock])) 1279 AC_SEARCH_LIBS(pthread_rwlock_init,pthread, 1280 AC_DEFINE([HAVE_PTHREAD_RWLOCK_INIT],[1], 1281 [Have pthread_rwlock_init])) 1282 AC_SEARCH_LIBS(pthread_getspecific,pthread, 1283 AC_DEFINE([HAVE_PTHREAD_GETSPECIFIC],[1], 1284 [Have pthread_getspecific])) 1285fi 1286 1287dnl Allow extra x86-disassembler library 1288AC_ARG_WITH(udis86, 1289 AS_HELP_STRING([--with-udis86=<path>], 1290 [Use udis86 external x86 disassembler library]), 1291 [ 1292 AC_SUBST(USE_UDIS86, [1]) 1293 case "$withval" in 1294 /usr/lib|yes) ;; 1295 *) LDFLAGS="$LDFLAGS -L${withval}" ;; 1296 esac 1297 AC_CHECK_LIB(udis86, ud_init, [], [ 1298 echo "Error! You need to have libudis86 around." 1299 exit -1 1300 ]) 1301 ], 1302 AC_SUBST(USE_UDIS86, [0])) 1303AC_DEFINE_UNQUOTED([USE_UDIS86],$USE_UDIS86, 1304 [Define if use udis86 library]) 1305 1306dnl Allow OProfile support for JIT output. 1307AC_ARG_WITH(oprofile, 1308 AS_HELP_STRING([--with-oprofile=<prefix>], 1309 [Tell OProfile >= 0.9.4 how to symbolize JIT output]), 1310 [ 1311 AC_SUBST(USE_OPROFILE, [1]) 1312 case "$withval" in 1313 /usr|yes) llvm_cv_oppath=/usr/lib/oprofile ;; 1314 no) llvm_cv_oppath= 1315 AC_SUBST(USE_OPROFILE, [0]) ;; 1316 *) llvm_cv_oppath="${withval}/lib/oprofile" 1317 CPPFLAGS="-I${withval}/include";; 1318 esac 1319 if test -n "$llvm_cv_oppath" ; then 1320 LIBS="$LIBS -L${llvm_cv_oppath} -Wl,-rpath,${llvm_cv_oppath}" 1321 dnl Work around http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=537744: 1322 dnl libbfd is not included properly in libopagent in some Debian 1323 dnl versions. If libbfd isn't found at all, we assume opagent works 1324 dnl anyway. 1325 AC_SEARCH_LIBS(bfd_init, bfd, [], []) 1326 AC_SEARCH_LIBS(op_open_agent, opagent, [], [ 1327 echo "Error! You need to have libopagent around." 1328 exit -1 1329 ]) 1330 AC_CHECK_HEADER([opagent.h], [], [ 1331 echo "Error! You need to have opagent.h around." 1332 exit -1 1333 ]) 1334 fi 1335 ], 1336 [ 1337 AC_SUBST(USE_OPROFILE, [0]) 1338 ]) 1339AC_DEFINE_UNQUOTED([USE_OPROFILE],$USE_OPROFILE, 1340 [Define if we have the oprofile JIT-support library]) 1341 1342dnl===-----------------------------------------------------------------------=== 1343dnl=== 1344dnl=== SECTION 6: Check for header files 1345dnl=== 1346dnl===-----------------------------------------------------------------------=== 1347 1348dnl First, use autoconf provided macros for specific headers that we need 1349dnl We don't check for ancient stuff or things that are guaranteed to be there 1350dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers. 1351dnl Generally we're looking for POSIX headers. 1352AC_HEADER_DIRENT 1353AC_HEADER_MMAP_ANONYMOUS 1354AC_HEADER_STAT 1355AC_HEADER_STDC 1356AC_HEADER_SYS_WAIT 1357AC_HEADER_TIME 1358 1359AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h inttypes.h limits.h link.h]) 1360AC_CHECK_HEADERS([malloc.h setjmp.h signal.h stdint.h termios.h unistd.h]) 1361AC_CHECK_HEADERS([utime.h windows.h]) 1362AC_CHECK_HEADERS([sys/mman.h sys/param.h sys/resource.h sys/time.h sys/uio.h]) 1363AC_CHECK_HEADERS([sys/types.h sys/ioctl.h malloc/malloc.h mach/mach.h]) 1364AC_CHECK_HEADERS([valgrind/valgrind.h]) 1365AC_CHECK_HEADERS([fenv.h]) 1366if test "$ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then 1367 AC_CHECK_HEADERS(pthread.h, 1368 AC_SUBST(HAVE_PTHREAD, 1), 1369 AC_SUBST(HAVE_PTHREAD, 0)) 1370else 1371 AC_SUBST(HAVE_PTHREAD, 0) 1372fi 1373 1374dnl Try to find ffi.h. 1375if test "$llvm_cv_enable_libffi" = "yes" ; then 1376 AC_CHECK_HEADERS([ffi.h ffi/ffi.h]) 1377fi 1378 1379dnl Try to find Darwin specific crash reporting libraries. 1380AC_CHECK_HEADERS([CrashReporterClient.h]) 1381 1382dnl Try to find Darwin specific crash reporting global. 1383AC_MSG_CHECKING([__crashreporter_info__]) 1384AC_LINK_IFELSE( 1385 AC_LANG_SOURCE( 1386 [[extern const char *__crashreporter_info__; 1387 int main() { 1388 __crashreporter_info__ = "test"; 1389 return 0; 1390 } 1391 ]]), 1392 AC_MSG_RESULT(yes) 1393 AC_DEFINE(HAVE_CRASHREPORTER_INFO, 1, Can use __crashreporter_info__), 1394 AC_MSG_RESULT(no) 1395 AC_DEFINE(HAVE_CRASHREPORTER_INFO, 0, 1396 Define if __crashreporter_info__ exists.)) 1397 1398dnl===-----------------------------------------------------------------------=== 1399dnl=== 1400dnl=== SECTION 7: Check for types and structures 1401dnl=== 1402dnl===-----------------------------------------------------------------------=== 1403 1404AC_HUGE_VAL_CHECK 1405AC_TYPE_PID_T 1406AC_TYPE_SIZE_T 1407AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[Define as the return type of signal handlers (`int' or `void').]) 1408AC_STRUCT_TM 1409AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found])) 1410AC_CHECK_TYPES([uint64_t],, 1411 AC_CHECK_TYPES([u_int64_t],, 1412 AC_MSG_ERROR([Type uint64_t or u_int64_t required but not found]))) 1413 1414dnl===-----------------------------------------------------------------------=== 1415dnl=== 1416dnl=== SECTION 8: Check for specific functions needed 1417dnl=== 1418dnl===-----------------------------------------------------------------------=== 1419 1420AC_CHECK_FUNCS([backtrace ceilf floorf roundf rintf nearbyintf getcwd ]) 1421AC_CHECK_FUNCS([powf fmodf strtof round ]) 1422AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday ]) 1423AC_CHECK_FUNCS([isatty mkdtemp mkstemp ]) 1424AC_CHECK_FUNCS([mktemp posix_spawn realpath sbrk setrlimit strdup ]) 1425AC_CHECK_FUNCS([strerror strerror_r setenv ]) 1426AC_CHECK_FUNCS([strtoll strtoq sysconf malloc_zone_statistics ]) 1427AC_CHECK_FUNCS([setjmp longjmp sigsetjmp siglongjmp writev]) 1428AC_C_PRINTF_A 1429AC_FUNC_RAND48 1430 1431dnl Check the declaration "Secure API" on Windows environments. 1432AC_CHECK_DECLS([strerror_s]) 1433 1434dnl Check symbols in libgcc.a for JIT on Mingw. 1435if test "$llvm_cv_os_type" = "MingW" ; then 1436 AC_CHECK_LIB(gcc,_alloca,AC_DEFINE([HAVE__ALLOCA],[1],[Have host's _alloca])) 1437 AC_CHECK_LIB(gcc,__alloca,AC_DEFINE([HAVE___ALLOCA],[1],[Have host's __alloca])) 1438 AC_CHECK_LIB(gcc,__chkstk,AC_DEFINE([HAVE___CHKSTK],[1],[Have host's __chkstk])) 1439 AC_CHECK_LIB(gcc,___chkstk,AC_DEFINE([HAVE____CHKSTK],[1],[Have host's ___chkstk])) 1440 1441 AC_CHECK_LIB(gcc,__ashldi3,AC_DEFINE([HAVE___ASHLDI3],[1],[Have host's __ashldi3])) 1442 AC_CHECK_LIB(gcc,__ashrdi3,AC_DEFINE([HAVE___ASHRDI3],[1],[Have host's __ashrdi3])) 1443 AC_CHECK_LIB(gcc,__divdi3,AC_DEFINE([HAVE___DIVDI3],[1],[Have host's __divdi3])) 1444 AC_CHECK_LIB(gcc,__fixdfdi,AC_DEFINE([HAVE___FIXDFDI],[1],[Have host's __fixdfdi])) 1445 AC_CHECK_LIB(gcc,__fixsfdi,AC_DEFINE([HAVE___FIXSFDI],[1],[Have host's __fixsfdi])) 1446 AC_CHECK_LIB(gcc,__floatdidf,AC_DEFINE([HAVE___FLOATDIDF],[1],[Have host's __floatdidf])) 1447 AC_CHECK_LIB(gcc,__lshrdi3,AC_DEFINE([HAVE___LSHRDI3],[1],[Have host's __lshrdi3])) 1448 AC_CHECK_LIB(gcc,__moddi3,AC_DEFINE([HAVE___MODDI3],[1],[Have host's __moddi3])) 1449 AC_CHECK_LIB(gcc,__udivdi3,AC_DEFINE([HAVE___UDIVDI3],[1],[Have host's __udivdi3])) 1450 AC_CHECK_LIB(gcc,__umoddi3,AC_DEFINE([HAVE___UMODDI3],[1],[Have host's __umoddi3])) 1451 1452 AC_CHECK_LIB(gcc,__main,AC_DEFINE([HAVE___MAIN],[1],[Have host's __main])) 1453 AC_CHECK_LIB(gcc,__cmpdi2,AC_DEFINE([HAVE___CMPDI2],[1],[Have host's __cmpdi2])) 1454fi 1455 1456dnl Check Win32 API EnumerateLoadedModules. 1457if test "$llvm_cv_os_type" = "MingW" ; then 1458 AC_MSG_CHECKING([whether EnumerateLoadedModules() accepts new decl]) 1459 AC_COMPILE_IFELSE([[#include <windows.h> 1460#include <imagehlp.h> 1461extern void foo(PENUMLOADED_MODULES_CALLBACK); 1462extern void foo(BOOL(CALLBACK*)(PCSTR,ULONG_PTR,ULONG,PVOID));]], 1463[ 1464 AC_MSG_RESULT([yes]) 1465 llvm_cv_win32_elmcb_pcstr="PCSTR" 1466], 1467[ 1468 AC_MSG_RESULT([no]) 1469 llvm_cv_win32_elmcb_pcstr="PSTR" 1470]) 1471 AC_DEFINE_UNQUOTED([WIN32_ELMCB_PCSTR],$llvm_cv_win32_elmcb_pcstr,[Type of 1st arg on ELM Callback]) 1472fi 1473 1474dnl Check for variations in the Standard C++ library and STL. These macros are 1475dnl provided by LLVM in the autoconf/m4 directory. 1476AC_FUNC_ISNAN 1477AC_FUNC_ISINF 1478 1479dnl Check for mmap support.We also need to know if /dev/zero is required to 1480dnl be opened for allocating RWX memory. 1481dnl Make sure we aren't attempting to configure for an unknown system 1482if test "$llvm_cv_platform_type" = "Unix" ; then 1483 AC_FUNC_MMAP 1484 AC_FUNC_MMAP_FILE 1485 AC_NEED_DEV_ZERO_FOR_MMAP 1486 1487 if test "$ac_cv_func_mmap_fixed_mapped" = "no" 1488 then 1489 AC_MSG_WARN([mmap() of a fixed address required but not supported]) 1490 fi 1491 if test "$ac_cv_func_mmap_file" = "no" 1492 then 1493 AC_MSG_WARN([mmap() of files required but not found]) 1494 fi 1495fi 1496 1497dnl atomic builtins are required for threading support. 1498AC_MSG_CHECKING(for GCC atomic builtins) 1499dnl Since we'll be using these atomic builtins in C++ files we should test 1500dnl the C++ compiler. 1501AC_LANG_PUSH([C++]) 1502AC_LINK_IFELSE( 1503 AC_LANG_SOURCE( 1504 [[int main() { 1505 volatile unsigned long val = 1; 1506 __sync_synchronize(); 1507 __sync_val_compare_and_swap(&val, 1, 0); 1508 __sync_add_and_fetch(&val, 1); 1509 __sync_sub_and_fetch(&val, 1); 1510 return 0; 1511 } 1512 ]]), 1513 AC_LANG_POP([C++]) 1514 AC_MSG_RESULT(yes) 1515 AC_DEFINE(LLVM_MULTITHREADED, 1, Build multithreading support into LLVM), 1516 AC_MSG_RESULT(no) 1517 AC_DEFINE(LLVM_MULTITHREADED, 0, Build multithreading support into LLVM) 1518 AC_MSG_WARN([LLVM will be built thread-unsafe because atomic builtins are missing])) 1519 1520dnl===-----------------------------------------------------------------------=== 1521dnl=== 1522dnl=== SECTION 9: Additional checks, variables, etc. 1523dnl=== 1524dnl===-----------------------------------------------------------------------=== 1525 1526dnl Handle 32-bit linux systems running a 64-bit kernel. 1527dnl This has to come after section 4 because it invokes the compiler. 1528if test "$llvm_cv_os_type" = "Linux" -a "$llvm_cv_target_arch" = "x86_64" ; then 1529 AC_IS_LINUX_MIXED 1530 if test "$llvm_cv_linux_mixed" = "yes"; then 1531 llvm_cv_target_arch="x86" 1532 ARCH="x86" 1533 fi 1534fi 1535 1536dnl Check, whether __dso_handle is present 1537AC_CHECK_FUNCS([__dso_handle]) 1538 1539dnl Check wether llvm-gcc is based on dragonegg 1540AC_CACHE_CHECK([whether llvm-gcc is dragonegg],[llvm_cv_llvmgcc_dragonegg], 1541[llvm_cv_llvmgcc_dragonegg="no" 1542if test -n "$LLVMGCC" ; then 1543 cp /dev/null conftest.c 1544 $LLVMGCC -fplugin-arg-dragonegg-emit-ir -S -o - conftest.c > /dev/null 2>&1 1545 if test $? -eq 0 ; then 1546 llvm_cv_llvmgcc_dragonegg="yes" 1547 fi 1548 rm conftest.c 1549fi]) 1550 1551dnl Set the flags needed to emit LLVM IR and to disable optimizations 1552dnl in llvmgcc 1553if test "$llvm_cv_llvmgcc_dragonegg" = "yes" ; then 1554 LLVMCC_EMITIR_FLAG="-fplugin-arg-dragonegg-emit-ir" 1555 LLVMCC_DISABLEOPT_FLAGS="-fplugin-arg-dragonegg-llvm-ir-optimize=0" 1556else 1557 LLVMCC_EMITIR_FLAG="-emit-llvm" 1558 LLVMCC_DISABLEOPT_FLAGS="-mllvm -disable-llvm-optzns" 1559fi 1560 1561AC_SUBST(LLVMCC_EMITIR_FLAG) 1562 1563dnl See if the llvm-gcc executable can compile to LLVM assembly 1564AC_CACHE_CHECK([whether llvm-gcc is sane],[llvm_cv_llvmgcc_sanity], 1565[llvm_cv_llvmgcc_sanity="no" 1566if test -n "$LLVMGCC" ; then 1567 cp /dev/null conftest.c 1568 $LLVMGCC "$LLVMCC_EMITIR_FLAG" -S -o - conftest.c | \ 1569 grep 'target datalayout =' > /dev/null 2>&1 1570 if test $? -eq 0 ; then 1571 llvm_cv_llvmgcc_sanity="yes" 1572 fi 1573 rm conftest.c 1574fi]) 1575 1576dnl Since we have a sane llvm-gcc, identify it and its sub-tools 1577dnl Furthermore, add some information about the tools 1578if test "$llvm_cv_llvmgcc_sanity" = "yes" ; then 1579 AC_MSG_CHECKING([llvm-gcc component support]) 1580 llvmcc1path=`$LLVMGCC --print-prog-name=cc1` 1581 AC_SUBST(LLVMCC1,$llvmcc1path) 1582 llvmcc1pluspath=`$LLVMGCC --print-prog-name=cc1plus` 1583 AC_SUBST(LLVMCC1PLUS,$llvmcc1pluspath) 1584 llvmgccdir=`echo "$llvmcc1path" | sed 's,/libexec/.*,,'` 1585 AC_SUBST(LLVMGCCDIR,$llvmgccdir) 1586 llvmgcclangs=[`$LLVMGCC -v --help 2>&1 | grep '^Configured with:' | sed 's/^.*--enable-languages=\([^ ]*\).*/\1/'`] 1587 AC_SUBST(LLVMGCC_LANGS,$llvmgcclangs) 1588 AC_SUBST(LLVMGCC_DRAGONEGG,$llvm_cv_llvmgcc_dragonegg) 1589 AC_SUBST(LLVMCC_DISABLEOPT_FLAGS) 1590 AC_MSG_RESULT([ok]) 1591fi 1592 1593dnl Propagate the shared library extension that the libltdl checks did to 1594dnl the Makefiles so we can use it there too 1595AC_SUBST(SHLIBEXT,$libltdl_cv_shlibext) 1596 1597dnl Propagate the run-time library path variable that the libltdl 1598dnl checks found to the Makefiles so we can use it there too 1599AC_SUBST(SHLIBPATH_VAR,$libltdl_cv_shlibpath_var) 1600 1601# Translate the various configuration directories and other basic 1602# information into substitutions that will end up in Makefile.config.in 1603# that these configured values can be used by the makefiles 1604if test "${prefix}" = "NONE" ; then 1605 prefix="/usr/local" 1606fi 1607eval LLVM_PREFIX="${prefix}"; 1608eval LLVM_BINDIR="${prefix}/bin"; 1609eval LLVM_LIBDIR="${prefix}/lib"; 1610eval LLVM_DATADIR="${prefix}/share/llvm"; 1611eval LLVM_DOCSDIR="${prefix}/share/doc/llvm"; 1612eval LLVM_ETCDIR="${prefix}/etc/llvm"; 1613eval LLVM_INCLUDEDIR="${prefix}/include"; 1614eval LLVM_INFODIR="${prefix}/info"; 1615eval LLVM_MANDIR="${prefix}/man"; 1616LLVM_CONFIGTIME=`date` 1617AC_SUBST(LLVM_PREFIX) 1618AC_SUBST(LLVM_BINDIR) 1619AC_SUBST(LLVM_LIBDIR) 1620AC_SUBST(LLVM_DATADIR) 1621AC_SUBST(LLVM_DOCSDIR) 1622AC_SUBST(LLVM_ETCDIR) 1623AC_SUBST(LLVM_INCLUDEDIR) 1624AC_SUBST(LLVM_INFODIR) 1625AC_SUBST(LLVM_MANDIR) 1626AC_SUBST(LLVM_CONFIGTIME) 1627 1628# Place the various directores into the config.h file as #defines so that we 1629# can know about the installation paths within LLVM. 1630AC_DEFINE_UNQUOTED(LLVM_PREFIX,"$LLVM_PREFIX", 1631 [Installation prefix directory]) 1632AC_DEFINE_UNQUOTED(LLVM_BINDIR, "$LLVM_BINDIR", 1633 [Installation directory for binary executables]) 1634AC_DEFINE_UNQUOTED(LLVM_LIBDIR, "$LLVM_LIBDIR", 1635 [Installation directory for libraries]) 1636AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DATADIR", 1637 [Installation directory for data files]) 1638AC_DEFINE_UNQUOTED(LLVM_DOCSDIR, "$LLVM_DOCSDIR", 1639 [Installation directory for documentation]) 1640AC_DEFINE_UNQUOTED(LLVM_ETCDIR, "$LLVM_ETCDIR", 1641 [Installation directory for config files]) 1642AC_DEFINE_UNQUOTED(LLVM_INCLUDEDIR, "$LLVM_INCLUDEDIR", 1643 [Installation directory for include files]) 1644AC_DEFINE_UNQUOTED(LLVM_INFODIR, "$LLVM_INFODIR", 1645 [Installation directory for .info files]) 1646AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR", 1647 [Installation directory for man pages]) 1648AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME", 1649 [Time at which LLVM was configured]) 1650AC_DEFINE_UNQUOTED(LLVM_HOSTTRIPLE, "$host", 1651 [Host triple we were built on]) 1652 1653# Determine which bindings to build. 1654if test "$BINDINGS_TO_BUILD" = auto ; then 1655 BINDINGS_TO_BUILD="" 1656 if test "x$OCAMLC" != x -a "x$OCAMLDEP" != x ; then 1657 BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD" 1658 fi 1659fi 1660AC_SUBST(BINDINGS_TO_BUILD,$BINDINGS_TO_BUILD) 1661 1662# This isn't really configurey, but it avoids having to repeat the list in 1663# other files. 1664AC_SUBST(ALL_BINDINGS,ocaml) 1665 1666# Do any work necessary to ensure that bindings have what they need. 1667binding_prereqs_failed=0 1668for a_binding in $BINDINGS_TO_BUILD ; do 1669 case "$a_binding" in 1670 ocaml) 1671 if test "x$OCAMLC" = x ; then 1672 AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlc not found. Try configure OCAMLC=/path/to/ocamlc]) 1673 binding_prereqs_failed=1 1674 fi 1675 if test "x$OCAMLDEP" = x ; then 1676 AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamldep not found. Try configure OCAMLDEP=/path/to/ocamldep]) 1677 binding_prereqs_failed=1 1678 fi 1679 if test "x$OCAMLOPT" = x ; then 1680 AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlopt not found. Try configure OCAMLOPT=/path/to/ocamlopt]) 1681 dnl ocamlopt is optional! 1682 fi 1683 if test "x$with_ocaml_libdir" != xauto ; then 1684 AC_SUBST(OCAML_LIBDIR,$with_ocaml_libdir) 1685 else 1686 ocaml_stdlib="`"$OCAMLC" -where`" 1687 if test "$LLVM_PREFIX" '<' "$ocaml_stdlib" -a "$ocaml_stdlib" '<' "$LLVM_PREFIX~" 1688 then 1689 # ocaml stdlib is beneath our prefix; use stdlib 1690 AC_SUBST(OCAML_LIBDIR,$ocaml_stdlib) 1691 else 1692 # ocaml stdlib is outside our prefix; use libdir/ocaml 1693 AC_SUBST(OCAML_LIBDIR,$LLVM_LIBDIR/ocaml) 1694 fi 1695 fi 1696 ;; 1697 esac 1698done 1699if test "$binding_prereqs_failed" = 1 ; then 1700 AC_MSG_ERROR([Prequisites for bindings not satisfied. Fix them or use configure --disable-bindings.]) 1701fi 1702 1703dnl Determine whether the compiler supports -fvisibility-inlines-hidden. 1704AC_CXX_USE_VISIBILITY_INLINES_HIDDEN 1705 1706dnl Determine linker rpath flag 1707if test "$llvm_cv_link_use_r" = "yes" ; then 1708 RPATH="-Wl,-R" 1709else 1710 RPATH="-Wl,-rpath" 1711fi 1712AC_SUBST(RPATH) 1713 1714dnl Determine linker rdynamic flag 1715if test "$llvm_cv_link_use_export_dynamic" = "yes" ; then 1716 RDYNAMIC="-Wl,-export-dynamic" 1717else 1718 RDYNAMIC="" 1719fi 1720AC_SUBST(RDYNAMIC) 1721 1722dnl===-----------------------------------------------------------------------=== 1723dnl=== 1724dnl=== SECTION 10: Specify the output files and generate it 1725dnl=== 1726dnl===-----------------------------------------------------------------------=== 1727 1728dnl Configure header files 1729dnl WARNING: dnl If you add or remove any of the following config headers, then 1730dnl you MUST also update Makefile.rules so that the variable FilesToConfig 1731dnl contains the same list of files as AC_CONFIG_HEADERS below. This ensures the 1732dnl files can be updated automatically when their *.in sources change. 1733AC_CONFIG_HEADERS([include/llvm/Config/config.h include/llvm/Config/llvm-config.h]) 1734AH_TOP([#ifndef CONFIG_H 1735#define CONFIG_H]) 1736AH_BOTTOM([#endif]) 1737 1738AC_CONFIG_FILES([include/llvm/Config/Targets.def]) 1739AC_CONFIG_FILES([include/llvm/Config/AsmPrinters.def]) 1740AC_CONFIG_FILES([include/llvm/Config/AsmParsers.def]) 1741AC_CONFIG_FILES([include/llvm/Config/Disassemblers.def]) 1742AC_CONFIG_HEADERS([include/llvm/Support/DataTypes.h]) 1743 1744dnl Configure the makefile's configuration data 1745AC_CONFIG_FILES([Makefile.config]) 1746 1747dnl Configure the RPM spec file for LLVM 1748AC_CONFIG_FILES([llvm.spec]) 1749 1750dnl Configure doxygen's configuration file 1751AC_CONFIG_FILES([docs/doxygen.cfg]) 1752if test -f ${srcdir}/tools/clang/README.txt; then 1753 AC_CONFIG_FILES([tools/clang/docs/doxygen.cfg]) 1754fi 1755 1756dnl Configure llvmc's Base plugin 1757AC_CONFIG_FILES([tools/llvmc/src/Base.td]) 1758 1759dnl Do the first stage of configuration for llvm-config.in. 1760AC_CONFIG_FILES([tools/llvm-config/llvm-config.in]) 1761 1762dnl Do special configuration of Makefiles 1763AC_CONFIG_COMMANDS([setup],,[llvm_src="${srcdir}"]) 1764AC_CONFIG_MAKEFILE(Makefile) 1765AC_CONFIG_MAKEFILE(Makefile.common) 1766AC_CONFIG_MAKEFILE(examples/Makefile) 1767AC_CONFIG_MAKEFILE(lib/Makefile) 1768AC_CONFIG_MAKEFILE(runtime/Makefile) 1769AC_CONFIG_MAKEFILE(test/Makefile) 1770AC_CONFIG_MAKEFILE(test/Makefile.tests) 1771AC_CONFIG_MAKEFILE(unittests/Makefile) 1772AC_CONFIG_MAKEFILE(tools/Makefile) 1773AC_CONFIG_MAKEFILE(utils/Makefile) 1774AC_CONFIG_MAKEFILE(projects/Makefile) 1775AC_CONFIG_MAKEFILE(bindings/Makefile) 1776AC_CONFIG_MAKEFILE(bindings/ocaml/Makefile.ocaml) 1777 1778dnl Finally, crank out the output 1779AC_OUTPUT 1780