Add support for RISC-V (riscv64)

Signed-off-by: David Abdurachmanov <david.abdurachmanov@gmail.com>
This commit is contained in:
David Abdurachmanov 2018-06-02 14:47:57 +02:00
parent e503289818
commit 6bf9af37ea
Signed by: davidlt
GPG Key ID: 7108702C938B13C1
2 changed files with 73 additions and 2 deletions

View File

@ -5,7 +5,7 @@ Name: qtwebkit
Summary: Qt WebKit bindings
Version: 2.3.4
Release: 21%{?dist}
Release: 21.0.riscv64%{?dist}
License: LGPLv2 with exceptions or GPLv3 with exceptions
URL: http://trac.webkit.org/wiki/QtWebKit
@ -50,6 +50,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
Patch15: webkit-qtwebkit-23-riscv64.patch
## upstream patches
# backport from qt5-qtwebkit
# qtwebkit: undefined symbol: g_type_class_adjust_private_offset
@ -135,6 +138,7 @@ Provides: qt4-webkit-devel%{?_isa} = 2:%{version}-%{release}
%patch11 -p1 -b .Double2Ints
%endif
%patch14 -p1 -b .no_rpath
%patch15 -p1 -b .riscv64
%patch100 -p1 -b .gcc5
%patch101 -p1 -b .private_browsing
@ -151,7 +155,7 @@ PATH=`pwd`/bin:%{_qt4_bindir}:$PATH; export PATH
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
@ -223,6 +227,9 @@ popd
%changelog
* Sat Jun 02 2018 David Abdurachmanov <ishcherb@redhat.com> - 2.3.4-21.0.riscv64
- Add support for RISC-V (riscv64)
* Sun Mar 18 2018 Iryna Shcherbina <ishcherb@redhat.com> - 2.3.4-21
- Update Python 2 dependency declarations to new packaging standards
(See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)

View File

@ -0,0 +1,64 @@
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/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h
index 56c6f256..cdcc94c6 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) \
@@ -932,7 +937,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)