#
# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

# This must be the first rule
default: all

include $(SPEC)
include MakeBase.gmk
include Modules.gmk
include JavaCompilation.gmk
include SetupJavaCompilers.gmk

# Hook to include the corresponding custom file, if present.
$(eval $(call IncludeCustomExtension, , CompileJavaModules.gmk))

################################################################################
# Module specific build settings

java.activation_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS

################################################################################

java.base_ADD_JAVAC_FLAGS := -Xdoclint:all/protected,-reference '-Xdoclint/package:java.*,javax.*' -XDstringConcat=inline
java.base_COPY := .icu .dat .spp content-types.properties hijrah-config-islamic-umalqura.properties
java.base_CLEAN := intrinsic.properties

java.base_EXCLUDE_FILES += \
  $(JDK_TOPDIR)/src/java.base/share/classes/jdk/internal/module/ModuleLoaderMap.java

java.base_EXCLUDES += java/lang/doc-files

# Exclude BreakIterator classes that are just used in compile process to generate
# data files and shouldn't go in the product
java.base_EXCLUDE_FILES += sun/text/resources/BreakIteratorRules.java

ifeq ($(OPENJDK_TARGET_OS), macosx)
  java.base_EXCLUDE_FILES += sun/nio/fs/GnomeFileTypeDetector.java
endif

ifneq ($(filter solaris macosx linux windows,$(OPENJDK_TARGET_OS)), )
  java.base_EXCLUDE_FILES += \
      sun/nio/ch/AbstractPollSelectorImpl.java \
      sun/nio/ch/PollSelectorImpl.java \
      sun/nio/ch/PollSelectorProvider.java \
      #
endif

ifneq ($(OPENJDK_TARGET_OS), solaris)
  java.base_EXCLUDE_FILES += \
      SolarisLoginModule.java \
      SolarisSystem.java \
      #
endif

ifeq ($(filter $(OPENJDK_TARGET_OS), solaris macosx aix), )
  #
  # only solaris, macosx and aix
  #
  java.base_EXCLUDE_FILES += sun/nio/fs/PollingWatchService.java
endif

ifeq ($(OPENJDK_TARGET_OS), windows)
  java.base_EXCLUDE_FILES += \
      sun/nio/ch/SimpleAsynchronousFileChannelImpl.java \
      #
endif

################################################################################

java.compiler_ADD_JAVAC_FLAGS := -Xdoclint:all/protected,-reference '-Xdoclint/package:java.*,javax.*'

################################################################################

java.datatransfer_ADD_JAVAC_FLAGS := -Xdoclint:all/protected,-reference '-Xdoclint/package:java.*,javax.*'
java.datatransfer_COPY := flavormap.properties

################################################################################

java.desktop_ADD_JAVAC_FLAGS := -Xdoclint:all/protected,-reference '-Xdoclint/package:java.*,javax.*'
java.desktop_COPY := .gif .png .wav .txt .xml .css .pf
java.desktop_CLEAN := iio-plugin.properties cursors.properties

java.desktop_EXCLUDES += \
    java/awt/doc-files \
    javax/swing/doc-files \
    javax/swing/text/doc-files \
    javax/swing/plaf/synth/doc-files \
    javax/swing/undo/doc-files \
    sun/awt/X11/doc-files \
    #

java.desktop_EXCLUDE_FILES += \
    javax/swing/plaf/nimbus/InternalFrameTitlePanePainter.java \
    javax/swing/plaf/nimbus/OptionPaneMessageAreaPainter.java \
    javax/swing/plaf/nimbus/ScrollBarPainter.java \
    javax/swing/plaf/nimbus/SliderPainter.java \
    javax/swing/plaf/nimbus/SpinnerPainter.java \
    javax/swing/plaf/nimbus/SplitPanePainter.java \
    javax/swing/plaf/nimbus/TabbedPanePainter.java \
    sun/awt/resources/security-icon-bw16.png \
    sun/awt/resources/security-icon-bw24.png \
    sun/awt/resources/security-icon-bw32.png \
    sun/awt/resources/security-icon-bw48.png \
    sun/awt/resources/security-icon-interim16.png \
    sun/awt/resources/security-icon-interim24.png \
    sun/awt/resources/security-icon-interim32.png \
    sun/awt/resources/security-icon-interim48.png \
    sun/awt/resources/security-icon-yellow16.png \
    sun/awt/resources/security-icon-yellow24.png \
    sun/awt/resources/security-icon-yellow32.png \
    sun/awt/resources/security-icon-yellow48.png \
    sun/awt/X11/java-icon16.png \
    sun/awt/X11/java-icon24.png \
    sun/awt/X11/java-icon32.png \
    sun/awt/X11/java-icon48.png \
    .template \
    #

ifeq ($(OPENJDK_TARGET_OS), macosx)
  # exclude all X11 on Mac.
  java.desktop_EXCLUDES += \
      sun/awt/X11 \
      sun/java2d/x11 \
      sun/java2d/jules \
      sun/java2d/xr \
      com/sun/java/swing/plaf/gtk \
      #
  java.desktop_EXCLUDE_FILES += \
      $(wildcard $(JDK_TOPDIR)/src/java.desktop/unix/classes/sun/java2d/*.java) \
      $(wildcard $(JDK_TOPDIR)/src/java.desktop/unix/classes/sun/java2d/opengl/*.java) \
      $(wildcard $(JDK_TOPDIR)/src/java.desktop/unix/classes/sun/awt/*.java) \
      $(wildcard $(JDK_TOPDIR)/src/java.desktop/unix/classes/sun/font/*.java) \
      #
else
  # TBD: figure out how to eliminate this long list
  java.desktop_EXCLUDE_FILES += \
      sun/awt/X11/ScreenFormat.java \
      sun/awt/X11/XArc.java \
      sun/awt/X11/XChar2b.java \
      sun/awt/X11/XCharStruct.java \
      sun/awt/X11/XClassHint.java \
      sun/awt/X11/XComposeStatus.java \
      sun/awt/X11/XExtCodes.java \
      sun/awt/X11/XFontProp.java \
      sun/awt/X11/XFontSetExtents.java \
      sun/awt/X11/XFontStruct.java \
      sun/awt/X11/XGCValues.java \
      sun/awt/X11/XHostAddress.java \
      sun/awt/X11/XIMCallback.java \
      sun/awt/X11/XIMHotKeyTrigger.java \
      sun/awt/X11/XIMHotKeyTriggers.java \
      sun/awt/X11/XIMPreeditCaretCallbackStruct.java \
      sun/awt/X11/XIMPreeditDrawCallbackStruct.java \
      sun/awt/X11/XIMPreeditStateNotifyCallbackStruct.java \
      sun/awt/X11/XIMStatusDrawCallbackStruct.java \
      sun/awt/X11/XIMStringConversionCallbackStruct.java \
      sun/awt/X11/XIMStringConversionText.java \
      sun/awt/X11/XIMStyles.java \
      sun/awt/X11/XIMText.java \
      sun/awt/X11/XIMValuesList.java \
      sun/awt/X11/XImage.java \
      sun/awt/X11/XKeyboardControl.java \
      sun/awt/X11/XKeyboardState.java \
      sun/awt/X11/XOMCharSetList.java \
      sun/awt/X11/XOMFontInfo.java \
      sun/awt/X11/XOMOrientation.java \
      sun/awt/X11/XPoint.java \
      sun/awt/X11/XRectangle.java \
      sun/awt/X11/XSegment.java \
      sun/awt/X11/XStandardColormap.java \
      sun/awt/X11/XTextItem.java \
      sun/awt/X11/XTextItem16.java \
      sun/awt/X11/XTextProperty.java \
      sun/awt/X11/XTimeCoord.java \
      sun/awt/X11/XWindowChanges.java \
      sun/awt/X11/XdbeSwapInfo.java \
      sun/awt/X11/XmbTextItem.java \
      sun/awt/X11/XwcTextItem.java
endif

ifeq ($(OPENJDK_TARGET_OS), windows)
  java.desktop_EXCLUDES += com/sun/java/swing/plaf/gtk
endif

ifdef BUILD_HEADLESS_ONLY
  java.desktop_EXCLUDES += sun/applet
endif

# Why is this in the open source tree?
ifdef OPENJDK
  java.desktop_EXCLUDES += sun/dc
endif

# Used on windows and macosx
ifeq ($(filter $(OPENJDK_TARGET_OS), windows macosx), )
  java.desktop_EXCLUDE_FILES += sun/awt/AWTCharset.java
endif

# These files do not appear in the build result of the old build. This
# is because they are generated sources, but the AUTO_JAVA_FILES won't
# pick them up since they aren't generated when the source dirs are
# searched and they aren't referenced by any other classes so they won't
# be picked up by implicit compilation. On a rebuild, they are picked up
# and compiled. Exclude them here to produce the same rt.jar as the old
# build does when building just once.
java.desktop_EXCLUDE_FILES += \
    javax/swing/plaf/nimbus/InternalFrameTitlePanePainter.java \
    javax/swing/plaf/nimbus/OptionPaneMessageAreaPainter.java \
    javax/swing/plaf/nimbus/ScrollBarPainter.java \
    javax/swing/plaf/nimbus/SliderPainter.java \
    javax/swing/plaf/nimbus/SpinnerPainter.java \
    javax/swing/plaf/nimbus/SplitPanePainter.java \
    javax/swing/plaf/nimbus/TabbedPanePainter.java \
    #

################################################################################

java.scripting_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
java.scripting_COPY := .js
java.scripting_CLEAN := .properties

################################################################################

java.instrument_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'

################################################################################

java.logging_ADD_JAVAC_FLAGS := -Xdoclint:all/protected,-reference '-Xdoclint/package:java.*,javax.*'

################################################################################

java.management_ADD_JAVAC_FLAGS := -Xdoclint:all/protected,-reference '-Xdoclint/package:java.*,javax.*'

################################################################################

java.prefs_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'

################################################################################

java.transaction_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'

################################################################################

java.sql_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
java.sql_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS

################################################################################

java.sql.rowset_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
java.sql.rowset_CLEAN_FILES := $(wildcard \
    $(JDK_TOPDIR)/src/java.sql.rowset/share/classes/com/sun/rowset/*.properties \
    $(JDK_TOPDIR)/src/java.sql.rowset/share/classes/javax/sql/rowset/*.properties)

################################################################################

java.rmi_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
java.rmi_CLEAN_FILES := $(wildcard \
    $(JDK_TOPDIR)/src/java.rmi/share/classes/sun/rmi/registry/resources/*.properties \
    $(JDK_TOPDIR)/src/java.rmi/share/classes/sun/rmi/server/resources/*.properties)

################################################################################

java.corba_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS

java.corba_COPY := .prp
java.corba_CLEAN := .properties

java.corba_EXCLUDES += \
    com/sun/corba/se/PortableActivationIDL \
    com/sun/tools/corba/se/logutil \
    #
java.corba_EXCLUDE_FILES += \
    com/sun/corba/se/impl/presentation/rmi/JNDIStateFactoryImpl.java \
    com/sun/corba/se/spi/presentation/rmi/StubWrapper.java \
    com/sun/org/omg/CORBA/IDLTypeOperations.java \
    com/sun/org/omg/CORBA/IRObjectOperations.java \
    org/omg/PortableInterceptor/UNKNOWN.java \
    com/sun/tools/corba/se/idl/ResourceBundleUtil.java \
    com/sun/corba/se/impl/presentation/rmi/jndi.properties \
    #

################################################################################

java.xml_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
java.xml_CLEAN := .properties

################################################################################

java.xml.bind_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
java.xml.bind_CLEAN := .properties

################################################################################

java.xml.soap_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
java.xml.soap_CLEAN := .properties

################################################################################

java.xml.ws_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
java.xml.ws_COPY := .xml
java.xml.ws_CLEAN := .properties

################################################################################

java.naming_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
java.naming_CLEAN := jndiprovider.properties

################################################################################

java.security.saaj_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
java.security.saaj_CLEAN := .properties

################################################################################

java.security.jgss_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'

################################################################################

java.smartcardio_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'

################################################################################

java.xml.crypto_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
java.xml.crypto_COPY := .dtd .xml
java.xml.crypto_CLEAN := .properties

################################################################################

jdk.charsets_COPY := .dat

################################################################################

jdk.compiler_ADD_JAVAC_FLAGS := -Xdoclint:all/protected '-Xdoclint/package:-com.sun.tools.*' \
    -XDstringConcat=inline
jdk.compiler_CLEAN_FILES := $(wildcard \
    $(patsubst %, $(JDK_TOPDIR)/src/jdk.compiler/share/classes/%/*.properties, \
        sun/tools/serialver/resources))

################################################################################

jdk.hotspot.agent_ADD_JAVAC_FLAGS := $(DISABLE_WARNINGS),-overrides
jdk.hotspot.agent_COPY := .gif .png sa.js .properties

################################################################################

jdk.internal.le_COPY := .properties

################################################################################

jdk.jcmd_COPY := _options

################################################################################

jdk.dynalink_CLEAN := .properties

################################################################################

jdk.javadoc_COPY := .xml .css .js .png

################################################################################

jdk.rmic_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
jdk.rmic_CLEAN := .properties

################################################################################

# No SCTP implementation on Mac OS X or AIX. These classes should be excluded.
SCTP_IMPL_CLASSES = \
    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/AssociationChange.java \
    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/AssociationImpl.java \
    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/PeerAddrChange.java \
    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/ResultContainer.java \
    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpChannelImpl.java \
    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java \
    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpNet.java \
    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpNotification.java \
    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java \
    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SendFailed.java \
    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/Shutdown.java

ifeq ($(OPENJDK_TARGET_OS), macosx)
  jdk.sctp_EXCLUDE_FILES += $(SCTP_IMPL_CLASSES)
endif

ifeq ($(OPENJDK_TARGET_OS),aix)
  jdk.sctp_EXCLUDE_FILES += $(SCTP_IMPL_CLASSES)
endif

################################################################################

jdk.jconsole_COPY := .gif .png

jdk.jconsole_CLEAN_FILES := $(wildcard \
    $(JDK_TOPDIR)/src/jdk.jconsole/share/classes/sun/tools/jconsole/resources/*.properties)

################################################################################

jdk.jdeps_CLEAN_FILES := $(wildcard \
    $(JDK_TOPDIR)/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/*.properties \
    $(JDK_TOPDIR)/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/*.properties)

################################################################################

jdk.jdi_EXCLUDES += \
    com/sun/tools/example/debug/bdi \
    com/sun/tools/example/debug/event \
    com/sun/tools/example/debug/gui \
    com/sun/jdi/doc-files \
    #

jdk.jdi_EXCLUDE_FILES += jdi-overview.html

################################################################################

jdk.dev_CLEAN_FILES := $(wildcard \
    $(patsubst %, $(JDK_TOPDIR)/src/jdk.dev/share/classes/%/*.properties, \
        com/sun/tools/script/shell))

jdk.dev_COPY := .js oqlhelp.html .txt

################################################################################

jdk.jvmstat_COPY := aliasmap

################################################################################

jdk.xml.bind_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
jdk.xml.bind_CLEAN := .properties
jdk.xml.bind_COPY := .xsd JAXBContextFactory.java ZeroOneBooleanAdapter.java

################################################################################

jdk.xml.ws_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
jdk.xml.ws_CLEAN := .properties

################################################################################

sun.charsets_COPY := .dat

################################################################################

jdk.localedata_COPY := _dict _th
# Exclude BreakIterator classes that are just used in compile process to generate
# data files and shouldn't go in the product
jdk.localedata_EXCLUDE_FILES += sun/text/resources/th/BreakIteratorRules_th.java

################################################################################
# Setup the compilation for the module
#
# Order src dirs in order of override with the most important first. Generated
# source before static source and platform specific source before shared.
#
GENERATED_SRC_DIRS += \
    $(SUPPORT_OUTPUTDIR)/gensrc \
    #

TOP_SRC_DIRS += \
    $(HOTSPOT_TOPDIR)/src \
    $(CORBA_TOPDIR)/src \
    $(JDK_TOPDIR)/src \
    $(LANGTOOLS_TOPDIR)/src \
    $(JAXP_TOPDIR)/src \
    $(JAXWS_TOPDIR)/src \
    $(NASHORN_TOPDIR)/src \
    #

SRC_SUBDIRS += $(OPENJDK_TARGET_OS)/classes
ifneq ($(OPENJDK_TARGET_OS), $(OPENJDK_TARGET_OS_TYPE))
  SRC_SUBDIRS += $(OPENJDK_TARGET_OS_TYPE)/classes
endif
SRC_SUBDIRS += share/classes

MODULE_SRC_DIRS := $(strip \
    $(addsuffix /$(MODULE), $(GENERATED_SRC_DIRS) $(IMPORT_MODULES_SRC)) \
    $(foreach sub, $(SRC_SUBDIRS), $(addsuffix /$(MODULE)/$(sub), $(TOP_SRC_DIRS))))

# The JDK_USER_DEFINED_FILTER is a poor man's incremental build: by specifying
# JDK_FILTER at the make command line, only a subset of the JDK java files will
# be recompiled. If multiple paths are separated by comma, convert that into a
# space separated list.
JDK_USER_DEFINED_FILTER := $(strip $(subst $(COMMA),$(SPACE), $(JDK_FILTER)))

# Rewrite the MODULE_SRC_DIRS with a wildcard for the module so that all module
# source dirs are available on the path.
MODULESOURCEPATH := $(subst $(SPACE),$(PATH_SEP),$(subst $(MODULE),*,$(MODULE_SRC_DIRS)))

# Add imported modules to the moduleclasspath
MODULECLASSPATH := $(subst $(SPACE),$(PATH_SEP), $(IMPORT_MODULES_CLASSES))

ifeq ($(MODULE), jdk.vm.ci)
  ## WORKAROUND jdk.vm.ci source structure issue
  JVMCI_MODULESOURCEPATH := $(MODULESOURCEPATH) \
      $(subst /$(MODULE)/,/*/, $(filter-out %processor/src, \
          $(wildcard $(HOTSPOT_TOPDIR)/src/jdk.vm.ci/share/classes/*/src)))
  MODULESOURCEPATH := $(subst $(SPACE),$(PATH_SEP), $(JVMCI_MODULESOURCEPATH))
endif

# Make sure the generated source base dirs exist. Not all modules have generated
# source in all of these directories and because of timing, all of them might not
# exist at the time this makefile gets called. Javac will complain if there are
# missing directories in the moduleclasspath.
$(call MakeDir, $(GENERATED_SRC_DIRS))

$(eval $(call SetupJavaCompilation, $(MODULE), \
    SETUP := $(if $($(MODULE)_SETUP), $($(MODULE)_SETUP), GENERATE_JDKBYTECODE), \
    MODULE := $(MODULE), \
    SRC := $(wildcard $(MODULE_SRC_DIRS)), \
    INCLUDES := $(JDK_USER_DEFINED_FILTER),\
    BIN := $(if $($(MODULE)_BIN), $($(MODULE)_BIN), $(JDK_OUTPUTDIR)/modules), \
    HEADERS := $(SUPPORT_OUTPUTDIR)/headers, \
    ADD_JAVAC_FLAGS := \
        $($(MODULE)_ADD_JAVAC_FLAGS) \
        -modulesourcepath "$(MODULESOURCEPATH)" \
        $(if $(MODULECLASSPATH), -modulepath "$(MODULECLASSPATH)") \
        -system none, \
))

TARGETS += $($(MODULE)) $($(MODULE)_COPY_EXTRA)

# Declare dependencies between java compilations of different modules.
# Since the other modules are declared in different invocations of this file,
# use the macro to find the correct target file to depend on.
# Only the javac compilation actually depends on other modules so limit
# dependency declaration to that by using the *_COMPILE_TARGET variable.
$($(MODULE)_COMPILE_TARGET): $(foreach d, $(call FindDepsForModule, $(MODULE)), \
    $(call SetupJavaCompilationCompileTarget, $d, \
        $(if $($d_BIN), $($d_BIN), $(JDK_OUTPUTDIR)/modules/$d)))

################################################################################
# Copy zh_HK properties files from zh_TW

$(JDK_OUTPUTDIR)/modules/%_zh_HK.properties: $(JDK_OUTPUTDIR)/modules/%_zh_TW.properties
	$(install-file)

CreateHkTargets = \
    $(patsubst $(JDK_TOPDIR)/src/%, $(JDK_OUTPUTDIR)/modules/%, \
      $(subst /share/classes,, \
        $(subst _zh_TW,_zh_HK, $(filter %_zh_TW.properties, $1))))

ifeq ($(MODULE), java.sql.rowset)
  TARGETS += $(call CreateHkTargets, $(java.sql.rowset_CLEAN_FILES))
endif

ifeq ($(MODULE), java.rmi)
  TARGETS += $(call CreateHkTargets, $(java.rmi_CLEAN_FILES))
endif

################################################################################
# If this is an imported module, copy the pre built classes and resources into
# the modules output dir

ifneq ($(wildcard $(IMPORT_MODULES_CLASSES)/$(MODULE)), )
  $(JDK_OUTPUTDIR)/modules/$(MODULE)/_imported.marker: \
      $(call CacheFind, $(IMPORT_MODULES_CLASSES)/$(MODULE))
	$(RM) -r $(@D)
	$(MKDIR) -p $(@D)
	$(CP) -R $(IMPORT_MODULES_CLASSES)/$(MODULE)/* $(@D)/
	$(TOUCH) $@

  TARGETS += $(JDK_OUTPUTDIR)/modules/$(MODULE)/_imported.marker

  # Add this dependency to avoid a race between compiling module-info.java and
  # importing the classes.
  $($(MODULE)_COMPILE_TARGET): $(JDK_OUTPUTDIR)/modules/$(MODULE)/_imported.marker
endif

################################################################################

$(eval $(call IncludeCustomExtension, , CompileJavaModules-post.gmk))

################################################################################

all: $(TARGETS)

.PHONY: all
