8156807: Pack200 must support v53.0 class files
Reviewed-by: mchung, shade
## Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.## This code is free software; you can redistribute it and/or modify it# under the terms of the GNU General Public License version 2 only, as# published by the Free Software Foundation. Oracle designates this# particular file as subject to the "Classpath" exception as provided# by Oracle in the LICENSE file that accompanied this code.## This code is distributed in the hope that it will be useful, but WITHOUT# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License# version 2 for more details (a copy is included in the LICENSE file that# accompanied this code).## You should have received a copy of the GNU General Public License version# 2 along with this work; if not, write to the Free Software Foundation,# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.## Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA# or visit www.oracle.com if you need additional information or have any# questions.################################################################################## Copy the generated output into well-defined places in the dist directory.# This must be the first ruledefault: allinclude $(SPEC)include MakeBase.gmk$(eval $(call IncludeCustomExtension, hotspot, Dist.gmk))DIST_OUTPUTDIR := $(HOTSPOT_OUTPUTDIR)/dist# Unfortunately, all platforms have different target subdirs.ifeq ($(OPENJDK_TARGET_OS), windows) LIB_SUBDIR := binelse ifeq ($(OPENJDK_TARGET_OS), macosx) LIB_SUBDIR := libelse LIB_SUBDIR := lib$(OPENJDK_TARGET_CPU_LIBDIR)endif################################################################################# Functions to setup copying of files for variants# Support macro for SetupDistLibFiledefine macosx_universalize $(MKDIR) -p $(@D) $(LIPO) -create -output $@ $<endef################################################################################# Setup make rules to copy a native library and associated data.## Parameter 1 is the name of the rule. This name is used as variable prefix,# and the targets generated are listed in a variable by that name.## Remaining parameters are named arguments. These include:# NAME -- The base name of the native library (e.g. 'jvm')# VARIANT -- The variant to copy from# VARIANT_TARGET_DIR -- The variant target sub dir, with trailing slash, optionalSetupDistLibFile = $(NamedParamsMacroTemplate)define SetupDistLibFileBody ifneq ($$($1_VARIANT), ) $1_SRC_DIR := $$(HOTSPOT_OUTPUTDIR)/variant-$$($1_VARIANT)/lib$$($1_NAME) else $1_SRC_DIR := $$(HOTSPOT_OUTPUTDIR)/lib$$($1_NAME) endif $1_LIB_NAME := $(LIBRARY_PREFIX)$$($1_NAME) $1_TARGET_DIR := $$(DIST_OUTPUTDIR)/$$(LIB_SUBDIR)/$$($1_VARIANT_TARGET_DIR) ifeq ($(OPENJDK_TARGET_OS), macosx) # We must use the 'universalize' macro to run lipo on shared libraries, at # least until JDK-8069540 is fixed. $1_MACRO := macosx_universalize endif # Copy the the native library. $$(eval $$(call SetupCopyFiles, $1_COPY_LIB, \ DEST := $$($1_TARGET_DIR), \ MACRO := $$($1_MACRO), \ FILES := $$(wildcard \ $$($1_SRC_DIR)/$$($1_LIB_NAME)$(SHARED_LIBRARY_SUFFIX)), \ )) TARGETS += $$($1_COPY_LIB) # Copy related data (debug symbols, static-build symbols file etc) $$(eval $$(call SetupCopyFiles, $1_COPY_FILES, \ DEST := $$($1_TARGET_DIR), \ FILES := $$(wildcard \ $$(addprefix $$($1_SRC_DIR)/$$($1_LIB_NAME), \ .diz .debuginfo .pdb .map .symbols)), \ )) TARGETS += $$($1_COPY_FILES) ifeq ($(OPENJDK_TARGET_OS), macosx) # Debug symbols on macosx is a directory, not a single file, per library. $1_DSYM_SRC := $$($1_SRC_DIR)/$$($1_LIB_NAME)$(SHARED_LIBRARY_SUFFIX).dSYM) ifneq ($$(wildcard $$($1_DSYM_SRC)), ) $$(eval $$(call SetupCopyFiles, $1_COPY_DSYM_DIR, \ DEST := $$($1_TARGET_DIR), \ SRC := $$($1_SRC_DIR), \ FILES := $$(shell $(FIND) $$($1_DSYM_SRC) -type f), \ )) TARGETS += $$($1_COPY_DSYM_DIR) endif endifendef################################################################################# Copy common files, which are independent on the jvm variant(s) being built.# For files that were generated during the build, we assume all versions of# these files are identical, and just pick one arbitrarily to use as source.ANY_JVM_VARIANT := $(firstword $(JVM_VARIANTS))JVM_VARIANT_OUTPUTDIR := $(HOTSPOT_OUTPUTDIR)/variant-$(ANY_JVM_VARIANT)### Copy platform-independent .h filesINCLUDE_FILES_SRC_DIR := $(HOTSPOT_TOPDIR)/src/share/vm$(eval $(call SetupCopyFiles, COPY_INCLUDE, \ SRC := $(INCLUDE_FILES_SRC_DIR), \ DEST := $(DIST_OUTPUTDIR)/include, \ FLATTEN := true, \ FILES := $(INCLUDE_FILES_SRC_DIR)/prims/jni.h \ $(INCLUDE_FILES_SRC_DIR)/code/jvmticmlr.h \ $(INCLUDE_FILES_SRC_DIR)/services/jmm.h))TARGETS += $(COPY_INCLUDE)### Copy jni_md.h# This might have been defined in a custom extensionifeq ($(JNI_MD_H_SRC), ) JNI_MD_H_SRC := $(HOTSPOT_TOPDIR)/src/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/vm/jni_$(HOTSPOT_TARGET_CPU_ARCH).hendififeq ($(OPENJDK_TARGET_OS), macosx) # NOTE: This should most likely be darwin, but the old hotspot build uses bsd JNI_MD_SUBDIR := bsdelse ifeq ($(OPENJDK_TARGET_OS), windows) JNI_MD_SUBDIR := win32else JNI_MD_SUBDIR := $(OPENJDK_TARGET_OS)endif# SetupCopyFiles is not used here since it's non-trivial to copy a single# file with a different target name.$(DIST_OUTPUTDIR)/include/$(JNI_MD_SUBDIR)/jni_md.h: $(JNI_MD_H_SRC) $(call LogInfo, Copying hotspot/dist/include/$(JNI_MD_SUBDIR)/jni_md.h) $(install-file)TARGETS += $(DIST_OUTPUTDIR)/include/$(JNI_MD_SUBDIR)/jni_md.h$(eval $(call SetupCopyFiles, COPY_JVMTI_H, \ DEST := $(DIST_OUTPUTDIR)/include, \ FLATTEN := true, \ FILES := $(JVM_VARIANT_OUTPUTDIR)/gensrc/jvmtifiles/jvmti.h))TARGETS += $(COPY_JVMTI_H)# NOTE: In the old build, this file was not copied on Windows.ifneq ($(OPENJDK_TARGET_OS), windows) $(eval $(call SetupCopyFiles, COPY_JVMTI_HTML, \ DEST := $(DIST_OUTPUTDIR)/docs/platform/jvmti, \ FILES := $(JVM_VARIANT_OUTPUTDIR)/gensrc/jvmtifiles/jvmti.html))endifTARGETS += $(COPY_JVMTI_HTML)ifeq ($(OPENJDK_TARGET_OS), windows) $(eval $(call SetupCopyFiles, COPY_JVM_LIB, \ DEST := $(DIST_OUTPUTDIR)/lib, \ FILES :=$(JVM_VARIANT_OUTPUTDIR)/libjvm/objs/jvm.lib)) TARGETS += $(COPY_JVM_LIB)endif# Copy libjsig, if it exists$(eval $(call SetupDistLibFile, DIST_jsig, \ NAME := jsig, \))################################################################################# Copy variant-specific files# Setup make rules to copy a single variant to dist.# $1: The name of the variantdefine SetupDistForVariant ifneq ($$(filter client minimal, $1), ) VARIANT_TARGET_DIR := $1 else # Use 'server' as default target directory name for all other variants. VARIANT_TARGET_DIR := server endif $$(eval $$(call SetupDistLibFile, DIST_$(strip $1)_jvm, \ NAME := jvm, \ VARIANT := $1, \ VARIANT_TARGET_DIR := $$(VARIANT_TARGET_DIR)/, \ )) # Copy the dtrace libraries, if they exist $$(eval $$(call SetupDistLibFile, DIST_$(strip $1)_jvm_db, \ NAME := jvm_db, \ VARIANT := $1, \ VARIANT_TARGET_DIR := $$(VARIANT_TARGET_DIR)/, \ )) $$(eval $$(call SetupDistLibFile, DIST_$(strip $1)_jvm_dtrace, \ NAME := jvm_dtrace, \ VARIANT := $1, \ VARIANT_TARGET_DIR := $$(VARIANT_TARGET_DIR)/, \ )) # Copy the Xusage.txt file $$(eval $$(call SetupCopyFiles, DIST_$(strip $1)_Xusage, \ DEST := $$(DIST_OUTPUTDIR)/$$(LIB_SUBDIR)/$(strip $1), \ FILES := $$(HOTSPOT_OUTPUTDIR)/variant-$(strip $1)/support/misc/Xusage.txt, \ )) TARGETS += $$(DIST_$(strip $1)_Xusage)endef$(foreach variant, $(JVM_VARIANTS), \ $(eval $(call SetupDistForVariant, $(variant))) \)################################################################################all: $(TARGETS).PHONY: all