Skip to content

Commit f11021a

Browse files
committed
Merge c5c6289 into 00e0bbb
2 parents 00e0bbb + c5c6289 commit f11021a

File tree

74 files changed

+1394
-1099
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+1394
-1099
lines changed

closed/openjdk-tag.gmk

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
OPENJDK_TAG := jdk-25+10
1+
OPENJDK_TAG := jdk-25+11

make/Docs.gmk

+1-1
Original file line numberDiff line numberDiff line change
@@ -673,7 +673,7 @@ ifeq ($(ENABLE_PANDOC), true)
673673

674674
$(foreach m, $(ALL_MODULES), \
675675
$(eval MAN_$m := $(call ApplySpecFilter, $(filter %.md, $(call FindFiles, \
676-
$(call FindModuleManDirs, $m))))) \
676+
$(call FindModuleManDirsForDocs, $m))))) \
677677
$(if $(MAN_$m), \
678678
$(eval $(call SetupProcessMarkdown, MAN_TO_HTML_$m, \
679679
FILES := $(MAN_$m), \

make/Main.gmk

+13-1
Original file line numberDiff line numberDiff line change
@@ -761,6 +761,17 @@ $(eval $(call SetupTarget, test-image-lib, \
761761
DEPS := build-test-lib, \
762762
))
763763

764+
$(eval $(call SetupTarget, build-test-setup-aot, \
765+
MAKEFILE := test/BuildTestSetupAOT, \
766+
DEPS := interim-langtools exploded-image, \
767+
))
768+
769+
$(eval $(call SetupTarget, test-image-setup-aot, \
770+
MAKEFILE := test/BuildTestSetupAOT, \
771+
TARGET := images, \
772+
DEPS := build-test-setup-aot, \
773+
))
774+
764775
ifeq ($(BUILD_FAILURE_HANDLER), true)
765776
# Builds the failure handler jtreg extension
766777
$(eval $(call SetupTarget, build-test-failure-handler, \
@@ -1289,7 +1300,8 @@ all-docs-bundles: docs-jdk-bundles docs-javase-bundles docs-reference-bundles
12891300
# This target builds the test image
12901301
test-image: prepare-test-image test-image-jdk-jtreg-native \
12911302
test-image-demos-jdk test-image-libtest-jtreg-native \
1292-
test-image-lib-native
1303+
test-image-lib test-image-lib-native \
1304+
test-image-setup-aot
12931305

12941306
ifneq ($(JVM_TEST_IMAGE_TARGETS), )
12951307
# If JVM_TEST_IMAGE_TARGETS is externally defined, use it instead of the

make/RunTests.gmk

+32-31
Original file line numberDiff line numberDiff line change
@@ -703,6 +703,9 @@ define SetJtregValue
703703
endif
704704
endef
705705

706+
################################################################################
707+
# Helper function for creating a customized AOT cache for running tests
708+
################################################################################
706709

707710
# Parameter 1 is the name of the rule.
708711
#
@@ -713,48 +716,47 @@ endef
713716
# $1_AOT_TARGETS List of all targets that the test rule will need to depend on
714717
# $1_AOT_JDK_CACHE The AOT cache file to be used to run the test with
715718
#
716-
SetupAot = $(NamedParamsMacroTemplate)
717-
define SetupAotBody
718-
$1_AOT_JDK_CONF := $$($1_TEST_SUPPORT_DIR)/aot/jdk.aotconf
719+
SetupAOT = $(NamedParamsMacroTemplate)
720+
define SetupAOTBody
721+
$1_AOT_JDK_CONF := $$($1_TEST_SUPPORT_DIR)/aot/jdk.aotconf
719722
$1_AOT_JDK_CACHE := $$($1_TEST_SUPPORT_DIR)/aot/jdk.aotcache
720-
721-
$1_JAVA_TOOL_OPTS := $$(addprefix -J, $$($1_VM_OPTIONS))
723+
$1_AOT_JDK_LOG := $$($1_TEST_SUPPORT_DIR)/aot/TestSetupAOT.log
724+
725+
# We execute the training run with $(TEST_IMAGE_DIR)/setup_aot/TestSetupAOT.class
726+
# to touch a fair number of classes inside the JDK. Note that we can't specify a classpath,
727+
# or else the AOT cache cannot be used with jtreg test cases that use a different value
728+
# for their classpaths. Instead, we run in the $(TEST_IMAGE_DIR)/setup_aot/ directory.
729+
# The "java" launcher will have an implicit classpath of ".", so it can pick up the TestSetupAOT
730+
# class from the JVM's current directory.
731+
#
732+
# The TestSetupAOT class (or any other classes that are loaded from ".") will be excluded
733+
# from the the AOT cache as "." is an unsupported location. As a result, the AOT cache will contain
734+
# only classes from the JDK.
722735

723736
$$($1_AOT_JDK_CACHE): $$(JDK_IMAGE_DIR)/release
724737
$$(call MakeDir, $$($1_TEST_SUPPORT_DIR)/aot)
725738

726-
$(foreach jtool, javac javap jlink jar, \
727-
$(info AOT: Create cache configuration for $(jtool)) \
728-
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/aot.$(jtool), ( \
729-
$$(FIXPATH) $(JDK_UNDER_TEST)/bin/$(jtool) $$($1_JAVA_TOOL_OPTS) \
730-
-J-XX:AOTMode=record -J-XX:AOTConfiguration=$$($1_AOT_JDK_CONF).$(jtool) --help \
731-
))
732-
)
733-
734-
$$(info AOT: Copy $(JDK_UNDER_TEST)/lib/classlist to $$($1_AOT_JDK_CONF).jdk )
739+
$$(call LogWarn, AOT: Create cache configuration) \
735740
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/aot, ( \
736-
$$(FIXPATH) $(CP) $(JDK_UNDER_TEST)/lib/classlist $$($1_AOT_JDK_CONF).jdk \
741+
$(CD) $(TEST_IMAGE_DIR)/setup_aot; \
742+
$$(FIXPATH) $(JDK_UNDER_TEST)/bin/java $$($1_VM_OPTIONS) \
743+
-Xlog:cds,cds+class=debug:file=$$($1_AOT_JDK_CONF).log -Xlog:cds*=error \
744+
-XX:AOTMode=record -XX:AOTConfiguration=$$($1_AOT_JDK_CONF) \
745+
TestSetupAOT > $$($1_AOT_JDK_LOG) \
737746
))
738747

739-
$$(FIXPATH) $$(CAT) $$($1_AOT_JDK_CONF).* > $$($1_AOT_JDK_CONF).temp
740-
$$(FIXPATH) $$(CAT) $$($1_AOT_JDK_CONF).temp | $(GREP) -v '#' | $(GREP) -v '@' | $(SORT) | \
741-
$(SED) -e 's/id:.*//g' | uniq \
742-
> $$($1_AOT_JDK_CONF)
743-
$$(FIXPATH) $$(CAT) $$($1_AOT_JDK_CONF).temp | $(GREP) '@cp' | $(SORT) \
744-
>> $$($1_AOT_JDK_CONF)
745-
746-
$$(info AOT: Generate AOT cache $$($1_AOT_JDK_CACHE) with flags: $$($1_VM_OPTIONS))
748+
$$(call LogWarn, AOT: Generate AOT cache $$($1_AOT_JDK_CACHE) with flags: $$($1_VM_OPTIONS))
747749
$$(call ExecuteWithLog, $$($1_TEST_SUPPORT_DIR)/aot, ( \
748-
$$(FIXPATH) $(JDK_UNDER_TEST)/bin/java \
749-
$$($1_VM_OPTIONS) -Xlog:cds,cds+class=debug:file=$$($1_AOT_JDK_CACHE).log \
750-
-XX:AOTMode=create -XX:AOTConfiguration=$$($1_AOT_JDK_CONF) -XX:AOTCache=$$($1_AOT_JDK_CACHE) \
750+
$$(FIXPATH) $(JDK_UNDER_TEST)/bin/java \
751+
$$($1_VM_OPTIONS) -Xlog:cds,cds+class=debug:file=$$($1_AOT_JDK_CACHE).log -Xlog:cds*=error \
752+
-XX:ExtraSharedClassListFile=$(JDK_UNDER_TEST)/lib/classlist \
753+
-XX:AOTMode=create -XX:AOTConfiguration=$$($1_AOT_JDK_CONF) -XX:AOTCache=$$($1_AOT_JDK_CACHE) \
751754
))
752755

753756
$1_AOT_TARGETS += $$($1_AOT_JDK_CACHE)
754757

755758
endef
756759

757-
758760
SetupRunJtregTest = $(NamedParamsMacroTemplate)
759761
define SetupRunJtregTestBody
760762
$1_TEST_RESULTS_DIR := $$(TEST_RESULTS_DIR)/$1
@@ -946,11 +948,10 @@ define SetupRunJtregTestBody
946948
endif
947949

948950
ifeq ($$(JTREG_AOT_JDK), true)
949-
$$(info Add AOT target for $1)
950-
$$(eval $$(call SetupAot, $1, VM_OPTIONS := $$(JTREG_ALL_OPTIONS) ))
951+
$$(call LogWarn, Add AOT target for $1)
952+
$$(eval $$(call SetupAOT, $1, VM_OPTIONS := $$(JTREG_ALL_OPTIONS) ))
951953

952-
$$(info AOT_TARGETS=$$($1_AOT_TARGETS))
953-
$$(info AOT_JDK_CACHE=$$($1_AOT_JDK_CACHE))
954+
$$(call LogWarn, AOT_JDK_CACHE=$$($1_AOT_JDK_CACHE))
954955

955956
$1_JTREG_BASIC_OPTIONS += -vmoption:-XX:AOTCache="$$($1_AOT_JDK_CACHE)"
956957
endif

make/autoconf/flags-cflags.m4

+4-2
Original file line numberDiff line numberDiff line change
@@ -778,11 +778,13 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_CPU_DEP],
778778
if test "x$FLAGS_CPU" = xppc64; then
779779
# -mminimal-toc fixes `relocation truncated to fit' error for gcc 4.1.
780780
# Use ppc64 instructions, but schedule for power5
781-
$1_CFLAGS_CPU_JVM="${$1_CFLAGS_CPU_JVM} -mminimal-toc -mcpu=powerpc64 -mtune=power5"
781+
$1_CFLAGS_CPU="-mcpu=powerpc64 -mtune=power5"
782+
$1_CFLAGS_CPU_JVM="${$1_CFLAGS_CPU_JVM} -mminimal-toc"
782783
elif test "x$FLAGS_CPU" = xppc64le; then
783784
# Little endian machine uses ELFv2 ABI.
784785
# Use Power8, this is the first CPU to support PPC64 LE with ELFv2 ABI.
785-
$1_CFLAGS_CPU_JVM="${$1_CFLAGS_CPU_JVM} -DABI_ELFv2 -mcpu=power8 -mtune=power10"
786+
$1_CFLAGS_CPU="-mcpu=power8 -mtune=power10"
787+
$1_CFLAGS_CPU_JVM="${$1_CFLAGS_CPU_JVM} -DABI_ELFv2"
786788
fi
787789
elif test "x$FLAGS_CPU" = xs390x; then
788790
$1_CFLAGS_CPU="-mbackchain -march=z10"

make/autoconf/lib-tests.m4

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#
2-
# Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved.
2+
# Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved.
33
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
#
55
# This code is free software; you can redistribute it and/or modify it
@@ -28,7 +28,7 @@
2828
################################################################################
2929

3030
# Minimum supported versions
31-
JTREG_MINIMUM_VERSION=7.4
31+
JTREG_MINIMUM_VERSION=7.5.1
3232
GTEST_MINIMUM_VERSION=1.14.0
3333

3434
################################################################################

make/common/MakeIncludeEnd.gmk

+3-3
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ ifneq ($(NO_CUSTOM_EXTENSIONS), true)
3434
endif
3535

3636
# Pop our helper name off the stack
37-
HELPER_STACK := $(wordlist 2, $(words $(HELPER_STACK)), $(HELPER_STACK))
37+
INCLUDE_STACK := $(wordlist 2, $(words $(INCLUDE_STACK)), $(INCLUDE_STACK))
3838

3939
# Print an indented message, also counting the top-level makefile as a level
4040
ifeq ($(LOG_FLOW), true)
41-
$(info :$(foreach s, top $(HELPER_STACK), )Leave $(THIS_INCLUDE))
41+
$(info :$(foreach s, top $(INCLUDE_STACK) $(SNIPPET_STACK), )Leave $(THIS_INCLUDE))
4242
endif
4343

4444
# Restore the previous helper name
45-
THIS_INCLUDE := $(firstword $(HELPER_STACK))
45+
THIS_INCLUDE := $(firstword $(INCLUDE_STACK))

make/common/MakeIncludeStart.gmk

+4-4
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@ else
3939
endif
4040

4141
ifeq ($(LOG_FLOW), true)
42-
$(info :$(foreach s, top $(HELPER_STACK), )Enter $(THIS_INCLUDE) [$(THIS_INCLUDE_MSG)])
42+
$(info :$(foreach s, top $(INCLUDE_STACK) $(SNIPPET_STACK), )Enter $(THIS_INCLUDE) [$(THIS_INCLUDE_MSG)])
4343
endif
4444

45-
ifneq ($(filter $(THIS_INCLUDE), $(HELPER_STACK)), )
46-
$(error Internal makefile error: Include loop detected: $(THIS_INCLUDE) $(HELPER_STACK))
45+
ifneq ($(filter $(THIS_INCLUDE), $(INCLUDE_STACK)), )
46+
$(error Internal makefile error: Include loop detected: $(THIS_INCLUDE) $(INCLUDE_STACK))
4747
endif
4848

4949
ifeq ($(words $(MAKEFILE_LIST)), 2)
@@ -66,7 +66,7 @@ ifneq ($(IS_PREINIT_ENV), true)
6666
endif
6767

6868
# Push our helper name onto the stack
69-
HELPER_STACK := $(THIS_INCLUDE) $(HELPER_STACK)
69+
INCLUDE_STACK := $(THIS_INCLUDE) $(INCLUDE_STACK)
7070

7171
# Setup an automatic include guard
7272
ifneq ($(INCLUDE_GUARD_$(THIS_INCLUDE)), true)

make/common/MakeSnippetEnd.gmk

+3-3
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ ifneq ($(NO_CUSTOM_EXTENSIONS), true)
3434
endif
3535

3636
# Pop our helper name off the stack
37-
HELPER_STACK := $(wordlist 2, $(words $(HELPER_STACK)), $(HELPER_STACK))
37+
SNIPPET_STACK := $(wordlist 2, $(words $(SNIPPET_STACK)), $(SNIPPET_STACK))
3838

3939
# Print an indented message, also counting the top-level makefile as a level
4040
ifeq ($(LOG_FLOW), true)
41-
$(info :$(foreach s, top $(HELPER_STACK), )Leave $(THIS_SNIPPET))
41+
$(info :$(foreach s, top $(INCLUDE_STACK) $(SNIPPET_STACK), )Leave $(THIS_SNIPPET))
4242
endif
4343

4444
# Restore the previous helper name
45-
THIS_SNIPPET := $(firstword $(HELPER_STACK))
45+
THIS_SNIPPET := $(firstword $(SNIPPET_STACK))

make/common/MakeSnippetStart.gmk

+2-2
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ endif
3333

3434
# Print an indented message, also counting the top-level makefile as a level
3535
ifeq ($(LOG_FLOW), true)
36-
$(info :$(foreach s, top $(HELPER_STACK), )Enter $(THIS_SNIPPET) [snippet])
36+
$(info :$(foreach s, top $(INCLUDE_STACK) $(SNIPPET_STACK), )Enter $(THIS_SNIPPET) [snippet])
3737
endif
3838

3939
# Push our helper name onto the stack
40-
HELPER_STACK := $(THIS_SNIPPET) $(HELPER_STACK)
40+
SNIPPET_STACK := $(THIS_SNIPPET) $(SNIPPET_STACK)
4141

4242
# Hook to include the corresponding custom file, if present.
4343
ifneq ($(NO_CUSTOM_EXTENSIONS), true)

make/common/Modules.gmk

+8-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,10 @@ SRC_SUBDIRS += share/classes
8787

8888
SPEC_SUBDIRS += share/specs
8989

90-
MAN_SUBDIRS += share/man windows/man
90+
MAN_SUBDIRS += share/man $(TARGET_OS)/man
91+
92+
# The docs should include the sum of all man pages for all platforms
93+
MAN_DOCS_SUBDIRS += share/man windows/man
9194

9295
# Find all module-info.java files for the current build target platform and
9396
# configuration.
@@ -153,6 +156,10 @@ FindModuleManDirs = \
153156
$(strip $(wildcard \
154157
$(foreach sub, $(MAN_SUBDIRS), $(addsuffix /$(strip $1)/$(sub), $(TOP_SRC_DIRS)))))
155158

159+
FindModuleManDirsForDocs = \
160+
$(strip $(wildcard \
161+
$(foreach sub, $(MAN_DOCS_SUBDIRS), $(addsuffix /$(strip $1)/$(sub), $(TOP_SRC_DIRS)))))
162+
156163
# Construct the complete module source path
157164
GetModuleSrcPath = \
158165
$(call PathList, \

make/conf/github-actions.conf

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#
2-
# Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved.
2+
# Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved.
33
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
#
55
# This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,7 @@
2626
# Versions and download locations for dependencies used by GitHub Actions (GHA)
2727

2828
GTEST_VERSION=1.14.0
29-
JTREG_VERSION=7.4+1
29+
JTREG_VERSION=7.5.1+1
3030

3131
LINUX_X64_BOOT_JDK_EXT=tar.gz
3232
LINUX_X64_BOOT_JDK_URL=https://download.java.net/java/GA/jdk23/3c5b90190c68498b986a97f276efd28a/37/GPL/openjdk-23_linux-x64_bin.tar.gz

make/conf/jib-profiles.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -1186,9 +1186,9 @@ var getJibProfilesDependencies = function (input, common) {
11861186
jtreg: {
11871187
server: "jpg",
11881188
product: "jtreg",
1189-
version: "7.4",
1189+
version: "7.5.1",
11901190
build_number: "1",
1191-
file: "bundles/jtreg-7.4+1.zip",
1191+
file: "bundles/jtreg-7.5.1+1.zip",
11921192
environment_name: "JT_HOME",
11931193
environment_path: input.get("jtreg", "home_path") + "/bin",
11941194
configure_args: "--with-jtreg=" + input.get("jtreg", "home_path"),

make/test/BuildMicrobenchmark.gmk

+12-1
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,20 @@ $(JMH_UNPACKED_JARS_DONE): $(JMH_RUNTIME_JARS)
122122
$(RM) $(JMH_UNPACKED_DIR)/*.xml
123123
$(TOUCH) $@
124124

125+
# Copy dependency files for inclusion in the benchmark JARs
126+
$(eval $(call SetupCopyFiles, COPY_JAXP_TEST_XML, \
127+
SRC := $(TOPDIR)/test/jaxp/javax/xml/jaxp/unittest, \
128+
DEST := $(MICROBENCHMARK_CLASSES)/org/openjdk/bench/javax/xml, \
129+
FILES := \
130+
stream/XMLStreamWriterTest/message_12.xml \
131+
validation/tck/reZ003vExc23082309.xml \
132+
transform/msgAttach.xml, \
133+
FLATTEN := true, \
134+
))
135+
125136
# Create benchmarks JAR file with benchmarks for both the old and new JDK
126137
$(eval $(call SetupJarArchive, BUILD_JDK_JAR, \
127-
DEPENDENCIES := $(BUILD_JDK_MICROBENCHMARK) $(JMH_UNPACKED_JARS_DONE), \
138+
DEPENDENCIES := $(BUILD_JDK_MICROBENCHMARK) $(JMH_UNPACKED_JARS_DONE) $(COPY_JAXP_TEST_XML), \
128139
SRCS := $(MICROBENCHMARK_CLASSES) $(JMH_UNPACKED_DIR), \
129140
BIN := $(MICROBENCHMARK_JAR_BIN), \
130141
SUFFIXES := .*, \

make/test/BuildTestSetupAOT.gmk

+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#
2+
# Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
3+
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+
#
5+
# This code is free software; you can redistribute it and/or modify it
6+
# under the terms of the GNU General Public License version 2 only, as
7+
# published by the Free Software Foundation. Oracle designates this
8+
# particular file as subject to the "Classpath" exception as provided
9+
# by Oracle in the LICENSE file that accompanied this code.
10+
#
11+
# This code is distributed in the hope that it will be useful, but WITHOUT
12+
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13+
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14+
# version 2 for more details (a copy is included in the LICENSE file that
15+
# accompanied this code).
16+
#
17+
# You should have received a copy of the GNU General Public License version
18+
# 2 along with this work; if not, write to the Free Software Foundation,
19+
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20+
#
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
23+
# questions.
24+
#
25+
26+
include MakeFileStart.gmk
27+
28+
################################################################################
29+
# This file builds the TestSetupAOT.class, which is used by SetupAOT
30+
# in ../RunTests.gmk
31+
################################################################################
32+
33+
include CopyFiles.gmk
34+
include JavaCompilation.gmk
35+
36+
################################################################################
37+
38+
SETUP_AOT_BASEDIR := $(TOPDIR)/test/setup_aot
39+
SETUP_AOT_SUPPORT := $(SUPPORT_OUTPUTDIR)/test/setup_aot
40+
SETUP_AOT_CLASS := $(SETUP_AOT_SUPPORT)/classes/TestSetupAOT.class
41+
42+
$(eval $(call SetupJavaCompilation, BUILD_SETUP_AOT, \
43+
TARGET_RELEASE := $(TARGET_RELEASE_NEWJDK_UPGRADED), \
44+
SRC := $(SETUP_AOT_BASEDIR), \
45+
BIN := $(SETUP_AOT_SUPPORT)/classes, \
46+
))
47+
48+
TARGETS += $(BUILD_SETUP_AOT)
49+
50+
################################################################################
51+
# Targets for building test-image.
52+
################################################################################
53+
54+
# Copy to hotspot jtreg test image
55+
$(eval $(call SetupCopyFiles, COPY_SETUP_AOT, \
56+
SRC := $(SETUP_AOT_SUPPORT)/classes, \
57+
DEST := $(TEST_IMAGE_DIR)/setup_aot, \
58+
FILES := TestSetupAOT.class, \
59+
))
60+
61+
IMAGES_TARGETS += $(COPY_SETUP_AOT)
62+
63+
images: $(IMAGES_TARGETS)
64+
65+
.PHONY: images
66+
67+
################################################################################
68+
69+
include MakeFileEnd.gmk

0 commit comments

Comments
 (0)