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