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