| Index: Makefile.standalone
|
| diff --git a/Makefile.standalone b/Makefile.standalone
|
| index 9d344190e9f73d6c8cdbc14705844fdeabde4765..2583db2e407ccd1cf104cb13476feec4809936ac 100644
|
| --- a/Makefile.standalone
|
| +++ b/Makefile.standalone
|
| @@ -16,11 +16,11 @@ LLVM_SRC_PATH ?= ../llvm
|
| # The x86-32-specific sandboxed translator directory.
|
| # It holds sandboxed versions of libraries and binaries.
|
| SB_LLVM_PATH ?= $(shell readlink -e \
|
| - ../../out/sandboxed_translators_work/translator-i686/llvm-sb/Release)
|
| + ../../out/sandboxed_translators_work/translator-i686/llvm-sb/Release)
|
|
|
| # NACL_ROOT is the root of the native client repository.
|
| NACL_ROOT ?= $(shell python -c "import sys; sys.path.insert(0, 'pydir'); \
|
| - import utils; print utils.FindBaseNaCl()")
|
| + import utils; print utils.FindBaseNaCl()")
|
|
|
| # TOOLCHAIN_ROOT is the location of NaCl/PNaCl toolchains and other
|
| # tools like qemu.
|
| @@ -42,7 +42,7 @@ AUTOCONF ?= $(shell ldd $(PNACL_BIN_PATH)/opt | grep -c libLLVM-)
|
| # CLANG_PATH is the location of the clang compiler to use for building
|
| # the host binaries.
|
| CLANG_PATH ?= $(shell readlink -e \
|
| - $(NACL_ROOT)/../third_party/llvm-build/Release+Asserts/bin)
|
| + $(NACL_ROOT)/../third_party/llvm-build/Release+Asserts/bin)
|
|
|
| # LIBCXX_INSTALL_PATH is the directory where libc++ is located. It should
|
| # contain header files and corresponding libraries. This is used for
|
| @@ -78,11 +78,11 @@ ifdef MINIMAL
|
| NOASSERT = 1
|
| OBJDIR := $(OBJDIR)+Min
|
| BASE_CXX_DEFINES += -DALLOW_DUMP=0 -DALLOW_LLVM_CL=0 -DALLOW_LLVM_IR=0 \
|
| - -DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_DISABLE_IR_GEN=0 \
|
| + -DALLOW_LLVM_IR_AS_INPUT=0 -DALLOW_DISABLE_IR_GEN=0 \
|
| -DALLOW_MINIMAL_BUILD=1
|
| else
|
| BASE_CXX_DEFINES += -DALLOW_DUMP=1 -DALLOW_LLVM_CL=1 -DALLOW_LLVM_IR=1 \
|
| - -DALLOW_LLVM_IR_AS_INPUT=1 -DALLOW_DISABLE_IR_GEN=1 \
|
| + -DALLOW_LLVM_IR_AS_INPUT=1 -DALLOW_DISABLE_IR_GEN=1 \
|
| -DALLOW_MINIMAL_BUILD=0
|
| endif
|
|
|
| @@ -98,13 +98,15 @@ endif
|
|
|
| ifdef UBSAN
|
| OBJDIR := $(OBJDIR)+UBSan
|
| - CXX_EXTRA += -fsanitize=undefined -fno-sanitize=vptr -fno-sanitize=nonnull-attribute
|
| + CXX_EXTRA += -fsanitize=undefined -fno-sanitize=vptr \
|
| + -fno-sanitize=nonnull-attribute
|
| LD_EXTRA += -fsanitize=undefined
|
| endif
|
|
|
| ifdef UBSAN_TRAP
|
| OBJDIR := $(OBJDIR)+UBSan_Trap
|
| - CXX_EXTRA += -fsanitize=undefined-trap -fsanitize-undefined-trap-on-error -fno-sanitize=vptr -fno-sanitize=nonnull-attribute
|
| + CXX_EXTRA += -fsanitize=undefined-trap -fsanitize-undefined-trap-on-error \
|
| + -fno-sanitize=vptr -fno-sanitize=nonnull-attribute
|
| LD_EXTRA += -fsanitize=undefined-trap
|
| endif
|
|
|
| @@ -182,90 +184,91 @@ SB_TRANSLATE := $(PNACL_BIN_PATH)/pnacl-translate
|
| LLVM_EXTRA_WARNINGS := -Wcovered-switch-default
|
|
|
| BASE_CXXFLAGS := -std=gnu++11 -Wall -Wextra -Werror -fno-rtti \
|
| - -fno-exceptions $(OPTLEVEL) $(ASSERTIONS) -g -pedantic \
|
| - $(LLVM_EXTRA_WARNINGS) $(CXX_EXTRA)
|
| + -fno-exceptions $(OPTLEVEL) $(ASSERTIONS) -g -pedantic \
|
| + $(LLVM_EXTRA_WARNINGS) $(CXX_EXTRA)
|
|
|
| CXXFLAGS := $(LLVM_CXXFLAGS) $(BASE_CXXFLAGS) $(CXX_DEFINES) $(HOST_FLAGS) \
|
| - $(STDLIB_FLAGS)
|
| + $(STDLIB_FLAGS)
|
| SB_CXXFLAGS := $(SB_LLVM_CXXFLAGS) $(BASE_CXXFLAGS) $(SB_CXX_DEFINES)
|
|
|
| LDFLAGS := $(HOST_FLAGS) -L$(LIBCXX_INSTALL_PATH)/lib -Wl,--gc-sections \
|
| - $(LD_EXTRA) $(STDLIB_FLAGS)
|
| + $(LD_EXTRA) $(STDLIB_FLAGS)
|
| # Not specifying -Wl,--gc-sections but instead doing bitcode linking GC w/ LTO.
|
| SB_LDFLAGS := $(LINKOPTLEVEL) $(LD_EXTRA)
|
|
|
| SRCS = \
|
| - IceAssembler.cpp \
|
| - IceAssemblerARM32.cpp \
|
| - IceBrowserCompileServer.cpp \
|
| - IceCfg.cpp \
|
| - IceCfgNode.cpp \
|
| - IceClFlags.cpp \
|
| - IceCompiler.cpp \
|
| - IceCompileServer.cpp \
|
| - IceELFObjectWriter.cpp \
|
| - IceELFSection.cpp \
|
| - IceFixups.cpp \
|
| - IceGlobalContext.cpp \
|
| - IceGlobalInits.cpp \
|
| - IceInst.cpp \
|
| - IceInstARM32.cpp \
|
| - IceInstMIPS32.cpp \
|
| - IceInstX8632.cpp \
|
| - IceInstX8664.cpp \
|
| - IceIntrinsics.cpp \
|
| - IceLiveness.cpp \
|
| - IceLoopAnalyzer.cpp \
|
| - IceOperand.cpp \
|
| - IceRegAlloc.cpp \
|
| - IceRNG.cpp \
|
| - IceSwitchLowering.cpp \
|
| - IceTargetLowering.cpp \
|
| - IceTargetLoweringARM32.cpp \
|
| - IceTargetLoweringMIPS32.cpp \
|
| - IceTargetLoweringX8632.cpp \
|
| - IceTargetLoweringX8664.cpp \
|
| - IceThreading.cpp \
|
| - IceTimerTree.cpp \
|
| - IceTranslator.cpp \
|
| - IceTypes.cpp \
|
| - main.cpp \
|
| - PNaClTranslator.cpp
|
| + IceAssembler.cpp \
|
| + IceAssemblerARM32.cpp \
|
| + IceBrowserCompileServer.cpp \
|
| + IceCfg.cpp \
|
| + IceCfgNode.cpp \
|
| + IceClFlags.cpp \
|
| + IceCompiler.cpp \
|
| + IceCompileServer.cpp \
|
| + IceELFObjectWriter.cpp \
|
| + IceELFSection.cpp \
|
| + IceFixups.cpp \
|
| + IceGlobalContext.cpp \
|
| + IceGlobalInits.cpp \
|
| + IceInst.cpp \
|
| + IceInstARM32.cpp \
|
| + IceInstMIPS32.cpp \
|
| + IceInstX8632.cpp \
|
| + IceInstX8664.cpp \
|
| + IceIntrinsics.cpp \
|
| + IceLiveness.cpp \
|
| + IceLoopAnalyzer.cpp \
|
| + IceOperand.cpp \
|
| + IceRegAlloc.cpp \
|
| + IceRNG.cpp \
|
| + IceSwitchLowering.cpp \
|
| + IceTargetLowering.cpp \
|
| + IceTargetLoweringARM32.cpp \
|
| + IceTargetLoweringMIPS32.cpp \
|
| + IceTargetLoweringX8632.cpp \
|
| + IceTargetLoweringX8664.cpp \
|
| + IceThreading.cpp \
|
| + IceTimerTree.cpp \
|
| + IceTranslator.cpp \
|
| + IceTypes.cpp \
|
| + main.cpp \
|
| + PNaClTranslator.cpp
|
|
|
| ifndef MINIMAL
|
| - SRCS += IceConverter.cpp \
|
| - IceTypeConverter.cpp
|
| + SRCS += \
|
| + IceConverter.cpp \
|
| + IceTypeConverter.cpp
|
| endif
|
|
|
| OBJS=$(patsubst %.cpp, $(OBJDIR)/%.o, $(SRCS))
|
| SB_OBJS=$(patsubst %.cpp, $(SB_OBJDIR)/%.o, $(SRCS))
|
|
|
| UNITTEST_SRCS = \
|
| - BitcodeMunge.cpp \
|
| - IceELFSectionTest.cpp \
|
| - IceParseInstsTest.cpp
|
| + BitcodeMunge.cpp \
|
| + IceELFSectionTest.cpp \
|
| + IceParseInstsTest.cpp
|
|
|
| # The X86 assembler tests take too long to compile. Given how infrequently the
|
| # assembler will change, we disable them.
|
| ifdef CHECK_X86_ASM
|
| -ifndef DEBUG
|
| -$(error Run check-unit with DEBUG=1 lest your machine perish)
|
| -endif
|
| + ifndef DEBUG
|
| + $(error Run check-unit with DEBUG=1 lest your machine perish)
|
| + endif
|
| UNITTEST_SRCS += AssemblerX8632/LowLevel.cpp \
|
| - AssemblerX8632/DataMov.cpp \
|
| - AssemblerX8632/Locked.cpp \
|
| - AssemblerX8632/GPRArith.cpp \
|
| - AssemblerX8632/XmmArith.cpp \
|
| - AssemblerX8632/ControlFlow.cpp \
|
| - AssemblerX8632/Other.cpp \
|
| - AssemblerX8632/X87.cpp \
|
| - AssemblerX8664/LowLevel.cpp \
|
| - AssemblerX8664/DataMov.cpp \
|
| - AssemblerX8664/Locked.cpp \
|
| - AssemblerX8664/GPRArith.cpp \
|
| - AssemblerX8664/XmmArith.cpp \
|
| - AssemblerX8664/ControlFlow.cpp \
|
| - AssemblerX8664/Other.cpp
|
| + AssemblerX8632/DataMov.cpp \
|
| + AssemblerX8632/Locked.cpp \
|
| + AssemblerX8632/GPRArith.cpp \
|
| + AssemblerX8632/XmmArith.cpp \
|
| + AssemblerX8632/ControlFlow.cpp \
|
| + AssemblerX8632/Other.cpp \
|
| + AssemblerX8632/X87.cpp \
|
| + AssemblerX8664/LowLevel.cpp \
|
| + AssemblerX8664/DataMov.cpp \
|
| + AssemblerX8664/Locked.cpp \
|
| + AssemblerX8664/GPRArith.cpp \
|
| + AssemblerX8664/XmmArith.cpp \
|
| + AssemblerX8664/ControlFlow.cpp \
|
| + AssemblerX8664/Other.cpp
|
| endif
|
|
|
| UNITTEST_OBJS = $(patsubst %.cpp, $(OBJDIR)/unittest/%.o, $(UNITTEST_SRCS))
|
| @@ -298,14 +301,14 @@ make_symlink: $(OBJDIR)/pnacl-sz
|
|
|
| $(OBJDIR)/pnacl-sz: $(OBJS)
|
| $(CXX) $(LDFLAGS) -o $@ $^ $(LLVM_LDFLAGS) \
|
| - -Wl,-rpath=$(abspath $(LIBCXX_INSTALL_PATH)/lib)
|
| + -Wl,-rpath=$(abspath $(LIBCXX_INSTALL_PATH)/lib)
|
|
|
| $(SB_OBJDIR)/pnacl-sz.x86-32.nexe: $(SB_OBJS)
|
| $(eval PNACL_SZ_BASE := $(patsubst %.nexe, %, $@))
|
| $(SB_CXX) $(SB_LDFLAGS) -o $(PNACL_SZ_BASE).nonfinal.pexe $^ \
|
| - $(SB_LLVM_LDFLAGS)
|
| + $(SB_LLVM_LDFLAGS)
|
| $(SB_TRANSLATE) -arch x86-32 $(PNACL_SZ_BASE).nonfinal.pexe -o $@ \
|
| - --allow-llvm-bitcode-input
|
| + --allow-llvm-bitcode-input
|
|
|
| # TODO(stichnot): Be more precise than "*.h" here and elsewhere.
|
| $(OBJS): $(OBJDIR)/%.o: src/%.cpp src/*.h src/*.def
|
| @@ -316,23 +319,24 @@ $(SB_OBJS): $(SB_OBJDIR)/%.o: src/%.cpp src/*.h src/*.def
|
|
|
| $(OBJDIR)/run_unittests: $(UNITTEST_OBJS) $(UNITTEST_LIB_OBJS)
|
| $(CXX) $(GTEST_LIB_PATH) $(LDFLAGS) -o $@ $^ $(LLVM_LDFLAGS) \
|
| - -lgtest -lgtest_main -ldl \
|
| - -Wl,-rpath=$(abspath $(LIBCXX_INSTALL_PATH)/lib)
|
| + -lgtest -lgtest_main -ldl \
|
| + -Wl,-rpath=$(abspath $(LIBCXX_INSTALL_PATH)/lib)
|
|
|
| -$(UNITTEST_OBJS): $(OBJDIR)/unittest/%.o: unittest/%.cpp \
|
| - unittest/*.h src/*.h src/*.def
|
| +$(UNITTEST_OBJS): $(OBJDIR)/unittest/%.o: unittest/%.cpp unittest/*.h \
|
| + src/*.h src/*.def
|
| $(CXX) -c $(CXXFLAGS) \
|
| - -Isrc/ \
|
| - -Iunittest/ \
|
| - -I$(LLVM_SRC_PATH)/utils/unittest/googletest/include \
|
| - -I$(LLVM_SRC_PATH) \
|
| - -DGTEST_HAS_RTTI=0 -DGTEST_USE_OWN_TR1_TUPLE \
|
| - $< -o $@
|
| + -Isrc/ \
|
| + -Iunittest/ \
|
| + -I$(LLVM_SRC_PATH)/utils/unittest/googletest/include \
|
| + -I$(LLVM_SRC_PATH) \
|
| + -DGTEST_HAS_RTTI=0 -DGTEST_USE_OWN_TR1_TUPLE \
|
| + $< -o $@
|
|
|
| $(OBJS): | $(OBJDIR)
|
| $(SB_OBJS): | $(SB_OBJDIR)
|
|
|
| -$(UNITTEST_OBJS): | $(OBJDIR)/unittest $(OBJDIR)/unittest/AssemblerX8632 $(OBJDIR)/unittest/AssemblerX8664
|
| +$(UNITTEST_OBJS): | $(OBJDIR)/unittest $(OBJDIR)/unittest/AssemblerX8632 \
|
| + $(OBJDIR)/unittest/AssemblerX8664
|
|
|
| $(OBJDIR):
|
| @mkdir -p $@
|
| @@ -349,8 +353,8 @@ $(OBJDIR)/unittest/AssemblerX8664: $(OBJDIR)/unittest
|
|
|
| RT_SRC := runtime/szrt.c runtime/szrt_ll.ll runtime/szrt_profiler.c
|
| RT_OBJ := build/runtime/szrt_native_x8632.o build/runtime/szrt_sb_x8632.o \
|
| - build/runtime/szrt_native_x8664.o build/runtime/szrt_sb_x8664.o \
|
| - build/runtime/szrt_native_arm32.o build/runtime/szrt_sb_arm32.o
|
| + build/runtime/szrt_native_x8664.o build/runtime/szrt_sb_x8664.o \
|
| + build/runtime/szrt_native_arm32.o build/runtime/szrt_sb_arm32.o
|
|
|
| runtime: $(RT_OBJ)
|
|
|
| @@ -376,16 +380,16 @@ check-xtest: $(OBJDIR)/pnacl-sz make_symlink runtime
|
| # TODO(jpp): implement x8664 sandbox, then enable xtests.
|
| # TODO(jpp): reenable the x86-64 tests.
|
| ./pydir/crosstest_generator.py -v --lit \
|
| - --toolchain-root $(TOOLCHAIN_ROOT) \
|
| - -i x8632,native,sse2 \
|
| - -i x8632,native,sse4.1,test_vector_ops \
|
| - -i x8632,sandbox,sse4.1,Om1 \
|
| - -e x8664,native,sse2 \
|
| - -e x8664,native,sse4.1,test_vector_ops \
|
| - -e x8664,native,sse2,test_global \
|
| - -i arm32,native,neon \
|
| - -e arm32,native,neon,test_vector_ops \
|
| - -e arm32,native,neon,test_select
|
| + --toolchain-root $(TOOLCHAIN_ROOT) \
|
| + -i x8632,native,sse2 \
|
| + -i x8632,native,sse4.1,test_vector_ops \
|
| + -i x8632,sandbox,sse4.1,Om1 \
|
| + -e x8664,native,sse2 \
|
| + -e x8664,native,sse4.1,test_vector_ops \
|
| + -e x8664,native,sse2,test_global \
|
| + -i arm32,native,neon \
|
| + -e arm32,native,neon,test_vector_ops \
|
| + -e arm32,native,neon,test_select
|
| PNACL_BIN_PATH=$(PNACL_BIN_PATH) \
|
| $(LLVM_SRC_PATH)/utils/lit/lit.py -sv crosstest/Output
|
| endif
|
| @@ -393,6 +397,30 @@ endif
|
| check-unit: $(OBJDIR)/run_unittests
|
| $(OBJDIR)/run_unittests
|
|
|
| +ALLSPEC := 177.mesa 179.art 183.equake 188.ammp 164.gzip 175.vpr 176.gcc \
|
| + 181.mcf 186.crafty 197.parser 253.perlbmk 254.gap 255.vortex \
|
| + 256.bzip2 300.twolf 252.eon
|
| +.PHONY: $(ALLSPEC)
|
| +
|
| +TARGET := x8632
|
| +ifeq ($(TARGET),x8632)
|
| + TARGETFLAG=x8632
|
| + SETUP=SetupGccX8632Opt
|
| + SPEC := -O2 --filetype=obj
|
| +endif
|
| +ifeq ($(TARGET),arm32)
|
| + TARGETFLAG=arm32
|
| + SETUP=SetupGccArmOpt
|
| + SPEC := -O2 --filetype=asm
|
| +endif
|
| +
|
| +%.spec2k: %
|
| + ./pydir/szbuild_spec2k.py -v --force --target=$(TARGETFLAG) $(SPEC) $<
|
| + ( cd ../../../tests/spec2k; \
|
| + ./run_all.sh RunTimedBenchmarks $(SETUP) train $< )
|
| +
|
| +check-spec: $(OBJDIR)/pnacl-sz make_symlink $(ALLSPEC:=.spec2k)
|
| +
|
| check: check-lit check-unit check-xtest
|
|
|
| FORMAT_BLACKLIST =
|
| @@ -403,17 +431,17 @@ FORMAT_BLACKLIST += ! -name assembler_arm.h
|
| FORMAT_BLACKLIST += ! -name assembler_arm.cc
|
| format:
|
| $(CLANG_FORMAT_PATH)/clang-format -style=LLVM -i \
|
| - `find . -regex '.*\.\(c\|h\|cpp\)' $(FORMAT_BLACKLIST)`
|
| + `find . -regex '.*\.\(c\|h\|cpp\)' $(FORMAT_BLACKLIST)`
|
|
|
| format-diff:
|
| git diff -U0 `git merge-base HEAD master` | \
|
| - PATH=$(PNACL_BIN_PATH):$(PATH) \
|
| - $(LLVM_SRC_PATH)/../clang/tools/clang-format/clang-format-diff.py \
|
| - -p1 -style=LLVM -i
|
| + PATH=$(PNACL_BIN_PATH):$(PATH) \
|
| + $(LLVM_SRC_PATH)/../clang/tools/clang-format/clang-format-diff.py \
|
| + -p1 -style=LLVM -i
|
|
|
| bloat: make_symlink
|
| nm -C -S -l pnacl-sz | \
|
| - bloat/bloat.py --nm-output=/dev/stdin syms > build/pnacl-sz.bloat.json
|
| + bloat/bloat.py --nm-output=/dev/stdin syms > build/pnacl-sz.bloat.json
|
| @echo See Subzero size breakdown in bloat/pnacl-sz.bloat.html
|
|
|
| docs:
|
|
|