blob: 2652db3bb9f629feaded1ef3f902a8165f6b8e20 [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#
5# This file was developed by the LLVM research group and is distributed under
6# the University of Illinois Open Source License. See LICENSE.TXT for details.
7#
8#===------------------------------------------------------------------------===#
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 Spencerb2cb4862005-01-16 02:20:42 +000050PROJ_prefix := @prefix@
51PROJ_bindir := @prefix@/bin
52PROJ_libdir := @prefix@/lib
53PROJ_datadir := @prefix@/share
54PROJ_docsdir := @prefix@/docs/llvm
55PROJ_etcdir := @prefix@/etc/llvm
56PROJ_includedir := @prefix@/include
57PROJ_infodir := @prefix@/info
58PROJ_mandir := @prefix@/man
59PROJ_VERSION := $(LLVMVersion)
60else
61ifndef PROJ_SRC_ROOT
62$(error Projects must define PROJ_SRC_ROOT)
63endif
64ifndef PROJ_OBJ_ROOT
65$(error Projects must define PROJ_OBJ_ROOT)
66endif
67ifndef PROJ_INSTALL_ROOT
68$(error Projects must define PROJ_INSTALL_ROOT)
69endif
70ifndef LLVM_SRC_ROOT
71$(error Projects must define LLVM_SRC_ROOT)
72endif
73ifndef LLVM_OBJ_ROOT
74$(error Projects must define LLVM_OBJ_ROOT)
75endif
Reid Spenceraea7fe42006-07-28 05:05:00 +000076PROJ_SRC_DIR := $(shell cd $(PROJ_SRC_ROOT)/$(patsubst $(PROJ_OBJ_ROOT)%,%,$(PROJ_OBJ_DIR)); $(PWD))
Reid Spencerb2cb4862005-01-16 02:20:42 +000077PROJ_prefix := $(PROJ_INSTALL_ROOT)
78PROJ_bindir := $(PROJ_INSTALL_ROOT)/bin
79PROJ_libdir := $(PROJ_INSTALL_ROOT)/lib
80PROJ_datadir := $(PROJ_INSTALL_ROOT)/share
81PROJ_docsdir := $(PROJ_INSTALL_ROOT)/docs/llvm
82PROJ_etcdir := $(PROJ_INSTALL_ROOT)/etc/llvm
83PROJ_includedir := $(PROJ_INSTALL_ROOT)/include
84PROJ_infodir := $(PROJ_INSTALL_ROOT)/info
85PROJ_mandir := $(PROJ_INSTALL_ROOT)/man
86ifndef PROJ_VERSION
87PROJ_VERSION := 1.0
88endif
89endif
Reid Spencere1200212004-11-29 04:53:50 +000090
Reid Spencerbbf7a8a2004-12-31 22:54:28 +000091# Determine if we're on a unix type operating system
92LLVM_ON_UNIX:=@LLVM_ON_UNIX@
93LLVM_ON_WIN32:=@LLVM_ON_WIN32@
94
John Criswell7a73b802003-06-30 21:59:07 +000095# Target operating system for which LLVM will be compiled.
John Criswell7a73b802003-06-30 21:59:07 +000096OS=@OS@
97
John Criswell76595452003-07-01 22:07:39 +000098# Target hardware architecture
John Criswell76595452003-07-01 22:07:39 +000099ARCH=@ARCH@
100
Reid Spencere2cfe5d2006-07-26 21:14:56 +0000101# Indicates, whether we're cross-compiling LLVM or not
102LLVM_CROSS_COMPILING=@LLVM_CROSS_COMPILING@
103
104# Executable file extension for build platform (mainly for
105# tablegen call if we're cross-compiling).
106BUILD_EXEEXT=@BUILD_EXEEXT@
107
Reid Spencer18224032004-11-07 19:12:53 +0000108# Target triple (cpu-vendor-os) for which we should generate code
109TARGET_TRIPLE=@target@
110
Reid Spencer5a870442005-04-22 17:14:14 +0000111# Targets that we should build
112TARGETS_TO_BUILD=@TARGETS_TO_BUILD@
113
Evan Chengcf9be262006-06-20 22:16:32 +0000114# Extra options to compile LLVM with
115EXTRA_OPTIONS=@EXTRA_OPTIONS@
116
John Criswell0021c312004-02-13 21:57:29 +0000117# Endian-ness of the target
118ENDIAN=@ENDIAN@
119
John Criswell7a73b802003-06-30 21:59:07 +0000120# Path to the C++ compiler to use. This is an optional setting, which defaults
121# to whatever your gmake defaults to.
John Criswell7a73b802003-06-30 21:59:07 +0000122CXX = @CXX@
123
Misha Brukmanb5a2e402004-06-17 15:39:58 +0000124# Path to the CC binary, which use used by testcases for native builds.
John Criswell7a73b802003-06-30 21:59:07 +0000125CC := @CC@
126
Brian Gaekef1dd2002004-01-16 21:31:34 +0000127# Linker flags.
John Criswellb812e762003-07-01 15:02:59 +0000128LDFLAGS+=@LDFLAGS@
John Criswell49bf8622003-06-30 22:33:53 +0000129
Brian Gaekef1dd2002004-01-16 21:31:34 +0000130# Path to the library archiver program.
John Criswell7a73b802003-06-30 21:59:07 +0000131AR_PATH = @AR@
132
Reid Spencer1bc68642006-07-27 23:00:30 +0000133# Path to the nm program
134NM_PATH = @NM@
135
Reid Spencer151f8ba2004-10-25 08:27:37 +0000136# The pathnames of the programs we require to build
Reid Spencere1200212004-11-29 04:53:50 +0000137BISON := @BISON@
Reid Spencer8a2d4712004-12-16 17:48:14 +0000138CMP := @CMP@
139CP := @CP@
Reid Spencere1200212004-11-29 04:53:50 +0000140DATE := @DATE@
141FIND := @FIND@
142FLEX := @LEX@
143GREP := @GREP@
144INSTALL := @INSTALL@
Reid Spencerb2cb4862005-01-16 02:20:42 +0000145MKDIR := $(LLVM_SRC_ROOT)/autoconf/mkinstalldirs
Reid Spencere1200212004-11-29 04:53:50 +0000146MV := @MV@
Reid Spencere1200212004-11-29 04:53:50 +0000147RANLIB := @RANLIB@
148RM := @RM@
149SED := @SED@
150TAR := @TAR@
151YACC := @YACC@
152
153# Paths to miscellaneous programs we hope are present but might not be
Reid Spencerb195d9d2006-03-23 23:21:29 +0000154PERL := @PERL@
Reid Spencere1200212004-11-29 04:53:50 +0000155BZIP2 := @BZIP2@
156DOT := @DOT@
157DOXYGEN := @DOXYGEN@
158ETAGS := @ETAGS@
159ETAGSFLAGS := @ETAGSFLAGS@
160GROFF := @GROFF@
161GZIP := @GZIP@
162POD2HTML := @POD2HTML@
163POD2MAN := @POD2MAN@
Reid Spencere1200212004-11-29 04:53:50 +0000164RUNTEST := @RUNTEST@
Reid Spencer0fcb9412004-11-30 08:11:54 +0000165TCLSH := @TCLSH@
Reid Spencere1200212004-11-29 04:53:50 +0000166ZIP := @ZIP@
John Criswell7a73b802003-06-30 21:59:07 +0000167
Reid Spencerb195d9d2006-03-23 23:21:29 +0000168HAVE_PERL := @HAVE_PERL@
169
Reid Spencer5a870442005-04-22 17:14:14 +0000170LIBS := @LIBS@
171
Reid Spencer79080352004-12-22 05:57:09 +0000172# Path to location for LLVM C/C++ front-end. You can modify this if you
173# want to override the value set by configure.
174LLVMGCCDIR := @LLVMGCCDIR@
175
John Criswell7a73b802003-06-30 21:59:07 +0000176# Determine the target for which LLVM should generate code.
Reid Spencera6cb9a12006-11-05 20:10:16 +0000177ifeq (@LLVMGCC_MAJVERS@,3)
John Criswell7a73b802003-06-30 21:59:07 +0000178LLVMGCCARCH := @target@/3.4-llvm
Reid Spencera6cb9a12006-11-05 20:10:16 +0000179else
180LLVMGCCARCH := @target@/@LLVMGCC_VERSION@
181endif
John Criswell7a73b802003-06-30 21:59:07 +0000182
Brian Gaekef1dd2002004-01-16 21:31:34 +0000183# Full pathnames of LLVM C/C++ front-end 'cc1' and 'cc1plus' binaries:
Reid Spencer79080352004-12-22 05:57:09 +0000184LLVMGCC := @LLVMGCC@
185LLVMGXX := @LLVMGXX@
186LLVMCC1 := @LLVMCC1@
187LLVMCC1PLUS := @LLVMCC1PLUS@
Reid Spencer7917d3a2006-04-06 22:00:36 +0000188LLVMGCC_VERSION := @LLVMGCC_VERSION@
189LLVMGCC_MAJVERS := @LLVMGCC_MAJVERS@
Brian Gaekef1dd2002004-01-16 21:31:34 +0000190
John Criswell7a73b802003-06-30 21:59:07 +0000191# Path to directory where object files should be stored during a build.
192# Set OBJ_ROOT to "." if you do not want to use a separate place for
193# object files.
John Criswell7f336952003-09-06 14:44:17 +0000194OBJ_ROOT := .
John Criswell7a73b802003-06-30 21:59:07 +0000195
John Criswell7a73b802003-06-30 21:59:07 +0000196# These are options that can either be enabled here, or can be enabled on the
Brian Gaekef1dd2002004-01-16 21:31:34 +0000197# make command line (ie, make ENABLE_PROFILING=1):
John Criswell7a73b802003-06-30 21:59:07 +0000198
Reid Spencerc4329cf2006-04-07 15:59:41 +0000199# When ENABLE_OPTIMIZED is enabled, LLVM code is optimized and output is put
200# into the "Release" directories. Otherwise, LLVM code is not optimized and
201# output is put in the "Debug" directories.
John Criswell7a73b802003-06-30 21:59:07 +0000202#ENABLE_OPTIMIZED = 1
203@ENABLE_OPTIMIZED@
204
Reid Spencer1a5a5512006-04-09 23:39:43 +0000205# When DISABLE_ASSERTIONS is enabled, builds of all of the LLVM code will
206# exclude assertion checks, otherwise they are included.
Reid Spencerc28ccd82006-04-09 20:42:14 +0000207#DISABLE_ASSERTIONS = 1
208@DISABLE_ASSERTIONS@
Reid Spencerc4329cf2006-04-07 15:59:41 +0000209
Reid Spencer6e96d812005-12-21 03:31:53 +0000210# When DEBUG_RUNTIME is enabled, the runtime libraries will retain debug
211# symbols.
212#DEBUG_RUNTIME = 1
213@DEBUG_RUNTIME@
214
John Criswell7a73b802003-06-30 21:59:07 +0000215# When ENABLE_PROFILING is enabled, the llvm source base is built with profile
216# information to allow gprof to be used to get execution frequencies.
John Criswell7a73b802003-06-30 21:59:07 +0000217#ENABLE_PROFILING = 1
John Criswell7a73b802003-06-30 21:59:07 +0000218
Reid Spencere1200212004-11-29 04:53:50 +0000219# When ENABLE_DOXYGEN is enabled, the doxygen documentation will be built
220ENABLE_DOXYGEN = @ENABLE_DOXYGEN@
221
Reid Spencerb756c792006-06-01 01:09:43 +0000222# Do we want to enable threads?
223ENABLE_THREADS := @ENABLE_THREADS@
224
Misha Brukmane9676502003-07-02 21:20:04 +0000225# This option tells the Makefiles to produce verbose output.
John Criswell7a73b802003-06-30 21:59:07 +0000226# It essentially prints the commands that make is executing
John Criswell7a73b802003-06-30 21:59:07 +0000227#VERBOSE = 1
John Criswell7a73b802003-06-30 21:59:07 +0000228
John Criswell7a73b802003-06-30 21:59:07 +0000229# Enable JIT for this platform
Reid Spencerb195d9d2006-03-23 23:21:29 +0000230TARGET_HAS_JIT = @TARGET_HAS_JIT@
John Criswell7a73b802003-06-30 21:59:07 +0000231
Reid Spencere2cfe5d2006-07-26 21:14:56 +0000232# Shared library extension for host platform.
Brian Gaeke88aeace2004-01-21 19:39:07 +0000233SHLIBEXT = @SHLIBEXT@
234
Reid Spencere2cfe5d2006-07-26 21:14:56 +0000235# Executable file extension for host platform.
John Criswelle6d468f2004-06-01 19:04:38 +0000236EXEEXT = @EXEEXT@
237
Reid Spencerb2cb4862005-01-16 02:20:42 +0000238# Things we just assume are "there"
239ECHO := echo
Reid Spencera773bd52006-08-04 18:18:08 +0000240
241# Get the options for causing archives to link all their content instead of
242# just missing symbols, and the inverse of that. This is used for certain LLVM
243# tools that permit loadable modules. It ensures that the LLVM symbols will be
244# available to those loadable modules.
245LINKALL := @LINKALL@
246NOLINKALL := @NOLINKALL@
Reid Spencerb2ed05262006-11-03 18:04:08 +0000247
248# Get the value of HUGE_VAL_SANITY which will be either "yes" or "no" depending
249# on the check.
250HUGE_VAL_SANITY = @HUGE_VAL_SANITY@