| # Copyright (c) 2012 The Native Client Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| ###################################################################### |
| # CONFIG |
| ###################################################################### |
| |
| # NOTE: we assume you have a symlink "CLIENT" in this directory pointing |
| # to your .../native_client directory |
| |
| ifndef SCONS_BUILD_PLATFORM |
| SCONS_BUILD_PLATFORM="scons_build_platform_undefined" |
| endif |
| |
| ifndef BUILD_ARCH_SHORT |
| BUILD_ARCH_SHORT="build_arch_short_undefined" |
| endif |
| |
| TC_ROOT=../../../toolchain |
| TOOLCHAIN_BASE=$(TC_ROOT)/$(SCONS_BUILD_PLATFORM)_$(BUILD_ARCH_SHORT) |
| |
| NNACL_GLIBC_ROOT=$(TOOLCHAIN_BASE)/nacl_$(BUILD_ARCH_SHORT)_glibc |
| NNACL_NEWLIB_ROOT=$(TOOLCHAIN_BASE)/nacl_$(BUILD_ARCH_SHORT)_newlib |
| |
| NNACL_NEWLIB_SDK32=../../../scons-out/nacl-x86-32 |
| NNACL_NEWLIB_SDK64=../../../scons-out/nacl-x86-64 |
| |
| PNACL_ROOT=$(TOOLCHAIN_BASE)/pnacl_newlib |
| PNACL_TRANSLATOR_ROOT=$(TOOLCHAIN_BASE)/pnacl_translator |
| ARM_ROOT=$(TOOLCHAIN_BASE)/arm_trusted |
| |
| CFLAGS = $(CFLAGS_EXTRA) |
| |
| ###################################################################### |
| .PHONY = clean |
| |
| .SUFFIXES : .c .cc .o .bc |
| |
| ###################################################################### |
| # Measurement tools |
| |
| ###################################################################### |
| # Enable timing and size measurements by invoking the makefile with: |
| # measureit=1, PERF_LOGGER=<script_path>, COMPILE_REPEATER=<script_path> |
| ###################################################################### |
| |
| ifeq ($(measureit),1) |
| REPETITIONS ?= 1 |
| # Times how long it took to translate to a file, and repeats N times |
| # writing the result to $@.compile_time. Note $@ corresponds to $@ from |
| # whichever Make rule that this is embedded into. |
| TIME_TRANSLATE=$(COMPILE_REPEATER) $(REPETITIONS) $@ |
| # Calculate user+sys time for generating executable $(1) for benchmark $(2) |
| # Assumes the following format for name of $(1): $(2)."setup_identifier" |
| # examples of "setup_identifier": nacl.opt.x8664, pnacl_translator.x8664, ... |
| # Assumes time is logged to a file with name $(1).compile_time |
| LOG_TRANSLATE_TIME=(TIME_FILE="$(1).compile_time" && \ |
| FILE_TYPE=$(subst $(2).,,$(1)) && \ |
| $(PERF_LOGGER) LogRealTime $$TIME_FILE "compiletime" $(2) $$FILE_TYPE) |
| else |
| # Set the various operations to nops |
| TIME_TRANSLATE= |
| LOG_TRANSLATE_TIME=true |
| endif |
| |
| ifeq ($(measureit),1) |
| # Check gzipped size of file $(1) for benchmark $(2) |
| # Assumes the following format for name of $(1): $(2)."setup_identifier" |
| # examples of "setup_identifier": nacl.opt.x8664, opt.prelinked.bc, ... |
| LOG_ZIP_SIZE=(FILE_TYPE=$(subst $(2).,,$(1)) && \ |
| $(PERF_LOGGER) LogGzippedSize $(1) "transfersize" $(2) $$FILE_TYPE) |
| else |
| LOG_ZIP_SIZE=true |
| endif |
| |
| ifeq ($(measureit),1) |
| # Measure both translation time and size of resulting file. |
| LOG_TIME_AND_SIZE=$(call LOG_TRANSLATE_TIME,$(1),$(2)) && \ |
| $(call LOG_ZIP_SIZE,$(1),$(2)) |
| else |
| LOG_TIME_AND_SIZE=true |
| endif |
| |
| |
| ###################################################################### |
| |
| clean: |
| rm -f -- *.pexe *.bc *.o *.s *.x86 *.arm *.c~ .h~ \ |
| *.html *.data \ |
| $(IT) $(IT).* *.out src/*bc $(EXTRA_CLEAN) |
| |
| |
| pnacl_bin: $(IT).pnacl.arm $(IT).pnacl.opt.arm \ |
| $(IT).pnacl.x8632 $(IT).pnacl.opt.x8632 \ |
| $(IT).pnacl.x8664 $(IT).pnacl.opt.x8664 |
| |
| nacl_bin: $(IT).nacl.x8632 $(IT).nacl.opt.x8632 \ |
| $(IT).nacl.x8664 $(IT).nacl.opt.x8664 |
| |
| nosfi_bin: $(IT).gcc.x8632 $(IT).gcc.opt.x8632 \ |
| $(IT).gcc.arm $(IT).gcc.opt.arm |
| |
| nosfillvm_bin: $(IT).llvm.x8632 $(IT).llvm.opt.x8632 \ |
| $(IT).llvm.hw.arm $(IT).llvm.opt.hw.arm |
| |
| all: pnacl_bin nacl_bin nosfi_bin nosfillvm_bin |
| |
| |
| ###################################################################### |
| ## NON-SANDBOXING GCC TOOLCHAINS |
| ###################################################################### |
| LOCAL_GCC=/usr/bin/gcc |
| EMCCFLAGS=-s ASM_JS=1 -s TOTAL_MEMORY=268435456 $(CFLAGS_EXTRA) |
| # Note: emcc should be in $PATH, or LOCAL_EMCC can be set to |
| # the location of emcc. |
| LOCAL_EMCC=emcc |
| |
| # straight x86-32 gcc |
| $(IT).gcc.x8632: $(SRC) $(CPPSRC) |
| $(LOCAL_GCC) -O0 -m32 $(CFLAGS) $^ -static -lstdc++ -lm -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| # optimized x86-32 gcc |
| $(IT).gcc.opt.x8632: $(SRC) $(CPPSRC) |
| $(LOCAL_GCC) -O3 -m32 $(CFLAGS) $^ -static -lstdc++ -lm -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| |
| # straight x86-64 gcc |
| $(IT).gcc.x8664: $(SRC) $(CPPSRC) |
| $(LOCAL_GCC) -O0 -m64 -DSPEC_CPU2000_LP64 $(CFLAGS) \ |
| $^ -static -lstdc++ -lm -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| # optimized x86-64 gcc |
| $(IT).gcc.opt.x8664: $(SRC) $(CPPSRC) |
| $(LOCAL_GCC) -O3 -m64 -DSPEC_CPU2000_LP64 $(CFLAGS) \ |
| $^ -static -lstdc++ -lm -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| # Emscripten javascript/html generation for Asm.js |
| # Sadly, we have to build two versions -- one for "ref" and one for "train" -- |
| # due to the way Emscripten packages data files. |
| # It will actually create .emcc.ref.html and .emcc.train.html files |
| $(IT).emcc.html: $(SRC) $(CPPSRC) |
| ../prepare_input.py -v --config $(SPEC_COMPONENT) train |
| $(LOCAL_EMCC) -O2 -m32 $(CFLAGS) \ |
| $(EMCCFLAGS) $(EMCCFLAGS_EXTRA_TRAIN) $^ \ |
| -static -lstdc++ -lm -o $@.train.html |
| ../fixup_asmjs.py $@.train.html |
| ../prepare_input.py -v --config $(SPEC_COMPONENT) ref |
| $(LOCAL_EMCC) -O2 -m32 $(CFLAGS) \ |
| $(EMCCFLAGS) $(EMCCFLAGS_EXTRA_REF) $^ \ |
| -static -lstdc++ -lm -o $@.ref.html |
| ../fixup_asmjs.py $@.ref.html |
| touch $@ |
| |
| ###################################################################### |
| ## NON-SANDBOXING LLVM TOOLCHAINS |
| ###################################################################### |
| LOCAL_LLVM=clang++ |
| |
| # straight x86-32 llvm |
| $(IT).llvm.x8632: $(SRC) $(CPPSRC) |
| $(LOCAL_LLVM) -O0 -m32 $(CFLAGS) $^ -static -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| # optimized x86-32 llvm |
| $(IT).llvm.opt.x8632: $(SRC) $(CPPSRC) |
| $(LOCAL_LLVM) -O3 -m32 $(CFLAGS) $^ -static -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| |
| # straight x86-64 llvm |
| $(IT).llvm.x8664: $(SRC) $(CPPSRC) |
| $(LOCAL_LLVM) -O0 -m64 -DSPEC_CPU2000_LP64 $(CFLAGS) \ |
| $^ -static -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| # optimized x86-64 llvm |
| $(IT).llvm.opt.x8664: $(SRC) $(CPPSRC) |
| $(LOCAL_LLVM) -O3 -m64 -DSPEC_CPU2000_LP64 $(CFLAGS) \ |
| $^ -static -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| # straight ARM llvm |
| $(IT).llvm.hw.arm: $(SRC) $(CPPSRC) |
| $(LOCAL_LLVM) -O0 $(CFLAGS) \ |
| $^ -static -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| # optimized ARM llvm |
| $(IT).llvm.opt.hw.arm: $(SRC) $(CPPSRC) |
| $(LOCAL_LLVM) -O3 $(CFLAGS) \ |
| $^ -static -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| ###################################################################### |
| # EXPERIMENTAL |
| # this is only for testing within an artificial CrOS hook for ARM/thumb2 |
| # BUG=http://code.google.com/p/chromium/issues/detail?id=61695 |
| # BUG=http://code.google.com/p/chromium/issues/detail?id=38909 |
| # BUG=http://code.google.com/p/nativeclient/issues/detail?id=135 |
| ######################################################################### |
| |
| ifndef ARM_GCC |
| ARM_GCC = arm-linux-gnueabi-gcc |
| endif |
| |
| ifndef ARM_ARCH_FLAGS |
| ARM_ARCH_FLAGS = -march=armv7-a -mcpu=cortex-a9 -mfpu=neon -marm |
| endif |
| |
| ifndef ARM_LINK_FLAGS |
| ARM_LINK_FLAGS = -lstdc++ -lm -static |
| endif |
| |
| # straight arm gcc |
| $(IT).gcc.arm: $(SRC) $(CPPSRC) |
| $(ARM_GCC) -O0 $(CFLAGS) $^ $(ARM_ARCH_FLAGS) $(ARM_LINK_FLAGS) -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| # optimized arm gcc |
| $(IT).gcc.opt.arm: $(SRC) $(CPPSRC) |
| $(ARM_GCC) -O3 $(CFLAGS) $^ $(ARM_ARCH_FLAGS) $(ARM_LINK_FLAGS) -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| ###################################################################### |
| ## NACL-GCC TOOLCHAINS |
| ###################################################################### |
| NACL_GCC=$(NNACL_GLIBC_ROOT)/bin/x86_64-nacl-gcc |
| NACL_GCC_NEWLIB32=$(NNACL_NEWLIB_ROOT)/bin/x86_64-nacl-gcc \ |
| -B $(NNACL_NEWLIB_SDK32)/lib \ |
| -I $(NNACL_NEWLIB_SDK32)/include |
| NACL_GCC_NEWLIB64=$(NNACL_NEWLIB_ROOT)/bin/x86_64-nacl-gcc \ |
| -B $(NNACL_NEWLIB_SDK64)/lib \ |
| -I $(NNACL_NEWLIB_SDK64)/include |
| |
| # nacl x86 gcc |
| $(IT).nacl.x8632: $(SRC) $(CPPSRC) |
| $(NACL_GCC_NEWLIB32) -O0 -m32 $(CFLAGS) $^ -static -lstdc++ -lm -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| # nacl optimized x86 gcc |
| $(IT).nacl.opt.x8632: $(SRC) $(CPPSRC) |
| $(NACL_GCC_NEWLIB32) -O3 -m32 $(CFLAGS) $^ -static -lstdc++ -lm -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| # nacl x86 gcc, dynamic |
| $(IT).nacl.dyn.x8632: $(SRC) $(CPPSRC) |
| $(NACL_GCC) -O0 -m32 $(CFLAGS) -fPIC -g $^ -lstdc++ -lm -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| # nacl optimized x86 gcc, dynamic |
| $(IT).nacl.dyn.opt.x8632: $(SRC) $(CPPSRC) |
| $(NACL_GCC) -O3 -m32 $(CFLAGS) -fPIC -g $^ -lstdc++ -lm -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| # nacl x86-64 gcc |
| $(IT).nacl.x8664: $(SRC) $(CPPSRC) |
| $(NACL_GCC_NEWLIB64) -O0 -m64 $(CFLAGS) $^ -static -lstdc++ -lm -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| # nacl optimized x86-64 gcc |
| $(IT).nacl.opt.x8664: $(SRC) $(CPPSRC) |
| $(NACL_GCC_NEWLIB64) -O3 -m64 $(CFLAGS) $^ -static -lstdc++ -lm -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| # nacl x86-64 gcc, dynamic |
| $(IT).nacl.dyn.x8664: $(SRC) $(CPPSRC) |
| $(NACL_GCC) -O0 -m64 $(CFLAGS) -fPIC -g $^ -lstdc++ -lm -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| # nacl optimized x86-64 gcc, dynamic |
| $(IT).nacl.dyn.opt.x8664: $(SRC) $(CPPSRC) |
| $(NACL_GCC) -O3 -m64 $(CFLAGS) -fPIC -g $^ -lstdc++ -lm -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| ###################################################################### |
| ## BITCODE TOOLCHAINS |
| ###################################################################### |
| # BITCODE - FRONTEND |
| |
| ifdef NACL_ENABLE_INSECURE_ZERO_BASED_SANDBOX |
| EXTRA_TRANSLATOR_FLAGS=-sfi-zero-based-sandbox |
| else |
| EXTRA_TRANSLATOR_FLAGS= |
| endif |
| |
| PNACL_TRANSLATOR_FLAGS_FAST=-translate-fast |
| PNACL_SZ_FLAGS=--use-sz -O2 |
| |
| PNACL_BIN=$(PNACL_ROOT)/bin |
| # Sandboxed translation uses the standalone translator install (which only |
| # supports sandboxed translation). This allows it to run on the arm hardware |
| # bots, which have no native toolchain build. |
| PNACL_TRANSLATOR=$(TIME_TRANSLATE) $(PNACL_BIN)/pnacl-translate \ |
| $(EXTRA_TRANSLATOR_FLAGS) |
| PNACL_TRANSLATOR_SB=$(TIME_TRANSLATE) \ |
| $(PNACL_TRANSLATOR_ROOT)/bin/pnacl-translate --pnacl-sb |
| PNACL_TRANSLATOR_SB_EMU=$(PNACL_TRANSLATOR_SB) --pnacl-use-emulator \ |
| $(EXTRA_TRANSLATOR_FLAGS) |
| PNACL_CC=$(PNACL_BIN)/pnacl-clang |
| PNACL_CXX=$(PNACL_BIN)/pnacl-clang++ |
| PNACL_FINALIZE=$(PNACL_BIN)/pnacl-finalize |
| PNACL_FLAGS=--pnacl-driver-verbose |
| |
| PNACL_FLAGS_COMMON=$(PNACL_FLAGS) $(CFLAGS) |
| |
| %.bc: %.c |
| $(PNACL_CC) -O0 $(PNACL_FLAGS_COMMON) $< -c -o $@ |
| %.bc: %.cc |
| $(PNACL_CXX) -O0 $(PNACL_FLAGS_COMMON) $< -c -o $@ |
| |
| %.o3.bc: %.c |
| $(PNACL_CC) -O3 $(PNACL_FLAGS_COMMON) $< -c -o $@ |
| %.o3.bc: %.cc |
| $(PNACL_CXX) -O3 $(PNACL_FLAGS_COMMON) $< -c -o $@ |
| |
| $(IT).unopt.pexe: $(SRC:%.c=%.bc) $(CPPSRC:%.cc=%.bc) |
| $(PNACL_CXX) -O0 $(PNACL_FLAGS_COMMON) $^ -static -lm -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| $(IT).unopt.stripped.pexe: $(IT).unopt.pexe |
| $(PNACL_FINALIZE) $^ -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| $(IT).opt.pexe: $(SRC:%.c=%.o3.bc) $(CPPSRC:%.cc=%.o3.bc) |
| $(PNACL_CXX) -O3 $(PNACL_FLAGS_COMMON) $^ -static -lm -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| $(IT).opt.stripped.pexe: $(IT).opt.pexe |
| $(PNACL_FINALIZE) $^ -o $@ |
| @$(call LOG_ZIP_SIZE,$@,$(IT)) |
| |
| ###################################################################### |
| # BITCODE - BACKEND - ARM (sandboxed and non-sandboxed translators) |
| |
| $(IT).pnacl.arm: $(IT).unopt.stripped.pexe |
| $(PNACL_TRANSLATOR) $(PNACL_FLAGS) $^ -o $@ -arch arm |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl.opt.arm: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR) $(PNACL_FLAGS) $^ -o $@ -arch arm |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator.arm: $(IT).unopt.stripped.pexe |
| $(PNACL_TRANSLATOR_SB_EMU) $(PNACL_FLAGS) $^ -o $@ -arch arm |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator.opt.arm: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR_SB_EMU) $(PNACL_FLAGS) $^ -o $@ -arch arm |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator_fast.opt.arm: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR_SB_EMU) $(PNACL_FLAGS) \ |
| $(PNACL_TRANSLATOR_FLAGS_FAST) $^ -o $@ -arch arm |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| |
| # For arm translator testing, the pexes are built on x86 and copied to the |
| # arm boards, but the intermediate .bc files are removed to keep the transfer |
| # small. To keep make from trying to rebuild the pexe, use a phony target |
| # with no dependencies |
| $(IT).pnacl_translator.hw.arm: |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $(IT).unopt.stripped.pexe \ |
| -o $@ -arch arm |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator.opt.hw.arm: |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $(IT).opt.stripped.pexe \ |
| -o $@ -arch arm |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator_fast.opt.hw.arm: |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $(IT).opt.stripped.pexe \ |
| $(PNACL_TRANSLATOR_FLAGS_FAST) -o $@ -arch arm |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator_1thread.opt.hw.arm: |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $(IT).opt.stripped.pexe \ |
| -o $@ -arch arm -threads=seq |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator_fast_1thread.opt.hw.arm: |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $(IT).opt.stripped.pexe \ |
| $(PNACL_TRANSLATOR_FLAGS_FAST) -o $@ -arch arm -threads=seq |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| |
| .PHONY: $(IT).pnacl_translator.hw.arm |
| .PHONY: $(IT).pnacl_translator.opt.hw.arm |
| .PHONY: $(IT).pnacl_translator_fast.opt.hw.arm |
| .PHONY: $(IT).pnacl_translator_1thread.opt.hw.arm |
| .PHONY: $(IT).pnacl_translator_fast_1thread.opt.hw.arm |
| |
| ###################################################################### |
| # BITCODE - BACKEND - X8632 (sandboxed and non-sandboxed translators) |
| |
| $(IT).pnacl.x8632: $(IT).unopt.stripped.pexe |
| $(PNACL_TRANSLATOR) $(PNACL_FLAGS) $^ -o $@ -arch x86-32 |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl.opt.x8632: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR) $(PNACL_FLAGS) $^ -o $@ -arch x86-32 |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl.opt.sz.x8632: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR) $(PNACL_FLAGS) $(PNACL_SZ_FLAGS) $^ \ |
| -o $@ -arch x86-32 |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator.x8632: $(IT).unopt.stripped.pexe |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $^ -o $@ -arch x86-32 |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator.opt.x8632: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $^ -o $@ -arch x86-32 |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator_fast.opt.x8632: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $(PNACL_TRANSLATOR_FLAGS_FAST) \ |
| $^ -o $@ -arch x86-32 |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator_fast.opt.sz.x8632: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $(PNACL_TRANSLATOR_FLAGS_FAST) \ |
| $(PNACL_SZ_FLAGS) $^ -o $@ -arch x86-32 |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator_1thread.opt.x8632: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $^ -o $@ -arch x86-32 \ |
| -threads=seq |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator_fast_1thread.opt.x8632: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $(PNACL_TRANSLATOR_FLAGS_FAST) \ |
| $^ -o $@ -arch x86-32 -threads=seq |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator_fast_1thread.opt.sz.x8632: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $(PNACL_SZ_FLAGS) \ |
| $^ -o $@ -arch x86-32 -threads=seq |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| |
| ###################################################################### |
| # BITCODE - BACKEND - X8664 (sandboxed and non-sandboxed translators) |
| |
| $(IT).pnacl.x8664: $(IT).unopt.stripped.pexe |
| $(PNACL_TRANSLATOR) $(PNACL_FLAGS) $^ -o $@ -arch x86-64 |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl.opt.x8664: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR) $(PNACL_FLAGS) $^ -o $@ -arch x86-64 |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl.opt.sz.x8664: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR) $(PNACL_FLAGS) $(PNACL_SZ_FLAGS) $^ \ |
| -o $@ -arch x86-64 |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator.x8664: $(IT).unopt.stripped.pexe |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $^ -o $@ -arch x86-64 |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator.opt.x8664: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $^ -o $@ -arch x86-64 |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator_fast.opt.x8664: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $(PNACL_TRANSLATOR_FLAGS_FAST) \ |
| $^ -o $@ -arch x86-64 |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator_fast.opt.sz.x8664: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $(PNACL_TRANSLATOR_FLAGS_FAST) \ |
| $(PNACL_SZ_FLAGS) $^ -o $@ -arch x86-64 |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator_1thread.opt.x8664: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $^ -o $@ -arch x86-64 \ |
| -threads=seq |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator_fast_1thread.opt.x8664: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $(PNACL_TRANSLATOR_FLAGS_FAST) \ |
| $^ -o $@ -arch x86-64 -threads=seq |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |
| |
| $(IT).pnacl_translator_fast_1thread.opt.sz.x8664: $(IT).opt.stripped.pexe |
| $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $(PNACL_SZ_FLAGS) \ |
| $^ -o $@ -arch x86-64 -threads=seq |
| @$(call LOG_TIME_AND_SIZE,$@,$(IT)) |