       1 #
       2 # Copyright (c) 2014, 2018, 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 # This must be the first rule
      27 default: all
      28
      29 include $(SPEC)
      30 include MakeBase.gmk
      31 include Modules.gmk
      32 include JavaCompilation.gmk
      33 include SetupJavaCompilers.gmk
      34
      35 # Hook to include the corresponding custom file, if present.
      36 $(eval $(call IncludeCustomExtension, CompileJavaModules.gmk))
      37
      38 ################################################################################
      39 # Module specific build settings
      40
      41 java.base_ADD_JAVAC_FLAGS += -Xdoclint:all/protected,-reference '-Xdoclint/package:java.*,javax.*' -XDstringConcat=inline
      42 java.base_COPY += .icu .dat .spp content-types.properties hijrah-config-islamic-umalqura.properties
      43 java.base_CLEAN += intrinsic.properties
      44
      45 java.base_EXCLUDE_FILES += \
      46   $(TOPDIR)/src/java.base/share/classes/jdk/internal/module/ModuleLoaderMap.java
      47
      48 java.base_EXCLUDES += java/lang/doc-files
      49
      50 # Exclude BreakIterator classes that are just used in compile process to generate
      51 # data files and shouldn't go in the product
      52 java.base_EXCLUDE_FILES += sun/text/resources/BreakIteratorRules.java
      53
      54 ifneq ($(OPENJDK_TARGET_OS), solaris)
      55   java.base_EXCLUDE_FILES += \
      56       SolarisLoginModule.java \
      57       SolarisSystem.java \
      58       #
      59 endif
      60
      61 ifeq ($(filter $(OPENJDK_TARGET_OS), solaris macosx aix), )
      62   #
      63   # only solaris, macosx and aix
      64   #
      65   java.base_EXCLUDE_FILES += sun/nio/fs/PollingWatchService.java
      66 endif
      67
      68 ifeq ($(OPENJDK_TARGET_OS), windows)
      69   java.base_EXCLUDE_FILES += \
      70       sun/nio/ch/SimpleAsynchronousFileChannelImpl.java \
      71       #
      72 endif
      73
      74 ################################################################################
      75
      76 java.compiler_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
      77
      78 ################################################################################
      79
      80 java.datatransfer_ADD_JAVAC_FLAGS += -Xdoclint:all/protected,-reference '-Xdoclint/package:java.*,javax.*'
      81 java.datatransfer_COPY += flavormap.properties
      82
      83 ################################################################################
      84
      85 java.desktop_ADD_JAVAC_FLAGS += -Xdoclint:all/protected,-reference \
      86     '-Xdoclint/package:java.*,javax.*' -Xlint:exports \
      87     --doclint-format html4
      88 java.desktop_COPY += .gif .png .wav .txt .xml .css .pf
      89 java.desktop_CLEAN += iio-plugin.properties cursors.properties
      90
      91 java.desktop_EXCLUDES += \
      92     java/awt/doc-files \
      93     javax/swing/doc-files \
      94     javax/swing/text/doc-files \
      95     javax/swing/plaf/synth/doc-files \
      96     javax/swing/undo/doc-files \
      97     sun/awt/X11/doc-files \
      98     #
      99
     100 java.desktop_EXCLUDE_FILES += \
     101     javax/swing/plaf/nimbus/InternalFrameTitlePanePainter.java \
     102     javax/swing/plaf/nimbus/OptionPaneMessageAreaPainter.java \
     103     javax/swing/plaf/nimbus/ScrollBarPainter.java \
     104     javax/swing/plaf/nimbus/SliderPainter.java \
     105     javax/swing/plaf/nimbus/SpinnerPainter.java \
     106     javax/swing/plaf/nimbus/SplitPanePainter.java \
     107     javax/swing/plaf/nimbus/TabbedPanePainter.java \
     108     sun/awt/resources/security-icon-bw16.png \
     109     sun/awt/resources/security-icon-bw24.png \
     110     sun/awt/resources/security-icon-bw32.png \
     111     sun/awt/resources/security-icon-bw48.png \
     112     sun/awt/resources/security-icon-interim16.png \
     113     sun/awt/resources/security-icon-interim24.png \
     114     sun/awt/resources/security-icon-interim32.png \
     115     sun/awt/resources/security-icon-interim48.png \
     116     sun/awt/resources/security-icon-yellow16.png \
     117     sun/awt/resources/security-icon-yellow24.png \
     118     sun/awt/resources/security-icon-yellow32.png \
     119     sun/awt/resources/security-icon-yellow48.png \
     120     sun/awt/X11/java-icon16.png \
     121     sun/awt/X11/java-icon24.png \
     122     sun/awt/X11/java-icon32.png \
     123     sun/awt/X11/java-icon48.png \
     124     .template \
     125     #
     126
     127 ifeq ($(OPENJDK_TARGET_OS), macosx)
     128   # exclude all X11 on Mac.
     129   java.desktop_EXCLUDES += \
     130       sun/awt/X11 \
     131       sun/java2d/x11 \
     132       sun/java2d/jules \
     133       sun/java2d/xr \
     134       com/sun/java/swing/plaf/gtk \
     135       #
     136   java.desktop_EXCLUDE_FILES += \
     137       $(wildcard $(TOPDIR)/src/java.desktop/unix/classes/sun/java2d/*.java) \
     138       $(wildcard $(TOPDIR)/src/java.desktop/unix/classes/sun/java2d/opengl/*.java) \
     139       $(wildcard $(TOPDIR)/src/java.desktop/unix/classes/sun/awt/*.java) \
     140       $(wildcard $(TOPDIR)/src/java.desktop/unix/classes/sun/font/*.java) \
     141       #
     142 else
     143   # TBD: figure out how to eliminate this long list
     144   java.desktop_EXCLUDE_FILES += \
     145       sun/awt/X11/ScreenFormat.java \
     146       sun/awt/X11/XArc.java \
     147       sun/awt/X11/XChar2b.java \
     148       sun/awt/X11/XCharStruct.java \
     149       sun/awt/X11/XClassHint.java \
     150       sun/awt/X11/XComposeStatus.java \
     151       sun/awt/X11/XExtCodes.java \
     152       sun/awt/X11/XFontProp.java \
     153       sun/awt/X11/XFontSetExtents.java \
     154       sun/awt/X11/XFontStruct.java \
     155       sun/awt/X11/XGCValues.java \
     156       sun/awt/X11/XHostAddress.java \
     157       sun/awt/X11/XIMCallback.java \
     158       sun/awt/X11/XIMHotKeyTrigger.java \
     159       sun/awt/X11/XIMHotKeyTriggers.java \
     160       sun/awt/X11/XIMPreeditCaretCallbackStruct.java \
     161       sun/awt/X11/XIMPreeditDrawCallbackStruct.java \
     162       sun/awt/X11/XIMPreeditStateNotifyCallbackStruct.java \
     163       sun/awt/X11/XIMStatusDrawCallbackStruct.java \
     164       sun/awt/X11/XIMStringConversionCallbackStruct.java \
     165       sun/awt/X11/XIMStringConversionText.java \
     166       sun/awt/X11/XIMStyles.java \
     167       sun/awt/X11/XIMText.java \
     168       sun/awt/X11/XIMValuesList.java \
     169       sun/awt/X11/XImage.java \
     170       sun/awt/X11/XKeyboardControl.java \
     171       sun/awt/X11/XKeyboardState.java \
     172       sun/awt/X11/XOMCharSetList.java \
     173       sun/awt/X11/XOMFontInfo.java \
     174       sun/awt/X11/XOMOrientation.java \
     175       sun/awt/X11/XPoint.java \
     176       sun/awt/X11/XRectangle.java \
     177       sun/awt/X11/XSegment.java \
     178       sun/awt/X11/XStandardColormap.java \
     179       sun/awt/X11/XTextItem.java \
     180       sun/awt/X11/XTextItem16.java \
     181       sun/awt/X11/XTextProperty.java \
     182       sun/awt/X11/XTimeCoord.java \
     183       sun/awt/X11/XWindowChanges.java \
     184       sun/awt/X11/XdbeSwapInfo.java \
     185       sun/awt/X11/XmbTextItem.java \
     186       sun/awt/X11/XwcTextItem.java
     187 endif
     188
     189 ifeq ($(OPENJDK_TARGET_OS), windows)
     190   java.desktop_EXCLUDES += com/sun/java/swing/plaf/gtk
     191 endif
     192
     193 ifdef BUILD_HEADLESS_ONLY
     194   java.desktop_EXCLUDES += sun/applet
     195 endif
     196
     197 # Used on windows and macosx
     198 ifeq ($(filter $(OPENJDK_TARGET_OS), windows macosx), )
     199   java.desktop_EXCLUDE_FILES += sun/awt/AWTCharset.java
     200 endif
     201
     202 # These files do not appear in the build result of the old build. This
     203 # is because they are generated sources, but the AUTO_JAVA_FILES won't
     204 # pick them up since they aren't generated when the source dirs are
     205 # searched and they aren't referenced by any other classes so they won't
     206 # be picked up by implicit compilation. On a rebuild, they are picked up
     207 # and compiled. Exclude them here to produce the same rt.jar as the old
     208 # build does when building just once.
     209 java.desktop_EXCLUDE_FILES += \
     210     javax/swing/plaf/nimbus/InternalFrameTitlePanePainter.java \
     211     javax/swing/plaf/nimbus/OptionPaneMessageAreaPainter.java \
     212     javax/swing/plaf/nimbus/ScrollBarPainter.java \
     213     javax/swing/plaf/nimbus/SliderPainter.java \
     214     javax/swing/plaf/nimbus/SpinnerPainter.java \
     215     javax/swing/plaf/nimbus/SplitPanePainter.java \
     216     javax/swing/plaf/nimbus/TabbedPanePainter.java \
     217     #
     218
     219 ################################################################################
     220
     221 java.scripting_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
     222 java.scripting_COPY += .js
     223 java.scripting_CLEAN += .properties
     224
     225 ################################################################################
     226
     227 java.instrument_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
     228
     229 ################################################################################
     230
     231 java.logging_ADD_JAVAC_FLAGS += -Xdoclint:all/protected,-reference '-Xdoclint/package:java.*,javax.*'
     232
     233 ################################################################################
     234
     235 java.management_ADD_JAVAC_FLAGS += -Xdoclint:all/protected,-reference '-Xdoclint/package:java.*,javax.*'
     236
     237 ################################################################################
     238
     239 java.management.rmi_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:javax.*'
     240
     241 ################################################################################
     242
     243 java.prefs_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
     244
     245 ################################################################################
     246
     247 java.transaction.xa_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:javax.*'
     248
     249 ################################################################################
     250
     251 java.sql_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
     252 java.sql_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
     253
     254 ################################################################################
     255
     256 java.sql.rowset_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
     257 java.sql.rowset_CLEAN_FILES += $(wildcard \
     258     $(TOPDIR)/src/java.sql.rowset/share/classes/com/sun/rowset/*.properties \
     259     $(TOPDIR)/src/java.sql.rowset/share/classes/javax/sql/rowset/*.properties)
     260
     261 ################################################################################
     262
     263 java.rmi_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
     264 java.rmi_CLEAN_FILES += $(wildcard \
     265     $(TOPDIR)/src/java.rmi/share/classes/sun/rmi/registry/resources/*.properties \
     266     $(TOPDIR)/src/java.rmi/share/classes/sun/rmi/server/resources/*.properties)
     267
     268 ################################################################################
     269
     270 java.xml_ADD_JAVAC_FLAGS += -Xdoclint:all/protected \
     271     '-Xdoclint/package:$(call CommaList, javax.xml.catalog javax.xml.datatype \
     272     javax.xml.transform javax.xml.validation javax.xml.xpath)'
     273 java.xml_CLEAN += .properties
     274
     275 ################################################################################
     276
     277 java.naming_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*' -Xlint:-exports
     278 java.naming_CLEAN += jndiprovider.properties
     279
     280 ################################################################################
     281
     282 java.security.jgss_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
     283
     284 ################################################################################
     285
     286 java.smartcardio_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
     287
     288 ################################################################################
     289
     290 java.xml.crypto_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
     291 java.xml.crypto_COPY += .dtd .xml
     292 java.xml.crypto_CLEAN += .properties
     293
     294 ################################################################################
     295
     296 jdk.charsets_COPY += .dat
     297
     298 ################################################################################
     299
     300 ################################################################################
     301
     302 jdk.compiler_ADD_JAVAC_FLAGS += -Xdoclint:all/protected \
     303     '-Xdoclint/package:-com.sun.tools.*,-jdk.internal.*,sun.tools.serialver.resources.*' \
     304     -XDstringConcat=inline
     305 jdk.compiler_CLEAN_FILES += $(wildcard \
     306     $(patsubst %, $(TOPDIR)/src/jdk.compiler/share/classes/%/*.properties, \
     307         sun/tools/serialver/resources))
     308
     309 ################################################################################
     310
     311 jdk.hotspot.agent_ADD_JAVAC_FLAGS += $(DISABLE_WARNINGS),-overrides
     312 jdk.hotspot.agent_COPY += .gif .png sa.js .properties
     313
     314 ################################################################################
     315
     316 jdk.editpad_COPY += .properties
     317
     318 ################################################################################
     319
     320 jdk.jshell_COPY += .jsh .properties
     321
     322 ################################################################################
     323
     324 jdk.internal.le_COPY += .properties
     325
     326 ################################################################################
     327
     328 jdk.internal.opt_COPY += .properties
     329
     330 ################################################################################
     331
     332 jdk.jcmd_COPY += _options
     333
     334 ################################################################################
     335
     336 jdk.dynalink_CLEAN += .properties
     337
     338 ################################################################################
     339
     340 jdk.javadoc_COPY += .xml .css .js .png
     341
     342 ################################################################################
     343
     344 jdk.jartool_ADD_JAVAC_FLAGS += -XDstringConcat=inline
     345
     346 ################################################################################
     347
     348 jdk.scripting.nashorn_COPY := .properties .js
     349
     350 ################################################################################
     351
     352 jdk.scripting.nashorn.shell_COPY += .js .properties
     353
     354 ################################################################################
     355
     356 jdk.rmic_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
     357 jdk.rmic_CLEAN += .properties
     358
     359 ################################################################################
     360
     361 # No SCTP implementation on Mac OS X or AIX. These classes should be excluded.
     362 SCTP_IMPL_CLASSES = \
     363     $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/AssociationChange.java \
     364     $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/AssociationImpl.java \
     365     $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/PeerAddrChange.java \
     366     $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/ResultContainer.java \
     367     $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpChannelImpl.java \
     368     $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java \
     369     $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpNet.java \
     370     $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpNotification.java \
     371     $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java \
     372     $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SendFailed.java \
     373     $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/Shutdown.java
     374
     375 ifeq ($(OPENJDK_TARGET_OS), macosx)
     376   jdk.sctp_EXCLUDE_FILES += $(SCTP_IMPL_CLASSES)
     377 endif
     378
     379 ifeq ($(OPENJDK_TARGET_OS),aix)
     380   jdk.sctp_EXCLUDE_FILES += $(SCTP_IMPL_CLASSES)
     381 endif
     382
     383 ################################################################################
     384
     385 jdk.jconsole_COPY += .gif .png
     386
     387 jdk.jconsole_CLEAN_FILES += $(wildcard \
     388     $(TOPDIR)/src/jdk.jconsole/share/classes/sun/tools/jconsole/resources/*.properties)
     389
     390 ################################################################################
     391
     392 jdk.jdeps_COPY += .txt
     393
     394 jdk.jdeps_CLEAN_FILES += $(wildcard \
     395     $(TOPDIR)/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/*.properties \
     396     $(TOPDIR)/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/*.properties)
     397
     398 ################################################################################
     399
     400 jdk.jdi_EXCLUDES += \
     401     com/sun/tools/example/debug/bdi \
     402     com/sun/tools/example/debug/event \
     403     com/sun/tools/example/debug/gui \
     404     com/sun/jdi/doc-files \
     405     #
     406
     407 jdk.jdi_EXCLUDE_FILES += jdi-overview.html
     408
     409 ################################################################################
     410
     411 jdk.dev_CLEAN_FILES += $(wildcard \
     412     $(patsubst %, $(TOPDIR)/src/jdk.dev/share/classes/%/*.properties, \
     413         com/sun/tools/script/shell))
     414
     415 jdk.dev_COPY += .js oqlhelp.html .txt
     416
     417 ################################################################################
     418
     419 jdk.internal.jvmstat_COPY += aliasmap
     420
     421 ################################################################################
     422
     423 # -parameters provides method's parameters information in class file,
     424 # JVMCI compilers make use of that information for various sanity checks.
     425 # Don't use Indy strings concatenation to have good JVMCI startup performance.
     426 # The exports are needed since JVMCI is dynamically exported (see
     427 # jdk.vm.ci.services.internal.ReflectionAccessJDK::openJVMCITo).
     428
     429 jdk.internal.vm.ci_ADD_JAVAC_FLAGS += -parameters -Xlint:-exports -XDstringConcat=inline
     430
     431 ################################################################################
     432
     433 jdk.internal.vm.compiler_ADD_JAVAC_FLAGS += -parameters -XDstringConcat=inline \
     434     --add-exports jdk.internal.vm.ci/jdk.vm.ci.aarch64=jdk.internal.vm.compiler \
     435     --add-exports jdk.internal.vm.ci/jdk.vm.ci.amd64=jdk.internal.vm.compiler \
     436     --add-exports jdk.internal.vm.ci/jdk.vm.ci.code=jdk.internal.vm.compiler \
     437     --add-exports jdk.internal.vm.ci/jdk.vm.ci.code.site=jdk.internal.vm.compiler \
     438     --add-exports jdk.internal.vm.ci/jdk.vm.ci.code.stack=jdk.internal.vm.compiler \
     439     --add-exports jdk.internal.vm.ci/jdk.vm.ci.common=jdk.internal.vm.compiler \
     440     --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot=jdk.internal.vm.compiler \
     441     --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=jdk.internal.vm.compiler \
     442     --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=jdk.internal.vm.compiler \
     443     --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot.sparc=jdk.internal.vm.compiler \
     444     --add-exports jdk.internal.vm.ci/jdk.vm.ci.meta=jdk.internal.vm.compiler \
     445     --add-exports jdk.internal.vm.ci/jdk.vm.ci.runtime=jdk.internal.vm.compiler \
     446     --add-exports jdk.internal.vm.ci/jdk.vm.ci.sparc=jdk.internal.vm.compiler \
     447     #
     448
     449 jdk.internal.vm.compiler_EXCLUDES += \
     450     jdk.internal.vm.compiler.collections.test \
     451     org.graalvm.compiler.processor \
     452     org.graalvm.compiler.core.match.processor \
     453     org.graalvm.compiler.nodeinfo.processor \
     454     org.graalvm.compiler.options.processor \
     455     org.graalvm.compiler.serviceprovider.processor \
     456     org.graalvm.compiler.replacements.processor \
     457     org.graalvm.compiler.replacements.jdk9.test \
     458     org.graalvm.compiler.api.directives.test \
     459     org.graalvm.compiler.api.test \
     460     org.graalvm.compiler.asm.aarch64.test \
     461     org.graalvm.compiler.asm.amd64.test \
     462     org.graalvm.compiler.asm.sparc.test \
     463     org.graalvm.compiler.asm.test \
     464     org.graalvm.compiler.core.amd64.test \
     465     org.graalvm.compiler.core.sparc.test \
     466     org.graalvm.compiler.core.test \
     467     org.graalvm.compiler.debug.test \
     468     org.graalvm.compiler.graph.test \
     469     org.graalvm.compiler.hotspot.amd64.test \
     470     org.graalvm.compiler.hotspot.lir.test \
     471     org.graalvm.compiler.hotspot.sparc.test \
     472     org.graalvm.compiler.hotspot.test \
     473     org.graalvm.compiler.jtt \
     474     org.graalvm.compiler.lir.jtt \
     475     org.graalvm.compiler.lir.test \
     476     org.graalvm.compiler.loop.test \
     477     org.graalvm.compiler.microbenchmarks \
     478     org.graalvm.compiler.nodes.test \
     479     org.graalvm.compiler.options.test \
     480     org.graalvm.compiler.phases.common.test \
     481     org.graalvm.compiler.replacements.test \
     482     org.graalvm.compiler.test \
     483     org.graalvm.compiler.virtual.bench \
     484     org.graalvm.micro.benchmarks \
     485     org.graalvm.util.test \
     486     #
     487
     488 ################################################################################
     489
     490 # -parameters provides method's parameters information in class file,
     491 # JVMCI compilers make use of that information for various sanity checks.
     492 # Don't use Indy strings concatenation to have good JAOTC startup performance.
     493 # The exports are needed since JVMCI is dynamically exported (see
     494 # jdk.vm.ci.services.internal.ReflectionAccessJDK::openJVMCITo).
     495
     496 jdk.aot_ADD_JAVAC_FLAGS += -parameters -XDstringConcat=inline \
     497     --add-exports jdk.internal.vm.ci/jdk.vm.ci.aarch64=jdk.internal.vm.compiler,jdk.aot \
     498     --add-exports jdk.internal.vm.ci/jdk.vm.ci.amd64=jdk.internal.vm.compiler,jdk.aot \
     499     --add-exports jdk.internal.vm.ci/jdk.vm.ci.code=jdk.internal.vm.compiler,jdk.aot \
     500     --add-exports jdk.internal.vm.ci/jdk.vm.ci.code.site=jdk.internal.vm.compiler,jdk.aot \
     501     --add-exports jdk.internal.vm.ci/jdk.vm.ci.code.stack=jdk.internal.vm.compiler,jdk.aot \
     502     --add-exports jdk.internal.vm.ci/jdk.vm.ci.common=jdk.internal.vm.compiler,jdk.aot \
     503     --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot=jdk.internal.vm.compiler,jdk.aot \
     504     --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=jdk.internal.vm.compiler,jdk.aot \
     505     --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=jdk.internal.vm.compiler,jdk.aot \
     506     --add-exports jdk.internal.vm.ci/jdk.vm.ci.hotspot.sparc=jdk.internal.vm.compiler,jdk.aot \
     507     --add-exports jdk.internal.vm.ci/jdk.vm.ci.meta=jdk.internal.vm.compiler,jdk.aot \
     508     --add-exports jdk.internal.vm.ci/jdk.vm.ci.runtime=jdk.internal.vm.compiler,jdk.aot \
     509     --add-exports jdk.internal.vm.ci/jdk.vm.ci.sparc=jdk.internal.vm.compiler,jdk.aot \
     510     #
     511
     512 ################################################################################
     513
     514 sun.charsets_COPY += .dat
     515
     516 ################################################################################
     517
     518 jdk.localedata_COPY += _dict _th
     519 # Exclude BreakIterator classes that are just used in compile process to generate
     520 # data files and shouldn't go in the product
     521 jdk.localedata_EXCLUDE_FILES += sun/text/resources/ext/BreakIteratorRules_th.java
     522 jdk.localedata_KEEP_ALL_TRANSLATIONS := true
     523 ################################################################################
     524
     525 # There is an issue in sjavac that triggers a warning in jdk.jfr that isn't
     526 # triggered without sjavac.
     527 ifeq ($(ENABLE_SJAVAC), yes)
     528   jdk.jfr_SETUP := GENERATE_JDKBYTECODE_NOWARNINGS
     529 endif
     530 jdk.jfr_COPY := .xsd .xml .dtd
     531 jdk.jfr_ADD_JAVAC_FLAGS := -XDstringConcat=inline -Xlint:-exports
     532
     533 ################################################################################
     534 # If this is an imported module that has prebuilt classes, only compile
     535 # module-info.java.
     536 ifneq ($(wildcard $(IMPORT_MODULES_CLASSES)/$(MODULE)), )
     537   $(MODULE)_INCLUDE_FILES := module-info.java
     538 endif
     539
     540 ################################################################################
     541 # Setup the compilation for the module
     542 #
     543 MODULE_SRC_DIRS := $(call FindModuleSrcDirs, $(MODULE))
     544
     545 # The JDK_USER_DEFINED_FILTER is a poor man's incremental build: by specifying
     546 # JDK_FILTER at the make command line, only a subset of the JDK java files will
     547 # be recompiled. If multiple paths are separated by comma, convert that into a
     548 # space separated list.
     549 JDK_USER_DEFINED_FILTER := $(strip $(subst $(COMMA),$(SPACE), $(JDK_FILTER)))
     550 ifeq ($(JDK_FILTER), )
     551   FAIL_NO_SRC := true
     552 else
     553   # When using JDK_FILTER, most module java compilations will end up finding
     554   # no source files. Don't let that fail the build.
     555   FAIL_NO_SRC := false
     556 endif
     557
     558 # Get the complete module source path.
     559 MODULESOURCEPATH := $(call GetModuleSrcPath)
     560
     561 # Add imported modules to the modulepath
     562 MODULEPATH := $(call PathList, $(IMPORT_MODULES_CLASSES))
     563
     564 ifeq ($(MODULE), jdk.internal.vm.ci)
     565   ## WORKAROUND jdk.internal.vm.ci source structure issue
     566   JVMCI_MODULESOURCEPATH := $(MODULESOURCEPATH) \
     567       $(subst /$(MODULE)/,/*/, $(filter-out %processor/src, \
     568           $(wildcard $(TOPDIR)/src/$(MODULE)/share/classes/*/src)))
     569   MODULESOURCEPATH := $(call PathList, $(JVMCI_MODULESOURCEPATH))
     570 endif
     571
     572 ifeq ($(MODULE), jdk.internal.vm.compiler)
     573   ## WORKAROUND jdk.internal.vm.compiler source structure issue
     574   VM_COMPILER_MODULESOURCEPATH := $(MODULESOURCEPATH) \
     575       $(subst /$(MODULE)/,/*/, $(filter-out %processor/src %test/src %jtt/src %bench/src %microbenchmarks/src, \
     576           $(wildcard $(TOPDIR)/src/$(MODULE)/share/classes/*/src)))
     577   MODULESOURCEPATH := $(call PathList, $(VM_COMPILER_MODULESOURCEPATH))
     578 endif
     579
     580 ifeq ($(MODULE), jdk.aot)
     581   ## WORKAROUND jdk.aot source structure issue
     582   AOT_MODULESOURCEPATH := $(MODULESOURCEPATH) \
     583       $(subst /$(MODULE)/,/*/, $(filter-out %processor/src, \
     584           $(wildcard $(TOPDIR)/src/$(MODULE)/share/classes/*/src)))
     585   MODULESOURCEPATH := $(call PathList, $(AOT_MODULESOURCEPATH))
     586 endif
     587
     588 $(eval $(call SetupJavaCompilation, $(MODULE), \
     589     SETUP := $(if $($(MODULE)_SETUP), $($(MODULE)_SETUP), GENERATE_JDKBYTECODE), \
     590     MODULE := $(MODULE), \
     591     SRC := $(wildcard $(MODULE_SRC_DIRS)), \
     592     INCLUDES := $(JDK_USER_DEFINED_FILTER), \
     593     FAIL_NO_SRC := $(FAIL_NO_SRC), \
     594     BIN := $(if $($(MODULE)_BIN), $($(MODULE)_BIN), $(JDK_OUTPUTDIR)/modules), \
     595     HEADERS := $(SUPPORT_OUTPUTDIR)/headers, \
     596     CREATE_API_DIGEST := true, \
     597     ADD_JAVAC_FLAGS := \
     598         $($(MODULE)_ADD_JAVAC_FLAGS) \
     599         --module-source-path $(MODULESOURCEPATH) \
     600         --module-path $(MODULEPATH) \
     601         --system none, \
     602 ))
     603
     604 TARGETS += $($(MODULE)) $($(MODULE)_COPY_EXTRA)
     605
     606 # Declare dependencies between java compilations of different modules.
     607 # Since the other modules are declared in different invocations of this file,
     608 # use the macro to find the correct target file to depend on.
     609 # Only the javac compilation actually depends on other modules so limit
     610 # dependency declaration to that by using the *_COMPILE_TARGET variable.
     611 $($(MODULE)_COMPILE_TARGET): $(foreach d, $(call FindDepsForModule, $(MODULE)), \
     612     $(call SetupJavaCompilationApiTarget, $d, \
     613         $(if $($d_BIN), $($d_BIN), $(JDK_OUTPUTDIR)/modules/$d)))
     614
     615 ################################################################################
     616 # Copy zh_HK properties files from zh_TW
     617
     618 $(JDK_OUTPUTDIR)/modules/%_zh_HK.properties: $(JDK_OUTPUTDIR)/modules/%_zh_TW.properties
     619         $(install-file)
     620
     621 CreateHkTargets = \
     622     $(patsubst $(TOPDIR)/src/%, $(JDK_OUTPUTDIR)/modules/%, \
     623       $(subst /share/classes,, \
     624         $(subst _zh_TW,_zh_HK, $(filter %_zh_TW.properties, $1))))
     625
     626 ifeq ($(MODULE), java.sql.rowset)
     627   TARGETS += $(call CreateHkTargets, $(java.sql.rowset_CLEAN_FILES))
     628 endif
     629
     630 ifeq ($(MODULE), java.rmi)
     631   TARGETS += $(call CreateHkTargets, $(java.rmi_CLEAN_FILES))
     632 endif
     633
     634 ################################################################################
     635 # If this is an imported module, copy the pre built classes and resources into
     636 # the modules output dir
     637
     638 ifneq ($(wildcard $(IMPORT_MODULES_CLASSES)/$(MODULE)), )
     639   $(JDK_OUTPUTDIR)/modules/$(MODULE)/_imported.marker: \
     640       $(call CacheFind, $(IMPORT_MODULES_CLASSES)/$(MODULE))
     641         $(call MakeDir, $(@D))
     642         # Do not delete marker and build meta data files
     643         $(RM) -r $(filter-out $(@D)/_%, $(wildcard $(@D)/*))
     644         $(CP) -R $(IMPORT_MODULES_CLASSES)/$(MODULE)/* $(@D)/
     645         $(TOUCH) $@
     646
     647   TARGETS += $(JDK_OUTPUTDIR)/modules/$(MODULE)/_imported.marker
     648
     649   # Add this dependency to avoid a race between compiling module-info.java and
     650   # importing the classes.
     651   $($(MODULE)_COMPILE_TARGET): $(JDK_OUTPUTDIR)/modules/$(MODULE)/_imported.marker
     652 endif
     653
     654 ################################################################################
     655
     656 ifeq ($(MODULE), jdk.scripting.nashorn)
     657   include CompileJavaModulesNashorn.gmk
     658 endif
     659
     660 ################################################################################
     661
     662 $(eval $(call IncludeCustomExtension, CompileJavaModules-post.gmk))
     663
     664 ################################################################################
     665
     666 all: $(TARGETS)
     667
     668 .PHONY: all