configure.ac revision 1aee22e0720932a82dd3bf3fc8be804fff6bb89a
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-2012 University of Illinois at Urbana-Champaign."]) 39AC_COPYRIGHT([Copyright (c) 2003-2012 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 376dnl 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 cross-compiling 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 673dnl Determine whether we are building LLVM support for the native architecture. 674dnl 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 701dnl Build the LLVM_TARGET and LLVM_... macros for Targets.def and the individual 702dnl 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 836# Clang normally uses the system c++ headers and libraries. With this option, 837# clang will use the ones provided by a gcc installation instead. This option should 838# be passed the same value that was used with --prefix when configuring gcc. 839AC_ARG_WITH(gcc-toolchain, 840 AS_HELP_STRING([--with-gcc-toolchain], 841 [Directory where gcc is installed.]),, 842 withval="") 843AC_DEFINE_UNQUOTED(GCC_INSTALL_PREFIX,"$withval", 844 [Directory where gcc is installed.]) 845 846dnl Allow linking of LLVM with GPLv3 binutils code. 847AC_ARG_WITH(binutils-include, 848 AS_HELP_STRING([--with-binutils-include], 849 [Specify path to binutils/include/ containing plugin-api.h file for gold plugin.]),, 850 withval=default) 851case "$withval" in 852 default) WITH_BINUTILS_INCDIR=default ;; 853 /* | [[A-Za-z]]:[[\\/]]*) WITH_BINUTILS_INCDIR=$withval ;; 854 *) AC_MSG_ERROR([Invalid path for --with-binutils-include. Provide full path]) ;; 855esac 856if test "x$WITH_BINUTILS_INCDIR" != xdefault ; then 857 AC_SUBST(BINUTILS_INCDIR,$WITH_BINUTILS_INCDIR) 858 if test ! -f "$WITH_BINUTILS_INCDIR/plugin-api.h"; then 859 echo "$WITH_BINUTILS_INCDIR/plugin-api.h" 860 AC_MSG_ERROR([Invalid path to directory containing plugin-api.h.]); 861 fi 862fi 863 864dnl Specify the URL where bug reports should be submitted. 865AC_ARG_WITH(bug-report-url, 866 AS_HELP_STRING([--with-bug-report-url], 867 [Specify the URL where bug reports should be submitted (default=http://llvm.org/bugs/)]),, 868 withval="http://llvm.org/bugs/") 869AC_DEFINE_UNQUOTED(BUG_REPORT_URL,"$withval", 870 [Bug report URL.]) 871 872dnl --enable-libffi : check whether the user wants to turn off libffi: 873AC_ARG_ENABLE(libffi,AS_HELP_STRING( 874 --enable-libffi,[Check for the presence of libffi (default is NO)]), 875 [case "$enableval" in 876 yes) llvm_cv_enable_libffi="yes" ;; 877 no) llvm_cv_enable_libffi="no" ;; 878 *) AC_MSG_ERROR([Invalid setting for --enable-libffi. Use "yes" or "no"]) ;; 879 esac], 880 llvm_cv_enable_libffi=no) 881 882AC_ARG_WITH(internal-prefix, 883 AS_HELP_STRING([--with-internal-prefix], 884 [Installation directory for internal files]),, 885 withval="") 886AC_SUBST(INTERNAL_PREFIX,[$withval]) 887 888dnl===-----------------------------------------------------------------------=== 889dnl=== 890dnl=== SECTION 4: Check for programs we need and that they are the right version 891dnl=== 892dnl===-----------------------------------------------------------------------=== 893 894AC_PROG_NM 895AC_SUBST(NM) 896 897dnl Check for the tools that the makefiles require 898AC_CHECK_GNU_MAKE 899AC_PROG_LN_S 900AC_PATH_PROG(CMP, [cmp], [cmp]) 901AC_PATH_PROG(CP, [cp], [cp]) 902AC_PATH_PROG(DATE, [date], [date]) 903AC_PATH_PROG(FIND, [find], [find]) 904AC_PATH_PROG(GREP, [grep], [grep]) 905AC_PATH_PROG(MKDIR,[mkdir],[mkdir]) 906AC_PATH_PROG(MV, [mv], [mv]) 907AC_PROG_RANLIB 908AC_CHECK_TOOL(AR, ar, false) 909AC_PATH_PROG(RM, [rm], [rm]) 910AC_PATH_PROG(SED, [sed], [sed]) 911AC_PATH_PROG(TAR, [tar], [gtar]) 912AC_PATH_PROG(BINPWD,[pwd], [pwd]) 913 914dnl Looking for misc. graph plotting software 915AC_PATH_PROG(GRAPHVIZ, [Graphviz], [echo Graphviz]) 916if test "$GRAPHVIZ" != "echo Graphviz" ; then 917 AC_DEFINE([HAVE_GRAPHVIZ],[1],[Define if the Graphviz program is available]) 918 dnl If we're targeting for mingw we should emit windows paths, not msys 919 if test "$llvm_cv_os_type" = "MingW" ; then 920 GRAPHVIZ=`echo $GRAPHVIZ | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 921 fi 922 AC_DEFINE_UNQUOTED([LLVM_PATH_GRAPHVIZ],"$GRAPHVIZ${EXEEXT}", 923 [Define to path to Graphviz program if found or 'echo Graphviz' otherwise]) 924fi 925AC_PATH_PROG(DOT, [dot], [echo dot]) 926if test "$DOT" != "echo dot" ; then 927 AC_DEFINE([HAVE_DOT],[1],[Define if the dot program is available]) 928 dnl If we're targeting for mingw we should emit windows paths, not msys 929 if test "$llvm_cv_os_type" = "MingW" ; then 930 DOT=`echo $DOT | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 931 fi 932 AC_DEFINE_UNQUOTED([LLVM_PATH_DOT],"$DOT${EXEEXT}", 933 [Define to path to dot program if found or 'echo dot' otherwise]) 934fi 935AC_PATH_PROG(FDP, [fdp], [echo fdp]) 936if test "$FDP" != "echo fdp" ; then 937 AC_DEFINE([HAVE_FDP],[1],[Define if the neat program is available]) 938 dnl If we're targeting for mingw we should emit windows paths, not msys 939 if test "$llvm_cv_os_type" = "MingW" ; then 940 FDP=`echo $FDP | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 941 fi 942 AC_DEFINE_UNQUOTED([LLVM_PATH_FDP],"$FDP${EXEEXT}", 943 [Define to path to fdp program if found or 'echo fdp' otherwise]) 944fi 945AC_PATH_PROG(NEATO, [neato], [echo neato]) 946if test "$NEATO" != "echo neato" ; then 947 AC_DEFINE([HAVE_NEATO],[1],[Define if the neat program is available]) 948 dnl If we're targeting for mingw we should emit windows paths, not msys 949 if test "$llvm_cv_os_type" = "MingW" ; then 950 NEATO=`echo $NEATO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 951 fi 952 AC_DEFINE_UNQUOTED([LLVM_PATH_NEATO],"$NEATO${EXEEXT}", 953 [Define to path to neato program if found or 'echo neato' otherwise]) 954fi 955AC_PATH_PROG(TWOPI, [twopi], [echo twopi]) 956if test "$TWOPI" != "echo twopi" ; then 957 AC_DEFINE([HAVE_TWOPI],[1],[Define if the neat program is available]) 958 dnl If we're targeting for mingw we should emit windows paths, not msys 959 if test "$llvm_cv_os_type" = "MingW" ; then 960 TWOPI=`echo $TWOPI | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 961 fi 962 AC_DEFINE_UNQUOTED([LLVM_PATH_TWOPI],"$TWOPI${EXEEXT}", 963 [Define to path to twopi program if found or 'echo twopi' otherwise]) 964fi 965AC_PATH_PROG(CIRCO, [circo], [echo circo]) 966if test "$CIRCO" != "echo circo" ; then 967 AC_DEFINE([HAVE_CIRCO],[1],[Define if the neat program is available]) 968 dnl If we're targeting for mingw we should emit windows paths, not msys 969 if test "$llvm_cv_os_type" = "MingW" ; then 970 CIRCO=`echo $CIRCO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 971 fi 972 AC_DEFINE_UNQUOTED([LLVM_PATH_CIRCO],"$CIRCO${EXEEXT}", 973 [Define to path to circo program if found or 'echo circo' otherwise]) 974fi 975AC_PATH_PROGS(GV, [gv gsview32], [echo gv]) 976if test "$GV" != "echo gv" ; then 977 AC_DEFINE([HAVE_GV],[1],[Define if the gv program is available]) 978 dnl If we're targeting for mingw we should emit windows paths, not msys 979 if test "$llvm_cv_os_type" = "MingW" ; then 980 GV=`echo $GV | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 981 fi 982 AC_DEFINE_UNQUOTED([LLVM_PATH_GV],"$GV${EXEEXT}", 983 [Define to path to gv program if found or 'echo gv' otherwise]) 984fi 985AC_PATH_PROG(DOTTY, [dotty], [echo dotty]) 986if test "$DOTTY" != "echo dotty" ; then 987 AC_DEFINE([HAVE_DOTTY],[1],[Define if the dotty program is available]) 988 dnl If we're targeting for mingw we should emit windows paths, not msys 989 if test "$llvm_cv_os_type" = "MingW" ; then 990 DOTTY=`echo $DOTTY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 991 fi 992 AC_DEFINE_UNQUOTED([LLVM_PATH_DOTTY],"$DOTTY${EXEEXT}", 993 [Define to path to dotty program if found or 'echo dotty' otherwise]) 994fi 995AC_PATH_PROG(XDOT_PY, [xdot.py], [echo xdot.py]) 996if test "$XDOT_PY" != "echo xdot.py" ; then 997 AC_DEFINE([HAVE_XDOT_PY],[1],[Define if the xdot.py program is available]) 998 dnl If we're targeting for mingw we should emit windows paths, not msys 999 if test "$llvm_cv_os_type" = "MingW" ; then 1000 XDOT_PY=`echo $XDOT_PY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 1001 fi 1002 AC_DEFINE_UNQUOTED([LLVM_PATH_XDOT_PY],"$XDOT_PY${EXEEXT}", 1003 [Define to path to xdot.py program if found or 'echo xdot.py' otherwise]) 1004fi 1005 1006dnl Look for a sufficiently recent version of Perl. 1007LLVM_PROG_PERL([5.006]) 1008AC_SUBST(PERL) 1009if test x"$PERL" = xnone; then 1010 AC_SUBST(HAVE_PERL,0) 1011 AC_MSG_ERROR([perl is required but was not found, please install it]) 1012else 1013 AC_SUBST(HAVE_PERL,1) 1014fi 1015 1016dnl Find the install program 1017AC_PROG_INSTALL 1018dnl Prepend src dir to install path dir if it's a relative path 1019dnl This is a hack for installs that take place in something other 1020dnl than the top level. 1021case "$INSTALL" in 1022 [[\\/$]]* | ?:[[\\/]]* ) ;; 1023 *) INSTALL="\\\$(TOPSRCDIR)/$INSTALL" ;; 1024esac 1025 1026dnl Checks for documentation and testing tools that we can do without. If these 1027dnl are not found then they are set to "true" which always succeeds but does 1028dnl nothing. This just lets the build output show that we could have done 1029dnl something if the tool was available. 1030AC_PATH_PROG(BZIP2, [bzip2]) 1031AC_PATH_PROG(CAT, [cat]) 1032AC_PATH_PROG(DOXYGEN, [doxygen]) 1033AC_PATH_PROG(GROFF, [groff]) 1034AC_PATH_PROG(GZIPBIN, [gzip]) 1035AC_PATH_PROG(POD2HTML, [pod2html]) 1036AC_PATH_PROG(POD2MAN, [pod2man]) 1037AC_PATH_PROG(PDFROFF, [pdfroff]) 1038AC_PATH_PROG(RUNTEST, [runtest]) 1039DJ_AC_PATH_TCLSH 1040AC_PATH_PROG(ZIP, [zip]) 1041AC_PATH_PROGS(OCAMLC, [ocamlc]) 1042AC_PATH_PROGS(OCAMLOPT, [ocamlopt]) 1043AC_PATH_PROGS(OCAMLDEP, [ocamldep]) 1044AC_PATH_PROGS(OCAMLDOC, [ocamldoc]) 1045AC_PATH_PROGS(GAS, [gas as]) 1046 1047dnl Get the version of the linker in use. 1048AC_LINK_GET_VERSION 1049 1050dnl Determine whether the linker supports the -R option. 1051AC_LINK_USE_R 1052 1053dnl Determine whether the linker supports the -export-dynamic option. 1054AC_LINK_EXPORT_DYNAMIC 1055 1056dnl Determine whether the linker supports the --version-script option. 1057AC_LINK_VERSION_SCRIPT 1058 1059dnl Check for libtool and the library that has dlopen function (which must come 1060dnl before the AC_PROG_LIBTOOL check in order to enable dlopening libraries with 1061dnl libtool). 1062AC_LIBTOOL_DLOPEN 1063AC_LIB_LTDL 1064 1065AC_MSG_CHECKING([tool compatibility]) 1066 1067dnl Ensure that compilation tools are GCC or a GNU compatible compiler such as 1068dnl ICC; we use GCC specific options in the makefiles so the compiler needs 1069dnl to support those options. 1070dnl "icc" emits gcc signatures 1071dnl "icc -no-gcc" emits no gcc signature BUT is still compatible 1072ICC=no 1073IXX=no 1074case $CC in 1075 icc*|icpc*) 1076 ICC=yes 1077 IXX=yes 1078 ;; 1079 *) 1080 ;; 1081esac 1082 1083if test "$GCC" != "yes" && test "$ICC" != "yes" 1084then 1085 AC_MSG_ERROR([gcc|icc required but not found]) 1086fi 1087 1088dnl Ensure that compilation tools are compatible with GCC extensions 1089if test "$GXX" != "yes" && test "$IXX" != "yes" 1090then 1091 AC_MSG_ERROR([g++|clang++|icc required but not found]) 1092fi 1093 1094dnl Verify that GCC is version 3.0 or higher 1095if test "$GCC" = "yes" 1096then 1097 AC_COMPILE_IFELSE([[#if !defined(__GNUC__) || __GNUC__ < 3 1098#error Unsupported GCC version 1099#endif 1100]], [], [AC_MSG_ERROR([gcc 3.x required, but you have a lower version])]) 1101fi 1102 1103dnl Check for GNU Make. We use its extensions, so don't build without it 1104if test -z "$llvm_cv_gnu_make_command" 1105then 1106 AC_MSG_ERROR([GNU Make required but not found]) 1107fi 1108 1109dnl Tool compatibility is okay if we make it here. 1110AC_MSG_RESULT([ok]) 1111 1112dnl Check optional compiler flags. 1113AC_MSG_CHECKING([optional compiler flags]) 1114CXX_FLAG_CHECK(NO_VARIADIC_MACROS, [-Wno-variadic-macros]) 1115CXX_FLAG_CHECK(NO_MISSING_FIELD_INITIALIZERS, [-Wno-missing-field-initializers]) 1116AC_MSG_RESULT([$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS]) 1117 1118dnl===-----------------------------------------------------------------------=== 1119dnl=== 1120dnl=== SECTION 5: Check for libraries 1121dnl=== 1122dnl===-----------------------------------------------------------------------=== 1123 1124AC_CHECK_LIB(m,sin) 1125if test "$llvm_cv_os_type" = "MingW" ; then 1126 AC_CHECK_LIB(imagehlp, main) 1127 AC_CHECK_LIB(psapi, main) 1128fi 1129 1130dnl dlopen() is required for plugin support. 1131AC_SEARCH_LIBS(dlopen,dl,AC_DEFINE([HAVE_DLOPEN],[1], 1132 [Define if dlopen() is available on this platform.]), 1133 AC_MSG_WARN([dlopen() not found - disabling plugin support])) 1134 1135dnl libffi is optional; used to call external functions from the interpreter 1136if test "$llvm_cv_enable_libffi" = "yes" ; then 1137 AC_SEARCH_LIBS(ffi_call,ffi,AC_DEFINE([HAVE_FFI_CALL],[1], 1138 [Define if libffi is available on this platform.]), 1139 AC_MSG_ERROR([libffi not found - configure without --enable-libffi to compile without it])) 1140fi 1141 1142dnl mallinfo is optional; the code can compile (minus features) without it 1143AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1], 1144 [Define if mallinfo() is available on this platform.])) 1145 1146dnl pthread locking functions are optional - but llvm will not be thread-safe 1147dnl without locks. 1148if test "$LLVM_ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then 1149 AC_CHECK_LIB(pthread, pthread_mutex_init) 1150 AC_SEARCH_LIBS(pthread_mutex_lock,pthread, 1151 AC_DEFINE([HAVE_PTHREAD_MUTEX_LOCK],[1], 1152 [Have pthread_mutex_lock])) 1153 AC_SEARCH_LIBS(pthread_rwlock_init,pthread, 1154 AC_DEFINE([HAVE_PTHREAD_RWLOCK_INIT],[1], 1155 [Have pthread_rwlock_init])) 1156 AC_SEARCH_LIBS(pthread_getspecific,pthread, 1157 AC_DEFINE([HAVE_PTHREAD_GETSPECIFIC],[1], 1158 [Have pthread_getspecific])) 1159fi 1160 1161dnl Allow extra x86-disassembler library 1162AC_ARG_WITH(udis86, 1163 AS_HELP_STRING([--with-udis86=<path>], 1164 [Use udis86 external x86 disassembler library]), 1165 [ 1166 AC_SUBST(USE_UDIS86, [1]) 1167 case "$withval" in 1168 /usr/lib|yes) ;; 1169 *) LDFLAGS="$LDFLAGS -L${withval}" ;; 1170 esac 1171 AC_CHECK_LIB(udis86, ud_init, [], [ 1172 echo "Error! You need to have libudis86 around." 1173 exit -1 1174 ]) 1175 ], 1176 AC_SUBST(USE_UDIS86, [0])) 1177AC_DEFINE_UNQUOTED([USE_UDIS86],$USE_UDIS86, 1178 [Define if use udis86 library]) 1179 1180dnl Allow OProfile support for JIT output. 1181AC_ARG_WITH(oprofile, 1182 AS_HELP_STRING([--with-oprofile=<prefix>], 1183 [Tell OProfile >= 0.9.4 how to symbolize JIT output]), 1184 [ 1185 AC_SUBST(USE_OPROFILE, [1]) 1186 case "$withval" in 1187 /usr|yes) llvm_cv_oppath=/usr/lib/oprofile ;; 1188 no) llvm_cv_oppath= 1189 AC_SUBST(USE_OPROFILE, [0]) ;; 1190 *) llvm_cv_oppath="${withval}/lib/oprofile" 1191 CPPFLAGS="-I${withval}/include";; 1192 esac 1193 if test -n "$llvm_cv_oppath" ; then 1194 LIBS="$LIBS -L${llvm_cv_oppath} -Wl,-rpath,${llvm_cv_oppath}" 1195 dnl Work around http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=537744: 1196 dnl libbfd is not included properly in libopagent in some Debian 1197 dnl versions. If libbfd isn't found at all, we assume opagent works 1198 dnl anyway. 1199 AC_SEARCH_LIBS(bfd_init, bfd, [], []) 1200 AC_SEARCH_LIBS(op_open_agent, opagent, [], [ 1201 echo "Error! You need to have libopagent around." 1202 exit -1 1203 ]) 1204 AC_CHECK_HEADER([opagent.h], [], [ 1205 echo "Error! You need to have opagent.h around." 1206 exit -1 1207 ]) 1208 fi 1209 ], 1210 [ 1211 AC_SUBST(USE_OPROFILE, [0]) 1212 ]) 1213AC_DEFINE_UNQUOTED([USE_OPROFILE],$USE_OPROFILE, 1214 [Define if we have the oprofile JIT-support library]) 1215 1216dnl===-----------------------------------------------------------------------=== 1217dnl=== 1218dnl=== SECTION 6: Check for header files 1219dnl=== 1220dnl===-----------------------------------------------------------------------=== 1221 1222dnl First, use autoconf provided macros for specific headers that we need 1223dnl We don't check for ancient stuff or things that are guaranteed to be there 1224dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers. 1225dnl Generally we're looking for POSIX headers. 1226AC_HEADER_DIRENT 1227AC_HEADER_MMAP_ANONYMOUS 1228AC_HEADER_STAT 1229AC_HEADER_SYS_WAIT 1230AC_HEADER_TIME 1231 1232AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h inttypes.h limits.h link.h]) 1233AC_CHECK_HEADERS([malloc.h setjmp.h signal.h stdint.h termios.h unistd.h]) 1234AC_CHECK_HEADERS([utime.h windows.h]) 1235AC_CHECK_HEADERS([sys/mman.h sys/param.h sys/resource.h sys/time.h sys/uio.h]) 1236AC_CHECK_HEADERS([sys/types.h sys/ioctl.h malloc/malloc.h mach/mach.h]) 1237AC_CHECK_HEADERS([valgrind/valgrind.h]) 1238AC_CHECK_HEADERS([fenv.h]) 1239if test "$LLVM_ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then 1240 AC_CHECK_HEADERS(pthread.h, 1241 AC_SUBST(HAVE_PTHREAD, 1), 1242 AC_SUBST(HAVE_PTHREAD, 0)) 1243else 1244 AC_SUBST(HAVE_PTHREAD, 0) 1245fi 1246 1247dnl Try to find ffi.h. 1248if test "$llvm_cv_enable_libffi" = "yes" ; then 1249 AC_CHECK_HEADERS([ffi.h ffi/ffi.h]) 1250fi 1251 1252dnl Try to find Darwin specific crash reporting libraries. 1253AC_CHECK_HEADERS([CrashReporterClient.h]) 1254 1255dnl Try to find Darwin specific crash reporting global. 1256AC_MSG_CHECKING([__crashreporter_info__]) 1257AC_LINK_IFELSE( 1258 AC_LANG_SOURCE( 1259 [[extern const char *__crashreporter_info__; 1260 int main() { 1261 __crashreporter_info__ = "test"; 1262 return 0; 1263 } 1264 ]]), 1265 AC_MSG_RESULT(yes) 1266 AC_DEFINE(HAVE_CRASHREPORTER_INFO, 1, Can use __crashreporter_info__), 1267 AC_MSG_RESULT(no) 1268 AC_DEFINE(HAVE_CRASHREPORTER_INFO, 0, 1269 Define if __crashreporter_info__ exists.)) 1270 1271dnl===-----------------------------------------------------------------------=== 1272dnl=== 1273dnl=== SECTION 7: Check for types and structures 1274dnl=== 1275dnl===-----------------------------------------------------------------------=== 1276 1277AC_HUGE_VAL_CHECK 1278AC_TYPE_PID_T 1279AC_TYPE_SIZE_T 1280AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[Define as the return type of signal handlers (`int' or `void').]) 1281AC_STRUCT_TM 1282AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found])) 1283AC_CHECK_TYPES([uint64_t],, 1284 AC_CHECK_TYPES([u_int64_t],, 1285 AC_MSG_ERROR([Type uint64_t or u_int64_t required but not found]))) 1286 1287dnl===-----------------------------------------------------------------------=== 1288dnl=== 1289dnl=== SECTION 8: Check for specific functions needed 1290dnl=== 1291dnl===-----------------------------------------------------------------------=== 1292 1293AC_CHECK_FUNCS([backtrace ceilf floorf roundf rintf nearbyintf getcwd ]) 1294AC_CHECK_FUNCS([powf fmodf strtof round ]) 1295AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday ]) 1296AC_CHECK_FUNCS([isatty mkdtemp mkstemp ]) 1297AC_CHECK_FUNCS([mktemp posix_spawn pread realpath sbrk setrlimit strdup ]) 1298AC_CHECK_FUNCS([strerror strerror_r setenv ]) 1299AC_CHECK_FUNCS([strtoll strtoq sysconf malloc_zone_statistics ]) 1300AC_CHECK_FUNCS([setjmp longjmp sigsetjmp siglongjmp writev]) 1301AC_C_PRINTF_A 1302AC_FUNC_RAND48 1303 1304dnl Check the declaration "Secure API" on Windows environments. 1305AC_CHECK_DECLS([strerror_s]) 1306 1307dnl Check symbols in libgcc.a for JIT on Mingw. 1308if test "$llvm_cv_os_type" = "MingW" ; then 1309 AC_CHECK_LIB(gcc,_alloca,AC_DEFINE([HAVE__ALLOCA],[1],[Have host's _alloca])) 1310 AC_CHECK_LIB(gcc,__alloca,AC_DEFINE([HAVE___ALLOCA],[1],[Have host's __alloca])) 1311 AC_CHECK_LIB(gcc,__chkstk,AC_DEFINE([HAVE___CHKSTK],[1],[Have host's __chkstk])) 1312 AC_CHECK_LIB(gcc,___chkstk,AC_DEFINE([HAVE____CHKSTK],[1],[Have host's ___chkstk])) 1313 1314 AC_CHECK_LIB(gcc,__ashldi3,AC_DEFINE([HAVE___ASHLDI3],[1],[Have host's __ashldi3])) 1315 AC_CHECK_LIB(gcc,__ashrdi3,AC_DEFINE([HAVE___ASHRDI3],[1],[Have host's __ashrdi3])) 1316 AC_CHECK_LIB(gcc,__divdi3,AC_DEFINE([HAVE___DIVDI3],[1],[Have host's __divdi3])) 1317 AC_CHECK_LIB(gcc,__fixdfdi,AC_DEFINE([HAVE___FIXDFDI],[1],[Have host's __fixdfdi])) 1318 AC_CHECK_LIB(gcc,__fixsfdi,AC_DEFINE([HAVE___FIXSFDI],[1],[Have host's __fixsfdi])) 1319 AC_CHECK_LIB(gcc,__floatdidf,AC_DEFINE([HAVE___FLOATDIDF],[1],[Have host's __floatdidf])) 1320 AC_CHECK_LIB(gcc,__lshrdi3,AC_DEFINE([HAVE___LSHRDI3],[1],[Have host's __lshrdi3])) 1321 AC_CHECK_LIB(gcc,__moddi3,AC_DEFINE([HAVE___MODDI3],[1],[Have host's __moddi3])) 1322 AC_CHECK_LIB(gcc,__udivdi3,AC_DEFINE([HAVE___UDIVDI3],[1],[Have host's __udivdi3])) 1323 AC_CHECK_LIB(gcc,__umoddi3,AC_DEFINE([HAVE___UMODDI3],[1],[Have host's __umoddi3])) 1324 1325 AC_CHECK_LIB(gcc,__main,AC_DEFINE([HAVE___MAIN],[1],[Have host's __main])) 1326 AC_CHECK_LIB(gcc,__cmpdi2,AC_DEFINE([HAVE___CMPDI2],[1],[Have host's __cmpdi2])) 1327fi 1328 1329dnl Check Win32 API EnumerateLoadedModules. 1330if test "$llvm_cv_os_type" = "MingW" ; then 1331 AC_MSG_CHECKING([whether EnumerateLoadedModules() accepts new decl]) 1332 AC_COMPILE_IFELSE([[#include <windows.h> 1333#include <imagehlp.h> 1334extern void foo(PENUMLOADED_MODULES_CALLBACK); 1335extern void foo(BOOL(CALLBACK*)(PCSTR,ULONG_PTR,ULONG,PVOID));]], 1336[ 1337 AC_MSG_RESULT([yes]) 1338 llvm_cv_win32_elmcb_pcstr="PCSTR" 1339], 1340[ 1341 AC_MSG_RESULT([no]) 1342 llvm_cv_win32_elmcb_pcstr="PSTR" 1343]) 1344 AC_DEFINE_UNQUOTED([WIN32_ELMCB_PCSTR],$llvm_cv_win32_elmcb_pcstr,[Type of 1st arg on ELM Callback]) 1345fi 1346 1347dnl Check for variations in the Standard C++ library and STL. These macros are 1348dnl provided by LLVM in the autoconf/m4 directory. 1349AC_FUNC_ISNAN 1350AC_FUNC_ISINF 1351 1352dnl Check for mmap support.We also need to know if /dev/zero is required to 1353dnl be opened for allocating RWX memory. 1354dnl Make sure we aren't attempting to configure for an unknown system 1355if test "$llvm_cv_platform_type" = "Unix" ; then 1356 AC_FUNC_MMAP 1357 AC_FUNC_MMAP_FILE 1358 AC_NEED_DEV_ZERO_FOR_MMAP 1359 1360 if test "$ac_cv_func_mmap_fixed_mapped" = "no" 1361 then 1362 AC_MSG_WARN([mmap() of a fixed address required but not supported]) 1363 fi 1364 if test "$ac_cv_func_mmap_file" = "no" 1365 then 1366 AC_MSG_WARN([mmap() of files required but not found]) 1367 fi 1368fi 1369 1370dnl atomic builtins are required for threading support. 1371AC_MSG_CHECKING(for GCC atomic builtins) 1372dnl Since we'll be using these atomic builtins in C++ files we should test 1373dnl the C++ compiler. 1374AC_LANG_PUSH([C++]) 1375AC_LINK_IFELSE( 1376 AC_LANG_SOURCE( 1377 [[int main() { 1378 volatile unsigned long val = 1; 1379 __sync_synchronize(); 1380 __sync_val_compare_and_swap(&val, 1, 0); 1381 __sync_add_and_fetch(&val, 1); 1382 __sync_sub_and_fetch(&val, 1); 1383 return 0; 1384 } 1385 ]]), 1386 AC_LANG_POP([C++]) 1387 AC_MSG_RESULT(yes) 1388 AC_DEFINE(LLVM_HAS_ATOMICS, 1, Has gcc/MSVC atomic intrinsics), 1389 AC_MSG_RESULT(no) 1390 AC_DEFINE(LLVM_HAS_ATOMICS, 0, Has gcc/MSVC atomic intrinsics) 1391 AC_MSG_WARN([LLVM will be built thread-unsafe because atomic builtins are missing])) 1392 1393dnl===-----------------------------------------------------------------------=== 1394dnl=== 1395dnl=== SECTION 9: Additional checks, variables, etc. 1396dnl=== 1397dnl===-----------------------------------------------------------------------=== 1398 1399dnl Handle 32-bit linux systems running a 64-bit kernel. 1400dnl This has to come after section 4 because it invokes the compiler. 1401if test "$llvm_cv_os_type" = "Linux" -a "$llvm_cv_target_arch" = "x86_64" ; then 1402 AC_IS_LINUX_MIXED 1403 if test "$llvm_cv_linux_mixed" = "yes"; then 1404 llvm_cv_target_arch="x86" 1405 ARCH="x86" 1406 fi 1407fi 1408 1409dnl Check whether __dso_handle is present 1410AC_CHECK_FUNCS([__dso_handle]) 1411 1412dnl Propagate the shared library extension that the libltdl checks did to 1413dnl the Makefiles so we can use it there too 1414AC_SUBST(SHLIBEXT,$libltdl_cv_shlibext) 1415 1416dnl Propagate the run-time library path variable that the libltdl 1417dnl checks found to the Makefiles so we can use it there too 1418AC_SUBST(SHLIBPATH_VAR,$libltdl_cv_shlibpath_var) 1419 1420dnl Translate the various configuration directories and other basic 1421dnl information into substitutions that will end up in Makefile.config.in 1422dnl that these configured values can be used by the makefiles 1423if test "${prefix}" = "NONE" ; then 1424 prefix="/usr/local" 1425fi 1426eval LLVM_PREFIX="${prefix}"; 1427eval LLVM_BINDIR="${prefix}/bin"; 1428eval LLVM_LIBDIR="${prefix}/lib"; 1429eval LLVM_DATADIR="${prefix}/share/llvm"; 1430eval LLVM_DOCSDIR="${prefix}/share/doc/llvm"; 1431eval LLVM_ETCDIR="${prefix}/etc/llvm"; 1432eval LLVM_INCLUDEDIR="${prefix}/include"; 1433eval LLVM_INFODIR="${prefix}/info"; 1434eval LLVM_MANDIR="${prefix}/man"; 1435LLVM_CONFIGTIME=`date` 1436AC_SUBST(LLVM_PREFIX) 1437AC_SUBST(LLVM_BINDIR) 1438AC_SUBST(LLVM_LIBDIR) 1439AC_SUBST(LLVM_DATADIR) 1440AC_SUBST(LLVM_DOCSDIR) 1441AC_SUBST(LLVM_ETCDIR) 1442AC_SUBST(LLVM_INCLUDEDIR) 1443AC_SUBST(LLVM_INFODIR) 1444AC_SUBST(LLVM_MANDIR) 1445AC_SUBST(LLVM_CONFIGTIME) 1446 1447dnl Place the various directories into the config.h file as #defines so that we 1448dnl can know about the installation paths within LLVM. 1449AC_DEFINE_UNQUOTED(LLVM_PREFIX,"$LLVM_PREFIX", 1450 [Installation prefix directory]) 1451AC_DEFINE_UNQUOTED(LLVM_BINDIR, "$LLVM_BINDIR", 1452 [Installation directory for binary executables]) 1453AC_DEFINE_UNQUOTED(LLVM_LIBDIR, "$LLVM_LIBDIR", 1454 [Installation directory for libraries]) 1455AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DATADIR", 1456 [Installation directory for data files]) 1457AC_DEFINE_UNQUOTED(LLVM_DOCSDIR, "$LLVM_DOCSDIR", 1458 [Installation directory for documentation]) 1459AC_DEFINE_UNQUOTED(LLVM_ETCDIR, "$LLVM_ETCDIR", 1460 [Installation directory for config files]) 1461AC_DEFINE_UNQUOTED(LLVM_INCLUDEDIR, "$LLVM_INCLUDEDIR", 1462 [Installation directory for include files]) 1463AC_DEFINE_UNQUOTED(LLVM_INFODIR, "$LLVM_INFODIR", 1464 [Installation directory for .info files]) 1465AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR", 1466 [Installation directory for man pages]) 1467AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME", 1468 [Time at which LLVM was configured]) 1469AC_DEFINE_UNQUOTED(LLVM_DEFAULT_TARGET_TRIPLE, "$target", 1470 [Target triple LLVM will generate code for by default]) 1471 1472dnl Determine which bindings to build. 1473if test "$BINDINGS_TO_BUILD" = auto ; then 1474 BINDINGS_TO_BUILD="" 1475 if test "x$OCAMLC" != x -a "x$OCAMLDEP" != x ; then 1476 BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD" 1477 fi 1478fi 1479AC_SUBST(BINDINGS_TO_BUILD,$BINDINGS_TO_BUILD) 1480 1481dnl This isn't really configurey, but it avoids having to repeat the list in 1482dnl other files. 1483AC_SUBST(ALL_BINDINGS,ocaml) 1484 1485dnl Do any work necessary to ensure that bindings have what they need. 1486binding_prereqs_failed=0 1487for a_binding in $BINDINGS_TO_BUILD ; do 1488 case "$a_binding" in 1489 ocaml) 1490 if test "x$OCAMLC" = x ; then 1491 AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlc not found. Try configure OCAMLC=/path/to/ocamlc]) 1492 binding_prereqs_failed=1 1493 fi 1494 if test "x$OCAMLDEP" = x ; then 1495 AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamldep not found. Try configure OCAMLDEP=/path/to/ocamldep]) 1496 binding_prereqs_failed=1 1497 fi 1498 if test "x$OCAMLOPT" = x ; then 1499 AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlopt not found. Try configure OCAMLOPT=/path/to/ocamlopt]) 1500 dnl ocamlopt is optional! 1501 fi 1502 if test "x$with_ocaml_libdir" != xauto ; then 1503 AC_SUBST(OCAML_LIBDIR,$with_ocaml_libdir) 1504 else 1505 ocaml_stdlib="`"$OCAMLC" -where`" 1506 if test "$LLVM_PREFIX" '<' "$ocaml_stdlib" -a "$ocaml_stdlib" '<' "$LLVM_PREFIX~" 1507 then 1508 # ocaml stdlib is beneath our prefix; use stdlib 1509 AC_SUBST(OCAML_LIBDIR,$ocaml_stdlib) 1510 else 1511 # ocaml stdlib is outside our prefix; use libdir/ocaml 1512 AC_SUBST(OCAML_LIBDIR,$LLVM_LIBDIR/ocaml) 1513 fi 1514 fi 1515 ;; 1516 esac 1517done 1518if test "$binding_prereqs_failed" = 1 ; then 1519 AC_MSG_ERROR([Prequisites for bindings not satisfied. Fix them or use configure --disable-bindings.]) 1520fi 1521 1522dnl Determine whether the compiler supports -fvisibility-inlines-hidden. 1523AC_CXX_USE_VISIBILITY_INLINES_HIDDEN 1524 1525dnl Determine linker rpath flag 1526if test "$llvm_cv_link_use_r" = "yes" ; then 1527 RPATH="-Wl,-R" 1528else 1529 RPATH="-Wl,-rpath" 1530fi 1531AC_SUBST(RPATH) 1532 1533dnl Determine linker rdynamic flag 1534if test "$llvm_cv_link_use_export_dynamic" = "yes" ; then 1535 RDYNAMIC="-Wl,-export-dynamic" 1536else 1537 RDYNAMIC="" 1538fi 1539AC_SUBST(RDYNAMIC) 1540 1541dnl===-----------------------------------------------------------------------=== 1542dnl=== 1543dnl=== SECTION 10: Specify the output files and generate it 1544dnl=== 1545dnl===-----------------------------------------------------------------------=== 1546 1547dnl Configure header files 1548dnl WARNING: dnl If you add or remove any of the following config headers, then 1549dnl you MUST also update Makefile so that the variable FilesToConfig 1550dnl contains the same list of files as AC_CONFIG_HEADERS below. This ensures the 1551dnl files can be updated automatically when their *.in sources change. 1552AC_CONFIG_HEADERS([include/llvm/Config/config.h include/llvm/Config/llvm-config.h]) 1553AH_TOP([#ifndef CONFIG_H 1554#define CONFIG_H]) 1555AH_BOTTOM([#endif]) 1556 1557AC_CONFIG_FILES([include/llvm/Config/Targets.def]) 1558AC_CONFIG_FILES([include/llvm/Config/AsmPrinters.def]) 1559AC_CONFIG_FILES([include/llvm/Config/AsmParsers.def]) 1560AC_CONFIG_FILES([include/llvm/Config/Disassemblers.def]) 1561AC_CONFIG_HEADERS([include/llvm/Support/DataTypes.h]) 1562 1563dnl Configure the makefile's configuration data 1564AC_CONFIG_FILES([Makefile.config]) 1565 1566dnl Configure the RPM spec file for LLVM 1567AC_CONFIG_FILES([llvm.spec]) 1568 1569dnl Configure doxygen's configuration file 1570AC_CONFIG_FILES([docs/doxygen.cfg]) 1571 1572dnl Configure clang, if present 1573if test ${clang_src_root} = ""; then 1574 clang_src_root="$srcdir/tools/clang" 1575fi 1576if test -f ${clang_src_root}/README.txt; then 1577 AC_CONFIG_HEADERS([${clang_src_root}/include/clang/Config/config.h]) 1578 AC_CONFIG_FILES([${clang_src_root}/docs/doxygen.cfg]) 1579fi 1580 1581dnl OCaml findlib META file 1582AC_CONFIG_FILES([bindings/ocaml/llvm/META.llvm]) 1583 1584dnl Do special configuration of Makefiles 1585AC_CONFIG_COMMANDS([setup],,[llvm_src="${srcdir}"]) 1586AC_CONFIG_MAKEFILE(Makefile) 1587AC_CONFIG_MAKEFILE(Makefile.common) 1588AC_CONFIG_MAKEFILE(examples/Makefile) 1589AC_CONFIG_MAKEFILE(lib/Makefile) 1590AC_CONFIG_MAKEFILE(runtime/Makefile) 1591AC_CONFIG_MAKEFILE(test/Makefile) 1592AC_CONFIG_MAKEFILE(test/Makefile.tests) 1593AC_CONFIG_MAKEFILE(unittests/Makefile) 1594AC_CONFIG_MAKEFILE(tools/Makefile) 1595AC_CONFIG_MAKEFILE(utils/Makefile) 1596AC_CONFIG_MAKEFILE(projects/Makefile) 1597AC_CONFIG_MAKEFILE(bindings/Makefile) 1598AC_CONFIG_MAKEFILE(bindings/ocaml/Makefile.ocaml) 1599 1600dnl Finally, crank out the output 1601AC_OUTPUT 1602