svn commit: r471843 - head/www/qt5-webengine/files
Adriaan de Groot
adridg at FreeBSD.org
Wed Jun 6 13:53:06 UTC 2018
Author: adridg
Date: Wed Jun 6 13:53:04 2018
New Revision: 471843
URL: https://svnweb.freebsd.org/changeset/ports/471843
Log:
Fix www/qt5-webengine to build on ARM
Fix build for aarch64 and armv7. Chasing Chromium patches into Qt5-Webengine
is a slow process. Multiple build successes have been reported with
this patch, although I have not been able to try it myself.
I hope I got all the attributions right.
PR: 228603 228708
Submitted by: mikael.urankar at gmail.com
Reported by: mikael.urankar at gmail.com, usenet at ulrich-grey.de
Obtained from: mmel
Added:
head/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_boringssl_src_include_openssl_cpu.h (contents, props changed)
head/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_arm_cpu-arm.cc (contents, props changed)
head/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_cpu.cc (contents, props changed)
head/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-freebsd.cc (contents, props changed)
head/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_libsampler_sampler.cc (contents, props changed)
Modified:
head/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_BUILD.gn
Modified: head/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_BUILD.gn
==============================================================================
--- head/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_BUILD.gn Wed Jun 6 13:47:33 2018 (r471842)
+++ head/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_config_compiler_BUILD.gn Wed Jun 6 13:53:04 2018 (r471843)
@@ -1,6 +1,6 @@
---- src/3rdparty/chromium/build/config/compiler/BUILD.gn.orig 2017-01-26 00:49:07 UTC
+--- src/3rdparty/chromium/build/config/compiler/BUILD.gn.orig 2018-01-15 11:39:43 UTC
+++ src/3rdparty/chromium/build/config/compiler/BUILD.gn
-@@ -150,7 +150,7 @@ config("compiler") {
+@@ -156,7 +156,7 @@ config("compiler") {
configs += [ "//build/config/win:compiler" ]
} else if (is_android) {
configs += [ "//build/config/android:compiler" ]
@@ -9,7 +9,7 @@
configs += [ "//build/config/linux:compiler" ]
} else if (is_nacl) {
configs += [ "//build/config/nacl:compiler" ]
-@@ -277,7 +277,7 @@ config("compiler") {
+@@ -290,7 +290,7 @@ config("compiler") {
# Linux/Android common flags setup.
# ---------------------------------
@@ -18,7 +18,7 @@
cflags += [
"-fPIC",
"-pipe", # Use pipes for communicating between sub-processes. Faster.
-@@ -401,14 +401,14 @@ config("compiler") {
+@@ -414,14 +414,14 @@ config("compiler") {
# clang-cl (used if is_win) doesn't expose this flag.
# Currently disabled for nacl since its toolchain lacks this flag (too old).
# TODO(zforman): Once nacl's toolchain is updated, remove check.
@@ -35,7 +35,7 @@
# gnu++11 instead of c++11 is needed because some code uses typeof() (a
# GNU extension).
# TODO(thakis): Eventually switch this to c++11 instead,
-@@ -458,7 +458,7 @@ config("compiler") {
+@@ -475,7 +475,7 @@ config("compiler") {
]
# Apply a lower LTO optimization level as the default is too slow.
@@ -44,7 +44,7 @@
if (use_lld) {
ldflags += [ "-Wl,--lto-O1" ]
} else {
-@@ -478,7 +478,7 @@ config("compiler") {
+@@ -495,7 +495,7 @@ config("compiler") {
# targeting ARM, without this flag, LTO produces a .text section that is
# larger than the maximum call displacement, preventing the linker from
# relocating calls (http://llvm.org/PR22999).
@@ -53,7 +53,30 @@
ldflags += [ "-Wl,-plugin-opt,-function-sections" ]
}
}
-@@ -742,7 +742,7 @@ config("compiler_codegen") {
+@@ -541,11 +541,11 @@ config("compiler_cpu_abi") {
+ ]
+ }
+ } else if (current_cpu == "arm") {
+- if (is_clang && !is_android && !is_nacl) {
++ if (is_clang && !is_android && !is_nacl && !is_bsd) {
+ cflags += [ "--target=arm-linux-gnueabihf" ]
+ ldflags += [ "--target=arm-linux-gnueabihf" ]
+ }
+- if (!is_nacl) {
++ if (!is_nacl && !is_bsd) {
+ cflags += [
+ "-march=$arm_arch",
+ "-mfloat-abi=$arm_float_abi",
+@@ -555,7 +555,7 @@ config("compiler_cpu_abi") {
+ cflags += [ "-mtune=$arm_tune" ]
+ }
+ } else if (current_cpu == "arm64") {
+- if (is_clang && !is_android && !is_nacl) {
++ if (is_clang && !is_android && !is_nacl && !is_bsd) {
+ cflags += [ "--target=aarch64-linux-gnu" ]
+ ldflags += [ "--target=aarch64-linux-gnu" ]
+ }
+@@ -758,7 +758,7 @@ config("compiler_codegen") {
# configs -= [ "//build/config/compiler:clang_stackrealign" ]
# See https://crbug.com/556393 for details of where it must be avoided.
config("clang_stackrealign") {
@@ -62,7 +85,7 @@
cflags = [
# Align the stack on 16-byte boundaries, http://crbug.com/418554.
"-mstack-alignment=16",
-@@ -788,7 +788,7 @@ config("runtime_library") {
+@@ -804,7 +804,7 @@ config("runtime_library") {
# smaller.
if (is_win) {
configs += [ "//build/config/win:runtime_library" ]
@@ -71,7 +94,7 @@
configs += [ "//build/config/linux:runtime_library" ]
} else if (is_ios) {
configs += [ "//build/config/ios:runtime_library" ]
-@@ -1038,7 +1038,7 @@ config("default_warnings") {
+@@ -1054,7 +1054,7 @@ config("default_warnings") {
"-Wno-nonportable-include-path",
# TODO(hans): https://crbug.com/637306
@@ -80,7 +103,7 @@
]
}
}
-@@ -1070,7 +1070,7 @@ config("chromium_code") {
+@@ -1086,7 +1086,7 @@ config("chromium_code") {
]
if (!is_debug && !using_sanitizer &&
@@ -89,7 +112,7 @@
# _FORTIFY_SOURCE isn't really supported by Clang now, see
# http://llvm.org/bugs/show_bug.cgi?id=16821.
# It seems to work fine with Ubuntu 12 headers though, so use it in
-@@ -1128,7 +1128,7 @@ config("no_chromium_code") {
+@@ -1144,7 +1144,7 @@ config("no_chromium_code") {
]
}
Added: head/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_boringssl_src_include_openssl_cpu.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_boringssl_src_include_openssl_cpu.h Wed Jun 6 13:53:04 2018 (r471843)
@@ -0,0 +1,11 @@
+--- src/3rdparty/chromium/third_party/boringssl/src/include/openssl/cpu.h.orig 2018-03-21 07:29:16 UTC
++++ src/3rdparty/chromium/third_party/boringssl/src/include/openssl/cpu.h
+@@ -95,7 +95,7 @@ extern uint32_t OPENSSL_ia32cap_P[4];
+
+ #if defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
+
+-#if defined(OPENSSL_APPLE)
++#if defined(OPENSSL_APPLE) || defined(__FreeBSD__)
+ /* iOS builds use the static ARM configuration. */
+ #define OPENSSL_STATIC_ARMCAP
+ #endif
Added: head/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_arm_cpu-arm.cc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_arm_cpu-arm.cc Wed Jun 6 13:53:04 2018 (r471843)
@@ -0,0 +1,23 @@
+--- src/3rdparty/chromium/v8/src/arm/cpu-arm.cc.orig 2017-09-25 11:16:57 UTC
++++ src/3rdparty/chromium/v8/src/arm/cpu-arm.cc
+@@ -17,6 +17,11 @@
+ #include "src/assembler.h"
+ #include "src/macro-assembler.h"
+
++#if V8_OS_FREEBSD
++#include <sys/types.h>
++#include <machine/sysarch.h>
++#endif
++
+ namespace v8 {
+ namespace internal {
+
+@@ -24,6 +29,8 @@ void CpuFeatures::FlushICache(void* start, size_t size
+ #if !defined(USE_SIMULATOR)
+ #if V8_OS_QNX
+ msync(start, size, MS_SYNC | MS_INVALIDATE_ICACHE);
++#elif V8_OS_FREEBSD
++ __clear_cache(start, reinterpret_cast<char*>(start) + size);
+ #else
+ register uint32_t beg asm("r0") = reinterpret_cast<uint32_t>(start);
+ register uint32_t end asm("r1") = beg + size;
Added: head/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_cpu.cc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_cpu.cc Wed Jun 6 13:53:04 2018 (r471843)
@@ -0,0 +1,19 @@
+--- src/3rdparty/chromium/v8/src/base/cpu.cc.orig 2018-03-20 07:26:22 UTC
++++ src/3rdparty/chromium/v8/src/base/cpu.cc
+@@ -600,7 +600,7 @@ CPU::CPU()
+ #endif
+
+ #elif V8_HOST_ARCH_ARM64
+-
++#if V8_OS_LINUX
+ CPUInfo cpu_info;
+
+ // Extract implementor from the "CPU implementer" field.
+@@ -634,6 +634,7 @@ CPU::CPU()
+ }
+ delete[] part;
+ }
++#endif // V8_OS_LINUX
+
+ #elif V8_HOST_ARCH_PPC
+
Added: head/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-freebsd.cc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_base_platform_platform-freebsd.cc Wed Jun 6 13:53:04 2018 (r471843)
@@ -0,0 +1,25 @@
+--- src/3rdparty/chromium/v8/src/base/platform/platform-freebsd.cc.orig 2017-09-25 11:52:56 UTC
++++ src/3rdparty/chromium/v8/src/base/platform/platform-freebsd.cc
+@@ -36,6 +36,22 @@ namespace v8 {
+ namespace base {
+
+
++#ifdef __arm__
++bool OS::ArmUsingHardFloat() {
++#if defined(__ARM_PCS_VFP)
++ return true;
++#elif defined(__ARM_PCS) || defined(__SOFTFP__) || defined(__SOFTFP) || \
++ !defined(__VFP_FP__)
++ return false;
++#else
++#error "Your compiler does not report the FP ABI compiled for." \
++ "Please report it on this issue" \
++ "http://code.google.com/p/v8/issues/detail?id=2140"
++#endif
++}
++#endif
++
++
+ const char* OS::LocalTimezone(double time, TimezoneCache* cache) {
+ if (std::isnan(time)) return "";
+ time_t tv = static_cast<time_t>(std::floor(time/msPerSecond));
Added: head/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_libsampler_sampler.cc
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_libsampler_sampler.cc Wed Jun 6 13:53:04 2018 (r471843)
@@ -0,0 +1,15 @@
+--- src/3rdparty/chromium/v8/src/libsampler/sampler.cc.orig 2018-03-20 07:19:58 UTC
++++ src/3rdparty/chromium/v8/src/libsampler/sampler.cc
+@@ -499,9 +499,9 @@ void SignalHandler::FillRegisterState(void* context, R
+ state->sp = reinterpret_cast<void*>(mcontext.mc_rsp);
+ state->fp = reinterpret_cast<void*>(mcontext.mc_rbp);
+ #elif V8_HOST_ARCH_ARM
+- state->pc = reinterpret_cast<void*>(mcontext.mc_r15);
+- state->sp = reinterpret_cast<void*>(mcontext.mc_r13);
+- state->fp = reinterpret_cast<void*>(mcontext.mc_r11);
++ state->pc = reinterpret_cast<void*>(mcontext.__gregs[_REG_PC]);
++ state->sp = reinterpret_cast<void*>(mcontext.__gregs[_REG_SP]);
++ state->fp = reinterpret_cast<void*>(mcontext.__gregs[_REG_FP]);
+ #endif // V8_HOST_ARCH_*
+ #elif V8_OS_NETBSD
+ #if V8_HOST_ARCH_IA32
More information about the svn-ports-all
mailing list