diff -r dc31fca4f71d -r 07c3c4f1eb63 make/GenerateLinkOptData.gmk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/make/GenerateLinkOptData.gmk Mon Nov 07 13:25:18 2016 +0100 @@ -0,0 +1,88 @@ +# +# Copyright (c) 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. +# + +################################################################################ +# Generate classlist +################################################################################ + +default: all + +include $(SPEC) +include MakeBase.gmk +include JarArchive.gmk + +################################################################################ +# Create a jar with our generator class. Using a jar is intentional since it +# will load more classes + +$(eval $(call SetupJarArchive, CLASSLIST_JAR, \ + SRCS := $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes, \ + INCLUDES := build/tools/classlist, \ + JAR := $(SUPPORT_OUTPUTDIR)/classlist.jar, \ +)) + +TARGETS += $(CLASSLIST_JAR) + +################################################################################ + +LINK_OPT_DIR := $(SUPPORT_OUTPUTDIR)/link_opt +CLASSLIST_FILE := $(LINK_OPT_DIR)/classlist +JLI_TRACE_FILE := $(LINK_OPT_DIR)/jli_trace.out + +# If an external buildjdk has been supplied, we don't build a separate interim +# image, so just use the external build jdk instead. +ifeq ($(EXTERNAL_BUILDJDK), true) + INTERIM_IMAGE_DIR := $(BUILD_JDK) +endif + +$(CLASSLIST_FILE): $(INTERIM_IMAGE_DIR)/bin/java$(EXE_SUFFIX) $(CLASSLIST_JAR) + $(call MakeDir, $(LINK_OPT_DIR)) + $(call LogInfo, Generating $(patsubst $(OUTPUT_ROOT)/%, %, $@)) + $(call LogInfo, Generating $(patsubst $(OUTPUT_ROOT)/%, %, $(JLI_TRACE_FILE))) + $(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -XX:DumpLoadedClassList=$@ \ + -Djava.lang.invoke.MethodHandle.TRACE_RESOLVE=true \ + -cp $(SUPPORT_OUTPUTDIR)/classlist.jar \ + build.tools.classlist.HelloClasslist \ + $(LOG_DEBUG) 2>&1 > $(JLI_TRACE_FILE) + +# The jli trace is created by the same recipe as classlist. By declaring these +# dependencies, make will correctly rebuild both jli trace and classlist +# incrementally using the single recpie above. +$(CLASSLIST_FILE): $(JLI_TRACE_FILE) +$(JLI_TRACE_FILE): $(INTERIM_IMAGE_DIR)/bin/java$(EXE_SUFFIX) $(CLASSLIST_JAR) + +TARGETS += $(CLASSLIST_FILE) $(JLI_TRACE_FILE) + +# Copy the classlist file into java.base libs +$(eval $(call SetupCopyFiles, COPY_CLASSLIST, \ + FILES := $(CLASSLIST_FILE), \ + DEST := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base, \ +)) + +TARGETS += $(COPY_CLASSLIST) + +################################################################################ + +all: $(TARGETS)