1 #
  2 # Copyright (c) 2015, 2021, 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 ################################################################################
 27 # This file builds the native component of the JTReg tests for JDK.
 28 # It also covers the test-image part, where the built files are copied to the
 29 # test image.
 30 ################################################################################
 31 
 32 default: all
 33 
 34 include $(SPEC)
 35 include MakeBase.gmk
 36 include TestFilesCompilation.gmk
 37 
 38 $(eval $(call IncludeCustomExtension, test/JtregNativeJdk.gmk))
 39 
 40 ################################################################################
 41 # Targets for building the native tests themselves.
 42 ################################################################################
 43 
 44 # This might have been added to by a custom extension.
 45 BUILD_JDK_JTREG_NATIVE_SRC += $(TOPDIR)/test/jdk
 46 
 47 BUILD_JDK_JTREG_OUTPUT_DIR := $(OUTPUTDIR)/support/test/jdk/jtreg/native
 48 
 49 BUILD_JDK_JTREG_IMAGE_DIR := $(TEST_IMAGE_DIR)/jdk/jtreg
 50 
 51 BUILD_JDK_JTREG_EXECUTABLES_CFLAGS_exeJliLaunchTest := \
 52     -I$(TOPDIR)/src/java.base/share/native/libjli \
 53     -I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjli \
 54     -I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/native/libjli
 55 
 56 BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libAsyncStackWalk := $(LIBCXX)
 57 BUILD_JDK_JTREG_LIBRARIES_LDFLAGS_libAsyncInvokers := $(LIBCXX)
 58 
 59 # Platform specific setup
 60 ifeq ($(call isTargetOs, windows), true)
 61   BUILD_JDK_JTREG_EXCLUDE += libDirectIO.c libInheritedChannel.c exelauncher.c
 62 
 63   WIN_LIB_JAVA := $(SUPPORT_OUTPUTDIR)/native/java.base/libjava/java.lib
 64   BUILD_JDK_JTREG_LIBRARIES_LIBS_libstringPlatformChars := $(WIN_LIB_JAVA)
 65   WIN_LIB_JLI := $(SUPPORT_OUTPUTDIR)/native/java.base/libjli/jli.lib
 66   BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeJliLaunchTest := $(WIN_LIB_JLI)
 67   BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeCallerAccessTest := jvm.lib
 68   BUILD_JDK_JTREG_EXECUTABLES_LIBS_exerevokeall := advapi32.lib
 69   BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libAsyncStackWalk := /EHsc
 70   BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libAsyncInvokers := /EHsc
 71 else
 72   BUILD_JDK_JTREG_LIBRARIES_LIBS_libstringPlatformChars := -ljava
 73   BUILD_JDK_JTREG_LIBRARIES_LIBS_libDirectIO := -ljava
 74   BUILD_JDK_JTREG_EXCLUDE += exerevokeall.c
 75   ifeq ($(call isTargetOs, linux), true)
 76     BUILD_JDK_JTREG_LIBRARIES_LIBS_libInheritedChannel := -ljava
 77     BUILD_JDK_JTREG_EXECUTABLES_LIBS_exelauncher := -ldl
 78   endif
 79   BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeJliLaunchTest := -ljli
 80   BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeCallerAccessTest := -ljvm
 81 endif
 82 
 83 ifeq ($(call isTargetOs, macosx), true)
 84   BUILD_JDK_JTREG_EXCLUDE += exelauncher.c
 85   BUILD_JDK_JTREG_LIBRARIES_LIBS_libTestMainKeyWindow := \
 86       -framework Cocoa
 87   BUILD_JDK_JTREG_EXECUTABLES_LIBS_exeJniInvocationTest := -ljli
 88   BUILD_JDK_JTREG_LIBRARIES_LIBS_libTestDynamicStore := \
 89       -framework Cocoa -framework SystemConfiguration
 90 else
 91   BUILD_JDK_JTREG_EXCLUDE += libTestMainKeyWindow.m
 92   BUILD_JDK_JTREG_EXCLUDE += exeJniInvocationTest.c
 93   BUILD_JDK_JTREG_EXCLUDE += libTestDynamicStore.m
 94 endif
 95 
 96 ifeq ($(call isTargetOs, linux), true)
 97   # Unconditionally compile with debug symbols and don't ever perform
 98   # stripping during the test libraries' build.
 99   BUILD_JDK_JTREG_LIBRARIES_CFLAGS_libFib := -g
100   BUILD_JDK_JTREG_LIBRARIES_STRIP_SYMBOLS_libFib := false
101 endif
102 
103 # This evaluation is expensive and should only be done if this target was
104 # explicitly called.
105 ifneq ($(filter build-test-jdk-jtreg-native, $(MAKECMDGOALS)), )
106   $(eval $(call SetupTestFilesCompilation, BUILD_JDK_JTREG_LIBRARIES, \
107       TYPE := LIBRARY, \
108       SOURCE_DIRS := $(BUILD_JDK_JTREG_NATIVE_SRC), \
109       OUTPUT_DIR := $(BUILD_JDK_JTREG_OUTPUT_DIR), \
110       EXCLUDE := $(BUILD_JDK_JTREG_EXCLUDE), \
111   ))
112 
113   $(eval $(call SetupTestFilesCompilation, BUILD_JDK_JTREG_EXECUTABLES, \
114       TYPE := PROGRAM, \
115       SOURCE_DIRS := $(BUILD_JDK_JTREG_NATIVE_SRC), \
116       OUTPUT_DIR := $(BUILD_JDK_JTREG_OUTPUT_DIR), \
117       EXCLUDE := $(BUILD_JDK_JTREG_EXCLUDE), \
118   ))
119 endif
120 
121 build-test-jdk-jtreg-native: $(BUILD_JDK_JTREG_LIBRARIES) $(BUILD_JDK_JTREG_EXECUTABLES)
122 
123 ################################################################################
124 # Targets for building test-image.
125 ################################################################################
126 
127 # Copy to jdk jtreg test image
128 $(eval $(call SetupCopyFiles,COPY_JDK_JTREG_NATIVE, \
129     SRC := $(BUILD_JDK_JTREG_OUTPUT_DIR), \
130     DEST := $(TEST_IMAGE_DIR)/jdk/jtreg/native, \
131     FILES := $(wildcard $(addprefix $(BUILD_JDK_JTREG_OUTPUT_DIR), /bin/* /lib/*)), \
132     FLATTEN := true, \
133 ))
134 
135 test-image-jdk-jtreg-native: $(COPY_JDK_JTREG_NATIVE)
136 
137 all: build-test-jdk-jtreg-native
138 test-image: test-image-jdk-jtreg-native
139 
140 .PHONY: default all build-test-jdk-jtreg-native test-image-jdk-jtreg-native test-image