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