configure.ac revision c84492c2dbfa69d0f0dbc0a12d61374ead2c26fc
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]],[[1.6cvs]],[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-2005 University of Illinois at Urbana-Champaign."]) 39AC_COPYRIGHT($LLVM_COPYRIGHT) 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 "Stacker") AC_CONFIG_SUBDIRS([projects/Stacker]) ;; 72 "llvm-test") AC_CONFIG_SUBDIRS([projects/llvm-test]) ;; 73 "llvm-reopt") AC_CONFIG_SUBDIRS([projects/llvm-reopt]);; 74 "llvm-gcc") AC_CONFIG_SUBDIRS([projects/llvm-gcc]) ;; 75 "llvm-java") AC_CONFIG_SUBDIRS([projects/llvm-java]) ;; 76 "llvm-tv") AC_CONFIG_SUBDIRS([projects/llvm-tv]) ;; 77 "llvm-poolalloc") AC_CONFIG_SUBDIRS([projects/llvm-poolalloc]) ;; 78 *) 79 AC_MSG_WARN([Unknown project (${i}) won't be configured automatically]) 80 ;; 81 esac 82 fi 83done 84 85dnl===-----------------------------------------------------------------------=== 86dnl=== 87dnl=== SECTION 2: Architecture, target, and host checks 88dnl=== 89dnl===-----------------------------------------------------------------------=== 90 91dnl Check the target for which we're compiling and the host that will do the 92dnl compilations. This will tell us which LLVM compiler will be used for 93dnl compiling SSA into object code. This needs to be done early because 94dnl following tests depend on it. 95AC_CANONICAL_TARGET 96 97dnl Determine the platform type and cache its value. This helps us configure 98dnl the System library to the correct build platform. 99AC_CACHE_CHECK([type of operating system we're on], 100 [llvm_cv_os_type], 101[case $build in 102 *-*-aix*) 103 llvm_cv_os_type="AIX" 104 llvm_cv_platform_type="Unix" ;; 105 *-*-cygwin*) 106 llvm_cv_os_type="Cygwin" 107 llvm_cv_platform_type="Unix" ;; 108 *-*-darwin*) 109 llvm_cv_os_type="Darwin" 110 llvm_cv_platform_type="Unix" ;; 111 *-*-freebsd*) 112 llvm_cv_os_type="FreeBSD" 113 llvm_cv_platform_type="Unix" ;; 114 *-*-hpux*) 115 llvm_cv_os_type="HP-UX" 116 llvm_cv_platform_type="Unix" ;; 117 *-*-interix*) 118 llvm_cv_os_type="Interix" 119 llvm_cv_platform_type="Unix" ;; 120 *-*-linux*) 121 llvm_cv_os_type="Linux" 122 llvm_cv_platform_type="Unix" ;; 123 *-*-solaris*) 124 llvm_cv_os_type="SunOS" 125 llvm_cv_platform_type="Unix" ;; 126 *-*-win32*) 127 llvm_cv_os_type="Win32" 128 llvm_cv_platform_type="Win32" ;; 129 *-*-mingw*) 130 llvm_cv_os_type="MingW" 131 llvm_cv_platform_type="Win32" ;; 132 *) 133 llvm_cv_os_type="Unknown" 134 llvm_cv_platform_type="Unknown" ;; 135esac]) 136 137dnl Make sure we aren't attempting to configure for an unknown system 138if test "$llvm_cv_os_type" = "Unknown" ; then 139 AC_MSG_ERROR([Operating system is unknown, configure can't continue]) 140fi 141 142dnl Set the "OS" Makefile variable based on the platform type so the 143dnl makefile can configure itself to specific build hosts 144AC_SUBST(OS,$llvm_cv_os_type) 145 146dnl Set the "LLVM_ON_*" variables based on llvm_cvs_platform_type 147dnl This is used by lib/System to determine the basic kind of implementation 148dnl to use. 149case $llvm_cv_platform_type in 150 Unix) 151 AC_DEFINE([LLVM_ON_UNIX],[1],[Define if this is Unixish platform]) 152 AC_SUBST(LLVM_ON_UNIX,[1]) 153 AC_SUBST(LLVM_ON_WIN32,[0]) 154 ;; 155 Win32) 156 AC_DEFINE([LLVM_ON_WIN32],[1],[Define if this is Win32ish platform]) 157 AC_SUBST(LLVM_ON_UNIX,[0]) 158 AC_SUBST(LLVM_ON_WIN32,[1]) 159 ;; 160esac 161 162dnl If we are targetting a Sparc machine running Solaris, pretend that it is 163dnl V9, since that is all that we support at the moment, and autoconf will only 164dnl tell us we're a sparc. 165case $target in 166 sparc*-*-solaris*) AC_SUBST(target,[[sparcv9-sun-solaris2.8]]) 167 ;; 168esac 169 170dnl Determine what our target architecture is and configure accordingly. 171dnl This will allow Makefiles to make a distinction between the hardware and 172dnl the OS. 173AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch], 174[case $target in 175 i?86-*) llvm_cv_target_arch="x86" ;; 176 amd64-* | x86_64-*) llvm_cv_target_arch="x86_64" ;; 177 sparc*-*) llvm_cv_target_arch="Sparc" ;; 178 powerpc*-*) llvm_cv_target_arch="PowerPC" ;; 179 alpha*-*) llvm_cv_target_arch="Alpha" ;; 180 ia64-*) llvm_cv_target_arch="IA64" ;; 181 *) llvm_cv_target_arch="Unknown" ;; 182esac]) 183 184if test "$llvm_cv_target_arch" = "Unknown" ; then 185 AC_MSG_WARN([Configuring LLVM for an unknown target archicture]) 186fi 187 188dnl Define a substitution, ARCH, for the target architecture 189AC_SUBST(ARCH,$llvm_cv_target_arch) 190 191dnl Check for the endianness of the target 192AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[big]),AC_SUBST([ENDIAN],[little])) 193 194dnl===-----------------------------------------------------------------------=== 195dnl=== 196dnl=== SECTION 3: Command line arguments for the configure script. 197dnl=== 198dnl===-----------------------------------------------------------------------=== 199 200dnl --enable-optimized : check whether they want to do an optimized build: 201AC_ARG_ENABLE(optimized, 202 AS_HELP_STRING([--enable-optimized,Compile with optimizations enabled (default is NO)]),,enableval=no) 203if test ${enableval} = "no" ; then 204 AC_SUBST(ENABLE_OPTIMIZED,[[]]) 205else 206 AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]]) 207fi 208 209dnl --enable-jit: check whether they want to enable the jit 210AC_ARG_ENABLE(jit, 211 AS_HELP_STRING(--enable-jit, 212 [Enable Just In Time Compiling (default is YES)]),, 213 enableval=default) 214if test ${enableval} = "no" 215then 216 AC_SUBST(JIT,[[]]) 217else 218 case "$llvm_cv_target_arch" in 219 x86) AC_SUBST(JIT,[[TARGET_HAS_JIT=1]]) ;; 220 Sparc) AC_SUBST(JIT,[[TARGET_HAS_JIT=1]]) ;; 221 PowerPC) AC_SUBST(JIT,[[TARGET_HAS_JIT=1]]) ;; 222 x86_64) AC_SUBST(JIT,[[]]) ;; 223 Alpha) AC_SUBST(JIT,[[]]) ;; 224 IA64) AC_SUBST(JIT,[[]]) ;; 225 *) AC_SUBST(JIT,[[]]) ;; 226 esac 227fi 228 229dnl Allow enablement of doxygen generated documentation 230AC_ARG_ENABLE(doxygen, 231 AS_HELP_STRING([--enable-doxygen], 232 [Build doxygen documentation (default is NO)]),, 233 enableval=default) 234case "$enableval" in 235 yes) AC_SUBST(ENABLE_DOXYGEN,[1]) ;; 236 no) AC_SUBST(ENABLE_DOXYGEN,[0]) ;; 237 default) AC_SUBST(ENABLE_DOXYGEN,[0]) ;; 238 *) AC_MSG_ERROR([Invalid setting for --enable-doxygen. Use "yes" or "no"]) ;; 239esac 240 241dnl Allow specific targets to be specified for building (or not) 242TARGETS_TO_BUILD="" 243AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-target], 244 [Build specific host targets: all,host-only,{target-name} (default=all)]),, 245 enableval=all) 246case "$enableval" in 247 all) TARGETS_TO_BUILD="X86 SparcV8 SparcV9 PowerPC Alpha IA64 Skeleton" ;; 248 host-only) 249 case "$llvm_cv_target_arch" in 250 x86) TARGETS_TO_BUILD="X86" ;; 251 x86_64) TARGETS_TO_BUILD="X86" ;; 252 Sparc) TARGETS_TO_BUILD="SparcV8 SparcV9" ;; 253 PowerPC) TARGETS_TO_BUILD="PowerPC" ;; 254 Alpha) TARGETS_TO_BUILD="Alpha" ;; 255 IA64) TARGETS_TO_BUILD="IA64" ;; 256 *) AC_MSG_ERROR([Can not set target to build]) ;; 257 esac 258 ;; 259 *)for a_target in `echo $enableval|sed -e 's/,/ /g' ` ; do 260 case "$a_target" in 261 x86) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;; 262 x86_64) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;; 263 sparc) TARGETS_TO_BUILD="SparcV8 SparcV9 $TARGETS_TO_BUILD" ;; 264 powerpc) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;; 265 alpha) TARGETS_TO_BUILD="Alpha $TARGETS_TO_BUILD" ;; 266 ia64) TARGETS_TO_BUILD="IA64 $TARGETS_TO_BUILD" ;; 267 skeleton)TARGETS_TO_BUILD="Skeleton $TARGETS_TO_BUILD";; 268 *) AC_MSG_ERROR([Unrecognized target $a_target]) ;; 269 esac 270 done 271 ;; 272esac 273TARGETS_TO_BUILD="CBackend $TARGETS_TO_BUILD" 274AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD) 275 276dnl Allow a specific llvm-gcc/llvm-g++ pair to be used with this LLVM config. 277AC_ARG_WITH(llvmgccdir, 278 AS_HELP_STRING([--with-llvmgccdir], 279 [Specify location of llvm-gcc install dir (default searches PATH)]),, 280 withval=default) 281case "$withval" in 282 default) WITH_LLVMGCCDIR=default ;; 283 /*) WITH_LLVMGCCDIR=$withval ;; 284 *) AC_MSG_ERROR([Invalid path for --with-llvmgccdir. Provide full path]) ;; 285esac 286 287 288dnl===-----------------------------------------------------------------------=== 289dnl=== 290dnl=== SECTION 4: Check for programs we need and that they are the right version 291dnl=== 292dnl===-----------------------------------------------------------------------=== 293 294dnl Check for compilation tools 295AC_PROG_CPP 296AC_PROG_CC(gcc) 297AC_PROG_CXX(g++) 298AC_PROG_FLEX 299AC_PROG_BISON 300 301dnl Check for the tools that the makefiles require 302AC_CHECK_GNU_MAKE 303AC_PROG_LN_S 304AC_PATH_PROG(CMP, [cmp], [cmp]) 305AC_PATH_PROG(CP, [cp], [cp]) 306AC_PATH_PROG(DATE, [date], [date]) 307AC_PATH_PROG(FIND, [find], [find]) 308AC_PATH_PROG(GREP, [grep], [grep]) 309AC_PATH_PROG(MKDIR,[mkdir],[mkdir]) 310AC_PATH_PROG(MV, [mv], [mv]) 311AC_PROG_RANLIB 312AC_PATH_PROG(RM, [rm], [rm]) 313AC_PATH_PROG(SED, [sed], [sed]) 314AC_PATH_PROG(TAR, [tar], [gtar]) 315 316dnl Find the install program 317AC_PROG_INSTALL 318 319dnl Checks for documentation and testing tools that we can do without. If these 320dnl are not found then they are set to "true" which always succeeds but does 321dnl nothing. This just lets the build output show that we could have done 322dnl something if the tool was available. 323AC_PATH_PROG(BZIP2,[bzip2],[true bzip2]) 324AC_PATH_PROG(DOT,[dot],[true dot]) 325AC_PATH_PROG(DOXYGEN,[doxygen],[true doxygen]) 326AC_PATH_PROG(ETAGS,[etags],[true etags]) 327AC_PATH_PROG(GROFF,[groff],[true groff]) 328AC_PATH_PROG(GZIP,[gzip],[true gzip]) 329AC_PATH_PROG(POD2HTML,[pod2html],[true pod2html]) 330AC_PATH_PROG(POD2MAN,[pod2man],[true pod2man]) 331AC_PATH_PROG(RUNTEST,[runtest],[true runtest]) 332DJ_AC_PATH_TCLSH 333AC_PATH_PROG(ZIP,[zip],[true zip]) 334 335dnl Determine if the linker supports the -R option. 336AC_LINK_USE_R 337 338dnl Check for libtool and the library that has dlopen function (which must come 339dnl before the AC_PROG_LIBTOOL check in order to enable dlopening libraries with 340dnl libtool). 341AC_LIBTOOL_DLOPEN 342AC_LIB_LTDL 343AC_PROG_LIBTOOL 344 345if test "$lt_cv_dlopen_self" = "yes" ; then 346 AC_DEFINE([CAN_DLOPEN_SELF],[1], 347 [Define if dlopen(0) will open the symbols of the program]) 348fi 349 350dnl Check if we know how to tell etags we are using C++: 351etags_version=`$ETAGS --version 2>&1` 352case "$etags_version" in 353 *[Ee]xuberant*) ETAGSFLAGS="--language-force=c++" ;; 354 *GNU\ Emacs*) ETAGSFLAGS="-l c++" ;; 355 *) ETAGSFLAGS="" ;; 356esac 357AC_SUBST(ETAGSFLAGS,$ETAGSFLAGS) 358 359if test "$WITH_LLVMGCCDIR" = "default" ; then 360 LLVMGCC="llvm-gcc${EXEEXT}" 361 LLVMGXX="llvm-g++${EXEEXT}" 362 AC_PATH_PROG(LLVMGCC, $LLVMGCC, []) 363 AC_PATH_PROG(LLVMGXX, $LLVMGXX, []) 364else 365 LLVMGCC="$WITH_LLVMGCCDIR/bin/llvm-gcc${EXEEXT}" 366 LLVMGXX="$WITH_LLVMGCCDIR/bin/llvm-g++${EXEEXT}" 367 AC_SUBST(LLVMGCC,$LLVMGCC) 368 AC_SUBST(LLVMGXX,$LLVMGXX) 369fi 370 371AC_MSG_CHECKING([tool compatibility]) 372 373dnl Ensure that compilation tools are GCC or a GNU compatible compiler such as 374dnl ICC; we use GCC specific options in the makefiles so the compiler needs 375dnl to support those options. 376dnl "icc" emits gcc signatures 377dnl "icc -no-gcc" emits no gcc signature BUT is still compatible 378ICC=no 379IXX=no 380case $CC in 381 icc*|icpc*) 382 ICC=yes 383 IXX=yes 384 ;; 385 *) 386 ;; 387esac 388 389if test "$GCC" != "yes" && test "$ICC" != "yes" 390then 391 AC_MSG_ERROR([gcc|icc required but not found]) 392fi 393 394dnl Ensure that compilation tools are GCC; we use GCC specific extensions 395if test "$GXX" != "yes" && test "$IXX" != "yes" 396then 397 AC_MSG_ERROR([g++|icc required but not found]) 398fi 399 400dnl Verify that GCC is version 3.0 or higher 401if test "$GCC" = "yes" 402then 403 gccmajor=`$CC --version | head -n 1 | awk '{print $NF;}' | cut -d. -f1` 404 if test "$gccmajor" -lt "3" 405 then 406 AC_MSG_ERROR([gcc 3.x required, but you have a lower version]) 407 fi 408fi 409 410dnl Check for GNU Make. We use its extensions, so don't build without it 411if test -z "$llvm_cv_gnu_make_command" 412then 413 AC_MSG_ERROR([GNU Make required but not found]) 414fi 415 416dnl Tool compatibility is okay if we make it here. 417AC_MSG_RESULT([ok]) 418 419dnl===-----------------------------------------------------------------------=== 420dnl=== 421dnl=== SECTION 5: Check for libraries 422dnl=== 423dnl===-----------------------------------------------------------------------=== 424 425dnl libelf is for sparc only; we can ignore it if we don't have it 426AC_CHECK_LIB(elf, elf_begin) 427 428dnl lt_dlopen may be required for plugin support. 429AC_SEARCH_LIBS(lt_dlopen,ltdl,AC_DEFINE([HAVE_LT_DLOPEN],[1], 430 [Define if lt_dlopen() is available on this platform]), 431 AC_MSG_WARN([lt_dlopen() not found - plugin support might 432 not be available])) 433 434dnl dlopen() is required for plugin support. 435AC_SEARCH_LIBS(dlopen,dl,AC_DEFINE([HAVE_DLOPEN],[1], 436 [Define if dlopen() is available on this platform.]), 437 AC_MSG_WARN([dlopen() not found - disabling plugin support])) 438 439dnl mallinfo is optional; the code can compile (minus features) without it 440AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1], 441 [Define if mallinfo() is available on this platform.])) 442 443dnl pthread locking functions are optional - but llvm will not be thread-safe 444dnl without locks. 445AC_SEARCH_LIBS(pthread_mutex_lock,pthread, 446 AC_DEFINE([HAVE_PTHREAD_MUTEX_LOCK],[1], 447 [Have pthread_mutex_lock])) 448 449dnl===-----------------------------------------------------------------------=== 450dnl=== 451dnl=== SECTION 6: Check for header files 452dnl=== 453dnl===-----------------------------------------------------------------------=== 454 455dnl First, use autoconf provided macros for specific headers that we need 456dnl We don't check for ancient stuff or things that are guaranteed to be there 457dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers. 458dnl Generally we're looking for POSIX headers. 459AC_HEADER_DIRENT 460AC_HEADER_MMAP_ANONYMOUS 461AC_HEADER_STAT 462AC_HEADER_STDC 463AC_HEADER_SYS_WAIT 464AC_HEADER_TIME 465 466AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h inttypes.h limits.h link.h]) 467AC_CHECK_HEADERS([malloc.h signal.h stdint.h unistd.h utime.h windows.h]) 468AC_CHECK_HEADERS([sys/mman.h sys/param.h sys/resource.h sys/time.h sys/types.h]) 469AC_CHECK_HEADERS([rw/stdex/hash_map.h rw/stdex/hash_set.h]) 470 471dnl===-----------------------------------------------------------------------=== 472dnl=== 473dnl=== SECTION 7: Check for types and structures 474dnl=== 475dnl===-----------------------------------------------------------------------=== 476 477AC_TYPE_PID_T 478AC_TYPE_SIZE_T 479AC_TYPE_SIGNAL 480AC_STRUCT_TM 481AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found])) 482AC_CHECK_TYPES([uint64_t],, 483 AC_CHECK_TYPES([u_int64_t],, 484 AC_MSG_ERROR([Type uint64_t or u_int64_t required but not found]))) 485 486dnl===-----------------------------------------------------------------------=== 487dnl=== 488dnl=== SECTION 8: Check for specific functions needed 489dnl=== 490dnl===-----------------------------------------------------------------------=== 491 492AC_CHECK_FUNCS([backtrace getcwd getpagesize getrusage gettimeofday ]) 493AC_CHECK_FUNCS([isatty mkdtemp mkstemp mktemp ]) 494AC_CHECK_FUNCS([realpath sbrk setrlimit strdup strerror strerror_r ]) 495AC_CHECK_FUNCS([strtoll strtoq sysconf]) 496AC_C_PRINTF_A 497AC_FUNC_ALLOCA 498AC_FUNC_RAND48 499 500dnl Check for variations in the Standard C++ library and STL. These macros are 501dnl provided by LLVM in the autoconf/m4 directory. 502AC_CXX_HAVE_HASH_MAP 503AC_CXX_HAVE_HASH_SET 504AC_CXX_HAVE_STD_ITERATOR 505AC_CXX_HAVE_BI_ITERATOR 506AC_CXX_HAVE_FWD_ITERATOR 507AC_FUNC_ISNAN 508AC_FUNC_ISINF 509 510dnl Check for mmap and mprotect support. We need both to do the JIT and for 511dnl bytecode loading, etc. We also need to know if /dev/zero is required to 512dnl be opened for allocating RWX memory. 513AC_FUNC_MMAP 514AC_FUNC_MMAP_FILE 515AC_NEED_DEV_ZERO_FOR_MMAP 516AC_CHECK_FUNC(mprotect,, 517 AC_MSG_ERROR([Function mprotect() required but not found])) 518 519if test "$ac_cv_func_mmap_fixed_mapped" = "no" 520then 521 AC_MSG_WARN([mmap() of a fixed address required but not supported]) 522fi 523if test "$ac_cv_func_mmap_file" = "no" 524then 525 AC_MSG_WARN([mmap() of files required but not found]) 526fi 527 528dnl===-----------------------------------------------------------------------=== 529dnl=== 530dnl=== SECTION 9: Additional checks, variables, etc. 531dnl=== 532dnl===-----------------------------------------------------------------------=== 533 534dnl See if the llvm-gcc executable can compile to LLVM assembly 535AC_CACHE_CHECK([whether llvm-gcc is sane],[llvm_cv_llvmgcc_sanity], 536[llvm_cv_llvmgcc_sanity="no" 537if test -x "$LLVMGCC" ; then 538 cp /dev/null conftest.c 539 "$LLVMGCC" -S -o - conftest.c | grep implementation > /dev/null 2>&1 540 if test $? -eq 0 ; then 541 llvm_cv_llvmgcc_sanity="yes" 542 fi 543 rm conftest.c 544fi]) 545 546dnl Since we have a sane llvm-gcc, identify it and its sub-tools 547if test "$llvm_cv_llvmgcc_sanity" = "yes" ; then 548 llvmcc1path=`"$LLVMGCC" --print-prog-name=cc1` 549 AC_SUBST(LLVMCC1,$llvmcc1path) 550 llvmcc1pluspath=`"$LLVMGCC" --print-prog-name=cc1plus` 551 AC_SUBST(LLVMCC1PLUS,$llvmcc1pluspath) 552 llvmgccdir=`echo "$llvmcc1path" | sed 's,/libexec/.*,,'` 553 AC_SUBST(LLVMGCCDIR,$llvmgccdir) 554fi 555 556dnl Propagate the shared library extension that the libltdl checks did to 557dnl the Makefiles so we can use it there too 558AC_SUBST(SHLIBEXT,$libltdl_cv_shlibext) 559 560# Translate the various configuration directories and other basic 561# information into substitutions that will end up in Makefile.config.in 562# that these configured values can be used by the makefiles 563eval LLVM_PREFIX="${prefix}"; 564eval LLVM_BINDIR="${prefix}/bin"; 565eval LLVM_LIBDIR="${prefix}/lib"; 566eval LLVM_DATADIR="${prefix}/share/llvm"; 567eval LLVM_DOCSDIR="${prefix}/docs/llvm"; 568eval LLVM_ETCDIR="${prefix}/etc/llvm"; 569eval LLVM_INCLUDEDIR="${prefix}/include"; 570eval LLVM_INFODIR="${prefix}/info"; 571eval LLVM_MANDIR="${prefix}/man"; 572LLVM_CONFIGTIME=`date` 573AC_SUBST(LLVM_PREFIX) 574AC_SUBST(LLVM_BINDIR) 575AC_SUBST(LLVM_LIBDIR) 576AC_SUBST(LLVM_DATADIR) 577AC_SUBST(LLVM_DOCSDIR) 578AC_SUBST(LLVM_ETCDIR) 579AC_SUBST(LLVM_INCLUDEDIR) 580AC_SUBST(LLVM_INFODIR) 581AC_SUBST(LLVM_MANDIR) 582AC_SUBST(LLVM_CONFIGTIME) 583 584# Place the various directores into the config.h file as #defines so that we 585# can know about the installation paths within LLVM. 586AC_DEFINE_UNQUOTED(LLVM_PREFIX,"$LLVM_PREFIX", 587 [Installation prefix directory]) 588AC_DEFINE_UNQUOTED(LLVM_BINDIR, "$LLVM_BINDIR", 589 [Installation directory for binary executables]) 590AC_DEFINE_UNQUOTED(LLVM_LIBDIR, "$LLVM_LIBDIR", 591 [Installation directory for libraries]) 592AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DATADIR", 593 [Installation directory for data files]) 594AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DOCSDIR", 595 [Installation directory for documentation]) 596AC_DEFINE_UNQUOTED(LLVM_ETCDIR, "$LLVM_ETCDIR", 597 [Installation directory for config files]) 598AC_DEFINE_UNQUOTED(LLVM_INCLUDEDIR, "$LLVM_INCLUDEDIR", 599 [Installation directory for include files]) 600AC_DEFINE_UNQUOTED(LLVM_INFODIR, "$LLVM_INFODIR", 601 [Installation directory for .info files]) 602AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR", 603 [Installation directory for man pages]) 604AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME", 605 [Time at which LLVM was configured]) 606 607dnl===-----------------------------------------------------------------------=== 608dnl=== 609dnl=== SECTION 10: Specify the output files and generate it 610dnl=== 611dnl===-----------------------------------------------------------------------=== 612 613dnl Configure header files 614AC_CONFIG_HEADERS(include/llvm/Config/config.h) 615 616AC_CONFIG_HEADERS([include/llvm/Support/DataTypes.h]) 617AC_CONFIG_HEADERS([include/llvm/ADT/hash_map]) 618AC_CONFIG_HEADERS([include/llvm/ADT/hash_set]) 619AC_CONFIG_HEADERS([include/llvm/Support/ThreadSupport.h]) 620AC_CONFIG_HEADERS([include/llvm/ADT/iterator]) 621 622dnl Configure the makefile's configuration data 623AC_CONFIG_FILES([Makefile.config]) 624 625dnl Configure doxygen's configuration file 626AC_CONFIG_FILES([docs/doxygen.cfg]) 627 628dnl Do special configuration of Makefiles 629AC_CONFIG_COMMANDS([setup],,[llvm_src="${srcdir}"]) 630AC_CONFIG_MAKEFILE(Makefile) 631AC_CONFIG_MAKEFILE(Makefile.common) 632AC_CONFIG_MAKEFILE(examples/Makefile) 633AC_CONFIG_MAKEFILE(lib/Makefile) 634AC_CONFIG_MAKEFILE(runtime/Makefile) 635AC_CONFIG_MAKEFILE(test/Makefile) 636AC_CONFIG_MAKEFILE(test/Makefile.tests) 637AC_CONFIG_MAKEFILE(tools/Makefile) 638AC_CONFIG_MAKEFILE(utils/Makefile) 639AC_CONFIG_MAKEFILE(projects/Makefile) 640 641dnl Finally, crank out the output 642AC_OUTPUT 643 644dnl Warn loudly if llvm-gcc was not obviously working 645if test "$llvm_cv_llvmgcc_sanity" = "no" ; then 646 AC_MSG_WARN([***** llvm-gcc/llvm-g++ was not found, or does not appear to be ]) 647 AC_MSG_WARN([***** working. Please make sure you have llvmgcc and llvmg++ in]) 648 AC_MSG_WARN([***** your path before configuring LLVM. The runtime libraries]) 649 AC_MSG_WARN([***** (llvm/runtime) will not be built but you should be able to]) 650 AC_MSG_WARN([***** build the llvm tools.]) 651fi 652