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