blob: 9755a5de078bce354ed07fac7a481666cd070e35 [file] [log] [blame]
Misha Brukman6d5ab862004-04-24 00:10:56 +00001#===-- Makefile.config - Local configuration for LLVM ------*- Makefile -*--===#
2#
3# The LLVM Compiler Infrastructure
4#
Chris Lattner57360d12007-12-29 20:11:13 +00005# This file is distributed under the University of Illinois Open Source
6# License. See LICENSE.TXT for details.
Misha Brukman9b8f5422009-01-09 16:44:42 +00007#
Misha Brukman6d5ab862004-04-24 00:10:56 +00008#===------------------------------------------------------------------------===#
John Criswell7a73b802003-06-30 21:59:07 +00009#
10# This file is included by Makefile.common. It defines paths and other
11# values specific to a particular installation of LLVM.
Brian Gaekef1dd2002004-01-16 21:31:34 +000012#
Misha Brukman6d5ab862004-04-24 00:10:56 +000013#===------------------------------------------------------------------------===#
John Criswell7a73b802003-06-30 21:59:07 +000014
Reid Spencerb2cb4862005-01-16 02:20:42 +000015# Define LLVM specific info and directories based on the autoconf variables
16LLVMPackageName := @PACKAGE_NAME@
17LLVMVersion := @PACKAGE_VERSION@
Reid Spencere1200212004-11-29 04:53:50 +000018LLVM_CONFIGTIME := @LLVM_CONFIGTIME@
Reid Spencerb2cb4862005-01-16 02:20:42 +000019
20###########################################################################
21# Directory Configuration
22# This section of the Makefile determines what is where. To be
23# specific, there are several locations that need to be defined:
24#
25# o LLVM_SRC_ROOT : The root directory of the LLVM source code.
26# o LLVM_OBJ_ROOT : The root directory containing the built LLVM code.
27#
28# o PROJ_SRC_DIR : The directory containing the code to build.
29# o PROJ_SRC_ROOT : The root directory of the code to build.
30#
31# o PROJ_OBJ_DIR : The directory in which compiled code will be placed.
32# o PROJ_OBJ_ROOT : The root directory in which compiled code is placed.
33#
34###########################################################################
35
Reid Spenceraea7fe42006-07-28 05:05:00 +000036PWD := @BINPWD@
Reid Spencerb2cb4862005-01-16 02:20:42 +000037# Set the project name to LLVM if its not defined
38ifndef PROJECT_NAME
Reid Spencer1b22fde2006-08-07 23:23:39 +000039PROJECT_NAME := $(LLVMPackageName)
Reid Spencerb2cb4862005-01-16 02:20:42 +000040endif
41
Chris Lattner7cf8fc72010-08-03 22:53:22 +000042# The macro below is expanded when 'realpath' is not built-in.
43# Built-in 'realpath' is available on GNU Make 3.81.
44realpath = $(shell cd $(1); $(PWD))
45
46PROJ_OBJ_DIR := $(call realpath, .)
47PROJ_OBJ_ROOT := $(call realpath, $(PROJ_OBJ_DIR)/$(LEVEL))
Reid Spencerb2cb4862005-01-16 02:20:42 +000048
NAKAMURA Takumie5ab51d2011-10-16 02:54:26 +000049CLANG_SRC_ROOT := @CLANG_SRC_ROOT@
50
Reid Spencer1b22fde2006-08-07 23:23:39 +000051ifeq ($(PROJECT_NAME),llvm)
Chris Lattner7cf8fc72010-08-03 22:53:22 +000052LLVM_SRC_ROOT := $(call realpath, @abs_top_srcdir@)
53LLVM_OBJ_ROOT := $(call realpath, @abs_top_builddir@)
54PROJ_SRC_ROOT := $(LLVM_SRC_ROOT)
NAKAMURA Takumie5ab51d2011-10-16 02:54:26 +000055PROJ_SRC_DIR := $(LLVM_SRC_ROOT)$(patsubst $(PROJ_OBJ_ROOT)%,%,$(PROJ_OBJ_DIR))
56
57ifneq ($(CLANG_SRC_ROOT),)
58 CLANG_SRC_ROOT:= $(call realpath, $(CLANG_SRC_ROOT))
59 PROJ_SRC_DIR := $(patsubst $(LLVM_SRC_ROOT)/tools/clang%,$(CLANG_SRC_ROOT)%,$(PROJ_SRC_DIR))
60endif
61
Reid Spencer32b16912007-01-17 20:24:45 +000062prefix := @prefix@
63PROJ_prefix := $(prefix)
Reid Spencerb2cb4862005-01-16 02:20:42 +000064PROJ_VERSION := $(LLVMVersion)
65else
66ifndef PROJ_SRC_ROOT
67$(error Projects must define PROJ_SRC_ROOT)
68endif
69ifndef PROJ_OBJ_ROOT
70$(error Projects must define PROJ_OBJ_ROOT)
71endif
72ifndef PROJ_INSTALL_ROOT
73$(error Projects must define PROJ_INSTALL_ROOT)
74endif
75ifndef LLVM_SRC_ROOT
76$(error Projects must define LLVM_SRC_ROOT)
77endif
78ifndef LLVM_OBJ_ROOT
79$(error Projects must define LLVM_OBJ_ROOT)
80endif
Chris Lattner7cf8fc72010-08-03 22:53:22 +000081PROJ_SRC_DIR := $(call realpath, $(PROJ_SRC_ROOT)/$(patsubst $(PROJ_OBJ_ROOT)%,%,$(PROJ_OBJ_DIR)))
Reid Spencer32b16912007-01-17 20:24:45 +000082prefix := $(PROJ_INSTALL_ROOT)
83PROJ_prefix := $(prefix)
Reid Spencerb2cb4862005-01-16 02:20:42 +000084ifndef PROJ_VERSION
85PROJ_VERSION := 1.0
86endif
87endif
Reid Spencere1200212004-11-29 04:53:50 +000088
Reid Spencer8475ec02007-03-29 19:05:44 +000089LLVMMAKE := $(LLVM_SRC_ROOT)/make
90
Erick Tryzelaard4076cf2010-03-04 20:56:19 +000091PROJ_bindir := $(PROJ_prefix)/bin
92PROJ_libdir := $(PROJ_prefix)/lib
93PROJ_datadir := $(PROJ_prefix)/share
94PROJ_docsdir := $(PROJ_prefix)/docs/llvm
95PROJ_etcdir := $(PROJ_prefix)/etc/llvm
96PROJ_includedir := $(PROJ_prefix)/include
97PROJ_infodir := $(PROJ_prefix)/info
98PROJ_mandir := $(PROJ_prefix)/share/man
Reid Spencer32b16912007-01-17 20:24:45 +000099
Reid Spencerbbf7a8a2004-12-31 22:54:28 +0000100# Determine if we're on a unix type operating system
101LLVM_ON_UNIX:=@LLVM_ON_UNIX@
102LLVM_ON_WIN32:=@LLVM_ON_WIN32@
103
Anton Korobeynikove55db742009-08-18 00:40:33 +0000104# Host operating system for which LLVM will be run.
John Criswell7a73b802003-06-30 21:59:07 +0000105OS=@OS@
Anton Korobeynikove55db742009-08-18 00:40:33 +0000106HOST_OS=@HOST_OS@
107# Target operating system for which LLVM will compile for.
108TARGET_OS=@TARGET_OS@
John Criswell7a73b802003-06-30 21:59:07 +0000109
John Criswell76595452003-07-01 22:07:39 +0000110# Target hardware architecture
John Criswell76595452003-07-01 22:07:39 +0000111ARCH=@ARCH@
112
Reid Spencere2cfe5d2006-07-26 21:14:56 +0000113# Indicates, whether we're cross-compiling LLVM or not
114LLVM_CROSS_COMPILING=@LLVM_CROSS_COMPILING@
115
116# Executable file extension for build platform (mainly for
117# tablegen call if we're cross-compiling).
118BUILD_EXEEXT=@BUILD_EXEEXT@
119
Jim Grosbach673612e2008-10-02 22:56:44 +0000120# Compilers for the build platflorm (mainly for tablegen
121# call if we're cross-compiling).
122BUILD_CC=@BUILD_CC@
123BUILD_CXX=@BUILD_CXX@
124
Shantonu Sen5e869c32009-09-02 23:52:23 +0000125# Triple for configuring build tools when cross-compiling
126BUILD_TRIPLE=@build@
127
Reid Spencer18224032004-11-07 19:12:53 +0000128# Target triple (cpu-vendor-os) for which we should generate code
129TARGET_TRIPLE=@target@
130
Evan Chengcf9be262006-06-20 22:16:32 +0000131# Extra options to compile LLVM with
132EXTRA_OPTIONS=@EXTRA_OPTIONS@
133
Daniel Dunbare2a91a72011-06-16 22:30:38 +0000134# Extra options to link LLVM with
135EXTRA_LD_OPTIONS=@EXTRA_LD_OPTIONS@
136
John Criswell0021c312004-02-13 21:57:29 +0000137# Endian-ness of the target
138ENDIAN=@ENDIAN@
139
John Criswell7a73b802003-06-30 21:59:07 +0000140# Path to the C++ compiler to use. This is an optional setting, which defaults
141# to whatever your gmake defaults to.
John Criswell7a73b802003-06-30 21:59:07 +0000142CXX = @CXX@
143
Misha Brukmanb5a2e402004-06-17 15:39:58 +0000144# Path to the CC binary, which use used by testcases for native builds.
John Criswell7a73b802003-06-30 21:59:07 +0000145CC := @CC@
146
Brian Gaekef1dd2002004-01-16 21:31:34 +0000147# Linker flags.
John Criswellb812e762003-07-01 15:02:59 +0000148LDFLAGS+=@LDFLAGS@
John Criswell49bf8622003-06-30 22:33:53 +0000149
Brian Gaekef1dd2002004-01-16 21:31:34 +0000150# Path to the library archiver program.
John Criswell7a73b802003-06-30 21:59:07 +0000151AR_PATH = @AR@
Anton Korobeynikove55db742009-08-18 00:40:33 +0000152AR = @AR@
John Criswell7a73b802003-06-30 21:59:07 +0000153
Reid Spencer1bc68642006-07-27 23:00:30 +0000154# Path to the nm program
155NM_PATH = @NM@
156
Reid Spencer151f8ba2004-10-25 08:27:37 +0000157# The pathnames of the programs we require to build
Reid Spencer8a2d4712004-12-16 17:48:14 +0000158CMP := @CMP@
159CP := @CP@
Reid Spencere1200212004-11-29 04:53:50 +0000160DATE := @DATE@
161FIND := @FIND@
Reid Spencere1200212004-11-29 04:53:50 +0000162GREP := @GREP@
163INSTALL := @INSTALL@
Reid Spencerb2cb4862005-01-16 02:20:42 +0000164MKDIR := $(LLVM_SRC_ROOT)/autoconf/mkinstalldirs
Reid Spencere1200212004-11-29 04:53:50 +0000165MV := @MV@
Reid Spencere1200212004-11-29 04:53:50 +0000166RANLIB := @RANLIB@
167RM := @RM@
168SED := @SED@
169TAR := @TAR@
Reid Spencere1200212004-11-29 04:53:50 +0000170
171# Paths to miscellaneous programs we hope are present but might not be
Misha Brukman9b8f5422009-01-09 16:44:42 +0000172PERL := @PERL@
Reid Spencere1200212004-11-29 04:53:50 +0000173BZIP2 := @BZIP2@
mike-m68cb3192010-05-06 23:45:43 +0000174CAT := @CAT@
Reid Spencere1200212004-11-29 04:53:50 +0000175DOT := @DOT@
176DOXYGEN := @DOXYGEN@
Reid Spencere1200212004-11-29 04:53:50 +0000177GROFF := @GROFF@
Eric Christopher031d3072010-12-10 01:31:51 +0000178GZIPBIN := @GZIPBIN@
Gordon Henriksen279219a2008-03-31 16:46:23 +0000179OCAMLC := @OCAMLC@
180OCAMLOPT := @OCAMLOPT@
181OCAMLDEP := @OCAMLDEP@
182OCAMLDOC := @OCAMLDOC@
Duncan Sands3a67f502008-10-22 09:42:14 +0000183GAS := @GAS@
Reid Spencere1200212004-11-29 04:53:50 +0000184POD2HTML := @POD2HTML@
185POD2MAN := @POD2MAN@
mike-m68cb3192010-05-06 23:45:43 +0000186PDFROFF := @PDFROFF@
Reid Spencere1200212004-11-29 04:53:50 +0000187RUNTEST := @RUNTEST@
Reid Spencer0fcb9412004-11-30 08:11:54 +0000188TCLSH := @TCLSH@
Reid Spencere1200212004-11-29 04:53:50 +0000189ZIP := @ZIP@
John Criswell7a73b802003-06-30 21:59:07 +0000190
Reid Spencer1000b732006-12-01 00:37:14 +0000191HAVE_PERL := @HAVE_PERL@
192HAVE_PTHREAD := @HAVE_PTHREAD@
Reid Spencerb195d9d2006-03-23 23:21:29 +0000193
Reid Spencer5a870442005-04-22 17:14:14 +0000194LIBS := @LIBS@
195
Gordon Henriksen6530e9d2007-10-02 09:50:18 +0000196# Targets that we should build
197TARGETS_TO_BUILD=@TARGETS_TO_BUILD@
198
John Criswell7a73b802003-06-30 21:59:07 +0000199# Path to directory where object files should be stored during a build.
200# Set OBJ_ROOT to "." if you do not want to use a separate place for
201# object files.
John Criswell7f336952003-09-06 14:44:17 +0000202OBJ_ROOT := .
John Criswell7a73b802003-06-30 21:59:07 +0000203
Nick Lewycky1dace482009-03-03 04:55:15 +0000204# What to pass as rpath flag to g++
205RPATH := @RPATH@
206
Nick Lewycky18f99072009-03-05 08:20:21 +0000207# What to pass as -rdynamic flag to g++
208RDYNAMIC := @RDYNAMIC@
209
John Criswell7a73b802003-06-30 21:59:07 +0000210# These are options that can either be enabled here, or can be enabled on the
Brian Gaekef1dd2002004-01-16 21:31:34 +0000211# make command line (ie, make ENABLE_PROFILING=1):
John Criswell7a73b802003-06-30 21:59:07 +0000212
Reid Spencerc4329cf2006-04-07 15:59:41 +0000213# When ENABLE_OPTIMIZED is enabled, LLVM code is optimized and output is put
Misha Brukman9b8f5422009-01-09 16:44:42 +0000214# into the "Release" directories. Otherwise, LLVM code is not optimized and
Reid Spencerc4329cf2006-04-07 15:59:41 +0000215# output is put in the "Debug" directories.
John Criswell7a73b802003-06-30 21:59:07 +0000216#ENABLE_OPTIMIZED = 1
217@ENABLE_OPTIMIZED@
218
David Greenedbefd0c2009-04-17 14:49:22 +0000219# When ENABLE_PROFILING is enabled, profile instrumentation is done
220# and output is put into the "<Flavor>+Profile" directories, where
Gabor Greif6418cb32010-07-07 13:58:46 +0000221# <Flavor> is either Debug or Release depending on how other build
222# flags are set. Otherwise, output is put in the <Flavor>
David Greenedbefd0c2009-04-17 14:49:22 +0000223# directories.
224#ENABLE_PROFILING = 1
225@ENABLE_PROFILING@
226
Mikhail Glushenkov895f32c2009-07-03 03:52:07 +0000227# When DISABLE_ASSERTIONS is enabled, builds of all of the LLVM code will
Reid Spencer1a5a5512006-04-09 23:39:43 +0000228# exclude assertion checks, otherwise they are included.
Reid Spencerc28ccd82006-04-09 20:42:14 +0000229#DISABLE_ASSERTIONS = 1
230@DISABLE_ASSERTIONS@
Reid Spencerc4329cf2006-04-07 15:59:41 +0000231
David Greenea696d242007-06-28 19:36:08 +0000232# When ENABLE_EXPENSIVE_CHECKS is enabled, builds of all of the LLVM
233# code will include expensive checks, otherwise they are excluded.
234#ENABLE_EXPENSIVE_CHECKS = 0
235@ENABLE_EXPENSIVE_CHECKS@
236
Reid Spencer8b2e1412006-11-17 03:32:33 +0000237# When DEBUG_RUNTIME is enabled, the runtime libraries will retain debug
238# symbols.
239#DEBUG_RUNTIME = 1
240@DEBUG_RUNTIME@
241
Jeffrey Yasskin7fd82e52009-09-27 17:47:29 +0000242# When DEBUG_SYMBOLS is enabled, the compiler libraries will retain debug
243# symbols.
244#DEBUG_SYMBOLS = 1
245@DEBUG_SYMBOLS@
246
Daniel Dunbar1fce9482009-11-04 04:32:50 +0000247# The compiler flags to use for optimized builds.
248OPTIMIZE_OPTION := @OPTIMIZE_OPTION@
249
John Criswell7a73b802003-06-30 21:59:07 +0000250# When ENABLE_PROFILING is enabled, the llvm source base is built with profile
251# information to allow gprof to be used to get execution frequencies.
John Criswell7a73b802003-06-30 21:59:07 +0000252#ENABLE_PROFILING = 1
John Criswell7a73b802003-06-30 21:59:07 +0000253
Rafael Espindola9d9ae9f2010-11-12 19:24:06 +0000254# When ENABLE_DOCS is disabled, docs/ will not be built.
255ENABLE_DOCS = @ENABLE_DOCS@
256
Reid Spencere1200212004-11-29 04:53:50 +0000257# When ENABLE_DOXYGEN is enabled, the doxygen documentation will be built
258ENABLE_DOXYGEN = @ENABLE_DOXYGEN@
259
Reid Spencerb756c792006-06-01 01:09:43 +0000260# Do we want to enable threads?
261ENABLE_THREADS := @ENABLE_THREADS@
262
Reid Spencer89b0d992006-12-16 22:07:52 +0000263# Do we want to build with position independent code?
264ENABLE_PIC := @ENABLE_PIC@
265
Jeffrey Yasskinc9017192010-02-25 06:34:33 +0000266# Do we want to build a shared library and link the tools with it?
267ENABLE_SHARED := @ENABLE_SHARED@
268
NAKAMURA Takumi8eac8862010-12-29 03:59:14 +0000269# Do we want to link the stdc++ into a shared library? (Cygming)
270ENABLE_EMBED_STDCXX := @ENABLE_EMBED_STDCXX@
271
Daniel Dunbarecfe67c2008-09-02 17:35:16 +0000272# Use -fvisibility-inlines-hidden?
273ENABLE_VISIBILITY_INLINES_HIDDEN := @ENABLE_VISIBILITY_INLINES_HIDDEN@
274
Daniel Dunbardd464df2010-05-10 20:11:56 +0000275# Do we want to allow timestamping information into builds?
276ENABLE_TIMESTAMPS := @ENABLE_TIMESTAMPS@
277
Misha Brukmane9676502003-07-02 21:20:04 +0000278# This option tells the Makefiles to produce verbose output.
John Criswell7a73b802003-06-30 21:59:07 +0000279# It essentially prints the commands that make is executing
John Criswell7a73b802003-06-30 21:59:07 +0000280#VERBOSE = 1
John Criswell7a73b802003-06-30 21:59:07 +0000281
John Criswell7a73b802003-06-30 21:59:07 +0000282# Enable JIT for this platform
Reid Spencerb195d9d2006-03-23 23:21:29 +0000283TARGET_HAS_JIT = @TARGET_HAS_JIT@
John Criswell7a73b802003-06-30 21:59:07 +0000284
Jeffrey Yasskinc9017192010-02-25 06:34:33 +0000285# Environment variable to set to change the runtime shared library search path.
286SHLIBPATH_VAR = @SHLIBPATH_VAR@
287
Reid Spencere2cfe5d2006-07-26 21:14:56 +0000288# Shared library extension for host platform.
Brian Gaeke88aeace2004-01-21 19:39:07 +0000289SHLIBEXT = @SHLIBEXT@
290
Reid Spencere2cfe5d2006-07-26 21:14:56 +0000291# Executable file extension for host platform.
John Criswelle6d468f2004-06-01 19:04:38 +0000292EXEEXT = @EXEEXT@
293
Reid Spencerb2cb4862005-01-16 02:20:42 +0000294# Things we just assume are "there"
295ECHO := echo
Reid Spencera773bd52006-08-04 18:18:08 +0000296
297# Get the options for causing archives to link all their content instead of
298# just missing symbols, and the inverse of that. This is used for certain LLVM
299# tools that permit loadable modules. It ensures that the LLVM symbols will be
300# available to those loadable modules.
301LINKALL := @LINKALL@
302NOLINKALL := @NOLINKALL@
Reid Spencerb2ed05262006-11-03 18:04:08 +0000303
304# Get the value of HUGE_VAL_SANITY which will be either "yes" or "no" depending
305# on the check.
306HUGE_VAL_SANITY = @HUGE_VAL_SANITY@
Gordon Henriksen6530e9d2007-10-02 09:50:18 +0000307
308# Bindings that we should build
Gordon Henriksen1d4e0782007-10-02 16:42:10 +0000309BINDINGS_TO_BUILD := @BINDINGS_TO_BUILD@
310ALL_BINDINGS := @ALL_BINDINGS@
311OCAML_LIBDIR := @OCAML_LIBDIR@
Gordon Henriksen6530e9d2007-10-02 09:50:18 +0000312
Chris Lattner163974d2008-01-15 22:50:50 +0000313# When compiling under Mingw/Cygwin, executables such as tblgen
314# expect Windows paths, whereas the build system uses Unix paths.
315# The function SYSPATH transforms Unix paths into Windows paths.
316ifneq (,$(findstring -mno-cygwin, $(CXX)))
317 SYSPATH = $(shell echo $(1) | cygpath -m -f -)
318else
319 SYSPATH = $(1)
320endif
Nick Lewyckye2be5d52009-02-03 07:10:08 +0000321
322# Location of the plugin header file for gold.
323BINUTILS_INCDIR := @BINUTILS_INCDIR@
Mikhail Glushenkov2373c992009-07-03 03:52:47 +0000324
Julien Lerouge8039e032009-10-26 19:58:44 +0000325# Optional flags supported by the compiler
326# -Wno-missing-field-initializers
327NO_MISSING_FIELD_INITIALIZERS = @NO_MISSING_FIELD_INITIALIZERS@
328# -Wno-variadic-macros
329NO_VARIADIC_MACROS = @NO_VARIADIC_MACROS@
Dan Gohmane05f6092010-04-16 22:58:15 +0000330
Tobias Grosserbaaadb22010-10-30 00:54:26 +0000331# Was polly found in tools/polly?
332LLVM_HAS_POLLY = @LLVM_HAS_POLLY@
Dan Gohmane05f6092010-04-16 22:58:15 +0000333# Flags supported by the linker.
Dan Gohmanda612d62010-06-01 14:56:56 +0000334# bfd ld / gold --version-script=file
335HAVE_LINK_VERSION_SCRIPT = @HAVE_LINK_VERSION_SCRIPT@