blob: 5673cfe464033d04642e80c89818e1d331f51521 [file] [log] [blame]
Derek Schuffbc643132014-05-22 16:39:25 -07001# The following variables will likely need to be modified, depending on where
2# and how you built LLVM & Clang. They can be overridden in a command-line
3# invocation of make, like:
4#
Karl Schimpf8fcefc32014-09-15 12:56:50 -07005# make LLVM_SRC_PATH=<path> LLVM_BIN_PATH=<path> \
Jan Voung68a06332015-03-05 14:33:38 -08006# LIBCXX_INSTALL_PATH=<path> CLANG_PATH=<path> \
Jan Voung44c3a802015-03-27 16:29:08 -07007# PNACL_BIN_PATH=<path> ...
Derek Schuffbc643132014-05-22 16:39:25 -07008#
9
10# LLVM_SRC_PATH is the path to the root of the checked out source code. This
11# directory should contain the configure script, the include/ and lib/
12# directories of LLVM, Clang in tools/clang/, etc.
13# Alternatively, if you're building vs. a binary download of LLVM, then
14# LLVM_SRC_PATH can point to the main untarred directory.
15LLVM_SRC_PATH ?= ../llvm
16
17# LLVM_BIN_PATH is the directory where binaries are placed by the LLVM build
Jan Voung68a06332015-03-05 14:33:38 -080018# process. It should contain the tools like clang, clang-format, llc,
19# llvm-as, llvm-config, llvm-mc, pnacl-bcdis, and pnacl-freeze.
Jim Stichnoth6c6adf12015-04-07 14:22:25 -070020ifdef CMAKE
21 # LLVM cmake build
22 LLVM_BIN_PATH ?= ../../out/llvm_x86_64_linux_work/bin
23 STDLIB_FLAGS =
24else
25 # LLVM autoconf build
26 LLVM_BIN_PATH ?= ../../out/llvm_x86_64_linux_work/Release+Asserts/bin
27 STDLIB_FLAGS = -stdlib=libc++ -I$(LIBCXX_INSTALL_PATH)/include/c++/v1
28endif
Derek Schuffbc643132014-05-22 16:39:25 -070029
Jan Voung44c3a802015-03-27 16:29:08 -070030# The x86-32-specific sandboxed translator directory.
31# It holds sandboxed versions of libraries and binaries.
32SB_LLVM_PATH ?= $(shell readlink -e \
33 ../../out/sandboxed_translators_work/translator-i686/llvm-sb/Release)
34
35# NACL_ROOT is the root of the native client repository.
36NACL_ROOT ?= $(shell python -c "import sys; sys.path.insert(0, 'pydir'); \
37 import utils; print utils.FindBaseNaCl()")
38
Jan Voung68a06332015-03-05 14:33:38 -080039# PNACL_TOOLCHAIN_ROOT is the location of the PNaCl toolchain.
40# This is used as the default root for finding binutils, libcxx, etc.
Jan Voung44c3a802015-03-27 16:29:08 -070041PNACL_TOOLCHAIN_ROOT ?= $(shell readlink -e \
42 $(NACL_ROOT)/toolchain/linux_x86/pnacl_newlib)
43
44# The location of PNaCl tools (e.g., binutils objdump, pnacl-clang++, etc.).
45PNACL_BIN_PATH ?= $(shell readlink -e $(PNACL_TOOLCHAIN_ROOT)/bin)
Karl Schimpf8fcefc32014-09-15 12:56:50 -070046
Jan Voung68a06332015-03-05 14:33:38 -080047# CLANG_PATH is the location of the clang compiler to use for building
48# the host binaries.
Karl Schimpf8fcefc32014-09-15 12:56:50 -070049CLANG_PATH ?= $(shell readlink -e \
Jan Voung44c3a802015-03-27 16:29:08 -070050 $(NACL_ROOT)/../third_party/llvm-build/Release+Asserts/bin)
Karl Schimpf8fcefc32014-09-15 12:56:50 -070051
Jan Voung68a06332015-03-05 14:33:38 -080052# LIBCXX_INSTALL_PATH is the directory where libc++ is located. It should
53# contain header files and corresponding libraries. This is used for
54# building the host binaries in conjuction with clang.
55LIBCXX_INSTALL_PATH ?= $(PNACL_TOOLCHAIN_ROOT)
56
Jan Voung4c127ba2014-09-19 13:11:36 -070057HOST_ARCH ?= x86_64
Jan Voung839c4ce2014-07-28 15:19:43 -070058ifeq ($(HOST_ARCH),x86_64)
Jim Stichnoth6c6adf12015-04-07 14:22:25 -070059 HOST_FLAGS = -m64
Jan Voung839c4ce2014-07-28 15:19:43 -070060else
61 ifeq ($(HOST_ARCH),x86)
Jim Stichnoth6c6adf12015-04-07 14:22:25 -070062 HOST_FLAGS = -m32
Jan Voung839c4ce2014-07-28 15:19:43 -070063 endif
64endif
65
Jim Stichnothfddef242014-09-26 18:53:41 -070066ifdef DEBUG
67 OBJDIR = build/Debug
68 OPTLEVEL = -O0
Jan Voung44c3a802015-03-27 16:29:08 -070069 LINKOPTLEVEL = -O0
Jim Stichnothfddef242014-09-26 18:53:41 -070070else
71 OBJDIR = build/Release
Jim Stichnotha49e9d92014-12-07 14:25:34 -080072 OPTLEVEL = -O2 -ffunction-sections -fdata-sections
Jan Voung44c3a802015-03-27 16:29:08 -070073 LINKOPTLEVEL = -O2
Jim Stichnothfddef242014-09-26 18:53:41 -070074endif
75
Karl Schimpfb262c5e2014-10-27 14:41:57 -070076# The list of CXX defines that are dependent on build parameters.
Jan Voung44c3a802015-03-27 16:29:08 -070077BASE_CXX_DEFINES =
Jim Stichnothfa4efea2015-01-27 05:06:03 -080078CXX_EXTRA =
79LD_EXTRA =
Karl Schimpfb262c5e2014-10-27 14:41:57 -070080
81ifdef MINIMAL
Jim Stichnothe3c02c22014-12-05 14:16:07 -080082 NOASSERT = 1
Karl Schimpfb262c5e2014-10-27 14:41:57 -070083 OBJDIR := $(OBJDIR)+Min
Jan Voung44c3a802015-03-27 16:29:08 -070084 BASE_CXX_DEFINES += -DALLOW_DUMP=0 -DALLOW_LLVM_CL=0 -DALLOW_LLVM_IR=0 \
Karl Schimpfdf80eb82015-02-09 14:20:22 -080085 -DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_DISABLE_IR_GEN=0 \
Jan Voung44c3a802015-03-27 16:29:08 -070086 -DALLOW_MINIMAL_BUILD=1
Karl Schimpfb262c5e2014-10-27 14:41:57 -070087else
Jan Voung44c3a802015-03-27 16:29:08 -070088 BASE_CXX_DEFINES += -DALLOW_DUMP=1 -DALLOW_LLVM_CL=1 -DALLOW_LLVM_IR=1 \
Karl Schimpfdf80eb82015-02-09 14:20:22 -080089 -DALLOW_LLVM_IR_AS_INPUT=1 -DALLOW_DISABLE_IR_GEN=1 \
Jan Voung44c3a802015-03-27 16:29:08 -070090 -DALLOW_MINIMAL_BUILD=0
Karl Schimpfb262c5e2014-10-27 14:41:57 -070091endif
92
Jan Voung44c3a802015-03-27 16:29:08 -070093SB_CXX_DEFINES := $(BASE_CXX_DEFINES) -DPNACL_BROWSER_TRANSLATOR=1
94CXX_DEFINES := $(BASE_CXX_DEFINES) -DPNACL_BROWSER_TRANSLATOR=0
95
Jim Stichnoth9c234e22014-10-01 09:28:21 -070096ifdef NOASSERT
97 ASSERTIONS = -DNDEBUG
98else
99 ASSERTIONS =
100 OBJDIR := $(OBJDIR)+Asserts
101endif
102
Jim Stichnothfa4efea2015-01-27 05:06:03 -0800103ifdef TSAN
104 OBJDIR := $(OBJDIR)+TSan
105 CXX_EXTRA += -fsanitize=thread
106 LD_EXTRA += -fsanitize=thread
107endif
108
Jan Voung44c3a802015-03-27 16:29:08 -0700109SB_OBJDIR := $(OBJDIR)+Sandboxed
110
Derek Schuffbc643132014-05-22 16:39:25 -0700111$(info -----------------------------------------------)
112$(info Using LLVM_SRC_PATH = $(LLVM_SRC_PATH))
113$(info Using LLVM_BIN_PATH = $(LLVM_BIN_PATH))
Jan Voung44c3a802015-03-27 16:29:08 -0700114$(info Using SB_LLVM_PATH = $(SB_LLVM_PATH))
115$(info Using NACL_ROOT = $(NACL_ROOT))
Jan Voung68a06332015-03-05 14:33:38 -0800116$(info Using PNACL_TOOLCHAIN_ROOT = $(PNACL_TOOLCHAIN_ROOT))
Jan Voung44c3a802015-03-27 16:29:08 -0700117$(info Using PNACL_BIN_PATH = $(PNACL_BIN_PATH))
Karl Schimpf8fcefc32014-09-15 12:56:50 -0700118$(info Using CLANG_PATH = $(CLANG_PATH))
Jan Voung68a06332015-03-05 14:33:38 -0800119$(info Using LIBCXX_INSTALL_PATH = $(LIBCXX_INSTALL_PATH))
Jan Voung839c4ce2014-07-28 15:19:43 -0700120$(info Using HOST_ARCH = $(HOST_ARCH))
Derek Schuffbc643132014-05-22 16:39:25 -0700121$(info -----------------------------------------------)
122
123LLVM_CXXFLAGS := `$(LLVM_BIN_PATH)/llvm-config --cxxflags`
Jan Voung44c3a802015-03-27 16:29:08 -0700124SB_LLVM_CXXFLAGS := $(LLVM_CXXFLAGS)
125
126# Listing specific libraries that are needed for pnacl-sz
127# and the unittests, since we build "tools-only" for the
128# sandboxed_translators (which doesn't include every library
129# listed by llvm-config).
130LLVM_LIBS := -lLLVMIRReader -lLLVMBitReader -lLLVMNaClBitTestUtils \
131 -lLLVMNaClBitReader -lLLVMNaClBitAnalysis -lLLVMNaClBitWriter \
132 -lLLVMAsmParser -lLLVMNaClAnalysis -lLLVMCore -lLLVMSupport
133LLVM_LDFLAGS := $(LLVM_LIBS) \
Jim Stichnoth33246422014-11-24 14:36:23 -0800134 `$(LLVM_BIN_PATH)/llvm-config --ldflags` \
135 `$(LLVM_BIN_PATH)/llvm-config --system-libs`
Jan Voung44c3a802015-03-27 16:29:08 -0700136SB_LLVM_LDFLAGS := $(LLVM_LIBS) \
137 -L$(SB_LLVM_PATH)/lib
Derek Schuffbc643132014-05-22 16:39:25 -0700138
Jim Stichnoth5e06f9f2014-09-17 08:41:21 -0700139CCACHE := `command -v ccache`
140CXX := CCACHE_CPP2=yes $(CCACHE) $(CLANG_PATH)/clang++
Jan Voung44c3a802015-03-27 16:29:08 -0700141SB_CXX := CCACHE_CPP2=yes $(CCACHE) $(PNACL_BIN_PATH)/pnacl-clang++
142SB_TRANSLATE := $(PNACL_BIN_PATH)/pnacl-translate
Jan Voung839c4ce2014-07-28 15:19:43 -0700143
Jan Voung44c3a802015-03-27 16:29:08 -0700144BASE_CXXFLAGS := -std=gnu++11 -Wall -Wextra -Werror -fno-rtti \
145 -fno-exceptions $(OPTLEVEL) $(ASSERTIONS) -g -pedantic \
146 -Wno-error=unused-parameter $(CXX_EXTRA)
147
148CXXFLAGS := $(LLVM_CXXFLAGS) $(BASE_CXXFLAGS) $(CXX_DEFINES) $(HOST_FLAGS) \
Jim Stichnoth6c6adf12015-04-07 14:22:25 -0700149 $(STDLIB_FLAGS)
Jan Voung44c3a802015-03-27 16:29:08 -0700150SB_CXXFLAGS := $(SB_LLVM_CXXFLAGS) $(BASE_CXXFLAGS) $(SB_CXX_DEFINES)
151
Jim Stichnothfa4efea2015-01-27 05:06:03 -0800152LDFLAGS := $(HOST_FLAGS) -L$(LIBCXX_INSTALL_PATH)/lib -Wl,--gc-sections \
Jim Stichnoth6c6adf12015-04-07 14:22:25 -0700153 $(LD_EXTRA) $(STDLIB_FLAGS)
Jan Voung44c3a802015-03-27 16:29:08 -0700154# Not specifying -Wl,--gc-sections but instead doing bitcode linking GC w/ LTO.
155SB_LDFLAGS := $(LINKOPTLEVEL) $(LD_EXTRA)
Derek Schuffbc643132014-05-22 16:39:25 -0700156
Karl Schimpfab06df32014-10-29 14:58:25 -0700157SRCS = \
Jan Voung8acded02014-09-22 18:02:25 -0700158 assembler.cpp \
159 assembler_ia32.cpp \
Jan Voung44c3a802015-03-27 16:29:08 -0700160 IceBrowserCompileServer.cpp \
Derek Schuffbc643132014-05-22 16:39:25 -0700161 IceCfg.cpp \
162 IceCfgNode.cpp \
Jan Voung44c3a802015-03-27 16:29:08 -0700163 IceClFlags.cpp \
164 IceCompiler.cpp \
165 IceCompileServer.cpp \
Jan Voung08c3bcd2014-12-01 17:55:16 -0800166 IceELFObjectWriter.cpp \
167 IceELFSection.cpp \
Jan Voungec270732015-01-12 17:00:22 -0800168 IceFixups.cpp \
Derek Schuffbc643132014-05-22 16:39:25 -0700169 IceGlobalContext.cpp \
Karl Schimpfe3f64d02014-10-07 10:38:22 -0700170 IceGlobalInits.cpp \
Derek Schuffbc643132014-05-22 16:39:25 -0700171 IceInst.cpp \
172 IceInstX8632.cpp \
Jan Voung3bd9f1a2014-06-18 10:50:57 -0700173 IceIntrinsics.cpp \
Jim Stichnothd97c7df2014-06-04 11:57:08 -0700174 IceLiveness.cpp \
Derek Schuffbc643132014-05-22 16:39:25 -0700175 IceOperand.cpp \
Jim Stichnothd97c7df2014-06-04 11:57:08 -0700176 IceRegAlloc.cpp \
Jim Stichnothc4554d72014-09-30 16:49:38 -0700177 IceRNG.cpp \
Derek Schuffbc643132014-05-22 16:39:25 -0700178 IceTargetLowering.cpp \
179 IceTargetLoweringX8632.cpp \
Jim Stichnothbbca7542015-02-11 16:08:31 -0800180 IceThreading.cpp \
Jim Stichnothc4554d72014-09-30 16:49:38 -0700181 IceTimerTree.cpp \
Karl Schimpf8d7abae2014-07-07 14:50:30 -0700182 IceTranslator.cpp \
Derek Schuffbc643132014-05-22 16:39:25 -0700183 IceTypes.cpp \
Jim Stichnothfa0cfa52015-02-26 09:42:36 -0800184 main.cpp \
Karl Schimpf8d7abae2014-07-07 14:50:30 -0700185 PNaClTranslator.cpp
Derek Schuffbc643132014-05-22 16:39:25 -0700186
Karl Schimpfab06df32014-10-29 14:58:25 -0700187ifndef MINIMAL
Karl Schimpf4019f082014-12-15 13:45:00 -0800188 SRCS += IceConverter.cpp \
189 IceTypeConverter.cpp
Karl Schimpfab06df32014-10-29 14:58:25 -0700190endif
191
Jim Stichnothfddef242014-09-26 18:53:41 -0700192OBJS=$(patsubst %.cpp, $(OBJDIR)/%.o, $(SRCS))
Jan Voung44c3a802015-03-27 16:29:08 -0700193SB_OBJS=$(patsubst %.cpp, $(SB_OBJDIR)/%.o, $(SRCS))
Derek Schuffbc643132014-05-22 16:39:25 -0700194
Jan Voung08c3bcd2014-12-01 17:55:16 -0800195UNITTEST_SRCS = \
Karl Schimpf2e7daef2015-01-09 13:04:13 -0800196 BitcodeMunge.cpp \
197 IceELFSectionTest.cpp \
198 IceParseInstsTest.cpp
Jan Voung08c3bcd2014-12-01 17:55:16 -0800199
200UNITTEST_OBJS = $(patsubst %.cpp, $(OBJDIR)/unittest/%.o, $(UNITTEST_SRCS))
Jim Stichnothfa0cfa52015-02-26 09:42:36 -0800201UNITTEST_LIB_OBJS = $(filter-out $(OBJDIR)/main.o,$(OBJS))
Jan Voung08c3bcd2014-12-01 17:55:16 -0800202
Derek Schuffbc643132014-05-22 16:39:25 -0700203# Keep all the first target so it's the default.
Jim Stichnothfa0cfa52015-02-26 09:42:36 -0800204all: $(OBJDIR)/pnacl-sz make_symlink runtime
Derek Schuffbc643132014-05-22 16:39:25 -0700205
Jan Voung44c3a802015-03-27 16:29:08 -0700206ifdef TSAN
207sb:
208 @echo "Skipping pnacl-sz.*.nexe: TSAN isn't supported under NaCl."
209else
210sb: $(SB_OBJDIR)/pnacl-sz.x86-32.nexe
211endif
212
Karl Schimpf6af63362014-10-29 14:55:00 -0700213# Creates symbolic link so that testing is easier. Also runs
Jim Stichnothfa0cfa52015-02-26 09:42:36 -0800214# pnacl-sz to verify that the defines flags have valid values,
Karl Schimpf6af63362014-10-29 14:55:00 -0700215# as well as describe the corresponding build attributes.
Jim Stichnothfa0cfa52015-02-26 09:42:36 -0800216make_symlink: $(OBJDIR)/pnacl-sz
217 rm -rf pnacl-sz
218 ln -s $(OBJDIR)/pnacl-sz
Karl Schimpf6af63362014-10-29 14:55:00 -0700219 @echo "Build Attributes:"
Jim Stichnothfa0cfa52015-02-26 09:42:36 -0800220 @$(OBJDIR)/pnacl-sz --build-atts
Derek Schuffbc643132014-05-22 16:39:25 -0700221
Jan Voung44c3a802015-03-27 16:29:08 -0700222.PHONY: all make_symlink runtime bloat sb
Jim Stichnothfddef242014-09-26 18:53:41 -0700223
Jim Stichnothfa0cfa52015-02-26 09:42:36 -0800224$(OBJDIR)/pnacl-sz: $(OBJS)
Jim Stichnoth33246422014-11-24 14:36:23 -0800225 $(CXX) $(LDFLAGS) -o $@ $^ $(LLVM_LDFLAGS) \
Karl Schimpf8fcefc32014-09-15 12:56:50 -0700226 -Wl,-rpath=$(abspath $(LIBCXX_INSTALL_PATH)/lib)
Derek Schuffbc643132014-05-22 16:39:25 -0700227
Jan Voung44c3a802015-03-27 16:29:08 -0700228$(SB_OBJDIR)/pnacl-sz.x86-32.nexe: $(SB_OBJS)
229 $(eval PNACL_SZ_BASE := $(patsubst %.nexe, %, $@))
230 $(SB_CXX) $(SB_LDFLAGS) -o $(PNACL_SZ_BASE).nonfinal.pexe $^ \
231 $(SB_LLVM_LDFLAGS)
232 $(SB_TRANSLATE) -arch x86-32 $(PNACL_SZ_BASE).nonfinal.pexe -o $@ \
233 --allow-llvm-bitcode-input
234
Jim Stichnothdd842db2015-01-27 12:53:53 -0800235# TODO(stichnot): Be more precise than "*.h" here and elsewhere.
Jim Stichnothfddef242014-09-26 18:53:41 -0700236$(OBJS): $(OBJDIR)/%.o: src/%.cpp src/*.h src/*.def
Derek Schuffbc643132014-05-22 16:39:25 -0700237 $(CXX) -c $(CXXFLAGS) $< -o $@
238
Jan Voung44c3a802015-03-27 16:29:08 -0700239$(SB_OBJS): $(SB_OBJDIR)/%.o: src/%.cpp src/*.h src/*.def
240 $(SB_CXX) -c $(SB_CXXFLAGS) $< -o $@
241
Jan Voung08c3bcd2014-12-01 17:55:16 -0800242$(OBJDIR)/run_unittests: $(UNITTEST_OBJS) $(UNITTEST_LIB_OBJS)
243 $(CXX) $(LDFLAGS) -o $@ $^ $(LLVM_LDFLAGS) -lgtest -lgtest_main -ldl \
244 -Wl,-rpath=$(abspath $(LIBCXX_INSTALL_PATH)/lib)
245
Jim Stichnoth6e861d52015-02-03 14:35:51 -0800246$(UNITTEST_OBJS): $(OBJDIR)/unittest/%.o: unittest/%.cpp \
247 unittest/*.h src/*.h src/*.def
Jan Voung08c3bcd2014-12-01 17:55:16 -0800248 $(CXX) -c $(CXXFLAGS) \
249 -Isrc/ \
250 -I$(LLVM_SRC_PATH)/utils/unittest/googletest/include \
251 -DGTEST_HAS_RTTI=0 -DGTEST_USE_OWN_TR1_TUPLE \
252 $< -o $@
253
Jim Stichnothfddef242014-09-26 18:53:41 -0700254$(OBJS): | $(OBJDIR)
Jan Voung44c3a802015-03-27 16:29:08 -0700255$(SB_OBJS): | $(SB_OBJDIR)
Derek Schuffbc643132014-05-22 16:39:25 -0700256
Jan Voung08c3bcd2014-12-01 17:55:16 -0800257$(UNITTEST_OBJS): | $(OBJDIR)/unittest
258
Jim Stichnothfddef242014-09-26 18:53:41 -0700259$(OBJDIR):
Derek Schuffbc643132014-05-22 16:39:25 -0700260 @mkdir -p $@
Jan Voung44c3a802015-03-27 16:29:08 -0700261$(SB_OBJDIR):
262 @mkdir -p $@
Derek Schuffbc643132014-05-22 16:39:25 -0700263
Jan Voung08c3bcd2014-12-01 17:55:16 -0800264$(OBJDIR)/unittest: $(OBJDIR)
265 @mkdir -p $@
266
Jim Stichnoth9738a9e2015-02-23 16:39:06 -0800267RT_SRC := runtime/szrt.c runtime/szrt_ll.ll
268RT_OBJ := build/runtime/szrt_native_x8632.o build/runtime/szrt_sb_x8632.o
269
270runtime: $(RT_OBJ)
271
272# Use runtime.is.built so that build-runtime.py is invoked only once
273# even in a parallel build.
274.INTERMEDIATE: runtime.is.built
275$(RT_OBJ): runtime.is.built
276runtime.is.built: $(RT_SRC)
277 @echo ================ Building Subzero runtime ================
Jan Voung68a06332015-03-05 14:33:38 -0800278 ./pydir/build-runtime.py -v --pnacl-root $(PNACL_TOOLCHAIN_ROOT)
Jim Stichnoth9738a9e2015-02-23 16:39:06 -0800279
Jim Stichnothfa0cfa52015-02-26 09:42:36 -0800280check-lit: $(OBJDIR)/pnacl-sz make_symlink
Derek Schuffbc643132014-05-22 16:39:25 -0700281 LLVM_BIN_PATH=$(LLVM_BIN_PATH) \
Jan Voung44c3a802015-03-27 16:29:08 -0700282 BINUTILS_BIN_PATH=$(PNACL_BIN_PATH) \
Derek Schuffbc643132014-05-22 16:39:25 -0700283 $(LLVM_SRC_PATH)/utils/lit/lit.py -sv tests_lit
Jim Stichnothac9c9432014-08-26 14:07:13 -0700284
Karl Schimpfab06df32014-10-29 14:58:25 -0700285ifdef MINIMAL
Jim Stichnothc9258222015-03-13 11:59:49 -0700286check-xtest: $(OBJDIR)/pnacl-sz make_symlink runtime
287 @echo "Crosstests disabled, minimal build"
Karl Schimpfab06df32014-10-29 14:58:25 -0700288else
Jim Stichnothc9258222015-03-13 11:59:49 -0700289check-xtest: $(OBJDIR)/pnacl-sz make_symlink runtime
Jim Stichnothdc7c5972015-03-10 11:17:15 -0700290 # Do all native/sse2 tests, but only test_vector_ops for native/sse4.1.
291 # For (slow) sandboxed tests, limit to Om1/sse4.1.
292 ./pydir/crosstest_generator.py -v --lit \
293 -i native,sse2 -i native,sse4.1,test_vector_ops \
294 -i sandbox,sse4.1,Om1
295 LLVM_BIN_PATH=$(LLVM_BIN_PATH) \
296 $(LLVM_SRC_PATH)/utils/lit/lit.py -sv crosstest/Output
Karl Schimpfab06df32014-10-29 14:58:25 -0700297endif
Derek Schuffbc643132014-05-22 16:39:25 -0700298
Jim Stichnothc9258222015-03-13 11:59:49 -0700299check-unit: $(OBJDIR)/run_unittests
300 $(OBJDIR)/run_unittests
301
302check: check-lit check-unit check-xtest
303
Jim Stichnothdd842db2015-01-27 12:53:53 -0800304FORMAT_BLACKLIST =
305# Add one of the following lines for each source file to ignore.
306FORMAT_BLACKLIST += ! -name IceParseInstsTest.cpp
Derek Schuffbc643132014-05-22 16:39:25 -0700307format:
Jim Stichnothdd842db2015-01-27 12:53:53 -0800308 $(LLVM_BIN_PATH)/clang-format -style=LLVM -i \
309 `find . -regex '.*\.\(c\|h\|cpp\)' $(FORMAT_BLACKLIST)`
Jim Stichnoth240e0f82014-07-09 16:53:40 -0700310
Jim Stichnoth240e0f82014-07-09 16:53:40 -0700311format-diff:
Jim Stichnoth206833c2014-08-07 10:58:05 -0700312 git diff -U0 `git merge-base HEAD master` | \
Jim Stichnothdd842db2015-01-27 12:53:53 -0800313 PATH=$(LLVM_BIN_PATH):$(PATH) \
314 $(LLVM_SRC_PATH)/../clang/tools/clang-format/clang-format-diff.py \
315 -p1 -style=LLVM -i
Derek Schuffbc643132014-05-22 16:39:25 -0700316
Jim Stichnoth307e3262015-02-12 16:10:37 -0800317bloat: make_symlink
Jim Stichnothfa0cfa52015-02-26 09:42:36 -0800318 nm -C -S -l pnacl-sz | \
319 bloat/bloat.py --nm-output=/dev/stdin syms > build/pnacl-sz.bloat.json
320 @echo See Subzero size breakdown in bloat/pnacl-sz.bloat.html
Jim Stichnoth307e3262015-02-12 16:10:37 -0800321
Derek Schuffbc643132014-05-22 16:39:25 -0700322clean:
Jan Voung44c3a802015-03-27 16:29:08 -0700323 rm -rf pnacl-sz *.o $(OBJDIR) $(SB_OBJDIR) build/pnacl-sz.bloat.json
Karl Schimpfb262c5e2014-10-27 14:41:57 -0700324
325clean-all: clean
326 rm -rf build/