diff -r 925408ac04c2 -r 7d382dfe6e55 jdk/make/modules/Makefile --- a/jdk/make/modules/Makefile Mon Jan 18 17:53:26 2010 +0100 +++ b/jdk/make/modules/Makefile Mon Jan 18 15:23:14 2010 -0800 @@ -23,65 +23,83 @@ # have any questions. # -# -# Modularizing the JDK -# - BUILDDIR = .. include $(BUILDDIR)/common/Defs.gmk -CLASSANALYZER_JAR=$(BUILDTOOLJARDIR)/classanalyzer.jar -JAVA_FLAGS=$(JAVA_TOOLS_FLAGS) -Xbootclasspath:$(CLASSBINDIR) +# +# Modularizing the JDK +# - Post jdk build process until the source tree is restructured +# for modules build +# - /modules/ will be created for each module. +# +# Steps: +# 0. During jdk build before this makefile is invoked, classes, +# resource files, and other non-class files such as native libraries, +# properties file, images, etc are created. +# +# Non-class files are copied to /tmp/modules/ +# directory in this step to prepare for the post-build modularization. +# +# The MODULE variable defined in other makefiles specifies +# the lowest-level module that the non-class files belong to. +# The name might or might not be the same as the name of the modules +# in the resulting /modules directory. +# +# 1. Unpack all jars in the /lib directory to a temporary +# location (/tmp/modules/classes) to prepare for modules +# creation. +# +# 2. Run ClassAnalyzer tool to analyze all jdk classes and generate +# class list for all modules and also perform dependency analysis. +# +# Input configuration files :- +# +# modules.config : defines the low-level modules and specifies +# what classes and resource files each module includes. +# modules.group : defines the module groups and its members. +# jdk7.depconfig : lists the dynamic dependencies including +# use of reflection Class.forName and JNI FindClass and +# service provider. +# optional.depconfig : lists the optional dependencies +# +# 3. Create one directory for each module (/modules/) +# based on the output files from (2). +# +# modules.list lists the modules to be created for the modules +# build and its members. For each module (m) in modules.list, +# a. create $m/lib/$m.jar with all classes and resource files +# listed in $m.classlist and $m.resources respectively. +# b. copy all non-class files from its members to +# /modules/$m. -MODULE_LIB = $(ABS_OUTPUTDIR)/modules + MAINMANIFEST=$(JDK_TOPDIR)/make/tools/manifest.mf MODULE_JAR_MANIFEST_FILE=$(ABS_TEMPDIR)/manifest.tmp -TMP=$(ABS_TEMPDIR)/modules -MODULE_CLASSLIST = $(TMP)/classlist -MODULE_CLASSES = $(TMP)/classes +TMP = $(ABS_MODULES_TEMPDIR) +MODULE_CLASSLIST = $(ABS_MODULES_TEMPDIR)/classlist +MODULE_CLASSES = $(ABS_MODULES_TEMPDIR)/classes MODULES_LIST = $(MODULE_CLASSLIST)/modules.list -SUBDIRS = tools -all build clean clobber:: - $(SUBDIRS-loop) - all:: unpack-jars gen-classlist modularize -$(CLASSANALYZER_JAR): - $(CD) tools && $(MAKE) all - JAR_LIST := $(shell $(FIND) $(ABS_OUTPUTDIR)/lib -name \*.jar -print) unpack-jars: + @$(ECHO) ">>>Making "$@" @ `$(DATE)` ..." $(RM) -rf $(MODULE_CLASSES) $(MKDIR) -p $(MODULE_CLASSES) $(CP) -rf $(CLASSBINDIR)/* $(MODULE_CLASSES) - for jf in $(JAR_LIST) ; do \ + @for jf in $(JAR_LIST) ; do \ $(CD) $(MODULE_CLASSES) && $(BOOT_JAR_CMD) xf $$jf $(BOOT_JAR_JFLAGS);\ done - -gen-classlist: $(CLASSANALYZER_JAR) - @$(ECHO) ">>>Making "$@" @ `$(DATE)` ..." - @$(RM) -rf $(MODULE_CLASSLIST) - @$(MKDIR) -p $(MODULE_CLASSLIST) + @$(ECHO) ">>>Finished making "$@" @ `$(DATE)` ..." - @# Use java in the default tool directory. - @# OUTPUTDIR for solaris 64-bit doesn't have the tools. - $(JAVA_TOOLS_DIR)/java $(JAVA_FLAGS) \ - -Dclassanalyzer.debug \ - -jar $(CLASSANALYZER_JAR) \ - -jdkhome $(OUTPUTDIR) \ - -config modules.config \ - -config modules.group \ - -depconfig jdk7.depconfig \ - -depconfig optional.depconfig \ - -showdynamic \ - -output $(MODULE_CLASSLIST) - @$(ECHO) ">>>Finished making "$@" @ `$(DATE)` ..." +gen-classlist: + $(CD) tools && $(MAKE) all modularize: $(MODULE_JAR_MANIFEST_FILE) @$(ECHO) ">>>Making "$@" @ `$(DATE)` ..." - @$(RM) -rf $(MODULE_LIB) + @$(RM) -rf $(MODULES_DIR) @# create jar file for modules and @# copy other files from all members of this module @@ -91,16 +109,16 @@ if [ -f $(MODULE_CLASSLIST)/$$m.resources ] ; then \ $(SED) -e 's%\\%\/%g' < $(MODULE_CLASSLIST)/$$m.resources >> $(TMP)/tmp.cf ; \ fi ; \ - $(MKDIR) -p $(MODULE_LIB)/$$m/lib; \ + $(MKDIR) -p $(ABS_MODULES_DIR)/$$m/lib; \ $(CD) $(MODULE_CLASSES) && \ $(BOOT_JAR_CMD) c0mf $(MODULE_JAR_MANIFEST_FILE) \ - $(MODULE_LIB)/$$m/lib/$$m.jar \ + $(ABS_MODULES_DIR)/$$m/lib/$$m.jar \ @$(TMP)/tmp.cf \ $(BOOT_JAR_JFLAGS); \ for s in `$(GREP) "^$$m" $(MODULES_LIST)` ; do \ if [ -d $(TMP)/$$s ] ; then \ - $(CP) -rf $(TMP)/$$s/* $(MODULE_LIB)/$$m; \ - $(RM) -rf $(MODULE_LIB)/$$m/classes; \ + $(CP) -rf $(TMP)/$$s/* $(ABS_MODULES_DIR)/$$m; \ + $(RM) -rf $(ABS_MODULES_DIR)/$$m/classes; \ fi \ done \ done @@ -112,6 +130,5 @@ clean clobber:: $(RM) -rf $(MODULE_CLASSLIST) - $(RM) -rf $(MODULE_LIB) + $(RM) -rf $(MODULES_DIR) $(RM) $(MODULE_JAR_MANIFEST_FILE) - $(RM) $(CLASSANALYZER_JAR)