make/BuildMicrobenchmark.gmk
author ihse
Tue, 25 Sep 2018 13:22:12 +0200
branchJEP-230-microbenchmarks-branch
changeset 56905 d4ab0656f48e
child 56907 040e5da15709
permissions -rw-r--r--
Initial import of Claes work.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56905
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
     1
#
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
     2
# Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
     3
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
     4
#
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
     5
# This code is free software; you can redistribute it and/or modify it
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
     6
# under the terms of the GNU General Public License version 2 only, as
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
     7
# published by the Free Software Foundation.  Oracle designates this
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
     8
# particular file as subject to the "Classpath" exception as provided
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
     9
# by Oracle in the LICENSE file that accompanied this code.
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    10
#
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    11
# This code is distributed in the hope that it will be useful, but WITHOUT
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    12
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    13
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    14
# version 2 for more details (a copy is included in the LICENSE file that
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    15
# accompanied this code).
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    16
#
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    17
# You should have received a copy of the GNU General Public License version
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    18
# 2 along with this work; if not, write to the Free Software Foundation,
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    19
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    20
#
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    21
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    22
# or visit www.oracle.com if you need additional information or have any
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    23
# questions.
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    24
#
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    25
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    26
# This must be the first rule
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    27
default: all
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    28
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    29
include $(SPEC)
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    30
include MakeBase.gmk
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    31
include JavaCompilation.gmk
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    32
include SetupJavaCompilers.gmk
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    33
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    34
# Hook to include the corresponding custom Makefile, if present.
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    35
$(eval $(call IncludeCustomExtension, benchmark, BuildMicrobenchmark.gmk))
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    36
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    37
#### Variables
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    38
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    39
MICROBENCHMARK_SRC := $(TOPDIR)/test/micro/src/classes
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    40
MICROBENCHMARK_OUTPUT := $(OUTPUTDIR)/micro
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    41
MICROBENCHMARK_DIST := $(OUTPUTDIR)/micro/dist
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    42
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    43
# Uncomment MICROBENCHMARK_RESOURCES when resources are added
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    44
#MICROBENCHMARK_RESOURCES += $(TOPDIR)/test/micro/src/resources
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    45
MICROBENCHMARK_CLASSES := $(OUTPUTDIR)/micro/classes
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    46
MICROBENCHMARK_GENERATED_SRC := $(MICROBENCHMARK_CLASSES)_generated
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    47
MICROBENCHMARK_JAR := $(MICROBENCHMARK_DIST)/benchmarks.jar
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    48
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    49
JMH_UNPACKED := $(MICROBENCHMARK_OUTPUT)/jmh_unpacked
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    50
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    51
#### Compile Targets
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    52
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    53
# Create separate directories for generated files 
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    54
# Avoids copying .java files into JARs later
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    55
$(MICROBENCHMARK_GENERATED_SRC)/_generated.state:
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    56
	$(RM) -r $(MICROBENCHMARK_GENERATED_SRC)
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    57
	$(MKDIR) -p $(MICROBENCHMARK_GENERATED_SRC)
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    58
	$(TOUCH) $@
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    59
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    60
$(call PrintVar, JMH_COMPILE_JARS)
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    61
$(call PrintVar, JMH_RUNTIME_JARS)
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    62
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    63
ENABLE_JAVAC_SERVER := false
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    64
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    65
# Building microbenchmark requires the jdk.unsupported and java.management modules
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    66
$(eval $(call SetupJavaCompiler,GENERATE_USINGJDKBYTECODE_UNSUPPORTED, \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    67
    JVM := $(JAVA_SMALL) --add-modules jdk.unsupported --limit-modules java.management, \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    68
    JAVAC := $(NEW_JAVAC), \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    69
    FLAGS := --upgrade-module-path $(JDK_OUTPUTDIR)/modules --system none $(DISABLE_WARNINGS), \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    70
    SERVER_DIR := $(SJAVAC_SERVER_DIR), \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    71
    SERVER_JVM := $(SJAVAC_SERVER_JAVA)))
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    72
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    73
# Build microbenchmark suite for the current JDK
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    74
$(eval $(call SetupJavaCompilation,BUILD_JDK_MICROBENCHMARK, \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    75
    SETUP := GENERATE_USINGJDKBYTECODE_UNSUPPORTED, \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    76
    DISABLE_SJAVAC := true, \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    77
    ADD_JAVAC_FLAGS := -cp $(call PathList, $(JMH_COMPILE_JARS)) \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    78
        -s $(MICROBENCHMARK_GENERATED_SRC) \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    79
        -Xlint -Werror, \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    80
    SRC := $(MICROBENCHMARK_SRC), \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    81
    BIN := $(MICROBENCHMARK_CLASSES)))
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    82
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    83
$(BUILD_JDK_MICROBENCHMARK): $(JMH_COMPILE_JARS) $(MICROBENCHMARK_GENERATED_SRC)/_generated.state
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    84
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    85
#### Package Targets
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    86
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    87
# Unpacking dependencies for inclusion in the benchmark JARs
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    88
$(JMH_UNPACKED)/_unpacked.state: $(JMH_RUNTIME_JARS)
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    89
	$(RM) -r $(JMH_UNPACKED)
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    90
	$(MKDIR) -p $(JMH_UNPACKED)
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    91
	$(foreach jar, $(JMH_RUNTIME_JARS), \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    92
            $$($(UNZIP) -oq $(jar) -d $(JMH_UNPACKED)))
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    93
	$(RM) -r $(JMH_UNPACKED)/META-INF
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    94
	$(RM) $(JMH_UNPACKED)/*.xml
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    95
	$(TOUCH) $@
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    96
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    97
# Need double \n to get new lines and no trailing spaces
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    98
MANIFEST_ATTRIBUTES := Build: $(FULL_VERSION)\n\
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
    99
\nJMH-Version: $(JMH_VERSION)\n\
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
   100
\nName: OpenJDK Microbenchmark Suite
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
   101
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
   102
# Create benchmarks JAR file with benchmarks for both the old and new JDK
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
   103
$(eval $(call SetupJarArchive,BUILD_JDK_JAR, \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
   104
    DEPENDENCIES := $(BUILD_JDK_MICROBENCHMARK) \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
   105
        $(JMH_UNPACKED)/_unpacked.state, \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
   106
    SRCS := $(JMH_UNPACKED) $(MICROBENCHMARK_CLASSES) $(MICROBENCHMARK_RESOURCES), \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
   107
    SUFFIXES := .*, \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
   108
    EXCLUDE_FILES:= _the.BUILD_JDK_MICROBENCHMARK_batch \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
   109
        _the.BUILD_JDK_MICROBENCHMARK.vardeps _unpacked.state, \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
   110
    EXTRA_MANIFEST_ATTR := $(MANIFEST_ATTRIBUTES), \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
   111
    JARMAIN := org.openjdk.jmh.Main, \
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
   112
    JAR := $(MICROBENCHMARK_JAR)))
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
   113
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
   114
all: $(MICROBENCHMARK_JAR)
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
   115
d4ab0656f48e Initial import of Claes work.
ihse
parents:
diff changeset
   116
.PHONY: all