| 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/ | 
| 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  Loading... | 
| 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  Loading... | 
| 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  Loading... | 
| 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/ | 
| OLD | NEW | 
|---|