make/StripBinaries.gmk
changeset 27560 adc258b13e2c
child 28003 577e534faca4
equal deleted inserted replaced
27559:23d1529db8c7 27560:adc258b13e2c
       
     1 #
       
     2 # Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
       
     3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4 #
       
     5 # This code is free software; you can redistribute it and/or modify it
       
     6 # under the terms of the GNU General Public License version 2 only, as
       
     7 # published by the Free Software Foundation.  Oracle designates this
       
     8 # particular file as subject to the "Classpath" exception as provided
       
     9 # by Oracle in the LICENSE file that accompanied this code.
       
    10 #
       
    11 # This code is distributed in the hope that it will be useful, but WITHOUT
       
    12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    13 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    14 # version 2 for more details (a copy is included in the LICENSE file that
       
    15 # accompanied this code).
       
    16 #
       
    17 # You should have received a copy of the GNU General Public License version
       
    18 # 2 along with this work; if not, write to the Free Software Foundation,
       
    19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    20 #
       
    21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    22 # or visit www.oracle.com if you need additional information or have any
       
    23 # questions.
       
    24 #
       
    25 
       
    26 default: all
       
    27 
       
    28 include $(SPEC)
       
    29 include MakeBase.gmk
       
    30 
       
    31 ################################################################################
       
    32 # Copy native libraries and executables to a secondary location to strip them
       
    33 # and filter out files that shouldn't go into the image.
       
    34 
       
    35 MODULES_CMDS_STRIPPED := $(SUPPORT_OUTPUTDIR)/modules_cmds-stripped
       
    36 MODULES_LIBS_STRIPPED := $(SUPPORT_OUTPUTDIR)/modules_libs-stripped
       
    37 
       
    38 ifneq ($(POST_STRIP_CMD), )
       
    39   define StripRecipe
       
    40 	$(ECHO) Stripping $(LOG_INFO) $(patsubst $(OUTPUT_ROOT)/%,%,$<)
       
    41 	$(MKDIR) -p $(@D)
       
    42 	$(CP) $< $@.tmp
       
    43 	$(CHMOD) u+w $@.tmp
       
    44 	$(POST_STRIP_CMD) $@.tmp
       
    45 	$(if $(POST_MCS_CMD), $(POST_MCS_CMD) $@.tmp)
       
    46 	$(CHMOD) go-w $@.tmp
       
    47 	$(MV) $@.tmp $@
       
    48   endef
       
    49 else
       
    50   define StripRecipe
       
    51     $(call install-file)
       
    52   endef
       
    53 endif
       
    54 
       
    55 # Don't include debug info for executables.
       
    56 ALL_CMDS_SRC := $(filter-out %.debuginfo %.diz %.map %.pdb, \
       
    57     $(shell $(FIND) $(SUPPORT_OUTPUTDIR)/modules_cmds -type f -o -type l))
       
    58 COPY_CMDS_SRC := $(filter %.cgi, $(ALL_CMDS_SRC))
       
    59 STRIP_CMDS_SRC := $(filter-out $(COPY_CMDS_SRC), $(ALL_CMDS_SRC))
       
    60 
       
    61 # Make sure symbolic links are copied and not stripped
       
    62 COPY_LIBS_SRC := \
       
    63     $(shell $(FIND) $(SUPPORT_OUTPUTDIR)/modules_libs \
       
    64         \( ! -name '*$(SHARED_LIBRARY_SUFFIX)' -type f \) -o -type l)
       
    65 STRIP_LIBS_SRC := \
       
    66     $(shell $(FIND) $(SUPPORT_OUTPUTDIR)/modules_libs \
       
    67         -name '*$(SHARED_LIBRARY_SUFFIX)' -type f)
       
    68 
       
    69 # On Windows, don't include debug info for libs either.
       
    70 ifeq ($(OPENJDK_TARGET_OS), windows)
       
    71   COPY_LIBS_SRC := $(filter-out %.diz %.map %.pdb, $(COPY_LIBS_SRC))
       
    72 endif
       
    73 
       
    74 $(eval $(call SetupCopyFiles,STRIP_MODULES_CMDS, \
       
    75     SRC := $(SUPPORT_OUTPUTDIR)/modules_cmds, \
       
    76     DEST := $(MODULES_CMDS_STRIPPED), \
       
    77     FILES := $(STRIP_CMDS_SRC), \
       
    78     MACRO := StripRecipe))
       
    79 
       
    80 $(eval $(call SetupCopyFiles,COPY_MODULES_CMDS, \
       
    81     SRC := $(SUPPORT_OUTPUTDIR)/modules_cmds, \
       
    82     DEST := $(MODULES_CMDS_STRIPPED), \
       
    83     FILES := $(COPY_CMDS_SRC)))
       
    84 
       
    85 $(eval $(call SetupCopyFiles,STRIP_MODULES_LIBS, \
       
    86     SRC := $(SUPPORT_OUTPUTDIR)/modules_libs, \
       
    87     DEST := $(MODULES_LIBS_STRIPPED), \
       
    88     FILES := $(STRIP_LIBS_SRC), \
       
    89     MACRO := StripRecipe))
       
    90 
       
    91 $(eval $(call SetupCopyFiles,COPY_MODULES_LIBS, \
       
    92     SRC := $(SUPPORT_OUTPUTDIR)/modules_libs, \
       
    93     DEST := $(MODULES_LIBS_STRIPPED), \
       
    94     FILES := $(COPY_LIBS_SRC)))
       
    95 
       
    96 TARGETS += $(STRIP_MODULES_CMDS) $(COPY_MODULES_CMDS) \
       
    97     $(STRIP_MODULES_LIBS) $(COPY_MODULES_LIBS)
       
    98 
       
    99 all: $(TARGETS)