jdk/make/gensrc/GensrcProperties.gmk
author erikj
Mon, 23 Feb 2015 11:37:36 +0100
changeset 29096 e91fff38083a
parent 27799 097b1d6f6894
child 32833 b99bc9129f51
permissions -rw-r--r--
8073498: Enhance GensrcProperties.gmk to allow an alternative source root Reviewed-by: tbell, mchung, ihse
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12317
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
     1
#
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27088
diff changeset
     2
# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
12317
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
     3
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
     4
#
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
     5
# This code is free software; you can redistribute it and/or modify it
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
     6
# under the terms of the GNU General Public License version 2 only, as
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
     7
# published by the Free Software Foundation.  Oracle designates this
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
     8
# particular file as subject to the "Classpath" exception as provided
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
     9
# by Oracle in the LICENSE file that accompanied this code.
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    10
#
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    11
# This code is distributed in the hope that it will be useful, but WITHOUT
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    12
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    13
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    14
# version 2 for more details (a copy is included in the LICENSE file that
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    15
# accompanied this code).
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    16
#
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    17
# You should have received a copy of the GNU General Public License version
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    18
# 2 along with this work; if not, write to the Free Software Foundation,
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    19
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    20
#
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    21
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    22
# or visit www.oracle.com if you need additional information or have any
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    23
# questions.
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    24
#
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    25
27088
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    26
# This file defines macros that sets up rules for generating java classes
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    27
# from resource bundle properties files.
12317
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    28
27088
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    29
################################################################################
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    30
# Helper macro for SetupCopy-zh_HK.
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    31
define SetupOneCopy-zh_HK
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    32
  $1_$2_TARGET := $$(patsubst $(JDK_TOPDIR)/src/$(MODULE)/share/classes/%, \
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27088
diff changeset
    33
      $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/%, \
27088
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    34
      $$(subst _zh_TW,_zh_HK, $2))
12317
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    35
27088
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    36
  $$($1_$2_TARGET): $2
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    37
	$(MKDIR) -p $$(@D)
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    38
	$(CAT) $$< | $(SED) -e '/class/s/_zh_TW/_zh_HK/' > $$@
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    39
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    40
  $1 += $$($1_$2_TARGET)
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    41
endef
12317
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    42
27088
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    43
################################################################################
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    44
# Creates rules for copying zh_TW resources to zh_HK.
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    45
# Param 1 - Variable to add targets to
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    46
# Param 2 - Files to copy from
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    47
define SetupCopy-zh_HK
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    48
  $$(foreach f, $2, $$(eval $$(call SetupOneCopy-zh_HK,$1,$$f)))
12317
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    49
endef
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    50
23236
7c5997f59e20 8036611: Cleanup of handling of properties and other java resources in the build
erikj
parents: 23010
diff changeset
    51
################################################################################
27088
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    52
# Creates a rule that runs CompileProperties on a set of properties files.
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    53
# Param 1 - Variable to add targets to, must not contain space
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    54
# Param 2 - Properties files to process
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    55
# Param 3 - The super class for the generated classes
29096
e91fff38083a 8073498: Enhance GensrcProperties.gmk to allow an alternative source root
erikj
parents: 27799
diff changeset
    56
# Param 4 - Module path root, defaults to $(JDK_TOPDIR)/src
27088
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    57
define SetupCompileProperties
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    58
  $1_SRCS := $2
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    59
  $1_CLASS := $3
29096
e91fff38083a 8073498: Enhance GensrcProperties.gmk to allow an alternative source root
erikj
parents: 27799
diff changeset
    60
  $1_MODULE_PATH_ROOT := $4
e91fff38083a 8073498: Enhance GensrcProperties.gmk to allow an alternative source root
erikj
parents: 27799
diff changeset
    61
e91fff38083a 8073498: Enhance GensrcProperties.gmk to allow an alternative source root
erikj
parents: 27799
diff changeset
    62
  ifeq ($$($1_MODULE_PATH_ROOT), )
e91fff38083a 8073498: Enhance GensrcProperties.gmk to allow an alternative source root
erikj
parents: 27799
diff changeset
    63
    $1_MODULE_PATH_ROOT := $(JDK_TOPDIR)/src
e91fff38083a 8073498: Enhance GensrcProperties.gmk to allow an alternative source root
erikj
parents: 27799
diff changeset
    64
  endif
27088
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    65
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    66
  # Convert .../src/<module>/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties
27753
a6c284fa0745 8065412: generated source to compile .properties file incorreectly includes the module name in the package name
erikj
parents: 27088
diff changeset
    67
  # to .../support/gensrc/<module>/com/sun/tools/javac/resources/javac_zh_CN.java
27088
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    68
  # Strip away prefix and suffix, leaving for example only: 
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    69
  # "<module>/share/classes/com/sun/tools/javac/resources/javac_zh_CN"
29096
e91fff38083a 8073498: Enhance GensrcProperties.gmk to allow an alternative source root
erikj
parents: 27799
diff changeset
    70
  $1_JAVAS := $$(patsubst $$($1_MODULE_PATH_ROOT)/%, \
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27088
diff changeset
    71
      $(SUPPORT_OUTPUTDIR)/gensrc/%, \
27088
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    72
      $$(patsubst %.properties, %.java, \
27753
a6c284fa0745 8065412: generated source to compile .properties file incorreectly includes the module name in the package name
erikj
parents: 27088
diff changeset
    73
      $$(subst /$(OPENJDK_TARGET_OS)/classes,, \
a6c284fa0745 8065412: generated source to compile .properties file incorreectly includes the module name in the package name
erikj
parents: 27088
diff changeset
    74
      $$(subst /$(OPENJDK_TARGET_OS_TYPE)/classes,, \
a6c284fa0745 8065412: generated source to compile .properties file incorreectly includes the module name in the package name
erikj
parents: 27088
diff changeset
    75
      $$(subst /share/classes,, $$($1_SRCS))))))
27088
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    76
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    77
  # Generate the package dirs for the to be generated java files. Sort to remove
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    78
  # duplicates.
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    79
  $1_DIRS := $$(sort $$(dir $$($1_JAVAS)))
12317
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
    80
27088
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    81
  # Now generate a sequence of:
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    82
  # "-compile ...javac_zh_CN.properties ...javac_zh_CN.java java.util.ListResourceBundle"
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    83
  # suitable to be fed into the CompileProperties command.
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    84
  $1_CMDLINE := $$(subst _SPACE_, $(SPACE), \
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    85
      $$(join $$(addprefix -compile_SPACE_, $$($1_SRCS)), \
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    86
      $$(addsuffix _SPACE_$$($1_CLASS), \
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    87
      $$(addprefix _SPACE_, $$($1_JAVAS)))))
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    88
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27088
diff changeset
    89
  $1_TARGET := $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/_the.$1.done
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27088
diff changeset
    90
  $1_CMDLINE_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/_the.$1.cmdline
13702
efd6a05935b2 7197849: Update new build-infra makefiles
ohair
parents: 13583
diff changeset
    91
27565
729f9700483a 8049367: Modular Run-Time Images
chegar
parents: 27088
diff changeset
    92
# Now setup the rule for the generation of the resource bundles.
27088
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    93
  $$($1_TARGET): $$($1_SRCS) $$($1_JAVAS) $(BUILD_TOOLS_JDK)
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    94
	$(MKDIR) -p $$(@D) $$($1_DIRS)
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    95
	$(ECHO) Compiling $$(words $$($1_SRCS)) properties into resource bundles for $(MODULE)
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    96
	$(RM) $$($1_CMDLINE_FILE)
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    97
	$$(call ListPathsSafely,$1_CMDLINE,\n, >> $$($1_CMDLINE_FILE))
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    98
	$(TOOL_COMPILEPROPERTIES) -quiet @$$($1_CMDLINE_FILE)
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
    99
	$(TOUCH) $$@
13702
efd6a05935b2 7197849: Update new build-infra makefiles
ohair
parents: 13583
diff changeset
   100
27088
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
   101
  $$($1_JAVAS): $$($1_SRCS)
12317
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
   102
27088
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
   103
  # Create zh_HK versions of all zh_TW files created above
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
   104
  $$(eval $$(call SetupCopy-zh_HK,$1_HK,$$(filter %_zh_TW.java, $$($1_JAVAS))))
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
   105
  # The zh_HK copy must wait for the compile properties tool to run
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
   106
  $$($1_HK): $$($1_TARGET)
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
   107
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
   108
  $1 += $$($1_JAVAS) $$($1_TARGET) $$($1_HK)
ea6446a9121b 8055191: Split GensrcProperties.gmk into separate modules
erikj
parents: 26192
diff changeset
   109
endef
12317
9670c1610c53 7074397: Build infrastructure changes (makefile re-write)
ohair
parents:
diff changeset
   110
23236
7c5997f59e20 8036611: Cleanup of handling of properties and other java resources in the build
erikj
parents: 23010
diff changeset
   111
################################################################################