From 8be5114ea4479ca8a7bf4cc2982eecd9a46bbebc Mon Sep 17 00:00:00 2001 From: Alexey Sheplyakov Date: Sun, 18 Jun 2023 16:20:55 +0000 Subject: [PATCH] Support LoongArch architecture (lp64d ABI) --- .gear/qtwebkit-loongarch64.patch | 113 +++++++++++++++++++++++++++++++ .gear/qtwebkit.spec | 10 ++- 2 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 .gear/qtwebkit-loongarch64.patch diff --git a/.gear/qtwebkit-loongarch64.patch b/.gear/qtwebkit-loongarch64.patch new file mode 100644 index 000000000..803489d29 --- /dev/null +++ b/.gear/qtwebkit-loongarch64.patch @@ -0,0 +1,113 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 7e6c6e989..6c4fed042 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -90,6 +90,8 @@ elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "s390x") + set(WTF_CPU_S390X 1) + elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "riscv64") + set(WTF_CPU_RISCV64 1) ++elseif (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "loongarch64") ++ set(WTF_CPU_LOONGARCH64 1) + else () + message(FATAL_ERROR "Unknown CPU '${LOWERCASE_CMAKE_SYSTEM_PROCESSOR}'") + endif () +diff --git a/Source/JavaScriptCore/CMakeLists.txt b/Source/JavaScriptCore/CMakeLists.txt +index 83b0f399c..a439444ef 100644 +--- a/Source/JavaScriptCore/CMakeLists.txt ++++ b/Source/JavaScriptCore/CMakeLists.txt +@@ -1280,6 +1280,7 @@ if (WTF_CPU_ARM) + elseif (WTF_CPU_ARM64) + elseif (WTF_CPU_ALPHA) + elseif (WTF_CPU_HPPA) ++elseif (WTF_CPU_LOONGARCH64) + elseif (WTF_CPU_PPC) + elseif (WTF_CPU_PPC64) + elseif (WTF_CPU_PPC64LE) +diff --git a/Source/ThirdParty/ANGLE/src/common/mathutil.h b/Source/ThirdParty/ANGLE/src/common/mathutil.h +index 7959da8bd..c86afd61e 100644 +--- a/Source/ThirdParty/ANGLE/src/common/mathutil.h ++++ b/Source/ThirdParty/ANGLE/src/common/mathutil.h +@@ -16,6 +16,7 @@ + #include + #include + #include ++#include + + namespace gl + { +diff --git a/Source/ThirdParty/brotli/dec/port.h b/Source/ThirdParty/brotli/dec/port.h +index 54f51b010..e6da12d35 100644 +--- a/Source/ThirdParty/brotli/dec/port.h ++++ b/Source/ThirdParty/brotli/dec/port.h +@@ -60,6 +60,10 @@ + #define BROTLI_TARGET_RISCV64 + #endif + ++#if defined(__loongarch64) ++#define BROTLI_TARGET_LOONGARCH64 ++#endif ++ + #ifdef BROTLI_BUILD_PORTABLE + #define BROTLI_ALIGNED_READ (!!1) + #elif defined(BROTLI_TARGET_X86) || defined(BROTLI_TARGET_X64) || \ +@@ -100,6 +104,7 @@ static BROTLI_INLINE void BrotliDump(const char* f, int l, const char* fn) { + #elif defined(BROTLI_BUILD_32_BIT) + #define BROTLI_64_BITS 0 + #elif defined(BROTLI_TARGET_X64) || defined(BROTLI_TARGET_ARMV8) || \ ++ defined(BROTLI_TARGET_LOONGARCH64) || \ + defined(BROTLI_TARGET_POWERPC64) || defined(BROTLI_TARGET_RISCV64) + #define BROTLI_64_BITS 1 + #else +diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h +index 7aefa1bab..224bd5ac7 100644 +--- a/Source/WTF/wtf/Platform.h ++++ b/Source/WTF/wtf/Platform.h +@@ -176,6 +176,11 @@ + #define WTF_CPU_X86_SSE2 1 + #endif + ++/* CPU(LOONGARCH64) - LoongArch */ ++#if defined(__loongarch64) ++#define WTF_CPU_LOONGARCH64 1 ++#endif ++ + /* CPU(RISCV64) - RISCV64 */ + #if defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 64 + #define WTF_CPU_RISCV64 1 +@@ -710,6 +715,7 @@ + || CPU(ALPHA) \ + || CPU(ARM64) \ + || CPU(S390X) \ ++ || CPU(LOONGARCH64) \ + || CPU(MIPS64) \ + || CPU(PPC64) \ + || CPU(PPC64LE) \ +diff --git a/Source/WTF/wtf/dtoa/utils.h b/Source/WTF/wtf/dtoa/utils.h +index 176d5909f..b13616295 100644 +--- a/Source/WTF/wtf/dtoa/utils.h ++++ b/Source/WTF/wtf/dtoa/utils.h +@@ -49,7 +49,7 @@ + defined(__ARMEL__) || \ + defined(_MIPS_ARCH_MIPS32R2) + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 +-#elif CPU(MIPS) || CPU(MIPS64) || CPU(PPC) || CPU(PPC64) || CPU(PPC64LE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(ALPHA) || CPU(ARM64) || CPU(HPPA) || CPU(RISCV64) ++#elif CPU(MIPS) || CPU(MIPS64) || CPU(PPC) || CPU(PPC64) || CPU(PPC64LE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(ALPHA) || CPU(ARM64) || CPU(HPPA) || CPU(LOONGARCH64) || CPU(RISCV64) + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 + #elif defined(_M_IX86) || defined(__i386__) + #if defined(_WIN32) +diff --git a/Tools/Scripts/webkitdirs.pm b/Tools/Scripts/webkitdirs.pm +index 4a075d41c..5932fed69 100755 +--- a/Tools/Scripts/webkitdirs.pm ++++ b/Tools/Scripts/webkitdirs.pm +@@ -1264,6 +1264,11 @@ sub isARM() + return ($Config{archname} =~ /^arm[v\-]/) || ($Config{archname} =~ /^aarch64[v\-]/); + } + ++sub isLOONGARCH() ++{ ++ return ($Config{archname} =~ /^loongarch64\-/); ++} ++ + sub isRISCV() + { + return ($Config{archname} =~ /^riscv(|32|64)\-/); diff --git a/.gear/qtwebkit.spec b/.gear/qtwebkit.spec index c7a92e2df..f9680fcce 100644 --- a/.gear/qtwebkit.spec +++ b/.gear/qtwebkit.spec @@ -8,7 +8,7 @@ Name: qt5-webkit Version: 5.212.0 -Release: alt24 +Release: alt25 Group: System/Libraries Summary: Qt5 - QtWebKit components @@ -25,6 +25,8 @@ Patch7: qtwebkit-5.212.0_pre20200309-icu-68.patch Patch10: alt-flags.patch # Elbrus Patch2000: qtwebkit-e2k.patch +# LoongArch +Patch3500: qtwebkit-loongarch64.patch # Automatically added by buildreq on Mon Sep 30 2013 (-bi) # optimized out: elfutils fontconfig glib2-devel glibc-devel-static gstreamer-devel libGL-devel libX11-devel libXfixes-devel libfreetype-devel libgst-plugins libqt5-core libqt5-gui libqt5-network libqt5-opengl libqt5-printsupport libqt5-qml libqt5-quick libqt5-sql libqt5-v8 libqt5-widgets libstdc++-devel libxml2-devel pkg-config python-base python-modules python-modules-compiler python-modules-encodings python-modules-xml python3 python3-base qt5-base-devel qt5-declarative-devel ruby ruby-stdlibs xorg-compositeproto-devel xorg-fixesproto-devel xorg-renderproto-devel xorg-xproto-devel zlib-devel @@ -107,6 +109,9 @@ Requires: libqt5-core = %_qt5_version %ifarch %e2k %patch2000 -p1 %endif +%ifnarch %e2k +%patch3500 -p1 +%endif syncqt.pl-qt5 Source -version %version # remove rpath @@ -222,6 +227,9 @@ done %_pkgconfigdir/Qt*.pc %changelog +* Sun Jun 18 2023 Alexey Sheplyakov 5.212.0-alt25 +- support LoongArch architecture (lp64d ABI) (closes: #46582) + * Fri Oct 01 2021 Sergey V Turchin 5.212.0-alt24 - build without LTO enabled -- 2.33.3