Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Side by Side Diff: Makefile.standalone

Issue 1413033009: Subzero: Add a "make check-spec" target. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # The following variables will likely need to be modified, depending on where 1 # 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 2 # and how you built LLVM & Clang. They can be overridden in a command-line
3 # invocation of make, like: 3 # invocation of make, like:
4 # 4 #
5 # make LLVM_SRC_PATH=<path> LIBCXX_INSTALL_PATH=<path> CLANG_PATH=<path> \ 5 # make LLVM_SRC_PATH=<path> LIBCXX_INSTALL_PATH=<path> CLANG_PATH=<path> \
6 # PNACL_BIN_PATH=<path> ... 6 # PNACL_BIN_PATH=<path> ...
7 # 7 #
8 8
9 # LLVM_SRC_PATH is the path to the root of the checked out source code. This 9 # LLVM_SRC_PATH is the path to the root of the checked out source code. This
10 # directory should contain the configure script, the include/ and lib/ 10 # directory should contain the configure script, the include/ and lib/
11 # directories of LLVM, Clang in tools/clang/, etc. 11 # directories of LLVM, Clang in tools/clang/, etc.
12 # Alternatively, if you're building vs. a binary download of LLVM, then 12 # Alternatively, if you're building vs. a binary download of LLVM, then
13 # LLVM_SRC_PATH can point to the main untarred directory. 13 # LLVM_SRC_PATH can point to the main untarred directory.
14 LLVM_SRC_PATH ?= ../llvm 14 LLVM_SRC_PATH ?= ../llvm
15 15
16 # The x86-32-specific sandboxed translator directory. 16 # The x86-32-specific sandboxed translator directory.
17 # It holds sandboxed versions of libraries and binaries. 17 # It holds sandboxed versions of libraries and binaries.
18 SB_LLVM_PATH ?= $(shell readlink -e \ 18 SB_LLVM_PATH ?= $(shell readlink -e \
19 » ../../out/sandboxed_translators_work/translator-i686/llvm-sb/Release) 19 ../../out/sandboxed_translators_work/translator-i686/llvm-sb/Release)
20 20
21 # NACL_ROOT is the root of the native client repository. 21 # NACL_ROOT is the root of the native client repository.
22 NACL_ROOT ?= $(shell python -c "import sys; sys.path.insert(0, 'pydir'); \ 22 NACL_ROOT ?= $(shell python -c "import sys; sys.path.insert(0, 'pydir'); \
23 » import utils; print utils.FindBaseNaCl()") 23 import utils; print utils.FindBaseNaCl()")
24 24
25 # TOOLCHAIN_ROOT is the location of NaCl/PNaCl toolchains and other 25 # TOOLCHAIN_ROOT is the location of NaCl/PNaCl toolchains and other
26 # tools like qemu. 26 # tools like qemu.
27 TOOLCHAIN_ROOT ?= $(shell readlink -e $(NACL_ROOT)/toolchain/linux_x86) 27 TOOLCHAIN_ROOT ?= $(shell readlink -e $(NACL_ROOT)/toolchain/linux_x86)
28 28
29 # PNACL_TOOLCHAIN_ROOT is the location of the PNaCl toolchain. 29 # PNACL_TOOLCHAIN_ROOT is the location of the PNaCl toolchain.
30 # This is used as the default root for finding binutils, libcxx, etc. 30 # This is used as the default root for finding binutils, libcxx, etc.
31 PNACL_TOOLCHAIN_ROOT ?= $(shell readlink -e $(TOOLCHAIN_ROOT)/pnacl_newlib_raw) 31 PNACL_TOOLCHAIN_ROOT ?= $(shell readlink -e $(TOOLCHAIN_ROOT)/pnacl_newlib_raw)
32 32
33 # The location of PNaCl tools (e.g., binutils objdump, pnacl-clang++, etc.). 33 # The location of PNaCl tools (e.g., binutils objdump, pnacl-clang++, etc.).
34 PNACL_BIN_PATH ?= $(shell readlink -e $(PNACL_TOOLCHAIN_ROOT)/bin) 34 PNACL_BIN_PATH ?= $(shell readlink -e $(PNACL_TOOLCHAIN_ROOT)/bin)
35 35
36 # Hack to auto-detect autoconf versus cmake build of LLVM. If the LLVM tools 36 # Hack to auto-detect autoconf versus cmake build of LLVM. If the LLVM tools
37 # were dynamically linked with something like libLLVM-3.7svn.so, it is an 37 # were dynamically linked with something like libLLVM-3.7svn.so, it is an
38 # autoconf build, otherwise it is a cmake build. AUTOCONF is set to 0 for 38 # autoconf build, otherwise it is a cmake build. AUTOCONF is set to 0 for
39 # cmake, nonzero for autoconf. 39 # cmake, nonzero for autoconf.
40 AUTOCONF ?= $(shell ldd $(PNACL_BIN_PATH)/opt | grep -c libLLVM-) 40 AUTOCONF ?= $(shell ldd $(PNACL_BIN_PATH)/opt | grep -c libLLVM-)
41 41
42 # CLANG_PATH is the location of the clang compiler to use for building 42 # CLANG_PATH is the location of the clang compiler to use for building
43 # the host binaries. 43 # the host binaries.
44 CLANG_PATH ?= $(shell readlink -e \ 44 CLANG_PATH ?= $(shell readlink -e \
45 » $(NACL_ROOT)/../third_party/llvm-build/Release+Asserts/bin) 45 $(NACL_ROOT)/../third_party/llvm-build/Release+Asserts/bin)
46 46
47 # LIBCXX_INSTALL_PATH is the directory where libc++ is located. It should 47 # LIBCXX_INSTALL_PATH is the directory where libc++ is located. It should
48 # contain header files and corresponding libraries. This is used for 48 # contain header files and corresponding libraries. This is used for
49 # building the host binaries in conjuction with clang. 49 # building the host binaries in conjuction with clang.
50 LIBCXX_INSTALL_PATH ?= $(PNACL_TOOLCHAIN_ROOT) 50 LIBCXX_INSTALL_PATH ?= $(PNACL_TOOLCHAIN_ROOT)
51 STDLIB_FLAGS := -stdlib=libc++ -I$(LIBCXX_INSTALL_PATH)/include/c++/v1 51 STDLIB_FLAGS := -stdlib=libc++ -I$(LIBCXX_INSTALL_PATH)/include/c++/v1
52 52
53 HOST_ARCH ?= x86_64 53 HOST_ARCH ?= x86_64
54 ifeq ($(HOST_ARCH),x86_64) 54 ifeq ($(HOST_ARCH),x86_64)
55 HOST_FLAGS = -m64 55 HOST_FLAGS = -m64
(...skipping 15 matching lines...) Expand all
71 71
72 # The list of CXX defines that are dependent on build parameters. 72 # The list of CXX defines that are dependent on build parameters.
73 BASE_CXX_DEFINES = 73 BASE_CXX_DEFINES =
74 CXX_EXTRA = 74 CXX_EXTRA =
75 LD_EXTRA = 75 LD_EXTRA =
76 76
77 ifdef MINIMAL 77 ifdef MINIMAL
78 NOASSERT = 1 78 NOASSERT = 1
79 OBJDIR := $(OBJDIR)+Min 79 OBJDIR := $(OBJDIR)+Min
80 BASE_CXX_DEFINES += -DALLOW_DUMP=0 -DALLOW_LLVM_CL=0 -DALLOW_LLVM_IR=0 \ 80 BASE_CXX_DEFINES += -DALLOW_DUMP=0 -DALLOW_LLVM_CL=0 -DALLOW_LLVM_IR=0 \
81 » -DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_DISABLE_IR_GEN=0 \ 81 -DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_DISABLE_IR_GEN=0 \
82 -DALLOW_MINIMAL_BUILD=1 82 -DALLOW_MINIMAL_BUILD=1
83 else 83 else
84 BASE_CXX_DEFINES += -DALLOW_DUMP=1 -DALLOW_LLVM_CL=1 -DALLOW_LLVM_IR=1 \ 84 BASE_CXX_DEFINES += -DALLOW_DUMP=1 -DALLOW_LLVM_CL=1 -DALLOW_LLVM_IR=1 \
85 » -DALLOW_LLVM_IR_AS_INPUT=1 -DALLOW_DISABLE_IR_GEN=1 \ 85 -DALLOW_LLVM_IR_AS_INPUT=1 -DALLOW_DISABLE_IR_GEN=1 \
86 -DALLOW_MINIMAL_BUILD=0 86 -DALLOW_MINIMAL_BUILD=0
87 endif 87 endif
88 88
89 SB_CXX_DEFINES := $(BASE_CXX_DEFINES) -DPNACL_BROWSER_TRANSLATOR=1 89 SB_CXX_DEFINES := $(BASE_CXX_DEFINES) -DPNACL_BROWSER_TRANSLATOR=1
90 CXX_DEFINES := $(BASE_CXX_DEFINES) -DPNACL_BROWSER_TRANSLATOR=0 90 CXX_DEFINES := $(BASE_CXX_DEFINES) -DPNACL_BROWSER_TRANSLATOR=0
91 91
92 ifdef NOASSERT 92 ifdef NOASSERT
93 ASSERTIONS = -DNDEBUG 93 ASSERTIONS = -DNDEBUG
94 else 94 else
95 ASSERTIONS = 95 ASSERTIONS =
96 OBJDIR := $(OBJDIR)+Asserts 96 OBJDIR := $(OBJDIR)+Asserts
97 endif 97 endif
98 98
99 ifdef UBSAN 99 ifdef UBSAN
100 OBJDIR := $(OBJDIR)+UBSan 100 OBJDIR := $(OBJDIR)+UBSan
101 CXX_EXTRA += -fsanitize=undefined -fno-sanitize=vptr -fno-sanitize=nonnull-att ribute 101 CXX_EXTRA += -fsanitize=undefined -fno-sanitize=vptr \
102 -fno-sanitize=nonnull-attribute
102 LD_EXTRA += -fsanitize=undefined 103 LD_EXTRA += -fsanitize=undefined
103 endif 104 endif
104 105
105 ifdef UBSAN_TRAP 106 ifdef UBSAN_TRAP
106 OBJDIR := $(OBJDIR)+UBSan_Trap 107 OBJDIR := $(OBJDIR)+UBSan_Trap
107 CXX_EXTRA += -fsanitize=undefined-trap -fsanitize-undefined-trap-on-error -fno -sanitize=vptr -fno-sanitize=nonnull-attribute 108 CXX_EXTRA += -fsanitize=undefined-trap -fsanitize-undefined-trap-on-error \
109 -fno-sanitize=vptr -fno-sanitize=nonnull-attribute
108 LD_EXTRA += -fsanitize=undefined-trap 110 LD_EXTRA += -fsanitize=undefined-trap
109 endif 111 endif
110 112
111 ifdef TSAN 113 ifdef TSAN
112 OBJDIR := $(OBJDIR)+TSan 114 OBJDIR := $(OBJDIR)+TSan
113 CXX_EXTRA += -fsanitize=thread 115 CXX_EXTRA += -fsanitize=thread
114 LD_EXTRA += -fsanitize=thread 116 LD_EXTRA += -fsanitize=thread
115 endif 117 endif
116 118
117 ifdef ASAN 119 ifdef ASAN
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 177
176 CCACHE := `command -v ccache` 178 CCACHE := `command -v ccache`
177 CXX := CCACHE_CPP2=yes $(CCACHE) $(CLANG_PATH)/clang++ 179 CXX := CCACHE_CPP2=yes $(CCACHE) $(CLANG_PATH)/clang++
178 SB_CXX := CCACHE_CPP2=yes $(CCACHE) $(PNACL_BIN_PATH)/pnacl-clang++ 180 SB_CXX := CCACHE_CPP2=yes $(CCACHE) $(PNACL_BIN_PATH)/pnacl-clang++
179 SB_TRANSLATE := $(PNACL_BIN_PATH)/pnacl-translate 181 SB_TRANSLATE := $(PNACL_BIN_PATH)/pnacl-translate
180 182
181 # Extra warnings that LLVM's build system adds in addition to -Wall. 183 # Extra warnings that LLVM's build system adds in addition to -Wall.
182 LLVM_EXTRA_WARNINGS := -Wcovered-switch-default 184 LLVM_EXTRA_WARNINGS := -Wcovered-switch-default
183 185
184 BASE_CXXFLAGS := -std=gnu++11 -Wall -Wextra -Werror -fno-rtti \ 186 BASE_CXXFLAGS := -std=gnu++11 -Wall -Wextra -Werror -fno-rtti \
185 » -fno-exceptions $(OPTLEVEL) $(ASSERTIONS) -g -pedantic \ 187 -fno-exceptions $(OPTLEVEL) $(ASSERTIONS) -g -pedantic \
186 » $(LLVM_EXTRA_WARNINGS) $(CXX_EXTRA) 188 $(LLVM_EXTRA_WARNINGS) $(CXX_EXTRA)
187 189
188 CXXFLAGS := $(LLVM_CXXFLAGS) $(BASE_CXXFLAGS) $(CXX_DEFINES) $(HOST_FLAGS) \ 190 CXXFLAGS := $(LLVM_CXXFLAGS) $(BASE_CXXFLAGS) $(CXX_DEFINES) $(HOST_FLAGS) \
189 » $(STDLIB_FLAGS) 191 $(STDLIB_FLAGS)
190 SB_CXXFLAGS := $(SB_LLVM_CXXFLAGS) $(BASE_CXXFLAGS) $(SB_CXX_DEFINES) 192 SB_CXXFLAGS := $(SB_LLVM_CXXFLAGS) $(BASE_CXXFLAGS) $(SB_CXX_DEFINES)
191 193
192 LDFLAGS := $(HOST_FLAGS) -L$(LIBCXX_INSTALL_PATH)/lib -Wl,--gc-sections \ 194 LDFLAGS := $(HOST_FLAGS) -L$(LIBCXX_INSTALL_PATH)/lib -Wl,--gc-sections \
193 » $(LD_EXTRA) $(STDLIB_FLAGS) 195 $(LD_EXTRA) $(STDLIB_FLAGS)
194 # Not specifying -Wl,--gc-sections but instead doing bitcode linking GC w/ LTO. 196 # Not specifying -Wl,--gc-sections but instead doing bitcode linking GC w/ LTO.
195 SB_LDFLAGS := $(LINKOPTLEVEL) $(LD_EXTRA) 197 SB_LDFLAGS := $(LINKOPTLEVEL) $(LD_EXTRA)
196 198
197 SRCS = \ 199 SRCS = \
198 » IceAssembler.cpp \ 200 IceAssembler.cpp \
199 » IceAssemblerARM32.cpp \ 201 IceAssemblerARM32.cpp \
200 » IceBrowserCompileServer.cpp \ 202 IceBrowserCompileServer.cpp \
201 » IceCfg.cpp \ 203 IceCfg.cpp \
202 » IceCfgNode.cpp \ 204 IceCfgNode.cpp \
203 » IceClFlags.cpp \ 205 IceClFlags.cpp \
204 » IceCompiler.cpp \ 206 IceCompiler.cpp \
205 » IceCompileServer.cpp \ 207 IceCompileServer.cpp \
206 » IceELFObjectWriter.cpp \ 208 IceELFObjectWriter.cpp \
207 » IceELFSection.cpp \ 209 IceELFSection.cpp \
208 » IceFixups.cpp \ 210 IceFixups.cpp \
209 » IceGlobalContext.cpp \ 211 IceGlobalContext.cpp \
210 » IceGlobalInits.cpp \ 212 IceGlobalInits.cpp \
211 » IceInst.cpp \ 213 IceInst.cpp \
212 » IceInstARM32.cpp \ 214 IceInstARM32.cpp \
213 » IceInstMIPS32.cpp \ 215 IceInstMIPS32.cpp \
214 » IceInstX8632.cpp \ 216 IceInstX8632.cpp \
215 » IceInstX8664.cpp \ 217 IceInstX8664.cpp \
216 » IceIntrinsics.cpp \ 218 IceIntrinsics.cpp \
217 » IceLiveness.cpp \ 219 IceLiveness.cpp \
218 » IceLoopAnalyzer.cpp \ 220 IceLoopAnalyzer.cpp \
219 » IceOperand.cpp \ 221 IceOperand.cpp \
220 » IceRegAlloc.cpp \ 222 IceRegAlloc.cpp \
221 » IceRNG.cpp \ 223 IceRNG.cpp \
222 » IceSwitchLowering.cpp \ 224 IceSwitchLowering.cpp \
223 » IceTargetLowering.cpp \ 225 IceTargetLowering.cpp \
224 » IceTargetLoweringARM32.cpp \ 226 IceTargetLoweringARM32.cpp \
225 » IceTargetLoweringMIPS32.cpp \ 227 IceTargetLoweringMIPS32.cpp \
226 » IceTargetLoweringX8632.cpp \ 228 IceTargetLoweringX8632.cpp \
227 » IceTargetLoweringX8664.cpp \ 229 IceTargetLoweringX8664.cpp \
228 » IceThreading.cpp \ 230 IceThreading.cpp \
229 » IceTimerTree.cpp \ 231 IceTimerTree.cpp \
230 » IceTranslator.cpp \ 232 IceTranslator.cpp \
231 » IceTypes.cpp \ 233 IceTypes.cpp \
232 » main.cpp \ 234 main.cpp \
233 » PNaClTranslator.cpp 235 PNaClTranslator.cpp
234 236
235 ifndef MINIMAL 237 ifndef MINIMAL
236 SRCS += IceConverter.cpp \ 238 SRCS += \
237 » IceTypeConverter.cpp 239 IceConverter.cpp \
240 IceTypeConverter.cpp
238 endif 241 endif
239 242
240 OBJS=$(patsubst %.cpp, $(OBJDIR)/%.o, $(SRCS)) 243 OBJS=$(patsubst %.cpp, $(OBJDIR)/%.o, $(SRCS))
241 SB_OBJS=$(patsubst %.cpp, $(SB_OBJDIR)/%.o, $(SRCS)) 244 SB_OBJS=$(patsubst %.cpp, $(SB_OBJDIR)/%.o, $(SRCS))
242 245
243 UNITTEST_SRCS = \ 246 UNITTEST_SRCS = \
244 » BitcodeMunge.cpp \ 247 BitcodeMunge.cpp \
245 » IceELFSectionTest.cpp \ 248 IceELFSectionTest.cpp \
246 » IceParseInstsTest.cpp 249 IceParseInstsTest.cpp
247 250
248 # The X86 assembler tests take too long to compile. Given how infrequently the 251 # The X86 assembler tests take too long to compile. Given how infrequently the
249 # assembler will change, we disable them. 252 # assembler will change, we disable them.
250 ifdef CHECK_X86_ASM 253 ifdef CHECK_X86_ASM
251 ifndef DEBUG 254 ifndef DEBUG
252 $(error Run check-unit with DEBUG=1 lest your machine perish) 255 $(error Run check-unit with DEBUG=1 lest your machine perish)
253 endif 256 endif
254 UNITTEST_SRCS += AssemblerX8632/LowLevel.cpp \ 257 UNITTEST_SRCS += AssemblerX8632/LowLevel.cpp \
255 AssemblerX8632/DataMov.cpp \ 258 AssemblerX8632/DataMov.cpp \
256 AssemblerX8632/Locked.cpp \ 259 AssemblerX8632/Locked.cpp \
257 AssemblerX8632/GPRArith.cpp \ 260 AssemblerX8632/GPRArith.cpp \
258 AssemblerX8632/XmmArith.cpp \ 261 AssemblerX8632/XmmArith.cpp \
259 AssemblerX8632/ControlFlow.cpp \ 262 AssemblerX8632/ControlFlow.cpp \
260 AssemblerX8632/Other.cpp \ 263 AssemblerX8632/Other.cpp \
261 AssemblerX8632/X87.cpp \ 264 AssemblerX8632/X87.cpp \
262 AssemblerX8664/LowLevel.cpp \ 265 AssemblerX8664/LowLevel.cpp \
263 AssemblerX8664/DataMov.cpp \ 266 AssemblerX8664/DataMov.cpp \
264 AssemblerX8664/Locked.cpp \ 267 AssemblerX8664/Locked.cpp \
265 AssemblerX8664/GPRArith.cpp \ 268 AssemblerX8664/GPRArith.cpp \
266 AssemblerX8664/XmmArith.cpp \ 269 AssemblerX8664/XmmArith.cpp \
267 AssemblerX8664/ControlFlow.cpp \ 270 AssemblerX8664/ControlFlow.cpp \
268 AssemblerX8664/Other.cpp 271 AssemblerX8664/Other.cpp
269 endif 272 endif
270 273
271 UNITTEST_OBJS = $(patsubst %.cpp, $(OBJDIR)/unittest/%.o, $(UNITTEST_SRCS)) 274 UNITTEST_OBJS = $(patsubst %.cpp, $(OBJDIR)/unittest/%.o, $(UNITTEST_SRCS))
272 UNITTEST_LIB_OBJS = $(filter-out $(OBJDIR)/main.o,$(OBJS)) 275 UNITTEST_LIB_OBJS = $(filter-out $(OBJDIR)/main.o,$(OBJS))
273 276
274 # Keep all the first target so it's the default. 277 # Keep all the first target so it's the default.
275 all: $(OBJDIR)/pnacl-sz make_symlink runtime 278 all: $(OBJDIR)/pnacl-sz make_symlink runtime
276 279
277 ifdef TSAN 280 ifdef TSAN
278 sb: 281 sb:
(...skipping 12 matching lines...) Expand all
291 make_symlink: $(OBJDIR)/pnacl-sz 294 make_symlink: $(OBJDIR)/pnacl-sz
292 rm -rf pnacl-sz 295 rm -rf pnacl-sz
293 ln -s $(OBJDIR)/pnacl-sz 296 ln -s $(OBJDIR)/pnacl-sz
294 @echo "Build Attributes:" 297 @echo "Build Attributes:"
295 @$(SHOW_BUILD_ATTS) 298 @$(SHOW_BUILD_ATTS)
296 299
297 .PHONY: all make_symlink runtime bloat sb docs 300 .PHONY: all make_symlink runtime bloat sb docs
298 301
299 $(OBJDIR)/pnacl-sz: $(OBJS) 302 $(OBJDIR)/pnacl-sz: $(OBJS)
300 $(CXX) $(LDFLAGS) -o $@ $^ $(LLVM_LDFLAGS) \ 303 $(CXX) $(LDFLAGS) -o $@ $^ $(LLVM_LDFLAGS) \
301 -Wl,-rpath=$(abspath $(LIBCXX_INSTALL_PATH)/lib) 304 -Wl,-rpath=$(abspath $(LIBCXX_INSTALL_PATH)/lib)
302 305
303 $(SB_OBJDIR)/pnacl-sz.x86-32.nexe: $(SB_OBJS) 306 $(SB_OBJDIR)/pnacl-sz.x86-32.nexe: $(SB_OBJS)
304 $(eval PNACL_SZ_BASE := $(patsubst %.nexe, %, $@)) 307 $(eval PNACL_SZ_BASE := $(patsubst %.nexe, %, $@))
305 $(SB_CXX) $(SB_LDFLAGS) -o $(PNACL_SZ_BASE).nonfinal.pexe $^ \ 308 $(SB_CXX) $(SB_LDFLAGS) -o $(PNACL_SZ_BASE).nonfinal.pexe $^ \
306 » » $(SB_LLVM_LDFLAGS) 309 $(SB_LLVM_LDFLAGS)
307 $(SB_TRANSLATE) -arch x86-32 $(PNACL_SZ_BASE).nonfinal.pexe -o $@ \ 310 $(SB_TRANSLATE) -arch x86-32 $(PNACL_SZ_BASE).nonfinal.pexe -o $@ \
308 » » --allow-llvm-bitcode-input 311 --allow-llvm-bitcode-input
309 312
310 # TODO(stichnot): Be more precise than "*.h" here and elsewhere. 313 # TODO(stichnot): Be more precise than "*.h" here and elsewhere.
311 $(OBJS): $(OBJDIR)/%.o: src/%.cpp src/*.h src/*.def 314 $(OBJS): $(OBJDIR)/%.o: src/%.cpp src/*.h src/*.def
312 $(CXX) -c $(CXXFLAGS) $< -o $@ 315 $(CXX) -c $(CXXFLAGS) $< -o $@
313 316
314 $(SB_OBJS): $(SB_OBJDIR)/%.o: src/%.cpp src/*.h src/*.def 317 $(SB_OBJS): $(SB_OBJDIR)/%.o: src/%.cpp src/*.h src/*.def
315 $(SB_CXX) -c $(SB_CXXFLAGS) $< -o $@ 318 $(SB_CXX) -c $(SB_CXXFLAGS) $< -o $@
316 319
317 $(OBJDIR)/run_unittests: $(UNITTEST_OBJS) $(UNITTEST_LIB_OBJS) 320 $(OBJDIR)/run_unittests: $(UNITTEST_OBJS) $(UNITTEST_LIB_OBJS)
318 $(CXX) $(GTEST_LIB_PATH) $(LDFLAGS) -o $@ $^ $(LLVM_LDFLAGS) \ 321 $(CXX) $(GTEST_LIB_PATH) $(LDFLAGS) -o $@ $^ $(LLVM_LDFLAGS) \
319 -lgtest -lgtest_main -ldl \ 322 -lgtest -lgtest_main -ldl \
320 -Wl,-rpath=$(abspath $(LIBCXX_INSTALL_PATH)/lib) 323 -Wl,-rpath=$(abspath $(LIBCXX_INSTALL_PATH)/lib)
321 324
322 $(UNITTEST_OBJS): $(OBJDIR)/unittest/%.o: unittest/%.cpp \ 325 $(UNITTEST_OBJS): $(OBJDIR)/unittest/%.o: unittest/%.cpp unittest/*.h \
323 » » unittest/*.h src/*.h src/*.def 326 src/*.h src/*.def
324 $(CXX) -c $(CXXFLAGS) \ 327 $(CXX) -c $(CXXFLAGS) \
325 » » -Isrc/ \ 328 -Isrc/ \
326 -Iunittest/ \ 329 -Iunittest/ \
327 » » -I$(LLVM_SRC_PATH)/utils/unittest/googletest/include \ 330 -I$(LLVM_SRC_PATH)/utils/unittest/googletest/include \
328 » » -I$(LLVM_SRC_PATH) \ 331 -I$(LLVM_SRC_PATH) \
329 » » -DGTEST_HAS_RTTI=0 -DGTEST_USE_OWN_TR1_TUPLE \ 332 -DGTEST_HAS_RTTI=0 -DGTEST_USE_OWN_TR1_TUPLE \
330 » » $< -o $@ 333 $< -o $@
331 334
332 $(OBJS): | $(OBJDIR) 335 $(OBJS): | $(OBJDIR)
333 $(SB_OBJS): | $(SB_OBJDIR) 336 $(SB_OBJS): | $(SB_OBJDIR)
334 337
335 $(UNITTEST_OBJS): | $(OBJDIR)/unittest $(OBJDIR)/unittest/AssemblerX8632 $(OBJDI R)/unittest/AssemblerX8664 338 $(UNITTEST_OBJS): | $(OBJDIR)/unittest $(OBJDIR)/unittest/AssemblerX8632 \
339 $(OBJDIR)/unittest/AssemblerX8664
336 340
337 $(OBJDIR): 341 $(OBJDIR):
338 @mkdir -p $@ 342 @mkdir -p $@
339 $(SB_OBJDIR): 343 $(SB_OBJDIR):
340 @mkdir -p $@ 344 @mkdir -p $@
341 345
342 $(OBJDIR)/unittest: $(OBJDIR) 346 $(OBJDIR)/unittest: $(OBJDIR)
343 @mkdir -p $@ 347 @mkdir -p $@
344 348
345 $(OBJDIR)/unittest/AssemblerX8632: $(OBJDIR)/unittest 349 $(OBJDIR)/unittest/AssemblerX8632: $(OBJDIR)/unittest
346 @mkdir -p $@ 350 @mkdir -p $@
347 $(OBJDIR)/unittest/AssemblerX8664: $(OBJDIR)/unittest 351 $(OBJDIR)/unittest/AssemblerX8664: $(OBJDIR)/unittest
348 @mkdir -p $@ 352 @mkdir -p $@
349 353
350 RT_SRC := runtime/szrt.c runtime/szrt_ll.ll runtime/szrt_profiler.c 354 RT_SRC := runtime/szrt.c runtime/szrt_ll.ll runtime/szrt_profiler.c
351 RT_OBJ := build/runtime/szrt_native_x8632.o build/runtime/szrt_sb_x8632.o \ 355 RT_OBJ := build/runtime/szrt_native_x8632.o build/runtime/szrt_sb_x8632.o \
352 » build/runtime/szrt_native_x8664.o build/runtime/szrt_sb_x8664.o \ 356 build/runtime/szrt_native_x8664.o build/runtime/szrt_sb_x8664.o \
353 » build/runtime/szrt_native_arm32.o build/runtime/szrt_sb_arm32.o 357 build/runtime/szrt_native_arm32.o build/runtime/szrt_sb_arm32.o
354 358
355 runtime: $(RT_OBJ) 359 runtime: $(RT_OBJ)
356 360
357 # Use runtime.is.built so that build-runtime.py is invoked only once 361 # Use runtime.is.built so that build-runtime.py is invoked only once
358 # even in a parallel build. 362 # even in a parallel build.
359 .INTERMEDIATE: runtime.is.built 363 .INTERMEDIATE: runtime.is.built
360 $(RT_OBJ): runtime.is.built 364 $(RT_OBJ): runtime.is.built
361 runtime.is.built: $(RT_SRC) pydir/build-runtime.py 365 runtime.is.built: $(RT_SRC) pydir/build-runtime.py
362 @echo ================ Building Subzero runtime ================ 366 @echo ================ Building Subzero runtime ================
363 ./pydir/build-runtime.py -v --pnacl-root $(PNACL_TOOLCHAIN_ROOT) 367 ./pydir/build-runtime.py -v --pnacl-root $(PNACL_TOOLCHAIN_ROOT)
364 368
365 check-lit: $(OBJDIR)/pnacl-sz make_symlink 369 check-lit: $(OBJDIR)/pnacl-sz make_symlink
366 PNACL_BIN_PATH=$(PNACL_BIN_PATH) \ 370 PNACL_BIN_PATH=$(PNACL_BIN_PATH) \
367 $(LLVM_SRC_PATH)/utils/lit/lit.py -sv tests_lit 371 $(LLVM_SRC_PATH)/utils/lit/lit.py -sv tests_lit
368 372
369 ifdef MINIMAL 373 ifdef MINIMAL
370 check-xtest: $(OBJDIR)/pnacl-sz make_symlink runtime 374 check-xtest: $(OBJDIR)/pnacl-sz make_symlink runtime
371 @echo "Crosstests disabled, minimal build" 375 @echo "Crosstests disabled, minimal build"
372 else 376 else
373 check-xtest: $(OBJDIR)/pnacl-sz make_symlink runtime 377 check-xtest: $(OBJDIR)/pnacl-sz make_symlink runtime
374 # Do all native/sse2 tests, but only test_vector_ops for native/sse4.1. 378 # Do all native/sse2 tests, but only test_vector_ops for native/sse4.1.
375 # For (slow) sandboxed tests, limit to Om1/sse4.1. 379 # For (slow) sandboxed tests, limit to Om1/sse4.1.
376 # TODO(jpp): implement x8664 sandbox, then enable xtests. 380 # TODO(jpp): implement x8664 sandbox, then enable xtests.
377 # TODO(jpp): reenable the x86-64 tests. 381 # TODO(jpp): reenable the x86-64 tests.
378 ./pydir/crosstest_generator.py -v --lit \ 382 ./pydir/crosstest_generator.py -v --lit \
379 » --toolchain-root $(TOOLCHAIN_ROOT) \ 383 --toolchain-root $(TOOLCHAIN_ROOT) \
380 » -i x8632,native,sse2 \ 384 -i x8632,native,sse2 \
381 » -i x8632,native,sse4.1,test_vector_ops \ 385 -i x8632,native,sse4.1,test_vector_ops \
382 » -i x8632,sandbox,sse4.1,Om1 \ 386 -i x8632,sandbox,sse4.1,Om1 \
383 » -e x8664,native,sse2 \ 387 -e x8664,native,sse2 \
384 » -e x8664,native,sse4.1,test_vector_ops \ 388 -e x8664,native,sse4.1,test_vector_ops \
385 » -e x8664,native,sse2,test_global \ 389 -e x8664,native,sse2,test_global \
386 » -i arm32,native,neon \ 390 -i arm32,native,neon \
387 » -e arm32,native,neon,test_vector_ops \ 391 -e arm32,native,neon,test_vector_ops \
388 » -e arm32,native,neon,test_select 392 -e arm32,native,neon,test_select
389 PNACL_BIN_PATH=$(PNACL_BIN_PATH) \ 393 PNACL_BIN_PATH=$(PNACL_BIN_PATH) \
390 $(LLVM_SRC_PATH)/utils/lit/lit.py -sv crosstest/Output 394 $(LLVM_SRC_PATH)/utils/lit/lit.py -sv crosstest/Output
391 endif 395 endif
392 396
393 check-unit: $(OBJDIR)/run_unittests 397 check-unit: $(OBJDIR)/run_unittests
394 $(OBJDIR)/run_unittests 398 $(OBJDIR)/run_unittests
395 399
400 ALLSPEC := 177.mesa 179.art 183.equake 188.ammp 164.gzip 175.vpr 176.gcc \
401 181.mcf 186.crafty 197.parser 253.perlbmk 254.gap 255.vortex \
402 256.bzip2 300.twolf 252.eon
403 .PHONY: $(ALLSPEC)
404
405 TARGET := x8632
406 ifeq ($(TARGET),x8632)
407 TARGETFLAG=x8632
408 SETUP=SetupGccX8632Opt
409 SPEC := -O2 --filetype=obj
410 endif
411 ifeq ($(TARGET),arm32)
412 TARGETFLAG=arm32
413 SETUP=SetupGccArmOpt
414 SPEC := -O2 --filetype=asm
415 endif
416
417 %.spec2k: %
418 ./pydir/szbuild_spec2k.py -v --force --target=$(TARGETFLAG) $(SPEC) $<
419 ( cd ../../../tests/spec2k; \
420 ./run_all.sh RunTimedBenchmarks $(SETUP) train $< )
421
422 check-spec: $(OBJDIR)/pnacl-sz make_symlink $(ALLSPEC:=.spec2k)
423
396 check: check-lit check-unit check-xtest 424 check: check-lit check-unit check-xtest
397 425
398 FORMAT_BLACKLIST = 426 FORMAT_BLACKLIST =
399 # Add one of the following lines for each source file to ignore. 427 # Add one of the following lines for each source file to ignore.
400 FORMAT_BLACKLIST += ! -name IceParseInstsTest.cpp 428 FORMAT_BLACKLIST += ! -name IceParseInstsTest.cpp
401 FORMAT_BLACKLIST += ! -name IceParseTypesTest.cpp 429 FORMAT_BLACKLIST += ! -name IceParseTypesTest.cpp
402 FORMAT_BLACKLIST += ! -name assembler_arm.h 430 FORMAT_BLACKLIST += ! -name assembler_arm.h
403 FORMAT_BLACKLIST += ! -name assembler_arm.cc 431 FORMAT_BLACKLIST += ! -name assembler_arm.cc
404 format: 432 format:
405 $(CLANG_FORMAT_PATH)/clang-format -style=LLVM -i \ 433 $(CLANG_FORMAT_PATH)/clang-format -style=LLVM -i \
406 » `find . -regex '.*\.\(c\|h\|cpp\)' $(FORMAT_BLACKLIST)` 434 `find . -regex '.*\.\(c\|h\|cpp\)' $(FORMAT_BLACKLIST)`
407 435
408 format-diff: 436 format-diff:
409 git diff -U0 `git merge-base HEAD master` | \ 437 git diff -U0 `git merge-base HEAD master` | \
410 » PATH=$(PNACL_BIN_PATH):$(PATH) \ 438 PATH=$(PNACL_BIN_PATH):$(PATH) \
411 » $(LLVM_SRC_PATH)/../clang/tools/clang-format/clang-format-diff.py \ 439 $(LLVM_SRC_PATH)/../clang/tools/clang-format/clang-format-diff.py \
412 » -p1 -style=LLVM -i 440 -p1 -style=LLVM -i
413 441
414 bloat: make_symlink 442 bloat: make_symlink
415 nm -C -S -l pnacl-sz | \ 443 nm -C -S -l pnacl-sz | \
416 » bloat/bloat.py --nm-output=/dev/stdin syms > build/pnacl-sz.bloat.json 444 bloat/bloat.py --nm-output=/dev/stdin syms > build/pnacl-sz.bloat.json
417 @echo See Subzero size breakdown in bloat/pnacl-sz.bloat.html 445 @echo See Subzero size breakdown in bloat/pnacl-sz.bloat.html
418 446
419 docs: 447 docs:
420 doxygen Doxyfile 448 doxygen Doxyfile
421 @echo See file://`pwd`/docs/html/index.html 449 @echo See file://`pwd`/docs/html/index.html
422 450
423 clean: 451 clean:
424 rm -rf pnacl-sz *.o $(OBJDIR) $(SB_OBJDIR) build/pnacl-sz.bloat.json 452 rm -rf pnacl-sz *.o $(OBJDIR) $(SB_OBJDIR) build/pnacl-sz.bloat.json
425 453
426 clean-all: clean 454 clean-all: clean
427 rm -rf build/ docs/ 455 rm -rf build/ docs/
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698