21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
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 |
22 # or visit www.oracle.com if you need additional information or have any |
23 # questions. |
23 # questions. |
24 # |
24 # |
25 |
25 |
26 $(eval $(call IncludeCustomExtension, hotspot/gensrc/GensrcJfr.gmk)) |
26 ################################################################################ |
|
27 # Build tools needed for the JFR source code generation |
27 |
28 |
28 ################################################################################ |
29 JFR_TOOLS_SRCDIR := $(TOPDIR)/make/src/classes |
29 # Build tools needed for the Jfr source code generation |
30 JFR_TOOLS_OUTPUTDIR := $(OUTPUTDIR)/buildtools/tools_classes |
30 |
|
31 JFR_TOOLS_SRCDIR := $(TOPDIR)/src/hotspot/share/jfr/metadata |
|
32 JFR_TOOLS_OUTPUTDIR := $(JVM_VARIANT_OUTPUTDIR)/tools/jfr |
|
33 |
31 |
34 $(eval $(call SetupJavaCompiler, GENERATE_JFRBYTECODE, \ |
32 $(eval $(call SetupJavaCompiler, GENERATE_JFRBYTECODE, \ |
35 JAVAC := $(JAVAC), \ |
33 JAVAC := $(JAVAC), \ |
36 FLAGS := $(DISABLE_WARNINGS), \ |
34 FLAGS := $(DISABLE_WARNINGS), \ |
37 SERVER_DIR := $(SJAVAC_SERVER_DIR), \ |
35 SERVER_DIR := $(SJAVAC_SERVER_DIR), \ |
40 )) |
38 )) |
41 |
39 |
42 $(eval $(call SetupJavaCompilation, BUILD_JFR_TOOLS, \ |
40 $(eval $(call SetupJavaCompilation, BUILD_JFR_TOOLS, \ |
43 SETUP := GENERATE_JFRBYTECODE, \ |
41 SETUP := GENERATE_JFRBYTECODE, \ |
44 SRC := $(JFR_TOOLS_SRCDIR), \ |
42 SRC := $(JFR_TOOLS_SRCDIR), \ |
45 INCLUDE_FILES := GenerateJfrFiles.java, \ |
|
46 BIN := $(JFR_TOOLS_OUTPUTDIR), \ |
43 BIN := $(JFR_TOOLS_OUTPUTDIR), \ |
47 )) |
44 )) |
48 |
45 |
49 TOOL_JFR_GEN := $(JAVA_SMALL) -cp $(JFR_TOOLS_OUTPUTDIR) GenerateJfrFiles |
46 TARGETS += $(BUILD_JFR_TOOLS) |
50 |
47 |
51 ################################################################################ |
48 ################################################################################ |
52 # Setup make rules for Jfr file file generation. |
49 # Setup make rules for JFR gensrc file generation. |
53 # |
50 # |
54 # Parameter 1 is the name of the rule. This name is used as variable prefix, |
51 TOOL_JFR_GEN := $(JAVA_SMALL) -cp $(JFR_TOOLS_OUTPUTDIR) build.tools.jfr.GenerateJfrFiles |
55 # and the targets generated are listed in a variable by that name. This name is |
|
56 # also used as the name of the output file. |
|
57 # |
|
58 # Remaining parameters are named arguments. These include: |
|
59 # XML_FILE -- The input source file to use |
|
60 # XSD_FILE -- The input schema for validation |
|
61 # OUTPUT_DIR -- The directory to put the generated file in |
|
62 SetupJfrGeneration = $(NamedParamsMacroTemplate) |
|
63 define SetupJfrGenerationBody |
|
64 $$($1_OUTPUT_DIR)/$1: $$($1_XML_FILE) $$($1_XSD_FILE) $$(BUILD_JFR_TOOLS) |
|
65 $$(call LogInfo, Generating $$(@F)) |
|
66 $$(call MakeDir, $$(@D)) |
|
67 $$(call ExecuteWithLog, $$@, $$(TOOL_JFR_GEN) $$($1_XML_FILE) $$($1_XSD_FILE) $$($1_OUTPUT_DIR)) |
|
68 test -f $$@ |
|
69 |
|
70 TARGETS += $$($1_OUTPUT_DIR)/$1 |
|
71 |
|
72 endef |
|
73 |
|
74 ################################################################################ |
|
75 # Create files in gensrc/jfrfiles |
|
76 |
52 |
77 JFR_OUTPUTDIR := $(JVM_VARIANT_OUTPUTDIR)/gensrc/jfrfiles |
53 JFR_OUTPUTDIR := $(JVM_VARIANT_OUTPUTDIR)/gensrc/jfrfiles |
78 JFR_SRCDIR := $(TOPDIR)/src/hotspot/share/jfr/metadata |
54 JFR_SRCDIR := $(TOPDIR)/src/hotspot/share/jfr/metadata |
79 |
55 |
80 METADATA_XML ?= $(JFR_SRCDIR)/metadata.xml |
56 # Changing these will trigger a rebuild of generated jfr files. |
81 METADATA_XSD ?= $(JFR_SRCDIR)/metadata.xsd |
57 METADATA_XML := $(JFR_SRCDIR)/metadata.xml |
|
58 METADATA_XSD := $(JFR_SRCDIR)/metadata.xsd |
82 |
59 |
83 # Changing these will trigger a rebuild of generated jfr files. |
60 $(JFR_OUTPUTDIR)/jfrEventClasses.hpp: $(METADATA_XML) $(METADATA_XSD) \ |
84 JFR_DEPS += \ |
61 $(BUILD_JFR_TOOLS) |
85 $(METADATA_XML) \ |
62 $(call LogInfo, Generating $(@F)) |
86 $(METADATA_XSD) \ |
63 $(call MakeDir, $(@D)) |
87 # |
64 $(call ExecuteWithLog, $@, $(TOOL_JFR_GEN) $(METADATA_XML) $(METADATA_XSD) $(JFR_OUTPUTDIR)) |
|
65 test -f $@ |
88 |
66 |
89 # our generator will generate all files in one go, so only need to setup one target rule |
67 TARGETS += $(JFR_OUTPUTDIR)/jfrEventClasses.hpp |
90 $(eval $(call SetupJfrGeneration, jfrEventClasses.hpp, \ |
|
91 XML_FILE := $(METADATA_XML), \ |
|
92 XSD_FILE := $(METADATA_XSD), \ |
|
93 OUTPUT_DIR := $(JFR_OUTPUTDIR), \ |
|
94 )) |
|