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