diff options
author | jvoung@chromium.org <jvoung@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-11 17:01:51 +0000 |
---|---|---|
committer | jvoung@chromium.org <jvoung@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-11 17:01:51 +0000 |
commit | 702b800e440edc85f81bbc69f1a03e854364d696 (patch) | |
tree | efb77c6b030bf2982c30fb07b7429f52a28d989e /native_client_sdk | |
parent | 3ace1b6e3f60755b4d3368369b41d1c776ad24c0 (diff) | |
download | chromium_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.mk | 5 | ||||
-rwxr-xr-x | native_client_sdk/src/build_tools/test_sdk.py | 8 | ||||
-rw-r--r-- | native_client_sdk/src/tools/host_gcc.mk | 16 | ||||
-rw-r--r-- | native_client_sdk/src/tools/host_vc.mk | 15 | ||||
-rw-r--r-- | native_client_sdk/src/tools/nacl_gcc.mk | 33 | ||||
-rw-r--r-- | native_client_sdk/src/tools/nacl_llvm.mk | 14 |
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 |