--- 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
+# - <outputdir>/modules/<module> 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 <outputdir>/tmp/modules/<MODULE>
+# 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 <outputdir>/modules directory.
+#
+# 1. Unpack all jars in the <builddir>/lib directory to a temporary
+# location (<outputdir>/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 (<outputdir>/modules/<module>)
+# 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
+# <outputdir>/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)