OLD | NEW |
---|---|
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/ |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
85 ifdef MINIMAL | 85 ifdef MINIMAL |
86 NOASSERT = 1 | 86 NOASSERT = 1 |
87 OBJDIR := $(OBJDIR)+Min | 87 OBJDIR := $(OBJDIR)+Min |
88 BASE_CXX_DEFINES += -DALLOW_DUMP=0 -DALLOW_LLVM_CL=0 -DALLOW_LLVM_IR=0 \ | 88 BASE_CXX_DEFINES += -DALLOW_DUMP=0 -DALLOW_LLVM_CL=0 -DALLOW_LLVM_IR=0 \ |
89 -DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_MINIMAL_BUILD=1 | 89 -DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_MINIMAL_BUILD=1 |
90 else | 90 else |
91 BASE_CXX_DEFINES += -DALLOW_DUMP=1 -DALLOW_LLVM_CL=1 -DALLOW_LLVM_IR=1 \ | 91 BASE_CXX_DEFINES += -DALLOW_DUMP=1 -DALLOW_LLVM_CL=1 -DALLOW_LLVM_IR=1 \ |
92 -DALLOW_LLVM_IR_AS_INPUT=1 -DALLOW_MINIMAL_BUILD=0 | 92 -DALLOW_LLVM_IR_AS_INPUT=1 -DALLOW_MINIMAL_BUILD=0 |
93 endif | 93 endif |
94 | 94 |
95 SB_CXX_DEFINES := $(BASE_CXX_DEFINES) -DPNACL_BROWSER_TRANSLATOR=1 | 95 # TODO(stichnot): Also work up a -DPNACL_BROWSER_TRANSLATOR=1 version of a |
96 # sandboxed translator. | |
97 SB_CXX_DEFINES := $(BASE_CXX_DEFINES) -DPNACL_BROWSER_TRANSLATOR=0 | |
96 CXX_DEFINES := $(BASE_CXX_DEFINES) -DPNACL_BROWSER_TRANSLATOR=0 | 98 CXX_DEFINES := $(BASE_CXX_DEFINES) -DPNACL_BROWSER_TRANSLATOR=0 |
97 | 99 |
98 ifdef NOASSERT | 100 ifdef NOASSERT |
99 ASSERTIONS = -DNDEBUG | 101 ASSERTIONS = -DNDEBUG |
100 else | 102 else |
101 ASSERTIONS = | 103 ASSERTIONS = |
102 OBJDIR := $(OBJDIR)+Asserts | 104 OBJDIR := $(OBJDIR)+Asserts |
103 endif | 105 endif |
104 | 106 |
105 ifdef UBSAN | 107 ifdef UBSAN |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
189 else | 191 else |
190 # LLVM autoconf build | 192 # LLVM autoconf build |
191 LLVM_LIBS := -lLLVM-3.7svn | 193 LLVM_LIBS := -lLLVM-3.7svn |
192 GTEST_LIB_PATH ?= -L../../out/llvm_x86_64_linux_work/Release+Asserts/lib | 194 GTEST_LIB_PATH ?= -L../../out/llvm_x86_64_linux_work/Release+Asserts/lib |
193 CLANG_FORMAT_PATH ?= ../../out/llvm_x86_64_linux_work/Release+Asserts/bin | 195 CLANG_FORMAT_PATH ?= ../../out/llvm_x86_64_linux_work/Release+Asserts/bin |
194 endif | 196 endif |
195 | 197 |
196 LLVM_LDFLAGS := $(LLVM_LIBS) \ | 198 LLVM_LDFLAGS := $(LLVM_LIBS) \ |
197 `$(PNACL_BIN_PATH)/llvm-config --ldflags` \ | 199 `$(PNACL_BIN_PATH)/llvm-config --ldflags` \ |
198 `$(PNACL_BIN_PATH)/llvm-config --system-libs` | 200 `$(PNACL_BIN_PATH)/llvm-config --system-libs` |
199 SB_LLVM_LDFLAGS := $(LLVM_LIBS_LIST) \ | 201 SB_LLVM_LDFLAGS := -Wl,--start-group $(LLVM_LIBS_LIST) -Wl,--end-group \ |
200 -L$(SB_LLVM_PATH)/lib | 202 -L$(SB_LLVM_PATH)/lib |
201 | 203 |
202 CCACHE := `command -v ccache` | 204 CCACHE := `command -v ccache` |
203 CXX := CCACHE_CPP2=yes $(CCACHE) $(CLANG_PATH)/clang++ | 205 CXX := CCACHE_CPP2=yes $(CCACHE) $(CLANG_PATH)/clang++ |
204 SB_CXX := CCACHE_CPP2=yes $(CCACHE) $(PNACL_BIN_PATH)/pnacl-clang++ | 206 SB_CXX := CCACHE_CPP2=yes $(CCACHE) $(PNACL_BIN_PATH)/pnacl-clang++ |
205 SB_TRANSLATE := $(PNACL_BIN_PATH)/pnacl-translate | 207 SB_TRANSLATE := $(PNACL_BIN_PATH)/pnacl-translate |
208 SB_FINALIZE := $(PNACL_BIN_PATH)/pnacl-finalize --no-strip-syms | |
206 | 209 |
207 # Extra warnings that LLVM's build system adds in addition to -Wall. | 210 # Extra warnings that LLVM's build system adds in addition to -Wall. |
208 LLVM_EXTRA_WARNINGS := -Wcovered-switch-default | 211 LLVM_EXTRA_WARNINGS := -Wcovered-switch-default |
209 | 212 |
210 # Use g++ to compile, to check for errors/warnings that clang++ might have | 213 # Use g++ to compile, to check for errors/warnings that clang++ might have |
211 # missed. It's unlikely to link, unless LLVM was also built with g++, so the | 214 # missed. It's unlikely to link, unless LLVM was also built with g++, so the |
212 # compile_only target should be used. Note: This ifdef section is deliberately | 215 # compile_only target should be used. Note: This ifdef section is deliberately |
213 # placed here instead of with the other ifdef sections, so that its redefinition | 216 # placed here instead of with the other ifdef sections, so that its redefinition |
214 # of CXX/STDLIB_FLAGS/LLVM_EXTRA_WARNINGS follows their normal definitions. | 217 # of CXX/STDLIB_FLAGS/LLVM_EXTRA_WARNINGS follows their normal definitions. |
215 ifdef GPLUSPLUS | 218 ifdef GPLUSPLUS |
216 CXX := CCACHE_CPP2=yes $(CCACHE) g++ | 219 CXX := CCACHE_CPP2=yes $(CCACHE) g++ |
217 STDLIB_FLAGS := | 220 STDLIB_FLAGS := |
218 LLVM_EXTRA_WARNINGS := \ | 221 LLVM_EXTRA_WARNINGS := \ |
219 -Wcast-qual \ | 222 -Wcast-qual \ |
220 -Wno-comment \ | 223 -Wno-comment \ |
221 -Wno-long-long \ | 224 -Wno-long-long \ |
222 -Wno-maybe-uninitialized \ | 225 -Wno-maybe-uninitialized \ |
223 -Wno-missing-field-initializers \ | 226 -Wno-missing-field-initializers \ |
224 -Wno-unused-parameter \ | 227 -Wno-unused-parameter \ |
225 -Wwrite-strings | 228 -Wwrite-strings |
226 OBJDIR := $(OBJDIR)+Gplusplus | 229 OBJDIR := $(OBJDIR)+Gplusplus |
227 endif | 230 endif |
228 | 231 |
229 BASE_CXXFLAGS := -std=gnu++11 -Wall -Wextra -Werror -fno-rtti \ | 232 BASE_CXXFLAGS := -std=gnu++11 -Wall -Wextra -Werror -fno-rtti \ |
230 -fno-exceptions $(OPTLEVEL) $(ASSERTIONS) -g -pedantic \ | 233 -fno-exceptions $(OPTLEVEL) $(ASSERTIONS) -g -pedantic \ |
231 $(LLVM_EXTRA_WARNINGS) $(CXX_EXTRA) | 234 $(LLVM_EXTRA_WARNINGS) $(CXX_EXTRA) |
232 | 235 |
233 CXXFLAGS := $(LLVM_CXXFLAGS) $(BASE_CXXFLAGS) $(CXX_DEFINES) $(HOST_FLAGS) \ | 236 CXXFLAGS := $(LLVM_CXXFLAGS) $(BASE_CXXFLAGS) $(CXX_DEFINES) $(HOST_FLAGS) \ |
234 $(STDLIB_FLAGS) | 237 $(STDLIB_FLAGS) |
235 SB_CXXFLAGS := $(SB_LLVM_CXXFLAGS) $(BASE_CXXFLAGS) $(SB_CXX_DEFINES) | 238 SB_CXXFLAGS := $(SB_LLVM_CXXFLAGS) $(BASE_CXXFLAGS) $(SB_CXX_DEFINES) \ |
239 -Wno-unknown-pragmas -I$(NACL_ROOT) | |
236 | 240 |
237 LDFLAGS := $(HOST_FLAGS) -L$(LIBCXX_INSTALL_PATH)/lib -Wl,--gc-sections \ | 241 LDFLAGS := $(HOST_FLAGS) -L$(LIBCXX_INSTALL_PATH)/lib -Wl,--gc-sections \ |
238 $(LD_EXTRA) $(STDLIB_FLAGS) | 242 $(LD_EXTRA) $(STDLIB_FLAGS) |
239 # Not specifying -Wl,--gc-sections but instead doing bitcode linking GC w/ LTO. | 243 # Not specifying -Wl,--gc-sections but instead doing bitcode linking GC w/ LTO. |
240 SB_LDFLAGS := $(LINKOPTLEVEL) $(LD_EXTRA) | 244 SB_LDFLAGS := $(LINKOPTLEVEL) $(LD_EXTRA) |
241 | 245 |
242 # List the target-specific source files first, which generally take longer to | 246 # List the target-specific source files first, which generally take longer to |
243 # compile, in the hope of improving parallel build time. | 247 # compile, in the hope of improving parallel build time. |
244 SRCS = \ | 248 SRCS = \ |
245 IceAssemblerARM32.cpp \ | 249 IceAssemblerARM32.cpp \ |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
321 UNITTEST_OBJS = $(patsubst %.cpp, $(OBJDIR)/unittest/%.o, $(UNITTEST_SRCS)) | 325 UNITTEST_OBJS = $(patsubst %.cpp, $(OBJDIR)/unittest/%.o, $(UNITTEST_SRCS)) |
322 UNITTEST_LIB_OBJS = $(filter-out $(OBJDIR)/main.o,$(OBJS)) | 326 UNITTEST_LIB_OBJS = $(filter-out $(OBJDIR)/main.o,$(OBJS)) |
323 | 327 |
324 # Keep all the first target so it's the default. | 328 # Keep all the first target so it's the default. |
325 all: $(OBJDIR)/pnacl-sz make_symlink runtime | 329 all: $(OBJDIR)/pnacl-sz make_symlink runtime |
326 | 330 |
327 ifdef TSAN | 331 ifdef TSAN |
328 sb: | 332 sb: |
329 @echo "Skipping pnacl-sz.*.nexe: TSAN isn't supported under NaCl." | 333 @echo "Skipping pnacl-sz.*.nexe: TSAN isn't supported under NaCl." |
330 else | 334 else |
331 sb: $(SB_OBJDIR)/pnacl-sz.x86-32.nexe | 335 sb: $(SB_OBJDIR)/pnacl-sz.x8632.nexe \ |
336 $(SB_OBJDIR)/pnacl-sz.x8664.nexe \ | |
337 sb_make_symlink | |
332 endif | 338 endif |
333 | 339 |
334 # SHOW_BUILD_ATTS is an executable that is run to show what build | 340 # SHOW_BUILD_ATTS is an executable that is run to show what build |
335 # attributes were used to build pnacl-sz. | 341 # attributes were used to build pnacl-sz. |
336 SHOW_BUILD_ATTS = $(OBJDIR)/pnacl-sz --build-atts | 342 SHOW_BUILD_ATTS = $(OBJDIR)/pnacl-sz --build-atts |
337 | 343 |
338 # Creates symbolic link so that testing is easier. Also runs | 344 # Creates symbolic link so that testing is easier. Also runs |
339 # pnacl-sz to verify that the defines flags have valid values, | 345 # pnacl-sz to verify that the defines flags have valid values, |
340 # as well as describe the corresponding build attributes. | 346 # as well as describe the corresponding build attributes. |
341 make_symlink: $(OBJDIR)/pnacl-sz | 347 make_symlink: $(OBJDIR)/pnacl-sz |
342 rm -rf pnacl-sz | 348 rm -rf pnacl-sz |
343 ln -s $(OBJDIR)/pnacl-sz | 349 ln -s $(OBJDIR)/pnacl-sz |
344 @echo "Build Attributes:" | 350 @echo "Build Attributes:" |
345 @$(SHOW_BUILD_ATTS) | 351 @$(SHOW_BUILD_ATTS) |
346 | 352 |
353 sb_make_symlink: $(SB_OBJDIR)/pnacl-sz.x8632.nexe \ | |
354 $(SB_OBJDIR)/pnacl-sz.x8664.nexe | |
355 rm -rf pnacl-sz.x8632.nexe pnacl-sz.x8664.nexe | |
356 ln -s $(SB_OBJDIR)/pnacl-sz.x8632.nexe | |
357 ln -s $(SB_OBJDIR)/pnacl-sz.x8664.nexe | |
358 | |
347 .PHONY: all compile_only make_symlink runtime bloat sb docs help \ | 359 .PHONY: all compile_only make_symlink runtime bloat sb docs help \ |
348 help-check-lit help-check-xtest | 360 help-check-lit help-check-xtest |
349 | 361 |
350 compile_only: $(OBJS) | 362 compile_only: $(OBJS) |
351 | 363 |
352 $(OBJDIR)/pnacl-sz: $(OBJS) | 364 $(OBJDIR)/pnacl-sz: $(OBJS) |
353 $(CXX) $(LDFLAGS) -o $@ $^ $(LLVM_LDFLAGS) \ | 365 $(CXX) $(LDFLAGS) -o $@ $^ $(LLVM_LDFLAGS) \ |
354 -Wl,-rpath=$(abspath $(LIBCXX_INSTALL_PATH)/lib) | 366 -Wl,-rpath=$(abspath $(LIBCXX_INSTALL_PATH)/lib) |
355 | 367 |
356 $(SB_OBJDIR)/pnacl-sz.x86-32.nexe: $(SB_OBJS) | 368 $(SB_OBJDIR)/pnacl-sz.nonfinal.pexe: $(SB_OBJS) |
357 » $(eval PNACL_SZ_BASE := $(patsubst %.nexe, %, $@)) | 369 » $(SB_CXX) $(SB_LDFLAGS) -o $@ $^ $(SB_LLVM_LDFLAGS) |
358 » $(SB_CXX) $(SB_LDFLAGS) -o $(PNACL_SZ_BASE).nonfinal.pexe $^ \ | 370 |
359 $(SB_LLVM_LDFLAGS) | 371 $(SB_OBJDIR)/pnacl-sz.pexe: $(SB_OBJDIR)/pnacl-sz.nonfinal.pexe |
360 » $(SB_TRANSLATE) -arch x86-32 $(PNACL_SZ_BASE).nonfinal.pexe -o $@ \ | 372 » $(SB_FINALIZE) $^ -o $@ |
361 --allow-llvm-bitcode-input | 373 |
374 $(SB_OBJDIR)/pnacl-sz.x8632.nexe: $(SB_OBJDIR)/pnacl-sz.pexe | |
375 » $(SB_TRANSLATE) -arch x86-32 $^ -o $@ | |
376 | |
John
2016/02/25 02:36:56
Arm32?? Totally optional, and up to you.
Jim Stichnoth
2016/02/25 05:32:20
I thought to do that a little later, when there's
| |
377 $(SB_OBJDIR)/pnacl-sz.x8664.nexe: $(SB_OBJDIR)/pnacl-sz.pexe | |
378 » $(SB_TRANSLATE) -arch x86-64 $^ -o $@ | |
362 | 379 |
363 src/IceRegistersARM32.def: pydir/gen_arm32_reg_tables.py | 380 src/IceRegistersARM32.def: pydir/gen_arm32_reg_tables.py |
364 python $< > $@ | 381 python $< > $@ |
365 | 382 |
366 # TODO(stichnot): Be more precise than "*.h" here and elsewhere. | 383 # TODO(stichnot): Be more precise than "*.h" here and elsewhere. |
367 $(OBJS): $(OBJDIR)/%.o: src/%.cpp src/*.h src/*.def | 384 $(OBJS): $(OBJDIR)/%.o: src/%.cpp src/*.h src/*.def |
368 $(CXX) -c $(CXXFLAGS) $< -o $@ | 385 $(CXX) -c $(CXXFLAGS) $< -o $@ |
369 | 386 |
370 $(SB_OBJS): $(SB_OBJDIR)/%.o: src/%.cpp src/*.h src/*.def | 387 $(SB_OBJS): $(SB_OBJDIR)/%.o: src/%.cpp src/*.h src/*.def |
371 $(SB_CXX) -c $(SB_CXXFLAGS) $< -o $@ | 388 $(SB_CXX) -c $(SB_CXXFLAGS) $< -o $@ |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
492 | 509 |
493 check-spec: $(ALLSPEC:=.spec2k) | 510 check-spec: $(ALLSPEC:=.spec2k) |
494 | 511 |
495 check: check-lit check-unit check-xtest | 512 check: check-lit check-unit check-xtest |
496 | 513 |
497 check-presubmit presubmit: | 514 check-presubmit presubmit: |
498 # Make sure clang-format gets run. | 515 # Make sure clang-format gets run. |
499 +make -f Makefile.standalone format | 516 +make -f Makefile.standalone format |
500 # Verify MINIMAL build, plus proper usage of REQUIRES in lit tests. | 517 # Verify MINIMAL build, plus proper usage of REQUIRES in lit tests. |
501 +make -f Makefile.standalone \ | 518 +make -f Makefile.standalone \ |
502 MINIMAL=1 check | 519 MINIMAL=1 sb check |
503 # Check that there are no g++ build errors or warnings. | 520 # Check that there are no g++ build errors or warnings. |
504 +make -f Makefile.standalone \ | 521 +make -f Makefile.standalone \ |
505 GPLUSPLUS=1 compile_only | 522 GPLUSPLUS=1 compile_only |
506 # Check the x86 assembler unit tests. | 523 # Check the x86 assembler unit tests. |
507 +make -f Makefile.standalone \ | 524 +make -f Makefile.standalone \ |
508 DEBUG=1 CHECK_X86_ASM=1 check-unit | 525 DEBUG=1 CHECK_X86_ASM=1 check-unit |
509 # Run lit tests, cross tests, unit tests, and spec2k/x86-32. | 526 # Run lit tests, cross tests, unit tests, and spec2k/x86-32. |
510 +make -f Makefile.standalone \ | 527 +make -f Makefile.standalone \ |
511 check check-spec | 528 check check-spec sb |
512 # Run spec2k/x86-64. | 529 # Run spec2k/x86-64. |
513 +make -f Makefile.standalone \ | 530 +make -f Makefile.standalone \ |
514 TARGET=x8664 check-spec | 531 TARGET=x8664 check-spec |
515 # Build spec2k under -Om1/x86-32, to check for liveness errors. | 532 # Build spec2k under -Om1/x86-32, to check for liveness errors. |
516 +make -f Makefile.standalone \ | 533 +make -f Makefile.standalone \ |
517 SPECFLAGS='-Om1' SPECBUILDONLY=true check-spec | 534 SPECFLAGS='-Om1' SPECBUILDONLY=true check-spec |
518 # Build spec2k under -Om1/x86-64, to check for liveness errors. | 535 # Build spec2k under -Om1/x86-64, to check for liveness errors. |
519 +make -f Makefile.standalone \ | 536 +make -f Makefile.standalone \ |
520 SPECFLAGS='-Om1' TARGET=x8664 SPECBUILDONLY=true check-spec | 537 SPECFLAGS='-Om1' TARGET=x8664 SPECBUILDONLY=true check-spec |
521 # Run spec2k for x86-32 without advanced phi lowering. | 538 # Run spec2k for x86-32 without advanced phi lowering. |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
567 help: | 584 help: |
568 @cat Makefile.standalone-help/help.txt | 585 @cat Makefile.standalone-help/help.txt |
569 | 586 |
570 help-check-lit: | 587 help-check-lit: |
571 @cat Makefile.standalone-help/check-lit.txt | 588 @cat Makefile.standalone-help/check-lit.txt |
572 | 589 |
573 help-check-xtest: | 590 help-check-xtest: |
574 @cat Makefile.standalone-help/check-xtest.txt | 591 @cat Makefile.standalone-help/check-xtest.txt |
575 | 592 |
576 clean: | 593 clean: |
577 » rm -rf pnacl-sz *.o $(OBJDIR) $(SB_OBJDIR) build/pnacl-sz.bloat.json | 594 » rm -rf pnacl-sz pnacl-sz.x8632.nexe pnacl-sz.x8664.nexe *.o \ |
595 $(OBJDIR) $(SB_OBJDIR) build/pnacl-sz.bloat.json | |
578 | 596 |
579 clean-all: clean | 597 clean-all: clean |
580 rm -rf build/ crosstest/Output/ | 598 rm -rf build/ crosstest/Output/ |
OLD | NEW |