aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Mk/bsd.qt.mk9
-rw-r--r--devel/qt5/distinfo2
-rw-r--r--www/Makefile1
-rw-r--r--www/qt5-webengine/Makefile105
-rw-r--r--www/qt5-webengine/distinfo1
-rw-r--r--www/qt5-webengine/files/freebsd.pri16
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_base_base.gyp13
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_base_base.gypi17
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__kqueue.cc13
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__kqueue.h14
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_base_posix_unix__domain__socket__linux.cc44
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_memory__stubs.cc15
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__posix.cc10
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__linux.cc21
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_base_trace__event_process__memory__dump.cc29
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_base_tracked__objects.cc11
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_build_common.gypi16
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_build_linux_unbundle_libusb.gyp20
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_content_app_content__main__runner.cc30
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_browser__main__loop.cc20
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_child__process__launcher.cc38
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_download_file__metadata__linux.cc20
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_frame__host_render__widget__host__view__guest.cc16
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_geolocation_location__arbitrator__impl.cc11
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_content_content__browser.gypi33
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_content_content__common.gypi32
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__child__thread.cc18
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__main.cc45
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_devtools_v8__sampling__profiler.cc21
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__main__platform__delegate__linux.cc18
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_crypto_nss__util.cc24
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_device_usb_usb__context.cc22
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_device_usb_usb__service__impl.cc48
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_device_usb_usb__service__impl.h33
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_gpu__config.gypi17
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_file__video__capture__device__factory.cc11
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__delegate.cc21
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_video__capture__device__linux.cc25
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device.cc20
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device.h38
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device__factory.cc11
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_media_filters_vp9__parser.h10
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_media_media.gyp20
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_address__tracker__linux.h15
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_network__interfaces__posix.cc21
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_address__sorter__posix.cc11
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__reloader.cc17
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_net_net.gypi33
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_ppapi_shared__impl_private_net__address__private__impl.cc10
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_skia_skia__chrome.gypi11
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_bindings_core_v8_V8ScriptRunner.cpp11
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_core_core.gyp34
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_platform_blink__platform.gyp38
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_platform_fonts_FontPlatformData.cpp11
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_platform_heap_StackFrameDepth.cpp11
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_web_web.gyp11
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_wtf_ByteSwap.h18
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_ffmpeg_libavutil_mem.c12
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_libjingle_libjingle.gyp11
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_ots_include_opentype-sanitiser.h12
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc47
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_base_platform__thread.cc29
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_base_taskrunner.cc11
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_build_common.gypi18
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_rtp__rtcp_source_rtp__utility.cc11
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_video__capture_device__info__impl.cc10
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_system__wrappers_source_atomic32__posix.cc10
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_system__wrappers_source_condition__variable.cc20
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_voice__engine_voice__engine__defines.h25
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event__switches.cc11
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event__switches.h11
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl.gyp20
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_crankshaft_lithium.cc14
-rw-r--r--www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_crankshaft_lithium.h14
-rw-r--r--www/qt5-webengine/files/patch-src_core_core__common.pri13
-rw-r--r--www/qt5-webengine/files/patch-src_core_core__module.pro13
-rw-r--r--www/qt5-webengine/files/patch-src_core_gyp__run.pro13
-rw-r--r--www/qt5-webengine/files/patch-src_core_qtwebengine.gypi11
-rw-r--r--www/qt5-webengine/files/patch-tools-qmake-config.tests-enable-on-FreeBSD22
-rw-r--r--www/qt5-webengine/files/patch-tools_qmake_mkspecs_features_configure.prf29
-rw-r--r--www/qt5-webengine/files/patch-tools_qmake_mkspecs_features_functions.prf11
-rw-r--r--www/qt5-webengine/pkg-plist195
82 files changed, 1801 insertions, 3 deletions
diff --git a/Mk/bsd.qt.mk b/Mk/bsd.qt.mk
index 978b8d049bd4..c4f7850a2200 100644
--- a/Mk/bsd.qt.mk
+++ b/Mk/bsd.qt.mk
@@ -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
diff --git a/devel/qt5/distinfo b/devel/qt5/distinfo
index 29089b8c32f7..b15552722b75 100644
--- a/devel/qt5/distinfo
+++ b/devel/qt5/distinfo
@@ -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
diff --git a/www/Makefile b/www/Makefile
index 9e541279caf4..b02d8ddfe1ae 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -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
diff --git a/www/qt5-webengine/Makefile b/www/qt5-webengine/Makefile
new file mode 100644
index 000000000000..6312513ecef5
--- /dev/null
+++ b/www/qt5-webengine/Makefile
@@ -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>
diff --git a/www/qt5-webengine/distinfo b/www/qt5-webengine/distinfo
new file mode 100644
index 000000000000..c7fdb5701481
--- /dev/null
+++ b/www/qt5-webengine/distinfo
@@ -0,0 +1 @@
+TIMESTAMP = 1491910958
diff --git a/www/qt5-webengine/files/freebsd.pri b/www/qt5-webengine/files/freebsd.pri
new file mode 100644
index 000000000000..802c267de92f
--- /dev/null
+++ b/www/qt5-webengine/files/freebsd.pri
@@ -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
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_base.gyp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_base.gyp
new file mode 100644
index 000000000000..3efd008c6010
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_base.gyp
@@ -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/': [
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_base.gypi b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_base.gypi
new file mode 100644
index 000000000000..5e115d1026cf
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_base.gypi
@@ -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$'],
+ ],
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__kqueue.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__kqueue.cc
new file mode 100644
index 000000000000..901306417a16
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__kqueue.cc
@@ -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
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__kqueue.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__kqueue.h
new file mode 100644
index 000000000000..18e94e0f707e
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_files_file__path__watcher__kqueue.h
@@ -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>
+
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_posix_unix__domain__socket__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_posix_unix__domain__socket__linux.cc
new file mode 100644
index 000000000000..c2941174f235
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_posix_unix__domain__socket__linux.cc
@@ -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;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_memory__stubs.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_memory__stubs.cc
new file mode 100644
index 000000000000..fb11d976e83c
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_memory__stubs.cc
@@ -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
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__posix.cc
new file mode 100644
index 000000000000..792cca0e96cd
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_process_process__posix.cc
@@ -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"
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__linux.cc
new file mode 100644
index 000000000000..0ed91c4fa529
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_threading_platform__thread__linux.cc
@@ -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
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_trace__event_process__memory__dump.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_trace__event_process__memory__dump.cc
new file mode 100644
index 000000000000..35d5104af99a
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_trace__event_process__memory__dump.cc
@@ -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;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_tracked__objects.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_tracked__objects.cc
new file mode 100644
index 000000000000..39d258eae823
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_base_tracked__objects.cc
@@ -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;
+ }
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_common.gypi b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_common.gypi
new file mode 100644
index 000000000000..7c34edb4b2a0
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_common.gypi
@@ -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.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_linux_unbundle_libusb.gyp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_linux_unbundle_libusb.gyp
new file mode 100644
index 000000000000..bcf7ec48ea4b
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_build_linux_unbundle_libusb.gyp
@@ -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',
+ ],
+ },
+ },
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_app_content__main__runner.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_app_content__main__runner.cc
new file mode 100644
index 000000000000..463bf3fe17c2
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_app_content__main__runner.cc
@@ -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)
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_browser__main__loop.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_browser__main__loop.cc
new file mode 100644
index 000000000000..581ee661f289
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_browser__main__loop.cc
@@ -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_);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_child__process__launcher.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_child__process__launcher.cc
new file mode 100644
index 000000000000..09096ee56fd4
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_child__process__launcher.cc
@@ -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()) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_download_file__metadata__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_download_file__metadata__linux.cc
new file mode 100644
index 000000000000..c74bda54f05f
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_download_file__metadata__linux.cc
@@ -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;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_frame__host_render__widget__host__view__guest.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_frame__host_render__widget__host__view__guest.cc
new file mode 100644
index 000000000000..5dca5f09aafc
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_frame__host_render__widget__host__view__guest.cc
@@ -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();
+ }
+
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_geolocation_location__arbitrator__impl.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_geolocation_location__arbitrator__impl.cc
new file mode 100644
index 000000000000..90c140e0224c
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_browser_geolocation_location__arbitrator__impl.cc
@@ -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();
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_content__browser.gypi b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_content__browser.gypi
new file mode 100644
index 000000000000..ddf51f77a4a9
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_content__browser.gypi
@@ -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',
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_content__common.gypi b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_content__common.gypi
new file mode 100644
index 000000000000..0e73627773b9
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_content__common.gypi
@@ -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',
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__child__thread.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__child__thread.cc
new file mode 100644
index 000000000000..d3c8d06a54a2
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__child__thread.cc
@@ -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() {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__main.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__main.cc
new file mode 100644
index 000000000000..aa0a762b1ab7
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_gpu_gpu__main.cc
@@ -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");
+
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_devtools_v8__sampling__profiler.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_devtools_v8__sampling__profiler.cc
new file mode 100644
index 000000000000..02baa7992bb5
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_devtools_v8__sampling__profiler.cc
@@ -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)]);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__main__platform__delegate__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__main__platform__delegate__linux.cc
new file mode 100644
index 000000000000..eff3487d3985
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_content_renderer_renderer__main__platform__delegate__linux.cc
@@ -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;
+ }
+
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_crypto_nss__util.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_crypto_nss__util.cc
new file mode 100644
index 000000000000..5474230b08aa
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_crypto_nss__util.cc
@@ -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
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_device_usb_usb__context.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_device_usb_usb__context.cc
new file mode 100644
index 000000000000..911709722edb
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_device_usb_usb__context.cc
@@ -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) {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_device_usb_usb__service__impl.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_device_usb_usb__service__impl.cc
new file mode 100644
index 000000000000..daabc883fbf9
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_device_usb_usb__service__impl.cc
@@ -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
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_device_usb_usb__service__impl.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_device_usb_usb__service__impl.h
new file mode 100644
index 000000000000..68ac29e32740
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_device_usb_usb__service__impl.h
@@ -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;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_gpu__config.gypi b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_gpu__config.gypi
new file mode 100644
index 000000000000..2a68e1bed6a9
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_gpu_gpu__config.gypi
@@ -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',
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_file__video__capture__device__factory.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_file__video__capture__device__factory.cc
new file mode 100644
index 000000000000..5e274b1774c6
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_file__video__capture__device__factory.cc
@@ -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));
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__delegate.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__delegate.cc
new file mode 100644
index 000000000000..e3a0981988dd
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_v4l2__capture__delegate.cc
@@ -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;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_video__capture__device__linux.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_video__capture__device__linux.cc
new file mode 100644
index 000000000000..6e095e988b29
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_linux_video__capture__device__linux.cc
@@ -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
+ }
+ }
+
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device.cc
new file mode 100644
index 000000000000..04cba783ab49
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device.cc
@@ -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:
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device.h
new file mode 100644
index 000000000000..b79b9ca850c4
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device.h
@@ -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 {
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device__factory.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device__factory.cc
new file mode 100644
index 000000000000..69895bcf3b7b
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_capture_video_video__capture__device__factory.cc
@@ -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(
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_filters_vp9__parser.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_filters_vp9__parser.h
new file mode 100644
index 000000000000..00b1b7c54a14
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_filters_vp9__parser.h
@@ -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>
+
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_media.gyp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_media.gyp
new file mode 100644
index 000000000000..7f5ced262def
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_media_media.gyp
@@ -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',
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_address__tracker__linux.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_address__tracker__linux.h
new file mode 100644
index 000000000000..8df9c3a550eb
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_address__tracker__linux.h
@@ -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>
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_network__interfaces__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_network__interfaces__posix.cc
new file mode 100644
index 000000000000..887c98fbecf2
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_base_network__interfaces__posix.cc
@@ -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
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_address__sorter__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_address__sorter__posix.cc
new file mode 100644
index 000000000000..704fb4a04a09
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_address__sorter__posix.cc
@@ -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>
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__reloader.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__reloader.cc
new file mode 100644
index 000000000000..a70775f11d55
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_dns_dns__reloader.cc
@@ -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"
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_net.gypi b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_net.gypi
new file mode 100644
index 000000000000..587b5007cb84
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_net_net.gypi
@@ -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',
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ppapi_shared__impl_private_net__address__private__impl.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ppapi_shared__impl_private_net__address__private__impl.cc
new file mode 100644
index 000000000000..404c8f1aff24
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ppapi_shared__impl_private_net__address__private__impl.cc
@@ -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
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_skia_skia__chrome.gypi b/www/qt5-webengine/files/patch-src_3rdparty_chromium_skia_skia__chrome.gypi
new file mode 100644
index 000000000000..9f69f91897fb
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_skia_skia__chrome.gypi
@@ -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',
+ ],
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_bindings_core_v8_V8ScriptRunner.cpp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_bindings_core_v8_V8ScriptRunner.cpp
new file mode 100644
index 000000000000..9874c530767c
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_bindings_core_v8_V8ScriptRunner.cpp
@@ -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
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_core_core.gyp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_core_core.gyp
new file mode 100644
index 000000000000..7c582ba58d39
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_core_core.gyp
@@ -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',
+ ],
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_platform_blink__platform.gyp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_platform_blink__platform.gyp
new file mode 100644
index 000000000000..125b0ceb27a5
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_platform_blink__platform.gyp
@@ -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',
+ ],
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_platform_fonts_FontPlatformData.cpp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_platform_fonts_FontPlatformData.cpp
new file mode 100644
index 000000000000..8f17c643774d
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_platform_fonts_FontPlatformData.cpp
@@ -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);
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_platform_heap_StackFrameDepth.cpp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_platform_heap_StackFrameDepth.cpp
new file mode 100644
index 000000000000..09b881e07fe2
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_platform_heap_StackFrameDepth.cpp
@@ -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>
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_web_web.gyp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_web_web.gyp
new file mode 100644
index 000000000000..51b246a237da
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_web_web.gyp
@@ -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',
+ ],
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_wtf_ByteSwap.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_wtf_ByteSwap.h
new file mode 100644
index 000000000000..82d3e602a187
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_WebKit_Source_wtf_ByteSwap.h
@@ -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
+
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_ffmpeg_libavutil_mem.c b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_ffmpeg_libavutil_mem.c
new file mode 100644
index 000000000000..4d284a4d486e
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_ffmpeg_libavutil_mem.c
@@ -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"
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_libjingle_libjingle.gyp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_libjingle_libjingle.gyp
new file mode 100644
index 000000000000..cc20a13d6502
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_libjingle_libjingle.gyp
@@ -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',
+ ],
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_ots_include_opentype-sanitiser.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_ots_include_opentype-sanitiser.h
new file mode 100644
index 000000000000..d859263a3041
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_ots_include_opentype-sanitiser.h
@@ -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>
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc
new file mode 100644
index 000000000000..22d6b23e6524
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc
@@ -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) {
+ }
+
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_base_platform__thread.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_base_platform__thread.cc
new file mode 100644
index 000000000000..5fcba0226f58
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_base_platform__thread.cc
@@ -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
+ }
+
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_base_taskrunner.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_base_taskrunner.cc
new file mode 100644
index 000000000000..bb1e0c34499b
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_base_taskrunner.cc
@@ -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());
+
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_build_common.gypi b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_build_common.gypi
new file mode 100644
index 000000000000..41bf8056c6ed
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_build_common.gypi
@@ -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',
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_rtp__rtcp_source_rtp__utility.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_rtp__rtcp_source_rtp__utility.cc
new file mode 100644
index 000000000000..372e3c3f57ab
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_rtp__rtcp_source_rtp__utility.cc
@@ -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;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_video__capture_device__info__impl.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_video__capture_device__info__impl.cc
new file mode 100644
index 000000000000..b15d3be6f876
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_modules_video__capture_device__info__impl.cc
@@ -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"
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_system__wrappers_source_atomic32__posix.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_system__wrappers_source_atomic32__posix.cc
new file mode 100644
index 000000000000..f101c3e06512
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_system__wrappers_source_atomic32__posix.cc
@@ -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"
+
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_system__wrappers_source_condition__variable.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_system__wrappers_source_condition__variable.cc
new file mode 100644
index 000000000000..dceaea3ce172
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_system__wrappers_source_condition__variable.cc
@@ -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;
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_voice__engine_voice__engine__defines.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_voice__engine_voice__engine__defines.h
new file mode 100644
index 000000000000..1116c256f2fd
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_third__party_webrtc_voice__engine_voice__engine__defines.h
@@ -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>
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event__switches.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event__switches.cc
new file mode 100644
index 000000000000..1ea4537d4ba9
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event__switches.cc
@@ -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'.
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event__switches.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event__switches.h
new file mode 100644
index 000000000000..7ff949a31007
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_events_event__switches.h
@@ -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
+
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl.gyp b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl.gyp
new file mode 100644
index 000000000000..a0c297da55bc
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_ui_gl_gl.gyp
@@ -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',
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_crankshaft_lithium.cc b/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_crankshaft_lithium.cc
new file mode 100644
index 000000000000..b71d4356ab2a
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_crankshaft_lithium.cc
@@ -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];
diff --git a/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_crankshaft_lithium.h b/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_crankshaft_lithium.h
new file mode 100644
index 000000000000..8cf78733e620
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_3rdparty_chromium_v8_src_crankshaft_lithium.h
@@ -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) { }
diff --git a/www/qt5-webengine/files/patch-src_core_core__common.pri b/www/qt5-webengine/files/patch-src_core_core__common.pri
new file mode 100644
index 000000000000..06b600ea7658
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_core_core__common.pri
@@ -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
diff --git a/www/qt5-webengine/files/patch-src_core_core__module.pro b/www/qt5-webengine/files/patch-src_core_core__module.pro
new file mode 100644
index 000000000000..2fe5374da0f4
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_core_core__module.pro
@@ -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
diff --git a/www/qt5-webengine/files/patch-src_core_gyp__run.pro b/www/qt5-webengine/files/patch-src_core_gyp__run.pro
new file mode 100644
index 000000000000..e9a970cf3568
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_core_gyp__run.pro
@@ -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
diff --git a/www/qt5-webengine/files/patch-src_core_qtwebengine.gypi b/www/qt5-webengine/files/patch-src_core_qtwebengine.gypi
new file mode 100644
index 000000000000..563c19ad919e
--- /dev/null
+++ b/www/qt5-webengine/files/patch-src_core_qtwebengine.gypi
@@ -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',
+ ],
diff --git a/www/qt5-webengine/files/patch-tools-qmake-config.tests-enable-on-FreeBSD b/www/qt5-webengine/files/patch-tools-qmake-config.tests-enable-on-FreeBSD
new file mode 100644
index 000000000000..827dbb2e1881
--- /dev/null
+++ b/www/qt5-webengine/files/patch-tools-qmake-config.tests-enable-on-FreeBSD
@@ -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
diff --git a/www/qt5-webengine/files/patch-tools_qmake_mkspecs_features_configure.prf b/www/qt5-webengine/files/patch-tools_qmake_mkspecs_features_configure.prf
new file mode 100644
index 000000000000..5e40ded1ab08
--- /dev/null
+++ b/www/qt5-webengine/files/patch-tools_qmake_mkspecs_features_configure.prf
@@ -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 {
diff --git a/www/qt5-webengine/files/patch-tools_qmake_mkspecs_features_functions.prf b/www/qt5-webengine/files/patch-tools_qmake_mkspecs_features_functions.prf
new file mode 100644
index 000000000000..7340be928fb7
--- /dev/null
+++ b/www/qt5-webengine/files/patch-tools_qmake_mkspecs_features_functions.prf
@@ -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)
diff --git a/www/qt5-webengine/pkg-plist b/www/qt5-webengine/pkg-plist
new file mode 100644
index 000000000000..09f0d5a01bf2
--- /dev/null
+++ b/www/qt5-webengine/pkg-plist
@@ -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