1#===-- 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
146BZIP2      := @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@
160ZIP        := @ZIP@
161
162HAVE_PTHREAD := @HAVE_PTHREAD@
163
164LIBS       := @LIBS@
165
166# Targets that we should build
167TARGETS_TO_BUILD=@TARGETS_TO_BUILD@
168
169# Path to directory where object files should be stored during a build.
170# Set OBJ_ROOT to "." if you do not want to use a separate place for
171# object files.
172OBJ_ROOT := .
173
174# What to pass as rpath flag to g++
175RPATH := @RPATH@
176
177# What to pass as -rdynamic flag to g++
178RDYNAMIC := @RDYNAMIC@
179
180# These are options that can either be enabled here, or can be enabled on the
181# make command line (ie, make ENABLE_PROFILING=1):
182
183# When ENABLE_LIBCPP is enabled, LLVM uses libc++ by default to build.
184#ENABLE_LIBCPP = 0
185ENABLE_LIBCPP = @ENABLE_LIBCPP@
186
187# When ENABLE_CXX11 is enabled, LLVM uses c++11 mode by default to build.
188ENABLE_CXX11 = @ENABLE_CXX11@
189
190# When ENABLE_WERROR is enabled, we'll pass -Werror on the command line
191ENABLE_WERROR = @ENABLE_WERROR@
192
193# When ENABLE_OPTIMIZED is enabled, LLVM code is optimized and output is put
194# into the "Release" directories. Otherwise, LLVM code is not optimized and
195# output is put in the "Debug" directories.
196#ENABLE_OPTIMIZED = 1
197@ENABLE_OPTIMIZED@
198
199# When ENABLE_PROFILING is enabled, profile instrumentation is done
200# and output is put into the "<Flavor>+Profile" directories, where
201# <Flavor> is either Debug or Release depending on how other build
202# flags are set. Otherwise, output is put in the <Flavor>
203# directories.
204#ENABLE_PROFILING = 1
205@ENABLE_PROFILING@
206
207# When DISABLE_ASSERTIONS is enabled, builds of all of the LLVM code will
208# exclude assertion checks, otherwise they are included.
209#DISABLE_ASSERTIONS = 1
210@DISABLE_ASSERTIONS@
211
212# When ENABLE_EXPENSIVE_CHECKS is enabled, builds of all of the LLVM
213# code will include expensive checks, otherwise they are excluded.
214#ENABLE_EXPENSIVE_CHECKS = 0
215@ENABLE_EXPENSIVE_CHECKS@
216
217# When DEBUG_RUNTIME is enabled, the runtime libraries will retain debug
218# symbols.
219#DEBUG_RUNTIME = 1
220@DEBUG_RUNTIME@
221
222# When DEBUG_SYMBOLS is enabled, the compiler libraries will retain debug
223# symbols.
224#DEBUG_SYMBOLS = 1
225@DEBUG_SYMBOLS@
226
227# The compiler flags to use for optimized builds.
228OPTIMIZE_OPTION := @OPTIMIZE_OPTION@
229
230# When ENABLE_PROFILING is enabled, the llvm source base is built with profile
231# information to allow gprof to be used to get execution frequencies.
232#ENABLE_PROFILING = 1
233
234# When ENABLE_DOCS is disabled, docs/ will not be built.
235ENABLE_DOCS = @ENABLE_DOCS@
236
237# When ENABLE_DOXYGEN is enabled, the doxygen documentation will be built
238ENABLE_DOXYGEN = @ENABLE_DOXYGEN@
239
240# Do we want to enable threads?
241ENABLE_THREADS := @ENABLE_THREADS@
242
243# Do we want to build with position independent code?
244ENABLE_PIC := @ENABLE_PIC@
245
246# Do we want to build a shared library and link the tools with it?
247ENABLE_SHARED := @ENABLE_SHARED@
248
249# Do we want to link the stdc++ into a shared library? (Cygming)
250ENABLE_EMBED_STDCXX := @ENABLE_EMBED_STDCXX@
251
252# Use -fvisibility-inlines-hidden?
253ENABLE_VISIBILITY_INLINES_HIDDEN := @ENABLE_VISIBILITY_INLINES_HIDDEN@
254
255# Do we want to allow timestamping information into builds?
256ENABLE_TIMESTAMPS := @ENABLE_TIMESTAMPS@
257
258# This option tells the Makefiles to produce verbose output.
259# It essentially prints the commands that make is executing
260#VERBOSE = 1
261
262# Enable JIT for this platform
263TARGET_HAS_JIT = @TARGET_HAS_JIT@
264
265# Environment variable to set to change the runtime shared library search path.
266SHLIBPATH_VAR = @SHLIBPATH_VAR@
267
268# Shared library extension for host platform.
269SHLIBEXT = @SHLIBEXT@
270
271# Executable file extension for host platform.
272EXEEXT = @EXEEXT@
273
274# Things we just assume are "there"
275ECHO := echo
276
277# Get the options for causing archives to link all their content instead of
278# just missing symbols, and the inverse of that. This is used for certain LLVM
279# tools that permit loadable modules. It ensures that the LLVM symbols will be
280# available to those loadable modules.
281LINKALL := @LINKALL@
282NOLINKALL := @NOLINKALL@
283
284# Get the value of HUGE_VAL_SANITY which will be either "yes" or "no" depending
285# on the check.
286HUGE_VAL_SANITY = @HUGE_VAL_SANITY@
287
288# Bindings that we should build
289BINDINGS_TO_BUILD := @BINDINGS_TO_BUILD@
290ALL_BINDINGS      := @ALL_BINDINGS@
291OCAML_LIBDIR      := @OCAML_LIBDIR@
292
293# When compiling under Mingw/Cygwin, executables such as tblgen
294# expect Windows paths, whereas the build system uses Unix paths.
295# The function SYSPATH transforms Unix paths into Windows paths.
296ifneq (,$(findstring -mno-cygwin, $(CXX)))
297  SYSPATH = $(shell echo $(1) | cygpath -m -f -)
298else
299  SYSPATH = $(1)
300endif
301
302# Location of the plugin header file for gold.
303BINUTILS_INCDIR := @BINUTILS_INCDIR@
304
305# Optional flags supported by the compiler
306# -Wno-missing-field-initializers
307NO_MISSING_FIELD_INITIALIZERS = @NO_MISSING_FIELD_INITIALIZERS@
308# -Wno-variadic-macros
309NO_VARIADIC_MACROS = @NO_VARIADIC_MACROS@
310# -Wcovered-switch-default
311COVERED_SWITCH_DEFAULT = @COVERED_SWITCH_DEFAULT@
312
313# Was polly found in tools/polly?
314LLVM_HAS_POLLY = @LLVM_HAS_POLLY@
315# Flags supported by the linker.
316# bfd ld / gold --version-script=file
317HAVE_LINK_VERSION_SCRIPT = @HAVE_LINK_VERSION_SCRIPT@
318