# NOTE: we assume you have a symlink "CLIENT" in this directory pointing
# to your .../native_client directory
-ifndef BUILD_PLATFORM
-BUILD_PLATFORM="build_platform_undefined"
-endif
-
ifndef SCONS_BUILD_PLATFORM
SCONS_BUILD_PLATFORM="scons_build_platform_undefined"
endif
-ifndef BUILD_ARCH
-BUILD_ARCH="build_arch_undefined"
+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_ROOT=$(TC_ROOT)/$(SCONS_BUILD_PLATFORM)_x86
-NNACL_NEWLIB_ROOT=$(TC_ROOT)/$(SCONS_BUILD_PLATFORM)_x86_newlib
+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=$(TC_ROOT)/pnacl_$(BUILD_PLATFORM)_x86
-PNACL_TRANSLATOR_ROOT=$(TC_ROOT)/pnacl_translator
-ARM_ROOT=$(TC_ROOT)/linux_arm-trusted
+PNACL_ROOT=$(TOOLCHAIN_BASE)/pnacl_newlib
+PNACL_TRANSLATOR_ROOT=$(TOOLCHAIN_BASE)/pnacl_translator
+ARM_ROOT=$(TOOLCHAIN_BASE)/arm_trusted
CFLAGS = $(CFLAGS_EXTRA)
######################################################################
## NACL-GCC TOOLCHAINS
######################################################################
-NACL_GCC=$(NNACL_ROOT)/bin/x86_64-nacl-gcc
+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 x86 gcc
$(IT).nacl.x8632: $(SRC) $(CPPSRC)
- $(NACL_GCC_NEWLIB32) -O0 -m32 $(CFLAGS) $^ -static -lstdc++ -lm \
- -lnosys -o $@
+ $(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 \
- -lnosys -o $@
+ $(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 -lnosys -o $@
+ $(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 -lnosys -o $@
+ $(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 \
- -lnosys -o $@
+ $(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 \
- -lnosys -o $@
+ $(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 -lnosys -o $@
+ $(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 -lnosys -o $@
+ $(NACL_GCC) -O3 -m64 $(CFLAGS) -fPIC -g $^ -lstdc++ -lm -o $@
@$(call LOG_ZIP_SIZE,$@,$(IT))
######################################################################
else
EXTRA_TRANSLATOR_FLAGS=
endif
+
PNACL_TRANSLATOR_FLAGS_FAST=-translate-fast
PNACL_BIN=$(PNACL_ROOT)/bin
PNACL_FLAGS=--pnacl-driver-verbose
PNACL_FLAGS_COMMON=$(PNACL_FLAGS) $(CFLAGS)
-ifeq ($(PNACL_LIBMODE), newlib)
- PNACL_EXTRA_LIB=-lnosys
-else
- PNACL_EXTRA_LIB=
-endif
%.bc: %.c
$(PNACL_CC) -O0 $(PNACL_FLAGS_COMMON) $< -c -o $@
$(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 $(PNACL_EXTRA_LIB) -o $@
+ $(PNACL_CXX) -O0 $(PNACL_FLAGS_COMMON) $^ -static -lm -o $@
@$(call LOG_ZIP_SIZE,$@,$(IT))
$(IT).unopt.stripped.pexe: $(IT).unopt.pexe
@$(call LOG_ZIP_SIZE,$@,$(IT))
$(IT).opt.pexe: $(SRC:%.c=%.o3.bc) $(CPPSRC:%.cc=%.o3.bc)
- $(PNACL_CXX) -O3 $(PNACL_FLAGS_COMMON) $^ -static -lm \
- $(PNACL_EXTRA_LIB) -o $@
+ $(PNACL_CXX) -O3 $(PNACL_FLAGS_COMMON) $^ -static -lm -o $@
@$(call LOG_ZIP_SIZE,$@,$(IT))
$(IT).opt.stripped.pexe: $(IT).opt.pexe
@$(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
+ $(PNACL_TRANSLATOR_SB_EMU) $(PNACL_FLAGS) \
+ $(PNACL_TRANSLATOR_FLAGS_FAST) $^ -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
+ $(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 -split-module=1
+ @$(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 -split-module=1
@$(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)
@$(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} \
+ $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $(PNACL_TRANSLATOR_FLAGS_FAST) \
$^ -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 \
+ -split-module=1
+ @$(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 -split-module=1
+ @$(call LOG_TIME_AND_SIZE,$@,$(IT))
+
######################################################################
# BITCODE - BACKEND - X8664 (sandboxed and non-sandboxed translators)
@$(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} \
+ $(PNACL_TRANSLATOR_SB) $(PNACL_FLAGS) $(PNACL_TRANSLATOR_FLAGS_FAST) \
$^ -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 \
+ -split-module=1
+ @$(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 -split-module=1
+ @$(call LOG_TIME_AND_SIZE,$@,$(IT))