nashorn/make/BuildNashorn.gmk
author lagergren
Tue, 14 Oct 2014 15:28:24 +0200 (2014-10-14)
changeset 27102 c64b3468d51d
parent 26892 97093836f3b7
child 27571 08ef93eaca80
permissions -rw-r--r--
8012518: Reengineer Parser.java to make it play well with the copy-on-write IR. Summary: Remove the kludges introduced to make the parser work with the copy on write IR. Now everything is done bottom up, finshing node children completely before node parents. The repeated non-functional pattern 'node = node.setSomething(something);' is gone. Resulting code is much more readable, and extensible for future work. The parser is now also consistent with the rest of the stateless copy-on-write world in code generation. Reviewed-by: lagergren, attila, hannesw, shade Contributed-by: andreas.gabrielsson@oracle.com
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
16198
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
     1
#
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
     2
# Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
     3
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
     4
#
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
     5
# This code is free software; you can redistribute it and/or modify it
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
     6
# under the terms of the GNU General Public License version 2 only, as
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
     7
# published by the Free Software Foundation.  Oracle designates this
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
     8
# particular file as subject to the "Classpath" exception as provided
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
     9
# by Oracle in the LICENSE file that accompanied this code.
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    10
#
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    11
# This code is distributed in the hope that it will be useful, but WITHOUT
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    12
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    13
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    14
# version 2 for more details (a copy is included in the LICENSE file that
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    15
# accompanied this code).
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    16
#
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    17
# You should have received a copy of the GNU General Public License version
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    18
# 2 along with this work; if not, write to the Free Software Foundation,
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    19
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    20
#
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    21
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    22
# or visit www.oracle.com if you need additional information or have any
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    23
# questions.
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    24
#
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    25
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    26
# This must be the first rule
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    27
default: all
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    28
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    29
-include $(SPEC)
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    30
include MakeBase.gmk
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    31
include JavaCompilation.gmk
26892
97093836f3b7 8059135: New Nasgen dependencies to Nashorn breaks the JDK 9 build - bootstrapping problem?
erikj
parents: 25865
diff changeset
    32
include SetupJavaCompilers.gmk
16198
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    33
25865
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
    34
JDK_CLASSES := $(subst $(SPACE),$(PATH_SEP),$(strip $(addprefix $(JDK_OUTPUTDIR)/modules/, \
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
    35
      java.base java.logging java.scripting)))
16198
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    36
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    37
NASHORN_JAR := $(NASHORN_DIST)/nashorn.jar
16200
1c54dc374fe4 8007094: Apply version to nashorn.jar manifest
jlaskey
parents: 16198
diff changeset
    38
NASHORN_VERSION := $(JDK_VERSION)
1c54dc374fe4 8007094: Apply version to nashorn.jar manifest
jlaskey
parents: 16198
diff changeset
    39
NASHORN_FULL_VERSION := $(FULL_VERSION)
1c54dc374fe4 8007094: Apply version to nashorn.jar manifest
jlaskey
parents: 16198
diff changeset
    40
1c54dc374fe4 8007094: Apply version to nashorn.jar manifest
jlaskey
parents: 16198
diff changeset
    41
ifdef MILESTONE
20576
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
    42
  ifeq ($(MILESTONE), internal)
16200
1c54dc374fe4 8007094: Apply version to nashorn.jar manifest
jlaskey
parents: 16198
diff changeset
    43
    NASHORN_VERSION = $(FULL_VERSION)
1c54dc374fe4 8007094: Apply version to nashorn.jar manifest
jlaskey
parents: 16198
diff changeset
    44
  endif
1c54dc374fe4 8007094: Apply version to nashorn.jar manifest
jlaskey
parents: 16198
diff changeset
    45
endif
16198
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    46
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    47
# Need to use source and target 7 for nasgen to work.
20576
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
    48
$(eval $(call SetupJavaCompiler,GENERATE_NEWBYTECODE_DEBUG, \
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
    49
    JVM := $(JAVA), \
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
    50
    JAVAC := $(NEW_JAVAC), \
25865
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
    51
    FLAGS := -g -source 7 -target 7 -bootclasspath "$(JDK_CLASSES)", \
20576
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
    52
    SERVER_DIR := $(SJAVAC_SERVER_DIR), \
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
    53
    SERVER_JVM := $(SJAVAC_SERVER_JAVA)))
16198
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    54
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    55
# Build nashorn into intermediate directory
20576
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
    56
$(eval $(call SetupJavaCompilation,BUILD_NASHORN, \
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
    57
    SETUP := GENERATE_NEWBYTECODE_DEBUG, \
25865
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
    58
    SRC := $(NASHORN_TOPDIR)/src/jdk.scripting.nashorn/share/classes, \
20576
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
    59
    COPY := .properties .js, \
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
    60
    BIN := $(NASHORN_OUTPUTDIR)/nashorn_classes))
16198
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    61
16266
5ddfc1208ef3 8008950: jdk8/tl failing with SetupJavaCompilation BUILD_NASGEN contains missing directory -c on Windows
alanb
parents: 16265
diff changeset
    62
NASGEN_SRC := $(NASHORN_TOPDIR)/buildtools/nasgen/src
25865
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
    63
ASM_SRC := $(JDK_TOPDIR)/src/java.base/share/classes/jdk/internal/org/objectweb/asm
16265
bd8e2707574a 8009021: nasgen should be run on boot jdk rather than currenly built jdk
sundar
parents: 16261
diff changeset
    64
16198
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    65
# Build nasgen
20576
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
    66
$(eval $(call SetupJavaCompilation,BUILD_NASGEN, \
26892
97093836f3b7 8059135: New Nasgen dependencies to Nashorn breaks the JDK 9 build - bootstrapping problem?
erikj
parents: 25865
diff changeset
    67
    SETUP := GENERATE_OLDBYTECODE, \
20576
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
    68
    SRC := $(NASGEN_SRC) $(ASM_SRC), \
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
    69
    BIN := $(NASHORN_OUTPUTDIR)/nasgen_classes, \
26892
97093836f3b7 8059135: New Nasgen dependencies to Nashorn breaks the JDK 9 build - bootstrapping problem?
erikj
parents: 25865
diff changeset
    70
    ADD_JAVAC_FLAGS := -bootclasspath "$(BOOT_RTJAR)$(PATH_SEP)$(NASHORN_OUTPUTDIR)/nashorn_classes"))
16198
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    71
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    72
# Nasgen needs nashorn classes
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    73
$(BUILD_NASGEN): $(BUILD_NASHORN)
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    74
25865
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
    75
NASHORN_CLASSES_DIR := $(JDK_OUTPUTDIR)/modules/jdk.scripting.nashorn
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
    76
NASGEN_RUN_FILE := $(NASHORN_CLASSES_DIR)/_the.nasgen.run
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
    77
16198
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    78
# Copy classes to final classes dir and run nasgen to modify classes in jdk.nashorn.internal.objects package
25865
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
    79
$(NASGEN_RUN_FILE): $(BUILD_NASGEN)
16198
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    80
	$(ECHO) Running nasgen
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    81
	$(MKDIR) -p $(@D)
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    82
	$(RM) -rf $(@D)/jdk $(@D)/netscape
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    83
	$(CP) -R -p $(NASHORN_OUTPUTDIR)/nashorn_classes/* $(@D)/
16265
bd8e2707574a 8009021: nasgen should be run on boot jdk rather than currenly built jdk
sundar
parents: 16261
diff changeset
    84
	$(FIXPATH) $(JAVA) \
23367
20c3810174dc 8033951: nasgen needs the newly build nasgen and nashorn classes in the bootclasspath
simonis
parents: 21865
diff changeset
    85
	    -Xbootclasspath/p:"$(NASHORN_OUTPUTDIR)/nasgen_classes$(PATH_SEP)$(NASHORN_OUTPUTDIR)/nashorn_classes" \
20576
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
    86
	    jdk.nashorn.internal.tools.nasgen.Main $(@D) jdk.nashorn.internal.objects $(@D)
16198
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    87
	$(TOUCH) $@
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    88
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    89
# Version file needs to be processed with version numbers
25865
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
    90
VERSION_FILE := $(JDK_OUTPUTDIR)/modules/jdk.scripting.nashorn/jdk/nashorn/internal/runtime/resources/version.properties
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
    91
VERSION_SRC := $(NASHORN_TOPDIR)/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/version.properties-template
20576
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
    92
16198
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    93
# Needs to happen after nasgen run since nasgen run deletes it
25865
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
    94
$(VERSION_FILE): $(NASGEN_RUN_FILE)
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
    95
$(VERSION_FILE): $(VERSION_SRC)
16198
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    96
	$(ECHO) Creating version.properties
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
    97
	$(MKDIR) -p $(@D)
16200
1c54dc374fe4 8007094: Apply version to nashorn.jar manifest
jlaskey
parents: 16198
diff changeset
    98
	$(CAT) $< | $(SED) -e 's/$$(FULL_VERSION)/$(NASHORN_FULL_VERSION)/g' \
20576
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
    99
	    -e 's/$$(RELEASE)/$(NASHORN_VERSION)/g' \
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
   100
	    -e '/^#.*$$/d' -e '/^$$/d'  > $@
16198
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
   101
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
   102
20576
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
   103
MANIFEST_ATTRIBUTES := Name: jdk/nashorn/\nImplementation-Title: Oracle Nashorn\nImplementation-Version: $(NASHORN_FULL_VERSION)
16198
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
   104
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
   105
# Create nashorn.jar from the final classes dir
20576
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
   106
$(eval $(call SetupArchive,BUILD_NASHORN_JAR, \
25865
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
   107
    $(NASGEN_RUN_FILE) \
20576
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
   108
    $(VERSION_FILE), \
25865
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
   109
    SRCS := $(NASHORN_CLASSES_DIR), \
20576
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
   110
    SUFFIXES := .class .js .properties Factory, \
25865
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
   111
    MANIFEST := $(NASHORN_TOPDIR)/src/jdk.scripting.nashorn/share/classes/META-INF/MANIFEST.MF, \
20576
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
   112
    EXTRA_MANIFEST_ATTR := $(MANIFEST_ATTRIBUTES), \
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
   113
    SKIP_METAINF := true, \
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
   114
    JAR := $(NASHORN_JAR)))
16198
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
   115
25865
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
   116
compile: $(NASHORN_RUN_FILE) $(VERSION_FILE)
16198
1cfb1fbab2dc 8006676: Integrate Nashorn into new build system
jlaskey
parents:
diff changeset
   117
all: $(NASHORN_JAR)
20576
1763ed231bda 8001931: The new build system whitespace cleanup
ihse
parents: 18856
diff changeset
   118
25865
d38d876f1654 8054834: Modular Source Code
chegar
parents: 23367
diff changeset
   119
.PHONY: compile all