blob: e699ee631e56e3f91a25bec1dd08696e9f8a9caf [file] [log] [blame]
Reid Spencer0241e382004-11-25 04:51:04 +00001dnl === configure.ac --------------------------------------------------------===
2dnl The LLVM Compiler Infrastructure
3dnl
Chris Lattner6787a452007-12-29 22:59:10 +00004dnl This file is distributed under the University of Illinois Open Source
5dnl License. See LICENSE.TXT for details.
Eric Christophere62b4412007-12-01 00:34:39 +00006dnl
Reid Spencer0241e382004-11-25 04:51:04 +00007dnl===-----------------------------------------------------------------------===
8dnl This is the LLVM configuration script. It is processed by the autoconf
Eric Christophere62b4412007-12-01 00:34:39 +00009dnl program to produce a script named configure. This script contains the
Reid Spencer0241e382004-11-25 04:51:04 +000010dnl configuration checks that LLVM needs in order to support multiple platforms.
11dnl This file is composed of 10 sections per the recommended organization of
12dnl autoconf input defined in the autoconf documentation. As this file evolves,
13dnl please keep the various types of checks within their sections. The sections
14dnl are as follows:
15dnl
16dnl SECTION 1: Initialization & Setup
17dnl SECTION 2: Architecture, target, and host checks
18dnl SECTION 3: Command line arguments for the configure script.
19dnl SECTION 4: Check for programs we need and that they are the right version
20dnl SECTION 5: Check for libraries
21dnl SECTION 6: Check for header files
22dnl SECTION 7: Check for types and structures
23dnl SECTION 8: Check for specific functions needed
24dnl SECTION 9: Additional checks, variables, etc.
25dnl SECTION 10: Specify the output files and generate it
26dnl
27dnl===-----------------------------------------------------------------------===
28dnl===
29dnl=== SECTION 1: Initialization & Setup
30dnl===
31dnl===-----------------------------------------------------------------------===
32dnl Initialize autoconf and define the package name, version number and
Dylan Noblesmith67c49702011-12-18 18:50:16 +000033dnl address for reporting bugs.
Tom Stellarde6ba81d2014-03-03 15:22:00 +000034
Hans Wennborgd94a5f02015-01-14 17:38:03 +000035AC_INIT([LLVM],[3.7.0svn],[http://llvm.org/bugs/])
Tom Stellarde6ba81d2014-03-03 15:22:00 +000036
37LLVM_VERSION_MAJOR=3
Hans Wennborgd94a5f02015-01-14 17:38:03 +000038LLVM_VERSION_MINOR=7
Tom Stellarde6ba81d2014-03-03 15:22:00 +000039LLVM_VERSION_PATCH=0
40LLVM_VERSION_SUFFIX=svn
41
42AC_DEFINE_UNQUOTED([LLVM_VERSION_MAJOR], $LLVM_VERSION_MAJOR, [Major version of the LLVM API])
43AC_DEFINE_UNQUOTED([LLVM_VERSION_MINOR], $LLVM_VERSION_MINOR, [Minor version of the LLVM API])
44AC_DEFINE_UNQUOTED([LLVM_VERSION_PATCH], $LLVM_VERSION_PATCH, [Patch version of the LLVM API])
Peter Collingbournea8ed79a2014-11-19 03:34:17 +000045AC_DEFINE_UNQUOTED([LLVM_VERSION_STRING], "$PACKAGE_VERSION", [LLVM version string])
Tom Stellarde6ba81d2014-03-03 15:22:00 +000046
47AC_SUBST([LLVM_VERSION_MAJOR])
48AC_SUBST([LLVM_VERSION_MINOR])
49AC_SUBST([LLVM_VERSION_PATCH])
50AC_SUBST([LLVM_VERSION_SUFFIX])
John Criswell7a3334d2003-07-22 19:13:20 +000051
Reid Spencer0241e382004-11-25 04:51:04 +000052dnl Provide a copyright substitution and ensure the copyright notice is included
53dnl in the output of --version option of the generated configure script.
NAKAMURA Takumid40d3872014-01-01 08:27:31 +000054AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2014 University of Illinois at Urbana-Champaign."])
55AC_COPYRIGHT([Copyright (c) 2003-2014 University of Illinois at Urbana-Champaign.])
Reid Spencer0241e382004-11-25 04:51:04 +000056
Eric Christopherb9a11322011-09-23 00:53:10 +000057dnl Indicate that we require autoconf 2.60 or later.
58AC_PREREQ(2.60)
Reid Spencer0241e382004-11-25 04:51:04 +000059
60dnl Verify that the source directory is valid. This makes sure that we are
61dnl configuring LLVM and not some other package (it validates --srcdir argument)
Chandler Carruthfbdae1f2013-01-02 09:22:59 +000062AC_CONFIG_SRCDIR([lib/IR/Module.cpp])
Reid Spencer0241e382004-11-25 04:51:04 +000063
Eric Christophere62b4412007-12-01 00:34:39 +000064dnl Place all of the extra autoconf files into the config subdirectory. Tell
65dnl various tools where the m4 autoconf macros are.
John Criswell7a3334d2003-07-22 19:13:20 +000066AC_CONFIG_AUX_DIR([autoconf])
67
John Criswell22107a72003-09-15 17:04:06 +000068dnl Quit if the source directory has already been configured.
John Criswellf6778b62003-09-15 17:19:42 +000069dnl NOTE: This relies upon undocumented autoconf behavior.
Reid Spencer2024d0e2004-09-19 23:43:52 +000070if test ${srcdir} != "." ; then
Reid Spencer0241e382004-11-25 04:51:04 +000071 if test -f ${srcdir}/include/llvm/Config/config.h ; then
72 AC_MSG_ERROR([Already configured in ${srcdir}])
73 fi
John Criswell22107a72003-09-15 17:04:06 +000074fi
75
Patrik Hagglundd91ae4d2013-02-04 08:15:53 +000076dnl Default to empty (i.e. assigning the null string to) CFLAGS and CXXFLAGS,
77dnl instead of the autoconf default (for example, '-g -O2' for CC=gcc).
Patrik Hagglund98578472013-09-24 11:38:45 +000078: ${CFLAGS=}
79: ${CXXFLAGS=}
Patrik Hagglundd91ae4d2013-02-04 08:15:53 +000080
Eric Christopher58839712011-09-16 20:36:25 +000081dnl We need to check for the compiler up here to avoid anything else
82dnl starting with a different one.
Chandler Carruthb4dd3c62014-01-14 03:46:00 +000083AC_PROG_CC(clang gcc)
84AC_PROG_CXX(clang++ g++)
Eric Christopher58839712011-09-16 20:36:25 +000085AC_PROG_CPP
86
Dmitri Gribenko06358bd2013-01-09 15:25:30 +000087dnl If CXX is Clang, check that it can find and parse C++ standard library
88dnl headers.
89if test "$CXX" = "clang++" ; then
90 AC_MSG_CHECKING([whether clang works])
91 AC_LANG_PUSH([C++])
92 dnl Note that space between 'include' and '(' is required. There's a broken
93 dnl regex in aclocal that otherwise will think that we call m4's include
94 dnl builtin.
95 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <limits>
96#if __has_include (<cxxabi.h>)
97#include <cxxabi.h>
98#endif
99#if __has_include (<unwind.h>)
100#include <unwind.h>
101#endif
102]])],
103[
104 AC_MSG_RESULT([yes])
105],
106[
107 AC_MSG_RESULT([no])
108 AC_MSG_ERROR([Selected compiler could not find or parse C++ standard library headers. Rerun with CC=c-compiler CXX=c++-compiler ./configure ...])
109])
110 AC_LANG_POP([C++])
111fi
112
Chandler Carruth75a65452014-01-14 05:02:38 +0000113dnl Set up variables that track whether the host compiler is GCC or Clang where
114dnl we can effectively sanity check them. We don't try to sanity check all the
115dnl other possible compilers.
116AC_MSG_CHECKING([whether GCC or Clang is our host compiler])
117AC_LANG_PUSH([C++])
118llvm_cv_cxx_compiler=unknown
Chandler Carruthf8c6ccf2014-01-15 10:31:15 +0000119AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#if ! __clang__
120 #error
121 #endif
122 ]])],
Chandler Carruth75a65452014-01-14 05:02:38 +0000123 llvm_cv_cxx_compiler=clang,
Chandler Carruthf8c6ccf2014-01-15 10:31:15 +0000124 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#if ! __GNUC__
125 #error
126 #endif
127 ]])],
Chandler Carruth75a65452014-01-14 05:02:38 +0000128 llvm_cv_cxx_compiler=gcc, [])])
129AC_LANG_POP([C++])
130AC_MSG_RESULT([${llvm_cv_cxx_compiler}])
131
Reid Spencer0241e382004-11-25 04:51:04 +0000132dnl Configure all of the projects present in our source tree. While we could
133dnl just AC_CONFIG_SUBDIRS on the set of directories in projects that have a
134dnl configure script, that usage of the AC_CONFIG_SUBDIRS macro is deprecated.
135dnl Instead we match on the known projects.
John Criswellf369e772010-03-19 21:31:39 +0000136
137dnl
138dnl One tricky part of doing this is that some projects depend upon other
139dnl projects. For example, several projects rely upon the LLVM test suite.
140dnl We want to configure those projects first so that their object trees are
141dnl created before running the configure scripts of projects that depend upon
142dnl them.
143dnl
144
John Criswellf369e772010-03-19 21:31:39 +0000145dnl Several projects use the LLVM test suite, so configure it next.
146if test -d ${srcdir}/projects/test-suite ; then
147 AC_CONFIG_SUBDIRS([projects/test-suite])
148fi
149
150dnl llvm-test is the old name of the test-suite, kept here for backwards
151dnl compatibility
152if test -d ${srcdir}/projects/llvm-test ; then
153 AC_CONFIG_SUBDIRS([projects/llvm-test])
154fi
155
156dnl Some projects use poolalloc; configure that next
157if test -d ${srcdir}/projects/poolalloc ; then
158 AC_CONFIG_SUBDIRS([projects/poolalloc])
159fi
160
161if test -d ${srcdir}/projects/llvm-poolalloc ; then
162 AC_CONFIG_SUBDIRS([projects/llvm-poolalloc])
163fi
164
165dnl Check for all other projects
John Criswell297baed2003-11-25 20:36:46 +0000166for i in `ls ${srcdir}/projects`
167do
Reid Spencer90de7fb2004-09-07 16:26:18 +0000168 if test -d ${srcdir}/projects/${i} ; then
169 case ${i} in
John Criswell4d377d82010-02-25 22:57:19 +0000170 safecode) AC_CONFIG_SUBDIRS([projects/safecode]) ;;
Daniel Dunbar7ce849d2011-12-07 22:07:03 +0000171 compiler-rt) ;;
John Criswell4e61b252010-03-25 13:59:09 +0000172 test-suite) ;;
173 llvm-test) ;;
174 poolalloc) ;;
175 llvm-poolalloc) ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000176 *)
Alkis Evlogimenos26227282004-09-27 07:35:19 +0000177 AC_MSG_WARN([Unknown project (${i}) won't be configured automatically])
Reid Spencerc6f9e0f2004-09-21 17:12:35 +0000178 ;;
Reid Spencer90de7fb2004-09-07 16:26:18 +0000179 esac
John Criswell297baed2003-11-25 20:36:46 +0000180 fi
181done
John Criswellee7ebdc2003-09-30 16:31:48 +0000182
Tobias Grosserea9dca42010-10-30 00:54:26 +0000183dnl Disable the build of polly, even if it is checked out into tools/polly.
184AC_ARG_ENABLE(polly,
185 AS_HELP_STRING([--enable-polly],
186 [Use polly if available (default is YES)]),,
187 enableval=default)
188case "$enableval" in
189 yes) AC_SUBST(ENABLE_POLLY,[1]) ;;
190 no) AC_SUBST(ENABLE_POLLY,[0]) ;;
191 default) AC_SUBST(ENABLE_POLLY,[1]) ;;
192 *) AC_MSG_ERROR([Invalid setting for --enable-polly. Use "yes" or "no"]) ;;
193esac
194
195
196dnl Check if polly is checked out into tools/polly and configure it if
197dnl available.
198if (test -d ${srcdir}/tools/polly) && (test $ENABLE_POLLY -eq 1) ; then
199 AC_SUBST(LLVM_HAS_POLLY,1)
200 AC_CONFIG_SUBDIRS([tools/polly])
201fi
202
Reid Spencer0241e382004-11-25 04:51:04 +0000203dnl===-----------------------------------------------------------------------===
204dnl===
205dnl=== SECTION 2: Architecture, target, and host checks
206dnl===
207dnl===-----------------------------------------------------------------------===
John Criswell9537b042004-07-23 15:40:57 +0000208
Reid Spencer0241e382004-11-25 04:51:04 +0000209dnl Check the target for which we're compiling and the host that will do the
Eric Christophere62b4412007-12-01 00:34:39 +0000210dnl compilations. This will tell us which LLVM compiler will be used for
211dnl compiling SSA into object code. This needs to be done early because
Reid Spencer0241e382004-11-25 04:51:04 +0000212dnl following tests depend on it.
John Criswell7a3334d2003-07-22 19:13:20 +0000213AC_CANONICAL_TARGET
214
Reid Spencer0241e382004-11-25 04:51:04 +0000215dnl Determine the platform type and cache its value. This helps us configure
216dnl the System library to the correct build platform.
Reid Spencer0aa9d002006-07-26 21:14:56 +0000217AC_CACHE_CHECK([type of operating system we're going to host on],
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000218 [llvm_cv_os_type],
Reid Spencer0aa9d002006-07-26 21:14:56 +0000219[case $host in
Eric Christophere62b4412007-12-01 00:34:39 +0000220 *-*-aix*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000221 llvm_cv_link_all_option="-Wl,--whole-archive"
222 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Eric Christophere62b4412007-12-01 00:34:39 +0000223 llvm_cv_os_type="AIX"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000224 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000225 *-*-irix*)
Reid Spencere9a40562006-08-22 22:21:38 +0000226 llvm_cv_link_all_option="-Wl,--whole-archive"
227 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Eric Christophere62b4412007-12-01 00:34:39 +0000228 llvm_cv_os_type="IRIX"
Reid Spencere9a40562006-08-22 22:21:38 +0000229 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000230 *-*-cygwin*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000231 llvm_cv_link_all_option="-Wl,--whole-archive"
232 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Eric Christophere62b4412007-12-01 00:34:39 +0000233 llvm_cv_os_type="Cygwin"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000234 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000235 *-*-darwin*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000236 llvm_cv_link_all_option="-Wl,-all_load"
Chris Lattner42e35d42008-02-05 19:43:40 +0000237 llvm_cv_no_link_all_option="-Wl,-noall_load"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000238 llvm_cv_os_type="Darwin"
239 llvm_cv_platform_type="Unix" ;;
Chris Lattnerc86cdc72010-04-09 20:45:04 +0000240 *-*-minix*)
241 llvm_cv_link_all_option="-Wl,-all_load"
242 llvm_cv_no_link_all_option="-Wl,-noall_load"
243 llvm_cv_os_type="Minix"
244 llvm_cv_platform_type="Unix" ;;
Sylvestre Ledru93a491b2013-07-01 08:07:52 +0000245 *-*-freebsd*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000246 llvm_cv_link_all_option="-Wl,--whole-archive"
247 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Eric Christophere62b4412007-12-01 00:34:39 +0000248 llvm_cv_os_type="FreeBSD"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000249 llvm_cv_platform_type="Unix" ;;
Sylvestre Ledru93a491b2013-07-01 08:07:52 +0000250 *-*-kfreebsd-gnu)
251 llvm_cv_link_all_option="-Wl,--whole-archive"
252 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
253 llvm_cv_os_type="GNU/kFreeBSD"
254 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000255 *-*-openbsd*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000256 llvm_cv_link_all_option="-Wl,--whole-archive"
257 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Eric Christophere62b4412007-12-01 00:34:39 +0000258 llvm_cv_os_type="OpenBSD"
Reid Spencer48b92032006-04-19 23:47:16 +0000259 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000260 *-*-netbsd*)
Reid Spencer78adb9d2007-01-20 20:43:35 +0000261 llvm_cv_link_all_option="-Wl,--whole-archive"
262 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Eric Christophere62b4412007-12-01 00:34:39 +0000263 llvm_cv_os_type="NetBSD"
Reid Spencer78adb9d2007-01-20 20:43:35 +0000264 llvm_cv_platform_type="Unix" ;;
Matthijs Kooijmanf61fd542008-06-26 10:36:58 +0000265 *-*-dragonfly*)
266 llvm_cv_link_all_option="-Wl,--whole-archive"
267 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
268 llvm_cv_os_type="DragonFly"
269 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000270 *-*-hpux*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000271 llvm_cv_link_all_option="-Wl,--whole-archive"
272 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Eric Christophere62b4412007-12-01 00:34:39 +0000273 llvm_cv_os_type="HP-UX"
Duraid Madina5ea2ba82005-05-16 05:39:00 +0000274 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000275 *-*-interix*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000276 llvm_cv_link_all_option="-Wl,--whole-archive"
277 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000278 llvm_cv_os_type="Interix"
279 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000280 *-*-linux*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000281 llvm_cv_link_all_option="-Wl,--whole-archive"
282 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000283 llvm_cv_os_type="Linux"
284 llvm_cv_platform_type="Unix" ;;
Rafael Espindola4977edd2011-12-22 14:01:18 +0000285 *-*-gnu*)
286 llvm_cv_link_all_option="-Wl,--whole-archive"
287 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
288 llvm_cv_os_type="GNU"
289 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000290 *-*-solaris*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000291 llvm_cv_link_all_option="-Wl,-z,allextract"
292 llvm_cv_no_link_all_option="-Wl,-z,defaultextract"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000293 llvm_cv_os_type="SunOS"
294 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000295 *-*-win32*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000296 llvm_cv_link_all_option="-Wl,--whole-archive"
297 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000298 llvm_cv_os_type="Win32"
299 llvm_cv_platform_type="Win32" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000300 *-*-mingw*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000301 llvm_cv_link_all_option="-Wl,--whole-archive"
302 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Eric Christophere62b4412007-12-01 00:34:39 +0000303 llvm_cv_os_type="MingW"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000304 llvm_cv_platform_type="Win32" ;;
Edward O'Callaghan8227b052009-10-12 04:57:20 +0000305 *-*-haiku*)
306 llvm_cv_link_all_option="-Wl,--whole-archive"
307 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
308 llvm_cv_os_type="Haiku"
Eric Christopherb3762a02010-03-02 05:17:21 +0000309 llvm_cv_platform_type="Unix" ;;
Anton Korobeynikov90e17e72009-08-18 00:40:33 +0000310 *-unknown-eabi*)
311 llvm_cv_link_all_option="-Wl,--whole-archive"
312 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
313 llvm_cv_os_type="Freestanding"
314 llvm_cv_platform_type="Unix" ;;
315 *-unknown-elf*)
316 llvm_cv_link_all_option="-Wl,--whole-archive"
317 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
318 llvm_cv_os_type="Freestanding"
319 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000320 *)
321 llvm_cv_link_all_option=""
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000322 llvm_cv_no_link_all_option=""
Eric Christophere62b4412007-12-01 00:34:39 +0000323 llvm_cv_os_type="Unknown"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000324 llvm_cv_platform_type="Unknown" ;;
Reid Spencer0241e382004-11-25 04:51:04 +0000325esac])
John Criswell7a3334d2003-07-22 19:13:20 +0000326
Anton Korobeynikov90e17e72009-08-18 00:40:33 +0000327AC_CACHE_CHECK([type of operating system we're going to target],
328 [llvm_cv_target_os_type],
329[case $target in
330 *-*-aix*)
331 llvm_cv_target_os_type="AIX" ;;
332 *-*-irix*)
333 llvm_cv_target_os_type="IRIX" ;;
334 *-*-cygwin*)
335 llvm_cv_target_os_type="Cygwin" ;;
336 *-*-darwin*)
337 llvm_cv_target_os_type="Darwin" ;;
Chris Lattnerc86cdc72010-04-09 20:45:04 +0000338 *-*-minix*)
339 llvm_cv_target_os_type="Minix" ;;
Sylvestre Ledru93a491b2013-07-01 08:07:52 +0000340 *-*-freebsd*)
Anton Korobeynikov90e17e72009-08-18 00:40:33 +0000341 llvm_cv_target_os_type="FreeBSD" ;;
Sylvestre Ledru93a491b2013-07-01 08:07:52 +0000342 *-*-kfreebsd-gnu)
343 llvm_cv_target_os_type="GNU/kFreeBSD" ;;
Anton Korobeynikov90e17e72009-08-18 00:40:33 +0000344 *-*-openbsd*)
345 llvm_cv_target_os_type="OpenBSD" ;;
346 *-*-netbsd*)
347 llvm_cv_target_os_type="NetBSD" ;;
348 *-*-dragonfly*)
349 llvm_cv_target_os_type="DragonFly" ;;
350 *-*-hpux*)
351 llvm_cv_target_os_type="HP-UX" ;;
352 *-*-interix*)
353 llvm_cv_target_os_type="Interix" ;;
354 *-*-linux*)
355 llvm_cv_target_os_type="Linux" ;;
Sylvestre Ledrue8235fe2012-04-05 19:34:15 +0000356 *-*-gnu*)
357 llvm_cv_target_os_type="GNU" ;;
Anton Korobeynikov90e17e72009-08-18 00:40:33 +0000358 *-*-solaris*)
359 llvm_cv_target_os_type="SunOS" ;;
360 *-*-win32*)
361 llvm_cv_target_os_type="Win32" ;;
362 *-*-mingw*)
363 llvm_cv_target_os_type="MingW" ;;
Edward O'Callaghan8227b052009-10-12 04:57:20 +0000364 *-*-haiku*)
Eric Christopherb3762a02010-03-02 05:17:21 +0000365 llvm_cv_target_os_type="Haiku" ;;
Douglas Gregorde3c9262011-07-01 22:41:06 +0000366 *-*-rtems*)
367 llvm_cv_target_os_type="RTEMS" ;;
Ivan Krasin44306e22011-08-18 22:54:21 +0000368 *-*-nacl*)
369 llvm_cv_target_os_type="NativeClient" ;;
Anton Korobeynikov90e17e72009-08-18 00:40:33 +0000370 *-unknown-eabi*)
371 llvm_cv_target_os_type="Freestanding" ;;
Alex Rosenberg93460672015-01-26 15:25:05 +0000372 *-*-ps4)
373 llvm_cv_target_os_type="PS4" ;;
Anton Korobeynikov90e17e72009-08-18 00:40:33 +0000374 *)
375 llvm_cv_target_os_type="Unknown" ;;
376esac])
377
Reid Spencer1daffa52004-08-31 01:34:10 +0000378dnl Make sure we aren't attempting to configure for an unknown system
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000379if test "$llvm_cv_os_type" = "Unknown" ; then
380 AC_MSG_ERROR([Operating system is unknown, configure can't continue])
Reid Spencer1daffa52004-08-31 01:34:10 +0000381fi
382
Reid Spencer0241e382004-11-25 04:51:04 +0000383dnl Set the "OS" Makefile variable based on the platform type so the
384dnl makefile can configure itself to specific build hosts
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000385AC_SUBST(OS,$llvm_cv_os_type)
Anton Korobeynikov90e17e72009-08-18 00:40:33 +0000386AC_SUBST(HOST_OS,$llvm_cv_os_type)
387AC_SUBST(TARGET_OS,$llvm_cv_target_os_type)
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000388
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000389dnl Set the LINKALL and NOLINKALL Makefile variables based on the platform
390AC_SUBST(LINKALL,$llvm_cv_link_all_option)
391AC_SUBST(NOLINKALL,$llvm_cv_no_link_all_option)
392
Dan Gohmana3ed0712010-08-04 16:48:36 +0000393dnl Set the "LLVM_ON_*" variables based on llvm_cv_platform_type
Michael J. Spencer447762d2010-11-29 18:16:10 +0000394dnl This is used by lib/Support to determine the basic kind of implementation
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000395dnl to use.
396case $llvm_cv_platform_type in
Eric Christophere62b4412007-12-01 00:34:39 +0000397 Unix)
398 AC_DEFINE([LLVM_ON_UNIX],[1],[Define if this is Unixish platform])
Reid Spencerd7287e02004-12-31 22:54:28 +0000399 AC_SUBST(LLVM_ON_UNIX,[1])
400 AC_SUBST(LLVM_ON_WIN32,[0])
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000401 ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000402 Win32)
403 AC_DEFINE([LLVM_ON_WIN32],[1],[Define if this is Win32ish platform])
Reid Spencerd7287e02004-12-31 22:54:28 +0000404 AC_SUBST(LLVM_ON_UNIX,[0])
405 AC_SUBST(LLVM_ON_WIN32,[1])
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000406 ;;
407esac
Reid Spencer0241e382004-11-25 04:51:04 +0000408
John Criswell7a3334d2003-07-22 19:13:20 +0000409dnl Determine what our target architecture is and configure accordingly.
410dnl This will allow Makefiles to make a distinction between the hardware and
411dnl the OS.
Reid Spencer0241e382004-11-25 04:51:04 +0000412AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch],
413[case $target in
Reid Spencer0a54a582004-12-23 21:08:52 +0000414 i?86-*) llvm_cv_target_arch="x86" ;;
Reid Spencer78d9e872004-12-28 07:56:14 +0000415 amd64-* | x86_64-*) llvm_cv_target_arch="x86_64" ;;
Reid Spencer0a54a582004-12-23 21:08:52 +0000416 sparc*-*) llvm_cv_target_arch="Sparc" ;;
417 powerpc*-*) llvm_cv_target_arch="PowerPC" ;;
Tim Northover3b0846e2014-05-24 12:50:23 +0000418 arm64*-*) llvm_cv_target_arch="AArch64" ;;
Nick Lewycky13590cb2009-04-18 18:11:26 +0000419 arm*-*) llvm_cv_target_arch="ARM" ;;
Tim Northover3b0846e2014-05-24 12:50:23 +0000420 aarch64*-*) llvm_cv_target_arch="AArch64" ;;
Simon Atanasyanc2cccd72012-10-29 19:49:45 +0000421 mips-* | mips64-*) llvm_cv_target_arch="Mips" ;;
422 mipsel-* | mips64el-*) llvm_cv_target_arch="Mips" ;;
Richard Osborneca08e062008-11-07 10:59:00 +0000423 xcore-*) llvm_cv_target_arch="XCore" ;;
Anton Korobeynikov10138002009-05-03 12:57:15 +0000424 msp430-*) llvm_cv_target_arch="MSP430" ;;
Tony Linthicum1213a7a2011-12-12 21:14:40 +0000425 hexagon-*) llvm_cv_target_arch="Hexagon" ;;
Justin Holewinskiae556d32012-05-04 20:18:50 +0000426 nvptx-*) llvm_cv_target_arch="NVPTX" ;;
Ulrich Weigand1ceebf62013-05-06 16:22:34 +0000427 s390x-*) llvm_cv_target_arch="SystemZ" ;;
Reid Spencer0a54a582004-12-23 21:08:52 +0000428 *) llvm_cv_target_arch="Unknown" ;;
Reid Spencer0241e382004-11-25 04:51:04 +0000429esac])
John Criswell7a3334d2003-07-22 19:13:20 +0000430
Reid Spencer0241e382004-11-25 04:51:04 +0000431if test "$llvm_cv_target_arch" = "Unknown" ; then
432 AC_MSG_WARN([Configuring LLVM for an unknown target archicture])
433fi
434
Gabor Greife0d58d32012-01-26 10:28:58 +0000435dnl Determine the LLVM native architecture for the target
Douglas Gregor7cbf8162009-06-17 00:42:33 +0000436case "$llvm_cv_target_arch" in
437 x86) LLVM_NATIVE_ARCH="X86" ;;
438 x86_64) LLVM_NATIVE_ARCH="X86" ;;
439 *) LLVM_NATIVE_ARCH="$llvm_cv_target_arch" ;;
440esac
Mikhail Glushenkovd871cbc2009-07-03 03:52:07 +0000441
Reid Spencer0241e382004-11-25 04:51:04 +0000442dnl Define a substitution, ARCH, for the target architecture
443AC_SUBST(ARCH,$llvm_cv_target_arch)
NAKAMURA Takumi84e85302014-02-09 16:36:42 +0000444AC_SUBST(LLVM_NATIVE_ARCH,$LLVM_NATIVE_ARCH)
Reid Spencer0241e382004-11-25 04:51:04 +0000445
Danil Malyshev7c5db452012-05-17 21:07:47 +0000446dnl Determine what our host architecture.
447dnl This will allow MCJIT regress tests runs only for supported
448dnl platforms.
449case $host in
450 i?86-*) host_arch="x86" ;;
451 amd64-* | x86_64-*) host_arch="x86_64" ;;
452 sparc*-*) host_arch="Sparc" ;;
453 powerpc*-*) host_arch="PowerPC" ;;
Tim Northover3b0846e2014-05-24 12:50:23 +0000454 arm64*-*) host_arch="AArch64" ;;
Danil Malyshev7c5db452012-05-17 21:07:47 +0000455 arm*-*) host_arch="ARM" ;;
Tim Northover3b0846e2014-05-24 12:50:23 +0000456 aarch64*-*) host_arch="AArch64" ;;
Simon Atanasyanc2cccd72012-10-29 19:49:45 +0000457 mips-* | mips64-*) host_arch="Mips" ;;
458 mipsel-* | mips64el-*) host_arch="Mips" ;;
Danil Malyshev7c5db452012-05-17 21:07:47 +0000459 xcore-*) host_arch="XCore" ;;
460 msp430-*) host_arch="MSP430" ;;
461 hexagon-*) host_arch="Hexagon" ;;
Ulrich Weigand1ceebf62013-05-06 16:22:34 +0000462 s390x-*) host_arch="SystemZ" ;;
Danil Malyshev7c5db452012-05-17 21:07:47 +0000463 *) host_arch="Unknown" ;;
464esac
465
466if test "$host_arch" = "Unknown" ; then
467 AC_MSG_WARN([Configuring LLVM for an unknown host archicture])
468fi
469
470AC_SUBST(HOST_ARCH,$host_arch)
471
Gabor Greife0d58d32012-01-26 10:28:58 +0000472dnl Check for build platform executable suffix if we're cross-compiling
Reid Spencer0aa9d002006-07-26 21:14:56 +0000473if test "$cross_compiling" = yes; then
Eric Christophere62b4412007-12-01 00:34:39 +0000474 AC_SUBST(LLVM_CROSS_COMPILING, [1])
Reid Spencer0aa9d002006-07-26 21:14:56 +0000475 AC_BUILD_EXEEXT
Jim Grosbach009db892008-10-02 22:56:44 +0000476 ac_build_prefix=${build_alias}-
477 AC_CHECK_PROG(BUILD_CXX, ${ac_build_prefix}g++, ${ac_build_prefix}g++)
478 if test -z "$BUILD_CXX"; then
479 AC_CHECK_PROG(BUILD_CXX, g++, g++)
480 if test -z "$BUILD_CXX"; then
481 AC_CHECK_PROG(BUILD_CXX, c++, c++, , , /usr/ucb/c++)
482 fi
483 fi
Reid Spencer0aa9d002006-07-26 21:14:56 +0000484else
485 AC_SUBST(LLVM_CROSS_COMPILING, [0])
486fi
487
Dan Gohmande75469c2010-08-04 16:25:01 +0000488dnl Check to see if there's a .svn or .git directory indicating that this
489dnl build is being done from a checkout. This sets up several defaults for
490dnl the command line switches. When we build with a checkout directory,
Nick Lewycky9a196c02009-04-01 04:39:25 +0000491dnl we get a debug with assertions turned on. Without, we assume a source
492dnl release and we get an optimized build without assertions.
493dnl See --enable-optimized and --enable-assertions below
Dan Gohmande75469c2010-08-04 16:25:01 +0000494if test -d ".svn" -o -d "${srcdir}/.svn" -o -d ".git" -o -d "${srcdir}/.git"; then
Reid Spencerb65ade82006-04-07 16:01:51 +0000495 cvsbuild="yes"
496 optimize="no"
Reid Spencerb65ade82006-04-07 16:01:51 +0000497 AC_SUBST(CVSBUILD,[[CVSBUILD=1]])
498else
499 cvsbuild="no"
500 optimize="yes"
Reid Spencerb65ade82006-04-07 16:01:51 +0000501fi
502
Reid Spencer0241e382004-11-25 04:51:04 +0000503dnl===-----------------------------------------------------------------------===
504dnl===
505dnl=== SECTION 3: Command line arguments for the configure script.
506dnl===
507dnl===-----------------------------------------------------------------------===
508
Eric Christopher1094ded2011-11-11 22:51:42 +0000509dnl --enable-libcpp : check whether or not to use libc++ on the command line
510AC_ARG_ENABLE(libcpp,
511 AS_HELP_STRING([--enable-libcpp],
512 [Use libc++ if available (default is NO)]),,
513 enableval=default)
514case "$enableval" in
515 yes) AC_SUBST(ENABLE_LIBCPP,[1]) ;;
516 no) AC_SUBST(ENABLE_LIBCPP,[0]) ;;
517 default) AC_SUBST(ENABLE_LIBCPP,[0]);;
518 *) AC_MSG_ERROR([Invalid setting for --enable-libcpp. Use "yes" or "no"]) ;;
519esac
520
Chandler Carruth7206eae2014-01-15 19:19:13 +0000521dnl Check both GCC and Clang for sufficiently modern versions. These checks can
522dnl be bypassed by passing a flag if necessary on a platform. We have to do
523dnl these checks here so that we have the configuration of the standard C++
524dnl library finished.
525AC_ARG_ENABLE(compiler-version-checks,
526 AS_HELP_STRING([--enable-compiler-version-checks],
527 [Check the version of the host compiler (default is YES)]),,
528 enableval=default)
529case "$enableval" in
530 no)
531 ;;
532 yes|default)
533 AC_LANG_PUSH([C++])
534 case "$llvm_cv_cxx_compiler" in
535 clang)
536 AC_MSG_CHECKING([whether Clang is new enough])
537 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
538#if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 1)
539#error This version of Clang is too old to build LLVM
540#endif
541]])],
542 [AC_MSG_RESULT([yes])],
543 [AC_MSG_RESULT([no])
544 AC_MSG_ERROR([
545The selected Clang compiler is not new enough to build LLVM. Please upgrade to
546Clang 3.1. You may pass --disable-compiler-version-checks to configure to
547bypass these sanity checks.])])
548
549 dnl Note that libstdc++4.6 is known broken for C++11 builds. The errors
550 dnl are sometimes deeply confusing though. Here we test for an obvious
551 dnl incomplete feature in 4.6's standard library that was completed in
Chandler Carrutheba44ea2014-01-15 21:21:48 +0000552 dnl 4.7's. We also have to disable this test if 'ENABLE_LIBCPP' is set
553 dnl because the enable flags don't actually fix CXXFLAGS, they rely on
554 dnl that happening in the Makefile.
555 if test "$ENABLE_LIBCPP" -eq 0 ; then
556 AC_MSG_CHECKING([whether Clang will select a modern C++ standard library])
557 llvm_cv_old_cxxflags="$CXXFLAGS"
558 CXXFLAGS="$CXXFLAGS -std=c++0x"
559 AC_LINK_IFELSE([AC_LANG_SOURCE([[
Chandler Carruth7206eae2014-01-15 19:19:13 +0000560#include <atomic>
561std::atomic<float> x(0.0f);
562int main() { return (float)x; }
563]])],
Chandler Carrutheba44ea2014-01-15 21:21:48 +0000564 [AC_MSG_RESULT([yes])],
565 [AC_MSG_RESULT([no])
566 AC_MSG_ERROR([
Chandler Carruth7206eae2014-01-15 19:19:13 +0000567We detected a missing feature in the standard C++ library that was known to be
568missing in libstdc++4.6 and implemented in libstdc++4.7. There are numerous
569C++11 problems with 4.6's library, and we don't support GCCs or libstdc++ older
570than 4.7. You will need to update your system and ensure Clang uses the newer
571standard library.
572
573If this error is incorrect or you need to force things to work, you may pass
574'--disable-compiler-version-checks' to configure to bypass this test.])])
Chandler Carrutheba44ea2014-01-15 21:21:48 +0000575 CXXFLAGS="$llvm_cv_old_cxxflags"
576 fi
Chandler Carruth7206eae2014-01-15 19:19:13 +0000577 ;;
578 gcc)
579 AC_MSG_CHECKING([whether GCC is new enough])
580 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
581#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7)
582#error This version of GCC is too old to build LLVM
583#endif
584]])],
585 [AC_MSG_RESULT([yes])],
586 [AC_MSG_RESULT([no])
587 AC_MSG_ERROR([
588The selected GCC C++ compiler is not new enough to build LLVM. Please upgrade
589to GCC 4.7. You may pass --disable-compiler-version-checks to configure to
590bypass these sanity checks.])])
591 ;;
592 unknown)
593 ;;
594 esac
595 AC_LANG_POP([C++])
596 ;;
597 *)
598 AC_MSG_ERROR([Invalid setting for --enable-compiler-version-checks. Use "yes" or "no"])
599 ;;
600esac
601
Chandler Carruthbbae5122014-03-01 03:33:08 +0000602dnl --enable-cxx1y : check whether or not to use -std=c++1y on the command line
603AC_ARG_ENABLE(cxx1y,
604 AS_HELP_STRING([--enable-cxx1y],
605 [Use c++1y if available (default is NO)]),,
Eric Christopher04e35972012-08-03 19:47:14 +0000606 enableval=default)
607case "$enableval" in
Chandler Carruthbbae5122014-03-01 03:33:08 +0000608 yes) AC_SUBST(ENABLE_CXX1Y,[1]) ;;
609 no) AC_SUBST(ENABLE_CXX1Y,[0]) ;;
610 default) AC_SUBST(ENABLE_CXX1Y,[0]);;
611 *) AC_MSG_ERROR([Invalid setting for --enable-cxx1y. Use "yes" or "no"]) ;;
Eric Christopher04e35972012-08-03 19:47:14 +0000612esac
613
Eric Christopherc64a54e2014-03-05 00:43:38 +0000614dnl --enable-split-dwarf : check whether or not to use -gsplit-dwarf on the command
Eric Christopherf1bd7702013-06-25 01:12:25 +0000615dnl line
616AC_ARG_ENABLE(split-dwarf,
617 AS_HELP_STRING([--enable-split-dwarf],
618 [Use split-dwarf if available (default is NO)]),,
619 enableval=default)
620case "$enableval" in
621 yes) AC_SUBST(ENABLE_SPLIT_DWARF,[1]) ;;
622 no) AC_SUBST(ENABLE_SPLIT_DWARF,[0]) ;;
623 default) AC_SUBST(ENABLE_SPLIT_DWARF,[0]);;
624 *) AC_MSG_ERROR([Invalid setting for --enable-split-dwarf. Use "yes" or "no"]) ;;
625esac
626
Roman Divackyf2bb66b2012-12-13 16:07:19 +0000627dnl --enable-clang-arcmt: check whether to enable clang arcmt
628clang_arcmt="yes"
629AC_ARG_ENABLE(clang-arcmt,
630 AS_HELP_STRING([--enable-clang-arcmt],
631 [Enable building of clang ARCMT (default is YES)]),
632 clang_arcmt="$enableval",
633 enableval="yes")
634case "$enableval" in
635 yes) AC_SUBST(ENABLE_CLANG_ARCMT,[1]) ;;
636 no) AC_SUBST(ENABLE_CLANG_ARCMT,[0]) ;;
637 default) AC_SUBST(ENABLE_CLANG_ARCMT,[1]);;
638 *) AC_MSG_ERROR([Invalid setting for --enable-clang-arcmt. Use "yes" or "no"]) ;;
639esac
640
Rafael Espindolae33f06c2014-03-10 16:58:35 +0000641dnl --enable-clang-plugin-support: check whether to enable plugins in clang
642clang_plugin_support="yes"
643AC_ARG_ENABLE(clang-plugin-support,
644 AS_HELP_STRING([--enable-clang-plugin-support],
645 [Enable plugin support in clang (default is YES)]),
646 clang_plugin_support="$enableval",
647 enableval="yes")
648case "$enableval" in
649 yes) AC_SUBST(CLANG_PLUGIN_SUPPORT,[1]) ;;
650 no) AC_SUBST(CLANG_PLUGIN_SUPPORT,[0]) ;;
651 default) AC_SUBST(CLANG_PLUGIN_SUPPORT,[1]);;
652 *) AC_MSG_ERROR([Invalid setting for --enable-clang-plugin-support. Use "yes" or "no"]) ;;
653esac
654
Roman Divackyf2bb66b2012-12-13 16:07:19 +0000655dnl --enable-clang-static-analyzer: check whether to enable static-analyzer
656clang_static_analyzer="yes"
657AC_ARG_ENABLE(clang-static-analyzer,
658 AS_HELP_STRING([--enable-clang-static-analyzer],
659 [Enable building of clang Static Analyzer (default is YES)]),
660 clang_static_analyzer="$enableval",
661 enableval="yes")
662case "$enableval" in
663 yes) AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[1]) ;;
Peter Zotov668f9672014-10-30 08:29:45 +0000664 no)
Jordan Rose23fc6f32013-08-22 15:49:53 +0000665 if test ${clang_arcmt} != "no" ; then
666 AC_MSG_ERROR([Cannot enable clang ARC Migration Tool while disabling static analyzer.])
667 fi
Peter Zotov668f9672014-10-30 08:29:45 +0000668 AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[0])
Jordan Rose23fc6f32013-08-22 15:49:53 +0000669 ;;
Roman Divackyf2bb66b2012-12-13 16:07:19 +0000670 default) AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[1]);;
671 *) AC_MSG_ERROR([Invalid setting for --enable-clang-static-analyzer. Use "yes" or "no"]) ;;
672esac
673
Reid Spencer0241e382004-11-25 04:51:04 +0000674dnl --enable-optimized : check whether they want to do an optimized build:
Reid Spencerb65ade82006-04-07 16:01:51 +0000675AC_ARG_ENABLE(optimized, AS_HELP_STRING(
Nick Lewycky9ab256ac2009-06-06 06:24:44 +0000676 --enable-optimized,[Compile with optimizations enabled (default is NO)]),,enableval=$optimize)
Reid Spencer0241e382004-11-25 04:51:04 +0000677if test ${enableval} = "no" ; then
678 AC_SUBST(ENABLE_OPTIMIZED,[[]])
679else
680 AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
681fi
682
David Greene80f48bd2009-04-17 14:49:22 +0000683dnl --enable-profiling : check whether they want to do a profile build:
684AC_ARG_ENABLE(profiling, AS_HELP_STRING(
Nick Lewycky9ab256ac2009-06-06 06:24:44 +0000685 --enable-profiling,[Compile with profiling enabled (default is NO)]),,enableval="no")
David Greene80f48bd2009-04-17 14:49:22 +0000686if test ${enableval} = "no" ; then
687 AC_SUBST(ENABLE_PROFILING,[[]])
688else
689 AC_SUBST(ENABLE_PROFILING,[[ENABLE_PROFILING=1]])
690fi
691
Reid Spencerb65ade82006-04-07 16:01:51 +0000692dnl --enable-assertions : check whether they want to turn on assertions or not:
693AC_ARG_ENABLE(assertions,AS_HELP_STRING(
Nick Lewycky9ab256ac2009-06-06 06:24:44 +0000694 --enable-assertions,[Compile with assertion checks enabled (default is YES)]),, enableval="yes")
Reid Spencerfa423e92006-04-09 20:42:14 +0000695if test ${enableval} = "yes" ; then
696 AC_SUBST(DISABLE_ASSERTIONS,[[]])
Reid Spencerb65ade82006-04-07 16:01:51 +0000697else
Reid Spencerfa423e92006-04-09 20:42:14 +0000698 AC_SUBST(DISABLE_ASSERTIONS,[[DISABLE_ASSERTIONS=1]])
Reid Spencerb65ade82006-04-07 16:01:51 +0000699fi
700
Eric Christopher84864012012-08-03 19:58:20 +0000701dnl --enable-werror : check whether we want Werror on by default
702AC_ARG_ENABLE(werror,AS_HELP_STRING(
703 --enable-werror,[Compile with -Werror enabled (default is NO)]),, enableval="no")
704case "$enableval" in
705 yes) AC_SUBST(ENABLE_WERROR,[1]) ;;
706 no) AC_SUBST(ENABLE_WERROR,[0]) ;;
707 default) AC_SUBST(ENABLE_WERROR,[0]);;
708 *) AC_MSG_ERROR([Invalid setting for --enable-werror. Use "yes" or "no"]) ;;
709esac
710
David Greenecbc8ddf2007-06-28 19:36:08 +0000711dnl --enable-expensive-checks : check whether they want to turn on expensive debug checks:
712AC_ARG_ENABLE(expensive-checks,AS_HELP_STRING(
Nick Lewycky9ab256ac2009-06-06 06:24:44 +0000713 --enable-expensive-checks,[Compile with expensive debug checks enabled (default is NO)]),, enableval="no")
David Greenecbc8ddf2007-06-28 19:36:08 +0000714if test ${enableval} = "yes" ; then
715 AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[ENABLE_EXPENSIVE_CHECKS=1]])
716 AC_SUBST(EXPENSIVE_CHECKS,[[yes]])
717else
718 AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[]])
719 AC_SUBST(EXPENSIVE_CHECKS,[[no]])
720fi
721
Reid Spencer4b8067f2006-11-17 03:32:33 +0000722dnl --enable-debug-runtime : should runtime libraries have debug symbols?
723AC_ARG_ENABLE(debug-runtime,
Nick Lewycky9ab256ac2009-06-06 06:24:44 +0000724 AS_HELP_STRING(--enable-debug-runtime,[Build runtime libs with debug symbols (default is NO)]),,enableval=no)
Reid Spencer4b8067f2006-11-17 03:32:33 +0000725if test ${enableval} = "no" ; then
726 AC_SUBST(DEBUG_RUNTIME,[[]])
727else
728 AC_SUBST(DEBUG_RUNTIME,[[DEBUG_RUNTIME=1]])
729fi
730
Jeffrey Yasskinc3273dc2009-09-27 17:47:29 +0000731dnl --enable-debug-symbols : should even optimized compiler libraries
732dnl have debug symbols?
733AC_ARG_ENABLE(debug-symbols,
734 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)
735if test ${enableval} = "no" ; then
736 AC_SUBST(DEBUG_SYMBOLS,[[]])
737else
738 AC_SUBST(DEBUG_SYMBOLS,[[DEBUG_SYMBOLS=1]])
739fi
740
Daniel Dunbarc9e4ff62012-08-14 18:14:20 +0000741dnl --enable-keep-symbols : do not strip installed executables
742AC_ARG_ENABLE(keep-symbols,
743 AS_HELP_STRING(--enable-keep-symbols,[Do not strip installed executables)]),,enableval=no)
744if test ${enableval} = "no" ; then
745 AC_SUBST(KEEP_SYMBOLS,[[]])
746else
747 AC_SUBST(KEEP_SYMBOLS,[[KEEP_SYMBOLS=1]])
748fi
749
Reid Spencer0241e382004-11-25 04:51:04 +0000750dnl --enable-jit: check whether they want to enable the jit
751AC_ARG_ENABLE(jit,
752 AS_HELP_STRING(--enable-jit,
753 [Enable Just In Time Compiling (default is YES)]),,
754 enableval=default)
755if test ${enableval} = "no"
756then
757 AC_SUBST(JIT,[[]])
758else
Reid Spencer9dc4ba52004-11-25 07:28:19 +0000759 case "$llvm_cv_target_arch" in
Jakob Stoklund Olesen526e8032009-08-02 17:32:37 +0000760 x86) AC_SUBST(TARGET_HAS_JIT,1) ;;
761 Sparc) AC_SUBST(TARGET_HAS_JIT,0) ;;
762 PowerPC) AC_SUBST(TARGET_HAS_JIT,1) ;;
763 x86_64) AC_SUBST(TARGET_HAS_JIT,1) ;;
Eric Christopherd8530f32009-09-14 16:38:49 +0000764 ARM) AC_SUBST(TARGET_HAS_JIT,1) ;;
Bruno Cardoso Lopesd1d9c782011-07-21 16:28:51 +0000765 Mips) AC_SUBST(TARGET_HAS_JIT,1) ;;
Jakob Stoklund Olesen526e8032009-08-02 17:32:37 +0000766 XCore) AC_SUBST(TARGET_HAS_JIT,0) ;;
767 MSP430) AC_SUBST(TARGET_HAS_JIT,0) ;;
Tony Linthicum1213a7a2011-12-12 21:14:40 +0000768 Hexagon) AC_SUBST(TARGET_HAS_JIT,0) ;;
Justin Holewinskiae556d32012-05-04 20:18:50 +0000769 NVPTX) AC_SUBST(TARGET_HAS_JIT,0) ;;
Ulrich Weigand1ceebf62013-05-06 16:22:34 +0000770 SystemZ) AC_SUBST(TARGET_HAS_JIT,1) ;;
Jakob Stoklund Olesen526e8032009-08-02 17:32:37 +0000771 *) AC_SUBST(TARGET_HAS_JIT,0) ;;
Reid Spencer0241e382004-11-25 04:51:04 +0000772 esac
773fi
774
Tim Northover3b0846e2014-05-24 12:50:23 +0000775TARGETS_WITH_JIT="ARM AArch64 Mips PowerPC SystemZ X86"
NAKAMURA Takumi84e85302014-02-09 16:36:42 +0000776AC_SUBST(TARGETS_WITH_JIT,$TARGETS_WITH_JIT)
777
Rafael Espindola7ac506d2010-11-12 19:24:06 +0000778dnl Allow enablement of building and installing docs
779AC_ARG_ENABLE(docs,
780 AS_HELP_STRING([--enable-docs],
781 [Build documents (default is YES)]),,
782 enableval=default)
783case "$enableval" in
784 yes) AC_SUBST(ENABLE_DOCS,[1]) ;;
785 no) AC_SUBST(ENABLE_DOCS,[0]) ;;
786 default) AC_SUBST(ENABLE_DOCS,[1]) ;;
787 *) AC_MSG_ERROR([Invalid setting for --enable-docs. Use "yes" or "no"]) ;;
788esac
789
Reid Spencer0194c9a2004-11-29 04:56:35 +0000790dnl Allow enablement of doxygen generated documentation
791AC_ARG_ENABLE(doxygen,
792 AS_HELP_STRING([--enable-doxygen],
793 [Build doxygen documentation (default is NO)]),,
794 enableval=default)
795case "$enableval" in
796 yes) AC_SUBST(ENABLE_DOXYGEN,[1]) ;;
797 no) AC_SUBST(ENABLE_DOXYGEN,[0]) ;;
798 default) AC_SUBST(ENABLE_DOXYGEN,[0]) ;;
799 *) AC_MSG_ERROR([Invalid setting for --enable-doxygen. Use "yes" or "no"]) ;;
800esac
801
Reid Spencerf85fabeb2005-08-24 10:07:20 +0000802dnl Allow disablement of threads
803AC_ARG_ENABLE(threads,
804 AS_HELP_STRING([--enable-threads],
805 [Use threads if available (default is YES)]),,
Reid Spencerd549edc2006-11-05 17:08:18 +0000806 enableval=default)
Reid Spencerf85fabeb2005-08-24 10:07:20 +0000807case "$enableval" in
Dylan Noblesmithefddf202011-11-28 00:48:58 +0000808 yes) AC_SUBST(LLVM_ENABLE_THREADS,[1]) ;;
809 no) AC_SUBST(LLVM_ENABLE_THREADS,[0]) ;;
810 default) AC_SUBST(LLVM_ENABLE_THREADS,[1]) ;;
Reid Spencerf85fabeb2005-08-24 10:07:20 +0000811 *) AC_MSG_ERROR([Invalid setting for --enable-threads. Use "yes" or "no"]) ;;
812esac
Dylan Noblesmithefddf202011-11-28 00:48:58 +0000813AC_DEFINE_UNQUOTED([LLVM_ENABLE_THREADS],$LLVM_ENABLE_THREADS,
814 [Define if threads enabled])
Reid Spencerf85fabeb2005-08-24 10:07:20 +0000815
NAKAMURA Takumic6fce172010-12-29 03:59:03 +0000816dnl Allow disablement of pthread.h
817AC_ARG_ENABLE(pthreads,
818 AS_HELP_STRING([--enable-pthreads],
819 [Use pthreads if available (default is YES)]),,
820 enableval=default)
821case "$enableval" in
822 yes) AC_SUBST(ENABLE_PTHREADS,[1]) ;;
823 no) AC_SUBST(ENABLE_PTHREADS,[0]) ;;
824 default) AC_SUBST(ENABLE_PTHREADS,[1]) ;;
825 *) AC_MSG_ERROR([Invalid setting for --enable-pthreads. Use "yes" or "no"]) ;;
826esac
827
Alexey Samsonov2fb337e2013-04-23 08:28:39 +0000828dnl Allow disablement of zlib
829AC_ARG_ENABLE(zlib,
830 AS_HELP_STRING([--enable-zlib],
831 [Use zlib for compression/decompression if
832 available (default is YES)]),,
833 enableval=default)
834case "$enableval" in
835 yes) AC_SUBST(LLVM_ENABLE_ZLIB,[1]) ;;
836 no) AC_SUBST(LLVM_ENABLE_ZLIB,[0]) ;;
837 default) AC_SUBST(LLVM_ENABLE_ZLIB,[1]) ;;
838 *) AC_MSG_ERROR([Invalid setting for --enable-zlib. Use "yes" or "no"]) ;;
839esac
840AC_DEFINE_UNQUOTED([LLVM_ENABLE_ZLIB],$LLVM_ENABLE_ZLIB,
841 [Define if zlib is enabled])
842
Nick Lewycky7db7eb62009-02-19 06:18:24 +0000843dnl Allow building without position independent code
Reid Spencer05a1fe52006-12-16 22:07:52 +0000844AC_ARG_ENABLE(pic,
845 AS_HELP_STRING([--enable-pic],
Nick Lewycky7db7eb62009-02-19 06:18:24 +0000846 [Build LLVM with Position Independent Code (default is YES)]),,
Reid Spencer05a1fe52006-12-16 22:07:52 +0000847 enableval=default)
848case "$enableval" in
849 yes) AC_SUBST(ENABLE_PIC,[1]) ;;
850 no) AC_SUBST(ENABLE_PIC,[0]) ;;
Nick Lewycky7db7eb62009-02-19 06:18:24 +0000851 default) AC_SUBST(ENABLE_PIC,[1]) ;;
Reid Spencer05a1fe52006-12-16 22:07:52 +0000852 *) AC_MSG_ERROR([Invalid setting for --enable-pic. Use "yes" or "no"]) ;;
853esac
854AC_DEFINE_UNQUOTED([ENABLE_PIC],$ENABLE_PIC,
855 [Define if position independent code is enabled])
856
Jeffrey Yasskin6b718f72010-02-25 06:34:33 +0000857dnl Allow building a shared library and linking tools against it.
858AC_ARG_ENABLE(shared,
859 AS_HELP_STRING([--enable-shared],
860 [Build a shared library and link tools against it (default is NO)]),,
861 enableval=default)
862case "$enableval" in
863 yes) AC_SUBST(ENABLE_SHARED,[1]) ;;
864 no) AC_SUBST(ENABLE_SHARED,[0]) ;;
865 default) AC_SUBST(ENABLE_SHARED,[0]) ;;
866 *) AC_MSG_ERROR([Invalid setting for --enable-shared. Use "yes" or "no"]) ;;
867esac
868
NAKAMURA Takumi495afdf2010-12-29 03:59:14 +0000869dnl Allow libstdc++ is embedded in LLVM.dll.
870AC_ARG_ENABLE(embed-stdcxx,
871 AS_HELP_STRING([--enable-embed-stdcxx],
NAKAMURA Takumid5a9a3a2011-10-13 18:04:52 +0000872 [Build a shared library with embedded libstdc++ for Win32 DLL (default is NO)]),,
NAKAMURA Takumi495afdf2010-12-29 03:59:14 +0000873 enableval=default)
874case "$enableval" in
875 yes) AC_SUBST(ENABLE_EMBED_STDCXX,[1]) ;;
876 no) AC_SUBST(ENABLE_EMBED_STDCXX,[0]) ;;
NAKAMURA Takumid5a9a3a2011-10-13 18:04:52 +0000877 default) AC_SUBST(ENABLE_EMBED_STDCXX,[0]) ;;
NAKAMURA Takumi495afdf2010-12-29 03:59:14 +0000878 *) AC_MSG_ERROR([Invalid setting for --enable-embed-stdcxx. Use "yes" or "no"]) ;;
879esac
880
Daniel Dunbardac18242010-05-10 20:11:56 +0000881dnl Enable embedding timestamp information into build.
882AC_ARG_ENABLE(timestamps,
883 AS_HELP_STRING([--enable-timestamps],
884 [Enable embedding timestamp information in build (default is YES)]),,
885 enableval=default)
886case "$enableval" in
887 yes) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;;
888 no) AC_SUBST(ENABLE_TIMESTAMPS,[0]) ;;
889 default) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;;
890 *) AC_MSG_ERROR([Invalid setting for --enable-timestamps. Use "yes" or "no"]) ;;
891esac
892AC_DEFINE_UNQUOTED([ENABLE_TIMESTAMPS],$ENABLE_TIMESTAMPS,
Gabor Greif1e718962012-07-12 13:05:12 +0000893 [Define if timestamp information (e.g., __DATE__) is allowed])
Daniel Dunbardac18242010-05-10 20:11:56 +0000894
Daniel Dunbareb6c7082013-08-30 20:39:21 +0000895dnl Enable support for showing backtraces.
896AC_ARG_ENABLE(backtraces, AS_HELP_STRING(
897 [--enable-backtraces],
898 [Enable embedding backtraces on crash (default is YES)]),
899 [case "$enableval" in
900 yes) llvm_cv_enable_backtraces="yes" ;;
901 no) llvm_cv_enable_backtraces="no" ;;
902 *) AC_MSG_ERROR([Invalid setting for --enable-backtraces. Use "yes" or "no"]) ;;
903 esac],
904 llvm_cv_enable_backtraces="yes")
905if test "$llvm_cv_enable_backtraces" = "yes" ; then
906 AC_DEFINE([ENABLE_BACKTRACES],[1],
907 [Define if you want backtraces on crash])
908fi
Eric Christopher9fafe072012-09-21 23:03:29 +0000909
Daniel Dunbareb6c7082013-08-30 20:39:21 +0000910dnl Enable installing platform specific signal handling overrides, for improved
911dnl CrashRecovery support or interaction with crash reporting software. This
912dnl support may be inappropriate for some clients embedding LLVM as a library.
913AC_ARG_ENABLE(crash-overrides, AS_HELP_STRING(
914 [--enable-crash-overrides],
915 [Enable crash handling overrides (default is YES)]),
916 [case "$enableval" in
917 yes) llvm_cv_enable_crash_overrides="yes" ;;
918 no) llvm_cv_enable_crash_overrides="no" ;;
919 *) AC_MSG_ERROR([Invalid setting for --enable-crash-overrides. Use "yes" or "no"]) ;;
920 esac],
921 llvm_cv_enable_crash_overrides="yes")
922if test "$llvm_cv_enable_crash_overrides" = "yes" ; then
923 AC_DEFINE([ENABLE_CRASH_OVERRIDES],[1],
924 [Define to enable crash handling overrides])
925fi
Eric Christopher9fafe072012-09-21 23:03:29 +0000926
NAKAMURA Takumi84e85302014-02-09 16:36:42 +0000927dnl List all possible targets
Tim Northover3b0846e2014-05-24 12:50:23 +0000928ALL_TARGETS="X86 Sparc PowerPC ARM AArch64 Mips XCore MSP430 CppBackend NVPTX Hexagon SystemZ R600"
NAKAMURA Takumi84e85302014-02-09 16:36:42 +0000929AC_SUBST(ALL_TARGETS,$ALL_TARGETS)
930
Reid Spencer47428042005-04-22 07:27:28 +0000931dnl Allow specific targets to be specified for building (or not)
932TARGETS_TO_BUILD=""
Evan Cheng5df72aa2006-07-06 07:46:33 +0000933AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-targets],
Jeffrey Yasskin42a49df2009-09-23 17:05:42 +0000934 [Build specific host targets: all or target1,target2,... Valid targets are:
Tim Northover00ed9962014-03-29 10:18:08 +0000935 host, x86, x86_64, sparc, powerpc, arm64, arm, aarch64, mips, hexagon,
Rafael Espindolaf6474d22013-05-22 00:35:47 +0000936 xcore, msp430, nvptx, systemz, r600, and cpp (default=all)]),,
Reid Spencere482ca82005-04-22 17:02:18 +0000937 enableval=all)
Jeffrey Yasskin42a49df2009-09-23 17:05:42 +0000938if test "$enableval" = host-only ; then
939 enableval=host
940fi
Reid Spencere482ca82005-04-22 17:02:18 +0000941case "$enableval" in
NAKAMURA Takumi84e85302014-02-09 16:36:42 +0000942 all) TARGETS_TO_BUILD="$ALL_TARGETS" ;;
Reid Spencere482ca82005-04-22 17:02:18 +0000943 *)for a_target in `echo $enableval|sed -e 's/,/ /g' ` ; do
944 case "$a_target" in
Jakob Stoklund Olesen526e8032009-08-02 17:32:37 +0000945 x86) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
946 x86_64) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
947 sparc) TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;;
948 powerpc) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
Tim Northover3b0846e2014-05-24 12:50:23 +0000949 aarch64) TARGETS_TO_BUILD="AArch64 $TARGETS_TO_BUILD" ;;
950 arm64) TARGETS_TO_BUILD="AArch64 $TARGETS_TO_BUILD" ;;
Jakob Stoklund Olesen526e8032009-08-02 17:32:37 +0000951 arm) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
952 mips) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
Rafael Espindolae46f0962011-12-28 17:08:00 +0000953 mipsel) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
Simon Atanasyanc2cccd72012-10-29 19:49:45 +0000954 mips64) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
955 mips64el) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
Jakob Stoklund Olesen526e8032009-08-02 17:32:37 +0000956 xcore) TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
957 msp430) TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
Jakob Stoklund Olesen526e8032009-08-02 17:32:37 +0000958 cpp) TARGETS_TO_BUILD="CppBackend $TARGETS_TO_BUILD" ;;
Tony Linthicum1213a7a2011-12-12 21:14:40 +0000959 hexagon) TARGETS_TO_BUILD="Hexagon $TARGETS_TO_BUILD" ;;
Justin Holewinskiae556d32012-05-04 20:18:50 +0000960 nvptx) TARGETS_TO_BUILD="NVPTX $TARGETS_TO_BUILD" ;;
Ulrich Weigand1ceebf62013-05-06 16:22:34 +0000961 systemz) TARGETS_TO_BUILD="SystemZ $TARGETS_TO_BUILD" ;;
Rafael Espindolaf6474d22013-05-22 00:35:47 +0000962 r600) TARGETS_TO_BUILD="R600 $TARGETS_TO_BUILD" ;;
Jeffrey Yasskin42a49df2009-09-23 17:05:42 +0000963 host) case "$llvm_cv_target_arch" in
964 x86) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
965 x86_64) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
966 Sparc) TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;;
967 PowerPC) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
Tim Northover3b0846e2014-05-24 12:50:23 +0000968 AArch64) TARGETS_TO_BUILD="AArch64 $TARGETS_TO_BUILD" ;;
Jeffrey Yasskin42a49df2009-09-23 17:05:42 +0000969 ARM) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
970 Mips) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
Jeffrey Yasskin42a49df2009-09-23 17:05:42 +0000971 XCore) TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
972 MSP430) TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
Tony Linthicum1213a7a2011-12-12 21:14:40 +0000973 Hexagon) TARGETS_TO_BUILD="Hexagon $TARGETS_TO_BUILD" ;;
Justin Holewinskiae556d32012-05-04 20:18:50 +0000974 NVPTX) TARGETS_TO_BUILD="NVPTX $TARGETS_TO_BUILD" ;;
Ulrich Weigand1ceebf62013-05-06 16:22:34 +0000975 SystemZ) TARGETS_TO_BUILD="SystemZ $TARGETS_TO_BUILD" ;;
Jeffrey Yasskin42a49df2009-09-23 17:05:42 +0000976 *) AC_MSG_ERROR([Can not set target to build]) ;;
977 esac ;;
Reid Spencere482ca82005-04-22 17:02:18 +0000978 *) AC_MSG_ERROR([Unrecognized target $a_target]) ;;
979 esac
Eric Christophere62b4412007-12-01 00:34:39 +0000980 done
Reid Spencere482ca82005-04-22 17:02:18 +0000981 ;;
982esac
Victor Oliveira9d4b8f52012-08-09 01:13:59 +0000983
984AC_ARG_ENABLE([experimental-targets],AS_HELP_STRING([--enable-experimental-targets],
985 [Build experimental host targets: disable or target1,target2,...
986 (default=disable)]),,
987 enableval=disable)
988
989if test ${enableval} != "disable"
990then
991 TARGETS_TO_BUILD="$enableval $TARGETS_TO_BUILD"
992fi
993
Reid Spencer47428042005-04-22 07:27:28 +0000994AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD)
995
Gabor Greife0d58d32012-01-26 10:28:58 +0000996dnl Determine whether we are building LLVM support for the native architecture.
997dnl If so, define LLVM_NATIVE_ARCH to that LLVM target.
Douglas Gregor7cbf8162009-06-17 00:42:33 +0000998for a_target in $TARGETS_TO_BUILD; do
999 if test "$a_target" = "$LLVM_NATIVE_ARCH"; then
Eric Christophere7a9db12010-08-30 18:34:48 +00001000 AC_DEFINE_UNQUOTED(LLVM_NATIVE_ARCH, $LLVM_NATIVE_ARCH,
Douglas Gregor7cbf8162009-06-17 00:42:33 +00001001 [LLVM architecture name for the native architecture, if available])
Eric Christophere7a9db12010-08-30 18:34:48 +00001002 LLVM_NATIVE_TARGET="LLVMInitialize${LLVM_NATIVE_ARCH}Target"
1003 LLVM_NATIVE_TARGETINFO="LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo"
Evan Cheng8c886a42011-07-22 21:58:54 +00001004 LLVM_NATIVE_TARGETMC="LLVMInitialize${LLVM_NATIVE_ARCH}TargetMC"
Eric Christophere7a9db12010-08-30 18:34:48 +00001005 LLVM_NATIVE_ASMPRINTER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter"
Jan Sjödinc9a16d52011-03-14 22:12:35 +00001006 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then
1007 LLVM_NATIVE_ASMPARSER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmParser"
1008 fi
Eric Christopher56079c12012-03-26 21:56:56 +00001009 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/Makefile ; then
1010 LLVM_NATIVE_DISASSEMBLER="LLVMInitialize${LLVM_NATIVE_ARCH}Disassembler"
1011 fi
Eric Christophere7a9db12010-08-30 18:34:48 +00001012 AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGET, $LLVM_NATIVE_TARGET,
1013 [LLVM name for the native Target init function, if available])
1014 AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETINFO, $LLVM_NATIVE_TARGETINFO,
1015 [LLVM name for the native TargetInfo init function, if available])
Evan Cheng8c886a42011-07-22 21:58:54 +00001016 AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETMC, $LLVM_NATIVE_TARGETMC,
1017 [LLVM name for the native target MC init function, if available])
Eric Christophere7a9db12010-08-30 18:34:48 +00001018 AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPRINTER, $LLVM_NATIVE_ASMPRINTER,
1019 [LLVM name for the native AsmPrinter init function, if available])
Jan Sjödinc9a16d52011-03-14 22:12:35 +00001020 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then
1021 AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPARSER, $LLVM_NATIVE_ASMPARSER,
1022 [LLVM name for the native AsmParser init function, if available])
1023 fi
Eric Christopher56079c12012-03-26 21:56:56 +00001024 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/Makefile ; then
1025 AC_DEFINE_UNQUOTED(LLVM_NATIVE_DISASSEMBLER, $LLVM_NATIVE_DISASSEMBLER,
1026 [LLVM name for the native Disassembler init function, if available])
1027 fi
Douglas Gregor7cbf8162009-06-17 00:42:33 +00001028 fi
1029done
1030
Gabor Greife0d58d32012-01-26 10:28:58 +00001031dnl Build the LLVM_TARGET and LLVM_... macros for Targets.def and the individual
1032dnl target feature def files.
Douglas Gregor1b731d52009-06-16 20:12:29 +00001033LLVM_ENUM_TARGETS=""
1034LLVM_ENUM_ASM_PRINTERS=""
Daniel Dunbar71475772009-07-17 20:42:00 +00001035LLVM_ENUM_ASM_PARSERS=""
Daniel Dunbarf4721292009-11-25 04:30:13 +00001036LLVM_ENUM_DISASSEMBLERS=""
Douglas Gregor1b731d52009-06-16 20:12:29 +00001037for target_to_build in $TARGETS_TO_BUILD; do
1038 LLVM_ENUM_TARGETS="LLVM_TARGET($target_to_build) $LLVM_ENUM_TARGETS"
Chris Lattner28776602010-11-14 19:10:47 +00001039 if test -f ${srcdir}/lib/Target/${target_to_build}/*AsmPrinter.cpp ; then
Eric Christopheref917742010-10-12 02:42:05 +00001040 LLVM_ENUM_ASM_PRINTERS="LLVM_ASM_PRINTER($target_to_build) $LLVM_ENUM_ASM_PRINTERS";
1041 fi
Daniel Dunbar71475772009-07-17 20:42:00 +00001042 if test -f ${srcdir}/lib/Target/${target_to_build}/AsmParser/Makefile ; then
1043 LLVM_ENUM_ASM_PARSERS="LLVM_ASM_PARSER($target_to_build) $LLVM_ENUM_ASM_PARSERS";
1044 fi
Daniel Dunbarf4721292009-11-25 04:30:13 +00001045 if test -f ${srcdir}/lib/Target/${target_to_build}/Disassembler/Makefile ; then
1046 LLVM_ENUM_DISASSEMBLERS="LLVM_DISASSEMBLER($target_to_build) $LLVM_ENUM_DISASSEMBLERS";
1047 fi
Douglas Gregor1b731d52009-06-16 20:12:29 +00001048done
1049AC_SUBST(LLVM_ENUM_TARGETS)
1050AC_SUBST(LLVM_ENUM_ASM_PRINTERS)
Daniel Dunbar71475772009-07-17 20:42:00 +00001051AC_SUBST(LLVM_ENUM_ASM_PARSERS)
Daniel Dunbarf4721292009-11-25 04:30:13 +00001052AC_SUBST(LLVM_ENUM_DISASSEMBLERS)
Douglas Gregor1b731d52009-06-16 20:12:29 +00001053
Daniel Dunbarb4a289c2009-11-04 04:32:50 +00001054dnl Override the option to use for optimized builds.
1055AC_ARG_WITH(optimize-option,
1056 AS_HELP_STRING([--with-optimize-option],
1057 [Select the compiler options to use for optimized builds]),,
1058 withval=default)
1059AC_MSG_CHECKING([optimization flags])
1060case "$withval" in
1061 default)
1062 case "$llvm_cv_os_type" in
Daniel Dunbare96fcbb2010-04-30 17:12:23 +00001063 FreeBSD) optimize_option=-O2 ;;
Daniel Dunbar4e06a5b2010-04-10 18:56:24 +00001064 MingW) optimize_option=-O2 ;;
1065 *) optimize_option=-O3 ;;
Daniel Dunbarb4a289c2009-11-04 04:32:50 +00001066 esac ;;
1067 *) optimize_option="$withval" ;;
1068esac
1069AC_SUBST(OPTIMIZE_OPTION,$optimize_option)
1070AC_MSG_RESULT([$optimize_option])
1071
Evan Chenga7bd00b2006-06-20 22:16:32 +00001072dnl Specify extra build options
1073AC_ARG_WITH(extra-options,
1074 AS_HELP_STRING([--with-extra-options],
Duncan Sandsef8c8ec2009-05-13 13:13:18 +00001075 [Specify additional options to compile LLVM with]),,
Reid Spencer84749ed2006-07-28 22:50:07 +00001076 withval=default)
1077case "$withval" in
Evan Chenga7bd00b2006-06-20 22:16:32 +00001078 default) EXTRA_OPTIONS= ;;
Reid Spencer84749ed2006-07-28 22:50:07 +00001079 *) EXTRA_OPTIONS=$withval ;;
Evan Chenga7bd00b2006-06-20 22:16:32 +00001080esac
1081AC_SUBST(EXTRA_OPTIONS,$EXTRA_OPTIONS)
Reid Spencer47428042005-04-22 07:27:28 +00001082
Daniel Dunbar0315d4a2011-06-16 22:30:38 +00001083dnl Specify extra linker build options
1084AC_ARG_WITH(extra-ld-options,
1085 AS_HELP_STRING([--with-extra-ld-options],
1086 [Specify additional options to link LLVM with]),,
1087 withval=default)
1088case "$withval" in
1089 default) EXTRA_LD_OPTIONS= ;;
1090 *) EXTRA_LD_OPTIONS=$withval ;;
1091esac
1092AC_SUBST(EXTRA_LD_OPTIONS,$EXTRA_LD_OPTIONS)
1093
Gordon Henriksend48f4592007-10-02 09:50:18 +00001094dnl Allow specific bindings to be specified for building (or not)
1095AC_ARG_ENABLE([bindings],AS_HELP_STRING([--enable-bindings],
1096 [Build specific language bindings: all,auto,none,{binding-name} (default=auto)]),,
1097 enableval=default)
1098BINDINGS_TO_BUILD=""
1099case "$enableval" in
Gordon Henriksen61400d12007-10-02 10:14:32 +00001100 yes | default | auto) BINDINGS_TO_BUILD="auto" ;;
Gordon Henriksend48f4592007-10-02 09:50:18 +00001101 all ) BINDINGS_TO_BUILD="ocaml" ;;
1102 none | no) BINDINGS_TO_BUILD="" ;;
1103 *)for a_binding in `echo $enableval|sed -e 's/,/ /g' ` ; do
1104 case "$a_binding" in
1105 ocaml) BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD" ;;
1106 *) AC_MSG_ERROR([Unrecognized binding $a_binding]) ;;
1107 esac
Eric Christophere62b4412007-12-01 00:34:39 +00001108 done
Gordon Henriksend48f4592007-10-02 09:50:18 +00001109 ;;
1110esac
1111
Gordon Henriksen3be1f102007-10-02 16:42:10 +00001112dnl Allow the ocaml libdir to be overridden. This could go in a configure
1113dnl script for bindings/ocaml/configure, except that its auto value depends on
1114dnl OCAMLC, which is found here to support tests.
1115AC_ARG_WITH([ocaml-libdir],
1116 [AS_HELP_STRING([--with-ocaml-libdir],
1117 [Specify install location for ocaml bindings (default is stdlib)])],
1118 [],
1119 [withval=auto])
1120case "$withval" in
1121 auto) with_ocaml_libdir="$withval" ;;
1122 /* | [[A-Za-z]]:[[\\/]]*) with_ocaml_libdir="$withval" ;;
1123 *) AC_MSG_ERROR([Invalid path for --with-ocaml-libdir. Provide full path]) ;;
1124esac
1125
NAKAMURA Takumi914f1922011-10-16 02:54:26 +00001126AC_ARG_WITH(clang-srcdir,
1127 AS_HELP_STRING([--with-clang-srcdir],
1128 [Directory to the out-of-tree Clang source]),,
1129 withval="-")
1130case "$withval" in
Dylan Noblesmithb5190ab2012-02-02 00:17:33 +00001131 -) clang_src_root="" ;;
NAKAMURA Takumi914f1922011-10-16 02:54:26 +00001132 /* | [[A-Za-z]]:[[\\/]]*) clang_src_root="$withval" ;;
1133 *) clang_src_root="$ac_pwd/$withval" ;;
1134esac
1135AC_SUBST(CLANG_SRC_ROOT,[$clang_src_root])
1136
Chandler Carruthffae4a62010-10-19 08:21:25 +00001137AC_ARG_WITH(clang-resource-dir,
1138 AS_HELP_STRING([--with-clang-resource-dir],
1139 [Relative directory from the Clang binary for resource files]),,
1140 withval="")
1141AC_DEFINE_UNQUOTED(CLANG_RESOURCE_DIR,"$withval",
1142 [Relative directory for resource files])
1143
Rafael Espindola662908c2009-12-07 00:27:35 +00001144AC_ARG_WITH(c-include-dirs,
Rafael Espindolad95960b2009-11-12 05:46:09 +00001145 AS_HELP_STRING([--with-c-include-dirs],
1146 [Colon separated list of directories clang will search for headers]),,
1147 withval="")
1148AC_DEFINE_UNQUOTED(C_INCLUDE_DIRS,"$withval",
1149 [Directories clang will search for headers])
1150
Rafael Espindolaec217f62012-02-03 00:59:30 +00001151# Clang normally uses the system c++ headers and libraries. With this option,
1152# clang will use the ones provided by a gcc installation instead. This option should
1153# be passed the same value that was used with --prefix when configuring gcc.
1154AC_ARG_WITH(gcc-toolchain,
1155 AS_HELP_STRING([--with-gcc-toolchain],
1156 [Directory where gcc is installed.]),,
Rafael Espindola65e9be6d2009-11-16 19:46:55 +00001157 withval="")
Rafael Espindolaec217f62012-02-03 00:59:30 +00001158AC_DEFINE_UNQUOTED(GCC_INSTALL_PREFIX,"$withval",
1159 [Directory where gcc is installed.])
Rafael Espindola65e9be6d2009-11-16 19:46:55 +00001160
Sebastian Pope29a6c72012-04-30 20:06:58 +00001161AC_ARG_WITH(default-sysroot,
Sebastian Pop5c9e1842012-04-16 04:11:45 +00001162 AS_HELP_STRING([--with-default-sysroot],
1163 [Add --sysroot=<path> to all compiler invocations.]),,
1164 withval="")
1165AC_DEFINE_UNQUOTED(DEFAULT_SYSROOT,"$withval",
1166 [Default <path> to all compiler invocations for --sysroot=<path>.])
1167
Nick Lewyckyedd8946b2009-02-03 07:10:08 +00001168dnl Allow linking of LLVM with GPLv3 binutils code.
1169AC_ARG_WITH(binutils-include,
1170 AS_HELP_STRING([--with-binutils-include],
1171 [Specify path to binutils/include/ containing plugin-api.h file for gold plugin.]),,
1172 withval=default)
1173case "$withval" in
1174 default) WITH_BINUTILS_INCDIR=default ;;
1175 /* | [[A-Za-z]]:[[\\/]]*) WITH_BINUTILS_INCDIR=$withval ;;
1176 *) AC_MSG_ERROR([Invalid path for --with-binutils-include. Provide full path]) ;;
1177esac
1178if test "x$WITH_BINUTILS_INCDIR" != xdefault ; then
1179 AC_SUBST(BINUTILS_INCDIR,$WITH_BINUTILS_INCDIR)
1180 if test ! -f "$WITH_BINUTILS_INCDIR/plugin-api.h"; then
1181 echo "$WITH_BINUTILS_INCDIR/plugin-api.h"
1182 AC_MSG_ERROR([Invalid path to directory containing plugin-api.h.]);
1183 fi
1184fi
1185
Chad Rosier445d39b2011-07-15 00:37:26 +00001186dnl Specify the URL where bug reports should be submitted.
1187AC_ARG_WITH(bug-report-url,
1188 AS_HELP_STRING([--with-bug-report-url],
Chad Rosier8c9d9b22011-08-02 20:53:43 +00001189 [Specify the URL where bug reports should be submitted (default=http://llvm.org/bugs/)]),,
1190 withval="http://llvm.org/bugs/")
Chad Rosier445d39b2011-07-15 00:37:26 +00001191AC_DEFINE_UNQUOTED(BUG_REPORT_URL,"$withval",
1192 [Bug report URL.])
1193
Chandler Carruthf11f1e42013-08-12 09:49:17 +00001194dnl --enable-terminfo: check whether the user wants to control use of terminfo:
1195AC_ARG_ENABLE(terminfo,AS_HELP_STRING(
1196 [--enable-terminfo],
1197 [Query the terminfo database if available (default is YES)]),
Chandler Carruthcad7e5e2013-08-07 08:47:36 +00001198 [case "$enableval" in
Chandler Carruthf11f1e42013-08-12 09:49:17 +00001199 yes) llvm_cv_enable_terminfo="yes" ;;
1200 no) llvm_cv_enable_terminfo="no" ;;
1201 *) AC_MSG_ERROR([Invalid setting for --enable-terminfo. Use "yes" or "no"]) ;;
Chandler Carruthcad7e5e2013-08-07 08:47:36 +00001202 esac],
Chandler Carruthf11f1e42013-08-12 09:49:17 +00001203 llvm_cv_enable_terminfo="yes")
NAKAMURA Takumi84e85302014-02-09 16:36:42 +00001204case "$llvm_cv_enable_terminfo" in
1205 yes) AC_SUBST(ENABLE_TERMINFO,[1]) ;;
1206 no) AC_SUBST(ENABLE_TERMINFO,[0]) ;;
1207esac
Chandler Carruthcad7e5e2013-08-07 08:47:36 +00001208
Peter Collingbournec7d437c2014-01-31 23:46:14 +00001209dnl --enable-libedit: check whether the user wants to turn off libedit.
1210AC_ARG_ENABLE(libedit,AS_HELP_STRING(
1211 [--enable-libedit],
1212 [Use libedit if available (default is YES)]),
1213 [case "$enableval" in
1214 yes) llvm_cv_enable_libedit="yes" ;;
1215 no) llvm_cv_enable_libedit="no" ;;
1216 *) AC_MSG_ERROR([Invalid setting for --enable-libedit. Use "yes" or "no"]) ;;
1217 esac],
1218 llvm_cv_enable_libedit="yes")
1219
Nick Lewycky9ab256ac2009-06-06 06:24:44 +00001220dnl --enable-libffi : check whether the user wants to turn off libffi:
1221AC_ARG_ENABLE(libffi,AS_HELP_STRING(
Jeffrey Yasskin914050b2010-02-09 23:03:44 +00001222 --enable-libffi,[Check for the presence of libffi (default is NO)]),
1223 [case "$enableval" in
1224 yes) llvm_cv_enable_libffi="yes" ;;
1225 no) llvm_cv_enable_libffi="no" ;;
1226 *) AC_MSG_ERROR([Invalid setting for --enable-libffi. Use "yes" or "no"]) ;;
1227 esac],
1228 llvm_cv_enable_libffi=no)
Nick Lewycky9ab256ac2009-06-06 06:24:44 +00001229
Bob Wilson3f354702011-11-28 07:59:52 +00001230AC_ARG_WITH(internal-prefix,
1231 AS_HELP_STRING([--with-internal-prefix],
1232 [Installation directory for internal files]),,
1233 withval="")
1234AC_SUBST(INTERNAL_PREFIX,[$withval])
1235
Reid Spencer0241e382004-11-25 04:51:04 +00001236dnl===-----------------------------------------------------------------------===
1237dnl===
1238dnl=== SECTION 4: Check for programs we need and that they are the right version
1239dnl===
1240dnl===-----------------------------------------------------------------------===
Reid Spencer67be17a2004-08-31 14:20:36 +00001241
Reid Spencer0241e382004-11-25 04:51:04 +00001242dnl Check for the tools that the makefiles require
1243AC_CHECK_GNU_MAKE
1244AC_PROG_LN_S
Rafael Espindolafd1355a2014-02-28 18:17:54 +00001245AC_PATH_PROG(NM, [nm], [nm])
Reid Spencerd42d5d42004-12-16 17:48:14 +00001246AC_PATH_PROG(CMP, [cmp], [cmp])
1247AC_PATH_PROG(CP, [cp], [cp])
Reid Spencer0194c9a2004-11-29 04:56:35 +00001248AC_PATH_PROG(DATE, [date], [date])
Reid Spencer0241e382004-11-25 04:51:04 +00001249AC_PATH_PROG(FIND, [find], [find])
1250AC_PATH_PROG(GREP, [grep], [grep])
1251AC_PATH_PROG(MKDIR,[mkdir],[mkdir])
Reid Spencer0194c9a2004-11-29 04:56:35 +00001252AC_PATH_PROG(MV, [mv], [mv])
Reid Spencer0241e382004-11-25 04:51:04 +00001253AC_PROG_RANLIB
Torok Edwin1e86bc52010-01-26 08:48:04 +00001254AC_CHECK_TOOL(AR, ar, false)
Reid Spencer0194c9a2004-11-29 04:56:35 +00001255AC_PATH_PROG(RM, [rm], [rm])
1256AC_PATH_PROG(SED, [sed], [sed])
1257AC_PATH_PROG(TAR, [tar], [gtar])
Reid Spencer9372247e2006-07-28 05:05:00 +00001258AC_PATH_PROG(BINPWD,[pwd], [pwd])
Reid Spencer432b3152006-06-02 23:13:18 +00001259
1260dnl Looking for misc. graph plotting software
Reid Spencer627023a2006-06-05 15:54:38 +00001261AC_PATH_PROG(DOT, [dot], [echo dot])
1262if test "$DOT" != "echo dot" ; then
1263 AC_DEFINE([HAVE_DOT],[1],[Define if the dot program is available])
1264 dnl If we're targeting for mingw we should emit windows paths, not msys
Jeff Cohenc5e5b272007-01-12 18:22:38 +00001265 if test "$llvm_cv_os_type" = "MingW" ; then
Reid Spencer627023a2006-06-05 15:54:38 +00001266 DOT=`echo $DOT | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1267 fi
1268 AC_DEFINE_UNQUOTED([LLVM_PATH_DOT],"$DOT${EXEEXT}",
1269 [Define to path to dot program if found or 'echo dot' otherwise])
1270fi
Reid Spencer0241e382004-11-25 04:51:04 +00001271
1272dnl Find the install program
1273AC_PROG_INSTALL
Eric Christopherc7289b62010-07-22 21:13:40 +00001274dnl Prepend src dir to install path dir if it's a relative path
1275dnl This is a hack for installs that take place in something other
1276dnl than the top level.
1277case "$INSTALL" in
1278 [[\\/$]]* | ?:[[\\/]]* ) ;;
1279 *) INSTALL="\\\$(TOPSRCDIR)/$INSTALL" ;;
1280esac
John Criswell7a3334d2003-07-22 19:13:20 +00001281
Reid Spencer0194c9a2004-11-29 04:56:35 +00001282dnl Checks for documentation and testing tools that we can do without. If these
1283dnl are not found then they are set to "true" which always succeeds but does
Eric Christophere62b4412007-12-01 00:34:39 +00001284dnl nothing. This just lets the build output show that we could have done
1285dnl something if the tool was available.
Bill Wendling5ddd03d2008-03-05 09:28:02 +00001286AC_PATH_PROG(BZIP2, [bzip2])
mike-me08af302010-05-06 23:45:43 +00001287AC_PATH_PROG(CAT, [cat])
Bill Wendling5ddd03d2008-03-05 09:28:02 +00001288AC_PATH_PROG(DOXYGEN, [doxygen])
Daniel Dunbard1888822012-05-08 18:26:07 +00001289AC_PATH_PROG(GROFF, [groff])
Eric Christopher77560892010-12-10 01:31:51 +00001290AC_PATH_PROG(GZIPBIN, [gzip])
Daniel Dunbard1888822012-05-08 18:26:07 +00001291AC_PATH_PROG(PDFROFF, [pdfroff])
Bill Wendling5ddd03d2008-03-05 09:28:02 +00001292AC_PATH_PROG(ZIP, [zip])
Peter Collingbourne82e3e372014-10-16 22:48:02 +00001293AC_PATH_PROG(GO, [go])
Peter Zotov668f9672014-10-30 08:29:45 +00001294AC_PATH_PROGS(OCAMLFIND, [ocamlfind])
Daniel Dunbard1888822012-05-08 18:26:07 +00001295AC_PATH_PROGS(GAS, [gas as])
Reid Spencer0241e382004-11-25 04:51:04 +00001296
Daniel Dunbarb524afb2010-08-11 23:53:59 +00001297dnl Get the version of the linker in use.
1298AC_LINK_GET_VERSION
1299
Nick Lewycky16aac992009-03-05 08:20:21 +00001300dnl Determine whether the linker supports the -R option.
Reid Spencer0241e382004-11-25 04:51:04 +00001301AC_LINK_USE_R
1302
Bob Wilson8658b912013-08-02 22:51:06 +00001303dnl Determine whether the compiler supports the -rdynamic option.
Nick Lewycky16aac992009-03-05 08:20:21 +00001304AC_LINK_EXPORT_DYNAMIC
1305
Dan Gohmanb7edb422010-06-01 14:56:56 +00001306dnl Determine whether the linker supports the --version-script option.
1307AC_LINK_VERSION_SCRIPT
Dan Gohman91f8ad72010-04-16 22:58:15 +00001308
Rafael Espindolafd1355a2014-02-28 18:17:54 +00001309AC_CHECK_HEADERS([errno.h])
1310
1311case "$llvm_cv_os_type" in
1312 Cygwin|MingW|Win32) llvm_shlib_ext=.dll ;;
1313 Darwin) llvm_shlib_ext=.dylib ;;
1314 *) llvm_shlib_ext=.so ;;
1315esac
1316
1317AC_DEFINE_UNQUOTED([LTDL_SHLIB_EXT], ["$llvm_shlib_ext"], [The shared library extension])
Mikhail Glushenkov2c332fe2009-04-21 19:46:10 +00001318
Reid Spencer0241e382004-11-25 04:51:04 +00001319AC_MSG_CHECKING([tool compatibility])
1320
Reid Spencerca06c8e2004-12-08 23:07:27 +00001321dnl Ensure that compilation tools are GCC or a GNU compatible compiler such as
1322dnl ICC; we use GCC specific options in the makefiles so the compiler needs
1323dnl to support those options.
1324dnl "icc" emits gcc signatures
1325dnl "icc -no-gcc" emits no gcc signature BUT is still compatible
1326ICC=no
1327IXX=no
1328case $CC in
Eric Christophere62b4412007-12-01 00:34:39 +00001329 icc*|icpc*)
Reid Spencerca06c8e2004-12-08 23:07:27 +00001330 ICC=yes
1331 IXX=yes
1332 ;;
1333 *)
1334 ;;
1335esac
1336
Duraid Madina8604de82006-02-15 07:57:42 +00001337if test "$GCC" != "yes" && test "$ICC" != "yes"
1338then
1339 AC_MSG_ERROR([gcc|icc required but not found])
1340fi
1341
Daniel Dunbar00e7a842010-12-08 01:48:03 +00001342dnl Ensure that compilation tools are compatible with GCC extensions
Duraid Madina8604de82006-02-15 07:57:42 +00001343if test "$GXX" != "yes" && test "$IXX" != "yes"
1344then
Daniel Dunbar00e7a842010-12-08 01:48:03 +00001345 AC_MSG_ERROR([g++|clang++|icc required but not found])
Duraid Madina8604de82006-02-15 07:57:42 +00001346fi
1347
Reid Spencer0241e382004-11-25 04:51:04 +00001348dnl Verify that GCC is version 3.0 or higher
Reid Spencerca06c8e2004-12-08 23:07:27 +00001349if test "$GCC" = "yes"
Reid Spencer0241e382004-11-25 04:51:04 +00001350then
NAKAMURA Takumie5bc87c2013-01-30 01:37:55 +00001351 AC_COMPILE_IFELSE(
1352[
1353 AC_LANG_SOURCE([[
1354 #if !defined(__GNUC__) || __GNUC__ < 3
1355 #error Unsupported GCC version
1356 #endif
1357 ]])
1358],
1359[], [AC_MSG_ERROR([gcc 3.x required, but you have a lower version])])
Reid Spencer0241e382004-11-25 04:51:04 +00001360fi
1361
1362dnl Check for GNU Make. We use its extensions, so don't build without it
1363if test -z "$llvm_cv_gnu_make_command"
1364then
1365 AC_MSG_ERROR([GNU Make required but not found])
1366fi
1367
1368dnl Tool compatibility is okay if we make it here.
1369AC_MSG_RESULT([ok])
1370
Eric Christopherb3762a02010-03-02 05:17:21 +00001371dnl Check optional compiler flags.
Julien Lerougee4492f62009-10-26 19:58:44 +00001372AC_MSG_CHECKING([optional compiler flags])
1373CXX_FLAG_CHECK(NO_VARIADIC_MACROS, [-Wno-variadic-macros])
1374CXX_FLAG_CHECK(NO_MISSING_FIELD_INITIALIZERS, [-Wno-missing-field-initializers])
Rafael Espindola42e94d12012-02-28 23:32:06 +00001375CXX_FLAG_CHECK(COVERED_SWITCH_DEFAULT, [-Wcovered-switch-default])
Dmitri Gribenkob5e23ef2013-02-13 21:19:39 +00001376
David Greene9ff8d472013-01-09 22:11:13 +00001377dnl GCC's potential uninitialized use analysis is weak and presents lots of
1378dnl false positives, so disable it.
Dmitri Gribenkob5e23ef2013-02-13 21:19:39 +00001379NO_UNINITIALIZED=
1380NO_MAYBE_UNINITIALIZED=
David Greene9ff8d472013-01-09 22:11:13 +00001381if test "$GXX" = "yes"
1382then
1383 CXX_FLAG_CHECK(NO_MAYBE_UNINITIALIZED, [-Wno-maybe-uninitialized])
1384 dnl gcc 4.7 introduced -Wmaybe-uninitialized to distinguish cases which are
Dmitri Gribenkob5e23ef2013-02-13 21:19:39 +00001385 dnl known to be uninitialized from cases which might be uninitialized. We
David Greene9ff8d472013-01-09 22:11:13 +00001386 dnl still want to catch the first kind of errors.
Dmitri Gribenkob5e23ef2013-02-13 21:19:39 +00001387 if test -z "$NO_MAYBE_UNINITIALIZED"
David Greene9ff8d472013-01-09 22:11:13 +00001388 then
1389 CXX_FLAG_CHECK(NO_UNINITIALIZED, [-Wno-uninitialized])
David Greene9ff8d472013-01-09 22:11:13 +00001390 fi
David Greene9ff8d472013-01-09 22:11:13 +00001391fi
Eric Christopher65ec83b2014-11-05 00:35:15 +00001392
1393dnl Check for misbehaving -Wcomment (gcc-4.7 has this) and maybe add
1394dnl -Wno-comment to the flags.
1395no_comment=
1396llvm_cv_old_cxxflags="$CXXFLAGS"
1397CXXFLAGS="$CXXFLAGS -Wcomment -Werror"
1398AC_COMPILE_IFELSE(
1399[
1400 AC_LANG_SOURCE([[// Comment \o\
1401// Another comment
1402int main() { return 0; }
1403 ]])
1404],
1405[
1406 no_comment=-Wno-comment
1407],
1408[])
1409AC_SUBST(NO_COMMENT, [$no_comment])
1410CXXFLAGS="$llvm_cv_old_cxxflags"
1411
1412AC_MSG_RESULT([$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED $NO_MAYBE_UNINITIALIZED $NO_COMMENT])
David Greene9ff8d472013-01-09 22:11:13 +00001413
Saleem Abdulrasool26127bd2013-01-30 04:07:37 +00001414AC_ARG_WITH([python],
1415 [AS_HELP_STRING([--with-python], [path to python])],
1416 [PYTHON="$withval"])
1417
1418if test -n "$PYTHON" && test -x "$PYTHON" ; then
1419 AC_MSG_CHECKING([for python])
1420 AC_MSG_RESULT([user defined: $with_python])
1421else
1422 if test -n "$PYTHON" ; then
1423 AC_MSG_WARN([specified python ($PYTHON) is not usable, searching path])
1424 fi
1425
Rafael Espindola21a400852014-12-12 15:29:31 +00001426 AC_PATH_PROG([PYTHON], [python python2 python27],
Saleem Abdulrasool26127bd2013-01-30 04:07:37 +00001427 [AC_MSG_RESULT([not found])
Rafael Espindola21a400852014-12-12 15:29:31 +00001428 AC_MSG_ERROR([could not find python 2.7 or higher])])
Saleem Abdulrasool26127bd2013-01-30 04:07:37 +00001429fi
1430
Rafael Espindola21a400852014-12-12 15:29:31 +00001431AC_MSG_CHECKING([for python >= 2.7])
Bill Wendling58463e4e82013-10-12 08:42:59 +00001432ac_python_version=`$PYTHON -V 2>&1 | cut -d' ' -f2`
Saleem Abdulrasool26127bd2013-01-30 04:07:37 +00001433ac_python_version_major=`echo $ac_python_version | cut -d'.' -f1`
1434ac_python_version_minor=`echo $ac_python_version | cut -d'.' -f2`
1435ac_python_version_patch=`echo $ac_python_version | cut -d'.' -f3`
Bill Wendling58463e4e82013-10-12 08:42:59 +00001436if test "$ac_python_version_major" -gt "2" || \
1437 (test "$ac_python_version_major" -eq "2" && \
Rafael Espindola21a400852014-12-12 15:29:31 +00001438 test "$ac_python_version_minor" -ge "7") ; then
Saleem Abdulrasool26127bd2013-01-30 04:07:37 +00001439 AC_MSG_RESULT([$PYTHON ($ac_python_version)])
1440else
1441 AC_MSG_RESULT([not found])
Rafael Espindola21a400852014-12-12 15:29:31 +00001442 AC_MSG_FAILURE([found python $ac_python_version ($PYTHON); required >= 2.7])
Saleem Abdulrasool26127bd2013-01-30 04:07:37 +00001443fi
Julien Lerougee4492f62009-10-26 19:58:44 +00001444
Reid Spencer0241e382004-11-25 04:51:04 +00001445dnl===-----------------------------------------------------------------------===
1446dnl===
1447dnl=== SECTION 5: Check for libraries
1448dnl===
1449dnl===-----------------------------------------------------------------------===
1450
Reid Spencerec4a7f522006-01-19 08:31:08 +00001451AC_CHECK_LIB(m,sin)
Jeff Cohenc5e5b272007-01-12 18:22:38 +00001452if test "$llvm_cv_os_type" = "MingW" ; then
Reid Spencer187b4ad2006-06-01 19:03:21 +00001453 AC_CHECK_LIB(imagehlp, main)
1454 AC_CHECK_LIB(psapi, main)
David Majnemer61eae2e2013-10-07 01:00:07 +00001455 AC_CHECK_LIB(shell32, main)
Reid Spencera16b9862006-06-01 16:55:59 +00001456fi
Reid Spencercd59fb72005-07-12 07:19:13 +00001457
Brian Gaeke25f2a372003-10-07 05:03:36 +00001458dnl dlopen() is required for plugin support.
NAKAMURA Takumi84e85302014-02-09 16:36:42 +00001459AC_SEARCH_LIBS(dlopen,dl,LLVM_DEFINE_SUBST([HAVE_DLOPEN],[1],
Reid Spencer0241e382004-11-25 04:51:04 +00001460 [Define if dlopen() is available on this platform.]),
1461 AC_MSG_WARN([dlopen() not found - disabling plugin support]))
John Criswell7a3334d2003-07-22 19:13:20 +00001462
Chandler Carruthd121a7b2013-01-05 00:29:06 +00001463dnl Search for the clock_gettime() function. Note that we rely on the POSIX
Chandler Carruth4a778632013-01-05 00:34:40 +00001464dnl macros to detect whether clock_gettime is available, this just finds the
1465dnl right libraries to link with.
Chandler Carruthd121a7b2013-01-05 00:29:06 +00001466AC_SEARCH_LIBS(clock_gettime,rt)
Chandler Carruthef7f9682013-01-04 23:19:55 +00001467
Chandler Carruthcad7e5e2013-08-07 08:47:36 +00001468dnl The curses library is optional; used for querying terminal info
Chandler Carruthf11f1e42013-08-12 09:49:17 +00001469if test "$llvm_cv_enable_terminfo" = "yes" ; then
Chandler Carruthcad7e5e2013-08-07 08:47:36 +00001470 dnl We need the has_color functionality in curses for it to be useful.
Joerg Sonnenberger4e5a3992013-08-17 11:06:00 +00001471 AC_SEARCH_LIBS(setupterm,tinfo terminfo curses ncurses ncursesw,
NAKAMURA Takumi84e85302014-02-09 16:36:42 +00001472 LLVM_DEFINE_SUBST([HAVE_TERMINFO],[1],
1473 [Define if the setupterm() function is supported this platform.]))
Chandler Carruthcad7e5e2013-08-07 08:47:36 +00001474fi
1475
Peter Collingbournec7d437c2014-01-31 23:46:14 +00001476dnl The libedit library is optional; used by lib/LineEditor
1477if test "$llvm_cv_enable_libedit" = "yes" ; then
1478 AC_SEARCH_LIBS(el_init,edit,
1479 AC_DEFINE([HAVE_LIBEDIT],[1],
1480 [Define if libedit is available on this platform.]))
1481fi
1482
Nick Lewyckya89ec992009-02-04 06:26:47 +00001483dnl libffi is optional; used to call external functions from the interpreter
Nick Lewycky9ab256ac2009-06-06 06:24:44 +00001484if test "$llvm_cv_enable_libffi" = "yes" ; then
1485 AC_SEARCH_LIBS(ffi_call,ffi,AC_DEFINE([HAVE_FFI_CALL],[1],
1486 [Define if libffi is available on this platform.]),
Jeffrey Yasskin914050b2010-02-09 23:03:44 +00001487 AC_MSG_ERROR([libffi not found - configure without --enable-libffi to compile without it]))
Nick Lewycky9ab256ac2009-06-06 06:24:44 +00001488fi
Nick Lewyckya89ec992009-02-04 06:26:47 +00001489
John Criswell7a3334d2003-07-22 19:13:20 +00001490dnl mallinfo is optional; the code can compile (minus features) without it
Reid Spencer0241e382004-11-25 04:51:04 +00001491AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1],
1492 [Define if mallinfo() is available on this platform.]))
John Criswell7a3334d2003-07-22 19:13:20 +00001493
Brian Gaeke7ee7b402003-12-05 19:29:01 +00001494dnl pthread locking functions are optional - but llvm will not be thread-safe
1495dnl without locks.
Dylan Noblesmithefddf202011-11-28 00:48:58 +00001496if test "$LLVM_ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then
Edward O'Callaghanedea3262009-10-14 11:12:33 +00001497 AC_CHECK_LIB(pthread, pthread_mutex_init)
Reid Spencerf85fabeb2005-08-24 10:07:20 +00001498 AC_SEARCH_LIBS(pthread_mutex_lock,pthread,
1499 AC_DEFINE([HAVE_PTHREAD_MUTEX_LOCK],[1],
1500 [Have pthread_mutex_lock]))
Owen Andersona149e222009-06-16 18:20:20 +00001501 AC_SEARCH_LIBS(pthread_rwlock_init,pthread,
1502 AC_DEFINE([HAVE_PTHREAD_RWLOCK_INIT],[1],
1503 [Have pthread_rwlock_init]))
Owen Anderson11549832009-06-25 23:10:26 +00001504 AC_SEARCH_LIBS(pthread_getspecific,pthread,
1505 AC_DEFINE([HAVE_PTHREAD_GETSPECIFIC],[1],
1506 [Have pthread_getspecific]))
Reid Spencerf85fabeb2005-08-24 10:07:20 +00001507fi
Brian Gaeke7ee7b402003-12-05 19:29:01 +00001508
Alexey Samsonov2fb337e2013-04-23 08:28:39 +00001509dnl zlib is optional; used for compression/uncompression
1510if test "$LLVM_ENABLE_ZLIB" -eq 1 ; then
1511 AC_CHECK_LIB(z, compress2)
1512fi
1513
Jeffrey Yasskinbf3d6ba2009-07-10 21:08:20 +00001514dnl Allow OProfile support for JIT output.
1515AC_ARG_WITH(oprofile,
1516 AS_HELP_STRING([--with-oprofile=<prefix>],
1517 [Tell OProfile >= 0.9.4 how to symbolize JIT output]),
1518 [
1519 AC_SUBST(USE_OPROFILE, [1])
1520 case "$withval" in
1521 /usr|yes) llvm_cv_oppath=/usr/lib/oprofile ;;
Jeffrey Yasskin2da72312009-10-07 23:22:42 +00001522 no) llvm_cv_oppath=
1523 AC_SUBST(USE_OPROFILE, [0]) ;;
Jeffrey Yasskinbf3d6ba2009-07-10 21:08:20 +00001524 *) llvm_cv_oppath="${withval}/lib/oprofile"
Eric Christopher46342fe2012-08-03 17:45:31 +00001525 CPPFLAGS="-I${withval}/include";;
Jeffrey Yasskinbf3d6ba2009-07-10 21:08:20 +00001526 esac
Eli Bendersky5262ad22012-03-13 08:33:15 +00001527 case $llvm_cv_os_type in
1528 Linux)
1529 if test -n "$llvm_cv_oppath" ; then
1530 LIBS="$LIBS -lopagent -L${llvm_cv_oppath} -Wl,-rpath,${llvm_cv_oppath}"
1531 dnl Work around http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=537744:
1532 dnl libbfd is not included properly in libopagent in some Debian
1533 dnl versions. If libbfd isn't found at all, we assume opagent works
1534 dnl anyway.
1535 AC_SEARCH_LIBS(bfd_init, bfd, [], [])
1536 AC_SEARCH_LIBS(op_open_agent, opagent, [], [
1537 echo "Error! You need to have libopagent around."
Sylvestre Ledru1b3961c2015-02-01 14:55:43 +00001538 exit 1
Eli Bendersky5262ad22012-03-13 08:33:15 +00001539 ])
1540 AC_CHECK_HEADER([opagent.h], [], [
1541 echo "Error! You need to have opagent.h around."
Sylvestre Ledru1b3961c2015-02-01 14:55:43 +00001542 exit 1
Eli Bendersky5262ad22012-03-13 08:33:15 +00001543 ])
1544 fi ;;
1545 *)
1546 AC_MSG_ERROR([OProfile support is available on Linux only.]) ;;
Peter Zotov668f9672014-10-30 08:29:45 +00001547 esac
Jeffrey Yasskinbf3d6ba2009-07-10 21:08:20 +00001548 ],
1549 [
Jeffrey Yasskin2da72312009-10-07 23:22:42 +00001550 AC_SUBST(USE_OPROFILE, [0])
Jeffrey Yasskinbf3d6ba2009-07-10 21:08:20 +00001551 ])
Eli Bendersky5262ad22012-03-13 08:33:15 +00001552AC_DEFINE_UNQUOTED([LLVM_USE_OPROFILE],$USE_OPROFILE,
Jeffrey Yasskinbf3d6ba2009-07-10 21:08:20 +00001553 [Define if we have the oprofile JIT-support library])
1554
Eli Bendersky5262ad22012-03-13 08:33:15 +00001555dnl Enable support for Intel JIT Events API.
1556AC_ARG_WITH(intel-jitevents,
Andrew Kaylor5808c7d2012-09-28 17:35:20 +00001557 AS_HELP_STRING([--with-intel-jitevents Notify Intel JIT profiling API of generated code]),
Eli Bendersky5262ad22012-03-13 08:33:15 +00001558 [
Andrew Kaylor5808c7d2012-09-28 17:35:20 +00001559 case "$withval" in
1560 yes) AC_SUBST(USE_INTEL_JITEVENTS,[1]);;
1561 no) AC_SUBST(USE_INTEL_JITEVENTS,[0]);;
1562 *) AC_MSG_ERROR([Invalid setting for --with-intel-jitevents. Use "yes" or "no"]);;
1563 esac
1564
Eli Bendersky5262ad22012-03-13 08:33:15 +00001565 case $llvm_cv_os_type in
1566 Linux|Win32|Cygwin|MingW) ;;
Andrew Kaylor5808c7d2012-09-28 17:35:20 +00001567 *) AC_MSG_ERROR([Intel JIT API support is available on Linux and Windows only.]);;
Eli Bendersky5262ad22012-03-13 08:33:15 +00001568 esac
1569
Eli Bendersky5262ad22012-03-13 08:33:15 +00001570 case "$llvm_cv_target_arch" in
Andrew Kaylor5808c7d2012-09-28 17:35:20 +00001571 x86|x86_64) ;;
1572 *) AC_MSG_ERROR([Target architecture $llvm_cv_target_arch does not support Intel JIT Events API.]);;
Eli Bendersky5262ad22012-03-13 08:33:15 +00001573 esac
Eli Bendersky5262ad22012-03-13 08:33:15 +00001574 ],
1575 [
1576 AC_SUBST(USE_INTEL_JITEVENTS, [0])
1577 ])
1578AC_DEFINE_UNQUOTED([LLVM_USE_INTEL_JITEVENTS],$USE_INTEL_JITEVENTS,
1579 [Define if we have the Intel JIT API runtime support library])
1580
Eric Christopherc807c532012-08-03 19:47:19 +00001581dnl Check for libxml2
1582dnl Right now we're just checking for the existence, we could also check for a
1583dnl particular version via --version on xml2-config
1584AC_CHECK_PROGS(XML2CONFIG, xml2-config)
1585
1586AC_MSG_CHECKING(for libxml2 includes)
1587if test "x$XML2CONFIG" = "x"; then
1588 AC_MSG_RESULT(xml2-config not found)
1589else
1590 LIBXML2_INC=`$XML2CONFIG --cflags`
1591 AC_MSG_RESULT($LIBXML2_INC)
1592 AC_CHECK_LIB(xml2, xmlReadFile,[AC_DEFINE([CLANG_HAVE_LIBXML],1,[Define if we have libxml2])
1593 LIBXML2_LIBS="-lxml2"])
1594fi
1595AC_SUBST(LIBXML2_LIBS)
1596AC_SUBST(LIBXML2_INC)
1597
Reid Spencer0241e382004-11-25 04:51:04 +00001598dnl===-----------------------------------------------------------------------===
1599dnl===
1600dnl=== SECTION 6: Check for header files
1601dnl===
1602dnl===-----------------------------------------------------------------------===
1603
Reid Spencer8bc110c2004-12-25 07:31:29 +00001604dnl First, use autoconf provided macros for specific headers that we need
Brian Gaeke2abe7ae2004-01-13 06:43:16 +00001605dnl We don't check for ancient stuff or things that are guaranteed to be there
1606dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers.
Reid Spencer8bc110c2004-12-25 07:31:29 +00001607dnl Generally we're looking for POSIX headers.
1608AC_HEADER_DIRENT
Reid Spencer0241e382004-11-25 04:51:04 +00001609AC_HEADER_MMAP_ANONYMOUS
Reid Spencer8bc110c2004-12-25 07:31:29 +00001610AC_HEADER_STAT
Reid Spencer8bc110c2004-12-25 07:31:29 +00001611AC_HEADER_SYS_WAIT
1612AC_HEADER_TIME
John Criswell7a3334d2003-07-22 19:13:20 +00001613
Benjamin Kramer00622f72013-05-03 15:55:06 +00001614AC_LANG_PUSH([C++])
Rui Ueyama292fb6d2014-10-27 08:16:18 +00001615dnl size_t must be defined before including cxxabi.h on FreeBSD 10.0.
1616AC_CHECK_HEADERS([cxxabi.h], [], [],
1617[#include <stddef.h>
1618])
Benjamin Kramer00622f72013-05-03 15:55:06 +00001619AC_LANG_POP([C++])
Rui Ueyama292fb6d2014-10-27 08:16:18 +00001620
Reid Kleckner37f69de2013-07-26 16:54:23 +00001621AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h inttypes.h link.h])
Douglas Gregorb81294d2009-05-18 17:21:34 +00001622AC_CHECK_HEADERS([malloc.h setjmp.h signal.h stdint.h termios.h unistd.h])
Reid Kleckner37f69de2013-07-26 16:54:23 +00001623AC_CHECK_HEADERS([utime.h])
Daniel Dunbar80da3fb2011-02-03 02:39:58 +00001624AC_CHECK_HEADERS([sys/mman.h sys/param.h sys/resource.h sys/time.h sys/uio.h])
Reid Kleckner37f69de2013-07-26 16:54:23 +00001625AC_CHECK_HEADERS([sys/ioctl.h malloc/malloc.h mach/mach.h])
Jeffrey Yasskin3ddd88f2010-03-15 04:57:55 +00001626AC_CHECK_HEADERS([valgrind/valgrind.h])
Dan Gohmanb48f9042010-09-17 20:06:27 +00001627AC_CHECK_HEADERS([fenv.h])
Joerg Sonnenberger8a1177f2013-03-25 13:13:33 +00001628AC_CHECK_DECLS([FE_ALL_EXCEPT, FE_INEXACT], [], [], [[#include <fenv.h>]])
Dylan Noblesmithefddf202011-11-28 00:48:58 +00001629if test "$LLVM_ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then
Reid Spencer83bcd762007-08-17 05:44:59 +00001630 AC_CHECK_HEADERS(pthread.h,
Nick Lewyckya89ec992009-02-04 06:26:47 +00001631 AC_SUBST(HAVE_PTHREAD, 1),
1632 AC_SUBST(HAVE_PTHREAD, 0))
Reid Spencerd4399922006-12-01 00:37:14 +00001633else
1634 AC_SUBST(HAVE_PTHREAD, 0)
Reid Spencerf85fabeb2005-08-24 10:07:20 +00001635fi
Alexey Samsonov2fb337e2013-04-23 08:28:39 +00001636if test "$LLVM_ENABLE_ZLIB" -eq 1 ; then
1637 AC_CHECK_HEADERS(zlib.h,
1638 AC_SUBST(HAVE_LIBZ, 1),
1639 AC_SUBST(HAVE_LIBZ, 0))
1640else
1641 AC_SUBST(HAVE_LIBZ, 0)
1642fi
Brian Gaeke090ed132004-02-23 22:07:01 +00001643
Nick Lewyckye54da992009-04-13 04:26:06 +00001644dnl Try to find ffi.h.
Nick Lewycky9ab256ac2009-06-06 06:24:44 +00001645if test "$llvm_cv_enable_libffi" = "yes" ; then
1646 AC_CHECK_HEADERS([ffi.h ffi/ffi.h])
1647fi
Nick Lewyckya89ec992009-02-04 06:26:47 +00001648
Eric Christopherca466732010-12-03 07:45:22 +00001649dnl Try to find Darwin specific crash reporting libraries.
Eric Christophere9c1bb62010-06-22 21:01:04 +00001650AC_CHECK_HEADERS([CrashReporterClient.h])
1651
Eric Christopherca466732010-12-03 07:45:22 +00001652dnl Try to find Darwin specific crash reporting global.
Eric Christopherba4f7722010-12-07 02:05:42 +00001653AC_MSG_CHECKING([__crashreporter_info__])
1654AC_LINK_IFELSE(
NAKAMURA Takumie5bc87c2013-01-30 01:37:55 +00001655[
1656 AC_LANG_SOURCE([[
1657 extern const char *__crashreporter_info__;
1658 int main() {
1659 __crashreporter_info__ = "test";
1660 return 0;
1661 }
1662 ]])
1663],
1664[
1665 AC_MSG_RESULT([yes])
NAKAMURA Takumi58da26b2013-01-30 01:38:03 +00001666 AC_DEFINE([HAVE_CRASHREPORTER_INFO], [1], [can use __crashreporter_info__])
NAKAMURA Takumie5bc87c2013-01-30 01:37:55 +00001667],
1668[
1669 AC_MSG_RESULT([no])
NAKAMURA Takumi58da26b2013-01-30 01:38:03 +00001670 AC_DEFINE([HAVE_CRASHREPORTER_INFO], [0], [can use __crashreporter_info__])
NAKAMURA Takumie5bc87c2013-01-30 01:37:55 +00001671])
Eric Christopherba4f7722010-12-07 02:05:42 +00001672
Reid Spencer0241e382004-11-25 04:51:04 +00001673dnl===-----------------------------------------------------------------------===
1674dnl===
1675dnl=== SECTION 7: Check for types and structures
1676dnl===
1677dnl===-----------------------------------------------------------------------===
1678
Reid Spencer128ae102006-11-03 18:04:08 +00001679AC_HUGE_VAL_CHECK
John Criswell7a3334d2003-07-22 19:13:20 +00001680AC_TYPE_PID_T
1681AC_TYPE_SIZE_T
Torok Edwin1e86bc52010-01-26 08:48:04 +00001682AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[Define as the return type of signal handlers (`int' or `void').])
Reid Spencer0241e382004-11-25 04:51:04 +00001683AC_STRUCT_TM
John Criswell7a3334d2003-07-22 19:13:20 +00001684AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
Reid Spencerab2228a2004-09-02 21:38:24 +00001685AC_CHECK_TYPES([uint64_t],,
Reid Spencer0241e382004-11-25 04:51:04 +00001686 AC_CHECK_TYPES([u_int64_t],,
1687 AC_MSG_ERROR([Type uint64_t or u_int64_t required but not found])))
John Criswell7a3334d2003-07-22 19:13:20 +00001688
Reid Spencer0241e382004-11-25 04:51:04 +00001689dnl===-----------------------------------------------------------------------===
1690dnl===
1691dnl=== SECTION 8: Check for specific functions needed
1692dnl===
1693dnl===-----------------------------------------------------------------------===
1694
Chris Lattner6d5bdb02006-01-23 06:24:09 +00001695AC_CHECK_FUNCS([backtrace ceilf floorf roundf rintf nearbyintf getcwd ])
Gabor Greiff307d942007-07-13 09:48:29 +00001696AC_CHECK_FUNCS([powf fmodf strtof round ])
Owen Anderson132ae8b2013-02-07 00:21:34 +00001697AC_CHECK_FUNCS([log log2 log10 exp exp2])
Gabor Greiff307d942007-07-13 09:48:29 +00001698AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday ])
Anton Korobeynikovd01defe2007-02-16 19:11:07 +00001699AC_CHECK_FUNCS([isatty mkdtemp mkstemp ])
Reid Kleckner37f69de2013-07-26 16:54:23 +00001700AC_CHECK_FUNCS([mktemp posix_spawn pread realpath sbrk setrlimit ])
Todd Fiala4ccfe392014-02-05 05:04:36 +00001701AC_CHECK_FUNCS([strerror strerror_r setenv ])
Chris Lattner58cee552005-11-14 07:24:17 +00001702AC_CHECK_FUNCS([strtoll strtoq sysconf malloc_zone_statistics ])
Daniel Dunbar80da3fb2011-02-03 02:39:58 +00001703AC_CHECK_FUNCS([setjmp longjmp sigsetjmp siglongjmp writev])
Eric Christophera24dc7f2013-07-04 01:10:38 +00001704AC_CHECK_FUNCS([futimes futimens])
John Criswell42859552003-10-13 16:22:01 +00001705AC_C_PRINTF_A
Reid Spencer0241e382004-11-25 04:51:04 +00001706AC_FUNC_RAND48
John Criswell42859552003-10-13 16:22:01 +00001707
Todd Fiala4ccfe392014-02-05 05:04:36 +00001708dnl Check for arc4random accessible via AC_INCLUDES_DEFAULT.
1709AC_CHECK_DECLS([arc4random])
1710
NAKAMURA Takumi189111802011-02-09 04:18:48 +00001711dnl Check the declaration "Secure API" on Windows environments.
1712AC_CHECK_DECLS([strerror_s])
1713
NAKAMURA Takumi03a541f2011-02-05 15:11:53 +00001714dnl Check symbols in libgcc.a for JIT on Mingw.
1715if test "$llvm_cv_os_type" = "MingW" ; then
1716 AC_CHECK_LIB(gcc,_alloca,AC_DEFINE([HAVE__ALLOCA],[1],[Have host's _alloca]))
1717 AC_CHECK_LIB(gcc,__alloca,AC_DEFINE([HAVE___ALLOCA],[1],[Have host's __alloca]))
1718 AC_CHECK_LIB(gcc,__chkstk,AC_DEFINE([HAVE___CHKSTK],[1],[Have host's __chkstk]))
NAKAMURA Takumi78855072015-01-30 13:01:19 +00001719 AC_CHECK_LIB(gcc,__chkstk_ms,AC_DEFINE([HAVE___CHKSTK_MS],[1],[Have host's __chkstk_ms]))
NAKAMURA Takumi03a541f2011-02-05 15:11:53 +00001720 AC_CHECK_LIB(gcc,___chkstk,AC_DEFINE([HAVE____CHKSTK],[1],[Have host's ___chkstk]))
NAKAMURA Takumi78855072015-01-30 13:01:19 +00001721 AC_CHECK_LIB(gcc,___chkstk_ms,AC_DEFINE([HAVE____CHKSTK_MS],[1],[Have host's ___chkstk_ms]))
NAKAMURA Takumi03a541f2011-02-05 15:11:53 +00001722
1723 AC_CHECK_LIB(gcc,__ashldi3,AC_DEFINE([HAVE___ASHLDI3],[1],[Have host's __ashldi3]))
1724 AC_CHECK_LIB(gcc,__ashrdi3,AC_DEFINE([HAVE___ASHRDI3],[1],[Have host's __ashrdi3]))
1725 AC_CHECK_LIB(gcc,__divdi3,AC_DEFINE([HAVE___DIVDI3],[1],[Have host's __divdi3]))
1726 AC_CHECK_LIB(gcc,__fixdfdi,AC_DEFINE([HAVE___FIXDFDI],[1],[Have host's __fixdfdi]))
1727 AC_CHECK_LIB(gcc,__fixsfdi,AC_DEFINE([HAVE___FIXSFDI],[1],[Have host's __fixsfdi]))
1728 AC_CHECK_LIB(gcc,__floatdidf,AC_DEFINE([HAVE___FLOATDIDF],[1],[Have host's __floatdidf]))
1729 AC_CHECK_LIB(gcc,__lshrdi3,AC_DEFINE([HAVE___LSHRDI3],[1],[Have host's __lshrdi3]))
1730 AC_CHECK_LIB(gcc,__moddi3,AC_DEFINE([HAVE___MODDI3],[1],[Have host's __moddi3]))
1731 AC_CHECK_LIB(gcc,__udivdi3,AC_DEFINE([HAVE___UDIVDI3],[1],[Have host's __udivdi3]))
1732 AC_CHECK_LIB(gcc,__umoddi3,AC_DEFINE([HAVE___UMODDI3],[1],[Have host's __umoddi3]))
1733
1734 AC_CHECK_LIB(gcc,__main,AC_DEFINE([HAVE___MAIN],[1],[Have host's __main]))
1735 AC_CHECK_LIB(gcc,__cmpdi2,AC_DEFINE([HAVE___CMPDI2],[1],[Have host's __cmpdi2]))
1736fi
1737
NAKAMURA Takumi4471f822011-05-01 13:29:49 +00001738dnl Check Win32 API EnumerateLoadedModules.
1739if test "$llvm_cv_os_type" = "MingW" ; then
1740 AC_MSG_CHECKING([whether EnumerateLoadedModules() accepts new decl])
NAKAMURA Takumie5bc87c2013-01-30 01:37:55 +00001741 AC_COMPILE_IFELSE(
1742[
1743 AC_LANG_SOURCE([[
1744 #include <windows.h>
1745 #include <imagehlp.h>
1746 extern void foo(PENUMLOADED_MODULES_CALLBACK);
1747 extern void foo(BOOL(CALLBACK*)(PCSTR,ULONG_PTR,ULONG,PVOID));
1748 ]])
1749],
NAKAMURA Takumi4471f822011-05-01 13:29:49 +00001750[
1751 AC_MSG_RESULT([yes])
1752 llvm_cv_win32_elmcb_pcstr="PCSTR"
1753],
1754[
1755 AC_MSG_RESULT([no])
1756 llvm_cv_win32_elmcb_pcstr="PSTR"
1757])
1758 AC_DEFINE_UNQUOTED([WIN32_ELMCB_PCSTR],$llvm_cv_win32_elmcb_pcstr,[Type of 1st arg on ELM Callback])
1759fi
1760
Reid Spencer0241e382004-11-25 04:51:04 +00001761dnl Check for variations in the Standard C++ library and STL. These macros are
1762dnl provided by LLVM in the autoconf/m4 directory.
Brian Gaekebc9bff92004-06-22 23:43:04 +00001763AC_FUNC_ISNAN
Brian Gaeke499b01d2004-07-21 03:14:51 +00001764AC_FUNC_ISINF
Brian Gaekebc9bff92004-06-22 23:43:04 +00001765
Eric Christophere62b4412007-12-01 00:34:39 +00001766dnl Check for mmap support.We also need to know if /dev/zero is required to
1767dnl be opened for allocating RWX memory.
Anton Korobeynikov4480ec32007-01-20 07:40:26 +00001768dnl Make sure we aren't attempting to configure for an unknown system
1769if test "$llvm_cv_platform_type" = "Unix" ; then
Eric Christophere62b4412007-12-01 00:34:39 +00001770 AC_FUNC_MMAP
Anton Korobeynikov4480ec32007-01-20 07:40:26 +00001771 AC_FUNC_MMAP_FILE
1772 AC_NEED_DEV_ZERO_FOR_MMAP
Reid Spencer0241e382004-11-25 04:51:04 +00001773
Anton Korobeynikov4480ec32007-01-20 07:40:26 +00001774 if test "$ac_cv_func_mmap_fixed_mapped" = "no"
1775 then
1776 AC_MSG_WARN([mmap() of a fixed address required but not supported])
1777 fi
1778 if test "$ac_cv_func_mmap_file" = "no"
1779 then
1780 AC_MSG_WARN([mmap() of files required but not found])
1781 fi
John Criswell5ec24d82003-07-22 20:59:52 +00001782fi
1783
Owen Andersonb9509c52009-05-18 23:58:51 +00001784dnl atomic builtins are required for threading support.
Owen Andersonaf5db832009-05-19 22:18:56 +00001785AC_MSG_CHECKING(for GCC atomic builtins)
Eric Christopher84c95cc2010-07-28 20:26:34 +00001786dnl Since we'll be using these atomic builtins in C++ files we should test
1787dnl the C++ compiler.
1788AC_LANG_PUSH([C++])
Owen Andersonaf5db832009-05-19 22:18:56 +00001789AC_LINK_IFELSE(
NAKAMURA Takumie5bc87c2013-01-30 01:37:55 +00001790[
1791 AC_LANG_SOURCE([[
1792 int main() {
1793 volatile unsigned long val = 1;
1794 __sync_synchronize();
1795 __sync_val_compare_and_swap(&val, 1, 0);
1796 __sync_add_and_fetch(&val, 1);
1797 __sync_sub_and_fetch(&val, 1);
1798 return 0;
1799 }
1800 ]])
1801],
1802[
1803 AC_MSG_RESULT([yes])
1804 AC_DEFINE([LLVM_HAS_ATOMICS], [1], [Has gcc/MSVC atomic intrinsics])
1805],
1806[
1807 AC_MSG_RESULT([no])
1808 AC_DEFINE([LLVM_HAS_ATOMICS], [0], [Has gcc/MSVC atomic intrinsics])
1809 AC_MSG_WARN([LLVM will be built thread-unsafe because atomic builtins are missing])
1810])
1811AC_LANG_POP([C++])
Owen Andersonb9509c52009-05-18 23:58:51 +00001812
Reid Spencer0241e382004-11-25 04:51:04 +00001813dnl===-----------------------------------------------------------------------===
1814dnl===
1815dnl=== SECTION 9: Additional checks, variables, etc.
1816dnl===
1817dnl===-----------------------------------------------------------------------===
John Criswell7a3334d2003-07-22 19:13:20 +00001818
Nick Lewyckyfa4c2d32009-09-29 06:18:00 +00001819dnl Handle 32-bit linux systems running a 64-bit kernel.
1820dnl This has to come after section 4 because it invokes the compiler.
1821if test "$llvm_cv_os_type" = "Linux" -a "$llvm_cv_target_arch" = "x86_64" ; then
1822 AC_IS_LINUX_MIXED
1823 if test "$llvm_cv_linux_mixed" = "yes"; then
1824 llvm_cv_target_arch="x86"
1825 ARCH="x86"
1826 fi
1827fi
1828
Eric Christopher81858452011-09-20 22:26:35 +00001829dnl Check whether __dso_handle is present
Anton Korobeynikov7ac25212007-07-30 20:02:02 +00001830AC_CHECK_FUNCS([__dso_handle])
1831
Eric Christophere62b4412007-12-01 00:34:39 +00001832dnl Propagate the shared library extension that the libltdl checks did to
Reid Spencera40c6872004-11-29 12:29:58 +00001833dnl the Makefiles so we can use it there too
Rafael Espindolafd1355a2014-02-28 18:17:54 +00001834AC_SUBST(SHLIBEXT,$llvm_shlib_ext)
Brian Gaekecc3676b2004-01-21 19:38:56 +00001835
Gabor Greife0d58d32012-01-26 10:28:58 +00001836dnl Translate the various configuration directories and other basic
1837dnl information into substitutions that will end up in Makefile.config.in
1838dnl that these configured values can be used by the makefiles
Jeff Cohenc5e5b272007-01-12 18:22:38 +00001839if test "${prefix}" = "NONE" ; then
Reid Spencer40f1b132006-05-16 08:53:32 +00001840 prefix="/usr/local"
1841fi
Reid Spencercf05c122004-08-20 09:03:12 +00001842eval LLVM_PREFIX="${prefix}";
1843eval LLVM_BINDIR="${prefix}/bin";
Reid Spencer0194c9a2004-11-29 04:56:35 +00001844eval LLVM_DATADIR="${prefix}/share/llvm";
Eric Christopherb3762a02010-03-02 05:17:21 +00001845eval LLVM_DOCSDIR="${prefix}/share/doc/llvm";
Reid Spencer0194c9a2004-11-29 04:56:35 +00001846eval LLVM_ETCDIR="${prefix}/etc/llvm";
Reid Spencercf05c122004-08-20 09:03:12 +00001847eval LLVM_INCLUDEDIR="${prefix}/include";
1848eval LLVM_INFODIR="${prefix}/info";
1849eval LLVM_MANDIR="${prefix}/man";
1850LLVM_CONFIGTIME=`date`
1851AC_SUBST(LLVM_PREFIX)
1852AC_SUBST(LLVM_BINDIR)
Reid Spencercf05c122004-08-20 09:03:12 +00001853AC_SUBST(LLVM_DATADIR)
1854AC_SUBST(LLVM_DOCSDIR)
1855AC_SUBST(LLVM_ETCDIR)
1856AC_SUBST(LLVM_INCLUDEDIR)
1857AC_SUBST(LLVM_INFODIR)
1858AC_SUBST(LLVM_MANDIR)
1859AC_SUBST(LLVM_CONFIGTIME)
Reid Spencercf05c122004-08-20 09:03:12 +00001860
Daniel Dunbar9370ecf2012-03-02 16:24:21 +00001861dnl Disable embedding timestamps in the build directory, with ENABLE_TIMESTAMPS.
1862if test "${ENABLE_TIMESTAMPS}" = "0"; then
1863 LLVM_CONFIGTIME="(timestamp not enabled)"
1864fi
1865
Gabor Greife0d58d32012-01-26 10:28:58 +00001866dnl Place the various directories into the config.h file as #defines so that we
1867dnl can know about the installation paths within LLVM.
Eric Christophere62b4412007-12-01 00:34:39 +00001868AC_DEFINE_UNQUOTED(LLVM_PREFIX,"$LLVM_PREFIX",
Reid Spencer0241e382004-11-25 04:51:04 +00001869 [Installation prefix directory])
Eric Christophere62b4412007-12-01 00:34:39 +00001870AC_DEFINE_UNQUOTED(LLVM_BINDIR, "$LLVM_BINDIR",
Reid Spencer0241e382004-11-25 04:51:04 +00001871 [Installation directory for binary executables])
Eric Christophere62b4412007-12-01 00:34:39 +00001872AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DATADIR",
Reid Spencer0241e382004-11-25 04:51:04 +00001873 [Installation directory for data files])
Eric Christophere62b4412007-12-01 00:34:39 +00001874AC_DEFINE_UNQUOTED(LLVM_DOCSDIR, "$LLVM_DOCSDIR",
Reid Spencer0241e382004-11-25 04:51:04 +00001875 [Installation directory for documentation])
Eric Christophere62b4412007-12-01 00:34:39 +00001876AC_DEFINE_UNQUOTED(LLVM_ETCDIR, "$LLVM_ETCDIR",
Reid Spencer0241e382004-11-25 04:51:04 +00001877 [Installation directory for config files])
Eric Christophere62b4412007-12-01 00:34:39 +00001878AC_DEFINE_UNQUOTED(LLVM_INCLUDEDIR, "$LLVM_INCLUDEDIR",
Reid Spencer0241e382004-11-25 04:51:04 +00001879 [Installation directory for include files])
Eric Christophere62b4412007-12-01 00:34:39 +00001880AC_DEFINE_UNQUOTED(LLVM_INFODIR, "$LLVM_INFODIR",
Reid Spencer0241e382004-11-25 04:51:04 +00001881 [Installation directory for .info files])
Eric Christophere62b4412007-12-01 00:34:39 +00001882AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR",
Reid Spencer0241e382004-11-25 04:51:04 +00001883 [Installation directory for man pages])
Eric Christophere62b4412007-12-01 00:34:39 +00001884AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME",
Reid Spencer0241e382004-11-25 04:51:04 +00001885 [Time at which LLVM was configured])
Tim Northoverfee13d12013-05-04 07:36:23 +00001886AC_DEFINE_UNQUOTED(LLVM_HOST_TRIPLE, "$host",
NAKAMURA Takumi43652ae2012-07-22 03:04:52 +00001887 [Host triple LLVM will be executed on])
Sebastian Popec2fb222011-11-01 21:31:44 +00001888AC_DEFINE_UNQUOTED(LLVM_DEFAULT_TARGET_TRIPLE, "$target",
1889 [Target triple LLVM will generate code for by default])
Reid Spencer0241e382004-11-25 04:51:04 +00001890
Gabor Greife0d58d32012-01-26 10:28:58 +00001891dnl Determine which bindings to build.
Gordon Henriksend48f4592007-10-02 09:50:18 +00001892if test "$BINDINGS_TO_BUILD" = auto ; then
1893 BINDINGS_TO_BUILD=""
Peter Zotov668f9672014-10-30 08:29:45 +00001894 if test "x$OCAMLFIND" != x ; then
Gordon Henriksend48f4592007-10-02 09:50:18 +00001895 BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD"
1896 fi
Peter Collingbourne82e3e372014-10-16 22:48:02 +00001897 if test "x$GO" != x ; then
1898 if $GO run ${srcdir}/bindings/go/conftest.go ; then
1899 BINDINGS_TO_BUILD="go $BINDINGS_TO_BUILD"
1900 fi
1901 fi
Gordon Henriksend48f4592007-10-02 09:50:18 +00001902fi
1903AC_SUBST(BINDINGS_TO_BUILD,$BINDINGS_TO_BUILD)
1904
Gabor Greife0d58d32012-01-26 10:28:58 +00001905dnl Do any work necessary to ensure that bindings have what they need.
Gordon Henriksen3be1f102007-10-02 16:42:10 +00001906binding_prereqs_failed=0
1907for a_binding in $BINDINGS_TO_BUILD ; do
1908 case "$a_binding" in
1909 ocaml)
Peter Zotov668f9672014-10-30 08:29:45 +00001910 if test "x$OCAMLFIND" = x ; then
1911 AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlfind not found. Try configure OCAMLFIND=/path/to/ocamlfind])
Gordon Henriksen3be1f102007-10-02 16:42:10 +00001912 binding_prereqs_failed=1
1913 fi
Peter Zotov668f9672014-10-30 08:29:45 +00001914
1915 if $OCAMLFIND opt -version >/dev/null 2>/dev/null ; then
1916 HAVE_OCAMLOPT=1
1917 else
1918 HAVE_OCAMLOPT=0
1919 fi
1920 AC_SUBST(HAVE_OCAMLOPT)
1921
1922 if ! $OCAMLFIND query ctypes >/dev/null 2>/dev/null; then
1923 AC_MSG_WARN([--enable-bindings=ocaml specified, but ctypes is not installed])
Gordon Henriksen3be1f102007-10-02 16:42:10 +00001924 binding_prereqs_failed=1
1925 fi
Peter Zotov668f9672014-10-30 08:29:45 +00001926
1927 if $OCAMLFIND query oUnit >/dev/null 2>/dev/null; then
1928 HAVE_OCAML_OUNIT=1
1929 else
1930 HAVE_OCAML_OUNIT=0
1931 AC_MSG_WARN([--enable-bindings=ocaml specified, but OUnit 2 is not installed. Tests will not run])
1932 dnl oUnit is optional!
Gordon Henriksen3be1f102007-10-02 16:42:10 +00001933 fi
Peter Zotov668f9672014-10-30 08:29:45 +00001934 AC_SUBST(HAVE_OCAML_OUNIT)
1935
Gordon Henriksen3be1f102007-10-02 16:42:10 +00001936 if test "x$with_ocaml_libdir" != xauto ; then
1937 AC_SUBST(OCAML_LIBDIR,$with_ocaml_libdir)
1938 else
Peter Zotov668f9672014-10-30 08:29:45 +00001939 ocaml_stdlib="`"$OCAMLFIND" ocamlc -where`"
Gordon Henriksen3be1f102007-10-02 16:42:10 +00001940 if test "$LLVM_PREFIX" '<' "$ocaml_stdlib" -a "$ocaml_stdlib" '<' "$LLVM_PREFIX~"
1941 then
1942 # ocaml stdlib is beneath our prefix; use stdlib
1943 AC_SUBST(OCAML_LIBDIR,$ocaml_stdlib)
1944 else
1945 # ocaml stdlib is outside our prefix; use libdir/ocaml
Rafael Espindolab58973f2013-06-11 18:52:11 +00001946 AC_SUBST(OCAML_LIBDIR,${prefix}/lib/ocaml)
Gordon Henriksen3be1f102007-10-02 16:42:10 +00001947 fi
1948 fi
1949 ;;
Peter Collingbourne82e3e372014-10-16 22:48:02 +00001950 go)
1951 if test "x$GO" = x ; then
1952 AC_MSG_WARN([--enable-bindings=go specified, but go not found. Try configure GO=/path/to/go])
1953 binding_prereqs_failed=1
1954 else
1955 if $GO run ${srcdir}/bindings/go/conftest.go ; then
1956 :
1957 else
1958 AC_MSG_WARN([--enable-bindings=go specified, but need at least Go 1.2. Try configure GO=/path/to/go])
1959 binding_prereqs_failed=1
1960 fi
1961 fi
1962 ;;
Gordon Henriksen3be1f102007-10-02 16:42:10 +00001963 esac
1964done
1965if test "$binding_prereqs_failed" = 1 ; then
1966 AC_MSG_ERROR([Prequisites for bindings not satisfied. Fix them or use configure --disable-bindings.])
1967fi
1968
Nick Lewycky16aac992009-03-05 08:20:21 +00001969dnl Determine whether the compiler supports -fvisibility-inlines-hidden.
Daniel Dunbar61e0a822008-09-02 17:35:16 +00001970AC_CXX_USE_VISIBILITY_INLINES_HIDDEN
Gordon Henriksen3be1f102007-10-02 16:42:10 +00001971
Nick Lewycky7d01e392009-03-03 04:55:15 +00001972dnl Determine linker rpath flag
Nick Lewycky16aac992009-03-05 08:20:21 +00001973if test "$llvm_cv_link_use_r" = "yes" ; then
1974 RPATH="-Wl,-R"
1975else
1976 RPATH="-Wl,-rpath"
1977fi
Nick Lewycky7d01e392009-03-03 04:55:15 +00001978AC_SUBST(RPATH)
1979
Nick Lewycky16aac992009-03-05 08:20:21 +00001980dnl Determine linker rdynamic flag
1981if test "$llvm_cv_link_use_export_dynamic" = "yes" ; then
Bob Wilson8658b912013-08-02 22:51:06 +00001982 RDYNAMIC="-rdynamic"
Nick Lewycky16aac992009-03-05 08:20:21 +00001983else
1984 RDYNAMIC=""
1985fi
1986AC_SUBST(RDYNAMIC)
1987
Reid Spencer0241e382004-11-25 04:51:04 +00001988dnl===-----------------------------------------------------------------------===
1989dnl===
1990dnl=== SECTION 10: Specify the output files and generate it
1991dnl===
1992dnl===-----------------------------------------------------------------------===
1993
1994dnl Configure header files
Reid Spencerb48e3f82005-08-24 10:43:10 +00001995dnl WARNING: dnl If you add or remove any of the following config headers, then
Dylan Noblesmithc1209572012-01-17 02:56:49 +00001996dnl you MUST also update Makefile so that the variable FilesToConfig
Reid Spencerb48e3f82005-08-24 10:43:10 +00001997dnl contains the same list of files as AC_CONFIG_HEADERS below. This ensures the
1998dnl files can be updated automatically when their *.in sources change.
Eric Christopherf24446d2010-08-08 02:44:17 +00001999AC_CONFIG_HEADERS([include/llvm/Config/config.h include/llvm/Config/llvm-config.h])
Eric Christophere8f47dd2010-08-08 09:18:29 +00002000AH_TOP([#ifndef CONFIG_H
2001#define CONFIG_H])
2002AH_BOTTOM([#endif])
2003
Douglas Gregor1b731d52009-06-16 20:12:29 +00002004AC_CONFIG_FILES([include/llvm/Config/Targets.def])
2005AC_CONFIG_FILES([include/llvm/Config/AsmPrinters.def])
Daniel Dunbarce77aa02009-07-17 20:56:18 +00002006AC_CONFIG_FILES([include/llvm/Config/AsmParsers.def])
Daniel Dunbarf4721292009-11-25 04:30:13 +00002007AC_CONFIG_FILES([include/llvm/Config/Disassemblers.def])
Michael J. Spencer447762d2010-11-29 18:16:10 +00002008AC_CONFIG_HEADERS([include/llvm/Support/DataTypes.h])
Reid Spencer0241e382004-11-25 04:51:04 +00002009
2010dnl Configure the makefile's configuration data
2011AC_CONFIG_FILES([Makefile.config])
2012
Reid Spencer1277ba22006-08-16 00:45:38 +00002013dnl Configure the RPM spec file for LLVM
2014AC_CONFIG_FILES([llvm.spec])
2015
Peter Collingbourne5ac59df2011-05-13 03:27:56 +00002016dnl Configure doxygen's configuration file
2017AC_CONFIG_FILES([docs/doxygen.cfg])
Dylan Noblesmith57f439c2012-02-01 14:06:21 +00002018
2019dnl Configure clang, if present
Dylan Noblesmithe21a3b22012-02-04 02:41:36 +00002020if test "${clang_src_root}" = ""; then
Dylan Noblesmitha3670222012-02-02 00:54:18 +00002021 clang_src_root="$srcdir/tools/clang"
Dylan Noblesmithb5190ab2012-02-02 00:17:33 +00002022fi
Dylan Noblesmith2badba52012-02-02 00:11:14 +00002023if test -f ${clang_src_root}/README.txt; then
Chandler Carruth9db2b522014-12-29 11:58:17 +00002024 dnl Clang supports build systems which use the multilib libdir suffix.
2025 dnl The autoconf system doesn't support this so stub out that variable.
2026 AC_DEFINE_UNQUOTED(CLANG_LIBDIR_SUFFIX,"",
2027 [Multilib suffix for libdir.])
2028
Dylan Noblesmitha7a29c172012-02-04 03:00:50 +00002029 dnl Use variables to stay under 80 columns.
2030 configh="include/clang/Config/config.h"
2031 doxy="docs/doxygen.cfg"
2032 AC_CONFIG_HEADERS([tools/clang/${configh}:${clang_src_root}/${configh}.in])
2033 AC_CONFIG_FILES([tools/clang/${doxy}:${clang_src_root}/${doxy}.in])
Peter Collingbourne5ac59df2011-05-13 03:27:56 +00002034fi
2035
Torok Edwin229f8d72011-10-14 20:38:02 +00002036dnl OCaml findlib META file
2037AC_CONFIG_FILES([bindings/ocaml/llvm/META.llvm])
2038
Jordan Rose3c837ab2012-10-01 18:40:32 +00002039dnl Add --program-prefix value to Makefile.rules. Already an ARG variable.
2040test "x$program_prefix" = "xNONE" && program_prefix=""
2041AC_SUBST([program_prefix])
2042
2043
Reid Spencer0241e382004-11-25 04:51:04 +00002044dnl Do special configuration of Makefiles
Reid Spencerf3102c22005-02-24 18:31:27 +00002045AC_CONFIG_COMMANDS([setup],,[llvm_src="${srcdir}"])
Reid Spencer0241e382004-11-25 04:51:04 +00002046AC_CONFIG_MAKEFILE(Makefile)
2047AC_CONFIG_MAKEFILE(Makefile.common)
2048AC_CONFIG_MAKEFILE(examples/Makefile)
2049AC_CONFIG_MAKEFILE(lib/Makefile)
Reid Spencer0241e382004-11-25 04:51:04 +00002050AC_CONFIG_MAKEFILE(test/Makefile)
2051AC_CONFIG_MAKEFILE(test/Makefile.tests)
Bill Wendling8790e322009-01-04 23:12:21 +00002052AC_CONFIG_MAKEFILE(unittests/Makefile)
Reid Spencer0241e382004-11-25 04:51:04 +00002053AC_CONFIG_MAKEFILE(tools/Makefile)
Reid Spencer0241e382004-11-25 04:51:04 +00002054AC_CONFIG_MAKEFILE(utils/Makefile)
2055AC_CONFIG_MAKEFILE(projects/Makefile)
Gordon Henriksen54fd7572007-09-22 21:36:22 +00002056AC_CONFIG_MAKEFILE(bindings/Makefile)
2057AC_CONFIG_MAKEFILE(bindings/ocaml/Makefile.ocaml)
Reid Spencer0241e382004-11-25 04:51:04 +00002058
2059dnl Finally, crank out the output
Reid Spencer2024d0e2004-09-19 23:43:52 +00002060AC_OUTPUT