Recognize aarch64 for --enable-targets as advertised.
[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         aarch64)  TARGETS_TO_BUILD="AArch64 $TARGETS_TO_BUILD" ;;
792         arm)      TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
793         mips)     TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
794         mipsel)   TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
795         mips64)   TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
796         mips64el) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
797         xcore)    TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
798         msp430)   TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
799         cpp)      TARGETS_TO_BUILD="CppBackend $TARGETS_TO_BUILD" ;;
800         hexagon)  TARGETS_TO_BUILD="Hexagon $TARGETS_TO_BUILD" ;;
801         mblaze)   TARGETS_TO_BUILD="MBlaze $TARGETS_TO_BUILD" ;;
802         nvptx)    TARGETS_TO_BUILD="NVPTX $TARGETS_TO_BUILD" ;;
803         host) case "$llvm_cv_target_arch" in
804             x86)         TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
805             x86_64)      TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
806             Sparc)       TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;;
807             PowerPC)     TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
808             ARM)         TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
809             Mips)        TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
810             MBlaze)      TARGETS_TO_BUILD="MBlaze $TARGETS_TO_BUILD" ;;
811             XCore)       TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
812             MSP430)      TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
813             Hexagon)     TARGETS_TO_BUILD="Hexagon $TARGETS_TO_BUILD" ;;
814             NVPTX)       TARGETS_TO_BUILD="NVPTX $TARGETS_TO_BUILD" ;;
815             *)       AC_MSG_ERROR([Can not set target to build]) ;;
816           esac ;;
817         *) AC_MSG_ERROR([Unrecognized target $a_target]) ;;
818       esac
819   done
820   ;;
821 esac
822
823 AC_ARG_ENABLE([experimental-targets],AS_HELP_STRING([--enable-experimental-targets],
824     [Build experimental host targets: disable or target1,target2,...
825      (default=disable)]),,
826     enableval=disable)
827
828 if test ${enableval} != "disable"
829 then
830   TARGETS_TO_BUILD="$enableval $TARGETS_TO_BUILD"
831 fi
832
833 AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD)
834
835 dnl Determine whether we are building LLVM support for the native architecture.
836 dnl If so, define LLVM_NATIVE_ARCH to that LLVM target.
837 for a_target in $TARGETS_TO_BUILD; do
838   if test "$a_target" = "$LLVM_NATIVE_ARCH"; then
839     AC_DEFINE_UNQUOTED(LLVM_NATIVE_ARCH, $LLVM_NATIVE_ARCH,
840       [LLVM architecture name for the native architecture, if available])
841     LLVM_NATIVE_TARGET="LLVMInitialize${LLVM_NATIVE_ARCH}Target"
842     LLVM_NATIVE_TARGETINFO="LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo"
843     LLVM_NATIVE_TARGETMC="LLVMInitialize${LLVM_NATIVE_ARCH}TargetMC"
844     LLVM_NATIVE_ASMPRINTER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter"
845     if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then
846       LLVM_NATIVE_ASMPARSER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmParser"
847     fi
848     if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/Makefile ; then
849       LLVM_NATIVE_DISASSEMBLER="LLVMInitialize${LLVM_NATIVE_ARCH}Disassembler"
850     fi
851     AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGET, $LLVM_NATIVE_TARGET,
852       [LLVM name for the native Target init function, if available])
853     AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETINFO, $LLVM_NATIVE_TARGETINFO,
854       [LLVM name for the native TargetInfo init function, if available])
855     AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETMC, $LLVM_NATIVE_TARGETMC,
856       [LLVM name for the native target MC init function, if available])
857     AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPRINTER, $LLVM_NATIVE_ASMPRINTER,
858       [LLVM name for the native AsmPrinter init function, if available])
859     if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then
860       AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPARSER, $LLVM_NATIVE_ASMPARSER,
861        [LLVM name for the native AsmParser init function, if available])
862     fi
863     if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/Makefile ; then
864       AC_DEFINE_UNQUOTED(LLVM_NATIVE_DISASSEMBLER, $LLVM_NATIVE_DISASSEMBLER,
865        [LLVM name for the native Disassembler init function, if available])
866     fi
867   fi
868 done
869
870 dnl Build the LLVM_TARGET and LLVM_... macros for Targets.def and the individual
871 dnl target feature def files.
872 LLVM_ENUM_TARGETS=""
873 LLVM_ENUM_ASM_PRINTERS=""
874 LLVM_ENUM_ASM_PARSERS=""
875 LLVM_ENUM_DISASSEMBLERS=""
876 for target_to_build in $TARGETS_TO_BUILD; do
877   LLVM_ENUM_TARGETS="LLVM_TARGET($target_to_build) $LLVM_ENUM_TARGETS"
878   if test -f ${srcdir}/lib/Target/${target_to_build}/*AsmPrinter.cpp ; then
879     LLVM_ENUM_ASM_PRINTERS="LLVM_ASM_PRINTER($target_to_build) $LLVM_ENUM_ASM_PRINTERS";
880   fi
881   if test -f ${srcdir}/lib/Target/${target_to_build}/AsmParser/Makefile ; then
882     LLVM_ENUM_ASM_PARSERS="LLVM_ASM_PARSER($target_to_build) $LLVM_ENUM_ASM_PARSERS";
883   fi
884   if test -f ${srcdir}/lib/Target/${target_to_build}/Disassembler/Makefile ; then
885     LLVM_ENUM_DISASSEMBLERS="LLVM_DISASSEMBLER($target_to_build) $LLVM_ENUM_DISASSEMBLERS";
886   fi
887 done
888 AC_SUBST(LLVM_ENUM_TARGETS)
889 AC_SUBST(LLVM_ENUM_ASM_PRINTERS)
890 AC_SUBST(LLVM_ENUM_ASM_PARSERS)
891 AC_SUBST(LLVM_ENUM_DISASSEMBLERS)
892
893 dnl Override the option to use for optimized builds.
894 AC_ARG_WITH(optimize-option,
895   AS_HELP_STRING([--with-optimize-option],
896                  [Select the compiler options to use for optimized builds]),,
897                  withval=default)
898 AC_MSG_CHECKING([optimization flags])
899 case "$withval" in
900   default)
901     case "$llvm_cv_os_type" in
902     FreeBSD) optimize_option=-O2 ;;
903     MingW) optimize_option=-O2 ;;
904     *)     optimize_option=-O3 ;;
905     esac ;;
906   *) optimize_option="$withval" ;;
907 esac
908 AC_SUBST(OPTIMIZE_OPTION,$optimize_option)
909 AC_MSG_RESULT([$optimize_option])
910
911 dnl Specify extra build options
912 AC_ARG_WITH(extra-options,
913   AS_HELP_STRING([--with-extra-options],
914                  [Specify additional options to compile LLVM with]),,
915                  withval=default)
916 case "$withval" in
917   default) EXTRA_OPTIONS= ;;
918   *) EXTRA_OPTIONS=$withval ;;
919 esac
920 AC_SUBST(EXTRA_OPTIONS,$EXTRA_OPTIONS)
921
922 dnl Specify extra linker build options
923 AC_ARG_WITH(extra-ld-options,
924   AS_HELP_STRING([--with-extra-ld-options],
925                  [Specify additional options to link LLVM with]),,
926                  withval=default)
927 case "$withval" in
928   default) EXTRA_LD_OPTIONS= ;;
929   *) EXTRA_LD_OPTIONS=$withval ;;
930 esac
931 AC_SUBST(EXTRA_LD_OPTIONS,$EXTRA_LD_OPTIONS)
932
933 dnl Allow specific bindings to be specified for building (or not)
934 AC_ARG_ENABLE([bindings],AS_HELP_STRING([--enable-bindings],
935     [Build specific language bindings: all,auto,none,{binding-name} (default=auto)]),,
936     enableval=default)
937 BINDINGS_TO_BUILD=""
938 case "$enableval" in
939   yes | default | auto) BINDINGS_TO_BUILD="auto" ;;
940   all ) BINDINGS_TO_BUILD="ocaml" ;;
941   none | no) BINDINGS_TO_BUILD="" ;;
942   *)for a_binding in `echo $enableval|sed -e 's/,/ /g' ` ; do
943       case "$a_binding" in
944         ocaml) BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD" ;;
945         *) AC_MSG_ERROR([Unrecognized binding $a_binding]) ;;
946       esac
947   done
948   ;;
949 esac
950
951 dnl Allow the ocaml libdir to be overridden. This could go in a configure
952 dnl script for bindings/ocaml/configure, except that its auto value depends on
953 dnl OCAMLC, which is found here to support tests.
954 AC_ARG_WITH([ocaml-libdir],
955   [AS_HELP_STRING([--with-ocaml-libdir],
956     [Specify install location for ocaml bindings (default is stdlib)])],
957   [],
958   [withval=auto])
959 case "$withval" in
960   auto) with_ocaml_libdir="$withval" ;;
961   /* | [[A-Za-z]]:[[\\/]]*) with_ocaml_libdir="$withval" ;;
962   *) AC_MSG_ERROR([Invalid path for --with-ocaml-libdir. Provide full path]) ;;
963 esac
964
965 AC_ARG_WITH(clang-srcdir,
966   AS_HELP_STRING([--with-clang-srcdir],
967     [Directory to the out-of-tree Clang source]),,
968     withval="-")
969 case "$withval" in
970   -) clang_src_root="" ;;
971   /* | [[A-Za-z]]:[[\\/]]*) clang_src_root="$withval" ;;
972   *) clang_src_root="$ac_pwd/$withval" ;;
973 esac
974 AC_SUBST(CLANG_SRC_ROOT,[$clang_src_root])
975
976 AC_ARG_WITH(clang-resource-dir,
977   AS_HELP_STRING([--with-clang-resource-dir],
978     [Relative directory from the Clang binary for resource files]),,
979     withval="")
980 AC_DEFINE_UNQUOTED(CLANG_RESOURCE_DIR,"$withval",
981                    [Relative directory for resource files])
982
983 AC_ARG_WITH(c-include-dirs,
984   AS_HELP_STRING([--with-c-include-dirs],
985     [Colon separated list of directories clang will search for headers]),,
986     withval="")
987 AC_DEFINE_UNQUOTED(C_INCLUDE_DIRS,"$withval",
988                    [Directories clang will search for headers])
989
990 # Clang normally uses the system c++ headers and libraries. With this option,
991 # clang will use the ones provided by a gcc installation instead. This option should
992 # be passed the same value that was used with --prefix when configuring gcc.
993 AC_ARG_WITH(gcc-toolchain,
994   AS_HELP_STRING([--with-gcc-toolchain],
995     [Directory where gcc is installed.]),,
996     withval="")
997 AC_DEFINE_UNQUOTED(GCC_INSTALL_PREFIX,"$withval",
998                    [Directory where gcc is installed.])
999
1000 AC_ARG_WITH(default-sysroot,
1001   AS_HELP_STRING([--with-default-sysroot],
1002     [Add --sysroot=<path> to all compiler invocations.]),,
1003     withval="")
1004 AC_DEFINE_UNQUOTED(DEFAULT_SYSROOT,"$withval",
1005                    [Default <path> to all compiler invocations for --sysroot=<path>.])
1006
1007 dnl Allow linking of LLVM with GPLv3 binutils code.
1008 AC_ARG_WITH(binutils-include,
1009   AS_HELP_STRING([--with-binutils-include],
1010     [Specify path to binutils/include/ containing plugin-api.h file for gold plugin.]),,
1011   withval=default)
1012 case "$withval" in
1013   default) WITH_BINUTILS_INCDIR=default ;;
1014   /* | [[A-Za-z]]:[[\\/]]*)      WITH_BINUTILS_INCDIR=$withval ;;
1015   *) AC_MSG_ERROR([Invalid path for --with-binutils-include. Provide full path]) ;;
1016 esac
1017 if test "x$WITH_BINUTILS_INCDIR" != xdefault ; then
1018   AC_SUBST(BINUTILS_INCDIR,$WITH_BINUTILS_INCDIR)
1019   if test ! -f "$WITH_BINUTILS_INCDIR/plugin-api.h"; then
1020      echo "$WITH_BINUTILS_INCDIR/plugin-api.h"
1021      AC_MSG_ERROR([Invalid path to directory containing plugin-api.h.]);
1022   fi
1023 fi
1024
1025 dnl Specify the URL where bug reports should be submitted.
1026 AC_ARG_WITH(bug-report-url,
1027   AS_HELP_STRING([--with-bug-report-url],
1028     [Specify the URL where bug reports should be submitted (default=http://llvm.org/bugs/)]),,
1029     withval="http://llvm.org/bugs/")
1030 AC_DEFINE_UNQUOTED(BUG_REPORT_URL,"$withval",
1031                    [Bug report URL.])
1032
1033 dnl --enable-libffi : check whether the user wants to turn off libffi:
1034 AC_ARG_ENABLE(libffi,AS_HELP_STRING(
1035   --enable-libffi,[Check for the presence of libffi (default is NO)]),
1036   [case "$enableval" in
1037     yes) llvm_cv_enable_libffi="yes" ;;
1038     no)  llvm_cv_enable_libffi="no"  ;;
1039     *) AC_MSG_ERROR([Invalid setting for --enable-libffi. Use "yes" or "no"]) ;;
1040   esac],
1041   llvm_cv_enable_libffi=no)
1042
1043 AC_ARG_WITH(internal-prefix,
1044   AS_HELP_STRING([--with-internal-prefix],
1045     [Installation directory for internal files]),,
1046     withval="")
1047 AC_SUBST(INTERNAL_PREFIX,[$withval])
1048
1049 dnl===-----------------------------------------------------------------------===
1050 dnl===
1051 dnl=== SECTION 4: Check for programs we need and that they are the right version
1052 dnl===
1053 dnl===-----------------------------------------------------------------------===
1054
1055 AC_PROG_NM
1056 AC_SUBST(NM)
1057
1058 dnl Check for the tools that the makefiles require
1059 AC_CHECK_GNU_MAKE
1060 AC_PROG_LN_S
1061 AC_PATH_PROG(CMP, [cmp], [cmp])
1062 AC_PATH_PROG(CP, [cp], [cp])
1063 AC_PATH_PROG(DATE, [date], [date])
1064 AC_PATH_PROG(FIND, [find], [find])
1065 AC_PATH_PROG(GREP, [grep], [grep])
1066 AC_PATH_PROG(MKDIR,[mkdir],[mkdir])
1067 AC_PATH_PROG(MV,   [mv],   [mv])
1068 AC_PROG_RANLIB
1069 AC_CHECK_TOOL(AR, ar, false)
1070 AC_PATH_PROG(RM,   [rm],   [rm])
1071 AC_PATH_PROG(SED,  [sed],  [sed])
1072 AC_PATH_PROG(TAR,  [tar],  [gtar])
1073 AC_PATH_PROG(BINPWD,[pwd],  [pwd])
1074
1075 dnl Looking for misc. graph plotting software
1076 AC_PATH_PROG(GRAPHVIZ, [Graphviz], [echo Graphviz])
1077 if test "$GRAPHVIZ" != "echo Graphviz" ; then
1078   AC_DEFINE([HAVE_GRAPHVIZ],[1],[Define if the Graphviz program is available])
1079   dnl If we're targeting for mingw we should emit windows paths, not msys
1080   if test "$llvm_cv_os_type" = "MingW" ; then
1081     GRAPHVIZ=`echo $GRAPHVIZ | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1082   fi
1083   AC_DEFINE_UNQUOTED([LLVM_PATH_GRAPHVIZ],"$GRAPHVIZ${EXEEXT}",
1084    [Define to path to Graphviz program if found or 'echo Graphviz' otherwise])
1085 fi
1086 AC_PATH_PROG(DOT, [dot], [echo dot])
1087 if test "$DOT" != "echo dot" ; then
1088   AC_DEFINE([HAVE_DOT],[1],[Define if the dot program is available])
1089   dnl If we're targeting for mingw we should emit windows paths, not msys
1090   if test "$llvm_cv_os_type" = "MingW" ; then
1091     DOT=`echo $DOT | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1092   fi
1093   AC_DEFINE_UNQUOTED([LLVM_PATH_DOT],"$DOT${EXEEXT}",
1094    [Define to path to dot program if found or 'echo dot' otherwise])
1095 fi
1096 AC_PATH_PROG(FDP, [fdp], [echo fdp])
1097 if test "$FDP" != "echo fdp" ; then
1098   AC_DEFINE([HAVE_FDP],[1],[Define if the neat program is available])
1099   dnl If we're targeting for mingw we should emit windows paths, not msys
1100   if test "$llvm_cv_os_type" = "MingW" ; then
1101     FDP=`echo $FDP | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1102   fi
1103   AC_DEFINE_UNQUOTED([LLVM_PATH_FDP],"$FDP${EXEEXT}",
1104    [Define to path to fdp program if found or 'echo fdp' otherwise])
1105 fi
1106 AC_PATH_PROG(NEATO, [neato], [echo neato])
1107 if test "$NEATO" != "echo neato" ; then
1108   AC_DEFINE([HAVE_NEATO],[1],[Define if the neat program is available])
1109   dnl If we're targeting for mingw we should emit windows paths, not msys
1110   if test "$llvm_cv_os_type" = "MingW" ; then
1111     NEATO=`echo $NEATO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1112   fi
1113   AC_DEFINE_UNQUOTED([LLVM_PATH_NEATO],"$NEATO${EXEEXT}",
1114    [Define to path to neato program if found or 'echo neato' otherwise])
1115 fi
1116 AC_PATH_PROG(TWOPI, [twopi], [echo twopi])
1117 if test "$TWOPI" != "echo twopi" ; then
1118   AC_DEFINE([HAVE_TWOPI],[1],[Define if the neat program is available])
1119   dnl If we're targeting for mingw we should emit windows paths, not msys
1120   if test "$llvm_cv_os_type" = "MingW" ; then
1121     TWOPI=`echo $TWOPI | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1122   fi
1123   AC_DEFINE_UNQUOTED([LLVM_PATH_TWOPI],"$TWOPI${EXEEXT}",
1124    [Define to path to twopi program if found or 'echo twopi' otherwise])
1125 fi
1126 AC_PATH_PROG(CIRCO, [circo], [echo circo])
1127 if test "$CIRCO" != "echo circo" ; then
1128   AC_DEFINE([HAVE_CIRCO],[1],[Define if the neat program is available])
1129   dnl If we're targeting for mingw we should emit windows paths, not msys
1130   if test "$llvm_cv_os_type" = "MingW" ; then
1131     CIRCO=`echo $CIRCO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1132   fi
1133   AC_DEFINE_UNQUOTED([LLVM_PATH_CIRCO],"$CIRCO${EXEEXT}",
1134    [Define to path to circo program if found or 'echo circo' otherwise])
1135 fi
1136 AC_PATH_PROGS(GV, [gv gsview32], [echo gv])
1137 if test "$GV" != "echo gv" ; then
1138   AC_DEFINE([HAVE_GV],[1],[Define if the gv program is available])
1139   dnl If we're targeting for mingw we should emit windows paths, not msys
1140   if test "$llvm_cv_os_type" = "MingW" ; then
1141     GV=`echo $GV | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1142   fi
1143   AC_DEFINE_UNQUOTED([LLVM_PATH_GV],"$GV${EXEEXT}",
1144    [Define to path to gv program if found or 'echo gv' otherwise])
1145 fi
1146 AC_PATH_PROG(DOTTY, [dotty], [echo dotty])
1147 if test "$DOTTY" != "echo dotty" ; then
1148   AC_DEFINE([HAVE_DOTTY],[1],[Define if the dotty program is available])
1149   dnl If we're targeting for mingw we should emit windows paths, not msys
1150   if test "$llvm_cv_os_type" = "MingW" ; then
1151     DOTTY=`echo $DOTTY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1152   fi
1153   AC_DEFINE_UNQUOTED([LLVM_PATH_DOTTY],"$DOTTY${EXEEXT}",
1154    [Define to path to dotty program if found or 'echo dotty' otherwise])
1155 fi
1156 AC_PATH_PROG(XDOT_PY, [xdot.py], [echo xdot.py])
1157 if test "$XDOT_PY" != "echo xdot.py" ; then
1158   AC_DEFINE([HAVE_XDOT_PY],[1],[Define if the xdot.py program is available])
1159   dnl If we're targeting for mingw we should emit windows paths, not msys
1160   if test "$llvm_cv_os_type" = "MingW" ; then
1161     XDOT_PY=`echo $XDOT_PY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1162   fi
1163   AC_DEFINE_UNQUOTED([LLVM_PATH_XDOT_PY],"$XDOT_PY${EXEEXT}",
1164    [Define to path to xdot.py program if found or 'echo xdot.py' otherwise])
1165 fi
1166
1167 dnl Find the install program
1168 AC_PROG_INSTALL
1169 dnl Prepend src dir to install path dir if it's a relative path
1170 dnl This is a hack for installs that take place in something other
1171 dnl than the top level.
1172 case "$INSTALL" in
1173  [[\\/$]]* | ?:[[\\/]]* ) ;;
1174  *)  INSTALL="\\\$(TOPSRCDIR)/$INSTALL" ;;
1175 esac
1176
1177 dnl Checks for documentation and testing tools that we can do without. If these
1178 dnl are not found then they are set to "true" which always succeeds but does
1179 dnl nothing. This just lets the build output show that we could have done
1180 dnl something if the tool was available.
1181 AC_PATH_PROG(BZIP2, [bzip2])
1182 AC_PATH_PROG(CAT, [cat])
1183 AC_PATH_PROG(DOXYGEN, [doxygen])
1184 AC_PATH_PROG(GROFF, [groff])
1185 AC_PATH_PROG(GZIPBIN, [gzip])
1186 AC_PATH_PROG(PDFROFF, [pdfroff])
1187 AC_PATH_PROG(ZIP, [zip])
1188 AC_PATH_PROGS(OCAMLC, [ocamlc])
1189 AC_PATH_PROGS(OCAMLOPT, [ocamlopt])
1190 AC_PATH_PROGS(OCAMLDEP, [ocamldep])
1191 AC_PATH_PROGS(OCAMLDOC, [ocamldoc])
1192 AC_PATH_PROGS(GAS, [gas as])
1193
1194 dnl Get the version of the linker in use.
1195 AC_LINK_GET_VERSION
1196
1197 dnl Determine whether the linker supports the -R option.
1198 AC_LINK_USE_R
1199
1200 dnl Determine whether the linker supports the -export-dynamic option.
1201 AC_LINK_EXPORT_DYNAMIC
1202
1203 dnl Determine whether the linker supports the --version-script option.
1204 AC_LINK_VERSION_SCRIPT
1205
1206 dnl Check for libtool and the library that has dlopen function (which must come
1207 dnl before the AC_PROG_LIBTOOL check in order to enable dlopening libraries with
1208 dnl libtool).
1209 AC_LIBTOOL_DLOPEN
1210 AC_LIB_LTDL
1211
1212 AC_MSG_CHECKING([tool compatibility])
1213
1214 dnl Ensure that compilation tools are GCC or a GNU compatible compiler such as
1215 dnl ICC; we use GCC specific options in the makefiles so the compiler needs
1216 dnl to support those options.
1217 dnl "icc" emits gcc signatures
1218 dnl "icc -no-gcc" emits no gcc signature BUT is still compatible
1219 ICC=no
1220 IXX=no
1221 case $CC in
1222   icc*|icpc*)
1223     ICC=yes
1224     IXX=yes
1225     ;;
1226    *)
1227     ;;
1228 esac
1229
1230 if test "$GCC" != "yes" && test "$ICC" != "yes"
1231 then
1232   AC_MSG_ERROR([gcc|icc required but not found])
1233 fi
1234
1235 dnl Ensure that compilation tools are compatible with GCC extensions
1236 if test "$GXX" != "yes" && test "$IXX" != "yes"
1237 then
1238   AC_MSG_ERROR([g++|clang++|icc required but not found])
1239 fi
1240
1241 dnl Verify that GCC is version 3.0 or higher
1242 if test "$GCC" = "yes"
1243 then
1244   AC_COMPILE_IFELSE(
1245 [
1246   AC_LANG_SOURCE([[
1247     #if !defined(__GNUC__) || __GNUC__ < 3
1248     #error Unsupported GCC version
1249     #endif
1250   ]])
1251 ],
1252 [], [AC_MSG_ERROR([gcc 3.x required, but you have a lower version])])
1253 fi
1254
1255 dnl Check for GNU Make.  We use its extensions, so don't build without it
1256 if test -z "$llvm_cv_gnu_make_command"
1257 then
1258   AC_MSG_ERROR([GNU Make required but not found])
1259 fi
1260
1261 dnl Tool compatibility is okay if we make it here.
1262 AC_MSG_RESULT([ok])
1263
1264 dnl Check optional compiler flags.
1265 AC_MSG_CHECKING([optional compiler flags])
1266 CXX_FLAG_CHECK(NO_VARIADIC_MACROS, [-Wno-variadic-macros])
1267 CXX_FLAG_CHECK(NO_MISSING_FIELD_INITIALIZERS, [-Wno-missing-field-initializers])
1268 CXX_FLAG_CHECK(NO_NESTED_ANON_TYPES, [-Wno-nested-anon-types])
1269 CXX_FLAG_CHECK(COVERED_SWITCH_DEFAULT, [-Wcovered-switch-default])
1270 dnl GCC's potential uninitialized use analysis is weak and presents lots of
1271 dnl false positives, so disable it.
1272 if test "$GXX" = "yes"
1273 then
1274   CXX_FLAG_CHECK(NO_MAYBE_UNINITIALIZED, [-Wno-maybe-uninitialized])
1275   dnl gcc 4.7 introduced -Wmaybe-uninitialized to distinguish cases which are
1276   dnl known to be uninitialized from cases which might be uninitialized.  We 
1277   dnl still want to catch the first kind of errors.
1278   if test "$NO_MAYBE_UNINITIALIZED" != "-Wno-maybe-uninitialized"
1279   then
1280     CXX_FLAG_CHECK(NO_UNINITIALIZED, [-Wno-uninitialized])
1281   else
1282     dnl Some versions of gcc accept unsupported -W flags if there is
1283     dnl no warning but stop with an error when a warning is
1284     dnl encountered.  If this gcc is earlier than 4.7, just use
1285     dnl -Wno-uninitialized.
1286     gxx_version=`$CXX -dumpversion`
1287     gxx_version_major=`echo $gxx_version | cut -d'.' -f1`
1288     gxx_version_minor=`echo $gxx_version | cut -d'.' -f2`
1289     gxx_version_patch=`echo $gxx_version | cut -d'.' -f3`
1290
1291     if    test "$gxx_version_major" -ge "4" \
1292        && test "$gxx_version_minor" -ge "7"; then
1293       dnl AC_SUBST doesn't work with empty strings.
1294       NO_UNINITIALIZED=
1295     else
1296       NO_MAYBE_UNINITIALIZED=
1297       CXX_FLAG_CHECK(NO_UNINITIALIZED, [-Wno-uninitialized])
1298     fi
1299   fi
1300 else
1301   NO_UNINITIALIZED=
1302   NO_MAYBE_UNINITIALIZED=
1303 fi
1304 AC_MSG_RESULT([$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS $NO_NESTED_ANON_TYPES $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED $NO_MAYBE_UNINITIALIZED])
1305
1306 AC_ARG_WITH([python],
1307             [AS_HELP_STRING([--with-python], [path to python])],
1308             [PYTHON="$withval"])
1309
1310 if test -n "$PYTHON" && test -x "$PYTHON" ; then
1311   AC_MSG_CHECKING([for python])
1312   AC_MSG_RESULT([user defined: $with_python])
1313 else
1314   if test -n "$PYTHON" ; then
1315     AC_MSG_WARN([specified python ($PYTHON) is not usable, searching path])
1316   fi
1317
1318   AC_PATH_PROG([PYTHON], [python python2 python26],
1319                [AC_MSG_RESULT([not found])
1320                 AC_MSG_ERROR([could not find python 2.5 or higher])])
1321 fi
1322
1323 AC_MSG_CHECKING([for python >= 2.5])
1324 ac_python_version=`$PYTHON -c 'import sys; print sys.version.split()[[0]]'`
1325 ac_python_version_major=`echo $ac_python_version | cut -d'.' -f1`
1326 ac_python_version_minor=`echo $ac_python_version | cut -d'.' -f2`
1327 ac_python_version_patch=`echo $ac_python_version | cut -d'.' -f3`
1328 if   test "$ac_python_version_major" -eq "2" \
1329    && test "$ac_python_version_minor" -ge "5" ; then
1330   AC_MSG_RESULT([$PYTHON ($ac_python_version)])
1331 else
1332   AC_MSG_RESULT([not found])
1333   AC_MSG_FAILURE([found python $ac_python_version ($PYTHON); required >= 2.5])
1334 fi
1335
1336 dnl===-----------------------------------------------------------------------===
1337 dnl===
1338 dnl=== SECTION 5: Check for libraries
1339 dnl===
1340 dnl===-----------------------------------------------------------------------===
1341
1342 AC_CHECK_LIB(m,sin)
1343 if test "$llvm_cv_os_type" = "MingW" ; then
1344   AC_CHECK_LIB(imagehlp, main)
1345   AC_CHECK_LIB(psapi, main)
1346 fi
1347
1348 dnl dlopen() is required for plugin support.
1349 AC_SEARCH_LIBS(dlopen,dl,AC_DEFINE([HAVE_DLOPEN],[1],
1350                [Define if dlopen() is available on this platform.]),
1351                AC_MSG_WARN([dlopen() not found - disabling plugin support]))
1352
1353 dnl Search for the clock_gettime() function. Note that we rely on the POSIX
1354 dnl macros to detect whether clock_gettime is available, this just finds the
1355 dnl right libraries to link with.
1356 AC_SEARCH_LIBS(clock_gettime,rt)
1357
1358 dnl libffi is optional; used to call external functions from the interpreter
1359 if test "$llvm_cv_enable_libffi" = "yes" ; then
1360   AC_SEARCH_LIBS(ffi_call,ffi,AC_DEFINE([HAVE_FFI_CALL],[1],
1361                  [Define if libffi is available on this platform.]),
1362                  AC_MSG_ERROR([libffi not found - configure without --enable-libffi to compile without it]))
1363 fi
1364
1365 dnl mallinfo is optional; the code can compile (minus features) without it
1366 AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1],
1367                [Define if mallinfo() is available on this platform.]))
1368
1369 dnl pthread locking functions are optional - but llvm will not be thread-safe
1370 dnl without locks.
1371 if test "$LLVM_ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then
1372   AC_CHECK_LIB(pthread, pthread_mutex_init)
1373   AC_SEARCH_LIBS(pthread_mutex_lock,pthread,
1374                  AC_DEFINE([HAVE_PTHREAD_MUTEX_LOCK],[1],
1375                            [Have pthread_mutex_lock]))
1376   AC_SEARCH_LIBS(pthread_rwlock_init,pthread,
1377                  AC_DEFINE([HAVE_PTHREAD_RWLOCK_INIT],[1],
1378                  [Have pthread_rwlock_init]))
1379   AC_SEARCH_LIBS(pthread_getspecific,pthread,
1380                  AC_DEFINE([HAVE_PTHREAD_GETSPECIFIC],[1],
1381                  [Have pthread_getspecific]))
1382 fi
1383
1384 dnl Allow extra x86-disassembler library
1385 AC_ARG_WITH(udis86,
1386   AS_HELP_STRING([--with-udis86=<path>],
1387     [Use udis86 external x86 disassembler library]),
1388     [
1389       AC_SUBST(USE_UDIS86, [1])
1390       case "$withval" in
1391         /usr/lib|yes) ;;
1392         *) LDFLAGS="$LDFLAGS -L${withval}" ;;
1393       esac
1394       AC_CHECK_LIB(udis86, ud_init, [], [
1395         echo "Error! You need to have libudis86 around."
1396         exit -1
1397       ])
1398     ],
1399     AC_SUBST(USE_UDIS86, [0]))
1400 AC_DEFINE_UNQUOTED([USE_UDIS86],$USE_UDIS86,
1401                    [Define if use udis86 library])
1402
1403 dnl Allow OProfile support for JIT output.
1404 AC_ARG_WITH(oprofile,
1405   AS_HELP_STRING([--with-oprofile=<prefix>],
1406     [Tell OProfile >= 0.9.4 how to symbolize JIT output]),
1407     [
1408       AC_SUBST(USE_OPROFILE, [1])
1409       case "$withval" in
1410         /usr|yes) llvm_cv_oppath=/usr/lib/oprofile ;;
1411         no) llvm_cv_oppath=
1412             AC_SUBST(USE_OPROFILE, [0]) ;;
1413         *) llvm_cv_oppath="${withval}/lib/oprofile"
1414            CPPFLAGS="-I${withval}/include";;
1415       esac
1416       case $llvm_cv_os_type in
1417         Linux)
1418           if test -n "$llvm_cv_oppath" ; then
1419             LIBS="$LIBS -lopagent -L${llvm_cv_oppath} -Wl,-rpath,${llvm_cv_oppath}"
1420             dnl Work around http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=537744:
1421             dnl libbfd is not included properly in libopagent in some Debian
1422             dnl versions.  If libbfd isn't found at all, we assume opagent works
1423             dnl anyway.
1424             AC_SEARCH_LIBS(bfd_init, bfd, [], [])
1425             AC_SEARCH_LIBS(op_open_agent, opagent, [], [
1426               echo "Error! You need to have libopagent around."
1427               exit -1
1428             ])
1429             AC_CHECK_HEADER([opagent.h], [], [
1430               echo "Error! You need to have opagent.h around."
1431               exit -1
1432               ])
1433           fi ;;
1434         *)
1435           AC_MSG_ERROR([OProfile support is available on Linux only.]) ;;
1436       esac 
1437     ],
1438     [
1439       AC_SUBST(USE_OPROFILE, [0])
1440     ])
1441 AC_DEFINE_UNQUOTED([LLVM_USE_OPROFILE],$USE_OPROFILE,
1442                    [Define if we have the oprofile JIT-support library])
1443
1444 dnl Enable support for Intel JIT Events API.
1445 AC_ARG_WITH(intel-jitevents,
1446   AS_HELP_STRING([--with-intel-jitevents  Notify Intel JIT profiling API of generated code]),
1447     [
1448        case "$withval" in
1449           yes) AC_SUBST(USE_INTEL_JITEVENTS,[1]);;
1450           no)  AC_SUBST(USE_INTEL_JITEVENTS,[0]);;
1451           *) AC_MSG_ERROR([Invalid setting for --with-intel-jitevents. Use "yes" or "no"]);;
1452        esac
1453
1454       case $llvm_cv_os_type in
1455         Linux|Win32|Cygwin|MingW) ;;
1456         *) AC_MSG_ERROR([Intel JIT API support is available on Linux and Windows only.]);;
1457       esac
1458
1459       case "$llvm_cv_target_arch" in
1460         x86|x86_64) ;;
1461         *) AC_MSG_ERROR([Target architecture $llvm_cv_target_arch does not support Intel JIT Events API.]);;
1462       esac
1463     ],
1464     [
1465       AC_SUBST(USE_INTEL_JITEVENTS, [0])
1466     ])
1467 AC_DEFINE_UNQUOTED([LLVM_USE_INTEL_JITEVENTS],$USE_INTEL_JITEVENTS,
1468                    [Define if we have the Intel JIT API runtime support library])
1469
1470 dnl Check for libxml2
1471 dnl Right now we're just checking for the existence, we could also check for a
1472 dnl particular version via --version on xml2-config
1473 AC_CHECK_PROGS(XML2CONFIG, xml2-config)
1474
1475 AC_MSG_CHECKING(for libxml2 includes)
1476 if test "x$XML2CONFIG" = "x"; then
1477  AC_MSG_RESULT(xml2-config not found)
1478 else
1479  LIBXML2_INC=`$XML2CONFIG --cflags`
1480  AC_MSG_RESULT($LIBXML2_INC)
1481  AC_CHECK_LIB(xml2, xmlReadFile,[AC_DEFINE([CLANG_HAVE_LIBXML],1,[Define if we have libxml2])
1482                                 LIBXML2_LIBS="-lxml2"])
1483 fi
1484 AC_SUBST(LIBXML2_LIBS)
1485 AC_SUBST(LIBXML2_INC)
1486
1487 dnl===-----------------------------------------------------------------------===
1488 dnl===
1489 dnl=== SECTION 6: Check for header files
1490 dnl===
1491 dnl===-----------------------------------------------------------------------===
1492
1493 dnl First, use autoconf provided macros for specific headers that we need
1494 dnl We don't check for ancient stuff or things that are guaranteed to be there
1495 dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers.
1496 dnl Generally we're looking for POSIX headers.
1497 AC_HEADER_DIRENT
1498 AC_HEADER_MMAP_ANONYMOUS
1499 AC_HEADER_STAT
1500 AC_HEADER_SYS_WAIT
1501 AC_HEADER_TIME
1502
1503 AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h inttypes.h limits.h link.h])
1504 AC_CHECK_HEADERS([malloc.h setjmp.h signal.h stdint.h termios.h unistd.h])
1505 AC_CHECK_HEADERS([utime.h windows.h])
1506 AC_CHECK_HEADERS([sys/mman.h sys/param.h sys/resource.h sys/time.h sys/uio.h])
1507 AC_CHECK_HEADERS([sys/types.h sys/ioctl.h malloc/malloc.h mach/mach.h])
1508 AC_CHECK_HEADERS([valgrind/valgrind.h])
1509 AC_CHECK_HEADERS([fenv.h])
1510 if test "$LLVM_ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then
1511   AC_CHECK_HEADERS(pthread.h,
1512                    AC_SUBST(HAVE_PTHREAD, 1),
1513                    AC_SUBST(HAVE_PTHREAD, 0))
1514 else
1515   AC_SUBST(HAVE_PTHREAD, 0)
1516 fi
1517
1518 dnl Try to find ffi.h.
1519 if test "$llvm_cv_enable_libffi" = "yes" ; then
1520   AC_CHECK_HEADERS([ffi.h ffi/ffi.h])
1521 fi
1522
1523 dnl Try to find Darwin specific crash reporting libraries.
1524 AC_CHECK_HEADERS([CrashReporterClient.h])
1525
1526 dnl Try to find Darwin specific crash reporting global.
1527 AC_MSG_CHECKING([__crashreporter_info__])
1528 AC_LINK_IFELSE(
1529 [
1530   AC_LANG_SOURCE([[
1531     extern const char *__crashreporter_info__;
1532     int main() {
1533       __crashreporter_info__ = "test";
1534       return 0;
1535     }
1536   ]])
1537 ],
1538 [
1539   AC_MSG_RESULT([yes])
1540   AC_DEFINE([HAVE_CRASHREPORTER_INFO], [1], [can use __crashreporter_info__])
1541 ],
1542 [
1543   AC_MSG_RESULT([no])
1544   AC_DEFINE([HAVE_CRASHREPORTER_INFO], [0], [can use __crashreporter_info__])
1545 ])
1546
1547 dnl===-----------------------------------------------------------------------===
1548 dnl===
1549 dnl=== SECTION 7: Check for types and structures
1550 dnl===
1551 dnl===-----------------------------------------------------------------------===
1552
1553 AC_HUGE_VAL_CHECK
1554 AC_TYPE_PID_T
1555 AC_TYPE_SIZE_T
1556 AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[Define as the return type of signal handlers (`int' or `void').])
1557 AC_STRUCT_TM
1558 AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
1559 AC_CHECK_TYPES([uint64_t],,
1560          AC_CHECK_TYPES([u_int64_t],,
1561          AC_MSG_ERROR([Type uint64_t or u_int64_t required but not found])))
1562
1563 dnl===-----------------------------------------------------------------------===
1564 dnl===
1565 dnl=== SECTION 8: Check for specific functions needed
1566 dnl===
1567 dnl===-----------------------------------------------------------------------===
1568
1569 AC_CHECK_FUNCS([backtrace ceilf floorf roundf rintf nearbyintf getcwd ])
1570 AC_CHECK_FUNCS([powf fmodf strtof round ])
1571 AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday ])
1572 AC_CHECK_FUNCS([isatty mkdtemp mkstemp ])
1573 AC_CHECK_FUNCS([mktemp posix_spawn pread realpath sbrk setrlimit strdup ])
1574 AC_CHECK_FUNCS([strerror strerror_r setenv arc4random ])
1575 AC_CHECK_FUNCS([strtoll strtoq sysconf malloc_zone_statistics ])
1576 AC_CHECK_FUNCS([setjmp longjmp sigsetjmp siglongjmp writev])
1577 AC_C_PRINTF_A
1578 AC_FUNC_RAND48
1579
1580 dnl Check the declaration "Secure API" on Windows environments.
1581 AC_CHECK_DECLS([strerror_s])
1582
1583 dnl Check symbols in libgcc.a for JIT on Mingw.
1584 if test "$llvm_cv_os_type" = "MingW" ; then
1585   AC_CHECK_LIB(gcc,_alloca,AC_DEFINE([HAVE__ALLOCA],[1],[Have host's _alloca]))
1586   AC_CHECK_LIB(gcc,__alloca,AC_DEFINE([HAVE___ALLOCA],[1],[Have host's __alloca]))
1587   AC_CHECK_LIB(gcc,__chkstk,AC_DEFINE([HAVE___CHKSTK],[1],[Have host's __chkstk]))
1588   AC_CHECK_LIB(gcc,___chkstk,AC_DEFINE([HAVE____CHKSTK],[1],[Have host's ___chkstk]))
1589
1590   AC_CHECK_LIB(gcc,__ashldi3,AC_DEFINE([HAVE___ASHLDI3],[1],[Have host's __ashldi3]))
1591   AC_CHECK_LIB(gcc,__ashrdi3,AC_DEFINE([HAVE___ASHRDI3],[1],[Have host's __ashrdi3]))
1592   AC_CHECK_LIB(gcc,__divdi3,AC_DEFINE([HAVE___DIVDI3],[1],[Have host's __divdi3]))
1593   AC_CHECK_LIB(gcc,__fixdfdi,AC_DEFINE([HAVE___FIXDFDI],[1],[Have host's __fixdfdi]))
1594   AC_CHECK_LIB(gcc,__fixsfdi,AC_DEFINE([HAVE___FIXSFDI],[1],[Have host's __fixsfdi]))
1595   AC_CHECK_LIB(gcc,__floatdidf,AC_DEFINE([HAVE___FLOATDIDF],[1],[Have host's __floatdidf]))
1596   AC_CHECK_LIB(gcc,__lshrdi3,AC_DEFINE([HAVE___LSHRDI3],[1],[Have host's __lshrdi3]))
1597   AC_CHECK_LIB(gcc,__moddi3,AC_DEFINE([HAVE___MODDI3],[1],[Have host's __moddi3]))
1598   AC_CHECK_LIB(gcc,__udivdi3,AC_DEFINE([HAVE___UDIVDI3],[1],[Have host's __udivdi3]))
1599   AC_CHECK_LIB(gcc,__umoddi3,AC_DEFINE([HAVE___UMODDI3],[1],[Have host's __umoddi3]))
1600
1601   AC_CHECK_LIB(gcc,__main,AC_DEFINE([HAVE___MAIN],[1],[Have host's __main]))
1602   AC_CHECK_LIB(gcc,__cmpdi2,AC_DEFINE([HAVE___CMPDI2],[1],[Have host's __cmpdi2]))
1603 fi
1604
1605 dnl Check Win32 API EnumerateLoadedModules.
1606 if test "$llvm_cv_os_type" = "MingW" ; then
1607   AC_MSG_CHECKING([whether EnumerateLoadedModules() accepts new decl])
1608   AC_COMPILE_IFELSE(
1609 [
1610   AC_LANG_SOURCE([[
1611     #include <windows.h>
1612     #include <imagehlp.h>
1613     extern void foo(PENUMLOADED_MODULES_CALLBACK);
1614     extern void foo(BOOL(CALLBACK*)(PCSTR,ULONG_PTR,ULONG,PVOID));
1615   ]])
1616 ],
1617 [
1618   AC_MSG_RESULT([yes])
1619   llvm_cv_win32_elmcb_pcstr="PCSTR"
1620 ],
1621 [
1622   AC_MSG_RESULT([no])
1623   llvm_cv_win32_elmcb_pcstr="PSTR"
1624 ])
1625   AC_DEFINE_UNQUOTED([WIN32_ELMCB_PCSTR],$llvm_cv_win32_elmcb_pcstr,[Type of 1st arg on ELM Callback])
1626 fi
1627
1628 dnl Check for variations in the Standard C++ library and STL. These macros are
1629 dnl provided by LLVM in the autoconf/m4 directory.
1630 AC_FUNC_ISNAN
1631 AC_FUNC_ISINF
1632
1633 dnl Check for mmap support.We also need to know if /dev/zero is required to
1634 dnl be opened for allocating RWX memory.
1635 dnl Make sure we aren't attempting to configure for an unknown system
1636 if test "$llvm_cv_platform_type" = "Unix" ; then
1637   AC_FUNC_MMAP
1638   AC_FUNC_MMAP_FILE
1639   AC_NEED_DEV_ZERO_FOR_MMAP
1640
1641   if test "$ac_cv_func_mmap_fixed_mapped" = "no"
1642   then
1643     AC_MSG_WARN([mmap() of a fixed address required but not supported])
1644   fi
1645   if test "$ac_cv_func_mmap_file" = "no"
1646   then
1647     AC_MSG_WARN([mmap() of files required but not found])
1648   fi
1649 fi
1650
1651 dnl atomic builtins are required for threading support.
1652 AC_MSG_CHECKING(for GCC atomic builtins)
1653 dnl Since we'll be using these atomic builtins in C++ files we should test
1654 dnl the C++ compiler.
1655 AC_LANG_PUSH([C++])
1656 AC_LINK_IFELSE(
1657 [
1658   AC_LANG_SOURCE([[
1659     int main() {
1660       volatile unsigned long val = 1;
1661       __sync_synchronize();
1662       __sync_val_compare_and_swap(&val, 1, 0);
1663       __sync_add_and_fetch(&val, 1);
1664       __sync_sub_and_fetch(&val, 1);
1665       return 0;
1666     }
1667   ]])
1668 ],
1669 [
1670   AC_MSG_RESULT([yes])
1671   AC_DEFINE([LLVM_HAS_ATOMICS], [1], [Has gcc/MSVC atomic intrinsics])
1672 ],
1673 [
1674   AC_MSG_RESULT([no])
1675   AC_DEFINE([LLVM_HAS_ATOMICS], [0], [Has gcc/MSVC atomic intrinsics])
1676   AC_MSG_WARN([LLVM will be built thread-unsafe because atomic builtins are missing])
1677 ])
1678 AC_LANG_POP([C++])
1679
1680 dnl===-----------------------------------------------------------------------===
1681 dnl===
1682 dnl=== SECTION 9: Additional checks, variables, etc.
1683 dnl===
1684 dnl===-----------------------------------------------------------------------===
1685
1686 dnl Handle 32-bit linux systems running a 64-bit kernel.
1687 dnl This has to come after section 4 because it invokes the compiler.
1688 if test "$llvm_cv_os_type" = "Linux" -a "$llvm_cv_target_arch" = "x86_64" ; then
1689   AC_IS_LINUX_MIXED
1690   if test "$llvm_cv_linux_mixed" = "yes"; then
1691     llvm_cv_target_arch="x86"
1692     ARCH="x86"
1693   fi
1694 fi
1695
1696 dnl Check whether __dso_handle is present
1697 AC_CHECK_FUNCS([__dso_handle])
1698
1699 dnl Propagate the shared library extension that the libltdl checks did to
1700 dnl the Makefiles so we can use it there too
1701 AC_SUBST(SHLIBEXT,$libltdl_cv_shlibext)
1702
1703 dnl Propagate the run-time library path variable that the libltdl
1704 dnl checks found to the Makefiles so we can use it there too
1705 AC_SUBST(SHLIBPATH_VAR,$libltdl_cv_shlibpath_var)
1706
1707 dnl Translate the various configuration directories and other basic
1708 dnl information into substitutions that will end up in Makefile.config.in
1709 dnl that these configured values can be used by the makefiles
1710 if test "${prefix}" = "NONE" ; then
1711   prefix="/usr/local"
1712 fi
1713 eval LLVM_PREFIX="${prefix}";
1714 eval LLVM_BINDIR="${prefix}/bin";
1715 eval LLVM_LIBDIR="${prefix}/lib";
1716 eval LLVM_DATADIR="${prefix}/share/llvm";
1717 eval LLVM_DOCSDIR="${prefix}/share/doc/llvm";
1718 eval LLVM_ETCDIR="${prefix}/etc/llvm";
1719 eval LLVM_INCLUDEDIR="${prefix}/include";
1720 eval LLVM_INFODIR="${prefix}/info";
1721 eval LLVM_MANDIR="${prefix}/man";
1722 LLVM_CONFIGTIME=`date`
1723 AC_SUBST(LLVM_PREFIX)
1724 AC_SUBST(LLVM_BINDIR)
1725 AC_SUBST(LLVM_LIBDIR)
1726 AC_SUBST(LLVM_DATADIR)
1727 AC_SUBST(LLVM_DOCSDIR)
1728 AC_SUBST(LLVM_ETCDIR)
1729 AC_SUBST(LLVM_INCLUDEDIR)
1730 AC_SUBST(LLVM_INFODIR)
1731 AC_SUBST(LLVM_MANDIR)
1732 AC_SUBST(LLVM_CONFIGTIME)
1733
1734 dnl Disable embedding timestamps in the build directory, with ENABLE_TIMESTAMPS.
1735 if test "${ENABLE_TIMESTAMPS}" = "0"; then
1736   LLVM_CONFIGTIME="(timestamp not enabled)"
1737 fi
1738
1739 dnl Place the various directories into the config.h file as #defines so that we
1740 dnl can know about the installation paths within LLVM.
1741 AC_DEFINE_UNQUOTED(LLVM_PREFIX,"$LLVM_PREFIX",
1742                    [Installation prefix directory])
1743 AC_DEFINE_UNQUOTED(LLVM_BINDIR, "$LLVM_BINDIR",
1744                    [Installation directory for binary executables])
1745 AC_DEFINE_UNQUOTED(LLVM_LIBDIR, "$LLVM_LIBDIR",
1746                    [Installation directory for libraries])
1747 AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DATADIR",
1748                    [Installation directory for data files])
1749 AC_DEFINE_UNQUOTED(LLVM_DOCSDIR, "$LLVM_DOCSDIR",
1750                    [Installation directory for documentation])
1751 AC_DEFINE_UNQUOTED(LLVM_ETCDIR, "$LLVM_ETCDIR",
1752                    [Installation directory for config files])
1753 AC_DEFINE_UNQUOTED(LLVM_INCLUDEDIR, "$LLVM_INCLUDEDIR",
1754                    [Installation directory for include files])
1755 AC_DEFINE_UNQUOTED(LLVM_INFODIR, "$LLVM_INFODIR",
1756                    [Installation directory for .info files])
1757 AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR",
1758                    [Installation directory for man pages])
1759 AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME",
1760                    [Time at which LLVM was configured])
1761 AC_DEFINE_UNQUOTED(LLVM_HOSTTRIPLE, "$host",
1762                    [Host triple LLVM will be executed on])
1763 AC_DEFINE_UNQUOTED(LLVM_DEFAULT_TARGET_TRIPLE, "$target",
1764                    [Target triple LLVM will generate code for by default])
1765
1766 dnl Determine which bindings to build.
1767 if test "$BINDINGS_TO_BUILD" = auto ; then
1768   BINDINGS_TO_BUILD=""
1769   if test "x$OCAMLC" != x -a "x$OCAMLDEP" != x ; then
1770     BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD"
1771   fi
1772 fi
1773 AC_SUBST(BINDINGS_TO_BUILD,$BINDINGS_TO_BUILD)
1774
1775 dnl This isn't really configurey, but it avoids having to repeat the list in
1776 dnl other files.
1777 AC_SUBST(ALL_BINDINGS,ocaml)
1778
1779 dnl Do any work necessary to ensure that bindings have what they need.
1780 binding_prereqs_failed=0
1781 for a_binding in $BINDINGS_TO_BUILD ; do
1782   case "$a_binding" in
1783   ocaml)
1784     if test "x$OCAMLC" = x ; then
1785       AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlc not found. Try configure OCAMLC=/path/to/ocamlc])
1786       binding_prereqs_failed=1
1787     fi
1788     if test "x$OCAMLDEP" = x ; then
1789       AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamldep not found. Try configure OCAMLDEP=/path/to/ocamldep])
1790       binding_prereqs_failed=1
1791     fi
1792     if test "x$OCAMLOPT" = x ; then
1793       AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlopt not found. Try configure OCAMLOPT=/path/to/ocamlopt])
1794       dnl ocamlopt is optional!
1795     fi
1796     if test "x$with_ocaml_libdir" != xauto ; then
1797       AC_SUBST(OCAML_LIBDIR,$with_ocaml_libdir)
1798     else
1799       ocaml_stdlib="`"$OCAMLC" -where`"
1800       if test "$LLVM_PREFIX" '<' "$ocaml_stdlib" -a "$ocaml_stdlib" '<' "$LLVM_PREFIX~"
1801       then
1802         # ocaml stdlib is beneath our prefix; use stdlib
1803         AC_SUBST(OCAML_LIBDIR,$ocaml_stdlib)
1804       else
1805         # ocaml stdlib is outside our prefix; use libdir/ocaml
1806         AC_SUBST(OCAML_LIBDIR,$LLVM_LIBDIR/ocaml)
1807       fi
1808     fi
1809     ;;
1810   esac
1811 done
1812 if test "$binding_prereqs_failed" = 1 ; then
1813   AC_MSG_ERROR([Prequisites for bindings not satisfied. Fix them or use configure --disable-bindings.])
1814 fi
1815
1816 dnl Determine whether the compiler supports -fvisibility-inlines-hidden.
1817 AC_CXX_USE_VISIBILITY_INLINES_HIDDEN
1818
1819 dnl Determine linker rpath flag
1820 if test "$llvm_cv_link_use_r" = "yes" ; then
1821   RPATH="-Wl,-R"
1822 else
1823   RPATH="-Wl,-rpath"
1824 fi
1825 AC_SUBST(RPATH)
1826
1827 dnl Determine linker rdynamic flag
1828 if test "$llvm_cv_link_use_export_dynamic" = "yes" ; then
1829   RDYNAMIC="-Wl,-export-dynamic"
1830 else
1831   RDYNAMIC=""
1832 fi
1833 AC_SUBST(RDYNAMIC)
1834
1835 dnl===-----------------------------------------------------------------------===
1836 dnl===
1837 dnl=== SECTION 10: Specify the output files and generate it
1838 dnl===
1839 dnl===-----------------------------------------------------------------------===
1840
1841 dnl Configure header files
1842 dnl WARNING: dnl If you add or remove any of the following config headers, then
1843 dnl you MUST also update Makefile so that the variable FilesToConfig
1844 dnl contains the same list of files as AC_CONFIG_HEADERS below. This ensures the
1845 dnl files can be updated automatically when their *.in sources change.
1846 AC_CONFIG_HEADERS([include/llvm/Config/config.h include/llvm/Config/llvm-config.h])
1847 AH_TOP([#ifndef CONFIG_H
1848 #define CONFIG_H])
1849 AH_BOTTOM([#endif])
1850
1851 AC_CONFIG_FILES([include/llvm/Config/Targets.def])
1852 AC_CONFIG_FILES([include/llvm/Config/AsmPrinters.def])
1853 AC_CONFIG_FILES([include/llvm/Config/AsmParsers.def])
1854 AC_CONFIG_FILES([include/llvm/Config/Disassemblers.def])
1855 AC_CONFIG_HEADERS([include/llvm/Support/DataTypes.h])
1856
1857 dnl Configure the makefile's configuration data
1858 AC_CONFIG_FILES([Makefile.config])
1859
1860 dnl Configure the RPM spec file for LLVM
1861 AC_CONFIG_FILES([llvm.spec])
1862
1863 dnl Configure doxygen's configuration file
1864 AC_CONFIG_FILES([docs/doxygen.cfg])
1865
1866 dnl Configure clang, if present
1867 if test "${clang_src_root}" = ""; then
1868   clang_src_root="$srcdir/tools/clang"
1869 fi
1870 if test -f ${clang_src_root}/README.txt; then
1871   dnl Use variables to stay under 80 columns.
1872   configh="include/clang/Config/config.h"
1873   doxy="docs/doxygen.cfg"
1874   AC_CONFIG_HEADERS([tools/clang/${configh}:${clang_src_root}/${configh}.in])
1875   AC_CONFIG_FILES([tools/clang/${doxy}:${clang_src_root}/${doxy}.in])
1876 fi
1877
1878 dnl OCaml findlib META file
1879 AC_CONFIG_FILES([bindings/ocaml/llvm/META.llvm])
1880
1881 dnl Add --program-prefix value to Makefile.rules. Already an ARG variable.
1882 test "x$program_prefix" = "xNONE" && program_prefix=""
1883 AC_SUBST([program_prefix])
1884
1885
1886 dnl Do special configuration of Makefiles
1887 AC_CONFIG_COMMANDS([setup],,[llvm_src="${srcdir}"])
1888 AC_CONFIG_MAKEFILE(Makefile)
1889 AC_CONFIG_MAKEFILE(Makefile.common)
1890 AC_CONFIG_MAKEFILE(examples/Makefile)
1891 AC_CONFIG_MAKEFILE(lib/Makefile)
1892 AC_CONFIG_MAKEFILE(runtime/Makefile)
1893 AC_CONFIG_MAKEFILE(test/Makefile)
1894 AC_CONFIG_MAKEFILE(test/Makefile.tests)
1895 AC_CONFIG_MAKEFILE(unittests/Makefile)
1896 AC_CONFIG_MAKEFILE(tools/Makefile)
1897 AC_CONFIG_MAKEFILE(utils/Makefile)
1898 AC_CONFIG_MAKEFILE(projects/Makefile)
1899 AC_CONFIG_MAKEFILE(bindings/Makefile)
1900 AC_CONFIG_MAKEFILE(bindings/ocaml/Makefile.ocaml)
1901
1902 dnl Finally, crank out the output
1903 AC_OUTPUT