New port: www/qt5-webengine.

Qt WebEngine provides functionality for rendering regions of dynamic web
content. In other words, this is Chromium's Blink web engine and parts of
Chromium's content layer wrapped by Qt. Qt WebKit is deprecated upstream, and
WebEngine is the future.

This port has been in the works for a very long time, with contributions by
myself, tcberner, Adriaan de Groot and Marie Loise Nolden.

Since most of the port is just a large part of Chromium's code base, this means
sharing some of the pain www/chromium goes through by having to patch a ton of
files. We cannot share the exact same patches because this version of Qt
WebEngine is based on an older Chromium release.

I have verified that the port works, but it is possible that many things are
still wrong or missing, so bug reports are encouraged.

Reviewed by:	Adriaan de Groot <groot@kde.org>, tcberner
Differential Revision:	https://reviews.freebsd.org/D12063
This commit is contained in:
Raphael Kubo da Costa 2017-08-17 15:56:11 +00:00
parent e3fb8ce76d
commit 90652af7cd
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=448132
82 changed files with 1801 additions and 3 deletions

View file

@ -92,8 +92,8 @@ QT_DIST= 3d base canvas3d charts connectivity datavis3d declarative \
declarative-render2d gamepad graphicaleffects imageformats \
location multimedia quickcontrols quickcontrols2 script scxml \
sensors serialbus serialport svg tools translations \
virtualkeyboard wayland webchannel websockets x11extras \
xmlpatterns
virtualkeyboard wayland webchannel webengine \
websockets x11extras xmlpatterns
. endif
. endif
@ -321,7 +321,7 @@ _USE_QT5_ONLY= 3d buildtools canvas3d charts concurrent connectivity \
qdbus qdoc qdoc-data qev qml quick quickcontrols \
quickcontrols2 scxml sensors serialbus serialport \
sql-tds uiplugin uitools virtualkeyboard wayland webchannel \
websockets websockets-qml widgets x11extras
webengine websockets websockets-qml widgets x11extras
3d_PORT= graphics/${_QT_RELNAME}-3d
3d_LIB= libQt${_QT_LIBVER}3DCore.so
@ -592,6 +592,9 @@ virtualkeyboard_PATH= ${QT_PLUGINDIR}/platforminputcontexts/libqtvirtualkeyboard
webchannel_PORT= www/${_QT_RELNAME}-webchannel
webchannel_LIB= libQt${_QT_LIBVER}WebChannel.so
webengine_PORT= www/${_QT_RELNAME}-webengine
webengine_LIB= libQt${_QT_LIBVER}WebEngine.so
websockets_PORT= www/${_QT_RELNAME}-websockets
websockets_LIB= libQt${_QT_LIBVER}WebSockets.so

View file

@ -51,6 +51,8 @@ SHA256 (KDE/Qt/5.7.1/qtwayland-opensource-src-5.7.1.tar.xz) = f23fc5e180c8af5b38
SIZE (KDE/Qt/5.7.1/qtwayland-opensource-src-5.7.1.tar.xz) = 291776
SHA256 (KDE/Qt/5.7.1/qtwebchannel-opensource-src-5.7.1.tar.xz) = 63ab3ac76ff993009cfa978162a764e05b763cacb70d1a862893f8de4492319b
SIZE (KDE/Qt/5.7.1/qtwebchannel-opensource-src-5.7.1.tar.xz) = 122436
SHA256 (KDE/Qt/5.7.1/qtwebengine-opensource-src-5.7.1.tar.xz) = 2101883e3d632b50133a14e3bbdc1d4d649e405c9618f2eef1b72a7b821ccc2b
SIZE (KDE/Qt/5.7.1/qtwebengine-opensource-src-5.7.1.tar.xz) = 163782564
SHA256 (KDE/Qt/5.7.1/qtwebsockets-opensource-src-5.7.1.tar.xz) = 5c2a75b68e7f2e98530659b33bb08edee83013832dbf99cc5b40afc8a90652d1
SIZE (KDE/Qt/5.7.1/qtwebsockets-opensource-src-5.7.1.tar.xz) = 193204
SHA256 (KDE/Qt/5.7.1/qtx11extras-opensource-src-5.7.1.tar.xz) = 5f5a0c2cc66ec01c2f2f31eff32fea26bd0bc03741a5dfd803b13870aa4ce427

View file

@ -1864,6 +1864,7 @@
SUBDIR += qooxdoo
SUBDIR += qt4-webkit
SUBDIR += qt5-webchannel
SUBDIR += qt5-webengine
SUBDIR += qt5-webkit
SUBDIR += qt5-websockets
SUBDIR += qt5-websockets-qml

105
www/qt5-webengine/Makefile Normal file
View file

@ -0,0 +1,105 @@
# $FreeBSD$
# QtWebEngine itself is a very thin layer of Qt code on top of a large part of
# Chromium (everything up to the content/ layer). As such, most of the work in
# this port revolves around taming Chromium and getting it to build on FreeBSD.
# While it does build at the moment, there are several items that should be
# investigated or improved:
# - We are using several stub files, especially in Chromium's base/ and net/
# layers. We should look at implementing the missing bits instead.
# - We are currently not using any sandboxing mechanism.
# - We are disabling support for features such as WebRTC and printing. We need
# to see what it would take to properly support them.
# - We need to see if more "use_system_<FOO>" flags can be passed.
# - The process of porting QtWebEngine needs to be documented so we can move to
# newer releases more easily.
PORTNAME= webengine
DISTVERSION= ${QT5_VERSION}
CATEGORIES= www
PKGNAMEPREFIX= qt5-
MAINTAINER= kde@FreeBSD.org
COMMENT= Qt 5 library to render web content
BUILD_DEPENDS= bison:devel/bison \
ninja:devel/ninja \
python:lang/python \
yasm:devel/yasm \
${LOCALBASE}/include/linux/videodev2.h:multimedia/v4l_compat
LIB_DEPENDS= libdbus-1.so:devel/dbus \
libevent.so:devel/libevent \
libfontconfig.so:x11-fonts/fontconfig \
libfreetype.so:print/freetype2 \
libjsoncpp.so:devel/jsoncpp \
libnspr4.so:devel/nspr \
libnss3.so:security/nss \
libopus.so:audio/opus \
libpci.so:devel/libpci \
libpng.so:graphics/png \
libprotobuf.so:devel/protobuf \
libsnappy.so:archivers/snappy \
libsrtp.so:net/libsrtp \
libwebp.so:graphics/webp
OPTIONS_SINGLE= AUDIO
OPTIONS_SINGLE_AUDIO= ALSA PULSEAUDIO
OPTIONS_DEFAULT= ALSA
AUDIO_DESC= Audio backend
ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib
ALSA_QMAKE_ON= QT_CONFIG+=alsa
PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
PULSEAUDIO_QMAKE_ON= QT_CONFIG+=pulseaudio
# We pass `norecursive' to USES=qmake because src/plugins/plugins.pro checks
# whether webenginewidgets is available, which fails when qmake processes all
# .pro files at once.
USES= gperf jpeg python:2,build pkgconfig \
qmake:norecursive,outsource shebangfix
USE_GNOME= glib20 libxml2 libxslt
USE_QT5= core designer gui location network qml quick webchannel \
widgets buildtools_build qmake_build
USE_XORG= scrnsaverproto x11 xcomposite xcursor xext xi xproto \
xrandr xrender xscrnsaver xtst
USE_LDCONFIG= ${QT_LIBDIR}
QT_DIST= ${PORTNAME}
QMAKE_ARGS= WEBENGINE_CONFIG+=use_nss \
WEBENGINE_CONFIG+=use_proprietary_codecs \
WEBENGINE_CONFIG+=use_system_libevent
# We could just set it to an empty string as well. "all" does not account for
# dependencies correctly in the generated Makefiles, use the right target here.
ALL_TARGET= first
# The build system reads the environment variable $NINJA_PATH to decide whether
# to boostrap ninja or not (and also to invoke it afterwards). CC and CXX are
# read by some Chromium code to determine which compiler to invoke when running
# some configuration tests.
# Since we use USES=qmake:norecursive, we also need to pass some variables to
# MAKE_ENV because part of the configuration process happens during the build.
CONFIGURE_ENV+= NINJAFLAGS="-j${MAKE_JOBS_NUMBER}" \
NINJA_PATH="${LOCALBASE}/bin/ninja"
MAKE_ENV+= CC="${CC}" CXX="${CXX}" ${CONFIGURE_ENV}
post-extract:
# Install FreeBSD's freebsd.pri file.
${CP} ${FILESDIR}/freebsd.pri ${WRKSRC}/src/core/config/freebsd.pri
# Unbundle libusb.
${RM} -r ${WRKSRC}/src/3rdparty/chromium/third_party/libusb/src
${CP} ${WRKSRC}/src/3rdparty/chromium/build/linux/unbundle/libusb.gyp \
${WRKSRC}/src/3rdparty/chromium/third_party/libusb/libusb.gyp
# Unbundle libxml.
${CP} ${WRKSRC}/src/3rdparty/chromium/build/linux/unbundle/libxml.gyp \
${WRKSRC}/src/3rdparty/chromium/third_party/libxml/libxml.gyp
post-patch:
# Too many occurrences to keep in a patch in files/.
${REINPLACE_CMD} -e 's,OS == "linux",(OS == "linux" or OS == "freebsd"),g' \
${WRKSRC}/src/3rdparty/chromium/third_party/ffmpeg/ffmpeg_generated.gypi
.include <bsd.port.mk>

View file

@ -0,0 +1 @@
TIMESTAMP = 1491910958

View file

@ -0,0 +1,16 @@
include(desktop_linux.pri)
GYP_CONFIG += disable_nacl=1 \
enable_basic_printing=0 \
enable_printing=0 \
enable_webrtc=0 \
enable_hidpi=1 \
use_dbus=1 \
use_pulseaudio=0
# Once the port works better, we can think about readding the diverse `use_system_<foo>`
# for bundled libraries.
# For now, only add very few system libraries.
GYP_CONFIG += use_system_yasm=1 \
use_system_libusb=1 \
use_system_libcxx=1

View file

@ -0,0 +1,13 @@
Disable USE_SYMBOLIZE, it assumes Linux is being used and does things such as
reading from /proc.
--- src/3rdparty/chromium/base/base.gyp.orig 2017-04-19 16:31:45 UTC
+++ src/3rdparty/chromium/base/base.gyp
@@ -46,7 +46,7 @@
'xdg_mime',
],
'defines': [
- 'USE_SYMBOLIZE',
+ # 'USE_SYMBOLIZE',
],
}, { # desktop_linux == 0 and chromeos == 0
'sources/': [

View file

@ -0,0 +1,17 @@
--- src/3rdparty/chromium/base/base.gypi.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/base/base.gypi
@@ -1006,9 +1006,14 @@
'process/memory_stubs.cc',
],
'sources/': [
+ ['exclude', '^debug/proc_maps_linux\\.cc$'],
+ ['exclude', '^files/file_path_watcher_fsevents\\.cc$'],
['exclude', '^files/file_path_watcher_linux\\.cc$'],
['exclude', '^files/file_path_watcher_stub\\.cc$'],
['exclude', '^files/file_util_linux\\.cc$'],
+ ['exclude', '^process/memory_linux\\.cc$'],
+ ['exclude', '^process/process_iterator_linux\\.cc$'],
+ ['exclude', '^process/process_metrics_linux\\.cc$'],
['exclude', '^process/process_linux\\.cc$'],
['exclude', '^sys_info_linux\\.cc$'],
],

View file

@ -0,0 +1,13 @@
--- src/3rdparty/chromium/base/files/file_path_watcher_kqueue.cc.orig 2017-04-19 09:33:16 UTC
+++ src/3rdparty/chromium/base/files/file_path_watcher_kqueue.cc
@@ -388,4 +388,10 @@ void FilePathWatcherKQueue::CancelOnMess
}
}
+// In the upstream version, this method is implemented in
+// file_path_watcher_mac.cc, which we obviously do not use.
+FilePathWatcher::FilePathWatcher() {
+ impl_ = new FilePathWatcherKQueue();
+}
+
} // namespace base

View file

@ -0,0 +1,14 @@
--- src/3rdparty/chromium/base/files/file_path_watcher_kqueue.h.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/base/files/file_path_watcher_kqueue.h
@@ -5,6 +5,11 @@
#ifndef BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_
#define BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_
+#ifdef __FreeBSD__
+#include <sys/stdint.h>
+#include <sys/types.h>
+#endif
+
#include <sys/event.h>
#include <vector>

View file

@ -0,0 +1,44 @@
--- src/3rdparty/chromium/base/posix/unix_domain_socket_linux.cc.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/base/posix/unix_domain_socket_linux.cc
@@ -21,6 +21,15 @@
#include <sys/uio.h>
#endif
+#if defined(__FreeBSD__)
+// Port over Linux ucred structure
+struct ucred {
+ pid_t pid; // process ID of the sending process
+ uid_t uid; // user ID of the sending process
+ gid_t gid; // group ID of the sending process
+};
+#endif
+
namespace base {
const size_t UnixDomainSocket::kMaxFileDescriptors = 16;
@@ -41,7 +50,13 @@ static bool CreateSocketPair(ScopedFD* one, ScopedFD*
// static
bool UnixDomainSocket::EnableReceiveProcessId(int fd) {
const int enable = 1;
+#if defined(__FreeBSD__)
+ // XXX(rene) do this? :
+ // taken from dbus, Academic Free License 2.1 / GPL 2+
+ return 0; // fake OK
+#else
return setsockopt(fd, SOL_SOCKET, SO_PASSCRED, &enable, sizeof(enable)) == 0;
+#endif
}
#endif // !defined(OS_NACL_NONSFI)
@@ -147,7 +162,11 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd,
// The PNaCl toolchain for Non-SFI binary build does not support
// SCM_CREDENTIALS.
if (cmsg->cmsg_level == SOL_SOCKET &&
+#if defined(__FreeBSD__)
+ 1) {
+#else
cmsg->cmsg_type == SCM_CREDENTIALS) {
+#endif
DCHECK_EQ(payload_len, sizeof(struct ucred));
DCHECK_EQ(pid, -1);
pid = reinterpret_cast<struct ucred*>(CMSG_DATA(cmsg))->pid;

View file

@ -0,0 +1,15 @@
Use the definition in memory.cc instead.
--- src/3rdparty/chromium/base/process/memory_stubs.cc.orig 2017-04-19 16:40:17 UTC
+++ src/3rdparty/chromium/base/process/memory_stubs.cc
@@ -32,9 +32,11 @@ bool UncheckedMalloc(size_t size, void**
return *result != nullptr;
}
+#if !defined(OS_BSD)
bool UncheckedCalloc(size_t num_items, size_t size, void** result) {
*result = calloc(num_items, size);
return *result != nullptr;
}
+#endif
} // namespace base

View file

@ -0,0 +1,10 @@
--- src/3rdparty/chromium/base/process/process_posix.cc.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/base/process/process_posix.cc
@@ -8,6 +8,7 @@
#include <stdint.h>
#include <sys/resource.h>
#include <sys/wait.h>
+#include <signal.h>
#include "base/files/scoped_file.h"
#include "base/logging.h"

View file

@ -0,0 +1,21 @@
--- src/3rdparty/chromium/base/threading/platform_thread_linux.cc.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/base/threading/platform_thread_linux.cc
@@ -17,7 +17,9 @@
#if !defined(OS_NACL)
#include <pthread.h>
+#if !defined(OS_BSD)
#include <sys/prctl.h>
+#endif
#include <sys/types.h>
#include <unistd.h>
#endif
@@ -81,7 +83,7 @@ void PlatformThread::SetName(const std::string& name)
ThreadIdNameManager::GetInstance()->SetName(CurrentId(), name);
tracked_objects::ThreadData::InitializeThreadContext(name);
-#if !defined(OS_NACL)
+#if !defined(OS_NACL) && !defined(OS_BSD)
// On linux we can get the thread names to show up in the debugger by setting
// the process name for the LWP. We don't want to do this for the main
// thread because that would rename the process, causing tools like killall

View file

@ -0,0 +1,29 @@
--- src/3rdparty/chromium/base/trace_event/process_memory_dump.cc.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/base/trace_event/process_memory_dump.cc
@@ -52,7 +52,7 @@ size_t ProcessMemoryDump::CountResidentB
const size_t page_count = (chunk_size + page_size - 1) / page_size;
size_t resident_page_count = 0;
-#if defined(OS_MACOSX) || defined(OS_IOS)
+#if defined(OS_MACOSX) || defined(OS_IOS) || defined(OS_BSD)
std::vector<char> vec(page_count + 1);
// mincore in MAC does not fail with EAGAIN.
result = mincore(chunk_start, chunk_size, vec.data());
@@ -61,7 +61,7 @@ size_t ProcessMemoryDump::CountResidentB
for (size_t i = 0; i < page_count; i++)
resident_page_count += vec[i] & MINCORE_INCORE ? 1 : 0;
-#else // defined(OS_MACOSX) || defined(OS_IOS)
+#else // defined(OS_MACOSX) || defined(OS_IOS) || defined(OS_BSD)
std::vector<unsigned char> vec(page_count + 1);
int error_counter = 0;
// HANDLE_EINTR tries for 100 times. So following the same pattern.
@@ -73,7 +73,7 @@ size_t ProcessMemoryDump::CountResidentB
for (size_t i = 0; i < page_count; i++)
resident_page_count += vec[i];
-#endif // defined(OS_MACOSX) || defined(OS_IOS)
+#endif // defined(OS_MACOSX) || defined(OS_IOS) || defined(OS_BSD)
total_resident_size += resident_page_count * page_size;
offset += kMaxChunkSize;

View file

@ -0,0 +1,11 @@
--- src/3rdparty/chromium/base/tracked_objects.cc.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/base/tracked_objects.cc
@@ -431,7 +431,7 @@ void ThreadData::OnThreadTerminationCleanup() {
}
// We must NOT do any allocations during this callback.
// Using the simple linked lists avoids all allocations.
- DCHECK_EQ(this->next_retired_worker_, reinterpret_cast<ThreadData*>(NULL));
+ DCHECK_EQ(this->next_retired_worker_, reinterpret_cast<ThreadData*>(0));
this->next_retired_worker_ = first_retired_worker_;
first_retired_worker_ = this;
}

View file

@ -0,0 +1,16 @@
--- src/3rdparty/chromium/build/common.gypi.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/build/common.gypi
@@ -4781,6 +4781,13 @@
'ldflags': [
'-Wl,--no-keep-memory',
],
+ 'ldflags!': [
+ '-ldl',
+ '-pie',
+ ],
+ 'libraries!': [
+ '-ldl',
+ ],
},
}],
# Android-specific options; note that most are set above with Linux.

View file

@ -0,0 +1,20 @@
--- src/3rdparty/chromium/build/linux/unbundle/libusb.gyp.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/build/linux/unbundle/libusb.gyp
@@ -18,14 +18,14 @@
],
'direct_dependent_settings': {
'cflags': [
- '<!@(pkg-config --cflags libusb-1.0)',
+ '',
],
'link_settings': {
'ldflags': [
- '<!@(pkg-config --libs-only-L --libs-only-other libusb-1.0)',
+ '-lusb',
],
'libraries': [
- '<!@(pkg-config --libs-only-l libusb-1.0)',
+ '-lusb',
],
},
},

View file

@ -0,0 +1,30 @@
We currently do not use the zygote code that Linux does.
--- src/3rdparty/chromium/content/app/content_main_runner.cc.orig 2017-04-19 16:52:23 UTC
+++ src/3rdparty/chromium/content/app/content_main_runner.cc
@@ -265,7 +265,7 @@ struct MainFunction {
int (*function)(const MainFunctionParams&);
};
-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
+#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
// On platforms that use the zygote, we have a special subset of
// subprocesses that are launched via the zygote. This function
// fills in some process-launching bits around ZygoteMain().
@@ -314,7 +314,7 @@ int RunZygote(const MainFunctionParams&
NOTREACHED() << "Unknown zygote process type: " << process_type;
return 1;
}
-#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
+#endif // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
#if !defined(OS_IOS)
static void RegisterMainThreadFactories() {
@@ -385,7 +385,7 @@ int RunNamedProcessTypeMain(
}
}
-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
+#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
// Zygote startup is special -- see RunZygote comments above
// for why we don't use ZygoteMain directly.
if (process_type == switches::kZygoteProcess)

View file

@ -0,0 +1,20 @@
--- src/3rdparty/chromium/content/browser/browser_main_loop.cc.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/content/browser/browser_main_loop.cc
@@ -189,7 +189,7 @@
namespace content {
namespace {
-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
+#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
void SetupSandbox(const base::CommandLine& parsed_command_line) {
TRACE_EVENT0("startup", "SetupSandbox");
base::FilePath sandbox_binary;
@@ -440,7 +440,7 @@ void BrowserMainLoop::EarlyInitialization() {
TRACE_EVENT0("startup", "BrowserMainLoop::EarlyInitialization");
TRACK_SCOPED_REGION("Startup", "BrowserMainLoop::EarlyInitialization");
-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
+#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
// No thread should be created before this call, as SetupSandbox()
// will end-up using fork().
SetupSandbox(parsed_command_line_);

View file

@ -0,0 +1,38 @@
--- src/3rdparty/chromium/content/browser/child_process_launcher.cc.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/content/browser/child_process_launcher.cc
@@ -198,7 +198,7 @@ void LaunchOnLauncherThread(const NotifyCallback& call
// We need to close the client end of the IPC channel to reliably detect
// child termination.
-#if !defined(OS_MACOSX)
+#if !defined(OS_MACOSX) && !defined(OS_BSD)
if (use_zygote) {
base::ProcessHandle handle = ZygoteHostImpl::GetInstance()->ForkRequest(
cmd_line->argv(), std::move(files_to_register), process_type);
@@ -296,7 +296,7 @@ void TerminateOnLauncherThread(bool zygote, base::Proc
process.Terminate(RESULT_CODE_NORMAL_EXIT, false);
// On POSIX, we must additionally reap the child.
#if defined(OS_POSIX)
-#if !defined(OS_MACOSX)
+#if !defined(OS_MACOSX) && !defined(OS_BSD)
if (zygote) {
// If the renderer was created via a zygote, we have to proxy the reaping
// through the zygote process.
@@ -398,7 +398,7 @@ void ChildProcessLauncher::Launch(
void ChildProcessLauncher::UpdateTerminationStatus(bool known_dead) {
DCHECK(CalledOnValidThread());
-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
+#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
if (zygote_) {
termination_status_ = ZygoteHostImpl::GetInstance()->
GetTerminationStatus(process_.Handle(), known_dead, &exit_code_);
@@ -469,7 +469,7 @@ void ChildProcessLauncher::Notify(
starting_ = false;
process_ = std::move(process);
-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
+#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD)
zygote_ = zygote;
#endif
if (process_.IsValid()) {

View file

@ -0,0 +1,20 @@
--- src/3rdparty/chromium/content/browser/download/file_metadata_linux.cc.orig 2017-04-20 13:00:41 UTC
+++ src/3rdparty/chromium/content/browser/download/file_metadata_linux.cc
@@ -6,7 +6,7 @@
#include <stddef.h>
#include <sys/types.h>
-#include <sys/xattr.h>
+#include <sys/extattr.h>
#include "base/files/file_path.h"
#include "base/files/file_util.h"
@@ -21,7 +21,7 @@ const char kReferrerURLAttrName[] = "use
static void SetExtendedFileAttribute(const char* path, const char* name,
const char* value, size_t value_size,
int flags) {
- int result = setxattr(path, name, value, value_size, flags);
+ int result = extattr_set_file(path, EXTATTR_NAMESPACE_USER, name, value, value_size);
if (result) {
DPLOG(ERROR)
<< "Could not set extended attribute " << name << " on file " << path;

View file

@ -0,0 +1,16 @@
--- src/3rdparty/chromium/content/browser/frame_host/render_widget_host_view_guest.cc.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/content/browser/frame_host/render_widget_host_view_guest.cc
@@ -338,11 +338,11 @@ gfx::NativeView RenderWidgetHostViewGuest::GetNativeVi
gfx::NativeViewId RenderWidgetHostViewGuest::GetNativeViewId() const {
if (!guest_)
- return static_cast<gfx::NativeViewId>(NULL);
+ return reinterpret_cast<gfx::NativeViewId>(NULL);
RenderWidgetHostView* rwhv = guest_->GetOwnerRenderWidgetHostView();
if (!rwhv)
- return static_cast<gfx::NativeViewId>(NULL);
+ return reinterpret_cast<gfx::NativeViewId>(NULL);
return rwhv->GetNativeViewId();
}

View file

@ -0,0 +1,11 @@
--- src/3rdparty/chromium/content/browser/geolocation/location_arbitrator_impl.cc.orig 2017-04-19 16:57:24 UTC
+++ src/3rdparty/chromium/content/browser/geolocation/location_arbitrator_impl.cc
@@ -174,7 +174,7 @@ LocationProvider* LocationArbitratorImpl
}
LocationProvider* LocationArbitratorImpl::NewSystemLocationProvider() {
-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)
+#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)
return NULL;
#else
return content::NewSystemLocationProvider();

View file

@ -0,0 +1,33 @@
--- src/3rdparty/chromium/content/content_browser.gypi.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/content/content_browser.gypi
@@ -2140,6 +2140,9 @@
['os_bsd==1', {
'sources/': [
['exclude', '^browser/gamepad/gamepad_platform_data_fetcher_linux\\.cc$'],
+ ['exclude', '^browser/zygote_host/zygote_host_impl_linux\\.cc$'],
+ ['exclude', '^zygote/zygote_linux\\.cc$'],
+ ['exclude', '^zygote/zygote_main_linux\\.cc$'],
],
}],
['use_aura==1', {
@@ -2191,14 +2194,16 @@
'browser/geolocation/empty_wifi_data_provider.cc',
],
}],
- ['OS == "linux" and use_dbus==1', {
- 'sources!': [
- 'browser/geolocation/empty_wifi_data_provider.cc',
- ],
+ ['use_dbus==1', {
'dependencies': [
'../build/linux/system.gyp:dbus',
'../dbus/dbus.gyp:dbus',
],
+ }],
+ ['OS == "linux" and use_dbus==1', {
+ 'sources!': [
+ 'browser/geolocation/empty_wifi_data_provider.cc',
+ ],
}, { # OS != "linux" or use_dbus==0
'sources!': [
'browser/geolocation/wifi_data_provider_linux.cc',

View file

@ -0,0 +1,32 @@
--- src/3rdparty/chromium/content/content_common.gypi.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/content/content_common.gypi
@@ -12,6 +12,7 @@
'../skia/skia.gyp:skia',
'../third_party/WebKit/public/blink_headers.gyp:blink_headers',
'../third_party/icu/icu.gyp:icuuc',
+ '../third_party/mesa/mesa.gyp:mesa_headers',
'../ui/accessibility/accessibility.gyp:accessibility',
'../ui/accessibility/accessibility.gyp:ax_gen',
'../ui/base/ime/ui_base_ime.gyp:ui_base_ime',
@@ -756,6 +757,21 @@
'content.gyp:common_aidl',
],
}],
+ ['os_bsd==1', {
+ 'sources!': [
+ 'common/sandbox_linux/bpf_cros_arm_gpu_policy_linux.cc',
+ 'common/sandbox_linux/bpf_gpu_policy_linux.cc',
+ 'common/sandbox_linux/bpf_ppapi_policy_linux.cc',
+ 'common/sandbox_linux/bpf_renderer_policy_linux.cc',
+ 'common/sandbox_linux/bpf_utility_policy_linux.cc',
+ 'common/sandbox_linux/sandbox_bpf_base_policy_linux.cc',
+ 'common/sandbox_linux/sandbox_debug_handling_linux.cc',
+ 'common/sandbox_linux/sandbox_init_linux.cc',
+ 'common/sandbox_linux/sandbox_linux.cc',
+ 'common/sandbox_linux/sandbox_seccomp_bpf_linux.cc',
+ 'common/set_process_title_linux.cc',
+ ],
+ }],
['use_pango == 1', {
'dependencies': [
'../build/linux/system.gyp:pangocairo',

View file

@ -0,0 +1,18 @@
--- src/3rdparty/chromium/content/gpu/gpu_child_thread.cc.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/content/gpu/gpu_child_thread.cc
@@ -306,6 +306,7 @@ void GpuChildThread::StopWatchdog() {
}
void GpuChildThread::OnCollectGraphicsInfo() {
+#if !defined(OS_FREEBSD)
#if defined(OS_WIN)
// GPU full info collection should only happen on un-sandboxed GPU process
// or single process/in-process gpu mode on Windows.
@@ -348,6 +349,7 @@ void GpuChildThread::OnCollectGraphicsInfo() {
base::MessageLoop::current()->QuitWhenIdle();
}
#endif // OS_WIN
+#endif
}
void GpuChildThread::OnGetVideoMemoryUsageStats() {

View file

@ -0,0 +1,45 @@
--- src/3rdparty/chromium/content/gpu/gpu_main.cc.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/content/gpu/gpu_main.cc
@@ -99,7 +99,7 @@ void GetGpuInfoFromCommandLine(gpu::GPUInfo& gpu_info,
const base::CommandLine& command_line);
bool WarmUpSandbox(const base::CommandLine& command_line);
-#if !defined(OS_MACOSX)
+#if !defined(OS_MACOSX) && !defined(OS_FREEBSD)
bool CollectGraphicsInfo(gpu::GPUInfo& gpu_info);
#endif
@@ -191,13 +191,13 @@ int GpuMain(const MainFunctionParams& parameters) {
#else
base::MessageLoop main_message_loop(base::MessageLoop::TYPE_UI);
#endif
-#elif defined(OS_LINUX) && defined(USE_X11)
+#elif (defined(OS_LINUX)||defined(OS_BSD)) && defined(USE_X11)
// We need a UI loop so that we can grab the Expose events. See GLSurfaceGLX
// and https://crbug.com/326995.
base::MessageLoop main_message_loop(base::MessageLoop::TYPE_UI);
scoped_ptr<ui::PlatformEventSource> event_source =
ui::PlatformEventSource::CreateDefault();
-#elif defined(OS_LINUX)
+#elif defined(OS_LINUX)||defined(OS_BSD)
base::MessageLoop main_message_loop(base::MessageLoop::TYPE_DEFAULT);
#elif defined(OS_MACOSX)
// This is necessary for CoreAnimation layers hosted in the GPU process to be
@@ -303,7 +303,7 @@ int GpuMain(const MainFunctionParams& parameters) {
// and we already registered them through SetGpuInfo() above.
base::TimeTicks before_collect_context_graphics_info =
base::TimeTicks::Now();
-#if !defined(OS_MACOSX)
+#if !defined(OS_MACOSX) && !defined(OS_FREEBSD)
if (!CollectGraphicsInfo(gpu_info))
dead_on_arrival = true;
@@ -457,7 +457,7 @@ bool WarmUpSandbox(const base::CommandLine& command_li
return true;
}
-#if !defined(OS_MACOSX)
+#if !defined(OS_MACOSX) && !defined(OS_FREEBSD)
bool CollectGraphicsInfo(gpu::GPUInfo& gpu_info) {
TRACE_EVENT0("gpu,startup", "Collect Graphics Info");

View file

@ -0,0 +1,21 @@
--- src/3rdparty/chromium/content/renderer/devtools/v8_sampling_profiler.cc.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/content/renderer/devtools/v8_sampling_profiler.cc
@@ -6,6 +6,7 @@
#include <stdint.h>
#include <string.h>
+#include <ucontext.h>
#include "base/format_macros.h"
#include "base/location.h"
@@ -544,6 +546,10 @@ void V8SamplingThread::HandleProfilerSignal(int signal
state.pc = reinterpret_cast<void*>(mcontext->__ss.REG_64_32(__rip, __eip));
state.sp = reinterpret_cast<void*>(mcontext->__ss.REG_64_32(__rsp, __esp));
state.fp = reinterpret_cast<void*>(mcontext->__ss.REG_64_32(__rbp, __ebp));
+#elif defined(OS_FREEBSD)
+ state.pc = reinterpret_cast<void*>(mcontext.REG_64_32(mc_rip, mc_eip));
+ state.sp = reinterpret_cast<void*>(mcontext.REG_64_32(mc_rsp, mc_esp));
+ state.fp = reinterpret_cast<void*>(mcontext.REG_64_32(mc_rbp, mc_ebp));
#else
state.pc =
reinterpret_cast<void*>(mcontext.gregs[REG_64_32(REG_RIP, REG_EIP)]);

View file

@ -0,0 +1,18 @@
--- src/3rdparty/chromium/content/renderer/renderer_main_platform_delegate_linux.cc.orig 2017-04-20 13:24:44 UTC
+++ src/3rdparty/chromium/content/renderer/renderer_main_platform_delegate_linux.cc
@@ -29,6 +29,7 @@ void RendererMainPlatformDelegate::Platf
}
bool RendererMainPlatformDelegate::EnableSandbox() {
+#if defined(OS_LINUX)
// The setuid sandbox is started in the zygote process: zygote_main_linux.cc
// http://code.google.com/p/chromium/wiki/LinuxSUIDSandbox
//
@@ -60,6 +61,7 @@ bool RendererMainPlatformDelegate::Enabl
}
#endif // __x86_64__
+#endif // defined(OS_LINUX)
return true;
}

View file

@ -0,0 +1,24 @@
--- src/3rdparty/chromium/crypto/nss_util.cc.orig 2017-04-23 10:32:17 UTC
+++ src/3rdparty/chromium/crypto/nss_util.cc
@@ -15,7 +15,7 @@
#include "crypto/nss_util_internal.h"
-#if defined(OS_OPENBSD)
+#if defined(OS_BSD)
#include <sys/mount.h>
#include <sys/param.h>
#endif
@@ -158,10 +158,10 @@ void UseLocalCacheOfNSSDatabaseIfNFS(con
base::FileSystemType fs_type = base::FILE_SYSTEM_UNKNOWN;
if (base::GetFileSystemType(database_dir, &fs_type))
db_on_nfs = (fs_type == base::FILE_SYSTEM_NFS);
-#elif defined(OS_OPENBSD)
+#elif defined(OS_BSD)
struct statfs buf;
if (statfs(database_dir.value().c_str(), &buf) == 0)
- db_on_nfs = (strcmp(buf.f_fstypename, MOUNT_NFS) == 0);
+ db_on_nfs = (strcmp(buf.f_fstypename, "nfs") == 0);
#else
NOTIMPLEMENTED();
#endif

View file

@ -0,0 +1,22 @@
--- src/3rdparty/chromium/device/usb/usb_context.cc.orig 2017-04-11 14:15:58 UTC
+++ src/3rdparty/chromium/device/usb/usb_context.cc
@@ -9,8 +9,7 @@
#include "base/macros.h"
#include "base/threading/simple_thread.h"
#include "device/usb/usb_error.h"
-#include "third_party/libusb/src/libusb/interrupt.h"
-#include "third_party/libusb/src/libusb/libusb.h"
+#include "libusb.h"
namespace device {
@@ -58,7 +57,9 @@ void UsbContext::UsbEventHandler::Run() {
void UsbContext::UsbEventHandler::Stop() {
base::subtle::Release_Store(&running_, 0);
+#if !defined(__FreeBSD__)
libusb_interrupt_handle_event(context_);
+#endif
}
UsbContext::UsbContext(PlatformUsbContext context) : context_(context) {

View file

@ -0,0 +1,48 @@
The hotplug API is not available on FreeBSD <= 10.3.
The API was added in base r302080, so it is part of FreeBSD 11.0+. It was
MFC'ed to stable/10 in r302275, which is between __FreeBSD_version's 1003505
(r302228) and 1003506 (r304611).
--- src/3rdparty/chromium/device/usb/usb_service_impl.cc.orig 2017-04-20 16:14:07 UTC
+++ src/3rdparty/chromium/device/usb/usb_service_impl.cc
@@ -482,6 +482,7 @@ UsbServiceImpl::UsbServiceImpl(
}
context_ = new UsbContext(platform_context);
+#if defined(__FreeBSD_version) && __FreeBSD_version >= 1003506
rv = libusb_hotplug_register_callback(
context_->context(),
static_cast<libusb_hotplug_event>(LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED |
@@ -492,6 +493,7 @@ UsbServiceImpl::UsbServiceImpl(
if (rv == LIBUSB_SUCCESS) {
hotplug_enabled_ = true;
}
+#endif
RefreshDevices();
#if defined(OS_WIN)
@@ -504,7 +506,9 @@ UsbServiceImpl::UsbServiceImpl(
UsbServiceImpl::~UsbServiceImpl() {
if (hotplug_enabled_) {
+#if defined(__FreeBSD_version) && __FreeBSD_version >= 1003506
libusb_hotplug_deregister_callback(context_->context(), hotplug_handle_);
+#endif
}
for (const auto& map_entry : devices_) {
map_entry.second->OnDisconnect();
@@ -744,6 +748,7 @@ void UsbServiceImpl::RemoveDevice(scoped
}
// static
+#if defined(__FreeBSD_version) && __FreeBSD_version >= 1003506
int LIBUSB_CALL UsbServiceImpl::HotplugCallback(libusb_context* context,
PlatformUsbDevice device,
libusb_hotplug_event event,
@@ -799,5 +804,6 @@ void UsbServiceImpl::OnPlatformDeviceRem
}
libusb_unref_device(platform_device);
}
+#endif // defined(__FreeBSD_version) && __FreeBSD_version >= 1003506
} // namespace device

View file

@ -0,0 +1,33 @@
The hotplug API is not available on FreeBSD <= 10.3.
The API was added in base r302080, so it is part of FreeBSD 11.0+. It was
MFC'ed to stable/10 in r302275, which is between __FreeBSD_version's 1003505
(r302228) and 1003506 (r304611).
--- src/3rdparty/chromium/device/usb/usb_service_impl.h.orig 2017-04-20 16:14:03 UTC
+++ src/3rdparty/chromium/device/usb/usb_service_impl.h
@@ -72,6 +72,7 @@ class UsbServiceImpl :
void RemoveDevice(scoped_refptr<UsbDeviceImpl> device);
// Handle hotplug events from libusb.
+#if defined(__FreeBSD_version) && __FreeBSD_version >= 1003506
static int LIBUSB_CALL HotplugCallback(libusb_context* context,
PlatformUsbDevice device,
libusb_hotplug_event event,
@@ -79,6 +80,7 @@ class UsbServiceImpl :
// These functions release a reference to the provided platform device.
void OnPlatformDeviceAdded(PlatformUsbDevice platform_device);
void OnPlatformDeviceRemoved(PlatformUsbDevice platform_device);
+#endif
scoped_refptr<UsbContext> context_;
scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
@@ -88,7 +90,9 @@ class UsbServiceImpl :
// connected instead of only when a full enumeration is requested.
// TODO(reillyg): Support this on all platforms. crbug.com/411715
bool hotplug_enabled_ = false;
+#if defined(__FreeBSD_version) && __FreeBSD_version >= 1003506
libusb_hotplug_callback_handle hotplug_handle_;
+#endif
// Enumeration callbacks are queued until an enumeration completes.
bool enumeration_ready_ = false;

View file

@ -0,0 +1,17 @@
--- src/3rdparty/chromium/gpu/gpu_config.gypi.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/gpu/gpu_config.gypi
@@ -66,12 +66,12 @@
'../third_party/amd/amd_videocard_info_win.cc',
],
}],
- ['OS=="linux" and use_libpci==1 and (use_x11==1 or use_ozone==1)', {
+ ['(OS=="linux" or os_bsd==1) and use_libpci==1 and (use_x11==1 or use_ozone==1)', {
'dependencies': [
'../build/linux/system.gyp:libpci',
],
}],
- ['OS=="linux" and use_x11==1', {
+ ['(OS=="linux" or os_bsd==1) and use_x11==1', {
'dependencies': [
'../build/linux/system.gyp:x11',
'../build/linux/system.gyp:xext',

View file

@ -0,0 +1,11 @@
--- src/3rdparty/chromium/media/capture/video/file_video_capture_device_factory.cc.orig 2017-04-23 10:37:42 UTC
+++ src/3rdparty/chromium/media/capture/video/file_video_capture_device_factory.cc
@@ -50,7 +50,7 @@ void FileVideoCaptureDeviceFactory::GetD
device_names->push_back(VideoCaptureDevice::Name(
command_line_file_path.value(), kFileVideoCaptureDeviceName,
VideoCaptureDevice::Name::AVFOUNDATION));
-#elif defined(OS_LINUX)
+#elif defined(OS_LINUX) || defined(OS_BSD)
device_names->push_back(VideoCaptureDevice::Name(
command_line_file_path.value(), kFileVideoCaptureDeviceName,
VideoCaptureDevice::Name::V4L2_SINGLE_PLANE));

View file

@ -0,0 +1,21 @@
--- src/3rdparty/chromium/media/capture/video/linux/v4l2_capture_delegate.cc.orig 2017-04-19 19:13:43 UTC
+++ src/3rdparty/chromium/media/capture/video/linux/v4l2_capture_delegate.cc
@@ -20,7 +20,7 @@
#include "media/capture/video/linux/v4l2_capture_delegate_single_plane.h"
#include "media/capture/video/linux/video_capture_device_linux.h"
-#if !defined(OS_OPENBSD)
+#if !defined(OS_BSD)
#include <linux/version.h>
#endif
@@ -277,9 +277,7 @@ void V4L2CaptureDelegate::AllocateAndSta
// operation (|errno| == EINVAL in this case) or plain failure.
if ((power_line_frequency_ == V4L2_CID_POWER_LINE_FREQUENCY_50HZ)
|| (power_line_frequency_ == V4L2_CID_POWER_LINE_FREQUENCY_60HZ)
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)
|| (power_line_frequency_ == V4L2_CID_POWER_LINE_FREQUENCY_AUTO)
-#endif
) {
struct v4l2_control control = {};
control.id = V4L2_CID_POWER_LINE_FREQUENCY;

View file

@ -0,0 +1,25 @@
--- src/3rdparty/chromium/media/capture/video/linux/video_capture_device_linux.cc.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/media/capture/video/linux/video_capture_device_linux.cc
@@ -17,7 +17,9 @@
#include <sys/videoio.h>
#else
#include <linux/videodev2.h>
+#if !defined(OS_BSD)
#include <linux/version.h>
+#endif // defined(OS_BSD)
#endif
namespace media {
@@ -144,12 +146,8 @@ int VideoCaptureDeviceLinux::TranslatePo
case media::PowerLineFrequency::FREQUENCY_60HZ:
return V4L2_CID_POWER_LINE_FREQUENCY_60HZ;
default:
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,2,0)
// If we have no idea of the frequency, at least try and set it to AUTO.
return V4L2_CID_POWER_LINE_FREQUENCY_AUTO;
-#else
- return V4L2_CID_POWER_LINE_FREQUENCY_60HZ;
-#endif
}
}

View file

@ -0,0 +1,20 @@
--- src/3rdparty/chromium/media/capture/video/video_capture_device.cc.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/media/capture/video/video_capture_device.cc
@@ -35,7 +35,7 @@ VideoCaptureDevice::Name::Name(const std
: device_name_(name), unique_id_(id) {
}
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_BSD)
VideoCaptureDevice::Name::Name(const std::string& name,
const std::string& id,
const CaptureApiType api_type)
@@ -82,7 +82,7 @@ VideoCaptureDevice::Name::Name(const std
VideoCaptureDevice::Name::~Name() {
}
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_BSD)
const char* VideoCaptureDevice::Name::GetCaptureApiTypeString() const {
switch (capture_api_type()) {
case V4L2_SINGLE_PLANE:

View file

@ -0,0 +1,38 @@
--- src/3rdparty/chromium/media/capture/video/video_capture_device.h.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/media/capture/video/video_capture_device.h
@@ -51,7 +51,7 @@ class MEDIA_EXPORT VideoCaptureDevice {
Name();
Name(const std::string& name, const std::string& id);
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_BSD)
// Linux/CrOS targets Capture Api type: it can only be set on construction.
enum CaptureApiType {
V4L2_SINGLE_PLANE,
@@ -83,7 +83,7 @@ class MEDIA_EXPORT VideoCaptureDevice {
#endif
#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
- defined(OS_ANDROID)
+ defined(OS_ANDROID) || defined(OS_BSD)
Name(const std::string& name,
const std::string& id,
const CaptureApiType api_type);
@@ -120,7 +120,7 @@ class MEDIA_EXPORT VideoCaptureDevice {
bool operator<(const Name& other) const { return unique_id_ < other.id(); }
#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
- defined(OS_ANDROID)
+ defined(OS_ANDROID) || defined(OS_BSD)
CaptureApiType capture_api_type() const {
return capture_api_class_.capture_api_type();
}
@@ -144,7 +144,7 @@ class MEDIA_EXPORT VideoCaptureDevice {
std::string device_name_;
std::string unique_id_;
#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \
- defined(OS_ANDROID)
+ defined(OS_ANDROID) || defined(OS_BSD)
// This class wraps the CaptureApiType to give it a by default value if not
// initialized.
class CaptureApiClass {

View file

@ -0,0 +1,11 @@
--- src/3rdparty/chromium/media/capture/video/video_capture_device_factory.cc.orig 2017-04-23 20:12:45 UTC
+++ src/3rdparty/chromium/media/capture/video/video_capture_device_factory.cc
@@ -55,7 +55,7 @@ void VideoCaptureDeviceFactory::Enumerat
}
#if !defined(OS_MACOSX) && !defined(OS_LINUX) && !defined(OS_ANDROID) && \
- !defined(OS_WIN)
+ !defined(OS_WIN) && !defined(OS_BSD)
// static
VideoCaptureDeviceFactory*
VideoCaptureDeviceFactory::CreateVideoCaptureDeviceFactory(

View file

@ -0,0 +1,10 @@
--- src/3rdparty/chromium/media/filters/vp9_parser.h.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/media/filters/vp9_parser.h
@@ -14,6 +14,7 @@
#include <stddef.h>
#include <stdint.h>
+#include <sys/types.h>
#include <deque>

View file

@ -0,0 +1,20 @@
--- src/3rdparty/chromium/media/media.gyp.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/media/media.gyp
@@ -809,7 +809,7 @@
'capture/video/linux/v4l2_capture_delegate_multi_plane.h',
],
}],
- ['OS=="linux"', {
+ ['OS=="linux" or os_bsd==1', {
'conditions': [
['use_x11==1', {
'dependencies': [
@@ -1146,7 +1146,7 @@
'base/simd/filter_yuv_sse2.cc',
],
}],
- ['OS!="linux" and OS!="win"', {
+ ['OS!="linux" and OS!="win" and os_bsd!=1', {
'sources!': [
'base/keyboard_event_counter.cc',
'base/keyboard_event_counter.h',

View file

@ -0,0 +1,15 @@
--- src/3rdparty/chromium/net/base/address_tracker_linux.h.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/net/base/address_tracker_linux.h
@@ -6,10 +6,12 @@
#define NET_BASE_ADDRESS_TRACKER_LINUX_H_
#include <sys/socket.h> // Needed to include netlink.
+#if !defined(__FreeBSD__)
// Mask superfluous definition of |struct net|. This is fixed in Linux 2.6.38.
#define net net_kernel
#include <linux/rtnetlink.h>
#undef net
+#endif
#include <stddef.h>
#include <map>

View file

@ -0,0 +1,21 @@
Piggyback on the existing #ifdefs for the definitions of some stub functions.
--- src/3rdparty/chromium/net/base/network_interfaces_posix.cc.orig 2017-04-20 16:49:59 UTC
+++ src/3rdparty/chromium/net/base/network_interfaces_posix.cc
@@ -9,7 +9,7 @@
#include "base/memory/scoped_ptr.h"
-#if !defined(OS_NACL)
+#if !defined(OS_NACL) && !defined(OS_BSD)
#include "net/base/network_interfaces_posix.h"
#include <net/if.h>
#include <netinet/in.h>
@@ -17,7 +17,7 @@
namespace net {
-#if !defined(OS_NACL)
+#if !defined(OS_NACL) && !defined(OS_BSD)
namespace internal {
// The application layer can pass |policy| defined in net_util.h to

View file

@ -0,0 +1,11 @@
Needed on FreeBSD 10.3.
--- src/3rdparty/chromium/net/dns/address_sorter_posix.cc.orig 2017-04-20 10:17:24 UTC
+++ src/3rdparty/chromium/net/dns/address_sorter_posix.cc
@@ -11,6 +11,7 @@
#include <sys/socket.h> // Must be included before ifaddrs.h.
#include <ifaddrs.h>
#include <net/if.h>
+#include <net/if_var.h>
#include <netinet/in_var.h>
#include <string.h>
#include <sys/ioctl.h>

View file

@ -0,0 +1,17 @@
Include all headers required by res_init(3) and friends.
Note that as of base r289315 (present in FreeBSD 11+), the libc resolver
already reloads /etc/resolv.conf when it is changed, so we should also consider
whether to just disable this functionality in Chromium altogether.
--- src/3rdparty/chromium/net/dns/dns_reloader.cc.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/net/dns/dns_reloader.cc
@@ -7,6 +7,9 @@
#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \
!defined(OS_ANDROID)
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
#include <resolv.h>
#include "base/lazy_instance.h"

View file

@ -0,0 +1,33 @@
--- src/3rdparty/chromium/net/net.gypi.orig 2017-04-19 19:48:59 UTC
+++ src/3rdparty/chromium/net/net.gypi
@@ -435,8 +435,8 @@
'android/network_library.h',
'android/traffic_stats.cc',
'android/traffic_stats.h',
- 'base/address_tracker_linux.cc',
- 'base/address_tracker_linux.h',
+ # 'base/address_tracker_linux.cc',
+ # 'base/address_tracker_linux.h',
'base/backoff_entry.cc',
'base/backoff_entry.h',
'base/backoff_entry_serializer.cc',
@@ -497,8 +497,8 @@
'base/network_change_notifier.cc',
'base/network_change_notifier.h',
'base/network_change_notifier_factory.h',
- 'base/network_change_notifier_linux.cc',
- 'base/network_change_notifier_linux.h',
+ # 'base/network_change_notifier_linux.cc',
+ # 'base/network_change_notifier_linux.h',
'base/network_change_notifier_mac.cc',
'base/network_change_notifier_mac.h',
'base/network_change_notifier_win.cc',
@@ -509,7 +509,7 @@
'base/network_delegate.h',
'base/network_delegate_impl.cc',
'base/network_delegate_impl.h',
- 'base/network_interfaces_linux.cc',
+ # 'base/network_interfaces_linux.cc',
'base/network_interfaces_mac.cc',
'base/network_interfaces_win.cc',
'base/network_quality_estimator.cc',

View file

@ -0,0 +1,10 @@
--- src/3rdparty/chromium/ppapi/shared_impl/private/net_address_private_impl.cc.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/ppapi/shared_impl/private/net_address_private_impl.cc
@@ -24,6 +24,7 @@
#include <ws2tcpip.h>
#elif defined(OS_POSIX) && !defined(OS_NACL)
#include <arpa/inet.h>
+#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/types.h>
#endif

View file

@ -0,0 +1,11 @@
--- src/3rdparty/chromium/skia/skia_chrome.gypi.orig 2017-04-20 12:39:06 UTC
+++ src/3rdparty/chromium/skia/skia_chrome.gypi
@@ -66,7 +66,7 @@
'ext/skia_utils_base.cc',
],
}],
- [ 'OS != "android" and (OS != "linux" or use_cairo==1)', {
+ [ 'OS != "android" and ((OS != "linux" and os_bsd != 1) or use_cairo==1)', {
'sources!': [
'ext/bitmap_platform_device_skia.cc',
],

View file

@ -0,0 +1,11 @@
--- src/3rdparty/chromium/third_party/WebKit/Source/bindings/core/v8/V8ScriptRunner.cpp.orig 2017-04-11 12:57:39 UTC
+++ src/3rdparty/chromium/third_party/WebKit/Source/bindings/core/v8/V8ScriptRunner.cpp
@@ -43,6 +43,8 @@
#if OS(WIN)
#include <malloc.h>
+#elif defined(__FreeBSD__)
+#include <stdlib.h>
#else
#include <alloca.h>
#endif

View file

@ -0,0 +1,34 @@
--- src/3rdparty/chromium/third_party/WebKit/Source/core/core.gyp.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/third_party/WebKit/Source/core/core.gyp
@@ -458,13 +458,13 @@
'layout/LayoutThemeMac.mm',
],
}],
- ['OS != "linux"', {
+ ['OS != "linux" and os_bsd != 1', {
'sources!': [
'layout/LayoutThemeLinux.cpp',
'layout/LayoutThemeLinux.h',
],
}],
- ['OS != "linux" and OS != "android"', {
+ ['OS != "linux" and OS != "android" and os_bsd != 1', {
'sources!': [
'layout/LayoutThemeFontProviderLinux.cpp',
],
@@ -785,13 +785,13 @@
'layout/LayoutThemeMac.mm',
],
}],
- ['OS != "linux"', {
+ ['OS != "linux" and os_bsd != 1', {
'sources!': [
'layout/LayoutThemeLinux.cpp',
'layout/LayoutThemeLinux.h',
],
}],
- ['OS != "linux" and OS != "android"', {
+ ['OS != "linux" and OS != "android" and os_bsd == 1', {
'sources!': [
'layout/LayoutThemeFontProviderLinux.cpp',
],

View file

@ -0,0 +1,38 @@
--- src/3rdparty/chromium/third_party/WebKit/Source/platform/blink_platform.gyp.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/third_party/WebKit/Source/platform/blink_platform.gyp
@@ -203,7 +204,7 @@
['include', 'graphics/cpu/x86/WebGLImageConversionSSE\\.h$'],
],
}],
- ['OS=="linux" or OS=="android" or OS=="win"', {
+ ['OS=="linux" or OS=="android" or OS=="win" or os_bsd==1', {
'sources/': [
# Cherry-pick files excluded by the broader regular expressions above.
['include', 'fonts/opentype/OpenTypeTypes\\.h$'],
@@ -214,7 +215,7 @@
],
},
],
- ['OS=="linux" or OS=="android"', {
+ ['OS=="linux" or OS=="android" or os_bsd==1', {
'sources/': [
['include', 'fonts/linux/FontPlatformDataLinux\\.cpp$'],
]
@@ -307,7 +308,7 @@
['exclude', 'scroll/ScrollbarThemeMac'],
],
}],
- ['OS != "linux" and OS != "mac" and OS != "win"', {
+ ['OS != "linux" and OS != "mac" and OS != "win" and os_bsd != 1', {
'sources/': [
['exclude', 'VDMX[^/]+\\.(cpp|h)$'],
],
@@ -350,7 +351,7 @@
['exclude', 'Android\\.cpp$'],
],
}],
- ['OS=="linux"', {
+ ['OS=="linux" or os_bsd==1', {
'dependencies': [
'<(DEPTH)/build/linux/system.gyp:fontconfig',
],

View file

@ -0,0 +1,11 @@
--- src/3rdparty/chromium/third_party/WebKit/Source/platform/fonts/FontPlatformData.cpp.orig 2017-04-11 14:26:52 UTC
+++ src/3rdparty/chromium/third_party/WebKit/Source/platform/fonts/FontPlatformData.cpp
@@ -357,7 +357,7 @@ PassRefPtr<SharedBuffer> FontPlatformData::openTypeTab
{
RefPtr<SharedBuffer> buffer;
- SkFontTableTag tag = WTF::bswap32(table);
+ SkFontTableTag tag = bswap32(table);
const size_t tableSize = m_typeface->getTableSize(tag);
if (tableSize) {
Vector<char> tableBuffer(tableSize);

View file

@ -0,0 +1,11 @@
--- src/3rdparty/chromium/third_party/WebKit/Source/platform/heap/StackFrameDepth.cpp.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/third_party/WebKit/Source/platform/heap/StackFrameDepth.cpp
@@ -6,6 +6,8 @@
#include "public/platform/Platform.h"
+#include <pthread_np.h>
+
#if OS(WIN)
#include <stddef.h>
#include <windows.h>

View file

@ -0,0 +1,11 @@
--- src/3rdparty/chromium/third_party/WebKit/Source/web/web.gyp.orig 2017-04-19 18:03:26 UTC
+++ src/3rdparty/chromium/third_party/WebKit/Source/web/web.gyp
@@ -161,7 +161,7 @@
'../core/core.gyp:webcore',
],
}],
- ['OS == "linux"', {
+ ['OS == "linux" or os_bsd == 1', {
'dependencies': [
'<(DEPTH)/build/linux/system.gyp:fontconfig',
],

View file

@ -0,0 +1,18 @@
--- src/3rdparty/chromium/third_party/WebKit/Source/wtf/ByteSwap.h.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/third_party/WebKit/Source/wtf/ByteSwap.h
@@ -52,9 +52,15 @@ ALWAYS_INLINE uint16_t bswap16(uint16_t x) { return _b
#else
+#ifndef bswap64
ALWAYS_INLINE uint64_t bswap64(uint64_t x) { return __builtin_bswap64(x); }
+#endif
+#ifndef bswap32
ALWAYS_INLINE uint32_t bswap32(uint32_t x) { return __builtin_bswap32(x); }
+#endif
+#ifndef bswap16
ALWAYS_INLINE uint16_t bswap16(uint16_t x) { return __builtin_bswap16(x); }
+#endif
#endif

View file

@ -0,0 +1,12 @@
--- src/3rdparty/chromium/third_party/ffmpeg/libavutil/mem.c.orig 2017-04-28 19:55:07 UTC
+++ src/3rdparty/chromium/third_party/ffmpeg/libavutil/mem.c
@@ -32,9 +32,6 @@
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
-#if HAVE_MALLOC_H
-#include <malloc.h>
-#endif
#include "avassert.h"
#include "avutil.h"

View file

@ -0,0 +1,11 @@
--- src/3rdparty/chromium/third_party/libjingle/libjingle.gyp.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/third_party/libjingle/libjingle.gyp
@@ -395,7 +395,7 @@
],
'conditions': [
# TODO(mallinath) - Enable SCTP for iOS.
- ['OS!="ios"', {
+ ['OS!="ios" and os_bsd!=1', {
'defines': [
'HAVE_SCTP',
],

View file

@ -0,0 +1,12 @@
Already fixed upstream:
https://github.com/khaledhosny/ots/commit/5d82ccd35fa61f605a43a5433625e379ca0f4018
--- src/3rdparty/chromium/third_party/ots/include/opentype-sanitiser.h.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/third_party/ots/include/opentype-sanitiser.h
@@ -22,6 +22,7 @@ typedef unsigned __int64 uint64_t;
#else
#include <arpa/inet.h>
#include <stdint.h>
+#include <sys/types.h>
#endif
#include <algorithm>

View file

@ -0,0 +1,47 @@
--- src/3rdparty/chromium/third_party/sfntly/src/cpp/src/sfntly/table/core/cmap_table.cc.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/third_party/sfntly/src/cpp/src/sfntly/table/core/cmap_table.cc
@@ -439,7 +439,7 @@ CMapTable::CMapFormat0::Builder::Builder(
}
CMapTable::CMapFormat0::Builder::Builder(const CMapId& cmap_id)
- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
+ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
CMapFormat::kFormat0,
cmap_id) {
}
@@ -563,7 +563,7 @@ CMapTable::CMapFormat2::Builder::Builder(WritableFontD
: CMapTable::CMap::Builder(data ? down_cast<WritableFontData*>(
data->Slice(offset, data->ReadUShort(
offset + Offset::kFormat0Length)))
- : reinterpret_cast<WritableFontData*>(NULL),
+ : static_cast<WritableFontData*>(NULL),
CMapFormat::kFormat2, cmap_id) {
// TODO(arthurhsu): FIXIT: heavy lifting and leak, need fix.
}
@@ -574,7 +574,7 @@ CMapTable::CMapFormat2::Builder::Builder(ReadableFontD
: CMapTable::CMap::Builder(data ? down_cast<ReadableFontData*>(
data->Slice(offset, data->ReadUShort(
offset + Offset::kFormat0Length)))
- : reinterpret_cast<ReadableFontData*>(NULL),
+ : static_cast<ReadableFontData*>(NULL),
CMapFormat::kFormat2, cmap_id) {
// TODO(arthurhsu): FIXIT: heavy lifting and leak, need fix.
}
@@ -958,7 +958,7 @@ CMapTable::CMapFormat4::Builder::Builder(WritableFontD
CMapTable::CMapFormat4::Builder::Builder(SegmentList* segments,
IntegerList* glyph_id_array,
const CMapId& cmap_id)
- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
+ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
CMapFormat::kFormat4, cmap_id),
segments_(segments->begin(), segments->end()),
glyph_id_array_(glyph_id_array->begin(), glyph_id_array->end()) {
@@ -966,7 +966,7 @@ CMapTable::CMapFormat4::Builder::Builder(SegmentList*
}
CMapTable::CMapFormat4::Builder::Builder(const CMapId& cmap_id)
- : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL),
+ : CMap::Builder(static_cast<ReadableFontData*>(NULL),
CMapFormat::kFormat4, cmap_id) {
}

View file

@ -0,0 +1,29 @@
--- src/3rdparty/chromium/third_party/webrtc/base/platform_thread.cc.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/third_party/webrtc/base/platform_thread.cc
@@ -12,6 +12,8 @@
#include "webrtc/base/checks.h"
+#include <pthread_np.h>
+
#if defined(WEBRTC_LINUX)
#include <sys/prctl.h>
#include <sys/syscall.h>
@@ -30,6 +32,8 @@ PlatformThreadId CurrentThreadId() {
ret = syscall(__NR_gettid);
#elif defined(WEBRTC_ANDROID)
ret = gettid();
+#elif defined(BSD)
+ ret = pthread_getthreadid_np();
#else
// Default implementation for nacl and solaris.
ret = reinterpret_cast<pid_t>(pthread_self());
@@ -73,6 +77,8 @@ void SetCurrentThreadName(const char* na
prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(name));
#elif defined(WEBRTC_MAC) || defined(WEBRTC_IOS)
pthread_setname_np(name);
+#elif defined(BSD)
+ pthread_set_name_np(pthread_self(), name);
#endif
}

View file

@ -0,0 +1,11 @@
--- src/3rdparty/chromium/third_party/webrtc/base/taskrunner.cc.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/third_party/webrtc/base/taskrunner.cc
@@ -102,7 +102,7 @@ void TaskRunner::InternalRunTasks(bool i
std::vector<Task *>::iterator it;
it = std::remove(tasks_.begin(),
tasks_.end(),
- reinterpret_cast<Task *>(NULL));
+ static_cast<Task *>(NULL));
tasks_.erase(it, tasks_.end());

View file

@ -0,0 +1,18 @@
Define WEBRTC_BSD, to better handle FreeBSD in the sources.
Copied from www/chromium.
--- src/3rdparty/chromium/third_party/webrtc/build/common.gypi.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/third_party/webrtc/build/common.gypi
@@ -352,6 +352,11 @@
'WEBRTC_LINUX',
],
}],
+ ['os_bsd==1', {
+ 'defines': [
+ 'BSD',
+ ],
+ }],
['OS=="mac"', {
'defines': [
'WEBRTC_MAC',

View file

@ -0,0 +1,11 @@
--- src/3rdparty/chromium/third_party/webrtc/modules/rtp_rtcp/source/rtp_utility.cc.orig 2017-04-20 13:10:18 UTC
+++ src/3rdparty/chromium/third_party/webrtc/modules/rtp_rtcp/source/rtp_utility.cc
@@ -57,7 +57,7 @@ bool StringCompare(const char* str1, con
const uint32_t length) {
return _strnicmp(str1, str2, length) == 0;
}
-#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC) || defined(BSD)
bool StringCompare(const char* str1, const char* str2,
const uint32_t length) {
return strncasecmp(str1, str2, length) == 0;

View file

@ -0,0 +1,10 @@
--- src/3rdparty/chromium/third_party/webrtc/modules/video_capture/device_info_impl.cc.orig 2017-04-19 18:46:33 UTC
+++ src/3rdparty/chromium/third_party/webrtc/modules/video_capture/device_info_impl.cc
@@ -11,6 +11,7 @@
#include <assert.h>
#include <stdlib.h>
+#include "webrtc/base/stringutils.h"
#include "webrtc/modules/video_capture/device_info_impl.h"
#include "webrtc/modules/video_capture/video_capture_config.h"
#include "webrtc/system_wrappers/include/logging.h"

View file

@ -0,0 +1,10 @@
--- src/3rdparty/chromium/third_party/webrtc/system_wrappers/source/atomic32_posix.cc.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/third_party/webrtc/system_wrappers/source/atomic32_posix.cc
@@ -12,7 +12,6 @@
#include <assert.h>
#include <inttypes.h>
-#include <malloc.h>
#include "webrtc/common_types.h"

View file

@ -0,0 +1,20 @@
--- src/3rdparty/chromium/third_party/webrtc/system_wrappers/source/condition_variable.cc.orig 2017-04-19 18:46:43 UTC
+++ src/3rdparty/chromium/third_party/webrtc/system_wrappers/source/condition_variable.cc
@@ -14,7 +14,7 @@
#include <windows.h>
#include "webrtc/system_wrappers/source/condition_variable_event_win.h"
#include "webrtc/system_wrappers/source/condition_variable_native_win.h"
-#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC) || defined(BSD)
#include <pthread.h>
#include "webrtc/system_wrappers/source/condition_variable_posix.h"
#endif
@@ -31,7 +31,7 @@ ConditionVariableWrapper* ConditionVaria
ret_val = new ConditionVariableEventWin();
}
return ret_val;
-#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC)
+#elif defined(WEBRTC_LINUX) || defined(WEBRTC_MAC) || defined(BSD)
return ConditionVariablePosix::Create();
#else
return NULL;

View file

@ -0,0 +1,25 @@
--- src/3rdparty/chromium/third_party/webrtc/voice_engine/voice_engine_defines.h.orig 2016-11-07 14:46:18 UTC
+++ src/3rdparty/chromium/third_party/webrtc/voice_engine/voice_engine_defines.h
@@ -203,19 +203,21 @@ inline int VoEChannelId(int moduleId) {
// *** LINUX ***
-#ifdef WEBRTC_LINUX
+#if defined(WEBRTC_LINUX) || defined(BSD)
#include <arpa/inet.h>
#include <netinet/in.h>
#include <pthread.h>
#include <sys/socket.h>
#include <sys/types.h>
+#ifndef BSD
#ifndef QNX
#include <linux/net.h>
#ifndef ANDROID
#include <sys/soundcard.h>
#endif // ANDROID
#endif // QNX
+#endif // BSD
#include <errno.h>
#include <fcntl.h>
#include <sched.h>

View file

@ -0,0 +1,11 @@
--- src/3rdparty/chromium/ui/events/event_switches.cc.orig 2017-04-19 09:39:54 UTC
+++ src/3rdparty/chromium/ui/events/event_switches.cc
@@ -28,7 +28,7 @@ const char kTouchEventsDisabled[] = "dis
const char kCompensateForUnstablePinchZoom[] =
"compensate-for-unstable-pinch-zoom";
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_FREEBSD)
// Tells chrome to interpret events from these devices as touch events. Only
// available with XInput 2 (i.e. X server 1.8 or above). The id's of the
// devices can be retrieved from 'xinput list'.

View file

@ -0,0 +1,11 @@
--- src/3rdparty/chromium/ui/events/event_switches.h.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/ui/events/event_switches.h
@@ -18,7 +18,7 @@ EVENTS_BASE_EXPORT extern const char kTouchEventsEnabl
EVENTS_BASE_EXPORT extern const char kTouchEventsDisabled[];
EVENTS_BASE_EXPORT extern const char kCompensateForUnstablePinchZoom[];
-#if defined(OS_LINUX)
+#if defined(OS_LINUX) || defined(OS_FREEBSD)
EVENTS_BASE_EXPORT extern const char kTouchDevices[];
#endif

View file

@ -0,0 +1,20 @@
--- src/3rdparty/chromium/ui/gl/gl.gyp.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/ui/gl/gl.gyp
@@ -132,7 +132,7 @@
'trace_util.h',
],
'conditions': [
- ['OS in ("win", "android", "linux")', {
+ ['OS in ("win", "android", "linux", "freebsd")', {
'sources': [
'egl_util.cc',
'egl_util.h',
@@ -150,7 +150,7 @@
'gl_surface_egl.h',
],
}],
- ['OS in ("android", "linux")', {
+ ['OS in ("android", "linux", "freebsd")', {
'sources': [
'gl_implementation_osmesa.cc',
'gl_implementation_osmesa.h',

View file

@ -0,0 +1,14 @@
--- src/3rdparty/chromium/v8/src/crankshaft/lithium.cc.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/v8/src/crankshaft/lithium.cc
@@ -125,11 +125,6 @@ void LOperand::PrintTo(StringStream* stream) {
template<LOperand::Kind kOperandKind, int kNumCachedOperands>
-LSubKindOperand<kOperandKind, kNumCachedOperands>*
-LSubKindOperand<kOperandKind, kNumCachedOperands>::cache = NULL;
-
-
-template<LOperand::Kind kOperandKind, int kNumCachedOperands>
void LSubKindOperand<kOperandKind, kNumCachedOperands>::SetUpCache() {
if (cache) return;
cache = new LSubKindOperand[kNumCachedOperands];

View file

@ -0,0 +1,14 @@
--- src/3rdparty/chromium/v8/src/crankshaft/lithium.h.orig 2017-04-11 14:08:45 UTC
+++ src/3rdparty/chromium/v8/src/crankshaft/lithium.h
@@ -344,6 +344,11 @@ LITHIUM_OPERAND_LIST(LITHIUM_TYPEDEF_SUBKIND_OPERAND_C
#undef LITHIUM_TYPEDEF_SUBKIND_OPERAND_CLASS
+template<LOperand::Kind kOperandKind, int kNumCachedOperands>
+LSubKindOperand<kOperandKind, kNumCachedOperands>*
+LSubKindOperand<kOperandKind, kNumCachedOperands>::cache = NULL;
+
+
class LParallelMove final : public ZoneObject {
public:
explicit LParallelMove(Zone* zone) : move_operands_(4, zone) { }

View file

@ -0,0 +1,13 @@
Do not pass --no-undefined to the linker, Chromium uses `environ'.
--- src/core/core_common.pri.orig 2017-04-18 20:27:53 UTC
+++ src/core/core_common.pri
@@ -5,6 +5,9 @@ TARGET = QtWebEngineCore
QT += qml quick webchannel
QT_PRIVATE += quick-private gui-private core-private webenginecoreheaders-private
+# The code uses environ, so we cannot pass --no-undefined to the linker.
+freebsd: QMAKE_LFLAGS_NOUNDEF =
+
# Make QtCreator happy.
CHROMIUM_SRC_DIR = $$QTWEBENGINE_ROOT/$$getChromiumSrcDir()
INCLUDEPATH += $$CHROMIUM_SRC_DIR

View file

@ -0,0 +1,13 @@
Generate split out debug files on FreeBSD too.
--- src/core/core_module.pro.orig 2017-04-20 22:41:02 UTC
+++ src/core/core_module.pro
@@ -42,7 +42,7 @@ CONFIG -= bsymbolic_functions
contains(QT_CONFIG, egl): CONFIG += egl
-linux: contains(QT_CONFIG, separate_debug_info): QMAKE_POST_LINK="cd $(DESTDIR) && $(STRIP) --strip-unneeded $(TARGET)"
+unix: contains(QT_CONFIG, separate_debug_info): QMAKE_POST_LINK="cd $(DESTDIR) && $(STRIP) --strip-unneeded $(TARGET)"
REPACK_DIR = $$OUT_PWD/$$getConfigDir()/gen/repack
# Duplicated from resources/resources.gyp

View file

@ -0,0 +1,13 @@
Include the freebsd.pri file provided by the port, to pass FreeBSD specific
settings to gyp.
--- src/core/gyp_run.pro.orig 2017-04-11 14:08:46 UTC
+++ src/core/gyp_run.pro
@@ -15,6 +15,7 @@ cross_compile {
linux: include(config/desktop_linux.pri)
mac: include(config/mac_osx.pri)
win32: include(config/windows.pri)
+ freebsd: include(config/freebsd.pri)
}
GYP_CONFIG += qtwe_process_name_debug=$$QTWEBENGINEPROCESS_NAME_DEBUG
GYP_CONFIG += qtwe_process_name_release=$$QTWEBENGINEPROCESS_NAME_RELEASE

View file

@ -0,0 +1,11 @@
--- src/core/qtwebengine.gypi.orig 2017-04-19 08:40:53 UTC
+++ src/core/qtwebengine.gypi
@@ -109,7 +109,7 @@
# TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
'msvs_disabled_warnings': [ 4267, 4996, ],
}], # OS=="win"
- ['OS=="linux"', {
+ ['os_posix==1', {
'dependencies': [
'<(chromium_src_dir)/build/linux/system.gyp:fontconfig',
],

View file

@ -0,0 +1,22 @@
--- tools/qmake/config.tests/khr/khr.pro.orig 2017-04-19 08:32:39 UTC
+++ tools/qmake/config.tests/khr/khr.pro
@@ -3,4 +3,4 @@
CONFIG-=qt
-linux:SOURCES += khr.cpp
+SOURCES += khr.cpp
--- tools/qmake/config.tests/snappy/snappy.pro.orig 2017-04-11 14:08:45 UTC
+++ tools/qmake/config.tests/snappy/snappy.pro
@@ -1,3 +1,3 @@
-linux:SOURCES += snappy.cpp
+SOURCES += snappy.cpp
LIBS += -lsnappy
CONFIG -= qt
--- tools/qmake/config.tests/srtp/srtp.pro.orig 2017-04-11 14:08:45 UTC
+++ tools/qmake/config.tests/srtp/srtp.pro
@@ -1,3 +1,3 @@
-linux:SOURCES += srtp.cpp
+SOURCES += srtp.cpp
LIBS += -lsrtp
CONFIG -= qt

View file

@ -0,0 +1,29 @@
--- tools/qmake/mkspecs/features/configure.prf.orig 2017-04-19 08:37:44 UTC
+++ tools/qmake/mkspecs/features/configure.prf
@@ -4,7 +4,7 @@ load(functions)
defineTest(runConfigure) {
webengine_successfully_configured: return(true)
- linux:contains(QT_CONFIG,no-pkg-config) {
+ unix:contains(QT_CONFIG,no-pkg-config) {
skipBuild("pkg-config is required")
return(false)
}
@@ -20,7 +20,7 @@ defineTest(runConfigure) {
qtCompileTest($$test)
}
- linux {
+ unix {
!config_khr:skipBuild("khronos development headers appear to be missing (mesa/libegl1-mesa-dev)")
REQUIRED_PACKAGES = dbus-1 fontconfig
@@ -78,7 +78,7 @@ defineTest(runConfigure) {
# This is called from default_post, at which point we've also parsed
# command line options
defineTest(finalizeConfigure) {
- linux {
+ unix {
use?(nss) {
log("Certificate handling.............. Using system NSS$${EOL}")
} else {

View file

@ -0,0 +1,11 @@
Allow qt5-webengine to be built on FreeBSD with clang
--- tools/qmake/mkspecs/features/functions.prf.orig 2017-04-11 14:08:45 UTC
+++ tools/qmake/mkspecs/features/functions.prf
@@ -1,5 +1,5 @@
defineTest(isPlatformSupported) {
- linux {
+ unix {
!gcc:!clang {
skipBuild("Qt WebEngine on Linux requires clang or GCC.")
return(false)

195
www/qt5-webengine/pkg-plist Normal file
View file

@ -0,0 +1,195 @@
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebenginecertificateerror_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebenginecontextmenudata_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebenginedownloaditem_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebenginedownloaditem_p_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebenginefaviconprovider_p_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebenginehistory_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebenginehistory_p_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebengineloadrequest_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebenginenavigationrequest_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebenginenewviewrequest_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebengineprofile_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebenginescript_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebenginescript_p_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebenginesettings_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebenginesingleton_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebenginetestsupport_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebengineview_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qquickwebengineview_p_p.h
%%QT_INCDIR%%/QtWebEngine/%%FULLVER%%/QtWebEngine/private/qtwebengineglobal_p.h
%%QT_INCDIR%%/QtWebEngine/QQuickWebEngineProfile
%%QT_INCDIR%%/QtWebEngine/QtWebEngine
%%QT_INCDIR%%/QtWebEngine/QtWebEngineDepends
%%QT_INCDIR%%/QtWebEngine/QtWebEngineVersion
%%QT_INCDIR%%/QtWebEngine/qquickwebengineprofile.h
%%QT_INCDIR%%/QtWebEngine/qtwebengineglobal.h
%%QT_INCDIR%%/QtWebEngine/qtwebengineversion.h
%%QT_INCDIR%%/QtWebEngineCore/%%FULLVER%%/QtWebEngineCore/private/qtwebenginecoreglobal_p.h
%%QT_INCDIR%%/QtWebEngineCore/%%FULLVER%%/QtWebEngineCore/private/qwebenginecallback_p.h
%%QT_INCDIR%%/QtWebEngineCore/%%FULLVER%%/QtWebEngineCore/private/qwebenginecookiestore_p.h
%%QT_INCDIR%%/QtWebEngineCore/%%FULLVER%%/QtWebEngineCore/private/qwebengineurlrequestinfo_p.h
%%QT_INCDIR%%/QtWebEngineCore/QWebEngineCallback
%%QT_INCDIR%%/QtWebEngineCore/QWebEngineCookieStore
%%QT_INCDIR%%/QtWebEngineCore/QWebEngineUrlRequestInfo
%%QT_INCDIR%%/QtWebEngineCore/QWebEngineUrlRequestInterceptor
%%QT_INCDIR%%/QtWebEngineCore/QWebEngineUrlRequestJob
%%QT_INCDIR%%/QtWebEngineCore/QWebEngineUrlSchemeHandler
%%QT_INCDIR%%/QtWebEngineCore/QtWebEngineCore
%%QT_INCDIR%%/QtWebEngineCore/QtWebEngineCoreDepends
%%QT_INCDIR%%/QtWebEngineCore/QtWebEngineCoreVersion
%%QT_INCDIR%%/QtWebEngineCore/qtwebenginecoreglobal.h
%%QT_INCDIR%%/QtWebEngineCore/qtwebenginecoreversion.h
%%QT_INCDIR%%/QtWebEngineCore/qwebenginecallback.h
%%QT_INCDIR%%/QtWebEngineCore/qwebenginecookiestore.h
%%QT_INCDIR%%/QtWebEngineCore/qwebengineurlrequestinfo.h
%%QT_INCDIR%%/QtWebEngineCore/qwebengineurlrequestinterceptor.h
%%QT_INCDIR%%/QtWebEngineCore/qwebengineurlrequestjob.h
%%QT_INCDIR%%/QtWebEngineCore/qwebengineurlschemehandler.h
%%QT_INCDIR%%/QtWebEngineWidgets/%%FULLVER%%/QtWebEngineWidgets/private/qwebenginedownloaditem_p.h
%%QT_INCDIR%%/QtWebEngineWidgets/%%FULLVER%%/QtWebEngineWidgets/private/qwebenginehistory_p.h
%%QT_INCDIR%%/QtWebEngineWidgets/%%FULLVER%%/QtWebEngineWidgets/private/qwebenginepage_p.h
%%QT_INCDIR%%/QtWebEngineWidgets/%%FULLVER%%/QtWebEngineWidgets/private/qwebengineprofile_p.h
%%QT_INCDIR%%/QtWebEngineWidgets/%%FULLVER%%/QtWebEngineWidgets/private/qwebenginescriptcollection_p.h
%%QT_INCDIR%%/QtWebEngineWidgets/%%FULLVER%%/QtWebEngineWidgets/private/qwebengineview_p.h
%%QT_INCDIR%%/QtWebEngineWidgets/QWebEngineCertificateError
%%QT_INCDIR%%/QtWebEngineWidgets/QWebEngineContextMenuData
%%QT_INCDIR%%/QtWebEngineWidgets/QWebEngineDownloadItem
%%QT_INCDIR%%/QtWebEngineWidgets/QWebEngineFullScreenRequest
%%QT_INCDIR%%/QtWebEngineWidgets/QWebEngineHistory
%%QT_INCDIR%%/QtWebEngineWidgets/QWebEngineHistoryItem
%%QT_INCDIR%%/QtWebEngineWidgets/QWebEnginePage
%%QT_INCDIR%%/QtWebEngineWidgets/QWebEngineProfile
%%QT_INCDIR%%/QtWebEngineWidgets/QWebEngineScript
%%QT_INCDIR%%/QtWebEngineWidgets/QWebEngineScriptCollection
%%QT_INCDIR%%/QtWebEngineWidgets/QWebEngineSettings
%%QT_INCDIR%%/QtWebEngineWidgets/QWebEngineView
%%QT_INCDIR%%/QtWebEngineWidgets/QtWebEngineWidgets
%%QT_INCDIR%%/QtWebEngineWidgets/QtWebEngineWidgetsDepends
%%QT_INCDIR%%/QtWebEngineWidgets/QtWebEngineWidgetsVersion
%%QT_INCDIR%%/QtWebEngineWidgets/qtwebenginewidgetsglobal.h
%%QT_INCDIR%%/QtWebEngineWidgets/qtwebenginewidgetsversion.h
%%QT_INCDIR%%/QtWebEngineWidgets/qwebenginecertificateerror.h
%%QT_INCDIR%%/QtWebEngineWidgets/qwebenginecontextmenudata.h
%%QT_INCDIR%%/QtWebEngineWidgets/qwebenginedownloaditem.h
%%QT_INCDIR%%/QtWebEngineWidgets/qwebenginefullscreenrequest.h
%%QT_INCDIR%%/QtWebEngineWidgets/qwebenginehistory.h
%%QT_INCDIR%%/QtWebEngineWidgets/qwebenginepage.h
%%QT_INCDIR%%/QtWebEngineWidgets/qwebengineprofile.h
%%QT_INCDIR%%/QtWebEngineWidgets/qwebenginescript.h
%%QT_INCDIR%%/QtWebEngineWidgets/qwebenginescriptcollection.h
%%QT_INCDIR%%/QtWebEngineWidgets/qwebenginesettings.h
%%QT_INCDIR%%/QtWebEngineWidgets/qwebengineview.h
%%QT_CMAKEDIR%%/Qt5Designer/Qt5Designer_QWebEngineViewPlugin.cmake
%%QT_CMAKEDIR%%/Qt5WebEngine/Qt5WebEngineConfig.cmake
%%QT_CMAKEDIR%%/Qt5WebEngine/Qt5WebEngineConfigVersion.cmake
%%QT_CMAKEDIR%%/Qt5WebEngineCore/Qt5WebEngineCoreConfig.cmake
%%QT_CMAKEDIR%%/Qt5WebEngineCore/Qt5WebEngineCoreConfigVersion.cmake
%%QT_CMAKEDIR%%/Qt5WebEngineWidgets/Qt5WebEngineWidgetsConfig.cmake
%%QT_CMAKEDIR%%/Qt5WebEngineWidgets/Qt5WebEngineWidgetsConfigVersion.cmake
%%QT_LIBDIR%%/libQt5WebEngine.prl
%%QT_LIBDIR%%/libQt5WebEngine.so
%%QT_LIBDIR%%/libQt5WebEngine.so.5
%%QT_LIBDIR%%/libQt5WebEngine.so.%%SHORTVER%%
%%QT_LIBDIR%%/libQt5WebEngine.so.%%FULLVER%%
%%DEBUG%%%%QT_LIBDIR%%/libQt5WebEngine.so.%%FULLVER%%.debug
%%QT_LIBDIR%%/libQt5WebEngineCore.prl
%%QT_LIBDIR%%/libQt5WebEngineCore.so
%%QT_LIBDIR%%/libQt5WebEngineCore.so.5
%%QT_LIBDIR%%/libQt5WebEngineCore.so.%%SHORTVER%%
%%QT_LIBDIR%%/libQt5WebEngineCore.so.%%FULLVER%%
%%DEBUG%%%%QT_LIBDIR%%/libQt5WebEngineCore.so.%%FULLVER%%.debug
%%QT_LIBDIR%%/libQt5WebEngineWidgets.prl
%%QT_LIBDIR%%/libQt5WebEngineWidgets.so
%%QT_LIBDIR%%/libQt5WebEngineWidgets.so.5
%%QT_LIBDIR%%/libQt5WebEngineWidgets.so.%%SHORTVER%%
%%QT_LIBDIR%%/libQt5WebEngineWidgets.so.%%FULLVER%%
%%DEBUG%%%%QT_LIBDIR%%/libQt5WebEngineWidgets.so.%%FULLVER%%.debug
%%QT_MKSPECDIR%%/modules/qt_lib_webengine.pri
%%QT_MKSPECDIR%%/modules/qt_lib_webengine_private.pri
%%QT_MKSPECDIR%%/modules/qt_lib_webenginecore.pri
%%QT_MKSPECDIR%%/modules/qt_lib_webenginecore_private.pri
%%QT_MKSPECDIR%%/modules/qt_lib_webenginecoreheaders_private.pri
%%QT_MKSPECDIR%%/modules/qt_lib_webenginewidgets.pri
%%QT_MKSPECDIR%%/modules/qt_lib_webenginewidgets_private.pri
%%QT_PLUGINDIR%%/designer/libqwebengineview.so
%%DEBUG%%%%QT_PLUGINDIR%%/designer/libqwebengineview.so.debug
%%QT_QMLDIR%%/QtWebEngine/UIDelegates/AlertDialog.qml
%%QT_QMLDIR%%/QtWebEngine/UIDelegates/AuthenticationDialog.qml
%%QT_QMLDIR%%/QtWebEngine/UIDelegates/ColorDialog.qml
%%QT_QMLDIR%%/QtWebEngine/UIDelegates/ConfirmDialog.qml
%%QT_QMLDIR%%/QtWebEngine/UIDelegates/FilePicker.qml
%%QT_QMLDIR%%/QtWebEngine/UIDelegates/Menu.qml
%%QT_QMLDIR%%/QtWebEngine/UIDelegates/MenuItem.qml
%%QT_QMLDIR%%/QtWebEngine/UIDelegates/MenuSeparator.qml
%%QT_QMLDIR%%/QtWebEngine/UIDelegates/MessageBubble.qml
%%QT_QMLDIR%%/QtWebEngine/UIDelegates/PromptDialog.qml
%%QT_QMLDIR%%/QtWebEngine/UIDelegates/qmldir
%%QT_QMLDIR%%/QtWebEngine/experimental/libqtwebengineexperimentalplugin.so
%%DEBUG%%%%QT_QMLDIR%%/QtWebEngine/experimental/libqtwebengineexperimentalplugin.so.debug
%%QT_QMLDIR%%/QtWebEngine/experimental/qmldir
%%QT_QMLDIR%%/QtWebEngine/libqtwebengineplugin.so
%%DEBUG%%%%QT_QMLDIR%%/QtWebEngine/libqtwebengineplugin.so.debug
%%QT_QMLDIR%%/QtWebEngine/plugins.qmltypes
%%QT_QMLDIR%%/QtWebEngine/qmldir
libdata/pkgconfig/Qt5WebEngine.pc
libdata/pkgconfig/Qt5WebEngineCore.pc
libdata/pkgconfig/Qt5WebEngineWidgets.pc
%%QT_LIBEXECDIR%%/QtWebEngineProcess
%%QT_DATADIR%%/resources/icudtl.dat
%%QT_DATADIR%%/resources/qtwebengine_devtools_resources.pak
%%QT_DATADIR%%/resources/qtwebengine_resources.pak
%%QT_DATADIR%%/resources/qtwebengine_resources_100p.pak
%%QT_DATADIR%%/resources/qtwebengine_resources_200p.pak
%%QT_L10NDIR%%/qtwebengine_locales/am.pak
%%QT_L10NDIR%%/qtwebengine_locales/ar.pak
%%QT_L10NDIR%%/qtwebengine_locales/bg.pak
%%QT_L10NDIR%%/qtwebengine_locales/bn.pak
%%QT_L10NDIR%%/qtwebengine_locales/ca.pak
%%QT_L10NDIR%%/qtwebengine_locales/cs.pak
%%QT_L10NDIR%%/qtwebengine_locales/da.pak
%%QT_L10NDIR%%/qtwebengine_locales/de.pak
%%QT_L10NDIR%%/qtwebengine_locales/el.pak
%%QT_L10NDIR%%/qtwebengine_locales/en-GB.pak
%%QT_L10NDIR%%/qtwebengine_locales/en-US.pak
%%QT_L10NDIR%%/qtwebengine_locales/es-419.pak
%%QT_L10NDIR%%/qtwebengine_locales/es.pak
%%QT_L10NDIR%%/qtwebengine_locales/et.pak
%%QT_L10NDIR%%/qtwebengine_locales/fa.pak
%%QT_L10NDIR%%/qtwebengine_locales/fi.pak
%%QT_L10NDIR%%/qtwebengine_locales/fil.pak
%%QT_L10NDIR%%/qtwebengine_locales/fr.pak
%%QT_L10NDIR%%/qtwebengine_locales/gu.pak
%%QT_L10NDIR%%/qtwebengine_locales/he.pak
%%QT_L10NDIR%%/qtwebengine_locales/hi.pak
%%QT_L10NDIR%%/qtwebengine_locales/hr.pak
%%QT_L10NDIR%%/qtwebengine_locales/hu.pak
%%QT_L10NDIR%%/qtwebengine_locales/id.pak
%%QT_L10NDIR%%/qtwebengine_locales/it.pak
%%QT_L10NDIR%%/qtwebengine_locales/ja.pak
%%QT_L10NDIR%%/qtwebengine_locales/kn.pak
%%QT_L10NDIR%%/qtwebengine_locales/ko.pak
%%QT_L10NDIR%%/qtwebengine_locales/lt.pak
%%QT_L10NDIR%%/qtwebengine_locales/lv.pak
%%QT_L10NDIR%%/qtwebengine_locales/ml.pak
%%QT_L10NDIR%%/qtwebengine_locales/mr.pak
%%QT_L10NDIR%%/qtwebengine_locales/ms.pak
%%QT_L10NDIR%%/qtwebengine_locales/nb.pak
%%QT_L10NDIR%%/qtwebengine_locales/nl.pak
%%QT_L10NDIR%%/qtwebengine_locales/pl.pak
%%QT_L10NDIR%%/qtwebengine_locales/pt-BR.pak
%%QT_L10NDIR%%/qtwebengine_locales/pt-PT.pak
%%QT_L10NDIR%%/qtwebengine_locales/ro.pak
%%QT_L10NDIR%%/qtwebengine_locales/ru.pak
%%QT_L10NDIR%%/qtwebengine_locales/sk.pak
%%QT_L10NDIR%%/qtwebengine_locales/sl.pak
%%QT_L10NDIR%%/qtwebengine_locales/sr.pak
%%QT_L10NDIR%%/qtwebengine_locales/sv.pak
%%QT_L10NDIR%%/qtwebengine_locales/sw.pak
%%QT_L10NDIR%%/qtwebengine_locales/ta.pak
%%QT_L10NDIR%%/qtwebengine_locales/te.pak
%%QT_L10NDIR%%/qtwebengine_locales/th.pak
%%QT_L10NDIR%%/qtwebengine_locales/tr.pak
%%QT_L10NDIR%%/qtwebengine_locales/uk.pak
%%QT_L10NDIR%%/qtwebengine_locales/vi.pak
%%QT_L10NDIR%%/qtwebengine_locales/zh-CN.pak
%%QT_L10NDIR%%/qtwebengine_locales/zh-TW.pak