44 )) 45 46 TARGETS += $(CLASSLIST_JAR) 47 48 ################################################################################ 49 50 LINK_OPT_DIR := $(SUPPORT_OUTPUTDIR)/link_opt 51 CLASSLIST_FILE := $(LINK_OPT_DIR)/classlist 52 JLI_TRACE_FILE := $(LINK_OPT_DIR)/default_jli_trace.txt 53 54 # If an external buildjdk has been supplied, we don't build a separate interim 55 # image, so just use the external build jdk instead. 56 ifeq ($(EXTERNAL_BUILDJDK), true) 57 INTERIM_IMAGE_DIR := $(BUILD_JDK) 58 endif 59 60 $(CLASSLIST_FILE): $(INTERIM_IMAGE_DIR)/bin/java$(EXE_SUFFIX) $(CLASSLIST_JAR) 61 $(call MakeDir, $(LINK_OPT_DIR)) 62 $(call LogInfo, Generating $(patsubst $(OUTPUTDIR)/%, %, $@)) 63 $(call LogInfo, Generating $(patsubst $(OUTPUTDIR)/%, %, $(JLI_TRACE_FILE))) 64 $(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -XX:DumpLoadedClassList=$@.tmp \ 65 -Djava.lang.invoke.MethodHandle.TRACE_RESOLVE=true \ 66 -cp $(SUPPORT_OUTPUTDIR)/classlist.jar \ 67 build.tools.classlist.HelloClasslist \ 68 $(LOG_DEBUG) 2>&1 > $(JLI_TRACE_FILE) 69 $(GREP) -v HelloClasslist $@.tmp > $@ 70 $(RM) -r $@.tmp 71 72 # The jli trace is created by the same recipe as classlist. By declaring these 73 # dependencies, make will correctly rebuild both jli trace and classlist 74 # incrementally using the single recipe above. 75 $(CLASSLIST_FILE): $(JLI_TRACE_FILE) 76 $(JLI_TRACE_FILE): $(INTERIM_IMAGE_DIR)/bin/java$(EXE_SUFFIX) $(CLASSLIST_JAR) 77 78 TARGETS += $(CLASSLIST_FILE) $(JLI_TRACE_FILE) 79 80 # Copy the classlist file into java.base libs 81 $(eval $(call SetupCopyFiles, COPY_CLASSLIST, \ 82 FILES := $(CLASSLIST_FILE), \ 83 DEST := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base, \ 84 )) 85 86 TARGETS += $(COPY_CLASSLIST) 87 88 # Copy the default_jli_trace.txt file into jdk.jlink 89 $(eval $(call SetupCopyFiles, COPY_JLI_TRACE, \ 90 FILES := $(JLI_TRACE_FILE), \ | 44 )) 45 46 TARGETS += $(CLASSLIST_JAR) 47 48 ################################################################################ 49 50 LINK_OPT_DIR := $(SUPPORT_OUTPUTDIR)/link_opt 51 CLASSLIST_FILE := $(LINK_OPT_DIR)/classlist 52 JLI_TRACE_FILE := $(LINK_OPT_DIR)/default_jli_trace.txt 53 54 # If an external buildjdk has been supplied, we don't build a separate interim 55 # image, so just use the external build jdk instead. 56 ifeq ($(EXTERNAL_BUILDJDK), true) 57 INTERIM_IMAGE_DIR := $(BUILD_JDK) 58 endif 59 60 $(CLASSLIST_FILE): $(INTERIM_IMAGE_DIR)/bin/java$(EXE_SUFFIX) $(CLASSLIST_JAR) 61 $(call MakeDir, $(LINK_OPT_DIR)) 62 $(call LogInfo, Generating $(patsubst $(OUTPUTDIR)/%, %, $@)) 63 $(call LogInfo, Generating $(patsubst $(OUTPUTDIR)/%, %, $(JLI_TRACE_FILE))) 64 $(FIXPATH) $(INTERIM_IMAGE_DIR)/bin/java -XX:DumpLoadedClassList=$@.raw \ 65 -Djava.lang.invoke.MethodHandle.TRACE_RESOLVE=true \ 66 -cp $(SUPPORT_OUTPUTDIR)/classlist.jar \ 67 build.tools.classlist.HelloClasslist \ 68 $(LOG_DEBUG) 2>&1 > $(JLI_TRACE_FILE) 69 $(GREP) -v HelloClasslist $@.raw > $@ 70 71 # The jli trace is created by the same recipe as classlist. By declaring these 72 # dependencies, make will correctly rebuild both jli trace and classlist 73 # incrementally using the single recipe above. 74 $(CLASSLIST_FILE): $(JLI_TRACE_FILE) 75 $(JLI_TRACE_FILE): $(INTERIM_IMAGE_DIR)/bin/java$(EXE_SUFFIX) $(CLASSLIST_JAR) 76 77 TARGETS += $(CLASSLIST_FILE) $(JLI_TRACE_FILE) 78 79 # Copy the classlist file into java.base libs 80 $(eval $(call SetupCopyFiles, COPY_CLASSLIST, \ 81 FILES := $(CLASSLIST_FILE), \ 82 DEST := $(SUPPORT_OUTPUTDIR)/modules_libs/java.base, \ 83 )) 84 85 TARGETS += $(COPY_CLASSLIST) 86 87 # Copy the default_jli_trace.txt file into jdk.jlink 88 $(eval $(call SetupCopyFiles, COPY_JLI_TRACE, \ 89 FILES := $(JLI_TRACE_FILE), \ |