Add an autoconf option for turning on -gsplit-dwarf by default
[oota-llvm.git] / autoconf / configure.ac
1 dnl === configure.ac --------------------------------------------------------===
2 dnl                     The LLVM Compiler Infrastructure
3 dnl
4 dnl This file is distributed under the University of Illinois Open Source
5 dnl License. See LICENSE.TXT for details.
6 dnl
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
14 dnl are as follows:
15 dnl
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
26 dnl
27 dnl===-----------------------------------------------------------------------===
28 dnl===
29 dnl=== SECTION 1: Initialization & Setup
30 dnl===
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.4svn],[http://llvm.org/bugs/])
35 AC_DEFINE([LLVM_VERSION_MAJOR], [3], [Major version of the LLVM API])
36 AC_DEFINE([LLVM_VERSION_MINOR], [4], [Minor version of the LLVM API])
37
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.])
42
43 dnl Indicate that we require autoconf 2.60 or later.
44 AC_PREREQ(2.60)
45
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])
49
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])
53
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}])
59   fi
60 fi
61
62 dnl Default to empty (i.e. assigning the null string to) CFLAGS and CXXFLAGS,
63 dnl instead of the autoconf default (for example, '-g -O2' for CC=gcc).
64 ${CFLAGS=}
65 ${CXXFLAGS=}
66
67 dnl We need to check for the compiler up here to avoid anything else
68 dnl starting with a different one.
69 AC_PROG_CC(clang llvm-gcc gcc)
70 AC_PROG_CXX(clang++ llvm-g++ g++)
71 AC_PROG_CPP
72
73 dnl If CXX is Clang, check that it can find and parse C++ standard library
74 dnl headers.
75 if test "$CXX" = "clang++" ; then
76   AC_MSG_CHECKING([whether clang works])
77   AC_LANG_PUSH([C++])
78   dnl Note that space between 'include' and '(' is required.  There's a broken
79   dnl regex in aclocal that otherwise will think that we call m4's include
80   dnl builtin.
81   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <limits>
82 #if __has_include (<cxxabi.h>)
83 #include <cxxabi.h>
84 #endif
85 #if __has_include (<unwind.h>)
86 #include <unwind.h>
87 #endif
88 ]])],
89 [
90   AC_MSG_RESULT([yes])
91 ],
92 [
93   AC_MSG_RESULT([no])
94   AC_MSG_ERROR([Selected compiler could not find or parse C++ standard library headers.  Rerun with CC=c-compiler CXX=c++-compiler ./configure ...])
95 ])
96   AC_LANG_POP([C++])
97 fi
98
99 dnl Configure all of the projects present in our source tree. While we could
100 dnl just AC_CONFIG_SUBDIRS on the set of directories in projects that have a
101 dnl configure script, that usage of the AC_CONFIG_SUBDIRS macro is deprecated.
102 dnl Instead we match on the known projects.
103
104 dnl
105 dnl One tricky part of doing this is that some projects depend upon other
106 dnl projects.  For example, several projects rely upon the LLVM test suite.
107 dnl We want to configure those projects first so that their object trees are
108 dnl created before running the configure scripts of projects that depend upon
109 dnl them.
110 dnl
111
112 dnl Several projects use llvm-gcc, so configure that first
113 if test -d ${srcdir}/projects/llvm-gcc ; then
114   AC_CONFIG_SUBDIRS([projects/llvm-gcc])
115 fi
116
117 dnl Several projects use the LLVM test suite, so configure it next.
118 if test -d ${srcdir}/projects/test-suite ; then
119   AC_CONFIG_SUBDIRS([projects/test-suite])
120 fi
121
122 dnl llvm-test is the old name of the test-suite, kept here for backwards
123 dnl compatibility
124 if test -d ${srcdir}/projects/llvm-test ; then
125   AC_CONFIG_SUBDIRS([projects/llvm-test])
126 fi
127
128 dnl Some projects use poolalloc; configure that next
129 if test -d ${srcdir}/projects/poolalloc ; then
130   AC_CONFIG_SUBDIRS([projects/poolalloc])
131 fi
132
133 if test -d ${srcdir}/projects/llvm-poolalloc ; then
134   AC_CONFIG_SUBDIRS([projects/llvm-poolalloc])
135 fi
136
137 dnl Check for all other projects
138 for i in `ls ${srcdir}/projects`
139 do
140   if test -d ${srcdir}/projects/${i} ; then
141     case ${i} in
142       sample)       AC_CONFIG_SUBDIRS([projects/sample])    ;;
143       privbracket)  AC_CONFIG_SUBDIRS([projects/privbracket]) ;;
144       llvm-stacker) AC_CONFIG_SUBDIRS([projects/llvm-stacker]) ;;
145       llvm-reopt)   AC_CONFIG_SUBDIRS([projects/llvm-reopt]);;
146       llvm-java)    AC_CONFIG_SUBDIRS([projects/llvm-java]) ;;
147       llvm-tv)      AC_CONFIG_SUBDIRS([projects/llvm-tv])   ;;
148       safecode)     AC_CONFIG_SUBDIRS([projects/safecode]) ;;
149       llvm-kernel)  AC_CONFIG_SUBDIRS([projects/llvm-kernel]) ;;
150       compiler-rt)       ;;
151       llvm-gcc)       ;;
152       test-suite)     ;;
153       llvm-test)      ;;
154       poolalloc)      ;;
155       llvm-poolalloc) ;;
156       *)
157         AC_MSG_WARN([Unknown project (${i}) won't be configured automatically])
158         ;;
159     esac
160   fi
161 done
162
163 dnl Disable the build of polly, even if it is checked out into tools/polly.
164 AC_ARG_ENABLE(polly,
165               AS_HELP_STRING([--enable-polly],
166                              [Use polly if available (default is YES)]),,
167                              enableval=default)
168 case "$enableval" in
169   yes) AC_SUBST(ENABLE_POLLY,[1]) ;;
170   no)  AC_SUBST(ENABLE_POLLY,[0]) ;;
171   default) AC_SUBST(ENABLE_POLLY,[1]) ;;
172   *) AC_MSG_ERROR([Invalid setting for --enable-polly. Use "yes" or "no"]) ;;
173 esac
174
175
176 dnl Check if polly is checked out into tools/polly and configure it if
177 dnl available.
178 if (test -d ${srcdir}/tools/polly) && (test $ENABLE_POLLY -eq 1) ; then
179   AC_SUBST(LLVM_HAS_POLLY,1)
180   AC_CONFIG_SUBDIRS([tools/polly])
181 fi
182
183 dnl===-----------------------------------------------------------------------===
184 dnl===
185 dnl=== SECTION 2: Architecture, target, and host checks
186 dnl===
187 dnl===-----------------------------------------------------------------------===
188
189 dnl Check the target for which we're compiling and the host that will do the
190 dnl compilations. This will tell us which LLVM compiler will be used for
191 dnl compiling SSA into object code. This needs to be done early because
192 dnl following tests depend on it.
193 AC_CANONICAL_TARGET
194
195 dnl Determine the platform type and cache its value. This helps us configure
196 dnl the System library to the correct build platform.
197 AC_CACHE_CHECK([type of operating system we're going to host on],
198                [llvm_cv_os_type],
199 [case $host in
200   *-*-aix*)
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="AIX"
204     llvm_cv_platform_type="Unix" ;;
205   *-*-irix*)
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="IRIX"
209     llvm_cv_platform_type="Unix" ;;
210   *-*-cygwin*)
211     llvm_cv_link_all_option="-Wl,--whole-archive"
212     llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
213     llvm_cv_os_type="Cygwin"
214     llvm_cv_platform_type="Unix" ;;
215   *-*-darwin*)
216     llvm_cv_link_all_option="-Wl,-all_load"
217     llvm_cv_no_link_all_option="-Wl,-noall_load"
218     llvm_cv_os_type="Darwin"
219     llvm_cv_platform_type="Unix" ;;
220   *-*-minix*)
221     llvm_cv_link_all_option="-Wl,-all_load"
222     llvm_cv_no_link_all_option="-Wl,-noall_load"
223     llvm_cv_os_type="Minix"
224     llvm_cv_platform_type="Unix" ;;
225   *-*-freebsd* | *-*-kfreebsd-gnu)
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="FreeBSD"
229     llvm_cv_platform_type="Unix" ;;
230   *-*-openbsd*)
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="OpenBSD"
234     llvm_cv_platform_type="Unix" ;;
235   *-*-netbsd*)
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="NetBSD"
239     llvm_cv_platform_type="Unix" ;;
240   *-*-dragonfly*)
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="DragonFly"
244     llvm_cv_platform_type="Unix" ;;
245   *-*-hpux*)
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="HP-UX"
249     llvm_cv_platform_type="Unix" ;;
250   *-*-interix*)
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="Interix"
254     llvm_cv_platform_type="Unix" ;;
255   *-*-linux*)
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="Linux"
259     llvm_cv_platform_type="Unix" ;;
260   *-*-gnu*)
261     llvm_cv_link_all_option="-Wl,--whole-archive"
262     llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
263     llvm_cv_os_type="GNU"
264     llvm_cv_platform_type="Unix" ;;
265   *-*-solaris*)
266     llvm_cv_link_all_option="-Wl,-z,allextract"
267     llvm_cv_no_link_all_option="-Wl,-z,defaultextract"
268     llvm_cv_os_type="SunOS"
269     llvm_cv_platform_type="Unix" ;;
270   *-*-auroraux*)
271     llvm_cv_link_all_option="-Wl,-z,allextract"
272     llvm_cv_link_all_option="-Wl,-z,defaultextract"
273     llvm_cv_os_type="AuroraUX"
274     llvm_cv_platform_type="Unix" ;;
275   *-*-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="Win32"
279     llvm_cv_platform_type="Win32" ;;
280   *-*-mingw*)
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="MingW"
284     llvm_cv_platform_type="Win32" ;;
285   *-*-haiku*)
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="Haiku"
289     llvm_cv_platform_type="Unix" ;;
290   *-unknown-eabi*)
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" ;;
295   *-unknown-elf*)
296     llvm_cv_link_all_option="-Wl,--whole-archive"
297     llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
298     llvm_cv_os_type="Freestanding"
299     llvm_cv_platform_type="Unix" ;;
300   *)
301     llvm_cv_link_all_option=""
302     llvm_cv_no_link_all_option=""
303     llvm_cv_os_type="Unknown"
304     llvm_cv_platform_type="Unknown" ;;
305 esac])
306
307 AC_CACHE_CHECK([type of operating system we're going to target],
308                [llvm_cv_target_os_type],
309 [case $target in
310   *-*-aix*)
311     llvm_cv_target_os_type="AIX" ;;
312   *-*-irix*)
313     llvm_cv_target_os_type="IRIX" ;;
314   *-*-cygwin*)
315     llvm_cv_target_os_type="Cygwin" ;;
316   *-*-darwin*)
317     llvm_cv_target_os_type="Darwin" ;;
318   *-*-minix*)
319     llvm_cv_target_os_type="Minix" ;;
320   *-*-freebsd* | *-*-kfreebsd-gnu)
321     llvm_cv_target_os_type="FreeBSD" ;;
322   *-*-openbsd*)
323     llvm_cv_target_os_type="OpenBSD" ;;
324   *-*-netbsd*)
325     llvm_cv_target_os_type="NetBSD" ;;
326   *-*-dragonfly*)
327     llvm_cv_target_os_type="DragonFly" ;;
328   *-*-hpux*)
329     llvm_cv_target_os_type="HP-UX" ;;
330   *-*-interix*)
331     llvm_cv_target_os_type="Interix" ;;
332   *-*-linux*)
333     llvm_cv_target_os_type="Linux" ;;
334   *-*-gnu*)
335     llvm_cv_target_os_type="GNU" ;;
336   *-*-solaris*)
337     llvm_cv_target_os_type="SunOS" ;;
338   *-*-auroraux*)
339     llvm_cv_target_os_type="AuroraUX" ;;
340   *-*-win32*)
341     llvm_cv_target_os_type="Win32" ;;
342   *-*-mingw*)
343     llvm_cv_target_os_type="MingW" ;;
344   *-*-haiku*)
345     llvm_cv_target_os_type="Haiku" ;;
346   *-*-rtems*)
347     llvm_cv_target_os_type="RTEMS" ;;
348   *-*-nacl*)
349     llvm_cv_target_os_type="NativeClient" ;;
350   *-unknown-eabi*)
351     llvm_cv_target_os_type="Freestanding" ;;
352   *)
353     llvm_cv_target_os_type="Unknown" ;;
354 esac])
355
356 dnl Make sure we aren't attempting to configure for an unknown system
357 if test "$llvm_cv_os_type" = "Unknown" ; then
358   AC_MSG_ERROR([Operating system is unknown, configure can't continue])
359 fi
360
361 dnl Set the "OS" Makefile variable based on the platform type so the
362 dnl makefile can configure itself to specific build hosts
363 AC_SUBST(OS,$llvm_cv_os_type)
364 AC_SUBST(HOST_OS,$llvm_cv_os_type)
365 AC_SUBST(TARGET_OS,$llvm_cv_target_os_type)
366
367 dnl Set the LINKALL and NOLINKALL Makefile variables based on the platform
368 AC_SUBST(LINKALL,$llvm_cv_link_all_option)
369 AC_SUBST(NOLINKALL,$llvm_cv_no_link_all_option)
370
371 dnl Set the "LLVM_ON_*" variables based on llvm_cv_platform_type
372 dnl This is used by lib/Support to determine the basic kind of implementation
373 dnl to use.
374 case $llvm_cv_platform_type in
375   Unix)
376     AC_DEFINE([LLVM_ON_UNIX],[1],[Define if this is Unixish platform])
377     AC_SUBST(LLVM_ON_UNIX,[1])
378     AC_SUBST(LLVM_ON_WIN32,[0])
379     ;;
380   Win32)
381     AC_DEFINE([LLVM_ON_WIN32],[1],[Define if this is Win32ish platform])
382     AC_SUBST(LLVM_ON_UNIX,[0])
383     AC_SUBST(LLVM_ON_WIN32,[1])
384     ;;
385 esac
386
387 dnl Determine what our target architecture is and configure accordingly.
388 dnl This will allow Makefiles to make a distinction between the hardware and
389 dnl the OS.
390 AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch],
391 [case $target in
392   i?86-*)                 llvm_cv_target_arch="x86" ;;
393   amd64-* | x86_64-*)     llvm_cv_target_arch="x86_64" ;;
394   sparc*-*)               llvm_cv_target_arch="Sparc" ;;
395   powerpc*-*)             llvm_cv_target_arch="PowerPC" ;;
396   arm*-*)                 llvm_cv_target_arch="ARM" ;;
397   aarch64*-*)             llvm_cv_target_arch="AArch64" ;;
398   mips-* | mips64-*)      llvm_cv_target_arch="Mips" ;;
399   mipsel-* | mips64el-*)  llvm_cv_target_arch="Mips" ;;
400   xcore-*)                llvm_cv_target_arch="XCore" ;;
401   msp430-*)               llvm_cv_target_arch="MSP430" ;;
402   hexagon-*)              llvm_cv_target_arch="Hexagon" ;;
403   mblaze-*)               llvm_cv_target_arch="MBlaze" ;;
404   nvptx-*)                llvm_cv_target_arch="NVPTX" ;;
405   s390x-*)                llvm_cv_target_arch="SystemZ" ;;
406   *)                      llvm_cv_target_arch="Unknown" ;;
407 esac])
408
409 if test "$llvm_cv_target_arch" = "Unknown" ; then
410   AC_MSG_WARN([Configuring LLVM for an unknown target archicture])
411 fi
412
413 dnl Determine the LLVM native architecture for the target
414 case "$llvm_cv_target_arch" in
415     x86)     LLVM_NATIVE_ARCH="X86" ;;
416     x86_64)  LLVM_NATIVE_ARCH="X86" ;;
417     *)       LLVM_NATIVE_ARCH="$llvm_cv_target_arch" ;;
418 esac
419
420 dnl Define a substitution, ARCH, for the target architecture
421 AC_SUBST(ARCH,$llvm_cv_target_arch)
422
423 dnl Determine what our host architecture.
424 dnl This will allow MCJIT regress tests runs only for supported
425 dnl platforms.
426 case $host in
427   i?86-*)                 host_arch="x86" ;;
428   amd64-* | x86_64-*)     host_arch="x86_64" ;;
429   sparc*-*)               host_arch="Sparc" ;;
430   powerpc*-*)             host_arch="PowerPC" ;;
431   arm*-*)                 host_arch="ARM" ;;
432   aarch64*-*)             host_arch="AArch64" ;;
433   mips-* | mips64-*)      host_arch="Mips" ;;
434   mipsel-* | mips64el-*)  host_arch="Mips" ;;
435   xcore-*)                host_arch="XCore" ;;
436   msp430-*)               host_arch="MSP430" ;;
437   hexagon-*)              host_arch="Hexagon" ;;
438   mblaze-*)               host_arch="MBlaze" ;;
439   s390x-*)                host_arch="SystemZ" ;;
440   *)                      host_arch="Unknown" ;;
441 esac
442
443 if test "$host_arch" = "Unknown" ; then
444   AC_MSG_WARN([Configuring LLVM for an unknown host archicture])
445 fi
446
447 AC_SUBST(HOST_ARCH,$host_arch)
448
449 dnl Check for the endianness of the target
450 AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[big]),AC_SUBST([ENDIAN],[little]))
451
452 dnl Check for build platform executable suffix if we're cross-compiling
453 if test "$cross_compiling" = yes; then
454   AC_SUBST(LLVM_CROSS_COMPILING, [1])
455   AC_BUILD_EXEEXT
456   ac_build_prefix=${build_alias}-
457   AC_CHECK_PROG(BUILD_CXX, ${ac_build_prefix}g++, ${ac_build_prefix}g++)
458   if test -z "$BUILD_CXX"; then
459      AC_CHECK_PROG(BUILD_CXX, g++, g++)
460      if test -z "$BUILD_CXX"; then
461        AC_CHECK_PROG(BUILD_CXX, c++, c++, , , /usr/ucb/c++)
462      fi
463   fi
464 else
465   AC_SUBST(LLVM_CROSS_COMPILING, [0])
466 fi
467
468 dnl Check to see if there's a .svn or .git directory indicating that this
469 dnl build is being done from a checkout. This sets up several defaults for
470 dnl the command line switches. When we build with a checkout directory,
471 dnl we get a debug with assertions turned on. Without, we assume a source
472 dnl release and we get an optimized build without assertions.
473 dnl See --enable-optimized and --enable-assertions below
474 if test -d ".svn" -o -d "${srcdir}/.svn" -o -d ".git" -o -d "${srcdir}/.git"; then
475   cvsbuild="yes"
476   optimize="no"
477   AC_SUBST(CVSBUILD,[[CVSBUILD=1]])
478 else
479   cvsbuild="no"
480   optimize="yes"
481 fi
482
483 dnl===-----------------------------------------------------------------------===
484 dnl===
485 dnl=== SECTION 3: Command line arguments for the configure script.
486 dnl===
487 dnl===-----------------------------------------------------------------------===
488
489 dnl --enable-libcpp : check whether or not to use libc++ on the command line
490 AC_ARG_ENABLE(libcpp,
491               AS_HELP_STRING([--enable-libcpp],
492                              [Use libc++ if available (default is NO)]),,
493                              enableval=default)
494 case "$enableval" in
495   yes) AC_SUBST(ENABLE_LIBCPP,[1]) ;;
496   no)  AC_SUBST(ENABLE_LIBCPP,[0]) ;;
497   default) AC_SUBST(ENABLE_LIBCPP,[0]);;
498   *) AC_MSG_ERROR([Invalid setting for --enable-libcpp. Use "yes" or "no"]) ;;
499 esac
500
501 dnl --enable-cxx11 : check whether or not to use -std=c++11 on the command line
502 AC_ARG_ENABLE(cxx11,
503               AS_HELP_STRING([--enable-cxx11],
504                              [Use c++11 if available (default is NO)]),,
505                              enableval=default)
506 case "$enableval" in
507   yes) AC_SUBST(ENABLE_CXX11,[1]) ;;
508   no)  AC_SUBST(ENABLE_CXX11,[0]) ;;
509   default) AC_SUBST(ENABLE_CXX11,[0]);;
510   *) AC_MSG_ERROR([Invalid setting for --enable-cxx11. Use "yes" or "no"]) ;;
511 esac
512
513 dnl --enable-fission : check whether or not to use -gsplit-dwarf on the command
514 dnl line
515 AC_ARG_ENABLE(split-dwarf,
516               AS_HELP_STRING([--enable-split-dwarf],
517                              [Use split-dwarf if available (default is NO)]),,
518                              enableval=default)
519 case "$enableval" in
520   yes) AC_SUBST(ENABLE_SPLIT_DWARF,[1]) ;;
521   no)  AC_SUBST(ENABLE_SPLIT_DWARF,[0]) ;;
522   default) AC_SUBST(ENABLE_SPLIT_DWARF,[0]);;
523   *) AC_MSG_ERROR([Invalid setting for --enable-split-dwarf. Use "yes" or "no"]) ;;
524 esac
525
526 dnl --enable-clang-arcmt: check whether to enable clang arcmt
527 clang_arcmt="yes"
528 AC_ARG_ENABLE(clang-arcmt,
529               AS_HELP_STRING([--enable-clang-arcmt],
530                              [Enable building of clang ARCMT (default is YES)]),
531                              clang_arcmt="$enableval",
532                              enableval="yes")
533 case "$enableval" in
534   yes) AC_SUBST(ENABLE_CLANG_ARCMT,[1]) ;;
535   no)  AC_SUBST(ENABLE_CLANG_ARCMT,[0]) ;;
536   default) AC_SUBST(ENABLE_CLANG_ARCMT,[1]);;
537   *) AC_MSG_ERROR([Invalid setting for --enable-clang-arcmt. Use "yes" or "no"]) ;;
538 esac
539
540 dnl --enable-clang-static-analyzer: check whether to enable static-analyzer
541 clang_static_analyzer="yes"
542 AC_ARG_ENABLE(clang-static-analyzer,
543               AS_HELP_STRING([--enable-clang-static-analyzer],
544                              [Enable building of clang Static Analyzer (default is YES)]),
545                              clang_static_analyzer="$enableval",
546                              enableval="yes")
547 case "$enableval" in
548   yes) AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[1]) ;;
549   no)  AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[0]) ;;
550   default) AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[1]);;
551   *) AC_MSG_ERROR([Invalid setting for --enable-clang-static-analyzer. Use "yes" or "no"]) ;;
552 esac
553
554 dnl --enable-clang-rewriter: check whether to enable clang rewriter
555 AC_ARG_ENABLE(clang-rewriter,
556               AS_HELP_STRING([--enable-clang-rewriter],
557                              [Enable building of clang rewriter (default is YES)]),,
558                              enableval="yes")
559 case "$enableval" in
560   yes) AC_SUBST(ENABLE_CLANG_REWRITER,[1]) ;;
561   no)  
562     if test ${clang_arcmt} != "no" ; then
563       AC_MSG_ERROR([Cannot enable clang ARC Migration Tool while disabling rewriter.])
564     fi
565     if test ${clang_static_analyzer} != "no" ; then
566       AC_MSG_ERROR([Cannot enable clang static analyzer while disabling rewriter.])
567     fi
568     AC_SUBST(ENABLE_CLANG_REWRITER,[0]) 
569     ;;
570   default) AC_SUBST(ENABLE_CLANG_REWRITER,[1]);;
571   *) AC_MSG_ERROR([Invalid setting for --enable-clang-rewriter. Use "yes" or "no"]) ;;
572 esac
573
574 dnl --enable-optimized : check whether they want to do an optimized build:
575 AC_ARG_ENABLE(optimized, AS_HELP_STRING(
576  --enable-optimized,[Compile with optimizations enabled (default is NO)]),,enableval=$optimize)
577 if test ${enableval} = "no" ; then
578   AC_SUBST(ENABLE_OPTIMIZED,[[]])
579 else
580   AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
581 fi
582
583 dnl --enable-profiling : check whether they want to do a profile build:
584 AC_ARG_ENABLE(profiling, AS_HELP_STRING(
585  --enable-profiling,[Compile with profiling enabled (default is NO)]),,enableval="no")
586 if test ${enableval} = "no" ; then
587   AC_SUBST(ENABLE_PROFILING,[[]])
588 else
589   AC_SUBST(ENABLE_PROFILING,[[ENABLE_PROFILING=1]])
590 fi
591
592 dnl --enable-assertions : check whether they want to turn on assertions or not:
593 AC_ARG_ENABLE(assertions,AS_HELP_STRING(
594   --enable-assertions,[Compile with assertion checks enabled (default is YES)]),, enableval="yes")
595 if test ${enableval} = "yes" ; then
596   AC_SUBST(DISABLE_ASSERTIONS,[[]])
597 else
598   AC_SUBST(DISABLE_ASSERTIONS,[[DISABLE_ASSERTIONS=1]])
599 fi
600
601 dnl --enable-werror : check whether we want Werror on by default
602 AC_ARG_ENABLE(werror,AS_HELP_STRING(
603   --enable-werror,[Compile with -Werror enabled (default is NO)]),, enableval="no")
604 case "$enableval" in
605   yes) AC_SUBST(ENABLE_WERROR,[1]) ;;
606   no)  AC_SUBST(ENABLE_WERROR,[0]) ;;
607   default) AC_SUBST(ENABLE_WERROR,[0]);;
608   *) AC_MSG_ERROR([Invalid setting for --enable-werror. Use "yes" or "no"]) ;;
609 esac
610
611 dnl --enable-expensive-checks : check whether they want to turn on expensive debug checks:
612 AC_ARG_ENABLE(expensive-checks,AS_HELP_STRING(
613   --enable-expensive-checks,[Compile with expensive debug checks enabled (default is NO)]),, enableval="no")
614 if test ${enableval} = "yes" ; then
615   AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[ENABLE_EXPENSIVE_CHECKS=1]])
616   AC_SUBST(EXPENSIVE_CHECKS,[[yes]])
617 else
618   AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[]])
619   AC_SUBST(EXPENSIVE_CHECKS,[[no]])
620 fi
621
622 dnl --enable-debug-runtime : should runtime libraries have debug symbols?
623 AC_ARG_ENABLE(debug-runtime,
624    AS_HELP_STRING(--enable-debug-runtime,[Build runtime libs with debug symbols (default is NO)]),,enableval=no)
625 if test ${enableval} = "no" ; then
626   AC_SUBST(DEBUG_RUNTIME,[[]])
627 else
628   AC_SUBST(DEBUG_RUNTIME,[[DEBUG_RUNTIME=1]])
629 fi
630
631 dnl --enable-debug-symbols : should even optimized compiler libraries
632 dnl have debug symbols?
633 AC_ARG_ENABLE(debug-symbols,
634    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)
635 if test ${enableval} = "no" ; then
636   AC_SUBST(DEBUG_SYMBOLS,[[]])
637 else
638   AC_SUBST(DEBUG_SYMBOLS,[[DEBUG_SYMBOLS=1]])
639 fi
640
641 dnl --enable-keep-symbols : do not strip installed executables
642 AC_ARG_ENABLE(keep-symbols,
643    AS_HELP_STRING(--enable-keep-symbols,[Do not strip installed executables)]),,enableval=no)
644 if test ${enableval} = "no" ; then
645   AC_SUBST(KEEP_SYMBOLS,[[]])
646 else
647   AC_SUBST(KEEP_SYMBOLS,[[KEEP_SYMBOLS=1]])
648 fi
649
650 dnl --enable-jit: check whether they want to enable the jit
651 AC_ARG_ENABLE(jit,
652   AS_HELP_STRING(--enable-jit,
653                  [Enable Just In Time Compiling (default is YES)]),,
654   enableval=default)
655 if test ${enableval} = "no"
656 then
657   AC_SUBST(JIT,[[]])
658 else
659   case "$llvm_cv_target_arch" in
660     x86)         AC_SUBST(TARGET_HAS_JIT,1) ;;
661     Sparc)       AC_SUBST(TARGET_HAS_JIT,0) ;;
662     PowerPC)     AC_SUBST(TARGET_HAS_JIT,1) ;;
663     x86_64)      AC_SUBST(TARGET_HAS_JIT,1) ;;
664     ARM)         AC_SUBST(TARGET_HAS_JIT,1) ;;
665     AArch64)     AC_SUBST(TARGET_HAS_JIT,0) ;;
666     Mips)        AC_SUBST(TARGET_HAS_JIT,1) ;;
667     XCore)       AC_SUBST(TARGET_HAS_JIT,0) ;;
668     MSP430)      AC_SUBST(TARGET_HAS_JIT,0) ;;
669     Hexagon)     AC_SUBST(TARGET_HAS_JIT,0) ;;
670     MBlaze)      AC_SUBST(TARGET_HAS_JIT,0) ;;
671     NVPTX)       AC_SUBST(TARGET_HAS_JIT,0) ;;
672     SystemZ)     AC_SUBST(TARGET_HAS_JIT,1) ;;
673     *)           AC_SUBST(TARGET_HAS_JIT,0) ;;
674   esac
675 fi
676
677 dnl Allow enablement of building and installing docs
678 AC_ARG_ENABLE(docs,
679               AS_HELP_STRING([--enable-docs],
680                              [Build documents (default is YES)]),,
681                              enableval=default)
682 case "$enableval" in
683   yes) AC_SUBST(ENABLE_DOCS,[1]) ;;
684   no)  AC_SUBST(ENABLE_DOCS,[0]) ;;
685   default) AC_SUBST(ENABLE_DOCS,[1]) ;;
686   *) AC_MSG_ERROR([Invalid setting for --enable-docs. Use "yes" or "no"]) ;;
687 esac
688
689 dnl Allow enablement of doxygen generated documentation
690 AC_ARG_ENABLE(doxygen,
691               AS_HELP_STRING([--enable-doxygen],
692                              [Build doxygen documentation (default is NO)]),,
693                              enableval=default)
694 case "$enableval" in
695   yes) AC_SUBST(ENABLE_DOXYGEN,[1]) ;;
696   no)  AC_SUBST(ENABLE_DOXYGEN,[0]) ;;
697   default) AC_SUBST(ENABLE_DOXYGEN,[0]) ;;
698   *) AC_MSG_ERROR([Invalid setting for --enable-doxygen. Use "yes" or "no"]) ;;
699 esac
700
701 dnl Allow disablement of threads
702 AC_ARG_ENABLE(threads,
703               AS_HELP_STRING([--enable-threads],
704                              [Use threads if available (default is YES)]),,
705                              enableval=default)
706 case "$enableval" in
707   yes) AC_SUBST(LLVM_ENABLE_THREADS,[1]) ;;
708   no)  AC_SUBST(LLVM_ENABLE_THREADS,[0]) ;;
709   default) AC_SUBST(LLVM_ENABLE_THREADS,[1]) ;;
710   *) AC_MSG_ERROR([Invalid setting for --enable-threads. Use "yes" or "no"]) ;;
711 esac
712 AC_DEFINE_UNQUOTED([LLVM_ENABLE_THREADS],$LLVM_ENABLE_THREADS,
713                    [Define if threads enabled])
714
715 dnl Allow disablement of pthread.h
716 AC_ARG_ENABLE(pthreads,
717               AS_HELP_STRING([--enable-pthreads],
718                              [Use pthreads if available (default is YES)]),,
719                              enableval=default)
720 case "$enableval" in
721   yes) AC_SUBST(ENABLE_PTHREADS,[1]) ;;
722   no)  AC_SUBST(ENABLE_PTHREADS,[0]) ;;
723   default) AC_SUBST(ENABLE_PTHREADS,[1]) ;;
724   *) AC_MSG_ERROR([Invalid setting for --enable-pthreads. Use "yes" or "no"]) ;;
725 esac
726
727 dnl Allow disablement of zlib
728 AC_ARG_ENABLE(zlib,
729               AS_HELP_STRING([--enable-zlib],
730                              [Use zlib for compression/decompression if
731                               available (default is YES)]),,
732                               enableval=default)
733 case "$enableval" in
734   yes) AC_SUBST(LLVM_ENABLE_ZLIB,[1]) ;;
735   no)  AC_SUBST(LLVM_ENABLE_ZLIB,[0]) ;;
736   default) AC_SUBST(LLVM_ENABLE_ZLIB,[1]) ;;
737   *) AC_MSG_ERROR([Invalid setting for --enable-zlib. Use "yes" or "no"]) ;;
738 esac
739 AC_DEFINE_UNQUOTED([LLVM_ENABLE_ZLIB],$LLVM_ENABLE_ZLIB,
740                    [Define if zlib is enabled])
741
742 dnl Allow building without position independent code
743 AC_ARG_ENABLE(pic,
744   AS_HELP_STRING([--enable-pic],
745                  [Build LLVM with Position Independent Code (default is YES)]),,
746                  enableval=default)
747 case "$enableval" in
748   yes) AC_SUBST(ENABLE_PIC,[1]) ;;
749   no)  AC_SUBST(ENABLE_PIC,[0]) ;;
750   default) AC_SUBST(ENABLE_PIC,[1]) ;;
751   *) AC_MSG_ERROR([Invalid setting for --enable-pic. Use "yes" or "no"]) ;;
752 esac
753 AC_DEFINE_UNQUOTED([ENABLE_PIC],$ENABLE_PIC,
754                    [Define if position independent code is enabled])
755
756 dnl Allow building a shared library and linking tools against it.
757 AC_ARG_ENABLE(shared,
758   AS_HELP_STRING([--enable-shared],
759                  [Build a shared library and link tools against it (default is NO)]),,
760                  enableval=default)
761 case "$enableval" in
762   yes) AC_SUBST(ENABLE_SHARED,[1]) ;;
763   no)  AC_SUBST(ENABLE_SHARED,[0]) ;;
764   default) AC_SUBST(ENABLE_SHARED,[0]) ;;
765   *) AC_MSG_ERROR([Invalid setting for --enable-shared. Use "yes" or "no"]) ;;
766 esac
767
768 dnl Allow libstdc++ is embedded in LLVM.dll.
769 AC_ARG_ENABLE(embed-stdcxx,
770   AS_HELP_STRING([--enable-embed-stdcxx],
771                  [Build a shared library with embedded libstdc++ for Win32 DLL (default is NO)]),,
772                  enableval=default)
773 case "$enableval" in
774   yes) AC_SUBST(ENABLE_EMBED_STDCXX,[1]) ;;
775   no)  AC_SUBST(ENABLE_EMBED_STDCXX,[0]) ;;
776   default) AC_SUBST(ENABLE_EMBED_STDCXX,[0]) ;;
777   *) AC_MSG_ERROR([Invalid setting for --enable-embed-stdcxx. Use "yes" or "no"]) ;;
778 esac
779
780 dnl Enable embedding timestamp information into build.
781 AC_ARG_ENABLE(timestamps,
782   AS_HELP_STRING([--enable-timestamps],
783                  [Enable embedding timestamp information in build (default is YES)]),,
784                  enableval=default)
785 case "$enableval" in
786   yes) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;;
787   no)  AC_SUBST(ENABLE_TIMESTAMPS,[0]) ;;
788   default) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;;
789   *) AC_MSG_ERROR([Invalid setting for --enable-timestamps. Use "yes" or "no"]) ;;
790 esac
791 AC_DEFINE_UNQUOTED([ENABLE_TIMESTAMPS],$ENABLE_TIMESTAMPS,
792                    [Define if timestamp information (e.g., __DATE__) is allowed])
793
794 dnl Enable embedding timestamp information into build.
795
796 AC_ARG_ENABLE(backtraces,
797   AS_HELP_STRING([--enable-backtraces],
798                  [Enable embedding backtraces on crash (default is YES)]),,
799                  enableval=default)
800 case "$enableval" in
801   yes) AC_SUBST(ENABLE_BACKTRACES,[1]) ;;
802   no)  AC_SUBST(ENABLE_BACKTRACES,[0]) ;;
803   default) AC_SUBST(ENABLE_BACKTRACES,[1]) ;;
804   *) AC_MSG_ERROR([Invalid setting for --enable-backtraces. Use "yes" or "no"]) ;;
805 esac
806 AC_DEFINE_UNQUOTED([ENABLE_BACKTRACES],$ENABLE_BACKTRACES,
807                    [Define if you want backtraces on crash])
808
809 dnl Allow specific targets to be specified for building (or not)
810 TARGETS_TO_BUILD=""
811 AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-targets],
812     [Build specific host targets: all or target1,target2,... Valid targets are:
813      host, x86, x86_64, sparc, powerpc, arm, aarch64, mips, hexagon,
814      xcore, msp430, nvptx, systemz, r600, and cpp (default=all)]),,
815     enableval=all)
816 if test "$enableval" = host-only ; then
817   enableval=host
818 fi
819 case "$enableval" in
820   all) TARGETS_TO_BUILD="X86 Sparc PowerPC AArch64 ARM Mips XCore MSP430 CppBackend MBlaze NVPTX Hexagon SystemZ R600" ;;
821   *)for a_target in `echo $enableval|sed -e 's/,/ /g' ` ; do
822       case "$a_target" in
823         x86)      TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
824         x86_64)   TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
825         sparc)    TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;;
826         powerpc)  TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
827         aarch64)  TARGETS_TO_BUILD="AArch64 $TARGETS_TO_BUILD" ;;
828         arm)      TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
829         mips)     TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
830         mipsel)   TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
831         mips64)   TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
832         mips64el) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
833         xcore)    TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
834         msp430)   TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
835         cpp)      TARGETS_TO_BUILD="CppBackend $TARGETS_TO_BUILD" ;;
836         hexagon)  TARGETS_TO_BUILD="Hexagon $TARGETS_TO_BUILD" ;;
837         mblaze)   TARGETS_TO_BUILD="MBlaze $TARGETS_TO_BUILD" ;;
838         nvptx)    TARGETS_TO_BUILD="NVPTX $TARGETS_TO_BUILD" ;;
839         systemz)  TARGETS_TO_BUILD="SystemZ $TARGETS_TO_BUILD" ;;
840         r600)     TARGETS_TO_BUILD="R600 $TARGETS_TO_BUILD" ;;
841         host) case "$llvm_cv_target_arch" in
842             x86)         TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
843             x86_64)      TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
844             Sparc)       TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;;
845             PowerPC)     TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
846             AArch64)     TARGETS_TO_BUILD="AArch64 $TARGETS_TO_BUILD" ;;
847             ARM)         TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
848             Mips)        TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
849             MBlaze)      TARGETS_TO_BUILD="MBlaze $TARGETS_TO_BUILD" ;;
850             XCore)       TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
851             MSP430)      TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
852             Hexagon)     TARGETS_TO_BUILD="Hexagon $TARGETS_TO_BUILD" ;;
853             NVPTX)       TARGETS_TO_BUILD="NVPTX $TARGETS_TO_BUILD" ;;
854             SystemZ)     TARGETS_TO_BUILD="SystemZ $TARGETS_TO_BUILD" ;;
855             *)       AC_MSG_ERROR([Can not set target to build]) ;;
856           esac ;;
857         *) AC_MSG_ERROR([Unrecognized target $a_target]) ;;
858       esac
859   done
860   ;;
861 esac
862
863 AC_ARG_ENABLE([experimental-targets],AS_HELP_STRING([--enable-experimental-targets],
864     [Build experimental host targets: disable or target1,target2,...
865      (default=disable)]),,
866     enableval=disable)
867
868 if test ${enableval} != "disable"
869 then
870   TARGETS_TO_BUILD="$enableval $TARGETS_TO_BUILD"
871 fi
872
873 AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD)
874
875 dnl Determine whether we are building LLVM support for the native architecture.
876 dnl If so, define LLVM_NATIVE_ARCH to that LLVM target.
877 for a_target in $TARGETS_TO_BUILD; do
878   if test "$a_target" = "$LLVM_NATIVE_ARCH"; then
879     AC_DEFINE_UNQUOTED(LLVM_NATIVE_ARCH, $LLVM_NATIVE_ARCH,
880       [LLVM architecture name for the native architecture, if available])
881     LLVM_NATIVE_TARGET="LLVMInitialize${LLVM_NATIVE_ARCH}Target"
882     LLVM_NATIVE_TARGETINFO="LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo"
883     LLVM_NATIVE_TARGETMC="LLVMInitialize${LLVM_NATIVE_ARCH}TargetMC"
884     LLVM_NATIVE_ASMPRINTER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter"
885     if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then
886       LLVM_NATIVE_ASMPARSER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmParser"
887     fi
888     if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/Makefile ; then
889       LLVM_NATIVE_DISASSEMBLER="LLVMInitialize${LLVM_NATIVE_ARCH}Disassembler"
890     fi
891     AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGET, $LLVM_NATIVE_TARGET,
892       [LLVM name for the native Target init function, if available])
893     AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETINFO, $LLVM_NATIVE_TARGETINFO,
894       [LLVM name for the native TargetInfo init function, if available])
895     AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETMC, $LLVM_NATIVE_TARGETMC,
896       [LLVM name for the native target MC init function, if available])
897     AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPRINTER, $LLVM_NATIVE_ASMPRINTER,
898       [LLVM name for the native AsmPrinter init function, if available])
899     if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then
900       AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPARSER, $LLVM_NATIVE_ASMPARSER,
901        [LLVM name for the native AsmParser init function, if available])
902     fi
903     if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/Makefile ; then
904       AC_DEFINE_UNQUOTED(LLVM_NATIVE_DISASSEMBLER, $LLVM_NATIVE_DISASSEMBLER,
905        [LLVM name for the native Disassembler init function, if available])
906     fi
907   fi
908 done
909
910 dnl Build the LLVM_TARGET and LLVM_... macros for Targets.def and the individual
911 dnl target feature def files.
912 LLVM_ENUM_TARGETS=""
913 LLVM_ENUM_ASM_PRINTERS=""
914 LLVM_ENUM_ASM_PARSERS=""
915 LLVM_ENUM_DISASSEMBLERS=""
916 for target_to_build in $TARGETS_TO_BUILD; do
917   LLVM_ENUM_TARGETS="LLVM_TARGET($target_to_build) $LLVM_ENUM_TARGETS"
918   if test -f ${srcdir}/lib/Target/${target_to_build}/*AsmPrinter.cpp ; then
919     LLVM_ENUM_ASM_PRINTERS="LLVM_ASM_PRINTER($target_to_build) $LLVM_ENUM_ASM_PRINTERS";
920   fi
921   if test -f ${srcdir}/lib/Target/${target_to_build}/AsmParser/Makefile ; then
922     LLVM_ENUM_ASM_PARSERS="LLVM_ASM_PARSER($target_to_build) $LLVM_ENUM_ASM_PARSERS";
923   fi
924   if test -f ${srcdir}/lib/Target/${target_to_build}/Disassembler/Makefile ; then
925     LLVM_ENUM_DISASSEMBLERS="LLVM_DISASSEMBLER($target_to_build) $LLVM_ENUM_DISASSEMBLERS";
926   fi
927 done
928 AC_SUBST(LLVM_ENUM_TARGETS)
929 AC_SUBST(LLVM_ENUM_ASM_PRINTERS)
930 AC_SUBST(LLVM_ENUM_ASM_PARSERS)
931 AC_SUBST(LLVM_ENUM_DISASSEMBLERS)
932
933 dnl Override the option to use for optimized builds.
934 AC_ARG_WITH(optimize-option,
935   AS_HELP_STRING([--with-optimize-option],
936                  [Select the compiler options to use for optimized builds]),,
937                  withval=default)
938 AC_MSG_CHECKING([optimization flags])
939 case "$withval" in
940   default)
941     case "$llvm_cv_os_type" in
942     FreeBSD) optimize_option=-O2 ;;
943     MingW) optimize_option=-O2 ;;
944     *)     optimize_option=-O3 ;;
945     esac ;;
946   *) optimize_option="$withval" ;;
947 esac
948 AC_SUBST(OPTIMIZE_OPTION,$optimize_option)
949 AC_MSG_RESULT([$optimize_option])
950
951 dnl Specify extra build options
952 AC_ARG_WITH(extra-options,
953   AS_HELP_STRING([--with-extra-options],
954                  [Specify additional options to compile LLVM with]),,
955                  withval=default)
956 case "$withval" in
957   default) EXTRA_OPTIONS= ;;
958   *) EXTRA_OPTIONS=$withval ;;
959 esac
960 AC_SUBST(EXTRA_OPTIONS,$EXTRA_OPTIONS)
961
962 dnl Specify extra linker build options
963 AC_ARG_WITH(extra-ld-options,
964   AS_HELP_STRING([--with-extra-ld-options],
965                  [Specify additional options to link LLVM with]),,
966                  withval=default)
967 case "$withval" in
968   default) EXTRA_LD_OPTIONS= ;;
969   *) EXTRA_LD_OPTIONS=$withval ;;
970 esac
971 AC_SUBST(EXTRA_LD_OPTIONS,$EXTRA_LD_OPTIONS)
972
973 dnl Allow specific bindings to be specified for building (or not)
974 AC_ARG_ENABLE([bindings],AS_HELP_STRING([--enable-bindings],
975     [Build specific language bindings: all,auto,none,{binding-name} (default=auto)]),,
976     enableval=default)
977 BINDINGS_TO_BUILD=""
978 case "$enableval" in
979   yes | default | auto) BINDINGS_TO_BUILD="auto" ;;
980   all ) BINDINGS_TO_BUILD="ocaml" ;;
981   none | no) BINDINGS_TO_BUILD="" ;;
982   *)for a_binding in `echo $enableval|sed -e 's/,/ /g' ` ; do
983       case "$a_binding" in
984         ocaml) BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD" ;;
985         *) AC_MSG_ERROR([Unrecognized binding $a_binding]) ;;
986       esac
987   done
988   ;;
989 esac
990
991 dnl Allow the ocaml libdir to be overridden. This could go in a configure
992 dnl script for bindings/ocaml/configure, except that its auto value depends on
993 dnl OCAMLC, which is found here to support tests.
994 AC_ARG_WITH([ocaml-libdir],
995   [AS_HELP_STRING([--with-ocaml-libdir],
996     [Specify install location for ocaml bindings (default is stdlib)])],
997   [],
998   [withval=auto])
999 case "$withval" in
1000   auto) with_ocaml_libdir="$withval" ;;
1001   /* | [[A-Za-z]]:[[\\/]]*) with_ocaml_libdir="$withval" ;;
1002   *) AC_MSG_ERROR([Invalid path for --with-ocaml-libdir. Provide full path]) ;;
1003 esac
1004
1005 AC_ARG_WITH(clang-srcdir,
1006   AS_HELP_STRING([--with-clang-srcdir],
1007     [Directory to the out-of-tree Clang source]),,
1008     withval="-")
1009 case "$withval" in
1010   -) clang_src_root="" ;;
1011   /* | [[A-Za-z]]:[[\\/]]*) clang_src_root="$withval" ;;
1012   *) clang_src_root="$ac_pwd/$withval" ;;
1013 esac
1014 AC_SUBST(CLANG_SRC_ROOT,[$clang_src_root])
1015
1016 AC_ARG_WITH(clang-resource-dir,
1017   AS_HELP_STRING([--with-clang-resource-dir],
1018     [Relative directory from the Clang binary for resource files]),,
1019     withval="")
1020 AC_DEFINE_UNQUOTED(CLANG_RESOURCE_DIR,"$withval",
1021                    [Relative directory for resource files])
1022
1023 AC_ARG_WITH(c-include-dirs,
1024   AS_HELP_STRING([--with-c-include-dirs],
1025     [Colon separated list of directories clang will search for headers]),,
1026     withval="")
1027 AC_DEFINE_UNQUOTED(C_INCLUDE_DIRS,"$withval",
1028                    [Directories clang will search for headers])
1029
1030 # Clang normally uses the system c++ headers and libraries. With this option,
1031 # clang will use the ones provided by a gcc installation instead. This option should
1032 # be passed the same value that was used with --prefix when configuring gcc.
1033 AC_ARG_WITH(gcc-toolchain,
1034   AS_HELP_STRING([--with-gcc-toolchain],
1035     [Directory where gcc is installed.]),,
1036     withval="")
1037 AC_DEFINE_UNQUOTED(GCC_INSTALL_PREFIX,"$withval",
1038                    [Directory where gcc is installed.])
1039
1040 AC_ARG_WITH(default-sysroot,
1041   AS_HELP_STRING([--with-default-sysroot],
1042     [Add --sysroot=<path> to all compiler invocations.]),,
1043     withval="")
1044 AC_DEFINE_UNQUOTED(DEFAULT_SYSROOT,"$withval",
1045                    [Default <path> to all compiler invocations for --sysroot=<path>.])
1046
1047 dnl Allow linking of LLVM with GPLv3 binutils code.
1048 AC_ARG_WITH(binutils-include,
1049   AS_HELP_STRING([--with-binutils-include],
1050     [Specify path to binutils/include/ containing plugin-api.h file for gold plugin.]),,
1051   withval=default)
1052 case "$withval" in
1053   default) WITH_BINUTILS_INCDIR=default ;;
1054   /* | [[A-Za-z]]:[[\\/]]*)      WITH_BINUTILS_INCDIR=$withval ;;
1055   *) AC_MSG_ERROR([Invalid path for --with-binutils-include. Provide full path]) ;;
1056 esac
1057 if test "x$WITH_BINUTILS_INCDIR" != xdefault ; then
1058   AC_SUBST(BINUTILS_INCDIR,$WITH_BINUTILS_INCDIR)
1059   if test ! -f "$WITH_BINUTILS_INCDIR/plugin-api.h"; then
1060      echo "$WITH_BINUTILS_INCDIR/plugin-api.h"
1061      AC_MSG_ERROR([Invalid path to directory containing plugin-api.h.]);
1062   fi
1063 fi
1064
1065 dnl Specify the URL where bug reports should be submitted.
1066 AC_ARG_WITH(bug-report-url,
1067   AS_HELP_STRING([--with-bug-report-url],
1068     [Specify the URL where bug reports should be submitted (default=http://llvm.org/bugs/)]),,
1069     withval="http://llvm.org/bugs/")
1070 AC_DEFINE_UNQUOTED(BUG_REPORT_URL,"$withval",
1071                    [Bug report URL.])
1072
1073 dnl --enable-libffi : check whether the user wants to turn off libffi:
1074 AC_ARG_ENABLE(libffi,AS_HELP_STRING(
1075   --enable-libffi,[Check for the presence of libffi (default is NO)]),
1076   [case "$enableval" in
1077     yes) llvm_cv_enable_libffi="yes" ;;
1078     no)  llvm_cv_enable_libffi="no"  ;;
1079     *) AC_MSG_ERROR([Invalid setting for --enable-libffi. Use "yes" or "no"]) ;;
1080   esac],
1081   llvm_cv_enable_libffi=no)
1082
1083 AC_ARG_WITH(internal-prefix,
1084   AS_HELP_STRING([--with-internal-prefix],
1085     [Installation directory for internal files]),,
1086     withval="")
1087 AC_SUBST(INTERNAL_PREFIX,[$withval])
1088
1089 dnl===-----------------------------------------------------------------------===
1090 dnl===
1091 dnl=== SECTION 4: Check for programs we need and that they are the right version
1092 dnl===
1093 dnl===-----------------------------------------------------------------------===
1094
1095 AC_PROG_NM
1096 AC_SUBST(NM)
1097
1098 dnl Check for the tools that the makefiles require
1099 AC_CHECK_GNU_MAKE
1100 AC_PROG_LN_S
1101 AC_PATH_PROG(CMP, [cmp], [cmp])
1102 AC_PATH_PROG(CP, [cp], [cp])
1103 AC_PATH_PROG(DATE, [date], [date])
1104 AC_PATH_PROG(FIND, [find], [find])
1105 AC_PATH_PROG(GREP, [grep], [grep])
1106 AC_PATH_PROG(MKDIR,[mkdir],[mkdir])
1107 AC_PATH_PROG(MV,   [mv],   [mv])
1108 AC_PROG_RANLIB
1109 AC_CHECK_TOOL(AR, ar, false)
1110 AC_PATH_PROG(RM,   [rm],   [rm])
1111 AC_PATH_PROG(SED,  [sed],  [sed])
1112 AC_PATH_PROG(TAR,  [tar],  [gtar])
1113 AC_PATH_PROG(BINPWD,[pwd],  [pwd])
1114
1115 dnl Looking for misc. graph plotting software
1116 AC_PATH_PROG(GRAPHVIZ, [Graphviz], [echo Graphviz])
1117 if test "$GRAPHVIZ" != "echo Graphviz" ; then
1118   AC_DEFINE([HAVE_GRAPHVIZ],[1],[Define if the Graphviz 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     GRAPHVIZ=`echo $GRAPHVIZ | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1122   fi
1123   AC_DEFINE_UNQUOTED([LLVM_PATH_GRAPHVIZ],"$GRAPHVIZ${EXEEXT}",
1124    [Define to path to Graphviz program if found or 'echo Graphviz' otherwise])
1125 fi
1126 AC_PATH_PROG(DOT, [dot], [echo dot])
1127 if test "$DOT" != "echo dot" ; then
1128   AC_DEFINE([HAVE_DOT],[1],[Define if the dot 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     DOT=`echo $DOT | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1132   fi
1133   AC_DEFINE_UNQUOTED([LLVM_PATH_DOT],"$DOT${EXEEXT}",
1134    [Define to path to dot program if found or 'echo dot' otherwise])
1135 fi
1136 AC_PATH_PROG(FDP, [fdp], [echo fdp])
1137 if test "$FDP" != "echo fdp" ; then
1138   AC_DEFINE([HAVE_FDP],[1],[Define if the neat 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     FDP=`echo $FDP | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1142   fi
1143   AC_DEFINE_UNQUOTED([LLVM_PATH_FDP],"$FDP${EXEEXT}",
1144    [Define to path to fdp program if found or 'echo fdp' otherwise])
1145 fi
1146 AC_PATH_PROG(NEATO, [neato], [echo neato])
1147 if test "$NEATO" != "echo neato" ; then
1148   AC_DEFINE([HAVE_NEATO],[1],[Define if the neat 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     NEATO=`echo $NEATO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1152   fi
1153   AC_DEFINE_UNQUOTED([LLVM_PATH_NEATO],"$NEATO${EXEEXT}",
1154    [Define to path to neato program if found or 'echo neato' otherwise])
1155 fi
1156 AC_PATH_PROG(TWOPI, [twopi], [echo twopi])
1157 if test "$TWOPI" != "echo twopi" ; then
1158   AC_DEFINE([HAVE_TWOPI],[1],[Define if the neat 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     TWOPI=`echo $TWOPI | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1162   fi
1163   AC_DEFINE_UNQUOTED([LLVM_PATH_TWOPI],"$TWOPI${EXEEXT}",
1164    [Define to path to twopi program if found or 'echo twopi' otherwise])
1165 fi
1166 AC_PATH_PROG(CIRCO, [circo], [echo circo])
1167 if test "$CIRCO" != "echo circo" ; then
1168   AC_DEFINE([HAVE_CIRCO],[1],[Define if the neat program is available])
1169   dnl If we're targeting for mingw we should emit windows paths, not msys
1170   if test "$llvm_cv_os_type" = "MingW" ; then
1171     CIRCO=`echo $CIRCO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1172   fi
1173   AC_DEFINE_UNQUOTED([LLVM_PATH_CIRCO],"$CIRCO${EXEEXT}",
1174    [Define to path to circo program if found or 'echo circo' otherwise])
1175 fi
1176 AC_PATH_PROGS(GV, [gv gsview32], [echo gv])
1177 if test "$GV" != "echo gv" ; then
1178   AC_DEFINE([HAVE_GV],[1],[Define if the gv program is available])
1179   dnl If we're targeting for mingw we should emit windows paths, not msys
1180   if test "$llvm_cv_os_type" = "MingW" ; then
1181     GV=`echo $GV | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1182   fi
1183   AC_DEFINE_UNQUOTED([LLVM_PATH_GV],"$GV${EXEEXT}",
1184    [Define to path to gv program if found or 'echo gv' otherwise])
1185 fi
1186 AC_PATH_PROG(DOTTY, [dotty], [echo dotty])
1187 if test "$DOTTY" != "echo dotty" ; then
1188   AC_DEFINE([HAVE_DOTTY],[1],[Define if the dotty program is available])
1189   dnl If we're targeting for mingw we should emit windows paths, not msys
1190   if test "$llvm_cv_os_type" = "MingW" ; then
1191     DOTTY=`echo $DOTTY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1192   fi
1193   AC_DEFINE_UNQUOTED([LLVM_PATH_DOTTY],"$DOTTY${EXEEXT}",
1194    [Define to path to dotty program if found or 'echo dotty' otherwise])
1195 fi
1196 AC_PATH_PROG(XDOT_PY, [xdot.py], [echo xdot.py])
1197 if test "$XDOT_PY" != "echo xdot.py" ; then
1198   AC_DEFINE([HAVE_XDOT_PY],[1],[Define if the xdot.py program is available])
1199   dnl If we're targeting for mingw we should emit windows paths, not msys
1200   if test "$llvm_cv_os_type" = "MingW" ; then
1201     XDOT_PY=`echo $XDOT_PY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1202   fi
1203   AC_DEFINE_UNQUOTED([LLVM_PATH_XDOT_PY],"$XDOT_PY${EXEEXT}",
1204    [Define to path to xdot.py program if found or 'echo xdot.py' otherwise])
1205 fi
1206
1207 dnl Find the install program
1208 AC_PROG_INSTALL
1209 dnl Prepend src dir to install path dir if it's a relative path
1210 dnl This is a hack for installs that take place in something other
1211 dnl than the top level.
1212 case "$INSTALL" in
1213  [[\\/$]]* | ?:[[\\/]]* ) ;;
1214  *)  INSTALL="\\\$(TOPSRCDIR)/$INSTALL" ;;
1215 esac
1216
1217 dnl Checks for documentation and testing tools that we can do without. If these
1218 dnl are not found then they are set to "true" which always succeeds but does
1219 dnl nothing. This just lets the build output show that we could have done
1220 dnl something if the tool was available.
1221 AC_PATH_PROG(BZIP2, [bzip2])
1222 AC_PATH_PROG(CAT, [cat])
1223 AC_PATH_PROG(DOXYGEN, [doxygen])
1224 AC_PATH_PROG(GROFF, [groff])
1225 AC_PATH_PROG(GZIPBIN, [gzip])
1226 AC_PATH_PROG(PDFROFF, [pdfroff])
1227 AC_PATH_PROG(ZIP, [zip])
1228 AC_PATH_PROGS(OCAMLC, [ocamlc])
1229 AC_PATH_PROGS(OCAMLOPT, [ocamlopt])
1230 AC_PATH_PROGS(OCAMLDEP, [ocamldep])
1231 AC_PATH_PROGS(OCAMLDOC, [ocamldoc])
1232 AC_PATH_PROGS(GAS, [gas as])
1233
1234 dnl Get the version of the linker in use.
1235 AC_LINK_GET_VERSION
1236
1237 dnl Determine whether the linker supports the -R option.
1238 AC_LINK_USE_R
1239
1240 dnl Determine whether the linker supports the -export-dynamic option.
1241 AC_LINK_EXPORT_DYNAMIC
1242
1243 dnl Determine whether the linker supports the --version-script option.
1244 AC_LINK_VERSION_SCRIPT
1245
1246 dnl Check for libtool and the library that has dlopen function (which must come
1247 dnl before the AC_PROG_LIBTOOL check in order to enable dlopening libraries with
1248 dnl libtool).
1249 AC_LIBTOOL_DLOPEN
1250 AC_LIB_LTDL
1251
1252 AC_MSG_CHECKING([tool compatibility])
1253
1254 dnl Ensure that compilation tools are GCC or a GNU compatible compiler such as
1255 dnl ICC; we use GCC specific options in the makefiles so the compiler needs
1256 dnl to support those options.
1257 dnl "icc" emits gcc signatures
1258 dnl "icc -no-gcc" emits no gcc signature BUT is still compatible
1259 ICC=no
1260 IXX=no
1261 case $CC in
1262   icc*|icpc*)
1263     ICC=yes
1264     IXX=yes
1265     ;;
1266    *)
1267     ;;
1268 esac
1269
1270 if test "$GCC" != "yes" && test "$ICC" != "yes"
1271 then
1272   AC_MSG_ERROR([gcc|icc required but not found])
1273 fi
1274
1275 dnl Ensure that compilation tools are compatible with GCC extensions
1276 if test "$GXX" != "yes" && test "$IXX" != "yes"
1277 then
1278   AC_MSG_ERROR([g++|clang++|icc required but not found])
1279 fi
1280
1281 dnl Verify that GCC is version 3.0 or higher
1282 if test "$GCC" = "yes"
1283 then
1284   AC_COMPILE_IFELSE(
1285 [
1286   AC_LANG_SOURCE([[
1287     #if !defined(__GNUC__) || __GNUC__ < 3
1288     #error Unsupported GCC version
1289     #endif
1290   ]])
1291 ],
1292 [], [AC_MSG_ERROR([gcc 3.x required, but you have a lower version])])
1293 fi
1294
1295 dnl Check for GNU Make.  We use its extensions, so don't build without it
1296 if test -z "$llvm_cv_gnu_make_command"
1297 then
1298   AC_MSG_ERROR([GNU Make required but not found])
1299 fi
1300
1301 dnl Tool compatibility is okay if we make it here.
1302 AC_MSG_RESULT([ok])
1303
1304 dnl Check optional compiler flags.
1305 AC_MSG_CHECKING([optional compiler flags])
1306 CXX_FLAG_CHECK(NO_VARIADIC_MACROS, [-Wno-variadic-macros])
1307 CXX_FLAG_CHECK(NO_MISSING_FIELD_INITIALIZERS, [-Wno-missing-field-initializers])
1308 CXX_FLAG_CHECK(COVERED_SWITCH_DEFAULT, [-Wcovered-switch-default])
1309
1310 dnl GCC's potential uninitialized use analysis is weak and presents lots of
1311 dnl false positives, so disable it.
1312 NO_UNINITIALIZED=
1313 NO_MAYBE_UNINITIALIZED=
1314 if test "$GXX" = "yes"
1315 then
1316   CXX_FLAG_CHECK(NO_MAYBE_UNINITIALIZED, [-Wno-maybe-uninitialized])
1317   dnl gcc 4.7 introduced -Wmaybe-uninitialized to distinguish cases which are
1318   dnl known to be uninitialized from cases which might be uninitialized.  We
1319   dnl still want to catch the first kind of errors.
1320   if test -z "$NO_MAYBE_UNINITIALIZED"
1321   then
1322     CXX_FLAG_CHECK(NO_UNINITIALIZED, [-Wno-uninitialized])
1323   fi
1324 fi
1325 AC_MSG_RESULT([$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED $NO_MAYBE_UNINITIALIZED])
1326
1327 AC_ARG_WITH([python],
1328             [AS_HELP_STRING([--with-python], [path to python])],
1329             [PYTHON="$withval"])
1330
1331 if test -n "$PYTHON" && test -x "$PYTHON" ; then
1332   AC_MSG_CHECKING([for python])
1333   AC_MSG_RESULT([user defined: $with_python])
1334 else
1335   if test -n "$PYTHON" ; then
1336     AC_MSG_WARN([specified python ($PYTHON) is not usable, searching path])
1337   fi
1338
1339   AC_PATH_PROG([PYTHON], [python python2 python26],
1340                [AC_MSG_RESULT([not found])
1341                 AC_MSG_ERROR([could not find python 2.5 or higher])])
1342 fi
1343
1344 AC_MSG_CHECKING([for python >= 2.5])
1345 ac_python_version=`$PYTHON -c 'import sys; print sys.version.split()[[0]]'`
1346 ac_python_version_major=`echo $ac_python_version | cut -d'.' -f1`
1347 ac_python_version_minor=`echo $ac_python_version | cut -d'.' -f2`
1348 ac_python_version_patch=`echo $ac_python_version | cut -d'.' -f3`
1349 if   test "$ac_python_version_major" -eq "2" \
1350    && test "$ac_python_version_minor" -ge "5" ; then
1351   AC_MSG_RESULT([$PYTHON ($ac_python_version)])
1352 else
1353   AC_MSG_RESULT([not found])
1354   AC_MSG_FAILURE([found python $ac_python_version ($PYTHON); required >= 2.5])
1355 fi
1356
1357 dnl===-----------------------------------------------------------------------===
1358 dnl===
1359 dnl=== SECTION 5: Check for libraries
1360 dnl===
1361 dnl===-----------------------------------------------------------------------===
1362
1363 AC_CHECK_LIB(m,sin)
1364 if test "$llvm_cv_os_type" = "MingW" ; then
1365   AC_CHECK_LIB(imagehlp, main)
1366   AC_CHECK_LIB(psapi, main)
1367 fi
1368
1369 dnl dlopen() is required for plugin support.
1370 AC_SEARCH_LIBS(dlopen,dl,AC_DEFINE([HAVE_DLOPEN],[1],
1371                [Define if dlopen() is available on this platform.]),
1372                AC_MSG_WARN([dlopen() not found - disabling plugin support]))
1373
1374 dnl Search for the clock_gettime() function. Note that we rely on the POSIX
1375 dnl macros to detect whether clock_gettime is available, this just finds the
1376 dnl right libraries to link with.
1377 AC_SEARCH_LIBS(clock_gettime,rt)
1378
1379 dnl libffi is optional; used to call external functions from the interpreter
1380 if test "$llvm_cv_enable_libffi" = "yes" ; then
1381   AC_SEARCH_LIBS(ffi_call,ffi,AC_DEFINE([HAVE_FFI_CALL],[1],
1382                  [Define if libffi is available on this platform.]),
1383                  AC_MSG_ERROR([libffi not found - configure without --enable-libffi to compile without it]))
1384 fi
1385
1386 dnl mallinfo is optional; the code can compile (minus features) without it
1387 AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1],
1388                [Define if mallinfo() is available on this platform.]))
1389
1390 dnl pthread locking functions are optional - but llvm will not be thread-safe
1391 dnl without locks.
1392 if test "$LLVM_ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then
1393   AC_CHECK_LIB(pthread, pthread_mutex_init)
1394   AC_SEARCH_LIBS(pthread_mutex_lock,pthread,
1395                  AC_DEFINE([HAVE_PTHREAD_MUTEX_LOCK],[1],
1396                            [Have pthread_mutex_lock]))
1397   AC_SEARCH_LIBS(pthread_rwlock_init,pthread,
1398                  AC_DEFINE([HAVE_PTHREAD_RWLOCK_INIT],[1],
1399                  [Have pthread_rwlock_init]))
1400   AC_SEARCH_LIBS(pthread_getspecific,pthread,
1401                  AC_DEFINE([HAVE_PTHREAD_GETSPECIFIC],[1],
1402                  [Have pthread_getspecific]))
1403 fi
1404
1405 dnl zlib is optional; used for compression/uncompression
1406 if test "$LLVM_ENABLE_ZLIB" -eq 1 ; then
1407   AC_CHECK_LIB(z, compress2)
1408 fi
1409
1410 dnl Allow extra x86-disassembler library
1411 AC_ARG_WITH(udis86,
1412   AS_HELP_STRING([--with-udis86=<path>],
1413     [Use udis86 external x86 disassembler library]),
1414     [
1415       AC_SUBST(USE_UDIS86, [1])
1416       case "$withval" in
1417         /usr/lib|yes) ;;
1418         *) LDFLAGS="$LDFLAGS -L${withval}" ;;
1419       esac
1420       AC_CHECK_LIB(udis86, ud_init, [], [
1421         echo "Error! You need to have libudis86 around."
1422         exit -1
1423       ])
1424     ],
1425     AC_SUBST(USE_UDIS86, [0]))
1426 AC_DEFINE_UNQUOTED([USE_UDIS86],$USE_UDIS86,
1427                    [Define if use udis86 library])
1428
1429 dnl Allow OProfile support for JIT output.
1430 AC_ARG_WITH(oprofile,
1431   AS_HELP_STRING([--with-oprofile=<prefix>],
1432     [Tell OProfile >= 0.9.4 how to symbolize JIT output]),
1433     [
1434       AC_SUBST(USE_OPROFILE, [1])
1435       case "$withval" in
1436         /usr|yes) llvm_cv_oppath=/usr/lib/oprofile ;;
1437         no) llvm_cv_oppath=
1438             AC_SUBST(USE_OPROFILE, [0]) ;;
1439         *) llvm_cv_oppath="${withval}/lib/oprofile"
1440            CPPFLAGS="-I${withval}/include";;
1441       esac
1442       case $llvm_cv_os_type in
1443         Linux)
1444           if test -n "$llvm_cv_oppath" ; then
1445             LIBS="$LIBS -lopagent -L${llvm_cv_oppath} -Wl,-rpath,${llvm_cv_oppath}"
1446             dnl Work around http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=537744:
1447             dnl libbfd is not included properly in libopagent in some Debian
1448             dnl versions.  If libbfd isn't found at all, we assume opagent works
1449             dnl anyway.
1450             AC_SEARCH_LIBS(bfd_init, bfd, [], [])
1451             AC_SEARCH_LIBS(op_open_agent, opagent, [], [
1452               echo "Error! You need to have libopagent around."
1453               exit -1
1454             ])
1455             AC_CHECK_HEADER([opagent.h], [], [
1456               echo "Error! You need to have opagent.h around."
1457               exit -1
1458               ])
1459           fi ;;
1460         *)
1461           AC_MSG_ERROR([OProfile support is available on Linux only.]) ;;
1462       esac 
1463     ],
1464     [
1465       AC_SUBST(USE_OPROFILE, [0])
1466     ])
1467 AC_DEFINE_UNQUOTED([LLVM_USE_OPROFILE],$USE_OPROFILE,
1468                    [Define if we have the oprofile JIT-support library])
1469
1470 dnl Enable support for Intel JIT Events API.
1471 AC_ARG_WITH(intel-jitevents,
1472   AS_HELP_STRING([--with-intel-jitevents  Notify Intel JIT profiling API of generated code]),
1473     [
1474        case "$withval" in
1475           yes) AC_SUBST(USE_INTEL_JITEVENTS,[1]);;
1476           no)  AC_SUBST(USE_INTEL_JITEVENTS,[0]);;
1477           *) AC_MSG_ERROR([Invalid setting for --with-intel-jitevents. Use "yes" or "no"]);;
1478        esac
1479
1480       case $llvm_cv_os_type in
1481         Linux|Win32|Cygwin|MingW) ;;
1482         *) AC_MSG_ERROR([Intel JIT API support is available on Linux and Windows only.]);;
1483       esac
1484
1485       case "$llvm_cv_target_arch" in
1486         x86|x86_64) ;;
1487         *) AC_MSG_ERROR([Target architecture $llvm_cv_target_arch does not support Intel JIT Events API.]);;
1488       esac
1489     ],
1490     [
1491       AC_SUBST(USE_INTEL_JITEVENTS, [0])
1492     ])
1493 AC_DEFINE_UNQUOTED([LLVM_USE_INTEL_JITEVENTS],$USE_INTEL_JITEVENTS,
1494                    [Define if we have the Intel JIT API runtime support library])
1495
1496 dnl Check for libxml2
1497 dnl Right now we're just checking for the existence, we could also check for a
1498 dnl particular version via --version on xml2-config
1499 AC_CHECK_PROGS(XML2CONFIG, xml2-config)
1500
1501 AC_MSG_CHECKING(for libxml2 includes)
1502 if test "x$XML2CONFIG" = "x"; then
1503  AC_MSG_RESULT(xml2-config not found)
1504 else
1505  LIBXML2_INC=`$XML2CONFIG --cflags`
1506  AC_MSG_RESULT($LIBXML2_INC)
1507  AC_CHECK_LIB(xml2, xmlReadFile,[AC_DEFINE([CLANG_HAVE_LIBXML],1,[Define if we have libxml2])
1508                                 LIBXML2_LIBS="-lxml2"])
1509 fi
1510 AC_SUBST(LIBXML2_LIBS)
1511 AC_SUBST(LIBXML2_INC)
1512
1513 dnl===-----------------------------------------------------------------------===
1514 dnl===
1515 dnl=== SECTION 6: Check for header files
1516 dnl===
1517 dnl===-----------------------------------------------------------------------===
1518
1519 dnl First, use autoconf provided macros for specific headers that we need
1520 dnl We don't check for ancient stuff or things that are guaranteed to be there
1521 dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers.
1522 dnl Generally we're looking for POSIX headers.
1523 AC_HEADER_DIRENT
1524 AC_HEADER_MMAP_ANONYMOUS
1525 AC_HEADER_STAT
1526 AC_HEADER_SYS_WAIT
1527 AC_HEADER_TIME
1528
1529 AC_LANG_PUSH([C++])
1530 AC_CHECK_HEADERS([cxxabi.h])
1531 AC_LANG_POP([C++])
1532 AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h inttypes.h limits.h link.h])
1533 AC_CHECK_HEADERS([malloc.h setjmp.h signal.h stdint.h termios.h unistd.h])
1534 AC_CHECK_HEADERS([utime.h windows.h])
1535 AC_CHECK_HEADERS([sys/mman.h sys/param.h sys/resource.h sys/time.h sys/uio.h])
1536 AC_CHECK_HEADERS([sys/types.h sys/ioctl.h malloc/malloc.h mach/mach.h])
1537 AC_CHECK_HEADERS([valgrind/valgrind.h])
1538 AC_CHECK_HEADERS([fenv.h])
1539 AC_CHECK_DECLS([FE_ALL_EXCEPT, FE_INEXACT], [], [], [[#include <fenv.h>]])
1540 if test "$LLVM_ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then
1541   AC_CHECK_HEADERS(pthread.h,
1542                    AC_SUBST(HAVE_PTHREAD, 1),
1543                    AC_SUBST(HAVE_PTHREAD, 0))
1544 else
1545   AC_SUBST(HAVE_PTHREAD, 0)
1546 fi
1547 if test "$LLVM_ENABLE_ZLIB" -eq 1 ; then
1548   AC_CHECK_HEADERS(zlib.h,
1549                    AC_SUBST(HAVE_LIBZ, 1),
1550                    AC_SUBST(HAVE_LIBZ, 0))
1551 else
1552   AC_SUBST(HAVE_LIBZ, 0)
1553 fi
1554
1555 dnl Try to find ffi.h.
1556 if test "$llvm_cv_enable_libffi" = "yes" ; then
1557   AC_CHECK_HEADERS([ffi.h ffi/ffi.h])
1558 fi
1559
1560 dnl Try to find Darwin specific crash reporting libraries.
1561 AC_CHECK_HEADERS([CrashReporterClient.h])
1562
1563 dnl Try to find Darwin specific crash reporting global.
1564 AC_MSG_CHECKING([__crashreporter_info__])
1565 AC_LINK_IFELSE(
1566 [
1567   AC_LANG_SOURCE([[
1568     extern const char *__crashreporter_info__;
1569     int main() {
1570       __crashreporter_info__ = "test";
1571       return 0;
1572     }
1573   ]])
1574 ],
1575 [
1576   AC_MSG_RESULT([yes])
1577   AC_DEFINE([HAVE_CRASHREPORTER_INFO], [1], [can use __crashreporter_info__])
1578 ],
1579 [
1580   AC_MSG_RESULT([no])
1581   AC_DEFINE([HAVE_CRASHREPORTER_INFO], [0], [can use __crashreporter_info__])
1582 ])
1583
1584 dnl===-----------------------------------------------------------------------===
1585 dnl===
1586 dnl=== SECTION 7: Check for types and structures
1587 dnl===
1588 dnl===-----------------------------------------------------------------------===
1589
1590 AC_HUGE_VAL_CHECK
1591 AC_TYPE_PID_T
1592 AC_TYPE_SIZE_T
1593 AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[Define as the return type of signal handlers (`int' or `void').])
1594 AC_STRUCT_TM
1595 AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
1596 AC_CHECK_TYPES([uint64_t],,
1597          AC_CHECK_TYPES([u_int64_t],,
1598          AC_MSG_ERROR([Type uint64_t or u_int64_t required but not found])))
1599
1600 dnl===-----------------------------------------------------------------------===
1601 dnl===
1602 dnl=== SECTION 8: Check for specific functions needed
1603 dnl===
1604 dnl===-----------------------------------------------------------------------===
1605
1606 AC_CHECK_FUNCS([backtrace ceilf floorf roundf rintf nearbyintf getcwd ])
1607 AC_CHECK_FUNCS([powf fmodf strtof round ])
1608 AC_CHECK_FUNCS([log log2 log10 exp exp2])
1609 AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday ])
1610 AC_CHECK_FUNCS([isatty mkdtemp mkstemp ])
1611 AC_CHECK_FUNCS([mktemp posix_spawn pread realpath sbrk setrlimit strdup ])
1612 AC_CHECK_FUNCS([strerror strerror_r setenv arc4random ])
1613 AC_CHECK_FUNCS([strtoll strtoq sysconf malloc_zone_statistics ])
1614 AC_CHECK_FUNCS([setjmp longjmp sigsetjmp siglongjmp writev])
1615 AC_C_PRINTF_A
1616 AC_FUNC_RAND48
1617
1618 dnl Check the declaration "Secure API" on Windows environments.
1619 AC_CHECK_DECLS([strerror_s])
1620
1621 dnl Check symbols in libgcc.a for JIT on Mingw.
1622 if test "$llvm_cv_os_type" = "MingW" ; then
1623   AC_CHECK_LIB(gcc,_alloca,AC_DEFINE([HAVE__ALLOCA],[1],[Have host's _alloca]))
1624   AC_CHECK_LIB(gcc,__alloca,AC_DEFINE([HAVE___ALLOCA],[1],[Have host's __alloca]))
1625   AC_CHECK_LIB(gcc,__chkstk,AC_DEFINE([HAVE___CHKSTK],[1],[Have host's __chkstk]))
1626   AC_CHECK_LIB(gcc,___chkstk,AC_DEFINE([HAVE____CHKSTK],[1],[Have host's ___chkstk]))
1627
1628   AC_CHECK_LIB(gcc,__ashldi3,AC_DEFINE([HAVE___ASHLDI3],[1],[Have host's __ashldi3]))
1629   AC_CHECK_LIB(gcc,__ashrdi3,AC_DEFINE([HAVE___ASHRDI3],[1],[Have host's __ashrdi3]))
1630   AC_CHECK_LIB(gcc,__divdi3,AC_DEFINE([HAVE___DIVDI3],[1],[Have host's __divdi3]))
1631   AC_CHECK_LIB(gcc,__fixdfdi,AC_DEFINE([HAVE___FIXDFDI],[1],[Have host's __fixdfdi]))
1632   AC_CHECK_LIB(gcc,__fixsfdi,AC_DEFINE([HAVE___FIXSFDI],[1],[Have host's __fixsfdi]))
1633   AC_CHECK_LIB(gcc,__floatdidf,AC_DEFINE([HAVE___FLOATDIDF],[1],[Have host's __floatdidf]))
1634   AC_CHECK_LIB(gcc,__lshrdi3,AC_DEFINE([HAVE___LSHRDI3],[1],[Have host's __lshrdi3]))
1635   AC_CHECK_LIB(gcc,__moddi3,AC_DEFINE([HAVE___MODDI3],[1],[Have host's __moddi3]))
1636   AC_CHECK_LIB(gcc,__udivdi3,AC_DEFINE([HAVE___UDIVDI3],[1],[Have host's __udivdi3]))
1637   AC_CHECK_LIB(gcc,__umoddi3,AC_DEFINE([HAVE___UMODDI3],[1],[Have host's __umoddi3]))
1638
1639   AC_CHECK_LIB(gcc,__main,AC_DEFINE([HAVE___MAIN],[1],[Have host's __main]))
1640   AC_CHECK_LIB(gcc,__cmpdi2,AC_DEFINE([HAVE___CMPDI2],[1],[Have host's __cmpdi2]))
1641 fi
1642
1643 dnl Check Win32 API EnumerateLoadedModules.
1644 if test "$llvm_cv_os_type" = "MingW" ; then
1645   AC_MSG_CHECKING([whether EnumerateLoadedModules() accepts new decl])
1646   AC_COMPILE_IFELSE(
1647 [
1648   AC_LANG_SOURCE([[
1649     #include <windows.h>
1650     #include <imagehlp.h>
1651     extern void foo(PENUMLOADED_MODULES_CALLBACK);
1652     extern void foo(BOOL(CALLBACK*)(PCSTR,ULONG_PTR,ULONG,PVOID));
1653   ]])
1654 ],
1655 [
1656   AC_MSG_RESULT([yes])
1657   llvm_cv_win32_elmcb_pcstr="PCSTR"
1658 ],
1659 [
1660   AC_MSG_RESULT([no])
1661   llvm_cv_win32_elmcb_pcstr="PSTR"
1662 ])
1663   AC_DEFINE_UNQUOTED([WIN32_ELMCB_PCSTR],$llvm_cv_win32_elmcb_pcstr,[Type of 1st arg on ELM Callback])
1664 fi
1665
1666 dnl Check for variations in the Standard C++ library and STL. These macros are
1667 dnl provided by LLVM in the autoconf/m4 directory.
1668 AC_FUNC_ISNAN
1669 AC_FUNC_ISINF
1670
1671 dnl Check for mmap support.We also need to know if /dev/zero is required to
1672 dnl be opened for allocating RWX memory.
1673 dnl Make sure we aren't attempting to configure for an unknown system
1674 if test "$llvm_cv_platform_type" = "Unix" ; then
1675   AC_FUNC_MMAP
1676   AC_FUNC_MMAP_FILE
1677   AC_NEED_DEV_ZERO_FOR_MMAP
1678
1679   if test "$ac_cv_func_mmap_fixed_mapped" = "no"
1680   then
1681     AC_MSG_WARN([mmap() of a fixed address required but not supported])
1682   fi
1683   if test "$ac_cv_func_mmap_file" = "no"
1684   then
1685     AC_MSG_WARN([mmap() of files required but not found])
1686   fi
1687 fi
1688
1689 dnl atomic builtins are required for threading support.
1690 AC_MSG_CHECKING(for GCC atomic builtins)
1691 dnl Since we'll be using these atomic builtins in C++ files we should test
1692 dnl the C++ compiler.
1693 AC_LANG_PUSH([C++])
1694 AC_LINK_IFELSE(
1695 [
1696   AC_LANG_SOURCE([[
1697     int main() {
1698       volatile unsigned long val = 1;
1699       __sync_synchronize();
1700       __sync_val_compare_and_swap(&val, 1, 0);
1701       __sync_add_and_fetch(&val, 1);
1702       __sync_sub_and_fetch(&val, 1);
1703       return 0;
1704     }
1705   ]])
1706 ],
1707 [
1708   AC_MSG_RESULT([yes])
1709   AC_DEFINE([LLVM_HAS_ATOMICS], [1], [Has gcc/MSVC atomic intrinsics])
1710 ],
1711 [
1712   AC_MSG_RESULT([no])
1713   AC_DEFINE([LLVM_HAS_ATOMICS], [0], [Has gcc/MSVC atomic intrinsics])
1714   AC_MSG_WARN([LLVM will be built thread-unsafe because atomic builtins are missing])
1715 ])
1716 AC_LANG_POP([C++])
1717
1718 dnl===-----------------------------------------------------------------------===
1719 dnl===
1720 dnl=== SECTION 9: Additional checks, variables, etc.
1721 dnl===
1722 dnl===-----------------------------------------------------------------------===
1723
1724 dnl Handle 32-bit linux systems running a 64-bit kernel.
1725 dnl This has to come after section 4 because it invokes the compiler.
1726 if test "$llvm_cv_os_type" = "Linux" -a "$llvm_cv_target_arch" = "x86_64" ; then
1727   AC_IS_LINUX_MIXED
1728   if test "$llvm_cv_linux_mixed" = "yes"; then
1729     llvm_cv_target_arch="x86"
1730     ARCH="x86"
1731   fi
1732 fi
1733
1734 dnl Check whether __dso_handle is present
1735 AC_CHECK_FUNCS([__dso_handle])
1736
1737 dnl Propagate the shared library extension that the libltdl checks did to
1738 dnl the Makefiles so we can use it there too
1739 AC_SUBST(SHLIBEXT,$libltdl_cv_shlibext)
1740
1741 dnl Propagate the run-time library path variable that the libltdl
1742 dnl checks found to the Makefiles so we can use it there too
1743 AC_SUBST(SHLIBPATH_VAR,$libltdl_cv_shlibpath_var)
1744
1745 dnl Translate the various configuration directories and other basic
1746 dnl information into substitutions that will end up in Makefile.config.in
1747 dnl that these configured values can be used by the makefiles
1748 if test "${prefix}" = "NONE" ; then
1749   prefix="/usr/local"
1750 fi
1751 eval LLVM_PREFIX="${prefix}";
1752 eval LLVM_BINDIR="${prefix}/bin";
1753 eval LLVM_DATADIR="${prefix}/share/llvm";
1754 eval LLVM_DOCSDIR="${prefix}/share/doc/llvm";
1755 eval LLVM_ETCDIR="${prefix}/etc/llvm";
1756 eval LLVM_INCLUDEDIR="${prefix}/include";
1757 eval LLVM_INFODIR="${prefix}/info";
1758 eval LLVM_MANDIR="${prefix}/man";
1759 LLVM_CONFIGTIME=`date`
1760 AC_SUBST(LLVM_PREFIX)
1761 AC_SUBST(LLVM_BINDIR)
1762 AC_SUBST(LLVM_DATADIR)
1763 AC_SUBST(LLVM_DOCSDIR)
1764 AC_SUBST(LLVM_ETCDIR)
1765 AC_SUBST(LLVM_INCLUDEDIR)
1766 AC_SUBST(LLVM_INFODIR)
1767 AC_SUBST(LLVM_MANDIR)
1768 AC_SUBST(LLVM_CONFIGTIME)
1769
1770 dnl Disable embedding timestamps in the build directory, with ENABLE_TIMESTAMPS.
1771 if test "${ENABLE_TIMESTAMPS}" = "0"; then
1772   LLVM_CONFIGTIME="(timestamp not enabled)"
1773 fi
1774
1775 dnl Place the various directories into the config.h file as #defines so that we
1776 dnl can know about the installation paths within LLVM.
1777 AC_DEFINE_UNQUOTED(LLVM_PREFIX,"$LLVM_PREFIX",
1778                    [Installation prefix directory])
1779 AC_DEFINE_UNQUOTED(LLVM_BINDIR, "$LLVM_BINDIR",
1780                    [Installation directory for binary executables])
1781 AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DATADIR",
1782                    [Installation directory for data files])
1783 AC_DEFINE_UNQUOTED(LLVM_DOCSDIR, "$LLVM_DOCSDIR",
1784                    [Installation directory for documentation])
1785 AC_DEFINE_UNQUOTED(LLVM_ETCDIR, "$LLVM_ETCDIR",
1786                    [Installation directory for config files])
1787 AC_DEFINE_UNQUOTED(LLVM_INCLUDEDIR, "$LLVM_INCLUDEDIR",
1788                    [Installation directory for include files])
1789 AC_DEFINE_UNQUOTED(LLVM_INFODIR, "$LLVM_INFODIR",
1790                    [Installation directory for .info files])
1791 AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR",
1792                    [Installation directory for man pages])
1793 AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME",
1794                    [Time at which LLVM was configured])
1795 AC_DEFINE_UNQUOTED(LLVM_HOST_TRIPLE, "$host",
1796                    [Host triple LLVM will be executed on])
1797 AC_DEFINE_UNQUOTED(LLVM_DEFAULT_TARGET_TRIPLE, "$target",
1798                    [Target triple LLVM will generate code for by default])
1799
1800 dnl Determine which bindings to build.
1801 if test "$BINDINGS_TO_BUILD" = auto ; then
1802   BINDINGS_TO_BUILD=""
1803   if test "x$OCAMLC" != x -a "x$OCAMLDEP" != x ; then
1804     BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD"
1805   fi
1806 fi
1807 AC_SUBST(BINDINGS_TO_BUILD,$BINDINGS_TO_BUILD)
1808
1809 dnl This isn't really configurey, but it avoids having to repeat the list in
1810 dnl other files.
1811 AC_SUBST(ALL_BINDINGS,ocaml)
1812
1813 dnl Do any work necessary to ensure that bindings have what they need.
1814 binding_prereqs_failed=0
1815 for a_binding in $BINDINGS_TO_BUILD ; do
1816   case "$a_binding" in
1817   ocaml)
1818     if test "x$OCAMLC" = x ; then
1819       AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlc not found. Try configure OCAMLC=/path/to/ocamlc])
1820       binding_prereqs_failed=1
1821     fi
1822     if test "x$OCAMLDEP" = x ; then
1823       AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamldep not found. Try configure OCAMLDEP=/path/to/ocamldep])
1824       binding_prereqs_failed=1
1825     fi
1826     if test "x$OCAMLOPT" = x ; then
1827       AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlopt not found. Try configure OCAMLOPT=/path/to/ocamlopt])
1828       dnl ocamlopt is optional!
1829     fi
1830     if test "x$with_ocaml_libdir" != xauto ; then
1831       AC_SUBST(OCAML_LIBDIR,$with_ocaml_libdir)
1832     else
1833       ocaml_stdlib="`"$OCAMLC" -where`"
1834       if test "$LLVM_PREFIX" '<' "$ocaml_stdlib" -a "$ocaml_stdlib" '<' "$LLVM_PREFIX~"
1835       then
1836         # ocaml stdlib is beneath our prefix; use stdlib
1837         AC_SUBST(OCAML_LIBDIR,$ocaml_stdlib)
1838       else
1839         # ocaml stdlib is outside our prefix; use libdir/ocaml
1840         AC_SUBST(OCAML_LIBDIR,${prefix}/lib/ocaml)
1841       fi
1842     fi
1843     ;;
1844   esac
1845 done
1846 if test "$binding_prereqs_failed" = 1 ; then
1847   AC_MSG_ERROR([Prequisites for bindings not satisfied. Fix them or use configure --disable-bindings.])
1848 fi
1849
1850 dnl Determine whether the compiler supports -fvisibility-inlines-hidden.
1851 AC_CXX_USE_VISIBILITY_INLINES_HIDDEN
1852
1853 dnl Determine linker rpath flag
1854 if test "$llvm_cv_link_use_r" = "yes" ; then
1855   RPATH="-Wl,-R"
1856 else
1857   RPATH="-Wl,-rpath"
1858 fi
1859 AC_SUBST(RPATH)
1860
1861 dnl Determine linker rdynamic flag
1862 if test "$llvm_cv_link_use_export_dynamic" = "yes" ; then
1863   RDYNAMIC="-Wl,-export-dynamic"
1864 else
1865   RDYNAMIC=""
1866 fi
1867 AC_SUBST(RDYNAMIC)
1868
1869 dnl===-----------------------------------------------------------------------===
1870 dnl===
1871 dnl=== SECTION 10: Specify the output files and generate it
1872 dnl===
1873 dnl===-----------------------------------------------------------------------===
1874
1875 dnl Configure header files
1876 dnl WARNING: dnl If you add or remove any of the following config headers, then
1877 dnl you MUST also update Makefile so that the variable FilesToConfig
1878 dnl contains the same list of files as AC_CONFIG_HEADERS below. This ensures the
1879 dnl files can be updated automatically when their *.in sources change.
1880 AC_CONFIG_HEADERS([include/llvm/Config/config.h include/llvm/Config/llvm-config.h])
1881 AH_TOP([#ifndef CONFIG_H
1882 #define CONFIG_H])
1883 AH_BOTTOM([#endif])
1884
1885 AC_CONFIG_FILES([include/llvm/Config/Targets.def])
1886 AC_CONFIG_FILES([include/llvm/Config/AsmPrinters.def])
1887 AC_CONFIG_FILES([include/llvm/Config/AsmParsers.def])
1888 AC_CONFIG_FILES([include/llvm/Config/Disassemblers.def])
1889 AC_CONFIG_HEADERS([include/llvm/Support/DataTypes.h])
1890
1891 dnl Configure the makefile's configuration data
1892 AC_CONFIG_FILES([Makefile.config])
1893
1894 dnl Configure the RPM spec file for LLVM
1895 AC_CONFIG_FILES([llvm.spec])
1896
1897 dnl Configure doxygen's configuration file
1898 AC_CONFIG_FILES([docs/doxygen.cfg])
1899
1900 dnl Configure clang, if present
1901 if test "${clang_src_root}" = ""; then
1902   clang_src_root="$srcdir/tools/clang"
1903 fi
1904 if test -f ${clang_src_root}/README.txt; then
1905   dnl Use variables to stay under 80 columns.
1906   configh="include/clang/Config/config.h"
1907   doxy="docs/doxygen.cfg"
1908   AC_CONFIG_HEADERS([tools/clang/${configh}:${clang_src_root}/${configh}.in])
1909   AC_CONFIG_FILES([tools/clang/${doxy}:${clang_src_root}/${doxy}.in])
1910 fi
1911
1912 dnl OCaml findlib META file
1913 AC_CONFIG_FILES([bindings/ocaml/llvm/META.llvm])
1914
1915 dnl Add --program-prefix value to Makefile.rules. Already an ARG variable.
1916 test "x$program_prefix" = "xNONE" && program_prefix=""
1917 AC_SUBST([program_prefix])
1918
1919
1920 dnl Do special configuration of Makefiles
1921 AC_CONFIG_COMMANDS([setup],,[llvm_src="${srcdir}"])
1922 AC_CONFIG_MAKEFILE(Makefile)
1923 AC_CONFIG_MAKEFILE(Makefile.common)
1924 AC_CONFIG_MAKEFILE(examples/Makefile)
1925 AC_CONFIG_MAKEFILE(lib/Makefile)
1926 AC_CONFIG_MAKEFILE(runtime/Makefile)
1927 AC_CONFIG_MAKEFILE(test/Makefile)
1928 AC_CONFIG_MAKEFILE(test/Makefile.tests)
1929 AC_CONFIG_MAKEFILE(unittests/Makefile)
1930 AC_CONFIG_MAKEFILE(tools/Makefile)
1931 AC_CONFIG_MAKEFILE(utils/Makefile)
1932 AC_CONFIG_MAKEFILE(projects/Makefile)
1933 AC_CONFIG_MAKEFILE(bindings/Makefile)
1934 AC_CONFIG_MAKEFILE(bindings/ocaml/Makefile.ocaml)
1935
1936 dnl Finally, crank out the output
1937 AC_OUTPUT