ladybird/Ports/OpenJDK/patches/0001-make-Add-Serenity-support-masquerading-as-BSD-when-n.patch
Timur Sultanov 1f886f94bd Ports: Add OpenJDK port
Port of OpenJDK 17.0.2, zero VM only.

More work needed to get the full hotspot VM up and running :^)

Co-Authored-By: Andrew Kaster <akaster@serenityos.org>
2022-06-19 09:05:35 +02:00

153 lines
6.2 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Timur Sultanov <SultanovTS@yandex.ru>
Date: Wed, 16 Feb 2022 21:04:18 +0300
Subject: [PATCH] make: Add Serenity support, masquerading as BSD when
necessary
Co-Authored-By: Andrew Kaster <akaster@serenityos.org>
---
make/autoconf/flags-cflags.m4 | 3 +++
make/autoconf/flags-ldflags.m4 | 11 +++++++++++
make/autoconf/platform.m4 | 8 ++++++++
make/autoconf/toolchain.m4 | 1 +
make/common/modules/LauncherCommon.gmk | 3 +++
make/hotspot/lib/JvmMapfile.gmk | 12 ++++++++++++
make/modules/java.base/lib/CoreLibraries.gmk | 1 +
7 files changed, 39 insertions(+)
diff --git a/make/autoconf/flags-cflags.m4 b/make/autoconf/flags-cflags.m4
index 5eed1138f..62e53a1c4 100644
--- a/make/autoconf/flags-cflags.m4
+++ b/make/autoconf/flags-cflags.m4
@@ -382,6 +382,9 @@ AC_DEFUN([FLAGS_SETUP_CFLAGS_HELPER],
CFLAGS_OS_DEF_JVM="-DAIX"
elif test "x$OPENJDK_TARGET_OS" = xbsd; then
CFLAGS_OS_DEF_JDK="-D_ALLBSD_SOURCE"
+ elif test "x$OPENJDK_TARGET_OS" = xserenity; then
+ CFLAGS_OS_DEF_JDK="-DSERENITY"
+ CFLAGS_OS_DEF_JVM="-DSERENITY"
elif test "x$OPENJDK_TARGET_OS" = xwindows; then
CFLAGS_OS_DEF_JVM="-D_WINDOWS -DWIN32 -D_JNI_IMPLEMENTATION_"
fi
diff --git a/make/autoconf/flags-ldflags.m4 b/make/autoconf/flags-ldflags.m4
index 23bb33e87..e3deb0c3f 100644
--- a/make/autoconf/flags-ldflags.m4
+++ b/make/autoconf/flags-ldflags.m4
@@ -110,6 +110,17 @@ AC_DEFUN([FLAGS_SETUP_LDFLAGS_HELPER],
fi
fi
+ if test "x$OPENJDK_TARGET_OS" = xserenity; then
+ if test "x$TOOLCHAIN_TYPE" = xgcc; then
+ # FIXME: -lgcc_s should not be required, toolchain spec file issue
+ OS_LDFLAGS_JVM_ONLY="$OS_LDFLAGS_JVM_ONLY -ldl -lpthread -lgcc_s"
+ OS_LDFLAGS="$OS_LDFLAGS -ldl -lpthread -lgcc_s"
+ elif test "x$TOOLCHAIN_TYPE" = xclang; then
+ OS_LDFLAGS_JVM_ONLY="$OS_LDFLAGS_JVM_ONLY -ldl -lpthread"
+ OS_LDFLAGS="$OS_LDFLAGS -ldl -lpthread"
+ fi
+ fi
+
# Setup debug level-dependent LDFLAGS
if test "x$TOOLCHAIN_TYPE" = xgcc; then
if test "x$OPENJDK_TARGET_OS" = xlinux; then
diff --git a/make/autoconf/platform.m4 b/make/autoconf/platform.m4
index 205d64f56..6e668edc4 100644
--- a/make/autoconf/platform.m4
+++ b/make/autoconf/platform.m4
@@ -220,6 +220,10 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_OS],
VAR_OS=aix
VAR_OS_TYPE=unix
;;
+ *serenity*)
+ VAR_OS=serenity
+ VAR_OS_TYPE=unix
+ ;;
*)
AC_MSG_ERROR([unsupported operating system $1])
;;
@@ -521,6 +525,8 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER],
HOTSPOT_$1_OS=${OPENJDK_$1_OS}
if test "x$OPENJDK_$1_OS" = xmacosx; then
HOTSPOT_$1_OS=bsd
+ elif test "x$OPENJDK_$1_OS" = xserenity; then
+ HOTSPOT_$1_OS=bsd
fi
AC_SUBST(HOTSPOT_$1_OS)
@@ -587,6 +593,8 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER],
OPENJDK_$1_OS_INCLUDE_SUBDIR="win32"
elif test "x$OPENJDK_TARGET_OS" = "xmacosx"; then
OPENJDK_$1_OS_INCLUDE_SUBDIR="darwin"
+ elif test "x$OPENJDK_TARGET_OS" = "xserenity"; then
+ OPENJDK_$1_OS_INCLUDE_SUBDIR="bsd"
fi
AC_SUBST(OPENJDK_$1_OS_INCLUDE_SUBDIR)
])
diff --git a/make/autoconf/toolchain.m4 b/make/autoconf/toolchain.m4
index 69540e160..badd84a50 100644
--- a/make/autoconf/toolchain.m4
+++ b/make/autoconf/toolchain.m4
@@ -42,6 +42,7 @@ VALID_TOOLCHAINS_linux="gcc clang"
VALID_TOOLCHAINS_macosx="gcc clang"
VALID_TOOLCHAINS_aix="xlc"
VALID_TOOLCHAINS_windows="microsoft"
+VALID_TOOLCHAINS_serenity="gcc clang"
# Toolchain descriptions
TOOLCHAIN_DESCRIPTION_clang="clang/LLVM"
diff --git a/make/common/modules/LauncherCommon.gmk b/make/common/modules/LauncherCommon.gmk
index 7ad0375e2..8100f655e 100644
--- a/make/common/modules/LauncherCommon.gmk
+++ b/make/common/modules/LauncherCommon.gmk
@@ -157,11 +157,14 @@ define SetupBuildLauncherBody
$$($1_LDFLAGS), \
LDFLAGS_linux := $$(call SET_EXECUTABLE_ORIGIN,/../lib) \
-L$(call FindLibDirForModule, java.base), \
+ LDFLAGS_serenity := $$(call SET_EXECUTABLE_ORIGIN,/../lib) \
+ -L$(call FindLibDirForModule, java.base), \
LDFLAGS_macosx := $$(call SET_EXECUTABLE_ORIGIN,/../lib) \
-L$(call FindLibDirForModule, java.base), \
LDFLAGS_aix := -L$(SUPPORT_OUTPUTDIR)/native/java.base, \
LIBS := $(JDKEXE_LIBS) $$($1_LIBS), \
LIBS_linux := -ljli -lpthread $(LIBDL), \
+ LIBS_serenity := -ljli -lpthread $(LIBDL), \
LIBS_macosx := -ljli -framework Cocoa -framework Security \
-framework ApplicationServices, \
LIBS_aix := -ljli_static, \
diff --git a/make/hotspot/lib/JvmMapfile.gmk b/make/hotspot/lib/JvmMapfile.gmk
index 5cba93178..752727d0d 100644
--- a/make/hotspot/lib/JvmMapfile.gmk
+++ b/make/hotspot/lib/JvmMapfile.gmk
@@ -64,6 +64,18 @@ ifeq ($(call isTargetOs, linux), true)
if ($$3 ~ /$(FILTER_SYMBOLS_PATTERN)/) print $$3; \
}'
+else ifeq ($(call isTargetOs, serenity), true)
+ DUMP_SYMBOLS_CMD := $(NM) --defined-only *.o
+ ifneq ($(FILTER_SYMBOLS_PATTERN), )
+ FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)|
+ endif
+ FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)^_ZTV|^gHotSpotVM|^UseSharedSpaces$$
+ FILTER_SYMBOLS_PATTERN := $(FILTER_SYMBOLS_PATTERN)|^_ZN9Arguments17SharedArchivePathE$$
+ FILTER_SYMBOLS_AWK_SCRIPT := \
+ '{ \
+ if ($$3 ~ /$(FILTER_SYMBOLS_PATTERN)/) print $$3; \
+ }'
+
else ifeq ($(call isTargetOs, macosx), true)
# nm on macosx prints out "warning: nm: no name list" to stderr for
# files without symbols. Hide this, even at the expense of hiding real errors.
diff --git a/make/modules/java.base/lib/CoreLibraries.gmk b/make/modules/java.base/lib/CoreLibraries.gmk
index 1d5fede2a..0a61d009f 100644
--- a/make/modules/java.base/lib/CoreLibraries.gmk
+++ b/make/modules/java.base/lib/CoreLibraries.gmk
@@ -209,6 +209,7 @@ $(eval $(call SetupJdkLibrary, BUILD_LIBJLI, \
LIBS_unix := $(LIBZ_LIBS), \
LIBS_linux := $(LIBDL) -lpthread, \
LIBS_aix := $(LIBDL),\
+ LIBS_serenity := $(LIBDL) -lpthread, \
LIBS_macosx := -framework Cocoa -framework Security -framework ApplicationServices, \
LIBS_windows := advapi32.lib comctl32.lib user32.lib, \
))