1
dnl **************************************************************************
3
dnl **************************************************************************
4
AC_INIT([[[SAMPLE]]],[[[x.xx]]],[bugs@yourdomain])
6
dnl Identify where LLVM source tree is
10
dnl Find absolute paths to LLVM source and object trees
11
LLVM_ABS_SRC_ROOT="`cd $srcdir ; cd $LLVM_SRC_ROOT ; pwd`"
12
LLVM_ABS_OBJ_ROOT="`cd $LLVM_OBJ_ROOT ; pwd`"
14
dnl Tell autoconf that this is an LLVM project being configured
15
dnl This provides the --with-llvmsrc and --with-llvmobj options
16
LLVM_CONFIG_PROJECT($LLVM_ABS_SRC_ROOT,$LLVM_ABS_OBJ_ROOT)
18
dnl Try and find an llvm-config in the build directory. We are only using this
19
dnl to detect the package level LLVM information (currently just the version),
20
dnl so we just whatever one we find regardless of build mode.
21
AC_MSG_CHECKING([llvm-config])
22
llvm_config_path="`ls -1 $llvm_obj/*/bin/llvm-config 2> /dev/null | head -1`"
23
if ! test -f "$llvm_config_path" ; then
26
AC_MSG_RESULT([$llvm_config_path])
28
dnl Determine the LLVM version, which may be required by the current Makefile
30
AC_MSG_CHECKING([LLVM package version])
31
if test "$llvm_config_path" != no ; then
32
llvm_package_version=`$llvm_config_path --version`
34
llvm_package_version="unknown";
36
AC_MSG_RESULT([$llvm_package_version])
37
AC_SUBST(LLVM_VERSION, [$llvm_package_version])
39
dnl Verify that the source directory is valid
40
AC_CONFIG_SRCDIR(["Makefile.common.in"])
42
dnl Place all of the extra autoconf files into the config subdirectory. Tell
43
dnl various tools where the m4 autoconf macros are.
44
AC_CONFIG_AUX_DIR([autoconf])
46
dnl **************************************************************************
47
dnl Begin LLVM configure.ac Import
48
dnl **************************************************************************
50
dnl Derived from LLVM's configure.ac. This was imported directly here so that we
51
dnl could reuse LLVM's build infrastructure without introducing a direct source
52
dnl dependency on the LLVM files.
54
dnl We need to check for the compiler up here to avoid anything else
55
dnl starting with a different one.
56
AC_PROG_CC(clang llvm-gcc gcc)
57
AC_PROG_CXX(clang++ llvm-g++ g++)
60
dnl Configure all of the projects present in our source tree. While we could
61
dnl just AC_CONFIG_SUBDIRS on the set of directories in projects that have a
62
dnl configure script, that usage of the AC_CONFIG_SUBDIRS macro is deprecated.
63
dnl Instead we match on the known projects.
66
dnl One tricky part of doing this is that some projects depend upon other
67
dnl projects. For example, several projects rely upon the LLVM test suite.
68
dnl We want to configure those projects first so that their object trees are
69
dnl created before running the configure scripts of projects that depend upon
73
dnl Disable the build of polly, even if it is checked out into tools/polly.
75
AS_HELP_STRING([--enable-polly],
76
[Use polly if available (default is YES)]),,
79
yes) AC_SUBST(ENABLE_POLLY,[1]) ;;
80
no) AC_SUBST(ENABLE_POLLY,[0]) ;;
81
default) AC_SUBST(ENABLE_POLLY,[1]) ;;
82
*) AC_MSG_ERROR([Invalid setting for --enable-polly. Use "yes" or "no"]) ;;
86
dnl Check if polly is checked out into tools/polly and configure it if
88
if (test -d ${srcdir}/tools/polly) && (test $ENABLE_POLLY -eq 1) ; then
89
AC_SUBST(LLVM_HAS_POLLY,1)
90
AC_CONFIG_SUBDIRS([tools/polly])
93
dnl===-----------------------------------------------------------------------===
95
dnl=== SECTION 2: Architecture, target, and host checks
97
dnl===-----------------------------------------------------------------------===
99
dnl Check the target for which we're compiling and the host that will do the
100
dnl compilations. This will tell us which LLVM compiler will be used for
101
dnl compiling SSA into object code. This needs to be done early because
102
dnl following tests depend on it.
105
dnl Determine the platform type and cache its value. This helps us configure
106
dnl the System library to the correct build platform.
107
AC_CACHE_CHECK([type of operating system we're going to host on],
111
llvm_cv_link_all_option="-Wl,--whole-archive"
112
llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
113
llvm_cv_os_type="AIX"
114
llvm_cv_platform_type="Unix" ;;
116
llvm_cv_link_all_option="-Wl,--whole-archive"
117
llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
118
llvm_cv_os_type="IRIX"
119
llvm_cv_platform_type="Unix" ;;
121
llvm_cv_link_all_option="-Wl,--whole-archive"
122
llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
123
llvm_cv_os_type="Cygwin"
124
llvm_cv_platform_type="Unix" ;;
126
llvm_cv_link_all_option="-Wl,-all_load"
127
llvm_cv_no_link_all_option="-Wl,-noall_load"
128
llvm_cv_os_type="Darwin"
129
llvm_cv_platform_type="Unix" ;;
131
llvm_cv_link_all_option="-Wl,-all_load"
132
llvm_cv_no_link_all_option="-Wl,-noall_load"
133
llvm_cv_os_type="Minix"
134
llvm_cv_platform_type="Unix" ;;
136
llvm_cv_link_all_option="-Wl,--whole-archive"
137
llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
138
llvm_cv_os_type="FreeBSD"
139
llvm_cv_platform_type="Unix" ;;
141
llvm_cv_link_all_option="-Wl,--whole-archive"
142
llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
143
llvm_cv_os_type="OpenBSD"
144
llvm_cv_platform_type="Unix" ;;
146
llvm_cv_link_all_option="-Wl,--whole-archive"
147
llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
148
llvm_cv_os_type="NetBSD"
149
llvm_cv_platform_type="Unix" ;;
151
llvm_cv_link_all_option="-Wl,--whole-archive"
152
llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
153
llvm_cv_os_type="DragonFly"
154
llvm_cv_platform_type="Unix" ;;
156
llvm_cv_link_all_option="-Wl,--whole-archive"
157
llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
158
llvm_cv_os_type="HP-UX"
159
llvm_cv_platform_type="Unix" ;;
161
llvm_cv_link_all_option="-Wl,--whole-archive"
162
llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
163
llvm_cv_os_type="Interix"
164
llvm_cv_platform_type="Unix" ;;
166
llvm_cv_link_all_option="-Wl,--whole-archive"
167
llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
168
llvm_cv_os_type="Linux"
169
llvm_cv_platform_type="Unix" ;;
171
llvm_cv_link_all_option="-Wl,-z,allextract"
172
llvm_cv_no_link_all_option="-Wl,-z,defaultextract"
173
llvm_cv_os_type="SunOS"
174
llvm_cv_platform_type="Unix" ;;
176
llvm_cv_link_all_option="-Wl,-z,allextract"
177
llvm_cv_link_all_option="-Wl,-z,defaultextract"
178
llvm_cv_os_type="AuroraUX"
179
llvm_cv_platform_type="Unix" ;;
181
llvm_cv_link_all_option="-Wl,--whole-archive"
182
llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
183
llvm_cv_os_type="Win32"
184
llvm_cv_platform_type="Win32" ;;
186
llvm_cv_link_all_option="-Wl,--whole-archive"
187
llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
188
llvm_cv_os_type="MingW"
189
llvm_cv_platform_type="Win32" ;;
191
llvm_cv_link_all_option="-Wl,--whole-archive"
192
llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
193
llvm_cv_os_type="Haiku"
194
llvm_cv_platform_type="Unix" ;;
196
llvm_cv_link_all_option="-Wl,--whole-archive"
197
llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
198
llvm_cv_os_type="Freestanding"
199
llvm_cv_platform_type="Unix" ;;
201
llvm_cv_link_all_option="-Wl,--whole-archive"
202
llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
203
llvm_cv_os_type="Freestanding"
204
llvm_cv_platform_type="Unix" ;;
206
llvm_cv_link_all_option=""
207
llvm_cv_no_link_all_option=""
208
llvm_cv_os_type="Unknown"
209
llvm_cv_platform_type="Unknown" ;;
212
AC_CACHE_CHECK([type of operating system we're going to target],
213
[llvm_cv_target_os_type],
216
llvm_cv_target_os_type="AIX" ;;
218
llvm_cv_target_os_type="IRIX" ;;
220
llvm_cv_target_os_type="Cygwin" ;;
222
llvm_cv_target_os_type="Darwin" ;;
224
llvm_cv_target_os_type="Minix" ;;
226
llvm_cv_target_os_type="FreeBSD" ;;
228
llvm_cv_target_os_type="OpenBSD" ;;
230
llvm_cv_target_os_type="NetBSD" ;;
232
llvm_cv_target_os_type="DragonFly" ;;
234
llvm_cv_target_os_type="HP-UX" ;;
236
llvm_cv_target_os_type="Interix" ;;
238
llvm_cv_target_os_type="Linux" ;;
240
llvm_cv_target_os_type="SunOS" ;;
242
llvm_cv_target_os_type="AuroraUX" ;;
244
llvm_cv_target_os_type="Win32" ;;
246
llvm_cv_target_os_type="MingW" ;;
248
llvm_cv_target_os_type="Haiku" ;;
250
llvm_cv_target_os_type="RTEMS" ;;
252
llvm_cv_target_os_type="NativeClient" ;;
254
llvm_cv_target_os_type="Freestanding" ;;
256
llvm_cv_target_os_type="Unknown" ;;
259
dnl Make sure we aren't attempting to configure for an unknown system
260
if test "$llvm_cv_os_type" = "Unknown" ; then
261
AC_MSG_ERROR([Operating system is unknown, configure can't continue])
264
dnl Set the "OS" Makefile variable based on the platform type so the
265
dnl makefile can configure itself to specific build hosts
266
AC_SUBST(OS,$llvm_cv_os_type)
267
AC_SUBST(HOST_OS,$llvm_cv_os_type)
268
AC_SUBST(TARGET_OS,$llvm_cv_target_os_type)
270
dnl Set the LINKALL and NOLINKALL Makefile variables based on the platform
271
AC_SUBST(LINKALL,$llvm_cv_link_all_option)
272
AC_SUBST(NOLINKALL,$llvm_cv_no_link_all_option)
274
dnl Set the "LLVM_ON_*" variables based on llvm_cv_platform_type
275
dnl This is used by lib/Support to determine the basic kind of implementation
277
case $llvm_cv_platform_type in
279
AC_DEFINE([LLVM_ON_UNIX],[1],[Define if this is Unixish platform])
280
AC_SUBST(LLVM_ON_UNIX,[1])
281
AC_SUBST(LLVM_ON_WIN32,[0])
284
AC_DEFINE([LLVM_ON_WIN32],[1],[Define if this is Win32ish platform])
285
AC_SUBST(LLVM_ON_UNIX,[0])
286
AC_SUBST(LLVM_ON_WIN32,[1])
290
dnl Determine what our target architecture is and configure accordingly.
291
dnl This will allow Makefiles to make a distinction between the hardware and
293
AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch],
295
i?86-*) llvm_cv_target_arch="x86" ;;
296
amd64-* | x86_64-*) llvm_cv_target_arch="x86_64" ;;
297
sparc*-*) llvm_cv_target_arch="Sparc" ;;
298
powerpc*-*) llvm_cv_target_arch="PowerPC" ;;
299
arm*-*) llvm_cv_target_arch="ARM" ;;
300
mips-*) llvm_cv_target_arch="Mips" ;;
301
xcore-*) llvm_cv_target_arch="XCore" ;;
302
msp430-*) llvm_cv_target_arch="MSP430" ;;
303
hexagon-*) llvm_cv_target_arch="Hexagon" ;;
304
mblaze-*) llvm_cv_target_arch="MBlaze" ;;
305
ptx-*) llvm_cv_target_arch="PTX" ;;
306
*) llvm_cv_target_arch="Unknown" ;;
309
if test "$llvm_cv_target_arch" = "Unknown" ; then
310
AC_MSG_WARN([Configuring LLVM for an unknown target archicture])
313
# Determine the LLVM native architecture for the target
314
case "$llvm_cv_target_arch" in
315
x86) LLVM_NATIVE_ARCH="X86" ;;
316
x86_64) LLVM_NATIVE_ARCH="X86" ;;
317
*) LLVM_NATIVE_ARCH="$llvm_cv_target_arch" ;;
320
dnl Define a substitution, ARCH, for the target architecture
321
AC_SUBST(ARCH,$llvm_cv_target_arch)
323
dnl Check for the endianness of the target
324
AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[big]),AC_SUBST([ENDIAN],[little]))
326
dnl Check for build platform executable suffix if we're crosscompiling
327
if test "$cross_compiling" = yes; then
328
AC_SUBST(LLVM_CROSS_COMPILING, [1])
330
ac_build_prefix=${build_alias}-
331
AC_CHECK_PROG(BUILD_CXX, ${ac_build_prefix}g++, ${ac_build_prefix}g++)
332
if test -z "$BUILD_CXX"; then
333
AC_CHECK_PROG(BUILD_CXX, g++, g++)
334
if test -z "$BUILD_CXX"; then
335
AC_CHECK_PROG(BUILD_CXX, c++, c++, , , /usr/ucb/c++)
339
AC_SUBST(LLVM_CROSS_COMPILING, [0])
342
dnl Check to see if there's a .svn or .git directory indicating that this
343
dnl build is being done from a checkout. This sets up several defaults for
344
dnl the command line switches. When we build with a checkout directory,
345
dnl we get a debug with assertions turned on. Without, we assume a source
346
dnl release and we get an optimized build without assertions.
347
dnl See --enable-optimized and --enable-assertions below
348
if test -d ".svn" -o -d "${srcdir}/.svn" -o -d ".git" -o -d "${srcdir}/.git"; then
351
AC_SUBST(CVSBUILD,[[CVSBUILD=1]])
357
dnl===-----------------------------------------------------------------------===
359
dnl=== SECTION 3: Command line arguments for the configure script.
361
dnl===-----------------------------------------------------------------------===
363
dnl --enable-libcpp : check whether or not to use libc++ on the command line
364
AC_ARG_ENABLE(libcpp,
365
AS_HELP_STRING([--enable-libcpp],
366
[Use libc++ if available (default is NO)]),,
369
yes) AC_SUBST(ENABLE_LIBCPP,[1]) ;;
370
no) AC_SUBST(ENABLE_LIBCPP,[0]) ;;
371
default) AC_SUBST(ENABLE_LIBCPP,[0]);;
372
*) AC_MSG_ERROR([Invalid setting for --enable-libcpp. Use "yes" or "no"]) ;;
375
dnl --enable-optimized : check whether they want to do an optimized build:
376
AC_ARG_ENABLE(optimized, AS_HELP_STRING(
377
--enable-optimized,[Compile with optimizations enabled (default is NO)]),,enableval=$optimize)
378
if test ${enableval} = "no" ; then
379
AC_SUBST(ENABLE_OPTIMIZED,[[]])
381
AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
384
dnl --enable-profiling : check whether they want to do a profile build:
385
AC_ARG_ENABLE(profiling, AS_HELP_STRING(
386
--enable-profiling,[Compile with profiling enabled (default is NO)]),,enableval="no")
387
if test ${enableval} = "no" ; then
388
AC_SUBST(ENABLE_PROFILING,[[]])
390
AC_SUBST(ENABLE_PROFILING,[[ENABLE_PROFILING=1]])
393
dnl --enable-assertions : check whether they want to turn on assertions or not:
394
AC_ARG_ENABLE(assertions,AS_HELP_STRING(
395
--enable-assertions,[Compile with assertion checks enabled (default is YES)]),, enableval="yes")
396
if test ${enableval} = "yes" ; then
397
AC_SUBST(DISABLE_ASSERTIONS,[[]])
399
AC_SUBST(DISABLE_ASSERTIONS,[[DISABLE_ASSERTIONS=1]])
402
dnl --enable-expensive-checks : check whether they want to turn on expensive debug checks:
403
AC_ARG_ENABLE(expensive-checks,AS_HELP_STRING(
404
--enable-expensive-checks,[Compile with expensive debug checks enabled (default is NO)]),, enableval="no")
405
if test ${enableval} = "yes" ; then
406
AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[ENABLE_EXPENSIVE_CHECKS=1]])
407
AC_SUBST(EXPENSIVE_CHECKS,[[yes]])
409
AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[]])
410
AC_SUBST(EXPENSIVE_CHECKS,[[no]])
413
dnl --enable-debug-runtime : should runtime libraries have debug symbols?
414
AC_ARG_ENABLE(debug-runtime,
415
AS_HELP_STRING(--enable-debug-runtime,[Build runtime libs with debug symbols (default is NO)]),,enableval=no)
416
if test ${enableval} = "no" ; then
417
AC_SUBST(DEBUG_RUNTIME,[[]])
419
AC_SUBST(DEBUG_RUNTIME,[[DEBUG_RUNTIME=1]])
422
dnl --enable-debug-symbols : should even optimized compiler libraries
423
dnl have debug symbols?
424
AC_ARG_ENABLE(debug-symbols,
425
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)
426
if test ${enableval} = "no" ; then
427
AC_SUBST(DEBUG_SYMBOLS,[[]])
429
AC_SUBST(DEBUG_SYMBOLS,[[DEBUG_SYMBOLS=1]])
432
dnl --enable-jit: check whether they want to enable the jit
434
AS_HELP_STRING(--enable-jit,
435
[Enable Just In Time Compiling (default is YES)]),,
437
if test ${enableval} = "no"
441
case "$llvm_cv_target_arch" in
442
x86) AC_SUBST(TARGET_HAS_JIT,1) ;;
443
Sparc) AC_SUBST(TARGET_HAS_JIT,0) ;;
444
PowerPC) AC_SUBST(TARGET_HAS_JIT,1) ;;
445
x86_64) AC_SUBST(TARGET_HAS_JIT,1) ;;
446
ARM) AC_SUBST(TARGET_HAS_JIT,1) ;;
447
Mips) AC_SUBST(TARGET_HAS_JIT,1) ;;
448
XCore) AC_SUBST(TARGET_HAS_JIT,0) ;;
449
MSP430) AC_SUBST(TARGET_HAS_JIT,0) ;;
450
Hexagon) AC_SUBST(TARGET_HAS_JIT,0) ;;
451
MBlaze) AC_SUBST(TARGET_HAS_JIT,0) ;;
452
PTX) AC_SUBST(TARGET_HAS_JIT,0) ;;
453
*) AC_SUBST(TARGET_HAS_JIT,0) ;;
457
dnl Allow enablement of building and installing docs
459
AS_HELP_STRING([--enable-docs],
460
[Build documents (default is YES)]),,
463
yes) AC_SUBST(ENABLE_DOCS,[1]) ;;
464
no) AC_SUBST(ENABLE_DOCS,[0]) ;;
465
default) AC_SUBST(ENABLE_DOCS,[1]) ;;
466
*) AC_MSG_ERROR([Invalid setting for --enable-docs. Use "yes" or "no"]) ;;
469
dnl Allow enablement of doxygen generated documentation
470
AC_ARG_ENABLE(doxygen,
471
AS_HELP_STRING([--enable-doxygen],
472
[Build doxygen documentation (default is NO)]),,
475
yes) AC_SUBST(ENABLE_DOXYGEN,[1]) ;;
476
no) AC_SUBST(ENABLE_DOXYGEN,[0]) ;;
477
default) AC_SUBST(ENABLE_DOXYGEN,[0]) ;;
478
*) AC_MSG_ERROR([Invalid setting for --enable-doxygen. Use "yes" or "no"]) ;;
481
dnl Allow disablement of threads
482
AC_ARG_ENABLE(threads,
483
AS_HELP_STRING([--enable-threads],
484
[Use threads if available (default is YES)]),,
487
yes) AC_SUBST(ENABLE_THREADS,[1]) ;;
488
no) AC_SUBST(ENABLE_THREADS,[0]) ;;
489
default) AC_SUBST(ENABLE_THREADS,[1]) ;;
490
*) AC_MSG_ERROR([Invalid setting for --enable-threads. Use "yes" or "no"]) ;;
492
AC_DEFINE_UNQUOTED([ENABLE_THREADS],$ENABLE_THREADS,[Define if threads enabled])
494
dnl Allow disablement of pthread.h
495
AC_ARG_ENABLE(pthreads,
496
AS_HELP_STRING([--enable-pthreads],
497
[Use pthreads if available (default is YES)]),,
500
yes) AC_SUBST(ENABLE_PTHREADS,[1]) ;;
501
no) AC_SUBST(ENABLE_PTHREADS,[0]) ;;
502
default) AC_SUBST(ENABLE_PTHREADS,[1]) ;;
503
*) AC_MSG_ERROR([Invalid setting for --enable-pthreads. Use "yes" or "no"]) ;;
506
dnl Allow building without position independent code
508
AS_HELP_STRING([--enable-pic],
509
[Build LLVM with Position Independent Code (default is YES)]),,
512
yes) AC_SUBST(ENABLE_PIC,[1]) ;;
513
no) AC_SUBST(ENABLE_PIC,[0]) ;;
514
default) AC_SUBST(ENABLE_PIC,[1]) ;;
515
*) AC_MSG_ERROR([Invalid setting for --enable-pic. Use "yes" or "no"]) ;;
517
AC_DEFINE_UNQUOTED([ENABLE_PIC],$ENABLE_PIC,
518
[Define if position independent code is enabled])
520
dnl Allow building a shared library and linking tools against it.
521
AC_ARG_ENABLE(shared,
522
AS_HELP_STRING([--enable-shared],
523
[Build a shared library and link tools against it (default is NO)]),,
526
yes) AC_SUBST(ENABLE_SHARED,[1]) ;;
527
no) AC_SUBST(ENABLE_SHARED,[0]) ;;
528
default) AC_SUBST(ENABLE_SHARED,[0]) ;;
529
*) AC_MSG_ERROR([Invalid setting for --enable-shared. Use "yes" or "no"]) ;;
532
dnl Allow libstdc++ is embedded in LLVM.dll.
533
AC_ARG_ENABLE(embed-stdcxx,
534
AS_HELP_STRING([--enable-embed-stdcxx],
535
[Build a shared library with embedded libstdc++ for Win32 DLL (default is YES)]),,
538
yes) AC_SUBST(ENABLE_EMBED_STDCXX,[1]) ;;
539
no) AC_SUBST(ENABLE_EMBED_STDCXX,[0]) ;;
540
default) AC_SUBST(ENABLE_EMBED_STDCXX,[1]) ;;
541
*) AC_MSG_ERROR([Invalid setting for --enable-embed-stdcxx. Use "yes" or "no"]) ;;
544
dnl Enable embedding timestamp information into build.
545
AC_ARG_ENABLE(timestamps,
546
AS_HELP_STRING([--enable-timestamps],
547
[Enable embedding timestamp information in build (default is YES)]),,
550
yes) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;;
551
no) AC_SUBST(ENABLE_TIMESTAMPS,[0]) ;;
552
default) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;;
553
*) AC_MSG_ERROR([Invalid setting for --enable-timestamps. Use "yes" or "no"]) ;;
555
AC_DEFINE_UNQUOTED([ENABLE_TIMESTAMPS],$ENABLE_TIMESTAMPS,
556
[Define if timestamp information (e.g., __DATE___) is allowed])
558
dnl Allow specific targets to be specified for building (or not)
560
AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-targets],
561
[Build specific host targets: all or target1,target2,... Valid targets are:
562
host, x86, x86_64, sparc, powerpc, arm, mips, spu, hexagon,
563
xcore, msp430, ptx, cbe, and cpp (default=all)]),,
565
if test "$enableval" = host-only ; then
569
all) TARGETS_TO_BUILD="X86 Sparc PowerPC ARM Mips CellSPU XCore MSP430 Hexagon CppBackend MBlaze PTX" ;;
570
*)for a_target in `echo $enableval|sed -e 's/,/ /g' ` ; do
572
x86) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
573
x86_64) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
574
sparc) TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;;
575
powerpc) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
576
arm) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
577
mips) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
578
spu) TARGETS_TO_BUILD="CellSPU $TARGETS_TO_BUILD" ;;
579
xcore) TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
580
msp430) TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
581
hexagon) TARGETS_TO_BUILD="Hexagon $TARGETS_TO_BUILD" ;;
582
cpp) TARGETS_TO_BUILD="CppBackend $TARGETS_TO_BUILD" ;;
583
mblaze) TARGETS_TO_BUILD="MBlaze $TARGETS_TO_BUILD" ;;
584
ptx) TARGETS_TO_BUILD="PTX $TARGETS_TO_BUILD" ;;
585
host) case "$llvm_cv_target_arch" in
586
x86) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
587
x86_64) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
588
Sparc) TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;;
589
PowerPC) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
590
ARM) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
591
Mips) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
592
MBlaze) TARGETS_TO_BUILD="MBlaze $TARGETS_TO_BUILD" ;;
593
CellSPU|SPU) TARGETS_TO_BUILD="CellSPU $TARGETS_TO_BUILD" ;;
594
XCore) TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
595
MSP430) TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
596
Hexagon) TARGETS_TO_BUILD="Hexagon $TARGETS_TO_BUILD" ;;
597
PTX) TARGETS_TO_BUILD="PTX $TARGETS_TO_BUILD" ;;
598
*) AC_MSG_ERROR([Can not set target to build]) ;;
600
*) AC_MSG_ERROR([Unrecognized target $a_target]) ;;
605
AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD)
607
# Determine whether we are building LLVM support for the native architecture.
608
# If so, define LLVM_NATIVE_ARCH to that LLVM target.
609
for a_target in $TARGETS_TO_BUILD; do
610
if test "$a_target" = "$LLVM_NATIVE_ARCH"; then
611
AC_DEFINE_UNQUOTED(LLVM_NATIVE_ARCH, $LLVM_NATIVE_ARCH,
612
[LLVM architecture name for the native architecture, if available])
613
LLVM_NATIVE_TARGET="LLVMInitialize${LLVM_NATIVE_ARCH}Target"
614
LLVM_NATIVE_TARGETINFO="LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo"
615
LLVM_NATIVE_TARGETMC="LLVMInitialize${LLVM_NATIVE_ARCH}TargetMC"
616
LLVM_NATIVE_ASMPRINTER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter"
617
if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then
618
LLVM_NATIVE_ASMPARSER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmParser"
620
if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/Makefile ; then
621
LLVM_NATIVE_DISASSEMBLER="LLVMInitialize${LLVM_NATIVE_ARCH}Disassembler"
623
AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGET, $LLVM_NATIVE_TARGET,
624
[LLVM name for the native Target init function, if available])
625
AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETINFO, $LLVM_NATIVE_TARGETINFO,
626
[LLVM name for the native TargetInfo init function, if available])
627
AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETMC, $LLVM_NATIVE_TARGETMC,
628
[LLVM name for the native target MC init function, if available])
629
AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPRINTER, $LLVM_NATIVE_ASMPRINTER,
630
[LLVM name for the native AsmPrinter init function, if available])
631
if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then
632
AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPARSER, $LLVM_NATIVE_ASMPARSER,
633
[LLVM name for the native AsmParser init function, if available])
635
if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/Makefile ; then
636
AC_DEFINE_UNQUOTED(LLVM_NATIVE_DISASSEMBLER, $LLVM_NATIVE_DISASSEMBLER,
637
[LLVM name for the native Disassembler init function, if available])
642
# Build the LLVM_TARGET and LLVM_... macros for Targets.def and the individual
643
# target feature def files.
645
LLVM_ENUM_ASM_PRINTERS=""
646
LLVM_ENUM_ASM_PARSERS=""
647
LLVM_ENUM_DISASSEMBLERS=""
648
for target_to_build in $TARGETS_TO_BUILD; do
649
LLVM_ENUM_TARGETS="LLVM_TARGET($target_to_build) $LLVM_ENUM_TARGETS"
650
if test -f ${srcdir}/lib/Target/${target_to_build}/*AsmPrinter.cpp ; then
651
LLVM_ENUM_ASM_PRINTERS="LLVM_ASM_PRINTER($target_to_build) $LLVM_ENUM_ASM_PRINTERS";
653
if test -f ${srcdir}/lib/Target/${target_to_build}/AsmParser/Makefile ; then
654
LLVM_ENUM_ASM_PARSERS="LLVM_ASM_PARSER($target_to_build) $LLVM_ENUM_ASM_PARSERS";
656
if test -f ${srcdir}/lib/Target/${target_to_build}/Disassembler/Makefile ; then
657
LLVM_ENUM_DISASSEMBLERS="LLVM_DISASSEMBLER($target_to_build) $LLVM_ENUM_DISASSEMBLERS";
660
AC_SUBST(LLVM_ENUM_TARGETS)
661
AC_SUBST(LLVM_ENUM_ASM_PRINTERS)
662
AC_SUBST(LLVM_ENUM_ASM_PARSERS)
663
AC_SUBST(LLVM_ENUM_DISASSEMBLERS)
665
dnl Override the option to use for optimized builds.
666
AC_ARG_WITH(optimize-option,
667
AS_HELP_STRING([--with-optimize-option],
668
[Select the compiler options to use for optimized builds]),,
670
AC_MSG_CHECKING([optimization flags])
673
case "$llvm_cv_os_type" in
674
FreeBSD) optimize_option=-O2 ;;
675
MingW) optimize_option=-O2 ;;
676
*) optimize_option=-O3 ;;
678
*) optimize_option="$withval" ;;
680
AC_SUBST(OPTIMIZE_OPTION,$optimize_option)
681
AC_MSG_RESULT([$optimize_option])
683
dnl Specify extra build options
684
AC_ARG_WITH(extra-options,
685
AS_HELP_STRING([--with-extra-options],
686
[Specify additional options to compile LLVM with]),,
689
default) EXTRA_OPTIONS= ;;
690
*) EXTRA_OPTIONS=$withval ;;
692
AC_SUBST(EXTRA_OPTIONS,$EXTRA_OPTIONS)
694
dnl Specify extra linker build options
695
AC_ARG_WITH(extra-ld-options,
696
AS_HELP_STRING([--with-extra-ld-options],
697
[Specify additional options to link LLVM with]),,
700
default) EXTRA_LD_OPTIONS= ;;
701
*) EXTRA_LD_OPTIONS=$withval ;;
703
AC_SUBST(EXTRA_LD_OPTIONS,$EXTRA_LD_OPTIONS)
705
dnl Allow specific bindings to be specified for building (or not)
706
AC_ARG_ENABLE([bindings],AS_HELP_STRING([--enable-bindings],
707
[Build specific language bindings: all,auto,none,{binding-name} (default=auto)]),,
711
yes | default | auto) BINDINGS_TO_BUILD="auto" ;;
712
all ) BINDINGS_TO_BUILD="ocaml" ;;
713
none | no) BINDINGS_TO_BUILD="" ;;
714
*)for a_binding in `echo $enableval|sed -e 's/,/ /g' ` ; do
716
ocaml) BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD" ;;
717
*) AC_MSG_ERROR([Unrecognized binding $a_binding]) ;;
723
dnl Allow the ocaml libdir to be overridden. This could go in a configure
724
dnl script for bindings/ocaml/configure, except that its auto value depends on
725
dnl OCAMLC, which is found here to support tests.
726
AC_ARG_WITH([ocaml-libdir],
727
[AS_HELP_STRING([--with-ocaml-libdir],
728
[Specify install location for ocaml bindings (default is stdlib)])],
732
auto) with_ocaml_libdir="$withval" ;;
733
/* | [[A-Za-z]]:[[\\/]]*) with_ocaml_libdir="$withval" ;;
734
*) AC_MSG_ERROR([Invalid path for --with-ocaml-libdir. Provide full path]) ;;
737
AC_ARG_WITH(clang-resource-dir,
738
AS_HELP_STRING([--with-clang-resource-dir],
739
[Relative directory from the Clang binary for resource files]),,
741
AC_DEFINE_UNQUOTED(CLANG_RESOURCE_DIR,"$withval",
742
[Relative directory for resource files])
744
AC_ARG_WITH(c-include-dirs,
745
AS_HELP_STRING([--with-c-include-dirs],
746
[Colon separated list of directories clang will search for headers]),,
748
AC_DEFINE_UNQUOTED(C_INCLUDE_DIRS,"$withval",
749
[Directories clang will search for headers])
751
# Clang normally uses the system c++ headers and libraries. With this option,
752
# clang will use the ones provided by a gcc installation instead. This option should
753
# be passed the same value that was used with --prefix when configuring gcc.
754
AC_ARG_WITH(gcc-toolchain,
755
AS_HELP_STRING([--with-gcc-toolchain],
756
[Directory where gcc is installed.]),,
758
AC_DEFINE_UNQUOTED(GCC_INSTALL_PREFIX,"$withval",
759
[Directory where gcc is installed.])
761
dnl Allow linking of LLVM with GPLv3 binutils code.
762
AC_ARG_WITH(binutils-include,
763
AS_HELP_STRING([--with-binutils-include],
764
[Specify path to binutils/include/ containing plugin-api.h file for gold plugin.]),,
767
default) WITH_BINUTILS_INCDIR=default ;;
768
/* | [[A-Za-z]]:[[\\/]]*) WITH_BINUTILS_INCDIR=$withval ;;
769
*) AC_MSG_ERROR([Invalid path for --with-binutils-include. Provide full path]) ;;
771
if test "x$WITH_BINUTILS_INCDIR" != xdefault ; then
772
AC_SUBST(BINUTILS_INCDIR,$WITH_BINUTILS_INCDIR)
773
if test ! -f "$WITH_BINUTILS_INCDIR/plugin-api.h"; then
774
echo "$WITH_BINUTILS_INCDIR/plugin-api.h"
775
AC_MSG_ERROR([Invalid path to directory containing plugin-api.h.]);
779
dnl Specify the URL where bug reports should be submitted.
780
AC_ARG_WITH(bug-report-url,
781
AS_HELP_STRING([--with-bug-report-url],
782
[Specify the URL where bug reports should be submitted (default=http://llvm.org/bugs/)]),,
783
withval="http://llvm.org/bugs/")
784
AC_DEFINE_UNQUOTED(BUG_REPORT_URL,"$withval",
787
dnl --enable-libffi : check whether the user wants to turn off libffi:
788
AC_ARG_ENABLE(libffi,AS_HELP_STRING(
789
--enable-libffi,[Check for the presence of libffi (default is NO)]),
790
[case "$enableval" in
791
yes) llvm_cv_enable_libffi="yes" ;;
792
no) llvm_cv_enable_libffi="no" ;;
793
*) AC_MSG_ERROR([Invalid setting for --enable-libffi. Use "yes" or "no"]) ;;
795
llvm_cv_enable_libffi=no)
797
dnl===-----------------------------------------------------------------------===
799
dnl=== SECTION 4: Check for programs we need and that they are the right version
801
dnl===-----------------------------------------------------------------------===
806
dnl Check for the tools that the makefiles require
809
AC_PATH_PROG(CMP, [cmp], [cmp])
810
AC_PATH_PROG(CP, [cp], [cp])
811
AC_PATH_PROG(DATE, [date], [date])
812
AC_PATH_PROG(FIND, [find], [find])
813
AC_PATH_PROG(GREP, [grep], [grep])
814
AC_PATH_PROG(MKDIR,[mkdir],[mkdir])
815
AC_PATH_PROG(MV, [mv], [mv])
817
AC_CHECK_TOOL(AR, ar, false)
818
AC_PATH_PROG(RM, [rm], [rm])
819
AC_PATH_PROG(SED, [sed], [sed])
820
AC_PATH_PROG(TAR, [tar], [gtar])
821
AC_PATH_PROG(BINPWD,[pwd], [pwd])
823
dnl Looking for misc. graph plotting software
824
AC_PATH_PROG(GRAPHVIZ, [Graphviz], [echo Graphviz])
825
if test "$GRAPHVIZ" != "echo Graphviz" ; then
826
AC_DEFINE([HAVE_GRAPHVIZ],[1],[Define if the Graphviz program is available])
827
dnl If we're targeting for mingw we should emit windows paths, not msys
828
if test "$llvm_cv_os_type" = "MingW" ; then
829
GRAPHVIZ=`echo $GRAPHVIZ | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
831
AC_DEFINE_UNQUOTED([LLVM_PATH_GRAPHVIZ],"$GRAPHVIZ${EXEEXT}",
832
[Define to path to Graphviz program if found or 'echo Graphviz' otherwise])
834
AC_PATH_PROG(DOT, [dot], [echo dot])
835
if test "$DOT" != "echo dot" ; then
836
AC_DEFINE([HAVE_DOT],[1],[Define if the dot program is available])
837
dnl If we're targeting for mingw we should emit windows paths, not msys
838
if test "$llvm_cv_os_type" = "MingW" ; then
839
DOT=`echo $DOT | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
841
AC_DEFINE_UNQUOTED([LLVM_PATH_DOT],"$DOT${EXEEXT}",
842
[Define to path to dot program if found or 'echo dot' otherwise])
844
AC_PATH_PROG(FDP, [fdp], [echo fdp])
845
if test "$FDP" != "echo fdp" ; then
846
AC_DEFINE([HAVE_FDP],[1],[Define if the neat program is available])
847
dnl If we're targeting for mingw we should emit windows paths, not msys
848
if test "$llvm_cv_os_type" = "MingW" ; then
849
FDP=`echo $FDP | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
851
AC_DEFINE_UNQUOTED([LLVM_PATH_FDP],"$FDP${EXEEXT}",
852
[Define to path to fdp program if found or 'echo fdp' otherwise])
854
AC_PATH_PROG(NEATO, [neato], [echo neato])
855
if test "$NEATO" != "echo neato" ; then
856
AC_DEFINE([HAVE_NEATO],[1],[Define if the neat program is available])
857
dnl If we're targeting for mingw we should emit windows paths, not msys
858
if test "$llvm_cv_os_type" = "MingW" ; then
859
NEATO=`echo $NEATO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
861
AC_DEFINE_UNQUOTED([LLVM_PATH_NEATO],"$NEATO${EXEEXT}",
862
[Define to path to neato program if found or 'echo neato' otherwise])
864
AC_PATH_PROG(TWOPI, [twopi], [echo twopi])
865
if test "$TWOPI" != "echo twopi" ; then
866
AC_DEFINE([HAVE_TWOPI],[1],[Define if the neat program is available])
867
dnl If we're targeting for mingw we should emit windows paths, not msys
868
if test "$llvm_cv_os_type" = "MingW" ; then
869
TWOPI=`echo $TWOPI | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
871
AC_DEFINE_UNQUOTED([LLVM_PATH_TWOPI],"$TWOPI${EXEEXT}",
872
[Define to path to twopi program if found or 'echo twopi' otherwise])
874
AC_PATH_PROG(CIRCO, [circo], [echo circo])
875
if test "$CIRCO" != "echo circo" ; then
876
AC_DEFINE([HAVE_CIRCO],[1],[Define if the neat program is available])
877
dnl If we're targeting for mingw we should emit windows paths, not msys
878
if test "$llvm_cv_os_type" = "MingW" ; then
879
CIRCO=`echo $CIRCO | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
881
AC_DEFINE_UNQUOTED([LLVM_PATH_CIRCO],"$CIRCO${EXEEXT}",
882
[Define to path to circo program if found or 'echo circo' otherwise])
884
AC_PATH_PROGS(GV, [gv gsview32], [echo gv])
885
if test "$GV" != "echo gv" ; then
886
AC_DEFINE([HAVE_GV],[1],[Define if the gv program is available])
887
dnl If we're targeting for mingw we should emit windows paths, not msys
888
if test "$llvm_cv_os_type" = "MingW" ; then
889
GV=`echo $GV | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
891
AC_DEFINE_UNQUOTED([LLVM_PATH_GV],"$GV${EXEEXT}",
892
[Define to path to gv program if found or 'echo gv' otherwise])
894
AC_PATH_PROG(DOTTY, [dotty], [echo dotty])
895
if test "$DOTTY" != "echo dotty" ; then
896
AC_DEFINE([HAVE_DOTTY],[1],[Define if the dotty program is available])
897
dnl If we're targeting for mingw we should emit windows paths, not msys
898
if test "$llvm_cv_os_type" = "MingW" ; then
899
DOTTY=`echo $DOTTY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
901
AC_DEFINE_UNQUOTED([LLVM_PATH_DOTTY],"$DOTTY${EXEEXT}",
902
[Define to path to dotty program if found or 'echo dotty' otherwise])
904
AC_PATH_PROG(XDOT_PY, [xdot.py], [echo xdot.py])
905
if test "$XDOT_PY" != "echo xdot.py" ; then
906
AC_DEFINE([HAVE_XDOT_PY],[1],[Define if the xdot.py program is available])
907
dnl If we're targeting for mingw we should emit windows paths, not msys
908
if test "$llvm_cv_os_type" = "MingW" ; then
909
XDOT_PY=`echo $XDOT_PY | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
911
AC_DEFINE_UNQUOTED([LLVM_PATH_XDOT_PY],"$XDOT_PY${EXEEXT}",
912
[Define to path to xdot.py program if found or 'echo xdot.py' otherwise])
915
dnl Find the install program
917
dnl Prepend src dir to install path dir if it's a relative path
918
dnl This is a hack for installs that take place in something other
919
dnl than the top level.
921
[[\\/$]]* | ?:[[\\/]]* ) ;;
922
*) INSTALL="\\\$(TOPSRCDIR)/$INSTALL" ;;
925
dnl Checks for documentation and testing tools that we can do without. If these
926
dnl are not found then they are set to "true" which always succeeds but does
927
dnl nothing. This just lets the build output show that we could have done
928
dnl something if the tool was available.
929
AC_PATH_PROG(BZIP2, [bzip2])
930
AC_PATH_PROG(CAT, [cat])
931
AC_PATH_PROG(DOXYGEN, [doxygen])
932
AC_PATH_PROG(GROFF, [groff])
933
AC_PATH_PROG(GZIPBIN, [gzip])
934
AC_PATH_PROG(POD2HTML, [pod2html])
935
AC_PATH_PROG(POD2MAN, [pod2man])
936
AC_PATH_PROG(PDFROFF, [pdfroff])
937
AC_PATH_PROG(RUNTEST, [runtest])
939
AC_PATH_PROG(ZIP, [zip])
940
AC_PATH_PROGS(OCAMLC, [ocamlc])
941
AC_PATH_PROGS(OCAMLOPT, [ocamlopt])
942
AC_PATH_PROGS(OCAMLDEP, [ocamldep])
943
AC_PATH_PROGS(OCAMLDOC, [ocamldoc])
944
AC_PATH_PROGS(GAS, [gas as])
946
dnl Get the version of the linker in use.
949
dnl Determine whether the linker supports the -R option.
952
dnl Determine whether the linker supports the -export-dynamic option.
953
AC_LINK_EXPORT_DYNAMIC
955
dnl Determine whether the linker supports the --version-script option.
956
AC_LINK_VERSION_SCRIPT
958
dnl Check for libtool and the library that has dlopen function (which must come
959
dnl before the AC_PROG_LIBTOOL check in order to enable dlopening libraries with
964
AC_MSG_CHECKING([tool compatibility])
966
dnl Ensure that compilation tools are GCC or a GNU compatible compiler such as
967
dnl ICC; we use GCC specific options in the makefiles so the compiler needs
968
dnl to support those options.
969
dnl "icc" emits gcc signatures
970
dnl "icc -no-gcc" emits no gcc signature BUT is still compatible
982
if test "$GCC" != "yes" && test "$ICC" != "yes"
984
AC_MSG_ERROR([gcc|icc required but not found])
987
dnl Ensure that compilation tools are compatible with GCC extensions
988
if test "$GXX" != "yes" && test "$IXX" != "yes"
990
AC_MSG_ERROR([g++|clang++|icc required but not found])
993
dnl Verify that GCC is version 3.0 or higher
994
if test "$GCC" = "yes"
996
AC_COMPILE_IFELSE([[#if !defined(__GNUC__) || __GNUC__ < 3
997
#error Unsupported GCC version
999
]], [], [AC_MSG_ERROR([gcc 3.x required, but you have a lower version])])
1002
dnl Check for GNU Make. We use its extensions, so don't build without it
1003
if test -z "$llvm_cv_gnu_make_command"
1005
AC_MSG_ERROR([GNU Make required but not found])
1008
dnl Tool compatibility is okay if we make it here.
1011
dnl Check optional compiler flags.
1012
AC_MSG_CHECKING([optional compiler flags])
1013
CXX_FLAG_CHECK(NO_VARIADIC_MACROS, [-Wno-variadic-macros])
1014
CXX_FLAG_CHECK(NO_MISSING_FIELD_INITIALIZERS, [-Wno-missing-field-initializers])
1015
CXX_FLAG_CHECK(COVERED_SWITCH_DEFAULT, [-Wcovered-switch-default])
1016
AC_MSG_RESULT([$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS $COVERED_SWITCH_DEFAULT])
1018
dnl===-----------------------------------------------------------------------===
1020
dnl=== SECTION 5: Check for libraries
1022
dnl===-----------------------------------------------------------------------===
1025
if test "$llvm_cv_os_type" = "MingW" ; then
1026
AC_CHECK_LIB(imagehlp, main)
1027
AC_CHECK_LIB(psapi, main)
1030
dnl dlopen() is required for plugin support.
1031
AC_SEARCH_LIBS(dlopen,dl,AC_DEFINE([HAVE_DLOPEN],[1],
1032
[Define if dlopen() is available on this platform.]),
1033
AC_MSG_WARN([dlopen() not found - disabling plugin support]))
1035
dnl libffi is optional; used to call external functions from the interpreter
1036
if test "$llvm_cv_enable_libffi" = "yes" ; then
1037
AC_SEARCH_LIBS(ffi_call,ffi,AC_DEFINE([HAVE_FFI_CALL],[1],
1038
[Define if libffi is available on this platform.]),
1039
AC_MSG_ERROR([libffi not found - configure without --enable-libffi to compile without it]))
1042
dnl mallinfo is optional; the code can compile (minus features) without it
1043
AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1],
1044
[Define if mallinfo() is available on this platform.]))
1046
dnl pthread locking functions are optional - but llvm will not be thread-safe
1048
if test "$ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then
1049
AC_CHECK_LIB(pthread, pthread_mutex_init)
1050
AC_SEARCH_LIBS(pthread_mutex_lock,pthread,
1051
AC_DEFINE([HAVE_PTHREAD_MUTEX_LOCK],[1],
1052
[Have pthread_mutex_lock]))
1053
AC_SEARCH_LIBS(pthread_rwlock_init,pthread,
1054
AC_DEFINE([HAVE_PTHREAD_RWLOCK_INIT],[1],
1055
[Have pthread_rwlock_init]))
1056
AC_SEARCH_LIBS(pthread_getspecific,pthread,
1057
AC_DEFINE([HAVE_PTHREAD_GETSPECIFIC],[1],
1058
[Have pthread_getspecific]))
1061
dnl Allow extra x86-disassembler library
1063
AS_HELP_STRING([--with-udis86=<path>],
1064
[Use udis86 external x86 disassembler library]),
1066
AC_SUBST(USE_UDIS86, [1])
1069
*) LDFLAGS="$LDFLAGS -L${withval}" ;;
1071
AC_CHECK_LIB(udis86, ud_init, [], [
1072
echo "Error! You need to have libudis86 around."
1076
AC_SUBST(USE_UDIS86, [0]))
1077
AC_DEFINE_UNQUOTED([USE_UDIS86],$USE_UDIS86,
1078
[Define if use udis86 library])
1080
dnl Allow OProfile support for JIT output.
1081
AC_ARG_WITH(oprofile,
1082
AS_HELP_STRING([--with-oprofile=<prefix>],
1083
[Tell OProfile >= 0.9.4 how to symbolize JIT output]),
1085
AC_SUBST(USE_OPROFILE, [1])
1087
/usr|yes) llvm_cv_oppath=/usr/lib/oprofile ;;
1089
AC_SUBST(USE_OPROFILE, [0]) ;;
1090
*) llvm_cv_oppath="${withval}/lib/oprofile"
1091
CPPFLAGS="-I${withval}/include";;
1093
if test -n "$llvm_cv_oppath" ; then
1094
LIBS="$LIBS -L${llvm_cv_oppath} -Wl,-rpath,${llvm_cv_oppath}"
1095
dnl Work around http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=537744:
1096
dnl libbfd is not included properly in libopagent in some Debian
1097
dnl versions. If libbfd isn't found at all, we assume opagent works
1099
AC_SEARCH_LIBS(bfd_init, bfd, [], [])
1100
AC_SEARCH_LIBS(op_open_agent, opagent, [], [
1101
echo "Error! You need to have libopagent around."
1104
AC_CHECK_HEADER([opagent.h], [], [
1105
echo "Error! You need to have opagent.h around."
1111
AC_SUBST(USE_OPROFILE, [0])
1113
AC_DEFINE_UNQUOTED([USE_OPROFILE],$USE_OPROFILE,
1114
[Define if we have the oprofile JIT-support library])
1116
dnl===-----------------------------------------------------------------------===
1118
dnl=== SECTION 6: Check for header files
1120
dnl===-----------------------------------------------------------------------===
1122
dnl First, use autoconf provided macros for specific headers that we need
1123
dnl We don't check for ancient stuff or things that are guaranteed to be there
1124
dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers.
1125
dnl Generally we're looking for POSIX headers.
1127
AC_HEADER_MMAP_ANONYMOUS
1132
AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h inttypes.h limits.h link.h])
1133
AC_CHECK_HEADERS([malloc.h setjmp.h signal.h stdint.h termios.h unistd.h])
1134
AC_CHECK_HEADERS([utime.h windows.h])
1135
AC_CHECK_HEADERS([sys/mman.h sys/param.h sys/resource.h sys/time.h sys/uio.h])
1136
AC_CHECK_HEADERS([sys/types.h sys/ioctl.h malloc/malloc.h mach/mach.h])
1137
AC_CHECK_HEADERS([valgrind/valgrind.h])
1138
AC_CHECK_HEADERS([fenv.h])
1139
if test "$ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then
1140
AC_CHECK_HEADERS(pthread.h,
1141
AC_SUBST(HAVE_PTHREAD, 1),
1142
AC_SUBST(HAVE_PTHREAD, 0))
1144
AC_SUBST(HAVE_PTHREAD, 0)
1147
dnl Try to find ffi.h.
1148
if test "$llvm_cv_enable_libffi" = "yes" ; then
1149
AC_CHECK_HEADERS([ffi.h ffi/ffi.h])
1152
dnl Try to find Darwin specific crash reporting libraries.
1153
AC_CHECK_HEADERS([CrashReporterClient.h])
1155
dnl Try to find Darwin specific crash reporting global.
1156
AC_MSG_CHECKING([__crashreporter_info__])
1159
[[extern const char *__crashreporter_info__;
1161
__crashreporter_info__ = "test";
1166
AC_DEFINE(HAVE_CRASHREPORTER_INFO, 1, Can use __crashreporter_info__),
1168
AC_DEFINE(HAVE_CRASHREPORTER_INFO, 0,
1169
Define if __crashreporter_info__ exists.))
1171
dnl===-----------------------------------------------------------------------===
1173
dnl=== SECTION 7: Check for types and structures
1175
dnl===-----------------------------------------------------------------------===
1180
AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[Define as the return type of signal handlers (`int' or `void').])
1182
AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
1183
AC_CHECK_TYPES([uint64_t],,
1184
AC_CHECK_TYPES([u_int64_t],,
1185
AC_MSG_ERROR([Type uint64_t or u_int64_t required but not found])))
1187
dnl===-----------------------------------------------------------------------===
1189
dnl=== SECTION 8: Check for specific functions needed
1191
dnl===-----------------------------------------------------------------------===
1193
AC_CHECK_FUNCS([backtrace ceilf floorf roundf rintf nearbyintf getcwd ])
1194
AC_CHECK_FUNCS([powf fmodf strtof round ])
1195
AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday ])
1196
AC_CHECK_FUNCS([isatty mkdtemp mkstemp ])
1197
AC_CHECK_FUNCS([mktemp posix_spawn realpath sbrk setrlimit strdup ])
1198
AC_CHECK_FUNCS([strerror strerror_r setenv ])
1199
AC_CHECK_FUNCS([strtoll strtoq sysconf malloc_zone_statistics ])
1200
AC_CHECK_FUNCS([setjmp longjmp sigsetjmp siglongjmp writev])
1204
dnl Check the declaration "Secure API" on Windows environments.
1205
AC_CHECK_DECLS([strerror_s])
1207
dnl Check symbols in libgcc.a for JIT on Mingw.
1208
if test "$llvm_cv_os_type" = "MingW" ; then
1209
AC_CHECK_LIB(gcc,_alloca,AC_DEFINE([HAVE__ALLOCA],[1],[Have host's _alloca]))
1210
AC_CHECK_LIB(gcc,__alloca,AC_DEFINE([HAVE___ALLOCA],[1],[Have host's __alloca]))
1211
AC_CHECK_LIB(gcc,__chkstk,AC_DEFINE([HAVE___CHKSTK],[1],[Have host's __chkstk]))
1212
AC_CHECK_LIB(gcc,___chkstk,AC_DEFINE([HAVE____CHKSTK],[1],[Have host's ___chkstk]))
1214
AC_CHECK_LIB(gcc,__ashldi3,AC_DEFINE([HAVE___ASHLDI3],[1],[Have host's __ashldi3]))
1215
AC_CHECK_LIB(gcc,__ashrdi3,AC_DEFINE([HAVE___ASHRDI3],[1],[Have host's __ashrdi3]))
1216
AC_CHECK_LIB(gcc,__divdi3,AC_DEFINE([HAVE___DIVDI3],[1],[Have host's __divdi3]))
1217
AC_CHECK_LIB(gcc,__fixdfdi,AC_DEFINE([HAVE___FIXDFDI],[1],[Have host's __fixdfdi]))
1218
AC_CHECK_LIB(gcc,__fixsfdi,AC_DEFINE([HAVE___FIXSFDI],[1],[Have host's __fixsfdi]))
1219
AC_CHECK_LIB(gcc,__floatdidf,AC_DEFINE([HAVE___FLOATDIDF],[1],[Have host's __floatdidf]))
1220
AC_CHECK_LIB(gcc,__lshrdi3,AC_DEFINE([HAVE___LSHRDI3],[1],[Have host's __lshrdi3]))
1221
AC_CHECK_LIB(gcc,__moddi3,AC_DEFINE([HAVE___MODDI3],[1],[Have host's __moddi3]))
1222
AC_CHECK_LIB(gcc,__udivdi3,AC_DEFINE([HAVE___UDIVDI3],[1],[Have host's __udivdi3]))
1223
AC_CHECK_LIB(gcc,__umoddi3,AC_DEFINE([HAVE___UMODDI3],[1],[Have host's __umoddi3]))
1225
AC_CHECK_LIB(gcc,__main,AC_DEFINE([HAVE___MAIN],[1],[Have host's __main]))
1226
AC_CHECK_LIB(gcc,__cmpdi2,AC_DEFINE([HAVE___CMPDI2],[1],[Have host's __cmpdi2]))
1229
dnl Check Win32 API EnumerateLoadedModules.
1230
if test "$llvm_cv_os_type" = "MingW" ; then
1231
AC_MSG_CHECKING([whether EnumerateLoadedModules() accepts new decl])
1232
AC_COMPILE_IFELSE([[#include <windows.h>
1233
#include <imagehlp.h>
1234
extern void foo(PENUMLOADED_MODULES_CALLBACK);
1235
extern void foo(BOOL(CALLBACK*)(PCSTR,ULONG_PTR,ULONG,PVOID));]],
1237
AC_MSG_RESULT([yes])
1238
llvm_cv_win32_elmcb_pcstr="PCSTR"
1242
llvm_cv_win32_elmcb_pcstr="PSTR"
1244
AC_DEFINE_UNQUOTED([WIN32_ELMCB_PCSTR],$llvm_cv_win32_elmcb_pcstr,[Type of 1st arg on ELM Callback])
1247
dnl Check for variations in the Standard C++ library and STL. These macros are
1248
dnl provided by LLVM in the autoconf/m4 directory.
1252
dnl Check for mmap support.We also need to know if /dev/zero is required to
1253
dnl be opened for allocating RWX memory.
1254
dnl Make sure we aren't attempting to configure for an unknown system
1255
if test "$llvm_cv_platform_type" = "Unix" ; then
1258
AC_NEED_DEV_ZERO_FOR_MMAP
1260
if test "$ac_cv_func_mmap_fixed_mapped" = "no"
1262
AC_MSG_WARN([mmap() of a fixed address required but not supported])
1264
if test "$ac_cv_func_mmap_file" = "no"
1266
AC_MSG_WARN([mmap() of files required but not found])
1270
dnl atomic builtins are required for threading support.
1271
AC_MSG_CHECKING(for GCC atomic builtins)
1272
dnl Since we'll be using these atomic builtins in C++ files we should test
1273
dnl the C++ compiler.
1278
volatile unsigned long val = 1;
1279
__sync_synchronize();
1280
__sync_val_compare_and_swap(&val, 1, 0);
1281
__sync_add_and_fetch(&val, 1);
1282
__sync_sub_and_fetch(&val, 1);
1288
AC_DEFINE(LLVM_HAS_ATOMICS, 1, Has gcc/MSVC atomic intrinsics),
1290
AC_DEFINE(LLVM_HAS_ATOMICS, 0, Has gcc/MSVC atomic intrinsics)
1291
AC_MSG_WARN([LLVM will be built thread-unsafe because atomic builtins are missing]))
1293
dnl===-----------------------------------------------------------------------===
1295
dnl=== SECTION 9: Additional checks, variables, etc.
1297
dnl===-----------------------------------------------------------------------===
1299
dnl Handle 32-bit linux systems running a 64-bit kernel.
1300
dnl This has to come after section 4 because it invokes the compiler.
1301
if test "$llvm_cv_os_type" = "Linux" -a "$llvm_cv_target_arch" = "x86_64" ; then
1303
if test "$llvm_cv_linux_mixed" = "yes"; then
1304
llvm_cv_target_arch="x86"
1309
dnl Check whether __dso_handle is present
1310
AC_CHECK_FUNCS([__dso_handle])
1312
dnl Propagate the shared library extension that the libltdl checks did to
1313
dnl the Makefiles so we can use it there too
1314
AC_SUBST(SHLIBEXT,$libltdl_cv_shlibext)
1316
dnl Propagate the run-time library path variable that the libltdl
1317
dnl checks found to the Makefiles so we can use it there too
1318
AC_SUBST(SHLIBPATH_VAR,$libltdl_cv_shlibpath_var)
1320
# Translate the various configuration directories and other basic
1321
# information into substitutions that will end up in Makefile.config.in
1322
# that these configured values can be used by the makefiles
1323
if test "${prefix}" = "NONE" ; then
1326
eval LLVM_PREFIX="${prefix}";
1327
eval LLVM_BINDIR="${prefix}/bin";
1328
eval LLVM_LIBDIR="${prefix}/lib";
1329
eval LLVM_DATADIR="${prefix}/share/llvm";
1330
eval LLVM_DOCSDIR="${prefix}/share/doc/llvm";
1331
eval LLVM_ETCDIR="${prefix}/etc/llvm";
1332
eval LLVM_INCLUDEDIR="${prefix}/include";
1333
eval LLVM_INFODIR="${prefix}/info";
1334
eval LLVM_MANDIR="${prefix}/man";
1335
LLVM_CONFIGTIME=`date`
1336
AC_SUBST(LLVM_PREFIX)
1337
AC_SUBST(LLVM_BINDIR)
1338
AC_SUBST(LLVM_LIBDIR)
1339
AC_SUBST(LLVM_DATADIR)
1340
AC_SUBST(LLVM_DOCSDIR)
1341
AC_SUBST(LLVM_ETCDIR)
1342
AC_SUBST(LLVM_INCLUDEDIR)
1343
AC_SUBST(LLVM_INFODIR)
1344
AC_SUBST(LLVM_MANDIR)
1345
AC_SUBST(LLVM_CONFIGTIME)
1347
# Place the various directores into the config.h file as #defines so that we
1348
# can know about the installation paths within LLVM.
1349
AC_DEFINE_UNQUOTED(LLVM_PREFIX,"$LLVM_PREFIX",
1350
[Installation prefix directory])
1351
AC_DEFINE_UNQUOTED(LLVM_BINDIR, "$LLVM_BINDIR",
1352
[Installation directory for binary executables])
1353
AC_DEFINE_UNQUOTED(LLVM_LIBDIR, "$LLVM_LIBDIR",
1354
[Installation directory for libraries])
1355
AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DATADIR",
1356
[Installation directory for data files])
1357
AC_DEFINE_UNQUOTED(LLVM_DOCSDIR, "$LLVM_DOCSDIR",
1358
[Installation directory for documentation])
1359
AC_DEFINE_UNQUOTED(LLVM_ETCDIR, "$LLVM_ETCDIR",
1360
[Installation directory for config files])
1361
AC_DEFINE_UNQUOTED(LLVM_INCLUDEDIR, "$LLVM_INCLUDEDIR",
1362
[Installation directory for include files])
1363
AC_DEFINE_UNQUOTED(LLVM_INFODIR, "$LLVM_INFODIR",
1364
[Installation directory for .info files])
1365
AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR",
1366
[Installation directory for man pages])
1367
AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME",
1368
[Time at which LLVM was configured])
1369
AC_DEFINE_UNQUOTED(LLVM_DEFAULT_TARGET_TRIPLE, "$target",
1370
[Target triple LLVM will generate code for by default])
1372
# Determine which bindings to build.
1373
if test "$BINDINGS_TO_BUILD" = auto ; then
1374
BINDINGS_TO_BUILD=""
1375
if test "x$OCAMLC" != x -a "x$OCAMLDEP" != x ; then
1376
BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD"
1379
AC_SUBST(BINDINGS_TO_BUILD,$BINDINGS_TO_BUILD)
1381
# This isn't really configurey, but it avoids having to repeat the list in
1383
AC_SUBST(ALL_BINDINGS,ocaml)
1385
# Do any work necessary to ensure that bindings have what they need.
1386
binding_prereqs_failed=0
1387
for a_binding in $BINDINGS_TO_BUILD ; do
1388
case "$a_binding" in
1390
if test "x$OCAMLC" = x ; then
1391
AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlc not found. Try configure OCAMLC=/path/to/ocamlc])
1392
binding_prereqs_failed=1
1394
if test "x$OCAMLDEP" = x ; then
1395
AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamldep not found. Try configure OCAMLDEP=/path/to/ocamldep])
1396
binding_prereqs_failed=1
1398
if test "x$OCAMLOPT" = x ; then
1399
AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlopt not found. Try configure OCAMLOPT=/path/to/ocamlopt])
1400
dnl ocamlopt is optional!
1402
if test "x$with_ocaml_libdir" != xauto ; then
1403
AC_SUBST(OCAML_LIBDIR,$with_ocaml_libdir)
1405
ocaml_stdlib="`"$OCAMLC" -where`"
1406
if test "$LLVM_PREFIX" '<' "$ocaml_stdlib" -a "$ocaml_stdlib" '<' "$LLVM_PREFIX~"
1408
# ocaml stdlib is beneath our prefix; use stdlib
1409
AC_SUBST(OCAML_LIBDIR,$ocaml_stdlib)
1411
# ocaml stdlib is outside our prefix; use libdir/ocaml
1412
AC_SUBST(OCAML_LIBDIR,$LLVM_LIBDIR/ocaml)
1418
if test "$binding_prereqs_failed" = 1 ; then
1419
AC_MSG_ERROR([Prequisites for bindings not satisfied. Fix them or use configure --disable-bindings.])
1422
dnl Determine whether the compiler supports -fvisibility-inlines-hidden.
1423
AC_CXX_USE_VISIBILITY_INLINES_HIDDEN
1425
dnl Determine linker rpath flag
1426
if test "$llvm_cv_link_use_r" = "yes" ; then
1433
dnl Determine linker rdynamic flag
1434
if test "$llvm_cv_link_use_export_dynamic" = "yes" ; then
1435
RDYNAMIC="-Wl,-export-dynamic"
1441
dnl===-----------------------------------------------------------------------===
1443
dnl=== SECTION 10: Specify the output files and generate it
1445
dnl===-----------------------------------------------------------------------===
1447
dnl **************************************************************************
1448
dnl End LLVM configure.ac Import
1449
dnl **************************************************************************
1451
dnl Configure a common Makefile
1452
AC_CONFIG_FILES(Makefile.common)
1453
AC_CONFIG_FILES(Makefile.llvm.config)
1455
dnl Configure project makefiles
1456
dnl List every Makefile that exists within your source tree
1457
AC_CONFIG_MAKEFILE(Makefile)
1458
AC_CONFIG_MAKEFILE(lib/Makefile)
1459
AC_CONFIG_MAKEFILE(lib/sample/Makefile)
1460
AC_CONFIG_MAKEFILE(tools/Makefile)
1461
AC_CONFIG_MAKEFILE(tools/sample/Makefile)
1463
dnl This must be last