From 5702ebc07dba6d281c605971f99846ad38a6eda4 Mon Sep 17 00:00:00 2001 From: khanhduytran0 Date: Tue, 15 Sep 2020 16:06:18 +0700 Subject: [PATCH] Add missing libs linking --- .../jdk/make/launcher/Launcher-jdk.pack.gmk | 116 ++ .../jdk/make/launcher/LauncherCommon.gmk | 236 ++++ .../jdk/make/lib/Awt2dLibraries.gmk | 1109 +++++++++++++++++ .../jdk/make/lib/CoreLibraries.gmk | 487 ++++++++ .../jdk/make/lib/JavaLauncher.gmk | 113 ++ .../jdk/make/lib/Lib-java.desktop.gmk | 37 + .../jdk/make/lib/Lib-java.instrument.gmk | 101 ++ .../jdk/make/lib/Lib-java.management.gmk | 72 ++ .../jdk/make/lib/Lib-java.prefs.gmk | 65 + .../jdk/make/lib/Lib-jdk.attach.gmk | 71 ++ .../jdk/make/lib/Lib-jdk.jdwp.agent.gmk | 125 ++ .../jdk/make/lib/LibCommon.gmk | 94 ++ .../jdk/make/lib/NetworkingLibraries.gmk | 65 + .../jdk/make/lib/NioLibraries.gmk | 102 ++ .../jdk/make/lib/SoundLibraries.gmk | 219 ++++ .../share/native/libinstrument/JarFacade.c.z | 142 +++ 16 files changed, 3154 insertions(+) create mode 100644 openjdk-mobile-aarch64-patch/jdk/make/launcher/Launcher-jdk.pack.gmk create mode 100644 openjdk-mobile-aarch64-patch/jdk/make/launcher/LauncherCommon.gmk create mode 100644 openjdk-mobile-aarch64-patch/jdk/make/lib/Awt2dLibraries.gmk create mode 100644 openjdk-mobile-aarch64-patch/jdk/make/lib/CoreLibraries.gmk create mode 100644 openjdk-mobile-aarch64-patch/jdk/make/lib/JavaLauncher.gmk create mode 100644 openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-java.desktop.gmk create mode 100644 openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-java.instrument.gmk create mode 100644 openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-java.management.gmk create mode 100644 openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-java.prefs.gmk create mode 100644 openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-jdk.attach.gmk create mode 100644 openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-jdk.jdwp.agent.gmk create mode 100644 openjdk-mobile-aarch64-patch/jdk/make/lib/LibCommon.gmk create mode 100644 openjdk-mobile-aarch64-patch/jdk/make/lib/NetworkingLibraries.gmk create mode 100644 openjdk-mobile-aarch64-patch/jdk/make/lib/NioLibraries.gmk create mode 100644 openjdk-mobile-aarch64-patch/jdk/make/lib/SoundLibraries.gmk create mode 100644 openjdk-mobile-aarch64-patch/jdk/src/java.instrument/share/native/libinstrument/JarFacade.c.z diff --git a/openjdk-mobile-aarch64-patch/jdk/make/launcher/Launcher-jdk.pack.gmk b/openjdk-mobile-aarch64-patch/jdk/make/launcher/Launcher-jdk.pack.gmk new file mode 100644 index 0000000..2db826a --- /dev/null +++ b/openjdk-mobile-aarch64-patch/jdk/make/launcher/Launcher-jdk.pack.gmk @@ -0,0 +1,116 @@ +# +# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# +ifneq ($(OPENJDK_TARGET_OS),ios) + +include LauncherCommon.gmk + +$(eval $(call SetupBuildLauncher, pack200, \ + MAIN_MODULE := java.base, \ + MAIN_CLASS := com.sun.java.util.jar.pack.Driver, \ +)) + +################################################################################ +# The order of the object files on the link command line affects the size of the resulting +# binary (at least on linux) which causes the size to differ between old and new build. + +UNPACKEXE_SRC := $(JDK_TOPDIR)/src/jdk.pack/share/native/common-unpack \ + $(JDK_TOPDIR)/src/jdk.pack/share/native/unpack200 +UNPACKEXE_CFLAGS := -I$(JDK_TOPDIR)/src/jdk.pack/share/native/common-unpack \ + -I$(JDK_TOPDIR)/src/java.base/share/native/libjava \ + -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava + +ifeq ($(USE_EXTERNAL_LIBZ), true) + UNPACKEXE_CFLAGS += -DSYSTEM_ZLIB + UNPACKEXE_LIBS := -lz +else + UNPACKEXE_CFLAGS += -I$(JDK_TOPDIR)/src/java.base/share/native/libzip/zlib + UNPACKEXE_ZIPOBJS := $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/zcrc32$(OBJ_SUFFIX) \ + $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/deflate$(OBJ_SUFFIX) \ + $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/trees$(OBJ_SUFFIX) \ + $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/zadler32$(OBJ_SUFFIX) \ + $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/compress$(OBJ_SUFFIX) \ + $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/zutil$(OBJ_SUFFIX) \ + $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/inflate$(OBJ_SUFFIX) \ + $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/infback$(OBJ_SUFFIX) \ + $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/inftrees$(OBJ_SUFFIX) \ + $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/inffast$(OBJ_SUFFIX) + +endif + +UNPACK_MAPFILE_DIR := $(JDK_TOPDIR)/make/mapfiles/libunpack +UNPACK_MAPFILE_PLATFORM_FILE := \ + $(UNPACK_MAPFILE_DIR)/mapfile-vers-unpack200-$(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH) + +# The linker on older SuSE distros (e.g. on SLES 10) complains with: +# "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." +# if feeded with a version script which contains named tags. +ifeq ($(USING_BROKEN_SUSE_LD), yes) + UNPACK_MAPFILE := $(UNPACK_MAPFILE_DIR)/mapfile-vers-unpack200.anonymous +else ifneq ($(wildcard $(UNPACK_MAPFILE_PLATFORM_FILE)), ) + UNPACK_MAPFILE := $(UNPACK_MAPFILE_PLATFORM_FILE) +else + UNPACK_MAPFILE := $(UNPACK_MAPFILE_DIR)/mapfile-vers-unpack200 +endif + +$(eval $(call SetupNativeCompilation,BUILD_UNPACKEXE, \ + SRC := $(UNPACKEXE_SRC), \ + TOOLCHAIN := TOOLCHAIN_LINK_CXX, \ + OPTIMIZATION := LOW, \ + CFLAGS := $(UNPACKEXE_CFLAGS) $(CXXFLAGS_JDKEXE) -DFULL, \ + CFLAGS_release := -DPRODUCT, \ + CFLAGS_linux := -fPIC, \ + CFLAGS_solaris := -KPIC, \ + CFLAGS_macosx := -fPIC, \ + DISABLED_WARNINGS_gcc := unused-result, \ + MAPFILE := $(UNPACK_MAPFILE),\ + LDFLAGS := $(UNPACKEXE_ZIPOBJS) \ + $(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LDFLAGS_android := $(UNPACKEXE_ZIPOBJS) \ + $(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK), \ + LIBS := $(UNPACKEXE_LIBS) $(LIBCXX), \ + LIBS_solaris := -lc, \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/unpackexe, \ + OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/modules_cmds/$(MODULE), \ + PROGRAM := unpack200, \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=unpack200.exe" \ + -D "JDK_INTERNAL_NAME=unpack200" \ + -D "JDK_FTYPE=0x1L", \ + MANIFEST := $(JDK_TOPDIR)/src/jdk.pack/windows/native/unpack200/unpack200_proto.exe.manifest, \ + MANIFEST_VERSION := $(VERSION_NUMBER_FOUR_POSITIONS), \ +)) + +ifneq ($(USE_EXTERNAL_LIBZ), true) + + $(BUILD_UNPACKEXE): $(UNPACKEXE_ZIPOBJS) + +endif + +TARGETS += $(BUILD_UNPACKEXE) + +################################################################################ +endif diff --git a/openjdk-mobile-aarch64-patch/jdk/make/launcher/LauncherCommon.gmk b/openjdk-mobile-aarch64-patch/jdk/make/launcher/LauncherCommon.gmk new file mode 100644 index 0000000..cdd3a52 --- /dev/null +++ b/openjdk-mobile-aarch64-patch/jdk/make/launcher/LauncherCommon.gmk @@ -0,0 +1,236 @@ +# +# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +include NativeCompilation.gmk + +ifeq ($(OPENJDK_TARGET_OS), macosx) + DISABLE_MAPFILES := true + ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN) +else + ifeq ($(OPENJDK_TARGET_OS), windows) + DISABLE_MAPFILES := true + endif + ORIGIN_ARG := $(call SET_EXECUTABLE_ORIGIN,/../lib/jli) + + # Applications expect to be able to link against libjawt without invoking + # System.loadLibrary("jawt") first. This was the behaviour described in the + # devloper documentation of JAWT and what worked with OpenJDK6. + + ifneq ($(findstring $(OPENJDK_TARGET_OS), android linux solaris), ) + ORIGIN_ARG += $(call SET_EXECUTABLE_ORIGIN,/../lib) + endif +endif + +LAUNCHER_SRC := $(JDK_TOPDIR)/src/java.base/share/native/launcher +LAUNCHER_CFLAGS := -I$(JDK_TOPDIR)/src/java.base/share/native/launcher \ + -I$(JDK_TOPDIR)/src/java.base/share/native/libjli \ + -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjli \ + -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/native/libjli \ + # +GLOBAL_VERSION_INFO_RESOURCE := $(JDK_TOPDIR)/src/java.base/windows/native/common/version.rc +JAVA_VERSION_INFO_RESOURCE := $(JDK_TOPDIR)/src/java.base/windows/native/launcher/java.rc +MACOSX_PLIST_DIR := $(JDK_TOPDIR)/src/java.base/macosx/native/launcher +JAVA_MANIFEST := $(JDK_TOPDIR)/src/java.base/windows/native/launcher/java.manifest + +################################################################################ +# Build standard launcher. + +# Setup make rules for building a standard launcher. +# +# Parameter 1 is the name of the rule. This name is used as variable prefix, +# and the targets generated are listed in a variable by that name. It is also +# used as the name of the executable. +# +# Remaining parameters are named arguments. These include: +# MAIN_MODULE The module of the main class to launch if different from the +# current module +# MAIN_CLASS The Java main class to launch +# JAVA_ARGS Processed into a -DJAVA_ARGS C flag +# CFLAGS Additional CFLAGS +# CFLAGS_windows Additional CFLAGS_windows +# LIBS_unix Additional LIBS_unix +# LIBS_windows Additional LIBS_windows +# LDFLAGS_solaris Additional LDFLAGS_solaris +# RC_FLAGS Additional RC_FLAGS +# MACOSX_SIGNED On macosx, sign this binary +# WINDOWS_STATIC_LINK On windows, link statically with C runtime and libjli. +# OPTIMIZATION Override default optimization level (LOW) +# OUTPUT_DIR Override default output directory +# VERSION_INFO_RESOURCE Override default Windows resource file +# NO_JAVA_MS Do not add -ms8m to JAVA_ARGS. +SetupBuildLauncher = $(NamedParamsMacroTemplate) +define SetupBuildLauncherBody + # Setup default values (unless overridden) + ifeq ($$($1_VERSION_INFO_RESOURCE), ) + $1_VERSION_INFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE) + endif + + ifeq ($$($1_OUTPUT_DIR), ) + $1_OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/modules_cmds/$(MODULE) + endif + + ifeq ($$($1_OPTIMIZATION), ) + $1_OPTIMIZATION := LOW + endif + + ifneq ($$($1_NO_JAVA_MS), true) + # The norm is to append -ms8m, unless otherwise instructed. + $1_JAVA_ARGS += -ms8m + endif + + ifeq ($$($1_MAIN_MODULE), ) + $1_MAIN_MODULE := $(MODULE) + endif + + ifneq ($$($1_JAVA_ARGS), ) + $1_JAVA_ARGS_STR := '{ $$(strip $$(foreach a, \ + $$(addprefix -J, $$($1_JAVA_ARGS)) -m $$($1_MAIN_MODULE)/$$($1_MAIN_CLASS), "$$a"$(COMMA) )) }' + $1_CFLAGS += -DJAVA_ARGS=$$($1_JAVA_ARGS_STR) + endif + + $1_LIBS := + ifeq ($(OPENJDK_TARGET_OS), macosx) + ifeq ($$($1_MACOSX_SIGNED), true) + $1_PLIST_FILE := Info-privileged.plist + $1_CODESIGN := true + else + $1_PLIST_FILE := Info-cmdline.plist + endif + + $1_CFLAGS += -DPACKAGE_PATH='"$(PACKAGE_PATH)"' + $1_LDFLAGS += -Wl,-all_load \ + -sectcreate __TEXT __info_plist $(MACOSX_PLIST_DIR)/$$($1_PLIST_FILE) + ifeq ($(STATIC_BUILD), true) + $1_LDFLAGS += -exported_symbols_list \ + $(SUPPORT_OUTPUTDIR)/build-static/exported.symbols + $1_LIBS += \ + $$(shell $(FIND) $(SUPPORT_OUTPUTDIR)/modules_libs/java.base -name "*.a") \ + $(SUPPORT_OUTPUTDIR)/modules_libs/jdk.jdwp.agent/libdt_socket.a \ + $(SUPPORT_OUTPUTDIR)/modules_libs/jdk.jdwp.agent/libjdwp.a \ + $(SUPPORT_OUTPUTDIR)/native/java.base/$(LIBRARY_PREFIX)fdlibm$(STATIC_LIBRARY_SUFFIX) \ + -framework CoreFoundation \ + -framework Foundation \ + -framework SystemConfiguration \ + -lstdc++ -liconv + else + $1_LIBS += $(SUPPORT_OUTPUTDIR)/native/java.base/libjli_static.a + endif + $1_LIBS += -framework Cocoa -framework Security \ + -framework ApplicationServices + endif + + ifeq ($(OPENJDK_TARGET_OS), aix) + $1_LDFLAGS += -L$(SUPPORT_OUTPUTDIR)/native/java.base + $1_LIBS += -ljli_static + endif + + ifeq ($(USE_EXTERNAL_LIBZ), true) + $1_LIBS += -lz + endif + + ifeq ($$($1_WINDOWS_STATIC_LINK), true) + $1_CFLAGS += $(filter-out -MD, $(CFLAGS_JDKEXE)) + $1_WINDOWS_JLI_LIB := $(SUPPORT_OUTPUTDIR)/native/java.base/jli_static.lib + else + $1_CFLAGS += $(CFLAGS_JDKEXE) + $1_WINDOWS_JLI_LIB := $(SUPPORT_OUTPUTDIR)/native/java.base/libjli/jli.lib + endif + + # The linker on older SuSE distros (e.g. on SLES 10) complains with: + # "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable." + # if feeded with a version script which contains named tags. + ifeq ($(USING_BROKEN_SUSE_LD),yes) + ifneq ($(wildcard $(JDK_TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU).anonymous), ) + $1_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU).anonymous + else + $1_MAPFILE := + endif + else + ifneq ($(wildcard $(JDK_TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU)), ) + $1_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU) + else + $1_MAPFILE := + endif + endif + + $$(eval $$(call SetupNativeCompilation, BUILD_LAUNCHER_$1, \ + EXTRA_FILES := $(LAUNCHER_SRC)/main.c, \ + OPTIMIZATION := $$($1_OPTIMIZATION), \ + CFLAGS := $$($1_CFLAGS) \ + $(LAUNCHER_CFLAGS) \ + $(VERSION_CFLAGS) \ + -DLAUNCHER_NAME='"$(LAUNCHER_NAME)"' \ + -DPROGNAME='"$1"' \ + $$($1_CFLAGS), \ + CFLAGS_linux := -fPIC, \ + CFLAGS_ios := -I$(JDK_TOPDIR)/src/java.base/macosx/native/libjli, \ + CFLAGS_solaris := -KPIC -DHAVE_GETHRTIME, \ + CFLAGS_windows := $$($1_CFLAGS_windows), \ + LDFLAGS := $$(LDFLAGS_JDKEXE) \ + $$(ORIGIN_ARG) \ + $$($1_LDFLAGS), \ + LDFLAGS_android := \ + -L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/jli, \ + LDFLAGS_linux := \ + -L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/jli, \ + LDFLAGS_solaris := $$($1_LDFLAGS_solaris) \ + -L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/jli, \ + MAPFILE := $$($1_MAPFILE), \ + LIBS := $(JDKEXE_LIBS) $$($1_LIBS), \ + LIBS_unix := $$($1_LIBS_unix), \ + LIBS_android := -llog -ljli $(LIBDL) -lc, \ + LIBS_linux := -lpthread -ljli $(LIBDL) -lc, \ + LIBS_solaris := -ljli -lthread $(LIBDL) -lc, \ + LIBS_windows := $$($1_WINDOWS_JLI_LIB) \ + $(SUPPORT_OUTPUTDIR)/native/java.base/libjava/java.lib advapi32.lib \ + $$($1_LIBS_windows), \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/$1_objs, \ + OUTPUT_DIR := $$($1_OUTPUT_DIR), \ + PROGRAM := $1, \ + VERSIONINFO_RESOURCE := $$($1_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $$(RC_FLAGS) \ + -D "JDK_FNAME=$1$(EXE_SUFFIX)" \ + -D "JDK_INTERNAL_NAME=$1" \ + -D "JDK_FTYPE=0x1L" \ + $$($1_RC_FLAGS), \ + MANIFEST := $(JAVA_MANIFEST), \ + MANIFEST_VERSION := $(VERSION_NUMBER_FOUR_POSITIONS), \ + CODESIGN := $$($1_CODESIGN), \ + )) + + $1 += $$(BUILD_LAUNCHER_$1) + ifneq ($(OPENJDK_TARGET_OS), ios) + TARGETS += $$($1) + endif + + ifneq (,$(filter $(OPENJDK_TARGET_OS), macosx aix)) + $$(BUILD_LAUNCHER_$1): $(SUPPORT_OUTPUTDIR)/native/java.base/libjli_static.a + endif + + ifeq ($(OPENJDK_TARGET_OS), windows) + $$(BUILD_LAUNCHER_$1): $(SUPPORT_OUTPUTDIR)/native/java.base/libjava/java.lib \ + $$($1_WINDOWS_JLI_LIB) + endif +endef diff --git a/openjdk-mobile-aarch64-patch/jdk/make/lib/Awt2dLibraries.gmk b/openjdk-mobile-aarch64-patch/jdk/make/lib/Awt2dLibraries.gmk new file mode 100644 index 0000000..018b980 --- /dev/null +++ b/openjdk-mobile-aarch64-patch/jdk/make/lib/Awt2dLibraries.gmk @@ -0,0 +1,1109 @@ +# +# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +$(eval $(call IncludeCustomExtension, jdk, lib/Awt2dLibraries-pre.gmk)) + +WIN_AWT_LIB := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libawt/awt.lib + +################################################################################ + +BUILD_LIBMLIB_SRC := $(JDK_TOPDIR)/src/java.desktop/share/native/libmlib_image \ + $(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/medialib +BUILD_LIBMLIB_CFLAGS := -D__USE_J2D_NAMES -D__MEDIALIB_OLD_NAMES \ + $(addprefix -I, $(BUILD_LIBMLIB_SRC)) \ + -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libmlib_image + +BUILD_LIBMLIB_LDLIBS := +BUILD_LIBMLIB_IMAGE_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libmlib_image/mapfile-vers + +BUILD_LIBMLIB_CFLAGS += -DMLIB_NO_LIBSUNMATH + +ifeq ($(OPENJDK_TARGET_CPU_BITS), 64) + BUILD_LIBMLIB_CFLAGS += -DMLIB_OS64BIT +endif + +ifneq ($(OPENJDK_TARGET_OS), windows) + BUILD_LIBMLIB_LDLIBS += $(LIBM) $(LIBDL) +endif + +$(eval $(call SetupNativeCompilation,BUILD_LIBMLIB_IMAGE, \ + LIBRARY := mlib_image, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(BUILD_LIBMLIB_SRC), \ + EXCLUDE_FILES := mlib_c_ImageBlendTable.c, \ + OPTIMIZATION := HIGHEST, \ + CFLAGS := $(CFLAGS_JDKLIB) \ + $(BUILD_LIBMLIB_CFLAGS), \ + MAPFILE := $(BUILD_LIBMLIB_IMAGE_MAPFILE), \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LIBS := $(BUILD_LIBMLIB_LDLIBS) \ + $(JDKLIB_LIBS), \ + LIBS_solaris := -lc, \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=mlib_image.dll" \ + -D "JDK_INTERNAL_NAME=mlib_image" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libmlib_image, \ +)) + +$(BUILD_LIBMLIB_IMAGE): $(call FindLib, java.base, java) + +TARGETS += $(BUILD_LIBMLIB_IMAGE) + +################################################################################ + +ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH), solaris-sparc) + + LIBMLIB_IMAGE_V_SRC := $(JDK_TOPDIR)/src/java.desktop/share/native/libmlib_image \ + $(JDK_TOPDIR)/src/java.desktop/unix/native/libmlib_image \ + $(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/medialib \ + $(JDK_TOPDIR)/src/java.desktop/unix/native/common/awt/medialib \ + # + LIBMLIB_IMAGE_V_CFLAGS := $(JDK_TOPDIR)/src/java.desktop/unix/native/libmlib_image/vis_$(OPENJDK_TARGET_CPU_BITS).il \ + $(addprefix -I, $(LIBMLIB_IMAGE_V_SRC)) \ + # + + BUILD_LIBMLIB_IMAGE_V_EXFILES := \ + awt_ImagingLib.c \ + mlib_c_ImageAffine_BC.c \ + mlib_c_ImageAffine_BC_S16.c \ + mlib_c_ImageAffine_BC_U16.c \ + mlib_c_ImageAffine_BL.c \ + mlib_c_ImageAffine_BL_S16.c \ + mlib_c_ImageAffine_BL_U16.c \ + mlib_c_ImageAffine_NN.c \ + mlib_c_ImageConvClearEdge.c \ + mlib_c_ImageConvCopyEdge.c \ + mlib_c_ImageConv_f.c \ + mlib_c_ImageConvVersion.c \ + mlib_c_ImageCopy.c \ + mlib_c_ImageLookUp.c \ + mlib_c_ImageLookUp_f.c \ + # + + LIBMLIB_IMAGE_V_CFLAGS += $(filter-out -DMLIB_NO_LIBSUNMATH, $(BUILD_LIBMLIB_CFLAGS)) + + $(eval $(call SetupNativeCompilation,BUILD_LIBMLIB_IMAGE_V, \ + LIBRARY := mlib_image_v, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBMLIB_IMAGE_V_SRC), \ + EXCLUDE_FILES := $(BUILD_LIBMLIB_IMAGE_V_EXFILES), \ + OPTIMIZATION := HIGHEST, \ + CFLAGS := -xarch=sparcvis \ + $(LIBMLIB_IMAGE_V_CFLAGS) \ + $(CFLAGS_JDKLIB), \ + MAPFILE := $(BUILD_LIBMLIB_IMAGE_MAPFILE), \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LIBS := -ljava -ljvm -lc $(BUILD_LIBMLIB_LDLIBS), \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libmlib_image_v, \ + )) + + $(BUILD_LIBMLIB_IMAGE_V): $(call FindLib, java.base, java) + + TARGETS += $(BUILD_LIBMLIB_IMAGE_V) + +endif + +################################################################################ + +LIBAWT_DIRS := $(JDK_TOPDIR)/src/java.desktop/share/native/libawt \ + $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt \ + $(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \ + $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \ + # + +ifeq ($(OPENJDK_TARGET_OS), aix) + LIBAWT_DIRS += $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS)/native/libawt +endif + +ifeq ($(OPENJDK_TARGET_OS), windows) + LIBAWT_DIRS += $(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/utility +endif + +ifneq ($(filter $(OPENJDK_TARGET_OS), solaris linux macosx aix), ) + LIBAWT_EXFILES += awt_Font.c CUPSfuncs.c fontpath.c X11Color.c +endif + +ifeq ($(OPENJDK_TARGET_OS), macosx) + LIBAWT_EXFILES += initIDs.c awt/image/cvutils/img_colors.c +endif + +LIBAWT_CFLAGS += -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \ + $(addprefix -I, $(shell find $(LIBAWT_DIRS) -type d)) \ + $(LIBJAVA_HEADER_FLAGS) \ + $(addprefix -I, $(BUILD_LIBMLIB_IMAGE_SRC)) \ + # + +LIBAWT_CFLAGS += -D__MEDIALIB_OLD_NAMES -D__USE_J2D_NAMES $(X_CFLAGS) + +ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH), solaris-sparc) + LIBAWT_CFLAGS += -DMLIB_ADD_SUFF + LIBAWT_CFLAGS += -xarch=sparcvis + + LIBAWT_CFLAGS += $(JDK_TOPDIR)/src/java.desktop/unix/native/libmlib_image/vis_$(OPENJDK_TARGET_CPU_BITS).il + LIBAWT_DIRS += $(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/medialib + LIBAWT_EXFILES += java2d/loops/MapAccelFunc.c + + ifeq ($(OPENJDK_TARGET_CPU), sparcv9) + LIBAWT_ASFLAGS = -P -xarch=v9a + else + LIBAWT_ASFLAGS = -P -xarch=v8plusa + endif +else + LIBAWT_EXCLUDES += \ + $(JDK_TOPDIR)/src/java.desktop/unix/native/libawt/awt/medialib \ + $(JDK_TOPDIR)/src/java.desktop/unix/native/libawt/java2d/loops \ + $(JDK_TOPDIR)/src/java.desktop/unix/native/common/awt/medialib \ + # +endif + +ifneq ($(OPENJDK_TARGET_OS), solaris) + LIBAWT_CFLAGS += -DMLIB_NO_LIBSUNMATH +endif + +ifeq ($(OPENJDK_TARGET_OS), windows) + LIBAWT_DIRS += $(JDK_TOPDIR)/src/java.desktop/share/native/common/font \ + $(JDK_TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \ + $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt/systemscale \ + # Why does libawt need java.base headers? + LIBAWT_CFLAGS += -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/font \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \ + -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d/opengl \ + -I$(JDK_TOPDIR)/src/java.desktop/windows/native/include \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/include \ + -I$(SUPPORT_OUTPUTDIR)/headers/java.base \ + # + LIBAWT_EXFILES += \ + java2d/d3d/D3DShaderGen.c \ + awt/image/cvutils/img_colors.c \ + # + + LIBAWT_CFLAGS += -EHsc -DUNICODE -D_UNICODE + ifeq ($(OPENJDK_TARGET_CPU_BITS), 64) + LIBAWT_CFLAGS += -DMLIB_OS64BIT + endif + + LIBAWT_RC_FLAGS ?= -I $(JDK_TOPDIR)/src/java.base/windows/native/launcher/icons + LIBAWT_VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/java.desktop/windows/native/libawt/windows/awt.rc +endif + +ifeq ($(OPENJDK_TARGET_OS), android) + LIBAWT_EXFILES += \ + java2d/loops/TransformHelper.c \ + java2d/loops/ScaledBlit.c \ + java2d/pipe/Region.c \ + java2d/loops/MaskBlit.c \ + java2d/loops/GraphicsPrimitiveMgr.c \ + awt/image/BufImgSurfaceData.c \ + java2d/loops/Blit.c \ + java2d/loops/BlitBg.c \ + CUPSfuncs.c \ + X11Color.c \ + awt_Font.c \ + fontpath.c +endif + +LIBAWT_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libawt/mapfile-vers +ifeq ($(OPENJDK_TARGET_OS), linux) + LIBAWT_MAPFILE := +endif + +# Turn off all warnings for debug_mem.c This is needed because the specific warning +# about initializing a declared 'extern' cannot be turned off individually. Only +# applies to debug builds. +ifeq ($(TOOLCHAIN_TYPE), gcc) + BUILD_LIBAWT_debug_mem.c_CFLAGS := -w + # This option improves performance of MaskFill in Java2D by 20% for some gcc + LIBAWT_CFLAGS += -fgcse-after-reload +endif + +$(eval $(call SetupNativeCompilation,BUILD_LIBAWT, \ + LIBRARY := awt, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBAWT_DIRS), \ + EXCLUDES := $(LIBAWT_EXCLUDES), \ + EXCLUDE_FILES := $(LIBAWT_EXFILES), \ + OPTIMIZATION := LOW, \ + CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_CFLAGS), \ + DISABLED_WARNINGS_gcc := sign-compare unused-result maybe-uninitialized \ + format-nonliteral parentheses, \ + DISABLED_WARNINGS_clang := logical-op-parentheses extern-initializer, \ + DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE, \ + DISABLED_WARNINGS_microsoft := 4297 4244 4267 4996, \ + ASFLAGS := $(LIBAWT_ASFLAGS), \ + MAPFILE := $(LIBAWT_MAPFILE), \ + LDFLAGS := $(LDFLAGS_JDKLIB) $(call SET_SHARED_LIBRARY_ORIGIN), \ + LDFLAGS_macosx := -L$(INSTALL_LIBRARIES_HERE), \ + LDFLAGS_windows := -delayload:user32.dll -delayload:gdi32.dll \ + -delayload:shell32.dll -delayload:winmm.dll \ + -delayload:winspool.drv -delayload:imm32.dll \ + -delayload:ole32.dll -delayload:comdlg32.dll \ + -delayload:comctl32.dll -delayload:shlwapi.dll, \ + LIBS_unix := -ljvm -ljava $(LIBM), \ + LIBS_linux := $(LIBDL), \ + LIBS_android := $(LIBDL), \ + LIBS_solaris := $(LIBDL) -lc, \ + LIBS_aix := $(LIBDL),\ + LIBS_macosx := -lmlib_image \ + -framework Cocoa \ + -framework OpenGL \ + -framework JavaNativeFoundation \ + -framework JavaRuntimeSupport \ + -framework ApplicationServices \ + -framework AudioToolbox, \ + LIBS_windows := kernel32.lib user32.lib gdi32.lib winspool.lib \ + imm32.lib ole32.lib uuid.lib shell32.lib \ + comdlg32.lib winmm.lib comctl32.lib shlwapi.lib \ + delayimp.lib jvm.lib $(WIN_JAVA_LIB) advapi32.lib, \ + VERSIONINFO_RESOURCE := $(LIBAWT_VERSIONINFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) $(LIBAWT_RC_FLAGS) \ + -D "JDK_FNAME=awt.dll" \ + -D "JDK_INTERNAL_NAME=awt" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libawt, \ +)) + +$(BUILD_LIBAWT): $(call FindLib, java.base, java) + +ifeq ($(OPENJDK_TARGET_OS), macosx) + $(BUILD_LIBAWT): $(BUILD_LIBMLIB_IMAGE) +endif + +TARGETS += $(BUILD_LIBAWT) + +################################################################################ + +ifeq ($(findstring $(OPENJDK_TARGET_OS),windows macosx),) + ifeq ($(ENABLE_HEADLESS_ONLY), false) + + LIBAWT_XAWT_DIRS := \ + $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt_xawt \ + $(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \ + $(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/utility \ + $(JDK_TOPDIR)/src/java.desktop/share/native/common/font \ + $(JDK_TOPDIR)/src/java.desktop/share/native/common/java2d \ + $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d \ + $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \ + # + + ifneq ($(filter $(OPENJDK_TARGET_OS),linux solaris aix), ) + LIBAWT_XAWT_DIRS += $(JDK_TOPDIR)/src/java.desktop/unix/native/common/awt/systemscale + endif + + LIBAWT_XAWT_EXCLUDES := medialib + + LIBAWT_XAWT_CFLAGS := $(addprefix -I, $(shell $(FIND) $(LIBAWT_XAWT_DIRS) -type d)) \ + -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/include \ + -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS)/native/include \ + -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/include \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d \ + -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/java2d \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d/loops \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d/pipe \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image \ + -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libsunwjdga \ + -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/font \ + $(LIBJAVA_HEADER_FLAGS) + # + + LIBAWT_XAWT_CFLAGS += -DXAWT -DXAWT_HACK \ + -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" \ + $(CUPS_CFLAGS) + + ifeq ($(OPENJDK_TARGET_OS), solaris) + LIBAWT_XAWT_CFLAGS += -DFUNCPROTO=15 + endif + + ifeq ($(OPENJDK_TARGET_OS), linux) + ifeq ($(DISABLE_XRENDER), true) + LIBAWT_XAWT_CFLAGS += -DDISABLE_XRENDER_BY_DEFAULT=true + endif + endif + + LIBAWT_XAWT_LIBS := $(LIBM) -lawt -lXext -lX11 -lXrender $(LIBDL) -lXtst -lXi -ljava -ljvm -lc + + ifeq ($(OPENJDK_TARGET_OS), linux) + LIBAWT_XAWT_LIBS += -lpthread + endif + + ifeq ($(TOOLCHAIN_TYPE), gcc) + # Turn off all warnings for the following files since they contain warnings + # that cannot be turned of individually. + # redefining a macro + BUILD_LIBAWT_XAWT_gtk2_interface.c_CFLAGS := -w + # comparison between pointer and integer + BUILD_LIBAWT_XAWT_awt_Font.c_CFLAGS := -w + # initializing a declared 'extern' + BUILD_LIBAWT_XAWT_debug_mem.c_CFLAGS := -w + endif + + $(eval $(call SetupNativeCompilation,BUILD_LIBAWT_XAWT, \ + LIBRARY := awt_xawt, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBAWT_XAWT_DIRS), \ + EXCLUDES := $(LIBAWT_XAWT_EXCLUDES), \ + OPTIMIZATION := LOW, \ + CFLAGS := $(CFLAGS_JDKLIB) $(LIBAWT_XAWT_CFLAGS) \ + $(X_CFLAGS), \ + WARNINGS_AS_ERRORS_xlc := false, \ + DISABLED_WARNINGS_gcc := type-limits pointer-to-int-cast \ + unused-result maybe-uninitialized format \ + format-security int-to-pointer-cast parentheses, \ + DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE \ + E_ASSIGNMENT_TYPE_MISMATCH E_NON_CONST_INIT, \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libawt_xawt/mapfile-vers, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN) \ + -L$(INSTALL_LIBRARIES_HERE), \ + LIBS := $(X_LIBS) $(LIBAWT_XAWT_LIBS), \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=xawt.dll" \ + -D "JDK_INTERNAL_NAME=xawt" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libawt_xawt, \ + )) + + $(BUILD_LIBAWT_XAWT): $(call FindLib, java.base, java) + + $(BUILD_LIBAWT_XAWT): $(BUILD_LIBAWT) + + TARGETS += $(BUILD_LIBAWT_XAWT) + + endif +endif + +################################################################################ + +LIBLCMS_SRC := $(JDK_TOPDIR)/src/java.desktop/share/native/liblcms +LIBLCMS_CPPFLAGS += -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \ + $(LIBJAVA_HEADER_FLAGS) \ + # +# The fast floor code loses precision. +LCMS_CFLAGS=-DCMS_DONT_USE_FAST_FLOOR + +ifeq ($(USE_EXTERNAL_LCMS), true) + # If we're using an external library, we'll just need the wrapper part. + # By including it explicitly, all other files will be excluded. + BUILD_LIBLCMS_INCLUDE_FILES := LCMS.c +else + BUILD_LIBLCMS_INCLUDE_FILES := + # If we're using the bundled library, we'll need to include it in the + # include path explicitly. Otherwise the system headers will be used. + LIBLCMS_CPPFLAGS += $(addprefix -I, $(LIBLCMS_SRC)) +endif + +$(eval $(call SetupNativeCompilation,BUILD_LIBLCMS, \ + LIBRARY := lcms, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBLCMS_SRC), \ + INCLUDE_FILES := $(BUILD_LIBLCMS_INCLUDE_FILES), \ + OPTIMIZATION := HIGHEST, \ + CFLAGS := $(filter-out -xc99=%none, $(CFLAGS_JDKLIB)) \ + $(LIBLCMS_CPPFLAGS) \ + $(LCMS_CFLAGS), \ + CFLAGS_solaris := -xc99=no_lib, \ + CFLAGS_windows := -DCMS_IS_WINDOWS_, \ + DISABLED_WARNINGS_gcc := format-nonliteral type-limits misleading-indentation, \ + DISABLED_WARNINGS_clang := tautological-compare, \ + DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \ + DISABLED_WARNINGS_microsoft := 4819, \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/liblcms/mapfile-vers, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ + LDFLAGS_solaris := /usr/lib$(OPENJDK_TARGET_CPU_ISADIR)/libm.so.2, \ + LIBS_unix := -lawt -ljvm -ljava $(LCMS_LIBS), \ + LIBS_linux := $(LIBM), \ + LIBS_android := $(LIBM), \ + LIBS_macosx := $(LIBM), \ + LIBS_solaris := -lc, \ + LIBS_aix := $(LIBM),\ + LIBS_windows := $(WIN_AWT_LIB) $(WIN_JAVA_LIB), \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=lcms.dll" \ + -D "JDK_INTERNAL_NAME=lcms" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/liblcms, \ +)) + +TARGETS += $(BUILD_LIBLCMS) + +$(BUILD_LIBLCMS): $(BUILD_LIBAWT) + +################################################################################ + +LIBJAVAJPEG_SRC += $(JDK_TOPDIR)/src/java.desktop/share/native/libjavajpeg + +BUILD_LIBJAVAJPEG_REORDER := +ifeq ($(OPENJDK_TARGET_OS), solaris) + ifneq ($(OPENJDK_TARGET_CPU), x86_64) + BUILD_LIBJAVAJPEG_REORDER := $(JDK_TOPDIR)/make/mapfiles/libjpeg/reorder-$(OPENJDK_TARGET_CPU) + endif +endif + + +# Suppress gcc warnings like "variable might be clobbered by 'longjmp' +# or 'vfork'": this warning indicates that some variable is placed to +# a register by optimized compiler and it's value might be lost on longjmp(). +# Recommended way to avoid such warning is to declare the variable as +# volatile to prevent the optimization. However, this approach does not +# work because we have to declare all variables as volatile in result. +#ifndef CROSS_COMPILE_ARCH +# CC_43_OR_NEWER := \ +# $(shell $(EXPR) $(CC_MAJORVER) \> 4 \| \ +# \( $(CC_MAJORVER) = 4 \& $(CC_MINORVER) \>= 3 \) ) +# ifeq ($(CC_43_OR_NEWER), 1) +# BUILD_LIBJAVAJPEG_CFLAGS_linux += -Wno-clobbered +# endif +#endif + +ifeq ($(USE_EXTERNAL_LIBJPEG), true) + LIBJPEG_LIBS := -ljpeg + BUILD_LIBJAVAJPEG_INCLUDE_FILES := \ + imageioJPEG.c \ + jpegdecoder.c + BUILD_LIBJAVAJPEG_HEADERS := +else + LIBJPEG_LIBS := + BUILD_LIBJAVAJPEG_INCLUDE_FILES := + BUILD_LIBJAVAJPEG_HEADERS := $(addprefix -I, $(LIBJAVAJPEG_SRC)) +endif + +$(eval $(call SetupNativeCompilation,BUILD_LIBJAVAJPEG, \ + LIBRARY := javajpeg, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBJAVAJPEG_SRC), \ + INCLUDE_FILES := $(BUILD_LIBJAVAJPEG_INCLUDE_FILES), \ + OPTIMIZATION := HIGHEST, \ + CFLAGS := $(CFLAGS_JDKLIB) $(BUILD_LIBJAVAJPEG_HEADERS) \ + $(LIBJAVA_HEADER_FLAGS) \ + -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop, \ + DISABLED_WARNINGS_gcc := clobbered, \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjpeg/mapfile-vers, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LIBS := $(LIBJPEG_LIBS) $(JDKLIB_LIBS), \ + LIBS_windows := $(WIN_JAVA_LIB) jvm.lib, \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=javajpeg.dll" \ + -D "JDK_INTERNAL_NAME=javajpeg" \ + -D "JDK_FTYPE=0x2L", \ + REORDER := $(BUILD_LIBJAVAJPEG_REORDER), \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjavajpeg, \ +)) + +$(BUILD_LIBJAVAJPEG): $(call FindLib, java.base, java) + +TARGETS += $(BUILD_LIBJAVAJPEG) + +################################################################################ + +# Mac and Windows only use the native AWT lib, do not build libawt_headless +ifeq ($(findstring $(OPENJDK_TARGET_OS), windows macosx),) + + LIBAWT_HEADLESS_DIRS := $(JDK_TOPDIR)/src/java.desktop/unix/native/libawt_headless/awt \ + $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \ + $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d \ + $(JDK_TOPDIR)/src/java.desktop/share/native/common/java2d \ + $(JDK_TOPDIR)/src/java.desktop/share/native/common/font \ + # + + LIBAWT_HEADLESS_EXCLUDES := medialib + LIBAWT_HEADLESS_CFLAGS := -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \ + $(addprefix -I, $(LIBAWT_HEADLESS_DIRS)) \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d \ + -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/java2d \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d/loops \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d/pipe \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/font \ + -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/font \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \ + -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d/opengl \ + -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libsunwjdga/ \ + $(LIBJAVA_HEADER_FLAGS) \ + # + + ifeq ($(OPENJDK_TARGET_OS), android) + LIBAWT_HEADLESS_EXFILES += \ + X11SurfaceData.c \ + X11Renderer.c \ + X11PMBlitLoops.c \ + GLXSurfaceData.c \ + GLXGraphicsConfig.c + endif + LIBAWT_HEADLESS_REORDER := + ifeq ($(OPENJDK_TARGET_OS), solaris) + ifneq ($(OPENJDK_TARGET_CPU), x86_64) + LIBAWT_HEADLESS_REORDER := $(JDK_TOPDIR)/make/mapfiles/libawt_headless/reorder-$(OPENJDK_TARGET_CPU) + endif + endif + + $(eval $(call SetupNativeCompilation,BUILD_LIBAWT_HEADLESS, \ + LIBRARY := awt_headless, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBAWT_HEADLESS_DIRS), \ + EXCLUDES := $(LIBAWT_HEADLESS_EXCLUDES), \ + EXCLUDE_FILES := $(LIBAWT_HEADLESS_EXFILES), \ + OPTIMIZATION := LOW, \ + CFLAGS := $(CFLAGS_JDKLIB) \ + -DHEADLESS=true \ + -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" \ + $(CUPS_CFLAGS) \ + $(X_CFLAGS) \ + $(LIBAWT_HEADLESS_CFLAGS), \ + DISABLED_WARNINGS_xlc := 1506-356, \ + DISABLED_WARNINGS_solstudio := E_EMPTY_TRANSLATION_UNIT, \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libawt_headless/mapfile-vers, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ + REORDER := $(LIBAWT_HEADLESS_REORDER), \ + LIBS_unix := -lawt -ljvm -ljava, \ + LIBS_android := $(LIBM) $(LIBDL), \ + LIBS_linux := $(LIBM) $(LIBDL), \ + LIBS_solaris := $(LIBM) $(LIBDL) $(LIBCXX) -lc, \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libawt_headless, \ + )) + + # AIX warning explanation: + # 1506-356 : (W) Compilation unit is empty. + # This happens during the headless build + + $(BUILD_LIBAWT_HEADLESS): $(BUILD_LIBAWT) + + TARGETS += $(BUILD_LIBAWT_HEADLESS) + +endif + +################################################################################ + +LIBFONTMANAGER_SRC := $(JDK_TOPDIR)/src/java.desktop/share/native/libfontmanager \ + $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libfontmanager +LIBFONTMANAGER_CFLAGS := \ + $(addprefix -I, $(shell $(FIND) \ + $(LIBFONTMANAGER_SRC) \ + $(JDK_TOPDIR)/src/java.desktop/share/native/libawt \ + $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt \ + $(JDK_TOPDIR)/src/java.desktop/share/native/common \ + $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common -type d)) \ + -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \ + $(LIBJAVA_HEADER_FLAGS) \ + # + +#### Begin harfbuzz configuration + +HARFBUZZ_CFLAGS := -DHAVE_OT -DHAVE_FALLBACK -DHAVE_UCDN + +ifneq ($(OPENJDK_TARGET_OS), windows) + HARFBUZZ_CFLAGS += -DGETPAGESIZE -DHAVE_MPROTECT -DHAVE_PTHREAD \ + -DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H +endif +ifneq (, $(findstring $(OPENJDK_TARGET_OS), linux macosx)) + HARFBUZZ_CFLAGS += -DHAVE_INTEL_ATOMIC_PRIMITIVES +endif +ifeq ($(OPENJDK_TARGET_OS), solaris) + HARFBUZZ_CFLAGS += -DHAVE_SOLARIS_ATOMIC_OPS +endif +ifeq ($(OPENJDK_TARGET_OS), macosx) + HARFBUZZ_CFLAGS += -DHAVE_CORETEXT +endif +ifneq ($(OPENJDK_TARGET_OS), macosx) + LIBFONTMANAGER_EXCLUDE_FILES += harfbuzz/hb-coretext.cc +endif +# hb-ft.cc is not presently needed, and requires freetype 2.4.2 or later. +LIBFONTMANAGER_EXCLUDE_FILES += harfbuzz/hb-ft.cc + +LIBFONTMANAGER_CFLAGS += $(HARFBUZZ_CFLAGS) + +#### End harfbuzz configuration + +LIBFONTMANAGER_CFLAGS += $(FREETYPE_CFLAGS) +# This may be overridden in a custom makefile +BUILD_LIBFONTMANAGER_MAPFILE ?= $(JDK_TOPDIR)/make/mapfiles/libfontmanager/mapfile-vers +BUILD_LIBFONTMANAGER_FONTLIB += $(FREETYPE_LIBS) + +LIBFONTMANAGER_OPTIMIZATION := HIGH + +ifeq ($(OPENJDK_TARGET_OS), windows) + LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \ + X11TextRenderer.c + LIBFONTMANAGER_OPTIMIZATION := HIGHEST + LIBFONTMANAGER_CFLAGS += -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/windows +else ifeq ($(OPENJDK_TARGET_OS), macosx) + LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \ + X11TextRenderer.c \ + fontpath.c \ + lcdglyph.c +else ifeq ($(OPENJDK_TARGET_OS), android) + LIBFONTMANAGER_EXCLUDE_FILES += X11TextRenderer.c +else + LIBFONTMANAGER_EXCLUDE_FILES += fontpath.c \ + lcdglyph.c +endif + +LIBFONTMANAGER_CFLAGS += $(FONT_HEADERS) $(X_CFLAGS) -DLE_STANDALONE -DHEADLESS + +ifeq ($(TOOLCHAIN_TYPE), gcc) + # Turn off all warnings for sunFont.c. This is needed because the specific warning + # about discarding 'const' qualifier cannot be turned off individually. + BUILD_LIBFONTMANAGER_sunFont.c_CFLAGS := -w + # Turn off aliasing with GCC for ExtensionSubtables.cpp + BUILD_LIBFONTMANAGER_ExtensionSubtables.cpp_CXXFLAGS := -fno-strict-aliasing +endif + +$(eval $(call SetupNativeCompilation,BUILD_LIBFONTMANAGER, \ + LIBRARY := fontmanager, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBFONTMANAGER_SRC), \ + EXCLUDE_FILES := $(LIBFONTMANAGER_EXCLUDE_FILES) \ + AccelGlyphCache.c, \ + TOOLCHAIN := TOOLCHAIN_LINK_CXX, \ + CFLAGS := $(CFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \ + CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBFONTMANAGER_CFLAGS), \ + OPTIMIZATION := $(LIBFONTMANAGER_OPTIMIZATION), \ + CFLAGS_windows = -DCC_NOEX, \ + CFLAGS_android = -DHB_NO_MT=1, \ + WARNINGS_AS_ERRORS_xlc := false, \ + DISABLED_WARNINGS_gcc := sign-compare int-to-pointer-cast \ + type-limits missing-field-initializers, \ + DISABLED_WARNINGS_CXX_gcc := reorder delete-non-virtual-dtor strict-overflow \ + maybe-uninitialized, \ + DISABLED_WARNINGS_clang := unused-value incompatible-pointer-types \ + tautological-constant-out-of-range-compare int-to-pointer-cast, \ + DISABLED_WARNINGS_C_solstudio = \ + E_INTEGER_OVERFLOW_DETECTED \ + E_ARG_INCOMPATIBLE_WITH_ARG_L \ + E_ENUM_VAL_OVERFLOWS_INT_MAX, \ + DISABLED_WARNINGS_CXX_solstudio := \ + truncwarn wvarhidenmem wvarhidemem wbadlkginit identexpected \ + hidevf w_novirtualdescr arrowrtn2, \ + DISABLED_WARNINGS_microsoft := 4267 4244 4018 4090 4996 4146 4334 4819, \ + MAPFILE := $(BUILD_LIBFONTMANAGER_MAPFILE), \ + LDFLAGS := $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ + LDFLAGS_macosx := -undefined dynamic_lookup, \ + LIBS := $(BUILD_LIBFONTMANAGER_FONTLIB), \ + LIBS_unix := -lawt -ljava -ljvm $(LIBM) $(LIBCXX), \ + LIBS_linux := -lc, \ + LIBS_android := -lc, \ + LIBS_solaris := -lawt_headless -lc, \ + LIBS_aix := -lawt_headless,\ + LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib user32.lib gdi32.lib \ + $(WIN_AWT_LIB), \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=fontmanager.dll" \ + -D "JDK_INTERNAL_NAME=fontmanager" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfontmanager, \ +)) + +$(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT) + +ifneq (, $(findstring $(OPENJDK_TARGET_OS), solaris aix)) + $(BUILD_LIBFONTMANAGER): $(BUILD_LIBAWT_HEADLESS) +endif + +TARGETS += $(BUILD_LIBFONTMANAGER) + +################################################################################ + +ifeq ($(OPENJDK_TARGET_OS), windows) + LIBJAWT_SRC := $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libjawt + LIBJAWT_CFLAGS := -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/windows \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \ + -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/java2d/windows \ + -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \ + -I$(JDK_TOPDIR)/src/java.desktop/windows/native/include \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/include \ + $(LIBJAVA_HEADER_FLAGS) \ + # + + ifeq ($(OPENJDK_TARGET_CPU), x86) + KERNEL32_LIB := kernel32.lib + endif + $(eval $(call SetupNativeCompilation,BUILD_LIBJAWT, \ + LIBRARY := jawt, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBJAWT_SRC), \ + INCLUDE_FILES := $(LIBJAWT_INCLUDE_FILES), \ + OPTIMIZATION := LOW, \ + CFLAGS := $(CXXFLAGS_JDKLIB) \ + -EHsc -DUNICODE -D_UNICODE \ + $(LIBJAWT_CFLAGS), \ + CFLAGS_android := $(HEADLESS_CFLAG), \ + LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK), \ + LIBS := $(JDKLIB_LIBS) $(KERNEL32_LIB) advapi32.lib $(WIN_AWT_LIB), \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=jawt.dll" \ + -D "JDK_INTERNAL_NAME=jawt" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjawt, \ + )) + + $(BUILD_LIBJAWT): $(BUILD_LIBAWT) + + $(eval $(call SetupCopyFiles, COPY_JAWT_LIB, \ + FILES := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjawt/$(LIBRARY_PREFIX)jawt$(STATIC_LIBRARY_SUFFIX), \ + DEST := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE), \ + )) + + $(COPY_JAWT_LIB): $(BUILD_LIBJAWT) + + TARGETS += $(COPY_JAWT_LIB) + +else # OPENJDK_TARGET_OS not windows + + ifeq ($(OPENJDK_TARGET_OS), macosx) + LIBJAWT_SRC := $(JDK_TOPDIR)/src/java.desktop/macosx/native/libjawt + else + LIBJAWT_SRC := $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libjawt + endif + LIBJAWT_CFLAGS := \ + -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \ + -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS)/native/include \ + -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/include \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/include \ + $(LIBJAVA_HEADER_FLAGS) \ + # + + ifeq ($(OPENJDK_TARGET_OS), macosx) + JAWT_LIBS := -lawt_lwawt + else + JAWT_LIBS := + ifneq ($(OPENJDK_TARGET_OS), solaris) + JAWT_LIBS += -lawt + endif + ifeq ($(ENABLE_HEADLESS_ONLY), false) + JAWT_LIBS += -lawt_xawt + else + JAWT_LIBS += -lawt_headless + HEADLESS_CFLAG += -DHEADLESS + endif + endif + + $(eval $(call SetupNativeCompilation,BUILD_LIBJAWT, \ + LIBRARY := jawt, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBJAWT_SRC), \ + INCLUDE_FILES := $(JAWT_FILES), \ + OPTIMIZATION := LOW, \ + CFLAGS := $(CFLAGS_JDKLIB) \ + $(LIBJAWT_CFLAGS), \ + CFLAGS_linux := $(HEADLESS_CFLAG), \ + CFLAGS_android := $(HEADLESS_CFLAG), \ + CFLAGS_macosx := $(LIBJAWT_CFLAGS_macosx), \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjawt/mapfile-vers, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \ + LDFLAGS_macosx := -Wl$(COMMA)-rpath$(COMMA)@loader_path, \ + LIBS_unix := $(JAWT_LIBS) $(JDKLIB_LIBS), \ + LIBS_solaris := $(X_LIBS) -lXrender, \ + LIBS_macosx := -framework Cocoa, \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjawt, \ + )) + + ifeq ($(ENABLE_HEADLESS_ONLY), false) + $(BUILD_LIBJAWT): $(BUILD_LIBAWT_XAWT) + else + $(BUILD_LIBJAWT): $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)awt_headless$(SHARED_LIBRARY_SUFFIX) + endif + + ifeq ($(OPENJDK_TARGET_OS), macosx) + $(BUILD_LIBJAWT): $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)awt_lwawt$(SHARED_LIBRARY_SUFFIX) + endif + +endif # OPENJDK_TARGET_OS + +TARGETS += $(BUILD_LIBJAWT) + +################################################################################ + +ifeq ($(ENABLE_HEADLESS_ONLY), false) + + LIBSPLASHSCREEN_DIRS := \ + $(JDK_TOPDIR)/src/java.desktop/share/native/libjavajpeg \ + $(JDK_TOPDIR)/src/java.desktop/share/native/libsplashscreen \ + # + + ifeq ($(USE_EXTERNAL_LIBGIF), true) + GIFLIB_LIBS := -lgif + LIBSPLASHSCREEN_EXCLUDES := giflib + else + LIBSPLASHSCREEN_CFLAGS += -I$(JDK_TOPDIR)/src/java.desktop/share/native/libsplashscreen/giflib + endif + + ifeq ($(USE_EXTERNAL_LIBJPEG), true) + LIBJPEG_LIBS := -ljpeg + else + LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.desktop/share/native/libjavajpeg + LIBJPEG_CFLAGS := -I$(JDK_TOPDIR)/src/java.desktop/share/native/libjavajpeg + endif + + ifeq ($(USE_EXTERNAL_LIBPNG), false) + LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.desktop/share/native/libsplashscreen/libpng + else + LIBSPLASHSCREEN_EXCLUDES += libpng + endif + + ifneq ($(OPENJDK_TARGET_OS), macosx) + LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libsplashscreen + else + LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.desktop/macosx/native/libsplashscreen + endif + + ifneq ($(filter $(OPENJDK_TARGET_OS),linux solaris aix), ) + LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.desktop/unix/native/common/awt/systemscale + endif + + ifeq ($(OPENJDK_TARGET_OS), windows) + LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.desktop/windows/native/common/awt/systemscale + endif + LIBSPLASHSCREEN_CFLAGS += -DSPLASHSCREEN -DPNG_NO_MMX_CODE -DPNG_ARM_NEON_OPT=0 \ + $(addprefix -I, $(LIBSPLASHSCREEN_DIRS)) \ + $(LIBJAVA_HEADER_FLAGS) \ + # + + ifeq ($(OPENJDK_TARGET_OS), macosx) + LIBSPLASHSCREEN_CFLAGS += -DWITH_MACOSX + LIBSPLASHSCREEN_CFLAGS += -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libosxapp + + BUILD_LIBSPLASHSCREEN_java_awt_SplashScreen.c_CFLAGS := -x objective-c -O0 + BUILD_LIBSPLASHSCREEN_splashscreen_gfx_impl.c_CFLAGS := -x objective-c -O0 + BUILD_LIBSPLASHSCREEN_splashscreen_gif.c_CFLAGS := -x objective-c -O0 + BUILD_LIBSPLASHSCREEN_splashscreen_impl.c_CFLAGS := -x objective-c -O0 + BUILD_LIBSPLASHSCREEN_splashscreen_jpeg.c_CFLAGS := -x objective-c -O0 + BUILD_LIBSPLASHSCREEN_splashscreen_png.c_CFLAGS := -x objective-c -O0 + BUILD_LIBSPLASHSCREEN_splashscreen_sys.m_CFLAGS := -O0 + + else ifeq ($(OPENJDK_TARGET_OS), windows) + LIBSPLASHSCREEN_CFLAGS += -DWITH_WIN32 + else + LIBSPLASHSCREEN_CFLAGS += -DWITH_X11 $(X_CFLAGS) + endif + + LIBSPLASHSCREEN_LIBS := + + ifneq ($(USE_EXTERNAL_LIBZ), true) + LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.base/share/native/libzip/zlib + LIBSPLASHSCREEN_CFLAGS += $(ZLIB_CPPFLAGS) + endif + + ifeq ($(OPENJDK_TARGET_OS), macosx) + LIBSPLASHSCREEN_LDFLAGS := -L$(INSTALL_LIBRARIES_HERE) + LIBSPLASHSCREEN_LIBS += \ + $(LIBM) -lpthread -liconv -losxapp \ + -framework ApplicationServices \ + -framework Foundation \ + -framework Cocoa \ + -framework JavaNativeFoundation + else ifeq ($(OPENJDK_TARGET_OS), windows) + LIBSPLASHSCREEN_LDFLAGS := -delayload:user32.dll + LIBSPLASHSCREEN_LIBS += kernel32.lib user32.lib gdi32.lib delayimp.lib $(WIN_JAVA_LIB) jvm.lib + else + LIBSPLASHSCREEN_LIBS += $(X_LIBS) -lX11 -lXext $(LIBM) -lpthread -ldl + endif + + $(eval $(call SetupNativeCompilation,BUILD_LIBSPLASHSCREEN, \ + LIBRARY := splashscreen, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBSPLASHSCREEN_DIRS), \ + EXCLUDE_FILES := imageioJPEG.c jpegdecoder.c pngtest.c, \ + EXCLUDES := $(LIBSPLASHSCREEN_EXCLUDES), \ + OPTIMIZATION := LOW, \ + CFLAGS := $(LIBSPLASHSCREEN_CFLAGS) $(CFLAGS_JDKLIB) \ + $(GIFLIB_CFLAGS) $(LIBJPEG_CFLAGS) $(PNG_CFLAGS), \ + DISABLED_WARNINGS_gcc := sign-compare type-limits unused-result maybe-uninitialized shift-negative-value, \ + DISABLED_WARNINGS_clang := incompatible-pointer-types, \ + DISABLED_WARNINGS_solstudio := E_NEWLINE_NOT_LAST E_DECLARATION_IN_CODE \ + E_STATEMENT_NOT_REACHED, \ + DISABLED_WARNINGS_microsoft := 4018 4244 4267, \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libsplashscreen/mapfile-vers, \ + LDFLAGS := $(LIBSPLASHSCREEN_LDFLAGS) $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LIBS := $(JDKLIB_LIBS) $(LIBSPLASHSCREEN_LIBS) $(LIBZ) \ + $(GIFLIB_LIBS) $(LIBJPEG_LIBS) $(PNG_LIBS), \ + LIBS_aix := -liconv, \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=splashscreen.dll" \ + -D "JDK_INTERNAL_NAME=splashscreen" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libsplashscreen, \ + )) + + TARGETS += $(BUILD_LIBSPLASHSCREEN) + + ifeq ($(OPENJDK_TARGET_OS), macosx) + $(BUILD_LIBSPLASHSCREEN): $(INSTALL_LIBRARIES_HERE)/$(LIBRARY_PREFIX)osxapp$(SHARED_LIBRARY_SUFFIX) + endif + +endif + +################################################################################ + +ifeq ($(OPENJDK_TARGET_OS), macosx) + + LIBAWT_LWAWT_DIRS := \ + $(JDK_TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt \ + $(JDK_TOPDIR)/src/java.desktop/unix/native/common/awt \ + $(JDK_TOPDIR)/src/java.desktop/share/native/common/font \ + $(JDK_TOPDIR)/src/java.desktop/share/native/common/java2d \ + # + + LIBAWT_LWAWT_CFLAGS := \ + $(addprefix -I, $(LIBAWT_LWAWT_DIRS)) \ + -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \ + -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/awt \ + -I$(JDK_TOPDIR)/src/java.desktop/unix/native/libawt_xawt/awt \ + -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/font \ + -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/java2d/opengl \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \ + -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/include \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/include \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d \ + -I$(JDK_TOPDIR)/src/java.desktop/unix/native/libawt/java2d \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d/loops \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d/pipe \ + -I$(JDK_TOPDIR)/src/java.desktop/share/native/libmlib_image/ \ + -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libosxapp \ + $(LIBJAVA_HEADER_FLAGS) \ + # + + LIBAWT_LWAWT_EXFILES := fontpath.c awt_Font.c X11Color.c + LIBAWT_LWAWT_EXCLUDES := $(JDK_TOPDIR)/src/java.desktop/unix/native/common/awt/medialib + + $(eval $(call SetupNativeCompilation,BUILD_LIBAWT_LWAWT, \ + LIBRARY := awt_lwawt, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBAWT_LWAWT_DIRS), \ + INCLUDE_FILES := $(LIBAWT_LWAWT_FILES), \ + EXCLUDE_FILES := $(LIBAWT_LWAWT_EXFILES), \ + EXCLUDES := $(LIBAWT_LWAWT_EXCLUDES), \ + OPTIMIZATION := LOW, \ + CFLAGS := $(CFLAGS_JDKLIB) \ + $(X_CFLAGS) \ + $(X_LIBS) \ + $(LIBAWT_LWAWT_CFLAGS), \ + DISABLED_WARNINGS_clang := incomplete-implementation enum-conversion \ + deprecated-declarations objc-method-access bitwise-op-parentheses \ + incompatible-pointer-types parentheses-equality extra-tokens, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN) \ + -L$(INSTALL_LIBRARIES_HERE), \ + LIBS := -lawt -lmlib_image -losxapp -ljvm $(LIBM) \ + -framework Accelerate \ + -framework ApplicationServices \ + -framework AudioToolbox \ + -framework Carbon \ + -framework Cocoa \ + -framework Security \ + -framework ExceptionHandling \ + -framework JavaNativeFoundation \ + -framework JavaRuntimeSupport \ + -framework OpenGL \ + -framework QuartzCore -ljava, \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libawt_lwawt, \ + )) + + TARGETS += $(BUILD_LIBAWT_LWAWT) + + $(BUILD_LIBAWT_LWAWT): $(BUILD_LIBAWT) + + $(BUILD_LIBAWT_LWAWT): $(BUILD_LIBMLIB_IMAGE) + + $(BUILD_LIBAWT_LWAWT): $(BUILD_LIBOSXAPP) + + $(BUILD_LIBAWT_LWAWT): $(call FindLib, java.base, java) + +endif + +################################################################################ + +ifeq ($(OPENJDK_TARGET_OS), macosx) + + $(eval $(call SetupNativeCompilation,BUILD_LIBOSXUI, \ + LIBRARY := osxui, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(JDK_TOPDIR)/src/java.desktop/macosx/native/libosxui, \ + OPTIMIZATION := LOW, \ + CFLAGS := $(CFLAGS_JDKLIB) \ + -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libosxui \ + -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/awt \ + -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libosxapp \ + -I$(JDK_TOPDIR)/src/java.base/share/native/libjava \ + -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \ + -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN) \ + -Wl$(COMMA)-rpath$(COMMA)@loader_path \ + -L$(INSTALL_LIBRARIES_HERE), \ + LIBS := -lawt -losxapp -lawt_lwawt \ + -framework Cocoa \ + -framework Carbon \ + -framework ApplicationServices \ + -framework JavaNativeFoundation \ + -framework JavaRuntimeSupport \ + -ljava -ljvm, \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libosxui, \ + )) + + TARGETS += $(BUILD_LIBOSXUI) + + $(BUILD_LIBOSXUI): $(BUILD_LIBAWT) + + $(BUILD_LIBOSXUI): $(BUILD_LIBOSXAPP) + + $(BUILD_LIBOSXUI): $(BUILD_LIBAWT_LWAWT) + + #$(BUILD_LIBOSXUI): $(call FindLib, java.base, java) + +endif + +################################################################################ + +# Hook to include the corresponding custom file, if present. +$(eval $(call IncludeCustomExtension, jdk, lib/Awt2dLibraries.gmk)) diff --git a/openjdk-mobile-aarch64-patch/jdk/make/lib/CoreLibraries.gmk b/openjdk-mobile-aarch64-patch/jdk/make/lib/CoreLibraries.gmk new file mode 100644 index 0000000..b2085c5 --- /dev/null +++ b/openjdk-mobile-aarch64-patch/jdk/make/lib/CoreLibraries.gmk @@ -0,0 +1,487 @@ +# +# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +WIN_VERIFY_LIB := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libverify/verify.lib + +# Hook to include the corresponding custom file, if present. +$(eval $(call IncludeCustomExtension, jdk, lib/CoreLibraries.gmk)) + + +########################################################################################## +# libfdlibm is statically linked with libjava below and not delivered into the +# product on its own. + +BUILD_LIBFDLIBM_OPTIMIZATION := NONE + +ifeq ($(OPENJDK_TARGET_OS), solaris) + BUILD_LIBFDLIBM_OPTIMIZATION := HIGH +endif + +ifeq ($(OPENJDK_TARGET_OS), linux) + ifeq ($(OPENJDK_TARGET_CPU), ppc64) + BUILD_LIBFDLIBM_OPTIMIZATION := HIGH + else ifeq ($(OPENJDK_TARGET_CPU), ppc64le) + BUILD_LIBFDLIBM_OPTIMIZATION := HIGH + else ifeq ($(OPENJDK_TARGET_CPU), s390x) + BUILD_LIBFDLIBM_OPTIMIZATION := HIGH + else ifeq ($(OPENJDK_TARGET_CPU), aarch64) + BUILD_LIBFDLIBM_OPTIMIZATION := HIGH + endif +endif + +LIBFDLIBM_SRC := $(JDK_TOPDIR)/src/java.base/share/native/libfdlibm +LIBFDLIBM_CFLAGS := -I$(LIBFDLIBM_SRC) + +ifneq ($(OPENJDK_TARGET_OS), macosx) + $(eval $(call SetupNativeCompilation,BUILD_LIBFDLIBM, \ + STATIC_LIBRARY := fdlibm, \ + OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \ + SRC := $(LIBFDLIBM_SRC), \ + OPTIMIZATION := $(BUILD_LIBFDLIBM_OPTIMIZATION), \ + CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \ + CFLAGS_windows_debug := -DLOGGING, \ + CFLAGS_aix := -qfloat=nomaf, \ + CFLAGS_linux_ppc64 := -ffp-contract=off, \ + CFLAGS_linux_ppc64le := -ffp-contract=off, \ + CFLAGS_linux_s390x := -ffp-contract=off, \ + CFLAGS_linux_aarch64 := -ffp-contract=off, \ + DISABLED_WARNINGS_gcc := sign-compare, \ + DISABLED_WARNINGS_microsoft := 4146 4244 4018, \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \ + )) + +else + + # On macosx the old build does partial (incremental) linking of fdlibm instead of + # a plain static library. + $(eval $(call SetupNativeCompilation,BUILD_LIBFDLIBM_MAC, \ + LIBRARY := fdlibm, \ + OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \ + SRC := $(LIBFDLIBM_SRC), \ + CFLAGS := $(CFLAGS_JDKLIB) $(LIBFDLIBM_CFLAGS), \ + LDFLAGS := -nostdlib -r -arch x86_64, \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libfdlibm, \ + )) + + BUILD_LIBFDLIBM := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/$(LIBRARY_PREFIX)fdlibm$(STATIC_LIBRARY_SUFFIX) + $(BUILD_LIBFDLIBM): $(BUILD_LIBFDLIBM_MAC) + $(call install-file) + +endif + +########################################################################################## + +ifeq ($(OPENJDK_TARGET_OS), solaris) + ifneq ($(OPENJDK_TARGET_CPU), x86_64) + BUILD_LIBVERIFY_REORDER := $(JDK_TOPDIR)/make/mapfiles/libverify/reorder-$(OPENJDK_TARGET_CPU) + endif +endif + +LIBVERIFY_OPTIMIZATION := HIGH +ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux), ) + ifeq ($(COMPILE_WITH_DEBUG_SYMBOLS), true) + LIBVERIFY_OPTIMIZATION := LOW + endif +endif + +$(eval $(call SetupNativeCompilation,BUILD_LIBVERIFY, \ + LIBRARY := verify, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(JDK_TOPDIR)/src/java.base/share/native/libverify, \ + OPTIMIZATION := $(LIBVERIFY_OPTIMIZATION), \ + CFLAGS := $(CFLAGS_JDKLIB), \ + CFLAGS_ios := -I$(JDK_TOPDIR)/src/java.base/macosx/native/libjli, \ + DISABLED_WARNINGS_microsoft := 4244 4267, \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libverify/mapfile-vers, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LIBS_unix := -ljvm -lc, \ + LIBS_windows := jvm.lib, \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=verify.dll" \ + -D "JDK_INTERNAL_NAME=verify" \ + -D "JDK_FTYPE=0x2L", \ + REORDER := $(BUILD_LIBVERIFY_REORDER), \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libverify, \ +)) + +TARGETS += $(BUILD_LIBVERIFY) + +########################################################################################## + +LIBJAVA_SRC_DIRS := $(call FindSrcDirsForLib, java.base, java) + +LIBJAVA_CFLAGS := $(addprefix -I, $(LIBJAVA_SRC_DIRS)) \ + -I$(JDK_TOPDIR)/src/java.base/share/native/libfdlibm \ + -I$(SUPPORT_OUTPUTDIR)/headers/java.base \ + -DARCHPROPNAME='"$(OPENJDK_TARGET_CPU_OSARCH)"' + +# Make it possible to override this variable +LIBJAVA_MAPFILE ?= $(JDK_TOPDIR)/make/mapfiles/libjava/mapfile-vers + +ifneq (,$(filter $(OPENJDK_TARGET_OS), macosx ios)) + BUILD_LIBJAVA_java_props_md.c_CFLAGS := -x objective-c + BUILD_LIBJAVA_java_props_macosx.c_CFLAGS := -x objective-c +endif + +ifeq ($(OPENJDK_TARGET_OS), solaris) + ifneq ($(OPENJDK_TARGET_CPU), x86_64) + LIBJAVA_REORDER := $(JDK_TOPDIR)/make/mapfiles/libjava/reorder-$(OPENJDK_TARGET_CPU) + endif +endif + +$(eval $(call SetupNativeCompilation,BUILD_LIBJAVA, \ + LIBRARY := java, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBJAVA_SRC_DIRS), \ + OPTIMIZATION := HIGH, \ + CFLAGS := $(CFLAGS_JDKLIB) \ + $(LIBJAVA_CFLAGS), \ + CFLAGS_ios := -I$(JDK_TOPDIR)/src/java.base/macosx/native/libjava, \ + System.c_CFLAGS := $(VERSION_CFLAGS), \ + jdk_util.c_CFLAGS := $(VERSION_CFLAGS), \ + WARNINGS_AS_ERRORS_xlc := false, \ + DISABLED_WARNINGS_gcc := unused-result, \ + DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \ + MAPFILE := $(LIBJAVA_MAPFILE), \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LDFLAGS_android := -L$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/, \ + LDFLAGS_macosx := -L$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/, \ + LDFLAGS_windows := -export:winFileHandleOpen -export:handleLseek \ + -export:getLastErrorString \ + -export:getErrorString -delayload:shell32.dll, \ + LIBS_unix := -ljvm -lverify, \ + LIBS_linux := $(LIBDL) $(BUILD_LIBFDLIBM), \ + LIBS_solaris := -lsocket -lnsl -lscf $(LIBDL) $(BUILD_LIBFDLIBM) -lc, \ + LIBS_aix := $(LIBDL) $(BUILD_LIBFDLIBM) $(LIBM),\ + LIBS_macosx := -lfdlibm \ + -framework CoreFoundation \ + -framework Foundation \ + -framework Security -framework SystemConfiguration, \ + LIBS_ios := -lfdlibm \ + -framework Foundation \ + -framework Security -framework SystemConfiguration, \ + LIBS_windows := jvm.lib $(BUILD_LIBFDLIBM) $(WIN_VERIFY_LIB) \ + shell32.lib delayimp.lib \ + advapi32.lib version.lib, \ + LIBS_android := \ + -lfdlibm, \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=java.dll" \ + -D "JDK_INTERNAL_NAME=java" \ + -D "JDK_FTYPE=0x2L", \ + REORDER := $(LIBJAVA_REORDER), \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjava, \ +)) + +TARGETS += $(BUILD_LIBJAVA) + +$(BUILD_LIBJAVA): $(BUILD_LIBVERIFY) + +$(BUILD_LIBJAVA): $(BUILD_LIBFDLIBM) + +########################################################################################## + +BUILD_LIBZIP_EXCLUDES := +ifeq ($(USE_EXTERNAL_LIBZ), true) + LIBZIP_EXCLUDES += zlib +endif + +BUILD_LIBZIP_REORDER := +ifeq ($(OPENJDK_TARGET_OS), solaris) + ifneq ($(OPENJDK_TARGET_CPU), x86_64) + BUILD_LIBZIP_REORDER := $(JDK_TOPDIR)/make/mapfiles/libzip/reorder-$(OPENJDK_TARGET_CPU) + endif +endif + +ifeq ($(LIBZIP_CAN_USE_MMAP), true) + BUILD_LIBZIP_MMAP := -DUSE_MMAP +endif + +$(eval $(call SetupNativeCompilation,BUILD_LIBZIP, \ + LIBRARY := zip, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + OPTIMIZATION := LOW, \ + SRC := $(JDK_TOPDIR)/src/java.base/share/native/libzip, \ + EXCLUDES := $(LIBZIP_EXCLUDES), \ + CFLAGS := $(CFLAGS_JDKLIB) \ + $(ZLIB_CPPFLAGS) \ + -I$(JDK_TOPDIR)/src/java.base/share/native/libjava \ + -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \ + -I$(SUPPORT_OUTPUTDIR)/headers/java.base, \ + CFLAGS_unix := $(BUILD_LIBZIP_MMAP) -UDEBUG, \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libzip/mapfile-vers, \ + REORDER := $(BUILD_LIBZIP_REORDER), \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LDFLAGS_windows := -export:ZIP_Open -export:ZIP_Close -export:ZIP_FindEntry \ + -export:ZIP_ReadEntry -export:ZIP_GetNextEntry \ + -export:ZIP_InflateFully -export:ZIP_CRC32 -export:ZIP_FreeEntry, \ + LIBS_android := -ljvm -ljava $(LIBZ), \ + LIBS_unix := -ljvm -ljava $(LIBZ), \ + LIBS_solaris := -lc, \ + LIBS_windows := jvm.lib $(WIN_JAVA_LIB), \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=zip.dll" \ + -D "JDK_INTERNAL_NAME=zip" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libzip, \ +)) + +$(BUILD_LIBZIP): $(BUILD_LIBJAVA) + +TARGETS += $(BUILD_LIBZIP) + +########################################################################################## + +JIMAGELIB_CPPFLAGS := \ + -I$(JDK_TOPDIR)/src/java.base/share/native/libjava \ + -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \ + -I$(JDK_TOPDIR)/src/java.base/share/native/libjimage \ + -I$(SUPPORT_OUTPUTDIR)/headers/java.base \ + # + +$(eval $(call SetupNativeCompilation,BUILD_LIBJIMAGE, \ + LIBRARY := jimage, \ + TOOLCHAIN := TOOLCHAIN_LINK_CXX, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + OPTIMIZATION := LOW, \ + SRC := $(JDK_TOPDIR)/src/java.base/share/native/libjimage \ + $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjimage, \ + EXCLUDES := $(LIBJIMAGE_EXCLUDES), \ + CFLAGS := $(CFLAGS_JDKLIB) $(JIMAGELIB_CPPFLAGS), \ + CXXFLAGS := $(CXXFLAGS_JDKLIB) $(JIMAGELIB_CPPFLAGS), \ + CFLAGS_unix := -UDEBUG, \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjimage/mapfile-vers, \ + LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LDFLAGS_windows := -export:JIMAGE_Open -export:JIMAGE_Close \ + -export:JIMAGE_PackageToModule \ + -export:JIMAGE_FindResource -export:JIMAGE_GetResource \ + -export:JIMAGE_ResourceIterator -export:JIMAGE_ResourcePath, \ + LIBS_unix := -ljvm -ldl $(LIBCXX), \ + LIBS_solaris := -lc, \ + LIBS_macosx := -lc++, \ + LIBS_ios := -lc++, \ + LIBS_windows := jvm.lib, \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=jimage.dll" \ + -D "JDK_INTERNAL_NAME=jimage" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjimage, \ +)) + +$(BUILD_LIBJIMAGE): $(BUILD_LIBJAVA) + +TARGETS += $(BUILD_LIBJIMAGE) + +########################################################################################## + +LIBJLI_SRC_DIRS := $(call FindSrcDirsForLib, java.base, jli) + +LIBJLI_CFLAGS := $(CFLAGS_JDKLIB) + +ifeq ($(call check-jvm-variant, zero zeroshark), true) + ERGO_FAMILY := zero +else + ifeq ($(OPENJDK_TARGET_CPU_ARCH), x86) + ERGO_FAMILY := i586 + else + ERGO_FAMILY := $(OPENJDK_TARGET_CPU_ARCH) + endif +endif +LIBJLI_ALL_ERGO := $(wildcard $(addsuffix /ergo_*.c, $(LIBJLI_SRC_DIRS))) +LIBJLI_EXCLUDE_ERGO := $(filter-out %/ergo_$(ERGO_FAMILY).c, $(LIBJLI_ALL_ERGO)) +# If all specialized ergo files are excluded, use generic ergo +ifeq ($(LIBJLI_ALL_ERGO), $(LIBJLI_EXCLUDE_ERGO)) + LIBJLI_CFLAGS += -DUSE_GENERIC_ERGO +endif +LIBJLI_EXCLUDE_FILES += $(notdir $(LIBJLI_EXCLUDE_ERGO)) + +ifneq (,$(filter $(OPENJDK_TARGET_OS), macosx ios)) + LIBJLI_EXCLUDE_FILES += java_md_solinux.c ergo.c ergo_i586.c + + BUILD_LIBJLI_java_md_macosx.c_CFLAGS := -x objective-c + BUILD_LIBJLI_STATIC_java_md_macosx.c_CFLAGS := -x objective-c + + LIBJLI_CFLAGS += -DPACKAGE_PATH=\"$(PACKAGE_PATH)\" +endif + +ifeq ($(OPENJDK_TARGET_OS), windows) + # Staticically link with c runtime on windows. + LIBJLI_CFLAGS := $(filter-out -MD, $(LIBJLI_CFLAGS)) + LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE) + # Supply the name of the C runtime lib. + LIBJLI_CFLAGS += -DMSVCR_DLL_NAME='"$(notdir $(MSVCR_DLL))"' + ifneq ($(MSVCP_DLL), ) + LIBJLI_CFLAGS += -DMSVCP_DLL_NAME='"$(notdir $(MSVCP_DLL))"' + endif +else + LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE)/jli +endif + +LIBJLI_CFLAGS += $(addprefix -I, $(LIBJLI_SRC_DIRS)) + +ifneq ($(USE_EXTERNAL_LIBZ), true) + LIBJLI_CFLAGS += $(ZLIB_CPPFLAGS) + LIBJLI_EXTRA_FILES += \ + $(addprefix $(JDK_TOPDIR)/src/java.base/share/native/libzip/zlib/, \ + inflate.c \ + inftrees.c \ + inffast.c \ + zadler32.c \ + zcrc32.c \ + zutil.c \ + ) +endif + +ifeq ($(OPENJDK_TARGET_OS),android) + ANDROID_LDFLAGS_JDKLIB := \ + $(filter-out -ljava -ljvm, $(LDFLAGS_JDKLIB)) +endif + +$(eval $(call SetupNativeCompilation,BUILD_LIBJLI, \ + LIBRARY := jli, \ + OUTPUT_DIR := $(LIBJLI_OUTPUT_DIR), \ + SRC := $(LIBJLI_SRC_DIRS), \ + EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \ + EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \ + OPTIMIZATION := HIGH, \ + CFLAGS := $(LIBJLI_CFLAGS), \ + CFLAGS_ios := -I$(JDK_TOPDIR)/src/java.base/macosx/native/libjli, \ + DISABLED_WARNINGS_solstudio := \ + E_ASM_DISABLES_OPTIMIZATION \ + E_STATEMENT_NOT_REACHED, \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjli/mapfile-vers, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ + LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \ + LDFLAGS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \ + LDFLAGS_ios := -framework Security, \ + LDFLAGS_windows := \ + -export:JLI_Launch \ + -export:JLI_ManifestIterate \ + -export:JLI_SetTraceLauncher \ + -export:JLI_ReportErrorMessage \ + -export:JLI_ReportErrorMessageSys \ + -export:JLI_ReportMessage \ + -export:JLI_ReportExceptionDescription \ + -export:JLI_MemAlloc \ + -export:JLI_CmdToArgs \ + -export:JLI_GetStdArgc \ + -export:JLI_GetStdArgs \ + -export:JLI_List_new \ + -export:JLI_List_add \ + -export:JLI_StringDup \ + -export:JLI_MemFree \ + -export:JLI_InitArgProcessing \ + -export:JLI_PreprocessArg \ + -export:JLI_AddArgsFromEnvVar \ + -export:JLI_GetAppArgIndex, \ + LIBS_unix := $(LIBZ), \ + LIBS_linux := $(LIBDL) -lc -lpthread, \ + LIBS_android := $(LIBDL) -lc -llog, \ + LIBS_solaris := $(LIBDL) -lc, \ + LIBS_aix := $(LIBDL),\ + LIBS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \ + LIBS_ios := -framework Security, \ + LIBS_windows := advapi32.lib comctl32.lib user32.lib, \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=jli.dll" \ + -D "JDK_INTERNAL_NAME=jli" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli, \ +)) + +ifneq ($(OPENJDK_TARGET_OS), ios) + TARGETS += $(BUILD_LIBJLI) +endif +# On windows, the static library has the same suffix as the import library created by +# with the shared library, so the static library is given a different name. No harm +# in doing it for all platform to reduce complexity. +ifeq ($(OPENJDK_TARGET_OS), windows) + $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \ + STATIC_LIBRARY := jli_static, \ + OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \ + SRC := $(LIBJLI_SRC_DIRS), \ + EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \ + EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \ + OPTIMIZATION := HIGH, \ + CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS), \ + ARFLAGS := $(ARFLAGS), \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static, \ + )) + + TARGETS += $(BUILD_LIBJLI_STATIC) + +else ifeq ($(OPENJDK_TARGET_OS), macosx) + # + # On macosx they do partial (incremental) linking of libjli_static.a + # code it here...rather than add support to NativeCompilation + # as this is first time I see it + $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \ + LIBRARY := jli_static, \ + OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \ + SRC := $(LIBJLI_SRC_DIRS), \ + EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \ + EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \ + OPTIMIZATION := HIGH, \ + CFLAGS := $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \ + LDFLAGS := -nostdlib -r, \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static, \ + )) + + ifeq ($(STATIC_BUILD), true) + TARGETS += $(BUILD_LIBJLI_STATIC) + else + $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static.a: $(BUILD_LIBJLI_STATIC) + $(call install-file) + + TARGETS += $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static.a + endif + +else ifeq ($(OPENJDK_TARGET_OS), aix) + # AIX also requires a static libjli because the compiler doesn't support '-rpath' + $(eval $(call SetupNativeCompilation,BUILD_LIBJLI_STATIC, \ + STATIC_LIBRARY := jli_static, \ + OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \ + SRC := $(LIBJLI_SRC_DIRS), \ + EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \ + EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \ + OPTIMIZATION := HIGH, \ + CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS), \ + ARFLAGS := $(ARFLAGS), \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static)) + + TARGETS += $(BUILD_LIBJLI_STATIC) + +endif diff --git a/openjdk-mobile-aarch64-patch/jdk/make/lib/JavaLauncher.gmk b/openjdk-mobile-aarch64-patch/jdk/make/lib/JavaLauncher.gmk new file mode 100644 index 0000000..572d65a --- /dev/null +++ b/openjdk-mobile-aarch64-patch/jdk/make/lib/JavaLauncher.gmk @@ -0,0 +1,113 @@ +# +# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +include $(SPEC) +include MakeBase.gmk +include JavaCompilation.gmk +include NativeCompilation.gmk +include SetupJavaCompilers.gmk + +# +# Build ios JavaLauncher framework +# + +ifeq (ios,$(OPENJDK_TARGET_OS)) + JAVALAUNCHER_IOS_SRC := $(JDK_TOPDIR)/src/java.base/ios/native/JavaLauncher + JAVALAUNCHER_API_SRC := $(JDK_TOPDIR)/src/java.base/share/native/javalauncher_api + JAVALAUNCHER_INFO_PLIST := \ + $(JDK_TOPDIR)/src/java.base/share/tools/jproject/ios/frameworks/JavaLauncher/JavaLauncher-Info.plist + + JAVALAUNCHER_FRAMEWORK := $(JDK_OUTPUTDIR)/frameworks/JavaLauncher/JavaLauncher.framework + + JAVALAUNCHER_HEADERS := \ + $(JAVALAUNCHER_API_SRC)/javalauncher_api.h \ + $(JAVALAUNCHER_IOS_SRC)/JavaLauncher.h \ + $(JAVALAUNCHER_IOS_SRC)/JavaArgs.h + + JAVALAUNCHER_SOURCES := \ + $(addprefix $(JAVALAUNCHER_API_SRC)/, \ + javalauncher_api.c javalauncher_api.h) \ + $(addprefix $(JAVALAUNCHER_IOS_SRC)/, \ + JavaLauncher.m JavaLauncher.h JavaArgs.m JavaArgs.h) + + $(eval $(call SetupNativeCompilation,BUILD_JAVALAUNCHER, \ + STATIC_LIBRARY := JavaLauncher, \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/java.base/libjavalauncher, \ + OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/java.base/libjavalauncher, \ + SRC := $(JAVALAUNCHER_SOURCES), \ + CFLAGS := $(CFLAGS_JDKLIB) \ + -I$(JAVALAUNCHER_IOS_SRC) \ + -I$(JAVALAUNCHER_API_SRC), \ + WARNINGS_AS_ERRORS_clang := false, \ + DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) + + TARGETS += $(JAVALAUNCHER_FRAMEWORK) + +$(JAVALAUNCHER_FRAMEWORK): $(BUILD_JAVALAUNCHER) + @$(ECHO) $(LOG_INFO) Building JavaLauncher.framework + $(MKDIR) -p $(JAVALAUNCHER_FRAMEWORK)/Headers + $(CP) $(JAVALAUNCHER_HEADERS) $(JAVALAUNCHER_FRAMEWORK)/Headers + $(CP) $(JAVALAUNCHER_INFO_PLIST) $(JAVALAUNCHER_FRAMEWORK)/Info.plist + $(CP) $(SUPPORT_OUTPUTDIR)/native/java.base/libjavalauncher/$(LIBRARY_PREFIX)JavaLauncher$(STATIC_LIBRARY_SUFFIX) \ + $(JAVALAUNCHER_FRAMEWORK)/JavaLauncher +endif +# +# Build android JavaLauncher jar file. +# +ifeq ($(OPENJDK_TARGET_OS),android) + OCLDVK_SRCDIR := $(JDK_TOPDIR)/src/java.base/android/classes/com/oracle/dalvik/javalauncher + OCLDVK_OUTPUTDIR := $(SUPPORT_OUTPUTDIR)/ocldvk + OCLDVK_CLASSES := $(OCLDVK_OUTPUTDIR)/classes + OCLDVK_JAR := $(OCLDVK_OUTPUTDIR)/lib/ext/ocldvk.jar + + $(eval $(call SetupJavaCompilation,BUILD_OCLDVK_JAR, \ + SETUP := GENERATE_JAVA5_BYTECODE, \ + SRC := $(OCLDVK_SRCDIR), \ + JAR := $(OCLDVK_JAR), \ + BIN := $(OCLDVK_CLASSES))) + + TARGETS += $(BUILD_OCLDVK_JAR) + + OCLDVK := $(JDK_TOPDIR)/src/java.base/android/native/libocldvk + JAVALAUNCHER_API := $(JDK_TOPDIR)/src/java.base/share/native/javalauncher_api + + $(eval $(call SetupNativeCompilation, BUILD_LIBOCLDVK, \ + LIBRARY := ocldvk, \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/java.base/libocldvk, \ + OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/java.base/libocldvk, \ + SRC := $(OCLDVK) $(OCLDVK)/net $(JAVALAUNCHER_API), \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libocldvk/mapfile-vers, \ + LDFLAGS := $(LDFLAGS_JDKLIB), \ + LIBS := -llog, \ + CFLAGS := $(CFLAGS_JDKLIB) \ + $(OPENJDK_TARGET_CPU_JLI_CFLAGS) \ + -I$(OCLDVK)/javalauncher \ + -I$(JAVALAUNCHER_API) \ + -I$(OCLDVK)/net, \ + DEBUG_SYMBOLS := $(DEBUG_ALL_BINARIES))) + + TARGETS += $(BUILD_LIBOCLDVK) + +endif diff --git a/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-java.desktop.gmk b/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-java.desktop.gmk new file mode 100644 index 0000000..8b6d426 --- /dev/null +++ b/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-java.desktop.gmk @@ -0,0 +1,37 @@ +# +# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +include LibCommon.gmk + +# Prepare the find cache. +$(eval $(call FillCacheFind, $(wildcard $(JDK_TOPDIR)/src/java.desktop/*/native \ + $(JDK_TOPDIR)/src/*/java.desktop/*/native))) + +include LibosxLibraries.gmk +include PlatformLibraries.gmk +ifeq (,$(filter $(OPENJDK_TARGET_OS), android ios)) + include Awt2dLibraries.gmk +endif +include SoundLibraries.gmk diff --git a/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-java.instrument.gmk b/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-java.instrument.gmk new file mode 100644 index 0000000..98414ee --- /dev/null +++ b/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-java.instrument.gmk @@ -0,0 +1,101 @@ +# +# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +include LibCommon.gmk + +# Hook to include the corresponding custom file, if present. +$(eval $(call IncludeCustomExtension, jdk, lib/Lib-java.instrument.gmk)) + +################################################################################ + +LIBINSTRUMENT_SRC := $(JDK_TOPDIR)/src/java.instrument/share/native/libinstrument \ + $(JDK_TOPDIR)/src/java.instrument/$(OPENJDK_TARGET_OS_TYPE)/native/libinstrument \ + # +LIBINSTRUMENT_CFLAGS := $(CFLAGS_JDKLIB) \ + $(addprefix -I, $(LIBINSTRUMENT_SRC)) \ + -I$(SUPPORT_OUTPUTDIR)/headers/java.instrument \ + -I$(JDK_TOPDIR)/src/java.base/share/native/libjli \ + -I$(JDK_TOPDIR)/src/java.base/share/native/libjava \ + # + +ifeq ($(OPENJDK_TARGET_OS), windows) + # Statically link the C runtime so that there are not dependencies on modules + # not on the search patch when invoked from the Windows system directory + # (or elsewhere). + LIBINSTRUMENT_CFLAGS := $(filter-out -MD, $(LIBINSTRUMENT_CFLAGS)) + # equivalent of strcasecmp is stricmp on Windows + LIBINSTRUMENT_CFLAGS += -Dstrcasecmp=stricmp +endif + +$(eval $(call SetupNativeCompilation,BUILD_LIBINSTRUMENT, \ + LIBRARY := instrument, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBINSTRUMENT_SRC), \ + OPTIMIZATION := LOW, \ + CFLAGS := $(LIBINSTRUMENT_CFLAGS), \ + CFLAGS_debug := -DJPLIS_LOGGING, \ + CFLAGS_release := -DNO_JPLIS_LOGGING, \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libinstrument/mapfile-vers, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN) \ + $(LIBINSTRUMENT_LDFLAGS), \ + LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/jli) \ + -L$(call FindLibDirForModule, java.base)/jli, \ + LDFLAGS_android := $(call SET_SHARED_LIBRARY_ORIGIN,/jli) \ + -L$(call FindLibDirForModule, java.base)/jli, \ + LDFLAGS_solaris := $(call SET_SHARED_LIBRARY_ORIGIN,/jli) \ + -L$(call FindLibDirForModule, java.base)/jli, \ + LDFLAGS_macosx := -Wl$(COMMA)-all_load, \ + LDFLAGS_aix := -L$(SUPPORT_OUTPUTDIR)/native/java.base, \ + LIBS := $(JDKLIB_LIBS), \ + LIBS_unix := -ljava -ljvm $(LIBZ), \ + LIBS_linux := -ljli $(LIBDL), \ + LIBS_android := -ljli $(LIBDL), \ + LIBS_solaris := -ljli $(LIBDL), \ + LIBS_aix := -liconv -ljli_static $(LIBDL), \ + LIBS_macosx := -liconv -framework Cocoa -framework Security \ + -framework ApplicationServices \ + $(SUPPORT_OUTPUTDIR)/native/java.base/libjli_static.a, \ + LIBS_ios := -liconv $(LIBZ), \ + LIBS_windows := jvm.lib $(WIN_JAVA_LIB) advapi32.lib \ + $(SUPPORT_OUTPUTDIR)/native/java.base/jli_static.lib, \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=instrument.dll" \ + -D "JDK_INTERNAL_NAME=instrument" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libinstrument, \ +)) + +ifneq (, $(findstring $(OPENJDK_TARGET_OS), macosx windows aix)) + $(BUILD_LIBINSTRUMENT): $(SUPPORT_OUTPUTDIR)/native/java.base/$(LIBRARY_PREFIX)jli_static$(STATIC_LIBRARY_SUFFIX) +else + $(BUILD_LIBINSTRUMENT): $(call FindLib, java.base, jli, /jli) +endif +$(BUILD_LIBINSTRUMENT): $(BUILD_LIBJAVA) +ifneq ($(OPENJDK_TARGET_OS), ios) + TARGETS += $(BUILD_LIBINSTRUMENT) +endif +################################################################################ diff --git a/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-java.management.gmk b/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-java.management.gmk new file mode 100644 index 0000000..1847e2e --- /dev/null +++ b/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-java.management.gmk @@ -0,0 +1,72 @@ +# +# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +include LibCommon.gmk + +# Hook to include the corresponding custom file, if present. +$(eval $(call IncludeCustomExtension, jdk, lib/Lib-java.management.gmk)) + +################################################################################ + +LIBMANAGEMENT_SRC += $(JDK_TOPDIR)/src/java.management/share/native/libmanagement +LIBMANAGEMENT_CFLAGS := -I$(JDK_TOPDIR)/src/java.management/share/native/include \ + $(addprefix -I,$(LIBMANAGEMENT_SRC)) \ + -I$(SUPPORT_OUTPUTDIR)/headers/java.management \ + $(LIBJAVA_HEADER_FLAGS) \ + # + +LIBMANAGEMENT_OPTIMIZATION := HIGH +ifneq ($(findstring $(OPENJDK_TARGET_OS), solaris linux), ) + ifeq ($(COMPILE_WITH_DEBUG_SYMBOLS), true) + LIBMANAGEMENT_OPTIMIZATION := LOW + endif +endif + +$(eval $(call SetupNativeCompilation,BUILD_LIBMANAGEMENT, \ + LIBRARY := management, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBMANAGEMENT_SRC), \ + OPTIMIZATION := $(LIBMANAGEMENT_OPTIMIZATION), \ + CFLAGS := $(CFLAGS_JDKLIB) $(LIBMANAGEMENT_CFLAGS), \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libmanagement/mapfile-vers, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LIBS := $(JDKLIB_LIBS), \ + LIBS_solaris := -lkstat, \ + LIBS_aix := -lperfstat,\ + LIBS_windows := jvm.lib psapi.lib $(WIN_JAVA_LIB) advapi32.lib, \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=management.dll" \ + -D "JDK_INTERNAL_NAME=management" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libmanagement, \ +)) + +$(BUILD_LIBMANAGEMENT): $(call FindLib, java.base, java) + +TARGETS += $(BUILD_LIBMANAGEMENT) + +################################################################################ diff --git a/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-java.prefs.gmk b/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-java.prefs.gmk new file mode 100644 index 0000000..f6f15fd --- /dev/null +++ b/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-java.prefs.gmk @@ -0,0 +1,65 @@ +# +# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +include LibCommon.gmk + +################################################################################ + +ifeq ($(OPENJDK_TARGET_OS), macosx) + LIBPREF_SRC_DIRS := $(JDK_TOPDIR)/src/java.prefs/macosx/native/libprefs +else + LIBPREF_SRC_DIRS := $(JDK_TOPDIR)/src/java.prefs/$(OPENJDK_TARGET_OS_TYPE)/native/libprefs +endif + +$(eval $(call SetupNativeCompilation,BUILD_LIBPREFS, \ + LIBRARY := prefs, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBPREF_SRC_DIRS), \ + OPTIMIZATION := HIGH, \ + CFLAGS := $(CFLAGS_JDKLIB) $(addprefix -I, $(LIBPREF_SRC_DIRS)) \ + $(LIBJAVA_HEADER_FLAGS), \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libprefs/mapfile-vers, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LIBS_unix := -ljvm, \ + LIBS_linux := -ljava, \ + LIBS_android := -ljava, \ + LIBS_solaris := -ljava -lc, \ + LIBS_aix := -ljava, \ + LIBS_macosx := -framework CoreFoundation -framework Foundation, \ + LIBS_windows := advapi32.lib jvm.lib $(WIN_JAVA_LIB), \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=prefs.dll" \ + -D "JDK_INTERNAL_NAME=prefs" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libprefs, \ +)) + +$(BUILD_LIBPREFS): $(call FindLib, java.base, java) +ifneq ($(OPENJDK_TARGET_OS), ios) + TARGETS += $(BUILD_LIBPREFS) +endif +################################################################################ diff --git a/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-jdk.attach.gmk b/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-jdk.attach.gmk new file mode 100644 index 0000000..05bc9b3 --- /dev/null +++ b/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-jdk.attach.gmk @@ -0,0 +1,71 @@ +# +# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +include LibCommon.gmk + +################################################################################ + +ifeq ($(OPENJDK_TARGET_OS), windows) + # In (at least) VS2013 and later, -DPSAPI_VERSION=1 is needed to generate + # a binary that is compatible with windows versions older than 7/2008R2. + # See MSDN documentation for GetProcessMemoryInfo for more information. + LIBATTACH_CFLAGS := -DPSAPI_VERSION=1 +endif + +ifneq ($(OPENJDK_TARGET_OS), android) + LIBATTACH_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libattach/mapfile-$(OPENJDK_TARGET_OS) +else + LIBATTACH_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libattach/mapfile-linux +endif + +$(eval $(call SetupNativeCompilation,BUILD_LIBATTACH, \ + LIBRARY := attach, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(call FindSrcDirsForLib, jdk.attach, attach), \ + OPTIMIZATION := LOW, \ + CFLAGS := $(CFLAGS_JDKLIB) \ + -I$(SUPPORT_OUTPUTDIR)/headers/jdk.attach \ + $(LIBJAVA_HEADER_FLAGS) $(LIBATTACH_CFLAGS), \ + CFLAGS_windows := /Gy, \ + MAPFILE := $(LIBATTACH_MAPFILE), \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=attach.dll" \ + -D "JDK_INTERNAL_NAME=attach" \ + -D "JDK_FTYPE=0x2L", \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LDFLAGS_windows := -order:@$(JDK_TOPDIR)/make/mapfiles/libattach/reorder-windows-$(OPENJDK_TARGET_CPU), \ + LIBS := $(JDKLIB_LIBS), \ + LIBS_solaris := -ldoor, \ + LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib psapi.lib, \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libattach, \ +)) + +$(BUILD_LIBATTACH): $(call FindLib, java.base, java) + +TARGETS += $(BUILD_LIBATTACH) + +################################################################################ diff --git a/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-jdk.jdwp.agent.gmk b/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-jdk.jdwp.agent.gmk new file mode 100644 index 0000000..6d43396 --- /dev/null +++ b/openjdk-mobile-aarch64-patch/jdk/make/lib/Lib-jdk.jdwp.agent.gmk @@ -0,0 +1,125 @@ +# +# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +include LibCommon.gmk + +################################################################################ + +LIBDT_SOCKET_SRC := $(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/libdt_socket \ + $(JDK_TOPDIR)/src/jdk.jdwp.agent/$(OPENJDK_TARGET_OS_TYPE)/native/libdt_socket +LIBDT_SOCKET_CPPFLAGS := \ + $(addprefix -I, $(LIBDT_SOCKET_SRC)) \ + -I$(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/libjdwp/export \ + -I$(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/libjdwp \ + -I$(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/include \ + # + +$(eval $(call SetupNativeCompilation,BUILD_LIBDT_SOCKET, \ + LIBRARY := dt_socket, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBDT_SOCKET_SRC), \ + OPTIMIZATION := LOW, \ + CFLAGS := $(CFLAGS_JDKLIB) -DUSE_MMAP \ + $(LIBDT_SOCKET_CPPFLAGS), \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libdt_socket/mapfile-vers, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LDFLAGS_windows := -export:jdwpTransport_OnLoad, \ + LIBS_linux := -lpthread, \ + LIBS_solaris := -lnsl -lsocket -lc, \ + LIBS_windows := $(JDKLIB_LIBS) ws2_32.lib, \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=dt_socket.dll" \ + -D "JDK_INTERNAL_NAME=dt_socket" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libdt_socket, \ +)) + +$(BUILD_LIBDT_SOCKET): $(call FindLib, java.base, java) + +# Include socket transport with JDWP agent to allow for remote debugging +TARGETS += $(BUILD_LIBDT_SOCKET) + +################################################################################ + +LIBJDWP_SRC := $(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/libjdwp \ + $(JDK_TOPDIR)/src/jdk.jdwp.agent/$(OPENJDK_TARGET_OS_TYPE)/native/libjdwp +LIBJDWP_CPPFLAGS := \ + -I$(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/libjdwp/export \ + -I$(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/include \ + $(addprefix -I, $(LIBJDWP_SRC)) + +# JDWP_LOGGING causes log messages to be compiled into the library. +$(eval $(call SetupNativeCompilation,BUILD_LIBJDWP, \ + LIBRARY := jdwp, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBJDWP_SRC), \ + OPTIMIZATION := LOW, \ + CFLAGS := $(CFLAGS_JDKLIB) -DJDWP_LOGGING \ + $(LIBJDWP_CPPFLAGS) \ + -I$(SUPPORT_OUTPUTDIR)/headers/jdk.jdwp.agent, \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjdwp/mapfile-vers, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LDFLAGS_android := $(LDFLAGS_JDKLIB), \ + LIBS := $(JDKLIB_LIBS), \ + LIBS_linux := $(LIBDL), \ + LIBS_solaris := $(LIBDL), \ + LIBS_macosx := -liconv, \ + LIBS_ios := -liconv, \ + LIBS_aix := -liconv, \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=jdwp.dll" \ + -D "JDK_INTERNAL_NAME=jdwp" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjdwp, \ +)) + +$(BUILD_LIBJDWP): $(call FindLib, java.base, java) + +TARGETS += $(BUILD_LIBJDWP) + +################################################################################ +ifeq ($(STATIC_BUILD), true) + JDK_JDWP_AGENT_EXPORT_SYMBOLS_SRC := \ + $(SUPPORT_OUTPUTDIR)/modules_libs/jdk.jdwp.agent$(OPENJDK_TARGET_CPU_LIBDIR)/$(LIBRARY_PREFIX)dt_socket.symbols \ + $(SUPPORT_OUTPUTDIR)/modules_libs/jdk.jdwp.agent$(OPENJDK_TARGET_CPU_LIBDIR)/$(LIBRARY_PREFIX)jdwp.symbols + + JDK_JDWP_AGENT_EXPORT_SYMBOL_FILE := $(SUPPORT_OUTPUTDIR)/modules_libs/jdk.jdwp.agent/jdk.jdwp.agent.symbols + + $(JDK_JDWP_AGENT_EXPORT_SYMBOL_FILE): $(JDK_JDWP_AGENT_EXPORT_SYMBOLS_SRC) + $(call LogInfo, Generating jdk.jdwp.agent symbols file) + $(CAT) $^ > $@ + + # The individual symbol files is generated when the respective lib is built + $(JDK_JDWP_AGENT_EXPORT_SYMBOLS_SRC): $(BUILD_LIBDT_SOCKET) $(BUILD_LIBJDWP) + + TARGETS += $(JDK_JDWP_AGENT_EXPORT_SYMBOL_FILE) + +endif + +################################################################################ diff --git a/openjdk-mobile-aarch64-patch/jdk/make/lib/LibCommon.gmk b/openjdk-mobile-aarch64-patch/jdk/make/lib/LibCommon.gmk new file mode 100644 index 0000000..b004b0a --- /dev/null +++ b/openjdk-mobile-aarch64-patch/jdk/make/lib/LibCommon.gmk @@ -0,0 +1,94 @@ +# +# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +include NativeCompilation.gmk + +# Hook to include the corresponding custom file, if present. +$(eval $(call IncludeCustomExtension, jdk, lib/LibCommon.gmk)) + +################################################################################ + +GLOBAL_VERSION_INFO_RESOURCE := $(JDK_TOPDIR)/src/java.base/windows/native/common/version.rc + +# Absolute paths to lib files on windows for use in LDFLAGS. Should figure out a more +# elegant solution to this. +WIN_JAVA_LIB := $(SUPPORT_OUTPUTDIR)/native/java.base/libjava/java.lib + +ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx windows), ) + DISABLE_MAPFILES := true +endif + +################################################################################ +# Find the default set of src dirs for a native library. +# Param 1 - module name +# Param 2 - library name +ifeq ($(OPENJDK_TARGET_OS), android) + FindSrcDirsForLib = \ + $(call uniq, $(wildcard \ + $(JDK_TOPDIR)/src/$(strip $1)/linux/native/lib$(strip $2) \ + $(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS_TYPE)/native/lib$(strip $2) \ + $(JDK_TOPDIR)/src/$(strip $1)/share/native/lib$(strip $2))) +else ifeq ($(OPENJDK_TARGET_OS), ios) + FindSrcDirsForLib = \ + $(call uniq, $(wildcard \ + $(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS)/native/lib$(strip $2) \ + $(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS_TYPE)/native/lib$(strip $2) \ + $(JDK_TOPDIR)/src/$(strip $1)/macosx/native/lib$(strip $2) \ + $(JDK_TOPDIR)/src/$(strip $1)/share/native/lib$(strip $2))) +else + FindSrcDirsForLib += \ + $(call uniq, $(wildcard \ + $(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS)/native/lib$(strip $2) \ + $(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS_TYPE)/native/lib$(strip $2) \ + $(JDK_TOPDIR)/src/$(strip $1)/share/native/lib$(strip $2))) + +endif +################################################################################ +# Find a library +# Param 1 - module name +# Param 2 - library name +# Param 3 - subdir for library +FindLib = \ + $(call FindLibDirForModule, \ + $(strip $1))$(strip $3)/$(LIBRARY_PREFIX)$(strip $2)$(SHARED_LIBRARY_SUFFIX) + + +################################################################################ +# Define the header include flags needed to compile against it. +LIBJAVA_HEADER_FLAGS := $(addprefix -I, $(call FindSrcDirsForLib, java.base, java)) + +# Put the libraries here. +INSTALL_LIBRARIES_HERE := $(call FindLibDirForModule, $(MODULE)) + +################################################################################ + +# Define it here since there are multiple uses. +ifeq ($(USE_EXTERNAL_LIBZ), true) + LIBZ := -lz +else + ZLIB_CPPFLAGS := -I$(JDK_TOPDIR)/src/java.base/share/native/libzip/zlib +endif + +############################################################################### diff --git a/openjdk-mobile-aarch64-patch/jdk/make/lib/NetworkingLibraries.gmk b/openjdk-mobile-aarch64-patch/jdk/make/lib/NetworkingLibraries.gmk new file mode 100644 index 0000000..4e1f4d0 --- /dev/null +++ b/openjdk-mobile-aarch64-patch/jdk/make/lib/NetworkingLibraries.gmk @@ -0,0 +1,65 @@ +# +# Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +LIBNET_SRC_DIRS := $(call FindSrcDirsForLib, java.base, net) + +ifeq ($(OPENJDK_TARGET_OS), ios) + BUILD_LIBNET_EXFILES += DefaultProxySelector.c +endif +$(eval $(call SetupNativeCompilation,BUILD_LIBNET, \ + LIBRARY := net, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBNET_SRC_DIRS), \ + EXCLUDE_FILES := $(BUILD_LIBNET_EXFILES), \ + OPTIMIZATION := LOW, \ + CFLAGS := $(CFLAGS_JDKLIB) -I$(SUPPORT_OUTPUTDIR)/headers/java.base \ + $(LIBJAVA_HEADER_FLAGS) $(addprefix -I, $(LIBNET_SRC_DIRS)), \ + DISABLED_WARNINGS_gcc := format-nonliteral, \ + DISABLED_WARNINGS_clang := parentheses-equality constant-logical-operand, \ + DISABLED_WARNINGS_microsoft := 4244 4047 4133 4996, \ + DISABLED_WARNINGS_solstudio := E_ARG_INCOMPATIBLE_WITH_ARG_L, \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnet/mapfile-vers, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LDFLAGS_windows := -delayload:secur32.dll -delayload:iphlpapi.dll, \ + LIBS_unix := -ljvm -ljava, \ + LIBS_android := -llog, \ + LIBS_linux := $(LIBDL) -lpthread, \ + LIBS_solaris := -lnsl -lsocket $(LIBDL) -lc, \ + LIBS_aix := $(LIBDL),\ + LIBS_windows := ws2_32.lib jvm.lib secur32.lib iphlpapi.lib winhttp.lib \ + delayimp.lib $(WIN_JAVA_LIB) advapi32.lib, \ + LIBS_macosx := -framework CoreFoundation -framework CoreServices, \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=net.dll" \ + -D "JDK_INTERNAL_NAME=net" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libnet, \ +)) + +$(BUILD_LIBNET): $(BUILD_LIBJAVA) + +TARGETS += $(BUILD_LIBNET) diff --git a/openjdk-mobile-aarch64-patch/jdk/make/lib/NioLibraries.gmk b/openjdk-mobile-aarch64-patch/jdk/make/lib/NioLibraries.gmk new file mode 100644 index 0000000..0d66c45 --- /dev/null +++ b/openjdk-mobile-aarch64-patch/jdk/make/lib/NioLibraries.gmk @@ -0,0 +1,102 @@ +# +# Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +BUILD_LIBNIO_SRC := \ + $(JDK_TOPDIR)/src/java.base/share/native/libnio \ + $(JDK_TOPDIR)/src/java.base/share/native/libnio/ch \ + $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libnio \ + $(sort $(wildcard \ + $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libnio/ch \ + $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libnio/fs \ + $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/native/libnio/ch \ + $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/native/libnio/fs)) \ + # + +ifeq ($(OPENJDK_TARGET_OS), android) + BUILD_LIBNIO_SRC += $(JDK_TOPDIR)/src/java.base/linux/native/libnio/ch \ + $(JDK_TOPDIR)/src/java.base/linux/native/libnio/fs +endif + +ifeq ($(OPENJDK_TARGET_OS), ios) + BUILD_LIBNIO_SRC += $(JDK_TOPDIR)/src/java.base/macosx/native/libnio/ch \ + $(JDK_TOPDIR)/src/java.base/macosx/native/libnio/fs + BUILD_LIBNIO_EXFILES += UTIFileTypeDetector.c +endif + +BUILD_LIBNIO_CFLAGS := \ + $(addprefix -I, $(BUILD_LIBNIO_SRC)) \ + -I$(SUPPORT_OUTPUTDIR)/headers/java.base \ + $(LIBJAVA_HEADER_FLAGS) \ + $(addprefix -I, $(BUILD_LIBNET_SRC)) + +ifneq (,$(filter android linux, $(OPENJDK_TARGET_OS))) + BUILD_LIBNIO_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnio/mapfile-linux +endif + +ifneq (,$(filter ios macosx, $(OPENJDK_TARGET_OS))) + BUILD_LIBNIO_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS) +endif + +ifeq ($(OPENJDK_TARGET_OS), solaris) + BUILD_LIBNIO_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS) +endif + +ifeq ($(OPENJDK_TARGET_OS), aix) + BUILD_LIBNIO_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS) +endif + +$(eval $(call SetupNativeCompilation,BUILD_LIBNIO, \ + LIBRARY := nio, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(BUILD_LIBNIO_SRC), \ + EXCLUDE_FILES := $(BUILD_LIBNIO_EXFILES), \ + OPTIMIZATION := HIGH, \ + WARNINGS_AS_ERRORS_xlc := false, \ + CFLAGS := $(CFLAGS_JDKLIB) \ + $(BUILD_LIBNIO_CFLAGS), \ + MAPFILE := $(BUILD_LIBNIO_MAPFILE), \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LIBS_unix := -ljava -lnet, \ + LIBS_linux := -lpthread $(LIBDL), \ + LIBS_solaris := -ljvm -lsocket -lposix4 $(LIBDL) \ + -lsendfile -lc, \ + LIBS_aix := $(LIBDL), \ + LIBS_macosx := \ + -framework CoreFoundation -framework CoreServices, \ + LIBS_windows := jvm.lib ws2_32.lib $(WIN_JAVA_LIB) \ + $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libnet/net.lib \ + advapi32.lib, \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=nio.dll" \ + -D "JDK_INTERNAL_NAME=nio" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libnio, \ +)) + +TARGETS += $(BUILD_LIBNIO) + +$(BUILD_LIBNIO): $(BUILD_LIBNET) diff --git a/openjdk-mobile-aarch64-patch/jdk/make/lib/SoundLibraries.gmk b/openjdk-mobile-aarch64-patch/jdk/make/lib/SoundLibraries.gmk new file mode 100644 index 0000000..9c1b864 --- /dev/null +++ b/openjdk-mobile-aarch64-patch/jdk/make/lib/SoundLibraries.gmk @@ -0,0 +1,219 @@ +# +# Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +LIBJSOUND_SRC_DIRS := \ + $(JDK_TOPDIR)/src/java.desktop/share/native/libjsound \ + $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libjsound \ + # +LIBJSOUND_CFLAGS := \ + -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \ + $(LIBJAVA_HEADER_FLAGS) \ + $(foreach dir, $(LIBJSOUND_SRC_DIRS), -I$(dir)) \ + # + +LIBJSOUND_SRC_FILES := Utilities.c Platform.c + +EXTRA_SOUND_JNI_LIBS := + +LIBJSOUND_MIDIFILES := \ + MidiInDevice.c \ + MidiInDeviceProvider.c \ + MidiOutDevice.c \ + MidiOutDeviceProvider.c \ + PlatformMidi.c + +# files needed for ports +LIBJSOUND_PORTFILES := \ + PortMixerProvider.c \ + PortMixer.c + +# files needed for direct audio +LIBJSOUND_DAUDIOFILES := \ + DirectAudioDeviceProvider.c \ + DirectAudioDevice.c + +ifeq ($(OPENJDK_TARGET_OS), windows) + EXTRA_SOUND_JNI_LIBS += jsoundds + LIBJSOUND_CFLAGS += -DX_PLATFORM=X_WINDOWS \ + -DUSE_PLATFORM_MIDI_OUT=TRUE \ + -DUSE_PLATFORM_MIDI_IN=TRUE \ + -DUSE_PORTS=TRUE + LIBJSOUND_SRC_FILES += \ + PLATFORM_API_WinOS_MidiIn.cpp \ + PLATFORM_API_WinOS_MidiOut.c \ + PLATFORM_API_WinOS_Util.c \ + PLATFORM_API_WinOS_Ports.c + LIBJSOUND_SRC_FILES += $(LIBJSOUND_MIDIFILES) + LIBJSOUND_SRC_FILES += $(LIBJSOUND_PORTFILES) +endif # OPENJDK_TARGET_OS windows + +ifeq ($(OPENJDK_TARGET_OS), linux) + EXTRA_SOUND_JNI_LIBS += jsoundalsa + LIBJSOUND_CFLAGS += -DX_PLATFORM=X_LINUX +endif # OPENJDK_TARGET_OS linux + +ifeq ($(OPENJDK_TARGET_OS), aix) + LIBJSOUND_CFLAGS += -DX_PLATFORM=X_AIX +endif # OPENJDK_TARGET_OS aix + +ifeq ($(OPENJDK_TARGET_OS), android) + LIBJSOUND_CFLAGS += -DX_PLATFORM=X_LINUX +endif + +ifeq ($(OPENJDK_TARGET_OS), macosx) + LIBJSOUND_TOOLCHAIN := TOOLCHAIN_LINK_CXX + LIBJSOUND_CFLAGS += -DX_PLATFORM=X_MACOSX \ + -DUSE_PORTS=TRUE \ + -DUSE_DAUDIO=TRUE \ + -DUSE_PLATFORM_MIDI_OUT=TRUE \ + -DUSE_PLATFORM_MIDI_IN=TRUE + LIBJSOUND_SRC_DIRS += $(JDK_TOPDIR)/src/java.desktop/macosx/native/libjsound + LIBJSOUND_SRC_FILES += \ + PLATFORM_API_MacOSX_Utils.cpp \ + PLATFORM_API_MacOSX_PCM.cpp \ + PLATFORM_API_MacOSX_Ports.cpp \ + PLATFORM_API_MacOSX_MidiIn.c \ + PLATFORM_API_MacOSX_MidiOut.c \ + PLATFORM_API_MacOSX_MidiUtils.c + LIBJSOUND_SRC_FILES += $(LIBJSOUND_MIDIFILES) + LIBJSOUND_SRC_FILES += $(LIBJSOUND_PORTFILES) + LIBJSOUND_SRC_FILES += $(LIBJSOUND_DAUDIOFILES) +endif # OPENJDK_TARGET_OS macosx + +ifeq ($(OPENJDK_TARGET_OS), solaris) + LIBJSOUND_CFLAGS += -DX_PLATFORM=X_SOLARIS \ + -DUSE_PORTS=TRUE \ + -DUSE_DAUDIO=TRUE + LIBJSOUND_SRC_FILES += \ + PLATFORM_API_SolarisOS_Utils.c \ + PLATFORM_API_SolarisOS_Ports.c \ + PLATFORM_API_SolarisOS_PCM.c + LIBJSOUND_SRC_FILES += $(LIBJSOUND_MIDIFILES) + LIBJSOUND_SRC_FILES += $(LIBJSOUND_PORTFILES) + LIBJSOUND_SRC_FILES += $(LIBJSOUND_DAUDIOFILES) +endif # OPENJDK_TARGET_OS solaris + +LIBJSOUND_CFLAGS += -DEXTRA_SOUND_JNI_LIBS='"$(EXTRA_SOUND_JNI_LIBS)"' + +$(eval $(call SetupNativeCompilation,BUILD_LIBJSOUND, \ + LIBRARY := jsound, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBJSOUND_SRC_DIRS), \ + INCLUDE_FILES := $(LIBJSOUND_SRC_FILES), \ + TOOLCHAIN := $(LIBJSOUND_TOOLCHAIN), \ + OPTIMIZATION := LOW, \ + CFLAGS := $(CFLAGS_JDKLIB) \ + $(LIBJSOUND_CFLAGS), \ + CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBJSOUND_CFLAGS), \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjsound/mapfile-vers, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LIBS_unix := -ljava -ljvm, \ + LIBS_solaris := -lc, \ + LIBS_macosx := -framework CoreAudio -framework CoreFoundation \ + -framework CoreServices -framework AudioUnit $(LIBCXX) \ + -framework CoreMIDI -framework AudioToolbox, \ + LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib winmm.lib, \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=jsound.dll" \ + -D "JDK_INTERNAL_NAME=jsound" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjsound, \ +)) + +$(BUILD_LIBJSOUND): $(BUILD_LIBJAVA) + +ifneq ($(OPENJDK_TARGET_OS), ios) + TARGETS += $(BUILD_LIBJSOUND) +endif +########################################################################################## + +ifneq ($(filter jsoundalsa, $(EXTRA_SOUND_JNI_LIBS)), ) + + $(eval $(call SetupNativeCompilation,BUILD_LIBJSOUNDALSA, \ + LIBRARY := jsoundalsa, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBJSOUND_SRC_DIRS), \ + INCLUDE_FILES := Utilities.c $(LIBJSOUND_MIDIFILES) $(LIBJSOUND_PORTFILES) \ + $(LIBJSOUND_DAUDIOFILES) \ + PLATFORM_API_LinuxOS_ALSA_CommonUtils.c \ + PLATFORM_API_LinuxOS_ALSA_PCM.c \ + PLATFORM_API_LinuxOS_ALSA_PCMUtils.c \ + PLATFORM_API_LinuxOS_ALSA_MidiIn.c \ + PLATFORM_API_LinuxOS_ALSA_MidiOut.c \ + PLATFORM_API_LinuxOS_ALSA_MidiUtils.c \ + PLATFORM_API_LinuxOS_ALSA_Ports.c, \ + OPTIMIZATION := LOW, \ + CFLAGS := $(CFLAGS_JDKLIB) $(ALSA_CFLAGS) \ + $(LIBJSOUND_CFLAGS) \ + -DUSE_DAUDIO=TRUE \ + -DUSE_PORTS=TRUE \ + -DUSE_PLATFORM_MIDI_OUT=TRUE \ + -DUSE_PLATFORM_MIDI_IN=TRUE, \ + MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjsoundalsa/mapfile-vers, \ + LDFLAGS := $(LDFLAGS_JDKLIB) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LIBS := $(ALSA_LIBS) -ljava -ljvm, \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjsoundalsa, \ + )) + + $(BUILD_LIBJSOUNDALSA): $(BUILD_LIBJAVA) + + ifneq ($(OPENJDK_TARGET_OS), ios) + TARGETS += $(BUILD_LIBJSOUNDALSA) + endif +endif + +########################################################################################## + +ifneq ($(filter jsoundds, $(EXTRA_SOUND_JNI_LIBS)), ) + + $(eval $(call SetupNativeCompilation,BUILD_LIBJSOUNDDS, \ + LIBRARY := jsoundds, \ + OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \ + SRC := $(LIBJSOUND_SRC_DIRS), \ + INCLUDE_FILES := Utilities.c $(LIBJSOUND_DAUDIOFILES) \ + PLATFORM_API_WinOS_DirectSound.cpp, \ + OPTIMIZATION := LOW, \ + CFLAGS := $(CFLAGS_JDKLIB) \ + $(LIBJSOUND_CFLAGS) \ + -DUSE_DAUDIO=TRUE, \ + LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \ + $(call SET_SHARED_LIBRARY_ORIGIN), \ + LIBS := $(JDKLIB_LIBS) dsound.lib winmm.lib user32.lib ole32.lib, \ + VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ + RC_FLAGS := $(RC_FLAGS) \ + -D "JDK_FNAME=jsoundds.dll" \ + -D "JDK_INTERNAL_NAME=jsoundds" \ + -D "JDK_FTYPE=0x2L", \ + OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjsoundds, \ + )) + + $(BUILD_LIBJSOUNDDS): $(BUILD_LIBJAVA) + + TARGETS += $(BUILD_LIBJSOUNDDS) + +endif diff --git a/openjdk-mobile-aarch64-patch/jdk/src/java.instrument/share/native/libinstrument/JarFacade.c.z b/openjdk-mobile-aarch64-patch/jdk/src/java.instrument/share/native/libinstrument/JarFacade.c.z new file mode 100644 index 0000000..e409db6 --- /dev/null +++ b/openjdk-mobile-aarch64-patch/jdk/src/java.instrument/share/native/libinstrument/JarFacade.c.z @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2004, 2008, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +#include +#include + +#include "jni.h" +#include "manifest_info.h" +#include "JarFacade.h" + +typedef struct { + jarAttribute* head; + jarAttribute* tail; +} iterationContext; + +static void +doAttribute(const char* name, const char* value, void* user_data) { + iterationContext* context = (iterationContext*) user_data; + + jarAttribute* attribute = (jarAttribute*)malloc(sizeof(jarAttribute)); + if (attribute != NULL) { + attribute->name = strdup(name); + if (attribute->name == NULL) { + free(attribute); + } else { + char *begin = (char *)value; + char *end; + size_t value_len; + + /* skip any leading white space */ + while (*begin == ' ') { + begin++; + } + + /* skip any trailing white space */ + end = &begin[strlen(begin)]; + while (end > begin && end[-1] == ' ') { + end--; + } + + if (begin == end) { + /* no value so skip this attribute */ + free(attribute->name); + free(attribute); + return; + } + + value_len = (size_t)(end - begin); + attribute->value = malloc(value_len + 1); + if (attribute->value == NULL) { + free(attribute->name); + free(attribute); + } else { + /* save the value without leading or trailing whitespace */ + strncpy(attribute->value, begin, value_len); + attribute->value[value_len] = '\0'; + attribute->next = NULL; + if (context->head == NULL) { + context->head = attribute; + } else { + context->tail->next = attribute; + } + context->tail = attribute; + } + } + + } +} + +/* + * Return a list of attributes from the main section of the given JAR + * file. Returns NULL if there is an error or there aren't any attributes. + */ +jarAttribute* +readAttributes(const char* jarfile) +{ + int rc; + iterationContext context = { NULL, NULL }; + + printf("FIXME build: undefined reference to JLI_ManifestIterate\n"); + rc = 0; + // rc = JLI_ManifestIterate(jarfile, doAttribute, (void*)&context); + + if (rc == 0) { + return context.head; + } else { + freeAttributes(context.head); + return NULL; + } +} + + +/* + * Free a list of attributes + */ +void +freeAttributes(jarAttribute* head) { + while (head != NULL) { + jarAttribute* next = (jarAttribute*)head->next; + free(head->name); + free(head->value); + free(head); + head = next; + } +} + +/* + * Get the value of an attribute in an attribute list. Returns NULL + * if attribute not found. + */ +char* +getAttribute(const jarAttribute* attributes, const char* name) { + while (attributes != NULL) { + if (strcasecmp(attributes->name, name) == 0) { + return attributes->value; + } + attributes = (jarAttribute*)attributes->next; + } + return NULL; +}