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