diff --git a/make/BuildNashorn.gmk b/make/BuildNashorn.gmk deleted file mode 100644 index c9e31433cf2..00000000000 --- a/make/BuildNashorn.gmk +++ /dev/null @@ -1,115 +0,0 @@ -# -# Copyright (c) 2010, 2017, 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 JarArchive.gmk -include JavaCompilation.gmk -include SetupJavaCompilers.gmk -include TextFileProcessing.gmk -include Modules.gmk - -JDK_CLASSES := $(call PathList, $(strip $(addprefix $(JDK_OUTPUTDIR)/modules/, \ - java.base java.logging java.scripting jdk.dynalink))) - -# Need to use source and target 8 for nasgen to work. -$(eval $(call SetupJavaCompiler, GENERATE_NEWBYTECODE_DEBUG, \ - JVM := $(JAVA_JAVAC), \ - JAVAC := $(NEW_JAVAC), \ - FLAGS := -g -source 10 -target 10 --upgrade-module-path "$(JDK_OUTPUTDIR)/modules/" \ - --system none --module-source-path $(call GetModuleSrcPath), \ - SERVER_DIR := $(SJAVAC_SERVER_DIR), \ - SERVER_JVM := $(SJAVAC_SERVER_JAVA))) - -# Build nashorn into intermediate directory -# Name the compilation setup the same as the module, as is done in the global -# CompileJavaModules.gmk, to make dependency checking with other modules work -# seamlessly. -$(eval $(call SetupJavaCompilation, jdk.scripting.nashorn, \ - SETUP := GENERATE_NEWBYTECODE_DEBUG, \ - MODULE := jdk.scripting.nashorn, \ - SRC := $(TOPDIR)/src/jdk.scripting.nashorn/share/classes, \ - COPY := .properties .js, \ - BIN := $(SUPPORT_OUTPUTDIR)/special_classes, \ - CREATE_API_DIGEST := true, \ -)) - -# 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. -$(jdk.scripting.nashorn_COMPILE_TARGET): $(foreach d, $(call FindDepsForModule, jdk.scripting.nashorn), \ - $(call SetupJavaCompilationApiTarget, $d, \ - $(if $($d_BIN), $($d_BIN), $(JDK_OUTPUTDIR)/modules/$d))) - -NASGEN_SRC := $(TOPDIR)/make/nashorn/buildtools/nasgen/src -ASM_SRC := $(TOPDIR)/src/java.base/share/classes/jdk/internal/org/objectweb/asm - -# Build nasgen -$(eval $(call SetupJavaCompilation, BUILD_NASGEN, \ - SETUP := GENERATE_OLDBYTECODE, \ - SRC := $(NASGEN_SRC) $(ASM_SRC), \ - BIN := $(BUILDTOOLS_OUTPUTDIR)/nasgen_classes)) - -NASHORN_CLASSES_DIR := $(JDK_OUTPUTDIR)/modules/jdk.scripting.nashorn -NASGEN_RUN_FILE := $(NASHORN_CLASSES_DIR)/_the.nasgen.run - -NASGEN_OPTIONS := \ - -cp $(BUILDTOOLS_OUTPUTDIR)/nasgen_classes \ - --patch-module java.base=$(BUILDTOOLS_OUTPUTDIR)/nasgen_classes \ - --add-exports java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED \ - --add-exports java.base/jdk.internal.org.objectweb.asm.util=ALL-UNNAMED \ - # - -# Copy classes to final classes dir and run nasgen to modify classes in jdk.nashorn.internal.objects package -$(NASGEN_RUN_FILE): $(BUILD_NASGEN) $(jdk.scripting.nashorn) - $(ECHO) Running nasgen - $(MKDIR) -p $(@D) - $(RM) -rf $(@D)/jdk $(@D)/netscape - $(CP) -R -p $(SUPPORT_OUTPUTDIR)/special_classes/jdk.scripting.nashorn/* $(@D)/ - $(JAVA_SMALL) $(NASGEN_OPTIONS) \ - jdk.nashorn.internal.tools.nasgen.Main $(@D) jdk.nashorn.internal.objects $(@D) - $(TOUCH) $@ - -# Version file needs to be processed with version numbers -$(eval $(call SetupTextFileProcessing, BUILD_VERSION_FILE, \ - SOURCE_FILES := $(TOPDIR)/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/version.properties.template, \ - OUTPUT_FILE := $(JDK_OUTPUTDIR)/modules/jdk.scripting.nashorn/jdk/nashorn/internal/runtime/resources/version.properties, \ - REPLACEMENTS := \ - @@VERSION_STRING@@ => $(VERSION_STRING) ; \ - @@VERSION_SHORT@@ => $(VERSION_SHORT) , \ -)) - -# Version processing needs to happen after nasgen run since nasgen run deletes it -$(BUILD_VERSION_FILE): $(NASGEN_RUN_FILE) - -compile: $(NASGEN_RUN_FILE) $(BUILD_VERSION_FILE) -all: compile - -.PHONY: compile all diff --git a/make/CompileJavaModules.gmk b/make/CompileJavaModules.gmk index 72c7391d45d..46021495859 100644 --- a/make/CompileJavaModules.gmk +++ b/make/CompileJavaModules.gmk @@ -341,6 +341,10 @@ jdk.jartool_ADD_JAVAC_FLAGS += -XDstringConcat=inline ################################################################################ +jdk.scripting.nashorn_COPY := .properties .js + +################################################################################ + jdk.scripting.nashorn.shell_COPY += .js .properties ################################################################################ @@ -642,6 +646,12 @@ endif ################################################################################ +ifeq ($(MODULE), jdk.scripting.nashorn) + include CompileJavaModulesNashorn.gmk +endif + +################################################################################ + $(eval $(call IncludeCustomExtension, CompileJavaModules-post.gmk)) ################################################################################ diff --git a/make/CompileJavaModulesNashorn.gmk b/make/CompileJavaModulesNashorn.gmk new file mode 100644 index 00000000000..6729694ba5c --- /dev/null +++ b/make/CompileJavaModulesNashorn.gmk @@ -0,0 +1,52 @@ +# +# Copyright (c) 2010, 2018, 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. +# + +NASGEN_SRC := $(TOPDIR)/make/nashorn/buildtools/nasgen/src +ASM_SRC := $(TOPDIR)/src/java.base/share/classes/jdk/internal/org/objectweb/asm + +# Build nasgen +$(eval $(call SetupJavaCompilation, BUILD_NASGEN, \ + SETUP := GENERATE_OLDBYTECODE, \ + SRC := $(NASGEN_SRC) $(ASM_SRC), \ + BIN := $(BUILDTOOLS_OUTPUTDIR)/nasgen_classes, \ +)) + +NASHORN_CLASSES_DIR := $(JDK_OUTPUTDIR)/modules/$(MODULE) +NASGEN_RUN_FILE := $(NASHORN_CLASSES_DIR)/_the.nasgen.run + +NASGEN_OPTIONS := \ + -cp $(BUILDTOOLS_OUTPUTDIR)/nasgen_classes \ + --patch-module java.base=$(BUILDTOOLS_OUTPUTDIR)/nasgen_classes \ + --add-exports java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED \ + --add-exports java.base/jdk.internal.org.objectweb.asm.util=ALL-UNNAMED \ + # + +# Run nasgen to modify classes in jdk.nashorn.internal.objects package +$(NASGEN_RUN_FILE): $(BUILD_NASGEN) $($(MODULE)) + $(ECHO) Running nasgen + $(JAVA_SMALL) $(NASGEN_OPTIONS) \ + jdk.nashorn.internal.tools.nasgen.Main $(@D) \ + jdk.nashorn.internal.objects $(@D) + $(TOUCH) $@ diff --git a/make/Main.gmk b/make/Main.gmk index 7bd0dc62e62..c916b01a0fc 100644 --- a/make/Main.gmk +++ b/make/Main.gmk @@ -186,7 +186,7 @@ $(foreach m, $(IMPORT_COPY_MODULES), $(eval $(call DeclareImportCopyRecipe,$m))) ALL_TARGETS += $(ALL_COPY_TARGETS) ################################################################################ -# Targets for compiling all java modules. Nashorn is treated separately. +# Targets for compiling all java modules. JAVA_MODULES := $(ALL_MODULES) JAVA_TARGETS := $(addsuffix -java, $(JAVA_MODULES)) @@ -196,14 +196,7 @@ define DeclareCompileJavaRecipe -f CompileJavaModules.gmk MODULE=$1) endef -$(foreach m, $(filter-out jdk.scripting.nashorn, $(JAVA_MODULES)), \ - $(eval $(call DeclareCompileJavaRecipe,$m))) - -# Build nashorn. Needs to be compiled separately from the rest of the modules -# due to nasgen. -jdk.scripting.nashorn-java: - +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \ - -f BuildNashorn.gmk compile) +$(foreach m, $(JAVA_MODULES), $(eval $(call DeclareCompileJavaRecipe,$m))) ALL_TARGETS += $(JAVA_TARGETS) diff --git a/make/gensrc/Gensrc-jdk.scripting.nashorn.gmk b/make/gensrc/Gensrc-jdk.scripting.nashorn.gmk new file mode 100644 index 00000000000..9dec093eede --- /dev/null +++ b/make/gensrc/Gensrc-jdk.scripting.nashorn.gmk @@ -0,0 +1,51 @@ +# +# Copyright (c) 2018, 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. +# + +default: all + +include $(SPEC) +include MakeBase.gmk +include TextFileProcessing.gmk + +################################################################################ + +# Version file needs to be processed with version numbers +VERSION_FILE := jdk/nashorn/internal/runtime/resources/version.properties + +$(eval $(call SetupTextFileProcessing, BUILD_VERSION_FILE, \ + SOURCE_FILES := $(TOPDIR)/src/$(MODULE)/share/classes/$(VERSION_FILE).template, \ + OUTPUT_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/$(VERSION_FILE), \ + REPLACEMENTS := \ + @@VERSION_STRING@@ => $(VERSION_STRING) ; \ + @@VERSION_SHORT@@ => $(VERSION_SHORT) , \ +)) + +TARGETS += $(NASGEN_RUN_FILE) $(BUILD_VERSION_FILE) + +################################################################################ + +all: $(TARGETS) + +.PHONY: all default