summaryrefslogtreecommitdiffstats
path: root/native_client_sdk
diff options
context:
space:
mode:
authorjvoung@chromium.org <jvoung@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-11 17:01:51 +0000
committerjvoung@chromium.org <jvoung@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-11 17:01:51 +0000
commit702b800e440edc85f81bbc69f1a03e854364d696 (patch)
treeefb77c6b030bf2982c30fb07b7429f52a28d989e /native_client_sdk
parent3ace1b6e3f60755b4d3368369b41d1c776ad24c0 (diff)
downloadchromium_src-702b800e440edc85f81bbc69f1a03e854364d696.zip
chromium_src-702b800e440edc85f81bbc69f1a03e854364d696.tar.gz
chromium_src-702b800e440edc85f81bbc69f1a03e854364d696.tar.bz2
nacl-sdk: Add a PNaCl finalize step to the Release builds for SDK examples.
For PNaCl bitcode stability we need to strip metadata, such as debug since the debug metadata is still evolving. We want to show developers that this is part of the workflow. Add a release build of the examples to test this out. Adds ~1 min 40 to windows build. BUG= https://code.google.com/p/nativeclient/issues/detail?id=3348 NOTRY=true Review URL: https://chromiumcodereview.appspot.com/13466021 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@193671 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'native_client_sdk')
-rw-r--r--native_client_sdk/src/build_tools/template.mk5
-rwxr-xr-xnative_client_sdk/src/build_tools/test_sdk.py8
-rw-r--r--native_client_sdk/src/tools/host_gcc.mk16
-rw-r--r--native_client_sdk/src/tools/host_vc.mk15
-rw-r--r--native_client_sdk/src/tools/nacl_gcc.mk33
-rw-r--r--native_client_sdk/src/tools/nacl_llvm.mk14
6 files changed, 88 insertions, 3 deletions
diff --git a/native_client_sdk/src/build_tools/template.mk b/native_client_sdk/src/build_tools/template.mk
index ca5f2d4..d240f1f 100644
--- a/native_client_sdk/src/build_tools/template.mk
+++ b/native_client_sdk/src/build_tools/template.mk
@@ -94,7 +94,12 @@ $(eval $(call SO_RULE,{{name}},$({{name}}_SOURCES)))
[[ elif target['TYPE'] == 'so-standalone':]]
$(eval $(call SO_RULE,{{name}},$({{name}}_SOURCES),,,1))
[[ else:]]
+ifeq ($(CONFIG),Release)
+$(eval $(call LINK_RULE,{{name}}_unstripped,$({{name}}_SOURCES),$(LIBS),$(DEPS)))
+$(eval $(call STRIP_RULE,{{name}},{{name}}_unstripped))
+else
$(eval $(call LINK_RULE,{{name}},$({{name}}_SOURCES),$(LIBS),$(DEPS)))
+endif
[[]]
#
diff --git a/native_client_sdk/src/build_tools/test_sdk.py b/native_client_sdk/src/build_tools/test_sdk.py
index f245fb4..6e7a841 100755
--- a/native_client_sdk/src/build_tools/test_sdk.py
+++ b/native_client_sdk/src/build_tools/test_sdk.py
@@ -37,8 +37,12 @@ TEST_LIBRARY_LIST = [
def BuildStepBuildExamples(pepperdir, platform):
- build_sdk.BuildStepMakeAll(pepperdir, platform, 'examples', 'Build Examples',
- deps=False)
+ build_sdk.BuildStepMakeAll(pepperdir, platform, 'examples',
+ 'Build Examples (Debug)',
+ deps=False, config='Debug')
+ build_sdk.BuildStepMakeAll(pepperdir, platform, 'examples',
+ 'Build Examples (Release)',
+ deps=False, config='Release')
def BuildStepCopyTests(pepperdir, toolchains, build_experimental, clobber):
diff --git a/native_client_sdk/src/tools/host_gcc.mk b/native_client_sdk/src/tools/host_gcc.mk
index f776739..386cf9d 100644
--- a/native_client_sdk/src/tools/host_gcc.mk
+++ b/native_client_sdk/src/tools/host_gcc.mk
@@ -19,6 +19,7 @@ HOST_CC?=gcc
HOST_CXX?=g++
HOST_LINK?=g++
HOST_LIB?=ar r
+HOST_STRIP?=strip
ifeq (,$(findstring gcc,$(shell $(WHICH) gcc)))
$(warning To skip the host build use:)
@@ -125,3 +126,18 @@ $(call LINKER_RULE,$(OUTDIR)/$(1)$(HOST_EXT),$(foreach src,$(2),$(call SRC_TO_OB
endef
all : $(LIB_LIST) $(DEPS_LIST)
+
+
+#
+# Strip Macro
+# The host build makes shared libraries, so the best we can do is strip-debug.
+# We cannot strip the symbol names.
+#
+# $1 = Target Name
+# $2 = Input Name
+#
+define STRIP_RULE
+all: $(OUTDIR)/$(1)$(HOST_EXT)
+$(OUTDIR)/$(1)$(HOST_EXT): $(OUTDIR)/$(2)$(HOST_EXT)
+ $(call LOG,STRIP,$$@,$(HOST_STRIP) --strip-debug -o $$@ $$^)
+endef
diff --git a/native_client_sdk/src/tools/host_vc.mk b/native_client_sdk/src/tools/host_vc.mk
index ac2fbd4f..2f7b6a9 100644
--- a/native_client_sdk/src/tools/host_vc.mk
+++ b/native_client_sdk/src/tools/host_vc.mk
@@ -115,4 +115,19 @@ define LINK_RULE
$(call LINKER_RULE,$(OUTDIR)/$(1)$(HOST_EXT),$(foreach src,$(2),$(OUTDIR)/$(basename $(src)).o),$(3),$(4),$(LIB_PATHS),$(6))
endef
+
+#
+# Strip Macro
+# This is a nop (copy) since visual studio already keeps debug info
+# separate from the binaries
+#
+# $1 = Target Name
+# $2 = Input Name
+#
+define STRIP_RULE
+all: $(OUTDIR)/$(1)$(HOST_EXT)
+$(OUTDIR)/$(1)$(HOST_EXT): $(OUTDIR)/$(2)$(HOST_EXT)
+ $(call LOG,COPY,$$@,$(CP) $$^ $$@)
+endef
+
all : $(LIB_LIST) $(DEPS_LIST)
diff --git a/native_client_sdk/src/tools/nacl_gcc.mk b/native_client_sdk/src/tools/nacl_gcc.mk
index ea7d869..bdbe33d 100644
--- a/native_client_sdk/src/tools/nacl_gcc.mk
+++ b/native_client_sdk/src/tools/nacl_gcc.mk
@@ -28,16 +28,19 @@ X86_32_CC?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/bin/i686-nacl-gcc
X86_32_CXX?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/bin/i686-nacl-g++
X86_32_LINK?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/bin/i686-nacl-g++
X86_32_LIB?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/bin/i686-nacl-ar
+X86_32_STRIP?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/bin/i686-nacl-strip
X86_64_CC?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/bin/x86_64-nacl-gcc
X86_64_CXX?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/bin/x86_64-nacl-g++
X86_64_LINK?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/bin/x86_64-nacl-g++
X86_64_LIB?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/bin/x86_64-nacl-ar
+X86_64_STRIP?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/bin/x86_64-nacl-strip
ARM_CC?=$(TC_PATH)/$(OSNAME)_arm_$(TOOLCHAIN)/bin/arm-nacl-gcc
ARM_CXX?=$(TC_PATH)/$(OSNAME)_arm_$(TOOLCHAIN)/bin/arm-nacl-g++
ARM_LINK?=$(TC_PATH)/$(OSNAME)_arm_$(TOOLCHAIN)/bin/arm-nacl-g++
ARM_LIB?=$(TC_PATH)/$(OSNAME)_arm_$(TOOLCHAIN)/bin/arm-nacl-ar
+ARM_STRIP?=$(TC_PATH)/$(OSNAME)_arm_$(TOOLCHAIN)/bin/arm-nacl-strip
# Architecture-specific flags
@@ -204,6 +207,35 @@ endef
#
+# Strip Macro for each arch (e.g., each arch supported by LINKER_RULE).
+#
+# $1 = Target Name
+# $2 = Source Name
+#
+define STRIP_ALL_RULE
+$(OUTDIR)/$(1)_x86_32.nexe : $(OUTDIR)/$(2)_x86_32.nexe
+ $(call LOG,STRIP,$$@,$(X86_32_STRIP) -o $$@ $$^)
+
+$(OUTDIR)/$(1)_x86_64.nexe : $(OUTDIR)/$(2)_x86_64.nexe
+ $(call LOG,STRIP,$$@,$(X86_64_STRIP) -o $$@ $$^)
+
+$(OUTDIR)/$(1)_arm.nexe : $(OUTDIR)/$(2)_arm.nexe
+ $(call LOG,STRIP,$$@,$(ARM_STRIP) -o $$@ $$^)
+endef
+
+
+#
+# Top-level Strip Macro
+#
+# $1 = Target Basename
+# $2 = Source Basename
+#
+define STRIP_RULE
+$(call STRIP_ALL_RULE,$(1),$(2))
+endef
+
+
+#
# Determine which architectures to build for. The user can set NACL_ARCH or
# ARCHES in the environment to control this.
#
@@ -221,6 +253,7 @@ else
ARCHES?=${VALID_ARCHES}
endif
+
#
# Generate NMF_TARGETS
#
diff --git a/native_client_sdk/src/tools/nacl_llvm.mk b/native_client_sdk/src/tools/nacl_llvm.mk
index 429b6e3..271b289 100644
--- a/native_client_sdk/src/tools/nacl_llvm.mk
+++ b/native_client_sdk/src/tools/nacl_llvm.mk
@@ -16,7 +16,7 @@ PNACL_CC?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/newlib/bin/pnacl-clang -c
PNACL_CXX?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/newlib/bin/pnacl-clang++ -c
PNACL_LINK?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/newlib/bin/pnacl-clang++
PNACL_LIB?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/newlib/bin/pnacl-ar r
-
+PNACL_STRIP?=$(TC_PATH)/$(OSNAME)_x86_$(TOOLCHAIN)/newlib/bin/pnacl-finalize
#
# Compile Macro
@@ -113,6 +113,18 @@ $(call LINKER_RULE,$(OUTDIR)/$(1).pexe,$(foreach src,$(2),$(call SRC_TO_OBJ,$(sr
endef
+#
+# Strip Macro
+#
+# $1 = Target Name
+# $2 = Input Name
+#
+define STRIP_RULE
+all: $(OUTDIR)/$(1).pexe
+$(OUTDIR)/$(1).pexe: $(OUTDIR)/$(2).pexe
+ $(call LOG,STRIP,$$@,$(PNACL_STRIP) -o $$@ $$^)
+endef
+
#
# NMF Manifiest generation