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