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