1 dnl === configure.ac --------------------------------------------------------===
2 dnl The LLVM Compiler Infrastructure
4 dnl This file is distributed under the University of Illinois Open Source
5 dnl License. See LICENSE.TXT for details.
7 dnl===-----------------------------------------------------------------------===
8 dnl This is the LLVM configuration script. It is processed by the autoconf
9 dnl program to produce a script named configure. This script contains the
10 dnl configuration checks that LLVM needs in order to support multiple platforms.
11 dnl This file is composed of 10 sections per the recommended organization of
12 dnl autoconf input defined in the autoconf documentation. As this file evolves,
13 dnl please keep the various types of checks within their sections. The sections
16 dnl SECTION 1: Initialization & Setup
17 dnl SECTION 2: Architecture, target, and host checks
18 dnl SECTION 3: Command line arguments for the configure script.
19 dnl SECTION 4: Check for programs we need and that they are the right version
20 dnl SECTION 5: Check for libraries
21 dnl SECTION 6: Check for header files
22 dnl SECTION 7: Check for types and structures
23 dnl SECTION 8: Check for specific functions needed
24 dnl SECTION 9: Additional checks, variables, etc.
25 dnl SECTION 10: Specify the output files and generate it
27 dnl===-----------------------------------------------------------------------===
29 dnl=== SECTION 1: Initialization & Setup
31 dnl===-----------------------------------------------------------------------===
32 dnl Initialize autoconf and define the package name, version number and
33 dnl address for reporting bugs.
34 AC_INIT([LLVM],[3.3svn],[http://llvm.org/bugs/])
35 AC_DEFINE([LLVM_VERSION_MAJOR], [3], [Major version of the LLVM API])
36 AC_DEFINE([LLVM_VERSION_MINOR], [3], [Minor version of the LLVM API])
38 dnl Provide a copyright substitution and ensure the copyright notice is included
39 dnl in the output of --version option of the generated configure script.
40 AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2013 University of Illinois at Urbana-Champaign."])
41 AC_COPYRIGHT([Copyright (c) 2003-2013 University of Illinois at Urbana-Champaign.])
43 dnl Indicate that we require autoconf 2.60 or later.
46 dnl Verify that the source directory is valid. This makes sure that we are
47 dnl configuring LLVM and not some other package (it validates --srcdir argument)
48 AC_CONFIG_SRCDIR([lib/IR/Module.cpp])
50 dnl Place all of the extra autoconf files into the config subdirectory. Tell
51 dnl various tools where the m4 autoconf macros are.
52 AC_CONFIG_AUX_DIR([autoconf])
54 dnl Quit if the source directory has already been configured.
55 dnl NOTE: This relies upon undocumented autoconf behavior.
56 if test ${srcdir} != "." ; then
57 if test -f ${srcdir}/include/llvm/Config/config.h ; then
58 AC_MSG_ERROR([Already configured in ${srcdir}])
62 dnl We need to check for the compiler up here to avoid anything else
63 dnl starting with a different one.
64 AC_PROG_CC(clang llvm-gcc gcc)
65 AC_PROG_CXX(clang++ llvm-g++ g++)
68 dnl If CXX is Clang, check that it can find and parse C++ standard library
70 if test "$CXX" = "clang++" ; then
71 AC_MSG_CHECKING([whether clang works])
73 dnl Note that space between 'include' and '(' is required. There's a broken
74 dnl regex in aclocal that otherwise will think that we call m4's include
76 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <limits>
77 #if __has_include (<cxxabi.h>)
80 #if __has_include (<unwind.h>)
89 AC_MSG_ERROR([Selected compiler could not find or parse C++ standard library headers. Rerun with CC=c-compiler CXX=c++-compiler ./configure ...])
94 dnl Configure all of the projects present in our source tree. While we could
95 dnl just AC_CONFIG_SUBDIRS on the set of directories in projects that have a
96 dnl configure script, that usage of the AC_CONFIG_SUBDIRS macro is deprecated.
97 dnl Instead we match on the known projects.
100 dnl One tricky part of doing this is that some projects depend upon other
101 dnl projects. For example, several projects rely upon the LLVM test suite.
102 dnl We want to configure those projects first so that their object trees are
103 dnl created before running the configure scripts of projects that depend upon
107 dnl Several projects use llvm-gcc, so configure that first
108 if test -d ${srcdir}/projects/llvm-gcc ; then
109 AC_CONFIG_SUBDIRS([projects/llvm-gcc])
112 dnl Several projects use the LLVM test suite, so configure it next.
113 if test -d ${srcdir}/projects/test-suite ; then
114 AC_CONFIG_SUBDIRS([projects/test-suite])
117 dnl llvm-test is the old name of the test-suite, kept here for backwards
119 if test -d ${srcdir}/projects/llvm-test ; then
120 AC_CONFIG_SUBDIRS([projects/llvm-test])
123 dnl Some projects use poolalloc; configure that next
124 if test -d ${srcdir}/projects/poolalloc ; then
125 AC_CONFIG_SUBDIRS([projects/poolalloc])
128 if test -d ${srcdir}/projects/llvm-poolalloc ; then
129 AC_CONFIG_SUBDIRS([projects/llvm-poolalloc])
132 dnl Check for all other projects
133 for i in `ls ${srcdir}/projects`
135 if test -d ${srcdir}/projects/${i} ; then
137 sample) AC_CONFIG_SUBDIRS([projects/sample]) ;;
138 privbracket) AC_CONFIG_SUBDIRS([projects/privbracket]) ;;
139 llvm-stacker) AC_CONFIG_SUBDIRS([projects/llvm-stacker]) ;;
140 llvm-reopt) AC_CONFIG_SUBDIRS([projects/llvm-reopt]);;
141 llvm-java) AC_CONFIG_SUBDIRS([projects/llvm-java]) ;;
142 llvm-tv) AC_CONFIG_SUBDIRS([projects/llvm-tv]) ;;
143 safecode) AC_CONFIG_SUBDIRS([projects/safecode]) ;;
144 llvm-kernel) AC_CONFIG_SUBDIRS([projects/llvm-kernel]) ;;
152 AC_MSG_WARN([Unknown project (${i}) won't be configured automatically])
158 dnl Disable the build of polly, even if it is checked out into tools/polly.
160 AS_HELP_STRING([--enable-polly],
161 [Use polly if available (default is YES)]),,
164 yes) AC_SUBST(ENABLE_POLLY,[1]) ;;
165 no) AC_SUBST(ENABLE_POLLY,[0]) ;;
166 default) AC_SUBST(ENABLE_POLLY,[1]) ;;
167 *) AC_MSG_ERROR([Invalid setting for --enable-polly. Use "yes" or "no"]) ;;
171 dnl Check if polly is checked out into tools/polly and configure it if
173 if (test -d ${srcdir}/tools/polly) && (test $ENABLE_POLLY -eq 1) ; then
174 AC_SUBST(LLVM_HAS_POLLY,1)
175 AC_CONFIG_SUBDIRS([tools/polly])
178 dnl===-----------------------------------------------------------------------===
180 dnl=== SECTION 2: Architecture, target, and host checks
182 dnl===-----------------------------------------------------------------------===
184 dnl Check the target for which we're compiling and the host that will do the
185 dnl compilations. This will tell us which LLVM compiler will be used for
186 dnl compiling SSA into object code. This needs to be done early because
187 dnl following tests depend on it.
190 dnl Determine the platform type and cache its value. This helps us configure
191 dnl the System library to the correct build platform.
192 AC_CACHE_CHECK([type of operating system we're going to host on],
196 llvm_cv_link_all_option="-Wl,--whole-archive"
197 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
198 llvm_cv_os_type="AIX"
199 llvm_cv_platform_type="Unix" ;;
201 llvm_cv_link_all_option="-Wl,--whole-archive"
202 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
203 llvm_cv_os_type="IRIX"
204 llvm_cv_platform_type="Unix" ;;
206 llvm_cv_link_all_option="-Wl,--whole-archive"
207 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
208 llvm_cv_os_type="Cygwin"
209 llvm_cv_platform_type="Unix" ;;
211 llvm_cv_link_all_option="-Wl,-all_load"
212 llvm_cv_no_link_all_option="-Wl,-noall_load"
213 llvm_cv_os_type="Darwin"
214 llvm_cv_platform_type="Unix" ;;
216 llvm_cv_link_all_option="-Wl,-all_load"
217 llvm_cv_no_link_all_option="-Wl,-noall_load"
218 llvm_cv_os_type="Minix"
219 llvm_cv_platform_type="Unix" ;;
220 *-*-freebsd* | *-*-kfreebsd-gnu)
221 llvm_cv_link_all_option="-Wl,--whole-archive"
222 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
223 llvm_cv_os_type="FreeBSD"
224 llvm_cv_platform_type="Unix" ;;
226 llvm_cv_link_all_option="-Wl,--whole-archive"
227 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
228 llvm_cv_os_type="OpenBSD"
229 llvm_cv_platform_type="Unix" ;;
231 llvm_cv_link_all_option="-Wl,--whole-archive"
232 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
233 llvm_cv_os_type="NetBSD"
234 llvm_cv_platform_type="Unix" ;;
236 llvm_cv_link_all_option="-Wl,--whole-archive"
237 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
238 llvm_cv_os_type="DragonFly"
239 llvm_cv_platform_type="Unix" ;;
241 llvm_cv_link_all_option="-Wl,--whole-archive"
242 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
243 llvm_cv_os_type="HP-UX"
244 llvm_cv_platform_type="Unix" ;;
246 llvm_cv_link_all_option="-Wl,--whole-archive"
247 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
248 llvm_cv_os_type="Interix"
249 llvm_cv_platform_type="Unix" ;;
251 llvm_cv_link_all_option="-Wl,--whole-archive"
252 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
253 llvm_cv_os_type="Linux"
254 llvm_cv_platform_type="Unix" ;;
256 llvm_cv_link_all_option="-Wl,--whole-archive"
257 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
258 llvm_cv_os_type="GNU"
259 llvm_cv_platform_type="Unix" ;;
261 llvm_cv_link_all_option="-Wl,-z,allextract"
262 llvm_cv_no_link_all_option="-Wl,-z,defaultextract"
263 llvm_cv_os_type="SunOS"
264 llvm_cv_platform_type="Unix" ;;
266 llvm_cv_link_all_option="-Wl,-z,allextract"
267 llvm_cv_link_all_option="-Wl,-z,defaultextract"
268 llvm_cv_os_type="AuroraUX"
269 llvm_cv_platform_type="Unix" ;;
271 llvm_cv_link_all_option="-Wl,--whole-archive"
272 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
273 llvm_cv_os_type="Win32"
274 llvm_cv_platform_type="Win32" ;;
276 llvm_cv_link_all_option="-Wl,--whole-archive"
277 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
278 llvm_cv_os_type="MingW"
279 llvm_cv_platform_type="Win32" ;;
281 llvm_cv_link_all_option="-Wl,--whole-archive"
282 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
283 llvm_cv_os_type="Haiku"
284 llvm_cv_platform_type="Unix" ;;
286 llvm_cv_link_all_option="-Wl,--whole-archive"
287 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
288 llvm_cv_os_type="Freestanding"
289 llvm_cv_platform_type="Unix" ;;
291 llvm_cv_link_all_option="-Wl,--whole-archive"
292 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
293 llvm_cv_os_type="Freestanding"
294 llvm_cv_platform_type="Unix" ;;
296 llvm_cv_link_all_option=""
297 llvm_cv_no_link_all_option=""
298 llvm_cv_os_type="Unknown"
299 llvm_cv_platform_type="Unknown" ;;
302 AC_CACHE_CHECK([type of operating system we're going to target],
303 [llvm_cv_target_os_type],
306 llvm_cv_target_os_type="AIX" ;;
308 llvm_cv_target_os_type="IRIX" ;;
310 llvm_cv_target_os_type="Cygwin" ;;
312 llvm_cv_target_os_type="Darwin" ;;
314 llvm_cv_target_os_type="Minix" ;;
315 *-*-freebsd* | *-*-kfreebsd-gnu)
316 llvm_cv_target_os_type="FreeBSD" ;;
318 llvm_cv_target_os_type="OpenBSD" ;;
320 llvm_cv_target_os_type="NetBSD" ;;
322 llvm_cv_target_os_type="DragonFly" ;;
324 llvm_cv_target_os_type="HP-UX" ;;
326 llvm_cv_target_os_type="Interix" ;;
328 llvm_cv_target_os_type="Linux" ;;
330 llvm_cv_target_os_type="GNU" ;;
332 llvm_cv_target_os_type="SunOS" ;;
334 llvm_cv_target_os_type="AuroraUX" ;;
336 llvm_cv_target_os_type="Win32" ;;
338 llvm_cv_target_os_type="MingW" ;;
340 llvm_cv_target_os_type="Haiku" ;;
342 llvm_cv_target_os_type="RTEMS" ;;
344 llvm_cv_target_os_type="NativeClient" ;;
346 llvm_cv_target_os_type="Freestanding" ;;
348 llvm_cv_target_os_type="Unknown" ;;
351 dnl Make sure we aren't attempting to configure for an unknown system
352 if test "$llvm_cv_os_type" = "Unknown" ; then
353 AC_MSG_ERROR([Operating system is unknown, configure can't continue])
356 dnl Set the "OS" Makefile variable based on the platform type so the
357 dnl makefile can configure itself to specific build hosts
358 AC_SUBST(OS,$llvm_cv_os_type)
359 AC_SUBST(HOST_OS,$llvm_cv_os_type)
360 AC_SUBST(TARGET_OS,$llvm_cv_target_os_type)
362 dnl Set the LINKALL and NOLINKALL Makefile variables based on the platform
363 AC_SUBST(LINKALL,$llvm_cv_link_all_option)
364 AC_SUBST(NOLINKALL,$llvm_cv_no_link_all_option)
366 dnl Set the "LLVM_ON_*" variables based on llvm_cv_platform_type
367 dnl This is used by lib/Support to determine the basic kind of implementation
369 case $llvm_cv_platform_type in
371 AC_DEFINE([LLVM_ON_UNIX],[1],[Define if this is Unixish platform])
372 AC_SUBST(LLVM_ON_UNIX,[1])
373 AC_SUBST(LLVM_ON_WIN32,[0])
376 AC_DEFINE([LLVM_ON_WIN32],[1],[Define if this is Win32ish platform])
377 AC_SUBST(LLVM_ON_UNIX,[0])
378 AC_SUBST(LLVM_ON_WIN32,[1])
382 dnl Determine what our target architecture is and configure accordingly.
383 dnl This will allow Makefiles to make a distinction between the hardware and
385 AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch],
387 i?86-*) llvm_cv_target_arch="x86" ;;
388 amd64-* | x86_64-*) llvm_cv_target_arch="x86_64" ;;
389 sparc*-*) llvm_cv_target_arch="Sparc" ;;
390 powerpc*-*) llvm_cv_target_arch="PowerPC" ;;
391 arm*-*) llvm_cv_target_arch="ARM" ;;
392 aarch64*-*) llvm_cv_target_arch="AArch64" ;;
393 mips-* | mips64-*) llvm_cv_target_arch="Mips" ;;
394 mipsel-* | mips64el-*) llvm_cv_target_arch="Mips" ;;
395 xcore-*) llvm_cv_target_arch="XCore" ;;
396 msp430-*) llvm_cv_target_arch="MSP430" ;;
397 hexagon-*) llvm_cv_target_arch="Hexagon" ;;
398 mblaze-*) llvm_cv_target_arch="MBlaze" ;;
399 nvptx-*) llvm_cv_target_arch="NVPTX" ;;
400 *) llvm_cv_target_arch="Unknown" ;;
403 if test "$llvm_cv_target_arch" = "Unknown" ; then
404 AC_MSG_WARN([Configuring LLVM for an unknown target archicture])
407 dnl Determine the LLVM native architecture for the target
408 case "$llvm_cv_target_arch" in
409 x86) LLVM_NATIVE_ARCH="X86" ;;
410 x86_64) LLVM_NATIVE_ARCH="X86" ;;
411 *) LLVM_NATIVE_ARCH="$llvm_cv_target_arch" ;;
414 dnl Define a substitution, ARCH, for the target architecture
415 AC_SUBST(ARCH,$llvm_cv_target_arch)
417 dnl Determine what our host architecture.
418 dnl This will allow MCJIT regress tests runs only for supported
421 i?86-*) host_arch="x86" ;;
422 amd64-* | x86_64-*) host_arch="x86_64" ;;
423 sparc*-*) host_arch="Sparc" ;;
424 powerpc*-*) host_arch="PowerPC" ;;
425 arm*-*) host_arch="ARM" ;;
426 aarch64*-*) host_arch="AArch64" ;;
427 mips-* | mips64-*) host_arch="Mips" ;;
428 mipsel-* | mips64el-*) host_arch="Mips" ;;
429 xcore-*) host_arch="XCore" ;;
430 msp430-*) host_arch="MSP430" ;;
431 hexagon-*) host_arch="Hexagon" ;;
432 mblaze-*) host_arch="MBlaze" ;;
433 *) host_arch="Unknown" ;;
436 if test "$host_arch" = "Unknown" ; then
437 AC_MSG_WARN([Configuring LLVM for an unknown host archicture])
440 AC_SUBST(HOST_ARCH,$host_arch)
442 dnl Check for the endianness of the target
443 AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[big]),AC_SUBST([ENDIAN],[little]))
445 dnl Check for build platform executable suffix if we're cross-compiling
446 if test "$cross_compiling" = yes; then
447 AC_SUBST(LLVM_CROSS_COMPILING, [1])
449 ac_build_prefix=${build_alias}-
450 AC_CHECK_PROG(BUILD_CXX, ${ac_build_prefix}g++, ${ac_build_prefix}g++)
451 if test -z "$BUILD_CXX"; then
452 AC_CHECK_PROG(BUILD_CXX, g++, g++)
453 if test -z "$BUILD_CXX"; then
454 AC_CHECK_PROG(BUILD_CXX, c++, c++, , , /usr/ucb/c++)
458 AC_SUBST(LLVM_CROSS_COMPILING, [0])
461 dnl Check to see if there's a .svn or .git directory indicating that this
462 dnl build is being done from a checkout. This sets up several defaults for
463 dnl the command line switches. When we build with a checkout directory,
464 dnl we get a debug with assertions turned on. Without, we assume a source
465 dnl release and we get an optimized build without assertions.
466 dnl See --enable-optimized and --enable-assertions below
467 if test -d ".svn" -o -d "${srcdir}/.svn" -o -d ".git" -o -d "${srcdir}/.git"; then
470 AC_SUBST(CVSBUILD,[[CVSBUILD=1]])
476 dnl===-----------------------------------------------------------------------===
478 dnl=== SECTION 3: Command line arguments for the configure script.
480 dnl===-----------------------------------------------------------------------===
482 dnl --enable-libcpp : check whether or not to use libc++ on the command line
483 AC_ARG_ENABLE(libcpp,
484 AS_HELP_STRING([--enable-libcpp],
485 [Use libc++ if available (default is NO)]),,
488 yes) AC_SUBST(ENABLE_LIBCPP,[1]) ;;
489 no) AC_SUBST(ENABLE_LIBCPP,[0]) ;;
490 default) AC_SUBST(ENABLE_LIBCPP,[0]);;
491 *) AC_MSG_ERROR([Invalid setting for --enable-libcpp. Use "yes" or "no"]) ;;
494 dnl --enable-cxx11 : check whether or not to use -std=c++11 on the command line
496 AS_HELP_STRING([--enable-cxx11],
497 [Use c++11 if available (default is NO)]),,
500 yes) AC_SUBST(ENABLE_CXX11,[1]) ;;
501 no) AC_SUBST(ENABLE_CXX11,[0]) ;;
502 default) AC_SUBST(ENABLE_CXX11,[0]);;
503 *) AC_MSG_ERROR([Invalid setting for --enable-cxx11. Use "yes" or "no"]) ;;
506 dnl --enable-clang-arcmt: check whether to enable clang arcmt
508 AC_ARG_ENABLE(clang-arcmt,
509 AS_HELP_STRING([--enable-clang-arcmt],
510 [Enable building of clang ARCMT (default is YES)]),
511 clang_arcmt="$enableval",
514 yes) AC_SUBST(ENABLE_CLANG_ARCMT,[1]) ;;
515 no) AC_SUBST(ENABLE_CLANG_ARCMT,[0]) ;;
516 default) AC_SUBST(ENABLE_CLANG_ARCMT,[1]);;
517 *) AC_MSG_ERROR([Invalid setting for --enable-clang-arcmt. Use "yes" or "no"]) ;;
520 dnl --enable-clang-static-analyzer: check whether to enable static-analyzer
521 clang_static_analyzer="yes"
522 AC_ARG_ENABLE(clang-static-analyzer,
523 AS_HELP_STRING([--enable-clang-static-analyzer],
524 [Enable building of clang Static Analyzer (default is YES)]),
525 clang_static_analyzer="$enableval",
528 yes) AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[1]) ;;
529 no) AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[0]) ;;
530 default) AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[1]);;
531 *) AC_MSG_ERROR([Invalid setting for --enable-clang-static-analyzer. Use "yes" or "no"]) ;;
534 dnl --enable-clang-rewriter: check whether to enable clang rewriter
535 AC_ARG_ENABLE(clang-rewriter,
536 AS_HELP_STRING([--enable-clang-rewriter],
537 [Enable building of clang rewriter (default is YES)]),,
540 yes) AC_SUBST(ENABLE_CLANG_REWRITER,[1]) ;;
542 if test ${clang_arcmt} != "no" ; then
543 AC_MSG_ERROR([Cannot enable clang ARC Migration Tool while disabling rewriter.])
545 if test ${clang_static_analyzer} != "no" ; then
546 AC_MSG_ERROR([Cannot enable clang static analyzer while disabling rewriter.])
548 AC_SUBST(ENABLE_CLANG_REWRITER,[0])
550 default) AC_SUBST(ENABLE_CLANG_REWRITER,[1]);;
551 *) AC_MSG_ERROR([Invalid setting for --enable-clang-rewriter. Use "yes" or "no"]) ;;
554 dnl --enable-optimized : check whether they want to do an optimized build:
555 AC_ARG_ENABLE(optimized, AS_HELP_STRING(
556 --enable-optimized,[Compile with optimizations enabled (default is NO)]),,enableval=$optimize)
557 if test ${enableval} = "no" ; then
558 AC_SUBST(ENABLE_OPTIMIZED,[[]])
560 AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
563 dnl --enable-profiling : check whether they want to do a profile build:
564 AC_ARG_ENABLE(profiling, AS_HELP_STRING(
565 --enable-profiling,[Compile with profiling enabled (default is NO)]),,enableval="no")
566 if test ${enableval} = "no" ; then
567 AC_SUBST(ENABLE_PROFILING,[[]])
569 AC_SUBST(ENABLE_PROFILING,[[ENABLE_PROFILING=1]])
572 dnl --enable-assertions : check whether they want to turn on assertions or not:
573 AC_ARG_ENABLE(assertions,AS_HELP_STRING(
574 --enable-assertions,[Compile with assertion checks enabled (default is YES)]),, enableval="yes")
575 if test ${enableval} = "yes" ; then
576 AC_SUBST(DISABLE_ASSERTIONS,[[]])
578 AC_SUBST(DISABLE_ASSERTIONS,[[DISABLE_ASSERTIONS=1]])
581 dnl --enable-werror : check whether we want Werror on by default
582 AC_ARG_ENABLE(werror,AS_HELP_STRING(
583 --enable-werror,[Compile with -Werror enabled (default is NO)]),, enableval="no")
585 yes) AC_SUBST(ENABLE_WERROR,[1]) ;;
586 no) AC_SUBST(ENABLE_WERROR,[0]) ;;
587 default) AC_SUBST(ENABLE_WERROR,[0]);;
588 *) AC_MSG_ERROR([Invalid setting for --enable-werror. Use "yes" or "no"]) ;;
591 dnl --enable-expensive-checks : check whether they want to turn on expensive debug checks:
592 AC_ARG_ENABLE(expensive-checks,AS_HELP_STRING(
593 --enable-expensive-checks,[Compile with expensive debug checks enabled (default is NO)]),, enableval="no")
594 if test ${enableval} = "yes" ; then
595 AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[ENABLE_EXPENSIVE_CHECKS=1]])
596 AC_SUBST(EXPENSIVE_CHECKS,[[yes]])
598 AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[]])
599 AC_SUBST(EXPENSIVE_CHECKS,[[no]])
602 dnl --enable-debug-runtime : should runtime libraries have debug symbols?
603 AC_ARG_ENABLE(debug-runtime,
604 AS_HELP_STRING(--enable-debug-runtime,[Build runtime libs with debug symbols (default is NO)]),,enableval=no)
605 if test ${enableval} = "no" ; then
606 AC_SUBST(DEBUG_RUNTIME,[[]])
608 AC_SUBST(DEBUG_RUNTIME,[[DEBUG_RUNTIME=1]])
611 dnl --enable-debug-symbols : should even optimized compiler libraries
612 dnl have debug symbols?
613 AC_ARG_ENABLE(debug-symbols,
614 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)
615 if test ${enableval} = "no" ; then
616 AC_SUBST(DEBUG_SYMBOLS,[[]])
618 AC_SUBST(DEBUG_SYMBOLS,[[DEBUG_SYMBOLS=1]])
621 dnl --enable-keep-symbols : do not strip installed executables
622 AC_ARG_ENABLE(keep-symbols,
623 AS_HELP_STRING(--enable-keep-symbols,[Do not strip installed executables)]),,enableval=no)
624 if test ${enableval} = "no" ; then
625 AC_SUBST(KEEP_SYMBOLS,[[]])
627 AC_SUBST(KEEP_SYMBOLS,[[KEEP_SYMBOLS=1]])
630 dnl --enable-jit: check whether they want to enable the jit
632 AS_HELP_STRING(--enable-jit,
633 [Enable Just In Time Compiling (default is YES)]),,
635 if test ${enableval} = "no"
639 case "$llvm_cv_target_arch" in
640 x86) AC_SUBST(TARGET_HAS_JIT,1) ;;
641 Sparc) AC_SUBST(TARGET_HAS_JIT,0) ;;
642 PowerPC) AC_SUBST(TARGET_HAS_JIT,1) ;;
643 x86_64) AC_SUBST(TARGET_HAS_JIT,1) ;;
644 ARM) AC_SUBST(TARGET_HAS_JIT,1) ;;
645 AArch64) AC_SUBST(TARGET_HAS_JIT,0) ;;
646 Mips) AC_SUBST(TARGET_HAS_JIT,1) ;;
647 XCore) AC_SUBST(TARGET_HAS_JIT,0) ;;
648 MSP430) AC_SUBST(TARGET_HAS_JIT,0) ;;
649 Hexagon) AC_SUBST(TARGET_HAS_JIT,0) ;;
650 MBlaze) AC_SUBST(TARGET_HAS_JIT,0) ;;
651 NVPTX) AC_SUBST(TARGET_HAS_JIT,0) ;;
652 *) AC_SUBST(TARGET_HAS_JIT,0) ;;
656 dnl Allow enablement of building and installing docs
658 AS_HELP_STRING([--enable-docs],
659 [Build documents (default is YES)]),,
662 yes) AC_SUBST(ENABLE_DOCS,[1]) ;;
663 no) AC_SUBST(ENABLE_DOCS,[0]) ;;
664 default) AC_SUBST(ENABLE_DOCS,[1]) ;;
665 *) AC_MSG_ERROR([Invalid setting for --enable-docs. Use "yes" or "no"]) ;;
668 dnl Allow enablement of doxygen generated documentation
669 AC_ARG_ENABLE(doxygen,
670 AS_HELP_STRING([--enable-doxygen],
671 [Build doxygen documentation (default is NO)]),,
674 yes) AC_SUBST(ENABLE_DOXYGEN,[1]) ;;
675 no) AC_SUBST(ENABLE_DOXYGEN,[0]) ;;
676 default) AC_SUBST(ENABLE_DOXYGEN,[0]) ;;
677 *) AC_MSG_ERROR([Invalid setting for --enable-doxygen. Use "yes" or "no"]) ;;
680 dnl Allow disablement of threads
681 AC_ARG_ENABLE(threads,
682 AS_HELP_STRING([--enable-threads],
683 [Use threads if available (default is YES)]),,
686 yes) AC_SUBST(LLVM_ENABLE_THREADS,[1]) ;;
687 no) AC_SUBST(LLVM_ENABLE_THREADS,[0]) ;;
688 default) AC_SUBST(LLVM_ENABLE_THREADS,[1]) ;;
689 *) AC_MSG_ERROR([Invalid setting for --enable-threads. Use "yes" or "no"]) ;;
691 AC_DEFINE_UNQUOTED([LLVM_ENABLE_THREADS],$LLVM_ENABLE_THREADS,
692 [Define if threads enabled])
694 dnl Allow disablement of pthread.h
695 AC_ARG_ENABLE(pthreads,
696 AS_HELP_STRING([--enable-pthreads],
697 [Use pthreads if available (default is YES)]),,
700 yes) AC_SUBST(ENABLE_PTHREADS,[1]) ;;
701 no) AC_SUBST(ENABLE_PTHREADS,[0]) ;;
702 default) AC_SUBST(ENABLE_PTHREADS,[1]) ;;
703 *) AC_MSG_ERROR([Invalid setting for --enable-pthreads. Use "yes" or "no"]) ;;
706 dnl Allow building without position independent code
708 AS_HELP_STRING([--enable-pic],
709 [Build LLVM with Position Independent Code (default is YES)]),,
712 yes) AC_SUBST(ENABLE_PIC,[1]) ;;
713 no) AC_SUBST(ENABLE_PIC,[0]) ;;
714 default) AC_SUBST(ENABLE_PIC,[1]) ;;
715 *) AC_MSG_ERROR([Invalid setting for --enable-pic. Use "yes" or "no"]) ;;
717 AC_DEFINE_UNQUOTED([ENABLE_PIC],$ENABLE_PIC,
718 [Define if position independent code is enabled])
720 dnl Allow building a shared library and linking tools against it.
721 AC_ARG_ENABLE(shared,
722 AS_HELP_STRING([--enable-shared],
723 [Build a shared library and link tools against it (default is NO)]),,
726 yes) AC_SUBST(ENABLE_SHARED,[1]) ;;
727 no) AC_SUBST(ENABLE_SHARED,[0]) ;;
728 default) AC_SUBST(ENABLE_SHARED,[0]) ;;
729 *) AC_MSG_ERROR([Invalid setting for --enable-shared. Use "yes" or "no"]) ;;
732 dnl Allow libstdc++ is embedded in LLVM.dll.
733 AC_ARG_ENABLE(embed-stdcxx,
734 AS_HELP_STRING([--enable-embed-stdcxx],
735 [Build a shared library with embedded libstdc++ for Win32 DLL (default is NO)]),,
738 yes) AC_SUBST(ENABLE_EMBED_STDCXX,[1]) ;;
739 no) AC_SUBST(ENABLE_EMBED_STDCXX,[0]) ;;
740 default) AC_SUBST(ENABLE_EMBED_STDCXX,[0]) ;;
741 *) AC_MSG_ERROR([Invalid setting for --enable-embed-stdcxx. Use "yes" or "no"]) ;;
744 dnl Enable embedding timestamp information into build.
745 AC_ARG_ENABLE(timestamps,
746 AS_HELP_STRING([--enable-timestamps],
747 [Enable embedding timestamp information in build (default is YES)]),,
750 yes) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;;
751 no) AC_SUBST(ENABLE_TIMESTAMPS,[0]) ;;
752 default) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;;
753 *) AC_MSG_ERROR([Invalid setting for --enable-timestamps. Use "yes" or "no"]) ;;
755 AC_DEFINE_UNQUOTED([ENABLE_TIMESTAMPS],$ENABLE_TIMESTAMPS,
756 [Define if timestamp information (e.g., __DATE__) is allowed])
758 dnl Enable embedding timestamp information into build.
760 AC_ARG_ENABLE(backtraces,
761 AS_HELP_STRING([--enable-backtraces],
762 [Enable embedding backtraces on crash (default is YES)]),,
765 yes) AC_SUBST(ENABLE_BACKTRACES,[1]) ;;
766 no) AC_SUBST(ENABLE_BACKTRACES,[0]) ;;
767 default) AC_SUBST(ENABLE_BACKTRACES,[1]) ;;
768 *) AC_MSG_ERROR([Invalid setting for --enable-backtraces. Use "yes" or "no"]) ;;
770 AC_DEFINE_UNQUOTED([ENABLE_BACKTRACES],$ENABLE_BACKTRACES,
771 [Define if you want backtraces on crash])
773 dnl Allow specific targets to be specified for building (or not)
775 AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-targets],
776 [Build specific host targets: all or target1,target2,... Valid targets are:
777 host, x86, x86_64, sparc, powerpc, arm, aarch64, mips, hexagon,
778 xcore, msp430, nvptx, and cpp (default=all)]),,
780 if test "$enableval" = host-only ; then
784 all) TARGETS_TO_BUILD="X86 Sparc PowerPC ARM Mips XCore MSP430 CppBackend MBlaze NVPTX Hexagon" ;;
785 *)for a_target in `echo $enableval|sed -e 's/,/ /g' ` ; do
787 x86) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
788 x86_64) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
789 sparc) TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;;
790 powerpc) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
791 aarch64) TARGETS_TO_BUILD="AArch64 $TARGETS_TO_BUILD" ;;
792 arm) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
793 mips) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
794 mipsel) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
795 mips64) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
796 mips64el) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
797 xcore) TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
798 msp430) TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
799 cpp) TARGETS_TO_BUILD="CppBackend $TARGETS_TO_BUILD" ;;
800 hexagon) TARGETS_TO_BUILD="Hexagon $TARGETS_TO_BUILD" ;;
801 mblaze) TARGETS_TO_BUILD="MBlaze $TARGETS_TO_BUILD" ;;
802 nvptx) TARGETS_TO_BUILD="NVPTX $TARGETS_TO_BUILD" ;;
803 host) case "$llvm_cv_target_arch" in
804 x86) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
805 x86_64) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
806 Sparc) TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;;
807 PowerPC) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
808 ARM) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
809 Mips) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
810 MBlaze) TARGETS_TO_BUILD="MBlaze $TARGETS_TO_BUILD" ;;
811 XCore) TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
812 MSP430) TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
813 Hexagon) TARGETS_TO_BUILD="Hexagon $TARGETS_TO_BUILD" ;;
814 NVPTX) TARGETS_TO_BUILD="NVPTX $TARGETS_TO_BUILD" ;;
815 *) AC_MSG_ERROR([Can not set target to build]) ;;
817 *) AC_MSG_ERROR([Unrecognized target $a_target]) ;;
823 AC_ARG_ENABLE([experimental-targets],AS_HELP_STRING([--enable-experimental-targets],
824 [Build experimental host targets: disable or target1,target2,...
825 (default=disable)]),,
828 if test ${enableval} != "disable"
830 TARGETS_TO_BUILD="$enableval $TARGETS_TO_BUILD"
833 AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD)
835 dnl Determine whether we are building LLVM support for the native architecture.
836 dnl If so, define LLVM_NATIVE_ARCH to that LLVM target.
837 for a_target in $TARGETS_TO_BUILD; do
838 if test "$a_target" = "$LLVM_NATIVE_ARCH"; then
839 AC_DEFINE_UNQUOTED(LLVM_NATIVE_ARCH, $LLVM_NATIVE_ARCH,
840 [LLVM architecture name for the native architecture, if available])
841 LLVM_NATIVE_TARGET="LLVMInitialize${LLVM_NATIVE_ARCH}Target"
842 LLVM_NATIVE_TARGETINFO="LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo"
843 LLVM_NATIVE_TARGETMC="LLVMInitialize${LLVM_NATIVE_ARCH}TargetMC"
844 LLVM_NATIVE_ASMPRINTER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter"
845 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then
846 LLVM_NATIVE_ASMPARSER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmParser"
848 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/Makefile ; then
849 LLVM_NATIVE_DISASSEMBLER="LLVMInitialize${LLVM_NATIVE_ARCH}Disassembler"
851 AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGET, $LLVM_NATIVE_TARGET,
852 [LLVM name for the native Target init function, if available])
853 AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETINFO, $LLVM_NATIVE_TARGETINFO,
854 [LLVM name for the native TargetInfo init function, if available])
855 AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETMC, $LLVM_NATIVE_TARGETMC,
856 [LLVM name for the native target MC init function, if available])
857 AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPRINTER, $LLVM_NATIVE_ASMPRINTER,
858 [LLVM name for the native AsmPrinter init function, if available])
859 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then
860 AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPARSER, $LLVM_NATIVE_ASMPARSER,
861 [LLVM name for the native AsmParser init function, if available])
863 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/Makefile ; then
864 AC_DEFINE_UNQUOTED(LLVM_NATIVE_DISASSEMBLER, $LLVM_NATIVE_DISASSEMBLER,
865 [LLVM name for the native Disassembler init function, if available])
870 dnl Build the LLVM_TARGET and LLVM_... macros for Targets.def and the individual
871 dnl target feature def files.
873 LLVM_ENUM_ASM_PRINTERS=""
874 LLVM_ENUM_ASM_PARSERS=""
875 LLVM_ENUM_DISASSEMBLERS=""
876 for target_to_build in $TARGETS_TO_BUILD; do
877 LLVM_ENUM_TARGETS="LLVM_TARGET($target_to_build) $LLVM_ENUM_TARGETS"
878 if test -f ${srcdir}/lib/Target/${target_to_build}/*AsmPrinter.cpp ; then
879 LLVM_ENUM_ASM_PRINTERS="LLVM_ASM_PRINTER($target_to_build) $LLVM_ENUM_ASM_PRINTERS";
881 if test -f ${srcdir}/lib/Target/${target_to_build}/AsmParser/Makefile ; then
882 LLVM_ENUM_ASM_PARSERS="LLVM_ASM_PARSER($target_to_build) $LLVM_ENUM_ASM_PARSERS";
884 if test -f ${srcdir}/lib/Target/${target_to_build}/Disassembler/Makefile ; then
885 LLVM_ENUM_DISASSEMBLERS="LLVM_DISASSEMBLER($target_to_build) $LLVM_ENUM_DISASSEMBLERS";
888 AC_SUBST(LLVM_ENUM_TARGETS)
889 AC_SUBST(LLVM_ENUM_ASM_PRINTERS)
890 AC_SUBST(LLVM_ENUM_ASM_PARSERS)
891 AC_SUBST(LLVM_ENUM_DISASSEMBLERS)
893 dnl Override the option to use for optimized builds.
894 AC_ARG_WITH(optimize-option,
895 AS_HELP_STRING([--with-optimize-option],
896 [Select the compiler options to use for optimized builds]),,
898 AC_MSG_CHECKING([optimization flags])
901 case "$llvm_cv_os_type" in
902 FreeBSD) optimize_option=-O2 ;;
903 MingW) optimize_option=-O2 ;;
904 *) optimize_option=-O3 ;;
906 *) optimize_option="$withval" ;;
908 AC_SUBST(OPTIMIZE_OPTION,$optimize_option)
909 AC_MSG_RESULT([$optimize_option])
911 dnl Specify extra build options
912 AC_ARG_WITH(extra-options,
913 AS_HELP_STRING([--with-extra-options],
914 [Specify additional options to compile LLVM with]),,
917 default) EXTRA_OPTIONS= ;;
918 *) EXTRA_OPTIONS=$withval ;;
920 AC_SUBST(EXTRA_OPTIONS,$EXTRA_OPTIONS)
922 dnl Specify extra linker build options
923 AC_ARG_WITH(extra-ld-options,
924 AS_HELP_STRING([--with-extra-ld-options],
925 [Specify additional options to link LLVM with]),,
928 default) EXTRA_LD_OPTIONS= ;;
929 *) EXTRA_LD_OPTIONS=$withval ;;
931 AC_SUBST(EXTRA_LD_OPTIONS,$EXTRA_LD_OPTIONS)
933 dnl Allow specific bindings to be specified for building (or not)
934 AC_ARG_ENABLE([bindings],AS_HELP_STRING([--enable-bindings],
935 [Build specific language bindings: all,auto,none,{binding-name} (default=auto)]),,
939 yes | default | auto) BINDINGS_TO_BUILD="auto" ;;
940 all ) BINDINGS_TO_BUILD="ocaml" ;;
941 none | no) BINDINGS_TO_BUILD="" ;;
942 *)for a_binding in `echo $enableval|sed -e 's/,/ /g' ` ; do
944 ocaml) BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD" ;;
945 *) AC_MSG_ERROR([Unrecognized binding $a_binding]) ;;
951 dnl Allow the ocaml libdir to be overridden. This could go in a configure
952 dnl script for bindings/ocaml/configure, except that its auto value depends on
953 dnl OCAMLC, which is found here to support tests.
954 AC_ARG_WITH([ocaml-libdir],
955 [AS_HELP_STRING([--with-ocaml-libdir],
956 [Specify install location for ocaml bindings (default is stdlib)])],
960 auto) with_ocaml_libdir="$withval" ;;
961 /* | [[A-Za-z]]:[[\\/]]*) with_ocaml_libdir="$withval" ;;
962 *) AC_MSG_ERROR([Invalid path for --with-ocaml-libdir. Provide full path]) ;;
965 AC_ARG_WITH(clang-srcdir,
966 AS_HELP_STRING([--with-clang-srcdir],
967 [Directory to the out-of-tree Clang source]),,
970 -) clang_src_root="" ;;
971 /* | [[A-Za-z]]:[[\\/]]*) clang_src_root="$withval" ;;
972 *) clang_src_root="$ac_pwd/$withval" ;;
974 AC_SUBST(CLANG_SRC_ROOT,[$clang_src_root])
976 AC_ARG_WITH(clang-resource-dir,
977 AS_HELP_STRING([--with-clang-resource-dir],
978 [Relative directory from the Clang binary for resource files]),,
980 AC_DEFINE_UNQUOTED(CLANG_RESOURCE_DIR,"$withval",
981 [Relative directory for resource files])
983 AC_ARG_WITH(c-include-dirs,
984 AS_HELP_STRING([--with-c-include-dirs],
985 [Colon separated list of directories clang will search for headers]),,
987 AC_DEFINE_UNQUOTED(C_INCLUDE_DIRS,"$withval",
988 [Directories clang will search for headers])
990 # Clang normally uses the system c++ headers and libraries. With this option,
991 # clang will use the ones provided by a gcc installation instead. This option should
992 # be passed the same value that was used with --prefix when configuring gcc.
993 AC_ARG_WITH(gcc-toolchain,
994 AS_HELP_STRING([--with-gcc-toolchain],
995 [Directory where gcc is installed.]),,
997 AC_DEFINE_UNQUOTED(GCC_INSTALL_PREFIX,"$withval",
998 [Directory where gcc is installed.])
1000 AC_ARG_WITH(default-sysroot,
1001 AS_HELP_STRING([--with-default-sysroot],
1002 [Add --sysroot=<path> to all compiler invocations.]),,
1004 AC_DEFINE_UNQUOTED(DEFAULT_SYSROOT,"$withval",
1005 [Default <path> to all compiler invocations for --sysroot=<path>.])
1007 dnl Allow linking of LLVM with GPLv3 binutils code.
1008 AC_ARG_WITH(binutils-include,
1009 AS_HELP_STRING([--with-binutils-include],
1010 [Specify path to binutils/include/ containing plugin-api.h file for gold plugin.]),,
1013 default) WITH_BINUTILS_INCDIR=default ;;
1014 /* | [[A-Za-z]]:[[\\/]]*) WITH_BINUTILS_INCDIR=$withval ;;
1015 *) AC_MSG_ERROR([Invalid path for --with-binutils-include. Provide full path]) ;;
1017 if test "x$WITH_BINUTILS_INCDIR" != xdefault ; then
1018 AC_SUBST(BINUTILS_INCDIR,$WITH_BINUTILS_INCDIR)
1019 if test ! -f "$WITH_BINUTILS_INCDIR/plugin-api.h"; then
1020 echo "$WITH_BINUTILS_INCDIR/plugin-api.h"
1021 AC_MSG_ERROR([Invalid path to directory containing plugin-api.h.]);
1025 dnl Specify the URL where bug reports should be submitted.
1026 AC_ARG_WITH(bug-report-url,
1027 AS_HELP_STRING([--with-bug-report-url],
1028 [Specify the URL where bug reports should be submitted (default=http://llvm.org/bugs/)]),,
1029 withval="http://llvm.org/bugs/")
1030 AC_DEFINE_UNQUOTED(BUG_REPORT_URL,"$withval",
1033 dnl --enable-libffi : check whether the user wants to turn off libffi:
1034 AC_ARG_ENABLE(libffi,AS_HELP_STRING(
1035 --enable-libffi,[Check for the presence of libffi (default is NO)]),
1036 [case "$enableval" in
1037 yes) llvm_cv_enable_libffi="yes" ;;
1038 no) llvm_cv_enable_libffi="no" ;;
1039 *) AC_MSG_ERROR([Invalid setting for --enable-libffi. Use "yes" or "no"]) ;;
1041 llvm_cv_enable_libffi=no)
1043 AC_ARG_WITH(internal-prefix,
1044 AS_HELP_STRING([--with-internal-prefix],
1045 [Installation directory for internal files]),,
1047 AC_SUBST(INTERNAL_PREFIX,[$withval])
1049 dnl===-----------------------------------------------------------------------===
1051 dnl=== SECTION 4: Check for programs we need and that they are the right version
1053 dnl===-----------------------------------------------------------------------===
1058 dnl Check for the tools that the makefiles require
1061 AC_PATH_PROG(CMP, [cmp], [cmp])
1062 AC_PATH_PROG(CP, [cp], [cp])
1063 AC_PATH_PROG(DATE, [date], [date])
1064 AC_PATH_PROG(FIND, [find], [find])
1065 AC_PATH_PROG(GREP, [grep], [grep])
1066 AC_PATH_PROG(MKDIR,[mkdir],[mkdir])
1067 AC_PATH_PROG(MV, [mv], [mv])
1069 AC_CHECK_TOOL(AR, ar, false)
1070 AC_PATH_PROG(RM, [rm], [rm])
1071 AC_PATH_PROG(SED, [sed], [sed])
1072 AC_PATH_PROG(TAR, [tar], [gtar])
1073 AC_PATH_PROG(BINPWD,[pwd], [pwd])
1075 dnl Looking for misc. graph plotting software
1076 AC_PATH_PROG(GRAPHVIZ, [Graphviz], [echo Graphviz])
1077 if test "$GRAPHVIZ" != "echo Graphviz" ; then
1078 AC_DEFINE([HAVE_GRAPHVIZ],[1],[Define if the Graphviz program is available])
1079 dnl If we're targeting for mingw we should emit windows paths, not msys
1080 if test "$llvm_cv_os_type" = "MingW" ; then
1081 GRAPHVIZ=`echo $GRAPHVIZ | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1083 AC_DEFINE_UNQUOTED([LLVM_PATH_GRAPHVIZ],"$GRAPHVIZ${EXEEXT}",
1084 [Define to path to Graphviz program if found or 'echo Graphviz' otherwise])
1086 AC_PATH_PROG(DOT, [dot], [echo dot])
1087 if test "$DOT" != "echo dot" ; then
1088 AC_DEFINE([HAVE_DOT],[1],[Define if the dot program is available])
1089 dnl If we're targeting for mingw we should emit windows paths, not msys
1090 if test "$llvm_cv_os_type" = "MingW" ; then
1091 DOT=`echo $DOT | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1093 AC_DEFINE_UNQUOTED([LLVM_PATH_DOT],"$DOT${EXEEXT}",
1094 [Define to path to dot program if found or 'echo dot' otherwise])
1096 AC_PATH_PROG(FDP, [fdp], [echo fdp])
1097 if test "$FDP" != "echo fdp" ; then
1098 AC_DEFINE([HAVE_FDP],[1],[Define if the neat program is available])
1099 dnl If we're targeting for mingw we should emit windows paths, not msys
1100 if test "$llvm_cv_os_type" = "MingW" ; then
1101 FDP=`echo $FDP | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1103 AC_DEFINE_UNQUOTED([LLVM_PATH_FDP],"$FDP${EXEEXT}",
1104 [Define to path to fdp program if found or 'echo fdp' otherwise])
1106 AC_PATH_PROG(NEATO, [neato], [echo neato])
1107 if test "$NEATO" != "echo neato" ; then
1108 AC_DEFINE([HAVE_NEATO],[1],[Define if the neat program is available])
1109 dnl If we're targeting for mingw we should emit windows paths, not msys
1110 if test "$llvm_cv_os_type" = "MingW" ; then
1111 NEATO=`echo $NEATO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1113 AC_DEFINE_UNQUOTED([LLVM_PATH_NEATO],"$NEATO${EXEEXT}",
1114 [Define to path to neato program if found or 'echo neato' otherwise])
1116 AC_PATH_PROG(TWOPI, [twopi], [echo twopi])
1117 if test "$TWOPI" != "echo twopi" ; then
1118 AC_DEFINE([HAVE_TWOPI],[1],[Define if the neat program is available])
1119 dnl If we're targeting for mingw we should emit windows paths, not msys
1120 if test "$llvm_cv_os_type" = "MingW" ; then
1121 TWOPI=`echo $TWOPI | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1123 AC_DEFINE_UNQUOTED([LLVM_PATH_TWOPI],"$TWOPI${EXEEXT}",
1124 [Define to path to twopi program if found or 'echo twopi' otherwise])
1126 AC_PATH_PROG(CIRCO, [circo], [echo circo])
1127 if test "$CIRCO" != "echo circo" ; then
1128 AC_DEFINE([HAVE_CIRCO],[1],[Define if the neat program is available])
1129 dnl If we're targeting for mingw we should emit windows paths, not msys
1130 if test "$llvm_cv_os_type" = "MingW" ; then
1131 CIRCO=`echo $CIRCO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1133 AC_DEFINE_UNQUOTED([LLVM_PATH_CIRCO],"$CIRCO${EXEEXT}",
1134 [Define to path to circo program if found or 'echo circo' otherwise])
1136 AC_PATH_PROGS(GV, [gv gsview32], [echo gv])
1137 if test "$GV" != "echo gv" ; then
1138 AC_DEFINE([HAVE_GV],[1],[Define if the gv program is available])
1139 dnl If we're targeting for mingw we should emit windows paths, not msys
1140 if test "$llvm_cv_os_type" = "MingW" ; then
1141 GV=`echo $GV | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1143 AC_DEFINE_UNQUOTED([LLVM_PATH_GV],"$GV${EXEEXT}",
1144 [Define to path to gv program if found or 'echo gv' otherwise])
1146 AC_PATH_PROG(DOTTY, [dotty], [echo dotty])
1147 if test "$DOTTY" != "echo dotty" ; then
1148 AC_DEFINE([HAVE_DOTTY],[1],[Define if the dotty program is available])
1149 dnl If we're targeting for mingw we should emit windows paths, not msys
1150 if test "$llvm_cv_os_type" = "MingW" ; then
1151 DOTTY=`echo $DOTTY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1153 AC_DEFINE_UNQUOTED([LLVM_PATH_DOTTY],"$DOTTY${EXEEXT}",
1154 [Define to path to dotty program if found or 'echo dotty' otherwise])
1156 AC_PATH_PROG(XDOT_PY, [xdot.py], [echo xdot.py])
1157 if test "$XDOT_PY" != "echo xdot.py" ; then
1158 AC_DEFINE([HAVE_XDOT_PY],[1],[Define if the xdot.py program is available])
1159 dnl If we're targeting for mingw we should emit windows paths, not msys
1160 if test "$llvm_cv_os_type" = "MingW" ; then
1161 XDOT_PY=`echo $XDOT_PY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1163 AC_DEFINE_UNQUOTED([LLVM_PATH_XDOT_PY],"$XDOT_PY${EXEEXT}",
1164 [Define to path to xdot.py program if found or 'echo xdot.py' otherwise])
1167 dnl Find the install program
1169 dnl Prepend src dir to install path dir if it's a relative path
1170 dnl This is a hack for installs that take place in something other
1171 dnl than the top level.
1173 [[\\/$]]* | ?:[[\\/]]* ) ;;
1174 *) INSTALL="\\\$(TOPSRCDIR)/$INSTALL" ;;
1177 dnl Checks for documentation and testing tools that we can do without. If these
1178 dnl are not found then they are set to "true" which always succeeds but does
1179 dnl nothing. This just lets the build output show that we could have done
1180 dnl something if the tool was available.
1181 AC_PATH_PROG(BZIP2, [bzip2])
1182 AC_PATH_PROG(CAT, [cat])
1183 AC_PATH_PROG(DOXYGEN, [doxygen])
1184 AC_PATH_PROG(GROFF, [groff])
1185 AC_PATH_PROG(GZIPBIN, [gzip])
1186 AC_PATH_PROG(PDFROFF, [pdfroff])
1187 AC_PATH_PROG(ZIP, [zip])
1188 AC_PATH_PROGS(OCAMLC, [ocamlc])
1189 AC_PATH_PROGS(OCAMLOPT, [ocamlopt])
1190 AC_PATH_PROGS(OCAMLDEP, [ocamldep])
1191 AC_PATH_PROGS(OCAMLDOC, [ocamldoc])
1192 AC_PATH_PROGS(GAS, [gas as])
1194 dnl Get the version of the linker in use.
1197 dnl Determine whether the linker supports the -R option.
1200 dnl Determine whether the linker supports the -export-dynamic option.
1201 AC_LINK_EXPORT_DYNAMIC
1203 dnl Determine whether the linker supports the --version-script option.
1204 AC_LINK_VERSION_SCRIPT
1206 dnl Check for libtool and the library that has dlopen function (which must come
1207 dnl before the AC_PROG_LIBTOOL check in order to enable dlopening libraries with
1212 AC_MSG_CHECKING([tool compatibility])
1214 dnl Ensure that compilation tools are GCC or a GNU compatible compiler such as
1215 dnl ICC; we use GCC specific options in the makefiles so the compiler needs
1216 dnl to support those options.
1217 dnl "icc" emits gcc signatures
1218 dnl "icc -no-gcc" emits no gcc signature BUT is still compatible
1230 if test "$GCC" != "yes" && test "$ICC" != "yes"
1232 AC_MSG_ERROR([gcc|icc required but not found])
1235 dnl Ensure that compilation tools are compatible with GCC extensions
1236 if test "$GXX" != "yes" && test "$IXX" != "yes"
1238 AC_MSG_ERROR([g++|clang++|icc required but not found])
1241 dnl Verify that GCC is version 3.0 or higher
1242 if test "$GCC" = "yes"
1247 #if !defined(__GNUC__) || __GNUC__ < 3
1248 #error Unsupported GCC version
1252 [], [AC_MSG_ERROR([gcc 3.x required, but you have a lower version])])
1255 dnl Check for GNU Make. We use its extensions, so don't build without it
1256 if test -z "$llvm_cv_gnu_make_command"
1258 AC_MSG_ERROR([GNU Make required but not found])
1261 dnl Tool compatibility is okay if we make it here.
1264 dnl Check optional compiler flags.
1265 AC_MSG_CHECKING([optional compiler flags])
1266 CXX_FLAG_CHECK(NO_VARIADIC_MACROS, [-Wno-variadic-macros])
1267 CXX_FLAG_CHECK(NO_MISSING_FIELD_INITIALIZERS, [-Wno-missing-field-initializers])
1268 CXX_FLAG_CHECK(NO_NESTED_ANON_TYPES, [-Wno-nested-anon-types])
1269 CXX_FLAG_CHECK(COVERED_SWITCH_DEFAULT, [-Wcovered-switch-default])
1270 dnl GCC's potential uninitialized use analysis is weak and presents lots of
1271 dnl false positives, so disable it.
1272 if test "$GXX" = "yes"
1274 CXX_FLAG_CHECK(NO_MAYBE_UNINITIALIZED, [-Wno-maybe-uninitialized])
1275 dnl gcc 4.7 introduced -Wmaybe-uninitialized to distinguish cases which are
1276 dnl known to be uninitialized from cases which might be uninitialized. We
1277 dnl still want to catch the first kind of errors.
1278 if test "$NO_MAYBE_UNINITIALIZED" != "-Wno-maybe-uninitialized"
1280 CXX_FLAG_CHECK(NO_UNINITIALIZED, [-Wno-uninitialized])
1282 dnl Some versions of gcc accept unsupported -W flags if there is
1283 dnl no warning but stop with an error when a warning is
1284 dnl encountered. If this gcc is earlier than 4.7, just use
1285 dnl -Wno-uninitialized.
1286 gxx_version=`$CXX -dumpversion`
1287 gxx_version_major=`echo $gxx_version | cut -d'.' -f1`
1288 gxx_version_minor=`echo $gxx_version | cut -d'.' -f2`
1289 gxx_version_patch=`echo $gxx_version | cut -d'.' -f3`
1291 if test "$gxx_version_major" -ge "4" \
1292 && test "$gxx_version_minor" -ge "7"; then
1293 dnl AC_SUBST doesn't work with empty strings.
1296 NO_MAYBE_UNINITIALIZED=
1297 CXX_FLAG_CHECK(NO_UNINITIALIZED, [-Wno-uninitialized])
1302 NO_MAYBE_UNINITIALIZED=
1304 AC_MSG_RESULT([$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS $NO_NESTED_ANON_TYPES $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED $NO_MAYBE_UNINITIALIZED])
1306 AC_ARG_WITH([python],
1307 [AS_HELP_STRING([--with-python], [path to python])],
1308 [PYTHON="$withval"])
1310 if test -n "$PYTHON" && test -x "$PYTHON" ; then
1311 AC_MSG_CHECKING([for python])
1312 AC_MSG_RESULT([user defined: $with_python])
1314 if test -n "$PYTHON" ; then
1315 AC_MSG_WARN([specified python ($PYTHON) is not usable, searching path])
1318 AC_PATH_PROG([PYTHON], [python python2 python26],
1319 [AC_MSG_RESULT([not found])
1320 AC_MSG_ERROR([could not find python 2.5 or higher])])
1323 AC_MSG_CHECKING([for python >= 2.5])
1324 ac_python_version=`$PYTHON -c 'import sys; print sys.version.split()[[0]]'`
1325 ac_python_version_major=`echo $ac_python_version | cut -d'.' -f1`
1326 ac_python_version_minor=`echo $ac_python_version | cut -d'.' -f2`
1327 ac_python_version_patch=`echo $ac_python_version | cut -d'.' -f3`
1328 if test "$ac_python_version_major" -eq "2" \
1329 && test "$ac_python_version_minor" -ge "5" ; then
1330 AC_MSG_RESULT([$PYTHON ($ac_python_version)])
1332 AC_MSG_RESULT([not found])
1333 AC_MSG_FAILURE([found python $ac_python_version ($PYTHON); required >= 2.5])
1336 dnl===-----------------------------------------------------------------------===
1338 dnl=== SECTION 5: Check for libraries
1340 dnl===-----------------------------------------------------------------------===
1343 if test "$llvm_cv_os_type" = "MingW" ; then
1344 AC_CHECK_LIB(imagehlp, main)
1345 AC_CHECK_LIB(psapi, main)
1348 dnl dlopen() is required for plugin support.
1349 AC_SEARCH_LIBS(dlopen,dl,AC_DEFINE([HAVE_DLOPEN],[1],
1350 [Define if dlopen() is available on this platform.]),
1351 AC_MSG_WARN([dlopen() not found - disabling plugin support]))
1353 dnl Search for the clock_gettime() function. Note that we rely on the POSIX
1354 dnl macros to detect whether clock_gettime is available, this just finds the
1355 dnl right libraries to link with.
1356 AC_SEARCH_LIBS(clock_gettime,rt)
1358 dnl libffi is optional; used to call external functions from the interpreter
1359 if test "$llvm_cv_enable_libffi" = "yes" ; then
1360 AC_SEARCH_LIBS(ffi_call,ffi,AC_DEFINE([HAVE_FFI_CALL],[1],
1361 [Define if libffi is available on this platform.]),
1362 AC_MSG_ERROR([libffi not found - configure without --enable-libffi to compile without it]))
1365 dnl mallinfo is optional; the code can compile (minus features) without it
1366 AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1],
1367 [Define if mallinfo() is available on this platform.]))
1369 dnl pthread locking functions are optional - but llvm will not be thread-safe
1371 if test "$LLVM_ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then
1372 AC_CHECK_LIB(pthread, pthread_mutex_init)
1373 AC_SEARCH_LIBS(pthread_mutex_lock,pthread,
1374 AC_DEFINE([HAVE_PTHREAD_MUTEX_LOCK],[1],
1375 [Have pthread_mutex_lock]))
1376 AC_SEARCH_LIBS(pthread_rwlock_init,pthread,
1377 AC_DEFINE([HAVE_PTHREAD_RWLOCK_INIT],[1],
1378 [Have pthread_rwlock_init]))
1379 AC_SEARCH_LIBS(pthread_getspecific,pthread,
1380 AC_DEFINE([HAVE_PTHREAD_GETSPECIFIC],[1],
1381 [Have pthread_getspecific]))
1384 dnl Allow extra x86-disassembler library
1386 AS_HELP_STRING([--with-udis86=<path>],
1387 [Use udis86 external x86 disassembler library]),
1389 AC_SUBST(USE_UDIS86, [1])
1392 *) LDFLAGS="$LDFLAGS -L${withval}" ;;
1394 AC_CHECK_LIB(udis86, ud_init, [], [
1395 echo "Error! You need to have libudis86 around."
1399 AC_SUBST(USE_UDIS86, [0]))
1400 AC_DEFINE_UNQUOTED([USE_UDIS86],$USE_UDIS86,
1401 [Define if use udis86 library])
1403 dnl Allow OProfile support for JIT output.
1404 AC_ARG_WITH(oprofile,
1405 AS_HELP_STRING([--with-oprofile=<prefix>],
1406 [Tell OProfile >= 0.9.4 how to symbolize JIT output]),
1408 AC_SUBST(USE_OPROFILE, [1])
1410 /usr|yes) llvm_cv_oppath=/usr/lib/oprofile ;;
1412 AC_SUBST(USE_OPROFILE, [0]) ;;
1413 *) llvm_cv_oppath="${withval}/lib/oprofile"
1414 CPPFLAGS="-I${withval}/include";;
1416 case $llvm_cv_os_type in
1418 if test -n "$llvm_cv_oppath" ; then
1419 LIBS="$LIBS -lopagent -L${llvm_cv_oppath} -Wl,-rpath,${llvm_cv_oppath}"
1420 dnl Work around http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=537744:
1421 dnl libbfd is not included properly in libopagent in some Debian
1422 dnl versions. If libbfd isn't found at all, we assume opagent works
1424 AC_SEARCH_LIBS(bfd_init, bfd, [], [])
1425 AC_SEARCH_LIBS(op_open_agent, opagent, [], [
1426 echo "Error! You need to have libopagent around."
1429 AC_CHECK_HEADER([opagent.h], [], [
1430 echo "Error! You need to have opagent.h around."
1435 AC_MSG_ERROR([OProfile support is available on Linux only.]) ;;
1439 AC_SUBST(USE_OPROFILE, [0])
1441 AC_DEFINE_UNQUOTED([LLVM_USE_OPROFILE],$USE_OPROFILE,
1442 [Define if we have the oprofile JIT-support library])
1444 dnl Enable support for Intel JIT Events API.
1445 AC_ARG_WITH(intel-jitevents,
1446 AS_HELP_STRING([--with-intel-jitevents Notify Intel JIT profiling API of generated code]),
1449 yes) AC_SUBST(USE_INTEL_JITEVENTS,[1]);;
1450 no) AC_SUBST(USE_INTEL_JITEVENTS,[0]);;
1451 *) AC_MSG_ERROR([Invalid setting for --with-intel-jitevents. Use "yes" or "no"]);;
1454 case $llvm_cv_os_type in
1455 Linux|Win32|Cygwin|MingW) ;;
1456 *) AC_MSG_ERROR([Intel JIT API support is available on Linux and Windows only.]);;
1459 case "$llvm_cv_target_arch" in
1461 *) AC_MSG_ERROR([Target architecture $llvm_cv_target_arch does not support Intel JIT Events API.]);;
1465 AC_SUBST(USE_INTEL_JITEVENTS, [0])
1467 AC_DEFINE_UNQUOTED([LLVM_USE_INTEL_JITEVENTS],$USE_INTEL_JITEVENTS,
1468 [Define if we have the Intel JIT API runtime support library])
1470 dnl Check for libxml2
1471 dnl Right now we're just checking for the existence, we could also check for a
1472 dnl particular version via --version on xml2-config
1473 AC_CHECK_PROGS(XML2CONFIG, xml2-config)
1475 AC_MSG_CHECKING(for libxml2 includes)
1476 if test "x$XML2CONFIG" = "x"; then
1477 AC_MSG_RESULT(xml2-config not found)
1479 LIBXML2_INC=`$XML2CONFIG --cflags`
1480 AC_MSG_RESULT($LIBXML2_INC)
1481 AC_CHECK_LIB(xml2, xmlReadFile,[AC_DEFINE([CLANG_HAVE_LIBXML],1,[Define if we have libxml2])
1482 LIBXML2_LIBS="-lxml2"])
1484 AC_SUBST(LIBXML2_LIBS)
1485 AC_SUBST(LIBXML2_INC)
1487 dnl===-----------------------------------------------------------------------===
1489 dnl=== SECTION 6: Check for header files
1491 dnl===-----------------------------------------------------------------------===
1493 dnl First, use autoconf provided macros for specific headers that we need
1494 dnl We don't check for ancient stuff or things that are guaranteed to be there
1495 dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers.
1496 dnl Generally we're looking for POSIX headers.
1498 AC_HEADER_MMAP_ANONYMOUS
1503 AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h inttypes.h limits.h link.h])
1504 AC_CHECK_HEADERS([malloc.h setjmp.h signal.h stdint.h termios.h unistd.h])
1505 AC_CHECK_HEADERS([utime.h windows.h])
1506 AC_CHECK_HEADERS([sys/mman.h sys/param.h sys/resource.h sys/time.h sys/uio.h])
1507 AC_CHECK_HEADERS([sys/types.h sys/ioctl.h malloc/malloc.h mach/mach.h])
1508 AC_CHECK_HEADERS([valgrind/valgrind.h])
1509 AC_CHECK_HEADERS([fenv.h])
1510 if test "$LLVM_ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then
1511 AC_CHECK_HEADERS(pthread.h,
1512 AC_SUBST(HAVE_PTHREAD, 1),
1513 AC_SUBST(HAVE_PTHREAD, 0))
1515 AC_SUBST(HAVE_PTHREAD, 0)
1518 dnl Try to find ffi.h.
1519 if test "$llvm_cv_enable_libffi" = "yes" ; then
1520 AC_CHECK_HEADERS([ffi.h ffi/ffi.h])
1523 dnl Try to find Darwin specific crash reporting libraries.
1524 AC_CHECK_HEADERS([CrashReporterClient.h])
1526 dnl Try to find Darwin specific crash reporting global.
1527 AC_MSG_CHECKING([__crashreporter_info__])
1531 extern const char *__crashreporter_info__;
1533 __crashreporter_info__ = "test";
1539 AC_MSG_RESULT([yes])
1540 AC_DEFINE([HAVE_CRASHREPORTER_INFO], [1], [can use __crashreporter_info__])
1544 AC_DEFINE([HAVE_CRASHREPORTER_INFO], [0], [can use __crashreporter_info__])
1547 dnl===-----------------------------------------------------------------------===
1549 dnl=== SECTION 7: Check for types and structures
1551 dnl===-----------------------------------------------------------------------===
1556 AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[Define as the return type of signal handlers (`int' or `void').])
1558 AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
1559 AC_CHECK_TYPES([uint64_t],,
1560 AC_CHECK_TYPES([u_int64_t],,
1561 AC_MSG_ERROR([Type uint64_t or u_int64_t required but not found])))
1563 dnl===-----------------------------------------------------------------------===
1565 dnl=== SECTION 8: Check for specific functions needed
1567 dnl===-----------------------------------------------------------------------===
1569 AC_CHECK_FUNCS([backtrace ceilf floorf roundf rintf nearbyintf getcwd ])
1570 AC_CHECK_FUNCS([powf fmodf strtof round ])
1571 AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday ])
1572 AC_CHECK_FUNCS([isatty mkdtemp mkstemp ])
1573 AC_CHECK_FUNCS([mktemp posix_spawn pread realpath sbrk setrlimit strdup ])
1574 AC_CHECK_FUNCS([strerror strerror_r setenv arc4random ])
1575 AC_CHECK_FUNCS([strtoll strtoq sysconf malloc_zone_statistics ])
1576 AC_CHECK_FUNCS([setjmp longjmp sigsetjmp siglongjmp writev])
1580 dnl Check the declaration "Secure API" on Windows environments.
1581 AC_CHECK_DECLS([strerror_s])
1583 dnl Check symbols in libgcc.a for JIT on Mingw.
1584 if test "$llvm_cv_os_type" = "MingW" ; then
1585 AC_CHECK_LIB(gcc,_alloca,AC_DEFINE([HAVE__ALLOCA],[1],[Have host's _alloca]))
1586 AC_CHECK_LIB(gcc,__alloca,AC_DEFINE([HAVE___ALLOCA],[1],[Have host's __alloca]))
1587 AC_CHECK_LIB(gcc,__chkstk,AC_DEFINE([HAVE___CHKSTK],[1],[Have host's __chkstk]))
1588 AC_CHECK_LIB(gcc,___chkstk,AC_DEFINE([HAVE____CHKSTK],[1],[Have host's ___chkstk]))
1590 AC_CHECK_LIB(gcc,__ashldi3,AC_DEFINE([HAVE___ASHLDI3],[1],[Have host's __ashldi3]))
1591 AC_CHECK_LIB(gcc,__ashrdi3,AC_DEFINE([HAVE___ASHRDI3],[1],[Have host's __ashrdi3]))
1592 AC_CHECK_LIB(gcc,__divdi3,AC_DEFINE([HAVE___DIVDI3],[1],[Have host's __divdi3]))
1593 AC_CHECK_LIB(gcc,__fixdfdi,AC_DEFINE([HAVE___FIXDFDI],[1],[Have host's __fixdfdi]))
1594 AC_CHECK_LIB(gcc,__fixsfdi,AC_DEFINE([HAVE___FIXSFDI],[1],[Have host's __fixsfdi]))
1595 AC_CHECK_LIB(gcc,__floatdidf,AC_DEFINE([HAVE___FLOATDIDF],[1],[Have host's __floatdidf]))
1596 AC_CHECK_LIB(gcc,__lshrdi3,AC_DEFINE([HAVE___LSHRDI3],[1],[Have host's __lshrdi3]))
1597 AC_CHECK_LIB(gcc,__moddi3,AC_DEFINE([HAVE___MODDI3],[1],[Have host's __moddi3]))
1598 AC_CHECK_LIB(gcc,__udivdi3,AC_DEFINE([HAVE___UDIVDI3],[1],[Have host's __udivdi3]))
1599 AC_CHECK_LIB(gcc,__umoddi3,AC_DEFINE([HAVE___UMODDI3],[1],[Have host's __umoddi3]))
1601 AC_CHECK_LIB(gcc,__main,AC_DEFINE([HAVE___MAIN],[1],[Have host's __main]))
1602 AC_CHECK_LIB(gcc,__cmpdi2,AC_DEFINE([HAVE___CMPDI2],[1],[Have host's __cmpdi2]))
1605 dnl Check Win32 API EnumerateLoadedModules.
1606 if test "$llvm_cv_os_type" = "MingW" ; then
1607 AC_MSG_CHECKING([whether EnumerateLoadedModules() accepts new decl])
1611 #include <windows.h>
1612 #include <imagehlp.h>
1613 extern void foo(PENUMLOADED_MODULES_CALLBACK);
1614 extern void foo(BOOL(CALLBACK*)(PCSTR,ULONG_PTR,ULONG,PVOID));
1618 AC_MSG_RESULT([yes])
1619 llvm_cv_win32_elmcb_pcstr="PCSTR"
1623 llvm_cv_win32_elmcb_pcstr="PSTR"
1625 AC_DEFINE_UNQUOTED([WIN32_ELMCB_PCSTR],$llvm_cv_win32_elmcb_pcstr,[Type of 1st arg on ELM Callback])
1628 dnl Check for variations in the Standard C++ library and STL. These macros are
1629 dnl provided by LLVM in the autoconf/m4 directory.
1633 dnl Check for mmap support.We also need to know if /dev/zero is required to
1634 dnl be opened for allocating RWX memory.
1635 dnl Make sure we aren't attempting to configure for an unknown system
1636 if test "$llvm_cv_platform_type" = "Unix" ; then
1639 AC_NEED_DEV_ZERO_FOR_MMAP
1641 if test "$ac_cv_func_mmap_fixed_mapped" = "no"
1643 AC_MSG_WARN([mmap() of a fixed address required but not supported])
1645 if test "$ac_cv_func_mmap_file" = "no"
1647 AC_MSG_WARN([mmap() of files required but not found])
1651 dnl atomic builtins are required for threading support.
1652 AC_MSG_CHECKING(for GCC atomic builtins)
1653 dnl Since we'll be using these atomic builtins in C++ files we should test
1654 dnl the C++ compiler.
1660 volatile unsigned long val = 1;
1661 __sync_synchronize();
1662 __sync_val_compare_and_swap(&val, 1, 0);
1663 __sync_add_and_fetch(&val, 1);
1664 __sync_sub_and_fetch(&val, 1);
1670 AC_MSG_RESULT([yes])
1671 AC_DEFINE([LLVM_HAS_ATOMICS], [1], [Has gcc/MSVC atomic intrinsics])
1675 AC_DEFINE([LLVM_HAS_ATOMICS], [0], [Has gcc/MSVC atomic intrinsics])
1676 AC_MSG_WARN([LLVM will be built thread-unsafe because atomic builtins are missing])
1680 dnl===-----------------------------------------------------------------------===
1682 dnl=== SECTION 9: Additional checks, variables, etc.
1684 dnl===-----------------------------------------------------------------------===
1686 dnl Handle 32-bit linux systems running a 64-bit kernel.
1687 dnl This has to come after section 4 because it invokes the compiler.
1688 if test "$llvm_cv_os_type" = "Linux" -a "$llvm_cv_target_arch" = "x86_64" ; then
1690 if test "$llvm_cv_linux_mixed" = "yes"; then
1691 llvm_cv_target_arch="x86"
1696 dnl Check whether __dso_handle is present
1697 AC_CHECK_FUNCS([__dso_handle])
1699 dnl Propagate the shared library extension that the libltdl checks did to
1700 dnl the Makefiles so we can use it there too
1701 AC_SUBST(SHLIBEXT,$libltdl_cv_shlibext)
1703 dnl Propagate the run-time library path variable that the libltdl
1704 dnl checks found to the Makefiles so we can use it there too
1705 AC_SUBST(SHLIBPATH_VAR,$libltdl_cv_shlibpath_var)
1707 dnl Translate the various configuration directories and other basic
1708 dnl information into substitutions that will end up in Makefile.config.in
1709 dnl that these configured values can be used by the makefiles
1710 if test "${prefix}" = "NONE" ; then
1713 eval LLVM_PREFIX="${prefix}";
1714 eval LLVM_BINDIR="${prefix}/bin";
1715 eval LLVM_LIBDIR="${prefix}/lib";
1716 eval LLVM_DATADIR="${prefix}/share/llvm";
1717 eval LLVM_DOCSDIR="${prefix}/share/doc/llvm";
1718 eval LLVM_ETCDIR="${prefix}/etc/llvm";
1719 eval LLVM_INCLUDEDIR="${prefix}/include";
1720 eval LLVM_INFODIR="${prefix}/info";
1721 eval LLVM_MANDIR="${prefix}/man";
1722 LLVM_CONFIGTIME=`date`
1723 AC_SUBST(LLVM_PREFIX)
1724 AC_SUBST(LLVM_BINDIR)
1725 AC_SUBST(LLVM_LIBDIR)
1726 AC_SUBST(LLVM_DATADIR)
1727 AC_SUBST(LLVM_DOCSDIR)
1728 AC_SUBST(LLVM_ETCDIR)
1729 AC_SUBST(LLVM_INCLUDEDIR)
1730 AC_SUBST(LLVM_INFODIR)
1731 AC_SUBST(LLVM_MANDIR)
1732 AC_SUBST(LLVM_CONFIGTIME)
1734 dnl Disable embedding timestamps in the build directory, with ENABLE_TIMESTAMPS.
1735 if test "${ENABLE_TIMESTAMPS}" = "0"; then
1736 LLVM_CONFIGTIME="(timestamp not enabled)"
1739 dnl Place the various directories into the config.h file as #defines so that we
1740 dnl can know about the installation paths within LLVM.
1741 AC_DEFINE_UNQUOTED(LLVM_PREFIX,"$LLVM_PREFIX",
1742 [Installation prefix directory])
1743 AC_DEFINE_UNQUOTED(LLVM_BINDIR, "$LLVM_BINDIR",
1744 [Installation directory for binary executables])
1745 AC_DEFINE_UNQUOTED(LLVM_LIBDIR, "$LLVM_LIBDIR",
1746 [Installation directory for libraries])
1747 AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DATADIR",
1748 [Installation directory for data files])
1749 AC_DEFINE_UNQUOTED(LLVM_DOCSDIR, "$LLVM_DOCSDIR",
1750 [Installation directory for documentation])
1751 AC_DEFINE_UNQUOTED(LLVM_ETCDIR, "$LLVM_ETCDIR",
1752 [Installation directory for config files])
1753 AC_DEFINE_UNQUOTED(LLVM_INCLUDEDIR, "$LLVM_INCLUDEDIR",
1754 [Installation directory for include files])
1755 AC_DEFINE_UNQUOTED(LLVM_INFODIR, "$LLVM_INFODIR",
1756 [Installation directory for .info files])
1757 AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR",
1758 [Installation directory for man pages])
1759 AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME",
1760 [Time at which LLVM was configured])
1761 AC_DEFINE_UNQUOTED(LLVM_HOSTTRIPLE, "$host",
1762 [Host triple LLVM will be executed on])
1763 AC_DEFINE_UNQUOTED(LLVM_DEFAULT_TARGET_TRIPLE, "$target",
1764 [Target triple LLVM will generate code for by default])
1766 dnl Determine which bindings to build.
1767 if test "$BINDINGS_TO_BUILD" = auto ; then
1768 BINDINGS_TO_BUILD=""
1769 if test "x$OCAMLC" != x -a "x$OCAMLDEP" != x ; then
1770 BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD"
1773 AC_SUBST(BINDINGS_TO_BUILD,$BINDINGS_TO_BUILD)
1775 dnl This isn't really configurey, but it avoids having to repeat the list in
1777 AC_SUBST(ALL_BINDINGS,ocaml)
1779 dnl Do any work necessary to ensure that bindings have what they need.
1780 binding_prereqs_failed=0
1781 for a_binding in $BINDINGS_TO_BUILD ; do
1782 case "$a_binding" in
1784 if test "x$OCAMLC" = x ; then
1785 AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlc not found. Try configure OCAMLC=/path/to/ocamlc])
1786 binding_prereqs_failed=1
1788 if test "x$OCAMLDEP" = x ; then
1789 AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamldep not found. Try configure OCAMLDEP=/path/to/ocamldep])
1790 binding_prereqs_failed=1
1792 if test "x$OCAMLOPT" = x ; then
1793 AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlopt not found. Try configure OCAMLOPT=/path/to/ocamlopt])
1794 dnl ocamlopt is optional!
1796 if test "x$with_ocaml_libdir" != xauto ; then
1797 AC_SUBST(OCAML_LIBDIR,$with_ocaml_libdir)
1799 ocaml_stdlib="`"$OCAMLC" -where`"
1800 if test "$LLVM_PREFIX" '<' "$ocaml_stdlib" -a "$ocaml_stdlib" '<' "$LLVM_PREFIX~"
1802 # ocaml stdlib is beneath our prefix; use stdlib
1803 AC_SUBST(OCAML_LIBDIR,$ocaml_stdlib)
1805 # ocaml stdlib is outside our prefix; use libdir/ocaml
1806 AC_SUBST(OCAML_LIBDIR,$LLVM_LIBDIR/ocaml)
1812 if test "$binding_prereqs_failed" = 1 ; then
1813 AC_MSG_ERROR([Prequisites for bindings not satisfied. Fix them or use configure --disable-bindings.])
1816 dnl Determine whether the compiler supports -fvisibility-inlines-hidden.
1817 AC_CXX_USE_VISIBILITY_INLINES_HIDDEN
1819 dnl Determine linker rpath flag
1820 if test "$llvm_cv_link_use_r" = "yes" ; then
1827 dnl Determine linker rdynamic flag
1828 if test "$llvm_cv_link_use_export_dynamic" = "yes" ; then
1829 RDYNAMIC="-Wl,-export-dynamic"
1835 dnl===-----------------------------------------------------------------------===
1837 dnl=== SECTION 10: Specify the output files and generate it
1839 dnl===-----------------------------------------------------------------------===
1841 dnl Configure header files
1842 dnl WARNING: dnl If you add or remove any of the following config headers, then
1843 dnl you MUST also update Makefile so that the variable FilesToConfig
1844 dnl contains the same list of files as AC_CONFIG_HEADERS below. This ensures the
1845 dnl files can be updated automatically when their *.in sources change.
1846 AC_CONFIG_HEADERS([include/llvm/Config/config.h include/llvm/Config/llvm-config.h])
1847 AH_TOP([#ifndef CONFIG_H
1851 AC_CONFIG_FILES([include/llvm/Config/Targets.def])
1852 AC_CONFIG_FILES([include/llvm/Config/AsmPrinters.def])
1853 AC_CONFIG_FILES([include/llvm/Config/AsmParsers.def])
1854 AC_CONFIG_FILES([include/llvm/Config/Disassemblers.def])
1855 AC_CONFIG_HEADERS([include/llvm/Support/DataTypes.h])
1857 dnl Configure the makefile's configuration data
1858 AC_CONFIG_FILES([Makefile.config])
1860 dnl Configure the RPM spec file for LLVM
1861 AC_CONFIG_FILES([llvm.spec])
1863 dnl Configure doxygen's configuration file
1864 AC_CONFIG_FILES([docs/doxygen.cfg])
1866 dnl Configure clang, if present
1867 if test "${clang_src_root}" = ""; then
1868 clang_src_root="$srcdir/tools/clang"
1870 if test -f ${clang_src_root}/README.txt; then
1871 dnl Use variables to stay under 80 columns.
1872 configh="include/clang/Config/config.h"
1873 doxy="docs/doxygen.cfg"
1874 AC_CONFIG_HEADERS([tools/clang/${configh}:${clang_src_root}/${configh}.in])
1875 AC_CONFIG_FILES([tools/clang/${doxy}:${clang_src_root}/${doxy}.in])
1878 dnl OCaml findlib META file
1879 AC_CONFIG_FILES([bindings/ocaml/llvm/META.llvm])
1881 dnl Add --program-prefix value to Makefile.rules. Already an ARG variable.
1882 test "x$program_prefix" = "xNONE" && program_prefix=""
1883 AC_SUBST([program_prefix])
1886 dnl Do special configuration of Makefiles
1887 AC_CONFIG_COMMANDS([setup],,[llvm_src="${srcdir}"])
1888 AC_CONFIG_MAKEFILE(Makefile)
1889 AC_CONFIG_MAKEFILE(Makefile.common)
1890 AC_CONFIG_MAKEFILE(examples/Makefile)
1891 AC_CONFIG_MAKEFILE(lib/Makefile)
1892 AC_CONFIG_MAKEFILE(runtime/Makefile)
1893 AC_CONFIG_MAKEFILE(test/Makefile)
1894 AC_CONFIG_MAKEFILE(test/Makefile.tests)
1895 AC_CONFIG_MAKEFILE(unittests/Makefile)
1896 AC_CONFIG_MAKEFILE(tools/Makefile)
1897 AC_CONFIG_MAKEFILE(utils/Makefile)
1898 AC_CONFIG_MAKEFILE(projects/Makefile)
1899 AC_CONFIG_MAKEFILE(bindings/Makefile)
1900 AC_CONFIG_MAKEFILE(bindings/ocaml/Makefile.ocaml)
1902 dnl Finally, crank out the output