blob: a0a0a218f003ca5e3c87ab48e63c83c83dc78339 [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.
Eric Christophera1bafae2015-03-12 01:25:29 +000054AC_SUBST(LLVM_COPYRIGHT,["Copyright (c) 2003-2015 University of Illinois at Urbana-Champaign."])
55AC_COPYRIGHT([Copyright (c) 2003-2015 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
Jonathan Roelofs949d55d2015-05-04 02:04:54 +000076dnl Quit if it is an in-source build
77if test ${srcdir} == "." ; then
78 AC_MSG_WARN([**************************************************************************************])
79 AC_MSG_WARN([* *])
80 AC_MSG_WARN([* WARNING *])
81 AC_MSG_WARN([* *])
82 AC_MSG_WARN([* In-source builds are deprecated. *])
83 AC_MSG_WARN([* *])
84 AC_MSG_WARN([* Please configure from a separate build directory! *])
85 AC_MSG_WARN([* *])
86 AC_MSG_WARN([**************************************************************************************])
87fi
88
Patrik Hagglundd91ae4d2013-02-04 08:15:53 +000089dnl Default to empty (i.e. assigning the null string to) CFLAGS and CXXFLAGS,
90dnl instead of the autoconf default (for example, '-g -O2' for CC=gcc).
Patrik Hagglund98578472013-09-24 11:38:45 +000091: ${CFLAGS=}
92: ${CXXFLAGS=}
Patrik Hagglundd91ae4d2013-02-04 08:15:53 +000093
Eric Christopher58839712011-09-16 20:36:25 +000094dnl We need to check for the compiler up here to avoid anything else
95dnl starting with a different one.
Chandler Carruthb4dd3c62014-01-14 03:46:00 +000096AC_PROG_CC(clang gcc)
97AC_PROG_CXX(clang++ g++)
Eric Christopher58839712011-09-16 20:36:25 +000098AC_PROG_CPP
99
Dmitri Gribenko06358bd2013-01-09 15:25:30 +0000100dnl If CXX is Clang, check that it can find and parse C++ standard library
101dnl headers.
102if test "$CXX" = "clang++" ; then
103 AC_MSG_CHECKING([whether clang works])
104 AC_LANG_PUSH([C++])
105 dnl Note that space between 'include' and '(' is required. There's a broken
106 dnl regex in aclocal that otherwise will think that we call m4's include
107 dnl builtin.
108 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <limits>
109#if __has_include (<cxxabi.h>)
110#include <cxxabi.h>
111#endif
112#if __has_include (<unwind.h>)
113#include <unwind.h>
114#endif
115]])],
116[
117 AC_MSG_RESULT([yes])
118],
119[
120 AC_MSG_RESULT([no])
Jonathan Roelofscf1ba1d2015-04-29 20:06:41 +0000121 AC_MSG_ERROR([Selected compiler could not find or parse C++ standard library headers. Rerun with CC=c-compiler CXX=c++-compiler LLVM_SRC_DIR/configure ...])
Dmitri Gribenko06358bd2013-01-09 15:25:30 +0000122])
123 AC_LANG_POP([C++])
124fi
125
Chandler Carruth75a65452014-01-14 05:02:38 +0000126dnl Set up variables that track whether the host compiler is GCC or Clang where
127dnl we can effectively sanity check them. We don't try to sanity check all the
128dnl other possible compilers.
129AC_MSG_CHECKING([whether GCC or Clang is our host compiler])
130AC_LANG_PUSH([C++])
131llvm_cv_cxx_compiler=unknown
Chandler Carruthf8c6ccf2014-01-15 10:31:15 +0000132AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#if ! __clang__
133 #error
134 #endif
135 ]])],
Chandler Carruth75a65452014-01-14 05:02:38 +0000136 llvm_cv_cxx_compiler=clang,
Chandler Carruthf8c6ccf2014-01-15 10:31:15 +0000137 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#if ! __GNUC__
138 #error
139 #endif
140 ]])],
Chandler Carruth75a65452014-01-14 05:02:38 +0000141 llvm_cv_cxx_compiler=gcc, [])])
142AC_LANG_POP([C++])
143AC_MSG_RESULT([${llvm_cv_cxx_compiler}])
144
Reid Spencer0241e382004-11-25 04:51:04 +0000145dnl Configure all of the projects present in our source tree. While we could
146dnl just AC_CONFIG_SUBDIRS on the set of directories in projects that have a
147dnl configure script, that usage of the AC_CONFIG_SUBDIRS macro is deprecated.
148dnl Instead we match on the known projects.
John Criswellf369e772010-03-19 21:31:39 +0000149
150dnl
151dnl One tricky part of doing this is that some projects depend upon other
152dnl projects. For example, several projects rely upon the LLVM test suite.
153dnl We want to configure those projects first so that their object trees are
154dnl created before running the configure scripts of projects that depend upon
155dnl them.
156dnl
157
John Criswellf369e772010-03-19 21:31:39 +0000158dnl Several projects use the LLVM test suite, so configure it next.
159if test -d ${srcdir}/projects/test-suite ; then
160 AC_CONFIG_SUBDIRS([projects/test-suite])
161fi
162
163dnl llvm-test is the old name of the test-suite, kept here for backwards
164dnl compatibility
165if test -d ${srcdir}/projects/llvm-test ; then
166 AC_CONFIG_SUBDIRS([projects/llvm-test])
167fi
168
169dnl Some projects use poolalloc; configure that next
170if test -d ${srcdir}/projects/poolalloc ; then
171 AC_CONFIG_SUBDIRS([projects/poolalloc])
172fi
173
174if test -d ${srcdir}/projects/llvm-poolalloc ; then
175 AC_CONFIG_SUBDIRS([projects/llvm-poolalloc])
176fi
177
178dnl Check for all other projects
John Criswell297baed2003-11-25 20:36:46 +0000179for i in `ls ${srcdir}/projects`
180do
Reid Spencer90de7fb2004-09-07 16:26:18 +0000181 if test -d ${srcdir}/projects/${i} ; then
182 case ${i} in
John Criswell4d377d82010-02-25 22:57:19 +0000183 safecode) AC_CONFIG_SUBDIRS([projects/safecode]) ;;
Daniel Dunbar7ce849d2011-12-07 22:07:03 +0000184 compiler-rt) ;;
John Criswell4e61b252010-03-25 13:59:09 +0000185 test-suite) ;;
186 llvm-test) ;;
187 poolalloc) ;;
188 llvm-poolalloc) ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000189 *)
Alkis Evlogimenos26227282004-09-27 07:35:19 +0000190 AC_MSG_WARN([Unknown project (${i}) won't be configured automatically])
Reid Spencerc6f9e0f2004-09-21 17:12:35 +0000191 ;;
Reid Spencer90de7fb2004-09-07 16:26:18 +0000192 esac
John Criswell297baed2003-11-25 20:36:46 +0000193 fi
194done
John Criswellee7ebdc2003-09-30 16:31:48 +0000195
Tobias Grosserea9dca42010-10-30 00:54:26 +0000196dnl Disable the build of polly, even if it is checked out into tools/polly.
197AC_ARG_ENABLE(polly,
198 AS_HELP_STRING([--enable-polly],
199 [Use polly if available (default is YES)]),,
200 enableval=default)
201case "$enableval" in
202 yes) AC_SUBST(ENABLE_POLLY,[1]) ;;
203 no) AC_SUBST(ENABLE_POLLY,[0]) ;;
204 default) AC_SUBST(ENABLE_POLLY,[1]) ;;
205 *) AC_MSG_ERROR([Invalid setting for --enable-polly. Use "yes" or "no"]) ;;
206esac
207
208
209dnl Check if polly is checked out into tools/polly and configure it if
210dnl available.
211if (test -d ${srcdir}/tools/polly) && (test $ENABLE_POLLY -eq 1) ; then
212 AC_SUBST(LLVM_HAS_POLLY,1)
213 AC_CONFIG_SUBDIRS([tools/polly])
214fi
215
Reid Spencer0241e382004-11-25 04:51:04 +0000216dnl===-----------------------------------------------------------------------===
217dnl===
218dnl=== SECTION 2: Architecture, target, and host checks
219dnl===
220dnl===-----------------------------------------------------------------------===
John Criswell9537b042004-07-23 15:40:57 +0000221
Reid Spencer0241e382004-11-25 04:51:04 +0000222dnl Check the target for which we're compiling and the host that will do the
Eric Christophere62b4412007-12-01 00:34:39 +0000223dnl compilations. This will tell us which LLVM compiler will be used for
224dnl compiling SSA into object code. This needs to be done early because
Reid Spencer0241e382004-11-25 04:51:04 +0000225dnl following tests depend on it.
John Criswell7a3334d2003-07-22 19:13:20 +0000226AC_CANONICAL_TARGET
227
Reid Spencer0241e382004-11-25 04:51:04 +0000228dnl Determine the platform type and cache its value. This helps us configure
229dnl the System library to the correct build platform.
Reid Spencer0aa9d002006-07-26 21:14:56 +0000230AC_CACHE_CHECK([type of operating system we're going to host on],
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000231 [llvm_cv_os_type],
Reid Spencer0aa9d002006-07-26 21:14:56 +0000232[case $host in
Eric Christophere62b4412007-12-01 00:34:39 +0000233 *-*-aix*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000234 llvm_cv_link_all_option="-Wl,--whole-archive"
235 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Eric Christophere62b4412007-12-01 00:34:39 +0000236 llvm_cv_os_type="AIX"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000237 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000238 *-*-irix*)
Reid Spencere9a40562006-08-22 22:21:38 +0000239 llvm_cv_link_all_option="-Wl,--whole-archive"
240 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Eric Christophere62b4412007-12-01 00:34:39 +0000241 llvm_cv_os_type="IRIX"
Reid Spencere9a40562006-08-22 22:21:38 +0000242 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000243 *-*-cygwin*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000244 llvm_cv_link_all_option="-Wl,--whole-archive"
245 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Eric Christophere62b4412007-12-01 00:34:39 +0000246 llvm_cv_os_type="Cygwin"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000247 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000248 *-*-darwin*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000249 llvm_cv_link_all_option="-Wl,-all_load"
Chris Lattner42e35d42008-02-05 19:43:40 +0000250 llvm_cv_no_link_all_option="-Wl,-noall_load"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000251 llvm_cv_os_type="Darwin"
252 llvm_cv_platform_type="Unix" ;;
Chris Lattnerc86cdc72010-04-09 20:45:04 +0000253 *-*-minix*)
254 llvm_cv_link_all_option="-Wl,-all_load"
255 llvm_cv_no_link_all_option="-Wl,-noall_load"
256 llvm_cv_os_type="Minix"
257 llvm_cv_platform_type="Unix" ;;
Sylvestre Ledru93a491b2013-07-01 08:07:52 +0000258 *-*-freebsd*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000259 llvm_cv_link_all_option="-Wl,--whole-archive"
260 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Eric Christophere62b4412007-12-01 00:34:39 +0000261 llvm_cv_os_type="FreeBSD"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000262 llvm_cv_platform_type="Unix" ;;
Sylvestre Ledru93a491b2013-07-01 08:07:52 +0000263 *-*-kfreebsd-gnu)
264 llvm_cv_link_all_option="-Wl,--whole-archive"
265 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
266 llvm_cv_os_type="GNU/kFreeBSD"
267 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000268 *-*-openbsd*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000269 llvm_cv_link_all_option="-Wl,--whole-archive"
270 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Eric Christophere62b4412007-12-01 00:34:39 +0000271 llvm_cv_os_type="OpenBSD"
Reid Spencer48b92032006-04-19 23:47:16 +0000272 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000273 *-*-netbsd*)
Reid Spencer78adb9d2007-01-20 20:43:35 +0000274 llvm_cv_link_all_option="-Wl,--whole-archive"
275 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Eric Christophere62b4412007-12-01 00:34:39 +0000276 llvm_cv_os_type="NetBSD"
Reid Spencer78adb9d2007-01-20 20:43:35 +0000277 llvm_cv_platform_type="Unix" ;;
Matthijs Kooijmanf61fd542008-06-26 10:36:58 +0000278 *-*-dragonfly*)
279 llvm_cv_link_all_option="-Wl,--whole-archive"
280 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
281 llvm_cv_os_type="DragonFly"
282 llvm_cv_platform_type="Unix" ;;
Eric Christopher83f88242015-02-26 19:46:32 +0000283 *-*-bitrig*)
284 llvm_cv_link_all_option="-Wl,--whole-archive"
285 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
286 llvm_cv_os_type="Bitrig"
287 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000288 *-*-hpux*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000289 llvm_cv_link_all_option="-Wl,--whole-archive"
290 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Eric Christophere62b4412007-12-01 00:34:39 +0000291 llvm_cv_os_type="HP-UX"
Duraid Madina5ea2ba82005-05-16 05:39:00 +0000292 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000293 *-*-interix*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000294 llvm_cv_link_all_option="-Wl,--whole-archive"
295 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000296 llvm_cv_os_type="Interix"
297 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000298 *-*-linux*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000299 llvm_cv_link_all_option="-Wl,--whole-archive"
300 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000301 llvm_cv_os_type="Linux"
302 llvm_cv_platform_type="Unix" ;;
Rafael Espindola4977edd2011-12-22 14:01:18 +0000303 *-*-gnu*)
304 llvm_cv_link_all_option="-Wl,--whole-archive"
305 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
306 llvm_cv_os_type="GNU"
307 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000308 *-*-solaris*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000309 llvm_cv_link_all_option="-Wl,-z,allextract"
310 llvm_cv_no_link_all_option="-Wl,-z,defaultextract"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000311 llvm_cv_os_type="SunOS"
312 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000313 *-*-win32*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000314 llvm_cv_link_all_option="-Wl,--whole-archive"
315 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000316 llvm_cv_os_type="Win32"
317 llvm_cv_platform_type="Win32" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000318 *-*-mingw*)
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000319 llvm_cv_link_all_option="-Wl,--whole-archive"
320 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
Eric Christophere62b4412007-12-01 00:34:39 +0000321 llvm_cv_os_type="MingW"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000322 llvm_cv_platform_type="Win32" ;;
Edward O'Callaghan8227b052009-10-12 04:57:20 +0000323 *-*-haiku*)
324 llvm_cv_link_all_option="-Wl,--whole-archive"
325 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
326 llvm_cv_os_type="Haiku"
Eric Christopherb3762a02010-03-02 05:17:21 +0000327 llvm_cv_platform_type="Unix" ;;
Anton Korobeynikov90e17e72009-08-18 00:40:33 +0000328 *-unknown-eabi*)
329 llvm_cv_link_all_option="-Wl,--whole-archive"
330 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
331 llvm_cv_os_type="Freestanding"
332 llvm_cv_platform_type="Unix" ;;
333 *-unknown-elf*)
334 llvm_cv_link_all_option="-Wl,--whole-archive"
335 llvm_cv_no_link_all_option="-Wl,--no-whole-archive"
336 llvm_cv_os_type="Freestanding"
337 llvm_cv_platform_type="Unix" ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000338 *)
339 llvm_cv_link_all_option=""
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000340 llvm_cv_no_link_all_option=""
Eric Christophere62b4412007-12-01 00:34:39 +0000341 llvm_cv_os_type="Unknown"
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000342 llvm_cv_platform_type="Unknown" ;;
Reid Spencer0241e382004-11-25 04:51:04 +0000343esac])
John Criswell7a3334d2003-07-22 19:13:20 +0000344
Anton Korobeynikov90e17e72009-08-18 00:40:33 +0000345AC_CACHE_CHECK([type of operating system we're going to target],
346 [llvm_cv_target_os_type],
347[case $target in
348 *-*-aix*)
349 llvm_cv_target_os_type="AIX" ;;
350 *-*-irix*)
351 llvm_cv_target_os_type="IRIX" ;;
352 *-*-cygwin*)
353 llvm_cv_target_os_type="Cygwin" ;;
354 *-*-darwin*)
355 llvm_cv_target_os_type="Darwin" ;;
Chris Lattnerc86cdc72010-04-09 20:45:04 +0000356 *-*-minix*)
357 llvm_cv_target_os_type="Minix" ;;
Sylvestre Ledru93a491b2013-07-01 08:07:52 +0000358 *-*-freebsd*)
Anton Korobeynikov90e17e72009-08-18 00:40:33 +0000359 llvm_cv_target_os_type="FreeBSD" ;;
Sylvestre Ledru93a491b2013-07-01 08:07:52 +0000360 *-*-kfreebsd-gnu)
361 llvm_cv_target_os_type="GNU/kFreeBSD" ;;
Anton Korobeynikov90e17e72009-08-18 00:40:33 +0000362 *-*-openbsd*)
363 llvm_cv_target_os_type="OpenBSD" ;;
364 *-*-netbsd*)
365 llvm_cv_target_os_type="NetBSD" ;;
366 *-*-dragonfly*)
367 llvm_cv_target_os_type="DragonFly" ;;
Eric Christopher83f88242015-02-26 19:46:32 +0000368 *-*-bitrig*)
369 llvm_cv_target_os_type="Bitrig" ;;
Anton Korobeynikov90e17e72009-08-18 00:40:33 +0000370 *-*-hpux*)
371 llvm_cv_target_os_type="HP-UX" ;;
372 *-*-interix*)
373 llvm_cv_target_os_type="Interix" ;;
374 *-*-linux*)
375 llvm_cv_target_os_type="Linux" ;;
Sylvestre Ledrue8235fe2012-04-05 19:34:15 +0000376 *-*-gnu*)
377 llvm_cv_target_os_type="GNU" ;;
Anton Korobeynikov90e17e72009-08-18 00:40:33 +0000378 *-*-solaris*)
379 llvm_cv_target_os_type="SunOS" ;;
380 *-*-win32*)
381 llvm_cv_target_os_type="Win32" ;;
382 *-*-mingw*)
383 llvm_cv_target_os_type="MingW" ;;
Edward O'Callaghan8227b052009-10-12 04:57:20 +0000384 *-*-haiku*)
Eric Christopherb3762a02010-03-02 05:17:21 +0000385 llvm_cv_target_os_type="Haiku" ;;
Douglas Gregorde3c9262011-07-01 22:41:06 +0000386 *-*-rtems*)
387 llvm_cv_target_os_type="RTEMS" ;;
Ivan Krasin44306e22011-08-18 22:54:21 +0000388 *-*-nacl*)
389 llvm_cv_target_os_type="NativeClient" ;;
Anton Korobeynikov90e17e72009-08-18 00:40:33 +0000390 *-unknown-eabi*)
391 llvm_cv_target_os_type="Freestanding" ;;
Alex Rosenberg93460672015-01-26 15:25:05 +0000392 *-*-ps4)
393 llvm_cv_target_os_type="PS4" ;;
Anton Korobeynikov90e17e72009-08-18 00:40:33 +0000394 *)
395 llvm_cv_target_os_type="Unknown" ;;
396esac])
397
Reid Spencer1daffa52004-08-31 01:34:10 +0000398dnl Make sure we aren't attempting to configure for an unknown system
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000399if test "$llvm_cv_os_type" = "Unknown" ; then
400 AC_MSG_ERROR([Operating system is unknown, configure can't continue])
Reid Spencer1daffa52004-08-31 01:34:10 +0000401fi
402
Reid Spencer0241e382004-11-25 04:51:04 +0000403dnl Set the "OS" Makefile variable based on the platform type so the
404dnl makefile can configure itself to specific build hosts
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000405AC_SUBST(OS,$llvm_cv_os_type)
Anton Korobeynikov90e17e72009-08-18 00:40:33 +0000406AC_SUBST(HOST_OS,$llvm_cv_os_type)
407AC_SUBST(TARGET_OS,$llvm_cv_target_os_type)
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000408
Reid Spencer0b52e2f2006-08-04 18:18:08 +0000409dnl Set the LINKALL and NOLINKALL Makefile variables based on the platform
410AC_SUBST(LINKALL,$llvm_cv_link_all_option)
411AC_SUBST(NOLINKALL,$llvm_cv_no_link_all_option)
412
Dan Gohmana3ed0712010-08-04 16:48:36 +0000413dnl Set the "LLVM_ON_*" variables based on llvm_cv_platform_type
Michael J. Spencer447762d2010-11-29 18:16:10 +0000414dnl This is used by lib/Support to determine the basic kind of implementation
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000415dnl to use.
416case $llvm_cv_platform_type in
Eric Christophere62b4412007-12-01 00:34:39 +0000417 Unix)
418 AC_DEFINE([LLVM_ON_UNIX],[1],[Define if this is Unixish platform])
Reid Spencerd7287e02004-12-31 22:54:28 +0000419 AC_SUBST(LLVM_ON_UNIX,[1])
420 AC_SUBST(LLVM_ON_WIN32,[0])
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000421 ;;
Eric Christophere62b4412007-12-01 00:34:39 +0000422 Win32)
423 AC_DEFINE([LLVM_ON_WIN32],[1],[Define if this is Win32ish platform])
Reid Spencerd7287e02004-12-31 22:54:28 +0000424 AC_SUBST(LLVM_ON_UNIX,[0])
425 AC_SUBST(LLVM_ON_WIN32,[1])
Reid Spencerd3d6d9d2004-12-24 06:29:05 +0000426 ;;
427esac
Reid Spencer0241e382004-11-25 04:51:04 +0000428
John Criswell7a3334d2003-07-22 19:13:20 +0000429dnl Determine what our target architecture is and configure accordingly.
430dnl This will allow Makefiles to make a distinction between the hardware and
431dnl the OS.
Reid Spencer0241e382004-11-25 04:51:04 +0000432AC_CACHE_CHECK([target architecture],[llvm_cv_target_arch],
433[case $target in
Reid Spencer0a54a582004-12-23 21:08:52 +0000434 i?86-*) llvm_cv_target_arch="x86" ;;
Reid Spencer78d9e872004-12-28 07:56:14 +0000435 amd64-* | x86_64-*) llvm_cv_target_arch="x86_64" ;;
Reid Spencer0a54a582004-12-23 21:08:52 +0000436 sparc*-*) llvm_cv_target_arch="Sparc" ;;
437 powerpc*-*) llvm_cv_target_arch="PowerPC" ;;
Tim Northover3b0846e2014-05-24 12:50:23 +0000438 arm64*-*) llvm_cv_target_arch="AArch64" ;;
Nick Lewycky13590cb2009-04-18 18:11:26 +0000439 arm*-*) llvm_cv_target_arch="ARM" ;;
Tim Northover3b0846e2014-05-24 12:50:23 +0000440 aarch64*-*) llvm_cv_target_arch="AArch64" ;;
Simon Atanasyanc2cccd72012-10-29 19:49:45 +0000441 mips-* | mips64-*) llvm_cv_target_arch="Mips" ;;
442 mipsel-* | mips64el-*) llvm_cv_target_arch="Mips" ;;
Richard Osborneca08e062008-11-07 10:59:00 +0000443 xcore-*) llvm_cv_target_arch="XCore" ;;
Anton Korobeynikov10138002009-05-03 12:57:15 +0000444 msp430-*) llvm_cv_target_arch="MSP430" ;;
Tony Linthicum1213a7a2011-12-12 21:14:40 +0000445 hexagon-*) llvm_cv_target_arch="Hexagon" ;;
Justin Holewinskiae556d32012-05-04 20:18:50 +0000446 nvptx-*) llvm_cv_target_arch="NVPTX" ;;
Ulrich Weigand1ceebf62013-05-06 16:22:34 +0000447 s390x-*) llvm_cv_target_arch="SystemZ" ;;
Reid Spencer0a54a582004-12-23 21:08:52 +0000448 *) llvm_cv_target_arch="Unknown" ;;
Reid Spencer0241e382004-11-25 04:51:04 +0000449esac])
John Criswell7a3334d2003-07-22 19:13:20 +0000450
Reid Spencer0241e382004-11-25 04:51:04 +0000451if test "$llvm_cv_target_arch" = "Unknown" ; then
452 AC_MSG_WARN([Configuring LLVM for an unknown target archicture])
453fi
454
Gabor Greife0d58d32012-01-26 10:28:58 +0000455dnl Determine the LLVM native architecture for the target
Douglas Gregor7cbf8162009-06-17 00:42:33 +0000456case "$llvm_cv_target_arch" in
457 x86) LLVM_NATIVE_ARCH="X86" ;;
458 x86_64) LLVM_NATIVE_ARCH="X86" ;;
459 *) LLVM_NATIVE_ARCH="$llvm_cv_target_arch" ;;
460esac
Mikhail Glushenkovd871cbc2009-07-03 03:52:07 +0000461
Reid Spencer0241e382004-11-25 04:51:04 +0000462dnl Define a substitution, ARCH, for the target architecture
463AC_SUBST(ARCH,$llvm_cv_target_arch)
NAKAMURA Takumi84e85302014-02-09 16:36:42 +0000464AC_SUBST(LLVM_NATIVE_ARCH,$LLVM_NATIVE_ARCH)
Reid Spencer0241e382004-11-25 04:51:04 +0000465
Danil Malyshev7c5db452012-05-17 21:07:47 +0000466dnl Determine what our host architecture.
467dnl This will allow MCJIT regress tests runs only for supported
468dnl platforms.
469case $host in
470 i?86-*) host_arch="x86" ;;
471 amd64-* | x86_64-*) host_arch="x86_64" ;;
472 sparc*-*) host_arch="Sparc" ;;
473 powerpc*-*) host_arch="PowerPC" ;;
Tim Northover3b0846e2014-05-24 12:50:23 +0000474 arm64*-*) host_arch="AArch64" ;;
Danil Malyshev7c5db452012-05-17 21:07:47 +0000475 arm*-*) host_arch="ARM" ;;
Tim Northover3b0846e2014-05-24 12:50:23 +0000476 aarch64*-*) host_arch="AArch64" ;;
Simon Atanasyanc2cccd72012-10-29 19:49:45 +0000477 mips-* | mips64-*) host_arch="Mips" ;;
478 mipsel-* | mips64el-*) host_arch="Mips" ;;
Danil Malyshev7c5db452012-05-17 21:07:47 +0000479 xcore-*) host_arch="XCore" ;;
480 msp430-*) host_arch="MSP430" ;;
481 hexagon-*) host_arch="Hexagon" ;;
Ulrich Weigand1ceebf62013-05-06 16:22:34 +0000482 s390x-*) host_arch="SystemZ" ;;
Danil Malyshev7c5db452012-05-17 21:07:47 +0000483 *) host_arch="Unknown" ;;
484esac
485
486if test "$host_arch" = "Unknown" ; then
487 AC_MSG_WARN([Configuring LLVM for an unknown host archicture])
488fi
489
490AC_SUBST(HOST_ARCH,$host_arch)
491
Gabor Greife0d58d32012-01-26 10:28:58 +0000492dnl Check for build platform executable suffix if we're cross-compiling
Reid Spencer0aa9d002006-07-26 21:14:56 +0000493if test "$cross_compiling" = yes; then
Eric Christophere62b4412007-12-01 00:34:39 +0000494 AC_SUBST(LLVM_CROSS_COMPILING, [1])
Reid Spencer0aa9d002006-07-26 21:14:56 +0000495 AC_BUILD_EXEEXT
Jim Grosbach009db892008-10-02 22:56:44 +0000496 ac_build_prefix=${build_alias}-
497 AC_CHECK_PROG(BUILD_CXX, ${ac_build_prefix}g++, ${ac_build_prefix}g++)
498 if test -z "$BUILD_CXX"; then
499 AC_CHECK_PROG(BUILD_CXX, g++, g++)
500 if test -z "$BUILD_CXX"; then
501 AC_CHECK_PROG(BUILD_CXX, c++, c++, , , /usr/ucb/c++)
502 fi
503 fi
Reid Spencer0aa9d002006-07-26 21:14:56 +0000504else
505 AC_SUBST(LLVM_CROSS_COMPILING, [0])
506fi
507
Dan Gohmande75469c2010-08-04 16:25:01 +0000508dnl Check to see if there's a .svn or .git directory indicating that this
509dnl build is being done from a checkout. This sets up several defaults for
510dnl the command line switches. When we build with a checkout directory,
Nick Lewycky9a196c02009-04-01 04:39:25 +0000511dnl we get a debug with assertions turned on. Without, we assume a source
512dnl release and we get an optimized build without assertions.
513dnl See --enable-optimized and --enable-assertions below
Dan Gohmande75469c2010-08-04 16:25:01 +0000514if test -d ".svn" -o -d "${srcdir}/.svn" -o -d ".git" -o -d "${srcdir}/.git"; then
Reid Spencerb65ade82006-04-07 16:01:51 +0000515 cvsbuild="yes"
516 optimize="no"
Reid Spencerb65ade82006-04-07 16:01:51 +0000517 AC_SUBST(CVSBUILD,[[CVSBUILD=1]])
518else
519 cvsbuild="no"
520 optimize="yes"
Reid Spencerb65ade82006-04-07 16:01:51 +0000521fi
522
Reid Spencer0241e382004-11-25 04:51:04 +0000523dnl===-----------------------------------------------------------------------===
524dnl===
525dnl=== SECTION 3: Command line arguments for the configure script.
526dnl===
527dnl===-----------------------------------------------------------------------===
528
Eric Christopher1094ded2011-11-11 22:51:42 +0000529dnl --enable-libcpp : check whether or not to use libc++ on the command line
530AC_ARG_ENABLE(libcpp,
531 AS_HELP_STRING([--enable-libcpp],
532 [Use libc++ if available (default is NO)]),,
533 enableval=default)
534case "$enableval" in
535 yes) AC_SUBST(ENABLE_LIBCPP,[1]) ;;
536 no) AC_SUBST(ENABLE_LIBCPP,[0]) ;;
537 default) AC_SUBST(ENABLE_LIBCPP,[0]);;
538 *) AC_MSG_ERROR([Invalid setting for --enable-libcpp. Use "yes" or "no"]) ;;
539esac
540
Chandler Carruth7206eae2014-01-15 19:19:13 +0000541dnl Check both GCC and Clang for sufficiently modern versions. These checks can
542dnl be bypassed by passing a flag if necessary on a platform. We have to do
543dnl these checks here so that we have the configuration of the standard C++
544dnl library finished.
545AC_ARG_ENABLE(compiler-version-checks,
546 AS_HELP_STRING([--enable-compiler-version-checks],
547 [Check the version of the host compiler (default is YES)]),,
548 enableval=default)
549case "$enableval" in
550 no)
551 ;;
552 yes|default)
553 AC_LANG_PUSH([C++])
554 case "$llvm_cv_cxx_compiler" in
555 clang)
556 AC_MSG_CHECKING([whether Clang is new enough])
557 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
558#if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 1)
559#error This version of Clang is too old to build LLVM
560#endif
561]])],
562 [AC_MSG_RESULT([yes])],
563 [AC_MSG_RESULT([no])
564 AC_MSG_ERROR([
565The selected Clang compiler is not new enough to build LLVM. Please upgrade to
566Clang 3.1. You may pass --disable-compiler-version-checks to configure to
567bypass these sanity checks.])])
568
569 dnl Note that libstdc++4.6 is known broken for C++11 builds. The errors
570 dnl are sometimes deeply confusing though. Here we test for an obvious
571 dnl incomplete feature in 4.6's standard library that was completed in
Chandler Carrutheba44ea2014-01-15 21:21:48 +0000572 dnl 4.7's. We also have to disable this test if 'ENABLE_LIBCPP' is set
573 dnl because the enable flags don't actually fix CXXFLAGS, they rely on
574 dnl that happening in the Makefile.
575 if test "$ENABLE_LIBCPP" -eq 0 ; then
576 AC_MSG_CHECKING([whether Clang will select a modern C++ standard library])
577 llvm_cv_old_cxxflags="$CXXFLAGS"
578 CXXFLAGS="$CXXFLAGS -std=c++0x"
579 AC_LINK_IFELSE([AC_LANG_SOURCE([[
Chandler Carruth7206eae2014-01-15 19:19:13 +0000580#include <atomic>
581std::atomic<float> x(0.0f);
582int main() { return (float)x; }
583]])],
Chandler Carrutheba44ea2014-01-15 21:21:48 +0000584 [AC_MSG_RESULT([yes])],
585 [AC_MSG_RESULT([no])
586 AC_MSG_ERROR([
Chandler Carruth7206eae2014-01-15 19:19:13 +0000587We detected a missing feature in the standard C++ library that was known to be
588missing in libstdc++4.6 and implemented in libstdc++4.7. There are numerous
589C++11 problems with 4.6's library, and we don't support GCCs or libstdc++ older
590than 4.7. You will need to update your system and ensure Clang uses the newer
591standard library.
592
593If this error is incorrect or you need to force things to work, you may pass
594'--disable-compiler-version-checks' to configure to bypass this test.])])
Chandler Carrutheba44ea2014-01-15 21:21:48 +0000595 CXXFLAGS="$llvm_cv_old_cxxflags"
596 fi
Chandler Carruth7206eae2014-01-15 19:19:13 +0000597 ;;
598 gcc)
599 AC_MSG_CHECKING([whether GCC is new enough])
600 AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
601#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7)
602#error This version of GCC is too old to build LLVM
603#endif
604]])],
605 [AC_MSG_RESULT([yes])],
606 [AC_MSG_RESULT([no])
607 AC_MSG_ERROR([
608The selected GCC C++ compiler is not new enough to build LLVM. Please upgrade
609to GCC 4.7. You may pass --disable-compiler-version-checks to configure to
610bypass these sanity checks.])])
611 ;;
612 unknown)
613 ;;
614 esac
615 AC_LANG_POP([C++])
616 ;;
617 *)
618 AC_MSG_ERROR([Invalid setting for --enable-compiler-version-checks. Use "yes" or "no"])
619 ;;
620esac
621
Chandler Carruthbbae5122014-03-01 03:33:08 +0000622dnl --enable-cxx1y : check whether or not to use -std=c++1y on the command line
623AC_ARG_ENABLE(cxx1y,
624 AS_HELP_STRING([--enable-cxx1y],
625 [Use c++1y if available (default is NO)]),,
Eric Christopher04e35972012-08-03 19:47:14 +0000626 enableval=default)
627case "$enableval" in
Chandler Carruthbbae5122014-03-01 03:33:08 +0000628 yes) AC_SUBST(ENABLE_CXX1Y,[1]) ;;
629 no) AC_SUBST(ENABLE_CXX1Y,[0]) ;;
630 default) AC_SUBST(ENABLE_CXX1Y,[0]);;
631 *) AC_MSG_ERROR([Invalid setting for --enable-cxx1y. Use "yes" or "no"]) ;;
Eric Christopher04e35972012-08-03 19:47:14 +0000632esac
633
Eric Christopherc64a54e2014-03-05 00:43:38 +0000634dnl --enable-split-dwarf : check whether or not to use -gsplit-dwarf on the command
Eric Christopherf1bd7702013-06-25 01:12:25 +0000635dnl line
636AC_ARG_ENABLE(split-dwarf,
637 AS_HELP_STRING([--enable-split-dwarf],
638 [Use split-dwarf if available (default is NO)]),,
639 enableval=default)
640case "$enableval" in
641 yes) AC_SUBST(ENABLE_SPLIT_DWARF,[1]) ;;
642 no) AC_SUBST(ENABLE_SPLIT_DWARF,[0]) ;;
643 default) AC_SUBST(ENABLE_SPLIT_DWARF,[0]);;
644 *) AC_MSG_ERROR([Invalid setting for --enable-split-dwarf. Use "yes" or "no"]) ;;
645esac
646
Roman Divackyf2bb66b2012-12-13 16:07:19 +0000647dnl --enable-clang-arcmt: check whether to enable clang arcmt
648clang_arcmt="yes"
649AC_ARG_ENABLE(clang-arcmt,
650 AS_HELP_STRING([--enable-clang-arcmt],
651 [Enable building of clang ARCMT (default is YES)]),
652 clang_arcmt="$enableval",
653 enableval="yes")
654case "$enableval" in
655 yes) AC_SUBST(ENABLE_CLANG_ARCMT,[1]) ;;
656 no) AC_SUBST(ENABLE_CLANG_ARCMT,[0]) ;;
657 default) AC_SUBST(ENABLE_CLANG_ARCMT,[1]);;
658 *) AC_MSG_ERROR([Invalid setting for --enable-clang-arcmt. Use "yes" or "no"]) ;;
659esac
660
Rafael Espindolae33f06c2014-03-10 16:58:35 +0000661dnl --enable-clang-plugin-support: check whether to enable plugins in clang
662clang_plugin_support="yes"
663AC_ARG_ENABLE(clang-plugin-support,
664 AS_HELP_STRING([--enable-clang-plugin-support],
665 [Enable plugin support in clang (default is YES)]),
666 clang_plugin_support="$enableval",
667 enableval="yes")
668case "$enableval" in
669 yes) AC_SUBST(CLANG_PLUGIN_SUPPORT,[1]) ;;
670 no) AC_SUBST(CLANG_PLUGIN_SUPPORT,[0]) ;;
671 default) AC_SUBST(CLANG_PLUGIN_SUPPORT,[1]);;
672 *) AC_MSG_ERROR([Invalid setting for --enable-clang-plugin-support. Use "yes" or "no"]) ;;
673esac
674
Roman Divackyf2bb66b2012-12-13 16:07:19 +0000675dnl --enable-clang-static-analyzer: check whether to enable static-analyzer
676clang_static_analyzer="yes"
677AC_ARG_ENABLE(clang-static-analyzer,
678 AS_HELP_STRING([--enable-clang-static-analyzer],
679 [Enable building of clang Static Analyzer (default is YES)]),
680 clang_static_analyzer="$enableval",
681 enableval="yes")
682case "$enableval" in
683 yes) AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[1]) ;;
Peter Zotov668f9672014-10-30 08:29:45 +0000684 no)
Jordan Rose23fc6f32013-08-22 15:49:53 +0000685 if test ${clang_arcmt} != "no" ; then
686 AC_MSG_ERROR([Cannot enable clang ARC Migration Tool while disabling static analyzer.])
687 fi
Peter Zotov668f9672014-10-30 08:29:45 +0000688 AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[0])
Jordan Rose23fc6f32013-08-22 15:49:53 +0000689 ;;
Roman Divackyf2bb66b2012-12-13 16:07:19 +0000690 default) AC_SUBST(ENABLE_CLANG_STATIC_ANALYZER,[1]);;
691 *) AC_MSG_ERROR([Invalid setting for --enable-clang-static-analyzer. Use "yes" or "no"]) ;;
692esac
693
Reid Spencer0241e382004-11-25 04:51:04 +0000694dnl --enable-optimized : check whether they want to do an optimized build:
Reid Spencerb65ade82006-04-07 16:01:51 +0000695AC_ARG_ENABLE(optimized, AS_HELP_STRING(
Nick Lewycky9ab256ac2009-06-06 06:24:44 +0000696 --enable-optimized,[Compile with optimizations enabled (default is NO)]),,enableval=$optimize)
Reid Spencer0241e382004-11-25 04:51:04 +0000697if test ${enableval} = "no" ; then
698 AC_SUBST(ENABLE_OPTIMIZED,[[]])
699else
700 AC_SUBST(ENABLE_OPTIMIZED,[[ENABLE_OPTIMIZED=1]])
701fi
702
David Greene80f48bd2009-04-17 14:49:22 +0000703dnl --enable-profiling : check whether they want to do a profile build:
704AC_ARG_ENABLE(profiling, AS_HELP_STRING(
Nick Lewycky9ab256ac2009-06-06 06:24:44 +0000705 --enable-profiling,[Compile with profiling enabled (default is NO)]),,enableval="no")
David Greene80f48bd2009-04-17 14:49:22 +0000706if test ${enableval} = "no" ; then
707 AC_SUBST(ENABLE_PROFILING,[[]])
708else
709 AC_SUBST(ENABLE_PROFILING,[[ENABLE_PROFILING=1]])
710fi
711
Reid Spencerb65ade82006-04-07 16:01:51 +0000712dnl --enable-assertions : check whether they want to turn on assertions or not:
713AC_ARG_ENABLE(assertions,AS_HELP_STRING(
Nick Lewycky9ab256ac2009-06-06 06:24:44 +0000714 --enable-assertions,[Compile with assertion checks enabled (default is YES)]),, enableval="yes")
Reid Spencerfa423e92006-04-09 20:42:14 +0000715if test ${enableval} = "yes" ; then
716 AC_SUBST(DISABLE_ASSERTIONS,[[]])
Sanjoy Das8ce64992015-03-26 19:25:01 +0000717 assertions_enabled="yes"
Reid Spencerb65ade82006-04-07 16:01:51 +0000718else
Reid Spencerfa423e92006-04-09 20:42:14 +0000719 AC_SUBST(DISABLE_ASSERTIONS,[[DISABLE_ASSERTIONS=1]])
Sanjoy Das8ce64992015-03-26 19:25:01 +0000720 assertions_enabled="no"
Reid Spencerb65ade82006-04-07 16:01:51 +0000721fi
722
Eric Christopher84864012012-08-03 19:58:20 +0000723dnl --enable-werror : check whether we want Werror on by default
724AC_ARG_ENABLE(werror,AS_HELP_STRING(
725 --enable-werror,[Compile with -Werror enabled (default is NO)]),, enableval="no")
726case "$enableval" in
727 yes) AC_SUBST(ENABLE_WERROR,[1]) ;;
728 no) AC_SUBST(ENABLE_WERROR,[0]) ;;
729 default) AC_SUBST(ENABLE_WERROR,[0]);;
730 *) AC_MSG_ERROR([Invalid setting for --enable-werror. Use "yes" or "no"]) ;;
731esac
732
David Greenecbc8ddf2007-06-28 19:36:08 +0000733dnl --enable-expensive-checks : check whether they want to turn on expensive debug checks:
734AC_ARG_ENABLE(expensive-checks,AS_HELP_STRING(
Nick Lewycky9ab256ac2009-06-06 06:24:44 +0000735 --enable-expensive-checks,[Compile with expensive debug checks enabled (default is NO)]),, enableval="no")
David Greenecbc8ddf2007-06-28 19:36:08 +0000736if test ${enableval} = "yes" ; then
737 AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[ENABLE_EXPENSIVE_CHECKS=1]])
738 AC_SUBST(EXPENSIVE_CHECKS,[[yes]])
739else
740 AC_SUBST(ENABLE_EXPENSIVE_CHECKS,[[]])
741 AC_SUBST(EXPENSIVE_CHECKS,[[no]])
742fi
743
Sanjoy Das8ce64992015-03-26 19:25:01 +0000744dnl --enable-abi-breaking-checks : decide whether we should compile in asserts and
745dnl checks that make the build ABI incompatible with an llvm built without these
746dnl checks enabled.
747AC_ARG_ENABLE(abi-breaking-checks,AS_HELP_STRING(
748 --enable-abi-breaking-checks,[Compile with abi-breaking asserts support (default is with-asserts)]),, enableval="with-asserts")
749case "$enableval" in
750 with-asserts) if test ${assertions_enabled} = "yes" ; then
751 AC_DEFINE([LLVM_ENABLE_ABI_BREAKING_CHECKS],[1],[Define to enable checks that alter the LLVM C++ ABI])
NAKAMURA Takumic063c472015-04-01 11:46:15 +0000752 AC_SUBST(ENABLE_ABI_BREAKING_CHECKS,[1])
753 else
754 AC_SUBST(ENABLE_ABI_BREAKING_CHECKS,[0])
Sanjoy Das8ce64992015-03-26 19:25:01 +0000755 fi ;;
NAKAMURA Takumic063c472015-04-01 11:46:15 +0000756 yes)
757 AC_DEFINE([LLVM_ENABLE_ABI_BREAKING_CHECKS],[1],[Define to enable checks that alter the LLVM C++ ABI])
758 AC_SUBST(ENABLE_ABI_BREAKING_CHECKS,[1])
759 ;;
760 no)
761 AC_SUBST(ENABLE_ABI_BREAKING_CHECKS,[0])
762 ;;
Sanjoy Das8ce64992015-03-26 19:25:01 +0000763 *) AC_MSG_ERROR([Invalid setting for --enable-abi-breaking-checks. Use "with-asserts", "yes" or "no"])
764esac
765
Reid Spencer4b8067f2006-11-17 03:32:33 +0000766dnl --enable-debug-runtime : should runtime libraries have debug symbols?
767AC_ARG_ENABLE(debug-runtime,
Nick Lewycky9ab256ac2009-06-06 06:24:44 +0000768 AS_HELP_STRING(--enable-debug-runtime,[Build runtime libs with debug symbols (default is NO)]),,enableval=no)
Reid Spencer4b8067f2006-11-17 03:32:33 +0000769if test ${enableval} = "no" ; then
770 AC_SUBST(DEBUG_RUNTIME,[[]])
771else
772 AC_SUBST(DEBUG_RUNTIME,[[DEBUG_RUNTIME=1]])
773fi
774
Jeffrey Yasskinc3273dc2009-09-27 17:47:29 +0000775dnl --enable-debug-symbols : should even optimized compiler libraries
776dnl have debug symbols?
777AC_ARG_ENABLE(debug-symbols,
778 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)
779if test ${enableval} = "no" ; then
780 AC_SUBST(DEBUG_SYMBOLS,[[]])
781else
782 AC_SUBST(DEBUG_SYMBOLS,[[DEBUG_SYMBOLS=1]])
783fi
784
Daniel Dunbarc9e4ff62012-08-14 18:14:20 +0000785dnl --enable-keep-symbols : do not strip installed executables
786AC_ARG_ENABLE(keep-symbols,
787 AS_HELP_STRING(--enable-keep-symbols,[Do not strip installed executables)]),,enableval=no)
788if test ${enableval} = "no" ; then
789 AC_SUBST(KEEP_SYMBOLS,[[]])
790else
791 AC_SUBST(KEEP_SYMBOLS,[[KEEP_SYMBOLS=1]])
792fi
793
Reid Spencer0241e382004-11-25 04:51:04 +0000794dnl --enable-jit: check whether they want to enable the jit
795AC_ARG_ENABLE(jit,
796 AS_HELP_STRING(--enable-jit,
797 [Enable Just In Time Compiling (default is YES)]),,
798 enableval=default)
799if test ${enableval} = "no"
800then
801 AC_SUBST(JIT,[[]])
802else
Reid Spencer9dc4ba52004-11-25 07:28:19 +0000803 case "$llvm_cv_target_arch" in
Jakob Stoklund Olesen526e8032009-08-02 17:32:37 +0000804 x86) AC_SUBST(TARGET_HAS_JIT,1) ;;
805 Sparc) AC_SUBST(TARGET_HAS_JIT,0) ;;
806 PowerPC) AC_SUBST(TARGET_HAS_JIT,1) ;;
807 x86_64) AC_SUBST(TARGET_HAS_JIT,1) ;;
Eric Christopherd8530f32009-09-14 16:38:49 +0000808 ARM) AC_SUBST(TARGET_HAS_JIT,1) ;;
Bruno Cardoso Lopesd1d9c782011-07-21 16:28:51 +0000809 Mips) AC_SUBST(TARGET_HAS_JIT,1) ;;
Jakob Stoklund Olesen526e8032009-08-02 17:32:37 +0000810 XCore) AC_SUBST(TARGET_HAS_JIT,0) ;;
811 MSP430) AC_SUBST(TARGET_HAS_JIT,0) ;;
Tony Linthicum1213a7a2011-12-12 21:14:40 +0000812 Hexagon) AC_SUBST(TARGET_HAS_JIT,0) ;;
Justin Holewinskiae556d32012-05-04 20:18:50 +0000813 NVPTX) AC_SUBST(TARGET_HAS_JIT,0) ;;
Ulrich Weigand1ceebf62013-05-06 16:22:34 +0000814 SystemZ) AC_SUBST(TARGET_HAS_JIT,1) ;;
Jakob Stoklund Olesen526e8032009-08-02 17:32:37 +0000815 *) AC_SUBST(TARGET_HAS_JIT,0) ;;
Reid Spencer0241e382004-11-25 04:51:04 +0000816 esac
817fi
818
Tim Northover3b0846e2014-05-24 12:50:23 +0000819TARGETS_WITH_JIT="ARM AArch64 Mips PowerPC SystemZ X86"
NAKAMURA Takumi84e85302014-02-09 16:36:42 +0000820AC_SUBST(TARGETS_WITH_JIT,$TARGETS_WITH_JIT)
821
Rafael Espindola7ac506d2010-11-12 19:24:06 +0000822dnl Allow enablement of building and installing docs
823AC_ARG_ENABLE(docs,
824 AS_HELP_STRING([--enable-docs],
825 [Build documents (default is YES)]),,
826 enableval=default)
827case "$enableval" in
828 yes) AC_SUBST(ENABLE_DOCS,[1]) ;;
829 no) AC_SUBST(ENABLE_DOCS,[0]) ;;
830 default) AC_SUBST(ENABLE_DOCS,[1]) ;;
831 *) AC_MSG_ERROR([Invalid setting for --enable-docs. Use "yes" or "no"]) ;;
832esac
833
Reid Spencer0194c9a2004-11-29 04:56:35 +0000834dnl Allow enablement of doxygen generated documentation
835AC_ARG_ENABLE(doxygen,
836 AS_HELP_STRING([--enable-doxygen],
837 [Build doxygen documentation (default is NO)]),,
838 enableval=default)
839case "$enableval" in
840 yes) AC_SUBST(ENABLE_DOXYGEN,[1]) ;;
Logan Chien26c9f2f2015-03-12 17:25:01 +0000841 no|default) AC_SUBST(ENABLE_DOXYGEN,[0]) ;;
Reid Spencer0194c9a2004-11-29 04:56:35 +0000842 *) AC_MSG_ERROR([Invalid setting for --enable-doxygen. Use "yes" or "no"]) ;;
843esac
844
Logan Chien26c9f2f2015-03-12 17:25:01 +0000845dnl Allow enablement of doxygen search engine
846AC_ARG_ENABLE(doxygen-search,
847 AS_HELP_STRING([--enable-doxygen-search],
848 [Enable doxygen search support (default is NO)]),,
849 enableval=default)
850ENABLE_DOXYGEN_SEARCH="$enableval"
851
852case "$enableval" in
853 yes|no|default) ;;
854 *) AC_MSG_ERROR([Invalid setting for --enable-doxygen-search. Use "yes" or "no"]) ;;
855esac
856
857AC_ARG_ENABLE(doxygen-external-search,
858 AS_HELP_STRING([--enable-doxygen-external-search],
859 [Enable doxygen exteranl search (default is NO)]),,
860 enableval=default)
861ENABLE_DOXYGEN_EXTERNAL_SEARCH="$enableval"
862
863case "$enableval" in
864 yes)
865 dnl To match with the CMake behavior, enable doxygen when
866 dnl --enable-doxygen-external-search is enabled.
867 case "$ENABLE_DOXYGEN_SEARCH" in
868 yes|default) ENABLE_DOXYGEN_SEARCH="yes" ;;
869 no) AC_MSG_ERROR([The option --enable-doxygen-external-search requires --enable-doxygen-search]) ;;
870 esac
871 ;;
872 no|default) ;;
873 *) AC_MSG_ERROR([Invalid setting for --enable-doxygen-external-search. Use "yes" or "no"]) ;;
874esac
875
876AC_ARG_WITH(doxygen-search-engine-url,
877 AS_HELP_STRING([--with-doxygen-search-engine-url],
878 [Specify the external search engine for doxygen]),,)
879WITH_DOXYGEN_SEARCH_ENGINE_URL="$withval"
880
881AC_ARG_WITH(doxygen-search-mappings,
882 AS_HELP_STRING([--with-doxygen-search-mappings],
883 [Specify the extra search mapping for doxygen]),,)
884WITH_DOXYGEN_SEARCH_MAPPINGS="$withval"
885
886case "$ENABLE_DOXYGEN_SEARCH" in
887 yes)
888 if test "$ENABLE_DOXYGEN" = "0" ; then
889 AC_MSG_ERROR([The option --enable-doxygen-search requires --enable-doxygen.])
890 fi
891
892 AC_SUBST(enable_searchengine,[YES])
893
894 case "$ENABLE_DOXYGEN_EXTERNAL_SEARCH" in
895 yes)
896 AC_SUBST(enable_external_search,[YES])
897 AC_SUBST(enable_server_based_search,[YES])
Logan Chien6203f9e2015-03-12 19:56:25 +0000898 AC_SUBST(searchengine_url,["$WITH_DOXYGEN_SEARCH_ENGINE_URL"])
899 AC_SUBST(extra_search_mappings,["$WITH_DOXYGEN_SEARCH_MAPPINGS"])
Logan Chien26c9f2f2015-03-12 17:25:01 +0000900 ;;
901
902 no|default)
903 AC_SUBST(enable_external_search,[NO])
904 AC_SUBST(enable_server_based_search,[NO])
905 AC_SUBST(searchengine_url,[])
906 AC_SUBST(extra_search_mappings,[])
907 ;;
908 esac
909 ;;
910
911 no|default)
912 AC_SUBST(enable_searchengine,[NO])
913 AC_SUBST(searchengine_url,[])
914 AC_SUBST(enable_server_based_search,[NO])
915 AC_SUBST(enable_external_search,[NO])
916 AC_SUBST(extra_search_mappings,[])
917 ;;
918
919 *)
920 AC_MSG_ERROR([Invalid setting for --enable-doxygen-search. Use "yes" or "no"])
921 ;;
922esac
923
924dnl Allow enablement of doxygen generated Qt help files
925AC_ARG_ENABLE(doxygen-qt-help,
926 AS_HELP_STRING([--enable-doxygen-qt-help],
927 [Build Qt help files (default is NO)]),,
928 enableval=default)
929case "$enableval" in
930 yes)
931 if test "$ENABLE_DOXYGEN" = "0" ; then
932 AC_MSG_ERROR([The option --enable-doxygen-qt-help requires --enable-doxygen.])
933 fi
934
935 AC_PATH_PROG(QHELPGENERATOR, [qhelpgenerator], [qhelpgenerator])
936
937 dnl Qt help file for llvm doxygen documentation
938 AC_SUBST(llvm_doxygen_generate_qhp,[YES])
939 AC_SUBST(llvm_doxygen_qch_filename,[org.llvm.qch])
940 AC_SUBST(llvm_doxygen_qhp_namespace,[org.llvm])
Logan Chien6203f9e2015-03-12 19:56:25 +0000941 AC_SUBST(llvm_doxygen_qhelpgenerator_path,["$QHELPGENERATOR"])
942 AC_SUBST(llvm_doxygen_qhp_cust_filter_name,["$PACKAGE_STRING"])
943 AC_SUBST(llvm_doxygen_qhp_cust_filter_attrs,["$PACKAGE_NAME,$PACKAGE_VERSION"])
Logan Chien26c9f2f2015-03-12 17:25:01 +0000944
945 dnl Qt help file for clang doxygen documentation
946 AC_SUBST(clang_doxygen_generate_qhp,[YES])
947 AC_SUBST(clang_doxygen_qch_filename,[org.llvm.clang.qch])
948 AC_SUBST(clang_doxygen_qhp_namespace,[org.llvm.clang])
Logan Chien6203f9e2015-03-12 19:56:25 +0000949 AC_SUBST(clang_doxygen_qhelpgenerator_path,["$QHELPGENERATOR"])
950 AC_SUBST(clang_doxygen_qhp_cust_filter_name,["Clang $PACKAGE_VERSION"])
951 AC_SUBST(clang_doxygen_qhp_cust_filter_attrs,["Clang,$PACKAGE_VERSION"])
Logan Chien26c9f2f2015-03-12 17:25:01 +0000952 ;;
953
954 no|default)
955 AC_SUBST(llvm_doxygen_generate_qhp,[NO])
956 AC_SUBST(llvm_doxygen_qch_filename,[])
957 AC_SUBST(llvm_doxygen_qhp_namespace,[])
958 AC_SUBST(llvm_doxygen_qhelpgenerator_path,[])
959 AC_SUBST(llvm_doxygen_qhp_cust_filter_name,[])
960 AC_SUBST(llvm_doxygen_qhp_cust_filter_attrs,[])
961
962 AC_SUBST(clang_doxygen_generate_qhp,[NO])
963 AC_SUBST(clang_doxygen_qch_filename,[])
964 AC_SUBST(clang_doxygen_qhp_namespace,[])
965 AC_SUBST(clang_doxygen_qhelpgenerator_path,[])
Logan Chien6203f9e2015-03-12 19:56:25 +0000966 AC_SUBST(clang_doxygen_qhp_cust_filter_name,["Clang $PACKAGE_VERSION"])
967 AC_SUBST(clang_doxygen_qhp_cust_filter_attrs,["Clang,$PACKAGE_VERSION"])
Logan Chien26c9f2f2015-03-12 17:25:01 +0000968 ;;
969
970 *)
971 AC_MSG_ERROR([Invalid setting for --enable-doxygen-qt-help. Use "yes" or "no"]) ;;
972esac
973
Reid Spencerf85fabeb2005-08-24 10:07:20 +0000974dnl Allow disablement of threads
975AC_ARG_ENABLE(threads,
976 AS_HELP_STRING([--enable-threads],
977 [Use threads if available (default is YES)]),,
Reid Spencerd549edc2006-11-05 17:08:18 +0000978 enableval=default)
Reid Spencerf85fabeb2005-08-24 10:07:20 +0000979case "$enableval" in
Dylan Noblesmithefddf202011-11-28 00:48:58 +0000980 yes) AC_SUBST(LLVM_ENABLE_THREADS,[1]) ;;
981 no) AC_SUBST(LLVM_ENABLE_THREADS,[0]) ;;
982 default) AC_SUBST(LLVM_ENABLE_THREADS,[1]) ;;
Reid Spencerf85fabeb2005-08-24 10:07:20 +0000983 *) AC_MSG_ERROR([Invalid setting for --enable-threads. Use "yes" or "no"]) ;;
984esac
Dylan Noblesmithefddf202011-11-28 00:48:58 +0000985AC_DEFINE_UNQUOTED([LLVM_ENABLE_THREADS],$LLVM_ENABLE_THREADS,
986 [Define if threads enabled])
Reid Spencerf85fabeb2005-08-24 10:07:20 +0000987
NAKAMURA Takumic6fce172010-12-29 03:59:03 +0000988dnl Allow disablement of pthread.h
989AC_ARG_ENABLE(pthreads,
990 AS_HELP_STRING([--enable-pthreads],
991 [Use pthreads if available (default is YES)]),,
992 enableval=default)
993case "$enableval" in
994 yes) AC_SUBST(ENABLE_PTHREADS,[1]) ;;
995 no) AC_SUBST(ENABLE_PTHREADS,[0]) ;;
996 default) AC_SUBST(ENABLE_PTHREADS,[1]) ;;
997 *) AC_MSG_ERROR([Invalid setting for --enable-pthreads. Use "yes" or "no"]) ;;
998esac
999
Alexey Samsonov2fb337e2013-04-23 08:28:39 +00001000dnl Allow disablement of zlib
1001AC_ARG_ENABLE(zlib,
1002 AS_HELP_STRING([--enable-zlib],
1003 [Use zlib for compression/decompression if
1004 available (default is YES)]),,
1005 enableval=default)
1006case "$enableval" in
1007 yes) AC_SUBST(LLVM_ENABLE_ZLIB,[1]) ;;
1008 no) AC_SUBST(LLVM_ENABLE_ZLIB,[0]) ;;
1009 default) AC_SUBST(LLVM_ENABLE_ZLIB,[1]) ;;
1010 *) AC_MSG_ERROR([Invalid setting for --enable-zlib. Use "yes" or "no"]) ;;
1011esac
1012AC_DEFINE_UNQUOTED([LLVM_ENABLE_ZLIB],$LLVM_ENABLE_ZLIB,
1013 [Define if zlib is enabled])
1014
Nick Lewycky7db7eb62009-02-19 06:18:24 +00001015dnl Allow building without position independent code
Reid Spencer05a1fe52006-12-16 22:07:52 +00001016AC_ARG_ENABLE(pic,
1017 AS_HELP_STRING([--enable-pic],
Nick Lewycky7db7eb62009-02-19 06:18:24 +00001018 [Build LLVM with Position Independent Code (default is YES)]),,
Reid Spencer05a1fe52006-12-16 22:07:52 +00001019 enableval=default)
1020case "$enableval" in
1021 yes) AC_SUBST(ENABLE_PIC,[1]) ;;
1022 no) AC_SUBST(ENABLE_PIC,[0]) ;;
Nick Lewycky7db7eb62009-02-19 06:18:24 +00001023 default) AC_SUBST(ENABLE_PIC,[1]) ;;
Reid Spencer05a1fe52006-12-16 22:07:52 +00001024 *) AC_MSG_ERROR([Invalid setting for --enable-pic. Use "yes" or "no"]) ;;
1025esac
1026AC_DEFINE_UNQUOTED([ENABLE_PIC],$ENABLE_PIC,
1027 [Define if position independent code is enabled])
1028
Jeffrey Yasskin6b718f72010-02-25 06:34:33 +00001029dnl Allow building a shared library and linking tools against it.
1030AC_ARG_ENABLE(shared,
1031 AS_HELP_STRING([--enable-shared],
1032 [Build a shared library and link tools against it (default is NO)]),,
1033 enableval=default)
1034case "$enableval" in
1035 yes) AC_SUBST(ENABLE_SHARED,[1]) ;;
1036 no) AC_SUBST(ENABLE_SHARED,[0]) ;;
1037 default) AC_SUBST(ENABLE_SHARED,[0]) ;;
1038 *) AC_MSG_ERROR([Invalid setting for --enable-shared. Use "yes" or "no"]) ;;
1039esac
1040
NAKAMURA Takumi495afdf2010-12-29 03:59:14 +00001041dnl Allow libstdc++ is embedded in LLVM.dll.
1042AC_ARG_ENABLE(embed-stdcxx,
1043 AS_HELP_STRING([--enable-embed-stdcxx],
NAKAMURA Takumid5a9a3a2011-10-13 18:04:52 +00001044 [Build a shared library with embedded libstdc++ for Win32 DLL (default is NO)]),,
NAKAMURA Takumi495afdf2010-12-29 03:59:14 +00001045 enableval=default)
1046case "$enableval" in
1047 yes) AC_SUBST(ENABLE_EMBED_STDCXX,[1]) ;;
1048 no) AC_SUBST(ENABLE_EMBED_STDCXX,[0]) ;;
NAKAMURA Takumid5a9a3a2011-10-13 18:04:52 +00001049 default) AC_SUBST(ENABLE_EMBED_STDCXX,[0]) ;;
NAKAMURA Takumi495afdf2010-12-29 03:59:14 +00001050 *) AC_MSG_ERROR([Invalid setting for --enable-embed-stdcxx. Use "yes" or "no"]) ;;
1051esac
1052
Daniel Dunbardac18242010-05-10 20:11:56 +00001053dnl Enable embedding timestamp information into build.
1054AC_ARG_ENABLE(timestamps,
1055 AS_HELP_STRING([--enable-timestamps],
1056 [Enable embedding timestamp information in build (default is YES)]),,
1057 enableval=default)
1058case "$enableval" in
1059 yes) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;;
1060 no) AC_SUBST(ENABLE_TIMESTAMPS,[0]) ;;
1061 default) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;;
1062 *) AC_MSG_ERROR([Invalid setting for --enable-timestamps. Use "yes" or "no"]) ;;
1063esac
1064AC_DEFINE_UNQUOTED([ENABLE_TIMESTAMPS],$ENABLE_TIMESTAMPS,
Gabor Greif1e718962012-07-12 13:05:12 +00001065 [Define if timestamp information (e.g., __DATE__) is allowed])
Daniel Dunbardac18242010-05-10 20:11:56 +00001066
Daniel Dunbareb6c7082013-08-30 20:39:21 +00001067dnl Enable support for showing backtraces.
1068AC_ARG_ENABLE(backtraces, AS_HELP_STRING(
1069 [--enable-backtraces],
1070 [Enable embedding backtraces on crash (default is YES)]),
1071 [case "$enableval" in
1072 yes) llvm_cv_enable_backtraces="yes" ;;
1073 no) llvm_cv_enable_backtraces="no" ;;
1074 *) AC_MSG_ERROR([Invalid setting for --enable-backtraces. Use "yes" or "no"]) ;;
1075 esac],
1076 llvm_cv_enable_backtraces="yes")
1077if test "$llvm_cv_enable_backtraces" = "yes" ; then
1078 AC_DEFINE([ENABLE_BACKTRACES],[1],
1079 [Define if you want backtraces on crash])
1080fi
Eric Christopher9fafe072012-09-21 23:03:29 +00001081
Daniel Dunbareb6c7082013-08-30 20:39:21 +00001082dnl Enable installing platform specific signal handling overrides, for improved
1083dnl CrashRecovery support or interaction with crash reporting software. This
1084dnl support may be inappropriate for some clients embedding LLVM as a library.
1085AC_ARG_ENABLE(crash-overrides, AS_HELP_STRING(
1086 [--enable-crash-overrides],
1087 [Enable crash handling overrides (default is YES)]),
1088 [case "$enableval" in
1089 yes) llvm_cv_enable_crash_overrides="yes" ;;
1090 no) llvm_cv_enable_crash_overrides="no" ;;
1091 *) AC_MSG_ERROR([Invalid setting for --enable-crash-overrides. Use "yes" or "no"]) ;;
1092 esac],
1093 llvm_cv_enable_crash_overrides="yes")
1094if test "$llvm_cv_enable_crash_overrides" = "yes" ; then
1095 AC_DEFINE([ENABLE_CRASH_OVERRIDES],[1],
1096 [Define to enable crash handling overrides])
1097fi
Eric Christopher9fafe072012-09-21 23:03:29 +00001098
NAKAMURA Takumi84e85302014-02-09 16:36:42 +00001099dnl List all possible targets
Tom Stellard45bb48e2015-06-13 03:28:10 +00001100ALL_TARGETS="X86 Sparc PowerPC ARM AArch64 Mips XCore MSP430 CppBackend NVPTX Hexagon SystemZ AMDGPU BPF"
NAKAMURA Takumi84e85302014-02-09 16:36:42 +00001101AC_SUBST(ALL_TARGETS,$ALL_TARGETS)
1102
Reid Spencer47428042005-04-22 07:27:28 +00001103dnl Allow specific targets to be specified for building (or not)
1104TARGETS_TO_BUILD=""
Evan Cheng5df72aa2006-07-06 07:46:33 +00001105AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-targets],
Jeffrey Yasskin42a49df2009-09-23 17:05:42 +00001106 [Build specific host targets: all or target1,target2,... Valid targets are:
Tim Northover00ed9962014-03-29 10:18:08 +00001107 host, x86, x86_64, sparc, powerpc, arm64, arm, aarch64, mips, hexagon,
Alexei Starovoitov7fef2f52015-06-09 18:53:30 +00001108 xcore, msp430, nvptx, systemz, r600, bpf, and cpp (default=all)]),,
Reid Spencere482ca82005-04-22 17:02:18 +00001109 enableval=all)
Jeffrey Yasskin42a49df2009-09-23 17:05:42 +00001110if test "$enableval" = host-only ; then
1111 enableval=host
1112fi
Reid Spencere482ca82005-04-22 17:02:18 +00001113case "$enableval" in
NAKAMURA Takumi84e85302014-02-09 16:36:42 +00001114 all) TARGETS_TO_BUILD="$ALL_TARGETS" ;;
Reid Spencere482ca82005-04-22 17:02:18 +00001115 *)for a_target in `echo $enableval|sed -e 's/,/ /g' ` ; do
1116 case "$a_target" in
Jakob Stoklund Olesen526e8032009-08-02 17:32:37 +00001117 x86) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
1118 x86_64) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
1119 sparc) TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;;
1120 powerpc) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
Tim Northover3b0846e2014-05-24 12:50:23 +00001121 aarch64) TARGETS_TO_BUILD="AArch64 $TARGETS_TO_BUILD" ;;
1122 arm64) TARGETS_TO_BUILD="AArch64 $TARGETS_TO_BUILD" ;;
Jakob Stoklund Olesen526e8032009-08-02 17:32:37 +00001123 arm) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
Alexei Starovoitov7fef2f52015-06-09 18:53:30 +00001124 bpf) TARGETS_TO_BUILD="BPF $TARGETS_TO_BUILD" ;;
Jakob Stoklund Olesen526e8032009-08-02 17:32:37 +00001125 mips) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
Rafael Espindolae46f0962011-12-28 17:08:00 +00001126 mipsel) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
Simon Atanasyanc2cccd72012-10-29 19:49:45 +00001127 mips64) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
1128 mips64el) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
Jakob Stoklund Olesen526e8032009-08-02 17:32:37 +00001129 xcore) TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
1130 msp430) TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
Jakob Stoklund Olesen526e8032009-08-02 17:32:37 +00001131 cpp) TARGETS_TO_BUILD="CppBackend $TARGETS_TO_BUILD" ;;
Tony Linthicum1213a7a2011-12-12 21:14:40 +00001132 hexagon) TARGETS_TO_BUILD="Hexagon $TARGETS_TO_BUILD" ;;
Justin Holewinskiae556d32012-05-04 20:18:50 +00001133 nvptx) TARGETS_TO_BUILD="NVPTX $TARGETS_TO_BUILD" ;;
Ulrich Weigand1ceebf62013-05-06 16:22:34 +00001134 systemz) TARGETS_TO_BUILD="SystemZ $TARGETS_TO_BUILD" ;;
Tom Stellard3e79bb72015-06-13 03:46:48 +00001135 amdgpu) TARGETS_TO_BUILD="AMDGPU $TARGETS_TO_BUILD" ;;
Tom Stellard45bb48e2015-06-13 03:28:10 +00001136 r600) TARGETS_TO_BUILD="AMDGPU $TARGETS_TO_BUILD" ;;
Jeffrey Yasskin42a49df2009-09-23 17:05:42 +00001137 host) case "$llvm_cv_target_arch" in
1138 x86) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
1139 x86_64) TARGETS_TO_BUILD="X86 $TARGETS_TO_BUILD" ;;
1140 Sparc) TARGETS_TO_BUILD="Sparc $TARGETS_TO_BUILD" ;;
1141 PowerPC) TARGETS_TO_BUILD="PowerPC $TARGETS_TO_BUILD" ;;
Tim Northover3b0846e2014-05-24 12:50:23 +00001142 AArch64) TARGETS_TO_BUILD="AArch64 $TARGETS_TO_BUILD" ;;
Jeffrey Yasskin42a49df2009-09-23 17:05:42 +00001143 ARM) TARGETS_TO_BUILD="ARM $TARGETS_TO_BUILD" ;;
1144 Mips) TARGETS_TO_BUILD="Mips $TARGETS_TO_BUILD" ;;
Jeffrey Yasskin42a49df2009-09-23 17:05:42 +00001145 XCore) TARGETS_TO_BUILD="XCore $TARGETS_TO_BUILD" ;;
1146 MSP430) TARGETS_TO_BUILD="MSP430 $TARGETS_TO_BUILD" ;;
Tony Linthicum1213a7a2011-12-12 21:14:40 +00001147 Hexagon) TARGETS_TO_BUILD="Hexagon $TARGETS_TO_BUILD" ;;
Justin Holewinskiae556d32012-05-04 20:18:50 +00001148 NVPTX) TARGETS_TO_BUILD="NVPTX $TARGETS_TO_BUILD" ;;
Ulrich Weigand1ceebf62013-05-06 16:22:34 +00001149 SystemZ) TARGETS_TO_BUILD="SystemZ $TARGETS_TO_BUILD" ;;
Jeffrey Yasskin42a49df2009-09-23 17:05:42 +00001150 *) AC_MSG_ERROR([Can not set target to build]) ;;
1151 esac ;;
Reid Spencere482ca82005-04-22 17:02:18 +00001152 *) AC_MSG_ERROR([Unrecognized target $a_target]) ;;
1153 esac
Eric Christophere62b4412007-12-01 00:34:39 +00001154 done
Reid Spencere482ca82005-04-22 17:02:18 +00001155 ;;
1156esac
Victor Oliveira9d4b8f52012-08-09 01:13:59 +00001157
1158AC_ARG_ENABLE([experimental-targets],AS_HELP_STRING([--enable-experimental-targets],
1159 [Build experimental host targets: disable or target1,target2,...
1160 (default=disable)]),,
1161 enableval=disable)
1162
1163if test ${enableval} != "disable"
1164then
1165 TARGETS_TO_BUILD="$enableval $TARGETS_TO_BUILD"
1166fi
1167
Reid Spencer47428042005-04-22 07:27:28 +00001168AC_SUBST(TARGETS_TO_BUILD,$TARGETS_TO_BUILD)
1169
Gabor Greife0d58d32012-01-26 10:28:58 +00001170dnl Determine whether we are building LLVM support for the native architecture.
1171dnl If so, define LLVM_NATIVE_ARCH to that LLVM target.
Douglas Gregor7cbf8162009-06-17 00:42:33 +00001172for a_target in $TARGETS_TO_BUILD; do
1173 if test "$a_target" = "$LLVM_NATIVE_ARCH"; then
Eric Christophere7a9db12010-08-30 18:34:48 +00001174 AC_DEFINE_UNQUOTED(LLVM_NATIVE_ARCH, $LLVM_NATIVE_ARCH,
Douglas Gregor7cbf8162009-06-17 00:42:33 +00001175 [LLVM architecture name for the native architecture, if available])
Eric Christophere7a9db12010-08-30 18:34:48 +00001176 LLVM_NATIVE_TARGET="LLVMInitialize${LLVM_NATIVE_ARCH}Target"
1177 LLVM_NATIVE_TARGETINFO="LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo"
Evan Cheng8c886a42011-07-22 21:58:54 +00001178 LLVM_NATIVE_TARGETMC="LLVMInitialize${LLVM_NATIVE_ARCH}TargetMC"
Eric Christophere7a9db12010-08-30 18:34:48 +00001179 LLVM_NATIVE_ASMPRINTER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter"
Jan Sjödinc9a16d52011-03-14 22:12:35 +00001180 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then
1181 LLVM_NATIVE_ASMPARSER="LLVMInitialize${LLVM_NATIVE_ARCH}AsmParser"
1182 fi
Eric Christopher56079c12012-03-26 21:56:56 +00001183 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/Makefile ; then
1184 LLVM_NATIVE_DISASSEMBLER="LLVMInitialize${LLVM_NATIVE_ARCH}Disassembler"
1185 fi
Eric Christophere7a9db12010-08-30 18:34:48 +00001186 AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGET, $LLVM_NATIVE_TARGET,
1187 [LLVM name for the native Target init function, if available])
1188 AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETINFO, $LLVM_NATIVE_TARGETINFO,
1189 [LLVM name for the native TargetInfo init function, if available])
Evan Cheng8c886a42011-07-22 21:58:54 +00001190 AC_DEFINE_UNQUOTED(LLVM_NATIVE_TARGETMC, $LLVM_NATIVE_TARGETMC,
1191 [LLVM name for the native target MC init function, if available])
Eric Christophere7a9db12010-08-30 18:34:48 +00001192 AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPRINTER, $LLVM_NATIVE_ASMPRINTER,
1193 [LLVM name for the native AsmPrinter init function, if available])
Jan Sjödinc9a16d52011-03-14 22:12:35 +00001194 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/AsmParser/Makefile ; then
1195 AC_DEFINE_UNQUOTED(LLVM_NATIVE_ASMPARSER, $LLVM_NATIVE_ASMPARSER,
1196 [LLVM name for the native AsmParser init function, if available])
1197 fi
Eric Christopher56079c12012-03-26 21:56:56 +00001198 if test -f ${srcdir}/lib/Target/${LLVM_NATIVE_ARCH}/Disassembler/Makefile ; then
1199 AC_DEFINE_UNQUOTED(LLVM_NATIVE_DISASSEMBLER, $LLVM_NATIVE_DISASSEMBLER,
1200 [LLVM name for the native Disassembler init function, if available])
1201 fi
Douglas Gregor7cbf8162009-06-17 00:42:33 +00001202 fi
1203done
1204
Gabor Greife0d58d32012-01-26 10:28:58 +00001205dnl Build the LLVM_TARGET and LLVM_... macros for Targets.def and the individual
1206dnl target feature def files.
Douglas Gregor1b731d52009-06-16 20:12:29 +00001207LLVM_ENUM_TARGETS=""
1208LLVM_ENUM_ASM_PRINTERS=""
Daniel Dunbar71475772009-07-17 20:42:00 +00001209LLVM_ENUM_ASM_PARSERS=""
Daniel Dunbarf4721292009-11-25 04:30:13 +00001210LLVM_ENUM_DISASSEMBLERS=""
Douglas Gregor1b731d52009-06-16 20:12:29 +00001211for target_to_build in $TARGETS_TO_BUILD; do
1212 LLVM_ENUM_TARGETS="LLVM_TARGET($target_to_build) $LLVM_ENUM_TARGETS"
Chris Lattner28776602010-11-14 19:10:47 +00001213 if test -f ${srcdir}/lib/Target/${target_to_build}/*AsmPrinter.cpp ; then
Eric Christopheref917742010-10-12 02:42:05 +00001214 LLVM_ENUM_ASM_PRINTERS="LLVM_ASM_PRINTER($target_to_build) $LLVM_ENUM_ASM_PRINTERS";
1215 fi
Daniel Dunbar71475772009-07-17 20:42:00 +00001216 if test -f ${srcdir}/lib/Target/${target_to_build}/AsmParser/Makefile ; then
1217 LLVM_ENUM_ASM_PARSERS="LLVM_ASM_PARSER($target_to_build) $LLVM_ENUM_ASM_PARSERS";
1218 fi
Daniel Dunbarf4721292009-11-25 04:30:13 +00001219 if test -f ${srcdir}/lib/Target/${target_to_build}/Disassembler/Makefile ; then
1220 LLVM_ENUM_DISASSEMBLERS="LLVM_DISASSEMBLER($target_to_build) $LLVM_ENUM_DISASSEMBLERS";
1221 fi
Douglas Gregor1b731d52009-06-16 20:12:29 +00001222done
1223AC_SUBST(LLVM_ENUM_TARGETS)
1224AC_SUBST(LLVM_ENUM_ASM_PRINTERS)
Daniel Dunbar71475772009-07-17 20:42:00 +00001225AC_SUBST(LLVM_ENUM_ASM_PARSERS)
Daniel Dunbarf4721292009-11-25 04:30:13 +00001226AC_SUBST(LLVM_ENUM_DISASSEMBLERS)
Douglas Gregor1b731d52009-06-16 20:12:29 +00001227
Daniel Dunbarb4a289c2009-11-04 04:32:50 +00001228dnl Override the option to use for optimized builds.
1229AC_ARG_WITH(optimize-option,
1230 AS_HELP_STRING([--with-optimize-option],
1231 [Select the compiler options to use for optimized builds]),,
1232 withval=default)
1233AC_MSG_CHECKING([optimization flags])
1234case "$withval" in
1235 default)
1236 case "$llvm_cv_os_type" in
Daniel Dunbare96fcbb2010-04-30 17:12:23 +00001237 FreeBSD) optimize_option=-O2 ;;
Daniel Dunbar4e06a5b2010-04-10 18:56:24 +00001238 MingW) optimize_option=-O2 ;;
1239 *) optimize_option=-O3 ;;
Daniel Dunbarb4a289c2009-11-04 04:32:50 +00001240 esac ;;
1241 *) optimize_option="$withval" ;;
1242esac
1243AC_SUBST(OPTIMIZE_OPTION,$optimize_option)
1244AC_MSG_RESULT([$optimize_option])
1245
Evan Chenga7bd00b2006-06-20 22:16:32 +00001246dnl Specify extra build options
1247AC_ARG_WITH(extra-options,
1248 AS_HELP_STRING([--with-extra-options],
Duncan Sandsef8c8ec2009-05-13 13:13:18 +00001249 [Specify additional options to compile LLVM with]),,
Reid Spencer84749ed2006-07-28 22:50:07 +00001250 withval=default)
1251case "$withval" in
Evan Chenga7bd00b2006-06-20 22:16:32 +00001252 default) EXTRA_OPTIONS= ;;
Reid Spencer84749ed2006-07-28 22:50:07 +00001253 *) EXTRA_OPTIONS=$withval ;;
Evan Chenga7bd00b2006-06-20 22:16:32 +00001254esac
1255AC_SUBST(EXTRA_OPTIONS,$EXTRA_OPTIONS)
Reid Spencer47428042005-04-22 07:27:28 +00001256
Daniel Dunbar0315d4a2011-06-16 22:30:38 +00001257dnl Specify extra linker build options
1258AC_ARG_WITH(extra-ld-options,
1259 AS_HELP_STRING([--with-extra-ld-options],
1260 [Specify additional options to link LLVM with]),,
1261 withval=default)
1262case "$withval" in
1263 default) EXTRA_LD_OPTIONS= ;;
1264 *) EXTRA_LD_OPTIONS=$withval ;;
1265esac
1266AC_SUBST(EXTRA_LD_OPTIONS,$EXTRA_LD_OPTIONS)
1267
Gordon Henriksend48f4592007-10-02 09:50:18 +00001268dnl Allow specific bindings to be specified for building (or not)
1269AC_ARG_ENABLE([bindings],AS_HELP_STRING([--enable-bindings],
1270 [Build specific language bindings: all,auto,none,{binding-name} (default=auto)]),,
1271 enableval=default)
1272BINDINGS_TO_BUILD=""
1273case "$enableval" in
Gordon Henriksen61400d12007-10-02 10:14:32 +00001274 yes | default | auto) BINDINGS_TO_BUILD="auto" ;;
Gordon Henriksend48f4592007-10-02 09:50:18 +00001275 all ) BINDINGS_TO_BUILD="ocaml" ;;
1276 none | no) BINDINGS_TO_BUILD="" ;;
1277 *)for a_binding in `echo $enableval|sed -e 's/,/ /g' ` ; do
1278 case "$a_binding" in
1279 ocaml) BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD" ;;
1280 *) AC_MSG_ERROR([Unrecognized binding $a_binding]) ;;
1281 esac
Eric Christophere62b4412007-12-01 00:34:39 +00001282 done
Gordon Henriksend48f4592007-10-02 09:50:18 +00001283 ;;
1284esac
1285
Gordon Henriksen3be1f102007-10-02 16:42:10 +00001286dnl Allow the ocaml libdir to be overridden. This could go in a configure
1287dnl script for bindings/ocaml/configure, except that its auto value depends on
1288dnl OCAMLC, which is found here to support tests.
1289AC_ARG_WITH([ocaml-libdir],
1290 [AS_HELP_STRING([--with-ocaml-libdir],
1291 [Specify install location for ocaml bindings (default is stdlib)])],
1292 [],
1293 [withval=auto])
1294case "$withval" in
1295 auto) with_ocaml_libdir="$withval" ;;
1296 /* | [[A-Za-z]]:[[\\/]]*) with_ocaml_libdir="$withval" ;;
1297 *) AC_MSG_ERROR([Invalid path for --with-ocaml-libdir. Provide full path]) ;;
1298esac
1299
NAKAMURA Takumi914f1922011-10-16 02:54:26 +00001300AC_ARG_WITH(clang-srcdir,
1301 AS_HELP_STRING([--with-clang-srcdir],
1302 [Directory to the out-of-tree Clang source]),,
1303 withval="-")
1304case "$withval" in
Dylan Noblesmithb5190ab2012-02-02 00:17:33 +00001305 -) clang_src_root="" ;;
NAKAMURA Takumi914f1922011-10-16 02:54:26 +00001306 /* | [[A-Za-z]]:[[\\/]]*) clang_src_root="$withval" ;;
1307 *) clang_src_root="$ac_pwd/$withval" ;;
1308esac
1309AC_SUBST(CLANG_SRC_ROOT,[$clang_src_root])
1310
Chandler Carruthffae4a62010-10-19 08:21:25 +00001311AC_ARG_WITH(clang-resource-dir,
1312 AS_HELP_STRING([--with-clang-resource-dir],
1313 [Relative directory from the Clang binary for resource files]),,
1314 withval="")
1315AC_DEFINE_UNQUOTED(CLANG_RESOURCE_DIR,"$withval",
1316 [Relative directory for resource files])
1317
Rafael Espindola662908c2009-12-07 00:27:35 +00001318AC_ARG_WITH(c-include-dirs,
Rafael Espindolad95960b2009-11-12 05:46:09 +00001319 AS_HELP_STRING([--with-c-include-dirs],
1320 [Colon separated list of directories clang will search for headers]),,
1321 withval="")
1322AC_DEFINE_UNQUOTED(C_INCLUDE_DIRS,"$withval",
1323 [Directories clang will search for headers])
1324
Rafael Espindolaec217f62012-02-03 00:59:30 +00001325# Clang normally uses the system c++ headers and libraries. With this option,
1326# clang will use the ones provided by a gcc installation instead. This option should
1327# be passed the same value that was used with --prefix when configuring gcc.
1328AC_ARG_WITH(gcc-toolchain,
1329 AS_HELP_STRING([--with-gcc-toolchain],
1330 [Directory where gcc is installed.]),,
Rafael Espindola65e9be6d2009-11-16 19:46:55 +00001331 withval="")
Rafael Espindolaec217f62012-02-03 00:59:30 +00001332AC_DEFINE_UNQUOTED(GCC_INSTALL_PREFIX,"$withval",
1333 [Directory where gcc is installed.])
Rafael Espindola65e9be6d2009-11-16 19:46:55 +00001334
Sebastian Pope29a6c72012-04-30 20:06:58 +00001335AC_ARG_WITH(default-sysroot,
Sebastian Pop5c9e1842012-04-16 04:11:45 +00001336 AS_HELP_STRING([--with-default-sysroot],
1337 [Add --sysroot=<path> to all compiler invocations.]),,
1338 withval="")
1339AC_DEFINE_UNQUOTED(DEFAULT_SYSROOT,"$withval",
1340 [Default <path> to all compiler invocations for --sysroot=<path>.])
1341
Chandler Carruthcc83ce42015-05-28 01:47:22 +00001342AC_ARG_WITH(clang-default-openmp-runtime,
1343 AS_HELP_STRING([--with-clang-default-openmp-runtime],
1344 [The default OpenMP runtime for Clang.]),,
Chandler Carruth9b0a5612015-05-28 02:17:15 +00001345 withval="libgomp")
Chandler Carruthcc83ce42015-05-28 01:47:22 +00001346AC_DEFINE_UNQUOTED(CLANG_DEFAULT_OPENMP_RUNTIME,"$withval",
1347 [Default OpenMP runtime used by -fopenmp.])
1348
Nick Lewyckyedd8946b2009-02-03 07:10:08 +00001349dnl Allow linking of LLVM with GPLv3 binutils code.
1350AC_ARG_WITH(binutils-include,
1351 AS_HELP_STRING([--with-binutils-include],
1352 [Specify path to binutils/include/ containing plugin-api.h file for gold plugin.]),,
1353 withval=default)
1354case "$withval" in
1355 default) WITH_BINUTILS_INCDIR=default ;;
1356 /* | [[A-Za-z]]:[[\\/]]*) WITH_BINUTILS_INCDIR=$withval ;;
1357 *) AC_MSG_ERROR([Invalid path for --with-binutils-include. Provide full path]) ;;
1358esac
1359if test "x$WITH_BINUTILS_INCDIR" != xdefault ; then
1360 AC_SUBST(BINUTILS_INCDIR,$WITH_BINUTILS_INCDIR)
1361 if test ! -f "$WITH_BINUTILS_INCDIR/plugin-api.h"; then
1362 echo "$WITH_BINUTILS_INCDIR/plugin-api.h"
1363 AC_MSG_ERROR([Invalid path to directory containing plugin-api.h.]);
1364 fi
1365fi
1366
Chad Rosier445d39b2011-07-15 00:37:26 +00001367dnl Specify the URL where bug reports should be submitted.
1368AC_ARG_WITH(bug-report-url,
1369 AS_HELP_STRING([--with-bug-report-url],
Chad Rosier8c9d9b22011-08-02 20:53:43 +00001370 [Specify the URL where bug reports should be submitted (default=http://llvm.org/bugs/)]),,
1371 withval="http://llvm.org/bugs/")
Chad Rosier445d39b2011-07-15 00:37:26 +00001372AC_DEFINE_UNQUOTED(BUG_REPORT_URL,"$withval",
1373 [Bug report URL.])
1374
Chandler Carruthf11f1e42013-08-12 09:49:17 +00001375dnl --enable-terminfo: check whether the user wants to control use of terminfo:
1376AC_ARG_ENABLE(terminfo,AS_HELP_STRING(
1377 [--enable-terminfo],
1378 [Query the terminfo database if available (default is YES)]),
Chandler Carruthcad7e5e2013-08-07 08:47:36 +00001379 [case "$enableval" in
Chandler Carruthf11f1e42013-08-12 09:49:17 +00001380 yes) llvm_cv_enable_terminfo="yes" ;;
1381 no) llvm_cv_enable_terminfo="no" ;;
1382 *) AC_MSG_ERROR([Invalid setting for --enable-terminfo. Use "yes" or "no"]) ;;
Chandler Carruthcad7e5e2013-08-07 08:47:36 +00001383 esac],
Chandler Carruthf11f1e42013-08-12 09:49:17 +00001384 llvm_cv_enable_terminfo="yes")
NAKAMURA Takumi84e85302014-02-09 16:36:42 +00001385case "$llvm_cv_enable_terminfo" in
1386 yes) AC_SUBST(ENABLE_TERMINFO,[1]) ;;
1387 no) AC_SUBST(ENABLE_TERMINFO,[0]) ;;
1388esac
Chandler Carruthcad7e5e2013-08-07 08:47:36 +00001389
Peter Collingbournec7d437c2014-01-31 23:46:14 +00001390dnl --enable-libedit: check whether the user wants to turn off libedit.
1391AC_ARG_ENABLE(libedit,AS_HELP_STRING(
1392 [--enable-libedit],
1393 [Use libedit if available (default is YES)]),
1394 [case "$enableval" in
1395 yes) llvm_cv_enable_libedit="yes" ;;
1396 no) llvm_cv_enable_libedit="no" ;;
1397 *) AC_MSG_ERROR([Invalid setting for --enable-libedit. Use "yes" or "no"]) ;;
1398 esac],
1399 llvm_cv_enable_libedit="yes")
1400
Nick Lewycky9ab256ac2009-06-06 06:24:44 +00001401dnl --enable-libffi : check whether the user wants to turn off libffi:
1402AC_ARG_ENABLE(libffi,AS_HELP_STRING(
Jeffrey Yasskin914050b2010-02-09 23:03:44 +00001403 --enable-libffi,[Check for the presence of libffi (default is NO)]),
1404 [case "$enableval" in
1405 yes) llvm_cv_enable_libffi="yes" ;;
1406 no) llvm_cv_enable_libffi="no" ;;
1407 *) AC_MSG_ERROR([Invalid setting for --enable-libffi. Use "yes" or "no"]) ;;
1408 esac],
1409 llvm_cv_enable_libffi=no)
Nick Lewycky9ab256ac2009-06-06 06:24:44 +00001410
Bob Wilson3f354702011-11-28 07:59:52 +00001411AC_ARG_WITH(internal-prefix,
1412 AS_HELP_STRING([--with-internal-prefix],
1413 [Installation directory for internal files]),,
1414 withval="")
1415AC_SUBST(INTERNAL_PREFIX,[$withval])
1416
Reid Spencer0241e382004-11-25 04:51:04 +00001417dnl===-----------------------------------------------------------------------===
1418dnl===
1419dnl=== SECTION 4: Check for programs we need and that they are the right version
1420dnl===
1421dnl===-----------------------------------------------------------------------===
Reid Spencer67be17a2004-08-31 14:20:36 +00001422
Reid Spencer0241e382004-11-25 04:51:04 +00001423dnl Check for the tools that the makefiles require
1424AC_CHECK_GNU_MAKE
1425AC_PROG_LN_S
Rafael Espindolafd1355a2014-02-28 18:17:54 +00001426AC_PATH_PROG(NM, [nm], [nm])
Reid Spencerd42d5d42004-12-16 17:48:14 +00001427AC_PATH_PROG(CMP, [cmp], [cmp])
1428AC_PATH_PROG(CP, [cp], [cp])
Reid Spencer0194c9a2004-11-29 04:56:35 +00001429AC_PATH_PROG(DATE, [date], [date])
Reid Spencer0241e382004-11-25 04:51:04 +00001430AC_PATH_PROG(FIND, [find], [find])
1431AC_PATH_PROG(GREP, [grep], [grep])
1432AC_PATH_PROG(MKDIR,[mkdir],[mkdir])
Reid Spencer0194c9a2004-11-29 04:56:35 +00001433AC_PATH_PROG(MV, [mv], [mv])
Reid Spencer0241e382004-11-25 04:51:04 +00001434AC_PROG_RANLIB
Torok Edwin1e86bc52010-01-26 08:48:04 +00001435AC_CHECK_TOOL(AR, ar, false)
Reid Spencer0194c9a2004-11-29 04:56:35 +00001436AC_PATH_PROG(RM, [rm], [rm])
1437AC_PATH_PROG(SED, [sed], [sed])
1438AC_PATH_PROG(TAR, [tar], [gtar])
Reid Spencer9372247e2006-07-28 05:05:00 +00001439AC_PATH_PROG(BINPWD,[pwd], [pwd])
Reid Spencer432b3152006-06-02 23:13:18 +00001440
1441dnl Looking for misc. graph plotting software
Reid Spencer627023a2006-06-05 15:54:38 +00001442AC_PATH_PROG(DOT, [dot], [echo dot])
1443if test "$DOT" != "echo dot" ; then
1444 AC_DEFINE([HAVE_DOT],[1],[Define if the dot program is available])
1445 dnl If we're targeting for mingw we should emit windows paths, not msys
Jeff Cohenc5e5b272007-01-12 18:22:38 +00001446 if test "$llvm_cv_os_type" = "MingW" ; then
Reid Spencer627023a2006-06-05 15:54:38 +00001447 DOT=`echo $DOT | sed 's/^\/\([[A-Za-z]]\)\//\1:\//' `
1448 fi
1449 AC_DEFINE_UNQUOTED([LLVM_PATH_DOT],"$DOT${EXEEXT}",
1450 [Define to path to dot program if found or 'echo dot' otherwise])
1451fi
Reid Spencer0241e382004-11-25 04:51:04 +00001452
1453dnl Find the install program
1454AC_PROG_INSTALL
Eric Christopherc7289b62010-07-22 21:13:40 +00001455dnl Prepend src dir to install path dir if it's a relative path
1456dnl This is a hack for installs that take place in something other
1457dnl than the top level.
1458case "$INSTALL" in
1459 [[\\/$]]* | ?:[[\\/]]* ) ;;
1460 *) INSTALL="\\\$(TOPSRCDIR)/$INSTALL" ;;
1461esac
John Criswell7a3334d2003-07-22 19:13:20 +00001462
Reid Spencer0194c9a2004-11-29 04:56:35 +00001463dnl Checks for documentation and testing tools that we can do without. If these
1464dnl are not found then they are set to "true" which always succeeds but does
Eric Christophere62b4412007-12-01 00:34:39 +00001465dnl nothing. This just lets the build output show that we could have done
1466dnl something if the tool was available.
Bill Wendling5ddd03d2008-03-05 09:28:02 +00001467AC_PATH_PROG(BZIP2, [bzip2])
mike-me08af302010-05-06 23:45:43 +00001468AC_PATH_PROG(CAT, [cat])
Bill Wendling5ddd03d2008-03-05 09:28:02 +00001469AC_PATH_PROG(DOXYGEN, [doxygen])
Daniel Dunbard1888822012-05-08 18:26:07 +00001470AC_PATH_PROG(GROFF, [groff])
Eric Christopher77560892010-12-10 01:31:51 +00001471AC_PATH_PROG(GZIPBIN, [gzip])
Daniel Dunbard1888822012-05-08 18:26:07 +00001472AC_PATH_PROG(PDFROFF, [pdfroff])
Bill Wendling5ddd03d2008-03-05 09:28:02 +00001473AC_PATH_PROG(ZIP, [zip])
Peter Collingbourne82e3e372014-10-16 22:48:02 +00001474AC_PATH_PROG(GO, [go])
Peter Zotov668f9672014-10-30 08:29:45 +00001475AC_PATH_PROGS(OCAMLFIND, [ocamlfind])
Daniel Dunbard1888822012-05-08 18:26:07 +00001476AC_PATH_PROGS(GAS, [gas as])
Reid Spencer0241e382004-11-25 04:51:04 +00001477
Daniel Dunbarb524afb2010-08-11 23:53:59 +00001478dnl Get the version of the linker in use.
1479AC_LINK_GET_VERSION
1480
Nick Lewycky16aac992009-03-05 08:20:21 +00001481dnl Determine whether the linker supports the -R option.
Reid Spencer0241e382004-11-25 04:51:04 +00001482AC_LINK_USE_R
1483
Bob Wilson8658b912013-08-02 22:51:06 +00001484dnl Determine whether the compiler supports the -rdynamic option.
Nick Lewycky16aac992009-03-05 08:20:21 +00001485AC_LINK_EXPORT_DYNAMIC
1486
Dan Gohmanb7edb422010-06-01 14:56:56 +00001487dnl Determine whether the linker supports the --version-script option.
1488AC_LINK_VERSION_SCRIPT
Dan Gohman91f8ad72010-04-16 22:58:15 +00001489
Rafael Espindolafd1355a2014-02-28 18:17:54 +00001490AC_CHECK_HEADERS([errno.h])
1491
1492case "$llvm_cv_os_type" in
1493 Cygwin|MingW|Win32) llvm_shlib_ext=.dll ;;
1494 Darwin) llvm_shlib_ext=.dylib ;;
1495 *) llvm_shlib_ext=.so ;;
1496esac
1497
1498AC_DEFINE_UNQUOTED([LTDL_SHLIB_EXT], ["$llvm_shlib_ext"], [The shared library extension])
Mikhail Glushenkov2c332fe2009-04-21 19:46:10 +00001499
Reid Spencer0241e382004-11-25 04:51:04 +00001500AC_MSG_CHECKING([tool compatibility])
1501
Reid Spencerca06c8e2004-12-08 23:07:27 +00001502dnl Ensure that compilation tools are GCC or a GNU compatible compiler such as
1503dnl ICC; we use GCC specific options in the makefiles so the compiler needs
1504dnl to support those options.
1505dnl "icc" emits gcc signatures
1506dnl "icc -no-gcc" emits no gcc signature BUT is still compatible
1507ICC=no
1508IXX=no
1509case $CC in
Eric Christophere62b4412007-12-01 00:34:39 +00001510 icc*|icpc*)
Reid Spencerca06c8e2004-12-08 23:07:27 +00001511 ICC=yes
1512 IXX=yes
1513 ;;
1514 *)
1515 ;;
1516esac
1517
Duraid Madina8604de82006-02-15 07:57:42 +00001518if test "$GCC" != "yes" && test "$ICC" != "yes"
1519then
1520 AC_MSG_ERROR([gcc|icc required but not found])
1521fi
1522
Daniel Dunbar00e7a842010-12-08 01:48:03 +00001523dnl Ensure that compilation tools are compatible with GCC extensions
Duraid Madina8604de82006-02-15 07:57:42 +00001524if test "$GXX" != "yes" && test "$IXX" != "yes"
1525then
Daniel Dunbar00e7a842010-12-08 01:48:03 +00001526 AC_MSG_ERROR([g++|clang++|icc required but not found])
Duraid Madina8604de82006-02-15 07:57:42 +00001527fi
1528
Reid Spencer0241e382004-11-25 04:51:04 +00001529dnl Verify that GCC is version 3.0 or higher
Reid Spencerca06c8e2004-12-08 23:07:27 +00001530if test "$GCC" = "yes"
Reid Spencer0241e382004-11-25 04:51:04 +00001531then
NAKAMURA Takumie5bc87c2013-01-30 01:37:55 +00001532 AC_COMPILE_IFELSE(
1533[
1534 AC_LANG_SOURCE([[
1535 #if !defined(__GNUC__) || __GNUC__ < 3
1536 #error Unsupported GCC version
1537 #endif
1538 ]])
1539],
1540[], [AC_MSG_ERROR([gcc 3.x required, but you have a lower version])])
Reid Spencer0241e382004-11-25 04:51:04 +00001541fi
1542
1543dnl Check for GNU Make. We use its extensions, so don't build without it
1544if test -z "$llvm_cv_gnu_make_command"
1545then
1546 AC_MSG_ERROR([GNU Make required but not found])
1547fi
1548
1549dnl Tool compatibility is okay if we make it here.
1550AC_MSG_RESULT([ok])
1551
Eric Christopherb3762a02010-03-02 05:17:21 +00001552dnl Check optional compiler flags.
Julien Lerougee4492f62009-10-26 19:58:44 +00001553AC_MSG_CHECKING([optional compiler flags])
1554CXX_FLAG_CHECK(NO_VARIADIC_MACROS, [-Wno-variadic-macros])
1555CXX_FLAG_CHECK(NO_MISSING_FIELD_INITIALIZERS, [-Wno-missing-field-initializers])
Rafael Espindola42e94d12012-02-28 23:32:06 +00001556CXX_FLAG_CHECK(COVERED_SWITCH_DEFAULT, [-Wcovered-switch-default])
Dmitri Gribenkob5e23ef2013-02-13 21:19:39 +00001557
David Greene9ff8d472013-01-09 22:11:13 +00001558dnl GCC's potential uninitialized use analysis is weak and presents lots of
1559dnl false positives, so disable it.
Dmitri Gribenkob5e23ef2013-02-13 21:19:39 +00001560NO_UNINITIALIZED=
1561NO_MAYBE_UNINITIALIZED=
David Greene9ff8d472013-01-09 22:11:13 +00001562if test "$GXX" = "yes"
1563then
1564 CXX_FLAG_CHECK(NO_MAYBE_UNINITIALIZED, [-Wno-maybe-uninitialized])
1565 dnl gcc 4.7 introduced -Wmaybe-uninitialized to distinguish cases which are
Dmitri Gribenkob5e23ef2013-02-13 21:19:39 +00001566 dnl known to be uninitialized from cases which might be uninitialized. We
David Greene9ff8d472013-01-09 22:11:13 +00001567 dnl still want to catch the first kind of errors.
Dmitri Gribenkob5e23ef2013-02-13 21:19:39 +00001568 if test -z "$NO_MAYBE_UNINITIALIZED"
David Greene9ff8d472013-01-09 22:11:13 +00001569 then
1570 CXX_FLAG_CHECK(NO_UNINITIALIZED, [-Wno-uninitialized])
David Greene9ff8d472013-01-09 22:11:13 +00001571 fi
David Greene9ff8d472013-01-09 22:11:13 +00001572fi
Eric Christopher65ec83b2014-11-05 00:35:15 +00001573
1574dnl Check for misbehaving -Wcomment (gcc-4.7 has this) and maybe add
1575dnl -Wno-comment to the flags.
1576no_comment=
1577llvm_cv_old_cxxflags="$CXXFLAGS"
1578CXXFLAGS="$CXXFLAGS -Wcomment -Werror"
1579AC_COMPILE_IFELSE(
1580[
1581 AC_LANG_SOURCE([[// Comment \o\
1582// Another comment
1583int main() { return 0; }
1584 ]])
1585],
1586[
1587 no_comment=-Wno-comment
1588],
1589[])
1590AC_SUBST(NO_COMMENT, [$no_comment])
1591CXXFLAGS="$llvm_cv_old_cxxflags"
1592
1593AC_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 +00001594
Saleem Abdulrasool26127bd2013-01-30 04:07:37 +00001595AC_ARG_WITH([python],
1596 [AS_HELP_STRING([--with-python], [path to python])],
1597 [PYTHON="$withval"])
1598
1599if test -n "$PYTHON" && test -x "$PYTHON" ; then
1600 AC_MSG_CHECKING([for python])
1601 AC_MSG_RESULT([user defined: $with_python])
1602else
1603 if test -n "$PYTHON" ; then
1604 AC_MSG_WARN([specified python ($PYTHON) is not usable, searching path])
1605 fi
1606
Rafael Espindola21a400852014-12-12 15:29:31 +00001607 AC_PATH_PROG([PYTHON], [python python2 python27],
Saleem Abdulrasool26127bd2013-01-30 04:07:37 +00001608 [AC_MSG_RESULT([not found])
Rafael Espindola21a400852014-12-12 15:29:31 +00001609 AC_MSG_ERROR([could not find python 2.7 or higher])])
Saleem Abdulrasool26127bd2013-01-30 04:07:37 +00001610fi
1611
Rafael Espindola21a400852014-12-12 15:29:31 +00001612AC_MSG_CHECKING([for python >= 2.7])
Bill Wendling58463e4e82013-10-12 08:42:59 +00001613ac_python_version=`$PYTHON -V 2>&1 | cut -d' ' -f2`
Saleem Abdulrasool26127bd2013-01-30 04:07:37 +00001614ac_python_version_major=`echo $ac_python_version | cut -d'.' -f1`
1615ac_python_version_minor=`echo $ac_python_version | cut -d'.' -f2`
1616ac_python_version_patch=`echo $ac_python_version | cut -d'.' -f3`
Bill Wendling58463e4e82013-10-12 08:42:59 +00001617if test "$ac_python_version_major" -gt "2" || \
1618 (test "$ac_python_version_major" -eq "2" && \
Rafael Espindola21a400852014-12-12 15:29:31 +00001619 test "$ac_python_version_minor" -ge "7") ; then
Saleem Abdulrasool26127bd2013-01-30 04:07:37 +00001620 AC_MSG_RESULT([$PYTHON ($ac_python_version)])
1621else
1622 AC_MSG_RESULT([not found])
Rafael Espindola21a400852014-12-12 15:29:31 +00001623 AC_MSG_FAILURE([found python $ac_python_version ($PYTHON); required >= 2.7])
Saleem Abdulrasool26127bd2013-01-30 04:07:37 +00001624fi
Julien Lerougee4492f62009-10-26 19:58:44 +00001625
Reid Spencer0241e382004-11-25 04:51:04 +00001626dnl===-----------------------------------------------------------------------===
1627dnl===
1628dnl=== SECTION 5: Check for libraries
1629dnl===
1630dnl===-----------------------------------------------------------------------===
1631
Reid Spencerec4a7f522006-01-19 08:31:08 +00001632AC_CHECK_LIB(m,sin)
Jeff Cohenc5e5b272007-01-12 18:22:38 +00001633if test "$llvm_cv_os_type" = "MingW" ; then
Reid Spencer187b4ad2006-06-01 19:03:21 +00001634 AC_CHECK_LIB(imagehlp, main)
1635 AC_CHECK_LIB(psapi, main)
David Majnemer61eae2e2013-10-07 01:00:07 +00001636 AC_CHECK_LIB(shell32, main)
Reid Spencera16b9862006-06-01 16:55:59 +00001637fi
Reid Spencercd59fb72005-07-12 07:19:13 +00001638
Brian Gaeke25f2a372003-10-07 05:03:36 +00001639dnl dlopen() is required for plugin support.
NAKAMURA Takumi84e85302014-02-09 16:36:42 +00001640AC_SEARCH_LIBS(dlopen,dl,LLVM_DEFINE_SUBST([HAVE_DLOPEN],[1],
Reid Spencer0241e382004-11-25 04:51:04 +00001641 [Define if dlopen() is available on this platform.]),
1642 AC_MSG_WARN([dlopen() not found - disabling plugin support]))
John Criswell7a3334d2003-07-22 19:13:20 +00001643
Chandler Carruthd121a7b2013-01-05 00:29:06 +00001644dnl Search for the clock_gettime() function. Note that we rely on the POSIX
Chandler Carruth4a778632013-01-05 00:34:40 +00001645dnl macros to detect whether clock_gettime is available, this just finds the
1646dnl right libraries to link with.
Chandler Carruthd121a7b2013-01-05 00:29:06 +00001647AC_SEARCH_LIBS(clock_gettime,rt)
Chandler Carruthef7f9682013-01-04 23:19:55 +00001648
Chandler Carruthcad7e5e2013-08-07 08:47:36 +00001649dnl The curses library is optional; used for querying terminal info
Chandler Carruthf11f1e42013-08-12 09:49:17 +00001650if test "$llvm_cv_enable_terminfo" = "yes" ; then
Chandler Carruthcad7e5e2013-08-07 08:47:36 +00001651 dnl We need the has_color functionality in curses for it to be useful.
Joerg Sonnenberger4e5a3992013-08-17 11:06:00 +00001652 AC_SEARCH_LIBS(setupterm,tinfo terminfo curses ncurses ncursesw,
NAKAMURA Takumi84e85302014-02-09 16:36:42 +00001653 LLVM_DEFINE_SUBST([HAVE_TERMINFO],[1],
1654 [Define if the setupterm() function is supported this platform.]))
Chandler Carruthcad7e5e2013-08-07 08:47:36 +00001655fi
1656
Peter Collingbournec7d437c2014-01-31 23:46:14 +00001657dnl The libedit library is optional; used by lib/LineEditor
1658if test "$llvm_cv_enable_libedit" = "yes" ; then
1659 AC_SEARCH_LIBS(el_init,edit,
1660 AC_DEFINE([HAVE_LIBEDIT],[1],
1661 [Define if libedit is available on this platform.]))
1662fi
1663
Nick Lewyckya89ec992009-02-04 06:26:47 +00001664dnl libffi is optional; used to call external functions from the interpreter
Nick Lewycky9ab256ac2009-06-06 06:24:44 +00001665if test "$llvm_cv_enable_libffi" = "yes" ; then
1666 AC_SEARCH_LIBS(ffi_call,ffi,AC_DEFINE([HAVE_FFI_CALL],[1],
1667 [Define if libffi is available on this platform.]),
Jeffrey Yasskin914050b2010-02-09 23:03:44 +00001668 AC_MSG_ERROR([libffi not found - configure without --enable-libffi to compile without it]))
Nick Lewycky9ab256ac2009-06-06 06:24:44 +00001669fi
Nick Lewyckya89ec992009-02-04 06:26:47 +00001670
John Criswell7a3334d2003-07-22 19:13:20 +00001671dnl mallinfo is optional; the code can compile (minus features) without it
Reid Spencer0241e382004-11-25 04:51:04 +00001672AC_SEARCH_LIBS(mallinfo,malloc,AC_DEFINE([HAVE_MALLINFO],[1],
1673 [Define if mallinfo() is available on this platform.]))
John Criswell7a3334d2003-07-22 19:13:20 +00001674
Brian Gaeke7ee7b402003-12-05 19:29:01 +00001675dnl pthread locking functions are optional - but llvm will not be thread-safe
1676dnl without locks.
Dylan Noblesmithefddf202011-11-28 00:48:58 +00001677if test "$LLVM_ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then
Edward O'Callaghanedea3262009-10-14 11:12:33 +00001678 AC_CHECK_LIB(pthread, pthread_mutex_init)
Reid Spencerf85fabeb2005-08-24 10:07:20 +00001679 AC_SEARCH_LIBS(pthread_mutex_lock,pthread,
1680 AC_DEFINE([HAVE_PTHREAD_MUTEX_LOCK],[1],
1681 [Have pthread_mutex_lock]))
Owen Andersona149e222009-06-16 18:20:20 +00001682 AC_SEARCH_LIBS(pthread_rwlock_init,pthread,
1683 AC_DEFINE([HAVE_PTHREAD_RWLOCK_INIT],[1],
1684 [Have pthread_rwlock_init]))
Owen Anderson11549832009-06-25 23:10:26 +00001685 AC_SEARCH_LIBS(pthread_getspecific,pthread,
1686 AC_DEFINE([HAVE_PTHREAD_GETSPECIFIC],[1],
1687 [Have pthread_getspecific]))
Reid Spencerf85fabeb2005-08-24 10:07:20 +00001688fi
Brian Gaeke7ee7b402003-12-05 19:29:01 +00001689
Alexey Samsonov2fb337e2013-04-23 08:28:39 +00001690dnl zlib is optional; used for compression/uncompression
1691if test "$LLVM_ENABLE_ZLIB" -eq 1 ; then
1692 AC_CHECK_LIB(z, compress2)
1693fi
1694
Jeffrey Yasskinbf3d6ba2009-07-10 21:08:20 +00001695dnl Allow OProfile support for JIT output.
1696AC_ARG_WITH(oprofile,
1697 AS_HELP_STRING([--with-oprofile=<prefix>],
1698 [Tell OProfile >= 0.9.4 how to symbolize JIT output]),
1699 [
1700 AC_SUBST(USE_OPROFILE, [1])
1701 case "$withval" in
1702 /usr|yes) llvm_cv_oppath=/usr/lib/oprofile ;;
Jeffrey Yasskin2da72312009-10-07 23:22:42 +00001703 no) llvm_cv_oppath=
1704 AC_SUBST(USE_OPROFILE, [0]) ;;
Jeffrey Yasskinbf3d6ba2009-07-10 21:08:20 +00001705 *) llvm_cv_oppath="${withval}/lib/oprofile"
Eric Christopher46342fe2012-08-03 17:45:31 +00001706 CPPFLAGS="-I${withval}/include";;
Jeffrey Yasskinbf3d6ba2009-07-10 21:08:20 +00001707 esac
Eli Bendersky5262ad22012-03-13 08:33:15 +00001708 case $llvm_cv_os_type in
1709 Linux)
1710 if test -n "$llvm_cv_oppath" ; then
1711 LIBS="$LIBS -lopagent -L${llvm_cv_oppath} -Wl,-rpath,${llvm_cv_oppath}"
1712 dnl Work around http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=537744:
1713 dnl libbfd is not included properly in libopagent in some Debian
1714 dnl versions. If libbfd isn't found at all, we assume opagent works
1715 dnl anyway.
1716 AC_SEARCH_LIBS(bfd_init, bfd, [], [])
1717 AC_SEARCH_LIBS(op_open_agent, opagent, [], [
1718 echo "Error! You need to have libopagent around."
Sylvestre Ledru1b3961c2015-02-01 14:55:43 +00001719 exit 1
Eli Bendersky5262ad22012-03-13 08:33:15 +00001720 ])
1721 AC_CHECK_HEADER([opagent.h], [], [
1722 echo "Error! You need to have opagent.h around."
Sylvestre Ledru1b3961c2015-02-01 14:55:43 +00001723 exit 1
Eli Bendersky5262ad22012-03-13 08:33:15 +00001724 ])
1725 fi ;;
1726 *)
1727 AC_MSG_ERROR([OProfile support is available on Linux only.]) ;;
Peter Zotov668f9672014-10-30 08:29:45 +00001728 esac
Jeffrey Yasskinbf3d6ba2009-07-10 21:08:20 +00001729 ],
1730 [
Jeffrey Yasskin2da72312009-10-07 23:22:42 +00001731 AC_SUBST(USE_OPROFILE, [0])
Jeffrey Yasskinbf3d6ba2009-07-10 21:08:20 +00001732 ])
Eli Bendersky5262ad22012-03-13 08:33:15 +00001733AC_DEFINE_UNQUOTED([LLVM_USE_OPROFILE],$USE_OPROFILE,
Jeffrey Yasskinbf3d6ba2009-07-10 21:08:20 +00001734 [Define if we have the oprofile JIT-support library])
1735
Eli Bendersky5262ad22012-03-13 08:33:15 +00001736dnl Enable support for Intel JIT Events API.
1737AC_ARG_WITH(intel-jitevents,
Andrew Kaylor5808c7d2012-09-28 17:35:20 +00001738 AS_HELP_STRING([--with-intel-jitevents Notify Intel JIT profiling API of generated code]),
Eli Bendersky5262ad22012-03-13 08:33:15 +00001739 [
Andrew Kaylor5808c7d2012-09-28 17:35:20 +00001740 case "$withval" in
1741 yes) AC_SUBST(USE_INTEL_JITEVENTS,[1]);;
1742 no) AC_SUBST(USE_INTEL_JITEVENTS,[0]);;
1743 *) AC_MSG_ERROR([Invalid setting for --with-intel-jitevents. Use "yes" or "no"]);;
1744 esac
1745
Eli Bendersky5262ad22012-03-13 08:33:15 +00001746 case $llvm_cv_os_type in
1747 Linux|Win32|Cygwin|MingW) ;;
Andrew Kaylor5808c7d2012-09-28 17:35:20 +00001748 *) AC_MSG_ERROR([Intel JIT API support is available on Linux and Windows only.]);;
Eli Bendersky5262ad22012-03-13 08:33:15 +00001749 esac
1750
Eli Bendersky5262ad22012-03-13 08:33:15 +00001751 case "$llvm_cv_target_arch" in
Andrew Kaylor5808c7d2012-09-28 17:35:20 +00001752 x86|x86_64) ;;
1753 *) AC_MSG_ERROR([Target architecture $llvm_cv_target_arch does not support Intel JIT Events API.]);;
Eli Bendersky5262ad22012-03-13 08:33:15 +00001754 esac
Eli Bendersky5262ad22012-03-13 08:33:15 +00001755 ],
1756 [
1757 AC_SUBST(USE_INTEL_JITEVENTS, [0])
1758 ])
1759AC_DEFINE_UNQUOTED([LLVM_USE_INTEL_JITEVENTS],$USE_INTEL_JITEVENTS,
1760 [Define if we have the Intel JIT API runtime support library])
1761
Eric Christopherc807c532012-08-03 19:47:19 +00001762dnl Check for libxml2
1763dnl Right now we're just checking for the existence, we could also check for a
1764dnl particular version via --version on xml2-config
1765AC_CHECK_PROGS(XML2CONFIG, xml2-config)
1766
1767AC_MSG_CHECKING(for libxml2 includes)
1768if test "x$XML2CONFIG" = "x"; then
1769 AC_MSG_RESULT(xml2-config not found)
1770else
1771 LIBXML2_INC=`$XML2CONFIG --cflags`
1772 AC_MSG_RESULT($LIBXML2_INC)
1773 AC_CHECK_LIB(xml2, xmlReadFile,[AC_DEFINE([CLANG_HAVE_LIBXML],1,[Define if we have libxml2])
1774 LIBXML2_LIBS="-lxml2"])
1775fi
1776AC_SUBST(LIBXML2_LIBS)
1777AC_SUBST(LIBXML2_INC)
1778
Reid Spencer0241e382004-11-25 04:51:04 +00001779dnl===-----------------------------------------------------------------------===
1780dnl===
1781dnl=== SECTION 6: Check for header files
1782dnl===
1783dnl===-----------------------------------------------------------------------===
1784
Reid Spencer8bc110c2004-12-25 07:31:29 +00001785dnl First, use autoconf provided macros for specific headers that we need
Brian Gaeke2abe7ae2004-01-13 06:43:16 +00001786dnl We don't check for ancient stuff or things that are guaranteed to be there
1787dnl by the C++ standard. We always use the <cfoo> versions of <foo.h> C headers.
Reid Spencer8bc110c2004-12-25 07:31:29 +00001788dnl Generally we're looking for POSIX headers.
1789AC_HEADER_DIRENT
Reid Spencer0241e382004-11-25 04:51:04 +00001790AC_HEADER_MMAP_ANONYMOUS
Reid Spencer8bc110c2004-12-25 07:31:29 +00001791AC_HEADER_STAT
Reid Spencer8bc110c2004-12-25 07:31:29 +00001792AC_HEADER_SYS_WAIT
1793AC_HEADER_TIME
John Criswell7a3334d2003-07-22 19:13:20 +00001794
Benjamin Kramer00622f72013-05-03 15:55:06 +00001795AC_LANG_PUSH([C++])
Rui Ueyama292fb6d2014-10-27 08:16:18 +00001796dnl size_t must be defined before including cxxabi.h on FreeBSD 10.0.
1797AC_CHECK_HEADERS([cxxabi.h], [], [],
1798[#include <stddef.h>
1799])
Benjamin Kramer00622f72013-05-03 15:55:06 +00001800AC_LANG_POP([C++])
Rui Ueyama292fb6d2014-10-27 08:16:18 +00001801
Reid Kleckner37f69de2013-07-26 16:54:23 +00001802AC_CHECK_HEADERS([dlfcn.h execinfo.h fcntl.h inttypes.h link.h])
Douglas Gregorb81294d2009-05-18 17:21:34 +00001803AC_CHECK_HEADERS([malloc.h setjmp.h signal.h stdint.h termios.h unistd.h])
Reid Kleckner37f69de2013-07-26 16:54:23 +00001804AC_CHECK_HEADERS([utime.h])
Daniel Dunbar80da3fb2011-02-03 02:39:58 +00001805AC_CHECK_HEADERS([sys/mman.h sys/param.h sys/resource.h sys/time.h sys/uio.h])
Reid Kleckner37f69de2013-07-26 16:54:23 +00001806AC_CHECK_HEADERS([sys/ioctl.h malloc/malloc.h mach/mach.h])
Jeffrey Yasskin3ddd88f2010-03-15 04:57:55 +00001807AC_CHECK_HEADERS([valgrind/valgrind.h])
Dan Gohmanb48f9042010-09-17 20:06:27 +00001808AC_CHECK_HEADERS([fenv.h])
Joerg Sonnenberger8a1177f2013-03-25 13:13:33 +00001809AC_CHECK_DECLS([FE_ALL_EXCEPT, FE_INEXACT], [], [], [[#include <fenv.h>]])
Dylan Noblesmithefddf202011-11-28 00:48:58 +00001810if test "$LLVM_ENABLE_THREADS" -eq 1 && test "$ENABLE_PTHREADS" -eq 1 ; then
Reid Spencer83bcd762007-08-17 05:44:59 +00001811 AC_CHECK_HEADERS(pthread.h,
Nick Lewyckya89ec992009-02-04 06:26:47 +00001812 AC_SUBST(HAVE_PTHREAD, 1),
1813 AC_SUBST(HAVE_PTHREAD, 0))
Reid Spencerd4399922006-12-01 00:37:14 +00001814else
1815 AC_SUBST(HAVE_PTHREAD, 0)
Reid Spencerf85fabeb2005-08-24 10:07:20 +00001816fi
Alexey Samsonov2fb337e2013-04-23 08:28:39 +00001817if test "$LLVM_ENABLE_ZLIB" -eq 1 ; then
1818 AC_CHECK_HEADERS(zlib.h,
1819 AC_SUBST(HAVE_LIBZ, 1),
1820 AC_SUBST(HAVE_LIBZ, 0))
1821else
1822 AC_SUBST(HAVE_LIBZ, 0)
1823fi
Brian Gaeke090ed132004-02-23 22:07:01 +00001824
Nick Lewyckye54da992009-04-13 04:26:06 +00001825dnl Try to find ffi.h.
Nick Lewycky9ab256ac2009-06-06 06:24:44 +00001826if test "$llvm_cv_enable_libffi" = "yes" ; then
1827 AC_CHECK_HEADERS([ffi.h ffi/ffi.h])
1828fi
Nick Lewyckya89ec992009-02-04 06:26:47 +00001829
Eric Christopherca466732010-12-03 07:45:22 +00001830dnl Try to find Darwin specific crash reporting libraries.
Eric Christophere9c1bb62010-06-22 21:01:04 +00001831AC_CHECK_HEADERS([CrashReporterClient.h])
1832
Eric Christopherca466732010-12-03 07:45:22 +00001833dnl Try to find Darwin specific crash reporting global.
Eric Christopherba4f7722010-12-07 02:05:42 +00001834AC_MSG_CHECKING([__crashreporter_info__])
1835AC_LINK_IFELSE(
NAKAMURA Takumie5bc87c2013-01-30 01:37:55 +00001836[
1837 AC_LANG_SOURCE([[
1838 extern const char *__crashreporter_info__;
1839 int main() {
1840 __crashreporter_info__ = "test";
1841 return 0;
1842 }
1843 ]])
1844],
1845[
1846 AC_MSG_RESULT([yes])
NAKAMURA Takumi58da26b2013-01-30 01:38:03 +00001847 AC_DEFINE([HAVE_CRASHREPORTER_INFO], [1], [can use __crashreporter_info__])
NAKAMURA Takumie5bc87c2013-01-30 01:37:55 +00001848],
1849[
1850 AC_MSG_RESULT([no])
NAKAMURA Takumi58da26b2013-01-30 01:38:03 +00001851 AC_DEFINE([HAVE_CRASHREPORTER_INFO], [0], [can use __crashreporter_info__])
NAKAMURA Takumie5bc87c2013-01-30 01:37:55 +00001852])
Eric Christopherba4f7722010-12-07 02:05:42 +00001853
Reid Spencer0241e382004-11-25 04:51:04 +00001854dnl===-----------------------------------------------------------------------===
1855dnl===
1856dnl=== SECTION 7: Check for types and structures
1857dnl===
1858dnl===-----------------------------------------------------------------------===
1859
Reid Spencer128ae102006-11-03 18:04:08 +00001860AC_HUGE_VAL_CHECK
John Criswell7a3334d2003-07-22 19:13:20 +00001861AC_TYPE_PID_T
1862AC_TYPE_SIZE_T
Torok Edwin1e86bc52010-01-26 08:48:04 +00001863AC_DEFINE_UNQUOTED([RETSIGTYPE],[void],[Define as the return type of signal handlers (`int' or `void').])
Reid Spencer0241e382004-11-25 04:51:04 +00001864AC_STRUCT_TM
John Criswell7a3334d2003-07-22 19:13:20 +00001865AC_CHECK_TYPES([int64_t],,AC_MSG_ERROR([Type int64_t required but not found]))
Reid Spencerab2228a2004-09-02 21:38:24 +00001866AC_CHECK_TYPES([uint64_t],,
Reid Spencer0241e382004-11-25 04:51:04 +00001867 AC_CHECK_TYPES([u_int64_t],,
1868 AC_MSG_ERROR([Type uint64_t or u_int64_t required but not found])))
John Criswell7a3334d2003-07-22 19:13:20 +00001869
Reid Spencer0241e382004-11-25 04:51:04 +00001870dnl===-----------------------------------------------------------------------===
1871dnl===
1872dnl=== SECTION 8: Check for specific functions needed
1873dnl===
1874dnl===-----------------------------------------------------------------------===
1875
Benjamin Kramer37dce442015-03-09 18:35:18 +00001876AC_CHECK_FUNCS([backtrace getcwd ])
Gabor Greiff307d942007-07-13 09:48:29 +00001877AC_CHECK_FUNCS([getpagesize getrusage getrlimit setrlimit gettimeofday ])
Anton Korobeynikovd01defe2007-02-16 19:11:07 +00001878AC_CHECK_FUNCS([isatty mkdtemp mkstemp ])
Reid Kleckner37f69de2013-07-26 16:54:23 +00001879AC_CHECK_FUNCS([mktemp posix_spawn pread realpath sbrk setrlimit ])
Todd Fiala4ccfe392014-02-05 05:04:36 +00001880AC_CHECK_FUNCS([strerror strerror_r setenv ])
Chris Lattner58cee552005-11-14 07:24:17 +00001881AC_CHECK_FUNCS([strtoll strtoq sysconf malloc_zone_statistics ])
Daniel Dunbar80da3fb2011-02-03 02:39:58 +00001882AC_CHECK_FUNCS([setjmp longjmp sigsetjmp siglongjmp writev])
Eric Christophera24dc7f2013-07-04 01:10:38 +00001883AC_CHECK_FUNCS([futimes futimens])
John Criswell42859552003-10-13 16:22:01 +00001884AC_C_PRINTF_A
Reid Spencer0241e382004-11-25 04:51:04 +00001885AC_FUNC_RAND48
John Criswell42859552003-10-13 16:22:01 +00001886
Todd Fiala4ccfe392014-02-05 05:04:36 +00001887dnl Check for arc4random accessible via AC_INCLUDES_DEFAULT.
1888AC_CHECK_DECLS([arc4random])
1889
NAKAMURA Takumi189111802011-02-09 04:18:48 +00001890dnl Check the declaration "Secure API" on Windows environments.
1891AC_CHECK_DECLS([strerror_s])
1892
NAKAMURA Takumi03a541f2011-02-05 15:11:53 +00001893dnl Check symbols in libgcc.a for JIT on Mingw.
1894if test "$llvm_cv_os_type" = "MingW" ; then
1895 AC_CHECK_LIB(gcc,_alloca,AC_DEFINE([HAVE__ALLOCA],[1],[Have host's _alloca]))
1896 AC_CHECK_LIB(gcc,__alloca,AC_DEFINE([HAVE___ALLOCA],[1],[Have host's __alloca]))
1897 AC_CHECK_LIB(gcc,__chkstk,AC_DEFINE([HAVE___CHKSTK],[1],[Have host's __chkstk]))
NAKAMURA Takumi78855072015-01-30 13:01:19 +00001898 AC_CHECK_LIB(gcc,__chkstk_ms,AC_DEFINE([HAVE___CHKSTK_MS],[1],[Have host's __chkstk_ms]))
NAKAMURA Takumi03a541f2011-02-05 15:11:53 +00001899 AC_CHECK_LIB(gcc,___chkstk,AC_DEFINE([HAVE____CHKSTK],[1],[Have host's ___chkstk]))
NAKAMURA Takumi78855072015-01-30 13:01:19 +00001900 AC_CHECK_LIB(gcc,___chkstk_ms,AC_DEFINE([HAVE____CHKSTK_MS],[1],[Have host's ___chkstk_ms]))
NAKAMURA Takumi03a541f2011-02-05 15:11:53 +00001901
1902 AC_CHECK_LIB(gcc,__ashldi3,AC_DEFINE([HAVE___ASHLDI3],[1],[Have host's __ashldi3]))
1903 AC_CHECK_LIB(gcc,__ashrdi3,AC_DEFINE([HAVE___ASHRDI3],[1],[Have host's __ashrdi3]))
1904 AC_CHECK_LIB(gcc,__divdi3,AC_DEFINE([HAVE___DIVDI3],[1],[Have host's __divdi3]))
1905 AC_CHECK_LIB(gcc,__fixdfdi,AC_DEFINE([HAVE___FIXDFDI],[1],[Have host's __fixdfdi]))
1906 AC_CHECK_LIB(gcc,__fixsfdi,AC_DEFINE([HAVE___FIXSFDI],[1],[Have host's __fixsfdi]))
1907 AC_CHECK_LIB(gcc,__floatdidf,AC_DEFINE([HAVE___FLOATDIDF],[1],[Have host's __floatdidf]))
1908 AC_CHECK_LIB(gcc,__lshrdi3,AC_DEFINE([HAVE___LSHRDI3],[1],[Have host's __lshrdi3]))
1909 AC_CHECK_LIB(gcc,__moddi3,AC_DEFINE([HAVE___MODDI3],[1],[Have host's __moddi3]))
1910 AC_CHECK_LIB(gcc,__udivdi3,AC_DEFINE([HAVE___UDIVDI3],[1],[Have host's __udivdi3]))
1911 AC_CHECK_LIB(gcc,__umoddi3,AC_DEFINE([HAVE___UMODDI3],[1],[Have host's __umoddi3]))
1912
1913 AC_CHECK_LIB(gcc,__main,AC_DEFINE([HAVE___MAIN],[1],[Have host's __main]))
1914 AC_CHECK_LIB(gcc,__cmpdi2,AC_DEFINE([HAVE___CMPDI2],[1],[Have host's __cmpdi2]))
1915fi
1916
NAKAMURA Takumi4471f822011-05-01 13:29:49 +00001917dnl Check Win32 API EnumerateLoadedModules.
1918if test "$llvm_cv_os_type" = "MingW" ; then
1919 AC_MSG_CHECKING([whether EnumerateLoadedModules() accepts new decl])
NAKAMURA Takumie5bc87c2013-01-30 01:37:55 +00001920 AC_COMPILE_IFELSE(
1921[
1922 AC_LANG_SOURCE([[
1923 #include <windows.h>
1924 #include <imagehlp.h>
1925 extern void foo(PENUMLOADED_MODULES_CALLBACK);
1926 extern void foo(BOOL(CALLBACK*)(PCSTR,ULONG_PTR,ULONG,PVOID));
1927 ]])
1928],
NAKAMURA Takumi4471f822011-05-01 13:29:49 +00001929[
1930 AC_MSG_RESULT([yes])
1931 llvm_cv_win32_elmcb_pcstr="PCSTR"
1932],
1933[
1934 AC_MSG_RESULT([no])
1935 llvm_cv_win32_elmcb_pcstr="PSTR"
1936])
1937 AC_DEFINE_UNQUOTED([WIN32_ELMCB_PCSTR],$llvm_cv_win32_elmcb_pcstr,[Type of 1st arg on ELM Callback])
1938fi
1939
Eric Christophere62b4412007-12-01 00:34:39 +00001940dnl Check for mmap support.We also need to know if /dev/zero is required to
1941dnl be opened for allocating RWX memory.
Anton Korobeynikov4480ec32007-01-20 07:40:26 +00001942dnl Make sure we aren't attempting to configure for an unknown system
1943if test "$llvm_cv_platform_type" = "Unix" ; then
Eric Christophere62b4412007-12-01 00:34:39 +00001944 AC_FUNC_MMAP
Anton Korobeynikov4480ec32007-01-20 07:40:26 +00001945 AC_FUNC_MMAP_FILE
1946 AC_NEED_DEV_ZERO_FOR_MMAP
Reid Spencer0241e382004-11-25 04:51:04 +00001947
Anton Korobeynikov4480ec32007-01-20 07:40:26 +00001948 if test "$ac_cv_func_mmap_fixed_mapped" = "no"
1949 then
1950 AC_MSG_WARN([mmap() of a fixed address required but not supported])
1951 fi
1952 if test "$ac_cv_func_mmap_file" = "no"
1953 then
1954 AC_MSG_WARN([mmap() of files required but not found])
1955 fi
John Criswell5ec24d82003-07-22 20:59:52 +00001956fi
1957
Owen Andersonb9509c52009-05-18 23:58:51 +00001958dnl atomic builtins are required for threading support.
Owen Andersonaf5db832009-05-19 22:18:56 +00001959AC_MSG_CHECKING(for GCC atomic builtins)
Eric Christopher84c95cc2010-07-28 20:26:34 +00001960dnl Since we'll be using these atomic builtins in C++ files we should test
1961dnl the C++ compiler.
1962AC_LANG_PUSH([C++])
Owen Andersonaf5db832009-05-19 22:18:56 +00001963AC_LINK_IFELSE(
NAKAMURA Takumie5bc87c2013-01-30 01:37:55 +00001964[
1965 AC_LANG_SOURCE([[
1966 int main() {
1967 volatile unsigned long val = 1;
1968 __sync_synchronize();
1969 __sync_val_compare_and_swap(&val, 1, 0);
1970 __sync_add_and_fetch(&val, 1);
1971 __sync_sub_and_fetch(&val, 1);
1972 return 0;
1973 }
1974 ]])
1975],
1976[
1977 AC_MSG_RESULT([yes])
1978 AC_DEFINE([LLVM_HAS_ATOMICS], [1], [Has gcc/MSVC atomic intrinsics])
1979],
1980[
1981 AC_MSG_RESULT([no])
1982 AC_DEFINE([LLVM_HAS_ATOMICS], [0], [Has gcc/MSVC atomic intrinsics])
1983 AC_MSG_WARN([LLVM will be built thread-unsafe because atomic builtins are missing])
1984])
1985AC_LANG_POP([C++])
Owen Andersonb9509c52009-05-18 23:58:51 +00001986
Reid Spencer0241e382004-11-25 04:51:04 +00001987dnl===-----------------------------------------------------------------------===
1988dnl===
1989dnl=== SECTION 9: Additional checks, variables, etc.
1990dnl===
1991dnl===-----------------------------------------------------------------------===
John Criswell7a3334d2003-07-22 19:13:20 +00001992
Nick Lewyckyfa4c2d32009-09-29 06:18:00 +00001993dnl Handle 32-bit linux systems running a 64-bit kernel.
1994dnl This has to come after section 4 because it invokes the compiler.
1995if test "$llvm_cv_os_type" = "Linux" -a "$llvm_cv_target_arch" = "x86_64" ; then
1996 AC_IS_LINUX_MIXED
1997 if test "$llvm_cv_linux_mixed" = "yes"; then
1998 llvm_cv_target_arch="x86"
1999 ARCH="x86"
2000 fi
2001fi
2002
Eric Christopher81858452011-09-20 22:26:35 +00002003dnl Check whether __dso_handle is present
Anton Korobeynikov7ac25212007-07-30 20:02:02 +00002004AC_CHECK_FUNCS([__dso_handle])
2005
Eric Christophere62b4412007-12-01 00:34:39 +00002006dnl Propagate the shared library extension that the libltdl checks did to
Reid Spencera40c6872004-11-29 12:29:58 +00002007dnl the Makefiles so we can use it there too
Rafael Espindolafd1355a2014-02-28 18:17:54 +00002008AC_SUBST(SHLIBEXT,$llvm_shlib_ext)
Brian Gaekecc3676b2004-01-21 19:38:56 +00002009
Gabor Greife0d58d32012-01-26 10:28:58 +00002010dnl Translate the various configuration directories and other basic
2011dnl information into substitutions that will end up in Makefile.config.in
2012dnl that these configured values can be used by the makefiles
Jeff Cohenc5e5b272007-01-12 18:22:38 +00002013if test "${prefix}" = "NONE" ; then
Reid Spencer40f1b132006-05-16 08:53:32 +00002014 prefix="/usr/local"
2015fi
Reid Spencercf05c122004-08-20 09:03:12 +00002016eval LLVM_PREFIX="${prefix}";
2017eval LLVM_BINDIR="${prefix}/bin";
Reid Spencer0194c9a2004-11-29 04:56:35 +00002018eval LLVM_DATADIR="${prefix}/share/llvm";
Eric Christopherb3762a02010-03-02 05:17:21 +00002019eval LLVM_DOCSDIR="${prefix}/share/doc/llvm";
Reid Spencer0194c9a2004-11-29 04:56:35 +00002020eval LLVM_ETCDIR="${prefix}/etc/llvm";
Reid Spencercf05c122004-08-20 09:03:12 +00002021eval LLVM_INCLUDEDIR="${prefix}/include";
2022eval LLVM_INFODIR="${prefix}/info";
2023eval LLVM_MANDIR="${prefix}/man";
2024LLVM_CONFIGTIME=`date`
2025AC_SUBST(LLVM_PREFIX)
2026AC_SUBST(LLVM_BINDIR)
Reid Spencercf05c122004-08-20 09:03:12 +00002027AC_SUBST(LLVM_DATADIR)
2028AC_SUBST(LLVM_DOCSDIR)
2029AC_SUBST(LLVM_ETCDIR)
2030AC_SUBST(LLVM_INCLUDEDIR)
2031AC_SUBST(LLVM_INFODIR)
2032AC_SUBST(LLVM_MANDIR)
2033AC_SUBST(LLVM_CONFIGTIME)
Reid Spencercf05c122004-08-20 09:03:12 +00002034
Daniel Dunbar9370ecf2012-03-02 16:24:21 +00002035dnl Disable embedding timestamps in the build directory, with ENABLE_TIMESTAMPS.
2036if test "${ENABLE_TIMESTAMPS}" = "0"; then
2037 LLVM_CONFIGTIME="(timestamp not enabled)"
2038fi
2039
Gabor Greife0d58d32012-01-26 10:28:58 +00002040dnl Place the various directories into the config.h file as #defines so that we
2041dnl can know about the installation paths within LLVM.
Eric Christophere62b4412007-12-01 00:34:39 +00002042AC_DEFINE_UNQUOTED(LLVM_PREFIX,"$LLVM_PREFIX",
Reid Spencer0241e382004-11-25 04:51:04 +00002043 [Installation prefix directory])
Eric Christophere62b4412007-12-01 00:34:39 +00002044AC_DEFINE_UNQUOTED(LLVM_BINDIR, "$LLVM_BINDIR",
Reid Spencer0241e382004-11-25 04:51:04 +00002045 [Installation directory for binary executables])
Eric Christophere62b4412007-12-01 00:34:39 +00002046AC_DEFINE_UNQUOTED(LLVM_DATADIR, "$LLVM_DATADIR",
Reid Spencer0241e382004-11-25 04:51:04 +00002047 [Installation directory for data files])
Eric Christophere62b4412007-12-01 00:34:39 +00002048AC_DEFINE_UNQUOTED(LLVM_DOCSDIR, "$LLVM_DOCSDIR",
Reid Spencer0241e382004-11-25 04:51:04 +00002049 [Installation directory for documentation])
Eric Christophere62b4412007-12-01 00:34:39 +00002050AC_DEFINE_UNQUOTED(LLVM_ETCDIR, "$LLVM_ETCDIR",
Reid Spencer0241e382004-11-25 04:51:04 +00002051 [Installation directory for config files])
Eric Christophere62b4412007-12-01 00:34:39 +00002052AC_DEFINE_UNQUOTED(LLVM_INCLUDEDIR, "$LLVM_INCLUDEDIR",
Reid Spencer0241e382004-11-25 04:51:04 +00002053 [Installation directory for include files])
Eric Christophere62b4412007-12-01 00:34:39 +00002054AC_DEFINE_UNQUOTED(LLVM_INFODIR, "$LLVM_INFODIR",
Reid Spencer0241e382004-11-25 04:51:04 +00002055 [Installation directory for .info files])
Eric Christophere62b4412007-12-01 00:34:39 +00002056AC_DEFINE_UNQUOTED(LLVM_MANDIR, "$LLVM_MANDIR",
Reid Spencer0241e382004-11-25 04:51:04 +00002057 [Installation directory for man pages])
Eric Christophere62b4412007-12-01 00:34:39 +00002058AC_DEFINE_UNQUOTED(LLVM_CONFIGTIME, "$LLVM_CONFIGTIME",
Reid Spencer0241e382004-11-25 04:51:04 +00002059 [Time at which LLVM was configured])
Tim Northoverfee13d12013-05-04 07:36:23 +00002060AC_DEFINE_UNQUOTED(LLVM_HOST_TRIPLE, "$host",
NAKAMURA Takumi43652ae2012-07-22 03:04:52 +00002061 [Host triple LLVM will be executed on])
Sebastian Popec2fb222011-11-01 21:31:44 +00002062AC_DEFINE_UNQUOTED(LLVM_DEFAULT_TARGET_TRIPLE, "$target",
2063 [Target triple LLVM will generate code for by default])
Reid Spencer0241e382004-11-25 04:51:04 +00002064
Gabor Greife0d58d32012-01-26 10:28:58 +00002065dnl Determine which bindings to build.
Gordon Henriksend48f4592007-10-02 09:50:18 +00002066if test "$BINDINGS_TO_BUILD" = auto ; then
2067 BINDINGS_TO_BUILD=""
Peter Zotov668f9672014-10-30 08:29:45 +00002068 if test "x$OCAMLFIND" != x ; then
Gordon Henriksend48f4592007-10-02 09:50:18 +00002069 BINDINGS_TO_BUILD="ocaml $BINDINGS_TO_BUILD"
2070 fi
Peter Collingbourne82e3e372014-10-16 22:48:02 +00002071 if test "x$GO" != x ; then
2072 if $GO run ${srcdir}/bindings/go/conftest.go ; then
2073 BINDINGS_TO_BUILD="go $BINDINGS_TO_BUILD"
2074 fi
2075 fi
Gordon Henriksend48f4592007-10-02 09:50:18 +00002076fi
2077AC_SUBST(BINDINGS_TO_BUILD,$BINDINGS_TO_BUILD)
2078
Gabor Greife0d58d32012-01-26 10:28:58 +00002079dnl Do any work necessary to ensure that bindings have what they need.
Gordon Henriksen3be1f102007-10-02 16:42:10 +00002080binding_prereqs_failed=0
2081for a_binding in $BINDINGS_TO_BUILD ; do
2082 case "$a_binding" in
2083 ocaml)
Peter Zotov668f9672014-10-30 08:29:45 +00002084 if test "x$OCAMLFIND" = x ; then
2085 AC_MSG_WARN([--enable-bindings=ocaml specified, but ocamlfind not found. Try configure OCAMLFIND=/path/to/ocamlfind])
Gordon Henriksen3be1f102007-10-02 16:42:10 +00002086 binding_prereqs_failed=1
2087 fi
Peter Zotov668f9672014-10-30 08:29:45 +00002088
2089 if $OCAMLFIND opt -version >/dev/null 2>/dev/null ; then
2090 HAVE_OCAMLOPT=1
2091 else
2092 HAVE_OCAMLOPT=0
2093 fi
2094 AC_SUBST(HAVE_OCAMLOPT)
2095
2096 if ! $OCAMLFIND query ctypes >/dev/null 2>/dev/null; then
2097 AC_MSG_WARN([--enable-bindings=ocaml specified, but ctypes is not installed])
Gordon Henriksen3be1f102007-10-02 16:42:10 +00002098 binding_prereqs_failed=1
2099 fi
Peter Zotov668f9672014-10-30 08:29:45 +00002100
2101 if $OCAMLFIND query oUnit >/dev/null 2>/dev/null; then
2102 HAVE_OCAML_OUNIT=1
2103 else
2104 HAVE_OCAML_OUNIT=0
2105 AC_MSG_WARN([--enable-bindings=ocaml specified, but OUnit 2 is not installed. Tests will not run])
2106 dnl oUnit is optional!
Gordon Henriksen3be1f102007-10-02 16:42:10 +00002107 fi
Peter Zotov668f9672014-10-30 08:29:45 +00002108 AC_SUBST(HAVE_OCAML_OUNIT)
2109
Gordon Henriksen3be1f102007-10-02 16:42:10 +00002110 if test "x$with_ocaml_libdir" != xauto ; then
2111 AC_SUBST(OCAML_LIBDIR,$with_ocaml_libdir)
2112 else
Peter Zotov668f9672014-10-30 08:29:45 +00002113 ocaml_stdlib="`"$OCAMLFIND" ocamlc -where`"
Gordon Henriksen3be1f102007-10-02 16:42:10 +00002114 if test "$LLVM_PREFIX" '<' "$ocaml_stdlib" -a "$ocaml_stdlib" '<' "$LLVM_PREFIX~"
2115 then
2116 # ocaml stdlib is beneath our prefix; use stdlib
2117 AC_SUBST(OCAML_LIBDIR,$ocaml_stdlib)
2118 else
2119 # ocaml stdlib is outside our prefix; use libdir/ocaml
Rafael Espindolab58973f2013-06-11 18:52:11 +00002120 AC_SUBST(OCAML_LIBDIR,${prefix}/lib/ocaml)
Gordon Henriksen3be1f102007-10-02 16:42:10 +00002121 fi
2122 fi
2123 ;;
Peter Collingbourne82e3e372014-10-16 22:48:02 +00002124 go)
2125 if test "x$GO" = x ; then
2126 AC_MSG_WARN([--enable-bindings=go specified, but go not found. Try configure GO=/path/to/go])
2127 binding_prereqs_failed=1
2128 else
2129 if $GO run ${srcdir}/bindings/go/conftest.go ; then
2130 :
2131 else
2132 AC_MSG_WARN([--enable-bindings=go specified, but need at least Go 1.2. Try configure GO=/path/to/go])
2133 binding_prereqs_failed=1
2134 fi
2135 fi
2136 ;;
Gordon Henriksen3be1f102007-10-02 16:42:10 +00002137 esac
2138done
2139if test "$binding_prereqs_failed" = 1 ; then
2140 AC_MSG_ERROR([Prequisites for bindings not satisfied. Fix them or use configure --disable-bindings.])
2141fi
2142
Nick Lewycky16aac992009-03-05 08:20:21 +00002143dnl Determine whether the compiler supports -fvisibility-inlines-hidden.
Daniel Dunbar61e0a822008-09-02 17:35:16 +00002144AC_CXX_USE_VISIBILITY_INLINES_HIDDEN
Gordon Henriksen3be1f102007-10-02 16:42:10 +00002145
Nick Lewycky7d01e392009-03-03 04:55:15 +00002146dnl Determine linker rpath flag
Nick Lewycky16aac992009-03-05 08:20:21 +00002147if test "$llvm_cv_link_use_r" = "yes" ; then
2148 RPATH="-Wl,-R"
2149else
2150 RPATH="-Wl,-rpath"
2151fi
Nick Lewycky7d01e392009-03-03 04:55:15 +00002152AC_SUBST(RPATH)
2153
Nick Lewycky16aac992009-03-05 08:20:21 +00002154dnl Determine linker rdynamic flag
2155if test "$llvm_cv_link_use_export_dynamic" = "yes" ; then
Bob Wilson8658b912013-08-02 22:51:06 +00002156 RDYNAMIC="-rdynamic"
Nick Lewycky16aac992009-03-05 08:20:21 +00002157else
2158 RDYNAMIC=""
2159fi
2160AC_SUBST(RDYNAMIC)
2161
Reid Spencer0241e382004-11-25 04:51:04 +00002162dnl===-----------------------------------------------------------------------===
2163dnl===
2164dnl=== SECTION 10: Specify the output files and generate it
2165dnl===
2166dnl===-----------------------------------------------------------------------===
2167
2168dnl Configure header files
Reid Spencerb48e3f82005-08-24 10:43:10 +00002169dnl WARNING: dnl If you add or remove any of the following config headers, then
Dylan Noblesmithc1209572012-01-17 02:56:49 +00002170dnl you MUST also update Makefile so that the variable FilesToConfig
Reid Spencerb48e3f82005-08-24 10:43:10 +00002171dnl contains the same list of files as AC_CONFIG_HEADERS below. This ensures the
2172dnl files can be updated automatically when their *.in sources change.
Eric Christopherf24446d2010-08-08 02:44:17 +00002173AC_CONFIG_HEADERS([include/llvm/Config/config.h include/llvm/Config/llvm-config.h])
Eric Christophere8f47dd2010-08-08 09:18:29 +00002174AH_TOP([#ifndef CONFIG_H
2175#define CONFIG_H])
2176AH_BOTTOM([#endif])
2177
Douglas Gregor1b731d52009-06-16 20:12:29 +00002178AC_CONFIG_FILES([include/llvm/Config/Targets.def])
2179AC_CONFIG_FILES([include/llvm/Config/AsmPrinters.def])
Daniel Dunbarce77aa02009-07-17 20:56:18 +00002180AC_CONFIG_FILES([include/llvm/Config/AsmParsers.def])
Daniel Dunbarf4721292009-11-25 04:30:13 +00002181AC_CONFIG_FILES([include/llvm/Config/Disassemblers.def])
Michael J. Spencer447762d2010-11-29 18:16:10 +00002182AC_CONFIG_HEADERS([include/llvm/Support/DataTypes.h])
Reid Spencer0241e382004-11-25 04:51:04 +00002183
2184dnl Configure the makefile's configuration data
2185AC_CONFIG_FILES([Makefile.config])
2186
Reid Spencer1277ba22006-08-16 00:45:38 +00002187dnl Configure the RPM spec file for LLVM
2188AC_CONFIG_FILES([llvm.spec])
2189
Peter Collingbourne5ac59df2011-05-13 03:27:56 +00002190dnl Configure doxygen's configuration file
2191AC_CONFIG_FILES([docs/doxygen.cfg])
Dylan Noblesmith57f439c2012-02-01 14:06:21 +00002192
2193dnl Configure clang, if present
Dylan Noblesmithe21a3b22012-02-04 02:41:36 +00002194if test "${clang_src_root}" = ""; then
Dylan Noblesmitha3670222012-02-02 00:54:18 +00002195 clang_src_root="$srcdir/tools/clang"
Dylan Noblesmithb5190ab2012-02-02 00:17:33 +00002196fi
Dylan Noblesmith2badba52012-02-02 00:11:14 +00002197if test -f ${clang_src_root}/README.txt; then
Chandler Carruth9db2b522014-12-29 11:58:17 +00002198 dnl Clang supports build systems which use the multilib libdir suffix.
2199 dnl The autoconf system doesn't support this so stub out that variable.
2200 AC_DEFINE_UNQUOTED(CLANG_LIBDIR_SUFFIX,"",
2201 [Multilib suffix for libdir.])
2202
Dylan Noblesmitha7a29c172012-02-04 03:00:50 +00002203 dnl Use variables to stay under 80 columns.
2204 configh="include/clang/Config/config.h"
2205 doxy="docs/doxygen.cfg"
2206 AC_CONFIG_HEADERS([tools/clang/${configh}:${clang_src_root}/${configh}.in])
2207 AC_CONFIG_FILES([tools/clang/${doxy}:${clang_src_root}/${doxy}.in])
Peter Collingbourne5ac59df2011-05-13 03:27:56 +00002208fi
2209
Torok Edwin229f8d72011-10-14 20:38:02 +00002210dnl OCaml findlib META file
2211AC_CONFIG_FILES([bindings/ocaml/llvm/META.llvm])
2212
Jordan Rose3c837ab2012-10-01 18:40:32 +00002213dnl Add --program-prefix value to Makefile.rules. Already an ARG variable.
2214test "x$program_prefix" = "xNONE" && program_prefix=""
2215AC_SUBST([program_prefix])
2216
2217
Reid Spencer0241e382004-11-25 04:51:04 +00002218dnl Do special configuration of Makefiles
Reid Spencerf3102c22005-02-24 18:31:27 +00002219AC_CONFIG_COMMANDS([setup],,[llvm_src="${srcdir}"])
Reid Spencer0241e382004-11-25 04:51:04 +00002220AC_CONFIG_MAKEFILE(Makefile)
2221AC_CONFIG_MAKEFILE(Makefile.common)
2222AC_CONFIG_MAKEFILE(examples/Makefile)
2223AC_CONFIG_MAKEFILE(lib/Makefile)
Reid Spencer0241e382004-11-25 04:51:04 +00002224AC_CONFIG_MAKEFILE(test/Makefile)
2225AC_CONFIG_MAKEFILE(test/Makefile.tests)
Bill Wendling8790e322009-01-04 23:12:21 +00002226AC_CONFIG_MAKEFILE(unittests/Makefile)
Reid Spencer0241e382004-11-25 04:51:04 +00002227AC_CONFIG_MAKEFILE(tools/Makefile)
Reid Spencer0241e382004-11-25 04:51:04 +00002228AC_CONFIG_MAKEFILE(utils/Makefile)
2229AC_CONFIG_MAKEFILE(projects/Makefile)
Gordon Henriksen54fd7572007-09-22 21:36:22 +00002230AC_CONFIG_MAKEFILE(bindings/Makefile)
2231AC_CONFIG_MAKEFILE(bindings/ocaml/Makefile.ocaml)
Reid Spencer0241e382004-11-25 04:51:04 +00002232
2233dnl Finally, crank out the output
Reid Spencer2024d0e2004-09-19 23:43:52 +00002234AC_OUTPUT