configure.ac revision 2155d459a7de626bb77849e5956ef2363d7d4a87
1dnl === configure.ac --------------------------------------------------------===
2dnl                     The LLVM Compiler Infrastructure
3dnl
4dnl This file is distributed under the University of Illinois Open Source
5dnl License. See LICENSE.TXT for details.
6dnl
7dnl===-----------------------------------------------------------------------===
8dnl This is the LLVM configuration script. It is processed by the autoconf
9dnl program to produce a script named configure. This script contains the
10dnl configuration checks that LLVM needs in order to support multiple platforms.
11dnl This file is composed of 10 sections per the recommended organization of
12dnl autoconf input defined in the autoconf documentation. As this file evolves,
13dnl please keep the various types of checks within their sections. The sections
14dnl are as follows:
15dnl
16dnl SECTION 1: Initialization & Setup
17dnl SECTION 2: Architecture, target, and host checks
18dnl SECTION 3: Command line arguments for the configure script.
19dnl SECTION 4: Check for programs we need and that they are the right version
20dnl SECTION 5: Check for libraries
21dnl SECTION 6: Check for header files
22dnl SECTION 7: Check for types and structures
23dnl SECTION 8: Check for specific functions needed
24dnl SECTION 9: Additional checks, variables, etc.
25dnl SECTION 10: Specify the output files and generate it
26dnl
27dnl===-----------------------------------------------------------------------===
28dnl===
29dnl=== SECTION 1: Initialization & Setup
30dnl===
31dnl===-----------------------------------------------------------------------===
32dnl Initialize autoconf and define the package name, version number and
33dnl email address for reporting bugs.
34AC_INIT([[llvm]],[[2.7svn]],[llvmbugs@cs.uiuc.edu])
35
36dnl Provide a copyright substitution and ensure the copyright notice is included
37dnl in the output of --version option of the generated configure script.
38AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2009 University of Illinois at Urbana-Champaign."])
39AC_COPYRIGHT([Copyright (c) 2003-2009 University of Illinois at Urbana-Champaign.])
40
41dnl Indicate that we require autoconf 2.59 or later. Ths is needed because we
42dnl use some autoconf macros only available in 2.59.
43AC_PREREQ(2.59)
44
45dnl Verify that the source directory is valid. This makes sure that we are
46dnl configuring LLVM and not some other package (it validates --srcdir argument)
47AC_CONFIG_SRCDIR([lib/VMCore/Module.cpp])
48
49dnl Place all of the extra autoconf files into the config subdirectory. Tell
50dnl various tools where the m4 autoconf macros are.
51AC_CONFIG_AUX_DIR([autoconf])
52
53dnl Quit if the source directory has already been configured.
54dnl NOTE: This relies upon undocumented autoconf behavior.
55if test ${srcdir} != "." ; then
56  if test -f ${srcdir}/include/llvm/Config/config.h ; then
57    AC_MSG_ERROR([Already configured in ${srcdir}])
58  fi
59fi
60
61dnl Configure all of the projects present in our source tree. While we could
62dnl just AC_CONFIG_SUBDIRS on the set of directories in projects that have a
63dnl configure script, that usage of the AC_CONFIG_SUBDIRS macro is deprecated.
64dnl Instead we match on the known projects.
65for i in `ls ${srcdir}/projects`
66do
67  if test -d ${srcdir}/projects/${i} ; then
68    case ${i} in
69      CVS) ;;
70      sample)       AC_CONFIG_SUBDIRS([projects/sample])    ;;
71      privbracket)  AC_CONFIG_SUBDIRS([projects/privbracket]) ;;
72      llvm-stacker) AC_CONFIG_SUBDIRS([projects/llvm-stacker]) ;;
73      # llvm-test is the old name of the test-suite, kept here for backwards
74      # compatibility
75      llvm-test)    AC_CONFIG_SUBDIRS([projects/llvm-test]) ;;
76      test-suite)   AC_CONFIG_SUBDIRS([projects/test-suite]) ;;
77      llvm-reopt)   AC_CONFIG_SUBDIRS([projects/llvm-reopt]);;
78      llvm-gcc)     AC_CONFIG_SUBDIRS([projects/llvm-gcc])  ;;
79      llvm-java)    AC_CONFIG_SUBDIRS([projects/llvm-java]) ;;
80      llvm-tv)      AC_CONFIG_SUBDIRS([projects/llvm-tv])   ;;
81      llvm-poolalloc) AC_CONFIG_SUBDIRS([projects/llvm-poolalloc]) ;;
82      poolalloc)    AC_CONFIG_SUBDIRS([projects/poolalloc]) ;;
83      llvm-kernel)  AC_CONFIG_SUBDIRS([projects/llvm-kernel]) ;;
84      *)
85        AC_MSG_WARN([Unknown project (${i}) won't be configured automatically])
86        ;;
87    esac
88  fi
89done
90
91dnl===-----------------------------------------------------------------------===
92dnl===
93dnl=== SECTION 2: Architecture, target, and host checks
94dnl===
95dnl===-----------------------------------------------------------------------===
96
97dnl Check the target for which we're compiling and the host that will do the
98dnl compilations. This will tell us which LLVM compiler will be used for
99dnl compiling SSA into object code. This needs to be done early because
100dnl following tests depend on it.
101AC_CANONICAL_TARGET
102
103dnl Determine the platform type and cache its value. This helps us configure
104dnl the System library to the correct build platform.
105AC_CACHE_CHECK([type of operating system we're going to host on],
106               [llvm_cv_os_type],
107[case $host in
108  *-*-aix*)
109    llvm_cv_link_all_option="-Wl,--whole-archive"
110    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
111    llvm_cv_os_type="AIX"
112    llvm_cv_platform_type="Unix" ;;
113  *-*-irix*)
114    llvm_cv_link_all_option="-Wl,--whole-archive"
115    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
116    llvm_cv_os_type="IRIX"
117    llvm_cv_platform_type="Unix" ;;
118  *-*-cygwin*)
119    llvm_cv_link_all_option="-Wl,--whole-archive"
120    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
121    llvm_cv_os_type="Cygwin"
122    llvm_cv_platform_type="Unix" ;;
123  *-*-darwin*)
124    llvm_cv_link_all_option="-Wl,-all_load"
125    llvm_cv_no_link_all_option="-Wl,-noall_load"
126    llvm_cv_os_type="Darwin"
127    llvm_cv_platform_type="Unix" ;;
128  *-*-freebsd*)
129    llvm_cv_link_all_option="-Wl,--whole-archive"
130    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
131    llvm_cv_os_type="FreeBSD"
132    llvm_cv_platform_type="Unix" ;;
133  *-*-openbsd*)
134    llvm_cv_link_all_option="-Wl,--whole-archive"
135    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
136    llvm_cv_os_type="OpenBSD"
137    llvm_cv_platform_type="Unix" ;;
138  *-*-netbsd*)
139    llvm_cv_link_all_option="-Wl,--whole-archive"
140    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
141    llvm_cv_os_type="NetBSD"
142    llvm_cv_platform_type="Unix" ;;
143  *-*-dragonfly*)
144    llvm_cv_link_all_option="-Wl,--whole-archive"
145    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
146    llvm_cv_os_type="DragonFly"
147    llvm_cv_platform_type="Unix" ;;
148  *-*-hpux*)
149    llvm_cv_link_all_option="-Wl,--whole-archive"
150    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
151    llvm_cv_os_type="HP-UX"
152    llvm_cv_platform_type="Unix" ;;
153  *-*-interix*)
154    llvm_cv_link_all_option="-Wl,--whole-archive"
155    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
156    llvm_cv_os_type="Interix"
157    llvm_cv_platform_type="Unix" ;;
158  *-*-linux*)
159    llvm_cv_link_all_option="-Wl,--whole-archive"
160    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
161    llvm_cv_os_type="Linux"
162    llvm_cv_platform_type="Unix" ;;
163  *-*-solaris*)
164    llvm_cv_link_all_option="-Wl,-z,allextract"
165    llvm_cv_no_link_all_option="-Wl,-z,defaultextract"
166    llvm_cv_os_type="SunOS"
167    llvm_cv_platform_type="Unix" ;;
168  *-*-auroraux*)
169    llvm_cv_link_all_option="-Wl,-z,allextract"
170    llvm_cv_link_all_option="-Wl,-z,defaultextract"
171    llvm_cv_os_type="AuroraUX"
172    llvm_cv_platform_type="Unix" ;;
173  *-*-win32*)
174    llvm_cv_link_all_option="-Wl,--whole-archive"
175    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
176    llvm_cv_os_type="Win32"
177    llvm_cv_platform_type="Win32" ;;
178  *-*-mingw*)
179    llvm_cv_link_all_option="-Wl,--whole-archive"
180    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
181    llvm_cv_os_type="MingW"
182    llvm_cv_platform_type="Win32" ;;
183  *-*-haiku*)
184    llvm_cv_link_all_option="-Wl,--whole-archive"
185    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
186    llvm_cv_os_type="Haiku"
187    llvm_cv_platform_type="Unix" ;;  
188  *-unknown-eabi*)
189    llvm_cv_link_all_option="-Wl,--whole-archive"
190    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
191    llvm_cv_os_type="Freestanding"
192    llvm_cv_platform_type="Unix" ;;
193  *-unknown-elf*)
194    llvm_cv_link_all_option="-Wl,--whole-archive"
195    llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
196    llvm_cv_os_type="Freestanding"
197    llvm_cv_platform_type="Unix" ;;
198  *)
199    llvm_cv_link_all_option=""
200    llvm_cv_no_link_all_option=""
201    llvm_cv_os_type="Unknown"
202    llvm_cv_platform_type="Unknown" ;;
203esac])
204
205AC_CACHE_CHECK([type of operating system we're going to target],
206               [llvm_cv_target_os_type],
207[case $target in
208  *-*-aix*)
209    llvm_cv_target_os_type="AIX" ;;
210  *-*-irix*)
211    llvm_cv_target_os_type="IRIX" ;;
212  *-*-cygwin*)
213    llvm_cv_target_os_type="Cygwin" ;;
214  *-*-darwin*)
215    llvm_cv_target_os_type="Darwin" ;;
216  *-*-freebsd*)
217    llvm_cv_target_os_type="FreeBSD" ;;
218  *-*-openbsd*)
219    llvm_cv_target_os_type="OpenBSD" ;;
220  *-*-netbsd*)
221    llvm_cv_target_os_type="NetBSD" ;;
222  *-*-dragonfly*)
223    llvm_cv_target_os_type="DragonFly" ;;
224  *-*-hpux*)
225    llvm_cv_target_os_type="HP-UX" ;;
226  *-*-interix*)
227    llvm_cv_target_os_type="Interix" ;;
228  *-*-linux*)
229    llvm_cv_target_os_type="Linux" ;;
230  *-*-solaris*)
231    llvm_cv_target_os_type="SunOS" ;;
232  *-*-auroraux*)
233    llvm_cv_target_os_type="AuroraUX" ;;
234  *-*-win32*)
235    llvm_cv_target_os_type="Win32" ;;
236  *-*-mingw*)
237    llvm_cv_target_os_type="MingW" ;;
238  *-*-haiku*)
239    llvm_cv_target_os_type="Haiku" ;;  
240  *-unknown-eabi*)
241    llvm_cv_target_os_type="Freestanding" ;;
242  *)
243    llvm_cv_target_os_type="Unknown" ;;
244esac])
245
246dnl Make sure we aren't attempting to configure for an unknown system
247if test "$llvm_cv_os_type" = "Unknown" ; then
248  AC_MSG_ERROR([Operating system is unknown, configure can't continue])
249fi
250
251dnl Set the "OS" Makefile variable based on the platform type so the
252dnl makefile can configure itself to specific build hosts
253AC_SUBST(OS,$llvm_cv_os_type)
254AC_SUBST(HOST_OS,$llvm_cv_os_type)
255AC_SUBST(TARGET_OS,$llvm_cv_target_os_type)
256
257dnl Set the LINKALL and NOLINKALL Makefile variables based on the platform
258AC_SUBST(LINKALL,$llvm_cv_link_all_option)
259AC_SUBST(NOLINKALL,$llvm_cv_no_link_all_option)
260
261dnl Set the "LLVM_ON_*" variables based on llvm_cvs_platform_type
262dnl This is used by lib/System to determine the basic kind of implementation
263dnl to use.
264case $llvm_cv_platform_type in
265  Unix)
266    AC_DEFINE([LLVM_ON_UNIX],[1],[Define if this is Unixish platform])
267    AC_SUBST(LLVM_ON_UNIX,[1])
268    AC_SUBST(LLVM_ON_WIN32,[0])
269    ;;
270  Win32)
271    AC_DEFINE([LLVM_ON_WIN32],[1],[Define if this is Win32ish platform])
272    AC_SUBST(LLVM_ON_UNIX,[0])
273    AC_SUBST(LLVM_ON_WIN32,[1])
274    ;;
275esac
276
277dnl Determine what our target architecture is and configure accordingly.
278dnl This will allow Makefiles to make a distinction between the hardware and
279dnl the OS.
280AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch],
281[case $target in
282  i?86-*)                 llvm_cv_target_arch="x86" ;;
283  amd64-* | x86_64-*)     llvm_cv_target_arch="x86_64" ;;
284  sparc*-*)               llvm_cv_target_arch="Sparc" ;;
285  powerpc*-*)             llvm_cv_target_arch="PowerPC" ;;
286  alpha*-*)               llvm_cv_target_arch="Alpha" ;;
287  arm*-*)                 llvm_cv_target_arch="ARM" ;;
288  mips-*)                 llvm_cv_target_arch="Mips" ;;
289  pic16-*)                llvm_cv_target_arch="PIC16" ;;
290  xcore-*)                llvm_cv_target_arch="XCore" ;;
291  msp430-*)               llvm_cv_target_arch="MSP430" ;;
292  s390x-*)                llvm_cv_target_arch="SystemZ" ;;
293  bfin-*)                 llvm_cv_target_arch="Blackfin" ;;
294  *)                      llvm_cv_target_arch="Unknown" ;;
295esac])
296
297if test "$llvm_cv_target_arch" = "Unknown" ; then
298  AC_MSG_WARN([Configuring LLVM for an unknown target archicture])
299fi
300
301# Determine the LLVM native architecture for the target
302case "$llvm_cv_target_arch" in
303    x86)     LLVM_NATIVE_ARCH="X86" ;;
304    x86_64)  LLVM_NATIVE_ARCH="X86" ;;
305    *)       LLVM_NATIVE_ARCH="$llvm_cv_target_arch" ;;
306esac
307
308dnl Define a substitution, ARCH, for the target architecture
309AC_SUBST(ARCH,$llvm_cv_target_arch)
310
311dnl Check for the endianness of the target
312AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[big]),AC_SUBST([ENDIAN],[little]))
313
314dnl Check for build platform executable suffix if we're crosscompiling
315if test "$cross_compiling" = yes; then
316  AC_SUBST(LLVM_CROSS_COMPILING, [1])
317  AC_BUILD_EXEEXT
318  ac_build_prefix=${build_alias}-
319  AC_CHECK_PROG(BUILD_CXX, ${ac_build_prefix}g++, ${ac_build_prefix}g++)
320  if test -z "$BUILD_CXX"; then
321     AC_CHECK_PROG(BUILD_CXX, g++, g++)
322     if test -z "$BUILD_CXX"; then
323       AC_CHECK_PROG(BUILD_CXX, c++, c++, , , /usr/ucb/c++)
324     fi
325  fi
326else
327  AC_SUBST(LLVM_CROSS_COMPILING, [0])
328fi
329
330dnl Check to see if there's a "CVS" (or .svn or .git) directory indicating
331dnl that this build is being done from a checkout. This sets up several
332dnl defaults for the command line switches. When we build with a CVS directory,
333dnl we get a debug with assertions turned on. Without, we assume a source
334dnl release and we get an optimized build without assertions.
335dnl See --enable-optimized and --enable-assertions below
336if test -d "CVS" -o -d "${srcdir}/CVS" -o -d ".svn" -o -d "${srcdir}/.svn" -o -d ".git" -o -d "${srcdir}/.git"; then
337  cvsbuild="yes"
338  optimize="no"
339  AC_SUBST(CVSBUILD,[[CVSBUILD=1]])
340else
341  cvsbuild="no"
342  optimize="yes"
343fi
344
345dnl===-----------------------------------------------------------------------===
346dnl===
347dnl=== SECTION 3: Command line arguments for the configure script.
348dnl===
349dnl===-----------------------------------------------------------------------===
350
351dnl --enable-optimized : check whether they want to do an optimized build:
352AC_ARG_ENABLE(optimized, AS_HELP_STRING(
353 --enable-optimized,[Compile with optimizations enabled (default is NO)]),,enableval=$optimize)
354if test ${enableval} = "no" ; then
355  AC_SUBST(ENABLE_OPTIMIZED,[[]])
356else
357  AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
358fi
359
360dnl --enable-profiling : check whether they want to do a profile build:
361AC_ARG_ENABLE(profiling, AS_HELP_STRING(
362 --enable-profiling,[Compile with profiling enabled (default is NO)]),,enableval="no")
363if test ${enableval} = "no" ; then
364  AC_SUBST(ENABLE_PROFILING,[[]])
365else
366  AC_SUBST(ENABLE_PROFILING,[[ENABLE_PROFILING=1]])
367fi
368
369dnl --enable-assertions : check whether they want to turn on assertions or not:
370AC_ARG_ENABLE(assertions,AS_HELP_STRING(
371  --enable-assertions,[Compile with assertion checks enabled (default is YES)]),, enableval="yes")
372if test ${enableval} = "yes" ; then
373  AC_SUBST(DISABLE_ASSERTIONS,[[]])
374else
375  AC_SUBST(DISABLE_ASSERTIONS,[[DISABLE_ASSERTIONS=1]])
376fi
377
378dnl --enable-expensive-checks : check whether they want to turn on expensive debug checks:
379AC_ARG_ENABLE(expensive-checks,AS_HELP_STRING(
380  --enable-expensive-checks,[Compile with expensive debug checks enabled (default is NO)]),, enableval="no")
381if test ${enableval} = "yes" ; then
382  AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[ENABLE_EXPENSIVE_CHECKS=1]])
383  AC_SUBST(EXPENSIVE_CHECKS,[[yes]])
384else
385  AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[]])
386  AC_SUBST(EXPENSIVE_CHECKS,[[no]])
387fi
388
389dnl --enable-debug-runtime : should runtime libraries have debug symbols?
390AC_ARG_ENABLE(debug-runtime,
391   AS_HELP_STRING(--enable-debug-runtime,[Build runtime libs with debug symbols (default is NO)]),,enableval=no)
392if test ${enableval} = "no" ; then
393  AC_SUBST(DEBUG_RUNTIME,[[]])
394else
395  AC_SUBST(DEBUG_RUNTIME,[[DEBUG_RUNTIME=1]])
396fi
397
398dnl --enable-debug-symbols : should even optimized compiler libraries
399dnl have debug symbols?
400AC_ARG_ENABLE(debug-symbols,
401   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)
402if test ${enableval} = "no" ; then
403  AC_SUBST(DEBUG_SYMBOLS,[[]])
404else
405  AC_SUBST(DEBUG_SYMBOLS,[[DEBUG_SYMBOLS=1]])
406fi
407
408dnl --enable-jit: check whether they want to enable the jit
409AC_ARG_ENABLE(jit,
410  AS_HELP_STRING(--enable-jit,
411                 [Enable Just In Time Compiling (default is YES)]),,
412  enableval=default)
413if test ${enableval} = "no"
414then
415  AC_SUBST(JIT,[[]])
416else
417  case "$llvm_cv_target_arch" in
418    x86)         AC_SUBST(TARGET_HAS_JIT,1) ;;
419    Sparc)       AC_SUBST(TARGET_HAS_JIT,0) ;;
420    PowerPC)     AC_SUBST(TARGET_HAS_JIT,1) ;;
421    x86_64)      AC_SUBST(TARGET_HAS_JIT,1) ;;
422    Alpha)       AC_SUBST(TARGET_HAS_JIT,1) ;;
423    ARM)         AC_SUBST(TARGET_HAS_JIT,1) ;;
424    Mips)        AC_SUBST(TARGET_HAS_JIT,0) ;;
425    PIC16)       AC_SUBST(TARGET_HAS_JIT,0) ;;
426    XCore)       AC_SUBST(TARGET_HAS_JIT,0) ;;
427    MSP430)      AC_SUBST(TARGET_HAS_JIT,0) ;;
428    SystemZ)     AC_SUBST(TARGET_HAS_JIT,0) ;;
429    Blackfin)    AC_SUBST(TARGET_HAS_JIT,0) ;;
430    *)           AC_SUBST(TARGET_HAS_JIT,0) ;;
431  esac
432fi
433
434dnl Allow enablement of doxygen generated documentation
435AC_ARG_ENABLE(doxygen,
436              AS_HELP_STRING([--enable-doxygen],
437                             [Build doxygen documentation (default is NO)]),,
438                             enableval=default)
439case "$enableval" in
440  yes) AC_SUBST(ENABLE_DOXYGEN,[1]) ;;
441  no)  AC_SUBST(ENABLE_DOXYGEN,[0]) ;;
442  default) AC_SUBST(ENABLE_DOXYGEN,[0]) ;;
443  *) AC_MSG_ERROR([Invalid setting for --enable-doxygen. Use "yes" or "no"]) ;;
444esac
445
446dnl Allow disablement of threads
447AC_ARG_ENABLE(threads,
448              AS_HELP_STRING([--enable-threads],
449                             [Use threads if available (default is YES)]),,
450                             enableval=default)
451case "$enableval" in
452  yes) AC_SUBST(ENABLE_THREADS,[1]) ;;
453  no)  AC_SUBST(ENABLE_THREADS,[0]) ;;
454  default) AC_SUBST(ENABLE_THREADS,[1]) ;;
455  *) AC_MSG_ERROR([Invalid setting for --enable-threads. Use "yes" or "no"]) ;;
456esac
457AC_DEFINE_UNQUOTED([ENABLE_THREADS],$ENABLE_THREADS,[Define if threads enabled])
458
459dnl Allow building without position independent code
460AC_ARG_ENABLE(pic,
461  AS_HELP_STRING([--enable-pic],
462                 [Build LLVM with Position Independent Code (default is YES)]),,
463                 enableval=default)
464case "$enableval" in
465  yes) AC_SUBST(ENABLE_PIC,[1]) ;;
466  no)  AC_SUBST(ENABLE_PIC,[0]) ;;
467  default) AC_SUBST(ENABLE_PIC,[1]) ;;
468  *) AC_MSG_ERROR([Invalid setting for --enable-pic. Use "yes" or "no"]) ;;
469esac
470AC_DEFINE_UNQUOTED([ENABLE_PIC],$ENABLE_PIC,
471                   [Define if position independent code is enabled])
472
473dnl Allow specific targets to be specified for building (or not)
474TARGETS_TO_BUILD=""
475AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-targets],
476    [Build specific host targets: all or target1,target2,... Valid targets are:
477     host, x86, x86_64, sparc, powerpc, alpha, arm, mips, spu, pic16,
478     xcore, msp430, systemz, blackfin, cbe, msil, and cpp (default=all)]),,
479    enableval=all)
480if test "$enableval" = host-only ; then
481  enableval=host
482fi
483case "$enableval" in
484  all) TARGETS_TO_BUILD="X86 Sparc PowerPC Alpha ARM Mips CellSPU PIC16 XCore MSP430 SystemZ Blackfin CBackend MSIL CppBackend" ;;
485  *)for a_target in `echo $enableval|sed -e 's/,/ /g' ` ; do
486      case "$a_target" in
487        x86)      TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
488        x86_64)   TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
489        sparc)    TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;;
490        powerpc)  TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
491        alpha)    TARGETS_TO_BUILD="Alpha $TARGETS_TO_BUILD" ;;
492        arm)      TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
493        mips)     TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
494        spu)      TARGETS_TO_BUILD="CellSPU $TARGETS_TO_BUILD" ;;
495        pic16)    TARGETS_TO_BUILD="PIC16 $TARGETS_TO_BUILD" ;;
496        xcore)    TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
497        msp430)   TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
498        systemz)  TARGETS_TO_BUILD="SystemZ $TARGETS_TO_BUILD" ;;
499        blackfin) TARGETS_TO_BUILD="Blackfin $TARGETS_TO_BUILD" ;;
500        cbe)      TARGETS_TO_BUILD="CBackend $TARGETS_TO_BUILD" ;;
501        msil)     TARGETS_TO_BUILD="MSIL $TARGETS_TO_BUILD" ;;
502        cpp)      TARGETS_TO_BUILD="CppBackend $TARGETS_TO_BUILD" ;;
503        host) case "$llvm_cv_target_arch" in
504            x86)         TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
505            x86_64)      TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
506            Sparc)       TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;;
507            PowerPC)     TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
508            Alpha)       TARGETS_TO_BUILD="Alpha $TARGETS_TO_BUILD" ;;
509            ARM)         TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
510            Mips)        TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
511            CellSPU|SPU) TARGETS_TO_BUILD="CellSPU $TARGETS_TO_BUILD" ;;
512            PIC16)       TARGETS_TO_BUILD="PIC16 $TARGETS_TO_BUILD" ;;
513            XCore)       TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
514            MSP430)      TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
515            s390x)       TARGETS_TO_BUILD="SystemZ $TARGETS_TO_BUILD" ;;
516            Blackfin)    TARGETS_TO_BUILD="Blackfin $TARGETS_TO_BUILD" ;;
517            *)       AC_MSG_ERROR([Can not set target to build]) ;;
518          esac ;;
519        *) AC_MSG_ERROR([Unrecognized target $a_target]) ;;
520      esac
521  done
522  ;;
523esac
524AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD)
525
526# Determine whether we are building LLVM support for the native architecture.
527# If so, define LLVM_NATIVE_ARCH to that LLVM target.
528for a_target in $TARGETS_TO_BUILD; do
529  if test "$a_target" = "$LLVM_NATIVE_ARCH"; then
530    LLVM_NATIVE_ARCHTARGET="${LLVM_NATIVE_ARCH}Target"
531    AC_DEFINE_UNQUOTED(LLVM_NATIVE_ARCH,$LLVM_NATIVE_ARCHTARGET,
532      [LLVM architecture name for the native architecture, if available])
533  fi
534done
535
536# Build the LLVM_TARGET and LLVM_... macros for Targets.def and the individual
537# target feature def files.
538LLVM_ENUM_TARGETS=""
539LLVM_ENUM_ASM_PRINTERS=""
540LLVM_ENUM_ASM_PARSERS=""
541LLVM_ENUM_DISASSEMBLERS=""
542for target_to_build in $TARGETS_TO_BUILD; do
543  LLVM_ENUM_TARGETS="LLVM_TARGET($target_to_build) $LLVM_ENUM_TARGETS"
544  if test -f ${srcdir}/lib/Target/${target_to_build}/AsmPrinter/Makefile ; then
545    LLVM_ENUM_ASM_PRINTERS="LLVM_ASM_PRINTER($target_to_build) $LLVM_ENUM_ASM_PRINTERS";
546  fi
547  if test -f ${srcdir}/lib/Target/${target_to_build}/AsmParser/Makefile ; then
548    LLVM_ENUM_ASM_PARSERS="LLVM_ASM_PARSER($target_to_build) $LLVM_ENUM_ASM_PARSERS";
549  fi
550  if test -f ${srcdir}/lib/Target/${target_to_build}/Disassembler/Makefile ; then
551    LLVM_ENUM_DISASSEMBLERS="LLVM_DISASSEMBLER($target_to_build) $LLVM_ENUM_DISASSEMBLERS";
552  fi
553done
554AC_SUBST(LLVM_ENUM_TARGETS)
555AC_SUBST(LLVM_ENUM_ASM_PRINTERS)
556AC_SUBST(LLVM_ENUM_ASM_PARSERS)
557AC_SUBST(LLVM_ENUM_DISASSEMBLERS)
558
559dnl Prevent the CBackend from using printf("%a") for floating point so older
560dnl C compilers that cannot deal with the 0x0p+0 hex floating point format
561dnl can still compile the CBE's output
562AC_ARG_ENABLE([cbe-printf-a],AS_HELP_STRING([--enable-cbe-printf-a],
563  [Enable C Backend output with hex floating point via %a  (default is YES)]),,
564  enableval=default)
565case "$enableval" in
566  yes) AC_SUBST(ENABLE_CBE_PRINTF_A,[1]) ;;
567  no)  AC_SUBST(ENABLE_CBE_PRINTF_A,[0]) ;;
568  default)  AC_SUBST(ENABLE_CBE_PRINTF_A,[1]) ;;
569  *) AC_MSG_ERROR([Invalid setting for --enable-cbe-printf-a. Use "yes" or "no"]) ;;
570esac
571AC_DEFINE_UNQUOTED([ENABLE_CBE_PRINTF_A],$ENABLE_CBE_PRINTF_A,
572                   [Define if CBE is enabled for printf %a output])
573
574dnl Allow a specific llvm-gcc/llvm-g++ pair to be used with this LLVM config.
575AC_ARG_WITH(llvmgccdir,
576  AS_HELP_STRING([--with-llvmgccdir],
577    [Specify location of llvm-gcc install dir (default searches PATH)]),,
578    withval=default)
579case "$withval" in
580  default) WITH_LLVMGCCDIR=default ;;
581  /* | [[A-Za-z]]:[[\\/]]*)      WITH_LLVMGCCDIR=$withval ;;
582  *) AC_MSG_ERROR([Invalid path for --with-llvmgccdir. Provide full path]) ;;
583esac
584
585dnl Allow a specific llvm-gcc compiler to be used with this LLVM config.
586AC_ARG_WITH(llvmgcc,
587  AS_HELP_STRING([--with-llvmgcc],
588    [Specify location of llvm-gcc driver (default searches PATH)]),
589    LLVMGCC=$with_llvmgcc
590      WITH_LLVMGCCDIR="",)
591
592dnl Allow a specific llvm-g++ compiler to be used with this LLVM config.
593AC_ARG_WITH(llvmgxx,
594  AS_HELP_STRING([--with-llvmgxx],
595    [Specify location of llvm-g++ driver (default searches PATH)]),
596    LLVMGXX=$with_llvmgxx
597    WITH_LLVMGCCDIR="",)
598
599if test -n "$LLVMGCC"; then
600   LLVMGCCCOMMAND="$LLVMGCC"
601fi
602
603if test -n "$LLVMGXX"; then
604   LLVMGXXCOMMAND="$LLVMGXX"
605fi
606
607if test -n "$LLVMGCC" && test -z "$LLVMGXX"; then
608   AC_MSG_ERROR([Invalid llvm-g++. Use --with-llvmgxx when --with-llvmgcc is used]);
609fi
610
611if test -n "$LLVMGXX" && test -z "$LLVMGCC"; then
612   AC_MSG_ERROR([Invalid llvm-gcc. Use --with-llvmgcc when --with-llvmgxx is used]);
613fi
614
615dnl Override the option to use for optimized builds.
616AC_ARG_WITH(optimize-option,
617  AS_HELP_STRING([--with-optimize-option],
618                 [Select the compiler options to use for optimized builds]),,
619                 withval=default)
620AC_MSG_CHECKING([optimization flags])
621case "$withval" in
622  default)
623    case "$llvm_cv_os_type" in
624    MingW) optimize_option=-O3 ;;
625    *)     optimize_option=-O2 ;;
626    esac ;;
627  *) optimize_option="$withval" ;;
628esac
629AC_SUBST(OPTIMIZE_OPTION,$optimize_option)
630AC_MSG_RESULT([$optimize_option])
631
632dnl Specify extra build options
633AC_ARG_WITH(extra-options,
634  AS_HELP_STRING([--with-extra-options],
635                 [Specify additional options to compile LLVM with]),,
636                 withval=default)
637case "$withval" in
638  default) EXTRA_OPTIONS= ;;
639  *) EXTRA_OPTIONS=$withval ;;
640esac
641AC_SUBST(EXTRA_OPTIONS,$EXTRA_OPTIONS)
642
643dnl Allow specific bindings to be specified for building (or not)
644AC_ARG_ENABLE([bindings],AS_HELP_STRING([--enable-bindings],
645    [Build specific language bindings: all,auto,none,{binding-name} (default=auto)]),,
646    enableval=default)
647BINDINGS_TO_BUILD=""
648case "$enableval" in
649  yes | default | auto) BINDINGS_TO_BUILD="auto" ;;
650  all ) BINDINGS_TO_BUILD="ocaml" ;;
651  none | no) BINDINGS_TO_BUILD="" ;;
652  *)for a_binding in `echo $enableval|sed -e 's/,/ /g' ` ; do
653      case "$a_binding" in
654        ocaml) BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD" ;;
655        *) AC_MSG_ERROR([Unrecognized binding $a_binding]) ;;
656      esac
657  done
658  ;;
659esac
660
661dnl Allow the ocaml libdir to be overridden. This could go in a configure
662dnl script for bindings/ocaml/configure, except that its auto value depends on
663dnl OCAMLC, which is found here to support tests.
664AC_ARG_WITH([ocaml-libdir],
665  [AS_HELP_STRING([--with-ocaml-libdir],
666    [Specify install location for ocaml bindings (default is stdlib)])],
667  [],
668  [withval=auto])
669case "$withval" in
670  auto) with_ocaml_libdir="$withval" ;;
671  /* | [[A-Za-z]]:[[\\/]]*) with_ocaml_libdir="$withval" ;;
672  *) AC_MSG_ERROR([Invalid path for --with-ocaml-libdir. Provide full path]) ;;
673esac
674
675AC_ARG_WITH(c-include-dirs,
676  AS_HELP_STRING([--with-c-include-dirs],
677    [Colon separated list of directories clang will search for headers]),,
678    withval="")
679AC_DEFINE_UNQUOTED(C_INCLUDE_DIRS,"$withval",
680                   [Directories clang will search for headers])
681
682AC_ARG_WITH(cxx-include-root,
683  AS_HELP_STRING([--with-cxx-include-root],
684    [Directory with the libstdc++ headers.]),,
685    withval="")
686AC_DEFINE_UNQUOTED(CXX_INCLUDE_ROOT,"$withval",
687                   [Directory with the libstdc++ headers.])
688
689AC_ARG_WITH(cxx-include-arch,
690  AS_HELP_STRING([--with-cxx-include-arch],
691    [Architecture of the libstdc++ headers.]),,
692    withval="")
693AC_DEFINE_UNQUOTED(CXX_INCLUDE_ARCH,"$withval",
694                   [Arch the libstdc++ headers.])
695
696AC_ARG_WITH(cxx-include-32bit-dir,
697  AS_HELP_STRING([--with-cxx-include-32bit-dir],
698    [32 bit multilib dir.]),,
699    withval="")
700AC_DEFINE_UNQUOTED(CXX_INCLUDE_32BIT_DIR,"$withval",
701                   [32 bit multilib directory.])
702
703AC_ARG_WITH(cxx-include-64bit-dir,
704  AS_HELP_STRING([--with-cxx-include-64bit-dir],
705    [64 bit multilib directory.]),,
706    withval="")
707AC_DEFINE_UNQUOTED(CXX_INCLUDE_64BIT_DIR,"$withval",
708                   [64 bit multilib directory.])
709
710dnl Allow linking of LLVM with GPLv3 binutils code.
711AC_ARG_WITH(binutils-include,
712  AS_HELP_STRING([--with-binutils-include],
713    [Specify path to binutils/include/ containing plugin-api.h file for gold plugin.]),,
714  withval=default)
715case "$withval" in
716  default) WITH_BINUTILS_INCDIR=default ;;
717  /* | [[A-Za-z]]:[[\\/]]*)      WITH_BINUTILS_INCDIR=$withval ;;
718  *) AC_MSG_ERROR([Invalid path for --with-binutils-include. Provide full path]) ;;
719esac
720if test "x$WITH_BINUTILS_INCDIR" != xdefault ; then
721  AC_SUBST(BINUTILS_INCDIR,$WITH_BINUTILS_INCDIR)
722  if test ! -f "$WITH_BINUTILS_INCDIR/plugin-api.h"; then
723     echo "$WITH_BINUTILS_INCDIR/plugin-api.h"
724     AC_MSG_ERROR([Invalid path to directory containing plugin-api.h.]);
725  fi
726fi
727
728dnl --enable-libffi : check whether the user wants to turn off libffi:
729AC_ARG_ENABLE(libffi,AS_HELP_STRING(
730  --enable-libffi,[Check for the presence of libffi (default is NO)]),
731  [case "$enableval" in
732    yes) llvm_cv_enable_libffi="yes" ;;
733    no)  llvm_cv_enable_libffi="no"  ;;
734    *) AC_MSG_ERROR([Invalid setting for --enable-libffi. Use "yes" or "no"]) ;;
735  esac],
736  llvm_cv_enable_libffi=no)
737
738dnl Only Windows needs dynamic libCompilerDriver to support plugins.
739if test "$llvm_cv_os_type" = "Win32" ; then
740   llvmc_dynamic="yes"
741else
742   llvmc_dynamic="no"
743fi
744
745dnl --enable-llvmc-dynamic : should LLVMC link libCompilerDriver dynamically?
746AC_ARG_ENABLE(llvmc-dynamic,AS_HELP_STRING(
747--enable-llvmc-dynamic,
748[Link LLVMC dynamically (default is NO, unless on Win32)]),,
749enableval=$llvmc_dynamic)
750if test ${enableval} = "yes" && test "$ENABLE_PIC" -eq 1 ; then
751   AC_SUBST(ENABLE_LLVMC_DYNAMIC,[[ENABLE_LLVMC_DYNAMIC=1]])
752else
753   AC_SUBST(ENABLE_LLVMC_DYNAMIC,[[]])
754fi
755
756dnl --enable-llvmc-dynamic-plugins : should LLVMC support dynamic plugins?
757AC_ARG_ENABLE(llvmc-dynamic-plugins,AS_HELP_STRING(
758--enable-llvmc-dynamic-plugins,
759[Enable dynamic LLVMC plugins (default is YES)]),,
760enableval=yes)
761if test ${enableval} = "yes" ; then
762   AC_SUBST(ENABLE_LLVMC_DYNAMIC_PLUGINS,[[ENABLE_LLVMC_DYNAMIC_PLUGINS=1]])
763else
764   AC_SUBST(ENABLE_LLVMC_DYNAMIC_PLUGINS,[[]])
765fi
766
767dnl===-----------------------------------------------------------------------===
768dnl===
769dnl=== SECTION 4: Check for programs we need and that they are the right version
770dnl===
771dnl===-----------------------------------------------------------------------===
772
773dnl Check for compilation tools
774AC_PROG_CPP
775AC_PROG_CC(gcc)
776AC_PROG_CXX(g++)
777
778AC_PROG_NM
779AC_SUBST(NM)
780
781dnl Check for the tools that the makefiles require
782AC_CHECK_GNU_MAKE
783AC_PROG_LN_S
784AC_PATH_PROG(CMP, [cmp], [cmp])
785AC_PATH_PROG(CP, [cp], [cp])
786AC_PATH_PROG(DATE, [date], [date])
787AC_PATH_PROG(FIND, [find], [find])
788AC_PATH_PROG(GREP, [grep], [grep])
789AC_PATH_PROG(MKDIR,[mkdir],[mkdir])
790AC_PATH_PROG(MV,   [mv],   [mv])
791AC_PROG_RANLIB
792AC_CHECK_TOOL(AR, ar, false)
793AC_PATH_PROG(RM,   [rm],   [rm])
794AC_PATH_PROG(SED,  [sed],  [sed])
795AC_PATH_PROG(TAR,  [tar],  [gtar])
796AC_PATH_PROG(BINPWD,[pwd],  [pwd])
797
798dnl Looking for misc. graph plotting software
799AC_PATH_PROG(GRAPHVIZ, [Graphviz], [echo Graphviz])
800if test "$GRAPHVIZ" != "echo Graphviz" ; then
801  AC_DEFINE([HAVE_GRAPHVIZ],[1],[Define if the Graphviz program is available])
802  dnl If we're targeting for mingw we should emit windows paths, not msys
803  if test "$llvm_cv_os_type" = "MingW" ; then
804    GRAPHVIZ=`echo $GRAPHVIZ | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
805  fi
806  AC_DEFINE_UNQUOTED([LLVM_PATH_GRAPHVIZ],"$GRAPHVIZ${EXEEXT}",
807   [Define to path to Graphviz program if found or 'echo Graphviz' otherwise])
808fi
809AC_PATH_PROG(DOT, [dot], [echo dot])
810if test "$DOT" != "echo dot" ; then
811  AC_DEFINE([HAVE_DOT],[1],[Define if the dot program is available])
812  dnl If we're targeting for mingw we should emit windows paths, not msys
813  if test "$llvm_cv_os_type" = "MingW" ; then
814    DOT=`echo $DOT | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
815  fi
816  AC_DEFINE_UNQUOTED([LLVM_PATH_DOT],"$DOT${EXEEXT}",
817   [Define to path to dot program if found or 'echo dot' otherwise])
818fi
819AC_PATH_PROG(FDP, [fdp], [echo fdp])
820if test "$FDP" != "echo fdp" ; then
821  AC_DEFINE([HAVE_FDP],[1],[Define if the neat program is available])
822  dnl If we're targeting for mingw we should emit windows paths, not msys
823  if test "$llvm_cv_os_type" = "MingW" ; then
824    FDP=`echo $FDP | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
825  fi
826  AC_DEFINE_UNQUOTED([LLVM_PATH_FDP],"$FDP${EXEEXT}",
827   [Define to path to fdp program if found or 'echo fdp' otherwise])
828fi
829AC_PATH_PROG(NEATO, [neato], [echo neato])
830if test "$NEATO" != "echo neato" ; then
831  AC_DEFINE([HAVE_NEATO],[1],[Define if the neat program is available])
832  dnl If we're targeting for mingw we should emit windows paths, not msys
833  if test "$llvm_cv_os_type" = "MingW" ; then
834    NEATO=`echo $NEATO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
835  fi
836  AC_DEFINE_UNQUOTED([LLVM_PATH_NEATO],"$NEATO${EXEEXT}",
837   [Define to path to neato program if found or 'echo neato' otherwise])
838fi
839AC_PATH_PROG(TWOPI, [twopi], [echo twopi])
840if test "$TWOPI" != "echo twopi" ; then
841  AC_DEFINE([HAVE_TWOPI],[1],[Define if the neat program is available])
842  dnl If we're targeting for mingw we should emit windows paths, not msys
843  if test "$llvm_cv_os_type" = "MingW" ; then
844    TWOPI=`echo $TWOPI | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
845  fi
846  AC_DEFINE_UNQUOTED([LLVM_PATH_TWOPI],"$TWOPI${EXEEXT}",
847   [Define to path to twopi program if found or 'echo twopi' otherwise])
848fi
849AC_PATH_PROG(CIRCO, [circo], [echo circo])
850if test "$CIRCO" != "echo circo" ; then
851  AC_DEFINE([HAVE_CIRCO],[1],[Define if the neat program is available])
852  dnl If we're targeting for mingw we should emit windows paths, not msys
853  if test "$llvm_cv_os_type" = "MingW" ; then
854    CIRCO=`echo $CIRCO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
855  fi
856  AC_DEFINE_UNQUOTED([LLVM_PATH_CIRCO],"$CIRCO${EXEEXT}",
857   [Define to path to circo program if found or 'echo circo' otherwise])
858fi
859AC_PATH_PROGS(GV, [gv gsview32], [echo gv])
860if test "$GV" != "echo gv" ; then
861  AC_DEFINE([HAVE_GV],[1],[Define if the gv program is available])
862  dnl If we're targeting for mingw we should emit windows paths, not msys
863  if test "$llvm_cv_os_type" = "MingW" ; then
864    GV=`echo $GV | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
865  fi
866  AC_DEFINE_UNQUOTED([LLVM_PATH_GV],"$GV${EXEEXT}",
867   [Define to path to gv program if found or 'echo gv' otherwise])
868fi
869AC_PATH_PROG(DOTTY, [dotty], [echo dotty])
870if test "$DOTTY" != "echo dotty" ; then
871  AC_DEFINE([HAVE_DOTTY],[1],[Define if the dotty program is available])
872  dnl If we're targeting for mingw we should emit windows paths, not msys
873  if test "$llvm_cv_os_type" = "MingW" ; then
874    DOTTY=`echo $DOTTY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
875  fi
876  AC_DEFINE_UNQUOTED([LLVM_PATH_DOTTY],"$DOTTY${EXEEXT}",
877   [Define to path to dotty program if found or 'echo dotty' otherwise])
878fi
879
880dnl Look for a sufficiently recent version of Perl.
881LLVM_PROG_PERL([5.006])
882AC_SUBST(PERL)
883if test x"$PERL" = xnone; then
884   AC_SUBST(HAVE_PERL,0)
885   AC_MSG_ERROR([perl is required but was not found, please install it])
886else
887   AC_SUBST(HAVE_PERL,1)
888fi
889
890dnl Find the install program
891AC_PROG_INSTALL
892
893dnl Checks for documentation and testing tools that we can do without. If these
894dnl are not found then they are set to "true" which always succeeds but does
895dnl nothing. This just lets the build output show that we could have done
896dnl something if the tool was available.
897AC_PATH_PROG(BZIP2, [bzip2])
898AC_PATH_PROG(DOXYGEN, [doxygen])
899AC_PATH_PROG(GROFF, [groff])
900AC_PATH_PROG(GZIP, [gzip])
901AC_PATH_PROG(POD2HTML, [pod2html])
902AC_PATH_PROG(POD2MAN, [pod2man])
903AC_PATH_PROG(RUNTEST, [runtest])
904DJ_AC_PATH_TCLSH
905AC_PATH_PROG(ZIP, [zip])
906AC_PATH_PROGS(OCAMLC, [ocamlc])
907AC_PATH_PROGS(OCAMLOPT, [ocamlopt])
908AC_PATH_PROGS(OCAMLDEP, [ocamldep])
909AC_PATH_PROGS(OCAMLDOC, [ocamldoc])
910AC_PATH_PROGS(GAS, [gas as])
911
912dnl Determine whether the linker supports the -R option.
913AC_LINK_USE_R
914
915dnl Determine whether the linker supports the -export-dynamic option.
916AC_LINK_EXPORT_DYNAMIC
917
918dnl Check for libtool and the library that has dlopen function (which must come
919dnl before the AC_PROG_LIBTOOL check in order to enable dlopening libraries with
920dnl libtool).
921AC_LIBTOOL_DLOPEN
922AC_LIB_LTDL
923
924if test "$WITH_LLVMGCCDIR" = "default" ; then
925  LLVMGCC="llvm-gcc${EXEEXT}"
926  LLVMGXX="llvm-g++${EXEEXT}"
927  LLVMGCCCOMMAND="$LLVMGCC"
928  LLVMGXXCOMMAND="$LLVMGXX"
929  AC_SUBST(LLVMGCCCOMMAND,$LLVMGCCCOMMAND)
930  AC_SUBST(LLVMGXXCOMMAND,$LLVMGXXCOMMAND)
931  AC_PATH_PROG(LLVMGCC, $LLVMGCC, [])
932  AC_PATH_PROG(LLVMGXX, $LLVMGXX, [])
933else
934  if test -z "$LLVMGCC"; then
935    LLVMGCC="$WITH_LLVMGCCDIR/bin/llvm-gcc${EXEEXT}"
936    LLVMGCCCOMMAND="$LLVMGCC"
937  fi
938  if test -z "$LLVMGXX"; then
939    LLVMGXX="$WITH_LLVMGCCDIR/bin/llvm-g++${EXEEXT}"
940    LLVMGXXCOMMAND="$LLVMGXX"
941  fi
942
943  AC_SUBST(LLVMGCC,$LLVMGCC)
944  AC_SUBST(LLVMGXX,$LLVMGXX)
945  AC_SUBST(LLVMGCCCOMMAND,$LLVMGCCCOMMAND)
946  AC_SUBST(LLVMGXXCOMMAND,$LLVMGXXCOMMAND)
947fi
948
949
950AC_MSG_CHECKING([tool compatibility])
951
952dnl Ensure that compilation tools are GCC or a GNU compatible compiler such as
953dnl ICC; we use GCC specific options in the makefiles so the compiler needs
954dnl to support those options.
955dnl "icc" emits gcc signatures
956dnl "icc -no-gcc" emits no gcc signature BUT is still compatible
957ICC=no
958IXX=no
959case $CC in
960  icc*|icpc*)
961    ICC=yes
962    IXX=yes
963    ;;
964   *)
965    ;;
966esac
967
968if test "$GCC" != "yes" && test "$ICC" != "yes"
969then
970  AC_MSG_ERROR([gcc|icc required but not found])
971fi
972
973dnl Ensure that compilation tools are GCC; we use GCC specific extensions
974if test "$GXX" != "yes" && test "$IXX" != "yes"
975then
976  AC_MSG_ERROR([g++|icc required but not found])
977fi
978
979dnl Verify that GCC is version 3.0 or higher
980if test "$GCC" = "yes"
981then
982  AC_COMPILE_IFELSE([[#if !defined(__GNUC__) || __GNUC__ < 3
983#error Unsupported GCC version
984#endif
985]], [], [AC_MSG_ERROR([gcc 3.x required, but you have a lower version])])
986fi
987
988dnl Check for GNU Make.  We use its extensions, so don't build without it
989if test -z "$llvm_cv_gnu_make_command"
990then
991  AC_MSG_ERROR([GNU Make required but not found])
992fi
993
994dnl Tool compatibility is okay if we make it here.
995AC_MSG_RESULT([ok])
996
997dnl Check optional compiler flags. 
998AC_MSG_CHECKING([optional compiler flags])
999CXX_FLAG_CHECK(NO_VARIADIC_MACROS, [-Wno-variadic-macros])
1000CXX_FLAG_CHECK(NO_MISSING_FIELD_INITIALIZERS, [-Wno-missing-field-initializers])
1001AC_MSG_RESULT([$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS])
1002
1003dnl===-----------------------------------------------------------------------===
1004dnl===
1005dnl=== SECTION 5: Check for libraries
1006dnl===
1007dnl===-----------------------------------------------------------------------===
1008
1009AC_CHECK_LIB(m,sin)
1010if test "$llvm_cv_os_type" = "MingW" ; then
1011  AC_CHECK_LIB(imagehlp, main)
1012  AC_CHECK_LIB(psapi, main)
1013fi
1014
1015dnl dlopen() is required for plugin support.
1016AC_SEARCH_LIBS(dlopen,dl,AC_DEFINE([HAVE_DLOPEN],[1],
1017               [Define if dlopen() is available on this platform.]),
1018               AC_MSG_WARN([dlopen() not found - disabling plugin support]))
1019
1020dnl libffi is optional; used to call external functions from the interpreter
1021if test "$llvm_cv_enable_libffi" = "yes" ; then
1022  AC_SEARCH_LIBS(ffi_call,ffi,AC_DEFINE([HAVE_FFI_CALL],[1],
1023                 [Define if libffi is available on this platform.]),
1024                 AC_MSG_ERROR([libffi not found - configure without --enable-libffi to compile without it]))
1025fi
1026
1027dnl mallinfo is optional; the code can compile (minus features) without it
1028AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1],
1029               [Define if mallinfo() is available on this platform.]))
1030
1031dnl pthread locking functions are optional - but llvm will not be thread-safe
1032dnl without locks.
1033if test "$ENABLE_THREADS" -eq 1 ; then
1034  AC_CHECK_LIB(pthread, pthread_mutex_init)
1035  AC_SEARCH_LIBS(pthread_mutex_lock,pthread,
1036                 AC_DEFINE([HAVE_PTHREAD_MUTEX_LOCK],[1],
1037                           [Have pthread_mutex_lock]))
1038  AC_SEARCH_LIBS(pthread_rwlock_init,pthread,
1039                 AC_DEFINE([HAVE_PTHREAD_RWLOCK_INIT],[1],
1040                 [Have pthread_rwlock_init]))
1041  AC_SEARCH_LIBS(pthread_getspecific,pthread,
1042                 AC_DEFINE([HAVE_PTHREAD_GETSPECIFIC],[1],
1043                 [Have pthread_getspecific]))
1044fi
1045
1046dnl Allow extra x86-disassembler library
1047AC_ARG_WITH(udis86,
1048  AS_HELP_STRING([--with-udis86=<path>],
1049    [Use udis86 external x86 disassembler library]),
1050    [
1051      AC_SUBST(USE_UDIS86, [1])
1052      case "$withval" in
1053        /usr/lib|yes) ;;
1054        *) LDFLAGS="$LDFLAGS -L${withval}" ;;
1055      esac
1056      AC_CHECK_LIB(udis86, ud_init, [], [
1057        echo "Error! You need to have libudis86 around."
1058        exit -1
1059      ])
1060    ],
1061    AC_SUBST(USE_UDIS86, [0]))
1062AC_DEFINE_UNQUOTED([USE_UDIS86],$USE_UDIS86,
1063                   [Define if use udis86 library])
1064
1065dnl Allow OProfile support for JIT output.
1066AC_ARG_WITH(oprofile,
1067  AS_HELP_STRING([--with-oprofile=<prefix>],
1068    [Tell OProfile >= 0.9.4 how to symbolize JIT output]),
1069    [
1070      AC_SUBST(USE_OPROFILE, [1])
1071      case "$withval" in
1072        /usr|yes) llvm_cv_oppath=/usr/lib/oprofile ;;
1073        no) llvm_cv_oppath=
1074            AC_SUBST(USE_OPROFILE, [0]) ;;
1075        *) llvm_cv_oppath="${withval}/lib/oprofile"
1076           CPPFLAGS="-I${withval}/include";;
1077      esac
1078      if test -n "$llvm_cv_oppath" ; then
1079        LIBS="$LIBS -L${llvm_cv_oppath} -Wl,-rpath,${llvm_cv_oppath}"
1080        dnl Work around http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=537744:
1081        dnl libbfd is not included properly in libopagent in some Debian
1082        dnl versions.  If libbfd isn't found at all, we assume opagent works
1083        dnl anyway.
1084        AC_SEARCH_LIBS(bfd_init, bfd, [], [])
1085        AC_SEARCH_LIBS(op_open_agent, opagent, [], [
1086          echo "Error! You need to have libopagent around."
1087          exit -1
1088        ])
1089        AC_CHECK_HEADER([opagent.h], [], [
1090          echo "Error! You need to have opagent.h around."
1091          exit -1
1092          ])
1093      fi
1094    ],
1095    [
1096      AC_SUBST(USE_OPROFILE, [0])
1097    ])
1098AC_DEFINE_UNQUOTED([USE_OPROFILE],$USE_OPROFILE,
1099                   [Define if we have the oprofile JIT-support library])
1100
1101dnl===-----------------------------------------------------------------------===
1102dnl===
1103dnl=== SECTION 6: Check for header files
1104dnl===
1105dnl===-----------------------------------------------------------------------===
1106
1107dnl First, use autoconf provided macros for specific headers that we need
1108dnl We don't check for ancient stuff or things that are guaranteed to be there
1109dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers.
1110dnl Generally we're looking for POSIX headers.
1111AC_HEADER_DIRENT
1112AC_HEADER_MMAP_ANONYMOUS
1113AC_HEADER_STAT
1114AC_HEADER_STDC
1115AC_HEADER_SYS_WAIT
1116AC_HEADER_TIME
1117
1118AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h inttypes.h limits.h link.h])
1119AC_CHECK_HEADERS([malloc.h setjmp.h signal.h stdint.h termios.h unistd.h])
1120AC_CHECK_HEADERS([utime.h windows.h])
1121AC_CHECK_HEADERS([sys/mman.h sys/param.h sys/resource.h sys/time.h])
1122AC_CHECK_HEADERS([sys/types.h sys/ioctl.h malloc/malloc.h mach/mach.h])
1123if test "$ENABLE_THREADS" -eq 1 ; then
1124  AC_CHECK_HEADERS(pthread.h,
1125                   AC_SUBST(HAVE_PTHREAD, 1),
1126                   AC_SUBST(HAVE_PTHREAD, 0))
1127else
1128  AC_SUBST(HAVE_PTHREAD, 0)
1129fi
1130
1131dnl Try to find ffi.h.
1132if test "$llvm_cv_enable_libffi" = "yes" ; then
1133  AC_CHECK_HEADERS([ffi.h ffi/ffi.h])
1134fi
1135
1136dnl===-----------------------------------------------------------------------===
1137dnl===
1138dnl=== SECTION 7: Check for types and structures
1139dnl===
1140dnl===-----------------------------------------------------------------------===
1141
1142AC_HUGE_VAL_CHECK
1143AC_TYPE_PID_T
1144AC_TYPE_SIZE_T
1145AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[Define as the return type of signal handlers (`int' or `void').])
1146AC_STRUCT_TM
1147AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
1148AC_CHECK_TYPES([uint64_t],,
1149         AC_CHECK_TYPES([u_int64_t],,
1150         AC_MSG_ERROR([Type uint64_t or u_int64_t required but not found])))
1151
1152dnl===-----------------------------------------------------------------------===
1153dnl===
1154dnl=== SECTION 8: Check for specific functions needed
1155dnl===
1156dnl===-----------------------------------------------------------------------===
1157
1158AC_CHECK_FUNCS([backtrace ceilf floorf roundf rintf nearbyintf getcwd ])
1159AC_CHECK_FUNCS([powf fmodf strtof round ])
1160AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday ])
1161AC_CHECK_FUNCS([isatty mkdtemp mkstemp ])
1162AC_CHECK_FUNCS([mktemp realpath sbrk setrlimit strdup ])
1163AC_CHECK_FUNCS([strerror strerror_r strerror_s setenv ])
1164AC_CHECK_FUNCS([strtoll strtoq sysconf malloc_zone_statistics ])
1165AC_CHECK_FUNCS([setjmp longjmp sigsetjmp siglongjmp])
1166AC_C_PRINTF_A
1167AC_FUNC_RAND48
1168
1169dnl Check for variations in the Standard C++ library and STL. These macros are
1170dnl provided by LLVM in the autoconf/m4 directory.
1171AC_FUNC_ISNAN
1172AC_FUNC_ISINF
1173
1174dnl Check for mmap support.We also need to know if /dev/zero is required to
1175dnl be opened for allocating RWX memory.
1176dnl Make sure we aren't attempting to configure for an unknown system
1177if test "$llvm_cv_platform_type" = "Unix" ; then
1178  AC_FUNC_MMAP
1179  AC_FUNC_MMAP_FILE
1180  AC_NEED_DEV_ZERO_FOR_MMAP
1181
1182  if test "$ac_cv_func_mmap_fixed_mapped" = "no"
1183  then
1184    AC_MSG_WARN([mmap() of a fixed address required but not supported])
1185  fi
1186  if test "$ac_cv_func_mmap_file" = "no"
1187  then
1188    AC_MSG_WARN([mmap() of files required but not found])
1189  fi
1190fi
1191
1192dnl atomic builtins are required for threading support.
1193AC_MSG_CHECKING(for GCC atomic builtins)
1194AC_LINK_IFELSE(
1195  AC_LANG_SOURCE(
1196    [[int main() {
1197        volatile unsigned long val = 1;
1198        __sync_synchronize();
1199        __sync_val_compare_and_swap(&val, 1, 0);
1200        __sync_add_and_fetch(&val, 1);
1201        __sync_sub_and_fetch(&val, 1);
1202        return 0;
1203      }
1204    ]]),
1205  AC_MSG_RESULT(yes)
1206  AC_DEFINE(LLVM_MULTITHREADED, 1, Build multithreading support into LLVM),
1207  AC_MSG_RESULT(no)
1208  AC_DEFINE(LLVM_MULTITHREADED, 0, Build multithreading support into LLVM)
1209  AC_MSG_WARN([LLVM will be built thread-unsafe because atomic builtins are missing]))
1210
1211
1212dnl===-----------------------------------------------------------------------===
1213dnl===
1214dnl=== SECTION 9: Additional checks, variables, etc.
1215dnl===
1216dnl===-----------------------------------------------------------------------===
1217
1218dnl Handle 32-bit linux systems running a 64-bit kernel.
1219dnl This has to come after section 4 because it invokes the compiler.
1220if test "$llvm_cv_os_type" = "Linux" -a "$llvm_cv_target_arch" = "x86_64" ; then
1221  AC_IS_LINUX_MIXED
1222  if test "$llvm_cv_linux_mixed" = "yes"; then
1223    llvm_cv_target_arch="x86"
1224    ARCH="x86"
1225  fi
1226fi
1227
1228dnl Check, whether __dso_handle is present
1229AC_CHECK_FUNCS([__dso_handle])
1230
1231dnl See if the llvm-gcc executable can compile to LLVM assembly
1232AC_CACHE_CHECK([whether llvm-gcc is sane],[llvm_cv_llvmgcc_sanity],
1233[llvm_cv_llvmgcc_sanity="no"
1234if test -x "$LLVMGCC" ; then
1235  cp /dev/null conftest.c
1236  "$LLVMGCC" -emit-llvm -S -o - conftest.c | \
1237      grep 'target datalayout =' > /dev/null 2>&1
1238  if test $? -eq 0 ; then
1239    llvm_cv_llvmgcc_sanity="yes"
1240  fi
1241  rm conftest.c
1242fi])
1243
1244dnl Since we have a sane llvm-gcc, identify it and its sub-tools
1245if test "$llvm_cv_llvmgcc_sanity" = "yes" ; then
1246  AC_MSG_CHECKING([llvm-gcc component support])
1247  llvmcc1path=`"$LLVMGCC" --print-prog-name=cc1`
1248  AC_SUBST(LLVMCC1,$llvmcc1path)
1249  llvmcc1pluspath=`"$LLVMGCC" --print-prog-name=cc1plus`
1250  AC_SUBST(LLVMCC1PLUS,$llvmcc1pluspath)
1251  llvmgccdir=`echo "$llvmcc1path" | sed 's,/libexec/.*,,'`
1252  AC_SUBST(LLVMGCCDIR,$llvmgccdir)
1253  llvmgcclibexec=`echo "$llvmcc1path" | sed 's,/cc1,,'`
1254  AC_SUBST(LLVMGCCLIBEXEC,$llvmgcclibexec)
1255  llvmgccversion=[`"$LLVMGCC" -dumpversion 2>&1 | sed 's/^\([0-9.]*\).*/\1/'`]
1256  llvmgccmajvers=[`echo $llvmgccversion | sed 's/^\([0-9]\).*/\1/'`]
1257  AC_SUBST(LLVMGCC_VERSION,$llvmgccversion)
1258  AC_SUBST(LLVMGCC_MAJVERS,$llvmgccmajvers)
1259  llvmgcclangs=[`"$LLVMGCC" -v --help 2>&1 | grep '^Configured with:' | sed 's/^.*--enable-languages=\([^ ]*\).*/\1/'`]
1260  AC_SUBST(LLVMGCC_LANGS,$llvmgcclangs)
1261  AC_MSG_RESULT([ok])
1262fi
1263
1264dnl Propagate the shared library extension that the libltdl checks did to
1265dnl the Makefiles so we can use it there too
1266AC_SUBST(SHLIBEXT,$libltdl_cv_shlibext)
1267
1268# Translate the various configuration directories and other basic
1269# information into substitutions that will end up in Makefile.config.in
1270# that these configured values can be used by the makefiles
1271if test "${prefix}" = "NONE" ; then
1272  prefix="/usr/local"
1273fi
1274eval LLVM_PREFIX="${prefix}";
1275eval LLVM_BINDIR="${prefix}/bin";
1276eval LLVM_LIBDIR="${prefix}/lib";
1277eval LLVM_DATADIR="${prefix}/share/llvm";
1278eval LLVM_DOCSDIR="${prefix}/docs/llvm";
1279eval LLVM_ETCDIR="${prefix}/etc/llvm";
1280eval LLVM_INCLUDEDIR="${prefix}/include";
1281eval LLVM_INFODIR="${prefix}/info";
1282eval LLVM_MANDIR="${prefix}/man";
1283LLVM_CONFIGTIME=`date`
1284AC_SUBST(LLVM_PREFIX)
1285AC_SUBST(LLVM_BINDIR)
1286AC_SUBST(LLVM_LIBDIR)
1287AC_SUBST(LLVM_DATADIR)
1288AC_SUBST(LLVM_DOCSDIR)
1289AC_SUBST(LLVM_ETCDIR)
1290AC_SUBST(LLVM_INCLUDEDIR)
1291AC_SUBST(LLVM_INFODIR)
1292AC_SUBST(LLVM_MANDIR)
1293AC_SUBST(LLVM_CONFIGTIME)
1294
1295# Place the various directores into the config.h file as #defines so that we
1296# can know about the installation paths within LLVM.
1297AC_DEFINE_UNQUOTED(LLVM_PREFIX,"$LLVM_PREFIX",
1298                   [Installation prefix directory])
1299AC_DEFINE_UNQUOTED(LLVM_BINDIR, "$LLVM_BINDIR",
1300                   [Installation directory for binary executables])
1301AC_DEFINE_UNQUOTED(LLVM_LIBDIR, "$LLVM_LIBDIR",
1302                   [Installation directory for libraries])
1303AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DATADIR",
1304                   [Installation directory for data files])
1305AC_DEFINE_UNQUOTED(LLVM_DOCSDIR, "$LLVM_DOCSDIR",
1306                   [Installation directory for documentation])
1307AC_DEFINE_UNQUOTED(LLVM_ETCDIR, "$LLVM_ETCDIR",
1308                   [Installation directory for config files])
1309AC_DEFINE_UNQUOTED(LLVM_INCLUDEDIR, "$LLVM_INCLUDEDIR",
1310                   [Installation directory for include files])
1311AC_DEFINE_UNQUOTED(LLVM_INFODIR, "$LLVM_INFODIR",
1312                   [Installation directory for .info files])
1313AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR",
1314                   [Installation directory for man pages])
1315AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME",
1316                   [Time at which LLVM was configured])
1317AC_DEFINE_UNQUOTED(LLVM_HOSTTRIPLE, "$host",
1318                   [Host triple we were built on])
1319
1320# Determine which bindings to build.
1321if test "$BINDINGS_TO_BUILD" = auto ; then
1322  BINDINGS_TO_BUILD=""
1323  if test "x$OCAMLC" != x -a "x$OCAMLDEP" != x ; then
1324    BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD"
1325  fi
1326fi
1327AC_SUBST(BINDINGS_TO_BUILD,$BINDINGS_TO_BUILD)
1328
1329# This isn't really configurey, but it avoids having to repeat the list in
1330# other files.
1331AC_SUBST(ALL_BINDINGS,ocaml)
1332
1333# Do any work necessary to ensure that bindings have what they need.
1334binding_prereqs_failed=0
1335for a_binding in $BINDINGS_TO_BUILD ; do
1336  case "$a_binding" in
1337  ocaml)
1338    if test "x$OCAMLC" = x ; then
1339      AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlc not found. Try configure OCAMLC=/path/to/ocamlc])
1340      binding_prereqs_failed=1
1341    fi
1342    if test "x$OCAMLDEP" = x ; then
1343      AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamldep not found. Try configure OCAMLDEP=/path/to/ocamldep])
1344      binding_prereqs_failed=1
1345    fi
1346    if test "x$OCAMLOPT" = x ; then
1347      AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlopt not found. Try configure OCAMLOPT=/path/to/ocamlopt])
1348      dnl ocamlopt is optional!
1349    fi
1350    if test "x$with_ocaml_libdir" != xauto ; then
1351      AC_SUBST(OCAML_LIBDIR,$with_ocaml_libdir)
1352    else
1353      ocaml_stdlib="`"$OCAMLC" -where`"
1354      if test "$LLVM_PREFIX" '<' "$ocaml_stdlib" -a "$ocaml_stdlib" '<' "$LLVM_PREFIX~"
1355      then
1356        # ocaml stdlib is beneath our prefix; use stdlib
1357        AC_SUBST(OCAML_LIBDIR,$ocaml_stdlib)
1358      else
1359        # ocaml stdlib is outside our prefix; use libdir/ocaml
1360        AC_SUBST(OCAML_LIBDIR,$LLVM_LIBDIR/ocaml)
1361      fi
1362    fi
1363    ;;
1364  esac
1365done
1366if test "$binding_prereqs_failed" = 1 ; then
1367  AC_MSG_ERROR([Prequisites for bindings not satisfied. Fix them or use configure --disable-bindings.])
1368fi
1369
1370dnl Determine whether the compiler supports -fvisibility-inlines-hidden.
1371AC_CXX_USE_VISIBILITY_INLINES_HIDDEN
1372
1373dnl Determine linker rpath flag
1374if test "$llvm_cv_link_use_r" = "yes" ; then
1375  RPATH="-Wl,-R"
1376else
1377  RPATH="-Wl,-rpath"
1378fi
1379AC_SUBST(RPATH)
1380
1381dnl Determine linker rdynamic flag
1382if test "$llvm_cv_link_use_export_dynamic" = "yes" ; then
1383  RDYNAMIC="-Wl,-export-dynamic"
1384else
1385  RDYNAMIC=""
1386fi
1387AC_SUBST(RDYNAMIC)
1388
1389dnl===-----------------------------------------------------------------------===
1390dnl===
1391dnl=== SECTION 10: Specify the output files and generate it
1392dnl===
1393dnl===-----------------------------------------------------------------------===
1394
1395dnl Configure header files
1396dnl WARNING: dnl If you add or remove any of the following config headers, then
1397dnl you MUST also update Makefile.rules so that the variable FilesToConfig
1398dnl contains the same list of files as AC_CONFIG_HEADERS below. This ensures the
1399dnl files can be updated automatically when their *.in sources change.
1400AC_CONFIG_HEADERS([include/llvm/Config/config.h])
1401AC_CONFIG_FILES([include/llvm/Config/Targets.def])
1402AC_CONFIG_FILES([include/llvm/Config/AsmPrinters.def])
1403AC_CONFIG_FILES([include/llvm/Config/AsmParsers.def])
1404AC_CONFIG_FILES([include/llvm/Config/Disassemblers.def])
1405AC_CONFIG_HEADERS([include/llvm/System/DataTypes.h])
1406
1407dnl Configure the makefile's configuration data
1408AC_CONFIG_FILES([Makefile.config])
1409
1410dnl Configure the RPM spec file for LLVM
1411AC_CONFIG_FILES([llvm.spec])
1412
1413dnl Configure doxygen's configuration file
1414AC_CONFIG_FILES([docs/doxygen.cfg])
1415
1416dnl Configure llvmc's Base plugin
1417AC_CONFIG_FILES([tools/llvmc/plugins/Base/Base.td])
1418
1419dnl Do the first stage of configuration for llvm-config.in.
1420AC_CONFIG_FILES([tools/llvm-config/llvm-config.in])
1421
1422dnl Do special configuration of Makefiles
1423AC_CONFIG_COMMANDS([setup],,[llvm_src="${srcdir}"])
1424AC_CONFIG_MAKEFILE(Makefile)
1425AC_CONFIG_MAKEFILE(Makefile.common)
1426AC_CONFIG_MAKEFILE(examples/Makefile)
1427AC_CONFIG_MAKEFILE(lib/Makefile)
1428AC_CONFIG_MAKEFILE(runtime/Makefile)
1429AC_CONFIG_MAKEFILE(test/Makefile)
1430AC_CONFIG_MAKEFILE(test/Makefile.tests)
1431AC_CONFIG_MAKEFILE(unittests/Makefile)
1432AC_CONFIG_MAKEFILE(tools/Makefile)
1433AC_CONFIG_MAKEFILE(utils/Makefile)
1434AC_CONFIG_MAKEFILE(projects/Makefile)
1435AC_CONFIG_MAKEFILE(bindings/Makefile)
1436AC_CONFIG_MAKEFILE(bindings/ocaml/Makefile.ocaml)
1437
1438dnl Finally, crank out the output
1439AC_OUTPUT
1440