@@ -238,26 +238,102 @@ build_jdk8u: -bootstrap $(JDK8_JDK_SRC)
238238 [[ $$ ? -eq 0 ]] || exit 127; \
239239 }
240240
241+ # configure for jdk17u
242+ # $1 extra configure options
243+ define configure_jdk17u
244+ bash configure \
245+ --with-debug-level=$(MODE ) \
246+ --with-boot-jdk=$(BOOTJDK17 ) \
247+ --with-hotspot-target-classlib=8 \
248+ --with-vendor-name="ByteDance" \
249+ --with-vendor-url="https://github.com/bytedance/CompoundVM" \
250+ --with-vendor-bug-url="https://github.com/bytedance/CompoundVM/issues" \
251+ --with-vendor-vm-bug-url="https://github.com/bytedance/CompoundVM/issues" \
252+ --without-version-pre \
253+ --without-version-opt \
254+ --with-cvm-version-string=$(VERSION ) \
255+ --with-vendor-name="CompoundVM" \
256+ $(1 )
257+ endef
258+
241259# compile hotspot and java.base from jdk17u
242260build_jdk17u : -bootstrap
243261 { \
244262 if [[ " x$$ (find ./build -type f -name config.log | grep $( MODE) )" = " x" ]]; then \
245- bash configure --with-debug-level=$(MODE ) \
246- --with-boot-jdk=$(BOOTJDK17 ) \
247- --with-hotspot-target-classlib=8 \
248- --with-vendor-name=" ByteDance" \
249- --with-vendor-url=" https://github.com/bytedance/CompoundVM" \
250- --with-vendor-bug-url=" https://github.com/bytedance/CompoundVM/issues" \
251- --with-vendor-vm-bug-url=" https://github.com/bytedance/CompoundVM/issues" \
252- --without-version-pre \
253- --without-version-opt \
254- --with-cvm-version-string=$(VERSION ) \
255- --with-vendor-name=" CompoundVM" \
256- ; \
263+ $(call configure_jdk17u) ; \
257264 fi ; \
258265 }
259266 make $(JDK_MAKE_OPTS ) CONF=linux-$(CVM_ARCH ) -server-$(MODE ) hotspot jdk.jdwp.agent
260267
268+ GTEST_VERSION ?= $(shell sed -n 's/^GTEST_VERSION=//p' $(WORKSPACE ) /make/conf/github-actions.conf | head -n 1)
269+ GTEST_ROOT := $(WORKSPACE ) /.gtest
270+ GTEST_ARCHIVE := $(GTEST_ROOT ) /release-$(GTEST_VERSION ) .tar.gz
271+ GTEST_URL := https://github.com/google/googletest/archive/refs/tags/v$(GTEST_VERSION ) .tar.gz
272+ GTEST_DIR := $(GTEST_ROOT ) /googletest-$(GTEST_VERSION )
273+ GTEST_HEADER := $(GTEST_DIR ) /googletest/include/gtest/gtest.h
274+
275+ $(GTEST_HEADER ) :
276+ @echo " Installing googletest $( GTEST_VERSION) to $( GTEST_DIR) "
277+ { \
278+ set -e; \
279+ [[ -d $( GTEST_ROOT) ]] || mkdir -p $(GTEST_ROOT ) ; \
280+ rm -f $(GTEST_ARCHIVE ) ; \
281+ wget -q $(GTEST_URL ) -O $(GTEST_ARCHIVE ) ; \
282+ rm -fr $(GTEST_DIR ) ; \
283+ tar xf $(GTEST_ARCHIVE ) -C $(GTEST_ROOT ) ; \
284+ rm -f $(GTEST_ARCHIVE ) ; \
285+ }
286+
287+ HOTSPOT_GTEST_BUILD_DIR := $(JDK17_SRCROOT ) /build/linux-$(CVM_ARCH ) -server-$(MODE )
288+ HOTSPOT_GTEST_LAUNCHER := $(HOTSPOT_GTEST_BUILD_DIR ) /images/test/hotspot/gtest/server/gtestLauncher
289+ HOTSPOT_GTEST_TEST ?= gtest:all
290+ HOTSPOT_GTEST_SELECTOR := $(patsubst % /server,% ,$(patsubst gtest:% ,% ,$(HOTSPOT_GTEST_TEST ) ) )
291+ HOTSPOT_GTEST_FILTER := $(if $(filter all,$(HOTSPOT_GTEST_SELECTOR ) ) ,,--gtest_filter=$(HOTSPOT_GTEST_SELECTOR ) * )
292+ HOTSPOT_GTEST_JDKDIR := $(OUTPUTDIR ) /$(DISTRO_NAME )
293+ HOTSPOT_GTEST_WORKDIR := $(HOTSPOT_GTEST_BUILD_DIR ) /gtest-manual
294+ HOTSPOT_GTEST_RESULT_DIR := $(HOTSPOT_GTEST_BUILD_DIR ) /gtest-results
295+
296+ ifeq ($(SKIP_BUILD ) , true)
297+ -configure_jdk17u_gtest : $(GTEST_HEADER ) -bootstrap
298+ else
299+ -configure_jdk17u_gtest : $(GTEST_HEADER ) cvm8default17
300+ endif
301+ { \
302+ if [[ ! -f $(HOTSPOT_GTEST_BUILD_DIR)/spec.gmk ]] || \
303+ ! grep -Fqx 'GTEST_FRAMEWORK_SRC := $(GTEST_DIR)' $(HOTSPOT_GTEST_BUILD_DIR)/spec.gmk 2>/dev/null; then \
304+ $(call configure_jdk17u,--with-gtest=$(GTEST_DIR)) ; \
305+ fi; \
306+ }
307+
308+ build_gtest_hotspot17 : -configure_jdk17u_gtest
309+ $(MAKE ) $(JDK_MAKE_OPTS ) CONF=linux-$(CVM_ARCH ) -server-$(MODE ) test-image-hotspot-gtest
310+
311+ ifeq ($(SKIP_BUILD ) , true)
312+ test_gtest_hotspot17 :
313+ else
314+ test_gtest_hotspot17 : build_gtest_hotspot17
315+ endif
316+ @echo
317+ @echo "Running hotspot gtest \"$(HOTSPOT_GTEST_TEST)\""
318+ @echo " Launcher: $(HOTSPOT_GTEST_LAUNCHER)"
319+ @echo " JDK under test: $(HOTSPOT_GTEST_JDKDIR)"
320+ @echo " Work dir: $(HOTSPOT_GTEST_WORKDIR)"
321+ @echo " Test report: $(HOTSPOT_GTEST_RESULT_DIR)"
322+ @echo
323+ @{ \
324+ mkdir -p $(HOTSPOT_GTEST_WORKDIR) $(HOTSPOT_GTEST_RESULT_DIR) && \
325+ cd $(HOTSPOT_GTEST_WORKDIR) && \
326+ $(HOTSPOT_GTEST_LAUNCHER) \
327+ -jdk $(HOTSPOT_GTEST_JDKDIR) \
328+ $(HOTSPOT_GTEST_FILTER) \
329+ --gtest_output=xml:$(HOTSPOT_GTEST_RESULT_DIR)/gtest.xml \
330+ --gtest_catch_exceptions=0 \
331+ > >(tee $(HOTSPOT_GTEST_RESULT_DIR)/gtest.txt); \
332+ exit_code=$$?; \
333+ echo $$exit_code > $(HOTSPOT_GTEST_RESULT_DIR)/exitcode.txt; \
334+ exit $$exit_code; \
335+ }
336+
261337# ############### alternative kernel classes ########
262338# here we copy the JDK17 kernel classes to separate diretory,
263339# and tweak the code to fit into JDK8's boots.
@@ -400,3 +476,6 @@ help:
400476 @echo " Run CVM8 jtreg8 tests in directory $( CVM8_SRCROOT) /hotspot/test"
401477 @echo " make test_cvm8 JT_TEST=<test selection>"
402478 @echo " Run additional jtreg8 tests for CVM8 in directory test"
479+ @echo " make test_gtest_hotspot17 HOTSPOT_GTEST_TEST=<gtest selection>"
480+ @echo " Run hotspot gtests directly against the CVM output image"
481+ @echo " e.g. HOTSPOT_GTEST_TEST='gtest:all'"
0 commit comments