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