blob: e2d2c57b4d5fd2e059e6b1bd6cb0f08c3c253b35 [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
Reid Spenceraea7fe42006-07-28 05:05:00 +000042PROJ_OBJ_DIR := $(shell $(PWD))
43PROJ_OBJ_ROOT := $(shell cd $(PROJ_OBJ_DIR)/$(LEVEL); $(PWD))
Reid Spencerb2cb4862005-01-16 02:20:42 +000044
Reid Spencer1b22fde2006-08-07 23:23:39 +000045ifeq ($(PROJECT_NAME),llvm)
Reid Spenceraea7fe42006-07-28 05:05:00 +000046LLVM_SRC_ROOT := $(shell cd @abs_top_srcdir@; $(PWD))
47LLVM_OBJ_ROOT := $(shell cd @abs_top_builddir@; $(PWD))
48PROJ_SRC_ROOT := $(shell cd $(LLVM_SRC_ROOT); $(PWD))
49PROJ_SRC_DIR := $(shell cd $(LLVM_SRC_ROOT)/$(patsubst $(PROJ_OBJ_ROOT)%,%,$(PROJ_OBJ_DIR)); $(PWD))
Reid Spencer32b16912007-01-17 20:24:45 +000050prefix := @prefix@
51PROJ_prefix := $(prefix)
Reid Spencerb2cb4862005-01-16 02:20:42 +000052PROJ_VERSION := $(LLVMVersion)
53else
54ifndef PROJ_SRC_ROOT
55$(error Projects must define PROJ_SRC_ROOT)
56endif
57ifndef PROJ_OBJ_ROOT
58$(error Projects must define PROJ_OBJ_ROOT)
59endif
60ifndef PROJ_INSTALL_ROOT
61$(error Projects must define PROJ_INSTALL_ROOT)
62endif
63ifndef LLVM_SRC_ROOT
64$(error Projects must define LLVM_SRC_ROOT)
65endif
66ifndef LLVM_OBJ_ROOT
67$(error Projects must define LLVM_OBJ_ROOT)
68endif
Reid Spenceraea7fe42006-07-28 05:05:00 +000069PROJ_SRC_DIR := $(shell cd $(PROJ_SRC_ROOT)/$(patsubst $(PROJ_OBJ_ROOT)%,%,$(PROJ_OBJ_DIR)); $(PWD))
Reid Spencer32b16912007-01-17 20:24:45 +000070prefix := $(PROJ_INSTALL_ROOT)
71PROJ_prefix := $(prefix)
Reid Spencerb2cb4862005-01-16 02:20:42 +000072ifndef PROJ_VERSION
73PROJ_VERSION := 1.0
74endif
75endif
Reid Spencere1200212004-11-29 04:53:50 +000076
Reid Spencer8475ec02007-03-29 19:05:44 +000077LLVMMAKE := $(LLVM_SRC_ROOT)/make
78
Reid Spencer32b16912007-01-17 20:24:45 +000079PROJ_bindir := $(DESTDIR)$(PROJ_prefix)/bin
80PROJ_libdir := $(DESTDIR)$(PROJ_prefix)/lib
81PROJ_datadir := $(DESTDIR)$(PROJ_prefix)/share
82PROJ_docsdir := $(DESTDIR)$(PROJ_prefix)/docs/llvm
83PROJ_etcdir := $(DESTDIR)$(PROJ_prefix)/etc/llvm
84PROJ_includedir := $(DESTDIR)$(PROJ_prefix)/include
85PROJ_infodir := $(DESTDIR)$(PROJ_prefix)/info
Bill Wendling3c94f6a2007-07-03 23:04:11 +000086PROJ_mandir := $(DESTDIR)$(PROJ_prefix)/share/man
Reid Spencer32b16912007-01-17 20:24:45 +000087
Reid Spencerbbf7a8a2004-12-31 22:54:28 +000088# Determine if we're on a unix type operating system
89LLVM_ON_UNIX:=@LLVM_ON_UNIX@
90LLVM_ON_WIN32:=@LLVM_ON_WIN32@
91
John Criswell7a73b802003-06-30 21:59:07 +000092# Target operating system for which LLVM will be compiled.
John Criswell7a73b802003-06-30 21:59:07 +000093OS=@OS@
94
John Criswell76595452003-07-01 22:07:39 +000095# Target hardware architecture
John Criswell76595452003-07-01 22:07:39 +000096ARCH=@ARCH@
97
Reid Spencere2cfe5d2006-07-26 21:14:56 +000098# Indicates, whether we're cross-compiling LLVM or not
99LLVM_CROSS_COMPILING=@LLVM_CROSS_COMPILING@
100
101# Executable file extension for build platform (mainly for
102# tablegen call if we're cross-compiling).
103BUILD_EXEEXT=@BUILD_EXEEXT@
104
Jim Grosbach673612e2008-10-02 22:56:44 +0000105# Compilers for the build platflorm (mainly for tablegen
106# call if we're cross-compiling).
107BUILD_CC=@BUILD_CC@
108BUILD_CXX=@BUILD_CXX@
109
Reid Spencer18224032004-11-07 19:12:53 +0000110# Target triple (cpu-vendor-os) for which we should generate code
111TARGET_TRIPLE=@target@
112
Evan Chengcf9be262006-06-20 22:16:32 +0000113# Extra options to compile LLVM with
114EXTRA_OPTIONS=@EXTRA_OPTIONS@
115
John Criswell0021c312004-02-13 21:57:29 +0000116# Endian-ness of the target
117ENDIAN=@ENDIAN@
118
John Criswell7a73b802003-06-30 21:59:07 +0000119# Path to the C++ compiler to use. This is an optional setting, which defaults
120# to whatever your gmake defaults to.
John Criswell7a73b802003-06-30 21:59:07 +0000121CXX = @CXX@
122
Misha Brukmanb5a2e402004-06-17 15:39:58 +0000123# Path to the CC binary, which use used by testcases for native builds.
John Criswell7a73b802003-06-30 21:59:07 +0000124CC := @CC@
125
Brian Gaekef1dd2002004-01-16 21:31:34 +0000126# Linker flags.
John Criswellb812e762003-07-01 15:02:59 +0000127LDFLAGS+=@LDFLAGS@
John Criswell49bf8622003-06-30 22:33:53 +0000128
Brian Gaekef1dd2002004-01-16 21:31:34 +0000129# Path to the library archiver program.
John Criswell7a73b802003-06-30 21:59:07 +0000130AR_PATH = @AR@
131
Reid Spencer1bc68642006-07-27 23:00:30 +0000132# Path to the nm program
133NM_PATH = @NM@
134
Reid Spencer151f8ba2004-10-25 08:27:37 +0000135# The pathnames of the programs we require to build
Reid Spencer8a2d4712004-12-16 17:48:14 +0000136CMP := @CMP@
137CP := @CP@
Reid Spencere1200212004-11-29 04:53:50 +0000138DATE := @DATE@
139FIND := @FIND@
Reid Spencere1200212004-11-29 04:53:50 +0000140GREP := @GREP@
141INSTALL := @INSTALL@
Reid Spencerb2cb4862005-01-16 02:20:42 +0000142MKDIR := $(LLVM_SRC_ROOT)/autoconf/mkinstalldirs
Reid Spencere1200212004-11-29 04:53:50 +0000143MV := @MV@
Reid Spencere1200212004-11-29 04:53:50 +0000144RANLIB := @RANLIB@
145RM := @RM@
146SED := @SED@
147TAR := @TAR@
Reid Spencere1200212004-11-29 04:53:50 +0000148
149# Paths to miscellaneous programs we hope are present but might not be
Misha Brukman9b8f5422009-01-09 16:44:42 +0000150PERL := @PERL@
Reid Spencere1200212004-11-29 04:53:50 +0000151BZIP2 := @BZIP2@
152DOT := @DOT@
153DOXYGEN := @DOXYGEN@
Reid Spencere1200212004-11-29 04:53:50 +0000154GROFF := @GROFF@
155GZIP := @GZIP@
Gordon Henriksen279219a2008-03-31 16:46:23 +0000156OCAMLC := @OCAMLC@
157OCAMLOPT := @OCAMLOPT@
158OCAMLDEP := @OCAMLDEP@
159OCAMLDOC := @OCAMLDOC@
Duncan Sands3a67f502008-10-22 09:42:14 +0000160GAS := @GAS@
Reid Spencere1200212004-11-29 04:53:50 +0000161POD2HTML := @POD2HTML@
162POD2MAN := @POD2MAN@
Reid Spencere1200212004-11-29 04:53:50 +0000163RUNTEST := @RUNTEST@
Reid Spencer0fcb9412004-11-30 08:11:54 +0000164TCLSH := @TCLSH@
Reid Spencere1200212004-11-29 04:53:50 +0000165ZIP := @ZIP@
John Criswell7a73b802003-06-30 21:59:07 +0000166
Reid Spencer1000b732006-12-01 00:37:14 +0000167HAVE_PERL := @HAVE_PERL@
168HAVE_PTHREAD := @HAVE_PTHREAD@
Reid Spencerb195d9d2006-03-23 23:21:29 +0000169
Reid Spencer5a870442005-04-22 17:14:14 +0000170LIBS := @LIBS@
171
Gordon Henriksen6530e9d2007-10-02 09:50:18 +0000172# Targets that we should build
173TARGETS_TO_BUILD=@TARGETS_TO_BUILD@
174
Reid Spencer79080352004-12-22 05:57:09 +0000175# Path to location for LLVM C/C++ front-end. You can modify this if you
176# want to override the value set by configure.
177LLVMGCCDIR := @LLVMGCCDIR@
178
John Criswell7a73b802003-06-30 21:59:07 +0000179# Determine the target for which LLVM should generate code.
Reid Spencera6cb9a12006-11-05 20:10:16 +0000180ifeq (@LLVMGCC_MAJVERS@,3)
John Criswell7a73b802003-06-30 21:59:07 +0000181LLVMGCCARCH := @target@/3.4-llvm
Reid Spencera6cb9a12006-11-05 20:10:16 +0000182else
183LLVMGCCARCH := @target@/@LLVMGCC_VERSION@
184endif
John Criswell7a73b802003-06-30 21:59:07 +0000185
Reid Spencer282d8c12006-12-21 22:55:41 +0000186# Determine the path where the library executables are
187LLVMGCCLIBEXEC := @LLVMGCCLIBEXEC@
188
Brian Gaekef1dd2002004-01-16 21:31:34 +0000189# Full pathnames of LLVM C/C++ front-end 'cc1' and 'cc1plus' binaries:
Reid Spencer79080352004-12-22 05:57:09 +0000190LLVMGCC := @LLVMGCC@
191LLVMGXX := @LLVMGXX@
192LLVMCC1 := @LLVMCC1@
193LLVMCC1PLUS := @LLVMCC1PLUS@
Reid Spencer7917d3a2006-04-06 22:00:36 +0000194LLVMGCC_VERSION := @LLVMGCC_VERSION@
195LLVMGCC_MAJVERS := @LLVMGCC_MAJVERS@
Reid Spencer1addff92007-04-21 21:28:12 +0000196LLVMGCC_LANGS := @LLVMGCC_LANGS@
Brian Gaekef1dd2002004-01-16 21:31:34 +0000197
John Criswell7a73b802003-06-30 21:59:07 +0000198# Path to directory where object files should be stored during a build.
199# Set OBJ_ROOT to "." if you do not want to use a separate place for
200# object files.
John Criswell7f336952003-09-06 14:44:17 +0000201OBJ_ROOT := .
John Criswell7a73b802003-06-30 21:59:07 +0000202
Nick Lewycky1dace482009-03-03 04:55:15 +0000203# What to pass as rpath flag to g++
204RPATH := @RPATH@
205
Nick Lewycky18f99072009-03-05 08:20:21 +0000206# What to pass as -rdynamic flag to g++
207RDYNAMIC := @RDYNAMIC@
208
John Criswell7a73b802003-06-30 21:59:07 +0000209# These are options that can either be enabled here, or can be enabled on the
Brian Gaekef1dd2002004-01-16 21:31:34 +0000210# make command line (ie, make ENABLE_PROFILING=1):
John Criswell7a73b802003-06-30 21:59:07 +0000211
Reid Spencerc4329cf2006-04-07 15:59:41 +0000212# When ENABLE_OPTIMIZED is enabled, LLVM code is optimized and output is put
Misha Brukman9b8f5422009-01-09 16:44:42 +0000213# into the "Release" directories. Otherwise, LLVM code is not optimized and
Reid Spencerc4329cf2006-04-07 15:59:41 +0000214# output is put in the "Debug" directories.
John Criswell7a73b802003-06-30 21:59:07 +0000215#ENABLE_OPTIMIZED = 1
216@ENABLE_OPTIMIZED@
217
David Greenedbefd0c2009-04-17 14:49:22 +0000218# When ENABLE_PROFILING is enabled, profile instrumentation is done
219# and output is put into the "<Flavor>+Profile" directories, where
220# <Flavor> is either Debug or Release depending on how other builkd
221# flags are set.. Otherwise, output is put in the <Flavor>
222# directories.
223#ENABLE_PROFILING = 1
224@ENABLE_PROFILING@
225
Mikhail Glushenkov895f32c2009-07-03 03:52:07 +0000226# When DISABLE_ASSERTIONS is enabled, builds of all of the LLVM code will
Reid Spencer1a5a5512006-04-09 23:39:43 +0000227# exclude assertion checks, otherwise they are included.
Reid Spencerc28ccd82006-04-09 20:42:14 +0000228#DISABLE_ASSERTIONS = 1
229@DISABLE_ASSERTIONS@
Reid Spencerc4329cf2006-04-07 15:59:41 +0000230
David Greenea696d242007-06-28 19:36:08 +0000231# When ENABLE_EXPENSIVE_CHECKS is enabled, builds of all of the LLVM
232# code will include expensive checks, otherwise they are excluded.
233#ENABLE_EXPENSIVE_CHECKS = 0
234@ENABLE_EXPENSIVE_CHECKS@
235
Reid Spencer8b2e1412006-11-17 03:32:33 +0000236# When DEBUG_RUNTIME is enabled, the runtime libraries will retain debug
237# symbols.
238#DEBUG_RUNTIME = 1
239@DEBUG_RUNTIME@
240
John Criswell7a73b802003-06-30 21:59:07 +0000241# When ENABLE_PROFILING is enabled, the llvm source base is built with profile
242# information to allow gprof to be used to get execution frequencies.
John Criswell7a73b802003-06-30 21:59:07 +0000243#ENABLE_PROFILING = 1
John Criswell7a73b802003-06-30 21:59:07 +0000244
Reid Spencere1200212004-11-29 04:53:50 +0000245# When ENABLE_DOXYGEN is enabled, the doxygen documentation will be built
246ENABLE_DOXYGEN = @ENABLE_DOXYGEN@
247
Reid Spencerb756c792006-06-01 01:09:43 +0000248# Do we want to enable threads?
249ENABLE_THREADS := @ENABLE_THREADS@
250
Reid Spencer89b0d992006-12-16 22:07:52 +0000251# Do we want to build with position independent code?
252ENABLE_PIC := @ENABLE_PIC@
253
Daniel Dunbarecfe67c2008-09-02 17:35:16 +0000254# Use -fvisibility-inlines-hidden?
255ENABLE_VISIBILITY_INLINES_HIDDEN := @ENABLE_VISIBILITY_INLINES_HIDDEN@
256
Misha Brukmane9676502003-07-02 21:20:04 +0000257# This option tells the Makefiles to produce verbose output.
John Criswell7a73b802003-06-30 21:59:07 +0000258# It essentially prints the commands that make is executing
John Criswell7a73b802003-06-30 21:59:07 +0000259#VERBOSE = 1
John Criswell7a73b802003-06-30 21:59:07 +0000260
John Criswell7a73b802003-06-30 21:59:07 +0000261# Enable JIT for this platform
Reid Spencerb195d9d2006-03-23 23:21:29 +0000262TARGET_HAS_JIT = @TARGET_HAS_JIT@
John Criswell7a73b802003-06-30 21:59:07 +0000263
Reid Spencere2cfe5d2006-07-26 21:14:56 +0000264# Shared library extension for host platform.
Brian Gaeke88aeace2004-01-21 19:39:07 +0000265SHLIBEXT = @SHLIBEXT@
266
Reid Spencere2cfe5d2006-07-26 21:14:56 +0000267# Executable file extension for host platform.
John Criswelle6d468f2004-06-01 19:04:38 +0000268EXEEXT = @EXEEXT@
269
Reid Spencerb2cb4862005-01-16 02:20:42 +0000270# Things we just assume are "there"
271ECHO := echo
Reid Spencera773bd52006-08-04 18:18:08 +0000272
273# Get the options for causing archives to link all their content instead of
274# just missing symbols, and the inverse of that. This is used for certain LLVM
275# tools that permit loadable modules. It ensures that the LLVM symbols will be
276# available to those loadable modules.
277LINKALL := @LINKALL@
278NOLINKALL := @NOLINKALL@
Reid Spencerb2ed05262006-11-03 18:04:08 +0000279
280# Get the value of HUGE_VAL_SANITY which will be either "yes" or "no" depending
281# on the check.
282HUGE_VAL_SANITY = @HUGE_VAL_SANITY@
Gordon Henriksen6530e9d2007-10-02 09:50:18 +0000283
284# Bindings that we should build
Gordon Henriksen1d4e0782007-10-02 16:42:10 +0000285BINDINGS_TO_BUILD := @BINDINGS_TO_BUILD@
286ALL_BINDINGS := @ALL_BINDINGS@
287OCAML_LIBDIR := @OCAML_LIBDIR@
Gordon Henriksen6530e9d2007-10-02 09:50:18 +0000288
Chris Lattner163974d2008-01-15 22:50:50 +0000289# When compiling under Mingw/Cygwin, executables such as tblgen
290# expect Windows paths, whereas the build system uses Unix paths.
291# The function SYSPATH transforms Unix paths into Windows paths.
292ifneq (,$(findstring -mno-cygwin, $(CXX)))
293 SYSPATH = $(shell echo $(1) | cygpath -m -f -)
294else
295 SYSPATH = $(1)
296endif
Nick Lewyckye2be5d52009-02-03 07:10:08 +0000297
298# Location of the plugin header file for gold.
299BINUTILS_INCDIR := @BINUTILS_INCDIR@
Mikhail Glushenkov2373c992009-07-03 03:52:47 +0000300
301# When ENABLE_LLVMC_DYNAMIC is enabled, LLVMC will link libCompilerDriver
302# dynamically. This is needed to make dynamic plugins work on some targets
303# (Windows).
304ENABLE_LLVMC_DYNAMIC = 0
305#@ENABLE_LLVMC_DYNAMIC@
Mikhail Glushenkovcc4f8bc2009-07-04 03:55:25 +0000306
307# When ENABLE_LLVMC_DYNAMIC_PLUGINS is enabled, LLVMC will have dynamic plugin
308# support (via the -load option).
309ENABLE_LLVMC_DYNAMIC_PLUGINS = 1
310#@ENABLE_LLVMC_DYNAMIC_PLUGINS@