blob: deef6b2e7cc7ad1d53e9dd8b95efd3078ee9b8b3 [file] [log] [blame]
Daniel Dunbar2532fa22011-10-18 23:10:47 +00001#===-- Makefile.config - Local configuration for LLVM ------*- Makefile -*--===#
2#
3# The LLVM Compiler Infrastructure
4#
5# This file is distributed under the University of Illinois Open Source
6# License. See LICENSE.TXT for details.
7#
8#===------------------------------------------------------------------------===#
9#
10# This file is included by Makefile.common. It defines paths and other
11# values specific to a particular installation of LLVM.
12#
13#===------------------------------------------------------------------------===#
14
15# Define LLVM specific info and directories based on the autoconf variables
16LLVMVersion := @LLVM_VERSION@
17
18###########################################################################
19# Directory Configuration
20# This section of the Makefile determines what is where. To be
21# specific, there are several locations that need to be defined:
22#
23# o LLVM_SRC_ROOT : The root directory of the LLVM source code.
24# o LLVM_OBJ_ROOT : The root directory containing the built LLVM code.
25#
26# o PROJ_SRC_DIR : The directory containing the code to build.
27# o PROJ_SRC_ROOT : The root directory of the code to build.
28#
29# o PROJ_OBJ_DIR : The directory in which compiled code will be placed.
30# o PROJ_OBJ_ROOT : The root directory in which compiled code is placed.
31#
32###########################################################################
33
34PWD := @BINPWD@
35
36# The macro below is expanded when 'realpath' is not built-in.
37# Built-in 'realpath' is available on GNU Make 3.81.
38realpath = $(shell cd $(1); $(PWD))
39
40PROJ_OBJ_DIR := $(call realpath, .)
41PROJ_OBJ_ROOT := $(call realpath, $(PROJ_OBJ_DIR)/$(LEVEL))
42
43ifndef PROJ_SRC_ROOT
44$(error Projects must define PROJ_SRC_ROOT)
45endif
46ifndef PROJ_OBJ_ROOT
47$(error Projects must define PROJ_OBJ_ROOT)
48endif
49ifndef PROJ_INSTALL_ROOT
50$(error Projects must define PROJ_INSTALL_ROOT)
51endif
52ifndef LLVM_SRC_ROOT
53$(error Projects must define LLVM_SRC_ROOT)
54endif
55ifndef LLVM_OBJ_ROOT
56$(error Projects must define LLVM_OBJ_ROOT)
57endif
58PROJ_SRC_DIR := $(call realpath, $(PROJ_SRC_ROOT)/$(patsubst $(PROJ_OBJ_ROOT)%,%,$(PROJ_OBJ_DIR)))
59prefix := $(PROJ_INSTALL_ROOT)
60PROJ_prefix := $(prefix)
61ifndef PROJ_VERSION
62PROJ_VERSION := 1.0
63endif
64
65PROJ_bindir := $(PROJ_prefix)/bin
66PROJ_libdir := $(PROJ_prefix)/lib
67PROJ_datadir := $(PROJ_prefix)/share
68PROJ_docsdir := $(PROJ_prefix)/docs/llvm
69PROJ_etcdir := $(PROJ_prefix)/etc/llvm
70PROJ_includedir := $(PROJ_prefix)/include
71PROJ_infodir := $(PROJ_prefix)/info
72PROJ_mandir := $(PROJ_prefix)/share/man
73
74# Determine if we're on a unix type operating system
75LLVM_ON_UNIX:=@LLVM_ON_UNIX@
76LLVM_ON_WIN32:=@LLVM_ON_WIN32@
77
78# Host operating system for which LLVM will be run.
79OS=@OS@
80HOST_OS=@HOST_OS@
81# Target operating system for which LLVM will compile for.
82TARGET_OS=@TARGET_OS@
83
84# Target hardware architecture
85ARCH=@ARCH@
86
87# Indicates, whether we're cross-compiling LLVM or not
88LLVM_CROSS_COMPILING=@LLVM_CROSS_COMPILING@
89
90# Executable file extension for build platform (mainly for
91# tablegen call if we're cross-compiling).
92BUILD_EXEEXT=@BUILD_EXEEXT@
93
94# Compilers for the build platflorm (mainly for tablegen
95# call if we're cross-compiling).
96BUILD_CC=@BUILD_CC@
97BUILD_CXX=@BUILD_CXX@
98
99# Triple for configuring build tools when cross-compiling
100BUILD_TRIPLE=@build@
101
102# Target triple (cpu-vendor-os) for which we should generate code
103TARGET_TRIPLE=@target@
104
105# Extra options to compile LLVM with
106EXTRA_OPTIONS=@EXTRA_OPTIONS@
107
108# Extra options to link LLVM with
109EXTRA_LD_OPTIONS=@EXTRA_LD_OPTIONS@
110
111# Endian-ness of the target
112ENDIAN=@ENDIAN@
113
114# Path to the C++ compiler to use. This is an optional setting, which defaults
115# to whatever your gmake defaults to.
116CXX = @CXX@
117
118# Path to the CC binary, which use used by testcases for native builds.
119CC := @CC@
120
121# Linker flags.
122LDFLAGS+=@LDFLAGS@
123
124# Path to the library archiver program.
125AR_PATH = @AR@
126AR = @AR@
127
128# Path to the nm program
129NM_PATH = @NM@
130
131# The pathnames of the programs we require to build
132CMP := @CMP@
133CP := @CP@
134DATE := @DATE@
135FIND := @FIND@
136GREP := @GREP@
137INSTALL := @INSTALL@
138MKDIR := $(PROJ_SRC_ROOT)/autoconf/mkinstalldirs
139MV := @MV@
140RANLIB := @RANLIB@
141RM := @RM@
142SED := @SED@
143TAR := @TAR@
144
145# Paths to miscellaneous programs we hope are present but might not be
Daniel Dunbar2532fa22011-10-18 23:10:47 +0000146BZIP2 := @BZIP2@
147CAT := @CAT@
148DOT := @DOT@
149DOXYGEN := @DOXYGEN@
150GROFF := @GROFF@
151GZIPBIN := @GZIPBIN@
152OCAMLC := @OCAMLC@
153OCAMLOPT := @OCAMLOPT@
154OCAMLDEP := @OCAMLDEP@
155OCAMLDOC := @OCAMLDOC@
156GAS := @GAS@
157POD2HTML := @POD2HTML@
158POD2MAN := @POD2MAN@
159PDFROFF := @PDFROFF@
160RUNTEST := @RUNTEST@
161TCLSH := @TCLSH@
162ZIP := @ZIP@
163
Daniel Dunbar2532fa22011-10-18 23:10:47 +0000164HAVE_PTHREAD := @HAVE_PTHREAD@
165
166LIBS := @LIBS@
167
168# Targets that we should build
169TARGETS_TO_BUILD=@TARGETS_TO_BUILD@
170
171# Path to directory where object files should be stored during a build.
172# Set OBJ_ROOT to "." if you do not want to use a separate place for
173# object files.
174OBJ_ROOT := .
175
176# What to pass as rpath flag to g++
177RPATH := @RPATH@
178
179# What to pass as -rdynamic flag to g++
180RDYNAMIC := @RDYNAMIC@
181
182# These are options that can either be enabled here, or can be enabled on the
183# make command line (ie, make ENABLE_PROFILING=1):
184
185# When ENABLE_OPTIMIZED is enabled, LLVM code is optimized and output is put
186# into the "Release" directories. Otherwise, LLVM code is not optimized and
187# output is put in the "Debug" directories.
188#ENABLE_OPTIMIZED = 1
189@ENABLE_OPTIMIZED@
190
191# When ENABLE_PROFILING is enabled, profile instrumentation is done
192# and output is put into the "<Flavor>+Profile" directories, where
193# <Flavor> is either Debug or Release depending on how other build
194# flags are set. Otherwise, output is put in the <Flavor>
195# directories.
196#ENABLE_PROFILING = 1
197@ENABLE_PROFILING@
198
199# When DISABLE_ASSERTIONS is enabled, builds of all of the LLVM code will
200# exclude assertion checks, otherwise they are included.
201#DISABLE_ASSERTIONS = 1
202@DISABLE_ASSERTIONS@
203
204# When ENABLE_EXPENSIVE_CHECKS is enabled, builds of all of the LLVM
205# code will include expensive checks, otherwise they are excluded.
206#ENABLE_EXPENSIVE_CHECKS = 0
207@ENABLE_EXPENSIVE_CHECKS@
208
209# When DEBUG_RUNTIME is enabled, the runtime libraries will retain debug
210# symbols.
211#DEBUG_RUNTIME = 1
212@DEBUG_RUNTIME@
213
214# When DEBUG_SYMBOLS is enabled, the compiler libraries will retain debug
215# symbols.
216#DEBUG_SYMBOLS = 1
217@DEBUG_SYMBOLS@
218
219# The compiler flags to use for optimized builds.
220OPTIMIZE_OPTION := @OPTIMIZE_OPTION@
221
222# When ENABLE_PROFILING is enabled, the llvm source base is built with profile
223# information to allow gprof to be used to get execution frequencies.
224#ENABLE_PROFILING = 1
225
226# When ENABLE_DOCS is disabled, docs/ will not be built.
227ENABLE_DOCS = @ENABLE_DOCS@
228
229# When ENABLE_DOXYGEN is enabled, the doxygen documentation will be built
230ENABLE_DOXYGEN = @ENABLE_DOXYGEN@
231
232# Do we want to enable threads?
233ENABLE_THREADS := @ENABLE_THREADS@
234
235# Do we want to build with position independent code?
236ENABLE_PIC := @ENABLE_PIC@
237
238# Do we want to build a shared library and link the tools with it?
239ENABLE_SHARED := @ENABLE_SHARED@
240
241# Do we want to link the stdc++ into a shared library? (Cygming)
242ENABLE_EMBED_STDCXX := @ENABLE_EMBED_STDCXX@
243
244# Use -fvisibility-inlines-hidden?
245ENABLE_VISIBILITY_INLINES_HIDDEN := @ENABLE_VISIBILITY_INLINES_HIDDEN@
246
247# Do we want to allow timestamping information into builds?
248ENABLE_TIMESTAMPS := @ENABLE_TIMESTAMPS@
249
250# This option tells the Makefiles to produce verbose output.
251# It essentially prints the commands that make is executing
252#VERBOSE = 1
253
254# Enable JIT for this platform
255TARGET_HAS_JIT = @TARGET_HAS_JIT@
256
257# Environment variable to set to change the runtime shared library search path.
258SHLIBPATH_VAR = @SHLIBPATH_VAR@
259
260# Shared library extension for host platform.
261SHLIBEXT = @SHLIBEXT@
262
263# Executable file extension for host platform.
264EXEEXT = @EXEEXT@
265
266# Things we just assume are "there"
267ECHO := echo
268
269# Get the options for causing archives to link all their content instead of
270# just missing symbols, and the inverse of that. This is used for certain LLVM
271# tools that permit loadable modules. It ensures that the LLVM symbols will be
272# available to those loadable modules.
273LINKALL := @LINKALL@
274NOLINKALL := @NOLINKALL@
275
276# Get the value of HUGE_VAL_SANITY which will be either "yes" or "no" depending
277# on the check.
278HUGE_VAL_SANITY = @HUGE_VAL_SANITY@
279
280# Bindings that we should build
281BINDINGS_TO_BUILD := @BINDINGS_TO_BUILD@
282ALL_BINDINGS := @ALL_BINDINGS@
283OCAML_LIBDIR := @OCAML_LIBDIR@
284
285# When compiling under Mingw/Cygwin, executables such as tblgen
286# expect Windows paths, whereas the build system uses Unix paths.
287# The function SYSPATH transforms Unix paths into Windows paths.
288ifneq (,$(findstring -mno-cygwin, $(CXX)))
289 SYSPATH = $(shell echo $(1) | cygpath -m -f -)
290else
291 SYSPATH = $(1)
292endif
293
294# Location of the plugin header file for gold.
295BINUTILS_INCDIR := @BINUTILS_INCDIR@
296
297# Optional flags supported by the compiler
298# -Wno-missing-field-initializers
299NO_MISSING_FIELD_INITIALIZERS = @NO_MISSING_FIELD_INITIALIZERS@
300# -Wno-variadic-macros
301NO_VARIADIC_MACROS = @NO_VARIADIC_MACROS@
Rafael Espindola9993a3a2012-02-28 23:32:06 +0000302# -Wcovered-switch-default
303COVERED_SWITCH_DEFAULT = @COVERED_SWITCH_DEFAULT@
Daniel Dunbar2532fa22011-10-18 23:10:47 +0000304
305# Was polly found in tools/polly?
306LLVM_HAS_POLLY = @LLVM_HAS_POLLY@
307# Flags supported by the linker.
308# bfd ld / gold --version-script=file
309HAVE_LINK_VERSION_SCRIPT = @HAVE_LINK_VERSION_SCRIPT@