4524
+ − 1
#
+ − 2
# Copyright 2009 Sun Microsystems, Inc. All Rights Reserved.
+ − 3
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ − 4
#
+ − 5
# This code is free software; you can redistribute it and/or modify it
+ − 6
# under the terms of the GNU General Public License version 2 only, as
+ − 7
# published by the Free Software Foundation. Sun designates this
+ − 8
# particular file as subject to the "Classpath" exception as provided
+ − 9
# by Sun in the LICENSE file that accompanied this code.
+ − 10
#
+ − 11
# This code is distributed in the hope that it will be useful, but WITHOUT
+ − 12
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ − 13
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ − 14
# version 2 for more details (a copy is included in the LICENSE file that
+ − 15
# accompanied this code).
+ − 16
#
+ − 17
# You should have received a copy of the GNU General Public License version
+ − 18
# 2 along with this work; if not, write to the Free Software Foundation,
+ − 19
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ − 20
#
+ − 21
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ − 22
# CA 95054 USA or visit www.sun.com if you need additional information or
+ − 23
# have any questions.
+ − 24
#
+ − 25
+ − 26
#
+ − 27
# Modularizing the JDK
+ − 28
#
+ − 29
+ − 30
BUILDDIR = ..
+ − 31
include $(BUILDDIR)/common/Defs.gmk
+ − 32
+ − 33
CLASSANALYZER_JAR=$(BUILDTOOLJARDIR)/classanalyzer.jar
+ − 34
JAVA_FLAGS=$(JAVA_TOOLS_FLAGS) -Xbootclasspath:$(CLASSBINDIR)
+ − 35
+ − 36
MODULE_LIB = $(ABS_OUTPUTDIR)/modules
+ − 37
MAINMANIFEST=$(JDK_TOPDIR)/make/tools/manifest.mf
+ − 38
MODULE_JAR_MANIFEST_FILE=$(ABS_TEMPDIR)/manifest.tmp
+ − 39
+ − 40
TMP=$(ABS_TEMPDIR)/modules
+ − 41
MODULE_CLASSLIST = $(TMP)/classlist
+ − 42
MODULE_CLASSES = $(TMP)/classes
+ − 43
MODULE_LIST = $(MODULE_CLASSLIST)/modules.list
+ − 44
+ − 45
# Modules in the modules/ext directory
+ − 46
EXT_MODULES = localedata security-sunec security-sunjce
+ − 47
+ − 48
# Build PKCS#11 on all platforms except 64-bit Windows.
+ − 49
# We exclude windows-amd64 because we don't have any
+ − 50
# 64-bit PKCS#11 implementations to test with on that platform.
+ − 51
PKCS11 = security-sunpkcs11
+ − 52
ifeq ($(ARCH_DATA_MODEL), 64)
+ − 53
ifeq ($(PLATFORM), windows)
+ − 54
PKCS11 =
+ − 55
endif
+ − 56
endif
+ − 57
+ − 58
EXT_MODULES += $(PKCS11)
+ − 59
+ − 60
# Build Microsoft CryptoAPI provider only on (non-64-bit) Windows platform.
+ − 61
ifeq ($(PLATFORM), windows)
+ − 62
ifneq ($(ARCH_DATA_MODEL), 64)
+ − 63
EXT_MODULES += security-sunmscapi
+ − 64
endif
+ − 65
endif
+ − 66
+ − 67
+ − 68
JDK_MODULES = tools
+ − 69
+ − 70
SUBDIRS = tools
+ − 71
all build clean clobber::
+ − 72
$(SUBDIRS-loop)
+ − 73
+ − 74
all:: unpack-jars gen-classlist modularize
+ − 75
+ − 76
$(CLASSANALYZER_JAR):
+ − 77
$(CD) tools && $(MAKE) all
+ − 78
+ − 79
JAR_LIST := $(shell $(FIND) $(ABS_OUTPUTDIR)/lib -name \*.jar -depth)
+ − 80
unpack-jars:
+ − 81
$(RM) -rf $(MODULE_CLASSES)
+ − 82
$(MKDIR) -p $(MODULE_CLASSES)
+ − 83
$(CP) -rf $(CLASSBINDIR)/* $(MODULE_CLASSES)
+ − 84
for jf in $(JAR_LIST) ; do \
+ − 85
$(CD) $(MODULE_CLASSES) && $(BOOT_JAR_CMD) xf $$jf $(BOOT_JAR_JFLAGS);\
+ − 86
done
+ − 87
+ − 88
gen-classlist: $(CLASSANALYZER_JAR)
+ − 89
@$(ECHO) ">>>Making "$@" @ `$(DATE)` ..."
+ − 90
@$(RM) -rf $(MODULE_CLASSLIST)
+ − 91
@$(MKDIR) -p $(MODULE_CLASSLIST)
+ − 92
+ − 93
@# Use java in the default tool directory.
+ − 94
@# OUTPUTDIR for solaris 64-bit doesn't have the tools.
+ − 95
$(JAVA_TOOLS_DIR)/java $(JAVA_FLAGS) \
+ − 96
-Dclassanalyzer.debug \
+ − 97
-jar $(CLASSANALYZER_JAR) \
+ − 98
-jdkhome $(OUTPUTDIR) \
+ − 99
-config modules.config \
+ − 100
-config modules.group \
+ − 101
-depconfig jdk7.depconfig \
+ − 102
-depconfig optional.depconfig \
+ − 103
-showdynamic \
+ − 104
-output $(MODULE_CLASSLIST)
+ − 105
@$(ECHO) ">>>Finished making "$@" @ `$(DATE)` ..."
+ − 106
+ − 107
modularize: $(MODULE_JAR_MANIFEST_FILE)
+ − 108
@$(ECHO) ">>>Making "$@" @ `$(DATE)` ..."
+ − 109
@$(RM) -rf $(MODULE_LIB)
+ − 110
@$(MKDIR) -p $(MODULE_LIB)/lib
+ − 111
@$(MKDIR) -p $(MODULE_LIB)/jre/lib/ext
+ − 112
+ − 113
@# create modules
+ − 114
for m in `$(NAWK) '{print $$1}' $(MODULE_LIST)` ; do \
+ − 115
$(ECHO) "Creating module $$m" ; \
+ − 116
$(SED) -e 's%\\%\/%g' < $(MODULE_CLASSLIST)/$$m.classlist > $(TMP)/tmp.cf ; \
+ − 117
if [ -f $(MODULE_CLASSLIST)/$$m.resources ] ; then \
+ − 118
$(SED) -e 's%\\%\/%g' < $(MODULE_CLASSLIST)/$$m.resources >> $(TMP)/tmp.cf ; \
+ − 119
fi ; \
+ − 120
$(CD) $(MODULE_CLASSES) && \
+ − 121
$(BOOT_JAR_CMD) c0mf $(MODULE_JAR_MANIFEST_FILE) \
+ − 122
$(MODULE_LIB)/$$m.jar \
+ − 123
@$(TMP)/tmp.cf \
+ − 124
$(BOOT_JAR_JFLAGS) ; \
+ − 125
done
+ − 126
@$(CD) $(MODULE_CLASSES) && $(java-vm-cleanup)
+ − 127
@# move modules to lib, jre/lib, or jre/lib/ext
+ − 128
for m in $(EXT_MODULES) ; do \
+ − 129
$(MV) $(MODULE_LIB)/$$m.jar $(MODULE_LIB)/jre/lib/ext ; \
+ − 130
done
+ − 131
for m in $(JDK_MODULES) ; do \
+ − 132
$(MV) $(MODULE_LIB)/$$m.jar $(MODULE_LIB)/lib ; \
+ − 133
done
+ − 134
$(MV) $(MODULE_LIB)/*.jar $(MODULE_LIB)/jre/lib
+ − 135
@$(ECHO) ">>>Finished making "$@" @ `$(DATE)` ..."
+ − 136
+ − 137
$(MODULE_JAR_MANIFEST_FILE):
+ − 138
$(SED) -e "s/@@RELEASE@@/$(RELEASE)/" $(MAINMANIFEST) > $@
+ − 139
+ − 140
clean clobber::
+ − 141
$(RM) -rf $(MODULE_CLASSLIST)
+ − 142
$(RM) -rf $(MODULE_LIB)
+ − 143
$(RM) -f $(MODULE_JAR_MANIFEST_FILE)
+ − 144
$(RM) -f $(CLASSANALYZER_JAR)
+ − 145