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