diff --git a/qtwebkit.spec b/qtwebkit.spec index 62c04a7..7937bdc 100644 --- a/qtwebkit.spec +++ b/qtwebkit.spec @@ -10,7 +10,7 @@ Name: qtwebkit Summary: Qt WebKit bindings Version: 2.3.4 -Release: 37%{?dist} +Release: 37.0.riscv64%{?dist} License: LGPLv2 with exceptions or GPLv3 with exceptions URL: http://trac.webkit.org/wiki/QtWebKit @@ -37,6 +37,9 @@ Patch11: qtwebkit-23-LLInt-C-Loop-backend-ppc.patch # truly madly deeply no rpath please, kthxbye Patch14: webkit-qtwebkit-23-no_rpath.patch +# add RISC-V (riscv64) support +Patch20: webkit-qtwebkit-23-riscv64.patch + ## upstream patches # backport from qt5-qtwebkit # qtwebkit: undefined symbol: g_type_class_adjust_private_offset @@ -133,6 +136,7 @@ Provides: qt4-webkit-devel%{?_isa} = 2:%{version}-%{release} %patch11 -p1 -b .Double2Ints %endif %patch14 -p1 -b .no_rpath +%patch20 -p1 -b .riscv64 %patch100 -p1 -b .gcc5 %patch101 -p1 -b .private_browsing @@ -161,10 +165,15 @@ PATH=`pwd`/python2-unversioned-command:`pwd`/bin:%{_qt4_bindir}:$PATH; export PA QMAKEPATH=`pwd`/Tools/qmake; export QMAKEPATH QTDIR=%{_qt4_prefix}; export QTDIR -%ifarch aarch64 %{mips} +%ifarch aarch64 %{mips} riscv64 %global qtdefines DEFINES+=ENABLE_JIT=0 DEFINES+=ENABLE_YARR_JIT=0 DEFINES+=ENABLE_ASSEMBLER=0 %endif +%ifarch riscv64 +export CFLAGS="$CFLAGS -fpermissive" +export CXXFLAGS="$CXXFLAGS -fpermissive" +%endif + mkdir -p %{_target_platform} pushd %{_target_platform} WEBKITOUTPUTDIR=`pwd`; export WEBKITOUTPUTDIR @@ -207,6 +216,9 @@ popd %changelog +* Mon Oct 14 2022 David Abdurachmanov - 2.3.4-37.0.riscv64 +- Add support for riscv64 + * Sat Jul 23 2022 Fedora Release Engineering - 2.3.4-37 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild diff --git a/webkit-qtwebkit-23-riscv64.patch b/webkit-qtwebkit-23-riscv64.patch new file mode 100644 index 0000000..83e4c52 --- /dev/null +++ b/webkit-qtwebkit-23-riscv64.patch @@ -0,0 +1,93 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index a91f2559..94cb34fd 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -76,6 +76,8 @@ ELSEIF (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "(x86_64|amd64)") + SET(WTF_CPU_X86_64 1) + ELSEIF (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "(i[3-6]86|x86)") + SET(WTF_CPU_X86 1) ++ELSEIF (LOWERCASE_CMAKE_SYSTEM_PROCESSOR MATCHES "^riscv64") ++ SET(WTF_CPU_RISCV64 1) + ELSE () + MESSAGE(FATAL_ERROR "Unknown CPU '${CMAKE_SYSTEM_PROCESSOR}'") + ENDIF () +diff --git a/Source/JavaScriptCore/CMakeLists.txt b/Source/JavaScriptCore/CMakeLists.txt +index 0a7a8bd3..14fbcdbf 100644 +--- a/Source/JavaScriptCore/CMakeLists.txt ++++ b/Source/JavaScriptCore/CMakeLists.txt +@@ -471,6 +471,7 @@ IF (WTF_CPU_ARM) + ELSEIF (WTF_CPU_MIPS) + ELSEIF (WTF_CPU_X86) + ELSEIF (WTF_CPU_X86_64) ++ELSEIF (WTF_CPU_RISCV64) + ELSE () + MESSAGE(FATAL_ERROR "Unknown CPU") + ENDIF () +diff --git a/Source/JavaScriptCore/JavaScriptCore.pri b/Source/JavaScriptCore/JavaScriptCore.pri +index e5f4362c..f175d09e 100644 +--- a/Source/JavaScriptCore/JavaScriptCore.pri ++++ b/Source/JavaScriptCore/JavaScriptCore.pri +@@ -37,6 +37,14 @@ macx: INCLUDEPATH += $$JAVASCRIPTCORE_GENERATED_SOURCES_DIR/$$activeBuildConfig( + + win32-*: LIBS += -lwinmm + ++# Hack around RISCV64 fail wrt JSValue.h ++# SValue.h unconditionally casts pointer to int32_t. ++# add -fpermissive locally as a workaround ++equals(QT_ARCH, riscv64) { ++ message("JavaScriptCore riscv64 hack: -fpermissive") ++ QMAKE_CXXFLAGS += -fpermissive ++} ++ + wince* { + INCLUDEPATH += $$QT.core.sources/../3rdparty/ce-compat + INCLUDEPATH += $$SOURCE_DIR/os-win32 +diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h +index 56c6f256..639063bb 100644 +--- a/Source/WTF/wtf/Platform.h ++++ b/Source/WTF/wtf/Platform.h +@@ -164,6 +164,11 @@ + #define WTF_CPU_BIG_ENDIAN 1 + #endif + ++/* CPU(RISCV64) - RISCV64 */ ++#if defined(__riscv) && defined(__riscv_xlen) && __riscv_xlen == 64 ++#define WTF_CPU_RISCV64 1 ++#endif ++ + /* CPU(X86) - i386 / x86 32-bit */ + #if defined(__i386__) \ + || defined(i386) \ +@@ -906,7 +911,8 @@ + || CPU(S390X) \ + || CPU(AARCH64) \ + || CPU(MIPS64) \ +- || CPU(PPC64) ++ || CPU(PPC64) \ ++ || CPU(RISCV64) + #define WTF_USE_JSVALUE64 1 + #else + #define WTF_USE_JSVALUE32_64 1 +@@ -932,7 +938,8 @@ + && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(MIPS)) \ + && (OS(DARWIN) || !COMPILER(GCC) || GCC_VERSION_AT_LEAST(4, 1, 0)) \ + && !OS(WINCE) \ +- && !OS(QNX) ++ && !OS(QNX) \ ++ && !CPU(RISCV64) + #define ENABLE_JIT 1 + #endif + +diff --git a/Source/WTF/wtf/dtoa/utils.h b/Source/WTF/wtf/dtoa/utils.h +index bc17f043..91493297 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(PPC) || CPU(PPC64) || OS(WINCE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(SPARC) || CPU(ALPHA) || CPU(MIPS64) || CPU(AARCH64) || CPU(HPPA) ++#elif CPU(MIPS) || CPU(PPC) || CPU(PPC64) || OS(WINCE) || CPU(SH4) || CPU(S390) || CPU(S390X) || CPU(IA64) || CPU(SPARC) || CPU(ALPHA) || CPU(MIPS64) || CPU(AARCH64) || CPU(HPPA) || CPU(RISCV64) + #define DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS 1 + #elif defined(_M_IX86) || defined(__i386__) + #if defined(_WIN32)