1
dnl === configure.ac --------------------------------------------------------===
2
dnl The LLVM Compiler Infrastructure
4
dnl This file is distributed under the University of Illinois Open Source
5
dnl License. See LICENSE.TXT for details.
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
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
27
dnl===-----------------------------------------------------------------------===
29
dnl=== SECTION 1: Initialization & Setup
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])
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.])
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.
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])
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])
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}])
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`
67
if test -d ${srcdir}/projects/${i} ; then
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
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]) ;;
86
AC_MSG_WARN([Unknown project (${i}) won't be configured automatically])
92
dnl===-----------------------------------------------------------------------===
94
dnl=== SECTION 2: Architecture, target, and host checks
96
dnl===-----------------------------------------------------------------------===
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.
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],
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" ;;
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" ;;
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" ;;
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" ;;
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" ;;
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" ;;
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" ;;
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" ;;
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" ;;
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" ;;
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" ;;
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" ;;
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" ;;
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" ;;
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" ;;
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" ;;
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" ;;
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" ;;
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" ;;
206
AC_CACHE_CHECK([type of operating system we're going to target],
207
[llvm_cv_target_os_type],
210
llvm_cv_target_os_type="AIX" ;;
212
llvm_cv_target_os_type="IRIX" ;;
214
llvm_cv_target_os_type="Cygwin" ;;
216
llvm_cv_target_os_type="Darwin" ;;
218
llvm_cv_target_os_type="FreeBSD" ;;
220
llvm_cv_target_os_type="OpenBSD" ;;
222
llvm_cv_target_os_type="NetBSD" ;;
224
llvm_cv_target_os_type="DragonFly" ;;
226
llvm_cv_target_os_type="HP-UX" ;;
228
llvm_cv_target_os_type="Interix" ;;
230
llvm_cv_target_os_type="Linux" ;;
232
llvm_cv_target_os_type="SunOS" ;;
234
llvm_cv_target_os_type="AuroraUX" ;;
236
llvm_cv_target_os_type="Win32" ;;
238
llvm_cv_target_os_type="MingW" ;;
240
llvm_cv_target_os_type="Haiku" ;;
242
llvm_cv_target_os_type="Freestanding" ;;
244
llvm_cv_target_os_type="Unknown" ;;
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])
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)
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)
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
265
case $llvm_cv_platform_type in
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])
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])
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
281
AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch],
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" ;;
299
if test "$llvm_cv_target_arch" = "Unknown" ; then
300
AC_MSG_WARN([Configuring LLVM for an unknown target archicture])
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" ;;
310
dnl Define a substitution, ARCH, for the target architecture
311
AC_SUBST(ARCH,$llvm_cv_target_arch)
313
dnl Check for the endianness of the target
314
AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[big]),AC_SUBST([ENDIAN],[little]))
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])
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++)
329
AC_SUBST(LLVM_CROSS_COMPILING, [0])
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
341
AC_SUBST(CVSBUILD,[[CVSBUILD=1]])
347
dnl===-----------------------------------------------------------------------===
349
dnl=== SECTION 3: Command line arguments for the configure script.
351
dnl===-----------------------------------------------------------------------===
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,[[]])
359
AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
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,[[]])
368
AC_SUBST(ENABLE_PROFILING,[[ENABLE_PROFILING=1]])
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,[[]])
377
AC_SUBST(DISABLE_ASSERTIONS,[[DISABLE_ASSERTIONS=1]])
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]])
387
AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[]])
388
AC_SUBST(EXPENSIVE_CHECKS,[[no]])
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,[[]])
397
AC_SUBST(DEBUG_RUNTIME,[[DEBUG_RUNTIME=1]])
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,[[]])
407
AC_SUBST(DEBUG_SYMBOLS,[[DEBUG_SYMBOLS=1]])
410
dnl --enable-jit: check whether they want to enable the jit
412
AS_HELP_STRING(--enable-jit,
413
[Enable Just In Time Compiling (default is YES)]),,
415
if test ${enableval} = "no"
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) ;;
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)]),,
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"]) ;;
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)]),,
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"]) ;;
460
AC_DEFINE_UNQUOTED([ENABLE_THREADS],$ENABLE_THREADS,[Define if threads enabled])
462
dnl Allow building without position independent code
464
AS_HELP_STRING([--enable-pic],
465
[Build LLVM with Position Independent Code (default is YES)]),,
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"]) ;;
473
AC_DEFINE_UNQUOTED([ENABLE_PIC],$ENABLE_PIC,
474
[Define if position independent code is enabled])
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)]),,
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"]) ;;
488
dnl Allow specific targets to be specified for building (or not)
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)]),,
495
if test "$enableval" = host-only ; then
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
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]) ;;
536
*) AC_MSG_ERROR([Unrecognized target $a_target]) ;;
541
AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD)
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])
553
# Build the LLVM_TARGET and LLVM_... macros for Targets.def and the individual
554
# target feature def files.
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";
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";
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";
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)
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)]),,
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"]) ;;
588
AC_DEFINE_UNQUOTED([ENABLE_CBE_PRINTF_A],$ENABLE_CBE_PRINTF_A,
589
[Define if CBE is enabled for printf %a output])
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)]),,
597
default) WITH_LLVMGCCDIR=default ;;
598
/* | [[A-Za-z]]:[[\\/]]*) WITH_LLVMGCCDIR=$withval ;;
599
*) AC_MSG_ERROR([Invalid path for --with-llvmgccdir. Provide full path]) ;;
602
dnl Allow a specific llvm-gcc compiler to be used with this LLVM config.
604
AS_HELP_STRING([--with-llvmgcc],
605
[Specify location of llvm-gcc driver (default searches PATH)]),
606
LLVMGCC=$with_llvmgcc
609
dnl Allow a specific llvm-g++ compiler to be used with this LLVM config.
611
AS_HELP_STRING([--with-llvmgxx],
612
[Specify location of llvm-g++ driver (default searches PATH)]),
613
LLVMGXX=$with_llvmgxx
616
if test -n "$LLVMGCC"; then
617
LLVMGCCCOMMAND="$LLVMGCC"
620
if test -n "$LLVMGXX"; then
621
LLVMGXXCOMMAND="$LLVMGXX"
624
if test -n "$LLVMGCC" && test -z "$LLVMGXX"; then
625
AC_MSG_ERROR([Invalid llvm-g++. Use --with-llvmgxx when --with-llvmgcc is used]);
628
if test -n "$LLVMGXX" && test -z "$LLVMGCC"; then
629
AC_MSG_ERROR([Invalid llvm-gcc. Use --with-llvmgcc when --with-llvmgxx is used]);
632
dnl Allow a specific Clang compiler to be used with this LLVM config.
634
AS_HELP_STRING([--with-clang],
635
[Specify location of clang compiler (default is --with-built-clang)]),
636
[],[with_clang=default])
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])
644
dnl Select the Clang compiler option.
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])
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])
656
elif test "$with_built_clang" = "yes"; then
658
elif test "$with_built_clang" = "no"; then
661
if test "$with_built_clang" != "check"; then
662
AC_MSG_ERROR([invalid value for --with-built-clang.])
665
if test -f ${srcdir}/tools/clang/README.txt; then
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])
676
AC_MSG_RESULT([none])
678
AC_SUBST(CLANGPATH,$WITH_CLANGPATH)
679
AC_SUBST(CLANGXXPATH,$WITH_CLANGXXPATH)
680
AC_SUBST(ENABLE_BUILT_CLANG,$WITH_BUILT_CLANG)
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]),,
687
AC_MSG_CHECKING([optimization flags])
690
case "$llvm_cv_os_type" in
691
MingW) optimize_option=-O3 ;;
692
*) optimize_option=-O2 ;;
694
*) optimize_option="$withval" ;;
696
AC_SUBST(OPTIMIZE_OPTION,$optimize_option)
697
AC_MSG_RESULT([$optimize_option])
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]),,
705
default) EXTRA_OPTIONS= ;;
706
*) EXTRA_OPTIONS=$withval ;;
708
AC_SUBST(EXTRA_OPTIONS,$EXTRA_OPTIONS)
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)]),,
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
721
ocaml) BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD" ;;
722
*) AC_MSG_ERROR([Unrecognized binding $a_binding]) ;;
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)])],
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]) ;;
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]),,
746
AC_DEFINE_UNQUOTED(C_INCLUDE_DIRS,"$withval",
747
[Directories clang will search for headers])
749
AC_ARG_WITH(cxx-include-root,
750
AS_HELP_STRING([--with-cxx-include-root],
751
[Directory with the libstdc++ headers.]),,
753
AC_DEFINE_UNQUOTED(CXX_INCLUDE_ROOT,"$withval",
754
[Directory with the libstdc++ headers.])
756
AC_ARG_WITH(cxx-include-arch,
757
AS_HELP_STRING([--with-cxx-include-arch],
758
[Architecture of the libstdc++ headers.]),,
760
AC_DEFINE_UNQUOTED(CXX_INCLUDE_ARCH,"$withval",
761
[Arch the libstdc++ headers.])
763
AC_ARG_WITH(cxx-include-32bit-dir,
764
AS_HELP_STRING([--with-cxx-include-32bit-dir],
765
[32 bit multilib dir.]),,
767
AC_DEFINE_UNQUOTED(CXX_INCLUDE_32BIT_DIR,"$withval",
768
[32 bit multilib directory.])
770
AC_ARG_WITH(cxx-include-64bit-dir,
771
AS_HELP_STRING([--with-cxx-include-64bit-dir],
772
[64 bit multilib directory.]),,
774
AC_DEFINE_UNQUOTED(CXX_INCLUDE_64BIT_DIR,"$withval",
775
[64 bit multilib directory.])
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.]),,
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]) ;;
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.]);
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"]) ;;
803
llvm_cv_enable_libffi=no)
805
dnl Only Windows needs dynamic libCompilerDriver to support plugins.
806
if test "$llvm_cv_os_type" = "Win32" ; then
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]])
820
AC_SUBST(ENABLE_LLVMC_DYNAMIC,[[]])
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)]),,
828
if test ${enableval} = "yes" ; then
829
AC_SUBST(ENABLE_LLVMC_DYNAMIC_PLUGINS,[[ENABLE_LLVMC_DYNAMIC_PLUGINS=1]])
831
AC_SUBST(ENABLE_LLVMC_DYNAMIC_PLUGINS,[[]])
834
dnl===-----------------------------------------------------------------------===
836
dnl=== SECTION 4: Check for programs we need and that they are the right version
838
dnl===-----------------------------------------------------------------------===
840
dnl Check for compilation tools
848
dnl Check for the tools that the makefiles require
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])
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])
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:\//' `
873
AC_DEFINE_UNQUOTED([LLVM_PATH_GRAPHVIZ],"$GRAPHVIZ${EXEEXT}",
874
[Define to path to Graphviz program if found or 'echo Graphviz' otherwise])
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:\//' `
883
AC_DEFINE_UNQUOTED([LLVM_PATH_DOT],"$DOT${EXEEXT}",
884
[Define to path to dot program if found or 'echo dot' otherwise])
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:\//' `
893
AC_DEFINE_UNQUOTED([LLVM_PATH_FDP],"$FDP${EXEEXT}",
894
[Define to path to fdp program if found or 'echo fdp' otherwise])
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:\//' `
903
AC_DEFINE_UNQUOTED([LLVM_PATH_NEATO],"$NEATO${EXEEXT}",
904
[Define to path to neato program if found or 'echo neato' otherwise])
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:\//' `
913
AC_DEFINE_UNQUOTED([LLVM_PATH_TWOPI],"$TWOPI${EXEEXT}",
914
[Define to path to twopi program if found or 'echo twopi' otherwise])
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:\//' `
923
AC_DEFINE_UNQUOTED([LLVM_PATH_CIRCO],"$CIRCO${EXEEXT}",
924
[Define to path to circo program if found or 'echo circo' otherwise])
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:\//' `
933
AC_DEFINE_UNQUOTED([LLVM_PATH_GV],"$GV${EXEEXT}",
934
[Define to path to gv program if found or 'echo gv' otherwise])
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:\//' `
943
AC_DEFINE_UNQUOTED([LLVM_PATH_DOTTY],"$DOTTY${EXEEXT}",
944
[Define to path to dotty program if found or 'echo dotty' otherwise])
947
dnl Look for a sufficiently recent version of Perl.
948
dnl CLAMAV local: don't need Perl, we use automake buildsystem not llvm-config
949
dnl LLVM_PROG_PERL([5.006])
951
dnl if test x"$PERL" = xnone; then
952
AC_SUBST(HAVE_PERL,0)
953
dnl AC_MSG_ERROR([perl is required but was not found, please install it])
955
dnl AC_SUBST(HAVE_PERL,1)
958
dnl Find the install program
961
dnl Checks for documentation and testing tools that we can do without. If these
962
dnl are not found then they are set to "true" which always succeeds but does
963
dnl nothing. This just lets the build output show that we could have done
964
dnl something if the tool was available.
965
AC_PATH_PROG(BZIP2, [bzip2])
966
AC_PATH_PROG(DOXYGEN, [doxygen])
967
AC_PATH_PROG(GROFF, [groff])
968
AC_PATH_PROG(GZIP, [gzip])
969
AC_PATH_PROG(POD2HTML, [pod2html])
970
AC_PATH_PROG(POD2MAN, [pod2man])
971
AC_PATH_PROG(RUNTEST, [runtest])
973
AC_PATH_PROG(ZIP, [zip])
974
AC_PATH_PROGS(OCAMLC, [ocamlc])
975
AC_PATH_PROGS(OCAMLOPT, [ocamlopt])
976
AC_PATH_PROGS(OCAMLDEP, [ocamldep])
977
AC_PATH_PROGS(OCAMLDOC, [ocamldoc])
978
AC_PATH_PROGS(GAS, [gas as])
980
dnl Determine whether the linker supports the -R option.
983
dnl Determine whether the linker supports the -export-dynamic option.
984
AC_LINK_EXPORT_DYNAMIC
986
dnl Check for libtool and the library that has dlopen function (which must come
987
dnl before the AC_PROG_LIBTOOL check in order to enable dlopening libraries with
992
if test "$WITH_LLVMGCCDIR" = "default" ; then
993
LLVMGCC="llvm-gcc${EXEEXT}"
994
LLVMGXX="llvm-g++${EXEEXT}"
995
LLVMGCCCOMMAND="$LLVMGCC"
996
LLVMGXXCOMMAND="$LLVMGXX"
997
AC_SUBST(LLVMGCCCOMMAND,$LLVMGCCCOMMAND)
998
AC_SUBST(LLVMGXXCOMMAND,$LLVMGXXCOMMAND)
999
AC_PATH_PROG(LLVMGCC, $LLVMGCC, [])
1000
AC_PATH_PROG(LLVMGXX, $LLVMGXX, [])
1002
if test -z "$LLVMGCC"; then
1003
LLVMGCC="$WITH_LLVMGCCDIR/bin/llvm-gcc${EXEEXT}"
1004
LLVMGCCCOMMAND="$LLVMGCC"
1006
if test -z "$LLVMGXX"; then
1007
LLVMGXX="$WITH_LLVMGCCDIR/bin/llvm-g++${EXEEXT}"
1008
LLVMGXXCOMMAND="$LLVMGXX"
1011
AC_SUBST(LLVMGCC,$LLVMGCC)
1012
AC_SUBST(LLVMGXX,$LLVMGXX)
1013
AC_SUBST(LLVMGCCCOMMAND,$LLVMGCCCOMMAND)
1014
AC_SUBST(LLVMGXXCOMMAND,$LLVMGXXCOMMAND)
1017
dnl Select the LLVM capable compiler to use, we default to using llvm-gcc if
1018
dnl found, otherwise clang if available.
1020
AS_HELP_STRING([--with-llvmcc=<name>],
1021
[Choose the LLVM capable compiler to use (llvm-gcc, clang, or none; default=check)]),
1022
[],[with_llvmcc=check])
1023
AC_MSG_CHECKING([LLVM capable compiler])
1024
if test "$with_llvmcc" != "check"; then
1025
if (test "$with_llvmcc" != "llvm-gcc" &&
1026
test "$with_llvmcc" != "clang" &&
1027
test "$with_llvmcc" != "none"); then
1028
AC_MSG_ERROR([invalid value for --with-llvmcc, expected 'llvm-gcc', 'clang', or 'none'.])
1030
WITH_LLVMCC="$with_llvmcc"
1031
elif test -n "$LLVMGCC"; then
1032
WITH_LLVMCC=llvm-gcc
1033
elif test -n "$WITH_CLANGPATH" || test "$WITH_BUILT_CLANG" -ne "0"; then
1038
AC_MSG_RESULT([$WITH_LLVMCC])
1039
AC_SUBST(LLVMCC_OPTION,$WITH_LLVMCC)
1041
AC_MSG_CHECKING([tool compatibility])
1043
dnl Ensure that compilation tools are GCC or a GNU compatible compiler such as
1044
dnl ICC; we use GCC specific options in the makefiles so the compiler needs
1045
dnl to support those options.
1046
dnl "icc" emits gcc signatures
1047
dnl "icc -no-gcc" emits no gcc signature BUT is still compatible
1059
if test "$GCC" != "yes" && test "$ICC" != "yes"
1061
AC_MSG_ERROR([gcc|icc required but not found])
1064
dnl Ensure that compilation tools are GCC; we use GCC specific extensions
1065
if test "$GXX" != "yes" && test "$IXX" != "yes"
1067
AC_MSG_ERROR([g++|icc required but not found])
1070
dnl Verify that GCC is version 3.0 or higher
1071
if test "$GCC" = "yes"
1073
AC_COMPILE_IFELSE([[#if !defined(__GNUC__) || __GNUC__ < 3
1074
#error Unsupported GCC version
1076
]], [], [AC_MSG_ERROR([gcc 3.x required, but you have a lower version])])
1079
dnl Check for GNU Make. We use its extensions, so don't build without it
1080
if test -z "$llvm_cv_gnu_make_command"
1082
AC_MSG_ERROR([GNU Make required but not found])
1085
dnl Tool compatibility is okay if we make it here.
1088
dnl Check optional compiler flags.
1089
AC_MSG_CHECKING([optional compiler flags])
1090
CXX_FLAG_CHECK(NO_VARIADIC_MACROS, [-Wno-variadic-macros])
1091
CXX_FLAG_CHECK(NO_MISSING_FIELD_INITIALIZERS, [-Wno-missing-field-initializers])
1092
AC_MSG_RESULT([$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS])
1094
dnl===-----------------------------------------------------------------------===
1096
dnl=== SECTION 5: Check for libraries
1098
dnl===-----------------------------------------------------------------------===
1101
if test "$llvm_cv_os_type" = "MingW" ; then
1102
AC_CHECK_LIB(imagehlp, main)
1103
AC_CHECK_LIB(psapi, main)
1106
dnl dlopen() is required for plugin support.
1107
AC_SEARCH_LIBS(dlopen,dl,AC_DEFINE([HAVE_DLOPEN],[1],
1108
[Define if dlopen() is available on this platform.]),
1109
AC_MSG_WARN([dlopen() not found - disabling plugin support]))
1111
dnl libffi is optional; used to call external functions from the interpreter
1112
if test "$llvm_cv_enable_libffi" = "yes" ; then
1113
AC_SEARCH_LIBS(ffi_call,ffi,AC_DEFINE([HAVE_FFI_CALL],[1],
1114
[Define if libffi is available on this platform.]),
1115
AC_MSG_ERROR([libffi not found - configure without --enable-libffi to compile without it]))
1118
dnl mallinfo is optional; the code can compile (minus features) without it
1119
AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1],
1120
[Define if mallinfo() is available on this platform.]))
1122
dnl pthread locking functions are optional - but llvm will not be thread-safe
1124
if test "$ENABLE_THREADS" -eq 1 ; then
1125
AC_CHECK_LIB(pthread, pthread_mutex_init)
1126
AC_SEARCH_LIBS(pthread_mutex_lock,pthread,
1127
AC_DEFINE([HAVE_PTHREAD_MUTEX_LOCK],[1],
1128
[Have pthread_mutex_lock]))
1129
AC_SEARCH_LIBS(pthread_rwlock_init,pthread,
1130
AC_DEFINE([HAVE_PTHREAD_RWLOCK_INIT],[1],
1131
[Have pthread_rwlock_init]))
1132
AC_SEARCH_LIBS(pthread_getspecific,pthread,
1133
AC_DEFINE([HAVE_PTHREAD_GETSPECIFIC],[1],
1134
[Have pthread_getspecific]))
1137
dnl Allow extra x86-disassembler library
1139
AS_HELP_STRING([--with-udis86=<path>],
1140
[Use udis86 external x86 disassembler library]),
1142
AC_SUBST(USE_UDIS86, [1])
1145
*) LDFLAGS="$LDFLAGS -L${withval}" ;;
1147
AC_CHECK_LIB(udis86, ud_init, [], [
1148
echo "Error! You need to have libudis86 around."
1152
AC_SUBST(USE_UDIS86, [0]))
1153
AC_DEFINE_UNQUOTED([USE_UDIS86],$USE_UDIS86,
1154
[Define if use udis86 library])
1156
dnl Allow OProfile support for JIT output.
1157
AC_ARG_WITH(oprofile,
1158
AS_HELP_STRING([--with-oprofile=<prefix>],
1159
[Tell OProfile >= 0.9.4 how to symbolize JIT output]),
1161
AC_SUBST(USE_OPROFILE, [1])
1163
/usr|yes) llvm_cv_oppath=/usr/lib/oprofile ;;
1165
AC_SUBST(USE_OPROFILE, [0]) ;;
1166
*) llvm_cv_oppath="${withval}/lib/oprofile"
1167
CPPFLAGS="-I${withval}/include";;
1169
if test -n "$llvm_cv_oppath" ; then
1170
LIBS="$LIBS -L${llvm_cv_oppath} -Wl,-rpath,${llvm_cv_oppath}"
1171
dnl Work around http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=537744:
1172
dnl libbfd is not included properly in libopagent in some Debian
1173
dnl versions. If libbfd isn't found at all, we assume opagent works
1175
AC_SEARCH_LIBS(bfd_init, bfd, [], [])
1176
AC_SEARCH_LIBS(op_open_agent, opagent, [], [
1177
echo "Error! You need to have libopagent around."
1180
AC_CHECK_HEADER([opagent.h], [], [
1181
echo "Error! You need to have opagent.h around."
1187
AC_SUBST(USE_OPROFILE, [0])
1189
AC_DEFINE_UNQUOTED([USE_OPROFILE],$USE_OPROFILE,
1190
[Define if we have the oprofile JIT-support library])
1192
dnl===-----------------------------------------------------------------------===
1194
dnl=== SECTION 6: Check for header files
1196
dnl===-----------------------------------------------------------------------===
1198
dnl First, use autoconf provided macros for specific headers that we need
1199
dnl We don't check for ancient stuff or things that are guaranteed to be there
1200
dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers.
1201
dnl Generally we're looking for POSIX headers.
1203
AC_HEADER_MMAP_ANONYMOUS
1209
AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h inttypes.h limits.h link.h])
1210
AC_CHECK_HEADERS([malloc.h setjmp.h signal.h stdint.h termios.h unistd.h])
1211
AC_CHECK_HEADERS([utime.h windows.h])
1212
AC_CHECK_HEADERS([sys/mman.h sys/param.h sys/resource.h sys/time.h])
1213
AC_CHECK_HEADERS([sys/types.h sys/ioctl.h malloc/malloc.h mach/mach.h])
1214
if test "$ENABLE_THREADS" -eq 1 ; then
1215
AC_CHECK_HEADERS(pthread.h,
1216
AC_SUBST(HAVE_PTHREAD, 1),
1217
AC_SUBST(HAVE_PTHREAD, 0))
1219
AC_SUBST(HAVE_PTHREAD, 0)
1222
dnl Try to find ffi.h.
1223
if test "$llvm_cv_enable_libffi" = "yes" ; then
1224
AC_CHECK_HEADERS([ffi.h ffi/ffi.h])
1227
dnl===-----------------------------------------------------------------------===
1229
dnl=== SECTION 7: Check for types and structures
1231
dnl===-----------------------------------------------------------------------===
1236
AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[Define as the return type of signal handlers (`int' or `void').])
1238
AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
1239
AC_CHECK_TYPES([uint64_t],,
1240
AC_CHECK_TYPES([u_int64_t],,
1241
AC_MSG_ERROR([Type uint64_t or u_int64_t required but not found])))
1243
dnl===-----------------------------------------------------------------------===
1245
dnl=== SECTION 8: Check for specific functions needed
1247
dnl===-----------------------------------------------------------------------===
1249
AC_CHECK_FUNCS([backtrace ceilf floorf roundf rintf nearbyintf getcwd ])
1250
AC_CHECK_FUNCS([powf fmodf strtof round ])
1251
AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday ])
1252
AC_CHECK_FUNCS([isatty mkdtemp mkstemp ])
1253
AC_CHECK_FUNCS([mktemp realpath sbrk setrlimit strdup ])
1254
AC_CHECK_FUNCS([strerror strerror_r strerror_s setenv ])
1255
AC_CHECK_FUNCS([strtoll strtoq sysconf malloc_zone_statistics ])
1256
AC_CHECK_FUNCS([setjmp longjmp sigsetjmp siglongjmp])
1260
dnl Check for variations in the Standard C++ library and STL. These macros are
1261
dnl provided by LLVM in the autoconf/m4 directory.
1265
dnl Check for mmap support.We also need to know if /dev/zero is required to
1266
dnl be opened for allocating RWX memory.
1267
dnl Make sure we aren't attempting to configure for an unknown system
1268
if test "$llvm_cv_platform_type" = "Unix" ; then
1271
AC_NEED_DEV_ZERO_FOR_MMAP
1273
if test "$ac_cv_func_mmap_fixed_mapped" = "no"
1275
AC_MSG_WARN([mmap() of a fixed address required but not supported])
1277
if test "$ac_cv_func_mmap_file" = "no"
1279
AC_MSG_WARN([mmap() of files required but not found])
1283
dnl atomic builtins are required for threading support.
1284
AC_MSG_CHECKING(for GCC atomic builtins)
1288
volatile unsigned long val = 1;
1289
__sync_synchronize();
1290
__sync_val_compare_and_swap(&val, 1, 0);
1291
__sync_add_and_fetch(&val, 1);
1292
__sync_sub_and_fetch(&val, 1);
1297
AC_DEFINE(LLVM_MULTITHREADED, 1, Build multithreading support into LLVM),
1299
AC_DEFINE(LLVM_MULTITHREADED, 0, Build multithreading support into LLVM)
1300
AC_MSG_WARN([LLVM will be built thread-unsafe because atomic builtins are missing]))
1303
dnl===-----------------------------------------------------------------------===
1305
dnl=== SECTION 9: Additional checks, variables, etc.
1307
dnl===-----------------------------------------------------------------------===
1309
dnl Handle 32-bit linux systems running a 64-bit kernel.
1310
dnl This has to come after section 4 because it invokes the compiler.
1311
if test "$llvm_cv_os_type" = "Linux" -a "$llvm_cv_target_arch" = "x86_64" ; then
1313
if test "$llvm_cv_linux_mixed" = "yes"; then
1314
llvm_cv_target_arch="x86"
1319
dnl Check, whether __dso_handle is present
1320
AC_CHECK_FUNCS([__dso_handle])
1322
dnl See if the llvm-gcc executable can compile to LLVM assembly
1323
AC_CACHE_CHECK([whether llvm-gcc is sane],[llvm_cv_llvmgcc_sanity],
1324
[llvm_cv_llvmgcc_sanity="no"
1325
if test -x "$LLVMGCC" ; then
1326
cp /dev/null conftest.c
1327
"$LLVMGCC" -emit-llvm -S -o - conftest.c | \
1328
grep 'target datalayout =' > /dev/null 2>&1
1329
if test $? -eq 0 ; then
1330
llvm_cv_llvmgcc_sanity="yes"
1335
dnl Since we have a sane llvm-gcc, identify it and its sub-tools
1336
if test "$llvm_cv_llvmgcc_sanity" = "yes" ; then
1337
AC_MSG_CHECKING([llvm-gcc component support])
1338
llvmcc1path=`"$LLVMGCC" --print-prog-name=cc1`
1339
AC_SUBST(LLVMCC1,$llvmcc1path)
1340
llvmcc1pluspath=`"$LLVMGCC" --print-prog-name=cc1plus`
1341
AC_SUBST(LLVMCC1PLUS,$llvmcc1pluspath)
1342
llvmgccdir=`echo "$llvmcc1path" | sed 's,/libexec/.*,,'`
1343
AC_SUBST(LLVMGCCDIR,$llvmgccdir)
1344
llvmgcclangs=[`"$LLVMGCC" -v --help 2>&1 | grep '^Configured with:' | sed 's/^.*--enable-languages=\([^ ]*\).*/\1/'`]
1345
AC_SUBST(LLVMGCC_LANGS,$llvmgcclangs)
1349
dnl Propagate the shared library extension that the libltdl checks did to
1350
dnl the Makefiles so we can use it there too
1351
AC_SUBST(SHLIBEXT,$libltdl_cv_shlibext)
1353
dnl Propagate the run-time library path variable that the libltdl
1354
dnl checks found to the Makefiles so we can use it there too
1355
AC_SUBST(SHLIBPATH_VAR,$libltdl_cv_shlibpath_var)
1357
# Translate the various configuration directories and other basic
1358
# information into substitutions that will end up in Makefile.config.in
1359
# that these configured values can be used by the makefiles
1360
if test "${prefix}" = "NONE" ; then
1363
eval LLVM_PREFIX="${prefix}";
1364
eval LLVM_BINDIR="${prefix}/bin";
1365
eval LLVM_LIBDIR="${prefix}/lib";
1366
eval LLVM_DATADIR="${prefix}/share/llvm";
1367
eval LLVM_DOCSDIR="${prefix}/share/doc/llvm";
1368
eval LLVM_ETCDIR="${prefix}/etc/llvm";
1369
eval LLVM_INCLUDEDIR="${prefix}/include";
1370
eval LLVM_INFODIR="${prefix}/info";
1371
eval LLVM_MANDIR="${prefix}/man";
1372
LLVM_CONFIGTIME=`date`
1373
AC_SUBST(LLVM_PREFIX)
1374
AC_SUBST(LLVM_BINDIR)
1375
AC_SUBST(LLVM_LIBDIR)
1376
AC_SUBST(LLVM_DATADIR)
1377
AC_SUBST(LLVM_DOCSDIR)
1378
AC_SUBST(LLVM_ETCDIR)
1379
AC_SUBST(LLVM_INCLUDEDIR)
1380
AC_SUBST(LLVM_INFODIR)
1381
AC_SUBST(LLVM_MANDIR)
1382
AC_SUBST(LLVM_CONFIGTIME)
1384
# Place the various directores into the config.h file as #defines so that we
1385
# can know about the installation paths within LLVM.
1386
AC_DEFINE_UNQUOTED(LLVM_PREFIX,"$LLVM_PREFIX",
1387
[Installation prefix directory])
1388
AC_DEFINE_UNQUOTED(LLVM_BINDIR, "$LLVM_BINDIR",
1389
[Installation directory for binary executables])
1390
AC_DEFINE_UNQUOTED(LLVM_LIBDIR, "$LLVM_LIBDIR",
1391
[Installation directory for libraries])
1392
AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DATADIR",
1393
[Installation directory for data files])
1394
AC_DEFINE_UNQUOTED(LLVM_DOCSDIR, "$LLVM_DOCSDIR",
1395
[Installation directory for documentation])
1396
AC_DEFINE_UNQUOTED(LLVM_ETCDIR, "$LLVM_ETCDIR",
1397
[Installation directory for config files])
1398
AC_DEFINE_UNQUOTED(LLVM_INCLUDEDIR, "$LLVM_INCLUDEDIR",
1399
[Installation directory for include files])
1400
AC_DEFINE_UNQUOTED(LLVM_INFODIR, "$LLVM_INFODIR",
1401
[Installation directory for .info files])
1402
AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR",
1403
[Installation directory for man pages])
1404
AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME",
1405
[Time at which LLVM was configured])
1406
AC_DEFINE_UNQUOTED(LLVM_HOSTTRIPLE, "$host",
1407
[Host triple we were built on])
1409
# Determine which bindings to build.
1410
if test "$BINDINGS_TO_BUILD" = auto ; then
1411
BINDINGS_TO_BUILD=""
1412
if test "x$OCAMLC" != x -a "x$OCAMLDEP" != x ; then
1413
BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD"
1416
AC_SUBST(BINDINGS_TO_BUILD,$BINDINGS_TO_BUILD)
1418
# This isn't really configurey, but it avoids having to repeat the list in
1420
AC_SUBST(ALL_BINDINGS,ocaml)
1422
# Do any work necessary to ensure that bindings have what they need.
1423
binding_prereqs_failed=0
1424
for a_binding in $BINDINGS_TO_BUILD ; do
1425
case "$a_binding" in
1427
if test "x$OCAMLC" = x ; then
1428
AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlc not found. Try configure OCAMLC=/path/to/ocamlc])
1429
binding_prereqs_failed=1
1431
if test "x$OCAMLDEP" = x ; then
1432
AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamldep not found. Try configure OCAMLDEP=/path/to/ocamldep])
1433
binding_prereqs_failed=1
1435
if test "x$OCAMLOPT" = x ; then
1436
AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlopt not found. Try configure OCAMLOPT=/path/to/ocamlopt])
1437
dnl ocamlopt is optional!
1439
if test "x$with_ocaml_libdir" != xauto ; then
1440
AC_SUBST(OCAML_LIBDIR,$with_ocaml_libdir)
1442
ocaml_stdlib="`"$OCAMLC" -where`"
1443
if test "$LLVM_PREFIX" '<' "$ocaml_stdlib" -a "$ocaml_stdlib" '<' "$LLVM_PREFIX~"
1445
# ocaml stdlib is beneath our prefix; use stdlib
1446
AC_SUBST(OCAML_LIBDIR,$ocaml_stdlib)
1448
# ocaml stdlib is outside our prefix; use libdir/ocaml
1449
AC_SUBST(OCAML_LIBDIR,$LLVM_LIBDIR/ocaml)
1455
if test "$binding_prereqs_failed" = 1 ; then
1456
AC_MSG_ERROR([Prequisites for bindings not satisfied. Fix them or use configure --disable-bindings.])
1459
dnl Determine whether the compiler supports -fvisibility-inlines-hidden.
1460
AC_CXX_USE_VISIBILITY_INLINES_HIDDEN
1462
dnl Determine linker rpath flag
1463
if test "$llvm_cv_link_use_r" = "yes" ; then
1470
dnl Determine linker rdynamic flag
1471
if test "$llvm_cv_link_use_export_dynamic" = "yes" ; then
1472
RDYNAMIC="-Wl,-export-dynamic"
1478
dnl===-----------------------------------------------------------------------===
1480
dnl=== SECTION 10: Specify the output files and generate it
1482
dnl===-----------------------------------------------------------------------===
1484
dnl Configure header files
1485
dnl WARNING: dnl If you add or remove any of the following config headers, then
1486
dnl you MUST also update Makefile.rules so that the variable FilesToConfig
1487
dnl contains the same list of files as AC_CONFIG_HEADERS below. This ensures the
1488
dnl files can be updated automatically when their *.in sources change.
1489
AC_CONFIG_HEADERS([include/llvm/Config/config.h])
1490
AC_CONFIG_FILES([include/llvm/Config/Targets.def])
1491
AC_CONFIG_FILES([include/llvm/Config/AsmPrinters.def])
1492
AC_CONFIG_FILES([include/llvm/Config/AsmParsers.def])
1493
AC_CONFIG_FILES([include/llvm/Config/Disassemblers.def])
1494
AC_CONFIG_HEADERS([include/llvm/System/DataTypes.h])
1496
dnl Configure the makefile's configuration data
1497
AC_CONFIG_FILES([Makefile.config])
1499
dnl Configure the RPM spec file for LLVM
1500
AC_CONFIG_FILES([llvm.spec])
1502
dnl Configure doxygen's configuration file
1503
AC_CONFIG_FILES([docs/doxygen.cfg])
1505
dnl Configure llvmc's Base plugin
1506
AC_CONFIG_FILES([tools/llvmc/plugins/Base/Base.td])
1508
dnl Do the first stage of configuration for llvm-config.in.
1509
AC_CONFIG_FILES([tools/llvm-config/llvm-config.in])
1511
dnl Do special configuration of Makefiles
1512
AC_CONFIG_COMMANDS([setup],,[llvm_src="${srcdir}"])
1513
AC_CONFIG_MAKEFILE(Makefile)
1514
AC_CONFIG_MAKEFILE(Makefile.common)
1515
AC_CONFIG_MAKEFILE(examples/Makefile)
1516
AC_CONFIG_MAKEFILE(lib/Makefile)
1517
AC_CONFIG_MAKEFILE(runtime/Makefile)
1518
AC_CONFIG_MAKEFILE(test/Makefile)
1519
AC_CONFIG_MAKEFILE(test/Makefile.tests)
1520
AC_CONFIG_MAKEFILE(unittests/Makefile)
1521
AC_CONFIG_MAKEFILE(tools/Makefile)
1522
AC_CONFIG_MAKEFILE(utils/Makefile)
1523
AC_CONFIG_MAKEFILE(projects/Makefile)
1524
AC_CONFIG_MAKEFILE(bindings/Makefile)
1525
AC_CONFIG_MAKEFILE(bindings/ocaml/Makefile.ocaml)
1527
dnl Finally, crank out the output