1 # 2 # Copyright (c) 2011, 2012, Oracle and/or its affiliates. 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. Oracle designates this 8 # particular file as subject to the "Classpath" exception as provided 9 # by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 # or visit www.oracle.com if you need additional information or have any 23 # questions. 24 # 25 26 # All .properties files to be compiled are appended to this variable. 27 ALL_COMPILED_PROPSOURCES:= 28 # All generated .java files from compilation are appended to this variable. 29 ALL_COMPILED_PROPJAVAS:= 30 # The (very long) command line for compilation, stored in a file, prior to use. 31 COMPILE_PROPCMDLINE:= 32 33 # All .properties files to be cleaned are appended to this variable. 34 ALL_CLEANED_PROPSOURCES:= 35 # All generated cleaned .properties files from cleaning are appended to this variable. 36 ALL_CLEANED_PROPOUTPUT:= 37 # The (very long) command line for cleaning, stored in a file, prior to use. 38 CLEAN_PROPCMDLINE:= 39 40 define add_properties_to_compile 41 # $1 is the name of the properties group 42 # $2 is the files belonging to this group 43 # $3 is the super class for the generated java file. 44 # $4 is a from pattern for translating stripped name from source to target 45 # $5 is the to pattern replacing $3 in the target 46 47 # Strip away prefix and suffix, 48 # leaving for example: sun/util/resources/CurrencyNames_sv 49 $1_PROPPATHS:=$$(patsubst $(JDK_TOPDIR)/src/$(LEGACY_OPENJDK_TARGET_OS_API)/classes/%.properties,%,\ 50 $$(patsubst $(JDK_TOPDIR)/src/share/classes/%.properties,%,$2)) 51 52 # Apply optional name transformation, example: hz_TW -> hz_HK 53 $(if $4,$1_PROPPATHS:=$$(patsubst $4,$5,$$($1_PROPPATHS))) 54 55 # Accumulate all found properties files. 56 ALL_COMPILED_PROPSOURCES+=$2 57 58 # Generate the list of to be created java files. 59 ALL_COMPILED_PROPJAVAS+=$$(patsubst %,$(JDK_OUTPUTDIR)/gensrc_properties/%.java,$$($1_PROPPATHS)) 60 61 # Now generate a sequence of "-compile ...CurrencyNames_sv.properties ...CurrencyNames_sv.java ListResourceBundle" 62 # suitable to be fed into the CompileProperties command. 63 COMPILE_PROPCMDLINE+=$$(subst _SPACE_,$(SPACE),$$(join $$(addprefix -compile_SPACE_,$2), \ 64 $$(addsuffix _SPACE_$(strip $3),\ 65 $$(addprefix _SPACE_$(JDK_OUTPUTDIR)/gensrc_properties/,\ 66 $$(addsuffix .java,$$($1_PROPPATHS)))))) 67 endef 68 69 define add_properties_to_clean 70 # $1 is the name of the properties group 71 # $2 is the files belonging to this group 72 # $3 is a from pattern for translating stripped name from source to target 73 # $4 is the to pattern replacing $3 in the target 74 # $5 optional name of extra directory to put properties files in (ex: resources) 75 76 # Strip away prefix and suffix, 77 # leaving for example: sun/util/resources/CurrencyNames_sv 78 $1_PROPPATHS:=$$(patsubst $(JDK_TOPDIR)/src/$(LEGACY_OPENJDK_TARGET_OS_API)/classes/%.properties,%,\ 79 $$(patsubst $(JDK_TOPDIR)/src/share/classes/%.properties,%,$2)) 80 81 # Apply optional name transformation, example: hz_TW -> hz_HK 82 $(if $3,$1_PROPPATHS:=$$(patsubst $3,$4,$$($1_PROPPATHS))) 83 84 # Accumulate all found properties files. 85 ALL_CLEANED_PROPSOURCES+=$2 86 87 # Generate the list of to be created java files. 88 $1_PROPOUTPUT:=$$(patsubst %,$(JDK_OUTPUTDIR)/classes/%.properties,$$($1_PROPPATHS)) 89 # If the properties target file isn't in a "resources" dir, add one. 90 ifneq ($5,) 91 $1_PROPOUTPUT:=$$(foreach p,$$($1_PROPOUTPUT), $$(dir $$p)$5/$$(notdir $$p)) 92 endif 93 94 ALL_CLEANED_PROPOUTPUT+=$$($1_PROPOUTPUT) 95 96 # Now generate a sequence of "-clean ...[src]...CurrencyNames_sv.properties ...[build]...CurrencyNames_sv.properties" 97 # suitable to be fed into the StripProperties command. 98 CLEAN_PROPCMDLINE+=$$(subst _SPACE_,$(SPACE),$$(join $$(addprefix -clean_SPACE_,$2), \ 99 $$(addprefix _SPACE_,$$($1_PROPOUTPUT)))) 100 endef 101 102 # Some packages contain pregenerated java files instead of properties files. 103 # But unfortunately not all properties should be converted, some should be 104 # copied....argggghhh. 105 106 # For example: 107 # sun/applet/resources 108 # sun/misc/resources 109 # sun/text/resources 110 # sun/tools/jconsole/resources 111 # sun/tools/native2ascii/resources 112 # sun/util/resources 113 114 # Some packages have properties that need to be converted to java source files. 115 116 #com/sun/accessibility/internal/resources 117 $(eval $(call add_properties_to_compile,COM_SUN_ACCESSIBILITY,\ 118 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/accessibility/internal/resources -name "*.properties"),\ 119 ListResourceBundle)) 120 $(eval $(call add_properties_to_compile,COM_SUN_ACCESSIBILITY_HK,\ 121 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/accessibility/internal/resources -name "*.properties"),\ 122 ListResourceBundle,%zh_TW,%zh_HK)) 123 #com/sun/imageio/plugins/common 124 $(eval $(call add_properties_to_clean,COM_SUN_IMAGEIO,\ 125 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/imageio -name "*.properties"))) 126 #com/sun/java/swing/plaf/gtk/resources 127 ifneq ($(OPENJDK_TARGET_OS), windows) 128 # Only compile GTK resource bundles on Solaris/Linux 129 $(eval $(call add_properties_to_compile,COM_SUN_SWING_PLAF_GTK,\ 130 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/java/swing/plaf/gtk/resources -name "*.properties"),\ 131 ListResourceBundle)) 132 $(eval $(call add_properties_to_compile,COM_SUN_SWING_PLAF_GTK_HK,\ 133 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/java/swing/plaf/gtk/resources -name "*.properties"),\ 134 ListResourceBundle,%zh_TW,%zh_HK)) 135 endif 136 #com/sun/java/swing/plaf/motif/resources 137 $(eval $(call add_properties_to_compile,COM_SUN_SWING_PLAF_MOTIF,\ 138 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/java/swing/plaf/motif/resources -name "*.properties"),\ 139 ListResourceBundle)) 140 $(eval $(call add_properties_to_compile,COM_SUN_SWING_PLAF_MOTIF_HK,\ 141 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/java/swing/plaf/motif/resources -name "*.properties"),\ 142 ListResourceBundle,%zh_TW,%zh_HK)) 143 #com/sun/java/swing/plaf/windows/resources 144 $(eval $(call add_properties_to_compile,COM_SUN_SWING_PLAF_WINDOWS,\ 145 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/java/swing/plaf/windows/resources -name "*.properties"),\ 146 ListResourceBundle)) 147 $(eval $(call add_properties_to_compile,COM_SUN_SWING_PLAF_WINDOWS_HK,\ 148 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/java/swing/plaf/windows/resources -name "*.properties"),\ 149 ListResourceBundle,%zh_TW,%zh_HK)) 150 #com/sun/java/util/jar/pack 151 $(eval $(call add_properties_to_clean,JNDI_COSNAMING,\ 152 $(JDK_TOPDIR)/src/share/classes/com/sun/java/util/jar/pack/intrinsic.properties)) 153 #com/sun/jndi/cosnaming 154 $(eval $(call add_properties_to_clean,JNDI_COSNAMING,\ 155 $(JDK_TOPDIR)/src/share/classes/com/sun/jndi/cosnaming/jndiprovider.properties)) 156 #com/sun/jndi/ldap 157 $(eval $(call add_properties_to_clean,JNDI_COSNAMING,\ 158 $(JDK_TOPDIR)/src/share/classes/com/sun/jndi/ldap/jndiprovider.properties)) 159 160 #com/sun/org/apache/xml/internal/security/resource 161 #FIXME: The "xmlsecurity*.properties" pattern is not ideal; we might want to find 162 #a better way to select the properties files that are needed. 163 $(eval $(call add_properties_to_clean,XML_SECURITY,\ 164 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/org/apache/xml/internal/security/resource -name "xmlsecurity*.properties"))) 165 166 #com/sun/rowset 167 $(eval $(call add_properties_to_clean,COM_SUN_ROWSET,\ 168 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/rowset -name "*.properties"))) 169 $(eval $(call add_properties_to_clean,COM_SUN_ROWSET_HK,\ 170 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/rowset -name "*zh_TW.properties"),\ 171 %zh_TW,%zh_HK)) 172 173 #com/sun/servicetag/resources 174 #com/sun/swing/internal/plaf/basic/resources 175 $(eval $(call add_properties_to_compile,COM_SUN_SWING_PLAF_BASIC,\ 176 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/swing/internal/plaf/basic/resources -name "*.properties"),\ 177 ListResourceBundle)) 178 $(eval $(call add_properties_to_compile,COM_SUN_SWING_PLAF_BASIC_HK,\ 179 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/swing/internal/plaf/basic/resources -name "*.properties"),\ 180 ListResourceBundle,%zh_TW,%zh_HK)) 181 #com/sun/swing/internal/plaf/metal/resources 182 $(eval $(call add_properties_to_compile,COM_SUN_SWING_PLAF_METAL,\ 183 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/swing/internal/plaf/metal/resources -name "*.properties"),\ 184 ListResourceBundle)) 185 $(eval $(call add_properties_to_compile,COM_SUN_SWING_PLAF_METAL_HK,\ 186 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/swing/internal/plaf/metal/resources -name "*.properties"),\ 187 ListResourceBundle,%zh_TW,%zh_HK)) 188 #com/sun/swing/internal/plaf/synth/resources 189 $(eval $(call add_properties_to_compile,COM_SUN_SWING_PLAF_SYNTH,\ 190 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/swing/internal/plaf/synth/resources -name "*.properties"),\ 191 ListResourceBundle)) 192 $(eval $(call add_properties_to_compile,COM_SUN_SWING_PLAF_SYNTH_HK,\ 193 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/swing/internal/plaf/synth/resources -name "*.properties"),\ 194 ListResourceBundle,%zh_TW,%zh_HK)) 195 196 #com/sun/tools/jdi/resources 197 $(eval $(call add_properties_to_compile,COM_SUN_TOOLS_JDI,\ 198 $(shell find $(JDK_TOPDIR)/src/share/classes/com/sun/tools/jdi/resources -name "*.properties"),\ 199 ListResourceBundle)) 200 201 #com/sun/tools/script/shell 202 #java/util 203 #javax/sql/rowset 204 $(eval $(call add_properties_to_clean,JAVAX_SQL_ROWSET,\ 205 $(shell find $(JDK_TOPDIR)/src/share/classes/javax/sql/rowset -name "*.properties"))) 206 #sun/awt/resources 207 $(eval $(call add_properties_to_compile,SUN_AWT,\ 208 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/awt/resources -name "*.properties"),\ 209 ListResourceBundle)) 210 $(eval $(call add_properties_to_compile,SUN_AWT_HK,\ 211 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/awt/resources -name "*.properties"),\ 212 ListResourceBundle,%zh_TW,%zh_HK)) 213 #sun/launcher/resources 214 $(eval $(call add_properties_to_compile,SUN_LAUNCHER,\ 215 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/launcher/resources -name "*.properties"),\ 216 ListResourceBundle)) 217 $(eval $(call add_properties_to_compile,SUN_LAUNCHER_HK,\ 218 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/launcher/resources -name "*.properties"),\ 219 ListResourceBundle,%zh_TW,%zh_HK)) 220 #sun/management/resources 221 $(eval $(call add_properties_to_compile,SUN_MANAGEMENT,\ 222 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/management/resources -name "*.properties"),\ 223 ListResourceBundle)) 224 $(eval $(call add_properties_to_compile,SUN_MANAGEMENT_KH,\ 225 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/management/resources -name "*.properties"),\ 226 ListResourceBundle,%zh_TW,%zh_HK)) 227 #sun/print 228 #sun/print/resources 229 $(eval $(call add_properties_to_compile,SUN_PRINT,\ 230 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/print/resources -name "*.properties"),\ 231 ListResourceBundle)) 232 $(eval $(call add_properties_to_compile,SUN_PRINT_HK,\ 233 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/print/resources -name "*.properties"),\ 234 ListResourceBundle,%zh_TW,%zh_HK)) 235 #sun/rmi/registry/resources 236 $(eval $(call add_properties_to_clean,SUN_RMI_REGISTRY,\ 237 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/rmi/registry/resources -name "*.properties"))) 238 $(eval $(call add_properties_to_clean,SUN_RMI_REGISTRY_HK,\ 239 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/rmi/registry/resources -name "*zh_TW.properties"),\ 240 %zh_TW,%zh_HK)) 241 242 #sun/rmi/rmic/resources 243 $(eval $(call add_properties_to_clean,SUN_RMI_RMIC,\ 244 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/rmi/rmic/resources -name "*.properties"))) 245 246 #sun/rmi/server/resources 247 $(eval $(call add_properties_to_clean,SUN_RMI_SERVER,\ 248 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/rmi/server/resources -name "*.properties"))) 249 $(eval $(call add_properties_to_clean,SUN_RMI_SERVER_HK,\ 250 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/rmi/server/resources -name "*zh_TW.properties"),\ 251 %zh_TW,%zh_HK)) 252 253 # sun/tools/jar/resources 254 $(eval $(call add_properties_to_compile,SUN_TOOLS_JAR,\ 255 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/tools/jar/resources -name "*.properties"),\ 256 ListResourceBundle)) 257 $(eval $(call add_properties_to_compile,SUN_TOOLS_JAR_HK,\ 258 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/tools/jar/resources -name "*.properties"),\ 259 ListResourceBundle,%zh_TW,%zh_HK)) 260 261 #sun/tools/javac/resources 262 # It's unclear if the other localized property files here are supposed to be copied or not 263 # but the old build system didn't copy them. 264 $(eval $(call add_properties_to_clean,SUN_TOOLS_SERIALVER,\ 265 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/tools/javac/resources -name "javac.properties"))) 266 267 #sun/tools/jconsole/resources 268 $(eval $(call add_properties_to_clean,SUN_TOOLS_JCONSOLE,\ 269 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/tools/jconsole/resources -name "*.properties"))) 270 271 #sun/tools/serialver 272 $(eval $(call add_properties_to_clean,SUN_TOOLS_SERIALVER,\ 273 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/tools/serialver -name "*.properties"),,,resources)) 274 275 #sun/util/logging/resources 276 $(eval $(call add_properties_to_compile,SUN_UTIL_LOGGING,\ 277 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/util/logging/resources -name "*.properties"),\ 278 ListResourceBundle)) 279 $(eval $(call add_properties_to_compile,SUN_UTIL_LOGGING_HK,\ 280 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/util/logging/resources -name "*.properties"),\ 281 ListResourceBundle,%zh_TW,%zh_HK)) 282 # sun/util/resources 283 $(eval $(call add_properties_to_compile,SUN_UTIL,\ 284 $(shell find $(JDK_TOPDIR)/src/share/classes/sun/util/resources -name "*.properties"),\ 285 LocaleNamesBundle)) 286 287 # Now setup the rule for the generation of the resource bundles. 288 $(JDK_OUTPUTDIR)/gensrc_properties/_the.compiled_properties : $(ALL_COMPILED_PROPSOURCES) $(BUILD_TOOLS) 289 $(RM) -rf $(JDK_OUTPUTDIR)/gensrc_properties/* 290 # Generate all output directories in advance since the build tool does not do that... 291 $(MKDIR) -p $(sort $(dir $(ALL_COMPILED_PROPJAVAS))) 292 $(ECHO) Compiling $(words $(ALL_COMPILED_PROPSOURCES)) properties into resource bundles 293 $(call ListPathsSafely,COMPILE_PROPCMDLINE,\n, >> $(JDK_OUTPUTDIR)/gensrc_properties/_the.cmdline) 294 $(TOOL_COMPILEPROPERTIES) -quiet @$(JDK_OUTPUTDIR)/gensrc_properties/_the.cmdline 295 $(TOUCH) $@ 296 297 # Now setup the rule for the generation of the cleaned properties. 298 # FIXME: We currently don't handle removed properties incrementally. 299 $(JDK_OUTPUTDIR)/classes/_the.cleaned_properties : $(ALL_CLEANED_PROPSOURCES) $(BUILD_TOOLS) 300 $(RM) -f $(JDK_OUTPUTDIR)/classes/_the.cleaned_properties.cmdline 301 # Generate all output directories in advance since the build tool does not do that... 302 $(MKDIR) -p $(sort $(dir $(ALL_CLEANED_PROPOUTPUT))) 303 $(ECHO) Copying and cleaning $(words $(ALL_CLEANED_PROPSOURCES)) properties 304 $(call ListPathsSafely,CLEAN_PROPCMDLINE,\n, >> $(JDK_OUTPUTDIR)/classes/_the.cleaned_properties.cmdline) 305 $(TOOL_STRIPPROPERTIES) @$(JDK_OUTPUTDIR)/classes/_the.cleaned_properties.cmdline 306 $(TOUCH) $@ 307 308 $(ALL_COMPILED_PROPJAVAS) : $(JDK_OUTPUTDIR)/gensrc_properties/_the.compiled_properties 309 310 $(ALL_CLEANED_PROPOUTPUT) : $(JDK_OUTPUTDIR)/classes/_the.cleaned_properties 311 312 313 # Some zh_HK resources are just copied of zh_TW 314 $(JDK_OUTPUTDIR)/gensrc_properties/%_zh_HK.java: $(JDK_TOPDIR)/src/share/classes/%_zh_TW.java 315 $(MKDIR) -p $(@D) 316 $(CAT) $< | $(SED) -e '/class/s/_zh_TW/_zh_HK/' > $@ 317 318 ZH_HK_JAVA:= sun/applet/resources/MsgAppletViewer_zh_HK.java \ 319 sun/misc/resources/Messages_zh_HK.java \ 320 sun/security/util/AuthResources_zh_HK.java \ 321 sun/security/util/Resources_zh_HK.java 322 323 ZH_HK_JAVA_FILES:=$(addprefix $(JDK_OUTPUTDIR)/gensrc_properties/,$(ZH_HK_JAVA)) 324 325 326 GENSRC_PROPERTIES:=$(ALL_COMPILED_PROPJAVAS) $(ALL_CLEANED_PROPOUTPUT) $(ZH_HK_JAVA_FILES)