jdk8/jdk8/nashorn: b6c69beebde6 (original) (raw)
OpenJDK / jdk8 / jdk8 / nashorn
changeset 53:b6c69beebde6
8006676: Integrate Nashorn into new build system Reviewed-by: jlaskey Contributed-by: james.laskey@oracle.com
jlaskey | |
---|---|
date | Mon, 28 Jan 2013 16:22:03 -0400 |
parents | 265c46dbcf43 |
children | 333748665588 |
files | make/Makefile makefiles/BuildNashorn.gmk makefiles/Makefile |
diffstat | 3 files changed, 171 insertions(+), 0 deletions(-)[+] [-] make/Makefile 1 makefiles/BuildNashorn.gmk 121 makefiles/Makefile 49 |
line wrap: on
line diff
--- a/make/Makefile Mon Jan 28 21:29:05 2013 +0530 +++ b/make/Makefile Mon Jan 28 16:22:03 2013 -0400 @@ -185,6 +185,7 @@
Standard make clobber target
All ant targets of interest
ANT_TARGETS = clean externals update-externals jar javadoc shelldoc docs test test262 test262parallel octane sunspider perf alltests
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/makefiles/BuildNashorn.gmk Mon Jan 28 16:22:03 2013 -0400 @@ -0,0 +1,121 @@ +# +# Copyright (c) 2010, 2013, 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 JavaCompilation.gmk + +# TODO: build-infra, move this to SPEC +JAVAC_JARS ?= "-Xbootclasspath/p:$(LANGTOOLS_OUTPUTDIR)/dist/bootstrap/lib/javac.jar" [](#l2.37) + -jar $(LANGTOOLS_OUTPUTDIR)/dist/bootstrap/lib/javac.jar + +JDK_CLASSES := $(JDK_OUTPUTDIR)/classes +# TODO: Remove dependency? +DYNALINK_JAR := $(NASHORN_TOPDIR)/build/dynalink/dynalink.jar + +NASHORN_JAR := $(NASHORN_DIST)/nashorn.jar +NASHORN_VERSION := 0.1 + +# Need to use source and target 7 for nasgen to work. +$(eval $(call SetupJavaCompiler,COMPILER_SETUP,[](#l2.48)
- JVM:=$(JAVA),[](#l2.49)
- JAVAC:=$(JAVAC_JARS),[](#l2.50)
- FLAGS:=-g -source 7 -target 7 -bootclasspath $(JDK_CLASSES),[](#l2.51)
- SERVER_DIR:=$(SJAVAC_SERVER_DIR),[](#l2.52)
- SERVER_JVM:=$(SJAVAC_SERVER_JAVA)))
+ +# Build nashorn into intermediate directory +$(eval $(call SetupJavaCompilation,BUILD_NASHORN,[](#l2.56)
- SETUP:=COMPILER_SETUP,[](#l2.57)
- SRC:=$(NASHORN_TOPDIR)/src,[](#l2.58)
- COPY:=.properties .js,[](#l2.59)
- BIN:=$(NASHORN_OUTPUTDIR)/nashorn_classes,[](#l2.60)
- ADD_JAVAC_FLAGS:=-cp $(DYNALINK_JAR)))
+ +# Build nasgen +$(eval $(call SetupJavaCompilation,BUILD_NASGEN,[](#l2.64)
- SETUP:=COMPILER_SETUP,[](#l2.65)
- SRC:=$(NASHORN_TOPDIR)/buildtools/nasgen/src,[](#l2.66)
- BIN:=$(NASHORN_OUTPUTDIR)/nasgen_classes,[](#l2.67)
- ADD_JAVAC_FLAGS:=-cp $(NASHORN_OUTPUTDIR)/nashorn_classes))
+ +# Nasgen needs nashorn classes +$(BUILD_NASGEN): $(BUILD_NASHORN) + +# Copy classes to final classes dir and run nasgen to modify classes in jdk.nashorn.internal.objects package +# Finally rename classes in jdk.nashorn.internal.objects package +$(NASHORN_OUTPUTDIR)/classes/_the.nasgen.run: $(BUILD_NASGEN) + $(ECHO) Running nasgen
- (MKDIR)−p(MKDIR) -p (MKDIR)−p(@D)
- (RM)−rf(RM) -rf (RM)−rf(@D)/jdk $(@D)/netscape
- (CP)−R−p(CP) -R -p (CP)−R−p(NASHORN_OUTPUTDIR)/nashorn_classes/* $(@D)/
- $(JDK_OUTPUTDIR)/bin/java [](#l2.80)
-cp <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false">(</mo><mi>N</mi><mi>A</mi><mi>S</mi><mi>H</mi><mi>O</mi><mi>R</mi><msub><mi>N</mi><mi>O</mi></msub><mi>U</mi><mi>T</mi><mi>P</mi><mi>U</mi><mi>T</mi><mi>D</mi><mi>I</mi><mi>R</mi><mo stretchy="false">)</mo><mi mathvariant="normal">/</mi><mi>n</mi><mi>a</mi><mi>s</mi><mi>g</mi><mi>e</mi><msub><mi>n</mi><mi>c</mi></msub><mi>l</mi><mi>a</mi><mi>s</mi><mi>s</mi><mi>e</mi><mi>s</mi></mrow><annotation encoding="application/x-tex">(NASHORN_OUTPUTDIR)/nasgen_classes</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.10903em;">N</span><span class="mord mathnormal">A</span><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord mathnormal" style="margin-right:0.08125em;">H</span><span class="mord mathnormal" style="margin-right:0.00773em;">OR</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.10903em;">N</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.109em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.02778em;">O</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathnormal" style="margin-right:0.10903em;">U</span><span class="mord mathnormal" style="margin-right:0.13889em;">TP</span><span class="mord mathnormal" style="margin-right:0.10903em;">U</span><span class="mord mathnormal" style="margin-right:0.13889em;">T</span><span class="mord mathnormal" style="margin-right:0.02778em;">D</span><span class="mord mathnormal" style="margin-right:0.07847em;">I</span><span class="mord mathnormal" style="margin-right:0.00773em;">R</span><span class="mclose">)</span><span class="mord">/</span><span class="mord mathnormal">na</span><span class="mord mathnormal">s</span><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mord mathnormal">e</span><span class="mord"><span class="mord mathnormal">n</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.1514em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">c</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">a</span><span class="mord mathnormal">sses</span></span></span></span>(PATH_SEP)$(NASHORN_OUTPUTDIR)/nashorn_classes \[](#l2.81)
jdk.nashorn.internal.tools.nasgen.Main <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false">(</mo><mi mathvariant="normal">@</mi><mi>D</mi><mo stretchy="false">)</mo><mi>j</mi><mi>d</mi><mi>k</mi><mi mathvariant="normal">.</mi><mi>n</mi><mi>a</mi><mi>s</mi><mi>h</mi><mi>o</mi><mi>r</mi><mi>n</mi><mi mathvariant="normal">.</mi><mi>i</mi><mi>n</mi><mi>t</mi><mi>e</mi><mi>r</mi><mi>n</mi><mi>a</mi><mi>l</mi><mi mathvariant="normal">.</mi><mi>o</mi><mi>b</mi><mi>j</mi><mi>e</mi><mi>c</mi><mi>t</mi><mi>s</mi></mrow><annotation encoding="application/x-tex">(@D) jdk.nashorn.internal.objects </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord">@</span><span class="mord mathnormal" style="margin-right:0.02778em;">D</span><span class="mclose">)</span><span class="mord mathnormal" style="margin-right:0.05724em;">j</span><span class="mord mathnormal">d</span><span class="mord mathnormal" style="margin-right:0.03148em;">k</span><span class="mord">.</span><span class="mord mathnormal">na</span><span class="mord mathnormal">s</span><span class="mord mathnormal">h</span><span class="mord mathnormal" style="margin-right:0.02778em;">or</span><span class="mord mathnormal">n</span><span class="mord">.</span><span class="mord mathnormal">in</span><span class="mord mathnormal">t</span><span class="mord mathnormal" style="margin-right:0.02778em;">er</span><span class="mord mathnormal">na</span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord">.</span><span class="mord mathnormal">o</span><span class="mord mathnormal" style="margin-right:0.05724em;">bj</span><span class="mord mathnormal">ec</span><span class="mord mathnormal">t</span><span class="mord mathnormal">s</span></span></span></span>(@D)[](#l2.82)
- for f in
$(FIND) $(@D)/jdk/nashorn/internal/objects/ -name "*.class"
; do [](#l2.83) mv "$$f" `$(ECHO) "$$f" | <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false">(</mo><mi>S</mi><mi>E</mi><mi>D</mi><mo stretchy="false">)</mo><mi mathvariant="normal">"</mi><mi>s</mi><mi mathvariant="normal">/</mi><mover accent="true"><mi>c</mi><mo>˙</mo></mover><mi>l</mi><mi>a</mi><mi>s</mi><mi>s</mi></mrow><annotation encoding="application/x-tex">(SED) "s/\.class</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord mathnormal" style="margin-right:0.05764em;">SE</span><span class="mord mathnormal" style="margin-right:0.02778em;">D</span><span class="mclose">)</span><span class="mord">"</span><span class="mord mathnormal">s</span><span class="mord">/</span><span class="mord accent"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.6679em;"><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="mord mathnormal">c</span></span><span style="top:-3em;"><span class="pstrut" style="height:3em;"></span><span class="accent-body" style="left:-0.0833em;"><span class="mord">˙</span></span></span></span></span></span></span><span class="mord mathnormal" style="margin-right:0.01968em;">l</span><span class="mord mathnormal">a</span><span class="mord mathnormal">ss</span></span></span></span>$/\.clazz/"`; \[](#l2.84)
done[](#l2.85)
- (TOUCH)(TOUCH) (TOUCH)@ + +# Unpack dynalink.jar for inclusion in nashorn.jar +$(NASHORN_OUTPUTDIR)/classes/_the.dynalink.unpacked: $(DYNALINK_JAR)
- $(ECHO) Unpacking dynalink.jar
- (MKDIR)−p(MKDIR) -p (MKDIR)−p(@D)
- (RM)−rf(RM) -rf (RM)−rf(@D)/org
- (UNZIP)−q(UNZIP) -q (UNZIP)−q(DYNALINK_JAR) -x "META-INF*" -d $(@D)
- (TOUCH)(TOUCH) (TOUCH)@ + +# Version file needs to be processed with version numbers +VERSION_FILE := $(NASHORN_OUTPUTDIR)/classes/jdk/nashorn/internal/runtime/resources/version.properties +# Needs to happen after nasgen run since nasgen run deletes it +$(VERSION_FILE): $(NASHORN_OUTPUTDIR)/classes/_the.nasgen.run +$(VERSION_FILE): $(NASHORN_TOPDIR)/src/jdk/nashorn/internal/runtime/resources/version.properties-template
- $(ECHO) Creating version.properties
- (MKDIR)−p(MKDIR) -p (MKDIR)−p(@D)
- (CAT)(CAT) (CAT)< | (SED)−e′s/(SED) -e 's/(SED)−e′s/$(FULL_VERSION)/$(NASHORN_VERSION)/g' [](#l2.103)
-e 's/$$(RELEASE)/$(NASHORN_VERSION)/g' \[](#l2.104)
-e '/^#.*$$/d' -e '/^$$/d' > $@[](#l2.105)
+ + +MANIFEST_ATTRIBUTES:=Name: jdk/nashorn/\nImplementation-Title: Oracle Nashorn\nImplementation-Version: $(NASHORN_VERSION) + +# Create nashorn.jar from the final classes dir +$(eval $(call SetupArchive,BUILD_NASHORN_JAR,[](#l2.111)
- $(NASHORN_OUTPUTDIR)/classes/_the.nasgen.run [](#l2.112)
- $(NASHORN_OUTPUTDIR)/classes/_the.dynalink.unpacked [](#l2.113)
- $(VERSION_FILE),[](#l2.114)
- SRCS:=$(NASHORN_OUTPUTDIR)/classes,[](#l2.115)
- SUFFIXES:=.class .clazz .js .properties Factory,[](#l2.116)
- MANIFEST:=$(NASHORN_TOPDIR)/src/META-INF/MANIFEST.MF,[](#l2.117)
- EXTRA_MANIFEST_ATTR:=$(MANIFEST_ATTRIBUTES),[](#l2.118)
- SKIP_METAINF:=true,[](#l2.119)
- JAR:=$(NASHORN_JAR)))
+ +all: $(NASHORN_JAR) + +.PHONY: all
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/makefiles/Makefile Mon Jan 28 16:22:03 2013 -0400 @@ -0,0 +1,49 @@ +# +# Copyright (c) 2012, 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. +# + +# Locate this Makefile +ifeq ($(filter /%,$(lastword $(MAKEFILE_LIST))),)
+endif +repo_dir:=$(patsubst %/makefiles/Makefile,%,$(makefile_path)) + +# What is the name of this subsystem (langtools, corba, etc)? +subsystem_name:=$(notdir $(repo_dir)) + +# Try to locate top-level makefile +top_level_makefile:=$(repo_dir)/../common/makefiles/Makefile +ifneq ($(wildcard $(top_level_makefile)),)
- (infoWillrun(info Will run (infoWillrun(subsystem_name) target on top-level Makefile)
- $(info WARNING: This is a non-recommended way of building!)
- $(info ===================================================) +else
- $(info Cannot locate top-level Makefile. Is this repo not checked out as part of a complete forest?)
- $(error Build from top-level Makefile instead) +endif + +all:
- @$(MAKE) -f (toplevelmakefile)(top_level_makefile) (toplevelmakefile)(subsystem_name)