configure.ac revision 0af32251c7927f2c759495519afd8dbdb03140d5
1dnl === configure.ac --------------------------------------------------------=== 2dnl The LLVM Compiler Infrastructure 3dnl 4dnl This file was developed by the LLVM research group and is distributed under 5dnl the University of Illinois Open Source 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.1svn]],[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-2007 University of Illinois at Urbana-Champaign."]) 39AC_COPYRIGHT([Copyright (c) 2003-2007 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. 65for i in `ls ${srcdir}/projects` 66do 67 if test -d ${srcdir}/projects/${i} ; then 68 case ${i} in 69 CVS) ;; 70 sample) AC_CONFIG_SUBDIRS([projects/sample]) ;; 71 privbracket) AC_CONFIG_SUBDIRS([projects/privbracket]) ;; 72 llvm-stacker) AC_CONFIG_SUBDIRS([projects/llvm-stacker]) ;; 73 llvm-test) AC_CONFIG_SUBDIRS([projects/llvm-test]) ;; 74 llvm-reopt) AC_CONFIG_SUBDIRS([projects/llvm-reopt]);; 75 llvm-gcc) AC_CONFIG_SUBDIRS([projects/llvm-gcc]) ;; 76 llvm-java) AC_CONFIG_SUBDIRS([projects/llvm-java]) ;; 77 llvm-tv) AC_CONFIG_SUBDIRS([projects/llvm-tv]) ;; 78 llvm-poolalloc) AC_CONFIG_SUBDIRS([projects/llvm-poolalloc]) ;; 79 poolalloc) AC_CONFIG_SUBDIRS([projects/poolalloc]) ;; 80 llvm-kernel) AC_CONFIG_SUBDIRS([projects/llvm-kernel]) ;; 81 *) 82 AC_MSG_WARN([Unknown project (${i}) won't be configured automatically]) 83 ;; 84 esac 85 fi 86done 87 88dnl===-----------------------------------------------------------------------=== 89dnl=== 90dnl=== SECTION 2: Architecture, target, and host checks 91dnl=== 92dnl===-----------------------------------------------------------------------=== 93 94dnl Check the target for which we're compiling and the host that will do the 95dnl compilations. This will tell us which LLVM compiler will be used for 96dnl compiling SSA into object code. This needs to be done early because 97dnl following tests depend on it. 98AC_CANONICAL_TARGET 99 100dnl Determine the platform type and cache its value. This helps us configure 101dnl the System library to the correct build platform. 102AC_CACHE_CHECK([type of operating system we're going to host on], 103 [llvm_cv_os_type], 104[case $host in 105 *-*-aix*) 106 llvm_cv_link_all_option="-Wl,--whole-archive" 107 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 108 llvm_cv_os_type="AIX" 109 llvm_cv_platform_type="Unix" ;; 110 *-*-irix*) 111 llvm_cv_link_all_option="-Wl,--whole-archive" 112 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 113 llvm_cv_os_type="IRIX" 114 llvm_cv_platform_type="Unix" ;; 115 *-*-cygwin*) 116 llvm_cv_link_all_option="-Wl,--whole-archive" 117 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 118 llvm_cv_os_type="Cygwin" 119 llvm_cv_platform_type="Unix" ;; 120 *-*-darwin*) 121 llvm_cv_link_all_option="-Wl,-all_load" 122 llvm_cv_link_all_option="-Wl,-noall_load" 123 llvm_cv_os_type="Darwin" 124 llvm_cv_platform_type="Unix" ;; 125 *-*-freebsd*) 126 llvm_cv_link_all_option="-Wl,--whole-archive" 127 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 128 llvm_cv_os_type="FreeBSD" 129 llvm_cv_platform_type="Unix" ;; 130 *-*-openbsd*) 131 llvm_cv_link_all_option="-Wl,--whole-archive" 132 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 133 llvm_cv_os_type="OpenBSD" 134 llvm_cv_platform_type="Unix" ;; 135 *-*-netbsd*) 136 llvm_cv_link_all_option="-Wl,--whole-archive" 137 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 138 llvm_cv_os_type="NetBSD" 139 llvm_cv_platform_type="Unix" ;; 140 *-*-hpux*) 141 llvm_cv_link_all_option="-Wl,--whole-archive" 142 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 143 llvm_cv_os_type="HP-UX" 144 llvm_cv_platform_type="Unix" ;; 145 *-*-interix*) 146 llvm_cv_link_all_option="-Wl,--whole-archive" 147 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 148 llvm_cv_os_type="Interix" 149 llvm_cv_platform_type="Unix" ;; 150 *-*-linux*) 151 llvm_cv_link_all_option="-Wl,--whole-archive" 152 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 153 llvm_cv_os_type="Linux" 154 llvm_cv_platform_type="Unix" ;; 155 *-*-solaris*) 156 llvm_cv_link_all_option="-Wl,-z,allextract" 157 llvm_cv_no_link_all_option="-Wl,-z,defaultextract" 158 llvm_cv_os_type="SunOS" 159 llvm_cv_platform_type="Unix" ;; 160 *-*-win32*) 161 llvm_cv_link_all_option="-Wl,--whole-archive" 162 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 163 llvm_cv_os_type="Win32" 164 llvm_cv_platform_type="Win32" ;; 165 *-*-mingw*) 166 llvm_cv_link_all_option="-Wl,--whole-archive" 167 llvm_cv_no_link_all_option="-Wl,--no-whole-archive" 168 llvm_cv_os_type="MingW" 169 llvm_cv_platform_type="Win32" ;; 170 *) 171 llvm_cv_link_all_option="" 172 llvm_cv_no_link_all_option="" 173 llvm_cv_os_type="Unknown" 174 llvm_cv_platform_type="Unknown" ;; 175esac]) 176 177dnl Make sure we aren't attempting to configure for an unknown system 178if test "$llvm_cv_os_type" = "Unknown" ; then 179 AC_MSG_ERROR([Operating system is unknown, configure can't continue]) 180fi 181 182dnl Set the "OS" Makefile variable based on the platform type so the 183dnl makefile can configure itself to specific build hosts 184AC_SUBST(OS,$llvm_cv_os_type) 185 186dnl Set the LINKALL and NOLINKALL Makefile variables based on the platform 187AC_SUBST(LINKALL,$llvm_cv_link_all_option) 188AC_SUBST(NOLINKALL,$llvm_cv_no_link_all_option) 189 190dnl Set the "LLVM_ON_*" variables based on llvm_cvs_platform_type 191dnl This is used by lib/System to determine the basic kind of implementation 192dnl to use. 193case $llvm_cv_platform_type in 194 Unix) 195 AC_DEFINE([LLVM_ON_UNIX],[1],[Define if this is Unixish platform]) 196 AC_SUBST(LLVM_ON_UNIX,[1]) 197 AC_SUBST(LLVM_ON_WIN32,[0]) 198 ;; 199 Win32) 200 AC_DEFINE([LLVM_ON_WIN32],[1],[Define if this is Win32ish platform]) 201 AC_SUBST(LLVM_ON_UNIX,[0]) 202 AC_SUBST(LLVM_ON_WIN32,[1]) 203 ;; 204esac 205 206dnl Determine what our target architecture is and configure accordingly. 207dnl This will allow Makefiles to make a distinction between the hardware and 208dnl the OS. 209AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch], 210[case $target in 211 i?86-*) llvm_cv_target_arch="x86" ;; 212 amd64-* | x86_64-*) llvm_cv_target_arch="x86_64" ;; 213 sparc*-*) llvm_cv_target_arch="Sparc" ;; 214 powerpc*-*) llvm_cv_target_arch="PowerPC" ;; 215 alpha*-*) llvm_cv_target_arch="Alpha" ;; 216 ia64-*) llvm_cv_target_arch="IA64" ;; 217 arm-*) llvm_cv_target_arch="ARM" ;; 218 *) llvm_cv_target_arch="Unknown" ;; 219esac]) 220 221if test "$llvm_cv_target_arch" = "Unknown" ; then 222 AC_MSG_WARN([Configuring LLVM for an unknown target archicture]) 223fi 224 225dnl Define a substitution, ARCH, for the target architecture 226AC_SUBST(ARCH,$llvm_cv_target_arch) 227 228dnl Check for the endianness of the target 229AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[big]),AC_SUBST([ENDIAN],[little])) 230 231dnl Check for build platform executable suffix if we're crosscompiling 232if test "$cross_compiling" = yes; then 233 AC_SUBST(LLVM_CROSS_COMPILING, [1]) 234 AC_BUILD_EXEEXT 235else 236 AC_SUBST(LLVM_CROSS_COMPILING, [0]) 237fi 238 239dnl Check to see if there's a "CVS" (or .svn) directory indicating that this 240dnl build is being done from a checkout. This sets up several defaults for the 241dnl command line switches. When we build with a CVS directory, we get a 242dnl debug with assertions turned on. Without, we assume a source release and we 243dnl get an optimized build without assertions. See --enable-optimized and 244dnl --enable-assertions below 245if test -d "CVS" -o -d "${srcdir}/CVS" -o -d ".svn" -o -d "${srcdir}/.svn"; then 246 cvsbuild="yes" 247 optimize="no" 248 AC_SUBST(CVSBUILD,[[CVSBUILD=1]]) 249else 250 cvsbuild="no" 251 optimize="yes" 252fi 253 254dnl===-----------------------------------------------------------------------=== 255dnl=== 256dnl=== SECTION 3: Command line arguments for the configure script. 257dnl=== 258dnl===-----------------------------------------------------------------------=== 259 260dnl --enable-optimized : check whether they want to do an optimized build: 261AC_ARG_ENABLE(optimized, AS_HELP_STRING( 262 [--enable-optimized,Compile with optimizations enabled (default is NO)]),,enableval=$optimize) 263if test ${enableval} = "no" ; then 264 AC_SUBST(ENABLE_OPTIMIZED,[[]]) 265else 266 AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]]) 267fi 268 269dnl --enable-assertions : check whether they want to turn on assertions or not: 270AC_ARG_ENABLE(assertions,AS_HELP_STRING( 271 [--enable-assertions,Compile with assertion checks enabled (default is YES)]),, enableval="yes") 272if test ${enableval} = "yes" ; then 273 AC_SUBST(DISABLE_ASSERTIONS,[[]]) 274else 275 AC_SUBST(DISABLE_ASSERTIONS,[[DISABLE_ASSERTIONS=1]]) 276fi 277 278dnl --enable-expensive-checks : check whether they want to turn on expensive debug checks: 279AC_ARG_ENABLE(expensive-checks,AS_HELP_STRING( 280 [--enable-expensive-checks,Compile with expensive debug checks enabled (default is NO)]),, enableval="no") 281if test ${enableval} = "yes" ; then 282 AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[ENABLE_EXPENSIVE_CHECKS=1]]) 283 AC_SUBST(EXPENSIVE_CHECKS,[[yes]]) 284else 285 AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[]]) 286 AC_SUBST(EXPENSIVE_CHECKS,[[no]]) 287fi 288 289dnl --enable-debug-runtime : should runtime libraries have debug symbols? 290AC_ARG_ENABLE(debug-runtime, 291 AS_HELP_STRING([--enable-debug-runtime,Build runtime libs with debug symbols (default is NO)]),,enableval=no) 292if test ${enableval} = "no" ; then 293 AC_SUBST(DEBUG_RUNTIME,[[]]) 294else 295 AC_SUBST(DEBUG_RUNTIME,[[DEBUG_RUNTIME=1]]) 296fi 297 298dnl --enable-jit: check whether they want to enable the jit 299AC_ARG_ENABLE(jit, 300 AS_HELP_STRING(--enable-jit, 301 [Enable Just In Time Compiling (default is YES)]),, 302 enableval=default) 303if test ${enableval} = "no" 304then 305 AC_SUBST(JIT,[[]]) 306else 307 case "$llvm_cv_target_arch" in 308 x86) AC_SUBST(TARGET_HAS_JIT,1) ;; 309 Sparc) AC_SUBST(TARGET_HAS_JIT,0) ;; 310 PowerPC) AC_SUBST(TARGET_HAS_JIT,1) ;; 311 x86_64) AC_SUBST(TARGET_HAS_JIT,1) ;; 312 Alpha) AC_SUBST(TARGET_HAS_JIT,1) ;; 313 IA64) AC_SUBST(TARGET_HAS_JIT,0) ;; 314 ARM) AC_SUBST(TARGET_HAS_JIT,0) ;; 315 *) AC_SUBST(TARGET_HAS_JIT,0) ;; 316 esac 317fi 318 319dnl Allow enablement of doxygen generated documentation 320AC_ARG_ENABLE(doxygen, 321 AS_HELP_STRING([--enable-doxygen], 322 [Build doxygen documentation (default is NO)]),, 323 enableval=default) 324case "$enableval" in 325 yes) AC_SUBST(ENABLE_DOXYGEN,[1]) ;; 326 no) AC_SUBST(ENABLE_DOXYGEN,[0]) ;; 327 default) AC_SUBST(ENABLE_DOXYGEN,[0]) ;; 328 *) AC_MSG_ERROR([Invalid setting for --enable-doxygen. Use "yes" or "no"]) ;; 329esac 330 331dnl Allow disablement of threads 332AC_ARG_ENABLE(threads, 333 AS_HELP_STRING([--enable-threads], 334 [Use threads if available (default is YES)]),, 335 enableval=default) 336case "$enableval" in 337 yes) AC_SUBST(ENABLE_THREADS,[1]) ;; 338 no) AC_SUBST(ENABLE_THREADS,[0]) ;; 339 default) AC_SUBST(ENABLE_THREADS,[1]) ;; 340 *) AC_MSG_ERROR([Invalid setting for --enable-threads. Use "yes" or "no"]) ;; 341esac 342AC_DEFINE_UNQUOTED([ENABLE_THREADS],$ENABLE_THREADS,[Define if threads enabled]) 343 344dnl Allow building with position independent code 345AC_ARG_ENABLE(pic, 346 AS_HELP_STRING([--enable-pic], 347 [Build LLVM with Position Independent Code (default is NO)]),, 348 enableval=default) 349case "$enableval" in 350 yes) AC_SUBST(ENABLE_PIC,[1]) ;; 351 no) AC_SUBST(ENABLE_PIC,[0]) ;; 352 default) AC_SUBST(ENABLE_PIC,[0]) ;; 353 *) AC_MSG_ERROR([Invalid setting for --enable-pic. Use "yes" or "no"]) ;; 354esac 355AC_DEFINE_UNQUOTED([ENABLE_PIC],$ENABLE_PIC, 356 [Define if position independent code is enabled]) 357 358dnl Allow specific targets to be specified for building (or not) 359TARGETS_TO_BUILD="" 360AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-targets], 361 [Build specific host targets: all,host-only,{target-name} (default=all)]),, 362 enableval=all) 363case "$enableval" in 364 all) TARGETS_TO_BUILD="X86 Sparc PowerPC Alpha IA64 ARM" ;; 365 host-only) 366 case "$llvm_cv_target_arch" in 367 x86) TARGETS_TO_BUILD="X86" ;; 368 x86_64) TARGETS_TO_BUILD="X86" ;; 369 Sparc) TARGETS_TO_BUILD="Sparc" ;; 370 PowerPC) TARGETS_TO_BUILD="PowerPC" ;; 371 Alpha) TARGETS_TO_BUILD="Alpha" ;; 372 IA64) TARGETS_TO_BUILD="IA64" ;; 373 ARM) TARGETS_TO_BUILD="ARM" ;; 374 *) AC_MSG_ERROR([Can not set target to build]) ;; 375 esac 376 ;; 377 *)for a_target in `echo $enableval|sed -e 's/,/ /g' ` ; do 378 case "$a_target" in 379 x86) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;; 380 x86_64) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;; 381 sparc) TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;; 382 powerpc) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;; 383 alpha) TARGETS_TO_BUILD="Alpha $TARGETS_TO_BUILD" ;; 384 ia64) TARGETS_TO_BUILD="IA64 $TARGETS_TO_BUILD" ;; 385 arm) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;; 386 *) AC_MSG_ERROR([Unrecognized target $a_target]) ;; 387 esac 388 done 389 ;; 390esac 391TARGETS_TO_BUILD="CBackend MSIL $TARGETS_TO_BUILD" 392AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD) 393 394dnl Prevent the CBackend from using printf("%a") for floating point so older 395dnl C compilers that cannot deal with the 0x0p+0 hex floating point format 396dnl can still compile the CBE's output 397AC_ARG_ENABLE([cbe-printf-a],AS_HELP_STRING([--enable-cbe-printf-a], 398 [Enable C Backend output with hex floating point via %a (default is YES)]),, 399 enableval=default) 400case "$enableval" in 401 yes) AC_SUBST(ENABLE_CBE_PRINTF_A,[1]) ;; 402 no) AC_SUBST(ENABLE_CBE_PRINTF_A,[0]) ;; 403 default) AC_SUBST(ENABLE_CBE_PRINTF_A,[1]) ;; 404 *) AC_MSG_ERROR([Invalid setting for --enable-cbe-printf-a. Use "yes" or "no"]) ;; 405esac 406AC_DEFINE_UNQUOTED([ENABLE_CBE_PRINTF_A],$ENABLE_CBE_PRINTF_A, 407 [Define if CBE is enabled for printf %a output]) 408 409dnl Allow a specific llvm-gcc/llvm-g++ pair to be used with this LLVM config. 410AC_ARG_WITH(llvmgccdir, 411 AS_HELP_STRING([--with-llvmgccdir], 412 [Specify location of llvm-gcc install dir (default searches PATH)]),, 413 withval=default) 414case "$withval" in 415 default) WITH_LLVMGCCDIR=default ;; 416 /* | [[A-Za-z]]:[[\\/]]*) WITH_LLVMGCCDIR=$withval ;; 417 *) AC_MSG_ERROR([Invalid path for --with-llvmgccdir. Provide full path]) ;; 418esac 419 420dnl Specify extra build options 421AC_ARG_WITH(extra-options, 422 AS_HELP_STRING([--with-extra-options], 423 [Specify addtional options to compile LLVM with]),, 424 withval=default) 425case "$withval" in 426 default) EXTRA_OPTIONS= ;; 427 *) EXTRA_OPTIONS=$withval ;; 428esac 429AC_SUBST(EXTRA_OPTIONS,$EXTRA_OPTIONS) 430 431dnl===-----------------------------------------------------------------------=== 432dnl=== 433dnl=== SECTION 4: Check for programs we need and that they are the right version 434dnl=== 435dnl===-----------------------------------------------------------------------=== 436 437dnl Check for compilation tools 438AC_PROG_CPP 439AC_PROG_CC(gcc) 440AC_PROG_CXX(g++) 441AC_PROG_FLEX 442AC_PROG_BISON 443 444AC_PROG_NM 445AC_SUBST(NM) 446 447dnl Check for the tools that the makefiles require 448AC_CHECK_GNU_MAKE 449AC_PROG_LN_S 450AC_PATH_PROG(CMP, [cmp], [cmp]) 451AC_PATH_PROG(CP, [cp], [cp]) 452AC_PATH_PROG(DATE, [date], [date]) 453AC_PATH_PROG(FIND, [find], [find]) 454AC_PATH_PROG(GREP, [grep], [grep]) 455AC_PATH_PROG(MKDIR,[mkdir],[mkdir]) 456AC_PATH_PROG(MV, [mv], [mv]) 457AC_PROG_RANLIB 458AC_PATH_PROG(RM, [rm], [rm]) 459AC_PATH_PROG(SED, [sed], [sed]) 460AC_PATH_PROG(TAR, [tar], [gtar]) 461AC_PATH_PROG(BINPWD,[pwd], [pwd]) 462 463dnl Looking for misc. graph plotting software 464AC_PATH_PROG(GRAPHVIZ, [Graphviz], [echo Graphviz]) 465if test "$GRAPHVIZ" != "echo Graphviz" ; then 466 AC_DEFINE([HAVE_GRAPHVIZ],[1],[Define if the Graphviz program is available]) 467 dnl If we're targeting for mingw we should emit windows paths, not msys 468 if test "$llvm_cv_os_type" = "MingW" ; then 469 GRAPHVIZ=`echo $GRAPHVIZ | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 470 fi 471 AC_DEFINE_UNQUOTED([LLVM_PATH_GRAPHVIZ],"$GRAPHVIZ${EXEEXT}", 472 [Define to path to Graphviz program if found or 'echo Graphviz' otherwise]) 473fi 474AC_PATH_PROG(DOT, [dot], [echo dot]) 475if test "$DOT" != "echo dot" ; then 476 AC_DEFINE([HAVE_DOT],[1],[Define if the dot program is available]) 477 dnl If we're targeting for mingw we should emit windows paths, not msys 478 if test "$llvm_cv_os_type" = "MingW" ; then 479 DOT=`echo $DOT | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 480 fi 481 AC_DEFINE_UNQUOTED([LLVM_PATH_DOT],"$DOT${EXEEXT}", 482 [Define to path to dot program if found or 'echo dot' otherwise]) 483fi 484AC_PATH_PROGS(GV, [gv gsview32], [echo gv]) 485if test "$GV" != "echo gv" ; then 486 AC_DEFINE([HAVE_GV],[1],[Define if the gv program is available]) 487 dnl If we're targeting for mingw we should emit windows paths, not msys 488 if test "$llvm_cv_os_type" = "MingW" ; then 489 GV=`echo $GV | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 490 fi 491 AC_DEFINE_UNQUOTED([LLVM_PATH_GV],"$GV${EXEEXT}", 492 [Define to path to gv program if found or 'echo gv' otherwise]) 493fi 494AC_PATH_PROG(DOTTY, [dotty], [echo dotty]) 495if test "$DOTTY" != "echo dotty" ; then 496 AC_DEFINE([HAVE_DOTTY],[1],[Define if the dotty program is available]) 497 dnl If we're targeting for mingw we should emit windows paths, not msys 498 if test "$llvm_cv_os_type" = "MingW" ; then 499 DOTTY=`echo $DOTTY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' ` 500 fi 501 AC_DEFINE_UNQUOTED([LLVM_PATH_DOTTY],"$DOTTY${EXEEXT}", 502 [Define to path to dotty program if found or 'echo dotty' otherwise]) 503fi 504 505dnl Look for a sufficiently recent version of Perl. 506LLVM_PROG_PERL([5.006]) 507AC_SUBST(PERL) 508if test x"$PERL" = xnone; then 509 AC_SUBST(HAVE_PERL,0) 510 AC_MSG_ERROR([perl is required but was not found, please install it]) 511else 512 AC_SUBST(HAVE_PERL,1) 513fi 514 515dnl Find the install program 516AC_PROG_INSTALL 517 518dnl Checks for documentation and testing tools that we can do without. If these 519dnl are not found then they are set to "true" which always succeeds but does 520dnl nothing. This just lets the build output show that we could have done 521dnl something if the tool was available. 522AC_PATH_PROG(BZIP2,[bzip2],[echo "Skipped: bzip2 not found"]) 523AC_PATH_PROG(DOXYGEN,[doxygen],[echo "Skipped: doxygen not found"]) 524AC_PATH_PROG(GROFF,[groff],[echo "Skipped: groff not found"]) 525AC_PATH_PROG(GZIP,[gzip],[echo "Skipped: gzip not found"]) 526AC_PATH_PROG(POD2HTML,[pod2html],[echo "Skipped: pod2html not found"]) 527AC_PATH_PROG(POD2MAN,[pod2man],[echo "Skipped: pod2man not found"]) 528AC_PATH_PROG(RUNTEST,[runtest],[echo "Skipped: runtest not found"]) 529DJ_AC_PATH_TCLSH 530AC_PATH_PROG(ZIP,[zip],[echo "Skipped: zip not found"]) 531 532dnl Determine if the linker supports the -R option. 533AC_LINK_USE_R 534 535dnl Check for libtool and the library that has dlopen function (which must come 536dnl before the AC_PROG_LIBTOOL check in order to enable dlopening libraries with 537dnl libtool). 538AC_LIBTOOL_DLOPEN 539AC_LIB_LTDL 540AC_PROG_LIBTOOL 541 542if test "$lt_cv_dlopen_self" = "yes" ; then 543 AC_DEFINE([CAN_DLOPEN_SELF],[1], 544 [Define if dlopen(0) will open the symbols of the program]) 545fi 546 547dnl Check if we know how to tell etags we are using C++: 548etags_version=`$ETAGS --version 2>&1` 549case "$etags_version" in 550 *[Ee]xuberant*) ETAGSFLAGS="--language-force=c++" ;; 551 *GNU\ Emacs*) ETAGSFLAGS="-l c++" ;; 552 *) ETAGSFLAGS="" ;; 553esac 554AC_SUBST(ETAGSFLAGS,$ETAGSFLAGS) 555 556if test "$WITH_LLVMGCCDIR" = "default" ; then 557 LLVMGCC="llvm-gcc${EXEEXT}" 558 LLVMGXX="llvm-g++${EXEEXT}" 559 AC_PATH_PROG(LLVMGCC, $LLVMGCC, []) 560 AC_PATH_PROG(LLVMGXX, $LLVMGXX, []) 561else 562 LLVMGCC="$WITH_LLVMGCCDIR/bin/llvm-gcc${EXEEXT}" 563 LLVMGXX="$WITH_LLVMGCCDIR/bin/llvm-g++${EXEEXT}" 564 AC_SUBST(LLVMGCC,$LLVMGCC) 565 AC_SUBST(LLVMGXX,$LLVMGXX) 566fi 567 568AC_MSG_CHECKING([tool compatibility]) 569 570dnl Ensure that compilation tools are GCC or a GNU compatible compiler such as 571dnl ICC; we use GCC specific options in the makefiles so the compiler needs 572dnl to support those options. 573dnl "icc" emits gcc signatures 574dnl "icc -no-gcc" emits no gcc signature BUT is still compatible 575ICC=no 576IXX=no 577case $CC in 578 icc*|icpc*) 579 ICC=yes 580 IXX=yes 581 ;; 582 *) 583 ;; 584esac 585 586if test "$GCC" != "yes" && test "$ICC" != "yes" 587then 588 AC_MSG_ERROR([gcc|icc required but not found]) 589fi 590 591dnl Ensure that compilation tools are GCC; we use GCC specific extensions 592if test "$GXX" != "yes" && test "$IXX" != "yes" 593then 594 AC_MSG_ERROR([g++|icc required but not found]) 595fi 596 597dnl Verify that GCC is version 3.0 or higher 598if test "$GCC" = "yes" 599then 600 gccmajor=`$CC --version | head -n 1 | sed 's/[[^0-9]]*\([[0-9.]]\).*/\1/'` 601 if test "$gccmajor" -lt "3" 602 then 603 AC_MSG_ERROR([gcc 3.x required, but you have a lower version]) 604 fi 605fi 606 607dnl Check for GNU Make. We use its extensions, so don't build without it 608if test -z "$llvm_cv_gnu_make_command" 609then 610 AC_MSG_ERROR([GNU Make required but not found]) 611fi 612 613dnl Tool compatibility is okay if we make it here. 614AC_MSG_RESULT([ok]) 615 616dnl===-----------------------------------------------------------------------=== 617dnl=== 618dnl=== SECTION 5: Check for libraries 619dnl=== 620dnl===-----------------------------------------------------------------------=== 621 622dnl libelf is for sparc only; we can ignore it if we don't have it 623AC_CHECK_LIB(elf, elf_begin) 624AC_CHECK_LIB(m,sin) 625if test "$llvm_cv_os_type" = "MingW" ; then 626 AC_CHECK_LIB(imagehlp, main) 627 AC_CHECK_LIB(psapi, main) 628fi 629 630dnl lt_dlopen may be required for plugin support. 631AC_SEARCH_LIBS(lt_dlopen,ltdl,AC_DEFINE([HAVE_LT_DLOPEN],[1], 632 [Define if lt_dlopen() is available on this platform]), 633 AC_MSG_WARN([lt_dlopen() not found - plugin support might 634 not be available])) 635 636dnl dlopen() is required for plugin support. 637AC_SEARCH_LIBS(dlopen,dl,AC_DEFINE([HAVE_DLOPEN],[1], 638 [Define if dlopen() is available on this platform.]), 639 AC_MSG_WARN([dlopen() not found - disabling plugin support])) 640 641dnl mallinfo is optional; the code can compile (minus features) without it 642AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1], 643 [Define if mallinfo() is available on this platform.])) 644 645dnl pthread locking functions are optional - but llvm will not be thread-safe 646dnl without locks. 647if test "$ENABLE_THREADS" -eq 1 ; then 648 AC_CHECK_LIB(pthread,pthread_mutex_init) 649 AC_SEARCH_LIBS(pthread_mutex_lock,pthread, 650 AC_DEFINE([HAVE_PTHREAD_MUTEX_LOCK],[1], 651 [Have pthread_mutex_lock])) 652fi 653 654dnl Allow extra x86-disassembler library 655AC_ARG_WITH(udis86, 656 AS_HELP_STRING([--with-udis86=<path>], 657 [Use udis86 external x86 disassembler library]), 658 [ 659 AC_SUBST(USE_UDIS86, [1]) 660 case "$withval" in 661 /usr/lib|yes) ;; 662 *) LDFLAGS="$LDFLAGS -L${withval}" ;; 663 esac 664 AC_CHECK_LIB(udis86, ud_init, [], [ 665 echo "Error! You need to have libudis86 around." 666 exit -1 667 ]) 668 ], 669 AC_SUBST(USE_UDIS86, [0])) 670AC_DEFINE_UNQUOTED([USE_UDIS86],$USE_UDIS86, 671 [Define if use udis86 library]) 672 673dnl===-----------------------------------------------------------------------=== 674dnl=== 675dnl=== SECTION 6: Check for header files 676dnl=== 677dnl===-----------------------------------------------------------------------=== 678 679dnl First, use autoconf provided macros for specific headers that we need 680dnl We don't check for ancient stuff or things that are guaranteed to be there 681dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers. 682dnl Generally we're looking for POSIX headers. 683AC_HEADER_DIRENT 684AC_HEADER_MMAP_ANONYMOUS 685AC_HEADER_STAT 686AC_HEADER_STDC 687AC_HEADER_SYS_WAIT 688AC_HEADER_TIME 689 690AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h inttypes.h limits.h link.h]) 691AC_CHECK_HEADERS([malloc.h setjmp.h signal.h stdint.h unistd.h utime.h]) 692AC_CHECK_HEADERS([windows.h sys/mman.h sys/param.h sys/resource.h sys/time.h]) 693AC_CHECK_HEADERS([sys/types.h malloc/malloc.h mach/mach.h]) 694if test "$ENABLE_THREADS" -eq 1 ; then 695 AC_CHECK_HEADER(pthread.h, 696 AC_SUBST(HAVE_PTHREAD, 1), 697 AC_SUBST(HAVE_PTHREAD, 0)) 698else 699 AC_SUBST(HAVE_PTHREAD, 0) 700fi 701 702dnl===-----------------------------------------------------------------------=== 703dnl=== 704dnl=== SECTION 7: Check for types and structures 705dnl=== 706dnl===-----------------------------------------------------------------------=== 707 708AC_HUGE_VAL_CHECK 709AC_TYPE_PID_T 710AC_TYPE_SIZE_T 711AC_TYPE_SIGNAL 712AC_STRUCT_TM 713AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found])) 714AC_CHECK_TYPES([uint64_t],, 715 AC_CHECK_TYPES([u_int64_t],, 716 AC_MSG_ERROR([Type uint64_t or u_int64_t required but not found]))) 717 718dnl===-----------------------------------------------------------------------=== 719dnl=== 720dnl=== SECTION 8: Check for specific functions needed 721dnl=== 722dnl===-----------------------------------------------------------------------=== 723 724AC_CHECK_FUNCS([backtrace ceilf floorf roundf rintf nearbyintf getcwd ]) 725AC_CHECK_FUNCS([powf fmodf strtof round ]) 726AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday ]) 727AC_CHECK_FUNCS([isatty mkdtemp mkstemp ]) 728AC_CHECK_FUNCS([mktemp realpath sbrk setrlimit strdup strerror strerror_r ]) 729AC_CHECK_FUNCS([strtoll strtoq sysconf malloc_zone_statistics ]) 730AC_CHECK_FUNCS([setjmp longjmp sigsetjmp siglongjmp]) 731AC_C_PRINTF_A 732AC_FUNC_ALLOCA 733AC_FUNC_RAND48 734 735dnl Check for variations in the Standard C++ library and STL. These macros are 736dnl provided by LLVM in the autoconf/m4 directory. 737AC_CXX_HAVE_HASH_MAP 738AC_CXX_HAVE_HASH_SET 739AC_CXX_HAVE_STD_ITERATOR 740AC_CXX_HAVE_BI_ITERATOR 741AC_CXX_HAVE_FWD_ITERATOR 742AC_FUNC_ISNAN 743AC_FUNC_ISINF 744 745dnl Check for mmap support.We also need to know if /dev/zero is required to 746dnl be opened for allocating RWX memory. 747dnl Make sure we aren't attempting to configure for an unknown system 748if test "$llvm_cv_platform_type" = "Unix" ; then 749 AC_FUNC_MMAP 750 AC_FUNC_MMAP_FILE 751 AC_NEED_DEV_ZERO_FOR_MMAP 752 753 if test "$ac_cv_func_mmap_fixed_mapped" = "no" 754 then 755 AC_MSG_WARN([mmap() of a fixed address required but not supported]) 756 fi 757 if test "$ac_cv_func_mmap_file" = "no" 758 then 759 AC_MSG_WARN([mmap() of files required but not found]) 760 fi 761fi 762 763dnl===-----------------------------------------------------------------------=== 764dnl=== 765dnl=== SECTION 9: Additional checks, variables, etc. 766dnl=== 767dnl===-----------------------------------------------------------------------=== 768 769dnl See if the llvm-gcc executable can compile to LLVM assembly 770AC_CACHE_CHECK([whether llvm-gcc is sane],[llvm_cv_llvmgcc_sanity], 771[llvm_cv_llvmgcc_sanity="no" 772if test -x "$LLVMGCC" ; then 773 cp /dev/null conftest.c 774 "$LLVMGCC" -emit-llvm -S -o - conftest.c | \ 775 grep 'target datalayout =' > /dev/null 2>&1 776 if test $? -eq 0 ; then 777 llvm_cv_llvmgcc_sanity="yes" 778 fi 779 rm conftest.c 780fi]) 781 782dnl Since we have a sane llvm-gcc, identify it and its sub-tools 783if test "$llvm_cv_llvmgcc_sanity" = "yes" ; then 784 AC_MSG_CHECKING([llvm-gcc component support]) 785 llvmcc1path=`"$LLVMGCC" --print-prog-name=cc1` 786 AC_SUBST(LLVMCC1,$llvmcc1path) 787 llvmcc1pluspath=`"$LLVMGCC" --print-prog-name=cc1plus` 788 AC_SUBST(LLVMCC1PLUS,$llvmcc1pluspath) 789 llvmgccdir=`echo "$llvmcc1path" | sed 's,/libexec/.*,,'` 790 AC_SUBST(LLVMGCCDIR,$llvmgccdir) 791 llvmgcclibexec=`echo "$llvmcc1path" | sed 's,/cc1,,'` 792 AC_SUBST(LLVMGCCLIBEXEC,$llvmgcclibexec) 793 llvmgccversion=[`"$LLVMGCC" -dumpversion 2>&1 | sed 's/^\([0-9.]*\).*/\1/'`] 794 llvmgccmajvers=[`echo $llvmgccversion | sed 's/^\([0-9]\).*/\1/'`] 795 AC_SUBST(LLVMGCC_VERSION,$llvmgccversion) 796 AC_SUBST(LLVMGCC_MAJVERS,$llvmgccmajvers) 797 llvmgcclangs=[`"$LLVMGCC" -v --help 2>&1 | grep '^Configured with:' | sed 's/^.*--enable-languages=\([^ -]*\).*/\1/'`] 798 AC_SUBST(LLVMGCC_LANGS,$llvmgcclangs) 799 AC_MSG_RESULT([ok]) 800fi 801 802dnl Propagate the shared library extension that the libltdl checks did to 803dnl the Makefiles so we can use it there too 804AC_SUBST(SHLIBEXT,$libltdl_cv_shlibext) 805 806# Translate the various configuration directories and other basic 807# information into substitutions that will end up in Makefile.config.in 808# that these configured values can be used by the makefiles 809if test "${prefix}" = "NONE" ; then 810 prefix="/usr/local" 811fi 812eval LLVM_PREFIX="${prefix}"; 813eval LLVM_BINDIR="${prefix}/bin"; 814eval LLVM_LIBDIR="${prefix}/lib"; 815eval LLVM_DATADIR="${prefix}/share/llvm"; 816eval LLVM_DOCSDIR="${prefix}/docs/llvm"; 817eval LLVM_ETCDIR="${prefix}/etc/llvm"; 818eval LLVM_INCLUDEDIR="${prefix}/include"; 819eval LLVM_INFODIR="${prefix}/info"; 820eval LLVM_MANDIR="${prefix}/man"; 821LLVM_CONFIGTIME=`date` 822AC_SUBST(LLVM_PREFIX) 823AC_SUBST(LLVM_BINDIR) 824AC_SUBST(LLVM_LIBDIR) 825AC_SUBST(LLVM_DATADIR) 826AC_SUBST(LLVM_DOCSDIR) 827AC_SUBST(LLVM_ETCDIR) 828AC_SUBST(LLVM_INCLUDEDIR) 829AC_SUBST(LLVM_INFODIR) 830AC_SUBST(LLVM_MANDIR) 831AC_SUBST(LLVM_CONFIGTIME) 832 833# Place the various directores into the config.h file as #defines so that we 834# can know about the installation paths within LLVM. 835AC_DEFINE_UNQUOTED(LLVM_PREFIX,"$LLVM_PREFIX", 836 [Installation prefix directory]) 837AC_DEFINE_UNQUOTED(LLVM_BINDIR, "$LLVM_BINDIR", 838 [Installation directory for binary executables]) 839AC_DEFINE_UNQUOTED(LLVM_LIBDIR, "$LLVM_LIBDIR", 840 [Installation directory for libraries]) 841AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DATADIR", 842 [Installation directory for data files]) 843AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DOCSDIR", 844 [Installation directory for documentation]) 845AC_DEFINE_UNQUOTED(LLVM_ETCDIR, "$LLVM_ETCDIR", 846 [Installation directory for config files]) 847AC_DEFINE_UNQUOTED(LLVM_INCLUDEDIR, "$LLVM_INCLUDEDIR", 848 [Installation directory for include files]) 849AC_DEFINE_UNQUOTED(LLVM_INFODIR, "$LLVM_INFODIR", 850 [Installation directory for .info files]) 851AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR", 852 [Installation directory for man pages]) 853AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME", 854 [Time at which LLVM was configured]) 855 856dnl===-----------------------------------------------------------------------=== 857dnl=== 858dnl=== SECTION 10: Specify the output files and generate it 859dnl=== 860dnl===-----------------------------------------------------------------------=== 861 862dnl Configure header files 863dnl WARNING: dnl If you add or remove any of the following config headers, then 864dnl you MUST also update Makefile.rules so that the variable FilesToConfig 865dnl contains the same list of files as AC_CONFIG_HEADERS below. This ensures the 866dnl files can be updated automatically when their *.in sources change. 867AC_CONFIG_HEADERS([include/llvm/Config/config.h]) 868AC_CONFIG_HEADERS([include/llvm/Support/DataTypes.h]) 869AC_CONFIG_HEADERS([include/llvm/ADT/hash_map]) 870AC_CONFIG_HEADERS([include/llvm/ADT/hash_set]) 871AC_CONFIG_HEADERS([include/llvm/ADT/iterator]) 872 873dnl Configure the makefile's configuration data 874AC_CONFIG_FILES([Makefile.config]) 875 876dnl Configure the RPM spec file for LLVM 877AC_CONFIG_FILES([llvm.spec]) 878 879dnl Configure doxygen's configuration file 880AC_CONFIG_FILES([docs/doxygen.cfg]) 881 882dnl Do the first stage of configuration for llvm-config.in. 883AC_CONFIG_FILES([tools/llvm-config/llvm-config.in]) 884 885dnl Do special configuration of Makefiles 886AC_CONFIG_COMMANDS([setup],,[llvm_src="${srcdir}"]) 887AC_CONFIG_MAKEFILE(Makefile) 888AC_CONFIG_MAKEFILE(Makefile.common) 889AC_CONFIG_MAKEFILE(examples/Makefile) 890AC_CONFIG_MAKEFILE(lib/Makefile) 891AC_CONFIG_MAKEFILE(runtime/Makefile) 892AC_CONFIG_MAKEFILE(test/Makefile) 893AC_CONFIG_MAKEFILE(test/Makefile.tests) 894AC_CONFIG_MAKEFILE(tools/Makefile) 895AC_CONFIG_MAKEFILE(utils/Makefile) 896AC_CONFIG_MAKEFILE(projects/Makefile) 897 898dnl Finally, crank out the output 899AC_OUTPUT 900 901