Architecture specific change in rpms/golang-github-mistifyio-go-zfs.git
by githook-noreply@fedoraproject.org
The package rpms/golang-github-mistifyio-go-zfs.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/golang-github-mistifyio-go-zfs.gi....
Change:
+ExcludeArch: %{arm} aarch64
Thanks.
Full change:
============
commit 3e86526db8c80116292a324852ed18697e8bc822
Author: Jan Chaloupka <jchaloup(a)redhat.com>
Date: Mon Jun 26 14:36:48 2017 +0200
Excluder aarch64 architecture
- resolves: #1465016
diff --git a/golang-github-mistifyio-go-zfs.spec b/golang-github-mistifyio-go-zfs.spec
index 60ab7c6..49125e3 100644
--- a/golang-github-mistifyio-go-zfs.spec
+++ b/golang-github-mistifyio-go-zfs.spec
@@ -31,7 +31,7 @@
Name: golang-%{provider}-%{project}-%{repo}
Version: 0
-Release: 0.4.git%{shortcommit}%{?dist}
+Release: 0.5.git%{shortcommit}%{?dist}
Summary: Go wrappers for ZFS commands
# Detected licences
# - *No copyright* UNKNOWN at 'LICENSE'
@@ -41,7 +41,7 @@ Source0: https://%{provider_prefix}/archive/%{commit}/%{repo}-%{shortcomm
# e.g. el6 has ppc64 arch without gcc-go, so EA tag is required
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
-ExcludeArch: %{arm}
+ExcludeArch: %{arm} aarch64
# If go_compiler is not set to 1, there is no virtual provide. Use golang instead.
BuildRequires: %{?go_compiler:compiler(go-compiler)}%{!?go_compiler:golang}
@@ -160,6 +160,10 @@ export GOPATH=%{buildroot}/%{gopath}:$(pwd)/Godeps/_workspace:%{gopath}
%endif
%changelog
+* Mon Jun 26 2017 Jan Chaloupka <jchaloup(a)redhat.com> - 0-0.5.git1b4ae6f
+- Excluder aarch64 architecture
+ resolves: #1465016
+
* Fri Feb 10 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 0-0.4.git1b4ae6f
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
6 years, 9 months
Architecture specific change in rpms/golang-github-mistifyio-go-zfs.git
by githook-noreply@fedoraproject.org
The package rpms/golang-github-mistifyio-go-zfs.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/golang-github-mistifyio-go-zfs.gi....
Change:
+ExcludeArch: %{arm} aarch64
Thanks.
Full change:
============
commit 3e86526db8c80116292a324852ed18697e8bc822
Author: Jan Chaloupka <jchaloup(a)redhat.com>
Date: Mon Jun 26 14:36:48 2017 +0200
Excluder aarch64 architecture
- resolves: #1465016
diff --git a/golang-github-mistifyio-go-zfs.spec b/golang-github-mistifyio-go-zfs.spec
index 60ab7c6..49125e3 100644
--- a/golang-github-mistifyio-go-zfs.spec
+++ b/golang-github-mistifyio-go-zfs.spec
@@ -31,7 +31,7 @@
Name: golang-%{provider}-%{project}-%{repo}
Version: 0
-Release: 0.4.git%{shortcommit}%{?dist}
+Release: 0.5.git%{shortcommit}%{?dist}
Summary: Go wrappers for ZFS commands
# Detected licences
# - *No copyright* UNKNOWN at 'LICENSE'
@@ -41,7 +41,7 @@ Source0: https://%{provider_prefix}/archive/%{commit}/%{repo}-%{shortcomm
# e.g. el6 has ppc64 arch without gcc-go, so EA tag is required
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
-ExcludeArch: %{arm}
+ExcludeArch: %{arm} aarch64
# If go_compiler is not set to 1, there is no virtual provide. Use golang instead.
BuildRequires: %{?go_compiler:compiler(go-compiler)}%{!?go_compiler:golang}
@@ -160,6 +160,10 @@ export GOPATH=%{buildroot}/%{gopath}:$(pwd)/Godeps/_workspace:%{gopath}
%endif
%changelog
+* Mon Jun 26 2017 Jan Chaloupka <jchaloup(a)redhat.com> - 0-0.5.git1b4ae6f
+- Excluder aarch64 architecture
+ resolves: #1465016
+
* Fri Feb 10 2017 Fedora Release Engineering <releng(a)fedoraproject.org> - 0-0.4.git1b4ae6f
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
6 years, 9 months
Architecture specific change in rpms/eclipse-cdt.git
by githook-noreply@fedoraproject.org
The package rpms/eclipse-cdt.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/eclipse-cdt.git/commit/?id=908a9c....
Change:
+%ifarch %{arm} s390x aarch64
Thanks.
Full change:
============
commit 908a9c8e7a80ba4351685f9bbb12fdc60aef7573
Author: Mat Booth <mat.booth(a)redhat.com>
Date: Mon Jun 26 13:16:50 2017 +0100
Allow boostrap modes to build against launchbar and tm-terminal when those
packages are also bootstrapped
Attempt to fix standalone debugger
diff --git a/.gitignore b/.gitignore
index 66dcf6c..9a3e47a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,3 +18,4 @@ ammacros-1.9.6.xml
/org.eclipse.tools.templates-6f34dc60b008d8cdcd7848c76b13b0f2ef8c6134.tar.xz
/org.eclipse.tools.templates-b6038873b1cd4d7f0a86a98deb2b6e3360e75f14.tar.xz
/org.eclipse.tools.templates-0435f275891b23060faa5cc33664c6a2fefbf2ac.tar.xz
+/org.eclipse.cdt-bfe45e8c74f297fbfaa89e9fc33527891207108e.tar.xz
diff --git a/bootstrap.patch b/bootstrap.patch
deleted file mode 100644
index a2610a6..0000000
--- a/bootstrap.patch
+++ /dev/null
@@ -1,64 +0,0 @@
---- dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF.orig 2016-07-29 10:15:25.158058050 +0100
-+++ dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF 2016-07-29 10:16:35.506239397 +0100
-@@ -14,8 +14,7 @@
- org.eclipse.core.variables,
- org.eclipse.cdt.launch;bundle-version="6.1.0",
- org.eclipse.cdt.gdb;bundle-version="7.0.0",
-- org.eclipse.core.resources,
-- org.eclipse.launchbar.core;bundle-version="2.0.0";visibility:=reexport
-+ org.eclipse.core.resources
- Bundle-ActivationPolicy: lazy
- Bundle-RequiredExecutionEnvironment: JavaSE-1.8
- Export-Package: org.eclipse.cdt.dsf.gdb,
---- dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbLaunch.java.orig 2016-10-07 17:02:44.516651194 +0100
-+++ dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbLaunch.java 2016-10-07 17:03:32.769159413 +0100
-@@ -98,14 +98,12 @@
- import org.eclipse.debug.core.model.IDisconnect;
- import org.eclipse.debug.core.model.ISourceLocator;
- import org.eclipse.debug.core.model.ITerminate;
--import org.eclipse.launchbar.core.target.ILaunchTarget;
--import org.eclipse.launchbar.core.target.launch.ITargetedLaunch;
-
- /**
- * The only object in the model that implements the traditional interfaces.
- */
- @ThreadSafe
--public class GdbLaunch extends DsfLaunch implements ITerminate, IDisconnect, ITracedLaunch, ITargetedLaunch {
-+public class GdbLaunch extends DsfLaunch implements ITerminate, IDisconnect, ITracedLaunch {
- private DefaultDsfExecutor fExecutor;
- private DsfSession fSession;
- private DsfServicesTracker fTracker;
-@@ -113,7 +111,6 @@
- private boolean fShutDown = false;
- private IMemoryBlockRetrievalManager fMemRetrievalManager;
- private IDsfDebugServicesFactory fServiceFactory;
-- private ILaunchTarget fLaunchTarget;
-
- private String fGdbVersion;
-
-@@ -964,25 +961,4 @@
- IGDBLaunchConfigurationConstants.DEBUGGER_UPDATE_THREADLIST_ON_SUSPEND_DEFAULT);
- }
-
-- /**
-- * Set the launch target
-- *
-- * @param launchTarget
-- * the launch target
-- * @since 5.0
-- */
-- public void setLaunchTarget(ILaunchTarget launchTarget) {
-- this.fLaunchTarget = launchTarget;
-- }
--
-- /**
-- * Return the launch target
-- *
-- * @since 5.0
-- */
-- @Override
-- public ILaunchTarget getLaunchTarget() {
-- return fLaunchTarget;
-- }
--
- }
diff --git a/eclipse-cdt-cdtdebug.patch b/eclipse-cdt-cdtdebug.patch
index 9a8052f..4f18e8b 100644
--- a/eclipse-cdt-cdtdebug.patch
+++ b/eclipse-cdt-cdtdebug.patch
@@ -1,5 +1,5 @@
---- debug/org.eclipse.cdt.debug.application/scripts/cdtdebug.sh.orig 2016-11-28 00:02:54.000000000 +0000
-+++ debug/org.eclipse.cdt.debug.application/scripts/cdtdebug.sh 2017-01-24 13:38:38.428205883 +0000
+--- debug/org.eclipse.cdt.debug.application/scripts/cdtdebug.sh.orig 2017-06-18 14:05:04.584935592 +0100
++++ debug/org.eclipse.cdt.debug.application/scripts/cdtdebug.sh 2017-06-18 14:12:18.867312248 +0100
@@ -74,12 +74,22 @@
done
@@ -25,30 +25,8 @@
+ECLIPSE_HOME=$(dirname $(readlink -f $(which eclipse)))
ECLIPSE_EXEC="$ECLIPSE_HOME/eclipse"
- # On Mac OS X, the application layout is a bit different (Eclipse.app)
-@@ -88,18 +98,30 @@
- esac
-
- PLUGIN_DIR="$ECLIPSE_HOME/plugins"
-+DROPLET_NOARCH="$(cd $ECLIPSE_HOME/../../share/eclipse/droplets && pwd)"
-+DROPLET_ARCHFUL="$ECLIPSE_HOME/droplets"
- OSGI_JAR=`find "$PLUGIN_DIR" -maxdepth 1 -name 'org.eclipse.osgi_*.jar' -not -name '*source*' -exec basename {} \; | tail -1`
--SWT_JAR=`find "$PLUGIN_DIR" -maxdepth 1 -name 'org.eclipse.swt.*.jar' -not -name '*source*' -exec basename {} \; | tail -1`
-+LIBHOVER_JAR=`find $DROPLET_NOARCH -maxdepth 5 -name 'org.eclipse.linuxtools.cdt.libhover_*.jar' -not -name '*source*'`
-+LIBHOVER_LIB_DOCS_JAR=`find $DROPLET_NOARCH -maxdepth 5 -name 'org.eclipse.linuxtools.cdt.libhover.library.docs_*.jar' -not -name '*source*'`
-+LIBHOVER_GLIBC_JAR=`find $DROPLET_NOARCH -maxdepth 5 -name 'org.eclipse.linuxtools.cdt.libhover.glibc_*.jar' -not -name '*source*'`
-+LAUNCHBAR_CORE_JAR=`find $DROPLET_NOARCH -maxdepth 5 -name 'org.eclipse.launchbar.core_*.jar' -not -name '*source*'`
-+LAUNCHBAR_UI_JAR=`find $DROPLET_NOARCH -maxdepth 5 -name 'org.eclipse.launchbar.ui_*.jar' -not -name '*source*'`
-+TERM_CONTROL_JAR=`find $DROPLET_NOARCH -maxdepth 5 -name 'org.eclipse.tm.terminal.control_*.jar' -not -name '*source*'`
-+UI_VIEWS_LOG_JAR=`find $DROPLET_NOARCH -maxdepth 5 -name 'org.eclipse.ui.views.log_*.jar' -not -name '*source*'`
-+SWT_JAR=`find "$PLUGIN_DIR" -maxdepth 1 -name 'org.eclipse.swt.*' -not -name '*source*' -exec basename {} \; | tail -1`
- SWT_PLUGIN=`echo $SWT_JAR | sed -e "s/_[0-9]*\..*.jar//"`
--FS_JAR=`find "$PLUGIN_DIR" -maxdepth 1 -name 'org.eclipse.core.filesystem.*.jar' -not -name '*source*' -exec basename {} \; | grep -v java7 | tail -1`
-+FS_JAR=`find "$PLUGIN_DIR" -maxdepth 1 -name 'org.eclipse.core.filesystem.*' -not -name '*source*' -exec basename {} \; | grep -v java7 | tail -1`
- FS_PLUGIN=`echo $FS_JAR | sed -e "s/_[0-9]*\..*.jar//"`
--LINUX_JAR=`find "$PLUGIN_DIR" -maxdepth 1 -name 'org.eclipse.cdt.core.linux.*.jar' -not -name '*source*' -exec basename {} \; | tail -1`
-+LINUX_JAR=`find $DROPLET_ARCHFUL -maxdepth 5 -name 'org.eclipse.cdt.core.linux.*.jar' -not -name '*source*' -exec basename {} \; | tail -1`
- LINUX_PLUGIN=`echo $LINUX_JAR | sed -e "s/_[0-9]*\..*.jar//"`
+ # On macOS, the application layout is a bit different (Eclipse.app)
+@@ -92,7 +102,8 @@
# Run eclipse with the Stand-alone Debugger product specified
"$ECLIPSE_EXEC" -clean -product org.eclipse.cdt.debug.application.product \
@@ -57,8 +35,5 @@
+ -application org.eclipse.cdt.debug.application.app \
+ -data "$HOME/$workspace" -configuration file\:"$HOME/$configdir" \
+ -dev file\:"$HOME/$configdir/dev.properties" $options \
- -vmargs -Dosgi.jar=$OSGI_JAR -Dswt.plugin=$SWT_PLUGIN -Dfs.plugin=$FS_PLUGIN \
-+ -Dlaunchbar.core=$LAUNCHBAR_CORE_JAR -Dlaunchbar.ui=$LAUNCHBAR_UI_JAR -Dui.views.log=$UI_VIEWS_LOG_JAR -Dterm.control=$TERM_CONTROL_JAR \
-+ -Dlibhover=$LIBHOVER_JAR -Dlibhover.lib.docs=$LIBHOVER_LIB_DOCS_JAR -Dlibhover.glibc=$LIBHOVER_GLIBC_JAR \
- -Dlinux.plugin=$LINUX_PLUGIN -Declipse.home="$ECLIPSE_HOME"
+ -vmargs -Dosgi.jar=$OSGI_JAR -Declipse.home="$ECLIPSE_HOME"
diff --git a/eclipse-cdt-config-ini.patch b/eclipse-cdt-config-ini.patch
index 8b74589..00f3713 100644
--- a/eclipse-cdt-config-ini.patch
+++ b/eclipse-cdt-config-ini.patch
@@ -1,12 +1,101 @@
-diff -up ./debug/org.eclipse.cdt.debug.application/scripts/config.ini.fix ./debug/org.eclipse.cdt.debug.application/scripts/config.ini
---- ./debug/org.eclipse.cdt.debug.application/scripts/config.ini.fix 2017-01-16 16:22:24.557884614 -0500
-+++ ./debug/org.eclipse.cdt.debug.application/scripts/config.ini 2017-01-16 16:35:17.680396251 -0500
-@@ -2,6 +2,6 @@
- #Fri Dec 20 17:38:27 EST 2013
- osgi.install.area=file\:$eclipse.home$
- osgi.framework=file\:$eclipse.home$/plugins/$osgi.jar$
--osgi.bundles=org.eclipse.cdt.core.linux,org.eclipse.linuxtools.cdt.libhover.library.docs,org.eclipse.cdt.core.native,org.eclipse.core.net,org.eclipse.e4.core.di.extensions,org.eclipse.cdt.debug.ui.memory.floatingpoint,org.eclipse.ui.editors,org.eclipse.equinox.ds@1\:start,org.eclipse.search,org.eclipse.text,org.eclipse.jface.databinding,org.eclipse.cdt.debug.ui.memory.search,org.eclipse.debug.core,org.apache.batik.util,org.eclipse.cdt.debug.ui.memory.memorybrowser,org.eclipse.e4.ui.widgets,org.eclipse.cdt.debug.core,org.eclipse.ui,org.eclipse.cdt.make.core,javax.annotation,org.eclipse.equinox.registry,org.eclipse.cdt.dsf.ui,org.eclipse.cdt.debug.ui.memory.traditional,org.eclipse.cdt.ui,org.eclipse.ui.ide,org.w3c.dom.svg,org.eclipse.jface,org.eclipse.ltk.ui.refactoring,org.w3c.dom.smil,org.eclipse.e4.ui.model.workbench,org.eclipse.equinox.bidi,org.eclipse.e4.ui.workbench,org.eclipse.e4.ui.di,org.eclipse.debug.ui,org.eclipse.e4.ui.bindings,org.eclipse.core.contenttype,org.eclipse.e4.ui.workbench.swt,org.eclipse.ui.views,org.eclipse.emf.ecore.change,org.eclipse.equinox.app,org.eclipse.e4.ui.services,org.eclipse.ant.core,org.eclipse.equinox.p2.core,org.eclipse.cdt.core,org.eclipse.cdt.debug.application,org.eclipse.cdt.debug.application.doc,org.eclipse.core.resources,org.eclipse.team.ui,org.eclipse.equinox.common@2\:start,org.eclipse.equinox.p2.engine,org.eclipse.cdt.debug.ui,org.eclipse.ui.views.properties.tabbed,org.eclipse.ui.views.log,org.eclipse.help,org.eclipse.help.ui,org.eclipse.help.base,org.eclipse.help.webapp,org.eclipse.equinox.jsp.jasper,org.eclipse.equinox.jsp.jasper.registry,org.apache.jasper.glassfish,org.apache.lucene.core,org.apache.lucene.analysis,org.eclipse.equinox.http.jetty,org.eclipse.equinox.http.registry,org.eclipse.jetty.http,org.eclipse.equinox.http.servlet,org.eclipse.jetty.io,org.eclipse.jetty.server,org.eclipse.jetty.servlet,org.eclipse.jetty.util,org.eclipse.jetty.continuation,org.eclipse.jetty.security,javax.servlet.jsp,javax.el,org.eclipse.core.filesystem,org.eclipse.equinox.event,org.eclipse.cdt.dsf.gdb.ui,org.eclipse.ltk.core.refactoring,com.ibm.icu,org.eclipse.swt,org.eclipse.core.filebuffers,org.eclipse.e4.ui.workbench.addons.swt,javax.inject,$swt.plugin$,org.eclipse.core.databinding.observable,org.eclipse.core.jobs,org.eclipse.ui.forms,org.eclipse.e4.core.contexts,javax.xml,org.eclipse.core.variables,org.eclipse.ui.navigator,org.eclipse.e4.core.commands,org.eclipse.core.databinding,org.eclipse.core.commands,org.eclipse.ui.workbench,org.eclipse.equinox.util,org.eclipse.cdt.launch,org.w3c.css.sac,org.eclipse.e4.ui.workbench.renderers.swt,org.eclipse.cdt.managedbuilder.core,org.eclipse.jface.text,org.eclipse.cdt.managedbuilder.gnu.ui,org.eclipse.equinox.p2.metadata,org.eclipse.emf.ecore.xmi,org.eclipse.emf.common,org.eclipse.cdt.gdb,org.eclipse.compare.core,$linux.plugin$,org.eclipse.ui.console,org.eclipse.cdt.dsf.gdb,javax.servlet,org.eclipse.equinox.p2.repository,org.eclipse.linuxtools.cdt.libhover.glibc,org.eclipse.equinox.security,org.eclipse.compare,org.eclipse.core.runtime@start,org.eclipse.cdt.dsf,org.eclipse.osgi.services,org.eclipse.e4.ui.workbench3,org.eclipse.equinox.preferences,org.w3c.dom.events,org.eclipse.linuxtools.cdt.libhover,org.eclipse.ui.navigator.resources,org.eclipse.e4.ui.css.core,org.eclipse.ui.workbench.texteditor,org.eclipse.core.expressions,org.eclipse.e4.ui.css.swt.theme,org.eclipse.core.databinding.property,org.eclipse.emf.ecore,org.eclipse.e4.core.services,org.eclipse.cdt.gdb.ui,org.apache.batik.util.gui,org.eclipse.e4.core.di,$fs.plugin$,org.eclipse.team.core,org.eclipse.cdt.debug.ui.memory.transport,org.eclipse.equinox.p2.metadata.repository,org.eclipse.e4.ui.css.swt,org.apache.batik.css,org.eclipse.e4.emf.xpath,org.apache.commons.jxpath,org.tukaani.xz,org.eclipse.e4.core.di.annotations,com.google.gson,org.eclipse.launchbar.core,org.eclipse.launchbar.ui,org.eclipse.tools.templates.core,org.eclipse.tools.templates.ui,org.eclipse.tm.terminal.control
--osgi.configuration.cascaded=false
-+osgi.bundles=org.eclipse.cdt.core.linux,$libhover.lib.docs$,org.eclipse.cdt.core.native,org.eclipse.core.net,org.eclipse.e4.core.di.extensions,org.eclipse.cdt.debug.ui.memory.floatingpoint,org.eclipse.ui.editors,org.eclipse.equinox.ds@1\:start,org.eclipse.search,org.eclipse.text,org.eclipse.jface.databinding,org.eclipse.cdt.debug.ui.memory.search,org.eclipse.debug.core,org.apache.batik.util,org.eclipse.cdt.debug.ui.memory.memorybrowser,org.eclipse.e4.ui.widgets,org.eclipse.cdt.debug.core,org.eclipse.ui,org.eclipse.cdt.make.core,org.eclipse.equinox.registry,org.eclipse.cdt.dsf.ui,org.eclipse.cdt.debug.ui.memory.traditional,org.eclipse.cdt.ui,org.eclipse.ui.ide,org.w3c.dom.svg,org.eclipse.jface,org.eclipse.ltk.ui.refactoring,org.eclipse.e4.ui.model.workbench,org.eclipse.equinox.bidi,org.eclipse.e4.ui.workbench,org.eclipse.e4.ui.di,org.eclipse.debug.ui,org.eclipse.e4.ui.bindings,org.eclipse.core.contenttype,org.eclipse.e4.ui.workbench.swt,org.eclipse.ui.views,org.eclipse.emf.ecore.change,org.eclipse.equinox.app,org.eclipse.e4.ui.services,org.eclipse.ant.core,org.eclipse.equinox.p2.core,org.eclipse.cdt.core,org.eclipse.cdt.debug.application,org.eclipse.cdt.debug.application.doc,org.eclipse.core.resources,org.eclipse.team.ui,org.eclipse.equinox.common@2\:start,org.eclipse.equinox.p2.engine,org.eclipse.cdt.debug.ui,org.eclipse.ui.views.properties.tabbed,$ui.views.log$,org.eclipse.help,org.eclipse.help.ui,org.eclipse.help.base,org.eclipse.help.webapp,org.eclipse.equinox.jsp.jasper,org.eclipse.equinox.jsp.jasper.registry,org.glassfish.web.javax.servlet.jsp,org.apache.lucene.core,org.apache.lucene.queryparser,org.apache.lucene.queries,org.apache.lucene.sandbox,org.apache.lucene.analyzers-smartcn,org.apache.lucene.spatial,org.apache.lucene.spatial3d,org.apache.lucene.analyzers-common,org.eclipse.equinox.http.jetty,org.eclipse.equinox.http.registry,org.eclipse.jetty.http,org.eclipse.equinox.http.servlet,org.eclipse.jetty.io,org.eclipse.jetty.server,org.eclipse.jetty.servlet,org.eclipse.jetty.util,org.eclipse.jetty.continuation,org.eclipse.jetty.security,javax.servlet.jsp,com.sun.el.javax.el,javax.el-api,org.eclipse.core.filesystem,org.eclipse.equinox.event,org.eclipse.cdt.dsf.gdb.ui,org.eclipse.ltk.core.refactoring,com.ibm.icu,org.eclipse.swt,org.eclipse.core.filebuffers,org.eclipse.e4.ui.workbench.addons.swt,javax.inject,$swt.plugin$,org.eclipse.core.databinding.observable,org.eclipse.core.jobs,org.eclipse.ui.forms,org.eclipse.e4.core.contexts,javax.xml,org.eclipse.core.variables,org.eclipse.ui.navigator,org.eclipse.e4.core.commands,org.eclipse.core.databinding,org.eclipse.core.commands,org.eclipse.ui.workbench,org.eclipse.equinox.util,org.eclipse.cdt.launch,org.w3c.css.sac,org.eclipse.e4.ui.workbench.renderers.swt,org.eclipse.cdt.managedbuilder.core,org.eclipse.jface.text,org.eclipse.cdt.managedbuilder.gnu.ui,org.eclipse.equinox.p2.metadata,org.eclipse.emf.ecore.xmi,org.eclipse.emf.common,org.eclipse.cdt.gdb,org.eclipse.compare.core,$linux.plugin$,org.eclipse.ui.console,org.eclipse.cdt.dsf.gdb,javax.servlet-api,org.eclipse.equinox.p2.repository,$libhover.glibc$,org.eclipse.equinox.security,org.eclipse.compare,org.eclipse.core.runtime@start,org.eclipse.cdt.dsf,org.eclipse.osgi.services,org.eclipse.e4.ui.workbench3,org.eclipse.equinox.preferences,$libhover$,org.eclipse.ui.navigator.resources,org.eclipse.e4.ui.css.core,org.eclipse.ui.workbench.texteditor,org.eclipse.core.expressions,org.eclipse.e4.ui.css.swt.theme,org.eclipse.core.databinding.property,org.eclipse.emf.ecore,org.eclipse.e4.core.services,org.eclipse.cdt.gdb.ui,org.apache.batik.util.gui,org.eclipse.e4.core.di,$fs.plugin$,org.eclipse.team.core,org.eclipse.cdt.debug.ui.memory.transport,org.eclipse.equinox.p2.metadata.repository,org.eclipse.e4.ui.css.swt,org.apache.batik.css,org.eclipse.jdt.core.compiler.batch,org.eclipse.e4.emf.xpath,org.apache.commons.jxpath,org.tukaani.xz,org.eclipse.e4.core.di.annotations,com.google.gson,$launchbar.core$,$launchbar.ui$,org.eclipse.tools.templates.core,org.eclipse.tools.templates.ui,$term.control$,org.apache.regexp,com.spatial4j
-+osgi.configuration.cascaded=true
- osgi.bundles.defaultStartLevel=4
+--- ./debug/org.eclipse.cdt.debug.application.product/debug.product.orig 2017-06-26 10:38:53.179468917 +0100
++++ ./debug/org.eclipse.cdt.debug.application.product/debug.product 2017-06-26 10:52:50.985256677 +0100
+@@ -176,12 +176,11 @@
+ <plugins>
+ <plugin id="com.google.gson"/>
+ <plugin id="com.ibm.icu"/>
+- <plugin id="javax.annotation"/>
+- <plugin id="javax.el"/>
++ <plugin id="com.sun.el.javax.el"/>
++ <plugin id="javax.el-api"/>
+ <plugin id="javax.inject"/>
+- <plugin id="javax.servlet"/>
++ <plugin id="javax.servlet-api"/>
+ <plugin id="javax.servlet.jsp"/>
+- <plugin id="javax.xml"/>
+ <plugin id="org.apache.batik.css"/>
+ <plugin id="org.apache.batik.util"/>
+ <plugin id="org.apache.batik.util.gui"/>
+@@ -191,20 +190,15 @@
+ <plugin id="org.apache.felix.scr"/>
+ <plugin id="org.apache.httpcomponents.httpclient"/>
+ <plugin id="org.apache.httpcomponents.httpcore"/>
+- <plugin id="org.apache.jasper.glassfish"/>
++ <plugin id="org.glassfish.web.javax.servlet.jsp"/>
+ <plugin id="org.apache.lucene.analyzers-common"/>
+ <plugin id="org.apache.lucene.analyzers-smartcn"/>
+ <plugin id="org.apache.lucene.core"/>
+ <plugin id="org.apache.lucene.misc"/>
+ <plugin id="org.eclipse.cdt.core"/>
+ <plugin id="org.eclipse.cdt.core.linux" fragment="true"/>
+- <plugin id="org.eclipse.cdt.core.linux.x86" fragment="true"/>
+ <plugin id="org.eclipse.cdt.core.linux.x86_64" fragment="true"/>
+- <plugin id="org.eclipse.cdt.core.macosx" fragment="true"/>
+ <plugin id="org.eclipse.cdt.core.native"/>
+- <plugin id="org.eclipse.cdt.core.win32" fragment="true"/>
+- <plugin id="org.eclipse.cdt.core.win32.x86" fragment="true"/>
+- <plugin id="org.eclipse.cdt.core.win32.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.cdt.debug.application"/>
+ <plugin id="org.eclipse.cdt.debug.application.doc"/>
+ <plugin id="org.eclipse.cdt.debug.core"/>
+@@ -235,17 +229,10 @@
+ <plugin id="org.eclipse.core.expressions"/>
+ <plugin id="org.eclipse.core.filebuffers"/>
+ <plugin id="org.eclipse.core.filesystem"/>
+- <plugin id="org.eclipse.core.filesystem.linux.x86" fragment="true"/>
+ <plugin id="org.eclipse.core.filesystem.linux.x86_64" fragment="true"/>
+- <plugin id="org.eclipse.core.filesystem.macosx" fragment="true"/>
+- <plugin id="org.eclipse.core.filesystem.win32.x86" fragment="true"/>
+- <plugin id="org.eclipse.core.filesystem.win32.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.core.jobs"/>
+ <plugin id="org.eclipse.core.net"/>
+- <plugin id="org.eclipse.core.net.linux.x86" fragment="true"/>
+ <plugin id="org.eclipse.core.net.linux.x86_64" fragment="true"/>
+- <plugin id="org.eclipse.core.net.win32.x86" fragment="true"/>
+- <plugin id="org.eclipse.core.net.win32.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.core.resources"/>
+ <plugin id="org.eclipse.core.runtime"/>
+ <plugin id="org.eclipse.core.variables"/>
+@@ -270,7 +257,6 @@
+ <plugin id="org.eclipse.e4.ui.workbench"/>
+ <plugin id="org.eclipse.e4.ui.workbench.addons.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench.renderers.swt"/>
+- <plugin id="org.eclipse.e4.ui.workbench.renderers.swt.cocoa" fragment="true"/>
+ <plugin id="org.eclipse.e4.ui.workbench.swt"/>
+ <plugin id="org.eclipse.e4.ui.workbench3"/>
+ <plugin id="org.eclipse.ecf"/>
+@@ -298,11 +284,7 @@
+ <plugin id="org.eclipse.equinox.jsp.jasper"/>
+ <plugin id="org.eclipse.equinox.jsp.jasper.registry"/>
+ <plugin id="org.eclipse.equinox.launcher"/>
+- <plugin id="org.eclipse.equinox.launcher.cocoa.macosx.x86_64" fragment="true"/>
+- <plugin id="org.eclipse.equinox.launcher.gtk.linux.x86" fragment="true"/>
+ <plugin id="org.eclipse.equinox.launcher.gtk.linux.x86_64" fragment="true"/>
+- <plugin id="org.eclipse.equinox.launcher.win32.win32.x86" fragment="true"/>
+- <plugin id="org.eclipse.equinox.launcher.win32.win32.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.equinox.p2.artifact.repository"/>
+ <plugin id="org.eclipse.equinox.p2.core"/>
+ <plugin id="org.eclipse.equinox.p2.director"/>
+@@ -349,11 +331,7 @@
+ <plugin id="org.eclipse.osgi.util"/>
+ <plugin id="org.eclipse.search"/>
+ <plugin id="org.eclipse.swt"/>
+- <plugin id="org.eclipse.swt.cocoa.macosx.x86_64" fragment="true"/>
+- <plugin id="org.eclipse.swt.gtk.linux.x86" fragment="true"/>
+ <plugin id="org.eclipse.swt.gtk.linux.x86_64" fragment="true"/>
+- <plugin id="org.eclipse.swt.win32.win32.x86" fragment="true"/>
+- <plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/>
+ <plugin id="org.eclipse.team.core"/>
+ <plugin id="org.eclipse.team.ui"/>
+ <plugin id="org.eclipse.text"/>
+@@ -381,8 +359,9 @@
+ <plugin id="org.tukaani.xz"/>
+ <plugin id="org.w3c.css.sac"/>
+ <plugin id="org.w3c.dom.events"/>
+- <plugin id="org.w3c.dom.smil"/>
+ <plugin id="org.w3c.dom.svg"/>
++ <plugin id="org.kxml2"/>
++ <plugin id="org.xmlpull"/>
+ </plugins>
+
+ <configurations>
diff --git a/eclipse-cdt.spec b/eclipse-cdt.spec
index e9253f6..c3fa639 100644
--- a/eclipse-cdt.spec
+++ b/eclipse-cdt.spec
@@ -1,13 +1,19 @@
-# Change following to 0 to default to no container/remote support when building for
-# first time in a release...this is needed to build eclipse-linuxtools-docker and
-# eclipse.remote which are circular dependencies of eclipse-cdt
+%global _eclipsedir %{_prefix}/lib/eclipse
+
+# Change following to 0 to default to no container/remote support when building
+# for the first time in a buildroot -- this is needed to build:
+# * eclipse-linuxtools-docker
+# * eclipse-remote
+# * eclipse-tm-terminal
+# * eclipse-launchbar
+# which all make circular dependencies on cdt
%global _enable_container_and_remote_support 1
%global _enable_container_support 1
Epoch: 1
%global eclipse_base %{_datadir}/eclipse
-%global cdt_snapshot org.eclipse.cdt-CDT_9_2_1
+%global cdt_snapshot org.eclipse.cdt-bfe45e8c74f297fbfaa89e9fc33527891207108e
%global template_snapshot org.eclipse.tools.templates-0435f275891b23060faa5cc33664c6a2fefbf2ac
%ifarch %{ix86}
@@ -19,18 +25,18 @@ Epoch: 1
%ifarch ppc64 ppc64p7
%global eclipse_arch ppc64
%endif
-%ifarch s390 s390x x86_64 aarch64 ppc64le
+%ifarch s390x x86_64 aarch64 ppc64le
%global eclipse_arch %{_arch}
%endif
# Desktop file information
-%global app_name %{?app_name_prefix} Eclipse C/C++ Debugger
+%global app_name %{?app_name_prefix}%{!?app_name_prefix:Eclipse} C/C++ Debugger
%global app_exec %{?app_exec_prefix} cdtdebug
Summary: Eclipse C/C++ Development Tools (CDT) plugin
Name: eclipse-cdt
-Version: 9.2.1
-Release: 3%{?dist}
+Version: 9.3.0
+Release: 0.2.gitbfe45e8%{?dist}
License: EPL and CPL
URL: http://www.eclipse.org/cdt
@@ -56,10 +62,6 @@ Patch2: eclipse-cdt-config-ini.patch
# Following fixes Standalone Debugger README file to refer to /usr/bin/cdtdebug
Patch3: eclipse-cdt-cdtdebug-readme.patch
-%if ! %{_enable_container_and_remote_support}
-Patch4: bootstrap.patch
-%endif
-
BuildRequires: make
BuildRequires: gcc-c++
BuildRequires: tycho
@@ -72,6 +74,8 @@ BuildRequires: eclipse-platform
BuildRequires: eclipse-pde
BuildRequires: eclipse-contributor-tools
BuildRequires: eclipse-swtbot >= 2.4.0
+BuildRequires: eclipse-launchbar
+BuildRequires: eclipse-tm-terminal
BuildRequires: exec-maven-plugin
BuildRequires: maven-antrun-plugin
BuildRequires: freemarker
@@ -81,14 +85,14 @@ BuildRequires: mockito
BuildRequires: eclipse-linuxtools-docker >= 5.3.0
%endif
BuildRequires: eclipse-remote >= 2.1.0
-BuildRequires: eclipse-launchbar >= 1:2.1.0
+BuildRequires: eclipse-tm-terminal-connectors >= 4.3.0
%endif
Requires: gdb make gcc-c++
%if %{_enable_container_and_remote_support}
Requires: autoconf automake libtool
Requires: eclipse-remote >= 2.1.0
-Requires: eclipse-launchbar >= 1:2.1.0
+Requires: eclipse-tm-terminal-connectors >= 4.3.0
%endif
Recommends: eclipse-linuxtools-libhover
@@ -128,6 +132,7 @@ Optional llvm parsers for the CDT.
%package arduino
Summary: Arduino C++ Tools
Requires: %{name} = %{epoch}:%{version}-%{release}
+Requires: eclipse-tm-terminal-connectors >= 4.3.0
%description arduino
Extensions to support Arduino C++ projects in Eclipse.
@@ -206,12 +211,10 @@ TYCHO_ENV="<environment><os>linux</os><ws>gtk</ws><arch>%{eclipse_arch}</arch></
%pom_xpath_set "pom:configuration/pom:environments" "$TYCHO_ENV" core/org.eclipse.cdt.core.linux
# Add secondary arch support if we are building there
-%ifarch %{arm} s390 s390x aarch64
+%ifarch %{arm} s390x aarch64
pushd core
-pushd org.eclipse.cdt.core.native
-sed -i -e 's/linux.x86 /linux.%{eclipse_arch} /g' plugin.properties
-sed -i -e 's/\\(x86\\)/(%{eclipse_arch})/g' plugin.properties
-popd
+sed -i -e 's/linux.x86 /linux.%{eclipse_arch} /g' org.eclipse.cdt.core.native/plugin.properties
+sed -i -e 's/\\(x86\\)/(%{eclipse_arch})/g' org.eclipse.cdt.core.native/plugin.properties
cp -r org.eclipse.cdt.core.linux.x86 org.eclipse.cdt.core.linux.%{eclipse_arch}
rm -fr org.eclipse.cdt.core.linux.x86
pushd org.eclipse.cdt.core.linux.%{eclipse_arch}
@@ -221,11 +224,9 @@ mv os/linux/x86 os/linux/%{eclipse_arch}
popd
sed -i -e 's/x86/%{eclipse_arch}/g' org.eclipse.cdt.core.linux/pom.xml
popd
-pushd releng/org.eclipse.cdt.native-feature
-sed -i -e 's/"org.eclipse.cdt.core.linux.x86"/"org.eclipse.cdt.core.linux.%{eclipse_arch}"/g' feature.xml
-sed -i -e 's/arch="x86"/arch="%{eclipse_arch}"/' feature.xml
-popd
-sed -i -e "s|org.eclipse.cdt.core.linux.x86</module>|org.eclipse.cdt.core.linux.%{eclipse_arch}</module>|g" pom.xml
+sed -i -e 's/"org.eclipse.cdt.core.linux.x86"/"org.eclipse.cdt.core.linux.%{eclipse_arch}"/g' \
+ -e 's/arch="x86"/arch="%{eclipse_arch}"/' releng/org.eclipse.cdt.native-feature/feature.xml
+sed -i -e "s|org.eclipse.cdt.core.linux.x86</module>|org.eclipse.cdt.core.linux.%{eclipse_arch}</module>|g" core/pom.xml
%endif
%ifarch s390x x86_64 aarch64 ppc64le ppc64
sed -i -e 's|linux/x86_64/|linux/%{eclipse_arch}/|' \
@@ -237,6 +238,10 @@ sed -i -e 's|linux/x86/|linux/%{eclipse_arch}/|' \
sed -i -e 's|-m.. -fPIC -D_REENTRANT|$(CFLAGS)|' \
native/org.eclipse.cdt.native.serial/jni/Makefile
+# Ensure correct platform fragments appear in config.ini
+sed -i -e 's/x86_64/%{eclipse_arch}/' \
+ debug/org.eclipse.cdt.debug.application.product/debug.product
+
# Force the arch-specific plug-ins to be dir-shaped so that binary stripping works and the native files
# aren't loaded into the user.home .eclipse configuration
echo "Eclipse-BundleShape: dir" >> core/org.eclipse.cdt.core.linux.%{eclipse_arch}/META-INF/MANIFEST.MF
@@ -251,78 +256,61 @@ mkdir -p native/org.eclipse.cdt.native.serial/os/linux/%{eclipse_arch} \
core/org.eclipse.cdt.core.linux.%{eclipse_arch}/os/linux/%{eclipse_arch}
# Don't use the target configuration
-%pom_disable_module releng/org.eclipse.cdt.target
+%pom_disable_module org.eclipse.cdt.target releng
%pom_xpath_remove "pom:configuration/pom:target"
# Don't need to build the repo
-%pom_disable_module releng/org.eclipse.cdt.repo
-%pom_disable_module releng/org.eclipse.cdt.testing.repo
+%pom_disable_module org.eclipse.cdt.repo releng
+%pom_disable_module org.eclipse.cdt.testing.repo releng
# Disable the jgit provider and force default packaging
%pom_remove_plugin org.eclipse.tycho:tycho-packaging-plugin
+
+# Unnecessary plugins for RPM builds
%pom_remove_plugin org.jacoco:jacoco-maven-plugin
# Disable docker, autotools, and remote features if we are building a boot-strap build
%if ! %{_enable_container_and_remote_support}
-%patch4
-%pom_disable_module launch/org.eclipse.cdt.docker.launcher
-%pom_disable_module launch/org.eclipse.cdt.docker.launcher-feature
-%pom_disable_module launch/org.eclipse.cdt.docker.launcher.source-feature
-%pom_disable_module build/org.eclipse.cdt.autotools.core
-%pom_disable_module build/org.eclipse.cdt.autotools.docs
-%pom_disable_module build/org.eclipse.cdt.autotools.tests
-%pom_disable_module build/org.eclipse.cdt.autotools.ui
-%pom_disable_module build/org.eclipse.cdt.autotools.ui.tests
-%pom_disable_module build/org.eclipse.cdt.autotools-feature
-%pom_disable_module build/org.eclipse.cdt.autotools.source-feature
-%pom_disable_module cross/org.eclipse.cdt.launch.remote
-%pom_disable_module cross/org.eclipse.cdt.launch.remote-feature
-%pom_disable_module qt/org.eclipse.cdt.qt.core
-%pom_disable_module qt/org.eclipse.cdt.qt.ui
-%pom_disable_module qt/org.eclipse.cdt.qt.ui.tests
-%pom_disable_module qt/org.eclipse.cdt.qt-feature
-%pom_disable_module build/org.eclipse.cdt.cmake.core
-%pom_disable_module build/org.eclipse.cdt.cmake.ui
-%pom_disable_module build/org.eclipse.cdt.cmake-feature
-%pom_disable_module remote/org.eclipse.cdt.remote.core
-%pom_disable_module remote/org.eclipse.cdt.remote-feature
-%pom_disable_module toolchains/arduino/org.eclipse.cdt.arduino.core
-%pom_disable_module toolchains/arduino/org.eclipse.cdt.arduino.ui
-%pom_disable_module toolchains/arduino/org.eclipse.cdt.arduino-feature
+%pom_disable_module org.eclipse.cdt.docker.launcher launch
+%pom_disable_module org.eclipse.cdt.docker.launcher-feature launch
+%pom_disable_module org.eclipse.cdt.autotools.core build
+%pom_disable_module org.eclipse.cdt.autotools.docs build
+%pom_disable_module org.eclipse.cdt.autotools.tests build
+%pom_disable_module org.eclipse.cdt.autotools.ui build
+%pom_disable_module org.eclipse.cdt.autotools.ui.tests build
+%pom_disable_module org.eclipse.cdt.autotools-feature build
+%pom_disable_module org.eclipse.cdt.cmake.core build
+%pom_disable_module org.eclipse.cdt.cmake.ui build
+%pom_disable_module org.eclipse.cdt.cmake-feature build
+%pom_disable_module cross
+%pom_disable_module remote
+%pom_disable_module qt
+%pom_disable_module toolchains/arduino
%else
%if ! %{_enable_container_support}
-%pom_disable_module launch/org.eclipse.cdt.docker.launcher
-%pom_disable_module launch/org.eclipse.cdt.docker.launcher-feature
-%pom_disable_module launch/org.eclipse.cdt.docker.launcher.source-feature
-%endif
+%pom_disable_module org.eclipse.cdt.docker.launcher launch
+%pom_disable_module org.eclipse.cdt.docker.launcher-feature launch
%endif
-
# Always disable arduino support on rhel
%if 0%{?rhel}
-%pom_disable_module toolchains/arduino/org.eclipse.cdt.arduino.core
-%pom_disable_module toolchains/arduino/org.eclipse.cdt.arduino.ui
-%pom_disable_module toolchains/arduino/org.eclipse.cdt.arduino-feature
+%pom_disable_module toolchains/arduino
+%endif
%endif
# Disable all bundles not relavent to the platform we currently building
-%pom_xpath_inject "pom:modules" "<module>core/org.eclipse.cdt.core.linux.ppc64le</module>"
for b in `ls core/ | grep -P -e 'org.eclipse.cdt.core\.(?!linux\.%{eclipse_arch}$|tests$|linux$|native$)'` ; do
- module=$(grep ">core/$b<" pom.xml || :)
+ module=$(grep ">$b<" core/pom.xml || :)
if [ -n "$module" ] ; then
- %pom_disable_module core/$b
+ %pom_disable_module $b core
%pom_xpath_remove "plugin[@id='$b']" releng/org.eclipse.cdt.native-feature/feature.xml
fi
done
-for b in aix macosx win32 ; do
- %pom_xpath_remove "plugin[@id='org.eclipse.cdt.core.$b.source']" releng/org.eclipse.cdt.native.source-feature/feature.xml
-done
# Fix hamcrest and mockito deps
sed -i -e 's/org.mockito/org.mockito.mockito-core/' -e 's/org.hamcrest/org.hamcrest.library/' \
- dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/META-INF/MANIFEST.MF
-
-sed -i -e 's/org.mockito/org.mockito.mockito-core/' -e 's/org.hamcrest/org.hamcrest.library/' \
- codan/org.eclipse.cdt.codan.checkers.ui.test/META-INF/MANIFEST.MF
+ dsf-gdb/org.eclipse.cdt.tests.dsf.gdb/META-INF/MANIFEST.MF \
+ codan/org.eclipse.cdt.codan.checkers.ui.tests/META-INF/MANIFEST.MF \
+ core/org.eclipse.cdt.ui.tests/META-INF/MANIFEST.MF
# Add template tools to the build
tar xf %{SOURCE1} --strip-components=1 --exclude=%{template_snapshot}/pom.xml
@@ -338,19 +326,14 @@ sed -i -e 's/org.freemarker/org.freemarker.freemarker/' \
bundles/org.eclipse.tools.templates.freemarker/META-INF/MANIFEST.MF \
build/org.eclipse.cdt.cmake.core/META-INF/MANIFEST.MF
-# Drop unnecessary dep on log4j
-sed -i -e '/log4j/d' build/org.eclipse.cdt.autotools.ui.tests/META-INF/MANIFEST.MF
-
%mvn_package "::pom::" __noinstall
+%mvn_package ":*.{testing,tests,tests.dsf,tests.dsf.gdb}" tests
%mvn_package "::jar:sources{,-feature}:" sdk
-%mvn_package ":*.source{,.feature}" sdk
%mvn_package :*.sdk sdk
%mvn_package :*.doc.isv sdk
%mvn_package ":org.eclipse.cdt.core{,.native,.linux,.linux.%{eclipse_arch}}" native
%mvn_package ":org.eclipse.cdt.native{,.serial}" native
-%mvn_package ":*.testsrunner.test" tests
%mvn_package ":*.testsrunner*"
-%mvn_package ":*.test{,s}*" tests
%mvn_package :*parser* parsers
%mvn_package ":org.eclipse.cdt.*{xlc,xlupc,bupc}*" parsers
%mvn_package :org.eclipse.tools.templates.*
@@ -424,11 +407,12 @@ $(ls . | grep org.eclipse.tools.templates.ui_) ; do
sed -i -e "s,${PLUGIN%_*}\,,file\\\\:%{eclipse_base}/droplets/cdt/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
done
for PLUGIN in \
-$(cd %{buildroot}%{_libdir}/eclipse/droplets/cdt-native/eclipse/plugins && ls . | grep com.google.gson_) \
-$(cd %{buildroot}%{_libdir}/eclipse/droplets/cdt-native/eclipse/plugins && ls . | grep org.eclipse.cdt.core_) \
-$(cd %{buildroot}%{_libdir}/eclipse/droplets/cdt-native/eclipse/plugins && ls . | grep org.eclipse.cdt.core.linux_) \
-$(cd %{buildroot}%{_libdir}/eclipse/droplets/cdt-native/eclipse/plugins && ls . | grep org.eclipse.cdt.core.native_) ; do
- sed -i -e "s,${PLUGIN%_*}\,,file\\\\:%{_libdir}/eclipse/droplets/cdt-native/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
+$(cd %{buildroot}%{_eclipsedir}/droplets/cdt-native/eclipse/plugins && ls . | grep com.google.gson_) \
+$(cd %{buildroot}%{_eclipsedir}/droplets/cdt-native/eclipse/plugins && ls . | grep org.eclipse.cdt.core_) \
+$(cd %{buildroot}%{_eclipsedir}/droplets/cdt-native/eclipse/plugins && ls . | grep org.eclipse.cdt.core.linux_) \
+$(cd %{buildroot}%{_eclipsedir}/droplets/cdt-native/eclipse/plugins && ls . | grep org.eclipse.cdt.core.linux.%{eclipse_arch}_) \
+$(cd %{buildroot}%{_eclipsedir}/droplets/cdt-native/eclipse/plugins && ls . | grep org.eclipse.cdt.core.native_) ; do
+ sed -i -e "s,${PLUGIN%_*}\,,file\\\\:%{_eclipsedir}/droplets/cdt-native/eclipse/plugins/$PLUGIN\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
done
sed -i -e "s,org.eclipse.cdt.debug.application\,,file\\\\:%{eclipse_base}/droplets/cdt/eclipse/plugins/org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION.jar\,," org.eclipse.cdt.debug.application_$DEBUGAPPLICATIONVERSION/scripts/config.ini
@@ -530,6 +514,14 @@ fi
%endif
%changelog
+* Mon Jun 19 2017 Mat Booth <mat.booth(a)redhat.com> - 1:9.3.0-0.2.gitbfe45e8
+- Allow boostrap modes to build against launchbar and tm-terminal when those
+ packages are also bootstrapped
+- Attempt to fix standalone debugger
+
+* Sun Jun 18 2017 Mat Booth <mat.booth(a)redhat.com> - 1:9.3.0-0.1.gitbfe45e8
+- Update to Oxygen snapshot
+
* Tue May 02 2017 Mat Booth <mat.booth(a)redhat.com> - 1:9.2.1-3
- Rebuilt for multilib change
diff --git a/sources b/sources
index c98e19e..a1d05f8 100644
--- a/sources
+++ b/sources
@@ -1,3 +1,2 @@
-SHA512 (eclipse-cdt.desktop) = 8b4b8613c6ca174b91d48cac5823fe304886cfd63473e8c0814d08d7923b40b488db27232ae4a81248f2f200c0e8211ba6b60797cfc1b7f61b4309a97c2aaeec
-SHA512 (org.eclipse.cdt-CDT_9_2_1.tar.xz) = 8367b738ec37bf822e69a778d9d752dad90f1b53c64db4a04a89bae471e42ba6ce059be5ef6060245c20f6bb7f2c6cbd9be27f0076998e2ebaee6c7fe09f82e3
+SHA512 (org.eclipse.cdt-bfe45e8c74f297fbfaa89e9fc33527891207108e.tar.xz) = 655f5a13fd2ded3eecf5cd6c8e2949c3dc89c467b743a25242a2530017c7beeaa83b8a57faebad9b10bcb9533e8b53866eb1257d7f248459299d6b29b86067d0
SHA512 (org.eclipse.tools.templates-0435f275891b23060faa5cc33664c6a2fefbf2ac.tar.xz) = 02e05bbbf0f2d8bff8809a9d317b1710ba5a21e52fe4b63990a731e918c81605ddf10c42f59070c054a996798af37ea40d041db94f62be2e30df21e7dfa39343
6 years, 9 months
[Report] Packages Restricting Arches
by root
List of packages currently excluding arches (1872)
===========================================
- 0ad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- GtkAda
ExclusiveArch: %{GNAT_arches}
- GtkAda3
ExclusiveArch: %{GNAT_arches}
- LuxRender
ExclusiveArch: x86_64
- OpenTK
ExclusiveArch: %mono_arches
- PragmARC
ExclusiveArch: %{GNAT_arches}
- R-DynDoc
ExclusiveArch: armv7, ppc, go_arch
- RdRand
ExclusiveArch: %{ix86} x86_64
- YafaRay
ExclusiveArch: %{ix86} x86_64
- aboot
ExclusiveArch: alpha
- acpid
ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64
- ahven
ExclusiveArch: %{GNAT_arches}
- alleyoop
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x %{arm} aarch64
- american-fuzzy-lop
ExclusiveArch: %{ix86} x86_64
- anet
ExclusiveArch: %{GNAT_arches}
- apmd
ExclusiveArch: %{ix86}
- apmud
ExclusiveArch: ppc
- arm-boot-config
ExclusiveArch: %{arm}
- arm-trusted-firmware
ExclusiveArch: aarch64
- atomic
ExclusiveArch: i386 i486 i586 i686 pentium3 pentium4 athlon geode x86_64 armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl aarch64 ppc64le s390x mips mipsel mipsr6 mipsr6el mips64 mips64el mips64r6 mips64r6el
ExclusiveArch: x86_64 ppc64le
- aunit
ExclusiveArch: %GNAT_arches
- avgtime
ExclusiveArch: %{ldc_arches}
- aws
ExclusiveArch: %GNAT_arches
- banshee
ExclusiveArch: %{mono_arches}
- banshee-community-extensions
ExclusiveArch: %ix86 x86_64 ppc ppc64 ia64 %{arm} sparcv9 alpha s390x
- bareftp
ExclusiveArch: %{mono_arches}
- bcc
ExclusiveArch: x86_64
- bcm283x-firmware
ExclusiveArch: %{arm} aarch64
- beignet
ExclusiveArch: x86_64 %{ix86}
- berusky2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- biosdevname
ExclusiveArch: %{ix86} x86_64 ia64
- bless
ExclusiveArch: %mono_arches
- boo
ExclusiveArch: %{mono_arches}
- buildah
ExclusiveArch: x86_64 aarch64 ppc64le
- bwa
ExclusiveArch: x86_64
- cadvisor
ExclusiveArch: %{ix86} x86_64 aarch64 ppc64le
- calamares
ExclusiveArch: %{ix86} x86_64
- cargo
ExclusiveArch: %{rust_arches}
- carto
ExclusiveArch: %{nodejs_arches} noarch
- ccdciel
ExclusiveArch: %{fpc_arches}
- cdcollect
ExclusiveArch: %{mono_arches}
- ceph
ExclusiveArch: x86_64 aarch64 ppc64 ppc64le
ExclusiveArch: x86_64 aarch64
- chromium
ExclusiveArch: x86_64 i686
- chromium-native_client
ExclusiveArch: x86_64
- cjdns
ExclusiveArch: %{nodejs_arches}
- cmospwd
ExclusiveArch: %{ix86} x86_64
- coffee-script
ExclusiveArch: %{nodejs_arches} noarch
- colorful
ExclusiveArch: %{arm} %{ix86} x86_64 ppc ppc64
- compat-gcc-296
ExclusiveArch: %{ix86} ia64 ppc
- consul
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- containernetworking-cni
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- copr-dist-git
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le powerpc64le s390x %{mips}
- corosync
ExclusiveArch: i686 x86_64
- cpuid
ExclusiveArch: %{ix86} x86_64
- cqrlog
ExclusiveArch: %{fpc_arches}
- crash
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- cri-o
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- criu
ExclusiveArch: x86_64 %{arm} ppc64le aarch64
ExclusiveArch: x86_64 ppc64le
- cryptlib
ExclusiveArch: x86_64 %{ix86} %{arm}
- cryptobone
ExclusiveArch: x86_64 %{ix86} %{arm}
- daq
ExclusiveArch: x86_64 aarch64
- darktable
ExclusiveArch: x86_64 aarch64
- dbus-sharp
ExclusiveArch: %mono_arches
- dbus-sharp-glib
ExclusiveArch: %mono_arches
- dbxtool
ExclusiveArch: i386 x86_64 aarch64
- derelict
ExclusiveArch: %{ldc_arches}
- direnv
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dlm
ExclusiveArch: i686 x86_64
- dmidecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- dmtcp
ExclusiveArch: %ix86 x86_64 aarch64
- docco
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- docker
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- docker-anaconda-addon
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- docker-latest
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- dolphin-emu
ExclusiveArch: x86_64 armv7l aarch64
- dpdk
ExclusiveArch: x86_64 i686 aarch64 ppc64le
- dssi-vst
ExclusiveArch: %{ix86} x86_64
- dustmite
ExclusiveArch: %{ldc_arches}
- dyninst
ExclusiveArch: %{ix86} x86_64 ppc ppc64
- e3
ExclusiveArch: %{ix86} x86_64
- edac-utils
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64}
- edb
ExclusiveArch: %{ix86} x86_64
- edk2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- efibootmgr
ExclusiveArch: %{ix86} x86_64 aarch64 arm
- efivar
ExclusiveArch: %{ix86} x86_64 aarch64
- elasticdump
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- elk
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- embree
ExclusiveArch: x86_64
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- etcd
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- exciting
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- expresso
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- extlinux-bootloader
ExclusiveArch: %{arm} aarch64
- fcitx-libpinyin
ExclusiveArch: %{qt5_qtwebengine_arches}
- fedora-dockerfiles
ExclusiveArch: %{go_arches}
- fedora-gnat-project-common
ExclusiveArch: noarch %{GNAT_arches}
- fence-virt
ExclusiveArch: i686 x86_64
- fes
ExclusiveArch: x86_64
- ffcall
ExclusiveArch: %{ffcall_arches}
- firmware-addon-dell
ExclusiveArch: x86_64 ia64 %{ix86}
- flannel
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- florist
ExclusiveArch: %GPRbuild_arches
- fpc
ExclusiveArch: %{arm} %{ix86} x86_64 ppc ppc64
- frysk
ExclusiveArch: %{ix86} x86_64 ppc64
- fst
ExclusiveArch: i686
- fwupdate
ExclusiveArch: x86_64 %{ix86} aarch64
- ga
ExclusiveArch: %{ix86} x86_64
- gbrainy
ExclusiveArch: %mono_arches
- gdata-sharp
ExclusiveArch: %mono_arches
- gela-asis
ExclusiveArch: %{GNAT_arches}
- ghdl
ExclusiveArch: %{GNAT_arches}
- gio-sharp
ExclusiveArch: %mono_arches
- gir-to-d
ExclusiveArch: %{ldc_arches}
- giver
ExclusiveArch: %{mono_arches}
- gkeyfile-sharp
ExclusiveArch: %mono_arches
- gl3n
ExclusiveArch: %{ldc_arches}
- glibc32
ExclusiveArch: x86_64 ppc64 s390x
- glide
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gmqcc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- gnatcoll
ExclusiveArch: %GPRbuild_arches
- gnome-boxes
ExclusiveArch: x86_64
- gnome-desktop-sharp
ExclusiveArch: %mono_arches
- gnome-do
ExclusiveArch: %mono_arches
- gnome-guitar
ExclusiveArch: %{mono_arches}
- gnome-keyring-sharp
ExclusiveArch: %mono_arches
- gnome-rdp
ExclusiveArch: %{mono_arches}
- gnome-sharp
ExclusiveArch: %mono_arches
- gnome-subtitles
ExclusiveArch: %mono_arches
- gnu-efi
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- gnu-smalltalk
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- go-bindata
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- go-compilers
ExclusiveArch: %{go_arches}
- go-i18n
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- godep
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gofed
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- golang
ExclusiveArch: %{golang_arches}
- golang-bitbucket-kardianos-osext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-bitbucket-ww-goautoneg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-10gen-openssl
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- golang-github-3rf-mongo-lint
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-AdRoll-goamz
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-AudriusButkevicius-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-AudriusButkevicius-go-nat-pmp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-AudriusButkevicius-pfilter
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-Azure-azure-sdk-for-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-BurntSushi-toml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-BurntSushi-toml-test
ExclusiveArch: %{go_arches}
- golang-github-DATA-DOG-go-sqlmock
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-DataDog-datadog-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-MakeNowJust-heredoc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Masterminds-semver
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Masterminds-vcs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-PuerkitoBio-purell
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-PuerkitoBio-urlesc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-RangelReale-osin
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-RangelReale-osincli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-SeanDolphin-bqschema
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-Shopify-sarama
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Shopify-toxiproxy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Sirupsen-logrus
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-abbot-go-http-auth
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-agl-ed25519
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-akrennmair-gopcap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-appc-spec
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-circbuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-go-metrics
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-go-radix
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-gomdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-asaskevich-govalidator
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-auth0-go-jwt-middleware
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-aws-aws-sdk-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-beorn7-perks
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bep-gitmap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bep-inflect
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bgentry-speakeasy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bkaradzic-go-lz4
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-blang-semver
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bmizerany-assert
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-bmizerany-pat
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-bmizerany-perks
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-boltdb-bolt
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bradfitz-http2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-bugsnag-bugsnag-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bugsnag-panicwrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-calmh-du
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-calmh-luhn
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-calmh-xdr
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-ccding-go-stun
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cenkalti-backoff
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-chaseadamsio-goorgeous
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cheggaaa-pb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-chmduquesne-rollinghash
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-circonus-labs-circonus-gometrics
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-circonus-labs-circonusllhist
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cloudfoundry-incubator-candiedyaml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cockroachdb-cmux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-codegangsta-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-codegangsta-negroni
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-collectd-go-collectd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-gexpect
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-etcd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-iptables
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-coreos-go-log
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-oidc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-semver
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-coreos-go-systemd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-coreos-pkg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cpuguy83-go-md2man
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-cznic-b
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-fileutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-internal
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-mathutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-sortutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-strutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-d2g-dhcp4
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-d2g-dhcp4client
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-d4l3k-messagediff
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-davecgh-go-spew
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-daviddengcn-go-colortext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-dchest-cssmin
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-denverdino-aliyungo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-dgnorton-goback
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-dgrijalva-jwt-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-digitalocean-godo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-go-connections
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-go-units
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-libcontainer
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-libkv
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-libtrust
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-spdystream
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docopt-docopt-go
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-dustin-go-humanize
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-dvsekhvalnov-jose2go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-eapache-go-resiliency
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-eapache-queue
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-edsrzf-mmap-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-eknkc-amber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-elazarl-go-bindata-assetfs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-emicklei-go-restful
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-endophage-gotuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-evanphx-json-patch
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-fatih-pool
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-fortytw2-leaktest
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-fsnotify-fsnotify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-fsouza-go-dockerclient
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-garyburd-redigo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gengo-grpc-gateway
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-getsentry-raven-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ghodss-yaml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-glacjay-goini
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-asn1-ber-asn1-ber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-errors-errors
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-fsnotify-fsnotify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-go-ini-ini
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-go-ldap-ldap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-macaron-inject
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-go-mgo-mgo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-sql-driver-mysql
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-tomb-tomb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gobwas-glob
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-godbus-dbus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-appengine
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-glog
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-groupcache
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-golang-sys
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-time
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-blas
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-floats
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-graph
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-internal
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-lapack
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-matrix
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-google-btree
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-google-go-github
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-google-go-querystring
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-google-gofuzz
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-goraft-raft
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-context
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-handlers
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-mux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-securecookie
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-sessions
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-websocket
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gosexy-gettext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-grpc-ecosystem-go-grpc-prometheus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-grpc-ecosystem-grpc-gateway
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-grpc-grpc-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-consul-migrate
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-errwrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-checkpoint
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-cleanhttp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-immutable-radix
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-memdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-msgpack
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-multierror
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-retryablehttp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-sockaddr
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-syslog
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-uuid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-golang-lru
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-hcl
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-hil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-logutils
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-mdns
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-memberlist
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-net-rpc-msgpackrpc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-raft
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-raft-boltdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-raft-mdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-scada-client
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-serf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-yamux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hawkular-hawkular-client-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-howeyc-gopass
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-imdario-mergo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-inconshreveable-mousetrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-inconshreveable-muxado
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-influxdb-hyperleveldb-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-influxdb-influxdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-influxdb-rocksdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jackpal-gateway
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jacobsa-oglematchers
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jessevdk-go-flags
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jfrazelle-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jinzhu-gorm
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jmespath-go-jmespath
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jmhodges-levigo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jonboulle-clockwork
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jtolds-gls
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-juju-ratelimit
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-julienschmidt-httprouter
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-karlseguin-ccache
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-karlseguin-expect
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-kballard-go-shellquote
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kdar-factorlog
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kimor79-gollectd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-klauspost-cpuid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-klauspost-crc32
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-klauspost-reedsolomon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-knieriem-markdown
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kr-fs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-kr-pretty
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kr-pty
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kr-text
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-kubernetes-heapster
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kyokomi-emoji
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-lib-pq
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-lpabon-godbc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-lsegal-gucumber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-magiconair-properties
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mattn-go-isatty
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mattn-go-runewidth
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mattn-go-sqlite3
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-matttproud-golang_protobuf_extensions
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mesos-mesos-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-miekg-dns
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-miekg-mmark
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-miekg-pkcs11
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-milochristiansen-axis2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-milochristiansen-lua
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-minio-sha256-simd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mistifyio-go-zfs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mitchellh-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-copystructure
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-go-homedir
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mitchellh-go-wordwrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-goamz
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mitchellh-mapstructure
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-reflectwalk
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mreiferson-go-httpclient
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-mvo5-goconfigparser
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mvo5-uboot-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mxk-go-flowrate
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ncw-swift
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-noahdesu-go-ceph
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ojii-gettext.go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-olekukonko-tablewriter
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-olekukonko-ts
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-olivere-elastic
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-onsi-ginkgo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-onsi-gomega
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-opencontainers-runtime-spec
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-opencontainers-specs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-openshift-go-json-rest
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-openshift-go-systemd
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-openshift-openshift-sdn
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-oschwald-geoip2-golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-oschwald-maxminddb-golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pelletier-go-buffruneio
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-pelletier-go-toml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-petar-GoLLRB
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-peterh-liner
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-petermattis-goid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pkg-errors
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pkg-profile
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-pkg-sftp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pmezard-go-difflib
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-client_golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-client_model
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-prometheus-common
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-procfs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-prometheus
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-racker-perigee
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-rackspace-gophercloud
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-rakyll-globalconf
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-rakyll-pb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-rakyll-statik
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-rcrowley-go-metrics
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-remyoudompheng-bigfft
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-russross-blackfriday
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ryanuber-columnize
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-samalba-dockerclient
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-samuel-go-zookeeper
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-sasha-s-go-deadlock
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-seccomp-libseccomp-golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-shiena-ansicolor
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-shurcooL-sanitized_anchor_name
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-skarademir-naturalsort
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-skratchdot-open-golang
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-skynetservices-skydns
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-smartystreets-assertions
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-smartystreets-go-aws-auth
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-smartystreets-goconvey
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spacejam-loghisto
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-spacemonkeygo-flagfile
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-spacemonkeygo-spacelog
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-spf13-afero
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-cast
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-cobra
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-spf13-fsync
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-jWalterWeatherman
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-nitro
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-spf13-pflag
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-viper
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-stathat-go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-stevvooe-resumable
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-stretchr-objx
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-stretchr-testify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-syndtr-gocapability
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-syndtr-goleveldb
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-syndtr-gosnappy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-tent-http-link-go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-thejerf-suture
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-tonnerre-golang-pretty
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-ugorji-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-urfave-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-vaughan0-go-ini
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-vbatts-tar-split
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vishvananda-netlink
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} aarch64 x86_64 %{arm}}
- golang-github-vishvananda-netns
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vitrun-qart
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-vjeantet-asn1-ber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vmware-govcloudair
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-wsxiaoys-terminal
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonpointer
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonreference
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonschema
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xiang90-probing
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-xtaci-kcp-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xtaci-smux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yosssi-ace
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yosssi-gohtml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yvasiyarov-go-metrics
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-yvasiyarov-gorelic
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-yvasiyarov-newrelic_platform_go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-zillode-notify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-google-golangorg-cloud
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-gcfg
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-go-crypto
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-go-decimal-inf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-go-exp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-googlecode-goauth2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-gogoprotobuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-gomock
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-google-api-client
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-goprotobuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-log4go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-net
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-sqlite
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-text
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-tools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-uuid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-gopkg-check
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-gopkg-go-check-check
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-gopkg-go-macaroon-macaroon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-gopkg-retry-v1
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-gopkg-yaml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golint
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gomtree
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gotags
ExclusiveArch: %{go_arches}
- gotun
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: x86_64
- gprbuild
ExclusiveArch: %{GPRbuild_arches} %{bootstrap_arch}
- gprolog
ExclusiveArch: x86_64 %{ix86} ppc alpha
- gsf-sharp
ExclusiveArch: %mono_arches
- gtk-sharp-beans
ExclusiveArch: %mono_arches
- gtk-sharp2
ExclusiveArch: %mono_arches
- gtk-sharp3
ExclusiveArch: %{mono_arches}
- gtkd
ExclusiveArch: %{ldc_arches}
- gudev-sharp
ExclusiveArch: %mono_arches
- hedgewars
ExclusiveArch: %{fpc_arches}
- heketi
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- hub
ExclusiveArch: %{go_arches}
- hyena
ExclusiveArch: %{mono_arches}
- hyperscan
ExclusiveArch: x86_64
- hyperv-daemons
ExclusiveArch: i686 x86_64
- icaro
ExclusiveArch: %{ix86} %{arm} x86_64 noarch
- ikarus
ExclusiveArch: %{ix86}
- imvirt
ExclusiveArch: %{ix86} x86_64 ia64
- indistarter
ExclusiveArch: %{fpc_arches}
- infinipath-psm
ExclusiveArch: x86_64
- intel-cmt-cat
ExclusiveArch: x86_64 i686 i586
ExclusiveArch: x86_64 i686 i586
- ioport
ExclusiveArch: %{ix86} x86_64
- ipw2100-firmware
ExclusiveArch: noarch i386 x86_64
- ipw2200-firmware
ExclusiveArch: noarch i386 x86_64
- ispc
ExclusiveArch: %{arm} %{ix86} x86_64
- iwyu
ExclusiveArch: %{ix86} x86_64
- ixpdimm_sw
ExclusiveArch: x86_64
- jake
ExclusiveArch: %{nodejs_arches} noarch
- jasmine-node
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- java-1.8.0-openjdk-aarch32
ExclusiveArch: %{arm}
- julia
ExclusiveArch: %{ix86} x86_64
- keepass
ExclusiveArch: %{mono_arches}
- kernel
ExclusiveArch: %{all_x86} x86_64 ppc64 ppc64p7 s390x %{arm} aarch64 ppc64le
- knot-resolver
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- kompose
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- kosmtik
ExclusiveArch: %{nodejs_arches} noarch
- kubernetes
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- latrace
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64}
- lazarus
ExclusiveArch: %{fpc_arches}
- ldc
ExclusiveArch: %{ldc_arches}
- libbsr
ExclusiveArch: %{power64}
- libclc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64} s390x
- libcxl
ExclusiveArch: %{power64}
- libflatarray
ExclusiveArch: %{ix86} x86_64
- libhfi1
ExclusiveArch: x86_64
- libica
ExclusiveArch: s390 s390x
- libinvm-cim
ExclusiveArch: x86_64
- libinvm-cli
ExclusiveArch: x86_64
- libinvm-i18n
ExclusiveArch: x86_64
- libipathverbs
ExclusiveArch: x86_64
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libjingle
ExclusiveArch: %{ix86} x86_64 %{arm}
- libmfx
ExclusiveArch: %{ix86} x86_64
- libpsm2
ExclusiveArch: x86_64
- librtas
ExclusiveArch: ppc %{power64}
- libseccomp
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 mipsel mips64el ppc64 ppc64le s390 s390x
- libservicelog
ExclusiveArch: ppc %{power64}
- libsmbios
ExclusiveArch: x86_64 ia64 %{ix86}
- libunwind
ExclusiveArch: %{arm} aarch64 hppa ia64 mips ppc %{power64} %{ix86} x86_64
- libvmi
ExclusiveArch: x86_64
- libvpd
ExclusiveArch: ppc %{power64}
- libxsmm
ExclusiveArch: x86_64
- libzfcphbaapi
ExclusiveArch: s390 s390x
- lldb
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- lodash
ExclusiveArch: %{nodejs_arches} noarch
- log4net
ExclusiveArch: %mono_arches
- lrmi
ExclusiveArch: %{ix86}
- lsvpd
ExclusiveArch: ppc %{power64}
- luajit
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mactel-boot
ExclusiveArch: x86_64
- marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- matreshka
ExclusiveArch: %GPRbuild_arches
- maven-eclipse-plugin
ExclusiveArch: %{ix86} x86_64
- maxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- mcelog
ExclusiveArch: i686 x86_64
- memkind
ExclusiveArch: x86_64
- memtest86+
ExclusiveArch: %{ix86} x86_64
- mesos
ExclusiveArch: x86_64
- microcode_ctl
ExclusiveArch: %{ix86} x86_64
- micropython
ExclusiveArch: %{arm} %{ix86} x86_64
- mine_detector
ExclusiveArch: %{GNAT_arches}
- minetest
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mingw-wine-gecko
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- mkbootdisk
ExclusiveArch: %{ix86} sparc sparc64 x86_64
- mnemosyne
ExclusiveArch: noarch %{qt5_qtwebengine_arches}
- mocha
ExclusiveArch: %{nodejs_arches} noarch
- mod_mono
ExclusiveArch: %mono_arches
- module-build-service
ExclusiveArch: %{ix86} x86_64
- mokutil
ExclusiveArch: %{ix86} x86_64 aarch64
- mongo-tools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- mono
ExclusiveArch: %mono_arches
- mono-addins
ExclusiveArch: %mono_arches
- mono-basic
ExclusiveArch: %{mono_arches}
- mono-bouncycastle
ExclusiveArch: %mono_arches
- mono-cecil
ExclusiveArch: %mono_arches
- mono-cecil-flowanalysis
ExclusiveArch: %mono_arches
- mono-debugger
ExclusiveArch: %ix86 x86_64
- mono-reflection
ExclusiveArch: %mono_arches
- mono-tools
ExclusiveArch: %mono_arches
- mono-zeroconf
ExclusiveArch: %mono_arches
- monobristol
ExclusiveArch: %{mono_arches}
- monodevelop
ExclusiveArch: %mono_arches
- monodevelop-debugger-gdb
ExclusiveArch: %{mono_arches}
- monosim
ExclusiveArch: %mono_arches
- mrrescue
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- msr-tools
ExclusiveArch: %{ix86} x86_64
- mustache-d
ExclusiveArch: %{ldc_arches}
- mysql-connector-net
ExclusiveArch: %{mono_arches}
- nacl-arm-binutils
ExclusiveArch: x86_64
- nacl-arm-gcc
ExclusiveArch: x86_64
- nacl-arm-newlib
ExclusiveArch: x86_64
- nacl-binutils
ExclusiveArch: x86_64
- nacl-gcc
ExclusiveArch: x86_64
- nacl-newlib
ExclusiveArch: x86_64
- nant
ExclusiveArch: %mono_arches
- nbc
ExclusiveArch: %{fpc_arches}
- ndesk-dbus
ExclusiveArch: %{mono_arches}
- ndesk-dbus-glib
ExclusiveArch: %{mono_arches}
- newtonsoft-json
ExclusiveArch: %{mono_arches}
- nini
ExclusiveArch: %{mono_arches}
- node-gyp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs
ExclusiveArch: %{nodejs_arches}
- nodejs-abbrev
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-accepts
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-acorn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-after
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-agent-base
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-agentkeepalive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ain2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-alter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-cyan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-font
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-green
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-magenta
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-styles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-wrap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-yellow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansicolors
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansidiff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansistyles
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-any-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-append-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-aproba
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-archiver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-archiver-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-archy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-are-we-there-yet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-argparse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-argsparser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arr-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arr-exclude
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arr-flatten
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arr-union
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-differ
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-filter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-find-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-flatten
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-foreach
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-reduce
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-union
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-uniq
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-unique
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arrify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-as-number
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-asap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ascii-tree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ascli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-asn1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assert-plus
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assertion-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assume
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ast-traverse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ast-types
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-astral
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-astral-angular-annotate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-astral-pass
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-array-reduce
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-async-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-each
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-queue
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-some
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws-sign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws-sign2
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-runtime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-backbone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-balanced-match
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base64-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-base64-url
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-basic-auth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-basic-auth-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-basic-auth-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-batch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bcrypt
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-beeper
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-benchmark
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-better-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bignumber-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bindings
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-block-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bluebird
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-body-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-boolbase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-boom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-brace-expansion
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-breakable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-browser-request
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buf-compare
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-crc32
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-equal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-shims
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buffer-writer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buffertools
ExclusiveArch: %{nodejs_arches}
- nodejs-bufferutil
ExclusiveArch: %{nodejs_arches}
- nodejs-builtin-modules
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-builtins
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bundle-dependencies
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bunker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bunyan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-burrito
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bytes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-caching-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-call-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-caller-callsite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caller-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-callsite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-callsites
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camel-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camelcase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camelcase-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caniuse-db
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-capture-stack-trace
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-carrier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caseless
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-connect-middleware
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-passport-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chainsaw
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chalk
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-change-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-char-spinner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-character-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-charm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-child-process-close
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chmodr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chownr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chrono
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cjson
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clean-css
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clean-yaml-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-spinner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cliui
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone-stats
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-closure-compiler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cls
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cmd-shim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-co
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-co-mocha
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-code-point-at
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-codemirror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-collections
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-colors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-colour
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-columnify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-combined-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commander
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-commondir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-commoner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commonmark
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-component-emitter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-component-indexof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-compress-commons
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-compressible
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-compression
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-concat-map
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-concat-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-config-chain
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-connect-livereload
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-connect-timeout
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-console-browserify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-console-dot-log
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-constant-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-constantinople
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-content-disposition
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-content-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-convert-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie-jar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookie-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookie-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookiejar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-core-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-core-util-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-couch-login
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-coveralls
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-crc32-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-create-error-class
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cross-spawn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cross-spawn-async
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cryptiles
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-css
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-select
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-css-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-what
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-csscomb-core
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csslint
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cssom
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csurf
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-generate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-spectrum
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ctype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-currently-unhandled
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cycle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-d
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dashdash
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-data-uri-to-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-date-now
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dateformat
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-debug
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-debuglog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-decamelize
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-decompress-response
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-eql
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-equal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deep-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deeper
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-default-require-extensions
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-defaults
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defence
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-defence-cli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deferred
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-define-properties
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defined
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-degenerator
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-del
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-delayed-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-delegates
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dep-graph
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-depd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dependency-lister
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deprecated
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-destroy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-detect-file
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-detective
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dezalgo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-difflet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-difflib
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-docopt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-doctrine
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dom-serializer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domelementtype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domhandler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domutils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dot-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dotfile-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dreamopt
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dryice
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dtree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexer2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-duplexer3
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duration
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-each
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-each-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ebnf-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ecstatic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-editor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ee-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ejs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-emojione
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-encodeurl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-encoding
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-end-of-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-entities
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-error-ex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-errorhandler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-errs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es-abstract
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es-to-primitive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es5-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es5-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-iterator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es6-set
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-symbol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-weak-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-escape-html
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escape-regexp-component
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-escape-string-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escodegen
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima-fb
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima-harmony-jscs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-esrecurse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estraverse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estraverse-fb
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-esutils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-etag
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-event-emitter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-event-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-eventemitter2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-eventemitter3
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-events
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-events-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-exit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expand-brackets
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expand-tilde
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expect-dot-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-express
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-express-session
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extend
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extend-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extglob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extsprintf
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-eyes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fancy-log
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-far
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fast-levenshtein
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-faye-websocket
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fd-slicer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fg-lodash
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-figures
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-file-entry-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-file-sync-cmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-file-uri-to-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-filed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-filelist
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-filename-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fileset
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fill-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fill-range
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-finalhandler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-find-cache-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-find-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-findup-sync
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-first-chunk-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flagged-respawn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flot
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fn-dot-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fn-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-follow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-for-in
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-for-own
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-foreach
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-forever-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-form-data
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-formatio
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-formidable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-forwarded
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-freetree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fresh
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-from2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-exists-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fs-ext
ExclusiveArch: %{nodejs_arches}
- nodejs-fs-extra
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-vacuum
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-write-stream-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs2
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream-ignore
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream-npm
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ftp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-function-bind
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gauge
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gaze
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gdal
ExclusiveArch: %{nodejs_arches}
- nodejs-generate-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generate-object-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generic-pool
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-get-pkg-repo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-port
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-stdin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-uri
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-getobject
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gettext-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-github-url-from-git
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-github-url-from-username-repo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glob-base
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-glob-parent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-global-prefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globals
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globby
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globule
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glogg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gonzales-pe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-got
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-graceful-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-graceful-readlink
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grip
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-growl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-angular-templates
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-banner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-cli
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-compare-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-clean
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-concat
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-copy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-csslint
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-cssmin
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-htmlmin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-internal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-less
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-nodeunit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-requirejs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-uglify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-watch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-git-authors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-html-validation
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-init
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-known-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-log
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-log-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-lib-contrib
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-saucelabs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-sed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-simple-mocha
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-util-args
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-process
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-wrap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gulplog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gzip-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-handlebars
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-har-validator
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-gulplog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-unicode
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-yarn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hash_file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hawk
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-he
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-heap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-highlight-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hock
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hoek
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hooker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-hosted-git-info
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-html-minifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-htmlparser2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-errors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-http-proxy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-http-server
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-signature
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-https-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-humanize-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-i
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-i18n-transform
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-i2c
ExclusiveArch: %{nodejs_arches}
- nodejs-iconv
ExclusiveArch: %{nodejs_arches}
- nodejs-iconv-lite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-iferr
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ignore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-imurmurhash
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-indent-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-infinity-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inflight
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inherit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-inherits
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inherits1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ini
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-init-package-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inline-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-install
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-int64-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-interpret
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-into-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-invert-kv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ip
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-irregular-plurals
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-absolute
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-arrayish
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-arrow-function
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-boolean-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-builtin-module
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-callable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-date-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-dotfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-equal-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-extendable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-extglob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-finite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-fullwidth-code-point
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-generator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-generator-fn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-generator-function
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-lower-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-my-json-valid
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-number
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-number-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-observable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-path-cwd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-path-in-cwd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-path-inside
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-plain-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-plain-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-primitive
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-redirect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-relative
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-retry-allowed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-text-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-typedarray
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-unc-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-upper-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-url
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-utf8
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-valid-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-windows
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isarray
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-isexe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-iso8601
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isobject
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isodate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jade
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jasmine-growl-reporter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jasmine-reporters
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jison
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jison-lex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jju
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joose
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joosex-namespace-depended
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joosex-simplerequest
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-js-base64
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-js-yaml
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jschardet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jscoverage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jshint
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-json-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-localizer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-json-parse-helpfulerror
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-stable-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-stringify-safe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jsonify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jsonm
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonparse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonpointer
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonselect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jwt-simple
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-keypress
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-kind-of
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-klaw
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-langdetect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-latest-version
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lazystream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lcid
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lcov-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-leaflet
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leaflet-formbuilder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leaflet-hash
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leche
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-left-pad
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-less
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-levn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lex-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-libxmljs
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-line-reader
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-linkify-it
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-load-grunt-tasks
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-load-json-file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-locate-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lockfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-log-driver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-log-symbols
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lolex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-loud-rejection
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lower-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lower-case-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lowercase-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lru-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lru-queue
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ltx
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-make-arrow-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-generator-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mapnik
ExclusiveArch: %{nodejs_arches}
- nodejs-mapnik-pool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mapnik-vector-tile
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-markdown
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-markdown-it-testgen
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-max-timeout
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-maxmin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mbtiles
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-md5-hex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-md5-o-matic
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mdurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-media-typer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-memoizee
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-meow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-merge-descriptors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-merge-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-metascript
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-method-override
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-methods
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-millstone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mime-db
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mime-types
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mimeparse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-minimatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-minimist
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-minstache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mkdirp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mkfiletree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mock-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-module-not-found-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-moment
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mongodb
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mongodb-core
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-monocle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-morgan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-muffin
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-multiline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-multimatch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-multiparty
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mustache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mute-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mv
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mysql
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mz
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nan0
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nan1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nano
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-native-or-bluebird
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ncp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-needle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-negotiator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nested-error-stacks
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-netmask
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-next
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-next-tick
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-node-expat
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-node-int64
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-markdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-print
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-static
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-status-codes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-stringprep
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-node-uuid
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nomnom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nopt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nopt-usage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-noptify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-normalize-git-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-normalize-package-data
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-normalize-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-cache-filename
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-install-checks
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-license
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-npm-package-arg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-registry-client
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-npm-run-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-stats
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-user-validate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npmlog
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nsp-api
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nsp-audit-shrinkwrap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nth-check
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-number-is-nan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-numeral
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth-sign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-assign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-dot-entries
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-dot-omit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-inspect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-on-finished
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-on-headers
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-once
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-onetime
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-only-shallow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oop
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-opener
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-opn
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-optionator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-optjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-opts
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-orchestrator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ordered-read-streams
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-os-homedir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-locale
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-tmpdir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-osenv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-output-file-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-p-finally
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-is-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-limit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-locate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pac-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pac-resolver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-package
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-package-info
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-package-json
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-package-license
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-packaging
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-packet-reader
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pad
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pad-left
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-paperboy
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-param-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-github-repo-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-parse-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parserlib
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-parseurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pascal-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-array
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-path-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-exists
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-is-absolute
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-is-inside
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-key
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-to-regexp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-path-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pathval
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pause
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pause-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pedding
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pegjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pem
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pff
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pg-connection-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-escape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-types
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pgpass
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pinkie
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pinkie-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pkg-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pkg-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pkginfo
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-platform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-plur
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-portfinder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-portscanner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-posix-getopt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-bytea
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-date
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-interval
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-prelude-ls
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-prepend-http
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-preserve
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-bytes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-hrtime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-private
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-process-nextick-args
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-progress-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-promises-aplus-tests
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-prompt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-promzard
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-propagate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-proto-list
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proxy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-proxyquire
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pruddy-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pseudomap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pubcontrol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-q
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-q-io
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-qs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-qtdatastream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-queue-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-qunit-extras
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-qunitjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rainbowsocks
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-randomatic
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-range-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-raw-body
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rc
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-re-emitter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-all-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-cmd-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-dir-files
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-file
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-installed
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-package-json
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-package-tree
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-pkg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-pkg-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readable-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-readdir-scoped-modules
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readdirp
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-realize-package-specifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-recast
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rechoir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-redent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-reduce-component
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-regenerator
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-regex-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-registry-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-relateurl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-repeat-element
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-repeat-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-repeating
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-repl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-replace
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-replace-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-replace-require-self
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-request
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-requestretry
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-cs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-require-directory
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-inject
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-uncached
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-yaml
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-requirejs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-requires-port
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-pkg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-response-time
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resumer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-retry
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-revalidator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rewire
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rhea
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rimraf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rndm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ronn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-run-parallel-limit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-runforcover
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-safe-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-safe-json-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-safecb
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-samsam
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sauce-tunnel
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-saucelabs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sax
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-scmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-secure-random
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-semver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-send
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sentence-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-seq
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sequencify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serialize-error
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serve-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serve-static
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-set-getter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-set-immediate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-immediate-shim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-setimmediate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sha
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shelljs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-shelljs-nodecli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-should
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-should-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-format
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-http
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-showdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sigmund
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-signal-exit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-silent-npm-registry-client
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-fmt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-simple-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-single-line-log
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sinon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sinon-restore
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-slide
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-smart-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-snake-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snockets
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sntp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-socks-client
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-socks-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sort-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sorted-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-source-map-fixtures
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sparkles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-spdx-correct
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-exceptions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-expression-parse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-license-ids
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-speedometer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-split
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sprintf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sprintf-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sqlite3
ExclusiveArch: %{nodejs_arches}
- nodejs-srs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-st
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stack-trace
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stack-utils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-static-favicon
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-statuses
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-std-mocks
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-combiner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-consume
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-counter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-reduce
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-replace
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-shift
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-spigot
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-streamsink
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-streamtest
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string-dot-prototype-dot-repeat
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string-dot-prototype-dot-trim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-string-width
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-string_decoder
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringmap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringscanner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringset
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-ansi
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-bom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-bom-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-indent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-json-comments
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strscanner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stylus
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-success-symbol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-superagent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-superagent-proxy
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-supertest
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-supervisor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-supports-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-swap-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-symbol-observable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tad
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tap-mocha-reporter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tap-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-temp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-temporary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern-cordovajs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern-liferay
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-terst
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-test
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-testjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-testswarm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-text-extensions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-text-table
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-thenify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thenify-all
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-through
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-through2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-through2-filter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thunkify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tildify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tilejson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tilelive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tilelive-mapnik
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tiletype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-time-stamp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-timed-out
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-timers-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tiny-lr-fork
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-title-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tlds
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tmatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tmp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-to-absolute-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-to-object-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tough-cookie
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tracejs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-transformers
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-traverse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-treeify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-trim-newlines
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-try-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tryor
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tsscmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ttembed-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tunnel-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-check
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-type-detect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-name
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-typeahead.js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-typedarray
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-typescript
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uc-dot-micro
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uglify-to-browserify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uid-number
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uid-safe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uid2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ultron
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-umask
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unc-path-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-underscore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-underscore-dot-logger
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unicode-7.0.0
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unicode-length
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-union
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unique-filename
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-slug
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unpipe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unzip-response
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-upper-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-upper-case-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uri-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url-join
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url-parse-lax
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-utfx
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-deprecate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-utile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-utilities
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-utils-merge
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vali-date
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-validate-npm-package-license
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-validate-npm-package-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vasync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-verror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vhost
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vinyl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vow-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vow-queue
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vows
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-w3cjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-walkdir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-watchit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wcwidth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-weak-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-websocket-driver
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-when
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-which
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-win-spawn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-window-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-winston
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-with
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-woothee
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wordwrap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wrap-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-wrap-fn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wrappy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write-file-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write-json-file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write-pkg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ws
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xml2js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmlbuilder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmldom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xregexp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-xtend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-y18n
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yallist
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-yargs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-yauzl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zip-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zipfile
ExclusiveArch: %{nodejs_arches}
- nodejs-zlib-browserify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zlibjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodeunit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- notify-sharp
ExclusiveArch: %{mono_arches}
- notify-sharp3
ExclusiveArch: %{mono_arches}
- nuget
ExclusiveArch: %{mono_arches}
- numatop
ExclusiveArch: %{ix86} x86_64
- nunit
ExclusiveArch: %{mono_arches}
- nunit2
ExclusiveArch: %{mono_arches}
- nvml
ExclusiveArch: x86_64
- nwchem
ExclusiveArch: x86_64 %{ix86}
- oci-register-machine
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- ocid
ExclusiveArch: x86_64 aarch64 ppc64le
- ocitools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- olpc-kbdshim
ExclusiveArch: %{ix86} %{arm}
- olpc-netutils
ExclusiveArch: %{ix86} %{arm}
- olpc-powerd
ExclusiveArch: %{ix86} %{arm}
- olpc-utils
ExclusiveArch: %{ix86} %{arm}
- opal-prd
ExclusiveArch: ppc64le
- open-vm-tools
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64
- openblas
ExclusiveArch: %{openblas_arches}
- openjfx
ExclusiveArch: %{ix86} x86_64
- openlibm
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 %{power64}
- openmx
ExclusiveArch: x86_64 %{ix86}
- openni
ExclusiveArch: %{ix86} x86_64 %{arm}
- openni-primesense
ExclusiveArch: %{ix86} x86_64 %{arm}
- openssl-ibmca
ExclusiveArch: s390 s390x
- origin
ExclusiveArch: %{go_arches}
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- orocos-bfl
ExclusiveArch: %{ix86} x86_64
- orthorobot
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- paflib
ExclusiveArch: ppc %{power64}
- pcc
ExclusiveArch: %{ix86} x86_64
- pcmciautils
ExclusiveArch: %{ix86} x86_64 ia64 ppc ppc64 %{arm}
- pdfmod
ExclusiveArch: %mono_arches
- perl-Dumbbench
ExclusiveArch: %{ix86} x86_64 noarch
- perl-Parse-DMIDecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- pesign
ExclusiveArch: %{ix86} x86_64 ia64 aarch64 arm
- pesign-test-app
ExclusiveArch: i686 x86_64 ia64 aarch64
- pinta
ExclusiveArch: %mono_arches
- pioneer
ExclusiveArch: %{ix86} x86_64
- playonlinux
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- polyml
ExclusiveArch: %{ix86} x86_64 sparc sparcv8 sparcv9 sparcv9v ppc %{power64} %{arm} aarch64 ia64 mips mipsel
- poppler-sharp
ExclusiveArch: %mono_arches
- powerpc-utils
ExclusiveArch: ppc %{power64}
- ppc64-diag
ExclusiveArch: ppc %{power64}
- ppc64-utils
ExclusiveArch: ppc %{power64}
- prelude-correlator
ExclusiveArch: %{ix86} x86_64
- prewikka
ExclusiveArch: %{ix86} x86_64
- publican-jboss
ExclusiveArch: i686 x86_64
- pvs-sbcl
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- python-afl
ExclusiveArch: %{ix86} x86_64
- python-etcd
ExclusiveArch: noarch %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- python-healpy
ExclusiveArch: aarch64 ppc64 ppc64le x86_64 s390x
- python-openoffice
ExclusiveArch: noarch x86_64
- python-ovirt-register
ExclusiveArch: %{ix86} x86_64
- python-pymoc
ExclusiveArch: aarch64 ppc64 ppc64le x86_64 s390x
- python-rpi-gpio
ExclusiveArch: %{arm} aarch64
- q4wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- qcint
ExclusiveArch: x86_64
- qclib
ExclusiveArch: s390 s390x
- qt4pas
ExclusiveArch: %{fpc_arches}
- qt5-qtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- quantum-espresso
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: %{openblas_arches}
- rear
ExclusiveArch: %ix86 x86_64 ppc ppc64 ppc64le ia64
- redhat-lsb
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- reptyr
ExclusiveArch: %{ix86} x86_64 %{arm}
- rescene
ExclusiveArch: %{mono_arches}
- restsharp
ExclusiveArch: %{mono_arches}
- rhythmbox-alternative-toolbar
ExclusiveArch: %{ix86} %{arm} x86_64 ppc64 ppc64le
- rkt
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- runc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le %{mips} s390x
- rust
ExclusiveArch: %{rust_arches}
- s390utils
ExclusiveArch: s390 s390x
- sagemath
ExclusiveArch: aarch64 %{arm} %{ix86} x86_64 ppc sparcv9
- sbcl
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- sbd
ExclusiveArch: i686 x86_64 s390x
- seamonkey
ExclusiveArch: %{ix86} x86_64
- servicelog
ExclusiveArch: ppc %{power64}
- sharpfont
ExclusiveArch: %mono_arches
- sharpziplib
ExclusiveArch: %{mono_arches}
- shim
ExclusiveArch: x86_64
- shim-signed
ExclusiveArch: x86_64 aarch64
- shim-unsigned-aarch64
ExclusiveArch: aarch64
- sigul
ExclusiveArch: x86_64
- skychart
ExclusiveArch: %{fpc_arches}
- slapi-nis
ExclusiveArch: x86_64 %{ix86}
- smuxi
ExclusiveArch: %{ix86} x86_64 %{arm} ppc64le
- snapd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- snapd-glib
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- source-to-image
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- sparkleshare
ExclusiveArch: %{mono_arches}
- spicctrl
ExclusiveArch: %{ix86} x86_64
- spice
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- spice-xpi
ExclusiveArch: i686 x86_64 armv6l armv7l armv7hl aarch64
- spring
ExclusiveArch: %{ix86} x86_64
- springlobby
ExclusiveArch: %{ix86} x86_64
- statsd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- stripesnoop
ExclusiveArch: %{ix86} x86_64
- supermin
ExclusiveArch: x86_64
- sysbench
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- syslinux
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- taglib-sharp
ExclusiveArch: %{mono_arches}
- tarantool
ExclusiveArch: %{ix86} x86_64 armv7hl armv7hnl aarch64
- tboot
ExclusiveArch: %{ix86} x86_64
- templates_parser
ExclusiveArch: %GNAT_arches
- themonospot-base
ExclusiveArch: %mono_arches
- themonospot-console
ExclusiveArch: %mono_arches
- themonospot-gui-gtk
ExclusiveArch: %mono_arches
- themonospot-plugin-avi
ExclusiveArch: %mono_arches
- themonospot-plugin-mkv
ExclusiveArch: %mono_arches
- thermald
ExclusiveArch: %{ix86} x86_64
- thunderbird-enigmail
ExclusiveArch: %{ix86} %{arm} ppc64 ppc64le s390x x86_64 noarch
- tilix
ExclusiveArch: %{ldc_arches}
- tmux-top
ExclusiveArch: %{go_arches}
- tomboy
ExclusiveArch: %{mono_arches}
- tpm2-tools
ExclusiveArch: %{ix86} x86_64
- tpm2-tss
ExclusiveArch: %{ix86} x86_64
- uClibc
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
- ugene
ExclusiveArch: %{ix86} x86_64
- uglify-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- uglify-js1
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- unetbootin
ExclusiveArch: %{ix86} x86_64
- v8
ExclusiveArch: %{ix86} x86_64 ppc ppc64 aarch64 %{mips} s390 s390x
- v8-314
ExclusiveArch: %{ix86} x86_64 %{arm} mips mipsel ppc ppc64
- valgrind
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
- vboot-utils
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- vdsm
ExclusiveArch: x86_64 %{power64} aarch64
- vim-go
ExclusiveArch: %{?golang_arches:%{golang_arches} noarch}%{!?golang_arches:%{ix86} x86_64 %{arm}}
- virtualplanet
ExclusiveArch: %{fpc_arches}
- vrq
ExclusiveArch: %{ix86} x86_64
- warsow
ExclusiveArch: %{ix86} x86_64 %{arm}
- warsow-data
ExclusiveArch: %{ix86} x86_64 %{arm}
- webkit-sharp
ExclusiveArch: %mono_arches
- wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExclusiveArch: %{ix86} %{arm}
- winetricks
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- wiredtiger
ExclusiveArch: x86_64 aarch64 ppc64le
- wraplinux
ExclusiveArch: %{ix86} x86_64
- wxMaxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
- x86info
ExclusiveArch: %{ix86} x86_64
- xen
ExclusiveArch: %{ix86} x86_64 armv7hl aarch64
- xmlada
ExclusiveArch: %{GPRbuild_arches}
- xorg-x11-drv-armsoc
ExclusiveArch: %{arm} aarch64
- xorg-x11-drv-freedreno
ExclusiveArch: %{arm} aarch64
- xorg-x11-drv-geode
ExclusiveArch: %{ix86}
- xorg-x11-drv-intel
ExclusiveArch: %{ix86} x86_64 ia64
- xorg-x11-drv-omap
ExclusiveArch: %{arm}
- xorg-x11-drv-openchrome
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-opentegra
ExclusiveArch: %{arm}
- xorg-x11-drv-vesa
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-vmware
ExclusiveArch: %{ix86} x86_64 ia64
- xsp
ExclusiveArch: %mono_arches
- xsupplicant
ExclusiveArch: %{ix86} x86_64 ppc %{power64}
- ycssmin
ExclusiveArch: %{nodejs_arches} noarch
- zeromq-ada
ExclusiveArch: %{GNAT_arches}
- zlib-ada
ExclusiveArch: %{GNAT_arches}
6 years, 9 months
Architecture specific change in rpms/git.git
by githook-noreply@fedoraproject.org
The package rpms/git.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/git.git/commit/?id=8c3e8ca7b2fbd4....
Change:
+%ifarch s390x
Thanks.
Full change:
============
commit 8c3e8ca7b2fbd49852fa6db524c54db978967ea6
Author: Todd Zullinger <tmz(a)pobox.com>
Date: Sun Jun 25 11:31:00 2017 -0400
Skip grep tests which fail intermittently on s390x
The grep tests succeed and fail intermittently on s390x. Until that
arch is more established and works (or fails) consistently, skip these
tests rather than let s390x hold back ever other arch.
diff --git a/git.spec b/git.spec
index c1984cd..e47db2f 100644
--- a/git.spec
+++ b/git.spec
@@ -633,6 +633,10 @@ grep -E "$not_core_re" bin-man-doc-files \
| grep -v "credential-gnome-keyring" > bin-man-doc-git-files
%check
+%ifarch s390x
+# Skip grep tests which fail intermittently on s390x
+export GIT_SKIP_TESTS="t7810"
+%endif
make test
%clean
@@ -785,6 +789,7 @@ rm -rf %{buildroot}
%changelog
* Sun Jun 25 2017 Todd Zullinger <tmz(a)pobox.com> - 2.13.2-1
- Update to 2.13.2
+- Skip grep tests which fail intermittently on s390x
* Wed Jun 07 2017 Jitka Plesnikova <jplesnik(a)redhat.com> - 2.13.1-2
- Perl 5.26 re-rebuild of bootstrapped packages
6 years, 10 months
Architecture specific change in rpms/cp2k.git
by githook-noreply@fedoraproject.org
The package rpms/cp2k.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/cp2k.git/commit/?id=1158051369c7f....
Change:
+%ifarch x86_64
Thanks.
Full change:
============
commit 1158051369c7f48b2a58ef9802c845cea7b45484
Author: Dominik 'Rathann' Mierzejewski <dominik(a)greysector.net>
Date: Sun Jun 25 15:52:14 2017 +0200
build with libxsmm on x86_64 for improved matrix multiplication performance
simplify some loops
drop support for old blacs (even EL6 has scalapack with blacs now)
diff --git a/cp2k-rpm.patch b/cp2k-rpm.patch
index b6c714e..b4598a7 100644
--- a/cp2k-rpm.patch
+++ b/cp2k-rpm.patch
@@ -1,6 +1,6 @@
diff -up cp2k-4.1/arch/Linux-x86-64-gfortran.popt.r cp2k-4.1/arch/Linux-x86-64-gfortran.popt
---- cp2k-4.1/arch/Linux-x86-64-gfortran.popt.r 2017-02-08 12:17:12.913249533 +0100
-+++ cp2k-4.1/arch/Linux-x86-64-gfortran.popt 2017-02-08 12:28:11.272556216 +0100
+--- cp2k-4.1/arch/Linux-x86-64-gfortran.popt.r 2016-07-07 10:30:49.492206000 +0200
++++ cp2k-4.1/arch/Linux-x86-64-gfortran.popt 2017-06-18 22:49:07.280728741 +0200
@@ -1,8 +1,9 @@
# Tested with: GFortran 4.9.2, MPICH 3.1, LAPACK 3.5.0, ScaLAPACK 2.0.2
CC = gcc
@@ -13,14 +13,14 @@ diff -up cp2k-4.1/arch/Linux-x86-64-gfortran.popt.r cp2k-4.1/arch/Linux-x86-64-g
AR = ar -r
ACML_INC = $(ACMLPATH)/include
ACML_LIB = $(ACMLPATH)/lib
-@@ -13,18 +14,23 @@ LIBINT_LIB = $(GCC_DIR)/libint/1.1.4-LAR
+@@ -13,18 +14,24 @@ LIBINT_LIB = $(GCC_DIR)/libint/1.1.4-LAR
LIBXC_INC = $(GCC_DIR)/libxc/2.2.2-gnu/include
LIBXC_LIB = $(GCC_DIR)/libxc/2.2.2-gnu/lib64
DFLAGS = -D__FFTW3 -D__LIBINT -D__LIBXC2 -D__MPI_VERSION=3\
- -D__LIBINT_MAX_AM=7 -D__LIBDERIV_MAX_AM1=6 -D__MAX_CONTR=4\
- -D__parallel -D__SCALAPACK
+ -D__LIBINT_MAX_AM=@LIBINT_MAX_AM@ -D__LIBDERIV_MAX_AM1=@LIBDERIV_MAX_AM@ -D__MAX_CONTR=4\
-+ -D__parallel -D__SCALAPACK -D__SCALAPACK2 -D__ELPA3 -D__MPI_VERSION=3
++ -D__parallel -D__SCALAPACK -D__SCALAPACK2 -D__ELPA3 -D__MPI_VERSION=3 @LIBSMM_DEFS@
CPPFLAGS =
-FCFLAGS = $(DFLAGS) -O2 -ffast-math -ffree-form -ffree-line-length-none\
+OPTFLAGS = -O2 -ffast-math\
@@ -39,8 +39,9 @@ diff -up cp2k-4.1/arch/Linux-x86-64-gfortran.popt.r cp2k-4.1/arch/Linux-x86-64-g
+CXXFLAGS = $(DFLAGS) $(OPTFLAGS)
+FCFLAGS = $(DFLAGS) $(OPTFLAGS) -ffree-form -ffree-line-length-none
+LDFLAGS = $(FCFLAGS)
-+LIBS = -lelpa \
-+ -lscalapack -lmpiblacsF77init -lmpiblacs -lmpiblacsCinit -lstdc++\
++LIBS = -lelpa\
++ @LIBSMM_LIBS@\
++ -lscalapack -lmpiblacs -lstdc++\
+ -l@BLAS@\
+ -lfftw3\
+ -lxcf90\
@@ -49,8 +50,8 @@ diff -up cp2k-4.1/arch/Linux-x86-64-gfortran.popt.r cp2k-4.1/arch/Linux-x86-64-g
+ -lint
+DATA_DIR = /usr/share/cp2k
diff -up cp2k-4.1/arch/Linux-x86-64-gfortran.psmp.r cp2k-4.1/arch/Linux-x86-64-gfortran.psmp
---- cp2k-4.1/arch/Linux-x86-64-gfortran.psmp.r 2017-02-08 12:17:12.913249533 +0100
-+++ cp2k-4.1/arch/Linux-x86-64-gfortran.psmp 2017-02-08 12:26:29.734892803 +0100
+--- cp2k-4.1/arch/Linux-x86-64-gfortran.psmp.r 2016-07-07 10:30:49.492206000 +0200
++++ cp2k-4.1/arch/Linux-x86-64-gfortran.psmp 2017-06-18 22:49:04.357730822 +0200
@@ -1,8 +1,9 @@
# Tested with: GFortran 4.9.2, MPICH 3.1, LAPACK 3.5.0, ScaLAPACK 2.0.2
CC = gcc
@@ -63,14 +64,14 @@ diff -up cp2k-4.1/arch/Linux-x86-64-gfortran.psmp.r cp2k-4.1/arch/Linux-x86-64-g
AR = ar -r
ACML_INC = $(ACMLPATH)/include
ACML_LIB = $(ACMLPATH)/lib
-@@ -13,19 +14,24 @@ LIBINT_LIB = $(GCC_DIR)/libint/1.1.4-LAR
+@@ -13,19 +14,25 @@ LIBINT_LIB = $(GCC_DIR)/libint/1.1.4-LAR
LIBXC_INC = $(GCC_DIR)/libxc/2.2.2-gnu/include
LIBXC_LIB = $(GCC_DIR)/libxc/2.2.2-gnu/lib64
DFLAGS = -D__FFTW3 -D__LIBINT -D__LIBXC2 -D__MPI_VERSION=3\
- -D__LIBINT_MAX_AM=7 -D__LIBDERIV_MAX_AM1=6 -D__MAX_CONTR=4\
- -D__parallel -D__SCALAPACK
+ -D__LIBINT_MAX_AM=@LIBINT_MAX_AM@ -D__LIBDERIV_MAX_AM1=@LIBDERIV_MAX_AM@ -D__MAX_CONTR=4\
-+ -D__parallel -D__SCALAPACK -D__SCALAPACK2 -D__ELPA3 -D__MPI_VERSION=3
++ -D__parallel -D__SCALAPACK -D__SCALAPACK2 -D__ELPA3 -D__MPI_VERSION=3 @LIBSMM_DEFS@
CPPFLAGS =
-FCFLAGS = $(DFLAGS) -O2 -ffast-math -ffree-form -ffree-line-length-none\
+OPTFLAGS = -O2 -ffast-math -ftree-vectorize -funroll-loops\
@@ -90,8 +91,9 @@ diff -up cp2k-4.1/arch/Linux-x86-64-gfortran.psmp.r cp2k-4.1/arch/Linux-x86-64-g
+CXXFLAGS = $(DFLAGS) $(OPTFLAGS)
+FCFLAGS = $(DFLAGS) $(OPTFLAGS) -fopenmp -ffree-form -ffree-line-length-none
+LDFLAGS = $(FCFLAGS)
-+LIBS = -lelpa \
-+ -lscalapack -lmpiblacsF77init -lmpiblacs -lmpiblacsCinit -lstdc++\
++LIBS = -lelpa\
++ @LIBSMM_LIBS@\
++ -lscalapack -lmpiblacs -lstdc++\
+ -l@BLAS@\
+ -lfftw3\
+ -lfftw3_omp\
@@ -102,7 +104,7 @@ diff -up cp2k-4.1/arch/Linux-x86-64-gfortran.psmp.r cp2k-4.1/arch/Linux-x86-64-g
+DATA_DIR = /usr/share/cp2k
diff -up cp2k-4.1/arch/Linux-x86-64-gfortran.sopt.r cp2k-4.1/arch/Linux-x86-64-gfortran.sopt
--- cp2k-4.1/arch/Linux-x86-64-gfortran.sopt.r 2016-07-07 10:30:49.492206000 +0200
-+++ cp2k-4.1/arch/Linux-x86-64-gfortran.sopt 2017-02-08 12:28:26.892658295 +0100
++++ cp2k-4.1/arch/Linux-x86-64-gfortran.sopt 2017-06-18 22:49:17.297721605 +0200
@@ -3,6 +3,7 @@ CC = gcc
CPP =
FC = gfortran
@@ -111,12 +113,12 @@ diff -up cp2k-4.1/arch/Linux-x86-64-gfortran.sopt.r cp2k-4.1/arch/Linux-x86-64-g
AR = ar -r
ACML_INC = $(ACMLPATH)/include
ACML_LIB = $(ACMLPATH)/lib
-@@ -13,16 +14,20 @@ LIBINT_LIB = $(GCC_DIR)/libint/1.1.4-LAR
+@@ -13,16 +14,21 @@ LIBINT_LIB = $(GCC_DIR)/libint/1.1.4-LAR
LIBXC_INC = $(GCC_DIR)/libxc/2.2.2-gnu/include
LIBXC_LIB = $(GCC_DIR)/libxc/2.2.2-gnu/lib64
DFLAGS = -D__FFTW3 -D__LIBINT -D__LIBXC2\
- -D__LIBINT_MAX_AM=7 -D__LIBDERIV_MAX_AM1=6 -D__MAX_CONTR=4
-+ -D__LIBINT_MAX_AM=@LIBINT_MAX_AM@ -D__LIBDERIV_MAX_AM1=@LIBDERIV_MAX_AM@ -D__MAX_CONTR=4
++ -D__LIBINT_MAX_AM=@LIBINT_MAX_AM@ -D__LIBDERIV_MAX_AM1=@LIBDERIV_MAX_AM@ -D__MAX_CONTR=4 @LIBSMM_DEFS@
CPPFLAGS =
-FCFLAGS = $(DFLAGS) -O2 -ffast-math -ffree-form -ffree-line-length-none\
+OPTFLAGS = -O2 -ffast-math\
@@ -135,6 +137,7 @@ diff -up cp2k-4.1/arch/Linux-x86-64-gfortran.sopt.r cp2k-4.1/arch/Linux-x86-64-g
+FCFLAGS = $(DFLAGS) $(OPTFLAGS) -ffree-form -ffree-line-length-none
+LDFLAGS = $(FCFLAGS)
+LIBS = -l@BLAS@\
++ @LIBSMM_LIBS@\
+ -lfftw3\
+ -lxcf90\
+ -lxc\
@@ -143,7 +146,7 @@ diff -up cp2k-4.1/arch/Linux-x86-64-gfortran.sopt.r cp2k-4.1/arch/Linux-x86-64-g
+DATA_DIR = /usr/share/cp2k
diff -up cp2k-4.1/arch/Linux-x86-64-gfortran.ssmp.r cp2k-4.1/arch/Linux-x86-64-gfortran.ssmp
--- cp2k-4.1/arch/Linux-x86-64-gfortran.ssmp.r 2014-12-22 01:17:03.067670000 +0100
-+++ cp2k-4.1/arch/Linux-x86-64-gfortran.ssmp 2017-02-08 12:28:31.709689775 +0100
++++ cp2k-4.1/arch/Linux-x86-64-gfortran.ssmp 2017-06-18 22:49:26.255715225 +0200
@@ -3,6 +3,7 @@ CC = gcc
CPP =
FC = gfortran
@@ -152,12 +155,12 @@ diff -up cp2k-4.1/arch/Linux-x86-64-gfortran.ssmp.r cp2k-4.1/arch/Linux-x86-64-g
AR = ar -r
ACML_INC = $(ACMLPATH)/include
ACML_LIB = $(ACMLPATH)/lib
-@@ -13,17 +14,20 @@ LIBINT_LIB = $(GCC_DIR)/libint/1.1.4-LAR
+@@ -13,17 +14,21 @@ LIBINT_LIB = $(GCC_DIR)/libint/1.1.4-LAR
LIBXC_INC = $(GCC_DIR)/libxc/2.2.0-gnu/include
LIBXC_LIB = $(GCC_DIR)/libxc/2.2.0-gnu/lib64
DFLAGS = -D__FFTW3 -D__LIBINT -D__LIBXC2\
- -D__LIBINT_MAX_AM=7 -D__LIBDERIV_MAX_AM1=6 -D__MAX_CONTR=4
-+ -D__LIBINT_MAX_AM=@LIBINT_MAX_AM@ -D__LIBDERIV_MAX_AM1=@LIBDERIV_MAX_AM@ -D__MAX_CONTR=4
++ -D__LIBINT_MAX_AM=@LIBINT_MAX_AM@ -D__LIBDERIV_MAX_AM1=@LIBDERIV_MAX_AM@ -D__MAX_CONTR=4 @LIBSMM_DEFS@
CPPFLAGS =
-FCFLAGS = $(DFLAGS) -O2 -ffast-math -ffree-form -ffree-line-length-none\
- -fopenmp -ftree-vectorize -funroll-loops\
@@ -177,6 +180,7 @@ diff -up cp2k-4.1/arch/Linux-x86-64-gfortran.ssmp.r cp2k-4.1/arch/Linux-x86-64-g
+FCFLAGS = $(DFLAGS) $(OPTFLAGS) -fopenmp -ffree-form -ffree-line-length-none
+LDFLAGS = $(FCFLAGS)
+LIBS = -l@BLAS@\
++ @LIBSMM_LIBS@\
+ -lfftw3\
+ -lfftw3_omp\
+ -lxcf90\
@@ -186,7 +190,7 @@ diff -up cp2k-4.1/arch/Linux-x86-64-gfortran.ssmp.r cp2k-4.1/arch/Linux-x86-64-g
+DATA_DIR = /usr/share/cp2k
diff -up cp2k-4.1/tools/regtesting/do_regtest.r cp2k-4.1/tools/regtesting/do_regtest
--- cp2k-4.1/tools/regtesting/do_regtest.r 2016-07-06 14:01:51.466471000 +0200
-+++ cp2k-4.1/tools/regtesting/do_regtest 2017-02-08 12:17:12.914249539 +0100
++++ cp2k-4.1/tools/regtesting/do_regtest 2017-06-18 22:44:26.959928409 +0200
@@ -247,8 +247,8 @@ cp2k_postfix=${cp2k_postfix:-"${cp2k_run
#
###################################################################################
diff --git a/cp2k.spec b/cp2k.spec
index b8bd97b..9c628c7 100644
--- a/cp2k.spec
+++ b/cp2k.spec
@@ -13,7 +13,7 @@
Name: cp2k
Version: 4.1
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Ab Initio Molecular Dynamics
License: GPLv2+
URL: http://cp2k.org/
@@ -47,6 +47,9 @@ BuildRequires: fftw-devel
BuildRequires: gcc-gfortran
BuildRequires: libint-devel
BuildRequires: libxc-devel
+%ifarch x86_64
+BuildRequires: libxsmm-devel
+%endif
BuildRequires: python
BuildRequires: /usr/bin/hostname
@@ -118,10 +121,6 @@ This package contains the documentation and the manual.
%patch11 -p0
sed -i 's|@libdir@|%{_libdir}|' makefiles/Makefile
-%if 0%{?fedora}
-sed -i 's|-lmpiblacsF77init||g;s|-lmpiblacsCinit||g' arch/Linux-x86-64-gfortran*
-%endif
-
# Generate necessary symlinks
TARGET=Linux-%{_target_cpu}-gfortran
for v in opt smp ; do
@@ -148,6 +147,11 @@ for f in arch/Linux-x86-64-gfortran.{popt,psmp,sopt,ssmp}; do
%else
sed -i 's|@BLAS@|openblas|' $f
%endif
+%ifarch x86_64
+ sed -i 's|@LIBSMM_DEFS@|-D__LIBXSMM|;s|@LIBSMM_LIBS@|-lxsmmf -lxsmm -ldl|' $f
+%else
+ sed -i 's|@LIBSMM_DEFS@||;s|@LIBSMM_LIBS@||' $f
+%endif
done
%build
@@ -157,17 +161,15 @@ LDFLAGS_COMMON="${OPTFLAGS_COMMON} %{__global_ldflags}"
%if %{with atlas}
LDFLAGS_COMMON="${LDFLAGS_COMMON} -L%{_libdir}/atlas"
%endif
-for v in opt smp ; do
pushd makefiles
- make OPTFLAGS="${OPTFLAGS_COMMON}" LDFLAGS="${LDFLAGS_COMMON} -Wl,-rpath,%{_libdir}/cp2k" %{?_smp_mflags} ARCH="${TARGET}" VERSION=s${v}
+ make OPTFLAGS="${OPTFLAGS_COMMON}" LDFLAGS="${LDFLAGS_COMMON} -Wl,-rpath,%{_libdir}/cp2k" %{?_smp_mflags} ARCH="${TARGET}" VERSION="sopt ssmp"
%{_openmpi_load}
- make OPTFLAGS="${OPTFLAGS_COMMON} -I%{_fmoddir}/openmpi" LDFLAGS="${LDFLAGS_COMMON} -Wl,-rpath,${MPI_LIB}/cp2k" %{?_smp_mflags} ARCH="${TARGET}-openmpi" VERSION=p${v}
+ make OPTFLAGS="${OPTFLAGS_COMMON} -I%{_fmoddir}/openmpi" LDFLAGS="${LDFLAGS_COMMON} -Wl,-rpath,${MPI_LIB}/cp2k" %{?_smp_mflags} ARCH="${TARGET}-openmpi" VERSION="popt psmp"
%{_openmpi_unload}
%{_mpich_load}
- make OPTFLAGS="${OPTFLAGS_COMMON} -I%{_fmoddir}/mpich" LDFLAGS="${LDFLAGS_COMMON} -Wl,-rpath,${MPI_LIB}/cp2k" %{?_smp_mflags} ARCH="${TARGET}-mpich" VERSION=p${v}
+ make OPTFLAGS="${OPTFLAGS_COMMON} -I%{_fmoddir}/mpich" LDFLAGS="${LDFLAGS_COMMON} -Wl,-rpath,${MPI_LIB}/cp2k" %{?_smp_mflags} ARCH="${TARGET}-mpich" VERSION="popt psmp"
%{_mpich_unload}
popd
-done
%install
TARGET=Linux-%{_target_cpu}-gfortran
@@ -188,8 +190,8 @@ install -pm755 lib/${TARGET}/s${v}/lib*.s${v}.so %{buildroot}%{_libdir}/cp2k/
install -pm755 exe/${TARGET}-mpich/cp2k_shell.p${v} %{buildroot}${MPI_BIN}/cp2k_shell.p${v}_mpich
install -pm755 lib/${TARGET}-mpich/p${v}/lib*.p${v}.so %{buildroot}${MPI_LIB}/cp2k/
%{_mpich_unload}
-cp -pr data/* %{buildroot}%{_datadir}/cp2k/
done
+cp -pr data/* %{buildroot}%{_datadir}/cp2k/
%if 1
# regtests take 11+ hours on armv7hl and ~72h on s390x
@@ -251,6 +253,11 @@ tools/regtesting/do_regtest \
%{_libdir}/mpich/lib/cp2k/lib*.psmp.so
%changelog
+* Sat Jun 17 2017 Dominik Mierzejewski <rpm(a)greysector.net> - 4.1-2
+- build with libxsmm on x86_64 for improved matrix multiplication performance
+- simplify some loops
+- drop support for old blacs (even EL6 has scalapack with blacs now)
+
* Thu Jun 15 2017 Dominik Mierzejewski <rpm(a)greysector.net> - 4.1-1
- update to 4.1 + two backported patches
- build with openblas on supported arches (following scalapack and elpa)
6 years, 10 months
[Report] Packages Restricting Arches
by root
List of packages currently excluding arches (1872)
===========================================
- 0ad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- GtkAda
ExclusiveArch: %{GNAT_arches}
- GtkAda3
ExclusiveArch: %{GNAT_arches}
- LuxRender
ExclusiveArch: x86_64
- OpenTK
ExclusiveArch: %mono_arches
- PragmARC
ExclusiveArch: %{GNAT_arches}
- R-DynDoc
ExclusiveArch: armv7, ppc, go_arch
- RdRand
ExclusiveArch: %{ix86} x86_64
- YafaRay
ExclusiveArch: %{ix86} x86_64
- aboot
ExclusiveArch: alpha
- acpid
ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64
- ahven
ExclusiveArch: %{GNAT_arches}
- alleyoop
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x %{arm} aarch64
- american-fuzzy-lop
ExclusiveArch: %{ix86} x86_64
- anet
ExclusiveArch: %{GNAT_arches}
- apmd
ExclusiveArch: %{ix86}
- apmud
ExclusiveArch: ppc
- arm-boot-config
ExclusiveArch: %{arm}
- arm-trusted-firmware
ExclusiveArch: aarch64
- atomic
ExclusiveArch: i386 i486 i586 i686 pentium3 pentium4 athlon geode x86_64 armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl aarch64 ppc64le s390x mips mipsel mipsr6 mipsr6el mips64 mips64el mips64r6 mips64r6el
ExclusiveArch: x86_64 ppc64le
- aunit
ExclusiveArch: %GNAT_arches
- avgtime
ExclusiveArch: %{ldc_arches}
- aws
ExclusiveArch: %GNAT_arches
- banshee
ExclusiveArch: %{mono_arches}
- banshee-community-extensions
ExclusiveArch: %ix86 x86_64 ppc ppc64 ia64 %{arm} sparcv9 alpha s390x
- bareftp
ExclusiveArch: %{mono_arches}
- bcc
ExclusiveArch: x86_64
- bcm283x-firmware
ExclusiveArch: %{arm} aarch64
- beignet
ExclusiveArch: x86_64 %{ix86}
- berusky2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- biosdevname
ExclusiveArch: %{ix86} x86_64 ia64
- bless
ExclusiveArch: %mono_arches
- boo
ExclusiveArch: %{mono_arches}
- buildah
ExclusiveArch: x86_64 aarch64 ppc64le
- bwa
ExclusiveArch: x86_64
- cadvisor
ExclusiveArch: %{ix86} x86_64 aarch64 ppc64le
- calamares
ExclusiveArch: %{ix86} x86_64
- cargo
ExclusiveArch: %{rust_arches}
- carto
ExclusiveArch: %{nodejs_arches} noarch
- ccdciel
ExclusiveArch: %{fpc_arches}
- cdcollect
ExclusiveArch: %{mono_arches}
- ceph
ExclusiveArch: x86_64 aarch64 ppc64 ppc64le
ExclusiveArch: x86_64 aarch64
- chromium
ExclusiveArch: x86_64 i686
- chromium-native_client
ExclusiveArch: x86_64
- cjdns
ExclusiveArch: %{nodejs_arches}
- cmospwd
ExclusiveArch: %{ix86} x86_64
- coffee-script
ExclusiveArch: %{nodejs_arches} noarch
- colorful
ExclusiveArch: %{arm} %{ix86} x86_64 ppc ppc64
- compat-gcc-296
ExclusiveArch: %{ix86} ia64 ppc
- consul
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- containernetworking-cni
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- copr-dist-git
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le powerpc64le s390x %{mips}
- corosync
ExclusiveArch: i686 x86_64
- cpuid
ExclusiveArch: %{ix86} x86_64
- cqrlog
ExclusiveArch: %{fpc_arches}
- crash
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- cri-o
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- criu
ExclusiveArch: x86_64 %{arm} ppc64le aarch64
ExclusiveArch: x86_64 ppc64le
- cryptlib
ExclusiveArch: x86_64 %{ix86} %{arm}
- cryptobone
ExclusiveArch: x86_64 %{ix86} %{arm}
- daq
ExclusiveArch: x86_64 aarch64
- darktable
ExclusiveArch: x86_64 aarch64
- dbus-sharp
ExclusiveArch: %mono_arches
- dbus-sharp-glib
ExclusiveArch: %mono_arches
- dbxtool
ExclusiveArch: i386 x86_64 aarch64
- derelict
ExclusiveArch: %{ldc_arches}
- direnv
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dlm
ExclusiveArch: i686 x86_64
- dmidecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- dmtcp
ExclusiveArch: %ix86 x86_64 aarch64
- docco
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- docker
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- docker-anaconda-addon
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- docker-latest
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- dolphin-emu
ExclusiveArch: x86_64 armv7l aarch64
- dpdk
ExclusiveArch: x86_64 i686 aarch64 ppc64le
- dssi-vst
ExclusiveArch: %{ix86} x86_64
- dustmite
ExclusiveArch: %{ldc_arches}
- dyninst
ExclusiveArch: %{ix86} x86_64 ppc ppc64
- e3
ExclusiveArch: %{ix86} x86_64
- edac-utils
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64}
- edb
ExclusiveArch: %{ix86} x86_64
- edk2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- efibootmgr
ExclusiveArch: %{ix86} x86_64 aarch64 arm
- efivar
ExclusiveArch: %{ix86} x86_64 aarch64
- elasticdump
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- elk
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- embree
ExclusiveArch: x86_64
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- etcd
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- exciting
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- expresso
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- extlinux-bootloader
ExclusiveArch: %{arm} aarch64
- fcitx-libpinyin
ExclusiveArch: %{qt5_qtwebengine_arches}
- fedora-dockerfiles
ExclusiveArch: %{go_arches}
- fedora-gnat-project-common
ExclusiveArch: noarch %{GNAT_arches}
- fence-virt
ExclusiveArch: i686 x86_64
- fes
ExclusiveArch: x86_64
- ffcall
ExclusiveArch: %{ffcall_arches}
- firmware-addon-dell
ExclusiveArch: x86_64 ia64 %{ix86}
- flannel
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- florist
ExclusiveArch: %GPRbuild_arches
- fpc
ExclusiveArch: %{arm} %{ix86} x86_64 ppc ppc64
- frysk
ExclusiveArch: %{ix86} x86_64 ppc64
- fst
ExclusiveArch: i686
- fwupdate
ExclusiveArch: x86_64 %{ix86} aarch64
- ga
ExclusiveArch: %{ix86} x86_64
- gbrainy
ExclusiveArch: %mono_arches
- gdata-sharp
ExclusiveArch: %mono_arches
- gela-asis
ExclusiveArch: %{GNAT_arches}
- ghdl
ExclusiveArch: %{GNAT_arches}
- gio-sharp
ExclusiveArch: %mono_arches
- gir-to-d
ExclusiveArch: %{ldc_arches}
- giver
ExclusiveArch: %{mono_arches}
- gkeyfile-sharp
ExclusiveArch: %mono_arches
- gl3n
ExclusiveArch: %{ldc_arches}
- glibc32
ExclusiveArch: x86_64 ppc64 s390x
- glide
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gmqcc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- gnatcoll
ExclusiveArch: %GPRbuild_arches
- gnome-boxes
ExclusiveArch: x86_64
- gnome-desktop-sharp
ExclusiveArch: %mono_arches
- gnome-do
ExclusiveArch: %mono_arches
- gnome-guitar
ExclusiveArch: %{mono_arches}
- gnome-keyring-sharp
ExclusiveArch: %mono_arches
- gnome-rdp
ExclusiveArch: %{mono_arches}
- gnome-sharp
ExclusiveArch: %mono_arches
- gnome-subtitles
ExclusiveArch: %mono_arches
- gnu-efi
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- gnu-smalltalk
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- go-bindata
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- go-compilers
ExclusiveArch: %{go_arches}
- go-i18n
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- godep
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gofed
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- golang
ExclusiveArch: %{golang_arches}
- golang-bitbucket-kardianos-osext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-bitbucket-ww-goautoneg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-10gen-openssl
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- golang-github-3rf-mongo-lint
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-AdRoll-goamz
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-AudriusButkevicius-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-AudriusButkevicius-go-nat-pmp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-AudriusButkevicius-pfilter
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-Azure-azure-sdk-for-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-BurntSushi-toml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-BurntSushi-toml-test
ExclusiveArch: %{go_arches}
- golang-github-DATA-DOG-go-sqlmock
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-DataDog-datadog-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-MakeNowJust-heredoc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Masterminds-semver
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Masterminds-vcs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-PuerkitoBio-purell
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-PuerkitoBio-urlesc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-RangelReale-osin
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-RangelReale-osincli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-SeanDolphin-bqschema
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-Shopify-sarama
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Shopify-toxiproxy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Sirupsen-logrus
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-abbot-go-http-auth
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-agl-ed25519
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-akrennmair-gopcap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-appc-spec
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-circbuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-go-metrics
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-go-radix
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-gomdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-asaskevich-govalidator
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-auth0-go-jwt-middleware
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-aws-aws-sdk-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-beorn7-perks
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bep-gitmap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bep-inflect
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bgentry-speakeasy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bkaradzic-go-lz4
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-blang-semver
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bmizerany-assert
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-bmizerany-pat
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-bmizerany-perks
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-boltdb-bolt
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bradfitz-http2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-bugsnag-bugsnag-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bugsnag-panicwrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-calmh-du
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-calmh-luhn
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-calmh-xdr
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-ccding-go-stun
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cenkalti-backoff
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-chaseadamsio-goorgeous
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cheggaaa-pb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-chmduquesne-rollinghash
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-circonus-labs-circonus-gometrics
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-circonus-labs-circonusllhist
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cloudfoundry-incubator-candiedyaml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cockroachdb-cmux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-codegangsta-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-codegangsta-negroni
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-collectd-go-collectd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-gexpect
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-etcd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-iptables
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-coreos-go-log
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-oidc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-semver
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-coreos-go-systemd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-coreos-pkg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cpuguy83-go-md2man
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-cznic-b
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-fileutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-internal
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-mathutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-sortutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-strutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-d2g-dhcp4
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-d2g-dhcp4client
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-d4l3k-messagediff
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-davecgh-go-spew
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-daviddengcn-go-colortext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-dchest-cssmin
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-denverdino-aliyungo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-dgnorton-goback
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-dgrijalva-jwt-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-digitalocean-godo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-go-connections
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-go-units
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-libcontainer
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-libkv
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-libtrust
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-spdystream
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docopt-docopt-go
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-dustin-go-humanize
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-dvsekhvalnov-jose2go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-eapache-go-resiliency
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-eapache-queue
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-edsrzf-mmap-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-eknkc-amber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-elazarl-go-bindata-assetfs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-emicklei-go-restful
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-endophage-gotuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-evanphx-json-patch
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-fatih-pool
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-fortytw2-leaktest
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-fsnotify-fsnotify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-fsouza-go-dockerclient
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-garyburd-redigo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gengo-grpc-gateway
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-getsentry-raven-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ghodss-yaml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-glacjay-goini
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-asn1-ber-asn1-ber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-errors-errors
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-fsnotify-fsnotify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-go-ini-ini
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-go-ldap-ldap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-macaron-inject
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-go-mgo-mgo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-sql-driver-mysql
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-tomb-tomb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gobwas-glob
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-godbus-dbus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-appengine
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-glog
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-groupcache
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-golang-sys
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-time
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-blas
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-floats
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-graph
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-internal
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-lapack
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-matrix
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-google-btree
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-google-go-github
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-google-go-querystring
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-google-gofuzz
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-goraft-raft
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-context
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-handlers
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-mux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-securecookie
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-sessions
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-websocket
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gosexy-gettext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-grpc-ecosystem-go-grpc-prometheus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-grpc-ecosystem-grpc-gateway
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-grpc-grpc-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-consul-migrate
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-errwrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-checkpoint
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-cleanhttp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-immutable-radix
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-memdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-msgpack
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-multierror
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-retryablehttp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-sockaddr
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-syslog
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-uuid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-golang-lru
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-hcl
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-hil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-logutils
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-mdns
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-memberlist
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-net-rpc-msgpackrpc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-raft
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-raft-boltdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-raft-mdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-scada-client
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-serf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-yamux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hawkular-hawkular-client-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-howeyc-gopass
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-imdario-mergo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-inconshreveable-mousetrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-inconshreveable-muxado
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-influxdb-hyperleveldb-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-influxdb-influxdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-influxdb-rocksdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jackpal-gateway
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jacobsa-oglematchers
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jessevdk-go-flags
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jfrazelle-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jinzhu-gorm
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jmespath-go-jmespath
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jmhodges-levigo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jonboulle-clockwork
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jtolds-gls
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-juju-ratelimit
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-julienschmidt-httprouter
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-karlseguin-ccache
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-karlseguin-expect
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-kballard-go-shellquote
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kdar-factorlog
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kimor79-gollectd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-klauspost-cpuid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-klauspost-crc32
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-klauspost-reedsolomon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-knieriem-markdown
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kr-fs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-kr-pretty
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kr-pty
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kr-text
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-kubernetes-heapster
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kyokomi-emoji
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-lib-pq
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-lpabon-godbc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-lsegal-gucumber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-magiconair-properties
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mattn-go-isatty
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mattn-go-runewidth
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mattn-go-sqlite3
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-matttproud-golang_protobuf_extensions
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mesos-mesos-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-miekg-dns
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-miekg-mmark
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-miekg-pkcs11
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-milochristiansen-axis2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-milochristiansen-lua
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-minio-sha256-simd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mistifyio-go-zfs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mitchellh-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-copystructure
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-go-homedir
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mitchellh-go-wordwrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-goamz
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mitchellh-mapstructure
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-reflectwalk
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mreiferson-go-httpclient
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-mvo5-goconfigparser
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mvo5-uboot-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mxk-go-flowrate
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ncw-swift
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-noahdesu-go-ceph
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ojii-gettext.go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-olekukonko-tablewriter
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-olekukonko-ts
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-olivere-elastic
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-onsi-ginkgo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-onsi-gomega
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-opencontainers-runtime-spec
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-opencontainers-specs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-openshift-go-json-rest
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-openshift-go-systemd
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-openshift-openshift-sdn
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-oschwald-geoip2-golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-oschwald-maxminddb-golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pelletier-go-buffruneio
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-pelletier-go-toml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-petar-GoLLRB
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-peterh-liner
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-petermattis-goid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pkg-errors
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pkg-profile
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-pkg-sftp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pmezard-go-difflib
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-client_golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-client_model
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-prometheus-common
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-procfs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-prometheus
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-racker-perigee
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-rackspace-gophercloud
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-rakyll-globalconf
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-rakyll-pb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-rakyll-statik
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-rcrowley-go-metrics
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-remyoudompheng-bigfft
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-russross-blackfriday
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ryanuber-columnize
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-samalba-dockerclient
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-samuel-go-zookeeper
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-sasha-s-go-deadlock
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-seccomp-libseccomp-golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-shiena-ansicolor
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-shurcooL-sanitized_anchor_name
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-skarademir-naturalsort
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-skratchdot-open-golang
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-skynetservices-skydns
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-smartystreets-assertions
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-smartystreets-go-aws-auth
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-smartystreets-goconvey
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spacejam-loghisto
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-spacemonkeygo-flagfile
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-spacemonkeygo-spacelog
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-spf13-afero
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-cast
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-cobra
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-spf13-fsync
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-jWalterWeatherman
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-nitro
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-spf13-pflag
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-viper
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-stathat-go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-stevvooe-resumable
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-stretchr-objx
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-stretchr-testify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-syndtr-gocapability
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-syndtr-goleveldb
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-syndtr-gosnappy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-tent-http-link-go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-thejerf-suture
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-tonnerre-golang-pretty
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-ugorji-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-urfave-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-vaughan0-go-ini
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-vbatts-tar-split
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vishvananda-netlink
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} aarch64 x86_64 %{arm}}
- golang-github-vishvananda-netns
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vitrun-qart
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-vjeantet-asn1-ber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vmware-govcloudair
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-wsxiaoys-terminal
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonpointer
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonreference
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonschema
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xiang90-probing
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-xtaci-kcp-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xtaci-smux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yosssi-ace
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yosssi-gohtml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yvasiyarov-go-metrics
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-yvasiyarov-gorelic
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-yvasiyarov-newrelic_platform_go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-zillode-notify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-google-golangorg-cloud
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-gcfg
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-go-crypto
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-go-decimal-inf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-go-exp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-googlecode-goauth2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-gogoprotobuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-gomock
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-google-api-client
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-goprotobuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-log4go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-net
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-sqlite
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-text
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-tools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-uuid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-gopkg-check
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-gopkg-go-check-check
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-gopkg-go-macaroon-macaroon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-gopkg-retry-v1
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-gopkg-yaml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golint
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gomtree
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gotags
ExclusiveArch: %{go_arches}
- gotun
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: x86_64
- gprbuild
ExclusiveArch: %{GPRbuild_arches} %{bootstrap_arch}
- gprolog
ExclusiveArch: x86_64 %{ix86} ppc alpha
- gsf-sharp
ExclusiveArch: %mono_arches
- gtk-sharp-beans
ExclusiveArch: %mono_arches
- gtk-sharp2
ExclusiveArch: %mono_arches
- gtk-sharp3
ExclusiveArch: %{mono_arches}
- gtkd
ExclusiveArch: %{ldc_arches}
- gudev-sharp
ExclusiveArch: %mono_arches
- hedgewars
ExclusiveArch: %{fpc_arches}
- heketi
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- hub
ExclusiveArch: %{go_arches}
- hyena
ExclusiveArch: %{mono_arches}
- hyperscan
ExclusiveArch: x86_64
- hyperv-daemons
ExclusiveArch: i686 x86_64
- icaro
ExclusiveArch: %{ix86} %{arm} x86_64 noarch
- ikarus
ExclusiveArch: %{ix86}
- imvirt
ExclusiveArch: %{ix86} x86_64 ia64
- indistarter
ExclusiveArch: %{fpc_arches}
- infinipath-psm
ExclusiveArch: x86_64
- intel-cmt-cat
ExclusiveArch: x86_64 i686 i586
ExclusiveArch: x86_64 i686 i586
- ioport
ExclusiveArch: %{ix86} x86_64
- ipw2100-firmware
ExclusiveArch: noarch i386 x86_64
- ipw2200-firmware
ExclusiveArch: noarch i386 x86_64
- ispc
ExclusiveArch: %{arm} %{ix86} x86_64
- iwyu
ExclusiveArch: %{ix86} x86_64
- ixpdimm_sw
ExclusiveArch: x86_64
- jake
ExclusiveArch: %{nodejs_arches} noarch
- jasmine-node
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- java-1.8.0-openjdk-aarch32
ExclusiveArch: %{arm}
- julia
ExclusiveArch: %{ix86} x86_64
- keepass
ExclusiveArch: %{mono_arches}
- kernel
ExclusiveArch: %{all_x86} x86_64 ppc64 ppc64p7 s390x %{arm} aarch64 ppc64le
- knot-resolver
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- kompose
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- kosmtik
ExclusiveArch: %{nodejs_arches} noarch
- kubernetes
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- latrace
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64}
- lazarus
ExclusiveArch: %{fpc_arches}
- ldc
ExclusiveArch: %{ldc_arches}
- libbsr
ExclusiveArch: %{power64}
- libclc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64} s390x
- libcxl
ExclusiveArch: %{power64}
- libflatarray
ExclusiveArch: %{ix86} x86_64
- libhfi1
ExclusiveArch: x86_64
- libica
ExclusiveArch: s390 s390x
- libinvm-cim
ExclusiveArch: x86_64
- libinvm-cli
ExclusiveArch: x86_64
- libinvm-i18n
ExclusiveArch: x86_64
- libipathverbs
ExclusiveArch: x86_64
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libjingle
ExclusiveArch: %{ix86} x86_64 %{arm}
- libmfx
ExclusiveArch: %{ix86} x86_64
- libpsm2
ExclusiveArch: x86_64
- librtas
ExclusiveArch: ppc %{power64}
- libseccomp
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 mipsel mips64el ppc64 ppc64le s390 s390x
- libservicelog
ExclusiveArch: ppc %{power64}
- libsmbios
ExclusiveArch: x86_64 ia64 %{ix86}
- libunwind
ExclusiveArch: %{arm} aarch64 hppa ia64 mips ppc %{power64} %{ix86} x86_64
- libvmi
ExclusiveArch: x86_64
- libvpd
ExclusiveArch: ppc %{power64}
- libxsmm
ExclusiveArch: x86_64
- libzfcphbaapi
ExclusiveArch: s390 s390x
- lldb
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- lodash
ExclusiveArch: %{nodejs_arches} noarch
- log4net
ExclusiveArch: %mono_arches
- lrmi
ExclusiveArch: %{ix86}
- lsvpd
ExclusiveArch: ppc %{power64}
- luajit
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mactel-boot
ExclusiveArch: x86_64
- marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- matreshka
ExclusiveArch: %GPRbuild_arches
- maven-eclipse-plugin
ExclusiveArch: %{ix86} x86_64
- maxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- mcelog
ExclusiveArch: i686 x86_64
- memkind
ExclusiveArch: x86_64
- memtest86+
ExclusiveArch: %{ix86} x86_64
- mesos
ExclusiveArch: x86_64
- microcode_ctl
ExclusiveArch: %{ix86} x86_64
- micropython
ExclusiveArch: %{arm} %{ix86} x86_64
- mine_detector
ExclusiveArch: %{GNAT_arches}
- minetest
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mingw-wine-gecko
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- mkbootdisk
ExclusiveArch: %{ix86} sparc sparc64 x86_64
- mnemosyne
ExclusiveArch: noarch %{qt5_qtwebengine_arches}
- mocha
ExclusiveArch: %{nodejs_arches} noarch
- mod_mono
ExclusiveArch: %mono_arches
- module-build-service
ExclusiveArch: %{ix86} x86_64
- mokutil
ExclusiveArch: %{ix86} x86_64 aarch64
- mongo-tools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- mono
ExclusiveArch: %mono_arches
- mono-addins
ExclusiveArch: %mono_arches
- mono-basic
ExclusiveArch: %{mono_arches}
- mono-bouncycastle
ExclusiveArch: %mono_arches
- mono-cecil
ExclusiveArch: %mono_arches
- mono-cecil-flowanalysis
ExclusiveArch: %mono_arches
- mono-debugger
ExclusiveArch: %ix86 x86_64
- mono-reflection
ExclusiveArch: %mono_arches
- mono-tools
ExclusiveArch: %mono_arches
- mono-zeroconf
ExclusiveArch: %mono_arches
- monobristol
ExclusiveArch: %{mono_arches}
- monodevelop
ExclusiveArch: %mono_arches
- monodevelop-debugger-gdb
ExclusiveArch: %{mono_arches}
- monosim
ExclusiveArch: %mono_arches
- mrrescue
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- msr-tools
ExclusiveArch: %{ix86} x86_64
- mustache-d
ExclusiveArch: %{ldc_arches}
- mysql-connector-net
ExclusiveArch: %{mono_arches}
- nacl-arm-binutils
ExclusiveArch: x86_64
- nacl-arm-gcc
ExclusiveArch: x86_64
- nacl-arm-newlib
ExclusiveArch: x86_64
- nacl-binutils
ExclusiveArch: x86_64
- nacl-gcc
ExclusiveArch: x86_64
- nacl-newlib
ExclusiveArch: x86_64
- nant
ExclusiveArch: %mono_arches
- nbc
ExclusiveArch: %{fpc_arches}
- ndesk-dbus
ExclusiveArch: %{mono_arches}
- ndesk-dbus-glib
ExclusiveArch: %{mono_arches}
- newtonsoft-json
ExclusiveArch: %{mono_arches}
- nini
ExclusiveArch: %{mono_arches}
- node-gyp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs
ExclusiveArch: %{nodejs_arches}
- nodejs-abbrev
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-accepts
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-acorn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-after
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-agent-base
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-agentkeepalive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ain2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-alter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-cyan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-font
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-green
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-magenta
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-styles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-wrap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-yellow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansicolors
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansidiff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansistyles
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-any-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-append-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-aproba
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-archiver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-archiver-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-archy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-are-we-there-yet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-argparse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-argsparser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arr-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arr-exclude
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arr-flatten
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arr-union
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-differ
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-filter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-find-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-flatten
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-foreach
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-reduce
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-union
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-uniq
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-unique
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arrify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-as-number
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-asap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ascii-tree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ascli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-asn1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assert-plus
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assertion-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assume
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ast-traverse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ast-types
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-astral
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-astral-angular-annotate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-astral-pass
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-array-reduce
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-async-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-each
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-queue
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-some
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws-sign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws-sign2
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-runtime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-backbone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-balanced-match
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base64-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-base64-url
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-basic-auth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-basic-auth-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-basic-auth-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-batch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bcrypt
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-beeper
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-benchmark
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-better-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bignumber-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bindings
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-block-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bluebird
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-body-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-boolbase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-boom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-brace-expansion
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-breakable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-browser-request
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buf-compare
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-crc32
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-equal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-shims
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buffer-writer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buffertools
ExclusiveArch: %{nodejs_arches}
- nodejs-bufferutil
ExclusiveArch: %{nodejs_arches}
- nodejs-builtin-modules
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-builtins
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bundle-dependencies
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bunker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bunyan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-burrito
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bytes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-caching-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-call-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-caller-callsite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caller-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-callsite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-callsites
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camel-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camelcase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camelcase-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caniuse-db
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-capture-stack-trace
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-carrier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caseless
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-connect-middleware
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-passport-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chainsaw
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chalk
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-change-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-char-spinner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-character-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-charm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-child-process-close
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chmodr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chownr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chrono
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cjson
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clean-css
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clean-yaml-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-spinner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cliui
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone-stats
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-closure-compiler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cls
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cmd-shim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-co
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-co-mocha
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-code-point-at
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-codemirror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-collections
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-colors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-colour
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-columnify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-combined-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commander
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-commondir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-commoner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commonmark
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-component-emitter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-component-indexof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-compress-commons
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-compressible
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-compression
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-concat-map
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-concat-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-config-chain
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-connect-livereload
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-connect-timeout
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-console-browserify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-console-dot-log
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-constant-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-constantinople
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-content-disposition
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-content-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-convert-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie-jar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookie-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookie-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookiejar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-core-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-core-util-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-couch-login
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-coveralls
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-crc32-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-create-error-class
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cross-spawn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cross-spawn-async
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cryptiles
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-css
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-select
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-css-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-what
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-csscomb-core
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csslint
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cssom
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csurf
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-generate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-spectrum
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ctype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-currently-unhandled
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cycle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-d
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dashdash
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-data-uri-to-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-date-now
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dateformat
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-debug
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-debuglog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-decamelize
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-decompress-response
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-eql
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-equal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deep-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deeper
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-default-require-extensions
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-defaults
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defence
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-defence-cli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deferred
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-define-properties
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defined
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-degenerator
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-del
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-delayed-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-delegates
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dep-graph
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-depd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dependency-lister
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deprecated
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-destroy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-detect-file
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-detective
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dezalgo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-difflet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-difflib
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-docopt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-doctrine
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dom-serializer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domelementtype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domhandler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domutils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dot-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dotfile-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dreamopt
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dryice
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dtree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexer2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-duplexer3
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duration
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-each
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-each-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ebnf-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ecstatic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-editor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ee-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ejs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-emojione
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-encodeurl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-encoding
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-end-of-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-entities
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-error-ex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-errorhandler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-errs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es-abstract
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es-to-primitive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es5-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es5-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-iterator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es6-set
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-symbol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-weak-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-escape-html
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escape-regexp-component
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-escape-string-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escodegen
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima-fb
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima-harmony-jscs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-esrecurse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estraverse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estraverse-fb
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-esutils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-etag
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-event-emitter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-event-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-eventemitter2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-eventemitter3
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-events
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-events-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-exit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expand-brackets
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expand-tilde
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expect-dot-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-express
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-express-session
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extend
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extend-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extglob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extsprintf
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-eyes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fancy-log
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-far
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fast-levenshtein
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-faye-websocket
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fd-slicer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fg-lodash
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-figures
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-file-entry-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-file-sync-cmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-file-uri-to-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-filed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-filelist
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-filename-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fileset
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fill-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fill-range
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-finalhandler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-find-cache-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-find-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-findup-sync
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-first-chunk-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flagged-respawn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flot
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fn-dot-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fn-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-follow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-for-in
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-for-own
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-foreach
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-forever-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-form-data
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-formatio
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-formidable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-forwarded
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-freetree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fresh
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-from2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-exists-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fs-ext
ExclusiveArch: %{nodejs_arches}
- nodejs-fs-extra
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-vacuum
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-write-stream-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs2
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream-ignore
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream-npm
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ftp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-function-bind
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gauge
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gaze
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gdal
ExclusiveArch: %{nodejs_arches}
- nodejs-generate-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generate-object-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generic-pool
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-get-pkg-repo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-port
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-stdin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-uri
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-getobject
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gettext-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-github-url-from-git
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-github-url-from-username-repo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glob-base
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-glob-parent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-global-prefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globals
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globby
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globule
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glogg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gonzales-pe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-got
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-graceful-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-graceful-readlink
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grip
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-growl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-angular-templates
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-banner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-cli
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-compare-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-clean
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-concat
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-copy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-csslint
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-cssmin
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-htmlmin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-internal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-less
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-nodeunit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-requirejs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-uglify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-watch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-git-authors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-html-validation
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-init
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-known-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-log
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-log-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-lib-contrib
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-saucelabs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-sed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-simple-mocha
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-util-args
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-process
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-wrap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gulplog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gzip-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-handlebars
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-har-validator
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-gulplog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-unicode
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-yarn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hash_file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hawk
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-he
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-heap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-highlight-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hock
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hoek
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hooker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-hosted-git-info
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-html-minifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-htmlparser2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-errors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-http-proxy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-http-server
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-signature
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-https-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-humanize-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-i
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-i18n-transform
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-i2c
ExclusiveArch: %{nodejs_arches}
- nodejs-iconv
ExclusiveArch: %{nodejs_arches}
- nodejs-iconv-lite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-iferr
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ignore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-imurmurhash
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-indent-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-infinity-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inflight
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inherit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-inherits
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inherits1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ini
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-init-package-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inline-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-install
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-int64-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-interpret
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-into-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-invert-kv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ip
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-irregular-plurals
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-absolute
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-arrayish
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-arrow-function
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-boolean-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-builtin-module
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-callable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-date-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-dotfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-equal-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-extendable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-extglob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-finite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-fullwidth-code-point
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-generator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-generator-fn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-generator-function
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-lower-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-my-json-valid
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-number
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-number-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-observable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-path-cwd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-path-in-cwd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-path-inside
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-plain-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-plain-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-primitive
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-redirect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-relative
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-retry-allowed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-text-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-typedarray
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-unc-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-upper-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-url
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-utf8
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-valid-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-windows
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isarray
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-isexe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-iso8601
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isobject
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isodate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jade
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jasmine-growl-reporter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jasmine-reporters
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jison
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jison-lex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jju
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joose
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joosex-namespace-depended
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joosex-simplerequest
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-js-base64
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-js-yaml
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jschardet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jscoverage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jshint
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-json-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-localizer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-json-parse-helpfulerror
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-stable-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-stringify-safe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jsonify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jsonm
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonparse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonpointer
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonselect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jwt-simple
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-keypress
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-kind-of
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-klaw
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-langdetect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-latest-version
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lazystream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lcid
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lcov-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-leaflet
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leaflet-formbuilder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leaflet-hash
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leche
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-left-pad
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-less
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-levn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lex-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-libxmljs
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-line-reader
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-linkify-it
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-load-grunt-tasks
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-load-json-file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-locate-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lockfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-log-driver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-log-symbols
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lolex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-loud-rejection
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lower-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lower-case-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lowercase-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lru-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lru-queue
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ltx
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-make-arrow-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-generator-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mapnik
ExclusiveArch: %{nodejs_arches}
- nodejs-mapnik-pool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mapnik-vector-tile
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-markdown
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-markdown-it-testgen
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-max-timeout
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-maxmin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mbtiles
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-md5-hex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-md5-o-matic
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mdurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-media-typer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-memoizee
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-meow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-merge-descriptors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-merge-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-metascript
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-method-override
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-methods
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-millstone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mime-db
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mime-types
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mimeparse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-minimatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-minimist
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-minstache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mkdirp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mkfiletree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mock-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-module-not-found-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-moment
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mongodb
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mongodb-core
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-monocle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-morgan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-muffin
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-multiline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-multimatch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-multiparty
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mustache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mute-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mv
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mysql
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mz
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nan0
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nan1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nano
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-native-or-bluebird
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ncp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-needle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-negotiator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nested-error-stacks
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-netmask
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-next
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-next-tick
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-node-expat
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-node-int64
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-markdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-print
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-static
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-status-codes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-stringprep
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-node-uuid
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nomnom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nopt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nopt-usage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-noptify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-normalize-git-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-normalize-package-data
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-normalize-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-cache-filename
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-install-checks
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-license
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-npm-package-arg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-registry-client
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-npm-run-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-stats
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-user-validate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npmlog
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nsp-api
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nsp-audit-shrinkwrap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nth-check
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-number-is-nan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-numeral
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth-sign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-assign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-dot-entries
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-dot-omit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-inspect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-on-finished
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-on-headers
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-once
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-onetime
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-only-shallow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oop
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-opener
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-opn
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-optionator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-optjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-opts
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-orchestrator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ordered-read-streams
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-os-homedir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-locale
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-tmpdir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-osenv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-output-file-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-p-finally
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-is-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-limit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-locate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pac-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pac-resolver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-package
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-package-info
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-package-json
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-package-license
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-packaging
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-packet-reader
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pad
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pad-left
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-paperboy
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-param-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-github-repo-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-parse-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parserlib
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-parseurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pascal-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-array
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-path-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-exists
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-is-absolute
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-is-inside
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-key
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-to-regexp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-path-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pathval
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pause
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pause-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pedding
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pegjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pem
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pff
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pg-connection-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-escape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-types
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pgpass
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pinkie
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pinkie-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pkg-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pkg-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pkginfo
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-platform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-plur
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-portfinder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-portscanner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-posix-getopt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-bytea
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-date
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-interval
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-prelude-ls
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-prepend-http
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-preserve
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-bytes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-hrtime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-private
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-process-nextick-args
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-progress-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-promises-aplus-tests
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-prompt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-promzard
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-propagate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-proto-list
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proxy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-proxyquire
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pruddy-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pseudomap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pubcontrol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-q
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-q-io
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-qs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-qtdatastream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-queue-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-qunit-extras
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-qunitjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rainbowsocks
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-randomatic
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-range-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-raw-body
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rc
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-re-emitter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-all-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-cmd-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-dir-files
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-file
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-installed
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-package-json
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-package-tree
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-pkg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-pkg-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readable-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-readdir-scoped-modules
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readdirp
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-realize-package-specifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-recast
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rechoir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-redent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-reduce-component
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-regenerator
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-regex-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-registry-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-relateurl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-repeat-element
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-repeat-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-repeating
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-repl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-replace
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-replace-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-replace-require-self
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-request
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-requestretry
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-cs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-require-directory
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-inject
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-uncached
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-yaml
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-requirejs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-requires-port
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-pkg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-response-time
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resumer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-retry
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-revalidator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rewire
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rhea
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rimraf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rndm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ronn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-run-parallel-limit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-runforcover
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-safe-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-safe-json-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-safecb
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-samsam
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sauce-tunnel
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-saucelabs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sax
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-scmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-secure-random
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-semver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-send
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sentence-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-seq
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sequencify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serialize-error
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serve-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serve-static
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-set-getter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-set-immediate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-immediate-shim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-setimmediate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sha
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shelljs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-shelljs-nodecli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-should
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-should-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-format
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-http
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-showdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sigmund
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-signal-exit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-silent-npm-registry-client
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-fmt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-simple-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-single-line-log
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sinon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sinon-restore
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-slide
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-smart-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-snake-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snockets
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sntp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-socks-client
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-socks-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sort-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sorted-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-source-map-fixtures
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sparkles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-spdx-correct
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-exceptions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-expression-parse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-license-ids
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-speedometer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-split
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sprintf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sprintf-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sqlite3
ExclusiveArch: %{nodejs_arches}
- nodejs-srs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-st
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stack-trace
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stack-utils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-static-favicon
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-statuses
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-std-mocks
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-combiner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-consume
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-counter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-reduce
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-replace
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-shift
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-spigot
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-streamsink
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-streamtest
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string-dot-prototype-dot-repeat
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string-dot-prototype-dot-trim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-string-width
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-string_decoder
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringmap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringscanner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringset
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-ansi
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-bom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-bom-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-indent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-json-comments
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strscanner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stylus
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-success-symbol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-superagent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-superagent-proxy
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-supertest
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-supervisor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-supports-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-swap-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-symbol-observable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tad
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tap-mocha-reporter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tap-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-temp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-temporary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern-cordovajs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern-liferay
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-terst
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-test
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-testjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-testswarm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-text-extensions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-text-table
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-thenify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thenify-all
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-through
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-through2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-through2-filter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thunkify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tildify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tilejson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tilelive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tilelive-mapnik
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tiletype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-time-stamp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-timed-out
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-timers-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tiny-lr-fork
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-title-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tlds
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tmatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tmp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-to-absolute-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-to-object-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tough-cookie
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tracejs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-transformers
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-traverse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-treeify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-trim-newlines
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-try-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tryor
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tsscmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ttembed-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tunnel-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-check
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-type-detect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-name
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-typeahead.js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-typedarray
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-typescript
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uc-dot-micro
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uglify-to-browserify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uid-number
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uid-safe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uid2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ultron
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-umask
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unc-path-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-underscore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-underscore-dot-logger
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unicode-7.0.0
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unicode-length
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-union
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unique-filename
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-slug
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unpipe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unzip-response
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-upper-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-upper-case-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uri-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url-join
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url-parse-lax
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-utfx
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-deprecate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-utile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-utilities
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-utils-merge
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vali-date
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-validate-npm-package-license
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-validate-npm-package-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vasync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-verror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vhost
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vinyl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vow-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vow-queue
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vows
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-w3cjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-walkdir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-watchit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wcwidth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-weak-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-websocket-driver
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-when
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-which
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-win-spawn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-window-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-winston
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-with
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-woothee
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wordwrap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wrap-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-wrap-fn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wrappy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write-file-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write-json-file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write-pkg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ws
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xml2js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmlbuilder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmldom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xregexp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-xtend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-y18n
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yallist
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-yargs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-yauzl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zip-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zipfile
ExclusiveArch: %{nodejs_arches}
- nodejs-zlib-browserify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zlibjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodeunit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- notify-sharp
ExclusiveArch: %{mono_arches}
- notify-sharp3
ExclusiveArch: %{mono_arches}
- nuget
ExclusiveArch: %{mono_arches}
- numatop
ExclusiveArch: %{ix86} x86_64
- nunit
ExclusiveArch: %{mono_arches}
- nunit2
ExclusiveArch: %{mono_arches}
- nvml
ExclusiveArch: x86_64
- nwchem
ExclusiveArch: x86_64 %{ix86}
- oci-register-machine
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- ocid
ExclusiveArch: x86_64 aarch64 ppc64le
- ocitools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- olpc-kbdshim
ExclusiveArch: %{ix86} %{arm}
- olpc-netutils
ExclusiveArch: %{ix86} %{arm}
- olpc-powerd
ExclusiveArch: %{ix86} %{arm}
- olpc-utils
ExclusiveArch: %{ix86} %{arm}
- opal-prd
ExclusiveArch: ppc64le
- open-vm-tools
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64
- openblas
ExclusiveArch: %{openblas_arches}
- openjfx
ExclusiveArch: %{ix86} x86_64
- openlibm
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 %{power64}
- openmx
ExclusiveArch: x86_64 %{ix86}
- openni
ExclusiveArch: %{ix86} x86_64 %{arm}
- openni-primesense
ExclusiveArch: %{ix86} x86_64 %{arm}
- openssl-ibmca
ExclusiveArch: s390 s390x
- origin
ExclusiveArch: %{go_arches}
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- orocos-bfl
ExclusiveArch: %{ix86} x86_64
- orthorobot
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- paflib
ExclusiveArch: ppc %{power64}
- pcc
ExclusiveArch: %{ix86} x86_64
- pcmciautils
ExclusiveArch: %{ix86} x86_64 ia64 ppc ppc64 %{arm}
- pdfmod
ExclusiveArch: %mono_arches
- perl-Dumbbench
ExclusiveArch: %{ix86} x86_64 noarch
- perl-Parse-DMIDecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- pesign
ExclusiveArch: %{ix86} x86_64 ia64 aarch64 arm
- pesign-test-app
ExclusiveArch: i686 x86_64 ia64 aarch64
- pinta
ExclusiveArch: %mono_arches
- pioneer
ExclusiveArch: %{ix86} x86_64
- playonlinux
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- polyml
ExclusiveArch: %{ix86} x86_64 sparc sparcv8 sparcv9 sparcv9v ppc %{power64} %{arm} aarch64 ia64 mips mipsel
- poppler-sharp
ExclusiveArch: %mono_arches
- powerpc-utils
ExclusiveArch: ppc %{power64}
- ppc64-diag
ExclusiveArch: ppc %{power64}
- ppc64-utils
ExclusiveArch: ppc %{power64}
- prelude-correlator
ExclusiveArch: %{ix86} x86_64
- prewikka
ExclusiveArch: %{ix86} x86_64
- publican-jboss
ExclusiveArch: i686 x86_64
- pvs-sbcl
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- python-afl
ExclusiveArch: %{ix86} x86_64
- python-etcd
ExclusiveArch: noarch %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- python-healpy
ExclusiveArch: aarch64 ppc64 ppc64le x86_64 s390x
- python-openoffice
ExclusiveArch: noarch x86_64
- python-ovirt-register
ExclusiveArch: %{ix86} x86_64
- python-pymoc
ExclusiveArch: aarch64 ppc64 ppc64le x86_64 s390x
- python-rpi-gpio
ExclusiveArch: %{arm} aarch64
- q4wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- qcint
ExclusiveArch: x86_64
- qclib
ExclusiveArch: s390 s390x
- qt4pas
ExclusiveArch: %{fpc_arches}
- qt5-qtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- quantum-espresso
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: %{openblas_arches}
- rear
ExclusiveArch: %ix86 x86_64 ppc ppc64 ppc64le ia64
- redhat-lsb
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- reptyr
ExclusiveArch: %{ix86} x86_64 %{arm}
- rescene
ExclusiveArch: %{mono_arches}
- restsharp
ExclusiveArch: %{mono_arches}
- rhythmbox-alternative-toolbar
ExclusiveArch: %{ix86} %{arm} x86_64 ppc64 ppc64le
- rkt
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- runc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le %{mips} s390x
- rust
ExclusiveArch: %{rust_arches}
- s390utils
ExclusiveArch: s390 s390x
- sagemath
ExclusiveArch: aarch64 %{arm} %{ix86} x86_64 ppc sparcv9
- sbcl
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- sbd
ExclusiveArch: i686 x86_64 s390x
- seamonkey
ExclusiveArch: %{ix86} x86_64
- servicelog
ExclusiveArch: ppc %{power64}
- sharpfont
ExclusiveArch: %mono_arches
- sharpziplib
ExclusiveArch: %{mono_arches}
- shim
ExclusiveArch: x86_64
- shim-signed
ExclusiveArch: x86_64 aarch64
- shim-unsigned-aarch64
ExclusiveArch: aarch64
- sigul
ExclusiveArch: x86_64
- skychart
ExclusiveArch: %{fpc_arches}
- slapi-nis
ExclusiveArch: x86_64 %{ix86}
- smuxi
ExclusiveArch: %{ix86} x86_64 %{arm} ppc64le
- snapd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- snapd-glib
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- source-to-image
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- sparkleshare
ExclusiveArch: %{mono_arches}
- spicctrl
ExclusiveArch: %{ix86} x86_64
- spice
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- spice-xpi
ExclusiveArch: i686 x86_64 armv6l armv7l armv7hl aarch64
- spring
ExclusiveArch: %{ix86} x86_64
- springlobby
ExclusiveArch: %{ix86} x86_64
- statsd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- stripesnoop
ExclusiveArch: %{ix86} x86_64
- supermin
ExclusiveArch: x86_64
- sysbench
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- syslinux
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- taglib-sharp
ExclusiveArch: %{mono_arches}
- tarantool
ExclusiveArch: %{ix86} x86_64 armv7hl armv7hnl aarch64
- tboot
ExclusiveArch: %{ix86} x86_64
- templates_parser
ExclusiveArch: %GNAT_arches
- themonospot-base
ExclusiveArch: %mono_arches
- themonospot-console
ExclusiveArch: %mono_arches
- themonospot-gui-gtk
ExclusiveArch: %mono_arches
- themonospot-plugin-avi
ExclusiveArch: %mono_arches
- themonospot-plugin-mkv
ExclusiveArch: %mono_arches
- thermald
ExclusiveArch: %{ix86} x86_64
- thunderbird-enigmail
ExclusiveArch: %{ix86} %{arm} ppc64 ppc64le s390x x86_64 noarch
- tilix
ExclusiveArch: %{ldc_arches}
- tmux-top
ExclusiveArch: %{go_arches}
- tomboy
ExclusiveArch: %{mono_arches}
- tpm2-tools
ExclusiveArch: %{ix86} x86_64
- tpm2-tss
ExclusiveArch: %{ix86} x86_64
- uClibc
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
- ugene
ExclusiveArch: %{ix86} x86_64
- uglify-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- uglify-js1
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- unetbootin
ExclusiveArch: %{ix86} x86_64
- v8
ExclusiveArch: %{ix86} x86_64 ppc ppc64 aarch64 %{mips} s390 s390x
- v8-314
ExclusiveArch: %{ix86} x86_64 %{arm} mips mipsel ppc ppc64
- valgrind
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
- vboot-utils
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- vdsm
ExclusiveArch: x86_64 %{power64} aarch64
- vim-go
ExclusiveArch: %{?golang_arches:%{golang_arches} noarch}%{!?golang_arches:%{ix86} x86_64 %{arm}}
- virtualplanet
ExclusiveArch: %{fpc_arches}
- vrq
ExclusiveArch: %{ix86} x86_64
- warsow
ExclusiveArch: %{ix86} x86_64 %{arm}
- warsow-data
ExclusiveArch: %{ix86} x86_64 %{arm}
- webkit-sharp
ExclusiveArch: %mono_arches
- wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExclusiveArch: %{ix86} %{arm}
- winetricks
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- wiredtiger
ExclusiveArch: x86_64 aarch64 ppc64le
- wraplinux
ExclusiveArch: %{ix86} x86_64
- wxMaxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
- x86info
ExclusiveArch: %{ix86} x86_64
- xen
ExclusiveArch: %{ix86} x86_64 armv7hl aarch64
- xmlada
ExclusiveArch: %{GPRbuild_arches}
- xorg-x11-drv-armsoc
ExclusiveArch: %{arm} aarch64
- xorg-x11-drv-freedreno
ExclusiveArch: %{arm} aarch64
- xorg-x11-drv-geode
ExclusiveArch: %{ix86}
- xorg-x11-drv-intel
ExclusiveArch: %{ix86} x86_64 ia64
- xorg-x11-drv-omap
ExclusiveArch: %{arm}
- xorg-x11-drv-openchrome
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-opentegra
ExclusiveArch: %{arm}
- xorg-x11-drv-vesa
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-vmware
ExclusiveArch: %{ix86} x86_64 ia64
- xsp
ExclusiveArch: %mono_arches
- xsupplicant
ExclusiveArch: %{ix86} x86_64 ppc %{power64}
- ycssmin
ExclusiveArch: %{nodejs_arches} noarch
- zeromq-ada
ExclusiveArch: %{GNAT_arches}
- zlib-ada
ExclusiveArch: %{GNAT_arches}
6 years, 10 months
[Report] Packages Restricting Arches
by root
List of packages currently excluding arches (1872)
===========================================
- 0ad
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- GtkAda
ExclusiveArch: %{GNAT_arches}
- GtkAda3
ExclusiveArch: %{GNAT_arches}
- LuxRender
ExclusiveArch: x86_64
- OpenTK
ExclusiveArch: %mono_arches
- PragmARC
ExclusiveArch: %{GNAT_arches}
- R-DynDoc
ExclusiveArch: armv7, ppc, go_arch
- RdRand
ExclusiveArch: %{ix86} x86_64
- YafaRay
ExclusiveArch: %{ix86} x86_64
- aboot
ExclusiveArch: alpha
- acpid
ExclusiveArch: ia64 x86_64 %{ix86} %{arm} aarch64
- ahven
ExclusiveArch: %{GNAT_arches}
- alleyoop
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x %{arm} aarch64
- american-fuzzy-lop
ExclusiveArch: %{ix86} x86_64
- anet
ExclusiveArch: %{GNAT_arches}
- apmd
ExclusiveArch: %{ix86}
- apmud
ExclusiveArch: ppc
- arm-boot-config
ExclusiveArch: %{arm}
- arm-trusted-firmware
ExclusiveArch: aarch64
- atomic
ExclusiveArch: i386 i486 i586 i686 pentium3 pentium4 athlon geode x86_64 armv3l armv4b armv4l armv4tl armv5tel armv5tejl armv6l armv6hl armv7l armv7hl armv7hnl aarch64 ppc64le s390x mips mipsel mipsr6 mipsr6el mips64 mips64el mips64r6 mips64r6el
ExclusiveArch: x86_64 ppc64le
- aunit
ExclusiveArch: %GNAT_arches
- avgtime
ExclusiveArch: %{ldc_arches}
- aws
ExclusiveArch: %GNAT_arches
- banshee
ExclusiveArch: %{mono_arches}
- banshee-community-extensions
ExclusiveArch: %ix86 x86_64 ppc ppc64 ia64 %{arm} sparcv9 alpha s390x
- bareftp
ExclusiveArch: %{mono_arches}
- bcc
ExclusiveArch: x86_64
- bcm283x-firmware
ExclusiveArch: %{arm} aarch64
- beignet
ExclusiveArch: x86_64 %{ix86}
- berusky2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- biosdevname
ExclusiveArch: %{ix86} x86_64 ia64
- bless
ExclusiveArch: %mono_arches
- boo
ExclusiveArch: %{mono_arches}
- buildah
ExclusiveArch: x86_64 aarch64 ppc64le
- bwa
ExclusiveArch: x86_64
- cadvisor
ExclusiveArch: %{ix86} x86_64 aarch64 ppc64le
- calamares
ExclusiveArch: %{ix86} x86_64
- cargo
ExclusiveArch: %{rust_arches}
- carto
ExclusiveArch: %{nodejs_arches} noarch
- ccdciel
ExclusiveArch: %{fpc_arches}
- cdcollect
ExclusiveArch: %{mono_arches}
- ceph
ExclusiveArch: x86_64 aarch64 ppc64 ppc64le
ExclusiveArch: x86_64 aarch64
- chromium
ExclusiveArch: x86_64 i686
- chromium-native_client
ExclusiveArch: x86_64
- cjdns
ExclusiveArch: %{nodejs_arches}
- cmospwd
ExclusiveArch: %{ix86} x86_64
- coffee-script
ExclusiveArch: %{nodejs_arches} noarch
- colorful
ExclusiveArch: %{arm} %{ix86} x86_64 ppc ppc64
- compat-gcc-296
ExclusiveArch: %{ix86} ia64 ppc
- consul
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- containernetworking-cni
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- copr-dist-git
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le powerpc64le s390x %{mips}
- corosync
ExclusiveArch: i686 x86_64
- cpuid
ExclusiveArch: %{ix86} x86_64
- cqrlog
ExclusiveArch: %{fpc_arches}
- crash
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- cri-o
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- criu
ExclusiveArch: x86_64 %{arm} ppc64le aarch64
ExclusiveArch: x86_64 ppc64le
- cryptlib
ExclusiveArch: x86_64 %{ix86} %{arm}
- cryptobone
ExclusiveArch: x86_64 %{ix86} %{arm}
- daq
ExclusiveArch: x86_64 aarch64
- darktable
ExclusiveArch: x86_64 aarch64
- dbus-sharp
ExclusiveArch: %mono_arches
- dbus-sharp-glib
ExclusiveArch: %mono_arches
- dbxtool
ExclusiveArch: i386 x86_64 aarch64
- derelict
ExclusiveArch: %{ldc_arches}
- direnv
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- dlm
ExclusiveArch: i686 x86_64
- dmidecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- dmtcp
ExclusiveArch: %ix86 x86_64 aarch64
- docco
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- docker
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- docker-anaconda-addon
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- docker-distribution
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- docker-latest
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- dolphin-emu
ExclusiveArch: x86_64 armv7l aarch64
- dpdk
ExclusiveArch: x86_64 i686 aarch64 ppc64le
- dssi-vst
ExclusiveArch: %{ix86} x86_64
- dustmite
ExclusiveArch: %{ldc_arches}
- dyninst
ExclusiveArch: %{ix86} x86_64 ppc ppc64
- e3
ExclusiveArch: %{ix86} x86_64
- edac-utils
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64}
- edb
ExclusiveArch: %{ix86} x86_64
- edk2
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- efibootmgr
ExclusiveArch: %{ix86} x86_64 aarch64 arm
- efivar
ExclusiveArch: %{ix86} x86_64 aarch64
- elasticdump
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- elk
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- embree
ExclusiveArch: x86_64
- envytools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- etcd
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- exciting
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: x86_64 %{ix86} aarch64 %{arm} %{power64}
- expresso
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- extlinux-bootloader
ExclusiveArch: %{arm} aarch64
- fcitx-libpinyin
ExclusiveArch: %{qt5_qtwebengine_arches}
- fedora-dockerfiles
ExclusiveArch: %{go_arches}
- fedora-gnat-project-common
ExclusiveArch: noarch %{GNAT_arches}
- fence-virt
ExclusiveArch: i686 x86_64
- fes
ExclusiveArch: x86_64
- ffcall
ExclusiveArch: %{ffcall_arches}
- firmware-addon-dell
ExclusiveArch: x86_64 ia64 %{ix86}
- flannel
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- florist
ExclusiveArch: %GPRbuild_arches
- fpc
ExclusiveArch: %{arm} %{ix86} x86_64 ppc ppc64
- frysk
ExclusiveArch: %{ix86} x86_64 ppc64
- fst
ExclusiveArch: i686
- fwupdate
ExclusiveArch: x86_64 %{ix86} aarch64
- ga
ExclusiveArch: %{ix86} x86_64
- gbrainy
ExclusiveArch: %mono_arches
- gdata-sharp
ExclusiveArch: %mono_arches
- gela-asis
ExclusiveArch: %{GNAT_arches}
- ghdl
ExclusiveArch: %{GNAT_arches}
- gio-sharp
ExclusiveArch: %mono_arches
- gir-to-d
ExclusiveArch: %{ldc_arches}
- giver
ExclusiveArch: %{mono_arches}
- gkeyfile-sharp
ExclusiveArch: %mono_arches
- gl3n
ExclusiveArch: %{ldc_arches}
- glibc32
ExclusiveArch: x86_64 ppc64 s390x
- glide
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gmqcc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- gnatcoll
ExclusiveArch: %GPRbuild_arches
- gnome-boxes
ExclusiveArch: x86_64
- gnome-desktop-sharp
ExclusiveArch: %mono_arches
- gnome-do
ExclusiveArch: %mono_arches
- gnome-guitar
ExclusiveArch: %{mono_arches}
- gnome-keyring-sharp
ExclusiveArch: %mono_arches
- gnome-rdp
ExclusiveArch: %{mono_arches}
- gnome-sharp
ExclusiveArch: %mono_arches
- gnome-subtitles
ExclusiveArch: %mono_arches
- gnu-efi
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- gnu-smalltalk
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le
- go-bindata
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- go-compilers
ExclusiveArch: %{go_arches}
- go-i18n
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- godep
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gofed
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}
- golang
ExclusiveArch: %{golang_arches}
- golang-bitbucket-kardianos-osext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-bitbucket-ww-goautoneg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-10gen-openssl
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- golang-github-3rf-mongo-lint
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-AdRoll-goamz
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-AudriusButkevicius-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-AudriusButkevicius-go-nat-pmp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-AudriusButkevicius-pfilter
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-Azure-azure-sdk-for-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-BurntSushi-toml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-BurntSushi-toml-test
ExclusiveArch: %{go_arches}
- golang-github-DATA-DOG-go-sqlmock
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-DataDog-datadog-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-MakeNowJust-heredoc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Masterminds-semver
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Masterminds-vcs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-PuerkitoBio-purell
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-PuerkitoBio-urlesc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-RangelReale-osin
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-RangelReale-osincli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-SeanDolphin-bqschema
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-Shopify-sarama
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Shopify-toxiproxy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-Sirupsen-logrus
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-abbot-go-http-auth
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-agl-ed25519
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-akrennmair-gopcap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-appc-spec
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-circbuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-go-metrics
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-go-radix
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-armon-gomdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-asaskevich-govalidator
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-auth0-go-jwt-middleware
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-aws-aws-sdk-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-beorn7-perks
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bep-gitmap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bep-inflect
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bgentry-speakeasy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bkaradzic-go-lz4
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-blang-semver
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bmizerany-assert
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-bmizerany-pat
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-bmizerany-perks
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-boltdb-bolt
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bradfitz-http2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-bugsnag-bugsnag-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-bugsnag-panicwrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-calmh-du
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-calmh-luhn
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-calmh-xdr
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-ccding-go-stun
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cenkalti-backoff
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-chaseadamsio-goorgeous
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cheggaaa-pb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-chmduquesne-rollinghash
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-circonus-labs-circonus-gometrics
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-circonus-labs-circonusllhist
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cloudfoundry-incubator-candiedyaml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cockroachdb-cmux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-codegangsta-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-codegangsta-negroni
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-collectd-go-collectd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-gexpect
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-etcd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-iptables
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-coreos-go-log
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-oidc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-coreos-go-semver
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-coreos-go-systemd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-coreos-pkg
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cpuguy83-go-md2man
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-cznic-b
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-fileutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-internal
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-mathutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-sortutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-cznic-strutil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-d2g-dhcp4
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-d2g-dhcp4client
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-d4l3k-messagediff
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-davecgh-go-spew
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-daviddengcn-go-colortext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-dchest-cssmin
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-denverdino-aliyungo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-dgnorton-goback
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-dgrijalva-jwt-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-digitalocean-godo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-go-connections
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-go-units
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-libcontainer
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-libkv
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-libtrust
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docker-spdystream
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-docopt-docopt-go
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-dustin-go-humanize
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-dvsekhvalnov-jose2go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-eapache-go-resiliency
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-eapache-queue
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-edsrzf-mmap-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-eknkc-amber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-elazarl-go-bindata-assetfs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-emicklei-go-restful
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-endophage-gotuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-evanphx-json-patch
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-fatih-pool
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-fortytw2-leaktest
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-fsnotify-fsnotify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-fsouza-go-dockerclient
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-garyburd-redigo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gengo-grpc-gateway
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-getsentry-raven-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ghodss-yaml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-glacjay-goini
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-asn1-ber-asn1-ber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-errors-errors
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-fsnotify-fsnotify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-go-ini-ini
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-go-ldap-ldap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-macaron-inject
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-go-mgo-mgo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-sql-driver-mysql
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-go-tomb-tomb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gobwas-glob
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-godbus-dbus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-appengine
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-glog
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-groupcache
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-golang-sys
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-golang-time
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-blas
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-floats
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-graph
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-internal
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-lapack
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gonum-matrix
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-google-btree
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-google-go-github
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-google-go-querystring
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-google-gofuzz
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-goraft-raft
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-context
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-handlers
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-mux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-securecookie
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-sessions
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gorilla-websocket
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-gosexy-gettext
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-grpc-ecosystem-go-grpc-prometheus
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-grpc-ecosystem-grpc-gateway
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-grpc-grpc-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-consul-migrate
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-errwrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-checkpoint
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-cleanhttp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-immutable-radix
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-memdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-msgpack
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-multierror
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-retryablehttp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-sockaddr
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-go-syslog
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-go-uuid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-golang-lru
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-hcl
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-hil
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-hashicorp-logutils
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-mdns
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-memberlist
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-net-rpc-msgpackrpc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-raft
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-raft-boltdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-raft-mdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-scada-client
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-serf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hashicorp-yamux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-hawkular-hawkular-client-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-howeyc-gopass
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-imdario-mergo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-inconshreveable-mousetrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-inconshreveable-muxado
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-influxdb-hyperleveldb-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-influxdb-influxdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-influxdb-rocksdb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jackpal-gateway
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jacobsa-oglematchers
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jessevdk-go-flags
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jfrazelle-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jinzhu-gorm
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jmespath-go-jmespath
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jmhodges-levigo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-jonboulle-clockwork
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-jtolds-gls
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-juju-ratelimit
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-julienschmidt-httprouter
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-karlseguin-ccache
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-karlseguin-expect
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-kballard-go-shellquote
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kdar-factorlog
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kimor79-gollectd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-klauspost-cpuid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-klauspost-crc32
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-klauspost-reedsolomon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-knieriem-markdown
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kr-fs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-kr-pretty
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kr-pty
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kr-text
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-kubernetes-heapster
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-kyokomi-emoji
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-lib-pq
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-lpabon-godbc
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-lsegal-gucumber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-magiconair-properties
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mattn-go-isatty
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mattn-go-runewidth
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mattn-go-sqlite3
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-matttproud-golang_protobuf_extensions
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mesos-mesos-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-miekg-dns
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-miekg-mmark
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-miekg-pkcs11
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-milochristiansen-axis2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-milochristiansen-lua
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-minio-sha256-simd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mistifyio-go-zfs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mitchellh-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-copystructure
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-go-homedir
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mitchellh-go-wordwrap
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-goamz
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mitchellh-mapstructure
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mitchellh-reflectwalk
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-mreiferson-go-httpclient
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-mvo5-goconfigparser
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mvo5-uboot-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-mxk-go-flowrate
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ncw-swift
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-noahdesu-go-ceph
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ojii-gettext.go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-olekukonko-tablewriter
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-olekukonko-ts
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-olivere-elastic
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-onsi-ginkgo
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-onsi-gomega
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-opencontainers-runtime-spec
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-opencontainers-specs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-openshift-go-json-rest
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-openshift-go-systemd
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-openshift-openshift-sdn
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-oschwald-geoip2-golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-oschwald-maxminddb-golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pelletier-go-buffruneio
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-pelletier-go-toml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-petar-GoLLRB
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-peterh-liner
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-petermattis-goid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pkg-errors
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pkg-profile
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-pkg-sftp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-pmezard-go-difflib
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-client_golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-client_model
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-prometheus-common
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-procfs
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-prometheus-prometheus
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-racker-perigee
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-rackspace-gophercloud
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-rakyll-globalconf
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-rakyll-pb
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-rakyll-statik
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-rcrowley-go-metrics
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-remyoudompheng-bigfft
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-russross-blackfriday
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-ryanuber-columnize
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-samalba-dockerclient
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-samuel-go-zookeeper
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-sasha-s-go-deadlock
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-seccomp-libseccomp-golang
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-shiena-ansicolor
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-shurcooL-sanitized_anchor_name
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-skarademir-naturalsort
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-skratchdot-open-golang
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-skynetservices-skydns
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-smartystreets-assertions
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-smartystreets-go-aws-auth
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-smartystreets-goconvey
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spacejam-loghisto
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-spacemonkeygo-flagfile
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-spacemonkeygo-spacelog
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-spf13-afero
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-cast
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-cobra
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-spf13-fsync
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-jWalterWeatherman
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-nitro
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-spf13-pflag
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-spf13-viper
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-stathat-go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-stevvooe-resumable
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-stretchr-objx
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-stretchr-testify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-syndtr-gocapability
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-syndtr-goleveldb
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-syndtr-gosnappy
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-tent-http-link-go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-thejerf-suture
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-tonnerre-golang-pretty
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-ugorji-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-urfave-cli
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-vaughan0-go-ini
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-vbatts-tar-split
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vishvananda-netlink
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} aarch64 x86_64 %{arm}}
- golang-github-vishvananda-netns
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vitrun-qart
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-vjeantet-asn1-ber
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-vmware-govcloudair
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-github-wsxiaoys-terminal
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonpointer
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonreference
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xeipuuv-gojsonschema
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xiang90-probing
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-xtaci-kcp-go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-xtaci-smux
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yosssi-ace
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yosssi-gohtml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-github-yvasiyarov-go-metrics
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-yvasiyarov-gorelic
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-yvasiyarov-newrelic_platform_go
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-github-zillode-notify
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-google-golangorg-cloud
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-gcfg
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-go-crypto
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-go-decimal-inf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-go-exp
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-googlecode-goauth2
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-gogoprotobuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-gomock
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-google-api-client
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-goprotobuf
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-log4go
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-net
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-sqlite
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
ExclusiveArch: %{go_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- golang-googlecode-text
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-tools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-googlecode-uuid
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-gopkg-check
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-gopkg-go-check-check
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-gopkg-go-macaroon-macaroon
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- golang-gopkg-retry-v1
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golang-gopkg-yaml
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- golint
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gomtree
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- gotags
ExclusiveArch: %{go_arches}
- gotun
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: x86_64
- gprbuild
ExclusiveArch: %{GPRbuild_arches} %{bootstrap_arch}
- gprolog
ExclusiveArch: x86_64 %{ix86} ppc alpha
- gsf-sharp
ExclusiveArch: %mono_arches
- gtk-sharp-beans
ExclusiveArch: %mono_arches
- gtk-sharp2
ExclusiveArch: %mono_arches
- gtk-sharp3
ExclusiveArch: %{mono_arches}
- gtkd
ExclusiveArch: %{ldc_arches}
- gudev-sharp
ExclusiveArch: %mono_arches
- hedgewars
ExclusiveArch: %{fpc_arches}
- heketi
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- hub
ExclusiveArch: %{go_arches}
- hyena
ExclusiveArch: %{mono_arches}
- hyperscan
ExclusiveArch: x86_64
- hyperv-daemons
ExclusiveArch: i686 x86_64
- icaro
ExclusiveArch: %{ix86} %{arm} x86_64 noarch
- ikarus
ExclusiveArch: %{ix86}
- imvirt
ExclusiveArch: %{ix86} x86_64 ia64
- indistarter
ExclusiveArch: %{fpc_arches}
- infinipath-psm
ExclusiveArch: x86_64
- intel-cmt-cat
ExclusiveArch: x86_64 i686 i586
ExclusiveArch: x86_64 i686 i586
- ioport
ExclusiveArch: %{ix86} x86_64
- ipw2100-firmware
ExclusiveArch: noarch i386 x86_64
- ipw2200-firmware
ExclusiveArch: noarch i386 x86_64
- ispc
ExclusiveArch: %{arm} %{ix86} x86_64
- iwyu
ExclusiveArch: %{ix86} x86_64
- ixpdimm_sw
ExclusiveArch: x86_64
- jake
ExclusiveArch: %{nodejs_arches} noarch
- jasmine-node
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- java-1.8.0-openjdk-aarch32
ExclusiveArch: %{arm}
- julia
ExclusiveArch: %{ix86} x86_64
- keepass
ExclusiveArch: %{mono_arches}
- kernel
ExclusiveArch: %{all_x86} x86_64 ppc64 ppc64p7 s390x %{arm} aarch64 ppc64le
- knot-resolver
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- kompose
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 aarch64 %{arm}}
- kosmtik
ExclusiveArch: %{nodejs_arches} noarch
- kubernetes
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- latrace
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64}
- lazarus
ExclusiveArch: %{fpc_arches}
- ldc
ExclusiveArch: %{ldc_arches}
- libbsr
ExclusiveArch: %{power64}
- libclc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 %{power64} s390x
- libcxl
ExclusiveArch: %{power64}
- libflatarray
ExclusiveArch: %{ix86} x86_64
- libhfi1
ExclusiveArch: x86_64
- libica
ExclusiveArch: s390 s390x
- libinvm-cim
ExclusiveArch: x86_64
- libinvm-cli
ExclusiveArch: x86_64
- libinvm-i18n
ExclusiveArch: x86_64
- libipathverbs
ExclusiveArch: x86_64
- libipt
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- libjingle
ExclusiveArch: %{ix86} x86_64 %{arm}
- libmfx
ExclusiveArch: %{ix86} x86_64
- libpsm2
ExclusiveArch: x86_64
- librtas
ExclusiveArch: ppc %{power64}
- libseccomp
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 mipsel mips64el ppc64 ppc64le s390 s390x
- libservicelog
ExclusiveArch: ppc %{power64}
- libsmbios
ExclusiveArch: x86_64 ia64 %{ix86}
- libunwind
ExclusiveArch: %{arm} aarch64 hppa ia64 mips ppc %{power64} %{ix86} x86_64
- libvmi
ExclusiveArch: x86_64
- libvpd
ExclusiveArch: ppc %{power64}
- libxsmm
ExclusiveArch: x86_64
- libzfcphbaapi
ExclusiveArch: s390 s390x
- lldb
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- lodash
ExclusiveArch: %{nodejs_arches} noarch
- log4net
ExclusiveArch: %mono_arches
- lrmi
ExclusiveArch: %{ix86}
- lsvpd
ExclusiveArch: ppc %{power64}
- luajit
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mactel-boot
ExclusiveArch: x86_64
- marked
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- matreshka
ExclusiveArch: %GPRbuild_arches
- maven-eclipse-plugin
ExclusiveArch: %{ix86} x86_64
- maxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- mcelog
ExclusiveArch: i686 x86_64
- memkind
ExclusiveArch: x86_64
- memtest86+
ExclusiveArch: %{ix86} x86_64
- mesos
ExclusiveArch: x86_64
- microcode_ctl
ExclusiveArch: %{ix86} x86_64
- micropython
ExclusiveArch: %{arm} %{ix86} x86_64
- mine_detector
ExclusiveArch: %{GNAT_arches}
- minetest
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- mingw-wine-gecko
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- mkbootdisk
ExclusiveArch: %{ix86} sparc sparc64 x86_64
- mnemosyne
ExclusiveArch: noarch %{qt5_qtwebengine_arches}
- mocha
ExclusiveArch: %{nodejs_arches} noarch
- mod_mono
ExclusiveArch: %mono_arches
- module-build-service
ExclusiveArch: %{ix86} x86_64
- mokutil
ExclusiveArch: %{ix86} x86_64 aarch64
- mongo-tools
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- mono
ExclusiveArch: %mono_arches
- mono-addins
ExclusiveArch: %mono_arches
- mono-basic
ExclusiveArch: %{mono_arches}
- mono-bouncycastle
ExclusiveArch: %mono_arches
- mono-cecil
ExclusiveArch: %mono_arches
- mono-cecil-flowanalysis
ExclusiveArch: %mono_arches
- mono-debugger
ExclusiveArch: %ix86 x86_64
- mono-reflection
ExclusiveArch: %mono_arches
- mono-tools
ExclusiveArch: %mono_arches
- mono-zeroconf
ExclusiveArch: %mono_arches
- monobristol
ExclusiveArch: %{mono_arches}
- monodevelop
ExclusiveArch: %mono_arches
- monodevelop-debugger-gdb
ExclusiveArch: %{mono_arches}
- monosim
ExclusiveArch: %mono_arches
- mrrescue
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- msr-tools
ExclusiveArch: %{ix86} x86_64
- mustache-d
ExclusiveArch: %{ldc_arches}
- mysql-connector-net
ExclusiveArch: %{mono_arches}
- nacl-arm-binutils
ExclusiveArch: x86_64
- nacl-arm-gcc
ExclusiveArch: x86_64
- nacl-arm-newlib
ExclusiveArch: x86_64
- nacl-binutils
ExclusiveArch: x86_64
- nacl-gcc
ExclusiveArch: x86_64
- nacl-newlib
ExclusiveArch: x86_64
- nant
ExclusiveArch: %mono_arches
- nbc
ExclusiveArch: %{fpc_arches}
- ndesk-dbus
ExclusiveArch: %{mono_arches}
- ndesk-dbus-glib
ExclusiveArch: %{mono_arches}
- newtonsoft-json
ExclusiveArch: %{mono_arches}
- nini
ExclusiveArch: %{mono_arches}
- node-gyp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs
ExclusiveArch: %{nodejs_arches}
- nodejs-abbrev
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-accepts
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-acorn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-after
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-agent-base
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-agentkeepalive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ain2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-alter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-cyan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-font
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-green
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-magenta
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ansi-styles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-wrap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansi-yellow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansicolors
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansidiff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ansistyles
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-any-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-append-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-aproba
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-archiver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-archiver-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-archy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-are-we-there-yet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-argparse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-argsparser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arr-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arr-exclude
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-arr-flatten
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arr-union
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-differ
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-filter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-find-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-flatten
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-foreach
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-reduce
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-array-union
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-uniq
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-array-unique
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-arrify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-as-number
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-asap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ascii-tree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ascli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-asn1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assert-plus
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assertion-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-assume
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ast-traverse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ast-types
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-astral
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-astral-angular-annotate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-astral-pass
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-array-reduce
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-async-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-each
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-queue
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-async-some
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws-sign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-aws-sign2
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-babel-runtime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-backbone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-balanced-match
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-base64-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-base64-url
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-basic-auth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-basic-auth-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-basic-auth-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-batch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bcrypt
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-beeper
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-benchmark
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-better-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bignumber-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bindings
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-block-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bluebird
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-body-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-boolbase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-boom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-brace-expansion
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-breakable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-browser-request
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buf-compare
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-crc32
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-equal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-buffer-shims
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buffer-writer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-buffertools
ExclusiveArch: %{nodejs_arches}
- nodejs-bufferutil
ExclusiveArch: %{nodejs_arches}
- nodejs-builtin-modules
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-builtins
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-bundle-dependencies
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bunker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bunyan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-burrito
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-bytes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-caching-transform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-call-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-caller-callsite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caller-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-callsite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-callsites
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camel-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camelcase
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-camelcase-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caniuse-db
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-capture-stack-trace
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-carrier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-caseless
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-connect-middleware
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chai-passport-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chainsaw
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chalk
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-change-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-char-spinner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-character-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-charm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-child-process-close
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chmodr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chownr
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-chrono
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cjson
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clean-css
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-clean-yaml-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cli-spinner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cliui
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-clone-stats
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-closure-compiler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cls
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cmd-shim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-co
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-co-mocha
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-code-point-at
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-codemirror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-collections
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-colors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-colour
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-columnify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-combined-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commander
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-commondir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-commoner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-commonmark
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-component-emitter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-component-indexof
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-compress-commons
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-compressible
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-compression
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-concat-map
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-concat-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-config-chain
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-connect-livereload
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-connect-timeout
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-console-browserify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-console-dot-log
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-constant-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-constantinople
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-content-disposition
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-content-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-convert-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookie-jar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookie-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cookie-signature
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cookiejar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-core-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-core-util-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-couch-login
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-coveralls
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-crc32-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-create-error-class
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-cross-spawn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cross-spawn-async
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cryptiles
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-css
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-select
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-css-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-css-what
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-csscomb-core
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csslint
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cssom
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csurf
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-generate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-csv-spectrum
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ctype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-currently-unhandled
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-cycle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-d
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dashdash
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-data-uri-to-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-date-now
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dateformat
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-debug
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-debuglog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-decamelize
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-decompress-response
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-eql
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-equal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deep-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deep-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deeper
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-default-require-extensions
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-defaults
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defence
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-defence-cli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-deferred
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-define-properties
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defined
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-defs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-degenerator
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-del
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-delayed-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-delegates
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dep-graph
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-depd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dependency-lister
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-deprecated
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-destroy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-detect-file
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-detective
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dezalgo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-difflet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-difflib
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-docopt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-doctrine
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dom-serializer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domelementtype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domhandler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-domutils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dot-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dotfile-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dreamopt
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-dryice
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-dtree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexer2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-duplexer3
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duplexify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-duration
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-each
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-each-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ebnf-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ecstatic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-editor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ee-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ejs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-emojione
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-encodeurl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-encoding
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-end-of-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-entities
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-error-ex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-errorhandler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-errs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es-abstract
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es-to-primitive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es5-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es5-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-iterator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-es6-set
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-symbol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-es6-weak-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-escape-html
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escape-regexp-component
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-escape-string-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-escodegen
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima-fb
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-esprima-harmony-jscs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-esrecurse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estraverse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-estraverse-fb
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-esutils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-etag
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-event-emitter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-event-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-eventemitter2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-eventemitter3
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-events
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-events-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-exit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expand-brackets
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expand-tilde
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-expect-dot-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-express
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-express-session
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extend
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extend-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extglob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-extsprintf
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-eyes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fancy-log
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-far
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fast-levenshtein
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-faye-websocket
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fd
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fd-slicer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fg-lodash
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-figures
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-file-entry-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-file-sync-cmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-file-uri-to-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-filed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-filelist
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-filename-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fileset
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fill-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fill-range
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-finalhandler
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-find-cache-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-find-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-findup-sync
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-first-chunk-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flagged-respawn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-flot
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fn-dot-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fn-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-follow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-for-in
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-for-own
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-foreach
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-forever-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-form-data
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-formatio
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-formidable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-forwarded
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-freetree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fresh
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-from2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-exists-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-fs-ext
ExclusiveArch: %{nodejs_arches}
- nodejs-fs-extra
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-vacuum
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs-write-stream-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fs2
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream-ignore
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-fstream-npm
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ftp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-function-bind
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gauge
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gaze
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gdal
ExclusiveArch: %{nodejs_arches}
- nodejs-generate-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generate-object-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-generic-pool
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-get-pkg-repo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-port
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-stdin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-get-uri
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-getobject
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gettext-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-github-url-from-git
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-github-url-from-username-repo
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glob
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glob-base
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-glob-parent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-global-prefix
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globals
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globby
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-globule
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-glogg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gonzales-pe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-got
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-graceful-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-graceful-readlink
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grip
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-growl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-angular-templates
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-banner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-cli
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-compare-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-clean
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-concat
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-connect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-copy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-csslint
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-cssmin
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-htmlmin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-internal
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-less
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-nodeunit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-requirejs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-contrib-uglify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-contrib-watch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-git-authors
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-html-validation
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-init
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-known-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-log
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-log-utils
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-legacy-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-lib-contrib
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-saucelabs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-sed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-simple-mocha
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-grunt-util-args
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-process
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-util-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-grunt-wrap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-gulplog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-gzip-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-handlebars
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-har-validator
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-gulplog
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-has-unicode
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-has-yarn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hash_file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hawk
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-he
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-heap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-highlight-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hock
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hoek
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-hooker
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-hosted-git-info
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-html-minifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-htmlparser2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-errors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-http-proxy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-http-server
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-http-signature
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-https-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-humanize-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-i
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-i18n-transform
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-i2c
ExclusiveArch: %{nodejs_arches}
- nodejs-iconv
ExclusiveArch: %{nodejs_arches}
- nodejs-iconv-lite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-iferr
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ignore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-imurmurhash
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-indent-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-infinity-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inflight
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inherit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-inherits
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inherits1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ini
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-init-package-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-inline-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-install
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-int64-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-interpret
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-into-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-invert-kv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ip
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-irregular-plurals
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-absolute
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-arrayish
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-arrow-function
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-boolean-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-builtin-module
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-callable
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-date-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-dotfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-equal-shallow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-extendable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-extglob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-finite
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-fullwidth-code-point
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-generator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-generator-fn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-generator-function
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-lower-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-my-json-valid
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-number
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-number-object
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-observable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-path-cwd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-path-in-cwd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-path-inside
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-plain-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-plain-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-primitive
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-property
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-redirect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-regexp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-relative
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-retry-allowed
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-symbol
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-text-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-typedarray
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-unc-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-upper-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-url
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-utf8
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-is-valid-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-is-windows
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isarray
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-isexe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-iso8601
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isobject
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isodate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-isstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-istanbul
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jade
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jasmine-growl-reporter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jasmine-reporters
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jison
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jison-lex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jju
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joose
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joosex-namespace-depended
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-joosex-simplerequest
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-js-base64
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-js-yaml
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jschardet
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jscoverage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jshint
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-json-diff
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-localizer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-json-parse-helpfulerror
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-stable-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-json-stringify-safe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jsonify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jsonm
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonparse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonpointer
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-jsonselect
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-jwt-simple
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-keypress
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-kind-of
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-klaw
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-langdetect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-latest-version
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lazystream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lcid
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lcov-parse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-leaflet
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leaflet-formbuilder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leaflet-hash
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-leche
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-left-pad
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-less
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-levn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lex-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-libxmljs
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-line-reader
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-linkify-it
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-load-grunt-tasks
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-load-json-file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-locate-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lockfile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-log-driver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-log-symbols
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lolex
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-loud-rejection
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-lower-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lower-case-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lowercase-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lru-cache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-lru-queue
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ltx
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-make-arrow-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-make-generator-function
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-obj
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-map-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mapnik
ExclusiveArch: %{nodejs_arches}
- nodejs-mapnik-pool
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mapnik-vector-tile
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-markdown
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-markdown-it-testgen
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-max-timeout
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-maxmin
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mbtiles
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-md5-hex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-md5-o-matic
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mdurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-media-typer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-memoizee
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-meow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-merge-descriptors
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-merge-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-metascript
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-method-override
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-methods
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-millstone
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mime-db
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mime-types
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mimeparse
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-minimatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-minimist
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-minstache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mkdirp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mkfiletree
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mock-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-module-not-found-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-moment
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mongodb
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mongodb-core
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-monocle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-morgan
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-muffin
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-multiline
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-multimatch
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-multiparty
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mustache
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mute-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mv
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-mysql
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-mz
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nan0
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nan1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nano
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-native-or-bluebird
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ncp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-needle
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-negotiator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nested-error-stacks
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-netmask
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-next
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-next-tick
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-node-expat
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-node-int64
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-markdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-print
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-static
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-status-codes
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-node-stringprep
ExclusiveArch: %{nodejs_arches}
ExclusiveArch: %{ix86} x86_64 %{arm}
- nodejs-node-uuid
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-nomnom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nopt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nopt-usage
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-noptify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-normalize-git-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-normalize-package-data
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-normalize-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-cache-filename
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-install-checks
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-license
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-npm-package-arg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-registry-client
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-npm-run-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-stats
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npm-user-validate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-npmlog
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nsp-api
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nsp-audit-shrinkwrap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-nth-check
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-number-is-nan
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-numeral
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oauth-sign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-assign
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-dot-entries
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-dot-omit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-object-inspect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-object-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-on-finished
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-on-headers
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-once
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-onetime
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-only-shallow
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-oop
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-opener
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-opn
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-optionator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-options
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-optjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-opts
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-orchestrator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ordered-read-streams
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-os-homedir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-locale
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-os-tmpdir
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-osenv
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-output-file-sync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-p-finally
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-is-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-limit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-p-locate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pac-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pac-resolver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-package
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-package-info
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-package-json
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-package-license
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-packaging
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-packet-reader
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pad
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pad-left
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-paperboy
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-param-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-github-repo-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-parse-json
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parse-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-parserlib
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-parseurl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pascal-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth1
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-oauth2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-passport-strategy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-array
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-path-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-exists
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-is-absolute
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-is-inside
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-key
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path-to-regexp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-path-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-path2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pathval
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pause
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pause-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pedding
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pegjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pem
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pff
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pg-connection-string
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-escape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pg-types
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pgpass
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pinkie
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pinkie-promise
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pkg-dir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pkg-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pkginfo
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-platform
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-plur
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-portfinder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-portscanner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-posix-getopt
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-bytea
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-date
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-postgres-interval
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-prelude-ls
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-prepend-http
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-preserve
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-bytes
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-hrtime
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pretty-ms
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-private
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-process-nextick-args
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-progress-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-promise
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-promises-aplus-tests
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-prompt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-promzard
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-propagate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-proto-list
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proxy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-proxyquire
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pruddy-error
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-pseudomap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-pubcontrol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-q
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-q-io
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-qs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-qtdatastream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-queue-async
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-qunit-extras
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-qunitjs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rainbowsocks
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-randomatic
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-range-parser
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-raw-body
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rc
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-re-emitter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-all-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-cmd-shim
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-dir-files
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-file
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-installed
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-package-json
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-package-tree
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-read-pkg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-read-pkg-up
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readable-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-readdir-scoped-modules
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-readdirp
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-realize-package-specifier
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-recast
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rechoir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-redent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-reduce-component
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-regenerator
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-regex-cache
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-registry-url
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-relateurl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-repeat-element
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-repeat-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-repeating
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-repl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-replace
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-replace-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-replace-require-self
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-request
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-requestretry
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-cs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-require-directory
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-inject
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-uncached
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-require-yaml
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-requirejs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-requires-port
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-from
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-resolve-pkg
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-response-time
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-resumer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-retry
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-revalidator
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rewire
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rhea
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-rimraf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-rndm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ronn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-run-parallel-limit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-runforcover
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-safe-buffer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-safe-json-stringify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-safecb
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-samsam
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sauce-tunnel
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-saucelabs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sax
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-scmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-secure-random
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-semver
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-send
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sentence-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-seq
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sequencify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serialize-error
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serve-index
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-serve-static
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-set-getter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-set-immediate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-set-immediate-shim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-setimmediate
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sha
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-shelljs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-shelljs-nodecli
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-should
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-should-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-format
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-http
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-should-type
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-showdown
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sigmund
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-signal-exit
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-silent-npm-registry-client
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-assert
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-simple-fmt
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-simple-is
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-single-line-log
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sinon
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sinon-restore
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-slide
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-smart-buffer
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-snake-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-snockets
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sntp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-socks-client
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-socks-proxy-agent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sort-keys
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sorted-object
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-source-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-source-map-fixtures
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-sparkles
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-spdx-correct
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-exceptions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-expression-parse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-spdx-license-ids
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-speedometer
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-split
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sprintf
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sprintf-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-sqlite3
ExclusiveArch: %{nodejs_arches}
- nodejs-srs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-st
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stack-trace
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stack-utils
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-static-favicon
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-statuses
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-std-mocks
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-combiner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-consume
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-counter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-equal
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-reduce
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-replace
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stream-shift
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-spigot
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stream-to-array
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-streamsink
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-streamtest
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string-dot-prototype-dot-repeat
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-string-dot-prototype-dot-trim
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-string-width
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-string_decoder
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringmap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringscanner
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringset
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-stringstream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-ansi
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-bom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-bom-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-indent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strip-json-comments
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-strip-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-strscanner
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-stylus
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-success-symbol
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-superagent
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-superagent-proxy
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-supertest
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-supervisor
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-supports-color
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-swap-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-symbol-observable
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tad
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tap-mocha-reporter
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tap-parser
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tape
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tar-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-temp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-temporary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern-cordovajs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tern-liferay
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-terst
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-test
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-testjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-testswarm
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-text-extensions
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-text-table
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-thenify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thenify-all
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-through
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-through2
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-through2-filter
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-thunkify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tildify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tilejson
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tilelive
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tilelive-mapnik
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tiletype
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-time-stamp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-timed-out
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-timers-ext
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tiny-lr-fork
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-title-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tlds
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tmatch
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tmp
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-to-absolute-glob
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-to-object-path
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tough-cookie
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tracejs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-transformers
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-traverse
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-treeify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-trim-newlines
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-try-open
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tryor
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-tsscmp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ttembed-js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-tunnel-agent
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-check
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-type-detect
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-is
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-type-name
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-typeahead.js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-typedarray
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-typescript
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uc-dot-micro
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uglify-to-browserify
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uid-number
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uid-safe
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-uid2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-ultron
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-umask
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unc-path-regex
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-underscore
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-underscore-dot-logger
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unicode-7.0.0
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unicode-length
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-union
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unique-filename
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-slug
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unique-stream
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-unpipe
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-unzip-response
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-upper-case
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-upper-case-first
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-uri-path
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url-join
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url-parse-lax
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-url2
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-utfx
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-util
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-deprecate
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-util-extend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-utile
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-utilities
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-utils-merge
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vali-date
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-validate-npm-package-license
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-validate-npm-package-name
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vary
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vasync
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-verror
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vhost
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vinyl
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vow
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vow-fs
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-vow-queue
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-vows
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-w3cjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-walkdir
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-watchit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wcwidth
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-weak-map
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-websocket-driver
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-when
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-which
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-win-spawn
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-window-size
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-winston
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-with
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-woothee
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wordwrap
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wrap-ansi
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-wrap-fn
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-wrappy
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write-file-atomic
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write-json-file
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-write-pkg
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-ws
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xml2js
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmlbuilder
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xmldom
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-xregexp
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-xtend
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-y18n
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-yallist
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-yargs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodejs-yauzl
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zap
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zip-stream
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zipfile
ExclusiveArch: %{nodejs_arches}
- nodejs-zlib-browserify
ExclusiveArch: %{nodejs_arches} noarch
- nodejs-zlibjs
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- nodeunit
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- notify-sharp
ExclusiveArch: %{mono_arches}
- notify-sharp3
ExclusiveArch: %{mono_arches}
- nuget
ExclusiveArch: %{mono_arches}
- numatop
ExclusiveArch: %{ix86} x86_64
- nunit
ExclusiveArch: %{mono_arches}
- nunit2
ExclusiveArch: %{mono_arches}
- nvml
ExclusiveArch: x86_64
- nwchem
ExclusiveArch: x86_64 %{ix86}
- oci-register-machine
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- ocid
ExclusiveArch: x86_64 aarch64 ppc64le
- ocitools
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- olpc-kbdshim
ExclusiveArch: %{ix86} %{arm}
- olpc-netutils
ExclusiveArch: %{ix86} %{arm}
- olpc-powerd
ExclusiveArch: %{ix86} %{arm}
- olpc-utils
ExclusiveArch: %{ix86} %{arm}
- opal-prd
ExclusiveArch: ppc64le
- open-vm-tools
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64
- openblas
ExclusiveArch: %{openblas_arches}
- openjfx
ExclusiveArch: %{ix86} x86_64
- openlibm
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 %{power64}
- openmx
ExclusiveArch: x86_64 %{ix86}
- openni
ExclusiveArch: %{ix86} x86_64 %{arm}
- openni-primesense
ExclusiveArch: %{ix86} x86_64 %{arm}
- openssl-ibmca
ExclusiveArch: s390 s390x
- origin
ExclusiveArch: %{go_arches}
ExclusiveArch: x86_64 aarch64 ppc64le s390x
- orocos-bfl
ExclusiveArch: %{ix86} x86_64
- orthorobot
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64 ppc64
- paflib
ExclusiveArch: ppc %{power64}
- pcc
ExclusiveArch: %{ix86} x86_64
- pcmciautils
ExclusiveArch: %{ix86} x86_64 ia64 ppc ppc64 %{arm}
- pdfmod
ExclusiveArch: %mono_arches
- perl-Dumbbench
ExclusiveArch: %{ix86} x86_64 noarch
- perl-Parse-DMIDecode
ExclusiveArch: %{ix86} x86_64 ia64 aarch64
- pesign
ExclusiveArch: %{ix86} x86_64 ia64 aarch64 arm
- pesign-test-app
ExclusiveArch: i686 x86_64 ia64 aarch64
- pinta
ExclusiveArch: %mono_arches
- pioneer
ExclusiveArch: %{ix86} x86_64
- playonlinux
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- polyml
ExclusiveArch: %{ix86} x86_64 sparc sparcv8 sparcv9 sparcv9v ppc %{power64} %{arm} aarch64 ia64 mips mipsel
- poppler-sharp
ExclusiveArch: %mono_arches
- powerpc-utils
ExclusiveArch: ppc %{power64}
- ppc64-diag
ExclusiveArch: ppc %{power64}
- ppc64-utils
ExclusiveArch: ppc %{power64}
- prelude-correlator
ExclusiveArch: %{ix86} x86_64
- prewikka
ExclusiveArch: %{ix86} x86_64
- publican-jboss
ExclusiveArch: i686 x86_64
- pvs-sbcl
ExclusiveArch: %{ix86} x86_64 ppc sparcv9
- python-afl
ExclusiveArch: %{ix86} x86_64
- python-etcd
ExclusiveArch: noarch %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- python-healpy
ExclusiveArch: aarch64 ppc64 ppc64le x86_64 s390x
- python-openoffice
ExclusiveArch: noarch x86_64
- python-ovirt-register
ExclusiveArch: %{ix86} x86_64
- python-pymoc
ExclusiveArch: aarch64 ppc64 ppc64le x86_64 s390x
- python-rpi-gpio
ExclusiveArch: %{arm} aarch64
- q4wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- qcint
ExclusiveArch: x86_64
- qclib
ExclusiveArch: s390 s390x
- qt4pas
ExclusiveArch: %{fpc_arches}
- qt5-qtwebengine
ExclusiveArch: %{qt5_qtwebengine_arches}
- quantum-espresso
ExclusiveArch: x86_64 %{ix86}
ExclusiveArch: %{openblas_arches}
- rear
ExclusiveArch: %ix86 x86_64 ppc ppc64 ppc64le ia64
- redhat-lsb
ExclusiveArch: %{ix86} ia64 x86_64 ppc ppc64 s390 s390x %{arm} aarch64 ppc64le
- reptyr
ExclusiveArch: %{ix86} x86_64 %{arm}
- rescene
ExclusiveArch: %{mono_arches}
- restsharp
ExclusiveArch: %{mono_arches}
- rhythmbox-alternative-toolbar
ExclusiveArch: %{ix86} %{arm} x86_64 ppc64 ppc64le
- rkt
ExclusiveArch: x86_64 aarch64 %{arm} %{ix86}
- runc
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le %{mips} s390x
- rust
ExclusiveArch: %{rust_arches}
- s390utils
ExclusiveArch: s390 s390x
- sagemath
ExclusiveArch: aarch64 %{arm} %{ix86} x86_64 ppc sparcv9
- sbcl
ExclusiveArch: %{arm} %{ix86} x86_64 ppc sparcv9 aarch64
- sbd
ExclusiveArch: i686 x86_64 s390x
- seamonkey
ExclusiveArch: %{ix86} x86_64
- servicelog
ExclusiveArch: ppc %{power64}
- sharpfont
ExclusiveArch: %mono_arches
- sharpziplib
ExclusiveArch: %{mono_arches}
- shim
ExclusiveArch: x86_64
- shim-signed
ExclusiveArch: x86_64 aarch64
- shim-unsigned-aarch64
ExclusiveArch: aarch64
- sigul
ExclusiveArch: x86_64
- skychart
ExclusiveArch: %{fpc_arches}
- slapi-nis
ExclusiveArch: x86_64 %{ix86}
- smuxi
ExclusiveArch: %{ix86} x86_64 %{arm} ppc64le
- snapd
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- snapd-glib
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
- source-to-image
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
- sparkleshare
ExclusiveArch: %{mono_arches}
- spicctrl
ExclusiveArch: %{ix86} x86_64
- spice
ExclusiveArch: x86_64
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- spice-xpi
ExclusiveArch: i686 x86_64 armv6l armv7l armv7hl aarch64
- spring
ExclusiveArch: %{ix86} x86_64
- springlobby
ExclusiveArch: %{ix86} x86_64
- statsd
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- stripesnoop
ExclusiveArch: %{ix86} x86_64
- supermin
ExclusiveArch: x86_64
- sysbench
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips} aarch64
- syslinux
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
ExclusiveArch: %{ix86} x86_64
- taglib-sharp
ExclusiveArch: %{mono_arches}
- tarantool
ExclusiveArch: %{ix86} x86_64 armv7hl armv7hnl aarch64
- tboot
ExclusiveArch: %{ix86} x86_64
- templates_parser
ExclusiveArch: %GNAT_arches
- themonospot-base
ExclusiveArch: %mono_arches
- themonospot-console
ExclusiveArch: %mono_arches
- themonospot-gui-gtk
ExclusiveArch: %mono_arches
- themonospot-plugin-avi
ExclusiveArch: %mono_arches
- themonospot-plugin-mkv
ExclusiveArch: %mono_arches
- thermald
ExclusiveArch: %{ix86} x86_64
- thunderbird-enigmail
ExclusiveArch: %{ix86} %{arm} ppc64 ppc64le s390x x86_64 noarch
- tilix
ExclusiveArch: %{ldc_arches}
- tmux-top
ExclusiveArch: %{go_arches}
- tomboy
ExclusiveArch: %{mono_arches}
- tpm2-tools
ExclusiveArch: %{ix86} x86_64
- tpm2-tss
ExclusiveArch: %{ix86} x86_64
- uClibc
ExclusiveArch: %{arm} %{ix86} x86_64 %{mips}
- ugene
ExclusiveArch: %{ix86} x86_64
- uglify-js
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- uglify-js1
ExclusiveArch: %{nodejs_arches} noarch
ExclusiveArch: %{ix86} x86_64 %{arm} noarch
- unetbootin
ExclusiveArch: %{ix86} x86_64
- v8
ExclusiveArch: %{ix86} x86_64 ppc ppc64 aarch64 %{mips} s390 s390x
- v8-314
ExclusiveArch: %{ix86} x86_64 %{arm} mips mipsel ppc ppc64
- valgrind
ExclusiveArch: %{ix86} x86_64 ppc ppc64 ppc64le s390x armv7hl aarch64
- vboot-utils
ExclusiveArch: %{arm} aarch64 %{ix86} x86_64
- vdsm
ExclusiveArch: x86_64 %{power64} aarch64
- vim-go
ExclusiveArch: %{?golang_arches:%{golang_arches} noarch}%{!?golang_arches:%{ix86} x86_64 %{arm}}
- virtualplanet
ExclusiveArch: %{fpc_arches}
- vrq
ExclusiveArch: %{ix86} x86_64
- warsow
ExclusiveArch: %{ix86} x86_64 %{arm}
- warsow-data
ExclusiveArch: %{ix86} x86_64 %{arm}
- webkit-sharp
ExclusiveArch: %mono_arches
- wine
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
ExclusiveArch: %{ix86} %{arm}
- winetricks
ExclusiveArch: %{ix86} x86_64 %{arm} aarch64
- wiredtiger
ExclusiveArch: x86_64 aarch64 ppc64le
- wraplinux
ExclusiveArch: %{ix86} x86_64
- wxMaxima
ExclusiveArch: %{arm} %{ix86} x86_64 aarch64 ppc sparcv9
- x86info
ExclusiveArch: %{ix86} x86_64
- xen
ExclusiveArch: %{ix86} x86_64 armv7hl aarch64
- xmlada
ExclusiveArch: %{GPRbuild_arches}
- xorg-x11-drv-armsoc
ExclusiveArch: %{arm} aarch64
- xorg-x11-drv-freedreno
ExclusiveArch: %{arm} aarch64
- xorg-x11-drv-geode
ExclusiveArch: %{ix86}
- xorg-x11-drv-intel
ExclusiveArch: %{ix86} x86_64 ia64
- xorg-x11-drv-omap
ExclusiveArch: %{arm}
- xorg-x11-drv-openchrome
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-opentegra
ExclusiveArch: %{arm}
- xorg-x11-drv-vesa
ExclusiveArch: %{ix86} x86_64
- xorg-x11-drv-vmware
ExclusiveArch: %{ix86} x86_64 ia64
- xsp
ExclusiveArch: %mono_arches
- xsupplicant
ExclusiveArch: %{ix86} x86_64 ppc %{power64}
- ycssmin
ExclusiveArch: %{nodejs_arches} noarch
- zeromq-ada
ExclusiveArch: %{GNAT_arches}
- zlib-ada
ExclusiveArch: %{GNAT_arches}
6 years, 10 months
Architecture specific change in rpms/gnome-software.git
by githook-noreply@fedoraproject.org
The package rpms/gnome-software.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/gnome-software.git/commit/?id=78e....
Change:
+%ifarch %{snap_archs}
Thanks.
Full change:
============
commit 78ecb2d712a1c95c7c5c6f641d4a6a89baee093d
Author: Richard Hughes <richard(a)hughsie.com>
Date: Sat Jun 24 07:55:03 2017 +0100
Enable the snap subpackage
diff --git a/gnome-software.spec b/gnome-software.spec
index 905a491..5847472 100644
--- a/gnome-software.spec
+++ b/gnome-software.spec
@@ -9,12 +9,19 @@
%global fwupd_version 0.9.3
%global flatpak_version 0.8.0
+# verified arches from snapd upstream
+%global snap_archs %{ix86} x86_64 %{arm} aarch64 ppc64le s390x
+
+%ifarch %{snap_archs}
+%global have_snap 1
+%endif
+
# this should be set using "--without packagekit" when atomic
%bcond_without packagekit
Name: gnome-software
Version: 3.25.3
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: A software center for GNOME
License: GPLv2+
@@ -46,6 +53,10 @@ BuildRequires: ostree-devel
BuildRequires: rpm-devel
BuildRequires: libgudev1-devel
BuildRequires: valgrind-devel
+%ifarch %{snap_archs}
+BuildRequires: liboauth-devel
+BuildRequires: snapd-glib-devel
+%endif
Requires: appstream-data
%if 0%{?fedora}
@@ -90,11 +101,26 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
%description editor
Editor for designing banners for GNOME Software.
+%ifarch %{snap_archs}
+%package snap
+Summary: Support for Ubuntu Snap packages
+Requires: %{name}%{?_isa} = %{version}-%{release}
+Requires: snapd-login-service
+
+%description snap
+Adds support for Snap packages from the Ubuntu store.
+%endif
+
%prep
%autosetup -p1
%build
%meson \
+%if 0%{?have_snap}
+ -Denable-snap=true \
+%else
+ -Denable-snap=false \
+%endif
-Denable-gudev=true \
%if %{with packagekit}
-Denable-packagekit=true \
@@ -212,6 +238,12 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
%{_libexecdir}/gnome-software-cmd
%{_libexecdir}/gnome-software-restarter
+%ifarch %{snap_archs}
+%files snap
+%{_libdir}/gs-plugins-%{gs_plugin_version}/libgs_plugin_snap.so
+%{_datadir}/metainfo/org.gnome.Software.Plugin.Snap.metainfo.xml
+%endif
+
%files devel
%{_libdir}/pkgconfig/gnome-software.pc
%dir %{_includedir}/gnome-software
@@ -225,6 +257,9 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
%{_mandir}/man1/gnome-software-editor.1*
%changelog
+* Fri Jun 23 2017 Richard Hughes <rhughes(a)redhat.com> - 3.24.3-2
+- Enable the snap subpackage
+
* Fri Jun 23 2017 Kalev Lember <klember(a)redhat.com> - 3.25.3-1
- Update to 3.25.3
- Switch to the meson build system
6 years, 10 months
Architecture specific change in rpms/qt5-qtwebengine.git
by githook-noreply@fedoraproject.org
The package rpms/qt5-qtwebengine.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/qt5-qtwebengine.git/commit/?id=c8...
https://src.fedoraproject.org/cgit/rpms/qt5-qtwebengine.git/commit/?id=f4....
Change:
+%ifarch x86_64
+%ifarch %{arm}
Thanks.
Full change:
============
commit f4a3e4c1e3bfbe5d016781d1f06c9afcdff2e99e
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Wed Jun 21 12:02:23 2017 +0200
Reduce debugging info on ARM on F26-
For some reason, the builder ran out of memory on F26 but not on
Rawhide.
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index c824a44..4a44d7f 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -23,9 +23,20 @@
# FTBFS due to e.g. GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495
%global arm_neon 1
+%if 0%{?fedora} > 26
# the QMake CONFIG flags to force debugging information to be produced in
# release builds, and for all parts of the code
%global debug_config webcore_debug v8base_debug force_debug_info
+%else
+%ifarch %{arm}
+# the ARM builder runs out of memory on Fedora 26 during linking with the full
+# setting below, so omit debugging information for the parts upstream deems it
+# dispensable for (webcore, v8base)
+%global debug_config force_debug_info
+%else
+%global debug_config webcore_debug v8base_debug force_debug_info
+%endif
+%endif
#global prerelease rc
commit ddcf6aaa1ac7b4c81ff128f2e7d65218011028e5
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Wed Jun 21 03:59:44 2017 +0200
Fix FTBFS on F26 (and lower) due to debugedit failure
Remove the double slashes from #include lines in 2 files in WebRTC.
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index dc88b37..c824a44 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -362,6 +362,10 @@ BuildArch: noarch
# fix // in #include in content/renderer/gpu to avoid debugedit failure
sed -i -e 's!gpu//!gpu/!g' \
src/3rdparty/chromium/content/renderer/gpu/compositor_forwarding_message_filter.cc
+# and another one in 2 files in WebRTC
+sed -i -e 's!audio_processing//!audio_processing/!g' \
+ src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/utility/ooura_fft.cc \
+ src/3rdparty/chromium/third_party/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc
# remove ./ from #line commands in ANGLE to avoid debugedit failure (?)
sed -i -e 's!\./!!g' \
src/3rdparty/chromium/third_party/angle/src/compiler/preprocessor/Tokenizer.cpp \
commit af0b8a6b9ba3e6a8a2b9188df5ea79b40c974439
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Thu Jun 15 10:16:56 2017 +0200
Introduce a debug_config macro
Introduce a debug_config macro so that the debuginfo settings can be
changed more easily.
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index 5264934..dc88b37 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -23,6 +23,10 @@
# FTBFS due to e.g. GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495
%global arm_neon 1
+# the QMake CONFIG flags to force debugging information to be produced in
+# release builds, and for all parts of the code
+%global debug_config webcore_debug v8base_debug force_debug_info
+
#global prerelease rc
# spellchecking dictionary directory
@@ -399,7 +403,7 @@ export NINJA_PATH=%{_bindir}/ninja-build
mkdir %{_target_platform}
pushd %{_target_platform}
-%{qmake_qt5} CONFIG+="webcore_debug v8base_debug force_debug_info" \
+%{qmake_qt5} CONFIG+="%{debug_config}" \
WEBENGINE_CONFIG+="use_system_icu use_spellchecker" ..
make %{?_smp_mflags}
commit 593264c7166a67d1fec08f947ace5e5636129ff5
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Tue Jun 13 14:54:02 2017 +0200
arm-fpu-fix patch: Also build the host tools (i.e., GN) with the correct FPU
* Tue Jun 13 2017 Kevin Kofler <Kevin(a)tigcc.ticalc.org> - 5.9.0-2
- arm-fpu-fix patch: Also build the host tools (i.e., GN) with the correct FPU
This ensures GN does not get built with NEON on 32-bit armv7hl. The ARM
builders don't necessarily support NEON. (The Fedora one apparently
does, but the RPM Fusion one apparently does not.)
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index 9bd1ec1..5264934 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -41,7 +41,7 @@
Summary: Qt5 - QtWebEngine components
Name: qt5-qtwebengine
Version: 5.9.0
-Release: 1%{?dist}
+Release: 2%{?dist}
# See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details
# See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html
@@ -557,6 +557,9 @@ done
%changelog
+* Tue Jun 13 2017 Kevin Kofler <Kevin(a)tigcc.ticalc.org> - 5.9.0-2
+- arm-fpu-fix patch: Also build the host tools (i.e., GN) with the correct FPU
+
* Mon Jun 12 2017 Kevin Kofler <Kevin(a)tigcc.ticalc.org> - 5.9.0-1
- Update to 5.9.0
- Update version numbers of bundled stuff
diff --git a/qtwebengine-opensource-src-5.9.0-arm-fpu-fix.patch b/qtwebengine-opensource-src-5.9.0-arm-fpu-fix.patch
index ddf8abc..ca308d4 100644
--- a/qtwebengine-opensource-src-5.9.0-arm-fpu-fix.patch
+++ b/qtwebengine-opensource-src-5.9.0-arm-fpu-fix.patch
@@ -1,6 +1,15 @@
diff -ur qtwebengine-opensource-src-5.9.0/src/core/config/linux.pri qtwebengine-opensource-src-5.9.0-arm-fpu-fix/src/core/config/linux.pri
--- qtwebengine-opensource-src-5.9.0/src/core/config/linux.pri 2017-05-19 06:22:04.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-arm-fpu-fix/src/core/config/linux.pri 2017-06-10 02:32:09.984692943 +0200
++++ qtwebengine-opensource-src-5.9.0-arm-fpu-fix/src/core/config/linux.pri 2017-06-13 14:51:26.986633933 +0200
+@@ -41,7 +41,7 @@
+ !isEmpty(TOOLCHAIN_SYSROOT): gn_args += target_sysroot=\"$${TOOLCHAIN_SYSROOT}\"
+ }
+
+-contains(QT_ARCH, "arm"):!host_build {
++contains(QT_ARCH, "arm") {
+ # Extract ARM specific compiler options that we have to pass to gn,
+ # but let gn figure out a default if an option is not present.
+ MTUNE = $$extractCFlag("-mtune=.*")
@@ -64,6 +64,7 @@
gn_args += arm_use_neon=true
} else {
commit 1d5bddf2595e4c4b061ac91f7b1badbca092d369
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Mon Jun 12 20:55:43 2017 +0200
no-sse2 patch: Set -rpath-link for the examples
Unfortunately, this has to be done one example at a time because
subdirectories do not inherit variables in QMake.
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
index 6b7537d..4dcbc92 100644
--- a/qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -1,3 +1,144 @@
+diff -Nur qtwebengine-opensource-src-5.9.0/examples/webengine/customdialogs/customdialogs.pro qtwebengine-opensource-src-5.9.0-no-sse2/examples/webengine/customdialogs/customdialogs.pro
+--- qtwebengine-opensource-src-5.9.0/examples/webengine/customdialogs/customdialogs.pro 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/examples/webengine/customdialogs/customdialogs.pro 2017-06-12 20:48:36.743167401 +0200
+@@ -1,5 +1,7 @@
+ QT += webengine
+
++QMAKE_LFLAGS += -Wl,-rpath-link,$$OUT_PWD/../../../src/core/Release
++
+ HEADERS += \
+ server.h
+
+diff -Nur qtwebengine-opensource-src-5.9.0/examples/webengine/minimal/minimal.pro qtwebengine-opensource-src-5.9.0-no-sse2/examples/webengine/minimal/minimal.pro
+--- qtwebengine-opensource-src-5.9.0/examples/webengine/minimal/minimal.pro 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/examples/webengine/minimal/minimal.pro 2017-06-12 20:48:02.646665156 +0200
+@@ -2,6 +2,8 @@
+
+ QT += webengine
+
++QMAKE_LFLAGS += -Wl,-rpath-link,$$OUT_PWD/../../../src/core/Release
++
+ SOURCES += main.cpp
+
+ RESOURCES += qml.qrc
+diff -Nur qtwebengine-opensource-src-5.9.0/examples/webengine/quicknanobrowser/quicknanobrowser.pro qtwebengine-opensource-src-5.9.0-no-sse2/examples/webengine/quicknanobrowser/quicknanobrowser.pro
+--- qtwebengine-opensource-src-5.9.0/examples/webengine/quicknanobrowser/quicknanobrowser.pro 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/examples/webengine/quicknanobrowser/quicknanobrowser.pro 2017-06-12 20:48:24.553340621 +0200
+@@ -20,5 +20,7 @@
+ QT += widgets # QApplication is required to get native styling with QtQuickControls
+ }
+
++QMAKE_LFLAGS += -Wl,-rpath-link,$$OUT_PWD/../../../src/core/Release
++
+ target.path = $$[QT_INSTALL_EXAMPLES]/webengine/quicknanobrowser
+ INSTALLS += target
+diff -Nur qtwebengine-opensource-src-5.9.0/examples/webengine/recipebrowser/recipebrowser.pro qtwebengine-opensource-src-5.9.0-no-sse2/examples/webengine/recipebrowser/recipebrowser.pro
+--- qtwebengine-opensource-src-5.9.0/examples/webengine/recipebrowser/recipebrowser.pro 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/examples/webengine/recipebrowser/recipebrowser.pro 2017-06-12 20:48:31.672239461 +0200
+@@ -2,6 +2,8 @@
+
+ QT += quick qml quickcontrols2 webengine
+
++QMAKE_LFLAGS += -Wl,-rpath-link,$$OUT_PWD/../../../src/core/Release
++
+ cross_compile {
+ posix|qnx|linux: DEFINES += QTWEBENGINE_RECIPE_BROWSER_EMBEDDED
+ }
+diff -Nur qtwebengine-opensource-src-5.9.0/examples/webenginewidgets/contentmanipulation/contentmanipulation.pro qtwebengine-opensource-src-5.9.0-no-sse2/examples/webenginewidgets/contentmanipulation/contentmanipulation.pro
+--- qtwebengine-opensource-src-5.9.0/examples/webenginewidgets/contentmanipulation/contentmanipulation.pro 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/examples/webenginewidgets/contentmanipulation/contentmanipulation.pro 2017-06-12 20:47:51.870824827 +0200
+@@ -1,5 +1,7 @@
+ QT += webenginewidgets
+
++QMAKE_LFLAGS += -Wl,-rpath-link,$$OUT_PWD/../../../src/core/Release
++
+ HEADERS = mainwindow.h
+ SOURCES = main.cpp \
+ mainwindow.cpp
+diff -Nur qtwebengine-opensource-src-5.9.0/examples/webenginewidgets/cookiebrowser/cookiebrowser.pro qtwebengine-opensource-src-5.9.0-no-sse2/examples/webenginewidgets/cookiebrowser/cookiebrowser.pro
+--- qtwebengine-opensource-src-5.9.0/examples/webenginewidgets/cookiebrowser/cookiebrowser.pro 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/examples/webenginewidgets/cookiebrowser/cookiebrowser.pro 2017-06-12 20:47:00.603584486 +0200
+@@ -3,6 +3,8 @@
+ TEMPLATE = app
+ CONFIG += c++11
+
++QMAKE_LFLAGS += -Wl,-rpath-link,$$OUT_PWD/../../../src/core/Release
++
+ SOURCES += \
+ main.cpp\
+ mainwindow.cpp
+diff -Nur qtwebengine-opensource-src-5.9.0/examples/webenginewidgets/demobrowser/demobrowser.pro qtwebengine-opensource-src-5.9.0-no-sse2/examples/webenginewidgets/demobrowser/demobrowser.pro
+--- qtwebengine-opensource-src-5.9.0/examples/webenginewidgets/demobrowser/demobrowser.pro 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/examples/webenginewidgets/demobrowser/demobrowser.pro 2017-06-12 20:47:26.036207636 +0200
+@@ -3,6 +3,8 @@
+ QT += webenginewidgets network widgets printsupport
+ CONFIG += c++11
+
++QMAKE_LFLAGS += -Wl,-rpath-link,$$OUT_PWD/../../../src/core/Release
++
+ qtHaveModule(uitools):!embedded: QT += uitools
+ else: DEFINES += QT_NO_UITOOLS
+
+diff -Nur qtwebengine-opensource-src-5.9.0/examples/webenginewidgets/markdowneditor/markdowneditor.pro qtwebengine-opensource-src-5.9.0-no-sse2/examples/webenginewidgets/markdowneditor/markdowneditor.pro
+--- qtwebengine-opensource-src-5.9.0/examples/webenginewidgets/markdowneditor/markdowneditor.pro 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/examples/webenginewidgets/markdowneditor/markdowneditor.pro 2017-06-12 20:47:36.026059609 +0200
+@@ -3,6 +3,8 @@
+ QT += webenginewidgets webchannel
+ CONFIG += c++11
+
++QMAKE_LFLAGS += -Wl,-rpath-link,$$OUT_PWD/../../../src/core/Release
++
+ HEADERS += \
+ mainwindow.h \
+ previewpage.h \
+diff -Nur qtwebengine-opensource-src-5.9.0/examples/webenginewidgets/minimal/minimal.pro qtwebengine-opensource-src-5.9.0-no-sse2/examples/webenginewidgets/minimal/minimal.pro
+--- qtwebengine-opensource-src-5.9.0/examples/webenginewidgets/minimal/minimal.pro 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/examples/webenginewidgets/minimal/minimal.pro 2017-06-12 20:46:13.714279273 +0200
+@@ -2,6 +2,8 @@
+
+ QT += webenginewidgets
+
++QMAKE_LFLAGS += -Wl,-rpath-link,$$OUT_PWD/../../../src/core/Release
++
+ SOURCES += main.cpp
+
+ target.path = $$[QT_INSTALL_EXAMPLES]/webenginewidgets/minimal
+diff -Nur qtwebengine-opensource-src-5.9.0/examples/webenginewidgets/simplebrowser/simplebrowser.pro qtwebengine-opensource-src-5.9.0-no-sse2/examples/webenginewidgets/simplebrowser/simplebrowser.pro
+--- qtwebengine-opensource-src-5.9.0/examples/webenginewidgets/simplebrowser/simplebrowser.pro 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/examples/webenginewidgets/simplebrowser/simplebrowser.pro 2017-06-12 20:47:31.059133208 +0200
+@@ -3,6 +3,8 @@
+ QT += webenginewidgets
+ CONFIG += c++11
+
++QMAKE_LFLAGS += -Wl,-rpath-link,$$OUT_PWD/../../../src/core/Release
++
+ HEADERS += \
+ browser.h \
+ browserwindow.h \
+diff -Nur qtwebengine-opensource-src-5.9.0/examples/webenginewidgets/spellchecker/spellchecker.pro qtwebengine-opensource-src-5.9.0-no-sse2/examples/webenginewidgets/spellchecker/spellchecker.pro
+--- qtwebengine-opensource-src-5.9.0/examples/webenginewidgets/spellchecker/spellchecker.pro 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/examples/webenginewidgets/spellchecker/spellchecker.pro 2017-06-12 20:47:46.165909361 +0200
+@@ -7,6 +7,8 @@
+ error("Spellcheck example can not be built when using native OS dictionaries.")
+ }
+
++QMAKE_LFLAGS += -Wl,-rpath-link,$$OUT_PWD/../../../src/core/Release
++
+ HEADERS += \
+ webview.h
+
+diff -Nur qtwebengine-opensource-src-5.9.0/examples/webenginewidgets/videoplayer/videoplayer.pro qtwebengine-opensource-src-5.9.0-no-sse2/examples/webenginewidgets/videoplayer/videoplayer.pro
+--- qtwebengine-opensource-src-5.9.0/examples/webenginewidgets/videoplayer/videoplayer.pro 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/examples/webenginewidgets/videoplayer/videoplayer.pro 2017-06-12 20:47:20.160294702 +0200
+@@ -2,6 +2,8 @@
+
+ QT += webenginewidgets
+
++QMAKE_LFLAGS += -Wl,-rpath-link,$$OUT_PWD/../../../src/core/Release
++
+ HEADERS += \
+ mainwindow.h \
+ fullscreenwindow.h \
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/build/config/compiler/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/build/config/compiler/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/build/config/compiler/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/build/config/compiler/BUILD.gn 2017-06-08 23:09:28.104582812 +0200
commit 1a7c1df9169786238b14cf920240e572f4c6ddf8
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Mon Jun 12 16:37:52 2017 +0200
no-sse2 patch: Set -rpath-link for QtWebEngineProcess
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
index 55e5bb6..6b7537d 100644
--- a/qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -2953,3 +2953,15 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/core/core_module.pro qtwebengine-
!use?(system_icu) {
icu.CONFIG += no_check_exist
+diff -Nur qtwebengine-opensource-src-5.9.0/src/process/process.pro qtwebengine-opensource-src-5.9.0-no-sse2/src/process/process.pro
+--- qtwebengine-opensource-src-5.9.0/src/process/process.pro 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/process/process.pro 2017-06-12 16:36:03.823777310 +0200
+@@ -9,6 +9,8 @@
+
+ SOURCES = main.cpp
+
++QMAKE_LFLAGS += -Wl,-rpath-link,$$OUT_PWD/../core/Release
++
+ win32 {
+ SOURCES += \
+ support_win.cpp
commit 705bf27fe143e9e36bace064a2d076ee5b444a30
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Mon Jun 12 14:38:07 2017 +0200
Revert "Use upstream (Qt) fix for the ARM native build issue"
This reverts commit 2e9fc1cac1c8e417bbb127ba671a4ab6bbd1d227.
This does not work.
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index 7cc4c18..9bd1ec1 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -105,9 +105,9 @@ Patch22: qtwebengine-opensource-src-5.9.0-system-re2.patch
# Backport upstream patch to fix GN FTBFS on aarch64 (QTBUG-61128)
# https://codereview.qt-project.org/196178
Patch100: qtwebengine-opensource-src-5.9.0-gn-aarch64.patch
-# Backport upstream patch to fix native builds on ARM and aarch64 (QTBUG-61128)
-# https://codereview.qt-project.org/197071
-Patch101: qtwebengine-opensource-src-5.9.0-host-toolchain.patch
+# Backport patch to fix FTBFS with GCC on aarch64 from upstream Chromium
+# https://codereview.chromium.org/2545053002
+Patch101: qtwebengine-opensource-src-5.9.0-aarch64-gcc-toolchain.patch
%if 0%{?fedora} && 0%{?fedora} < 25
# work around missing qt5_qtwebengine_arches macro on F24
@@ -354,7 +354,7 @@ BuildArch: noarch
%patch21 -p1 -b .gn-bootstrap-verbose
%patch22 -p1 -b .system-re2
%patch100 -p1 -b .gn-aarch64
-%patch101 -p1 -b .host-toolchain
+%patch101 -p1 -b .aarch64-gcc-toolchain
# fix // in #include in content/renderer/gpu to avoid debugedit failure
sed -i -e 's!gpu//!gpu/!g' \
src/3rdparty/chromium/content/renderer/gpu/compositor_forwarding_message_filter.cc
@@ -362,6 +362,10 @@ sed -i -e 's!gpu//!gpu/!g' \
sed -i -e 's!\./!!g' \
src/3rdparty/chromium/third_party/angle/src/compiler/preprocessor/Tokenizer.cpp \
src/3rdparty/chromium/third_party/angle/src/compiler/translator/glslang_lex.cpp
+# delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn, as we
+# never cross-compile in native Fedora RPMs, fixes ARM and aarch64 FTBFS
+sed -i -e '/toolprefix = /d' -e 's/\${toolprefix}//g' \
+ src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
# http://bugzilla.redhat.com/1337585
# can't just delete, but we'll overwrite with system headers to be on the safe side
@@ -571,8 +575,9 @@ done
- Drop the flag hacks (-g1 -fno-delete-null-pointer-checks), fixed upstream
- Force verbose output from the GN bootstrap process
- Backport upstream patch to fix GN FTBFS on aarch64 (QTBUG-61128)
-- Backport upstream patch to fix native builds on ARM and aarch64 (QTBUG-61128)
+- Backport patch to fix FTBFS with GCC on aarch64 from upstream Chromium
- Fix src/3rdparty/chromium/build/linux/unbundle/re2.gn
+- Delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn
* Sat May 13 2017 Rex Dieter <rdieter(a)fedoraproject.org> - 5.8.0-14
- fix rpm macros
diff --git a/qtwebengine-opensource-src-5.9.0-aarch64-gcc-toolchain.patch b/qtwebengine-opensource-src-5.9.0-aarch64-gcc-toolchain.patch
new file mode 100644
index 0000000..76228a0
--- /dev/null
+++ b/qtwebengine-opensource-src-5.9.0-aarch64-gcc-toolchain.patch
@@ -0,0 +1,30 @@
+Index: src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
+diff --git a/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn b/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
+index 548722d3938017ac936b9088b7a686c2afbbb5fe..86cd7dabc6e86d22a266817dfbb3bf0c719f7992 100644
+--- a/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
++++ b/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
+@@ -21,6 +21,24 @@ clang_toolchain("clang_arm64") {
+ }
+ }
+
++gcc_toolchain("arm64") {
++ toolprefix = "aarch64-linux-gnu-"
++
++ cc = "${toolprefix}gcc"
++ cxx = "${toolprefix}g++"
++
++ ar = "${toolprefix}ar"
++ ld = cxx
++ readelf = "${toolprefix}readelf"
++ nm = "${toolprefix}nm"
++
++ toolchain_args = {
++ current_cpu = "arm64"
++ current_os = "linux"
++ is_clang = false
++ }
++}
++
+ gcc_toolchain("arm") {
+ toolprefix = "arm-linux-gnueabihf-"
+
diff --git a/qtwebengine-opensource-src-5.9.0-host-toolchain.patch b/qtwebengine-opensource-src-5.9.0-host-toolchain.patch
deleted file mode 100644
index aab4e90..0000000
--- a/qtwebengine-opensource-src-5.9.0-host-toolchain.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 33b69c4d138a8eebc392737ee1a58d999f922d59 Mon Sep 17 00:00:00 2001
-From: Allan Sandfeld Jensen <allan.jensen(a)qt.io>
-Date: Mon, 12 Jun 2017 12:36:17 +0200
-Subject: [PATCH] Always set a host toolchain
-
-If we don't give Chromium a host toolchain it will pick one of its own
-overriding which compiler should be used, and breaking native builds
-on non-x86 architectuers.
-
-Task-number: QTBUG-61128
-Change-Id: Ia25a4f43a28214003abcb11dc75a0e57064f76a7
----
- src/core/config/linux.pri | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/core/config/linux.pri b/src/core/config/linux.pri
-index 24951cd..076d8a3 100644
---- a/src/core/config/linux.pri
-+++ b/src/core/config/linux.pri
-@@ -103,8 +103,8 @@ host_build {
- gn_args += use_system_libffi=false
- } else {
- gn_args += custom_toolchain=\"$$QTWEBENGINE_OUT_ROOT/src/toolchain:target\"
-+ gn_args += host_toolchain=\"$$QTWEBENGINE_OUT_ROOT/src/toolchain:host\"
- cross_compile {
-- gn_args += host_toolchain=\"$$QTWEBENGINE_OUT_ROOT/src/toolchain:host\"
- gn_args += v8_snapshot_toolchain=\"$$QTWEBENGINE_OUT_ROOT/src/toolchain:v8_snapshot\"
- GN_HOST_CPU = $$gnArch($$QMAKE_HOST.arch)
- GN_TARGET_CPU = $$gnArch($$QT_ARCH)
---
-2.7.4
-
commit 0df1d88b1a4469222323b3e1b44f3731b1eb6015
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Mon Jun 12 14:22:07 2017 +0200
no-sse2 patch: Fix V8 dual build on i686
* Add the dependency on the SSE2 build to a target QtWebEngine actually
uses.
* Also handle v8_build_shared in the V8 inspector, so the symbols
actually get exported.
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
index c118908..55e5bb6 100644
--- a/qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -136,22 +136,23 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/cc/BUILD.gn qtw
static_library("test_support") {
testonly = true
sources = [
-diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/chrome/renderer/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/chrome/renderer/BUILD.gn
---- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/chrome/renderer/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/chrome/renderer/BUILD.gn 2017-06-10 02:12:19.472150369 +0200
-@@ -136,6 +136,12 @@
- "//v8:v8",
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/content/renderer/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/content/renderer/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/content/renderer/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/content/renderer/BUILD.gn 2017-06-12 14:19:26.095936011 +0200
+@@ -468,6 +468,13 @@
+ "//ui/surface",
+ "//v8",
]
-
++
+ if (current_cpu == "x86") {
+ deps += [
-+ "//v8:v8(//build/toolchain/linux:x86_sse2)",
++ "//v8(//build/toolchain/linux:x86_sse2)",
+ ]
+ }
+
- configs += [ "//build/config/compiler:wexit_time_destructors" ]
+ allow_circular_includes_from = []
- if (enable_nacl) {
+ if (use_aura && !use_qt) {
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/BUILD.gn 2017-06-08 22:49:57.484256877 +0200
@@ -2702,29 +2703,8 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/web
#endif
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn 2017-06-12 01:48:06.425611303 +0200
-@@ -73,6 +73,9 @@
- # If true, doesn't compile debug symbols into v8base reducing the
- # size of the binary and increasing the speed of gdb.
- remove_v8base_debug_symbols = false
-+
-+ # Whether to build V8 as a shared library
-+ v8_build_shared = false
- }
-
- # Set project-specific defaults for some args if not provided in args.gn. The
-@@ -99,6 +102,10 @@
- if (v8_enable_disassembler == "") {
- v8_enable_disassembler = is_debug && !v8_optimized_debug
- }
-+if (v8_current_cpu == "x86" || v8_current_cpu == "x87") {
-+ # build V8 shared on x86 so we can swap x87 vs. SSE2 builds
-+ v8_build_shared = true
-+}
-
- # Specifies if the target build is a simulator build. Comparing target cpu
- # with v8 target cpu to not affect simulator builds for making cross-compile
-@@ -117,7 +124,7 @@
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn 2017-06-12 14:15:23.270523710 +0200
+@@ -117,7 +117,7 @@
include_dirs = [ "." ]
@@ -2733,7 +2713,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn qtw
defines = [ "BUILDING_V8_SHARED" ]
}
}
-@@ -131,14 +138,14 @@
+@@ -131,14 +131,14 @@
# This config should be applied to code using the libplatform.
config("libplatform_config") {
include_dirs = [ "include" ]
@@ -2750,7 +2730,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn qtw
defines = [ "USING_V8_BASE_SHARED" ]
}
libs = []
-@@ -155,7 +162,7 @@
+@@ -155,7 +155,7 @@
# This config should only be applied to code using V8 and not any V8 code
# itself.
config("external_config") {
@@ -2759,7 +2739,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn qtw
defines = [ "USING_V8_SHARED" ]
}
include_dirs = [ "include" ]
-@@ -331,6 +338,9 @@
+@@ -331,6 +331,9 @@
cflags += [ "/arch:SSE2" ]
}
}
@@ -2769,7 +2749,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn qtw
if (v8_current_cpu == "x64") {
defines += [ "V8_TARGET_ARCH_X64" ]
if (is_win) {
-@@ -2274,7 +2284,7 @@
+@@ -2274,7 +2277,7 @@
defines = []
@@ -2778,7 +2758,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn qtw
defines = [ "BUILDING_V8_BASE_SHARED" ]
}
-@@ -2364,7 +2374,7 @@
+@@ -2364,7 +2367,7 @@
configs = [ ":internal_config_base" ]
@@ -2787,7 +2767,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn qtw
defines = [ "BUILDING_V8_PLATFORM_SHARED" ]
}
-@@ -2507,7 +2517,26 @@
+@@ -2507,7 +2510,26 @@
}
}
@@ -2815,6 +2795,31 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn qtw
v8_component("v8") {
sources = [
"src/v8dll-main.cc",
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/gni/v8.gni qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/gni/v8.gni
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/gni/v8.gni 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/gni/v8.gni 2017-06-12 14:15:47.965158851 +0200
+@@ -30,6 +30,9 @@
+ # Enable ECMAScript Internationalization API. Enabling this feature will
+ # add a dependency on the ICU library.
+ v8_enable_i18n_support = true
++
++ # Whether to build V8 as a shared library
++ v8_build_shared = false
+ }
+
+ if (v8_use_external_startup_data == "") {
+@@ -42,6 +45,11 @@
+ v8_enable_backtrace = is_debug && !v8_optimized_debug
+ }
+
++if (v8_current_cpu == "x86" || v8_current_cpu == "x87") {
++ # build V8 shared on x86 so we can swap x87 vs. SSE2 builds
++ v8_build_shared = true
++}
++
+ # Points to // in v8 stand-alone or to //v8/ in chromium. We need absolute
+ # paths for all configs in templates as they are shared in different
+ # subdirectories.
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/make-v8-sse2-gyp.sh qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/make-v8-sse2-gyp.sh
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/make-v8-sse2-gyp.sh 1970-01-01 01:00:00.000000000 +0100
+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/make-v8-sse2-gyp.sh 2017-06-08 22:50:09.496075706 +0200
@@ -2875,6 +2880,30 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/make-v8-sse2
+ -e "s/\.bin/_sse2.bin/g" \
+ -e "s#^\( *\)\('target_name': 'v8_sse2',\)#\1\2\n\1'product_name': 'v8',\n\1'product_dir': '<(PRODUCT_DIR)/lib/sse2',#g" \
+ v8.gyp >>v8_sse2.gyp
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/src/inspector/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/src/inspector/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/src/inspector/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/src/inspector/BUILD.gn 2017-06-12 14:16:16.955730521 +0200
+@@ -106,7 +106,7 @@
+ "/wd4996", # Deprecated function call.
+ ]
+ }
+- if (is_component_build) {
++ if (is_component_build || v8_build_shared) {
+ defines = [ "BUILDING_V8_SHARED" ]
+ }
+ }
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/test/cctest/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/test/cctest/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/test/cctest/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/test/cctest/BUILD.gn 2017-06-12 14:16:45.945302206 +0200
+@@ -335,7 +335,7 @@
+
+ defines = []
+
+- if (is_component_build) {
++ if (is_component_build || v8_build_shared) {
+ # cctest can't be built against a shared library, so we
+ # need to depend on the underlying static target in that case.
+ deps += [ "../..:v8_maybe_snapshot" ]
diff -Nur qtwebengine-opensource-src-5.9.0/src/core/core_module.pro qtwebengine-opensource-src-5.9.0-no-sse2/src/core/core_module.pro
--- qtwebengine-opensource-src-5.9.0/src/core/core_module.pro 2017-05-19 06:22:04.000000000 +0200
+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/core/core_module.pro 2017-06-12 00:25:07.241337485 +0200
commit 2e9fc1cac1c8e417bbb127ba671a4ab6bbd1d227
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Mon Jun 12 13:52:37 2017 +0200
Use upstream (Qt) fix for the ARM native build issue
- Backport upstream patch to fix native builds on ARM and aarch64
(QTBUG-61128)
- Drop "Backport patch to fix FTBFS with GCC on aarch64 from upstream
Chromium"
- Drop "Delete all "toolprefix = " lines from
build/toolchain/linux/BUILD.gn"
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index 9bd1ec1..7cc4c18 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -105,9 +105,9 @@ Patch22: qtwebengine-opensource-src-5.9.0-system-re2.patch
# Backport upstream patch to fix GN FTBFS on aarch64 (QTBUG-61128)
# https://codereview.qt-project.org/196178
Patch100: qtwebengine-opensource-src-5.9.0-gn-aarch64.patch
-# Backport patch to fix FTBFS with GCC on aarch64 from upstream Chromium
-# https://codereview.chromium.org/2545053002
-Patch101: qtwebengine-opensource-src-5.9.0-aarch64-gcc-toolchain.patch
+# Backport upstream patch to fix native builds on ARM and aarch64 (QTBUG-61128)
+# https://codereview.qt-project.org/197071
+Patch101: qtwebengine-opensource-src-5.9.0-host-toolchain.patch
%if 0%{?fedora} && 0%{?fedora} < 25
# work around missing qt5_qtwebengine_arches macro on F24
@@ -354,7 +354,7 @@ BuildArch: noarch
%patch21 -p1 -b .gn-bootstrap-verbose
%patch22 -p1 -b .system-re2
%patch100 -p1 -b .gn-aarch64
-%patch101 -p1 -b .aarch64-gcc-toolchain
+%patch101 -p1 -b .host-toolchain
# fix // in #include in content/renderer/gpu to avoid debugedit failure
sed -i -e 's!gpu//!gpu/!g' \
src/3rdparty/chromium/content/renderer/gpu/compositor_forwarding_message_filter.cc
@@ -362,10 +362,6 @@ sed -i -e 's!gpu//!gpu/!g' \
sed -i -e 's!\./!!g' \
src/3rdparty/chromium/third_party/angle/src/compiler/preprocessor/Tokenizer.cpp \
src/3rdparty/chromium/third_party/angle/src/compiler/translator/glslang_lex.cpp
-# delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn, as we
-# never cross-compile in native Fedora RPMs, fixes ARM and aarch64 FTBFS
-sed -i -e '/toolprefix = /d' -e 's/\${toolprefix}//g' \
- src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
# http://bugzilla.redhat.com/1337585
# can't just delete, but we'll overwrite with system headers to be on the safe side
@@ -575,9 +571,8 @@ done
- Drop the flag hacks (-g1 -fno-delete-null-pointer-checks), fixed upstream
- Force verbose output from the GN bootstrap process
- Backport upstream patch to fix GN FTBFS on aarch64 (QTBUG-61128)
-- Backport patch to fix FTBFS with GCC on aarch64 from upstream Chromium
+- Backport upstream patch to fix native builds on ARM and aarch64 (QTBUG-61128)
- Fix src/3rdparty/chromium/build/linux/unbundle/re2.gn
-- Delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn
* Sat May 13 2017 Rex Dieter <rdieter(a)fedoraproject.org> - 5.8.0-14
- fix rpm macros
diff --git a/qtwebengine-opensource-src-5.9.0-aarch64-gcc-toolchain.patch b/qtwebengine-opensource-src-5.9.0-aarch64-gcc-toolchain.patch
deleted file mode 100644
index 76228a0..0000000
--- a/qtwebengine-opensource-src-5.9.0-aarch64-gcc-toolchain.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-Index: src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
-diff --git a/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn b/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
-index 548722d3938017ac936b9088b7a686c2afbbb5fe..86cd7dabc6e86d22a266817dfbb3bf0c719f7992 100644
---- a/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
-+++ b/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
-@@ -21,6 +21,24 @@ clang_toolchain("clang_arm64") {
- }
- }
-
-+gcc_toolchain("arm64") {
-+ toolprefix = "aarch64-linux-gnu-"
-+
-+ cc = "${toolprefix}gcc"
-+ cxx = "${toolprefix}g++"
-+
-+ ar = "${toolprefix}ar"
-+ ld = cxx
-+ readelf = "${toolprefix}readelf"
-+ nm = "${toolprefix}nm"
-+
-+ toolchain_args = {
-+ current_cpu = "arm64"
-+ current_os = "linux"
-+ is_clang = false
-+ }
-+}
-+
- gcc_toolchain("arm") {
- toolprefix = "arm-linux-gnueabihf-"
-
diff --git a/qtwebengine-opensource-src-5.9.0-host-toolchain.patch b/qtwebengine-opensource-src-5.9.0-host-toolchain.patch
new file mode 100644
index 0000000..aab4e90
--- /dev/null
+++ b/qtwebengine-opensource-src-5.9.0-host-toolchain.patch
@@ -0,0 +1,32 @@
+From 33b69c4d138a8eebc392737ee1a58d999f922d59 Mon Sep 17 00:00:00 2001
+From: Allan Sandfeld Jensen <allan.jensen(a)qt.io>
+Date: Mon, 12 Jun 2017 12:36:17 +0200
+Subject: [PATCH] Always set a host toolchain
+
+If we don't give Chromium a host toolchain it will pick one of its own
+overriding which compiler should be used, and breaking native builds
+on non-x86 architectuers.
+
+Task-number: QTBUG-61128
+Change-Id: Ia25a4f43a28214003abcb11dc75a0e57064f76a7
+---
+ src/core/config/linux.pri | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/config/linux.pri b/src/core/config/linux.pri
+index 24951cd..076d8a3 100644
+--- a/src/core/config/linux.pri
++++ b/src/core/config/linux.pri
+@@ -103,8 +103,8 @@ host_build {
+ gn_args += use_system_libffi=false
+ } else {
+ gn_args += custom_toolchain=\"$$QTWEBENGINE_OUT_ROOT/src/toolchain:target\"
++ gn_args += host_toolchain=\"$$QTWEBENGINE_OUT_ROOT/src/toolchain:host\"
+ cross_compile {
+- gn_args += host_toolchain=\"$$QTWEBENGINE_OUT_ROOT/src/toolchain:host\"
+ gn_args += v8_snapshot_toolchain=\"$$QTWEBENGINE_OUT_ROOT/src/toolchain:v8_snapshot\"
+ GN_HOST_CPU = $$gnArch($$QMAKE_HOST.arch)
+ GN_TARGET_CPU = $$gnArch($$QT_ARCH)
+--
+2.7.4
+
commit a9a9bd00cca91fe8bd0928641385ccc21d134d2c
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Mon Jun 12 13:00:31 2017 +0200
skia-neon patch: Fix gn error on armv7hl
diff --git a/qtwebengine-opensource-src-5.9.0-skia-neon.patch b/qtwebengine-opensource-src-5.9.0-skia-neon.patch
index 5dc8079..3506533 100644
--- a/qtwebengine-opensource-src-5.9.0-skia-neon.patch
+++ b/qtwebengine-opensource-src-5.9.0-skia-neon.patch
@@ -1,6 +1,6 @@
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/BUILD.gn qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/skia/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/skia/BUILD.gn 2017-06-12 12:24:57.026914055 +0200
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/skia/BUILD.gn 2017-06-12 12:59:26.707922417 +0200
@@ -486,6 +486,24 @@
# Separated out so it can be compiled with different flags for SSE.
@@ -12,7 +12,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/BUILD.gn q
+ # when running this.
+ if (!arm_use_neon) {
+ configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
-+ cflags += [ "-mfpu=neon" ]
++ cflags = [ "-mfpu=neon" ]
+ }
+ visibility = [ ":skia_opts" ]
+ configs -= [ "//build/config/compiler:chromium_code" ]
commit 4182a4d0e229b6b70c7e1f83deb0131132deb2f5
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Mon Jun 12 12:34:02 2017 +0200
no-sse2 patch: Only enable SSE2 in wsola-internal.cc if __SSE2__
Runtime detection would be nice to have, but for now this is the same
state as in 5.8. NEON is also not runtime-detected there. The x86_64 and
aarch64 builds will get the SIMD optimizations, the i686 and armv7hl
ones won't for now.
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
index b7cf31b..c118908 100644
--- a/qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -1595,6 +1595,18 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/BUILD.gn
}
# TODO(watk): Refactor tests that could be made to run on Android. See
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/filters/wsola_internals.cc qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/filters/wsola_internals.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/filters/wsola_internals.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/filters/wsola_internals.cc 2017-06-12 12:30:26.903281839 +0200
+@@ -15,7 +15,7 @@
+ #include "base/logging.h"
+ #include "media/base/audio_bus.h"
+
+-#if defined(ARCH_CPU_X86_FAMILY)
++#if defined(ARCH_CPU_X86_FAMILY) && defined(__SSE2__)
+ #define USE_SIMD 1
+ #include <xmmintrin.h>
+ #elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/skia/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/skia/BUILD.gn 2017-06-11 12:15:56.825339699 +0200
commit e4e544d68b23a9c0e9f1eeff857582eac4a144f8
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Mon Jun 12 12:28:19 2017 +0200
skia-neon patch: Do not build non-NEON ARM opts with -mfpu=neon
Also bump the changelog date in the specfile.
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index 34412a8..9bd1ec1 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -557,7 +557,7 @@ done
%changelog
-* Sun Jun 11 2017 Kevin Kofler <Kevin(a)tigcc.ticalc.org> - 5.9.0-1
+* Mon Jun 12 2017 Kevin Kofler <Kevin(a)tigcc.ticalc.org> - 5.9.0-1
- Update to 5.9.0
- Update version numbers of bundled stuff
- Use bundled libsrtp and protobuf, Chromium dropped unbundling support for them
diff --git a/qtwebengine-opensource-src-5.9.0-skia-neon.patch b/qtwebengine-opensource-src-5.9.0-skia-neon.patch
index a9e774a..5dc8079 100644
--- a/qtwebengine-opensource-src-5.9.0-skia-neon.patch
+++ b/qtwebengine-opensource-src-5.9.0-skia-neon.patch
@@ -1,6 +1,50 @@
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/BUILD.gn qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/skia/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/skia/BUILD.gn 2017-06-12 12:24:57.026914055 +0200
+@@ -486,6 +486,24 @@
+
+ # Separated out so it can be compiled with different flags for SSE.
+ if (!skia_build_no_opts) {
++ if (current_cpu == "arm" && (arm_use_neon || arm_optionally_use_neon)) {
++ source_set("skia_opts_neon") {
++ sources = skia_opts.neon_sources
++ # Root build config sets -mfpu=$arm_fpu, which we expect to be neon
++ # when running this.
++ if (!arm_use_neon) {
++ configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
++ cflags += [ "-mfpu=neon" ]
++ }
++ visibility = [ ":skia_opts" ]
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [
++ ":skia_config",
++ ":skia_library_config",
++ "//build/config/compiler:no_chromium_code",
++ ]
++ }
++ }
+ if (current_cpu == "arm64") {
+ source_set("skia_opts_crc32") {
+ sources = skia_opts.crc32_sources
+@@ -624,14 +642,7 @@
+ if (arm_version >= 7) {
+ sources = skia_opts.armv7_sources
+ if (arm_use_neon || arm_optionally_use_neon) {
+- sources += skia_opts.neon_sources
+-
+- # Root build config sets -mfpu=$arm_fpu, which we expect to be neon
+- # when running this.
+- if (!arm_use_neon) {
+- configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
+- cflags += [ "-mfpu=neon" ]
+- }
++ deps += [ ":skia_opts_neon" ]
+ }
+ } else {
+ sources = skia_opts.none_sources
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/gn/opts.gni qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/gn/opts.gni
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/gn/opts.gni 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/gn/opts.gni 2017-06-10 13:01:07.120762647 +0200
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/gn/opts.gni 2017-06-12 12:20:30.277109309 +0200
@@ -23,6 +23,7 @@
"$_src/opts/SkBitmapProcState_matrixProcs_neon.cpp",
"$_src/opts/SkBlitMask_opts_arm_neon.cpp",
@@ -19,7 +63,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/ski
crc32 = [ "$_src/opts/SkOpts_crc32.cpp" ]
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState.cpp qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState.cpp
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState.cpp 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState.cpp 2017-06-10 12:52:48.259092758 +0200
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState.cpp 2017-06-12 12:20:30.382107811 +0200
@@ -19,7 +19,7 @@
#include "SkImageEncoder.h"
#include "SkResourceCache.h"
@@ -40,7 +84,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/ski
S32_alpha_D32_nofilter_DXDY,
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState_matrixProcs.cpp qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState_matrixProcs.cpp
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState_matrixProcs.cpp 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState_matrixProcs.cpp 2017-06-10 12:52:48.259092758 +0200
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState_matrixProcs.cpp 2017-06-12 12:20:30.448106869 +0200
@@ -47,16 +47,16 @@
///////////////////////////////////////////////////////////////////////////////
@@ -63,7 +107,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/ski
#define TILEY_PROCF(fy, max) SkClampMax((fy) >> 16, max)
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkBlitter_RGB16.cpp qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkBlitter_RGB16.cpp
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkBlitter_RGB16.cpp 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkBlitter_RGB16.cpp 2017-06-10 12:52:48.260092743 +0200
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkBlitter_RGB16.cpp 2017-06-12 12:20:30.449106855 +0200
@@ -20,7 +20,7 @@
uint32_t expanded32, unsigned maskRB);
#endif
@@ -102,7 +146,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/ski
do {
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp 2017-06-10 13:10:57.090108380 +0200
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp 2017-06-12 12:20:30.449106855 +0200
@@ -73,6 +73,124 @@
return features;
}
@@ -230,7 +274,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/ski
!defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkOpts.cpp qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkOpts.cpp
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkOpts.cpp 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkOpts.cpp 2017-06-10 12:56:42.672648362 +0200
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkOpts.cpp 2017-06-12 12:20:30.449106855 +0200
@@ -99,6 +99,7 @@
void Init_avx();
void Init_hsw();
@@ -251,7 +295,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/ski
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkUtilsArm.h qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkUtilsArm.h
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkUtilsArm.h 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkUtilsArm.h 2017-06-10 12:52:48.260092743 +0200
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkUtilsArm.h 2017-06-12 12:20:30.450106841 +0200
@@ -8,12 +8,75 @@
#ifndef SkUtilsArm_DEFINED
#define SkUtilsArm_DEFINED
@@ -334,7 +378,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/ski
#endif // SkUtilsArm_DEFINED
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/opts/SkOpts_neon.cpp qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/opts/SkOpts_neon.cpp
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/opts/SkOpts_neon.cpp 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/opts/SkOpts_neon.cpp 2017-06-10 12:52:48.259092758 +0200
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/opts/SkOpts_neon.cpp 2017-06-12 12:20:30.450106841 +0200
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2015 Google Inc.
commit 5b26f1b0c1b509cb48c45393152fcba1c708223a
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Mon Jun 12 01:54:07 2017 +0200
Build with -g1 on x86_64 too
Unfortunately, eu-strip now segfaults while processing the -g2 debugging
information on x86_64.
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index 73f8c59..34412a8 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -371,9 +371,12 @@ sed -i -e '/toolprefix = /d' -e 's/\${toolprefix}//g' \
# can't just delete, but we'll overwrite with system headers to be on the safe side
cp -bv /usr/include/re2/*.h src/3rdparty/chromium/third_party/re2/src/re2/
-%ifarch x86_64
-# most arches run out of memory with full debuginfo, so use -g1 on non-x86_64
-# (which is now the upstream default), force -g2 on x86_64
+%if 0
+#ifarch x86_64
+# enable this to force -g2 on x86_64 (most arches run out of memory with -g2)
+# DISABLED BECAUSE OF:
+# /usr/lib/rpm/find-debuginfo.sh: line 188: 3619 Segmentation fault
+# (core dumped) eu-strip --remove-comment $r $g -f "$1" "$2"
sed -i -e 's/symbol_level=1/symbol_level=2/g' src/core/config/common.pri
%endif
@@ -569,8 +572,7 @@ done
- Drop webrtc-neon, v8-gcc7, pdfium-gcc7, wtf-gcc7, fix-open-in-new-tab and
fix-dead-keys patches, fixed upstream
- Update system libvpx/libwebp version requirements (libvpx now F25+ only)
-- Drop the flag hacks (-g1 -fno-delete-null-pointer-checks) that are fixed
- upstream, force -g2 on x86_64 instead
+- Drop the flag hacks (-g1 -fno-delete-null-pointer-checks), fixed upstream
- Force verbose output from the GN bootstrap process
- Backport upstream patch to fix GN FTBFS on aarch64 (QTBUG-61128)
- Backport patch to fix FTBFS with GCC on aarch64 from upstream Chromium
commit 88ac91a5b7a6c840ec10c00ef63f4dda82c21252
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Mon Jun 12 01:49:42 2017 +0200
no-sse2 patch: Define V8_TARGET_ARCH_X87 for the V8 x87 build
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
index 63c29ce..b7cf31b 100644
--- a/qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -2690,7 +2690,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/web
#endif
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn 2017-06-10 21:40:01.510564765 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn 2017-06-12 01:48:06.425611303 +0200
@@ -73,6 +73,9 @@
# If true, doesn't compile debug symbols into v8base reducing the
# size of the binary and increasing the speed of gdb.
@@ -2747,7 +2747,17 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn qtw
defines = [ "USING_V8_SHARED" ]
}
include_dirs = [ "include" ]
-@@ -2274,7 +2281,7 @@
+@@ -331,6 +338,9 @@
+ cflags += [ "/arch:SSE2" ]
+ }
+ }
++ if (v8_current_cpu == "x87") {
++ defines += [ "V8_TARGET_ARCH_X87" ]
++ }
+ if (v8_current_cpu == "x64") {
+ defines += [ "V8_TARGET_ARCH_X64" ]
+ if (is_win) {
+@@ -2274,7 +2284,7 @@
defines = []
@@ -2756,7 +2766,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn qtw
defines = [ "BUILDING_V8_BASE_SHARED" ]
}
-@@ -2364,7 +2371,7 @@
+@@ -2364,7 +2374,7 @@
configs = [ ":internal_config_base" ]
@@ -2765,7 +2775,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn qtw
defines = [ "BUILDING_V8_PLATFORM_SHARED" ]
}
-@@ -2507,7 +2514,26 @@
+@@ -2507,7 +2517,26 @@
}
}
commit 519e5a6cad35dd95daa7ff1b9e72f88bb00aa546
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Mon Jun 12 00:38:08 2017 +0200
Delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index 5199684..73f8c59 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -362,6 +362,10 @@ sed -i -e 's!gpu//!gpu/!g' \
sed -i -e 's!\./!!g' \
src/3rdparty/chromium/third_party/angle/src/compiler/preprocessor/Tokenizer.cpp \
src/3rdparty/chromium/third_party/angle/src/compiler/translator/glslang_lex.cpp
+# delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn, as we
+# never cross-compile in native Fedora RPMs, fixes ARM and aarch64 FTBFS
+sed -i -e '/toolprefix = /d' -e 's/\${toolprefix}//g' \
+ src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
# http://bugzilla.redhat.com/1337585
# can't just delete, but we'll overwrite with system headers to be on the safe side
@@ -571,6 +575,7 @@ done
- Backport upstream patch to fix GN FTBFS on aarch64 (QTBUG-61128)
- Backport patch to fix FTBFS with GCC on aarch64 from upstream Chromium
- Fix src/3rdparty/chromium/build/linux/unbundle/re2.gn
+- Delete all "toolprefix = " lines from build/toolchain/linux/BUILD.gn
* Sat May 13 2017 Rex Dieter <rdieter(a)fedoraproject.org> - 5.8.0-14
- fix rpm macros
commit 139a3d63da6d42319ad5dc260e97df73c0ce1616
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Mon Jun 12 00:37:01 2017 +0200
no-sse2 patch: More FTBFS fixes
* add missing configs for the blink_x86_sse2 source set in
src/3rdparty/chromium/third_party/WebKit/Source/platform/BUILD.gn
* in src/core/core_module.pro, when processing NINJA_SOLIBS, ignore the
dummy convert_dict shared library used only to get a .pri file
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
index 7d495b2..63c29ce 100644
--- a/qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -2553,7 +2553,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/Web
+#include "VectorMath.cpp"
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/BUILD.gn 2017-06-10 15:47:49.419707504 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/BUILD.gn 2017-06-12 00:21:47.738315411 +0200
@@ -1529,6 +1529,10 @@
deps += [ ":blink_x86_sse" ]
}
@@ -2565,12 +2565,10 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/Web
if (use_webaudio_ffmpeg) {
include_dirs += [ "//third_party/ffmpeg" ]
deps += [ "//third_party/ffmpeg" ]
-@@ -1912,6 +1916,20 @@
- deps = [
- ":blink_common",
+@@ -1914,6 +1918,26 @@
]
-+ }
-+}
+ }
+ }
+
+if (current_cpu == "x86") {
+ source_set("blink_x86_sse2") {
@@ -2583,9 +2581,17 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/Web
+ deps = [
+ ":blink_common",
+ ]
- }
- }
++ configs += [
++ # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
++ "//build/config/compiler:no_size_t_to_int_warning",
++ "//third_party/WebKit/Source:config",
++ "//third_party/WebKit/Source:non_test_config",
++ ]
++ }
++}
+ # This source set is used for fuzzers that need an environment similar to unit
+ # tests.
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h 2017-05-18 16:51:44.000000000 +0200
+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h 2017-06-08 22:50:09.251079402 +0200
@@ -2849,21 +2855,24 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/make-v8-sse2
+ v8.gyp >>v8_sse2.gyp
diff -Nur qtwebengine-opensource-src-5.9.0/src/core/core_module.pro qtwebengine-opensource-src-5.9.0-no-sse2/src/core/core_module.pro
--- qtwebengine-opensource-src-5.9.0/src/core/core_module.pro 2017-05-19 06:22:04.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/core/core_module.pro 2017-06-09 00:59:19.199411383 +0200
-@@ -41,6 +41,28 @@
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/core/core_module.pro 2017-06-12 00:25:07.241337485 +0200
+@@ -41,6 +41,31 @@
else: QMAKE_LFLAGS += $$NINJA_LFLAGS
POST_TARGETDEPS += $$NINJA_TARGETDEPS
+# go through the shared libraries that GN wants to link to
++# ignore the dummy convert_dict shared library used only to get a .pri file
+# add the ones NOT in lib/sse2 to LIBS_PRIVATE
+# don't add those in lib/sse2 that are only replacements for the normal ones
+# collect all shared libraries, non-SSE2 and SSE2, so they can be installed
+for(shlib, NINJA_SOLIBS) {
-+ contains(shlib, .*/lib/sse2/.*) {
-+ shlibs_sse2 += $$shlib
-+ } else {
-+ LIBS_PRIVATE += $$shlib
-+ shlibs += $$shlib
++ !contains(shlib, .*convert_dict.*) {
++ contains(shlib, .*/lib/sse2/.*) {
++ shlibs_sse2 += $$shlib
++ } else {
++ LIBS_PRIVATE += $$shlib
++ shlibs += $$shlib
++ }
+ }
+}
+
@@ -2879,7 +2888,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/core/core_module.pro qtwebengine-
LIBS_PRIVATE += -L$$api_library_path
CONFIG *= no_smart_library_merge
-@@ -100,7 +122,12 @@
+@@ -100,7 +125,12 @@
locales.path = $$[QT_INSTALL_TRANSLATIONS]/qtwebengine_locales
resources.CONFIG += no_check_exist
resources.path = $$[QT_INSTALL_DATA]/resources
commit 290964abea98cd0e6ed9a4cd5455c208e3b1eef5
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sun Jun 11 13:04:09 2017 +0200
clean_ffmpeg.sh: Add missing libavutil/hwcontext_internal.h
Also update sources with the regenerated and reuploaded tarball.
diff --git a/clean_ffmpeg.sh b/clean_ffmpeg.sh
index 19ee99a..0b1fa64 100755
--- a/clean_ffmpeg.sh
+++ b/clean_ffmpeg.sh
@@ -63,6 +63,7 @@ header_files=" libavutil/x86/asm.h \
libavutil/ffmath.h \
libavutil/float_dsp.h \
libavutil/fixed_dsp.h \
+ libavutil/hwcontext_internal.h \
libavutil/internal.h \
libavutil/intfloat.h \
libavutil/intreadwrite.h \
diff --git a/sources b/sources
index bd5c37a..2a6156f 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (qtwebengine-opensource-src-5.9.0-clean.tar.xz) = 1ad92d3fb1491f5396e39bc6e0905e019959b420c77c6e3056a032b08b3c6d1c313f8cb2a5e0aad440ae8fc6442b966a7c7996dc2e759dd8c1632d8e027d6d50
+SHA512 (qtwebengine-opensource-src-5.9.0-clean.tar.xz) = b97da4c9cd98d4c9c3cd4f59a4b488f55234dab947d324956643d0ccd61a527d3b5d7c647626b947dfde6dedcce1a9fa630d81b40ff1200c445547e3466c0607
commit a6e4284e9f92d0cd1423652aaf5050431fb4a0fc
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sun Jun 11 12:25:55 2017 +0200
no-sse2 patch: Ensure opts_check_x86.cpp is not built with -msse2
This is the file that decides whether to use SSE2 code or not, it must
not contain any SSE2 code itself.
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
index 1675ca5..7d495b2 100644
--- a/qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -1597,7 +1597,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/BUILD.gn
# TODO(watk): Refactor tests that could be made to run on Android. See
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/skia/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/skia/BUILD.gn 2017-06-08 23:34:35.516753817 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/skia/BUILD.gn 2017-06-11 12:15:56.825339699 +0200
@@ -231,11 +231,6 @@
if (!is_ios) {
sources += [ "ext/platform_canvas.cc" ]
@@ -1610,24 +1610,54 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/BUILD.gn q
# The skia gypi values are relative to the skia_dir, so we need to rebase.
sources += skia_core_sources
-@@ -608,7 +603,15 @@
+@@ -500,6 +495,31 @@
+ }
+ }
+ if (current_cpu == "x86" || current_cpu == "x64") {
++ source_set("skia_opts_sse2") {
++ sources = skia_opts.sse2_sources +
++ [
++ # Chrome-specific.
++ "ext/convolver_SSE2.cc",
++ "ext/convolver_SSE2.h",
++ ]
++ sources -= [
++ # Detection code must not be built with -msse2
++ "//third_party/skia/src/opts/opts_check_x86.cpp",
++ ]
++ if (!is_win || is_clang) {
++ cflags = [ "-msse2" ]
++ }
++ if (is_win) {
++ defines = [ "SK_CPU_SSE_LEVEL=20" ]
++ }
++ visibility = [ ":skia_opts" ]
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [
++ ":skia_config",
++ ":skia_library_config",
++ "//build/config/compiler:no_chromium_code",
++ ]
++ }
+ source_set("skia_opts_sse3") {
+ sources = skia_opts.ssse3_sources
+ if (!is_win || is_clang) {
+@@ -608,10 +628,13 @@
if (skia_build_no_opts) {
sources = skia_opts.none_sources
} else if (current_cpu == "x86" || current_cpu == "x64") {
- sources = skia_opts.sse2_sources
-+ sources = skia_opts.sse2_sources +
-+ [
-+ # Chrome-specific.
-+ "ext/convolver_SSE2.cc",
-+ "ext/convolver_SSE2.h",
-+ ]
-+ if (!is_win || is_clang) {
-+ cflags += [ "-msse2" ]
-+ }
++ sources = [
++ "//third_party/skia/src/opts/opts_check_x86.cpp",
++ ]
deps += [
":skia_opts_avx",
":skia_opts_hsw",
-@@ -644,6 +647,13 @@
++ ":skia_opts_sse2",
+ ":skia_opts_sse3",
+ ":skia_opts_sse41",
+ ":skia_opts_sse42",
+@@ -644,6 +667,13 @@
if (mips_dsp_rev >= 1) {
sources = skia_opts.mips_dsp_sources
commit 3cc5bcddde8de872e3c2b492f629907663e84b7e
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sun Jun 11 12:19:41 2017 +0200
clean_ffmpeg.sh: Add missing libavutil/ffmath.h
Also update sources with the regenerated and reuploaded tarball.
diff --git a/clean_ffmpeg.sh b/clean_ffmpeg.sh
index e01cbaf..19ee99a 100755
--- a/clean_ffmpeg.sh
+++ b/clean_ffmpeg.sh
@@ -60,6 +60,7 @@ header_files=" libavutil/x86/asm.h \
libavutil/cpu_internal.h \
libavutil/cpu.h \
libavutil/dynarray.h \
+ libavutil/ffmath.h \
libavutil/float_dsp.h \
libavutil/fixed_dsp.h \
libavutil/internal.h \
diff --git a/sources b/sources
index 56acd83..bd5c37a 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (qtwebengine-opensource-src-5.9.0-clean.tar.xz) = ee0eeaa81302c609ea35df3bdffa2099ce2bbf90bb24d40da2153c0cf4a3af1a80a5e02d1a106ec4e9064b3c115557991246417521150b497b10fcde10c1db22
+SHA512 (qtwebengine-opensource-src-5.9.0-clean.tar.xz) = 1ad92d3fb1491f5396e39bc6e0905e019959b420c77c6e3056a032b08b3c6d1c313f8cb2a5e0aad440ae8fc6442b966a7c7996dc2e759dd8c1632d8e027d6d50
commit 3bbd19ebc7290310817733c9c54efd4286d9906d
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sun Jun 11 11:42:51 2017 +0200
clean_ffmpeg.sh: Add missing libavcodec/unary.h
Also update sources with the regenerated and reuploaded tarball.
diff --git a/clean_ffmpeg.sh b/clean_ffmpeg.sh
index 30b440d..e01cbaf 100755
--- a/clean_ffmpeg.sh
+++ b/clean_ffmpeg.sh
@@ -139,6 +139,7 @@ header_files=" libavutil/x86/asm.h \
libavcodec/rnd_avg.h \
libavcodec/thread.h \
libavcodec/tpel_template.c \
+ libavcodec/unary.h \
libavcodec/version.h \
libavcodec/videodsp.h \
libavcodec/vlc.h \
diff --git a/sources b/sources
index 6695465..56acd83 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (qtwebengine-opensource-src-5.9.0-clean.tar.xz) = 27f42c3943ff9358e0b0fbf8811ee93bf782971b31a47404bba564306c1a79d6bb2b2d5ffc0f6982bb8d0b0a18e1338f6d321b1cb7c2b057eb7f0e12225a6e5a
+SHA512 (qtwebengine-opensource-src-5.9.0-clean.tar.xz) = ee0eeaa81302c609ea35df3bdffa2099ce2bbf90bb24d40da2153c0cf4a3af1a80a5e02d1a106ec4e9064b3c115557991246417521150b497b10fcde10c1db22
commit be65fce41a7f019f8f423a99cea3f23cd35ca960
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sun Jun 11 04:23:07 2017 +0200
clean_ffmpeg.sh: Add some header_files needed by the new manual_files
Also update sources with the regenerated and reuploaded tarball.
diff --git a/clean_ffmpeg.sh b/clean_ffmpeg.sh
index b1d3a6e..30b440d 100755
--- a/clean_ffmpeg.sh
+++ b/clean_ffmpeg.sh
@@ -60,6 +60,8 @@ header_files=" libavutil/x86/asm.h \
libavutil/cpu_internal.h \
libavutil/cpu.h \
libavutil/dynarray.h \
+ libavutil/float_dsp.h \
+ libavutil/fixed_dsp.h \
libavutil/internal.h \
libavutil/intfloat.h \
libavutil/intreadwrite.h \
@@ -102,6 +104,7 @@ header_files=" libavutil/x86/asm.h \
libavcodec/error_resilience.h \
libavcodec/fdctdsp.h \
libavcodec/flac.h \
+ libavcodec/flacdsp.h \
libavcodec/fft.h \
libavcodec/fft-internal.h \
libavcodec/fft_table.h \
@@ -138,7 +141,9 @@ header_files=" libavutil/x86/asm.h \
libavcodec/tpel_template.c \
libavcodec/version.h \
libavcodec/videodsp.h \
+ libavcodec/vlc.h \
libavcodec/vorbis_parser_internal.h \
+ libavcodec/vorbisdsp.h \
libavcodec/vp3data.h \
libavcodec/vp3dsp.h \
libavcodec/vp56.h \
diff --git a/sources b/sources
index 1e150ee..6695465 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (qtwebengine-opensource-src-5.9.0-clean.tar.xz) = 868f215e80594576652282025dccc4fcb48aa3834f9943f2365535498f4e1dd1eaf1c0c01984b42ee1c2b122db69dacf164203f5de2ed2dd8098ce930a1f9156
+SHA512 (qtwebengine-opensource-src-5.9.0-clean.tar.xz) = 27f42c3943ff9358e0b0fbf8811ee93bf782971b31a47404bba564306c1a79d6bb2b2d5ffc0f6982bb8d0b0a18e1338f6d321b1cb7c2b057eb7f0e12225a6e5a
commit a055048ab6649e1194feb364c0358a5d6609c217
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sun Jun 11 03:29:36 2017 +0200
no-sse2 patch: Yet another ANGLE BUILD.gn fix
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
index 5feb31e..1675ca5 100644
--- a/qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -1675,8 +1675,8 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/ext/convol
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/BUILD.gn 2017-06-11 02:59:25.143867714 +0200
-@@ -160,6 +160,22 @@
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/BUILD.gn 2017-06-11 03:28:05.966523743 +0200
+@@ -160,6 +160,26 @@
public_deps = [
":angle_common",
]
@@ -1692,6 +1692,10 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/ang
+ configs -= angle_undefine_configs
+ configs += [ ":internal_config" ]
+
++ deps = [
++ ":angle_common",
++ ]
++
+ sources = [
+ "src/image_util/loadimage_SSE2.cpp",
+ ]
commit d1867a78c6854a1a725ec2795fcdf89e769064a4
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sun Jun 11 03:07:47 2017 +0200
no-sse2 patch: Do not use Chromium headers in ANGLE
Instead of relying on base/cpu.h, copy its implementation of __cpuid for
GCC/Clang (from base/cpu.cc) and use the original SSE2 detection code
from ANGLE using __cpuid.
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
index 096abe3..5feb31e 100644
--- a/qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -1675,16 +1675,8 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/ext/convol
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/BUILD.gn 2017-06-11 02:44:06.761460476 +0200
-@@ -154,12 +154,32 @@
-
- configs -= angle_undefine_configs
- configs += [ ":internal_config" ]
-+ # readd the default include directories after ours, for base/cpu.h
-+ configs += angle_undefine_configs
-
- public_configs = [ ":angle_image_util_config" ]
-
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/BUILD.gn 2017-06-11 02:59:25.143867714 +0200
+@@ -160,6 +160,22 @@
public_deps = [
":angle_common",
]
@@ -1699,8 +1691,6 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/ang
+source_set("angle_image_util_x86_sse2") {
+ configs -= angle_undefine_configs
+ configs += [ ":internal_config" ]
-+ # readd the default include directories after ours, for base/cpu.h
-+ configs += angle_undefine_configs
+
+ sources = [
+ "src/image_util/loadimage_SSE2.cpp",
@@ -1711,20 +1701,42 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/ang
static_library("translator") {
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/src/common/mathutil.h qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/src/common/mathutil.h
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/src/common/mathutil.h 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/src/common/mathutil.h 2017-06-11 01:08:46.225333830 +0200
-@@ -17,6 +17,7 @@
- #include <stdlib.h>
-
- #include <base/numerics/safe_math.h>
-+#include <base/cpu.h>
-
- #include "common/debug.h"
- #include "common/platform.h"
-@@ -142,9 +143,12 @@
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/src/common/mathutil.h 2017-06-11 03:04:02.402397018 +0200
+@@ -142,9 +142,42 @@
}
}
-inline bool supportsSSE2()
++#if defined(ANGLE_USE_SSE) && !defined(__x86_64__) && !defined(__SSE2__) && !defined(_MSC_VER)
++
++// From the base/cpu.cc in Chromium, to avoid depending on Chromium headers
++
++#if defined(__pic__) && defined(__i386__)
++
++static inline void __cpuid(int cpu_info[4], int info_type) {
++ __asm__ volatile (
++ "mov %%ebx, %%edi\n"
++ "cpuid\n"
++ "xchg %%edi, %%ebx\n"
++ : "=a"(cpu_info[0]), "=D"(cpu_info[1]), "=c"(cpu_info[2]), "=d"(cpu_info[3])
++ : "a"(info_type)
++ );
++}
++
++#else
++
++static inline void __cpuid(int cpu_info[4], int info_type) {
++ __asm__ volatile (
++ "cpuid\n"
++ : "=a"(cpu_info[0]), "=b"(cpu_info[1]), "=c"(cpu_info[2]), "=d"(cpu_info[3])
++ : "a"(info_type)
++ );
++}
++
++#endif
++
++#endif
++
+static inline bool supportsSSE2()
{
#if defined(ANGLE_USE_SSE)
@@ -1734,24 +1746,19 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/ang
static bool checked = false;
static bool supports = false;
-@@ -153,21 +157,10 @@
+@@ -153,7 +186,6 @@
return supports;
}
-#if defined(ANGLE_PLATFORM_WINDOWS) && !defined(_M_ARM)
-- {
-- int info[4];
-- __cpuid(info, 0);
--
-- if (info[0] >= 1)
-- {
-- __cpuid(info, 1);
--
-- supports = (info[3] >> 26) & 1;
-- }
-- }
+ {
+ int info[4];
+ __cpuid(info, 0);
+@@ -165,9 +197,9 @@
+ supports = (info[3] >> 26) & 1;
+ }
+ }
-#endif // defined(ANGLE_PLATFORM_WINDOWS) && !defined(_M_ARM)
-+ supports = base::CPU().has_sse2();
checked = true;
return supports;
+#endif // defined(x86_64) || defined(__SSE2__)
commit d8a24a1ea7fe9bd8e6959841b523596a2fa6050c
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sun Jun 11 02:44:58 2017 +0200
no-sse2 patch: More ANGLE BUILD.gn fixes
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
index d1ec11f..096abe3 100644
--- a/qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -1675,8 +1675,16 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/ext/convol
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/BUILD.gn 2017-06-11 02:14:15.319585286 +0200
-@@ -160,6 +160,19 @@
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/BUILD.gn 2017-06-11 02:44:06.761460476 +0200
+@@ -154,12 +154,32 @@
+
+ configs -= angle_undefine_configs
+ configs += [ ":internal_config" ]
++ # readd the default include directories after ours, for base/cpu.h
++ configs += angle_undefine_configs
+
+ public_configs = [ ":angle_image_util_config" ]
+
public_deps = [
":angle_common",
]
@@ -1689,6 +1697,11 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/ang
+}
+
+source_set("angle_image_util_x86_sse2") {
++ configs -= angle_undefine_configs
++ configs += [ ":internal_config" ]
++ # readd the default include directories after ours, for base/cpu.h
++ configs += angle_undefine_configs
++
+ sources = [
+ "src/image_util/loadimage_SSE2.cpp",
+ ]
commit e7e2ed38c49d452270304c61c671597add0f1452
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sun Jun 11 02:16:40 2017 +0200
no-sse2 patch: Fix errors in BUILD.gn
Also bump the changelog date in the specfile.
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index 7a7d32e..5199684 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -550,7 +550,7 @@ done
%changelog
-* Sat Jun 10 2017 Kevin Kofler <Kevin(a)tigcc.ticalc.org> - 5.9.0-1
+* Sun Jun 11 2017 Kevin Kofler <Kevin(a)tigcc.ticalc.org> - 5.9.0-1
- Update to 5.9.0
- Update version numbers of bundled stuff
- Use bundled libsrtp and protobuf, Chromium dropped unbundling support for them
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
index b007e76..d1ec11f 100644
--- a/qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -1675,20 +1675,22 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/ext/convol
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/BUILD.gn 2017-06-11 01:02:55.060513393 +0200
-@@ -160,6 +160,17 @@
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/BUILD.gn 2017-06-11 02:14:15.319585286 +0200
+@@ -160,6 +160,19 @@
public_deps = [
":angle_common",
]
+
-+ deps = [
-+ ":angle_image_util_x86_sse2",
-+ ]
++ if (current_cpu == "x86") {
++ deps = [
++ ":angle_image_util_x86_sse2",
++ ]
++ }
+}
+
+source_set("angle_image_util_x86_sse2") {
+ sources = [
-+ "image_util/loadimage_SSE2.cpp",
++ "src/image_util/loadimage_SSE2.cpp",
+ ]
+ cflags = [ "-msse2", "-mfpmath=sse" ]
}
commit afe1f40a5430c450293b894d898ea732b1b0977e
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sun Jun 11 01:32:25 2017 +0200
clean_ffmpeg.sh: Add some more manual_files needed by autorename_*
Also update sources with the regenerated and reuploaded tarball.
diff --git a/clean_ffmpeg.sh b/clean_ffmpeg.sh
index 6b33ac9..b1d3a6e 100755
--- a/clean_ffmpeg.sh
+++ b/clean_ffmpeg.sh
@@ -205,9 +205,14 @@ manual_files=" libavutil/x86/x86inc.asm \
libavcodec/mdct_template.c \
libavcodec/pel_template.c \
libavcodec/videodsp_template.c \
+ libavcodec/flacdec.c \
+ libavcodec/flacdsp.c \
+ libavcodec/flacdsp_template.c \
+ libavcodec/flacdsp_lpc_template.c \
libavcodec/h264pred.c \
libavcodec/hpeldsp.c \
libavcodec/videodsp.c \
+ libavcodec/vorbisdsp.c \
libavcodec/vp3.c \
libavcodec/vp3_parser.c \
libavcodec/vp3dsp.c \
@@ -216,14 +221,20 @@ manual_files=" libavutil/x86/x86inc.asm \
libavcodec/vp8_parser.c \
libavcodec/vp8dsp.c \
libavutil/cpu.c \
+ libavutil/float_dsp.c \
+ libavutil/fixed_dsp.c \
+ libavutil/aarch64/float_dsp_neon.S \
libavutil/arm/cpu.c \
libavutil/arm/float_dsp_neon.S \
libavformat/options.c \
libavformat/pcm.c \
libavformat/utils.c \
libavcodec/utils.c \
+ libavcodec/aarch64/fft_neon.S \
libavcodec/aarch64/hpeldsp_neon.S \
libavcodec/aarch64/h264pred_neon.S \
+ libavcodec/aarch64/mdct_neon.S \
+ libavcodec/aarch64/vorbisdsp_neon.S \
libavcodec/arm/vorbisdsp_neon.S \
libavcodec/arm/mdct_neon.S \
libavcodec/arm/fft_neon.S \
diff --git a/sources b/sources
index bf7d94e..1e150ee 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (qtwebengine-opensource-src-5.9.0-clean.tar.xz) = 523568e690afa7dc4657458daa4c424a3006e32f4bcfbe015b90813b44967b36d9ec3263b4281089d33edd6e75d5b948cddc42792939fcf6aa71d051fc6937a8
+SHA512 (qtwebengine-opensource-src-5.9.0-clean.tar.xz) = 868f215e80594576652282025dccc4fcb48aa3834f9943f2365535498f4e1dd1eaf1c0c01984b42ee1c2b122db69dacf164203f5de2ed2dd8098ce930a1f9156
commit 114eb3b52d43ef63e736dfc695c2f6f513a3afd5
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sun Jun 11 01:13:38 2017 +0200
Fix SSE2 detection in ANGLE
- Build the SSE2 code in a separate compilation unit on i686.
- Make supportsSSE2() return always true rather than always false on
x86_64.
- Make supportsSSE2() call the detection code from base/cpu.h instead of
always returning false on i686.
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
index ed19885..b007e76 100644
--- a/qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -1673,9 +1673,233 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/ext/convol
#include "third_party/skia/include/core/SkSize.h"
#include "third_party/skia/include/core/SkTypes.h"
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/BUILD.gn 2017-06-11 01:02:55.060513393 +0200
+@@ -160,6 +160,17 @@
+ public_deps = [
+ ":angle_common",
+ ]
++
++ deps = [
++ ":angle_image_util_x86_sse2",
++ ]
++}
++
++source_set("angle_image_util_x86_sse2") {
++ sources = [
++ "image_util/loadimage_SSE2.cpp",
++ ]
++ cflags = [ "-msse2", "-mfpmath=sse" ]
+ }
+
+ static_library("translator") {
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/src/common/mathutil.h qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/src/common/mathutil.h
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/src/common/mathutil.h 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/src/common/mathutil.h 2017-06-11 01:08:46.225333830 +0200
+@@ -17,6 +17,7 @@
+ #include <stdlib.h>
+
+ #include <base/numerics/safe_math.h>
++#include <base/cpu.h>
+
+ #include "common/debug.h"
+ #include "common/platform.h"
+@@ -142,9 +143,12 @@
+ }
+ }
+
+-inline bool supportsSSE2()
++static inline bool supportsSSE2()
+ {
+ #if defined(ANGLE_USE_SSE)
++#if defined(__x86_64__) || defined(__SSE2__)
++ return true;
++#else
+ static bool checked = false;
+ static bool supports = false;
+
+@@ -153,21 +157,10 @@
+ return supports;
+ }
+
+-#if defined(ANGLE_PLATFORM_WINDOWS) && !defined(_M_ARM)
+- {
+- int info[4];
+- __cpuid(info, 0);
+-
+- if (info[0] >= 1)
+- {
+- __cpuid(info, 1);
+-
+- supports = (info[3] >> 26) & 1;
+- }
+- }
+-#endif // defined(ANGLE_PLATFORM_WINDOWS) && !defined(_M_ARM)
++ supports = base::CPU().has_sse2();
+ checked = true;
+ return supports;
++#endif // defined(x86_64) || defined(__SSE2__)
+ #else // defined(ANGLE_USE_SSE)
+ return false;
+ #endif
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/src/common/platform.h qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/src/common/platform.h
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/src/common/platform.h 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/src/common/platform.h 2017-06-11 00:43:54.961552623 +0200
+@@ -81,7 +81,9 @@
+ #include <intrin.h>
+ #define ANGLE_USE_SSE
+ #elif defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
++#if defined(__x86_64__) || defined(__SSE2__)
+ #include <x86intrin.h>
++#endif
+ #define ANGLE_USE_SSE
+ #endif
+
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/src/image_util/loadimage.cpp qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/src/image_util/loadimage.cpp
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/src/image_util/loadimage.cpp 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/src/image_util/loadimage.cpp 2017-06-11 00:58:53.706120530 +0200
+@@ -12,9 +12,17 @@
+ #include "common/platform.h"
+ #include "image_util/imageformats.h"
+
++#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
++#error SSE2 parts must be built with -msse2
++#endif
++
+ namespace angle
+ {
+
++#ifdef BUILD_ONLY_THE_SSE2_PARTS
++namespace SSE2 {
++#endif
++
+ void LoadA8ToRGBA8(size_t width,
+ size_t height,
+ size_t depth,
+@@ -28,6 +36,11 @@
+ #if defined(ANGLE_USE_SSE)
+ if (gl::supportsSSE2())
+ {
++#if !defined(__x86_64__) && !defined(__SSE2__)
++ angle::SSE2::LoadA8ToRGBA8(width, height, depth, input, inputRowPitch,
++ inputDepthPitch, output, outputRowPitch,
++ outputDepthPitch);
++#else
+ __m128i zeroWide = _mm_setzero_si128();
+
+ for (size_t z = 0; z < depth; z++)
+@@ -68,6 +81,7 @@
+ }
+ }
+ }
++#endif
+
+ return;
+ }
+@@ -89,6 +103,8 @@
+ }
+ }
+
++#ifndef BUILD_ONLY_THE_SSE2_PARTS
++
+ void LoadA8ToBGRA8(size_t width,
+ size_t height,
+ size_t depth,
+@@ -584,6 +600,8 @@
+ }
+ }
+
++#endif
++
+ void LoadRGBA8ToBGRA8(size_t width,
+ size_t height,
+ size_t depth,
+@@ -597,6 +615,11 @@
+ #if defined(ANGLE_USE_SSE)
+ if (gl::supportsSSE2())
+ {
++#if !defined(__x86_64__) && !defined(__SSE2__)
++ angle::SSE2::LoadRGBA8ToBGRA8(width, height, depth, input,
++ inputRowPitch, inputDepthPitch, output,
++ outputRowPitch, outputDepthPitch);
++#else
+ __m128i brMask = _mm_set1_epi32(0x00ff00ff);
+
+ for (size_t z = 0; z < depth; z++)
+@@ -641,6 +664,7 @@
+ }
+ }
+ }
++#endif
+
+ return;
+ }
+@@ -663,6 +687,8 @@
+ }
+ }
+
++#ifndef BUILD_ONLY_THE_SSE2_PARTS
++
+ void LoadRGBA8ToBGRA4(size_t width,
+ size_t height,
+ size_t depth,
+@@ -1320,4 +1346,10 @@
+ }
+ }
+
++#endif
++
++#ifdef BUILD_ONLY_THE_SSE2_PARTS
++} // namespace SSE2
++#endif
++
+ } // namespace angle
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/src/image_util/loadimage.h qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/src/image_util/loadimage.h
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/src/image_util/loadimage.h 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/src/image_util/loadimage.h 2017-06-11 00:52:18.251030762 +0200
+@@ -611,6 +611,32 @@
+ size_t outputRowPitch,
+ size_t outputDepthPitch);
+
++#if defined(__i386__)
++namespace SSE2 {
++
++void LoadA8ToRGBA8(size_t width,
++ size_t height,
++ size_t depth,
++ const uint8_t *input,
++ size_t inputRowPitch,
++ size_t inputDepthPitch,
++ uint8_t *output,
++ size_t outputRowPitch,
++ size_t outputDepthPitch);
++
++void LoadRGBA8ToBGRA8(size_t width,
++ size_t height,
++ size_t depth,
++ const uint8_t *input,
++ size_t inputRowPitch,
++ size_t inputDepthPitch,
++ uint8_t *output,
++ size_t outputRowPitch,
++ size_t outputDepthPitch);
++
++}
++#endif // defined(__i386__)
++
+ } // namespace angle
+
+ #include "loadimage.inl"
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/src/image_util/loadimage_SSE2.cpp qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/src/image_util/loadimage_SSE2.cpp
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/angle/src/image_util/loadimage_SSE2.cpp 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/angle/src/image_util/loadimage_SSE2.cpp 2017-06-11 00:59:45.318349164 +0200
+@@ -0,0 +1,2 @@
++#define BUILD_ONLY_THE_SSE2_PARTS
++#include "loadimage.cpp"
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/qcms/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/qcms/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/qcms/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/qcms/BUILD.gn 2017-06-08 22:50:07.147111135 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/qcms/BUILD.gn 2017-06-10 21:27:01.666198494 +0200
@@ -30,8 +30,8 @@
]
@@ -2404,7 +2628,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/web
#endif
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn 2017-06-10 15:20:10.847967062 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn 2017-06-10 21:40:01.510564765 +0200
@@ -73,6 +73,9 @@
# If true, doesn't compile debug symbols into v8base reducing the
# size of the binary and increasing the speed of gdb.
commit ac7d2ae4c97de63eac6cf0e3d270b6b9c743acfa
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sat Jun 10 23:28:39 2017 +0200
Fix src/3rdparty/chromium/build/linux/unbundle/re2.gn
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index a372459..7a7d32e 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -100,6 +100,8 @@ Patch12: qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch
Patch20: qtwebengine-opensource-src-5.8.0-qt57.patch
# Force verbose output from the GN bootstrap process
Patch21: qtwebengine-opensource-src-5.9.0-gn-bootstrap-verbose.patch
+# Fix src/3rdparty/chromium/build/linux/unbundle/re2.gn
+Patch22: qtwebengine-opensource-src-5.9.0-system-re2.patch
# Backport upstream patch to fix GN FTBFS on aarch64 (QTBUG-61128)
# https://codereview.qt-project.org/196178
Patch100: qtwebengine-opensource-src-5.9.0-gn-aarch64.patch
@@ -350,6 +352,7 @@ BuildArch: noarch
%patch12 -p1 -b .webrtc-neon-detect
%patch20 -p1 -b .qt57
%patch21 -p1 -b .gn-bootstrap-verbose
+%patch22 -p1 -b .system-re2
%patch100 -p1 -b .gn-aarch64
%patch101 -p1 -b .aarch64-gcc-toolchain
# fix // in #include in content/renderer/gpu to avoid debugedit failure
@@ -567,6 +570,7 @@ done
- Force verbose output from the GN bootstrap process
- Backport upstream patch to fix GN FTBFS on aarch64 (QTBUG-61128)
- Backport patch to fix FTBFS with GCC on aarch64 from upstream Chromium
+- Fix src/3rdparty/chromium/build/linux/unbundle/re2.gn
* Sat May 13 2017 Rex Dieter <rdieter(a)fedoraproject.org> - 5.8.0-14
- fix rpm macros
diff --git a/qtwebengine-opensource-src-5.9.0-system-re2.patch b/qtwebengine-opensource-src-5.9.0-system-re2.patch
new file mode 100644
index 0000000..ac7bf5d
--- /dev/null
+++ b/qtwebengine-opensource-src-5.9.0-system-re2.patch
@@ -0,0 +1,24 @@
+diff -ur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/build/linux/unbundle/re2.gn qtwebengine-opensource-src-5.9.0-system-re2/src/3rdparty/chromium/build/linux/unbundle/re2.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/build/linux/unbundle/re2.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-system-re2/src/3rdparty/chromium/build/linux/unbundle/re2.gn 2017-06-10 23:22:13.065385884 +0200
+@@ -5,13 +5,14 @@
+ import("//build/shim_headers.gni")
+
+ shim_headers("re2_shim") {
+- root_path = "src"
++ root_path = "src/re2"
++ prefix = "re2/"
+ headers = [
+- "re2/filtered_re2.h",
+- "re2/re2.h",
+- "re2/set.h",
+- "re2/stringpiece.h",
+- "re2/variadic_function.h",
++ "filtered_re2.h",
++ "re2.h",
++ "set.h",
++ "stringpiece.h",
++ "variadic_function.h",
+ ]
+ }
+
commit 0b8f82e8361b08d5719e9cf5cf140336ceaf534d
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sat Jun 10 23:27:07 2017 +0200
Backport patch to fix FTBFS with GCC on aarch64 from upstream Chromium
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index db20651..a372459 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -103,6 +103,9 @@ Patch21: qtwebengine-opensource-src-5.9.0-gn-bootstrap-verbose.patch
# Backport upstream patch to fix GN FTBFS on aarch64 (QTBUG-61128)
# https://codereview.qt-project.org/196178
Patch100: qtwebengine-opensource-src-5.9.0-gn-aarch64.patch
+# Backport patch to fix FTBFS with GCC on aarch64 from upstream Chromium
+# https://codereview.chromium.org/2545053002
+Patch101: qtwebengine-opensource-src-5.9.0-aarch64-gcc-toolchain.patch
%if 0%{?fedora} && 0%{?fedora} < 25
# work around missing qt5_qtwebengine_arches macro on F24
@@ -348,6 +351,7 @@ BuildArch: noarch
%patch20 -p1 -b .qt57
%patch21 -p1 -b .gn-bootstrap-verbose
%patch100 -p1 -b .gn-aarch64
+%patch101 -p1 -b .aarch64-gcc-toolchain
# fix // in #include in content/renderer/gpu to avoid debugedit failure
sed -i -e 's!gpu//!gpu/!g' \
src/3rdparty/chromium/content/renderer/gpu/compositor_forwarding_message_filter.cc
@@ -562,6 +566,7 @@ done
upstream, force -g2 on x86_64 instead
- Force verbose output from the GN bootstrap process
- Backport upstream patch to fix GN FTBFS on aarch64 (QTBUG-61128)
+- Backport patch to fix FTBFS with GCC on aarch64 from upstream Chromium
* Sat May 13 2017 Rex Dieter <rdieter(a)fedoraproject.org> - 5.8.0-14
- fix rpm macros
diff --git a/qtwebengine-opensource-src-5.9.0-aarch64-gcc-toolchain.patch b/qtwebengine-opensource-src-5.9.0-aarch64-gcc-toolchain.patch
new file mode 100644
index 0000000..76228a0
--- /dev/null
+++ b/qtwebengine-opensource-src-5.9.0-aarch64-gcc-toolchain.patch
@@ -0,0 +1,30 @@
+Index: src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
+diff --git a/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn b/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
+index 548722d3938017ac936b9088b7a686c2afbbb5fe..86cd7dabc6e86d22a266817dfbb3bf0c719f7992 100644
+--- a/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
++++ b/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
+@@ -21,6 +21,24 @@ clang_toolchain("clang_arm64") {
+ }
+ }
+
++gcc_toolchain("arm64") {
++ toolprefix = "aarch64-linux-gnu-"
++
++ cc = "${toolprefix}gcc"
++ cxx = "${toolprefix}g++"
++
++ ar = "${toolprefix}ar"
++ ld = cxx
++ readelf = "${toolprefix}readelf"
++ nm = "${toolprefix}nm"
++
++ toolchain_args = {
++ current_cpu = "arm64"
++ current_os = "linux"
++ is_clang = false
++ }
++}
++
+ gcc_toolchain("arm") {
+ toolprefix = "arm-linux-gnueabihf-"
+
commit f6784380ac380455d2c88b78543c5a4c2c5d0578
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sat Jun 10 22:20:01 2017 +0200
system-nspr-prtime, system-icu-utf: Fix gn error
diff --git a/qtwebengine-opensource-src-5.9.0-system-icu-utf.patch b/qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
index f9954c0..1c905e4 100644
--- a/qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
+++ b/qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
@@ -356,11 +356,11 @@ diff -ur qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromi
static_libraries['xdg_user_dirs'] = {
diff -ur qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/tools/gn/BUILD.gn qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/tools/gn/BUILD.gn
---- qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/tools/gn/BUILD.gn 2017-06-10 21:47:32.622964060 +0200
-+++ qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/tools/gn/BUILD.gn 2017-06-10 21:47:45.780913699 +0200
+--- qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/tools/gn/BUILD.gn 2017-06-10 22:18:26.863178931 +0200
++++ qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/tools/gn/BUILD.gn 2017-06-10 22:18:30.168114045 +0200
@@ -277,6 +277,7 @@
- libs += [
+ libs = [
"nspr4",
+ "icuuc",
]
diff --git a/qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch b/qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
index 3ecf053..ab14cb9 100644
--- a/qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
+++ b/qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
@@ -66,13 +66,13 @@ diff -ur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/tools/gn/bootstr
static_libraries['xdg_user_dirs'] = {
diff -ur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/tools/gn/BUILD.gn qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/tools/gn/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/tools/gn/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/tools/gn/BUILD.gn 2017-06-10 21:47:32.622964060 +0200
++++ qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/tools/gn/BUILD.gn 2017-06-10 22:18:26.863178931 +0200
@@ -274,6 +274,10 @@
"//build/config/sanitizers:deps",
"//build/win:default_exe_manifest",
]
+
-+ libs += [
++ libs = [
+ "nspr4",
+ ]
}
commit 9dda045143282097dcf7ae56141cd05dc499a694
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sat Jun 10 22:05:58 2017 +0200
Backport upstream patch to fix GN FTBFS on aarch64 (QTBUG-61128)
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index b2cebdc..db20651 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -100,6 +100,9 @@ Patch12: qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch
Patch20: qtwebengine-opensource-src-5.8.0-qt57.patch
# Force verbose output from the GN bootstrap process
Patch21: qtwebengine-opensource-src-5.9.0-gn-bootstrap-verbose.patch
+# Backport upstream patch to fix GN FTBFS on aarch64 (QTBUG-61128)
+# https://codereview.qt-project.org/196178
+Patch100: qtwebengine-opensource-src-5.9.0-gn-aarch64.patch
%if 0%{?fedora} && 0%{?fedora} < 25
# work around missing qt5_qtwebengine_arches macro on F24
@@ -344,6 +347,7 @@ BuildArch: noarch
%patch12 -p1 -b .webrtc-neon-detect
%patch20 -p1 -b .qt57
%patch21 -p1 -b .gn-bootstrap-verbose
+%patch100 -p1 -b .gn-aarch64
# fix // in #include in content/renderer/gpu to avoid debugedit failure
sed -i -e 's!gpu//!gpu/!g' \
src/3rdparty/chromium/content/renderer/gpu/compositor_forwarding_message_filter.cc
@@ -557,6 +561,7 @@ done
- Drop the flag hacks (-g1 -fno-delete-null-pointer-checks) that are fixed
upstream, force -g2 on x86_64 instead
- Force verbose output from the GN bootstrap process
+- Backport upstream patch to fix GN FTBFS on aarch64 (QTBUG-61128)
* Sat May 13 2017 Rex Dieter <rdieter(a)fedoraproject.org> - 5.8.0-14
- fix rpm macros
diff --git a/qtwebengine-opensource-src-5.9.0-gn-aarch64.patch b/qtwebengine-opensource-src-5.9.0-gn-aarch64.patch
new file mode 100644
index 0000000..1e8f31f
--- /dev/null
+++ b/qtwebengine-opensource-src-5.9.0-gn-aarch64.patch
@@ -0,0 +1,43 @@
+From 801c957651fba94b5d7dde9cc490378a4dc3a987 Mon Sep 17 00:00:00 2001
+From: Allan Sandfeld Jensen <allan.jensen(a)qt.io>
+Date: Thu, 1 Jun 2017 11:40:02 +0200
+Subject: [PATCH] [Backport] GN: Add Arm64 Linux support
+
+Add Arm64 linux support be able to build GN binary for
+native arm64 builds.
+
+R=dpranke(a)chromium.org, brettw(a)chromium.org
+
+Review-Url: https://codereview.chromium.org/2550673002
+
+Task-number: QTBUG-61128
+Change-Id: I3aa6b6ca7df374428a7f4a8b4db9f488a8926f6c
+Reviewed-by: Joerg Bornemann <joerg.bornemann(a)qt.io>
+---
+ chromium/tools/gn/args.cc | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/3rdparty/chromium/tools/gn/args.cc b/src/3rdparty/chromium/tools/gn/args.cc
+index 7285d7a..54703e1 100644
+--- a/src/3rdparty/chromium/tools/gn/args.cc
++++ b/src/3rdparty/chromium/tools/gn/args.cc
+@@ -266,6 +266,7 @@ void Args::SetSystemVarsLocked(Scope* dest) const {
+ static const char kX86[] = "x86";
+ static const char kX64[] = "x64";
+ static const char kArm[] = "arm";
++ static const char kArm64[] = "arm64";
+ static const char kMips[] = "mipsel";
+ static const char kS390X[] = "s390x";
+ static const char kPPC64[] = "ppc64";
+@@ -280,6 +281,8 @@ void Args::SetSystemVarsLocked(Scope* dest) const {
+ arch = kX64;
+ else if (os_arch.substr(0, 3) == "arm")
+ arch = kArm;
++ else if (os_arch == "aarch64")
++ arch = kArm64;
+ else if (os_arch == "mips")
+ arch = kMips;
+ else if (os_arch == "s390x")
+--
+2.7.4
+
commit 4422cf08d8b5e6938e11b10d0845c6e4c20a169a
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sat Jun 10 22:03:46 2017 +0200
system-nspr-prtime, system-icu-utf: Add missing link libraries to gn
diff --git a/qtwebengine-opensource-src-5.9.0-system-icu-utf.patch b/qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
index d35ba87..f9954c0 100644
--- a/qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
+++ b/qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
@@ -355,6 +355,17 @@ diff -ur qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromi
ldflags.extend(['-pthread'])
static_libraries['xdg_user_dirs'] = {
+diff -ur qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/tools/gn/BUILD.gn qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/tools/gn/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/tools/gn/BUILD.gn 2017-06-10 21:47:32.622964060 +0200
++++ qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/tools/gn/BUILD.gn 2017-06-10 21:47:45.780913699 +0200
+@@ -277,6 +277,7 @@
+
+ libs += [
+ "nspr4",
++ "icuuc",
+ ]
+ }
+
diff -ur qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc
--- qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc 2017-05-18 16:51:44.000000000 +0200
+++ qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc 2017-06-08 11:02:21.776777974 +0200
diff --git a/qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch b/qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
index 33dcc91..3ecf053 100644
--- a/qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
+++ b/qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
@@ -64,3 +64,17 @@ diff -ur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/tools/gn/bootstr
ldflags.extend(['-pthread'])
static_libraries['xdg_user_dirs'] = {
+diff -ur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/tools/gn/BUILD.gn qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/tools/gn/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/tools/gn/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/tools/gn/BUILD.gn 2017-06-10 21:47:32.622964060 +0200
+@@ -274,6 +274,10 @@
+ "//build/config/sanitizers:deps",
+ "//build/win:default_exe_manifest",
+ ]
++
++ libs += [
++ "nspr4",
++ ]
+ }
+
+ test("gn_unittests") {
commit 2b75cf68949e2ec9e69596f6c6d9fb7d152b65b3
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sat Jun 10 21:40:42 2017 +0200
Fix another error from gn in the no-sse2 patch
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
index efdfc7f..ed19885 100644
--- a/qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -2499,7 +2499,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn qtw
+ ":v8_maybe_snapshot",
+ ]
+
-+ configs = [ ":internal_config" ]
++ configs += [ ":internal_config" ]
+
+ public_configs = [ ":external_config" ]
+ }
commit 5ee9cc8b1161260be751ff8728dcba4f88df7a4a
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sat Jun 10 21:26:43 2017 +0200
Yet another no-sse2 patch typo fix
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
index 6b56f7d..efdfc7f 100644
--- a/qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -1683,7 +1683,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/qcm
- defines = [ "SSE2_ENABLE" ]
- sources += [ "src/transform-sse2.c" ]
+ defines = [ "SSE2_ENABLE" ] # runtime detection
-+ deps = [ "qcms_sse2" ]
++ deps = [ ":qcms_sse2" ]
}
}
commit 4fe1e7fce2bdfe781f5422e587cc0158c09f8fdc
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sat Jun 10 16:26:21 2017 +0200
Try to fix another no-sse2 patch FTBFS
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
index 314abdc..6b56f7d 100644
--- a/qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -30,6 +30,20 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/build/config/v8
+ v8_current_cpu = "x87"
+ }
+}
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/build/toolchain/gcc_toolchain.gni qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/build/toolchain/gcc_toolchain.gni
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/build/toolchain/gcc_toolchain.gni 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/build/toolchain/gcc_toolchain.gni 2017-06-10 16:24:14.175128763 +0200
+@@ -213,6 +213,10 @@
+ extra_ldflags = ""
+ }
+
++ if (defined(invoker.shlib_subdir)) {
++ shlib_subdir = invoker.shlib_subdir
++ }
++
+ # These library switches can apply to all tools below.
+ lib_switch = "-l"
+ lib_dir_switch = "-L"
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn 2017-06-10 02:09:47.874494730 +0200
@@ -2259,7 +2273,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/Web
+#include "VectorMath.cpp"
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/BUILD.gn 2017-06-09 00:40:12.361601303 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/BUILD.gn 2017-06-10 15:47:49.419707504 +0200
@@ -1529,6 +1529,10 @@
deps += [ ":blink_x86_sse" ]
}
@@ -2390,7 +2404,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/web
#endif
diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn
--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
-+++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn 2017-06-10 02:09:29.227782885 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn 2017-06-10 15:20:10.847967062 +0200
@@ -73,6 +73,9 @@
# If true, doesn't compile debug symbols into v8base reducing the
# size of the binary and increasing the speed of gdb.
commit c3ca37c839eb225df313fb88536f7f0261228ebe
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sat Jun 10 16:01:15 2017 +0200
Use bundled libxml2 and libxslt
QtWebEngine 5.9 requires a libxml2 built with ICU due to
https://bugreports.qt.io/browse/QTBUG-59094
Fedora libxml2 is not.
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index 3b5cc7e..b2cebdc 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -149,8 +149,6 @@ BuildRequires: pkgconfig(opus)
BuildRequires: pkgconfig(libevent)
BuildRequires: pkgconfig(zlib)
BuildRequires: pkgconfig(minizip)
-BuildRequires: pkgconfig(libxml-2.0)
-BuildRequires: pkgconfig(libxslt)
BuildRequires: pkgconfig(x11)
BuildRequires: pkgconfig(xi)
BuildRequires: pkgconfig(xcursor)
@@ -231,6 +229,10 @@ Provides: bundled(libvpx) = 1.6.0
%if !0%{?use_system_libwebp}
Provides: bundled(libwebp) = 0.5.1
%endif
+# see src/3rdparty/chromium/third_party/libxml/linux/include/libxml/xmlversion.h
+Provides: bundled(libxml2) = 2.9.4
+# see src/3rdparty/chromium/third_party/libxslt/libxslt/xsltconfig.h for version
+Provides: bundled(libxslt) = 1.1.29
Provides: bundled(libXNVCtrl) = 302.17
Provides: bundled(libyuv) = 1634
Provides: bundled(modp_b64)
@@ -541,6 +543,8 @@ done
- Update to 5.9.0
- Update version numbers of bundled stuff
- Use bundled libsrtp and protobuf, Chromium dropped unbundling support for them
+- Use bundled libxml2 and libxslt, QtWebEngine 5.9 requires a libxml2 built with
+ ICU due to https://bugreports.qt.io/browse/QTBUG-59094, Fedora libxml2 is not
- Add missing Provides: bundled(hunspell) for the spellchecking added in 5.8
- Rebase linux-pri, no-neon, system-icu-utf, no-sse2, arm-fpu-fix,
openmax-dl-neon and webrtc-neon-detect patches (port to GN)
commit 4d8875b36cc99d63a6fd93234171739245b7010b
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sat Jun 10 15:48:08 2017 +0200
Fix another typo in no-sse2 patch, should fix FTBFS
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
index b07085e..314abdc 100644
--- a/qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -2285,7 +2285,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/Web
+ "audio/SincResamplerSSE2.cpp",
+ "audio/VectorMathSSE2.cpp",
+ ]
-+ cflags = [ "-msse2", '-mfpmath=sse' ]
++ cflags = [ "-msse2", "-mfpmath=sse" ]
+ deps = [
+ ":blink_common",
+ ]
commit eb0dbd1b82b7d2648f5de5a7ca6c7a928354641e
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sat Jun 10 15:27:30 2017 +0200
Force verbose output from the GN bootstrap process
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index 15a0a20..3b5cc7e 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -98,6 +98,8 @@ Patch11: qtwebengine-opensource-src-5.9.0-skia-neon.patch
Patch12: qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch
# FTBFS using qt < 5.8
Patch20: qtwebengine-opensource-src-5.8.0-qt57.patch
+# Force verbose output from the GN bootstrap process
+Patch21: qtwebengine-opensource-src-5.9.0-gn-bootstrap-verbose.patch
%if 0%{?fedora} && 0%{?fedora} < 25
# work around missing qt5_qtwebengine_arches macro on F24
@@ -339,6 +341,7 @@ BuildArch: noarch
%patch11 -p1 -b .skia-neon
%patch12 -p1 -b .webrtc-neon-detect
%patch20 -p1 -b .qt57
+%patch21 -p1 -b .gn-bootstrap-verbose
# fix // in #include in content/renderer/gpu to avoid debugedit failure
sed -i -e 's!gpu//!gpu/!g' \
src/3rdparty/chromium/content/renderer/gpu/compositor_forwarding_message_filter.cc
@@ -549,6 +552,7 @@ done
- Update system libvpx/libwebp version requirements (libvpx now F25+ only)
- Drop the flag hacks (-g1 -fno-delete-null-pointer-checks) that are fixed
upstream, force -g2 on x86_64 instead
+- Force verbose output from the GN bootstrap process
* Sat May 13 2017 Rex Dieter <rdieter(a)fedoraproject.org> - 5.8.0-14
- fix rpm macros
diff --git a/qtwebengine-opensource-src-5.9.0-gn-bootstrap-verbose.patch b/qtwebengine-opensource-src-5.9.0-gn-bootstrap-verbose.patch
new file mode 100644
index 0000000..87b5beb
--- /dev/null
+++ b/qtwebengine-opensource-src-5.9.0-gn-bootstrap-verbose.patch
@@ -0,0 +1,12 @@
+diff -ur qtwebengine-opensource-src-5.9.0/src/buildtools/gn.pro qtwebengine-opensource-src-5.9.0-gn-bootstrap-verbose/src/buildtools/gn.pro
+--- qtwebengine-opensource-src-5.9.0/src/buildtools/gn.pro 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-gn-bootstrap-verbose/src/buildtools/gn.pro 2017-06-10 15:24:55.426814326 +0200
+@@ -20,7 +20,7 @@
+ src_3rd_party_dir = $$absolute_path("$${getChromiumSrcDir()}/../", "$$QTWEBENGINE_ROOT")
+ gn_bootstrap = $$system_path($$absolute_path(chromium/tools/gn/bootstrap/bootstrap.py, $$src_3rd_party_dir))
+ gn_args = $$system_quote($$gn_args)
+- gn_configure = $$system_quote($$gn_bootstrap) --shadow --gn-gen-args=$$gn_args $$ninja_path
++ gn_configure = $$system_quote($$gn_bootstrap) --verbose --shadow --gn-gen-args=$$gn_args $$ninja_path
+ !system("cd $$system_quote($$system_path($$dirname(out))) && $$pythonPathForSystem() $$gn_configure") {
+ error("GN build error!")
+ }
commit 7b17fa751bee2dd51c2f901f3d46bbe63038c200
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sat Jun 10 15:20:41 2017 +0200
Fix typo in no-sse2 patch, should fix FTBFS
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
index 5c10ebf..b07085e 100644
--- a/qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -2489,7 +2489,7 @@ diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn qtw
+
+ public_configs = [ ":external_config" ]
+ }
-+} else if (v8_is_component_build) {
++} else if (is_component_build) {
v8_component("v8") {
sources = [
"src/v8dll-main.cc",
commit c87d486b0024c40d9ecb66f76d518aadb53deb92
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Sat Jun 10 15:09:01 2017 +0200
Update to 5.9.0
* Sat Jun 10 2017 Kevin Kofler <Kevin(a)tigcc.ticalc.org> - 5.9.0-1
- Update to 5.9.0
- Update version numbers of bundled stuff
- Use bundled libsrtp and protobuf, Chromium dropped unbundling support for them
- Add missing Provides: bundled(hunspell) for the spellchecking added in 5.8
- Rebase linux-pri, no-neon, system-icu-utf, no-sse2, arm-fpu-fix,
openmax-dl-neon and webrtc-neon-detect patches (port to GN)
- Sync system-nspr-prtime patch with Debian (they ported it to GN)
- Rebase fix-extractcflag patch
- Restore NEON runtime detection in Skia, drop old skia-neon patch (rewritten)
- Drop webrtc-neon, v8-gcc7, pdfium-gcc7, wtf-gcc7, fix-open-in-new-tab and
fix-dead-keys patches, fixed upstream
- Update system libvpx/libwebp version requirements (libvpx now F25+ only)
- Drop the flag hacks (-g1 -fno-delete-null-pointer-checks) that are fixed
upstream, force -g2 on x86_64 instead
diff --git a/.gitignore b/.gitignore
index 0983a72..3eee6b2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@
/qtwebengine-opensource-src-5.7.0-clean.tar.xz
/qtwebengine-opensource-src-5.7.1-clean.tar.xz
/qtwebengine-opensource-src-5.8.0-clean.tar.xz
+/qtwebengine-opensource-src-5.9.0-clean.tar.xz
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index 5ddbf65..15a0a20 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -10,12 +10,12 @@
%global docs 1
%endif
-%if 0%{?fedora} > 23
-# need libvpx >= 1.5.0
+%if 0%{?fedora} > 24
+# need libvpx >= 1.6.0
%global use_system_libvpx 1
%endif
%if 0%{?fedora} > 23
-# need libwebp >= 0.5.0
+# need libwebp >= 0.5.1
%global use_system_libwebp 1
%endif
@@ -40,8 +40,8 @@
Summary: Qt5 - QtWebEngine components
Name: qt5-qtwebengine
-Version: 5.8.0
-Release: 14%{?dist}
+Version: 5.9.0
+Release: 1%{?dist}
# See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details
# See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html
@@ -49,8 +49,8 @@ Release: 14%{?dist}
License: (LGPLv2 with exceptions or GPLv3 with exceptions) and BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2)
URL: http://www.qt.io
# cleaned tarball with patent-encumbered codecs removed from the bundled FFmpeg
-# wget http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtwebengi...
-# ./clean_qtwebengine.sh 5.8.0
+# wget http://download.qt.io/official_releases/qt/5.9/5.9.0/submodules/qtwebengi...
+# ./clean_qtwebengine.sh 5.9.0
Source0: qtwebengine-opensource-src-%{version}-clean.tar.xz
# cleanup scripts used above
Source1: clean_qtwebengine.sh
@@ -59,7 +59,7 @@ Source3: get_free_ffmpeg_source_files.py
# macros
Source10: macros.qt5-qtwebengine
# some tweaks to linux.pri (system libs, link libpci, run unbundling script)
-Patch0: qtwebengine-opensource-src-5.7.0-linux-pri.patch
+Patch0: qtwebengine-opensource-src-5.9.0-linux-pri.patch
# quick hack to avoid checking for the nonexistent icudtl.dat and silence the
# resulting warnings - not upstreamable as is because it removes the fallback
# mechanism for the ICU data directory (which is not used in our builds because
@@ -67,52 +67,37 @@ Patch0: qtwebengine-opensource-src-5.7.0-linux-pri.patch
Patch1: qtwebengine-opensource-src-5.6.0-no-icudtl-dat.patch
# fix extractCFlag to also look in QMAKE_CFLAGS_RELEASE, needed to detect the
# ARM flags with our %%qmake_qt5 macro, including for the next patch
-Patch2: qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag.patch
+Patch2: qtwebengine-opensource-src-5.9.0-fix-extractcflag.patch
# disable NEON vector instructions on ARM where the NEON code FTBFS due to
# GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495
-# otherwise, we use the arm-fpu-fix below instead (which this patch contains)
-Patch3: qtwebengine-opensource-src-5.7.1-no-neon.patch
+Patch3: qtwebengine-opensource-src-5.9.0-no-neon.patch
# use the system NSPR prtime (based on Debian patch)
# We already depend on NSPR, so it is useless to copy these functions here.
# Debian uses this just fine, and I don't see relevant modifications either.
-Patch4: qtwebengine-opensource-src-5.8.0-system-nspr-prtime.patch
+Patch4: qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
# use the system ICU UTF functions
# We already depend on ICU, so it is useless to copy these functions here.
# I checked the history of that directory, and other than the renames I am
-# undoing, there were no modifications at all. Must be applied after Patch5.
-Patch5: qtwebengine-opensource-src-5.8.0-system-icu-utf.patch
+# undoing, there were no modifications at all. Must be applied after Patch4.
+Patch5: qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
# do not require SSE2 on i686
# cumulative revert of upstream reviews 187423002, 308003004, 511773002 (parts
# relevant to QtWebEngine only), 516543004, 1152053004 and 1161853008, along
# with some custom fixes and improvements
# also build V8 shared and twice on i686 (once for x87, once for SSE2)
-# TODO: For 5.9, we will need the GN files updated (where not done yet), too.
-Patch6: qtwebengine-opensource-src-5.8.0-no-sse2.patch
-# fix ARM NEON handling in webrtc gyp files
-# Fix video_processing.gypi to only build NEON files when actually requested
-# (i.e., not if arm_neon=0 arm_neon_optional=0).
-Patch7: qtwebengine-opensource-src-5.7.0-webrtc-neon.patch
-# fix missing ARM -mfpu setting (see the comment in the no-neon patch above)
-Patch9: qtwebengine-opensource-src-5.7.1-arm-fpu-fix.patch
+Patch6: qtwebengine-opensource-src-5.9.0-no-sse2.patch
+# fix missing ARM -mfpu setting
+Patch9: qtwebengine-opensource-src-5.9.0-arm-fpu-fix.patch
# remove Android dependencies from openmax_dl ARM NEON detection (detect.c)
-Patch10: qtwebengine-opensource-src-5.7.1-openmax-dl-neon.patch
-# chromium-skia: build SkUtilsArm.cpp also on non-Android ARM
-Patch11: qtwebengine-opensource-src-5.7.1-skia-neon.patch
+Patch10: qtwebengine-opensource-src-5.9.0-openmax-dl-neon.patch
+# restore NEON runtime detection in Skia: revert upstream review 1952953004,
+# restore the non-Android Linux NEON runtime detection code lost in upstream
+# review 1890483002, also add VFPv4 runtime detection
+Patch11: qtwebengine-opensource-src-5.9.0-skia-neon.patch
# webrtc: enable the CPU feature detection for ARM Linux also for Chromium
-Patch12: qtwebengine-opensource-src-5.8.0-webrtc-neon-detect.patch
-# fix FTBFS in V8 with GCC 7 (by Ben Noordhuis, backported from Chromium RPM)
-Patch13: qtwebengine-opensource-src-5.8.0-v8-gcc7.patch
-# fix FTBFS in PDFium with GCC 7: backport upstream cleanup removing that code
-# https://codereview.chromium.org/2154503002
-Patch14: qtwebengine-opensource-src-5.8.0-pdfium-gcc7.patch
-# fix FTBFS in the WTF part of Blink/WebKit with GCC 7
-Patch15: qtwebengine-opensource-src-5.8.0-wtf-gcc7.patch
+Patch12: qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch
# FTBFS using qt < 5.8
Patch20: qtwebengine-opensource-src-5.8.0-qt57.patch
-# upstream fix for blank pages when a link opens in a new tab
-Patch100: qtwebengine-opensource-src-5.8.0-fix-open-in-new-tab.patch
-# upstream fix for non-functional dead keys in text fields
-Patch101: qtwebengine-opensource-src-5.8.0-fix-dead-keys.patch
%if 0%{?fedora} && 0%{?fedora} < 25
# work around missing qt5_qtwebengine_arches macro on F24
@@ -154,11 +139,9 @@ BuildRequires: pkgconfig(egl)
BuildRequires: pkgconfig(libpng)
BuildRequires: pkgconfig(libudev)
%if 0%{?use_system_libwebp}
-BuildRequires: pkgconfig(libwebp) >= 0.5.0
+BuildRequires: pkgconfig(libwebp) >= 0.5.1
%endif
BuildRequires: pkgconfig(harfbuzz)
-BuildRequires: pkgconfig(jsoncpp)
-BuildRequires: pkgconfig(protobuf)
BuildRequires: pkgconfig(libdrm)
BuildRequires: pkgconfig(opus)
BuildRequires: pkgconfig(libevent)
@@ -183,11 +166,10 @@ BuildRequires: pkgconfig(alsa)
BuildRequires: pkgconfig(libpci)
BuildRequires: pkgconfig(dbus-1)
BuildRequires: pkgconfig(nss)
-BuildRequires: pkgconfig(libsrtp)
BuildRequires: perl
BuildRequires: python
%if 0%{?use_system_libvpx}
-BuildRequires: pkgconfig(vpx) >= 1.5.0
+BuildRequires: pkgconfig(vpx) >= 1.6.0
%endif
# extra (non-upstream) functions needed, see
@@ -207,11 +189,11 @@ BuildRequires: pkgconfig(vpx) >= 1.5.0
# Of course, Chromium itself is bundled. It cannot be unbundled because it is
# not a library, but forked (modified) application code.
-# Some security fixes (up to version 55.0.2883.75) are backported, see:
-# http://code.qt.io/cgit/qt/qtwebengine-chromium.git/log/?h=53-based
-# see dist/changes-5.8.0 for the version numbers (base, security fixes) and for
+# Some security fixes (up to version 58.0.3029.96) are backported, see:
+# http://code.qt.io/cgit/qt/qtwebengine-chromium.git/log/?h=56-based
+# see dist/changes-5.9.0 for the version numbers (base, security fixes) and for
# a list of CVEs fixed by the added security backports
-Provides: bundled(chromium) = 53.0.2785.148
+Provides: bundled(chromium) = 56.0.2924.122
# Bundled in src/3rdparty/chromium/third_party:
# Check src/3rdparty/chromium/third_party/*/README.chromium for version numbers,
@@ -231,37 +213,38 @@ Provides: bundled(brotli)
# out. See clean_qtwebengine.sh, clean_ffmpeg.sh, and
# get_free_ffmpeg_source_files.py.
# see src/3rdparty/chromium/third_party/ffmpeg/Changelog for the version number
-Provides: bundled(ffmpeg) = 2.8
+Provides: bundled(ffmpeg) = 3.1
+Provides: bundled(hunspell) = 1.3.2
Provides: bundled(iccjpeg)
# bundled as "khronos", headers only
Provides: bundled(khronos_headers)
# bundled as "leveldatabase"
Provides: bundled(leveldb)
Provides: bundled(libjingle) = 12750
+# see src/3rdparty/chromium/third_party/libsrtp/CHANGES for the version number
+Provides: bundled(libsrtp) = 1.5.2
%if !0%{?use_system_libvpx}
-# bundled as "libvpx_new"
-# the version in README.chromium is wrong, see
-# src/3rdparty/chromium/third_party/libvpx_new/source/libvpx/CHANGELOG for the
-# real version number
-Provides: bundled(libvpx) = 1.5.0
+Provides: bundled(libvpx) = 1.6.0
%endif
%if !0%{?use_system_libwebp}
-Provides: bundled(libwebp) = 0.5.0
+Provides: bundled(libwebp) = 0.5.1
%endif
Provides: bundled(libXNVCtrl) = 302.17
-Provides: bundled(libyuv) = 1579
+Provides: bundled(libyuv) = 1634
Provides: bundled(modp_b64)
Provides: bundled(mojo)
# headers only
Provides: bundled(npapi)
Provides: bundled(openmax_dl) = 1.0.2
Provides: bundled(ots)
+# see src/3rdparty/chromium/third_party/protobuf/CHANGES.txt for the version
+Provides: bundled(protobuf) = 3.0.0-0.1.beta3
Provides: bundled(qcms) = 4
Provides: bundled(sfntly)
Provides: bundled(skia)
# bundled as "smhasher"
Provides: bundled(SMHasher) = 0-0.1.svn147
-Provides: bundled(sqlite) = 3.8.7.4
+Provides: bundled(sqlite) = 3.10.2
Provides: bundled(usrsctp)
Provides: bundled(webrtc) = 90
%ifarch %{ix86} x86_64
@@ -296,9 +279,10 @@ Provides: bundled(nsURLParsers)
# Bundled outside of third_party, apparently not considered as such by Chromium:
# see src/3rdparty/chromium/v8/include/v8_version.h for the version number
-Provides: bundled(v8) = 5.3.332.47
-# bundled by v8 (src/3rdparty/chromium/v8/src/third_party/fdlibm)
-# see src/3rdparty/chromium/v8/src/third_party/fdlibm/README.v8 for the version
+Provides: bundled(v8) = 5.6.326.55
+# bundled by v8 (src/3rdparty/chromium/v8/src/base/ieee754.cc)
+# The version number is 5.3, the last version that upstream released, years ago:
+# http://www.netlib.org/fdlibm/readme
Provides: bundled(fdlibm) = 5.3
%{?_qt5_version:Requires: qt5-qtbase%{?_isa} = %{_qt5_version}}
@@ -344,24 +328,17 @@ BuildArch: noarch
%patch0 -p1 -b .linux-pri
%patch1 -p1 -b .no-icudtl-dat
%patch2 -p1 -b .fix-extractcflag
-%if 0%{?arm_neon}
-%patch9 -p1 -b .arm-fpu-fix
-%else
+%if !0%{?arm_neon}
%patch3 -p1 -b .no-neon
%endif
%patch4 -p1 -b .system-nspr-prtime
%patch5 -p1 -b .system-icu-utf
%patch6 -p1 -b .no-sse2
-%patch7 -p1 -b .webrtc-neon
+%patch9 -p1 -b .arm-fpu-fix
%patch10 -p1 -b .openmax-dl-neon
%patch11 -p1 -b .skia-neon
%patch12 -p1 -b .webrtc-neon-detect
-%patch13 -p1 -b .v8-gcc7
-%patch14 -p1 -b .pdfium-gcc7
-%patch15 -p1 -b .wtf-gcc7
%patch20 -p1 -b .qt57
-%patch100 -p1 -b .fix-open-in-new-tab
-%patch101 -p1 -b .fix-dead-keys
# fix // in #include in content/renderer/gpu to avoid debugedit failure
sed -i -e 's!gpu//!gpu/!g' \
src/3rdparty/chromium/content/renderer/gpu/compositor_forwarding_message_filter.cc
@@ -374,9 +351,10 @@ sed -i -e 's!\./!!g' \
# can't just delete, but we'll overwrite with system headers to be on the safe side
cp -bv /usr/include/re2/*.h src/3rdparty/chromium/third_party/re2/src/re2/
-%ifnarch x86_64
+%ifarch x86_64
# most arches run out of memory with full debuginfo, so use -g1 on non-x86_64
-sed -i -e 's/=-g$/=-g1/g' src/core/gyp_run.pro
+# (which is now the upstream default), force -g2 on x86_64
+sed -i -e 's/symbol_level=1/symbol_level=2/g' src/core/config/common.pri
%endif
# generate qtwebengine-3rdparty.qdoc, it is missing from the tarball
@@ -394,28 +372,12 @@ cp -p src/3rdparty/chromium/LICENSE LICENSE.Chromium
export STRIP=strip
export NINJAFLAGS="-v %{_smp_mflags}"
export NINJA_PATH=%{_bindir}/ninja-build
-export CFLAGS="%{optflags}"
-%ifnarch x86_64
-# most arches run out of memory with full debuginfo, so use -g1 on non-x86_64
-export CFLAGS=`echo "$CFLAGS" | sed -e 's/ -g / -g1 /g'`
-%endif
-export CXXFLAGS="%{optflags} -fno-delete-null-pointer-checks"
-%ifnarch x86_64
-# most arches run out of memory with full debuginfo, so use -g1 on non-x86_64
-export CXXFLAGS=`echo "$CXXFLAGS" | sed -e 's/ -g / -g1 /g'`
-%endif
mkdir %{_target_platform}
pushd %{_target_platform}
%{qmake_qt5} CONFIG+="webcore_debug v8base_debug force_debug_info" \
- WEBENGINE_CONFIG+="use_system_icu use_system_protobuf use_spellchecker" ..
-
-# if we keep these set here, gyp picks up duplicate flags
-unset CFLAGS
-export CFLAGS
-unset CXXFLAGS
-export CXXFLAGS
+ WEBENGINE_CONFIG+="use_system_icu use_spellchecker" ..
make %{?_smp_mflags}
@@ -572,6 +534,22 @@ done
%changelog
+* Sat Jun 10 2017 Kevin Kofler <Kevin(a)tigcc.ticalc.org> - 5.9.0-1
+- Update to 5.9.0
+- Update version numbers of bundled stuff
+- Use bundled libsrtp and protobuf, Chromium dropped unbundling support for them
+- Add missing Provides: bundled(hunspell) for the spellchecking added in 5.8
+- Rebase linux-pri, no-neon, system-icu-utf, no-sse2, arm-fpu-fix,
+ openmax-dl-neon and webrtc-neon-detect patches (port to GN)
+- Sync system-nspr-prtime patch with Debian (they ported it to GN)
+- Rebase fix-extractcflag patch
+- Restore NEON runtime detection in Skia, drop old skia-neon patch (rewritten)
+- Drop webrtc-neon, v8-gcc7, pdfium-gcc7, wtf-gcc7, fix-open-in-new-tab and
+ fix-dead-keys patches, fixed upstream
+- Update system libvpx/libwebp version requirements (libvpx now F25+ only)
+- Drop the flag hacks (-g1 -fno-delete-null-pointer-checks) that are fixed
+ upstream, force -g2 on x86_64 instead
+
* Sat May 13 2017 Rex Dieter <rdieter(a)fedoraproject.org> - 5.8.0-14
- fix rpm macros
diff --git a/qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag.patch b/qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag.patch
deleted file mode 100644
index 8beae69..0000000
--- a/qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.6.0-beta/tools/qmake/mkspecs/features/functions.prf qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag/tools/qmake/mkspecs/features/functions.prf
---- qtwebengine-opensource-src-5.6.0-beta/tools/qmake/mkspecs/features/functions.prf 2015-12-14 16:27:24.000000000 +0100
-+++ qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag/tools/qmake/mkspecs/features/functions.prf 2016-01-10 18:15:23.942032985 +0100
-@@ -87,7 +87,7 @@
- }
-
- defineReplace(extractCFlag) {
-- CFLAGS = $$QMAKE_CC $$QMAKE_CFLAGS
-+ CFLAGS = $$QMAKE_CC $$QMAKE_CFLAGS $$QMAKE_CFLAGS_RELEASE
- OPTION = $$find(CFLAGS, $$1)
- OPTION = $$split(OPTION, =)
- return ($$member(OPTION, 1))
diff --git a/qtwebengine-opensource-src-5.7.0-linux-pri.patch b/qtwebengine-opensource-src-5.7.0-linux-pri.patch
deleted file mode 100644
index 321a1d7..0000000
--- a/qtwebengine-opensource-src-5.7.0-linux-pri.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.7.0/src/core/config/linux.pri qtwebengine-opensource-src-5.7.0-linux-pri/src/core/config/linux.pri
---- qtwebengine-opensource-src-5.7.0/src/core/config/linux.pri 2016-06-07 06:20:06.000000000 +0200
-+++ qtwebengine-opensource-src-5.7.0-linux-pri/src/core/config/linux.pri 2016-07-17 22:18:17.312471202 +0200
-@@ -46,3 +46,22 @@
- use?(system_icu): GYP_CONFIG += use_system_icu=1 icu_use_data_file_flag=0
- use?(system_ffmpeg): GYP_CONFIG += use_system_ffmpeg=1
- use?(system_protobuf): GYP_CONFIG += use_system_protobuf=1
-+
-+# some more system packages, that are not checked for for some reason
-+GYP_CONFIG += use_system_re2=1
-+
-+# yasm is only used on x86, and passing use_system_yasm makes the build fail on
-+# other architectures (e.g., ARM), so make it conditional on the architecture
-+contains(QT_ARCH, "x86_64")|contains(QT_ARCH, "i386") {
-+ GYP_CONFIG += use_system_yasm=1
-+}
-+
-+# link libpci instead of dlopening it, our Qt packaging depends on it anyway
-+GYP_CONFIG += linux_link_libpci=1
-+
-+# run the unbundling script Chromium provides
-+CHROMIUM_SRC_DIR = "$$QTWEBENGINE_ROOT/$$getChromiumSrcDir()"
-+R_G_F_PY = "$$CHROMIUM_SRC_DIR/build/linux/unbundle/replace_gyp_files.py"
-+R_G_F_PY_ARGS = "-D use_system_re2=1"
-+log("Running python $$R_G_F_PY $$R_G_F_PY_ARGS$${EOL}")
-+!system("python $$R_G_F_PY $$R_G_F_PY_ARGS"): error("-- unbundling failed")
diff --git a/qtwebengine-opensource-src-5.7.0-webrtc-neon.patch b/qtwebengine-opensource-src-5.7.0-webrtc-neon.patch
deleted file mode 100644
index 33e0df9..0000000
--- a/qtwebengine-opensource-src-5.7.0-webrtc-neon.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.7.0/src/3rdparty/chromium/third_party/webrtc/modules/video_processing/video_processing.gypi qtwebengine-opensource-src-5.7.0-webrtc-neon/src/3rdparty/chromium/third_party/webrtc/modules/video_processing/video_processing.gypi
---- qtwebengine-opensource-src-5.7.0/src/3rdparty/chromium/third_party/webrtc/modules/video_processing/video_processing.gypi 2016-05-26 15:53:47.000000000 +0200
-+++ qtwebengine-opensource-src-5.7.0-webrtc-neon/src/3rdparty/chromium/third_party/webrtc/modules/video_processing/video_processing.gypi 2016-07-18 14:29:24.841980563 +0200
-@@ -47,7 +47,7 @@
- ['target_arch=="ia32" or target_arch=="x64"', {
- 'dependencies': [ 'video_processing_sse2', ],
- }],
-- ['target_arch=="arm" or target_arch == "arm64"', {
-+ ['build_with_neon==1', {
- 'dependencies': [ 'video_processing_neon', ],
- }],
- ],
-@@ -77,7 +77,7 @@
- },
- ],
- }],
-- ['target_arch=="arm" or target_arch == "arm64"', {
-+ ['build_with_neon==1', {
- 'targets': [
- {
- 'target_name': 'video_processing_neon',
diff --git a/qtwebengine-opensource-src-5.7.1-arm-fpu-fix.patch b/qtwebengine-opensource-src-5.7.1-arm-fpu-fix.patch
deleted file mode 100644
index 04ae6e2..0000000
--- a/qtwebengine-opensource-src-5.7.1-arm-fpu-fix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.7.1/src/core/gyp_run.pro qtwebengine-opensource-src-5.7.1-arm-fpu-fix/src/core/gyp_run.pro
---- qtwebengine-opensource-src-5.7.1/src/core/gyp_run.pro 2016-11-09 06:28:31.000000000 +0100
-+++ qtwebengine-opensource-src-5.7.1-arm-fpu-fix/src/core/gyp_run.pro 2016-12-03 16:38:33.531711958 +0100
-@@ -80,7 +80,7 @@
- # we use arm_neon_optional for ARMv7 and newer and let chromium decide
- # about the mfpu option.
- contains(MFPU, ".*neon.*"): GYP_CONFIG += arm_fpu=\"$$MFPU\" arm_neon=1
-- else:!lessThan(MARMV, 7): GYP_CONFIG += arm_neon=0 arm_neon_optional=1
-+ else:!lessThan(MARMV, 7): GYP_CONFIG += arm_fpu=\"$$MFPU\" arm_neon=0 arm_neon_optional=1
- else: GYP_CONFIG += arm_fpu=\"$$MFPU\" arm_neon=0 arm_neon_optional=0
- } else {
- # Chromium defaults to arm_neon=1, Qt does not.
diff --git a/qtwebengine-opensource-src-5.7.1-no-neon.patch b/qtwebengine-opensource-src-5.7.1-no-neon.patch
deleted file mode 100644
index d520694..0000000
--- a/qtwebengine-opensource-src-5.7.1-no-neon.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.7.1/src/core/gyp_run.pro qtwebengine-opensource-src-5.7.1-no-neon/src/core/gyp_run.pro
---- qtwebengine-opensource-src-5.7.1/src/core/gyp_run.pro 2016-11-09 06:28:31.000000000 +0100
-+++ qtwebengine-opensource-src-5.7.1-no-neon/src/core/gyp_run.pro 2016-12-03 16:36:39.039443117 +0100
-@@ -80,7 +80,10 @@
- # we use arm_neon_optional for ARMv7 and newer and let chromium decide
- # about the mfpu option.
- contains(MFPU, ".*neon.*"): GYP_CONFIG += arm_fpu=\"$$MFPU\" arm_neon=1
-- else:!lessThan(MARMV, 7): GYP_CONFIG += arm_neon=0 arm_neon_optional=1
-+ # Disable NEON entirely for now, because it fails to build:
-+ # https://bugzilla.redhat.com/show_bug.cgi?id=1282495
-+ # (This line was also missing the required arm_fpu flag, which I added.)
-+ # else:!lessThan(MARMV, 7): GYP_CONFIG += arm_fpu=\"$$MFPU\" arm_neon=0 arm_neon_optional=1
- else: GYP_CONFIG += arm_fpu=\"$$MFPU\" arm_neon=0 arm_neon_optional=0
- } else {
- # Chromium defaults to arm_neon=1, Qt does not.
diff --git a/qtwebengine-opensource-src-5.7.1-openmax-dl-neon.patch b/qtwebengine-opensource-src-5.7.1-openmax-dl-neon.patch
deleted file mode 100644
index 08ff6e5..0000000
--- a/qtwebengine-opensource-src-5.7.1-openmax-dl-neon.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp qtwebengine-opensource-src-5.7.1-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp
---- qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp 2016-11-07 15:46:18.000000000 +0100
-+++ qtwebengine-opensource-src-5.7.1-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp 2016-12-03 22:50:19.369158276 +0100
-@@ -219,15 +219,6 @@
- 'conditions': [
- ['arm_neon_optional==1', {
- # Run-time NEON detection.
-- 'dependencies': [
-- '../../../build/android/ndk.gyp:cpu_features',
-- ],
-- 'link_settings' : {
-- 'libraries': [
-- # To get the __android_log_print routine
-- '-llog',
-- ],
-- },
- 'sources': [
- # Detection routine
- 'sp/src/arm/detect.c',
-diff -ur qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c qtwebengine-opensource-src-5.7.1-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c
---- qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c 2016-11-07 15:46:18.000000000 +0100
-+++ qtwebengine-opensource-src-5.7.1-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c 2016-12-03 22:48:13.745095083 +0100
-@@ -9,13 +9,57 @@
- *
- */
-
--#include <cpu-features.h>
--
--#include "android/log.h"
- #include "dl/sp/api/omxSP.h"
-
-+// For ArmCpuCaps()
-+#include <stdio.h>
-+#include <string.h>
-+
-+// based on libvpx arm_cpudetect.c
-+static int ArmCpuCaps(const char* cpuinfo_name) {
-+ char cpuinfo_line[512];
-+ FILE* f = fopen(cpuinfo_name, "r");
-+ if (!f) {
-+ // Assume Neon if /proc/cpuinfo is unavailable.
-+ // This will occur for Chrome sandbox for Pepper or Render process.
-+ return 1;
-+ }
-+ while (fgets(cpuinfo_line, sizeof(cpuinfo_line) - 1, f)) {
-+ if (memcmp(cpuinfo_line, "Features", 8) == 0) {
-+ char* p = strstr(cpuinfo_line, " neon");
-+ if (p && (p[5] == ' ' || p[5] == '\n')) {
-+ fclose(f);
-+ return 1;
-+ }
-+ // aarch64 uses asimd for Neon.
-+ p = strstr(cpuinfo_line, " asimd");
-+ if (p && (p[6] == ' ' || p[6] == '\n')) {
-+ fclose(f);
-+ return 1;
-+ }
-+ }
-+ }
-+ fclose(f);
-+ return 0;
-+}
-+
- int omxSP_HasArmNeon() {
-- return (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0;
-+#if defined(__arm__) || defined(__aarch64__)
-+// gcc -mfpu=neon defines __ARM_NEON__
-+// __ARM_NEON__ generates code that requires Neon. NaCL also requires Neon.
-+// For Linux, /proc/cpuinfo can be tested but without that assume Neon.
-+#if defined(__ARM_NEON__) || defined(__native_client__) || !defined(__linux__)
-+ return 1;
-+// For aarch64(arm64), /proc/cpuinfo's feature is not complete, e.g. no neon
-+// flag in it.
-+// So for aarch64, neon enabling is hard coded here.
-+#elif defined(__aarch64__)
-+ return 1;
-+#else
-+ // Linux arm parse text file for neon detect.
-+ return ArmCpuCaps("/proc/cpuinfo");
-+#endif
-+#endif // __arm__
- }
-
- static void SetFFTRoutines() {
-@@ -24,13 +68,9 @@
- * forward and inverse FFTs
- */
- if (omxSP_HasArmNeon()) {
-- __android_log_print(ANDROID_LOG_INFO, "OpenMAX DL FFT",
-- "Using NEON FFT");
- omxSP_FFTFwd_RToCCS_F32 = omxSP_FFTFwd_RToCCS_F32_Sfs;
- omxSP_FFTInv_CCSToR_F32 = omxSP_FFTInv_CCSToR_F32_Sfs;
- } else {
-- __android_log_print(ANDROID_LOG_INFO, "OpenMAX DL FFT",
-- "Using non-NEON FFT");
- omxSP_FFTFwd_RToCCS_F32 = omxSP_FFTFwd_RToCCS_F32_Sfs_vfp;
- omxSP_FFTInv_CCSToR_F32 = omxSP_FFTInv_CCSToR_F32_Sfs_vfp;
- }
diff --git a/qtwebengine-opensource-src-5.7.1-skia-neon.patch b/qtwebengine-opensource-src-5.7.1-skia-neon.patch
deleted file mode 100644
index c9b385b..0000000
--- a/qtwebengine-opensource-src-5.7.1-skia-neon.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/skia/skia_library.gypi qtwebengine-opensource-src-5.7.1-skia-neon/src/3rdparty/chromium/skia/skia_library.gypi
---- qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/skia/skia_library.gypi 2016-11-07 15:46:18.000000000 +0100
-+++ qtwebengine-opensource-src-5.7.1-skia-neon/src/3rdparty/chromium/skia/skia_library.gypi 2016-12-04 14:34:12.531877529 +0100
-@@ -159,6 +159,11 @@
- '../build/android/ndk.gyp:cpu_features',
- ],
- }],
-+ [ 'OS != "android" and target_arch == "arm"', {
-+ 'sources': [
-+ '../third_party/skia/src/core/SkUtilsArm.cpp',
-+ ],
-+ }],
- [ 'desktop_linux == 1 or chromeos == 1 or qt_os=="embedded_linux"', {
- 'dependencies': [
- '../build/linux/system.gyp:fontconfig',
diff --git a/qtwebengine-opensource-src-5.8.0-fix-dead-keys.patch b/qtwebengine-opensource-src-5.8.0-fix-dead-keys.patch
deleted file mode 100644
index a0cf81c..0000000
--- a/qtwebengine-opensource-src-5.8.0-fix-dead-keys.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 31374ba98829e984c7600419c0e5fa71b96fc530 Mon Sep 17 00:00:00 2001
-From: Peter Varga <pvarga(a)inf.u-szeged.hu>
-Date: Fri, 24 Mar 2017 14:31:02 +0100
-Subject: Forward input method events to RWHV in widget
-
-Task-number: QTBUG-58362
-Change-Id: Id4cf57c60da17538b224bb9bc91277c324c6a55d
-Reviewed-by: Viktor Engelmann <viktor.engelmann(a)qt.io>
-Reviewed-by: Allan Sandfeld Jensen <allan.jensen(a)qt.io>
----
- .../render_widget_host_view_qt_delegate_widget.cpp | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
-index 14c4d72..fd58a07 100644
---- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
-+++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
-@@ -84,10 +84,19 @@ protected:
- {
- m_client->forwardEvent(event);
- }
-+ void inputMethodEvent(QInputMethodEvent *event) override
-+ {
-+ m_client->forwardEvent(event);
-+ }
- QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override
- {
- return m_client->updatePaintNode(oldNode);
- }
-+
-+ QVariant inputMethodQuery(Qt::InputMethodQuery query) const override
-+ {
-+ return m_client->inputMethodQuery(query);
-+ }
- private:
- RenderWidgetHostViewQtDelegateClient *m_client;
- };
---
-cgit v1.0-4-g1e03
-
diff --git a/qtwebengine-opensource-src-5.8.0-fix-open-in-new-tab.patch b/qtwebengine-opensource-src-5.8.0-fix-open-in-new-tab.patch
deleted file mode 100644
index c95a712..0000000
--- a/qtwebengine-opensource-src-5.8.0-fix-open-in-new-tab.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 8e147ed3be7740092de233a2a7c67ec890069649 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Michael=20Br=C3=BCning?= <michael.bruning(a)qt.io>
-Date: Mon, 13 Mar 2017 11:13:56 +0100
-Subject: Remove stale parent connection when initializing delegate as a child
-
-When clicking on a blank link target, the constructor of the
-RenderWidgetHostViewQtDelegateWidget instance for the newly created
-view is called with the originating QWebEngineView as its parent
-and will connect its removeParentBeforeParentDelete slot to the
-originating view's destroyed signal.
-
-This leads to the situation where the delegate's parent will be set to
-null when the originating view is closed, causing the view to display
-only an empty widget with the actual web contents remaining live in
-the background.
-
-This patch removes the connection to the old view when initializing
-the delegate as a child of the QWebEnginePagePrivate instance. The
-addition to the layout updates the parent and child relationship
-between the view and the delegate internally.
-
-Task-number: QTBUG-58381
-Change-Id: I448380478c2bcfcfbddaee8a35caf46010e57972
-Reviewed-by: Florian Bruhin <qt-project.org(a)the-compiler.org>
-Reviewed-by: Joerg Bornemann <joerg.bornemann(a)qt.io>
----
- src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
-index e7ad5b1..14c4d72 100644
---- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
-+++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
-@@ -163,6 +163,9 @@ void RenderWidgetHostViewQtDelegateWidget::initAsChild(WebContentsAdapterClient*
-
- QWebEnginePagePrivate *pagePrivate = static_cast<QWebEnginePagePrivate *>(container);
- if (pagePrivate->view) {
-+ if (parentWidget())
-+ disconnect(parentWidget(), &QObject::destroyed,
-+ this, &RenderWidgetHostViewQtDelegateWidget::removeParentBeforeParentDelete);
- pagePrivate->view->layout()->addWidget(this);
- pagePrivate->view->setFocusProxy(this);
- show();
---
-cgit v1.0-4-g1e03
-
diff --git a/qtwebengine-opensource-src-5.8.0-no-sse2.patch b/qtwebengine-opensource-src-5.8.0-no-sse2.patch
deleted file mode 100644
index ee15329..0000000
--- a/qtwebengine-opensource-src-5.8.0-no-sse2.patch
+++ /dev/null
@@ -1,5311 +0,0 @@
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/breakpad/src/build/common.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/breakpad/src/build/common.gypi
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/breakpad/src/build/common.gypi 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/breakpad/src/build/common.gypi 2017-03-05 17:26:14.507159420 +0100
-@@ -80,8 +80,8 @@
- # The system root for cross-compiles. Default: none.
- 'sysroot%': '',
-
-- # On Linux, we build with sse2 for Chromium builds.
-- 'disable_sse2%': 0,
-+ # Do not assume SSE2 by default (Fedora patch).
-+ 'disable_sse2%': 1
- },
-
- 'target_arch%': '<(target_arch)',
-@@ -725,17 +725,13 @@
- 'conditions': [
- ['disable_sse2==0', {
- 'cflags': [
-- '-march=pentium4',
- '-msse2',
- '-mfpmath=sse',
- ],
- }],
- ],
-- # -mmmx allows mmintrin.h to be used for mmx intrinsics.
-- # video playback is mmx and sse2 optimized.
- 'cflags': [
- '-m32',
-- '-mmmx',
- ],
- 'ldflags': [
- '-m32',
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/build/common.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/build/common.gypi
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/build/common.gypi 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/build/common.gypi 2017-03-05 17:26:14.612157862 +0100
-@@ -3861,15 +3861,7 @@
- # value used during computation does not change depending on
- # how the compiler optimized the code, since the value is
- # always kept in its specified precision.
-- #
-- # Refer to http://crbug.com/348761 for rationale behind SSE2
-- # being a minimum requirement for 32-bit Linux builds and
-- # http://crbug.com/313032 for an example where this has "bit"
-- # us in the past.
- 'cflags': [
-- '-msse2',
-- '-mfpmath=sse',
-- '-mmmx', # Allows mmintrin.h for MMX intrinsics.
- '-m32',
- ],
- 'ldflags': [
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/cc/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/cc/BUILD.gn
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/cc/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/cc/BUILD.gn 2017-03-05 17:38:41.416050535 +0100
-@@ -537,13 +537,6 @@
- "trees/tree_synchronizer.h",
- ]
-
-- if (current_cpu == "x86" || current_cpu == "x64") {
-- sources += [
-- "raster/texture_compressor_etc1_sse.cc",
-- "raster/texture_compressor_etc1_sse.h",
-- ]
-- }
--
- configs += [ "//build/config:precompiled_headers" ]
-
- public_deps = [
-@@ -553,6 +546,7 @@
- deps = [
- "//base",
- "//base/third_party/dynamic_annotations",
-+ "//cc:cc_opts",
- "//cc/proto",
- "//cc/surfaces:surface_id",
- "//gpu",
-@@ -581,6 +575,36 @@
- }
- }
-
-+source_set("cc_opts") {
-+ public_deps = [
-+ "//cc:cc_opts_sse",
-+ ]
-+}
-+
-+source_set("cc_opts_sse") {
-+ if (current_cpu == "x86" || current_cpu == "x64") {
-+ deps = [
-+ "//base",
-+ ]
-+
-+ defines = [ "CC_IMPLEMENTATION=1" ]
-+
-+ if (!is_debug && (is_win || is_android)) {
-+ configs -= [ "//build/config/compiler:optimize" ]
-+ configs += [ "//build/config/compiler:optimize_max" ]
-+ }
-+
-+ sources = [
-+ "raster/texture_compressor.h",
-+ "raster/texture_compressor_etc1.h",
-+ "raster/texture_compressor_etc1_sse.cc",
-+ "raster/texture_compressor_etc1_sse.h",
-+ ]
-+
-+ cflags = [ "-msse2" ]
-+ }
-+}
-+
- source_set("test_support") {
- testonly = true
- sources = [
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/cc/cc.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/cc/cc.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/cc/cc.gyp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/cc/cc.gyp 2017-03-05 17:26:26.081987615 +0100
-@@ -602,14 +602,6 @@
- 'includes': [
- '../build/android/increase_size_for_speed.gypi',
- ],
-- 'conditions': [
-- ['target_arch == "ia32" or target_arch == "x64"', {
-- 'sources': [
-- 'raster/texture_compressor_etc1_sse.cc',
-- 'raster/texture_compressor_etc1_sse.h',
-- ],
-- }],
-- ],
- },
- {
- # GN version: "//cc/proto"
-@@ -678,6 +670,7 @@
- '<(DEPTH)/ui/events/events.gyp:events_base',
- '<(DEPTH)/ui/gfx/gfx.gyp:gfx',
- '<(DEPTH)/ui/gfx/gfx.gyp:gfx_geometry',
-+ 'cc_opts',
- ],
- 'defines': [
- 'CC_SURFACES_IMPLEMENTATION=1',
-@@ -714,5 +707,41 @@
- '../build/android/increase_size_for_speed.gypi',
- ],
- },
-+ {
-+ 'target_name': 'cc_opts',
-+ 'type': 'static_library',
-+ 'conditions': [
-+ ['target_arch == "ia32" or target_arch == "x64"', {
-+ 'defines': [
-+ 'CC_IMPLEMENTATION=1',
-+ ],
-+ 'dependencies': [
-+ 'cc_opts_sse',
-+ ]
-+ }],
-+ ],
-+ },
-+ {
-+ 'target_name': 'cc_opts_sse',
-+ 'type': 'static_library',
-+ 'dependencies': [
-+ '<(DEPTH)/base/base.gyp:base',
-+ ],
-+ 'conditions': [
-+ ['target_arch == "ia32" or target_arch == "x64"', {
-+ 'defines': [
-+ 'CC_IMPLEMENTATION=1',
-+ ],
-+ 'sources': [
-+ # Conditional compilation for SSE2 code on x86 and x64 machines
-+ 'raster/texture_compressor_etc1_sse.cc',
-+ 'raster/texture_compressor_etc1_sse.h',
-+ ],
-+ 'cflags': [
-+ '-msse2',
-+ ],
-+ }],
-+ ],
-+ },
- ],
- }
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/BUILD.gn
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/BUILD.gn 2017-03-05 17:26:26.082987600 +0100
-@@ -312,13 +312,13 @@
- }
-
- if (current_cpu == "x86" || current_cpu == "x64") {
-- sources += [
-- "simd/convert_rgb_to_yuv_sse2.cc",
-- "simd/convert_rgb_to_yuv_ssse3.cc",
-- "simd/convert_yuv_to_rgb_x86.cc",
-- "simd/filter_yuv_sse2.cc",
-+ sources += [ "simd/convert_yuv_to_rgb_x86.cc" ]
-+ deps += [
-+ ":media_yasm",
-+ ":media_mmx",
-+ ":media_sse",
-+ ":media_sse2",
- ]
-- deps += [ ":media_yasm" ]
- }
-
- if (is_linux || is_win) {
-@@ -534,10 +534,47 @@
- }
-
- if (current_cpu == "x86" || current_cpu == "x64") {
-+ source_set("media_mmx") {
-+ sources = [ "simd/filter_yuv_mmx.cc" ]
-+ configs += [ "//media:media_config" ]
-+ if (!is_win) {
-+ cflags = [ "-mmmx" ]
-+ }
-+ }
-+
-+ source_set("media_sse") {
-+ sources = [
-+ "simd/sinc_resampler_sse.cc",
-+ ]
-+ configs += [
-+ "//media:media_config",
-+ "//media:media_implementation",
-+ ]
-+ if (!is_win) {
-+ cflags = [ "-msse" ]
-+ }
-+ }
-+
-+ source_set("media_sse2") {
-+ sources = [
-+ "simd/convert_rgb_to_yuv_sse2.cc",
-+ "simd/convert_rgb_to_yuv_ssse3.cc",
-+ "simd/filter_yuv_sse2.cc",
-+ ]
-+ configs += [
-+ "//media:media_config",
-+ "//media:media_implementation",
-+ ]
-+ if (!is_win) {
-+ cflags = [ "-msse2" ]
-+ }
-+ }
-+
- import("//third_party/yasm/yasm_assemble.gni")
- yasm_assemble("media_yasm") {
- sources = [
- "simd/convert_rgb_to_yuv_ssse3.asm",
-+ "simd/convert_yuv_to_rgb_mmx.asm",
- "simd/convert_yuv_to_rgb_sse.asm",
- "simd/convert_yuva_to_argb_mmx.asm",
- "simd/empty_register_state_mmx.asm",
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/media.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/media.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/media.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/media.cc 2017-03-05 17:44:02.063267153 +0100
-@@ -10,6 +10,8 @@
- #include "base/metrics/field_trial.h"
- #include "base/trace_event/trace_event.h"
- #include "media/base/media_switches.h"
-+#include "media/base/sinc_resampler.h"
-+#include "media/base/vector_math.h"
- #include "media/base/yuv_convert.h"
-
- #if defined(OS_ANDROID)
-@@ -40,6 +42,8 @@
- TRACE_EVENT_WARMUP_CATEGORY("media");
-
- // Perform initialization of libraries which require runtime CPU detection.
-+ vector_math::Initialize();
-+ SincResampler::InitializeCPUSpecificFeatures();
- InitializeCPUSpecificYUVConversions();
-
- #if !defined(MEDIA_DISABLE_FFMPEG)
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h 2017-03-05 17:26:26.083987585 +0100
-@@ -65,6 +65,17 @@
- int rgbstride,
- YUVType yuv_type);
-
-+MEDIA_EXPORT void ConvertYUVToRGB32_MMX(const uint8_t* yplane,
-+ const uint8_t* uplane,
-+ const uint8_t* vplane,
-+ uint8_t* rgbframe,
-+ int width,
-+ int height,
-+ int ystride,
-+ int uvstride,
-+ int rgbstride,
-+ YUVType yuv_type);
-+
- MEDIA_EXPORT void ConvertYUVAToARGB_MMX(const uint8_t* yplane,
- const uint8_t* uplane,
- const uint8_t* vplane,
-@@ -124,6 +135,13 @@
- ptrdiff_t width,
- const int16_t* convert_table);
-
-+MEDIA_EXPORT void ConvertYUVToRGB32Row_MMX(const uint8_t* yplane,
-+ const uint8_t* uplane,
-+ const uint8_t* vplane,
-+ uint8_t* rgbframe,
-+ ptrdiff_t width,
-+ const int16_t* convert_table);
-+
- MEDIA_EXPORT void ConvertYUVToRGB32Row_SSE(const uint8_t* yplane,
- const uint8_t* uplane,
- const uint8_t* vplane,
-@@ -131,6 +149,14 @@
- ptrdiff_t width,
- const int16_t* convert_table);
-
-+MEDIA_EXPORT void ScaleYUVToRGB32Row_MMX(const uint8_t* y_buf,
-+ const uint8_t* u_buf,
-+ const uint8_t* v_buf,
-+ uint8_t* rgb_buf,
-+ ptrdiff_t width,
-+ ptrdiff_t source_dx,
-+ const int16_t* convert_table);
-+
- MEDIA_EXPORT void ScaleYUVToRGB32Row_SSE(const uint8_t* y_buf,
- const uint8_t* u_buf,
- const uint8_t* v_buf,
-@@ -147,6 +173,14 @@
- ptrdiff_t source_dx,
- const int16_t* convert_table);
-
-+MEDIA_EXPORT void LinearScaleYUVToRGB32Row_MMX(const uint8_t* y_buf,
-+ const uint8_t* u_buf,
-+ const uint8_t* v_buf,
-+ uint8_t* rgb_buf,
-+ ptrdiff_t width,
-+ ptrdiff_t source_dx,
-+ const int16_t* convert_table);
-+
- MEDIA_EXPORT void LinearScaleYUVToRGB32Row_SSE(const uint8_t* y_buf,
- const uint8_t* u_buf,
- const uint8_t* v_buf,
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm 2017-03-05 17:26:26.167986340 +0100
-@@ -0,0 +1,23 @@
-+; Copyright (c) 2011 The Chromium Authors. All rights reserved.
-+; Use of this source code is governed by a BSD-style license that can be
-+; found in the LICENSE file.
-+
-+%include "third_party/x86inc/x86inc.asm"
-+
-+;
-+; This file uses MMX instructions.
-+;
-+ SECTION_TEXT
-+ CPU MMX
-+
-+; Use movq to save the output.
-+%define MOVQ movq
-+
-+; extern "C" void ConvertYUVToRGB32Row_MMX(const uint8* y_buf,
-+; const uint8* u_buf,
-+; const uint8* v_buf,
-+; uint8* rgb_buf,
-+; ptrdiff_t width,
-+; const int16* convert_table);
-+%define SYMBOL ConvertYUVToRGB32Row_MMX
-+%include "convert_yuv_to_rgb_mmx.inc"
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc 2017-03-05 17:26:26.167986340 +0100
-@@ -47,6 +47,34 @@
- EmptyRegisterState();
- }
-
-+void ConvertYUVToRGB32_MMX(const uint8_t* yplane,
-+ const uint8_t* uplane,
-+ const uint8_t* vplane,
-+ uint8_t* rgbframe,
-+ int width,
-+ int height,
-+ int ystride,
-+ int uvstride,
-+ int rgbstride,
-+ YUVType yuv_type) {
-+ unsigned int y_shift = GetVerticalShift(yuv_type);
-+ for (int y = 0; y < height; ++y) {
-+ uint8_t* rgb_row = rgbframe + y * rgbstride;
-+ const uint8_t* y_ptr = yplane + y * ystride;
-+ const uint8_t* u_ptr = uplane + (y >> y_shift) * uvstride;
-+ const uint8_t* v_ptr = vplane + (y >> y_shift) * uvstride;
-+
-+ ConvertYUVToRGB32Row_MMX(y_ptr,
-+ u_ptr,
-+ v_ptr,
-+ rgb_row,
-+ width,
-+ GetLookupTable(yuv_type));
-+ }
-+
-+ EmptyRegisterState();
-+}
-+
- void ConvertYUVToRGB32_SSE(const uint8_t* yplane,
- const uint8_t* uplane,
- const uint8_t* vplane,
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/filter_yuv.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/filter_yuv.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/filter_yuv.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/filter_yuv.h 2017-03-05 17:26:26.167986340 +0100
-@@ -20,6 +20,12 @@
- int source_width,
- uint8_t source_y_fraction);
-
-+MEDIA_EXPORT void FilterYUVRows_MMX(uint8_t* ybuf,
-+ const uint8_t* y0_ptr,
-+ const uint8_t* y1_ptr,
-+ int source_width,
-+ uint8_t source_y_fraction);
-+
- MEDIA_EXPORT void FilterYUVRows_SSE2(uint8_t* ybuf,
- const uint8_t* y0_ptr,
- const uint8_t* y1_ptr,
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc 2017-03-05 17:26:26.167986340 +0100
-@@ -0,0 +1,79 @@
-+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style license that can be
-+// found in the LICENSE file.
-+
-+#if defined(_MSC_VER)
-+#include <intrin.h>
-+#else
-+#include <mmintrin.h>
-+#endif
-+
-+#include "build/build_config.h"
-+#include "media/base/simd/filter_yuv.h"
-+
-+namespace media {
-+
-+#if defined(COMPILER_MSVC)
-+// Warning 4799 is about calling emms before the function exits.
-+// We calls emms in a frame level so suppress this warning.
-+#pragma warning(push)
-+#pragma warning(disable: 4799)
-+#endif
-+
-+void FilterYUVRows_MMX(uint8_t* dest,
-+ const uint8_t* src0,
-+ const uint8_t* src1,
-+ int width,
-+ uint8_t fraction) {
-+ int pixel = 0;
-+
-+ // Process the unaligned bytes first.
-+ int unaligned_width =
-+ (8 - (reinterpret_cast<uintptr_t>(dest) & 7)) & 7;
-+ while (pixel < width && pixel < unaligned_width) {
-+ dest[pixel] = (src0[pixel] * (256 - fraction) +
-+ src1[pixel] * fraction) >> 8;
-+ ++pixel;
-+ }
-+
-+ __m64 zero = _mm_setzero_si64();
-+ __m64 src1_fraction = _mm_set1_pi16(fraction);
-+ __m64 src0_fraction = _mm_set1_pi16(256 - fraction);
-+ const __m64* src0_64 = reinterpret_cast<const __m64*>(src0 + pixel);
-+ const __m64* src1_64 = reinterpret_cast<const __m64*>(src1 + pixel);
-+ __m64* dest64 = reinterpret_cast<__m64*>(dest + pixel);
-+ __m64* end64 = reinterpret_cast<__m64*>(
-+ reinterpret_cast<uintptr_t>(dest + width) & ~7);
-+
-+ while (dest64 < end64) {
-+ __m64 src0 = *src0_64++;
-+ __m64 src1 = *src1_64++;
-+ __m64 src2 = _mm_unpackhi_pi8(src0, zero);
-+ __m64 src3 = _mm_unpackhi_pi8(src1, zero);
-+ src0 = _mm_unpacklo_pi8(src0, zero);
-+ src1 = _mm_unpacklo_pi8(src1, zero);
-+ src0 = _mm_mullo_pi16(src0, src0_fraction);
-+ src1 = _mm_mullo_pi16(src1, src1_fraction);
-+ src2 = _mm_mullo_pi16(src2, src0_fraction);
-+ src3 = _mm_mullo_pi16(src3, src1_fraction);
-+ src0 = _mm_add_pi16(src0, src1);
-+ src2 = _mm_add_pi16(src2, src3);
-+ src0 = _mm_srli_pi16(src0, 8);
-+ src2 = _mm_srli_pi16(src2, 8);
-+ src0 = _mm_packs_pu16(src0, src2);
-+ *dest64++ = src0;
-+ pixel += 8;
-+ }
-+
-+ while (pixel < width) {
-+ dest[pixel] = (src0[pixel] * (256 - fraction) +
-+ src1[pixel] * fraction) >> 8;
-+ ++pixel;
-+ }
-+}
-+
-+#if defined(COMPILER_MSVC)
-+#pragma warning(pop)
-+#endif
-+
-+} // namespace media
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc 2017-03-05 17:26:26.168986325 +0100
-@@ -0,0 +1,50 @@
-+// Copyright 2013 The Chromium Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style license that can be
-+// found in the LICENSE file.
-+
-+#include "media/base/sinc_resampler.h"
-+
-+#include <xmmintrin.h>
-+
-+namespace media {
-+
-+float SincResampler::Convolve_SSE(const float* input_ptr, const float* k1,
-+ const float* k2,
-+ double kernel_interpolation_factor) {
-+ __m128 m_input;
-+ __m128 m_sums1 = _mm_setzero_ps();
-+ __m128 m_sums2 = _mm_setzero_ps();
-+
-+ // Based on |input_ptr| alignment, we need to use loadu or load. Unrolling
-+ // these loops hurt performance in local testing.
-+ if (reinterpret_cast<uintptr_t>(input_ptr) & 0x0F) {
-+ for (int i = 0; i < kKernelSize; i += 4) {
-+ m_input = _mm_loadu_ps(input_ptr + i);
-+ m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
-+ m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
-+ }
-+ } else {
-+ for (int i = 0; i < kKernelSize; i += 4) {
-+ m_input = _mm_load_ps(input_ptr + i);
-+ m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
-+ m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
-+ }
-+ }
-+
-+ // Linearly interpolate the two "convolutions".
-+ m_sums1 = _mm_mul_ps(m_sums1, _mm_set_ps1(
-+ static_cast<float>(1.0 - kernel_interpolation_factor)));
-+ m_sums2 = _mm_mul_ps(m_sums2, _mm_set_ps1(
-+ static_cast<float>(kernel_interpolation_factor)));
-+ m_sums1 = _mm_add_ps(m_sums1, m_sums2);
-+
-+ // Sum components together.
-+ float result;
-+ m_sums2 = _mm_add_ps(_mm_movehl_ps(m_sums1, m_sums1), m_sums1);
-+ _mm_store_ss(&result, _mm_add_ss(m_sums2, _mm_shuffle_ps(
-+ m_sums2, m_sums2, 1)));
-+
-+ return result;
-+}
-+
-+} // namespace media
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc 2017-03-05 17:26:26.168986325 +0100
-@@ -0,0 +1,118 @@
-+// Copyright 2013 The Chromium Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style license that can be
-+// found in the LICENSE file.
-+
-+#include "media/base/vector_math_testing.h"
-+
-+#include <algorithm>
-+
-+#include <xmmintrin.h> // NOLINT
-+
-+namespace media {
-+namespace vector_math {
-+
-+void FMUL_SSE(const float src[], float scale, int len, float dest[]) {
-+ const int rem = len % 4;
-+ const int last_index = len - rem;
-+ __m128 m_scale = _mm_set_ps1(scale);
-+ for (int i = 0; i < last_index; i += 4)
-+ _mm_store_ps(dest + i, _mm_mul_ps(_mm_load_ps(src + i), m_scale));
-+
-+ // Handle any remaining values that wouldn't fit in an SSE pass.
-+ for (int i = last_index; i < len; ++i)
-+ dest[i] = src[i] * scale;
-+}
-+
-+void FMAC_SSE(const float src[], float scale, int len, float dest[]) {
-+ const int rem = len % 4;
-+ const int last_index = len - rem;
-+ __m128 m_scale = _mm_set_ps1(scale);
-+ for (int i = 0; i < last_index; i += 4) {
-+ _mm_store_ps(dest + i, _mm_add_ps(_mm_load_ps(dest + i),
-+ _mm_mul_ps(_mm_load_ps(src + i), m_scale)));
-+ }
-+
-+ // Handle any remaining values that wouldn't fit in an SSE pass.
-+ for (int i = last_index; i < len; ++i)
-+ dest[i] += src[i] * scale;
-+}
-+
-+// Convenience macro to extract float 0 through 3 from the vector |a|. This is
-+// needed because compilers other than clang don't support access via
-+// operator[]().
-+#define EXTRACT_FLOAT(a, i) \
-+ (i == 0 ? \
-+ _mm_cvtss_f32(a) : \
-+ _mm_cvtss_f32(_mm_shuffle_ps(a, a, i)))
-+
-+std::pair<float, float> EWMAAndMaxPower_SSE(
-+ float initial_value, const float src[], int len, float smoothing_factor) {
-+ // When the recurrence is unrolled, we see that we can split it into 4
-+ // separate lanes of evaluation:
-+ //
-+ // y[n] = a(S[n]^2) + (1-a)(y[n-1])
-+ // = a(S[n]^2) + (1-a)^1(aS[n-1]^2) + (1-a)^2(aS[n-2]^2) + ...
-+ // = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
-+ //
-+ // where z[n] = a(S[n]^2) + (1-a)^4(z[n-4]) + (1-a)^8(z[n-8]) + ...
-+ //
-+ // Thus, the strategy here is to compute z[n], z[n-1], z[n-2], and z[n-3] in
-+ // each of the 4 lanes, and then combine them to give y[n].
-+
-+ const int rem = len % 4;
-+ const int last_index = len - rem;
-+
-+ const __m128 smoothing_factor_x4 = _mm_set_ps1(smoothing_factor);
-+ const float weight_prev = 1.0f - smoothing_factor;
-+ const __m128 weight_prev_x4 = _mm_set_ps1(weight_prev);
-+ const __m128 weight_prev_squared_x4 =
-+ _mm_mul_ps(weight_prev_x4, weight_prev_x4);
-+ const __m128 weight_prev_4th_x4 =
-+ _mm_mul_ps(weight_prev_squared_x4, weight_prev_squared_x4);
-+
-+ // Compute z[n], z[n-1], z[n-2], and z[n-3] in parallel in lanes 3, 2, 1 and
-+ // 0, respectively.
-+ __m128 max_x4 = _mm_setzero_ps();
-+ __m128 ewma_x4 = _mm_setr_ps(0.0f, 0.0f, 0.0f, initial_value);
-+ int i;
-+ for (i = 0; i < last_index; i += 4) {
-+ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_4th_x4);
-+ const __m128 sample_x4 = _mm_load_ps(src + i);
-+ const __m128 sample_squared_x4 = _mm_mul_ps(sample_x4, sample_x4);
-+ max_x4 = _mm_max_ps(max_x4, sample_squared_x4);
-+ // Note: The compiler optimizes this to a single multiply-and-accumulate
-+ // instruction:
-+ ewma_x4 = _mm_add_ps(ewma_x4,
-+ _mm_mul_ps(sample_squared_x4, smoothing_factor_x4));
-+ }
-+
-+ // y[n] = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
-+ float ewma = EXTRACT_FLOAT(ewma_x4, 3);
-+ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
-+ ewma += EXTRACT_FLOAT(ewma_x4, 2);
-+ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
-+ ewma += EXTRACT_FLOAT(ewma_x4, 1);
-+ ewma_x4 = _mm_mul_ss(ewma_x4, weight_prev_x4);
-+ ewma += EXTRACT_FLOAT(ewma_x4, 0);
-+
-+ // Fold the maximums together to get the overall maximum.
-+ max_x4 = _mm_max_ps(max_x4,
-+ _mm_shuffle_ps(max_x4, max_x4, _MM_SHUFFLE(3, 3, 1, 1)));
-+ max_x4 = _mm_max_ss(max_x4, _mm_shuffle_ps(max_x4, max_x4, 2));
-+
-+ std::pair<float, float> result(ewma, EXTRACT_FLOAT(max_x4, 0));
-+
-+ // Handle remaining values at the end of |src|.
-+ for (; i < len; ++i) {
-+ result.first *= weight_prev;
-+ const float sample = src[i];
-+ const float sample_squared = sample * sample;
-+ result.first += sample_squared * smoothing_factor;
-+ result.second = std::max(result.second, sample_squared);
-+ }
-+
-+ return result;
-+}
-+
-+} // namespace vector_math
-+} // namespace media
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler.cc 2017-03-05 17:26:26.168986325 +0100
-@@ -81,17 +81,12 @@
- #include <cmath>
- #include <limits>
-
-+#include "base/cpu.h"
- #include "base/logging.h"
- #include "build/build_config.h"
-
--#if defined(ARCH_CPU_X86_FAMILY)
--#include <xmmintrin.h>
--#define CONVOLVE_FUNC Convolve_SSE
--#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
-+#if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
- #include <arm_neon.h>
--#define CONVOLVE_FUNC Convolve_NEON
--#else
--#define CONVOLVE_FUNC Convolve_C
- #endif
-
- namespace media {
-@@ -112,10 +107,41 @@
- return sinc_scale_factor;
- }
-
-+#undef CONVOLVE_FUNC
-+
- static int CalculateChunkSize(int block_size_, double io_ratio) {
- return block_size_ / io_ratio;
- }
-
-+// If we know the minimum architecture at compile time, avoid CPU detection.
-+// Force NaCl code to use C routines since (at present) nothing there uses these
-+// methods and plumbing the -msse built library is non-trivial.
-+#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
-+#if defined(__SSE__)
-+#define CONVOLVE_FUNC Convolve_SSE
-+void SincResampler::InitializeCPUSpecificFeatures() {}
-+#else
-+// X86 CPU detection required. Functions will be set by
-+// InitializeCPUSpecificFeatures().
-+#define CONVOLVE_FUNC g_convolve_proc_
-+
-+typedef float (*ConvolveProc)(const float*, const float*, const float*, double);
-+static ConvolveProc g_convolve_proc_ = NULL;
-+
-+void SincResampler::InitializeCPUSpecificFeatures() {
-+ CHECK(!g_convolve_proc_);
-+ g_convolve_proc_ = base::CPU().has_sse() ? Convolve_SSE : Convolve_C;
-+}
-+#endif
-+#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
-+#define CONVOLVE_FUNC Convolve_NEON
-+void SincResampler::InitializeCPUSpecificFeatures() {}
-+#else
-+// Unknown architecture.
-+#define CONVOLVE_FUNC Convolve_C
-+void SincResampler::InitializeCPUSpecificFeatures() {}
-+#endif
-+
- SincResampler::SincResampler(double io_sample_rate_ratio,
- int request_frames,
- const ReadCB& read_cb)
-@@ -343,46 +369,7 @@
- kernel_interpolation_factor * sum2);
- }
-
--#if defined(ARCH_CPU_X86_FAMILY)
--float SincResampler::Convolve_SSE(const float* input_ptr, const float* k1,
-- const float* k2,
-- double kernel_interpolation_factor) {
-- __m128 m_input;
-- __m128 m_sums1 = _mm_setzero_ps();
-- __m128 m_sums2 = _mm_setzero_ps();
--
-- // Based on |input_ptr| alignment, we need to use loadu or load. Unrolling
-- // these loops hurt performance in local testing.
-- if (reinterpret_cast<uintptr_t>(input_ptr) & 0x0F) {
-- for (int i = 0; i < kKernelSize; i += 4) {
-- m_input = _mm_loadu_ps(input_ptr + i);
-- m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
-- m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
-- }
-- } else {
-- for (int i = 0; i < kKernelSize; i += 4) {
-- m_input = _mm_load_ps(input_ptr + i);
-- m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
-- m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
-- }
-- }
--
-- // Linearly interpolate the two "convolutions".
-- m_sums1 = _mm_mul_ps(m_sums1, _mm_set_ps1(
-- static_cast<float>(1.0 - kernel_interpolation_factor)));
-- m_sums2 = _mm_mul_ps(m_sums2, _mm_set_ps1(
-- static_cast<float>(kernel_interpolation_factor)));
-- m_sums1 = _mm_add_ps(m_sums1, m_sums2);
--
-- // Sum components together.
-- float result;
-- m_sums2 = _mm_add_ps(_mm_movehl_ps(m_sums1, m_sums1), m_sums1);
-- _mm_store_ss(&result, _mm_add_ss(m_sums2, _mm_shuffle_ps(
-- m_sums2, m_sums2, 1)));
--
-- return result;
--}
--#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
-+#if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
- float SincResampler::Convolve_NEON(const float* input_ptr, const float* k1,
- const float* k2,
- double kernel_interpolation_factor) {
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler.h 2017-03-05 17:26:26.169986310 +0100
-@@ -36,6 +36,10 @@
- kKernelStorageSize = kKernelSize * (kKernelOffsetCount + 1),
- };
-
-+ // Selects runtime specific CPU features like SSE. Must be called before
-+ // using SincResampler.
-+ static void InitializeCPUSpecificFeatures();
-+
- // Callback type for providing more data into the resampler. Expects |frames|
- // of data to be rendered into |destination|; zero padded if not enough frames
- // are available to satisfy the request.
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc 2017-03-05 17:26:26.169986310 +0100
-@@ -4,6 +4,7 @@
-
- #include "base/bind.h"
- #include "base/bind_helpers.h"
-+#include "base/cpu.h"
- #include "base/time/time.h"
- #include "build/build_config.h"
- #include "media/base/sinc_resampler.h"
-@@ -61,6 +62,9 @@
- &resampler, SincResampler::Convolve_C, true, "unoptimized_aligned");
-
- #if defined(CONVOLVE_FUNC)
-+#if defined(ARCH_CPU_X86_FAMILY)
-+ ASSERT_TRUE(base::CPU().has_sse());
-+#endif
- RunConvolveBenchmark(
- &resampler, SincResampler::CONVOLVE_FUNC, true, "optimized_aligned");
- RunConvolveBenchmark(
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc 2017-03-05 17:26:26.169986310 +0100
-@@ -10,6 +10,7 @@
-
- #include "base/bind.h"
- #include "base/bind_helpers.h"
-+#include "base/cpu.h"
- #include "base/macros.h"
- #include "base/strings/string_number_conversions.h"
- #include "base/time/time.h"
-@@ -166,6 +167,10 @@
- static const double kKernelInterpolationFactor = 0.5;
-
- TEST(SincResamplerTest, Convolve) {
-+#if defined(ARCH_CPU_X86_FAMILY)
-+ ASSERT_TRUE(base::CPU().has_sse());
-+#endif
-+
- // Initialize a dummy resampler.
- MockSource mock_source;
- SincResampler resampler(
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math.cc 2017-03-05 17:26:26.170986295 +0100
-@@ -7,12 +7,17 @@
-
- #include <algorithm>
-
-+#include "base/cpu.h"
- #include "base/logging.h"
- #include "build/build_config.h"
-
-+namespace media {
-+namespace vector_math {
-+
-+// If we know the minimum architecture at compile time, avoid CPU detection.
- // NaCl does not allow intrinsics.
- #if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
--#include <xmmintrin.h>
-+#if defined(__SSE__)
- // Don't use custom SSE versions where the auto-vectorized C version performs
- // better, which is anywhere clang is used.
- #if !defined(__clang__)
-@@ -23,20 +28,52 @@
- #define FMUL_FUNC FMUL_C
- #endif
- #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
-+void Initialize() {}
-+#else
-+// X86 CPU detection required. Functions will be set by Initialize().
-+#if !defined(__clang__)
-+#define FMAC_FUNC g_fmac_proc_
-+#define FMUL_FUNC g_fmul_proc_
-+#else
-+#define FMAC_FUNC FMAC_C
-+#define FMUL_FUNC FMUL_C
-+#endif
-+#define EWMAAndMaxPower_FUNC g_ewma_power_proc_
-+
-+#if !defined(__clang__)
-+typedef void (*MathProc)(const float src[], float scale, int len, float dest[]);
-+static MathProc g_fmac_proc_ = NULL;
-+static MathProc g_fmul_proc_ = NULL;
-+#endif
-+typedef std::pair<float, float> (*EWMAAndMaxPowerProc)(
-+ float initial_value, const float src[], int len, float smoothing_factor);
-+static EWMAAndMaxPowerProc g_ewma_power_proc_ = NULL;
-+
-+void Initialize() {
-+ CHECK(!g_fmac_proc_);
-+ CHECK(!g_fmul_proc_);
-+ CHECK(!g_ewma_power_proc_);
-+ const bool kUseSSE = base::CPU().has_sse();
-+#if !defined(__clang__)
-+ g_fmac_proc_ = kUseSSE ? FMAC_SSE : FMAC_C;
-+ g_fmul_proc_ = kUseSSE ? FMUL_SSE : FMUL_C;
-+#endif
-+ g_ewma_power_proc_ = kUseSSE ? EWMAAndMaxPower_SSE : EWMAAndMaxPower_C;
-+}
-+#endif
- #elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
- #include <arm_neon.h>
- #define FMAC_FUNC FMAC_NEON
- #define FMUL_FUNC FMUL_NEON
- #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
-+void Initialize() {}
- #else
- #define FMAC_FUNC FMAC_C
- #define FMUL_FUNC FMUL_C
- #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_C
-+void Initialize() {}
- #endif
-
--namespace media {
--namespace vector_math {
--
- void FMAC(const float src[], float scale, int len, float dest[]) {
- // Ensure |src| and |dest| are 16-byte aligned.
- DCHECK_EQ(0u, reinterpret_cast<uintptr_t>(src) & (kRequiredAlignment - 1));
-@@ -89,111 +126,6 @@
- return result;
- }
-
--#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
--void FMUL_SSE(const float src[], float scale, int len, float dest[]) {
-- const int rem = len % 4;
-- const int last_index = len - rem;
-- __m128 m_scale = _mm_set_ps1(scale);
-- for (int i = 0; i < last_index; i += 4)
-- _mm_store_ps(dest + i, _mm_mul_ps(_mm_load_ps(src + i), m_scale));
--
-- // Handle any remaining values that wouldn't fit in an SSE pass.
-- for (int i = last_index; i < len; ++i)
-- dest[i] = src[i] * scale;
--}
--
--void FMAC_SSE(const float src[], float scale, int len, float dest[]) {
-- const int rem = len % 4;
-- const int last_index = len - rem;
-- __m128 m_scale = _mm_set_ps1(scale);
-- for (int i = 0; i < last_index; i += 4) {
-- _mm_store_ps(dest + i, _mm_add_ps(_mm_load_ps(dest + i),
-- _mm_mul_ps(_mm_load_ps(src + i), m_scale)));
-- }
--
-- // Handle any remaining values that wouldn't fit in an SSE pass.
-- for (int i = last_index; i < len; ++i)
-- dest[i] += src[i] * scale;
--}
--
--// Convenience macro to extract float 0 through 3 from the vector |a|. This is
--// needed because compilers other than clang don't support access via
--// operator[]().
--#define EXTRACT_FLOAT(a, i) \
-- (i == 0 ? \
-- _mm_cvtss_f32(a) : \
-- _mm_cvtss_f32(_mm_shuffle_ps(a, a, i)))
--
--std::pair<float, float> EWMAAndMaxPower_SSE(
-- float initial_value, const float src[], int len, float smoothing_factor) {
-- // When the recurrence is unrolled, we see that we can split it into 4
-- // separate lanes of evaluation:
-- //
-- // y[n] = a(S[n]^2) + (1-a)(y[n-1])
-- // = a(S[n]^2) + (1-a)^1(aS[n-1]^2) + (1-a)^2(aS[n-2]^2) + ...
-- // = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
-- //
-- // where z[n] = a(S[n]^2) + (1-a)^4(z[n-4]) + (1-a)^8(z[n-8]) + ...
-- //
-- // Thus, the strategy here is to compute z[n], z[n-1], z[n-2], and z[n-3] in
-- // each of the 4 lanes, and then combine them to give y[n].
--
-- const int rem = len % 4;
-- const int last_index = len - rem;
--
-- const __m128 smoothing_factor_x4 = _mm_set_ps1(smoothing_factor);
-- const float weight_prev = 1.0f - smoothing_factor;
-- const __m128 weight_prev_x4 = _mm_set_ps1(weight_prev);
-- const __m128 weight_prev_squared_x4 =
-- _mm_mul_ps(weight_prev_x4, weight_prev_x4);
-- const __m128 weight_prev_4th_x4 =
-- _mm_mul_ps(weight_prev_squared_x4, weight_prev_squared_x4);
--
-- // Compute z[n], z[n-1], z[n-2], and z[n-3] in parallel in lanes 3, 2, 1 and
-- // 0, respectively.
-- __m128 max_x4 = _mm_setzero_ps();
-- __m128 ewma_x4 = _mm_setr_ps(0.0f, 0.0f, 0.0f, initial_value);
-- int i;
-- for (i = 0; i < last_index; i += 4) {
-- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_4th_x4);
-- const __m128 sample_x4 = _mm_load_ps(src + i);
-- const __m128 sample_squared_x4 = _mm_mul_ps(sample_x4, sample_x4);
-- max_x4 = _mm_max_ps(max_x4, sample_squared_x4);
-- // Note: The compiler optimizes this to a single multiply-and-accumulate
-- // instruction:
-- ewma_x4 = _mm_add_ps(ewma_x4,
-- _mm_mul_ps(sample_squared_x4, smoothing_factor_x4));
-- }
--
-- // y[n] = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
-- float ewma = EXTRACT_FLOAT(ewma_x4, 3);
-- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
-- ewma += EXTRACT_FLOAT(ewma_x4, 2);
-- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
-- ewma += EXTRACT_FLOAT(ewma_x4, 1);
-- ewma_x4 = _mm_mul_ss(ewma_x4, weight_prev_x4);
-- ewma += EXTRACT_FLOAT(ewma_x4, 0);
--
-- // Fold the maximums together to get the overall maximum.
-- max_x4 = _mm_max_ps(max_x4,
-- _mm_shuffle_ps(max_x4, max_x4, _MM_SHUFFLE(3, 3, 1, 1)));
-- max_x4 = _mm_max_ss(max_x4, _mm_shuffle_ps(max_x4, max_x4, 2));
--
-- std::pair<float, float> result(ewma, EXTRACT_FLOAT(max_x4, 0));
--
-- // Handle remaining values at the end of |src|.
-- for (; i < len; ++i) {
-- result.first *= weight_prev;
-- const float sample = src[i];
-- const float sample_squared = sample * sample;
-- result.first += sample_squared * smoothing_factor;
-- result.second = std::max(result.second, sample_squared);
-- }
--
-- return result;
--}
--#endif
--
- #if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
- void FMAC_NEON(const float src[], float scale, int len, float dest[]) {
- const int rem = len % 4;
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math.h 2017-03-05 17:26:26.170986295 +0100
-@@ -15,6 +15,11 @@
- // Required alignment for inputs and outputs to all vector math functions
- enum { kRequiredAlignment = 16 };
-
-+// Selects runtime specific optimizations such as SSE. Must be called prior to
-+// calling FMAC() or FMUL(). Called during media library initialization; most
-+// users should never have to call this.
-+MEDIA_EXPORT void Initialize();
-+
- // Multiply each element of |src| (up to |len|) by |scale| and add to |dest|.
- // |src| and |dest| must be aligned by kRequiredAlignment.
- MEDIA_EXPORT void FMAC(const float src[], float scale, int len, float dest[]);
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_perftest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_perftest.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_perftest.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_perftest.cc 2017-03-05 17:26:26.171986280 +0100
-@@ -5,6 +5,7 @@
- #include <memory>
-
- #include "base/macros.h"
-+#include "base/cpu.h"
- #include "base/memory/aligned_memory.h"
- #include "base/time/time.h"
- #include "build/build_config.h"
-@@ -82,15 +83,11 @@
- DISALLOW_COPY_AND_ASSIGN(VectorMathPerfTest);
- };
-
--// Define platform dependent function names for SIMD optimized methods.
-+// Define platform independent function name for FMAC* perf tests.
- #if defined(ARCH_CPU_X86_FAMILY)
- #define FMAC_FUNC FMAC_SSE
--#define FMUL_FUNC FMUL_SSE
--#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
- #elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
- #define FMAC_FUNC FMAC_NEON
--#define FMUL_FUNC FMUL_NEON
--#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
- #endif
-
- // Benchmark for each optimized vector_math::FMAC() method.
-@@ -99,6 +96,9 @@
- RunBenchmark(
- vector_math::FMAC_C, true, "vector_math_fmac", "unoptimized");
- #if defined(FMAC_FUNC)
-+#if defined(ARCH_CPU_X86_FAMILY)
-+ ASSERT_TRUE(base::CPU().has_sse());
-+#endif
- // Benchmark FMAC_FUNC() with unaligned size.
- ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
- sizeof(float)), 0U);
-@@ -112,12 +112,24 @@
- #endif
- }
-
-+#undef FMAC_FUNC
-+
-+// Define platform independent function name for FMULBenchmark* tests.
-+#if defined(ARCH_CPU_X86_FAMILY)
-+#define FMUL_FUNC FMUL_SSE
-+#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
-+#define FMUL_FUNC FMUL_NEON
-+#endif
-+
- // Benchmark for each optimized vector_math::FMUL() method.
- TEST_F(VectorMathPerfTest, FMUL) {
- // Benchmark FMUL_C().
- RunBenchmark(
- vector_math::FMUL_C, true, "vector_math_fmul", "unoptimized");
- #if defined(FMUL_FUNC)
-+#if defined(ARCH_CPU_X86_FAMILY)
-+ ASSERT_TRUE(base::CPU().has_sse());
-+#endif
- // Benchmark FMUL_FUNC() with unaligned size.
- ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
- sizeof(float)), 0U);
-@@ -131,6 +143,14 @@
- #endif
- }
-
-+#undef FMUL_FUNC
-+
-+#if defined(ARCH_CPU_X86_FAMILY)
-+#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
-+#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
-+#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
-+#endif
-+
- // Benchmark for each optimized vector_math::EWMAAndMaxPower() method.
- TEST_F(VectorMathPerfTest, EWMAAndMaxPower) {
- // Benchmark EWMAAndMaxPower_C().
-@@ -139,6 +159,9 @@
- "vector_math_ewma_and_max_power",
- "unoptimized");
- #if defined(EWMAAndMaxPower_FUNC)
-+#if defined(ARCH_CPU_X86_FAMILY)
-+ ASSERT_TRUE(base::CPU().has_sse());
-+#endif
- // Benchmark EWMAAndMaxPower_FUNC() with unaligned size.
- ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
- sizeof(float)), 0U);
-@@ -156,4 +179,6 @@
- #endif
- }
-
-+#undef EWMAAndMaxPower_FUNC
-+
- } // namespace media
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_testing.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_testing.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_testing.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_testing.h 2017-03-05 17:26:26.171986280 +0100
-@@ -19,7 +19,7 @@
- MEDIA_EXPORT std::pair<float, float> EWMAAndMaxPower_C(
- float initial_value, const float src[], int len, float smoothing_factor);
-
--#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
-+#if defined(ARCH_CPU_X86_FAMILY)
- MEDIA_EXPORT void FMAC_SSE(const float src[], float scale, int len,
- float dest[]);
- MEDIA_EXPORT void FMUL_SSE(const float src[], float scale, int len,
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_unittest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_unittest.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_unittest.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_unittest.cc 2017-03-05 17:26:26.172986265 +0100
-@@ -9,6 +9,7 @@
- #include <memory>
-
- #include "base/macros.h"
-+#include "base/cpu.h"
- #include "base/memory/aligned_memory.h"
- #include "base/strings/string_number_conversions.h"
- #include "base/strings/stringize_macros.h"
-@@ -78,6 +79,7 @@
-
- #if defined(ARCH_CPU_X86_FAMILY)
- {
-+ ASSERT_TRUE(base::CPU().has_sse());
- SCOPED_TRACE("FMAC_SSE");
- FillTestVectors(kInputFillValue, kOutputFillValue);
- vector_math::FMAC_SSE(
-@@ -119,6 +121,7 @@
-
- #if defined(ARCH_CPU_X86_FAMILY)
- {
-+ ASSERT_TRUE(base::CPU().has_sse());
- SCOPED_TRACE("FMUL_SSE");
- FillTestVectors(kInputFillValue, kOutputFillValue);
- vector_math::FMUL_SSE(
-@@ -227,6 +230,7 @@
-
- #if defined(ARCH_CPU_X86_FAMILY)
- {
-+ ASSERT_TRUE(base::CPU().has_sse());
- SCOPED_TRACE("EWMAAndMaxPower_SSE");
- const std::pair<float, float>& result = vector_math::EWMAAndMaxPower_SSE(
- initial_value_, data_.get(), data_len_, smoothing_factor_);
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert.cc 2017-03-05 17:26:26.173986250 +0100
-@@ -32,7 +32,7 @@
- #include "media/base/simd/convert_yuv_to_rgb.h"
- #include "media/base/simd/filter_yuv.h"
-
--#if defined(ARCH_CPU_X86_FAMILY)
-+#if defined(ARCH_CPU_X86_FAMILY) && defined(__MMX__)
- #if defined(COMPILER_MSVC)
- #include <intrin.h>
- #else
-@@ -133,7 +133,7 @@
-
- // Empty SIMD registers state after using them.
- void EmptyRegisterStateStub() {}
--#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-+#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE) && defined(__MMX__)
- void EmptyRegisterStateIntrinsic() { _mm_empty(); }
- #endif
- typedef void (*EmptyRegisterStateProc)();
-@@ -247,34 +247,46 @@
- // Assembly code confuses MemorySanitizer. Also not available in iOS builds.
- #if defined(ARCH_CPU_X86_FAMILY) && !defined(MEMORY_SANITIZER) && \
- !defined(OS_IOS)
-- g_convert_yuva_to_argb_proc_ = ConvertYUVAToARGB_MMX;
-+ base::CPU cpu;
-+ if (cpu.has_mmx()) {
-+ g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_MMX;
-+ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_MMX;
-+ g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_MMX;
-+ g_convert_yuva_to_argb_proc_ = ConvertYUVAToARGB_MMX;
-+ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX;
-
- #if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-- g_empty_register_state_proc_ = EmptyRegisterStateIntrinsic;
-+ g_filter_yuv_rows_proc_ = FilterYUVRows_MMX;
-+#endif
-+#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE) && defined(__MMX__)
-+ g_empty_register_state_proc_ = EmptyRegisterStateIntrinsic;
- #else
-- g_empty_register_state_proc_ = EmptyRegisterState_MMX;
-+ g_empty_register_state_proc_ = EmptyRegisterState_MMX;
- #endif
-+ }
-
-- g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_SSE;
-- g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_SSE;
-+ if (cpu.has_sse()) {
-+ g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_SSE;
-+ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE;
-+ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_SSE;
-+ g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_SSE;
-+ }
-
-- g_filter_yuv_rows_proc_ = FilterYUVRows_SSE2;
-- g_convert_rgb32_to_yuv_proc_ = ConvertRGB32ToYUV_SSE2;
-+ if (cpu.has_sse2()) {
-+ g_filter_yuv_rows_proc_ = FilterYUVRows_SSE2;
-+ g_convert_rgb32_to_yuv_proc_ = ConvertRGB32ToYUV_SSE2;
-
- #if defined(ARCH_CPU_X86_64)
-- g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE2_X64;
-+ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE2_X64;
-
-- // Technically this should be in the MMX section, but MSVC will optimize out
-- // the export of LinearScaleYUVToRGB32Row_MMX, which is required by the unit
-- // tests, if that decision can be made at compile time. Since all X64 CPUs
-- // have SSE2, we can hack around this by making the selection here.
-- g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX_X64;
--#else
-- g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE;
-- g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_SSE;
-+ // Technically this should be in the MMX section, but MSVC will optimize out
-+ // the export of LinearScaleYUVToRGB32Row_MMX, which is required by the unit
-+ // tests, if that decision can be made at compile time. Since all X64 CPUs
-+ // have SSE2, we can hack around this by making the selection here.
-+ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX_X64;
- #endif
-+ }
-
-- base::CPU cpu;
- if (cpu.has_ssse3()) {
- g_convert_rgb24_to_yuv_proc_ = &ConvertRGB24ToYUV_SSSE3;
-
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc 2017-03-05 17:26:26.173986250 +0100
-@@ -71,6 +71,29 @@
- DISALLOW_COPY_AND_ASSIGN(YUVConvertPerfTest);
- };
-
-+TEST_F(YUVConvertPerfTest, ConvertYUVToRGB32Row_MMX) {
-+ ASSERT_TRUE(base::CPU().has_mmx());
-+
-+ base::TimeTicks start = base::TimeTicks::Now();
-+ for (int i = 0; i < kPerfTestIterations; ++i) {
-+ for (int row = 0; row < kSourceHeight; ++row) {
-+ int chroma_row = row / 2;
-+ ConvertYUVToRGB32Row_MMX(
-+ yuv_bytes_.get() + row * kSourceWidth,
-+ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
-+ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
-+ rgb_bytes_converted_.get(),
-+ kWidth,
-+ GetLookupTable(YV12));
-+ }
-+ }
-+ media::EmptyRegisterState();
-+ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
-+ perf_test::PrintResult(
-+ "yuv_convert_perftest", "", "ConvertYUVToRGB32Row_MMX",
-+ kPerfTestIterations / total_time_seconds, "runs/s", true);
-+}
-+
- TEST_F(YUVConvertPerfTest, ConvertYUVToRGB32Row_SSE) {
- ASSERT_TRUE(base::CPU().has_sse());
-
-@@ -161,9 +184,32 @@
- }
- #endif
-
--// 64-bit release + component builds on Windows are too smart and optimizes
--// away the function being tested.
--#if defined(OS_WIN) && (defined(ARCH_CPU_X86) || !defined(COMPONENT_BUILD))
-+TEST_F(YUVConvertPerfTest, ScaleYUVToRGB32Row_MMX) {
-+ ASSERT_TRUE(base::CPU().has_mmx());
-+
-+ const int kSourceDx = 80000; // This value means a scale down.
-+
-+ base::TimeTicks start = base::TimeTicks::Now();
-+ for (int i = 0; i < kPerfTestIterations; ++i) {
-+ for (int row = 0; row < kSourceHeight; ++row) {
-+ int chroma_row = row / 2;
-+ ScaleYUVToRGB32Row_MMX(
-+ yuv_bytes_.get() + row * kSourceWidth,
-+ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
-+ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
-+ rgb_bytes_converted_.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ }
-+ }
-+ media::EmptyRegisterState();
-+ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
-+ perf_test::PrintResult(
-+ "yuv_convert_perftest", "", "ScaleYUVToRGB32Row_MMX",
-+ kPerfTestIterations / total_time_seconds, "runs/s", true);
-+}
-+
- TEST_F(YUVConvertPerfTest, ScaleYUVToRGB32Row_SSE) {
- ASSERT_TRUE(base::CPU().has_sse());
-
-@@ -190,6 +236,32 @@
- kPerfTestIterations / total_time_seconds, "runs/s", true);
- }
-
-+TEST_F(YUVConvertPerfTest, LinearScaleYUVToRGB32Row_MMX) {
-+ ASSERT_TRUE(base::CPU().has_mmx());
-+
-+ const int kSourceDx = 80000; // This value means a scale down.
-+
-+ base::TimeTicks start = base::TimeTicks::Now();
-+ for (int i = 0; i < kPerfTestIterations; ++i) {
-+ for (int row = 0; row < kSourceHeight; ++row) {
-+ int chroma_row = row / 2;
-+ LinearScaleYUVToRGB32Row_MMX(
-+ yuv_bytes_.get() + row * kSourceWidth,
-+ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
-+ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
-+ rgb_bytes_converted_.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ }
-+ }
-+ media::EmptyRegisterState();
-+ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
-+ perf_test::PrintResult(
-+ "yuv_convert_perftest", "", "LinearScaleYUVToRGB32Row_MMX",
-+ kPerfTestIterations / total_time_seconds, "runs/s", true);
-+}
-+
- TEST_F(YUVConvertPerfTest, LinearScaleYUVToRGB32Row_SSE) {
- ASSERT_TRUE(base::CPU().has_sse());
-
-@@ -215,7 +287,6 @@
- "yuv_convert_perftest", "", "LinearScaleYUVToRGB32Row_SSE",
- kPerfTestIterations / total_time_seconds, "runs/s", true);
- }
--#endif // defined(OS_WIN) && (ARCH_CPU_X86 || COMPONENT_BUILD)
-
- #endif // !defined(ARCH_CPU_ARM_FAMILY) && !defined(ARCH_CPU_MIPS_FAMILY)
-
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc 2017-03-05 17:26:26.174986235 +0100
-@@ -643,6 +643,37 @@
- EXPECT_EQ(0, error);
- }
-
-+TEST(YUVConvertTest, ConvertYUVToRGB32Row_MMX) {
-+ base::CPU cpu;
-+ if (!cpu.has_mmx()) {
-+ LOG(WARNING) << "System not supported. Test skipped.";
-+ return;
-+ }
-+
-+ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
-+ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
-+ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
-+ ReadYV12Data(&yuv_bytes);
-+
-+ const int kWidth = 167;
-+ ConvertYUVToRGB32Row_C(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_reference.get(),
-+ kWidth,
-+ GetLookupTable(YV12));
-+ ConvertYUVToRGB32Row_MMX(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_converted.get(),
-+ kWidth,
-+ GetLookupTable(YV12));
-+ media::EmptyRegisterState();
-+ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
-+ rgb_bytes_converted.get(),
-+ kWidth * kBpp));
-+}
-+
- TEST(YUVConvertTest, ConvertYUVToRGB32Row_SSE) {
- base::CPU cpu;
- if (!cpu.has_sse()) {
-@@ -674,9 +705,40 @@
- kWidth * kBpp));
- }
-
--// 64-bit release + component builds on Windows are too smart and optimizes
--// away the function being tested.
--#if defined(OS_WIN) && (defined(ARCH_CPU_X86) || !defined(COMPONENT_BUILD))
-+TEST(YUVConvertTest, ScaleYUVToRGB32Row_MMX) {
-+ base::CPU cpu;
-+ if (!cpu.has_mmx()) {
-+ LOG(WARNING) << "System not supported. Test skipped.";
-+ return;
-+ }
-+
-+ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
-+ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
-+ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
-+ ReadYV12Data(&yuv_bytes);
-+
-+ const int kWidth = 167;
-+ const int kSourceDx = 80000; // This value means a scale down.
-+ ScaleYUVToRGB32Row_C(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_reference.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ ScaleYUVToRGB32Row_MMX(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_converted.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ media::EmptyRegisterState();
-+ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
-+ rgb_bytes_converted.get(),
-+ kWidth * kBpp));
-+}
-+
- TEST(YUVConvertTest, ScaleYUVToRGB32Row_SSE) {
- base::CPU cpu;
- if (!cpu.has_sse()) {
-@@ -711,6 +773,40 @@
- kWidth * kBpp));
- }
-
-+TEST(YUVConvertTest, LinearScaleYUVToRGB32Row_MMX) {
-+ base::CPU cpu;
-+ if (!cpu.has_mmx()) {
-+ LOG(WARNING) << "System not supported. Test skipped.";
-+ return;
-+ }
-+
-+ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
-+ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
-+ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
-+ ReadYV12Data(&yuv_bytes);
-+
-+ const int kWidth = 167;
-+ const int kSourceDx = 80000; // This value means a scale down.
-+ LinearScaleYUVToRGB32Row_C(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_reference.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ LinearScaleYUVToRGB32Row_MMX(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_converted.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ media::EmptyRegisterState();
-+ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
-+ rgb_bytes_converted.get(),
-+ kWidth * kBpp));
-+}
-+
- TEST(YUVConvertTest, LinearScaleYUVToRGB32Row_SSE) {
- base::CPU cpu;
- if (!cpu.has_sse()) {
-@@ -744,7 +840,6 @@
- rgb_bytes_converted.get(),
- kWidth * kBpp));
- }
--#endif // defined(OS_WIN) && (ARCH_CPU_X86 || COMPONENT_BUILD)
-
- TEST(YUVConvertTest, FilterYUVRows_C_OutOfBounds) {
- std::unique_ptr<uint8_t[]> src(new uint8_t[16]);
-@@ -761,6 +856,30 @@
- }
- }
-
-+#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-+TEST(YUVConvertTest, FilterYUVRows_MMX_OutOfBounds) {
-+ base::CPU cpu;
-+ if (!cpu.has_mmx()) {
-+ LOG(WARNING) << "System not supported. Test skipped.";
-+ return;
-+ }
-+
-+ scoped_ptr<uint8[]> src(new uint8[16]);
-+ scoped_ptr<uint8[]> dst(new uint8[16]);
-+
-+ memset(src.get(), 0xff, 16);
-+ memset(dst.get(), 0, 16);
-+
-+ media::FilterYUVRows_MMX(dst.get(), src.get(), src.get(), 1, 255);
-+ media::EmptyRegisterState();
-+
-+ EXPECT_EQ(255u, dst[0]);
-+ for (int i = 1; i < 16; ++i) {
-+ EXPECT_EQ(0u, dst[i]);
-+ }
-+}
-+#endif // defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-+
- TEST(YUVConvertTest, FilterYUVRows_SSE2_OutOfBounds) {
- base::CPU cpu;
- if (!cpu.has_sse2()) {
-@@ -782,6 +901,38 @@
- }
- }
-
-+#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-+TEST(YUVConvertTest, FilterYUVRows_MMX_UnalignedDestination) {
-+ base::CPU cpu;
-+ if (!cpu.has_mmx()) {
-+ LOG(WARNING) << "System not supported. Test skipped.";
-+ return;
-+ }
-+
-+ const int kSize = 32;
-+ scoped_ptr<uint8[]> src(new uint8[kSize]);
-+ scoped_ptr<uint8[]> dst_sample(new uint8[kSize]);
-+ scoped_ptr<uint8[]> dst(new uint8[kSize]);
-+
-+ memset(dst_sample.get(), 0, kSize);
-+ memset(dst.get(), 0, kSize);
-+ for (int i = 0; i < kSize; ++i)
-+ src[i] = 100 + i;
-+
-+ media::FilterYUVRows_C(dst_sample.get(),
-+ src.get(), src.get(), 17, 128);
-+
-+ // Generate an unaligned output address.
-+ uint8* dst_ptr =
-+ reinterpret_cast<uint8*>(
-+ (reinterpret_cast<uintptr_t>(dst.get() + 8) & ~7) + 1);
-+ media::FilterYUVRows_MMX(dst_ptr, src.get(), src.get(), 17, 128);
-+ media::EmptyRegisterState();
-+
-+ EXPECT_EQ(0, memcmp(dst_sample.get(), dst_ptr, 17));
-+}
-+#endif // defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-+
- TEST(YUVConvertTest, FilterYUVRows_SSE2_UnalignedDestination) {
- base::CPU cpu;
- if (!cpu.has_sse2()) {
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/BUILD.gn
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/BUILD.gn 2017-03-05 17:26:26.175986220 +0100
-@@ -805,6 +805,26 @@
- "//base",
- "//ui/gfx/geometry",
- ]
-+ if (current_cpu == "x86" || current_cpu == "x64") {
-+ deps += [
-+ ":shared_memory_support_sse",
-+ ]
-+ }
-+}
-+
-+if (current_cpu == "x86" || current_cpu == "x64") {
-+ source_set("shared_memory_support_sse") {
-+ sources = [
-+ "base/simd/vector_math_sse.cc",
-+ ]
-+ configs += [
-+ "//media:media_config",
-+ "//media:media_implementation",
-+ ]
-+ if (!is_win) {
-+ cflags = [ "-msse" ]
-+ }
-+ }
- }
-
- # TODO(watk): Refactor tests that could be made to run on Android. See
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/media.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/media.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/media.gyp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/media.gyp 2017-03-05 17:51:56.424188330 +0100
-@@ -1020,12 +1020,12 @@
- ['target_arch=="ia32" or target_arch=="x64"', {
- 'dependencies': [
- 'media_asm',
-+ 'media_mmx',
-+ 'media_sse',
-+ 'media_sse2',
- ],
- 'sources': [
-- 'base/simd/convert_rgb_to_yuv_sse2.cc',
-- 'base/simd/convert_rgb_to_yuv_ssse3.cc',
- 'base/simd/convert_yuv_to_rgb_x86.cc',
-- 'base/simd/filter_yuv_sse2.cc',
- ],
- }],
- ['OS!="linux" and OS!="win"', {
-@@ -1616,6 +1616,11 @@
- 'USE_NEON'
- ],
- }],
-+ ['target_arch=="ia32" or target_arch=="x64"', {
-+ 'dependencies': [
-+ 'shared_memory_support_sse'
-+ ],
-+ }],
- ],
- },
- {
-@@ -1633,6 +1638,7 @@
- 'type': 'static_library',
- 'sources': [
- 'base/simd/convert_rgb_to_yuv_ssse3.asm',
-+ 'base/simd/convert_yuv_to_rgb_mmx.asm',
- 'base/simd/convert_yuv_to_rgb_sse.asm',
- 'base/simd/convert_yuva_to_argb_mmx.asm',
- 'base/simd/empty_register_state_mmx.asm',
-@@ -1713,6 +1719,75 @@
- '../third_party/yasm/yasm_compile.gypi',
- ],
- },
-+ {
-+ # GN version: //media/base:media_mmx
-+ 'target_name': 'media_mmx',
-+ 'type': 'static_library',
-+ 'cflags': [
-+ '-mmmx',
-+ ],
-+ 'defines': [
-+ 'MEDIA_IMPLEMENTATION',
-+ ],
-+ 'include_dirs': [
-+ '..',
-+ ],
-+ 'sources': [
-+ 'base/simd/filter_yuv_mmx.cc',
-+ ],
-+ },
-+ {
-+ # GN version: //media/base:media_sse
-+ 'target_name': 'media_sse',
-+ 'type': 'static_library',
-+ 'cflags': [
-+ '-msse',
-+ ],
-+ 'defines': [
-+ 'MEDIA_IMPLEMENTATION',
-+ ],
-+ 'include_dirs': [
-+ '..',
-+ ],
-+ 'sources': [
-+ 'base/simd/sinc_resampler_sse.cc',
-+ ],
-+ },
-+ {
-+ # GN version: //media/base:media_sse2
-+ 'target_name': 'media_sse2',
-+ 'type': 'static_library',
-+ 'cflags': [
-+ '-msse2',
-+ ],
-+ 'defines': [
-+ 'MEDIA_IMPLEMENTATION',
-+ ],
-+ 'include_dirs': [
-+ '..',
-+ ],
-+ 'sources': [
-+ 'base/simd/convert_rgb_to_yuv_sse2.cc',
-+ 'base/simd/convert_rgb_to_yuv_ssse3.cc',
-+ 'base/simd/filter_yuv_sse2.cc',
-+ ],
-+ },
-+ {
-+ 'target_name': 'shared_memory_support_sse',
-+ 'type': 'static_library',
-+ 'cflags': [
-+ '-msse',
-+ ],
-+ 'defines': [
-+ 'MEDIA_IMPLEMENTATION',
-+ ],
-+ 'include_dirs': [
-+ '..',
-+ ],
-+ 'sources': [
-+ 'base/simd/vector_math_sse.cc',
-+ ],
-+ },
- ], # targets
- }],
- ['OS=="win"', {
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/BUILD.gn
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/BUILD.gn 2017-03-05 17:56:08.829413581 +0100
-@@ -329,11 +329,6 @@
- if (!is_ios) {
- sources += [ "ext/platform_canvas.cc" ]
- }
-- if (!is_ios && (current_cpu == "x86" || current_cpu == "x64")) {
-- sources += [ "ext/convolver_SSE2.cc" ]
-- } else if (current_cpu == "mipsel" && mips_dsp_rev >= 2) {
-- sources += [ "ext/convolver_mips_dspr2.cc" ]
-- }
-
- # The skia gypi values are relative to the skia_dir, so we need to rebase.
- sources += gypi_skia_core.sources
-@@ -642,7 +637,15 @@
- if (skia_build_no_opts) {
- sources = gypi_skia_opts.none_sources
- } else if (current_cpu == "x86" || current_cpu == "x64") {
-- sources = gypi_skia_opts.sse2_sources
-+ sources = gypi_skia_opts.sse2_sources +
-+ [
-+ # Chrome-specific.
-+ "ext/convolver_SSE2.cc",
-+ "ext/convolver_SSE2.h",
-+ ]
-+ if (!is_win || is_clang) {
-+ cflags += [ "-msse2" ]
-+ }
- deps += [
- ":skia_opts_avx",
- ":skia_opts_avx2",
-@@ -677,6 +680,13 @@
-
- if (mips_dsp_rev >= 1) {
- sources = gypi_skia_opts.mips_dsp_sources
-+ if (mips_dsp_rev >= 2) {
-+ sources += [
-+ # Chrome-specific.
-+ "ext/convolver_mips_dspr2.cc",
-+ "ext/convolver_mips_dspr2.h",
-+ ]
-+ }
- } else {
- sources = gypi_skia_opts.none_sources
- }
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/ext/convolver.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/ext/convolver.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/ext/convolver.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/ext/convolver.cc 2017-03-05 17:26:26.176986205 +0100
-@@ -362,10 +362,13 @@
-
- void SetupSIMD(ConvolveProcs *procs) {
- #ifdef SIMD_SSE2
-- procs->extra_horizontal_reads = 3;
-- procs->convolve_vertically = &ConvolveVertically_SSE2;
-- procs->convolve_4rows_horizontally = &Convolve4RowsHorizontally_SSE2;
-- procs->convolve_horizontally = &ConvolveHorizontally_SSE2;
-+ base::CPU cpu;
-+ if (cpu.has_sse2()) {
-+ procs->extra_horizontal_reads = 3;
-+ procs->convolve_vertically = &ConvolveVertically_SSE2;
-+ procs->convolve_4rows_horizontally = &Convolve4RowsHorizontally_SSE2;
-+ procs->convolve_horizontally = &ConvolveHorizontally_SSE2;
-+ }
- #elif defined SIMD_MIPS_DSPR2
- procs->extra_horizontal_reads = 3;
- procs->convolve_vertically = &ConvolveVertically_mips_dspr2;
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/ext/convolver.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/ext/convolver.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/ext/convolver.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/ext/convolver.h 2017-03-05 17:26:26.239985269 +0100
-@@ -11,6 +11,7 @@
- #include <vector>
-
- #include "build/build_config.h"
-+#include "base/cpu.h"
- #include "third_party/skia/include/core/SkSize.h"
- #include "third_party/skia/include/core/SkTypes.h"
-
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia_chrome.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia_chrome.gypi
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia_chrome.gypi 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia_chrome.gypi 2017-03-05 17:26:26.239985269 +0100
-@@ -9,6 +9,7 @@
- {
- 'dependencies': [
- 'skia_library',
-+ 'skia_chrome_opts',
- '../base/base.gyp:base',
- '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
- ],
-@@ -67,22 +68,16 @@
- 'ext/skia_utils_base.cc',
- ],
- }],
-+ ['OS == "ios"', {
-+ 'dependencies!': [
-+ 'skia_chrome_opts',
-+ ],
-+ }],
- [ 'OS != "android" and (OS != "linux" or use_cairo==1)', {
- 'sources!': [
- 'ext/bitmap_platform_device_skia.cc',
- ],
- }],
-- [ 'OS != "ios" and target_arch != "arm" and target_arch != "mipsel" and \
-- target_arch != "arm64" and target_arch != "mips64el"', {
-- 'sources': [
-- 'ext/convolver_SSE2.cc',
-- ],
-- }],
-- [ 'target_arch == "mipsel" and mips_dsp_rev >= 2',{
-- 'sources': [
-- 'ext/convolver_mips_dspr2.cc',
-- ],
-- }],
- ],
-
- 'target_conditions': [
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia.gyp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia.gyp 2017-03-05 17:26:26.239985269 +0100
-@@ -128,6 +128,37 @@
- # targets that are not dependent upon the component type
- 'targets': [
- {
-+ 'target_name': 'skia_chrome_opts',
-+ 'type': 'static_library',
-+ 'include_dirs': [
-+ '..',
-+ 'config',
-+ '../third_party/skia/include/core',
-+ ],
-+ 'conditions': [
-+ [ 'os_posix == 1 and OS != "mac" and OS != "android" and \
-+ target_arch != "arm" and target_arch != "mipsel" and \
-+ target_arch != "arm64" and target_arch != "mips64el"', {
-+ 'cflags': [
-+ '-msse2',
-+ ],
-+ }],
-+ [ 'target_arch != "arm" and target_arch != "mipsel" and \
-+ target_arch != "arm64" and target_arch != "mips64el"', {
-+ 'sources': [
-+ 'ext/convolver_SSE2.cc',
-+ 'ext/convolver_SSE2.h',
-+ ],
-+ }],
-+ [ 'target_arch == "mipsel" and mips_dsp_rev >= 2',{
-+ 'sources': [
-+ 'ext/convolver_mips_dspr2.cc',
-+ 'ext/convolver_mips_dspr2.h',
-+ ],
-+ }],
-+ ],
-+ },
-+ {
- 'target_name': 'image_operations_bench',
- # The optimize: 'max' scattered throughout are particularly
- # important when compiled by MSVC 2013, which seems
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia_library_opts.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia_library_opts.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia_library_opts.gyp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia_library_opts.gyp 2017-03-05 17:26:26.239985269 +0100
-@@ -19,10 +19,22 @@
- },
-
- 'targets': [
-- # SSE files have to be built in a separate target, because gcc needs
-- # different -msse flags for different SSE levels which enable use of SSE
-- # intrinsics but also allow emission of SSE2 instructions for scalar code.
-- # gyp does not allow per-file compiler flags.
-+ # Due to an unfortunate intersection of lameness between gcc and gyp,
-+ # we have to build the *_SSE2.cpp files in a separate target. The
-+ # gcc lameness is that, in order to compile SSE2 intrinsics code, it
-+ # must be passed the -msse2 flag. However, with this flag, it may
-+ # emit SSE2 instructions even for scalar code, such as the CPUID
-+ # test used to test for the presence of SSE2. So that, and all other
-+ # code must be compiled *without* -msse2. The gyp lameness is that it
-+ # does not allow file-specific CFLAGS, so we must create this extra
-+ # target for those files to be compiled with -msse2.
-+ #
-+ # This is actually only a problem on 32-bit Linux (all Intel Macs have
-+ # SSE2, Linux x86_64 has SSE2 by definition, and MSC will happily emit
-+ # SSE2 from instrinsics, which generating plain ol' 386 for everything
-+ # else). However, to keep the .gyp file simple and avoid platform-specific
-+ # build breakage, we do this on all platforms.
-+
- # For about the same reason, we need to compile the ARM opts files
- # separately as well.
- {
-@@ -45,12 +57,13 @@
- ],
- 'include_dirs': [ '<@(include_dirs)' ],
- 'conditions': [
-+ [ 'os_posix == 1 and OS != "mac" and OS != "android" and \
-+ target_arch != "arm" and target_arch != "arm64" and \
-+ target_arch != "mipsel" and target_arch != "mips64el"', {
-+ 'cflags': [ '-msse2' ],
-+ }],
- [ 'target_arch != "arm" and target_arch != "mipsel" and \
- target_arch != "arm64" and target_arch != "mips64el"', {
-- # Chrome builds with -msse2 locally, so sse2_sources could in theory
-- # be in the regular skia target. But we need skia_opts for arm
-- # anyway, so putting sse2_sources here is simpler than making this
-- # conditionally a type none target on x86.
- 'sources': [ '<@(sse2_sources)' ],
- 'dependencies': [
- 'skia_opts_ssse3',
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/qcms/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/qcms/BUILD.gn
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/qcms/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/qcms/BUILD.gn 2017-03-05 17:26:26.240985255 +0100
-@@ -31,8 +31,8 @@
- ]
-
- if (current_cpu == "x86" || current_cpu == "x64") {
-- defines = [ "SSE2_ENABLE" ]
-- sources += [ "src/transform-sse2.c" ]
-+ defines = [ "SSE2_ENABLE" ] # runtime detection
-+ deps = [ "qcms_sse2" ]
- }
- }
-
-@@ -75,3 +75,15 @@
- public_configs = [ ":qcms_config" ]
- }
- }
-+
-+source_set("qcms_sse2") {
-+ configs -= [ "//build/config/compiler:chromium_code" ]
-+ configs += [ "//build/config/compiler:no_chromium_code" ]
-+ public_configs = [ ":qcms_config" ]
-+
-+ if (current_cpu == "x86" || current_cpu == "x64") {
-+ defines = [ "SSE2_ENABLE" ]
-+ sources = [ "src/transform-sse2.c" ]
-+ cflags = [ "-msse2" ]
-+ }
-+}
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/qcms/qcms.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/qcms/qcms.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/qcms/qcms.gyp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/qcms/qcms.gyp 2017-03-05 18:01:48.843328633 +0100
-@@ -52,10 +52,10 @@
- 'conditions': [
- ['target_arch=="ia32" or target_arch=="x64"', {
- 'defines': [
-- 'SSE2_ENABLE',
-+ 'SSE2_ENABLE', # runtime detection
- ],
-- 'sources': [
-- 'src/transform-sse2.c',
-+ 'dependencies': [
-+ 'qcms_sse2',
- ],
- }],
- ],
-@@ -68,6 +68,29 @@
- }],
- ],
- },
-+ {
-+ 'target_name': 'qcms_sse2',
-+ 'type': 'static_library',
-+ 'conditions': [
-+ ['target_arch == "ia32" or target_arch == "x64"', {
-+ 'defines': [
-+ 'SSE2_ENABLE',
-+ ],
-+ 'sources': [
-+ # Conditional compilation for SSE2 code on x86 and x64 machines
-+ 'src/transform-sse2.c',
-+ ],
-+ 'cflags': [
-+ '-msse2',
-+ ],
-+ }],
-+ ],
-+ 'direct_dependent_settings': {
-+ 'include_dirs': [
-+ './src',
-+ ],
-+ },
-+ },
- ],
- 'conditions': [
- ['disable_qcms == 0', {
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp 2017-03-05 17:26:26.240985255 +0100
-@@ -32,7 +32,7 @@
- #include "wtf/MathExtras.h"
- #include <algorithm>
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- #include <emmintrin.h>
- #endif
-
-@@ -575,7 +575,7 @@
- // First handle linear and exponential ramps which require looking ahead to the next event.
- if (nextEventType == ParamEvent::LinearRampToValue) {
- const float valueDelta = value2 - value1;
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- // Minimize in-loop operations. Calculate starting value and increment. Next step: value += inc.
- // value = value1 + (currentFrame/sampleRate - time1) * k * (value2 - value1);
- // inc = 4 / sampleRate * k * (value2 - value1);
-@@ -738,7 +738,7 @@
- for (; writeIndex < fillToFrame; ++writeIndex)
- values[writeIndex] = target;
- } else {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- // Resolve recursion by expanding constants to achieve a 4-step loop unrolling.
- // v1 = v0 + (t - v0) * c
- // v2 = v1 + (t - v1) * c
-@@ -843,7 +843,7 @@
- // Render the stretched curve data using linear interpolation. Oversampled
- // curve data can be provided if sharp discontinuities are desired.
- unsigned k = 0;
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- const __m128 vCurveVirtualIndex = _mm_set_ps1(curveVirtualIndex);
- const __m128 vCurvePointsPerFrame = _mm_set_ps1(curvePointsPerFrame);
- const __m128 vNumberOfCurvePointsM1 = _mm_set_ps1(numberOfCurvePoints - 1);
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp 2017-03-05 18:09:17.132624414 +0100
-@@ -26,6 +26,9 @@
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-+// include this first to get it before the CPU() function-like macro
-+#include "base/cpu.h"
-+
- #include "platform/audio/DirectConvolver.h"
-
- #if OS(MACOSX)
-@@ -35,22 +38,44 @@
- #include "platform/audio/VectorMath.h"
- #include "wtf/CPU.h"
-
--#if (CPU(X86) || CPU(X86_64)) && !OS(MACOSX)
-+#if ((CPU(X86) && defined(__SSE2__)) || CPU(X86_64)) && !OS(MACOSX)
- #include <emmintrin.h>
- #endif
-
-+#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
-+#error SSE2 parts must be built with -msse2
-+#endif
-+
- namespace blink {
-
- using namespace VectorMath;
-
-+#ifndef BUILD_ONLY_THE_SSE2_PARTS
-+
- DirectConvolver::DirectConvolver(size_t inputBlockSize)
- : m_inputBlockSize(inputBlockSize)
- , m_buffer(inputBlockSize * 2)
- {
-+#if CPU(X86)
-+ base::CPU cpu;
-+ m_haveSSE2 = cpu.has_sse2();
-+#endif
- }
-
-+#endif
-+
-+#ifdef BUILD_ONLY_THE_SSE2_PARTS
-+void DirectConvolver::m_processSSE2(AudioFloatArray* convolutionKernel, const float* sourceP, float* destP, size_t framesToProcess)
-+#else
- void DirectConvolver::process(AudioFloatArray* convolutionKernel, const float* sourceP, float* destP, size_t framesToProcess)
-+#endif
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (m_haveSSE2) {
-+ m_processSSE2(convolutionKernel, sourceP, destP, framesToProcess);
-+ return;
-+ }
-+#endif
- ASSERT(framesToProcess == m_inputBlockSize);
- if (framesToProcess != m_inputBlockSize)
- return;
-@@ -82,7 +107,7 @@
- #endif // CPU(X86)
- #else
- size_t i = 0;
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- // Convolution using SSE2. Currently only do this if both |kernelSize| and |framesToProcess|
- // are multiples of 4. If not, use the straightforward loop below.
-
-@@ -392,7 +417,7 @@
- }
- destP[i++] = sum;
- }
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- }
- #endif
- #endif // OS(MACOSX)
-@@ -401,10 +426,14 @@
- memcpy(m_buffer.data(), inputP, sizeof(float) * framesToProcess);
- }
-
-+#ifndef BUILD_ONLY_THE_SSE2_PARTS
-+
- void DirectConvolver::reset()
- {
- m_buffer.zero();
- }
-
-+#endif
-+
- } // namespace blink
-
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h 2017-03-05 17:26:26.241985240 +0100
-@@ -32,6 +32,7 @@
- #include "platform/PlatformExport.h"
- #include "platform/audio/AudioArray.h"
- #include "wtf/Allocator.h"
-+#include "wtf/CPU.h"
- #include "wtf/Noncopyable.h"
-
- namespace blink {
-@@ -50,6 +51,11 @@
- size_t m_inputBlockSize;
-
- AudioFloatArray m_buffer;
-+
-+#if CPU(X86)
-+ bool m_haveSSE2;
-+ void m_processSSE2(AudioFloatArray* convolutionKernel, const float* sourceP, float* destP, size_t framesToProcess);
-+#endif
- };
-
- } // namespace blink
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolverSSE2.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolverSSE2.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolverSSE2.cpp 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolverSSE2.cpp 2017-03-05 17:26:26.242985225 +0100
-@@ -0,0 +1,2 @@
-+#define BUILD_ONLY_THE_SSE2_PARTS
-+#include "DirectConvolver.cpp"
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp 2017-03-05 17:26:26.242985225 +0100
-@@ -26,15 +26,22 @@
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-+// include this first to get it before the CPU() function-like macro
-+#include "base/cpu.h"
-+
- #include "platform/audio/SincResampler.h"
- #include "platform/audio/AudioBus.h"
- #include "wtf/CPU.h"
- #include "wtf/MathExtras.h"
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- #include <emmintrin.h>
- #endif
-
-+#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
-+#error SSE2 parts must be built with -msse2
-+#endif
-+
- // Input buffer layout, dividing the total buffer into regions (r0 - r5):
- //
- // |----------------|----------------------------------------------------------------|----------------|
-@@ -64,6 +71,8 @@
-
- namespace blink {
-
-+#ifndef BUILD_ONLY_THE_SSE2_PARTS
-+
- SincResampler::SincResampler(double scaleFactor, unsigned kernelSize, unsigned numberOfKernelOffsets)
- : m_scaleFactor(scaleFactor)
- , m_kernelSize(kernelSize)
-@@ -77,6 +86,10 @@
- , m_sourceProvider(nullptr)
- , m_isBufferPrimed(false)
- {
-+#if CPU(X86)
-+ base::CPU cpu;
-+ m_haveSSE2 = cpu.has_sse2();
-+#endif
- initializeKernel();
- }
-
-@@ -193,8 +206,20 @@
- }
- }
-
-+#endif
-+
-+#ifdef BUILD_ONLY_THE_SSE2_PARTS
-+void SincResampler::m_processSSE2(AudioSourceProvider* sourceProvider, float* destination, size_t framesToProcess)
-+#else
- void SincResampler::process(AudioSourceProvider* sourceProvider, float* destination, size_t framesToProcess)
-+#endif
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (m_haveSSE2) {
-+ m_processSSE2(sourceProvider, destination, framesToProcess);
-+ return;
-+ }
-+#endif
- bool isGood = sourceProvider && m_blockSize > m_kernelSize && m_inputBuffer.size() >= m_blockSize + m_kernelSize && !(m_kernelSize % 2);
- ASSERT(isGood);
- if (!isGood)
-@@ -256,7 +281,7 @@
- {
- float input;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- // If the sourceP address is not 16-byte aligned, the first several frames (at most three) should be processed seperately.
- while ((reinterpret_cast<uintptr_t>(inputP) & 0x0F) && n) {
- CONVOLVE_ONE_SAMPLE
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h 2017-03-05 17:26:26.305984290 +0100
-@@ -33,6 +33,7 @@
- #include "platform/audio/AudioArray.h"
- #include "platform/audio/AudioSourceProvider.h"
- #include "wtf/Allocator.h"
-+#include "wtf/CPU.h"
- #include "wtf/Noncopyable.h"
-
- namespace blink {
-@@ -84,6 +85,11 @@
-
- // The buffer is primed once at the very beginning of processing.
- bool m_isBufferPrimed;
-+
-+#if CPU(X86)
-+ bool m_haveSSE2;
-+ void m_processSSE2(AudioSourceProvider*, float* destination, size_t framesToProcess);
-+#endif
- };
-
- } // namespace blink
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResamplerSSE2.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResamplerSSE2.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResamplerSSE2.cpp 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResamplerSSE2.cpp 2017-03-05 17:26:26.305984290 +0100
-@@ -0,0 +1,2 @@
-+#define BUILD_ONLY_THE_SSE2_PARTS
-+#include "SincResampler.cpp"
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp 2017-03-05 17:26:26.306984275 +0100
-@@ -22,6 +22,9 @@
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-+// include this first to get it before the CPU() function-like macro
-+#include "base/cpu.h"
-+
- #include "platform/audio/VectorMath.h"
- #include "wtf/Assertions.h"
- #include "wtf/CPU.h"
-@@ -32,10 +35,14 @@
- #include <Accelerate/Accelerate.h>
- #endif
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- #include <emmintrin.h>
- #endif
-
-+#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
-+#error SSE2 parts must be built with -msse2
-+#endif
-+
- #if HAVE(ARM_NEON_INTRINSICS)
- #include <arm_neon.h>
- #endif
-@@ -118,11 +125,25 @@
- }
- #else
-
-+#ifdef BUILD_ONLY_THE_SSE2_PARTS
-+namespace SSE2 {
-+#endif
-+
-+#if CPU(X86) && !defined(__SSE2__)
-+static base::CPU cpu;
-+#endif
-+
- void vsma(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess)
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vsma(sourceP, sourceStride, scale, destP, destStride, framesToProcess);
-+ return;
-+ }
-+#endif
- int n = framesToProcess;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if ((sourceStride == 1) && (destStride == 1)) {
- float k = *scale;
-
-@@ -193,9 +214,15 @@
-
- void vsmul(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess)
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vsmul(sourceP, sourceStride, scale, destP, destStride, framesToProcess);
-+ return;
-+ }
-+#endif
- int n = framesToProcess;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if ((sourceStride == 1) && (destStride == 1)) {
- float k = *scale;
-
-@@ -266,16 +293,22 @@
- sourceP += sourceStride;
- destP += destStride;
- }
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- }
- #endif
- }
-
- void vadd(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess)
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vadd(source1P, sourceStride1, source2P, sourceStride2, destP, destStride, framesToProcess);
-+ return;
-+ }
-+#endif
- int n = framesToProcess;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if ((sourceStride1 ==1) && (sourceStride2 == 1) && (destStride == 1)) {
- // If the sourceP address is not 16-byte aligned, the first several frames (at most three) should be processed separately.
- while ((reinterpret_cast<size_t>(source1P) & 0x0F) && n) {
-@@ -378,17 +411,23 @@
- source2P += sourceStride2;
- destP += destStride;
- }
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- }
- #endif
- }
-
- void vmul(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess)
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vmul(source1P, sourceStride1, source2P, sourceStride2, destP, destStride, framesToProcess);
-+ return;
-+ }
-+#endif
-
- int n = framesToProcess;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if ((sourceStride1 == 1) && (sourceStride2 == 1) && (destStride == 1)) {
- // If the source1P address is not 16-byte aligned, the first several frames (at most three) should be processed separately.
- while ((reinterpret_cast<uintptr_t>(source1P) & 0x0F) && n) {
-@@ -460,8 +499,14 @@
-
- void zvmul(const float* real1P, const float* imag1P, const float* real2P, const float* imag2P, float* realDestP, float* imagDestP, size_t framesToProcess)
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::zvmul(real1P, imag1P, real2P, imag2P, realDestP, imagDestP, framesToProcess);
-+ return;
-+ }
-+#endif
- unsigned i = 0;
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- // Only use the SSE optimization in the very common case that all addresses are 16-byte aligned.
- // Otherwise, fall through to the scalar code below.
- if (!(reinterpret_cast<uintptr_t>(real1P) & 0x0F)
-@@ -516,10 +561,16 @@
-
- void vsvesq(const float* sourceP, int sourceStride, float* sumP, size_t framesToProcess)
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vsvesq(sourceP, sourceStride, sumP, framesToProcess);
-+ return;
-+ }
-+#endif
- int n = framesToProcess;
- float sum = 0;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if (sourceStride == 1) {
- // If the sourceP address is not 16-byte aligned, the first several frames (at most three) should be processed separately.
- while ((reinterpret_cast<uintptr_t>(sourceP) & 0x0F) && n) {
-@@ -581,10 +632,16 @@
-
- void vmaxmgv(const float* sourceP, int sourceStride, float* maxP, size_t framesToProcess)
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vmaxmgv(sourceP, sourceStride, maxP, framesToProcess);
-+ return;
-+ }
-+#endif
- int n = framesToProcess;
- float max = 0;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if (sourceStride == 1) {
- // If the sourceP address is not 16-byte aligned, the first several frames (at most three) should be processed separately.
- while ((reinterpret_cast<uintptr_t>(sourceP) & 0x0F) && n) {
-@@ -648,6 +705,8 @@
- *maxP = max;
- }
-
-+#ifndef BUILD_ONLY_THE_SSE2_PARTS
-+
- void vclip(const float* sourceP, int sourceStride, const float* lowThresholdP, const float* highThresholdP, float* destP, int destStride, size_t framesToProcess)
- {
- int n = framesToProcess;
-@@ -678,6 +737,12 @@
- }
- }
-
-+#endif
-+
-+#ifdef BUILD_ONLY_THE_SSE2_PARTS
-+} // namespace SSE2
-+#endif
-+
- #endif // OS(MACOSX)
-
- } // namespace VectorMath
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h 2017-03-05 17:26:26.306984275 +0100
-@@ -26,6 +26,7 @@
- #define VectorMath_h
-
- #include "platform/PlatformExport.h"
-+#include "wtf/CPU.h"
- #include "wtf/build_config.h"
- #include <cstddef>
-
-@@ -55,6 +56,28 @@
- // Copies elements while clipping values to the threshold inputs.
- PLATFORM_EXPORT void vclip(const float* sourceP, int sourceStride, const float* lowThresholdP, const float* highThresholdP, float* destP, int destStride, size_t framesToProcess);
-
-+#if CPU(X86)
-+namespace SSE2 {
-+// Vector scalar multiply and then add.
-+PLATFORM_EXPORT void vsma(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess);
-+
-+PLATFORM_EXPORT void vsmul(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess);
-+PLATFORM_EXPORT void vadd(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess);
-+
-+// Finds the maximum magnitude of a float vector.
-+PLATFORM_EXPORT void vmaxmgv(const float* sourceP, int sourceStride, float* maxP, size_t framesToProcess);
-+
-+// Sums the squares of a float vector's elements.
-+PLATFORM_EXPORT void vsvesq(const float* sourceP, int sourceStride, float* sumP, size_t framesToProcess);
-+
-+// For an element-by-element multiply of two float vectors.
-+PLATFORM_EXPORT void vmul(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess);
-+
-+// Multiplies two complex vectors.
-+PLATFORM_EXPORT void zvmul(const float* real1P, const float* imag1P, const float* real2P, const float* imag2P, float* realDestP, float* imagDestP, size_t framesToProcess);
-+}
-+#endif
-+
- } // namespace VectorMath
- } // namespace blink
-
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMathSSE2.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMathSSE2.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMathSSE2.cpp 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMathSSE2.cpp 2017-03-05 17:26:26.307984260 +0100
-@@ -0,0 +1,2 @@
-+#define BUILD_ONLY_THE_SSE2_PARTS
-+#include "VectorMath.cpp"
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/blink_platform.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/blink_platform.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/blink_platform.gyp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/blink_platform.gyp 2017-03-05 17:26:26.307984260 +0100
-@@ -392,6 +392,11 @@
- '<(DEPTH)/third_party/openmax_dl/dl/dl.gyp:openmax_dl',
- ],
- }],
-+ ['target_arch == "ia32"', {
-+ 'dependencies': [
-+ 'blink_sse2',
-+ ],
-+ }],
- ['target_arch=="arm"', {
- 'dependencies': [
- 'blink_arm_neon',
-@@ -406,6 +411,36 @@
- }],
- ],
- },
-+ {
-+ 'target_name': 'blink_sse2',
-+ 'conditions': [
-+ ['target_arch=="ia32"', {
-+ 'type': 'static_library',
-+ 'dependencies': [
-+ '<(DEPTH)/third_party/khronos/khronos.gyp:khronos_headers',
-+ '../config.gyp:config',
-+ '../wtf/wtf.gyp:wtf',
-+ 'blink_common',
-+ 'blink_heap_asm_stubs',
-+ ],
-+ 'defines': [
-+ 'BLINK_PLATFORM_IMPLEMENTATION=1',
-+ 'INSIDE_BLINK',
-+ ],
-+ 'sources': [
-+ 'audio/DirectConvolverSSE2.cpp',
-+ 'audio/SincResamplerSSE2.cpp',
-+ 'audio/VectorMathSSE2.cpp',
-+ ],
-+ 'cflags': [
-+ '-msse2',
-+ '-mfpmath=sse',
-+ ],
-+ },{ # target_arch != "ia32"
-+ 'type': 'none',
-+ }],
-+ ],
-+ },
- # The *NEON.cpp files fail to compile when -mthumb is passed. Force
- # them to build in ARM mode.
- # See https://bugs.webkit.org/show_bug.cgi?id=62916.
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h 2017-03-05 17:26:26.308984245 +0100
-@@ -5,7 +5,7 @@
- #ifndef WebGLImageConversionSSE_h
- #define WebGLImageConversionSSE_h
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
-
- #include <emmintrin.h>
-
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp 2017-03-05 17:26:26.309984231 +0100
-@@ -423,7 +423,7 @@
- const uint32_t* source32 = reinterpret_cast_ptr<const uint32_t*>(source);
- uint32_t* destination32 = reinterpret_cast_ptr<uint32_t*>(destination);
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::unpackOneRowOfBGRA8LittleToRGBA8(source32, destination32, pixelsPerRow);
- #endif
- for (unsigned i = 0; i < pixelsPerRow; ++i) {
-@@ -442,7 +442,7 @@
-
- template<> void unpack<WebGLImageConversion::DataFormatRGBA5551, uint16_t, uint8_t>(const uint16_t* source, uint8_t* destination, unsigned pixelsPerRow)
- {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::unpackOneRowOfRGBA5551LittleToRGBA8(source, destination, pixelsPerRow);
- #endif
- #if HAVE(ARM_NEON_INTRINSICS)
-@@ -464,7 +464,7 @@
-
- template<> void unpack<WebGLImageConversion::DataFormatRGBA4444, uint16_t, uint8_t>(const uint16_t* source, uint8_t* destination, unsigned pixelsPerRow)
- {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::unpackOneRowOfRGBA4444LittleToRGBA8(source, destination, pixelsPerRow);
- #endif
- #if HAVE(ARM_NEON_INTRINSICS)
-@@ -630,7 +630,7 @@
- // FIXME: this routine is lossy and must be removed.
- template<> void pack<WebGLImageConversion::DataFormatR8, WebGLImageConversion::AlphaDoUnmultiply, uint8_t, uint8_t>(const uint8_t* source, uint8_t* destination, unsigned pixelsPerRow)
- {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::packOneRowOfRGBA8LittleToR8(source, destination, pixelsPerRow);
- #endif
- for (unsigned i = 0; i < pixelsPerRow; ++i) {
-@@ -667,7 +667,7 @@
- // FIXME: this routine is lossy and must be removed.
- template<> void pack<WebGLImageConversion::DataFormatRA8, WebGLImageConversion::AlphaDoUnmultiply, uint8_t, uint8_t>(const uint8_t* source, uint8_t* destination, unsigned pixelsPerRow)
- {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::packOneRowOfRGBA8LittleToRA8(source, destination, pixelsPerRow);
- #endif
- for (unsigned i = 0; i < pixelsPerRow; ++i) {
-@@ -741,7 +741,7 @@
- // FIXME: this routine is lossy and must be removed.
- template<> void pack<WebGLImageConversion::DataFormatRGBA8, WebGLImageConversion::AlphaDoUnmultiply, uint8_t, uint8_t>(const uint8_t* source, uint8_t* destination, unsigned pixelsPerRow)
- {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::packOneRowOfRGBA8LittleToRGBA8(source, destination, pixelsPerRow);
- #else
- for (unsigned i = 0; i < pixelsPerRow; ++i) {
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc 2017-03-05 18:14:44.694725685 +0100
-@@ -14,6 +14,7 @@
- #include "webrtc/common_audio/real_fourier_ooura.h"
- #include "webrtc/common_audio/real_fourier_openmax.h"
- #include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-+#include "webrtc/system_wrappers/include/cpu_features_wrapper.h"
-
- namespace webrtc {
-
-@@ -23,7 +24,15 @@
-
- std::unique_ptr<RealFourier> RealFourier::Create(int fft_order) {
- #if defined(RTC_USE_OPENMAX_DL)
-+#if defined(WEBRTC_ARCH_X86_FAMILY) && !defined(__SSE2__)
-+ // x86 CPU detection required.
-+ if (WebRtc_GetCPUInfo(kSSE2))
-+ return std::unique_ptr<RealFourier>(new RealFourierOpenmax(fft_order));
-+ else
-+ return std::unique_ptr<RealFourier>(new RealFourierOoura(fft_order));
-+#else
- return std::unique_ptr<RealFourier>(new RealFourierOpenmax(fft_order));
-+#endif
- #else
- return std::unique_ptr<RealFourier>(new RealFourierOoura(fft_order));
- #endif
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/tools/gyp/pylib/gyp/generator/ninja.py qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/tools/gyp/pylib/gyp/generator/ninja.py
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/tools/gyp/pylib/gyp/generator/ninja.py 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/tools/gyp/pylib/gyp/generator/ninja.py 2017-03-05 17:26:26.310984216 +0100
-@@ -1345,6 +1345,8 @@
- # Make sure that we have relative paths to our out/(Release|Debug), where we generate our .pri file, and then prepend $$PWD to them.
- prefixed_objects = ['$$PWD/' + o for o in toAbsPaths(objects)]
- prefixed_archives = ['$$PWD/' + o for o in toAbsPaths(libs)]
-+ if len(solibs):
-+ prefixed_solibs = ['$$PWD/' + so for so in toAbsPaths(solibs)]
-
- pri_file.write("QMAKE_LFLAGS += %s\n" % qmakeLiteral(' '.join(prefixed_lflags)))
- pri_file.write("OBJECTS += %s\n" % qmakeLiteral(' '.join(prefixed_objects)))
-@@ -1353,6 +1355,8 @@
- pri_file.write("LIBS_PRIVATE += -Wl,--start-group %s -Wl,--end-group\n" % qmakeLiteral(' '.join(prefixed_archives)))
- else:
- pri_file.write("LIBS_PRIVATE += %s\n" % qmakeLiteral(' '.join(prefixed_archives)))
-+ if len(solibs):
-+ pri_file.write("LIBS_PRIVATE += %s\n" % qmakeLiteral(' '.join(prefixed_solibs)))
- # External libs have to come after objects/archives, the linker resolve them in order.
- pri_file.write("LIBS_PRIVATE += %s\n" % qmakeLiteral(' '.join(prefixed_library_dirs + prefixed_libraries)))
- # Make sure that if ninja modifies one of the inputs, qmake/make will link again.
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn 2017-03-05 18:22:29.296777508 +0100
-@@ -1523,41 +1523,41 @@
-
- if (v8_target_cpu == "x86") {
- sources += [
-- "src/compiler/ia32/code-generator-ia32.cc",
-- "src/compiler/ia32/instruction-codes-ia32.h",
-- "src/compiler/ia32/instruction-scheduler-ia32.cc",
-- "src/compiler/ia32/instruction-selector-ia32.cc",
-- "src/crankshaft/ia32/lithium-codegen-ia32.cc",
-- "src/crankshaft/ia32/lithium-codegen-ia32.h",
-- "src/crankshaft/ia32/lithium-gap-resolver-ia32.cc",
-- "src/crankshaft/ia32/lithium-gap-resolver-ia32.h",
-- "src/crankshaft/ia32/lithium-ia32.cc",
-- "src/crankshaft/ia32/lithium-ia32.h",
-- "src/debug/ia32/debug-ia32.cc",
-- "src/full-codegen/ia32/full-codegen-ia32.cc",
-- "src/ia32/assembler-ia32-inl.h",
-- "src/ia32/assembler-ia32.cc",
-- "src/ia32/assembler-ia32.h",
-- "src/ia32/builtins-ia32.cc",
-- "src/ia32/code-stubs-ia32.cc",
-- "src/ia32/code-stubs-ia32.h",
-- "src/ia32/codegen-ia32.cc",
-- "src/ia32/codegen-ia32.h",
-- "src/ia32/cpu-ia32.cc",
-- "src/ia32/deoptimizer-ia32.cc",
-- "src/ia32/disasm-ia32.cc",
-- "src/ia32/frames-ia32.cc",
-- "src/ia32/frames-ia32.h",
-- "src/ia32/interface-descriptors-ia32.cc",
-- "src/ia32/macro-assembler-ia32.cc",
-- "src/ia32/macro-assembler-ia32.h",
-- "src/ic/ia32/access-compiler-ia32.cc",
-- "src/ic/ia32/handler-compiler-ia32.cc",
-- "src/ic/ia32/ic-compiler-ia32.cc",
-- "src/ic/ia32/ic-ia32.cc",
-- "src/ic/ia32/stub-cache-ia32.cc",
-- "src/regexp/ia32/regexp-macro-assembler-ia32.cc",
-- "src/regexp/ia32/regexp-macro-assembler-ia32.h",
-+ "src/compiler/x87/code-generator-x87.cc",
-+ "src/compiler/x87/instruction-codes-x87.h",
-+ "src/compiler/x87/instruction-scheduler-x87.cc",
-+ "src/compiler/x87/instruction-selector-x87.cc",
-+ "src/crankshaft/x87/lithium-codegen-x87.cc",
-+ "src/crankshaft/x87/lithium-codegen-x87.h",
-+ "src/crankshaft/x87/lithium-gap-resolver-x87.cc",
-+ "src/crankshaft/x87/lithium-gap-resolver-x87.h",
-+ "src/crankshaft/x87/lithium-x87.cc",
-+ "src/crankshaft/x87/lithium-x87.h",
-+ "src/debug/x87/debug-x87.cc",
-+ "src/full-codegen/x87/full-codegen-x87.cc",
-+ "src/x87/assembler-x87-inl.h",
-+ "src/x87/assembler-x87.cc",
-+ "src/x87/assembler-x87.h",
-+ "src/x87/builtins-x87.cc",
-+ "src/x87/code-stubs-x87.cc",
-+ "src/x87/code-stubs-x87.h",
-+ "src/x87/codegen-x87.cc",
-+ "src/x87/codegen-x87.h",
-+ "src/x87/cpu-x87.cc",
-+ "src/x87/deoptimizer-x87.cc",
-+ "src/x87/disasm-x87.cc",
-+ "src/x87/frames-x87.cc",
-+ "src/x87/frames-x87.h",
-+ "src/x87/interface-descriptors-x87.cc",
-+ "src/x87/macro-assembler-x87.cc",
-+ "src/x87/macro-assembler-x87.h",
-+ "src/ic/x87/access-compiler-x87.cc",
-+ "src/ic/x87/handler-compiler-x87.cc",
-+ "src/ic/x87/ic-compiler-x87.cc",
-+ "src/ic/x87/ic-x87.cc",
-+ "src/ic/x87/stub-cache-x87.cc",
-+ "src/regexp/x87/regexp-macro-assembler-x87.cc",
-+ "src/regexp/x87/regexp-macro-assembler-x87.h",
- ]
- } else if (v8_target_cpu == "x64") {
- sources += [
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/gypfiles/standalone.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/gypfiles/standalone.gypi
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/gypfiles/standalone.gypi 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/gypfiles/standalone.gypi 2017-03-05 18:20:24.988636550 +0100
-@@ -159,6 +159,9 @@
- }, {
- 'gomadir': '<!(/bin/echo -n ${HOME}/goma)',
- }],
-+ ['target_arch=="ia32"', {
-+ 'v8_target_arch%': 'x87',
-+ }],
- ['host_arch!="ppc" and host_arch!="ppc64" and host_arch!="ppc64le" and host_arch!="s390" and host_arch!="s390x"', {
- 'host_clang%': 1,
- }, {
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/gypfiles/toolchain.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/gypfiles/toolchain.gypi
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/gypfiles/toolchain.gypi 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/gypfiles/toolchain.gypi 2017-03-05 17:27:34.951965375 +0100
-@@ -95,6 +95,9 @@
- 'binutils_dir%': '',
-
- 'conditions': [
-+ ['target_arch=="ia32"', {
-+ 'v8_target_arch%': 'x87',
-+ }],
- ['OS=="linux" and host_arch=="x64"', {
- 'binutils_dir%': 'third_party/binutils/Linux_x64/Release/bin',
- }],
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh 2017-03-05 17:27:34.953965345 +0100
-@@ -0,0 +1,56 @@
-+#!/bin/sh
-+# This script renames the v8 targets to _sse2 names so that they do not conflict
-+# with the non-SSE2 versions.
-+
-+# Copyright 2016 Kevin Kofler. All rights reserved.
-+# Redistribution and use in source and binary forms, with or without
-+# modification, are permitted provided that the following conditions are
-+# met:
-+#
-+# * Redistributions of source code must retain the above copyright
-+# notice, this list of conditions and the following disclaimer.
-+# * Redistributions in binary form must reproduce the above
-+# copyright notice, this list of conditions and the following
-+# disclaimer in the documentation and/or other materials provided
-+# with the distribution.
-+# * Neither the name of Google Inc. nor the names of its
-+# contributors may be used to endorse or promote products derived
-+# from this software without specific prior written permission.
-+#
-+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+# add comment noting that the file is generated
-+echo "# Generated from v8.gyp by make-v8-sse2-gyp.sh" >v8_sse2.gyp
-+# rename all target names
-+SUBTARGETS=`grep "'target_name': '" v8.gyp | sed -e "s/^.*'target_name': '//g" -e "s/',$//g"`
-+SEDS=
-+for SUBTARGET in $SUBTARGETS ; do
-+ SEDS=$SEDS\ -e\ "s/'$SUBTARGET\(['#]\)/'${SUBTARGET}_sse2\1/g"
-+done
-+# in addition:
-+# * set v8_target_arch to "ia32" (instead of "x87")
-+# * rename all actions
-+# * fix mksnapshot_exec to match the renamed target
-+# * rename the generated snapshot.cc (but not mksnapshot.cc) to snapshot_sse2.cc
-+# * rename the generated *libraries.cc to *libraries_sse2.cc
-+# * rename the generated *.bin to *_sse2.bin
-+# * set product_name and product_dir for the v8_sse2 target
-+sed -e "s/^\( 'variables': {\)/\1\n 'v8_target_arch': 'ia32',/g" \
-+ -e "s/\('action_name': '\)/\1v8_sse2_/g" \
-+ $SEDS \
-+ -e "s/\('mksnapshot_exec': '.*mksnapshot\)/\1_sse2/g" \
-+ -e "s#/snapshot\.cc#/snapshot_sse2.cc#g" \
-+ -e "s/libraries\.cc/libraries_sse2.cc/g" \
-+ -e "s/\.bin/_sse2.bin/g" \
-+ -e "s#^\( *\)\('target_name': 'v8_sse2',\)#\1\2\n\1'product_name': 'v8',\n\1'product_dir': '<(PRODUCT_DIR)/lib/sse2',#g" \
-+ v8.gyp >>v8_sse2.gyp
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/v8.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/v8.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/v8.gyp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/v8.gyp 2017-03-05 17:30:17.500552662 +0100
-@@ -36,6 +36,14 @@
- 'v8_experimental_extra_library_files%': [],
- 'mksnapshot_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)mksnapshot<(EXECUTABLE_SUFFIX)',
- 'remove_v8base_debug_symbols%': 0,
-+ 'conditions': [
-+ # build V8 shared on ia32 so we can swap x87 vs. SSE2 builds
-+ ['target_arch == "ia32"', {
-+ 'v8_component%': 'shared_library',
-+ }, {
-+ 'v8_component%': '<(component)',
-+ }],
-+ ],
- },
- 'includes': ['../gypfiles/toolchain.gypi', '../gypfiles/features.gypi'],
- 'targets': [
-@@ -49,8 +57,8 @@
- }, {
- 'toolsets': ['target'],
- }],
-- ['component=="shared_library"', {
-- 'type': '<(component)',
-+ ['v8_component=="shared_library"', {
-+ 'type': '<(v8_component)',
- 'sources': [
- # Note: on non-Windows we still build this file so that gyp
- # has some sources to link into the component.
-@@ -161,7 +169,7 @@
- 'js2c',
- ],
- }],
-- ['component=="shared_library"', {
-+ ['v8_component=="shared_library"', {
- 'defines': [
- 'V8_SHARED',
- 'BUILDING_V8_SHARED',
-@@ -253,7 +261,7 @@
- 'toolsets': ['target'],
- 'dependencies': ['js2c'],
- }],
-- ['component=="shared_library"', {
-+ ['v8_component=="shared_library"', {
- 'defines': [
- 'BUILDING_V8_SHARED',
- 'V8_SHARED',
-@@ -281,7 +289,7 @@
- 'natives_blob',
- ],
- }],
-- ['component=="shared_library"', {
-+ ['v8_component=="shared_library"', {
- 'defines': [
- 'V8_SHARED',
- 'BUILDING_V8_SHARED',
-@@ -1608,7 +1616,7 @@
- # See http://crbug.com/485155.
- 'msvs_shard': 4,
- }],
-- ['component=="shared_library"', {
-+ ['v8_component=="shared_library"', {
- 'defines': [
- 'BUILDING_V8_SHARED',
- 'V8_SHARED',
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/v8_sse2.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/v8_sse2.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/v8_sse2.gyp 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/v8_sse2.gyp 2017-03-05 18:25:37.781958850 +0100
-@@ -0,0 +1,2313 @@
-+# Generated from v8.gyp by make-v8-sse2-gyp.sh
-+# Copyright 2012 the V8 project authors. All rights reserved.
-+# Redistribution and use in source and binary forms, with or without
-+# modification, are permitted provided that the following conditions are
-+# met:
-+#
-+# * Redistributions of source code must retain the above copyright
-+# notice, this list of conditions and the following disclaimer.
-+# * Redistributions in binary form must reproduce the above
-+# copyright notice, this list of conditions and the following
-+# disclaimer in the documentation and/or other materials provided
-+# with the distribution.
-+# * Neither the name of Google Inc. nor the names of its
-+# contributors may be used to endorse or promote products derived
-+# from this software without specific prior written permission.
-+#
-+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+{
-+ 'variables': {
-+ 'v8_target_arch': 'ia32',
-+ 'v8_code': 1,
-+ 'v8_random_seed%': 314159265,
-+ 'v8_vector_stores%': 0,
-+ 'embed_script%': "",
-+ 'warmup_script%': "",
-+ 'v8_extra_library_files%': [],
-+ 'v8_experimental_extra_library_files%': [],
-+ 'mksnapshot_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)mksnapshot_sse2<(EXECUTABLE_SUFFIX)',
-+ 'remove_v8base_debug_symbols%': 0,
-+ 'conditions': [
-+ # build V8 shared on ia32 so we can swap x87 vs. SSE2 builds
-+ ['target_arch == "ia32"', {
-+ 'v8_component%': 'shared_library',
-+ }, {
-+ 'v8_component%': '<(component)',
-+ }],
-+ ],
-+ },
-+ 'includes': ['../gypfiles/toolchain.gypi', '../gypfiles/features.gypi'],
-+ 'targets': [
-+ {
-+ 'target_name': 'v8_sse2',
-+ 'product_name': 'v8',
-+ 'product_dir': '<(PRODUCT_DIR)/lib/sse2',
-+ 'dependencies_traverse': 1,
-+ 'dependencies': ['v8_maybe_snapshot_sse2'],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ['v8_component=="shared_library"', {
-+ 'type': '<(v8_component)',
-+ 'sources': [
-+ # Note: on non-Windows we still build this file so that gyp
-+ # has some sources to link into the component.
-+ 'v8dll-main.cc',
-+ ],
-+ 'include_dirs': [
-+ '..',
-+ ],
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'BUILDING_V8_SHARED',
-+ ],
-+ 'direct_dependent_settings': {
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'USING_V8_SHARED',
-+ ],
-+ },
-+ 'target_conditions': [
-+ ['OS=="android" and _toolset=="target"', {
-+ 'libraries': [
-+ '-llog',
-+ ],
-+ 'include_dirs': [
-+ 'src/common/android/include',
-+ ],
-+ }],
-+ ],
-+ 'conditions': [
-+ ['OS=="mac"', {
-+ 'xcode_settings': {
-+ 'OTHER_LDFLAGS': ['-dynamiclib', '-all_load']
-+ },
-+ }],
-+ ['soname_version!=""', {
-+ 'product_extension': 'so.<(soname_version)',
-+ }],
-+ ],
-+ },
-+ {
-+ 'type': 'none',
-+ }],
-+ ],
-+ 'direct_dependent_settings': {
-+ 'include_dirs': [
-+ '../include',
-+ ],
-+ },
-+ },
-+ {
-+ # This rule delegates to either v8_snapshot, v8_nosnapshot, or
-+ # v8_external_snapshot, depending on the current variables.
-+ # The intention is to make the 'calling' rules a bit simpler.
-+ 'target_name': 'v8_maybe_snapshot_sse2',
-+ 'type': 'none',
-+ 'conditions': [
-+ ['v8_use_snapshot!="true"', {
-+ # The dependency on v8_base should come from a transitive
-+ # dependency however the Android toolchain requires libv8_base.a
-+ # to appear before libv8_snapshot.a so it's listed explicitly.
-+ 'dependencies': ['v8_base_sse2', 'v8_nosnapshot_sse2'],
-+ }],
-+ ['v8_use_snapshot=="true" and v8_use_external_startup_data==0', {
-+ # The dependency on v8_base should come from a transitive
-+ # dependency however the Android toolchain requires libv8_base.a
-+ # to appear before libv8_snapshot.a so it's listed explicitly.
-+ 'dependencies': ['v8_base_sse2', 'v8_snapshot_sse2'],
-+ }],
-+ ['v8_use_snapshot=="true" and v8_use_external_startup_data==1 and want_separate_host_toolset==0', {
-+ 'dependencies': ['v8_base_sse2', 'v8_external_snapshot_sse2'],
-+ 'inputs': [ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin', ],
-+ }],
-+ ['v8_use_snapshot=="true" and v8_use_external_startup_data==1 and want_separate_host_toolset==1', {
-+ 'dependencies': ['v8_base_sse2', 'v8_external_snapshot_sse2'],
-+ 'target_conditions': [
-+ ['_toolset=="host"', {
-+ 'inputs': [
-+ '<(PRODUCT_DIR)/snapshot_blob_host_sse2.bin',
-+ ],
-+ }, {
-+ 'inputs': [
-+ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
-+ ],
-+ }],
-+ ],
-+ }],
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ]
-+ },
-+ {
-+ 'target_name': 'v8_snapshot_sse2',
-+ 'type': 'static_library',
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ 'dependencies': [
-+ 'mksnapshot_sse2#host',
-+ 'js2c_sse2#host',
-+ ],
-+ }, {
-+ 'toolsets': ['target'],
-+ 'dependencies': [
-+ 'mksnapshot_sse2',
-+ 'js2c_sse2',
-+ ],
-+ }],
-+ ['v8_component=="shared_library"', {
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'BUILDING_V8_SHARED',
-+ ],
-+ 'direct_dependent_settings': {
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'USING_V8_SHARED',
-+ ],
-+ },
-+ }],
-+ ],
-+ 'dependencies': [
-+ 'v8_base_sse2',
-+ ],
-+ 'include_dirs+': [
-+ '..',
-+ ],
-+ 'sources': [
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
-+ '<(INTERMEDIATE_DIR)/snapshot_sse2.cc',
-+ ],
-+ 'actions': [
-+ {
-+ 'action_name': 'v8_sse2_run_mksnapshot',
-+ 'inputs': [
-+ '<(mksnapshot_exec)',
-+ ],
-+ 'conditions': [
-+ ['embed_script!=""', {
-+ 'inputs': [
-+ '<(embed_script)',
-+ ],
-+ }],
-+ ['warmup_script!=""', {
-+ 'inputs': [
-+ '<(warmup_script)',
-+ ],
-+ }],
-+ ],
-+ 'outputs': [
-+ '<(INTERMEDIATE_DIR)/snapshot_sse2.cc',
-+ ],
-+ 'variables': {
-+ 'mksnapshot_flags': [],
-+ 'conditions': [
-+ ['v8_random_seed!=0', {
-+ 'mksnapshot_flags': ['--random-seed', '<(v8_random_seed)'],
-+ }],
-+ ['v8_vector_stores!=0', {
-+ 'mksnapshot_flags': ['--vector-stores'],
-+ }],
-+ ],
-+ },
-+ 'action': [
-+ '<(mksnapshot_exec)',
-+ '<@(mksnapshot_flags)',
-+ '--startup_src', '<@(INTERMEDIATE_DIR)/snapshot_sse2.cc',
-+ '<(embed_script)',
-+ '<(warmup_script)',
-+ ],
-+ },
-+ ],
-+ },
-+ {
-+ 'target_name': 'v8_nosnapshot_sse2',
-+ 'type': 'static_library',
-+ 'dependencies': [
-+ 'v8_base_sse2',
-+ ],
-+ 'include_dirs+': [
-+ '..',
-+ ],
-+ 'sources': [
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
-+ 'snapshot/snapshot-empty.cc',
-+ ],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ 'dependencies': ['js2c_sse2#host'],
-+ }, {
-+ 'toolsets': ['target'],
-+ 'dependencies': ['js2c_sse2'],
-+ }],
-+ ['v8_component=="shared_library"', {
-+ 'defines': [
-+ 'BUILDING_V8_SHARED',
-+ 'V8_SHARED',
-+ ],
-+ }],
-+ ]
-+ },
-+ {
-+ 'target_name': 'v8_external_snapshot_sse2',
-+ 'type': 'static_library',
-+ 'conditions': [
-+ [ 'v8_use_external_startup_data==1', {
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ 'dependencies': [
-+ 'mksnapshot_sse2#host',
-+ 'js2c_sse2#host',
-+ 'natives_blob_sse2',
-+ ]}, {
-+ 'toolsets': ['target'],
-+ 'dependencies': [
-+ 'mksnapshot_sse2',
-+ 'js2c_sse2',
-+ 'natives_blob_sse2',
-+ ],
-+ }],
-+ ['v8_component=="shared_library"', {
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'BUILDING_V8_SHARED',
-+ ],
-+ 'direct_dependent_settings': {
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'USING_V8_SHARED',
-+ ],
-+ },
-+ }],
-+ ],
-+ 'dependencies': [
-+ 'v8_base_sse2',
-+ ],
-+ 'include_dirs+': [
-+ '..',
-+ ],
-+ 'sources': [
-+ 'snapshot/natives-external.cc',
-+ 'snapshot/snapshot-external.cc',
-+ ],
-+ 'actions': [
-+ {
-+ 'action_name': 'v8_sse2_run_mksnapshot (external)',
-+ 'inputs': [
-+ '<(mksnapshot_exec)',
-+ ],
-+ 'variables': {
-+ 'mksnapshot_flags': [],
-+ 'conditions': [
-+ ['v8_random_seed!=0', {
-+ 'mksnapshot_flags': ['--random-seed', '<(v8_random_seed)'],
-+ }],
-+ ['v8_vector_stores!=0', {
-+ 'mksnapshot_flags': ['--vector-stores'],
-+ }],
-+ ],
-+ },
-+ 'conditions': [
-+ ['embed_script!=""', {
-+ 'inputs': [
-+ '<(embed_script)',
-+ ],
-+ }],
-+ ['warmup_script!=""', {
-+ 'inputs': [
-+ '<(warmup_script)',
-+ ],
-+ }],
-+ ['want_separate_host_toolset==1', {
-+ 'target_conditions': [
-+ ['_toolset=="host"', {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/snapshot_blob_host_sse2.bin',
-+ ],
-+ 'action': [
-+ '<(mksnapshot_exec)',
-+ '<@(mksnapshot_flags)',
-+ '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob_host_sse2.bin',
-+ '<(embed_script)',
-+ '<(warmup_script)',
-+ ],
-+ }, {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
-+ ],
-+ 'action': [
-+ '<(mksnapshot_exec)',
-+ '<@(mksnapshot_flags)',
-+ '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
-+ '<(embed_script)',
-+ '<(warmup_script)',
-+ ],
-+ }],
-+ ],
-+ }, {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
-+ ],
-+ 'action': [
-+ '<(mksnapshot_exec)',
-+ '<@(mksnapshot_flags)',
-+ '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
-+ '<(embed_script)',
-+ '<(warmup_script)',
-+ ],
-+ }],
-+ ],
-+ },
-+ ],
-+ }],
-+ ],
-+ },
-+ {
-+ 'target_name': 'v8_base_sse2',
-+ 'type': 'static_library',
-+ 'dependencies': [
-+ 'v8_libbase_sse2',
-+ 'v8_libsampler_sse2',
-+ ],
-+ 'variables': {
-+ 'optimize': 'max',
-+ },
-+ 'include_dirs+': [
-+ '..',
-+ '<(DEPTH)',
-+ ],
-+ 'sources': [ ### gcmole(all) ###
-+ '../include/v8-debug.h',
-+ '../include/v8-experimental.h',
-+ '../include/v8-platform.h',
-+ '../include/v8-profiler.h',
-+ '../include/v8-testing.h',
-+ '../include/v8-util.h',
-+ '../include/v8-version.h',
-+ '../include/v8.h',
-+ '../include/v8config.h',
-+ 'accessors.cc',
-+ 'accessors.h',
-+ 'address-map.cc',
-+ 'address-map.h',
-+ 'allocation.cc',
-+ 'allocation.h',
-+ 'allocation-site-scopes.cc',
-+ 'allocation-site-scopes.h',
-+ 'api-experimental.cc',
-+ 'api-experimental.h',
-+ 'api.cc',
-+ 'api.h',
-+ 'api-arguments-inl.h',
-+ 'api-arguments.cc',
-+ 'api-arguments.h',
-+ 'api-natives.cc',
-+ 'api-natives.h',
-+ 'arguments.cc',
-+ 'arguments.h',
-+ 'assembler.cc',
-+ 'assembler.h',
-+ 'assert-scope.h',
-+ 'assert-scope.cc',
-+ 'ast/ast-expression-rewriter.cc',
-+ 'ast/ast-expression-rewriter.h',
-+ 'ast/ast-expression-visitor.cc',
-+ 'ast/ast-expression-visitor.h',
-+ 'ast/ast-literal-reindexer.cc',
-+ 'ast/ast-literal-reindexer.h',
-+ 'ast/ast-numbering.cc',
-+ 'ast/ast-numbering.h',
-+ 'ast/ast-type-bounds.h',
-+ 'ast/ast-value-factory.cc',
-+ 'ast/ast-value-factory.h',
-+ 'ast/ast.cc',
-+ 'ast/ast.h',
-+ 'ast/modules.cc',
-+ 'ast/modules.h',
-+ 'ast/prettyprinter.cc',
-+ 'ast/prettyprinter.h',
-+ 'ast/scopeinfo.cc',
-+ 'ast/scopeinfo.h',
-+ 'ast/scopes.cc',
-+ 'ast/scopes.h',
-+ 'ast/variables.cc',
-+ 'ast/variables.h',
-+ 'background-parsing-task.cc',
-+ 'background-parsing-task.h',
-+ 'bailout-reason.cc',
-+ 'bailout-reason.h',
-+ 'basic-block-profiler.cc',
-+ 'basic-block-profiler.h',
-+ 'bignum-dtoa.cc',
-+ 'bignum-dtoa.h',
-+ 'bignum.cc',
-+ 'bignum.h',
-+ 'bit-vector.cc',
-+ 'bit-vector.h',
-+ 'bootstrapper.cc',
-+ 'bootstrapper.h',
-+ 'builtins.cc',
-+ 'builtins.h',
-+ 'cached-powers.cc',
-+ 'cached-powers.h',
-+ 'cancelable-task.cc',
-+ 'cancelable-task.h',
-+ 'char-predicates.cc',
-+ 'char-predicates-inl.h',
-+ 'char-predicates.h',
-+ 'checks.h',
-+ 'code-events.h',
-+ 'code-factory.cc',
-+ 'code-factory.h',
-+ 'code-stub-assembler.cc',
-+ 'code-stub-assembler.h',
-+ 'code-stubs.cc',
-+ 'code-stubs.h',
-+ 'code-stubs-hydrogen.cc',
-+ 'codegen.cc',
-+ 'codegen.h',
-+ 'collector.h',
-+ 'compilation-cache.cc',
-+ 'compilation-cache.h',
-+ 'compilation-dependencies.cc',
-+ 'compilation-dependencies.h',
-+ 'compilation-statistics.cc',
-+ 'compilation-statistics.h',
-+ 'compiler/access-builder.cc',
-+ 'compiler/access-builder.h',
-+ 'compiler/access-info.cc',
-+ 'compiler/access-info.h',
-+ 'compiler/all-nodes.cc',
-+ 'compiler/all-nodes.h',
-+ 'compiler/ast-graph-builder.cc',
-+ 'compiler/ast-graph-builder.h',
-+ 'compiler/ast-loop-assignment-analyzer.cc',
-+ 'compiler/ast-loop-assignment-analyzer.h',
-+ 'compiler/basic-block-instrumentor.cc',
-+ 'compiler/basic-block-instrumentor.h',
-+ 'compiler/branch-elimination.cc',
-+ 'compiler/branch-elimination.h',
-+ 'compiler/bytecode-branch-analysis.cc',
-+ 'compiler/bytecode-branch-analysis.h',
-+ 'compiler/bytecode-graph-builder.cc',
-+ 'compiler/bytecode-graph-builder.h',
-+ 'compiler/c-linkage.cc',
-+ 'compiler/checkpoint-elimination.cc',
-+ 'compiler/checkpoint-elimination.h',
-+ 'compiler/code-generator-impl.h',
-+ 'compiler/code-generator.cc',
-+ 'compiler/code-generator.h',
-+ 'compiler/code-assembler.cc',
-+ 'compiler/code-assembler.h',
-+ 'compiler/common-node-cache.cc',
-+ 'compiler/common-node-cache.h',
-+ 'compiler/common-operator-reducer.cc',
-+ 'compiler/common-operator-reducer.h',
-+ 'compiler/common-operator.cc',
-+ 'compiler/common-operator.h',
-+ 'compiler/control-builders.cc',
-+ 'compiler/control-builders.h',
-+ 'compiler/control-equivalence.cc',
-+ 'compiler/control-equivalence.h',
-+ 'compiler/control-flow-optimizer.cc',
-+ 'compiler/control-flow-optimizer.h',
-+ 'compiler/dead-code-elimination.cc',
-+ 'compiler/dead-code-elimination.h',
-+ 'compiler/diamond.h',
-+ 'compiler/effect-control-linearizer.cc',
-+ 'compiler/effect-control-linearizer.h',
-+ 'compiler/escape-analysis.cc',
-+ 'compiler/escape-analysis.h',
-+ "compiler/escape-analysis-reducer.cc",
-+ "compiler/escape-analysis-reducer.h",
-+ 'compiler/frame.cc',
-+ 'compiler/frame.h',
-+ 'compiler/frame-elider.cc',
-+ 'compiler/frame-elider.h',
-+ "compiler/frame-states.cc",
-+ "compiler/frame-states.h",
-+ 'compiler/gap-resolver.cc',
-+ 'compiler/gap-resolver.h',
-+ 'compiler/graph-reducer.cc',
-+ 'compiler/graph-reducer.h',
-+ 'compiler/graph-replay.cc',
-+ 'compiler/graph-replay.h',
-+ 'compiler/graph-trimmer.cc',
-+ 'compiler/graph-trimmer.h',
-+ 'compiler/graph-visualizer.cc',
-+ 'compiler/graph-visualizer.h',
-+ 'compiler/graph.cc',
-+ 'compiler/graph.h',
-+ 'compiler/instruction-codes.h',
-+ 'compiler/instruction-selector-impl.h',
-+ 'compiler/instruction-selector.cc',
-+ 'compiler/instruction-selector.h',
-+ 'compiler/instruction-scheduler.cc',
-+ 'compiler/instruction-scheduler.h',
-+ 'compiler/instruction.cc',
-+ 'compiler/instruction.h',
-+ 'compiler/int64-lowering.cc',
-+ 'compiler/int64-lowering.h',
-+ 'compiler/js-builtin-reducer.cc',
-+ 'compiler/js-builtin-reducer.h',
-+ 'compiler/js-call-reducer.cc',
-+ 'compiler/js-call-reducer.h',
-+ 'compiler/js-context-specialization.cc',
-+ 'compiler/js-context-specialization.h',
-+ 'compiler/js-create-lowering.cc',
-+ 'compiler/js-create-lowering.h',
-+ 'compiler/js-frame-specialization.cc',
-+ 'compiler/js-frame-specialization.h',
-+ 'compiler/js-generic-lowering.cc',
-+ 'compiler/js-generic-lowering.h',
-+ 'compiler/js-global-object-specialization.cc',
-+ 'compiler/js-global-object-specialization.h',
-+ 'compiler/js-graph.cc',
-+ 'compiler/js-graph.h',
-+ 'compiler/js-inlining.cc',
-+ 'compiler/js-inlining.h',
-+ 'compiler/js-inlining-heuristic.cc',
-+ 'compiler/js-inlining-heuristic.h',
-+ 'compiler/js-intrinsic-lowering.cc',
-+ 'compiler/js-intrinsic-lowering.h',
-+ 'compiler/js-native-context-specialization.cc',
-+ 'compiler/js-native-context-specialization.h',
-+ 'compiler/js-operator.cc',
-+ 'compiler/js-operator.h',
-+ 'compiler/js-typed-lowering.cc',
-+ 'compiler/js-typed-lowering.h',
-+ 'compiler/jump-threading.cc',
-+ 'compiler/jump-threading.h',
-+ 'compiler/linkage.cc',
-+ 'compiler/linkage.h',
-+ 'compiler/liveness-analyzer.cc',
-+ 'compiler/liveness-analyzer.h',
-+ 'compiler/live-range-separator.cc',
-+ 'compiler/live-range-separator.h',
-+ 'compiler/load-elimination.cc',
-+ 'compiler/load-elimination.h',
-+ 'compiler/loop-analysis.cc',
-+ 'compiler/loop-analysis.h',
-+ 'compiler/loop-peeling.cc',
-+ 'compiler/loop-peeling.h',
-+ 'compiler/machine-operator-reducer.cc',
-+ 'compiler/machine-operator-reducer.h',
-+ 'compiler/machine-operator.cc',
-+ 'compiler/machine-operator.h',
-+ 'compiler/memory-optimizer.cc',
-+ 'compiler/memory-optimizer.h',
-+ 'compiler/move-optimizer.cc',
-+ 'compiler/move-optimizer.h',
-+ 'compiler/node-aux-data.h',
-+ 'compiler/node-cache.cc',
-+ 'compiler/node-cache.h',
-+ 'compiler/node-marker.cc',
-+ 'compiler/node-marker.h',
-+ 'compiler/node-matchers.cc',
-+ 'compiler/node-matchers.h',
-+ 'compiler/node-properties.cc',
-+ 'compiler/node-properties.h',
-+ 'compiler/node.cc',
-+ 'compiler/node.h',
-+ 'compiler/opcodes.cc',
-+ 'compiler/opcodes.h',
-+ 'compiler/operation-typer.cc',
-+ 'compiler/operation-typer.h',
-+ 'compiler/operator-properties.cc',
-+ 'compiler/operator-properties.h',
-+ 'compiler/operator.cc',
-+ 'compiler/operator.h',
-+ 'compiler/osr.cc',
-+ 'compiler/osr.h',
-+ 'compiler/pipeline.cc',
-+ 'compiler/pipeline.h',
-+ 'compiler/pipeline-statistics.cc',
-+ 'compiler/pipeline-statistics.h',
-+ 'compiler/raw-machine-assembler.cc',
-+ 'compiler/raw-machine-assembler.h',
-+ 'compiler/redundancy-elimination.cc',
-+ 'compiler/redundancy-elimination.h',
-+ 'compiler/register-allocator.cc',
-+ 'compiler/register-allocator.h',
-+ 'compiler/register-allocator-verifier.cc',
-+ 'compiler/register-allocator-verifier.h',
-+ 'compiler/representation-change.cc',
-+ 'compiler/representation-change.h',
-+ 'compiler/schedule.cc',
-+ 'compiler/schedule.h',
-+ 'compiler/scheduler.cc',
-+ 'compiler/scheduler.h',
-+ 'compiler/select-lowering.cc',
-+ 'compiler/select-lowering.h',
-+ 'compiler/simplified-lowering.cc',
-+ 'compiler/simplified-lowering.h',
-+ 'compiler/simplified-operator-reducer.cc',
-+ 'compiler/simplified-operator-reducer.h',
-+ 'compiler/simplified-operator.cc',
-+ 'compiler/simplified-operator.h',
-+ 'compiler/source-position.cc',
-+ 'compiler/source-position.h',
-+ 'compiler/state-values-utils.cc',
-+ 'compiler/state-values-utils.h',
-+ 'compiler/store-store-elimination.cc',
-+ 'compiler/store-store-elimination.h',
-+ 'compiler/tail-call-optimization.cc',
-+ 'compiler/tail-call-optimization.h',
-+ 'compiler/type-hint-analyzer.cc',
-+ 'compiler/type-hint-analyzer.h',
-+ 'compiler/type-hints.cc',
-+ 'compiler/type-hints.h',
-+ 'compiler/typer.cc',
-+ 'compiler/typer.h',
-+ 'compiler/value-numbering-reducer.cc',
-+ 'compiler/value-numbering-reducer.h',
-+ 'compiler/verifier.cc',
-+ 'compiler/verifier.h',
-+ 'compiler/wasm-compiler.cc',
-+ 'compiler/wasm-compiler.h',
-+ 'compiler/wasm-linkage.cc',
-+ 'compiler/zone-pool.cc',
-+ 'compiler/zone-pool.h',
-+ 'compiler.cc',
-+ 'compiler.h',
-+ 'context-measure.cc',
-+ 'context-measure.h',
-+ 'contexts-inl.h',
-+ 'contexts.cc',
-+ 'contexts.h',
-+ 'conversions-inl.h',
-+ 'conversions.cc',
-+ 'conversions.h',
-+ 'counters-inl.h',
-+ 'counters.cc',
-+ 'counters.h',
-+ 'crankshaft/compilation-phase.cc',
-+ 'crankshaft/compilation-phase.h',
-+ 'crankshaft/hydrogen-alias-analysis.h',
-+ 'crankshaft/hydrogen-bce.cc',
-+ 'crankshaft/hydrogen-bce.h',
-+ 'crankshaft/hydrogen-canonicalize.cc',
-+ 'crankshaft/hydrogen-canonicalize.h',
-+ 'crankshaft/hydrogen-check-elimination.cc',
-+ 'crankshaft/hydrogen-check-elimination.h',
-+ 'crankshaft/hydrogen-dce.cc',
-+ 'crankshaft/hydrogen-dce.h',
-+ 'crankshaft/hydrogen-dehoist.cc',
-+ 'crankshaft/hydrogen-dehoist.h',
-+ 'crankshaft/hydrogen-environment-liveness.cc',
-+ 'crankshaft/hydrogen-environment-liveness.h',
-+ 'crankshaft/hydrogen-escape-analysis.cc',
-+ 'crankshaft/hydrogen-escape-analysis.h',
-+ 'crankshaft/hydrogen-flow-engine.h',
-+ 'crankshaft/hydrogen-gvn.cc',
-+ 'crankshaft/hydrogen-gvn.h',
-+ 'crankshaft/hydrogen-infer-representation.cc',
-+ 'crankshaft/hydrogen-infer-representation.h',
-+ 'crankshaft/hydrogen-infer-types.cc',
-+ 'crankshaft/hydrogen-infer-types.h',
-+ 'crankshaft/hydrogen-instructions.cc',
-+ 'crankshaft/hydrogen-instructions.h',
-+ 'crankshaft/hydrogen-load-elimination.cc',
-+ 'crankshaft/hydrogen-load-elimination.h',
-+ 'crankshaft/hydrogen-mark-deoptimize.cc',
-+ 'crankshaft/hydrogen-mark-deoptimize.h',
-+ 'crankshaft/hydrogen-mark-unreachable.cc',
-+ 'crankshaft/hydrogen-mark-unreachable.h',
-+ 'crankshaft/hydrogen-osr.cc',
-+ 'crankshaft/hydrogen-osr.h',
-+ 'crankshaft/hydrogen-range-analysis.cc',
-+ 'crankshaft/hydrogen-range-analysis.h',
-+ 'crankshaft/hydrogen-redundant-phi.cc',
-+ 'crankshaft/hydrogen-redundant-phi.h',
-+ 'crankshaft/hydrogen-removable-simulates.cc',
-+ 'crankshaft/hydrogen-removable-simulates.h',
-+ 'crankshaft/hydrogen-representation-changes.cc',
-+ 'crankshaft/hydrogen-representation-changes.h',
-+ 'crankshaft/hydrogen-sce.cc',
-+ 'crankshaft/hydrogen-sce.h',
-+ 'crankshaft/hydrogen-store-elimination.cc',
-+ 'crankshaft/hydrogen-store-elimination.h',
-+ 'crankshaft/hydrogen-types.cc',
-+ 'crankshaft/hydrogen-types.h',
-+ 'crankshaft/hydrogen-uint32-analysis.cc',
-+ 'crankshaft/hydrogen-uint32-analysis.h',
-+ 'crankshaft/hydrogen.cc',
-+ 'crankshaft/hydrogen.h',
-+ 'crankshaft/lithium-allocator-inl.h',
-+ 'crankshaft/lithium-allocator.cc',
-+ 'crankshaft/lithium-allocator.h',
-+ 'crankshaft/lithium-codegen.cc',
-+ 'crankshaft/lithium-codegen.h',
-+ 'crankshaft/lithium.cc',
-+ 'crankshaft/lithium.h',
-+ 'crankshaft/lithium-inl.h',
-+ 'crankshaft/typing.cc',
-+ 'crankshaft/typing.h',
-+ 'crankshaft/unique.h',
-+ 'date.cc',
-+ 'date.h',
-+ 'dateparser-inl.h',
-+ 'dateparser.cc',
-+ 'dateparser.h',
-+ 'debug/debug-evaluate.cc',
-+ 'debug/debug-evaluate.h',
-+ 'debug/debug-frames.cc',
-+ 'debug/debug-frames.h',
-+ 'debug/debug-scopes.cc',
-+ 'debug/debug-scopes.h',
-+ 'debug/debug.cc',
-+ 'debug/debug.h',
-+ 'debug/liveedit.cc',
-+ 'debug/liveedit.h',
-+ 'deoptimizer.cc',
-+ 'deoptimizer.h',
-+ 'disasm.h',
-+ 'disassembler.cc',
-+ 'disassembler.h',
-+ 'diy-fp.cc',
-+ 'diy-fp.h',
-+ 'double.h',
-+ 'dtoa.cc',
-+ 'dtoa.h',
-+ 'effects.h',
-+ 'eh-frame.cc',
-+ 'eh-frame.h',
-+ 'elements-kind.cc',
-+ 'elements-kind.h',
-+ 'elements.cc',
-+ 'elements.h',
-+ 'execution.cc',
-+ 'execution.h',
-+ 'extensions/externalize-string-extension.cc',
-+ 'extensions/externalize-string-extension.h',
-+ 'extensions/free-buffer-extension.cc',
-+ 'extensions/free-buffer-extension.h',
-+ 'extensions/gc-extension.cc',
-+ 'extensions/gc-extension.h',
-+ 'extensions/ignition-statistics-extension.cc',
-+ 'extensions/ignition-statistics-extension.h',
-+ 'extensions/statistics-extension.cc',
-+ 'extensions/statistics-extension.h',
-+ 'extensions/trigger-failure-extension.cc',
-+ 'extensions/trigger-failure-extension.h',
-+ 'external-reference-table.cc',
-+ 'external-reference-table.h',
-+ 'factory.cc',
-+ 'factory.h',
-+ 'fast-accessor-assembler.cc',
-+ 'fast-accessor-assembler.h',
-+ 'fast-dtoa.cc',
-+ 'fast-dtoa.h',
-+ 'field-index.h',
-+ 'field-index-inl.h',
-+ 'field-type.cc',
-+ 'field-type.h',
-+ 'fixed-dtoa.cc',
-+ 'fixed-dtoa.h',
-+ 'flag-definitions.h',
-+ 'flags.cc',
-+ 'flags.h',
-+ 'frames-inl.h',
-+ 'frames.cc',
-+ 'frames.h',
-+ 'full-codegen/full-codegen.cc',
-+ 'full-codegen/full-codegen.h',
-+ 'futex-emulation.cc',
-+ 'futex-emulation.h',
-+ 'gdb-jit.cc',
-+ 'gdb-jit.h',
-+ 'global-handles.cc',
-+ 'global-handles.h',
-+ 'globals.h',
-+ 'handles-inl.h',
-+ 'handles.cc',
-+ 'handles.h',
-+ 'heap-symbols.h',
-+ 'heap/array-buffer-tracker-inl.h',
-+ 'heap/array-buffer-tracker.cc',
-+ 'heap/array-buffer-tracker.h',
-+ 'heap/memory-reducer.cc',
-+ 'heap/memory-reducer.h',
-+ 'heap/gc-idle-time-handler.cc',
-+ 'heap/gc-idle-time-handler.h',
-+ 'heap/gc-tracer.cc',
-+ 'heap/gc-tracer.h',
-+ 'heap/heap-inl.h',
-+ 'heap/heap.cc',
-+ 'heap/heap.h',
-+ 'heap/incremental-marking-inl.h',
-+ 'heap/incremental-marking-job.cc',
-+ 'heap/incremental-marking-job.h',
-+ 'heap/incremental-marking.cc',
-+ 'heap/incremental-marking.h',
-+ 'heap/mark-compact-inl.h',
-+ 'heap/mark-compact.cc',
-+ 'heap/mark-compact.h',
-+ 'heap/object-stats.cc',
-+ 'heap/object-stats.h',
-+ 'heap/objects-visiting-inl.h',
-+ 'heap/objects-visiting.cc',
-+ 'heap/objects-visiting.h',
-+ 'heap/page-parallel-job.h',
-+ 'heap/remembered-set.cc',
-+ 'heap/remembered-set.h',
-+ 'heap/scavenge-job.h',
-+ 'heap/scavenge-job.cc',
-+ 'heap/scavenger-inl.h',
-+ 'heap/scavenger.cc',
-+ 'heap/scavenger.h',
-+ 'heap/slot-set.h',
-+ 'heap/spaces-inl.h',
-+ 'heap/spaces.cc',
-+ 'heap/spaces.h',
-+ 'heap/store-buffer.cc',
-+ 'heap/store-buffer.h',
-+ 'i18n.cc',
-+ 'i18n.h',
-+ 'icu_util.cc',
-+ 'icu_util.h',
-+ 'ic/access-compiler.cc',
-+ 'ic/access-compiler.h',
-+ 'ic/call-optimization.cc',
-+ 'ic/call-optimization.h',
-+ 'ic/handler-compiler.cc',
-+ 'ic/handler-compiler.h',
-+ 'ic/ic-inl.h',
-+ 'ic/ic-state.cc',
-+ 'ic/ic-state.h',
-+ 'ic/ic.cc',
-+ 'ic/ic.h',
-+ 'ic/ic-compiler.cc',
-+ 'ic/ic-compiler.h',
-+ 'identity-map.cc',
-+ 'identity-map.h',
-+ 'interface-descriptors.cc',
-+ 'interface-descriptors.h',
-+ 'interpreter/bytecodes.cc',
-+ 'interpreter/bytecodes.h',
-+ 'interpreter/bytecode-array-builder.cc',
-+ 'interpreter/bytecode-array-builder.h',
-+ 'interpreter/bytecode-array-iterator.cc',
-+ 'interpreter/bytecode-array-iterator.h',
-+ 'interpreter/bytecode-array-writer.cc',
-+ 'interpreter/bytecode-array-writer.h',
-+ 'interpreter/bytecode-dead-code-optimizer.cc',
-+ 'interpreter/bytecode-dead-code-optimizer.h',
-+ 'interpreter/bytecode-label.h',
-+ 'interpreter/bytecode-generator.cc',
-+ 'interpreter/bytecode-generator.h',
-+ 'interpreter/bytecode-peephole-optimizer.cc',
-+ 'interpreter/bytecode-peephole-optimizer.h',
-+ 'interpreter/bytecode-pipeline.cc',
-+ 'interpreter/bytecode-pipeline.h',
-+ 'interpreter/bytecode-register-allocator.cc',
-+ 'interpreter/bytecode-register-allocator.h',
-+ 'interpreter/bytecode-register-optimizer.cc',
-+ 'interpreter/bytecode-register-optimizer.h',
-+ 'interpreter/bytecode-traits.h',
-+ 'interpreter/constant-array-builder.cc',
-+ 'interpreter/constant-array-builder.h',
-+ 'interpreter/control-flow-builders.cc',
-+ 'interpreter/control-flow-builders.h',
-+ 'interpreter/handler-table-builder.cc',
-+ 'interpreter/handler-table-builder.h',
-+ 'interpreter/interpreter.cc',
-+ 'interpreter/interpreter.h',
-+ 'interpreter/interpreter-assembler.cc',
-+ 'interpreter/interpreter-assembler.h',
-+ 'interpreter/interpreter-intrinsics.cc',
-+ 'interpreter/interpreter-intrinsics.h',
-+ 'interpreter/source-position-table.cc',
-+ 'interpreter/source-position-table.h',
-+ 'isolate-inl.h',
-+ 'isolate.cc',
-+ 'isolate.h',
-+ 'json-parser.cc',
-+ 'json-parser.h',
-+ 'json-stringifier.cc',
-+ 'json-stringifier.h',
-+ 'keys.h',
-+ 'keys.cc',
-+ 'layout-descriptor-inl.h',
-+ 'layout-descriptor.cc',
-+ 'layout-descriptor.h',
-+ 'list-inl.h',
-+ 'list.h',
-+ 'locked-queue-inl.h',
-+ 'locked-queue.h',
-+ 'log-inl.h',
-+ 'log-utils.cc',
-+ 'log-utils.h',
-+ 'log.cc',
-+ 'log.h',
-+ 'lookup.cc',
-+ 'lookup.h',
-+ 'macro-assembler.h',
-+ 'machine-type.cc',
-+ 'machine-type.h',
-+ 'messages.cc',
-+ 'messages.h',
-+ 'msan.h',
-+ 'objects-body-descriptors-inl.h',
-+ 'objects-body-descriptors.h',
-+ 'objects-debug.cc',
-+ 'objects-inl.h',
-+ 'objects-printer.cc',
-+ 'objects.cc',
-+ 'objects.h',
-+ 'optimizing-compile-dispatcher.cc',
-+ 'optimizing-compile-dispatcher.h',
-+ 'ostreams.cc',
-+ 'ostreams.h',
-+ 'parsing/expression-classifier.h',
-+ 'parsing/func-name-inferrer.cc',
-+ 'parsing/func-name-inferrer.h',
-+ 'parsing/parameter-initializer-rewriter.cc',
-+ 'parsing/parameter-initializer-rewriter.h',
-+ 'parsing/parser-base.h',
-+ 'parsing/parser.cc',
-+ 'parsing/parser.h',
-+ 'parsing/pattern-rewriter.cc',
-+ 'parsing/preparse-data-format.h',
-+ 'parsing/preparse-data.cc',
-+ 'parsing/preparse-data.h',
-+ 'parsing/preparser.cc',
-+ 'parsing/preparser.h',
-+ 'parsing/rewriter.cc',
-+ 'parsing/rewriter.h',
-+ 'parsing/scanner-character-streams.cc',
-+ 'parsing/scanner-character-streams.h',
-+ 'parsing/scanner.cc',
-+ 'parsing/scanner.h',
-+ 'parsing/token.cc',
-+ 'parsing/token.h',
-+ 'pending-compilation-error-handler.cc',
-+ 'pending-compilation-error-handler.h',
-+ 'perf-jit.cc',
-+ 'perf-jit.h',
-+ 'profiler/allocation-tracker.cc',
-+ 'profiler/allocation-tracker.h',
-+ 'profiler/circular-queue-inl.h',
-+ 'profiler/circular-queue.h',
-+ 'profiler/cpu-profiler-inl.h',
-+ 'profiler/cpu-profiler.cc',
-+ 'profiler/cpu-profiler.h',
-+ 'profiler/heap-profiler.cc',
-+ 'profiler/heap-profiler.h',
-+ 'profiler/heap-snapshot-generator-inl.h',
-+ 'profiler/heap-snapshot-generator.cc',
-+ 'profiler/heap-snapshot-generator.h',
-+ 'profiler/profiler-listener.cc',
-+ 'profiler/profiler-listener.h',
-+ 'profiler/profile-generator-inl.h',
-+ 'profiler/profile-generator.cc',
-+ 'profiler/profile-generator.h',
-+ 'profiler/sampling-heap-profiler.cc',
-+ 'profiler/sampling-heap-profiler.h',
-+ 'profiler/strings-storage.cc',
-+ 'profiler/strings-storage.h',
-+ 'profiler/tick-sample.cc',
-+ 'profiler/tick-sample.h',
-+ 'profiler/unbound-queue-inl.h',
-+ 'profiler/unbound-queue.h',
-+ 'property-descriptor.cc',
-+ 'property-descriptor.h',
-+ 'property-details.h',
-+ 'property.cc',
-+ 'property.h',
-+ 'prototype.h',
-+ 'regexp/bytecodes-irregexp.h',
-+ 'regexp/interpreter-irregexp.cc',
-+ 'regexp/interpreter-irregexp.h',
-+ 'regexp/jsregexp-inl.h',
-+ 'regexp/jsregexp.cc',
-+ 'regexp/jsregexp.h',
-+ 'regexp/regexp-ast.cc',
-+ 'regexp/regexp-ast.h',
-+ 'regexp/regexp-macro-assembler-irregexp-inl.h',
-+ 'regexp/regexp-macro-assembler-irregexp.cc',
-+ 'regexp/regexp-macro-assembler-irregexp.h',
-+ 'regexp/regexp-macro-assembler-tracer.cc',
-+ 'regexp/regexp-macro-assembler-tracer.h',
-+ 'regexp/regexp-macro-assembler.cc',
-+ 'regexp/regexp-macro-assembler.h',
-+ 'regexp/regexp-parser.cc',
-+ 'regexp/regexp-parser.h',
-+ 'regexp/regexp-stack.cc',
-+ 'regexp/regexp-stack.h',
-+ 'register-configuration.cc',
-+ 'register-configuration.h',
-+ 'runtime-profiler.cc',
-+ 'runtime-profiler.h',
-+ 'runtime/runtime-array.cc',
-+ 'runtime/runtime-atomics.cc',
-+ 'runtime/runtime-classes.cc',
-+ 'runtime/runtime-collections.cc',
-+ 'runtime/runtime-compiler.cc',
-+ 'runtime/runtime-date.cc',
-+ 'runtime/runtime-debug.cc',
-+ 'runtime/runtime-forin.cc',
-+ 'runtime/runtime-function.cc',
-+ 'runtime/runtime-futex.cc',
-+ 'runtime/runtime-generator.cc',
-+ 'runtime/runtime-i18n.cc',
-+ 'runtime/runtime-internal.cc',
-+ 'runtime/runtime-interpreter.cc',
-+ 'runtime/runtime-literals.cc',
-+ 'runtime/runtime-liveedit.cc',
-+ 'runtime/runtime-maths.cc',
-+ 'runtime/runtime-numbers.cc',
-+ 'runtime/runtime-object.cc',
-+ 'runtime/runtime-operators.cc',
-+ 'runtime/runtime-proxy.cc',
-+ 'runtime/runtime-regexp.cc',
-+ 'runtime/runtime-scopes.cc',
-+ 'runtime/runtime-simd.cc',
-+ 'runtime/runtime-strings.cc',
-+ 'runtime/runtime-symbol.cc',
-+ 'runtime/runtime-test.cc',
-+ 'runtime/runtime-typedarray.cc',
-+ 'runtime/runtime-utils.h',
-+ 'runtime/runtime.cc',
-+ 'runtime/runtime.h',
-+ 'safepoint-table.cc',
-+ 'safepoint-table.h',
-+ 'signature.h',
-+ 'simulator.h',
-+ 'small-pointer-list.h',
-+ 'snapshot/code-serializer.cc',
-+ 'snapshot/code-serializer.h',
-+ 'snapshot/deserializer.cc',
-+ 'snapshot/deserializer.h',
-+ 'snapshot/natives.h',
-+ 'snapshot/natives-common.cc',
-+ 'snapshot/partial-serializer.cc',
-+ 'snapshot/partial-serializer.h',
-+ 'snapshot/serializer.cc',
-+ 'snapshot/serializer.h',
-+ 'snapshot/serializer-common.cc',
-+ 'snapshot/serializer-common.h',
-+ 'snapshot/snapshot.h',
-+ 'snapshot/snapshot-common.cc',
-+ 'snapshot/snapshot-source-sink.cc',
-+ 'snapshot/snapshot-source-sink.h',
-+ 'snapshot/startup-serializer.cc',
-+ 'snapshot/startup-serializer.h',
-+ 'source-position.h',
-+ 'splay-tree.h',
-+ 'splay-tree-inl.h',
-+ 'startup-data-util.cc',
-+ 'startup-data-util.h',
-+ 'string-builder.cc',
-+ 'string-builder.h',
-+ 'string-search.h',
-+ 'string-stream.cc',
-+ 'string-stream.h',
-+ 'strtod.cc',
-+ 'strtod.h',
-+ 'ic/stub-cache.cc',
-+ 'ic/stub-cache.h',
-+ 'tracing/trace-event.cc',
-+ 'tracing/trace-event.h',
-+ 'transitions-inl.h',
-+ 'transitions.cc',
-+ 'transitions.h',
-+ 'type-cache.cc',
-+ 'type-cache.h',
-+ 'type-feedback-vector-inl.h',
-+ 'type-feedback-vector.cc',
-+ 'type-feedback-vector.h',
-+ 'type-info.cc',
-+ 'type-info.h',
-+ 'types.cc',
-+ 'types.h',
-+ 'typing-asm.cc',
-+ 'typing-asm.h',
-+ 'unicode-inl.h',
-+ 'unicode.cc',
-+ 'unicode.h',
-+ 'unicode-cache-inl.h',
-+ 'unicode-cache.h',
-+ 'unicode-decoder.cc',
-+ 'unicode-decoder.h',
-+ 'uri.cc',
-+ 'uri.h',
-+ 'utils-inl.h',
-+ 'utils.cc',
-+ 'utils.h',
-+ 'v8.cc',
-+ 'v8.h',
-+ 'v8memory.h',
-+ 'v8threads.cc',
-+ 'v8threads.h',
-+ 'vector.h',
-+ 'version.cc',
-+ 'version.h',
-+ 'vm-state-inl.h',
-+ 'vm-state.h',
-+ 'wasm/asm-types.cc',
-+ 'wasm/asm-types.h',
-+ 'wasm/asm-wasm-builder.cc',
-+ 'wasm/asm-wasm-builder.h',
-+ 'wasm/ast-decoder.cc',
-+ 'wasm/ast-decoder.h',
-+ 'wasm/decoder.h',
-+ 'wasm/encoder.cc',
-+ 'wasm/encoder.h',
-+ 'wasm/leb-helper.h',
-+ 'wasm/module-decoder.cc',
-+ 'wasm/module-decoder.h',
-+ 'wasm/switch-logic.h',
-+ 'wasm/switch-logic.cc',
-+ 'wasm/wasm-debug.cc',
-+ 'wasm/wasm-debug.h',
-+ 'wasm/wasm-external-refs.cc',
-+ 'wasm/wasm-external-refs.h',
-+ 'wasm/wasm-function-name-table.cc',
-+ 'wasm/wasm-function-name-table.h',
-+ 'wasm/wasm-js.cc',
-+ 'wasm/wasm-js.h',
-+ 'wasm/wasm-macro-gen.h',
-+ 'wasm/wasm-module.cc',
-+ 'wasm/wasm-module.h',
-+ 'wasm/wasm-interpreter.cc',
-+ 'wasm/wasm-interpreter.h',
-+ 'wasm/wasm-opcodes.cc',
-+ 'wasm/wasm-opcodes.h',
-+ 'wasm/wasm-result.cc',
-+ 'wasm/wasm-result.h',
-+ 'zone.cc',
-+ 'zone.h',
-+ 'zone-allocator.h',
-+ 'zone-containers.h',
-+ ],
-+ 'conditions': [
-+ ['OS!="win" and remove_v8base_debug_symbols==1', {
-+ 'cflags!': ['-g', '-gdwarf-4'],
-+ }],
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ['v8_target_arch=="arm"', {
-+ 'sources': [ ### gcmole(arch:arm) ###
-+ 'arm/assembler-arm-inl.h',
-+ 'arm/assembler-arm.cc',
-+ 'arm/assembler-arm.h',
-+ 'arm/builtins-arm.cc',
-+ 'arm/code-stubs-arm.cc',
-+ 'arm/code-stubs-arm.h',
-+ 'arm/codegen-arm.cc',
-+ 'arm/codegen-arm.h',
-+ 'arm/constants-arm.h',
-+ 'arm/constants-arm.cc',
-+ 'arm/cpu-arm.cc',
-+ 'arm/deoptimizer-arm.cc',
-+ 'arm/disasm-arm.cc',
-+ 'arm/frames-arm.cc',
-+ 'arm/frames-arm.h',
-+ 'arm/interface-descriptors-arm.cc',
-+ 'arm/interface-descriptors-arm.h',
-+ 'arm/macro-assembler-arm.cc',
-+ 'arm/macro-assembler-arm.h',
-+ 'arm/simulator-arm.cc',
-+ 'arm/simulator-arm.h',
-+ 'compiler/arm/code-generator-arm.cc',
-+ 'compiler/arm/instruction-codes-arm.h',
-+ 'compiler/arm/instruction-scheduler-arm.cc',
-+ 'compiler/arm/instruction-selector-arm.cc',
-+ 'crankshaft/arm/lithium-arm.cc',
-+ 'crankshaft/arm/lithium-arm.h',
-+ 'crankshaft/arm/lithium-codegen-arm.cc',
-+ 'crankshaft/arm/lithium-codegen-arm.h',
-+ 'crankshaft/arm/lithium-gap-resolver-arm.cc',
-+ 'crankshaft/arm/lithium-gap-resolver-arm.h',
-+ 'debug/arm/debug-arm.cc',
-+ 'full-codegen/arm/full-codegen-arm.cc',
-+ 'ic/arm/access-compiler-arm.cc',
-+ 'ic/arm/handler-compiler-arm.cc',
-+ 'ic/arm/ic-arm.cc',
-+ 'ic/arm/ic-compiler-arm.cc',
-+ 'ic/arm/stub-cache-arm.cc',
-+ 'regexp/arm/regexp-macro-assembler-arm.cc',
-+ 'regexp/arm/regexp-macro-assembler-arm.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="arm64"', {
-+ 'sources': [ ### gcmole(arch:arm64) ###
-+ 'arm64/assembler-arm64.cc',
-+ 'arm64/assembler-arm64.h',
-+ 'arm64/assembler-arm64-inl.h',
-+ 'arm64/builtins-arm64.cc',
-+ 'arm64/codegen-arm64.cc',
-+ 'arm64/codegen-arm64.h',
-+ 'arm64/code-stubs-arm64.cc',
-+ 'arm64/code-stubs-arm64.h',
-+ 'arm64/constants-arm64.h',
-+ 'arm64/cpu-arm64.cc',
-+ 'arm64/decoder-arm64.cc',
-+ 'arm64/decoder-arm64.h',
-+ 'arm64/decoder-arm64-inl.h',
-+ 'arm64/deoptimizer-arm64.cc',
-+ 'arm64/disasm-arm64.cc',
-+ 'arm64/disasm-arm64.h',
-+ 'arm64/frames-arm64.cc',
-+ 'arm64/frames-arm64.h',
-+ 'arm64/instructions-arm64.cc',
-+ 'arm64/instructions-arm64.h',
-+ 'arm64/instrument-arm64.cc',
-+ 'arm64/instrument-arm64.h',
-+ 'arm64/interface-descriptors-arm64.cc',
-+ 'arm64/interface-descriptors-arm64.h',
-+ 'arm64/macro-assembler-arm64.cc',
-+ 'arm64/macro-assembler-arm64.h',
-+ 'arm64/macro-assembler-arm64-inl.h',
-+ 'arm64/simulator-arm64.cc',
-+ 'arm64/simulator-arm64.h',
-+ 'arm64/utils-arm64.cc',
-+ 'arm64/utils-arm64.h',
-+ 'compiler/arm64/code-generator-arm64.cc',
-+ 'compiler/arm64/instruction-codes-arm64.h',
-+ 'compiler/arm64/instruction-scheduler-arm64.cc',
-+ 'compiler/arm64/instruction-selector-arm64.cc',
-+ 'crankshaft/arm64/delayed-masm-arm64.cc',
-+ 'crankshaft/arm64/delayed-masm-arm64.h',
-+ 'crankshaft/arm64/delayed-masm-arm64-inl.h',
-+ 'crankshaft/arm64/lithium-arm64.cc',
-+ 'crankshaft/arm64/lithium-arm64.h',
-+ 'crankshaft/arm64/lithium-codegen-arm64.cc',
-+ 'crankshaft/arm64/lithium-codegen-arm64.h',
-+ 'crankshaft/arm64/lithium-gap-resolver-arm64.cc',
-+ 'crankshaft/arm64/lithium-gap-resolver-arm64.h',
-+ 'debug/arm64/debug-arm64.cc',
-+ 'full-codegen/arm64/full-codegen-arm64.cc',
-+ 'ic/arm64/access-compiler-arm64.cc',
-+ 'ic/arm64/handler-compiler-arm64.cc',
-+ 'ic/arm64/ic-arm64.cc',
-+ 'ic/arm64/ic-compiler-arm64.cc',
-+ 'ic/arm64/stub-cache-arm64.cc',
-+ 'regexp/arm64/regexp-macro-assembler-arm64.cc',
-+ 'regexp/arm64/regexp-macro-assembler-arm64.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="ia32"', {
-+ 'sources': [ ### gcmole(arch:ia32) ###
-+ 'ia32/assembler-ia32-inl.h',
-+ 'ia32/assembler-ia32.cc',
-+ 'ia32/assembler-ia32.h',
-+ 'ia32/builtins-ia32.cc',
-+ 'ia32/code-stubs-ia32.cc',
-+ 'ia32/code-stubs-ia32.h',
-+ 'ia32/codegen-ia32.cc',
-+ 'ia32/codegen-ia32.h',
-+ 'ia32/cpu-ia32.cc',
-+ 'ia32/deoptimizer-ia32.cc',
-+ 'ia32/disasm-ia32.cc',
-+ 'ia32/frames-ia32.cc',
-+ 'ia32/frames-ia32.h',
-+ 'ia32/interface-descriptors-ia32.cc',
-+ 'ia32/macro-assembler-ia32.cc',
-+ 'ia32/macro-assembler-ia32.h',
-+ 'compiler/ia32/code-generator-ia32.cc',
-+ 'compiler/ia32/instruction-codes-ia32.h',
-+ 'compiler/ia32/instruction-scheduler-ia32.cc',
-+ 'compiler/ia32/instruction-selector-ia32.cc',
-+ 'crankshaft/ia32/lithium-codegen-ia32.cc',
-+ 'crankshaft/ia32/lithium-codegen-ia32.h',
-+ 'crankshaft/ia32/lithium-gap-resolver-ia32.cc',
-+ 'crankshaft/ia32/lithium-gap-resolver-ia32.h',
-+ 'crankshaft/ia32/lithium-ia32.cc',
-+ 'crankshaft/ia32/lithium-ia32.h',
-+ 'debug/ia32/debug-ia32.cc',
-+ 'full-codegen/ia32/full-codegen-ia32.cc',
-+ 'ic/ia32/access-compiler-ia32.cc',
-+ 'ic/ia32/handler-compiler-ia32.cc',
-+ 'ic/ia32/ic-ia32.cc',
-+ 'ic/ia32/ic-compiler-ia32.cc',
-+ 'ic/ia32/stub-cache-ia32.cc',
-+ 'regexp/ia32/regexp-macro-assembler-ia32.cc',
-+ 'regexp/ia32/regexp-macro-assembler-ia32.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="x87"', {
-+ 'sources': [ ### gcmole(arch:x87) ###
-+ 'x87/assembler-x87-inl.h',
-+ 'x87/assembler-x87.cc',
-+ 'x87/assembler-x87.h',
-+ 'x87/builtins-x87.cc',
-+ 'x87/code-stubs-x87.cc',
-+ 'x87/code-stubs-x87.h',
-+ 'x87/codegen-x87.cc',
-+ 'x87/codegen-x87.h',
-+ 'x87/cpu-x87.cc',
-+ 'x87/deoptimizer-x87.cc',
-+ 'x87/disasm-x87.cc',
-+ 'x87/frames-x87.cc',
-+ 'x87/frames-x87.h',
-+ 'x87/interface-descriptors-x87.cc',
-+ 'x87/macro-assembler-x87.cc',
-+ 'x87/macro-assembler-x87.h',
-+ 'compiler/x87/code-generator-x87.cc',
-+ 'compiler/x87/instruction-codes-x87.h',
-+ 'compiler/x87/instruction-scheduler-x87.cc',
-+ 'compiler/x87/instruction-selector-x87.cc',
-+ 'crankshaft/x87/lithium-codegen-x87.cc',
-+ 'crankshaft/x87/lithium-codegen-x87.h',
-+ 'crankshaft/x87/lithium-gap-resolver-x87.cc',
-+ 'crankshaft/x87/lithium-gap-resolver-x87.h',
-+ 'crankshaft/x87/lithium-x87.cc',
-+ 'crankshaft/x87/lithium-x87.h',
-+ 'debug/x87/debug-x87.cc',
-+ 'full-codegen/x87/full-codegen-x87.cc',
-+ 'ic/x87/access-compiler-x87.cc',
-+ 'ic/x87/handler-compiler-x87.cc',
-+ 'ic/x87/ic-x87.cc',
-+ 'ic/x87/ic-compiler-x87.cc',
-+ 'ic/x87/stub-cache-x87.cc',
-+ 'regexp/x87/regexp-macro-assembler-x87.cc',
-+ 'regexp/x87/regexp-macro-assembler-x87.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="mips" or v8_target_arch=="mipsel"', {
-+ 'sources': [ ### gcmole(arch:mipsel) ###
-+ 'mips/assembler-mips.cc',
-+ 'mips/assembler-mips.h',
-+ 'mips/assembler-mips-inl.h',
-+ 'mips/builtins-mips.cc',
-+ 'mips/codegen-mips.cc',
-+ 'mips/codegen-mips.h',
-+ 'mips/code-stubs-mips.cc',
-+ 'mips/code-stubs-mips.h',
-+ 'mips/constants-mips.cc',
-+ 'mips/constants-mips.h',
-+ 'mips/cpu-mips.cc',
-+ 'mips/deoptimizer-mips.cc',
-+ 'mips/disasm-mips.cc',
-+ 'mips/frames-mips.cc',
-+ 'mips/frames-mips.h',
-+ 'mips/interface-descriptors-mips.cc',
-+ 'mips/macro-assembler-mips.cc',
-+ 'mips/macro-assembler-mips.h',
-+ 'mips/simulator-mips.cc',
-+ 'mips/simulator-mips.h',
-+ 'compiler/mips/code-generator-mips.cc',
-+ 'compiler/mips/instruction-codes-mips.h',
-+ 'compiler/mips/instruction-scheduler-mips.cc',
-+ 'compiler/mips/instruction-selector-mips.cc',
-+ 'crankshaft/mips/lithium-codegen-mips.cc',
-+ 'crankshaft/mips/lithium-codegen-mips.h',
-+ 'crankshaft/mips/lithium-gap-resolver-mips.cc',
-+ 'crankshaft/mips/lithium-gap-resolver-mips.h',
-+ 'crankshaft/mips/lithium-mips.cc',
-+ 'crankshaft/mips/lithium-mips.h',
-+ 'full-codegen/mips/full-codegen-mips.cc',
-+ 'debug/mips/debug-mips.cc',
-+ 'ic/mips/access-compiler-mips.cc',
-+ 'ic/mips/handler-compiler-mips.cc',
-+ 'ic/mips/ic-mips.cc',
-+ 'ic/mips/ic-compiler-mips.cc',
-+ 'ic/mips/stub-cache-mips.cc',
-+ 'regexp/mips/regexp-macro-assembler-mips.cc',
-+ 'regexp/mips/regexp-macro-assembler-mips.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="mips64" or v8_target_arch=="mips64el"', {
-+ 'sources': [ ### gcmole(arch:mips64el) ###
-+ 'mips64/assembler-mips64.cc',
-+ 'mips64/assembler-mips64.h',
-+ 'mips64/assembler-mips64-inl.h',
-+ 'mips64/builtins-mips64.cc',
-+ 'mips64/codegen-mips64.cc',
-+ 'mips64/codegen-mips64.h',
-+ 'mips64/code-stubs-mips64.cc',
-+ 'mips64/code-stubs-mips64.h',
-+ 'mips64/constants-mips64.cc',
-+ 'mips64/constants-mips64.h',
-+ 'mips64/cpu-mips64.cc',
-+ 'mips64/deoptimizer-mips64.cc',
-+ 'mips64/disasm-mips64.cc',
-+ 'mips64/frames-mips64.cc',
-+ 'mips64/frames-mips64.h',
-+ 'mips64/interface-descriptors-mips64.cc',
-+ 'mips64/macro-assembler-mips64.cc',
-+ 'mips64/macro-assembler-mips64.h',
-+ 'mips64/simulator-mips64.cc',
-+ 'mips64/simulator-mips64.h',
-+ 'compiler/mips64/code-generator-mips64.cc',
-+ 'compiler/mips64/instruction-codes-mips64.h',
-+ 'compiler/mips64/instruction-scheduler-mips64.cc',
-+ 'compiler/mips64/instruction-selector-mips64.cc',
-+ 'crankshaft/mips64/lithium-codegen-mips64.cc',
-+ 'crankshaft/mips64/lithium-codegen-mips64.h',
-+ 'crankshaft/mips64/lithium-gap-resolver-mips64.cc',
-+ 'crankshaft/mips64/lithium-gap-resolver-mips64.h',
-+ 'crankshaft/mips64/lithium-mips64.cc',
-+ 'crankshaft/mips64/lithium-mips64.h',
-+ 'debug/mips64/debug-mips64.cc',
-+ 'full-codegen/mips64/full-codegen-mips64.cc',
-+ 'ic/mips64/access-compiler-mips64.cc',
-+ 'ic/mips64/handler-compiler-mips64.cc',
-+ 'ic/mips64/ic-mips64.cc',
-+ 'ic/mips64/ic-compiler-mips64.cc',
-+ 'ic/mips64/stub-cache-mips64.cc',
-+ 'regexp/mips64/regexp-macro-assembler-mips64.cc',
-+ 'regexp/mips64/regexp-macro-assembler-mips64.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="x64" or v8_target_arch=="x32"', {
-+ 'sources': [ ### gcmole(arch:x64) ###
-+ 'crankshaft/x64/lithium-codegen-x64.cc',
-+ 'crankshaft/x64/lithium-codegen-x64.h',
-+ 'crankshaft/x64/lithium-gap-resolver-x64.cc',
-+ 'crankshaft/x64/lithium-gap-resolver-x64.h',
-+ 'crankshaft/x64/lithium-x64.cc',
-+ 'crankshaft/x64/lithium-x64.h',
-+ 'x64/assembler-x64-inl.h',
-+ 'x64/assembler-x64.cc',
-+ 'x64/assembler-x64.h',
-+ 'x64/builtins-x64.cc',
-+ 'x64/code-stubs-x64.cc',
-+ 'x64/code-stubs-x64.h',
-+ 'x64/codegen-x64.cc',
-+ 'x64/codegen-x64.h',
-+ 'x64/cpu-x64.cc',
-+ 'x64/deoptimizer-x64.cc',
-+ 'x64/disasm-x64.cc',
-+ 'x64/frames-x64.cc',
-+ 'x64/frames-x64.h',
-+ 'x64/interface-descriptors-x64.cc',
-+ 'x64/macro-assembler-x64.cc',
-+ 'x64/macro-assembler-x64.h',
-+ 'debug/x64/debug-x64.cc',
-+ 'full-codegen/x64/full-codegen-x64.cc',
-+ 'ic/x64/access-compiler-x64.cc',
-+ 'ic/x64/handler-compiler-x64.cc',
-+ 'ic/x64/ic-x64.cc',
-+ 'ic/x64/ic-compiler-x64.cc',
-+ 'ic/x64/stub-cache-x64.cc',
-+ 'regexp/x64/regexp-macro-assembler-x64.cc',
-+ 'regexp/x64/regexp-macro-assembler-x64.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="x64"', {
-+ 'sources': [
-+ 'compiler/x64/code-generator-x64.cc',
-+ 'compiler/x64/instruction-codes-x64.h',
-+ 'compiler/x64/instruction-scheduler-x64.cc',
-+ 'compiler/x64/instruction-selector-x64.cc',
-+ ],
-+ }],
-+ ['v8_target_arch=="ppc" or v8_target_arch=="ppc64"', {
-+ 'sources': [ ### gcmole(arch:ppc) ###
-+ 'compiler/ppc/code-generator-ppc.cc',
-+ 'compiler/ppc/instruction-codes-ppc.h',
-+ 'compiler/ppc/instruction-scheduler-ppc.cc',
-+ 'compiler/ppc/instruction-selector-ppc.cc',
-+ 'crankshaft/ppc/lithium-ppc.cc',
-+ 'crankshaft/ppc/lithium-ppc.h',
-+ 'crankshaft/ppc/lithium-codegen-ppc.cc',
-+ 'crankshaft/ppc/lithium-codegen-ppc.h',
-+ 'crankshaft/ppc/lithium-gap-resolver-ppc.cc',
-+ 'crankshaft/ppc/lithium-gap-resolver-ppc.h',
-+ 'debug/ppc/debug-ppc.cc',
-+ 'full-codegen/ppc/full-codegen-ppc.cc',
-+ 'ic/ppc/access-compiler-ppc.cc',
-+ 'ic/ppc/handler-compiler-ppc.cc',
-+ 'ic/ppc/ic-ppc.cc',
-+ 'ic/ppc/ic-compiler-ppc.cc',
-+ 'ic/ppc/stub-cache-ppc.cc',
-+ 'ppc/assembler-ppc-inl.h',
-+ 'ppc/assembler-ppc.cc',
-+ 'ppc/assembler-ppc.h',
-+ 'ppc/builtins-ppc.cc',
-+ 'ppc/code-stubs-ppc.cc',
-+ 'ppc/code-stubs-ppc.h',
-+ 'ppc/codegen-ppc.cc',
-+ 'ppc/codegen-ppc.h',
-+ 'ppc/constants-ppc.h',
-+ 'ppc/constants-ppc.cc',
-+ 'ppc/cpu-ppc.cc',
-+ 'ppc/deoptimizer-ppc.cc',
-+ 'ppc/disasm-ppc.cc',
-+ 'ppc/frames-ppc.cc',
-+ 'ppc/frames-ppc.h',
-+ 'ppc/interface-descriptors-ppc.cc',
-+ 'ppc/macro-assembler-ppc.cc',
-+ 'ppc/macro-assembler-ppc.h',
-+ 'ppc/simulator-ppc.cc',
-+ 'ppc/simulator-ppc.h',
-+ 'regexp/ppc/regexp-macro-assembler-ppc.cc',
-+ 'regexp/ppc/regexp-macro-assembler-ppc.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="s390" or v8_target_arch=="s390x"', {
-+ 'sources': [ ### gcmole(arch:s390) ###
-+ 'compiler/s390/code-generator-s390.cc',
-+ 'compiler/s390/instruction-codes-s390.h',
-+ 'compiler/s390/instruction-scheduler-s390.cc',
-+ 'compiler/s390/instruction-selector-s390.cc',
-+ 'crankshaft/s390/lithium-codegen-s390.cc',
-+ 'crankshaft/s390/lithium-codegen-s390.h',
-+ 'crankshaft/s390/lithium-gap-resolver-s390.cc',
-+ 'crankshaft/s390/lithium-gap-resolver-s390.h',
-+ 'crankshaft/s390/lithium-s390.cc',
-+ 'crankshaft/s390/lithium-s390.h',
-+ 'debug/s390/debug-s390.cc',
-+ 'full-codegen/s390/full-codegen-s390.cc',
-+ 'ic/s390/access-compiler-s390.cc',
-+ 'ic/s390/handler-compiler-s390.cc',
-+ 'ic/s390/ic-compiler-s390.cc',
-+ 'ic/s390/ic-s390.cc',
-+ 'ic/s390/stub-cache-s390.cc',
-+ 'regexp/s390/regexp-macro-assembler-s390.cc',
-+ 'regexp/s390/regexp-macro-assembler-s390.h',
-+ 's390/assembler-s390.cc',
-+ 's390/assembler-s390.h',
-+ 's390/assembler-s390-inl.h',
-+ 's390/builtins-s390.cc',
-+ 's390/codegen-s390.cc',
-+ 's390/codegen-s390.h',
-+ 's390/code-stubs-s390.cc',
-+ 's390/code-stubs-s390.h',
-+ 's390/constants-s390.cc',
-+ 's390/constants-s390.h',
-+ 's390/cpu-s390.cc',
-+ 's390/deoptimizer-s390.cc',
-+ 's390/disasm-s390.cc',
-+ 's390/frames-s390.cc',
-+ 's390/frames-s390.h',
-+ 's390/interface-descriptors-s390.cc',
-+ 's390/macro-assembler-s390.cc',
-+ 's390/macro-assembler-s390.h',
-+ 's390/simulator-s390.cc',
-+ 's390/simulator-s390.h',
-+ ],
-+ }],
-+ ['OS=="win"', {
-+ 'variables': {
-+ 'gyp_generators': '<!(echo $GYP_GENERATORS)',
-+ },
-+ 'msvs_disabled_warnings': [4351, 4355, 4800],
-+ # When building Official, the .lib is too large and exceeds the 2G
-+ # limit. This breaks it into multiple pieces to avoid the limit.
-+ # See http://crbug.com/485155.
-+ 'msvs_shard': 4,
-+ }],
-+ ['v8_component=="shared_library"', {
-+ 'defines': [
-+ 'BUILDING_V8_SHARED',
-+ 'V8_SHARED',
-+ ],
-+ }],
-+ ['v8_postmortem_support=="true"', {
-+ 'sources': [
-+ '<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
-+ ]
-+ }],
-+ ['v8_enable_i18n_support==1', {
-+ 'dependencies': [
-+ '<(icu_gyp_path):icui18n',
-+ '<(icu_gyp_path):icuuc',
-+ ],
-+ 'conditions': [
-+ ['icu_use_data_file_flag==1', {
-+ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE'],
-+ }, { # else icu_use_data_file_flag !=1
-+ 'conditions': [
-+ ['OS=="win"', {
-+ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_SHARED'],
-+ }, {
-+ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC'],
-+ }],
-+ ],
-+ }],
-+ ],
-+ }, { # v8_enable_i18n_support==0
-+ 'sources!': [
-+ 'i18n.cc',
-+ 'i18n.h',
-+ ],
-+ }],
-+ ['OS=="win" and v8_enable_i18n_support==1', {
-+ 'dependencies': [
-+ '<(icu_gyp_path):icudata',
-+ ],
-+ }],
-+ ],
-+ },
-+ {
-+ 'target_name': 'v8_libbase_sse2',
-+ 'type': 'static_library',
-+ 'variables': {
-+ 'optimize': 'max',
-+ },
-+ 'include_dirs+': [
-+ '..',
-+ ],
-+ 'sources': [
-+ 'base/accounting-allocator.cc',
-+ 'base/accounting-allocator.h',
-+ 'base/adapters.h',
-+ 'base/atomic-utils.h',
-+ 'base/atomicops.h',
-+ 'base/atomicops_internals_arm64_gcc.h',
-+ 'base/atomicops_internals_arm_gcc.h',
-+ 'base/atomicops_internals_atomicword_compat.h',
-+ 'base/atomicops_internals_mac.h',
-+ 'base/atomicops_internals_mips_gcc.h',
-+ 'base/atomicops_internals_mips64_gcc.h',
-+ 'base/atomicops_internals_portable.h',
-+ 'base/atomicops_internals_ppc_gcc.h',
-+ 'base/atomicops_internals_s390_gcc.h',
-+ 'base/atomicops_internals_tsan.h',
-+ 'base/atomicops_internals_x86_gcc.cc',
-+ 'base/atomicops_internals_x86_gcc.h',
-+ 'base/atomicops_internals_x86_msvc.h',
-+ 'base/bits.cc',
-+ 'base/bits.h',
-+ 'base/build_config.h',
-+ 'base/compiler-specific.h',
-+ 'base/cpu.cc',
-+ 'base/cpu.h',
-+ 'base/division-by-constant.cc',
-+ 'base/division-by-constant.h',
-+ 'base/file-utils.cc',
-+ 'base/file-utils.h',
-+ 'base/flags.h',
-+ 'base/format-macros.h',
-+ 'base/functional.cc',
-+ 'base/functional.h',
-+ 'base/hashmap.h',
-+ 'base/ieee754.cc',
-+ 'base/ieee754.h',
-+ 'base/iterator.h',
-+ 'base/lazy-instance.h',
-+ 'base/logging.cc',
-+ 'base/logging.h',
-+ 'base/macros.h',
-+ 'base/once.cc',
-+ 'base/once.h',
-+ 'base/platform/elapsed-timer.h',
-+ 'base/platform/time.cc',
-+ 'base/platform/time.h',
-+ 'base/platform/condition-variable.cc',
-+ 'base/platform/condition-variable.h',
-+ 'base/platform/mutex.cc',
-+ 'base/platform/mutex.h',
-+ 'base/platform/platform.h',
-+ 'base/platform/semaphore.cc',
-+ 'base/platform/semaphore.h',
-+ 'base/safe_conversions.h',
-+ 'base/safe_conversions_impl.h',
-+ 'base/safe_math.h',
-+ 'base/safe_math_impl.h',
-+ 'base/smart-pointers.h',
-+ 'base/sys-info.cc',
-+ 'base/sys-info.h',
-+ 'base/utils/random-number-generator.cc',
-+ 'base/utils/random-number-generator.h',
-+ ],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ['OS=="linux"', {
-+ 'conditions': [
-+ ['nacl_target_arch=="none"', {
-+ 'link_settings': {
-+ 'libraries': [
-+ '-ldl',
-+ '-lrt'
-+ ],
-+ },
-+ }, {
-+ 'defines': [
-+ 'V8_LIBRT_NOT_AVAILABLE=1',
-+ ],
-+ }],
-+ ],
-+ 'sources': [
-+ 'base/platform/platform-linux.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }
-+ ],
-+ ['OS=="android"', {
-+ 'sources': [
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ 'link_settings': {
-+ 'target_conditions': [
-+ ['_toolset=="host" and host_os!="mac"', {
-+ # Only include libdl and librt on host builds because they
-+ # are included by default on Android target builds, and we
-+ # don't want to re-include them here since this will change
-+ # library order and break (see crbug.com/469973).
-+ # These libraries do not exist on Mac hosted builds.
-+ 'libraries': [
-+ '-ldl',
-+ '-lrt'
-+ ]
-+ }]
-+ ]
-+ },
-+ 'conditions': [
-+ ['host_os=="mac"', {
-+ 'target_conditions': [
-+ ['_toolset=="host"', {
-+ 'sources': [
-+ 'base/platform/platform-macos.cc'
-+ ]
-+ }, {
-+ 'sources': [
-+ 'base/platform/platform-linux.cc'
-+ ]
-+ }],
-+ ],
-+ }, {
-+ 'sources': [
-+ 'base/platform/platform-linux.cc'
-+ ]
-+ }],
-+ ],
-+ },
-+ ],
-+ ['OS=="qnx"', {
-+ 'link_settings': {
-+ 'target_conditions': [
-+ ['_toolset=="host" and host_os=="linux"', {
-+ 'libraries': [
-+ '-lrt'
-+ ],
-+ }],
-+ ['_toolset=="target"', {
-+ 'libraries': [
-+ '-lbacktrace'
-+ ],
-+ }],
-+ ],
-+ },
-+ 'sources': [
-+ 'base/platform/platform-posix.cc',
-+ 'base/qnx-math.h',
-+ ],
-+ 'target_conditions': [
-+ ['_toolset=="host" and host_os=="linux"', {
-+ 'sources': [
-+ 'base/platform/platform-linux.cc'
-+ ],
-+ }],
-+ ['_toolset=="host" and host_os=="mac"', {
-+ 'sources': [
-+ 'base/platform/platform-macos.cc'
-+ ],
-+ }],
-+ ['_toolset=="target"', {
-+ 'sources': [
-+ 'base/platform/platform-qnx.cc'
-+ ],
-+ }],
-+ ],
-+ },
-+ ],
-+ ['OS=="freebsd"', {
-+ 'link_settings': {
-+ 'libraries': [
-+ '-L/usr/local/lib -lexecinfo',
-+ ]},
-+ 'sources': [
-+ 'base/platform/platform-freebsd.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }
-+ ],
-+ ['OS=="openbsd"', {
-+ 'link_settings': {
-+ 'libraries': [
-+ '-L/usr/local/lib -lexecinfo',
-+ ]},
-+ 'sources': [
-+ 'base/platform/platform-openbsd.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }
-+ ],
-+ ['OS=="netbsd"', {
-+ 'link_settings': {
-+ 'libraries': [
-+ '-L/usr/pkg/lib -Wl,-R/usr/pkg/lib -lexecinfo',
-+ ]},
-+ 'sources': [
-+ 'base/platform/platform-openbsd.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }
-+ ],
-+ ['OS=="aix"', {
-+ 'sources': [
-+ 'base/platform/platform-aix.cc',
-+ 'base/platform/platform-posix.cc'
-+ ]},
-+ ],
-+ ['OS=="solaris"', {
-+ 'link_settings': {
-+ 'libraries': [
-+ '-lnsl -lrt',
-+ ]},
-+ 'sources': [
-+ 'base/platform/platform-solaris.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }
-+ ],
-+ ['OS=="mac"', {
-+ 'sources': [
-+ 'base/platform/platform-macos.cc',
-+ 'base/platform/platform-posix.cc'
-+ ]},
-+ ],
-+ ['OS=="win"', {
-+ 'defines': [
-+ '_CRT_RAND_S' # for rand_s()
-+ ],
-+ 'variables': {
-+ 'gyp_generators': '<!(echo $GYP_GENERATORS)',
-+ },
-+ 'conditions': [
-+ ['gyp_generators=="make"', {
-+ 'variables': {
-+ 'build_env': '<!(uname -o)',
-+ },
-+ 'conditions': [
-+ ['build_env=="Cygwin"', {
-+ 'sources': [
-+ 'base/platform/platform-cygwin.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }, {
-+ 'sources': [
-+ 'base/platform/platform-win32.cc',
-+ 'base/win32-headers.h',
-+ ],
-+ }],
-+ ],
-+ 'link_settings': {
-+ 'libraries': [ '-lwinmm', '-lws2_32' ],
-+ },
-+ }, {
-+ 'sources': [
-+ 'base/platform/platform-win32.cc',
-+ 'base/win32-headers.h',
-+ ],
-+ 'msvs_disabled_warnings': [4351, 4355, 4800],
-+ 'link_settings': {
-+ 'libraries': [ '-lwinmm.lib', '-lws2_32.lib' ],
-+ },
-+ }],
-+ ],
-+ }],
-+ ],
-+ },
-+ {
-+ 'target_name': 'v8_libplatform_sse2',
-+ 'type': 'static_library',
-+ 'variables': {
-+ 'optimize': 'max',
-+ },
-+ 'dependencies': [
-+ 'v8_libbase_sse2',
-+ ],
-+ 'include_dirs+': [
-+ '..',
-+ '../include',
-+ ],
-+ 'sources': [
-+ '../include/libplatform/libplatform.h',
-+ 'libplatform/default-platform.cc',
-+ 'libplatform/default-platform.h',
-+ 'libplatform/task-queue.cc',
-+ 'libplatform/task-queue.h',
-+ 'libplatform/worker-thread.cc',
-+ 'libplatform/worker-thread.h',
-+ ],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ],
-+ 'direct_dependent_settings': {
-+ 'include_dirs': [
-+ '../include',
-+ ],
-+ },
-+ },
-+ {
-+ 'target_name': 'v8_libsampler_sse2',
-+ 'type': 'static_library',
-+ 'variables': {
-+ 'optimize': 'max',
-+ },
-+ 'dependencies': [
-+ 'v8_libbase_sse2',
-+ ],
-+ 'include_dirs+': [
-+ '..',
-+ '../include',
-+ ],
-+ 'sources': [
-+ 'libsampler/v8-sampler.cc',
-+ 'libsampler/v8-sampler.h'
-+ ],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ],
-+ 'direct_dependent_settings': {
-+ 'include_dirs': [
-+ '../include',
-+ ],
-+ },
-+ },
-+ {
-+ 'target_name': 'natives_blob_sse2',
-+ 'type': 'none',
-+ 'conditions': [
-+ [ 'v8_use_external_startup_data==1', {
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'dependencies': ['js2c_sse2#host'],
-+ }, {
-+ 'dependencies': ['js2c_sse2'],
-+ }],
-+ ],
-+ 'actions': [{
-+ 'action_name': 'v8_sse2_concatenate_natives_blob',
-+ 'inputs': [
-+ '../tools/concatenate-files.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.bin',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental_sse2.bin',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries-extras_sse2.bin',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental-extras_sse2.bin',
-+ ],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'target_conditions': [
-+ ['_toolset=="host"', {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/natives_blob_host_sse2.bin',
-+ ],
-+ 'action': [
-+ 'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_host_sse2.bin'
-+ ],
-+ }, {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/natives_blob_sse2.bin',
-+ ],
-+ 'action': [
-+ 'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_sse2.bin'
-+ ],
-+ }],
-+ ],
-+ }, {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/natives_blob_sse2.bin',
-+ ],
-+ 'action': [
-+ 'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_sse2.bin'
-+ ],
-+ }],
-+ ],
-+ }],
-+ }],
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ]
-+ },
-+ {
-+ 'target_name': 'js2c_sse2',
-+ 'type': 'none',
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ],
-+ 'variables': {
-+ 'library_files': [
-+ 'js/macros.py',
-+ 'messages.h',
-+ 'js/prologue.js',
-+ 'js/runtime.js',
-+ 'js/v8natives.js',
-+ 'js/symbol.js',
-+ 'js/array.js',
-+ 'js/string.js',
-+ 'js/math.js',
-+ 'third_party/fdlibm/fdlibm.js',
-+ 'js/regexp.js',
-+ 'js/arraybuffer.js',
-+ 'js/typedarray.js',
-+ 'js/iterator-prototype.js',
-+ 'js/collection.js',
-+ 'js/weak-collection.js',
-+ 'js/collection-iterator.js',
-+ 'js/promise.js',
-+ 'js/messages.js',
-+ 'js/array-iterator.js',
-+ 'js/string-iterator.js',
-+ 'js/templates.js',
-+ 'js/spread.js',
-+ 'js/proxy.js',
-+ 'debug/mirrors.js',
-+ 'debug/debug.js',
-+ 'debug/liveedit.js',
-+ ],
-+ 'experimental_library_files': [
-+ 'js/macros.py',
-+ 'messages.h',
-+ 'js/harmony-atomics.js',
-+ 'js/harmony-sharedarraybuffer.js',
-+ 'js/harmony-simd.js',
-+ 'js/harmony-string-padding.js',
-+ 'js/promise-extra.js',
-+ 'js/harmony-async-await.js'
-+ ],
-+ 'libraries_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.bin',
-+ 'libraries_experimental_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental_sse2.bin',
-+ 'libraries_extras_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-extras_sse2.bin',
-+ 'libraries_experimental_extras_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental-extras_sse2.bin',
-+ 'conditions': [
-+ ['v8_enable_i18n_support==1', {
-+ 'library_files': ['js/i18n.js'],
-+ 'experimental_library_files': [
-+ 'js/icu-case-mapping.js',
-+ 'js/intl-extra.js',
-+ ],
-+ }],
-+ ],
-+ },
-+ 'actions': [
-+ {
-+ 'action_name': 'v8_sse2_js2c',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(library_files)',
-+ ],
-+ 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
-+ 'CORE',
-+ '<@(library_files)',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_bin',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(library_files)',
-+ ],
-+ 'outputs': ['<@(libraries_bin_file)'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
-+ 'CORE',
-+ '<@(library_files)',
-+ '--startup_blob', '<@(libraries_bin_file)',
-+ '--nojs',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_experimental',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(experimental_library_files)',
-+ ],
-+ 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
-+ 'EXPERIMENTAL',
-+ '<@(experimental_library_files)',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_experimental_bin',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(experimental_library_files)',
-+ ],
-+ 'outputs': ['<@(libraries_experimental_bin_file)'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
-+ 'EXPERIMENTAL',
-+ '<@(experimental_library_files)',
-+ '--startup_blob', '<@(libraries_experimental_bin_file)',
-+ '--nojs',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_extras',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(v8_extra_library_files)',
-+ ],
-+ 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
-+ 'EXTRAS',
-+ '<@(v8_extra_library_files)',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_extras_bin',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(v8_extra_library_files)',
-+ ],
-+ 'outputs': ['<@(libraries_extras_bin_file)'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
-+ 'EXTRAS',
-+ '<@(v8_extra_library_files)',
-+ '--startup_blob', '<@(libraries_extras_bin_file)',
-+ '--nojs',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_experimental_extras',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(v8_experimental_extra_library_files)',
-+ ],
-+ 'outputs': [
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
-+ ],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
-+ 'EXPERIMENTAL_EXTRAS',
-+ '<@(v8_experimental_extra_library_files)',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_experimental_extras_bin',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(v8_experimental_extra_library_files)',
-+ ],
-+ 'outputs': ['<@(libraries_experimental_extras_bin_file)'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
-+ 'EXPERIMENTAL_EXTRAS',
-+ '<@(v8_experimental_extra_library_files)',
-+ '--startup_blob', '<@(libraries_experimental_extras_bin_file)',
-+ '--nojs',
-+ ],
-+ },
-+ ],
-+ },
-+ {
-+ 'target_name': 'postmortem-metadata_sse2',
-+ 'type': 'none',
-+ 'variables': {
-+ 'heapobject_files': [
-+ 'objects.h',
-+ 'objects-inl.h',
-+ ],
-+ },
-+ 'actions': [
-+ {
-+ 'action_name': 'v8_sse2_gen-postmortem-metadata',
-+ 'inputs': [
-+ '../tools/gen-postmortem-metadata.py',
-+ '<@(heapobject_files)',
-+ ],
-+ 'outputs': [
-+ '<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
-+ ],
-+ 'action': [
-+ 'python',
-+ '../tools/gen-postmortem-metadata.py',
-+ '<@(_outputs)',
-+ '<@(heapobject_files)'
-+ ]
-+ }
-+ ]
-+ },
-+ {
-+ 'target_name': 'mksnapshot_sse2',
-+ 'type': 'executable',
-+ 'dependencies': ['v8_base_sse2', 'v8_nosnapshot_sse2', 'v8_libplatform_sse2'],
-+ 'include_dirs+': [
-+ '..',
-+ ],
-+ 'sources': [
-+ 'snapshot/mksnapshot.cc',
-+ ],
-+ 'conditions': [
-+ ['v8_enable_i18n_support==1', {
-+ 'dependencies': [
-+ '<(icu_gyp_path):icui18n',
-+ '<(icu_gyp_path):icuuc',
-+ ]
-+ }],
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ],
-+ },
-+ ],
-+}
-diff -Nur qtwebengine-opensource-src-5.8.0/src/core/core_module.pro qtwebengine-opensource-src-5.8.0-no-sse2/src/core/core_module.pro
---- qtwebengine-opensource-src-5.8.0/src/core/core_module.pro 2017-01-03 11:35:11.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/core/core_module.pro 2017-03-05 17:30:17.502552632 +0100
-@@ -9,6 +9,29 @@
- error("Could not find the linking information that gyp should have generated.")
- }
-
-+# find the shared libraries in the link line
-+# remove those in lib/sse2 that are only replacements for the normal ones
-+# collect all shared libraries so they can be installed
-+for(private_lib, LIBS_PRIVATE) {
-+ contains(private_lib, .*\.so) {
-+ contains(private_lib, .*/lib/sse2/.*) {
-+ LIBS_PRIVATE -= $$private_lib
-+ shlibs_sse2 += $$private_lib
-+ } else {
-+ shlibs += $$private_lib
-+ }
-+ }
-+}
-+
-+# set the shared libraries to be installed
-+# add an rpath to their installation location
-+shlib_install_path = $$[QT_INSTALL_LIBS]/qtwebengine
-+!isEmpty(shlibs) {
-+ shlibs.files += $$shlibs
-+ shlibs_sse2.files += $$shlibs_sse2
-+ LIBS_PRIVATE += -Wl,--rpath,$$shlib_install_path
-+}
-+
- load(qt_module)
-
- api_library_name = qtwebenginecoreapi$$qtPlatformTargetSuffix()
-@@ -74,7 +97,12 @@
- locales.path = $$[QT_INSTALL_TRANSLATIONS]/qtwebengine_locales
- resources.CONFIG += no_check_exist
- resources.path = $$[QT_INSTALL_DATA]/resources
-- INSTALLS += locales resources
-+ # install the shared libraries
-+ shlibs.CONFIG += no_check_exist
-+ shlibs.path = $$shlib_install_path
-+ shlibs_sse2.CONFIG += no_check_exist
-+ shlibs_sse2.path = $$shlib_install_path/sse2
-+ INSTALLS += locales resources shlibs shlibs_sse2
-
- !use?(system_icu) {
- icu.CONFIG += no_check_exist
-diff -Nur qtwebengine-opensource-src-5.8.0/src/core/qtwebengine.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/core/qtwebengine.gypi
---- qtwebengine-opensource-src-5.8.0/src/core/qtwebengine.gypi 2017-01-03 11:35:11.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/core/qtwebengine.gypi 2017-03-05 17:30:17.503552617 +0100
-@@ -63,6 +63,11 @@
- },
- },
- 'conditions': [
-+ ['target_arch=="ia32"', {
-+ 'dependencies': [
-+ '<(chromium_src_dir)/v8/src/v8_sse2.gyp:v8_sse2',
-+ ],
-+ }],
- ['OS=="win" and win_use_allocator_shim==1', {
- 'dependencies': [
- '<(chromium_src_dir)/base/allocator/allocator.gyp:allocator',
diff --git a/qtwebengine-opensource-src-5.8.0-pdfium-gcc7.patch b/qtwebengine-opensource-src-5.8.0-pdfium-gcc7.patch
deleted file mode 100644
index ce2c180..0000000
--- a/qtwebengine-opensource-src-5.8.0-pdfium-gcc7.patch
+++ /dev/null
@@ -1,600 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/app.cpp qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/app.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/app.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/app.cpp 2017-03-06 13:04:01.784297561 +0100
-@@ -454,7 +454,7 @@
- }
-
- void app::ClearTimerCommon(const CJS_Value& param) {
-- if (param.GetType() != CJS_Value::VT_fxobject)
-+ if (param.GetType() != CJS_Value::VT_object)
- return;
-
- v8::Local<v8::Object> pObj = param.ToV8Object();
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/Document.cpp qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/Document.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/Document.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/Document.cpp 2017-03-06 13:04:01.783297575 +0100
-@@ -411,22 +411,20 @@
-
- int nlength = params.size();
- if (nlength == 9) {
-- if (params[8].GetType() == CJS_Value::VT_fxobject) {
-+ if (params[8].GetType() == CJS_Value::VT_object) {
- v8::Local<v8::Object> pObj = params[8].ToV8Object();
-- {
-- if (FXJS_GetObjDefnID(pObj) == CJS_PrintParamsObj::g_nObjDefnID) {
-- if (CJS_Object* pJSObj = params[8].ToCJSObject()) {
-- if (PrintParamsObj* pprintparamsObj =
-- (PrintParamsObj*)pJSObj->GetEmbedObject()) {
-- bUI = pprintparamsObj->bUI;
-- nStart = pprintparamsObj->nStart;
-- nEnd = pprintparamsObj->nEnd;
-- bSilent = pprintparamsObj->bSilent;
-- bShrinkToFit = pprintparamsObj->bShrinkToFit;
-- bPrintAsImage = pprintparamsObj->bPrintAsImage;
-- bReverse = pprintparamsObj->bReverse;
-- bAnnotations = pprintparamsObj->bAnnotations;
-- }
-+ if (FXJS_GetObjDefnID(pObj) == CJS_PrintParamsObj::g_nObjDefnID) {
-+ if (CJS_Object* pJSObj = params[8].ToCJSObject()) {
-+ if (PrintParamsObj* pprintparamsObj =
-+ static_cast<PrintParamsObj*>(pJSObj->GetEmbedObject())) {
-+ bUI = pprintparamsObj->bUI;
-+ nStart = pprintparamsObj->nStart;
-+ nEnd = pprintparamsObj->nEnd;
-+ bSilent = pprintparamsObj->bSilent;
-+ bShrinkToFit = pprintparamsObj->bShrinkToFit;
-+ bPrintAsImage = pprintparamsObj->bPrintAsImage;
-+ bReverse = pprintparamsObj->bReverse;
-+ bAnnotations = pprintparamsObj->bAnnotations;
- }
- }
- }
-@@ -597,18 +595,16 @@
- v8::Local<v8::Object> pObj = params[0].ToV8Object();
- v8::Local<v8::Value> pValue = FXJS_GetObjectElement(isolate, pObj, L"cURL");
- if (!pValue.IsEmpty())
-- strURL =
-- CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
-+ strURL = CJS_Value(pRuntime, pValue).ToCFXWideString();
-
- pValue = FXJS_GetObjectElement(isolate, pObj, L"bFDF");
-- bFDF = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToBool();
-+ bFDF = CJS_Value(pRuntime, pValue).ToBool();
-
- pValue = FXJS_GetObjectElement(isolate, pObj, L"bEmpty");
-- bEmpty = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToBool();
-+ bEmpty = CJS_Value(pRuntime, pValue).ToBool();
-
- pValue = FXJS_GetObjectElement(isolate, pObj, L"aFields");
-- aFields.Attach(
-- CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToV8Array());
-+ aFields.Attach(CJS_Value(pRuntime, pValue).ToV8Array());
- }
-
- CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
-@@ -691,25 +687,22 @@
- v8::Local<v8::Object> pObj = params[0].ToV8Object();
-
- v8::Local<v8::Value> pValue = FXJS_GetObjectElement(isolate, pObj, L"bUI");
-- bUI = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToInt();
-+ bUI = CJS_Value(pRuntime, pValue).ToInt();
-
- pValue = FXJS_GetObjectElement(isolate, pObj, L"cTo");
-- cTo = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
-+ cTo = CJS_Value(pRuntime, pValue).ToCFXWideString();
-
- pValue = FXJS_GetObjectElement(isolate, pObj, L"cCc");
-- cCc = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
-+ cCc = CJS_Value(pRuntime, pValue).ToCFXWideString();
-
- pValue = FXJS_GetObjectElement(isolate, pObj, L"cBcc");
-- cBcc =
-- CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
-+ cBcc = CJS_Value(pRuntime, pValue).ToCFXWideString();
-
- pValue = FXJS_GetObjectElement(isolate, pObj, L"cSubject");
-- cSubject =
-- CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
-+ cSubject = CJS_Value(pRuntime, pValue).ToCFXWideString();
-
- pValue = FXJS_GetObjectElement(isolate, pObj, L"cMsg");
-- cMsg =
-- CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
-+ cMsg = CJS_Value(pRuntime, pValue).ToCFXWideString();
- }
-
- pRuntime->BeginBlock();
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/global.cpp qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/global.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/global.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/global.cpp 2017-03-06 13:04:01.785297546 +0100
-@@ -17,63 +17,6 @@
- #include "fpdfsdk/javascript/cjs_context.h"
- #include "fpdfsdk/javascript/resource.h"
-
--// Helper class for compile-time calculation of hash values in order to
--// avoid having global object initializers.
--template <unsigned ACC, wchar_t... Ns>
--struct CHash;
--
--// Only needed to hash single-character strings.
--template <wchar_t N>
--struct CHash<N> {
-- static const unsigned value = N;
--};
--
--template <unsigned ACC, wchar_t N>
--struct CHash<ACC, N> {
-- static const unsigned value = (ACC * 1313LLU + N) & 0xFFFFFFFF;
--};
--
--template <unsigned ACC, wchar_t N, wchar_t... Ns>
--struct CHash<ACC, N, Ns...> {
-- static const unsigned value = CHash<CHash<ACC, N>::value, Ns...>::value;
--};
--
--const unsigned int JSCONST_nStringHash =
-- CHash<'s', 't', 'r', 'i', 'n', 'g'>::value;
--const unsigned int JSCONST_nNumberHash =
-- CHash<'n', 'u', 'm', 'b', 'e', 'r'>::value;
--const unsigned int JSCONST_nBoolHash =
-- CHash<'b', 'o', 'o', 'l', 'e', 'a', 'n'>::value;
--const unsigned int JSCONST_nDateHash = CHash<'d', 'a', 't', 'e'>::value;
--const unsigned int JSCONST_nObjectHash =
-- CHash<'o', 'b', 'j', 'e', 'c', 't'>::value;
--const unsigned int JSCONST_nFXobjHash = CHash<'f', 'x', 'o', 'b', 'j'>::value;
--const unsigned int JSCONST_nNullHash = CHash<'n', 'u', 'l', 'l'>::value;
--const unsigned int JSCONST_nUndefHash =
-- CHash<'u', 'n', 'd', 'e', 'f', 'i', 'n', 'e', 'd'>::value;
--
--static unsigned JS_CalcHash(const wchar_t* main) {
-- return (unsigned)FX_HashCode_GetW(CFX_WideStringC(main), false);
--}
--
--#ifndef NDEBUG
--class HashVerify {
-- public:
-- HashVerify();
--} g_hashVerify;
--
--HashVerify::HashVerify() {
-- ASSERT(JSCONST_nStringHash == JS_CalcHash(kFXJSValueNameString));
-- ASSERT(JSCONST_nNumberHash == JS_CalcHash(kFXJSValueNameNumber));
-- ASSERT(JSCONST_nBoolHash == JS_CalcHash(kFXJSValueNameBoolean));
-- ASSERT(JSCONST_nDateHash == JS_CalcHash(kFXJSValueNameDate));
-- ASSERT(JSCONST_nObjectHash == JS_CalcHash(kFXJSValueNameObject));
-- ASSERT(JSCONST_nFXobjHash == JS_CalcHash(kFXJSValueNameFxobj));
-- ASSERT(JSCONST_nNullHash == JS_CalcHash(kFXJSValueNameNull));
-- ASSERT(JSCONST_nUndefHash == JS_CalcHash(kFXJSValueNameUndefined));
--}
--#endif
--
- BEGIN_JS_STATIC_CONST(CJS_Global)
- END_JS_STATIC_CONST()
-
-@@ -335,9 +278,8 @@
- CFX_WideString ws =
- FXJS_ToString(isolate, FXJS_GetArrayElement(isolate, pKeyList, i));
- CFX_ByteString sKey = ws.UTF8Encode();
--
- v8::Local<v8::Value> v = FXJS_GetObjectElement(isolate, pObj, ws);
-- switch (GET_VALUE_TYPE(v)) {
-+ switch (CJS_Value::GetValueType(v)) {
- case CJS_Value::VT_number: {
- CJS_KeyValue* pObjElement = new CJS_KeyValue;
- pObjElement->nType = JS_GLOBALDATA_TYPE_NUMBER;
-@@ -353,8 +295,7 @@
- array.Add(pObjElement);
- } break;
- case CJS_Value::VT_string: {
-- CFX_ByteString sValue =
-- CJS_Value(pRuntime, v, CJS_Value::VT_string).ToCFXByteString();
-+ CFX_ByteString sValue = CJS_Value(pRuntime, v).ToCFXByteString();
- CJS_KeyValue* pObjElement = new CJS_KeyValue;
- pObjElement->nType = JS_GLOBALDATA_TYPE_STRING;
- pObjElement->sKey = sKey;
-@@ -500,26 +441,3 @@
- m_mapGlobal[propname] = pNewData;
- return TRUE;
- }
--
--CJS_Value::Type GET_VALUE_TYPE(v8::Local<v8::Value> p) {
-- const unsigned int nHash = JS_CalcHash(FXJS_GetTypeof(p));
--
-- if (nHash == JSCONST_nUndefHash)
-- return CJS_Value::VT_undefined;
-- if (nHash == JSCONST_nNullHash)
-- return CJS_Value::VT_null;
-- if (nHash == JSCONST_nStringHash)
-- return CJS_Value::VT_string;
-- if (nHash == JSCONST_nNumberHash)
-- return CJS_Value::VT_number;
-- if (nHash == JSCONST_nBoolHash)
-- return CJS_Value::VT_boolean;
-- if (nHash == JSCONST_nDateHash)
-- return CJS_Value::VT_date;
-- if (nHash == JSCONST_nObjectHash)
-- return CJS_Value::VT_object;
-- if (nHash == JSCONST_nFXobjHash)
-- return CJS_Value::VT_fxobject;
--
-- return CJS_Value::VT_unknown;
--}
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Define.h qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Define.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Define.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Define.h 2017-03-06 13:04:01.783297575 +0100
-@@ -111,7 +111,7 @@
- CJS_Object* pJSObj = (CJS_Object*)FXJS_GetPrivate(isolate, info.Holder());
- C* pObj = reinterpret_cast<C*>(pJSObj->GetEmbedObject());
- CFX_WideString sError;
-- CJS_PropValue propValue(CJS_Value(pRuntime, value, CJS_Value::VT_unknown));
-+ CJS_PropValue propValue(CJS_Value(pRuntime, value));
- propValue.StartSetting();
- if (!(pObj->*M)(pContext, propValue, sError)) {
- FXJS_Error(isolate, JSFormatErrorString(class_name_string, prop_name_string,
-@@ -149,7 +149,7 @@
- IJS_Context* pContext = pRuntime->GetCurrentContext();
- std::vector<CJS_Value> parameters;
- for (unsigned int i = 0; i < (unsigned int)info.Length(); i++) {
-- parameters.push_back(CJS_Value(pRuntime, info[i], CJS_Value::VT_unknown));
-+ parameters.push_back(CJS_Value(pRuntime, info[i]));
- }
- CJS_Value valueRes(pRuntime);
- CJS_Object* pJSObj = (CJS_Object*)FXJS_GetPrivate(isolate, info.Holder());
-@@ -404,7 +404,7 @@
- CFX_WideString propname = CFX_WideString::FromUTF8(
- CFX_ByteStringC(*utf8_value, utf8_value.length()));
- CFX_WideString sError;
-- CJS_PropValue PropValue(CJS_Value(pRuntime, value, CJS_Value::VT_unknown));
-+ CJS_PropValue PropValue(CJS_Value(pRuntime, value));
- PropValue.StartSetting();
- if (!pObj->DoProperty(pContext, propname.c_str(), PropValue, sError)) {
- FXJS_Error(isolate, JSFormatErrorString(class_name, "PutProperty", sError));
-@@ -447,7 +447,7 @@
- IJS_Context* pContext = pRuntime->GetCurrentContext();
- std::vector<CJS_Value> parameters;
- for (unsigned int i = 0; i < (unsigned int)info.Length(); i++) {
-- parameters.push_back(CJS_Value(pRuntime, info[i], CJS_Value::VT_unknown));
-+ parameters.push_back(CJS_Value(pRuntime, info[i]));
- }
- CJS_Value valueRes(pRuntime);
- CFX_WideString sError;
-@@ -485,6 +485,4 @@
- } \
- }
-
--CJS_Value::Type GET_VALUE_TYPE(v8::Local<v8::Value> p);
--
- #endif // FPDFSDK_JAVASCRIPT_JS_DEFINE_H_
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.cpp qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.cpp 2017-03-06 13:10:30.896809956 +0100
-@@ -22,11 +22,10 @@
- return *(double*)g_nan;
- }
-
--CJS_Value::CJS_Value(CJS_Runtime* pRuntime)
-- : m_eType(VT_unknown), m_pJSRuntime(pRuntime) {}
-+CJS_Value::CJS_Value(CJS_Runtime* pRuntime) : m_pJSRuntime(pRuntime) {}
-
--CJS_Value::CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Value> pValue, Type t)
-- : m_eType(t), m_pValue(pValue), m_pJSRuntime(pRuntime) {}
-+CJS_Value::CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Value> pValue)
-+ : m_pValue(pValue), m_pJSRuntime(pRuntime) {}
-
- CJS_Value::CJS_Value(CJS_Runtime* pRuntime, const int& iValue)
- : m_pJSRuntime(pRuntime) {
-@@ -48,23 +47,11 @@
- operator=(dValue);
- }
-
--CJS_Value::CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Object> pJsObj)
-- : m_pJSRuntime(pRuntime) {
-- operator=(pJsObj);
--}
--
- CJS_Value::CJS_Value(CJS_Runtime* pRuntime, CJS_Object* pJsObj)
- : m_pJSRuntime(pRuntime) {
- operator=(pJsObj);
- }
-
--CJS_Value::CJS_Value(CJS_Runtime* pRuntime, CJS_Document* pJsDoc)
-- : m_pJSRuntime(pRuntime) {
-- m_eType = VT_object;
-- if (pJsDoc)
-- m_pValue = pJsDoc->ToV8Object();
--}
--
- CJS_Value::CJS_Value(CJS_Runtime* pRuntime, const FX_WCHAR* pWstr)
- : m_pJSRuntime(pRuntime) {
- operator=(pWstr);
-@@ -84,19 +71,17 @@
-
- CJS_Value::CJS_Value(const CJS_Value& other) = default;
-
--void CJS_Value::Attach(v8::Local<v8::Value> pValue, Type t) {
-+void CJS_Value::Attach(v8::Local<v8::Value> pValue) {
- m_pValue = pValue;
-- m_eType = t;
- }
-
- void CJS_Value::Attach(CJS_Value* pValue) {
- if (pValue)
-- Attach(pValue->ToV8Value(), pValue->GetType());
-+ Attach(pValue->ToV8Value());
- }
-
- void CJS_Value::Detach() {
- m_pValue = v8::Local<v8::Value>();
-- m_eType = VT_unknown;
- }
-
- int CJS_Value::ToInt() const {
-@@ -146,7 +131,7 @@
-
- void CJS_Value::MaybeCoerceToNumber() {
- bool bAllowNaN = false;
-- if (m_eType == VT_string) {
-+ if (GetType() == VT_string) {
- CFX_ByteString bstr = ToCFXByteString();
- if (bstr.GetLength() == 0)
- return;
-@@ -162,32 +147,26 @@
- if (std::isnan(num->Value()) && !bAllowNaN)
- return;
- m_pValue = num;
-- m_eType = VT_number;
- }
-
- void CJS_Value::operator=(int iValue) {
- m_pValue = FXJS_NewNumber(m_pJSRuntime->GetIsolate(), iValue);
-- m_eType = VT_number;
- }
-
- void CJS_Value::operator=(bool bValue) {
- m_pValue = FXJS_NewBoolean(m_pJSRuntime->GetIsolate(), bValue);
-- m_eType = VT_boolean;
- }
-
- void CJS_Value::operator=(double dValue) {
- m_pValue = FXJS_NewNumber(m_pJSRuntime->GetIsolate(), dValue);
-- m_eType = VT_number;
- }
-
- void CJS_Value::operator=(float fValue) {
- m_pValue = FXJS_NewNumber(m_pJSRuntime->GetIsolate(), fValue);
-- m_eType = VT_number;
- }
-
- void CJS_Value::operator=(v8::Local<v8::Object> pObj) {
- m_pValue = FXJS_NewObject(m_pJSRuntime->GetIsolate(), pObj);
-- m_eType = VT_fxobject;
- }
-
- void CJS_Value::operator=(CJS_Object* pObj) {
-@@ -195,21 +174,12 @@
- operator=(pObj->ToV8Object());
- }
-
--void CJS_Value::operator=(CJS_Document* pJsDoc) {
-- m_eType = VT_object;
-- if (pJsDoc) {
-- m_pValue = pJsDoc->ToV8Object();
-- }
--}
--
- void CJS_Value::operator=(const FX_WCHAR* pWstr) {
- m_pValue = FXJS_NewString(m_pJSRuntime->GetIsolate(), (wchar_t*)pWstr);
-- m_eType = VT_string;
- }
-
- void CJS_Value::SetNull() {
- m_pValue = FXJS_NewNull();
-- m_eType = VT_null;
- }
-
- void CJS_Value::operator=(const FX_CHAR* pStr) {
-@@ -219,36 +189,34 @@
- void CJS_Value::operator=(CJS_Array& array) {
- m_pValue =
- FXJS_NewObject2(m_pJSRuntime->GetIsolate(), (v8::Local<v8::Array>)array);
-- m_eType = VT_object;
- }
-
- void CJS_Value::operator=(CJS_Date& date) {
- m_pValue = FXJS_NewDate(m_pJSRuntime->GetIsolate(), (double)date);
-- m_eType = VT_date;
- }
-
- void CJS_Value::operator=(CJS_Value value) {
- m_pValue = value.ToV8Value();
-- m_eType = value.m_eType;
- m_pJSRuntime = value.m_pJSRuntime;
- }
-
--CJS_Value::Type CJS_Value::GetType() const {
-- if (m_pValue.IsEmpty())
-+// static
-+CJS_Value::Type CJS_Value::GetValueType(v8::Local<v8::Value> value) {
-+ if (value.IsEmpty())
- return VT_unknown;
-- if (m_pValue->IsString())
-+ if (value->IsString())
- return VT_string;
-- if (m_pValue->IsNumber())
-+ if (value->IsNumber())
- return VT_number;
-- if (m_pValue->IsBoolean())
-+ if (value->IsBoolean())
- return VT_boolean;
-- if (m_pValue->IsDate())
-+ if (value->IsDate())
- return VT_date;
-- if (m_pValue->IsObject())
-+ if (value->IsObject())
- return VT_object;
-- if (m_pValue->IsNull())
-+ if (value->IsNull())
- return VT_null;
-- if (m_pValue->IsUndefined())
-+ if (value->IsUndefined())
- return VT_undefined;
- return VT_unknown;
- }
-@@ -427,7 +395,7 @@
- return;
- v8::Local<v8::Value> p =
- FXJS_GetArrayElement(m_pJSRuntime->GetIsolate(), m_pArray, index);
-- value.Attach(p, CJS_Value::VT_object);
-+ value.Attach(p);
- }
-
- void CJS_Array::SetElement(unsigned index, CJS_Value value) {
-@@ -899,7 +867,7 @@
- v8::Local<v8::Value> v8Value =
- FXJS_GetObjectElement(pRuntime->GetIsolate(), pObj, property);
- if (!v8Value->IsUndefined())
-- result[i] = CJS_Value(pRuntime, v8Value, CJS_Value::VT_unknown);
-+ result[i] = CJS_Value(pRuntime, v8Value);
- }
- va_end(ap);
- return result;
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.h qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.h 2017-03-06 13:04:01.784297561 +0100
-@@ -27,20 +27,17 @@
- VT_boolean,
- VT_date,
- VT_object,
-- VT_fxobject,
- VT_null,
- VT_undefined
- };
-
- CJS_Value(CJS_Runtime* pRuntime);
-- CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Value> pValue, Type t);
-+ CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Value> pValue);
- CJS_Value(CJS_Runtime* pRuntime, const int& iValue);
- CJS_Value(CJS_Runtime* pRuntime, const double& dValue);
- CJS_Value(CJS_Runtime* pRuntime, const float& fValue);
- CJS_Value(CJS_Runtime* pRuntime, const bool& bValue);
-- CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Object>);
-- CJS_Value(CJS_Runtime* pRuntime, CJS_Object*);
-- CJS_Value(CJS_Runtime* pRuntime, CJS_Document*);
-+ CJS_Value(CJS_Runtime* pRuntime, CJS_Object* pObj);
- CJS_Value(CJS_Runtime* pRuntime, const FX_CHAR* pStr);
- CJS_Value(CJS_Runtime* pRuntime, const FX_WCHAR* pWstr);
- CJS_Value(CJS_Runtime* pRuntime, CJS_Array& array);
-@@ -49,11 +46,12 @@
- CJS_Value(const CJS_Value& other);
-
- void SetNull();
-- void Attach(v8::Local<v8::Value> pValue, Type t);
-+ void Attach(v8::Local<v8::Value> pValue);
- void Attach(CJS_Value* pValue);
- void Detach();
-
-- Type GetType() const;
-+ static Type GetValueType(v8::Local<v8::Value> value);
-+ Type GetType() const { return GetValueType(m_pValue); }
- int ToInt() const;
- bool ToBool() const;
- double ToDouble() const;
-@@ -66,8 +64,7 @@
- v8::Local<v8::Value> ToV8Value() const;
-
- // Replace the current |m_pValue| with a v8::Number if possible
-- // to make one from the current |m_pValue|, updating |m_eType|
-- // as appropriate to indicate the result.
-+ // to make one from the current |m_pValue|.
- void MaybeCoerceToNumber();
-
- void operator=(int iValue);
-@@ -75,7 +72,6 @@
- void operator=(double val);
- void operator=(float val);
- void operator=(CJS_Object* val);
-- void operator=(CJS_Document* val);
- void operator=(v8::Local<v8::Object> val);
- void operator=(CJS_Array& val);
- void operator=(CJS_Date& val);
-@@ -91,7 +87,6 @@
- CJS_Runtime* GetJSRuntime() const { return m_pJSRuntime; }
-
- protected:
-- Type m_eType;
- v8::Local<v8::Value> m_pValue;
- CJS_Runtime* m_pJSRuntime;
- };
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/fxjs_v8.cpp qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/fxjs_v8.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/fxjs_v8.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/fxjs_v8.cpp 2017-03-06 13:06:10.884476877 +0100
-@@ -10,15 +10,6 @@
-
- #include "core/fxcrt/include/fx_basic.h"
-
--const wchar_t kFXJSValueNameString[] = L"string";
--const wchar_t kFXJSValueNameNumber[] = L"number";
--const wchar_t kFXJSValueNameBoolean[] = L"boolean";
--const wchar_t kFXJSValueNameDate[] = L"date";
--const wchar_t kFXJSValueNameObject[] = L"object";
--const wchar_t kFXJSValueNameFxobj[] = L"fxobj";
--const wchar_t kFXJSValueNameNull[] = L"null";
--const wchar_t kFXJSValueNameUndefined[] = L"undefined";
--
- // Keep this consistent with the values defined in gin/public/context_holder.h
- // (without actually requiring a dependency on gin itself for the standalone
- // embedders of PDFIum). The value we want to use is:
-@@ -540,26 +531,6 @@
- .ToLocalChecked());
- }
-
--const wchar_t* FXJS_GetTypeof(v8::Local<v8::Value> pObj) {
-- if (pObj.IsEmpty())
-- return nullptr;
-- if (pObj->IsString())
-- return kFXJSValueNameString;
-- if (pObj->IsNumber())
-- return kFXJSValueNameNumber;
-- if (pObj->IsBoolean())
-- return kFXJSValueNameBoolean;
-- if (pObj->IsDate())
-- return kFXJSValueNameDate;
-- if (pObj->IsObject())
-- return kFXJSValueNameObject;
-- if (pObj->IsNull())
-- return kFXJSValueNameNull;
-- if (pObj->IsUndefined())
-- return kFXJSValueNameUndefined;
-- return nullptr;
--}
--
- void FXJS_SetPrivate(v8::Isolate* pIsolate,
- v8::Local<v8::Object> pObj,
- void* p) {
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/include/fxjs_v8.h qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/include/fxjs_v8.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/include/fxjs_v8.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/include/fxjs_v8.h 2017-03-06 13:06:40.283062272 +0100
-@@ -118,15 +118,6 @@
- FXJS_PerIsolateData();
- };
-
--extern const wchar_t kFXJSValueNameString[];
--extern const wchar_t kFXJSValueNameNumber[];
--extern const wchar_t kFXJSValueNameBoolean[];
--extern const wchar_t kFXJSValueNameDate[];
--extern const wchar_t kFXJSValueNameObject[];
--extern const wchar_t kFXJSValueNameFxobj[];
--extern const wchar_t kFXJSValueNameNull[];
--extern const wchar_t kFXJSValueNameUndefined[];
--
- class FXJS_ArrayBufferAllocator : public v8::ArrayBuffer::Allocator {
- void* Allocate(size_t length) override;
- void* AllocateUninitialized(size_t length) override;
-@@ -209,7 +200,6 @@
- bool bStatic = false);
- v8::Local<v8::Object> FXJS_GetThisObj(v8::Isolate* pIsolate);
- int FXJS_GetObjDefnID(v8::Local<v8::Object> pObj);
--const wchar_t* FXJS_GetTypeof(v8::Local<v8::Value> pObj);
-
- void FXJS_SetPrivate(v8::Isolate* pIsolate,
- v8::Local<v8::Object> pObj,
diff --git a/qtwebengine-opensource-src-5.8.0-system-icu-utf.patch b/qtwebengine-opensource-src-5.8.0-system-icu-utf.patch
deleted file mode 100644
index dff88b5..0000000
--- a/qtwebengine-opensource-src-5.8.0-system-icu-utf.patch
+++ /dev/null
@@ -1,362 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/base.gypi qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/base.gypi
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/base.gypi 2017-03-05 16:48:14.206027229 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/base.gypi 2017-03-05 16:50:49.266714740 +0100
-@@ -674,8 +674,6 @@
- 'third_party/dmg_fp/dmg_fp.h',
- 'third_party/dmg_fp/dtoa_wrapper.cc',
- 'third_party/dmg_fp/g_fmt.cc',
-- 'third_party/icu/icu_utf.cc',
-- 'third_party/icu/icu_utf.h',
- 'third_party/superfasthash/superfasthash.c',
- 'third_party/xdg_mime/xdgmime.h',
- 'threading/non_thread_safe.h',
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/BUILD.gn qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/BUILD.gn
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/BUILD.gn 2017-03-05 16:48:14.207027214 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/BUILD.gn 2017-03-05 16:50:49.267714725 +0100
-@@ -801,8 +801,6 @@
- "third_party/dmg_fp/dmg_fp.h",
- "third_party/dmg_fp/dtoa_wrapper.cc",
- "third_party/dmg_fp/g_fmt.cc",
-- "third_party/icu/icu_utf.cc",
-- "third_party/icu/icu_utf.h",
- "third_party/superfasthash/superfasthash.c",
- "threading/non_thread_safe.h",
- "threading/non_thread_safe_impl.cc",
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/files/file_path.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/files/file_path.cc
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/files/file_path.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/files/file_path.cc 2017-03-05 16:50:49.267714725 +0100
-@@ -18,7 +18,7 @@
-
- #if defined(OS_MACOSX)
- #include "base/mac/scoped_cftyperef.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
- #endif
-
- #if defined(OS_WIN)
-@@ -1150,9 +1150,9 @@
- int* index) {
- int codepoint = 0;
- while (*index < length && codepoint == 0) {
-- // CBU8_NEXT returns a value < 0 in error cases. For purposes of string
-+ // U8_NEXT returns a value < 0 in error cases. For purposes of string
- // comparison, we just use that value and flag it with DCHECK.
-- CBU8_NEXT(string, *index, length, codepoint);
-+ U8_NEXT(string, *index, length, codepoint);
- DCHECK_GT(codepoint, 0);
- if (codepoint > 0) {
- // Check if there is a subtable for this upper byte.
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/json/json_parser.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/json/json_parser.cc
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/json/json_parser.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/json/json_parser.cc 2017-03-05 16:50:49.268714710 +0100
-@@ -16,7 +16,7 @@
- #include "base/strings/stringprintf.h"
- #include "base/strings/utf_string_conversion_utils.h"
- #include "base/strings/utf_string_conversions.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
- #include "base/values.h"
-
- namespace base {
-@@ -631,8 +631,8 @@
- int32_t next_char = 0;
-
- while (CanConsume(1)) {
-- pos_ = start_pos_ + index_; // CBU8_NEXT is postcrement.
-- CBU8_NEXT(start_pos_, index_, length, next_char);
-+ pos_ = start_pos_ + index_; // U8_NEXT is postcrement.
-+ U8_NEXT(start_pos_, index_, length, next_char);
- if (next_char < 0 || !IsValidCharacter(next_char)) {
- ReportError(JSONReader::JSON_UNSUPPORTED_ENCODING, 1);
- return false;
-@@ -725,7 +725,7 @@
- return false;
- }
- } else if (next_char == '"') {
-- --index_; // Rewind by one because of CBU8_NEXT.
-+ --index_; // Rewind by one because of U8_NEXT.
- out->Swap(&string);
- return true;
- } else {
-@@ -765,10 +765,10 @@
-
- // If this is a high surrogate, consume the next code unit to get the
- // low surrogate.
-- if (CBU16_IS_SURROGATE(code_unit16_high)) {
-+ if (U16_IS_SURROGATE(code_unit16_high)) {
- // Make sure this is the high surrogate. If not, it's an encoding
- // error.
-- if (!CBU16_IS_SURROGATE_LEAD(code_unit16_high))
-+ if (!U16_IS_SURROGATE_LEAD(code_unit16_high))
- return false;
-
- // Make sure that the token has more characters to consume the
-@@ -785,24 +785,24 @@
-
- NextNChars(3);
-
-- if (!CBU16_IS_TRAIL(code_unit16_low)) {
-+ if (!U16_IS_TRAIL(code_unit16_low)) {
- return false;
- }
-
- uint32_t code_point =
-- CBU16_GET_SUPPLEMENTARY(code_unit16_high, code_unit16_low);
-+ U16_GET_SUPPLEMENTARY(code_unit16_high, code_unit16_low);
- if (!IsValidCharacter(code_point))
- return false;
-
- offset = 0;
-- CBU8_APPEND_UNSAFE(code_unit8, offset, code_point);
-+ U8_APPEND_UNSAFE(code_unit8, offset, code_point);
- } else {
- // Not a surrogate.
-- DCHECK(CBU16_IS_SINGLE(code_unit16_high));
-+ DCHECK(U16_IS_SINGLE(code_unit16_high));
- if (!IsValidCharacter(code_unit16_high))
- return false;
-
-- CBU8_APPEND_UNSAFE(code_unit8, offset, code_unit16_high);
-+ U8_APPEND_UNSAFE(code_unit8, offset, code_unit16_high);
- }
-
- dest_string->append(code_unit8);
-@@ -819,9 +819,9 @@
- } else {
- char utf8_units[4] = { 0 };
- int offset = 0;
-- CBU8_APPEND_UNSAFE(utf8_units, offset, point);
-+ U8_APPEND_UNSAFE(utf8_units, offset, point);
- dest->Convert();
-- // CBU8_APPEND_UNSAFE can overwrite up to 4 bytes, so utf8_units may not be
-+ // U8_APPEND_UNSAFE can overwrite up to 4 bytes, so utf8_units may not be
- // zero terminated at this point. |offset| contains the correct length.
- dest->AppendString(std::string(utf8_units, offset));
- }
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/json/string_escape.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/json/string_escape.cc
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/json/string_escape.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/json/string_escape.cc 2017-03-05 16:50:49.268714710 +0100
-@@ -14,7 +14,7 @@
- #include "base/strings/stringprintf.h"
- #include "base/strings/utf_string_conversion_utils.h"
- #include "base/strings/utf_string_conversions.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
-
- namespace base {
-
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/pattern.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/pattern.cc
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/pattern.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/pattern.cc 2017-03-05 16:50:49.404712681 +0100
-@@ -4,13 +4,13 @@
-
- #include "base/strings/pattern.h"
-
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
-
- namespace base {
-
- namespace {
-
--static bool IsWildcard(base_icu::UChar32 character) {
-+static bool IsWildcard(UChar32 character) {
- return character == '*' || character == '?';
- }
-
-@@ -37,9 +37,9 @@
- // Check if the chars match, if so, increment the ptrs.
- const CHAR* pattern_next = *pattern;
- const CHAR* string_next = *string;
-- base_icu::UChar32 pattern_char = next(&pattern_next, pattern_end);
-+ UChar32 pattern_char = next(&pattern_next, pattern_end);
- if (pattern_char == next(&string_next, string_end) &&
-- pattern_char != CBU_SENTINEL) {
-+ pattern_char != U_SENTINEL) {
- *pattern = pattern_next;
- *string = string_next;
- } else {
-@@ -133,20 +133,20 @@
- }
-
- struct NextCharUTF8 {
-- base_icu::UChar32 operator()(const char** p, const char* end) {
-- base_icu::UChar32 c;
-+ UChar32 operator()(const char** p, const char* end) {
-+ UChar32 c;
- int offset = 0;
-- CBU8_NEXT(*p, offset, end - *p, c);
-+ U8_NEXT(*p, offset, end - *p, c);
- *p += offset;
- return c;
- }
- };
-
- struct NextCharUTF16 {
-- base_icu::UChar32 operator()(const char16** p, const char16* end) {
-- base_icu::UChar32 c;
-+ UChar32 operator()(const char16** p, const char16* end) {
-+ UChar32 c;
- int offset = 0;
-- CBU16_NEXT(*p, offset, end - *p, c);
-+ U16_NEXT(*p, offset, end - *p, c);
- *p += offset;
- return c;
- }
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/string_split.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/string_split.cc
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/string_split.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/string_split.cc 2017-03-05 16:50:49.404712681 +0100
-@@ -8,7 +8,7 @@
-
- #include "base/logging.h"
- #include "base/strings/string_util.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
-
- namespace base {
-
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/string_util.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/string_util.cc
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/string_util.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/string_util.cc 2017-03-05 16:50:49.404712681 +0100
-@@ -25,7 +25,7 @@
- #include "base/memory/singleton.h"
- #include "base/strings/utf_string_conversion_utils.h"
- #include "base/strings/utf_string_conversions.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
- #include "build/build_config.h"
-
- namespace base {
-@@ -357,19 +357,19 @@
- }
- DCHECK_LE(byte_size,
- static_cast<uint32_t>(std::numeric_limits<int32_t>::max()));
-- // Note: This cast is necessary because CBU8_NEXT uses int32_ts.
-+ // Note: This cast is necessary because U8_NEXT uses int32_ts.
- int32_t truncation_length = static_cast<int32_t>(byte_size);
- int32_t char_index = truncation_length - 1;
- const char* data = input.data();
-
-- // Using CBU8, we will move backwards from the truncation point
-+ // Using U8, we will move backwards from the truncation point
- // to the beginning of the string looking for a valid UTF8
- // character. Once a full UTF8 character is found, we will
- // truncate the string to the end of that character.
- while (char_index >= 0) {
- int32_t prev = char_index;
-- base_icu::UChar32 code_point = 0;
-- CBU8_NEXT(data, char_index, truncation_length, code_point);
-+ UChar32 code_point = 0;
-+ U8_NEXT(data, char_index, truncation_length, code_point);
- if (!IsValidCharacter(code_point) ||
- !IsValidCodepoint(code_point)) {
- char_index = prev - 1;
-@@ -522,7 +522,7 @@
-
- while (char_index < src_len) {
- int32_t code_point;
-- CBU8_NEXT(src, char_index, src_len, code_point);
-+ U8_NEXT(src, char_index, src_len, code_point);
- if (!IsValidCharacter(code_point))
- return false;
- }
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc 2017-03-05 16:50:49.404712681 +0100
-@@ -4,7 +4,7 @@
-
- #include "base/strings/utf_string_conversion_utils.h"
-
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
-
- namespace base {
-
-@@ -18,7 +18,7 @@
- // use a signed type for code_point. But this function returns false
- // on error anyway, so code_point_out is unsigned.
- int32_t code_point;
-- CBU8_NEXT(src, *char_index, src_len, code_point);
-+ U8_NEXT(src, *char_index, src_len, code_point);
- *code_point_out = static_cast<uint32_t>(code_point);
-
- // The ICU macro above moves to the next char, we want to point to the last
-@@ -33,16 +33,16 @@
- int32_t src_len,
- int32_t* char_index,
- uint32_t* code_point) {
-- if (CBU16_IS_SURROGATE(src[*char_index])) {
-- if (!CBU16_IS_SURROGATE_LEAD(src[*char_index]) ||
-+ if (U16_IS_SURROGATE(src[*char_index])) {
-+ if (!U16_IS_SURROGATE_LEAD(src[*char_index]) ||
- *char_index + 1 >= src_len ||
-- !CBU16_IS_TRAIL(src[*char_index + 1])) {
-+ !U16_IS_TRAIL(src[*char_index + 1])) {
- // Invalid surrogate pair.
- return false;
- }
-
- // Valid surrogate pair.
-- *code_point = CBU16_GET_SUPPLEMENTARY(src[*char_index],
-+ *code_point = U16_GET_SUPPLEMENTARY(src[*char_index],
- src[*char_index + 1]);
- (*char_index)++;
- } else {
-@@ -76,30 +76,30 @@
- }
-
-
-- // CBU8_APPEND_UNSAFE can append up to 4 bytes.
-+ // U8_APPEND_UNSAFE can append up to 4 bytes.
- size_t char_offset = output->length();
- size_t original_char_offset = char_offset;
-- output->resize(char_offset + CBU8_MAX_LENGTH);
-+ output->resize(char_offset + U8_MAX_LENGTH);
-
-- CBU8_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
-+ U8_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
-
-- // CBU8_APPEND_UNSAFE will advance our pointer past the inserted character, so
-+ // U8_APPEND_UNSAFE will advance our pointer past the inserted character, so
- // it will represent the new length of the string.
- output->resize(char_offset);
- return char_offset - original_char_offset;
- }
-
- size_t WriteUnicodeCharacter(uint32_t code_point, string16* output) {
-- if (CBU16_LENGTH(code_point) == 1) {
-+ if (U16_LENGTH(code_point) == 1) {
- // Thie code point is in the Basic Multilingual Plane (BMP).
- output->push_back(static_cast<char16>(code_point));
- return 1;
- }
- // Non-BMP characters use a double-character encoding.
- size_t char_offset = output->length();
-- output->resize(char_offset + CBU16_MAX_LENGTH);
-- CBU16_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
-- return CBU16_MAX_LENGTH;
-+ output->resize(char_offset + U16_MAX_LENGTH);
-+ U16_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
-+ return U16_MAX_LENGTH;
- }
-
- // Generalized Unicode converter -----------------------------------------------
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc 2017-03-05 16:50:49.405712666 +0100
-@@ -5,13 +5,13 @@
- #include "ui/gfx/utf16_indexing.h"
-
- #include "base/logging.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
-
- namespace gfx {
-
- bool IsValidCodePointIndex(const base::string16& s, size_t index) {
- return index == 0 || index == s.length() ||
-- !(CBU16_IS_TRAIL(s[index]) && CBU16_IS_LEAD(s[index - 1]));
-+ !(U16_IS_TRAIL(s[index]) && U16_IS_LEAD(s[index - 1]));
- }
-
- ptrdiff_t UTF16IndexToOffset(const base::string16& s, size_t base, size_t pos) {
diff --git a/qtwebengine-opensource-src-5.8.0-system-nspr-prtime.patch b/qtwebengine-opensource-src-5.8.0-system-nspr-prtime.patch
deleted file mode 100644
index 4f17325..0000000
--- a/qtwebengine-opensource-src-5.8.0-system-nspr-prtime.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/base.gypi qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/base.gypi
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/base.gypi 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/base.gypi 2017-03-05 16:48:14.206027229 +0100
-@@ -676,8 +676,6 @@
- 'third_party/dmg_fp/g_fmt.cc',
- 'third_party/icu/icu_utf.cc',
- 'third_party/icu/icu_utf.h',
-- 'third_party/nspr/prtime.cc',
-- 'third_party/nspr/prtime.h',
- 'third_party/superfasthash/superfasthash.c',
- 'third_party/xdg_mime/xdgmime.h',
- 'threading/non_thread_safe.h',
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/BUILD.gn qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/BUILD.gn
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/BUILD.gn 2017-03-05 16:48:14.207027214 +0100
-@@ -803,8 +803,6 @@
- "third_party/dmg_fp/g_fmt.cc",
- "third_party/icu/icu_utf.cc",
- "third_party/icu/icu_utf.h",
-- "third_party/nspr/prtime.cc",
-- "third_party/nspr/prtime.h",
- "third_party/superfasthash/superfasthash.c",
- "threading/non_thread_safe.h",
- "threading/non_thread_safe_impl.cc",
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/time/pr_time_unittest.cc qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/time/pr_time_unittest.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/time/pr_time_unittest.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/time/pr_time_unittest.cc 2017-03-05 16:48:14.208027199 +0100
-@@ -7,7 +7,7 @@
-
- #include "base/compiler_specific.h"
- #include "base/macros.h"
--#include "base/third_party/nspr/prtime.h"
-+#include <nspr4/prtime.h>
- #include "base/time/time.h"
- #include "build/build_config.h"
- #include "testing/gtest/include/gtest/gtest.h"
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/time/time.cc qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/time/time.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/time/time.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/time/time.cc 2017-03-05 16:48:14.298025856 +0100
-@@ -14,7 +14,7 @@
- #include "base/logging.h"
- #include "base/macros.h"
- #include "base/strings/stringprintf.h"
--#include "base/third_party/nspr/prtime.h"
-+#include <nspr4/prtime.h>
- #include "build/build_config.h"
-
- namespace base {
diff --git a/qtwebengine-opensource-src-5.8.0-v8-gcc7.patch b/qtwebengine-opensource-src-5.8.0-v8-gcc7.patch
deleted file mode 100644
index 8a87503..0000000
--- a/qtwebengine-opensource-src-5.8.0-v8-gcc7.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects-body-descriptors.h qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects-body-descriptors.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects-body-descriptors.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects-body-descriptors.h 2017-03-06 02:05:57.848394582 +0100
-@@ -99,7 +99,7 @@
-
- template <typename StaticVisitor>
- static inline void IterateBody(HeapObject* obj, int object_size) {
-- IterateBody(obj);
-+ IterateBody<StaticVisitor>(obj);
- }
- };
-
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects.h qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects.h 2017-03-06 02:05:57.990392454 +0100
-@@ -3193,22 +3193,10 @@
- public:
- typedef Shape ShapeT;
-
-- // Wrapper methods
-- inline uint32_t Hash(Key key) {
-- if (Shape::UsesSeed) {
-- return Shape::SeededHash(key, GetHeap()->HashSeed());
-- } else {
-- return Shape::Hash(key);
-- }
-- }
--
-- inline uint32_t HashForObject(Key key, Object* object) {
-- if (Shape::UsesSeed) {
-- return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
-- } else {
-- return Shape::HashForObject(key, object);
-- }
-- }
-+ // Wrapper methods. Defined in src/objects-inl.h
-+ // to break a cycle with src/heap/heap.h.
-+ inline uint32_t Hash(Key key);
-+ inline uint32_t HashForObject(Key key, Object* object);
-
- // Returns a new HashTable object.
- MUST_USE_RESULT static Handle<Derived> New(
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects-inl.h qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects-inl.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects-inl.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects-inl.h 2017-03-06 02:05:57.992392424 +0100
-@@ -38,6 +38,25 @@
- namespace v8 {
- namespace internal {
-
-+template <typename Derived, typename Shape, typename Key>
-+uint32_t HashTable<Derived, Shape, Key>::Hash(Key key) {
-+ if (Shape::UsesSeed) {
-+ return Shape::SeededHash(key, GetHeap()->HashSeed());
-+ } else {
-+ return Shape::Hash(key);
-+ }
-+}
-+
-+template <typename Derived, typename Shape, typename Key>
-+uint32_t HashTable<Derived, Shape, Key>::HashForObject(Key key,
-+ Object* object) {
-+ if (Shape::UsesSeed) {
-+ return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
-+ } else {
-+ return Shape::HashForObject(key, object);
-+ }
-+}
-+
- PropertyDetails::PropertyDetails(Smi* smi) {
- value_ = smi->value();
- }
diff --git a/qtwebengine-opensource-src-5.8.0-webrtc-neon-detect.patch b/qtwebengine-opensource-src-5.8.0-webrtc-neon-detect.patch
deleted file mode 100644
index 8e26dbe..0000000
--- a/qtwebengine-opensource-src-5.8.0-webrtc-neon-detect.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn qtwebengine-opensource-src-5.8.0-webrtc-neon-detect/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-webrtc-neon-detect/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn 2017-03-05 17:08:43.547748044 +0100
-@@ -108,9 +108,7 @@
- if (is_linux) {
- defines += [ "WEBRTC_THREAD_RR" ]
-
-- if (!build_with_chromium) {
-- deps += [ ":cpu_features_linux" ]
-- }
-+ deps += [ ":cpu_features_linux" ]
-
- libs += [ "rt" ]
- }
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/system_wrappers/system_wrappers.gyp qtwebengine-opensource-src-5.8.0-webrtc-neon-detect/src/3rdparty/chromium/third_party/webrtc/system_wrappers/system_wrappers.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/system_wrappers/system_wrappers.gyp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-webrtc-neon-detect/src/3rdparty/chromium/third_party/webrtc/system_wrappers/system_wrappers.gyp 2017-03-05 17:07:01.869254856 +0100
-@@ -112,12 +112,8 @@
- 'defines': [
- 'WEBRTC_THREAD_RR',
- ],
-- 'conditions': [
-- ['build_with_chromium==0', {
-- 'dependencies': [
-- 'cpu_features_webrtc.gyp:cpu_features_linux',
-- ],
-- }],
-+ 'dependencies': [
-+ 'cpu_features_webrtc.gyp:cpu_features_linux',
- ],
- 'link_settings': {
- 'libraries': [ '-lrt', ],
diff --git a/qtwebengine-opensource-src-5.8.0-wtf-gcc7.patch b/qtwebengine-opensource-src-5.8.0-wtf-gcc7.patch
deleted file mode 100644
index f679530..0000000
--- a/qtwebengine-opensource-src-5.8.0-wtf-gcc7.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h qtwebengine-opensource-src-5.8.0-wtf-gcc7/src/3rdparty/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-wtf-gcc7/src/3rdparty/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h 2017-03-07 03:00:44.783316233 +0100
-@@ -542,6 +542,8 @@
- return *this;
- }
-
-+inline void swapAnchor(LinkedHashSetNodeBase& a, LinkedHashSetNodeBase& b);
-+
- template<typename T, typename U, typename V, typename W>
- inline void LinkedHashSet<T, U, V, W>::swap(LinkedHashSet& other)
- {
diff --git a/qtwebengine-opensource-src-5.9.0-arm-fpu-fix.patch b/qtwebengine-opensource-src-5.9.0-arm-fpu-fix.patch
new file mode 100644
index 0000000..ddf8abc
--- /dev/null
+++ b/qtwebengine-opensource-src-5.9.0-arm-fpu-fix.patch
@@ -0,0 +1,11 @@
+diff -ur qtwebengine-opensource-src-5.9.0/src/core/config/linux.pri qtwebengine-opensource-src-5.9.0-arm-fpu-fix/src/core/config/linux.pri
+--- qtwebengine-opensource-src-5.9.0/src/core/config/linux.pri 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-arm-fpu-fix/src/core/config/linux.pri 2017-06-10 02:32:09.984692943 +0200
+@@ -64,6 +64,7 @@
+ gn_args += arm_use_neon=true
+ } else {
+ MFPU = $$extractCFlag("-mfpu=.*")
++ !isEmpty(MFPU): gn_args += arm_fpu=\"$$MFPU\"
+ !isEmpty(MFPU):contains(MFPU, ".*neon.*") {
+ gn_args += arm_use_neon=true
+ } else {
diff --git a/qtwebengine-opensource-src-5.9.0-fix-extractcflag.patch b/qtwebengine-opensource-src-5.9.0-fix-extractcflag.patch
new file mode 100644
index 0000000..4fcd592
--- /dev/null
+++ b/qtwebengine-opensource-src-5.9.0-fix-extractcflag.patch
@@ -0,0 +1,12 @@
+diff -ur qtwebengine-opensource-src-5.9.0/mkspecs/features/functions.prf qtwebengine-opensource-src-5.9.0-fix-extractcflag/mkspecs/features/functions.prf
+--- qtwebengine-opensource-src-5.9.0/mkspecs/features/functions.prf 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-fix-extractcflag/mkspecs/features/functions.prf 2017-06-08 00:36:16.303520106 +0200
+@@ -302,7 +302,7 @@
+ }
+
+ defineReplace(extractCFlag) {
+- CFLAGS = $$QMAKE_CC $$QMAKE_CFLAGS
++ CFLAGS = $$QMAKE_CC $$QMAKE_CFLAGS $$QMAKE_CFLAGS_RELEASE
+ OPTION = $$find(CFLAGS, $$1)
+ OPTION = $$split(OPTION, =)
+ return ($$member(OPTION, 1))
diff --git a/qtwebengine-opensource-src-5.9.0-linux-pri.patch b/qtwebengine-opensource-src-5.9.0-linux-pri.patch
new file mode 100644
index 0000000..c671f6b
--- /dev/null
+++ b/qtwebengine-opensource-src-5.9.0-linux-pri.patch
@@ -0,0 +1,26 @@
+diff -ur qtwebengine-opensource-src-5.9.0/src/core/config/linux.pri qtwebengine-opensource-src-5.9.0-linux-pri/src/core/config/linux.pri
+--- qtwebengine-opensource-src-5.9.0/src/core/config/linux.pri 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-linux-pri/src/core/config/linux.pri 2017-06-08 00:20:53.688419747 +0200
+@@ -148,3 +148,22 @@
+ use?(system_ffmpeg): gn_args += use_system_ffmpeg=true
+ #use?(system_protobuf): gn_args += use_system_protobuf=true
+ }
++
++# some more system packages, that are not checked for for some reason
++gn_args += use_system_re2=true
++
++# yasm is only used on x86, and passing use_system_yasm makes the build fail on
++# other architectures (e.g., ARM), so make it conditional on the architecture
++contains(QT_ARCH, "x86_64")|contains(QT_ARCH, "i386") {
++ gn_args += use_system_yasm=true
++}
++
++# link libpci instead of dlopening it, our Qt packaging depends on it anyway
++gn_args += linux_link_libpci=true
++
++# run the unbundling script Chromium provides
++CHROMIUM_SRC_DIR = "$$QTWEBENGINE_ROOT/$$getChromiumSrcDir()"
++R_G_F_PY = "$$CHROMIUM_SRC_DIR/build/linux/unbundle/replace_gn_files.py"
++R_G_F_PY_ARGS = "--system-libraries re2 yasm"
++log("Running python $$R_G_F_PY $$R_G_F_PY_ARGS$${EOL}")
++!system("python $$R_G_F_PY $$R_G_F_PY_ARGS"): error("-- unbundling failed")
diff --git a/qtwebengine-opensource-src-5.9.0-no-neon.patch b/qtwebengine-opensource-src-5.9.0-no-neon.patch
new file mode 100644
index 0000000..0fc7395
--- /dev/null
+++ b/qtwebengine-opensource-src-5.9.0-no-neon.patch
@@ -0,0 +1,14 @@
+diff -ur qtwebengine-opensource-src-5.9.0/src/core/config/linux.pri qtwebengine-opensource-src-5.9.0-no-neon/src/core/config/linux.pri
+--- qtwebengine-opensource-src-5.9.0/src/core/config/linux.pri 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-neon/src/core/config/linux.pri 2017-06-08 00:55:22.257781563 +0200
+@@ -70,7 +70,9 @@
+ gn_args += arm_use_neon=false
+ # If the toolchain does not explicitly specify to use NEON instructions
+ # we use arm_neon_optional for ARMv7
+- equals(MARMV, 7): gn_args += arm_optionally_use_neon=true
++ # Disable NEON entirely for now, if set in the specfile, e.g., to
++ # work around some build failure.
++ # equals(MARMV, 7): gn_args += arm_optionally_use_neon=true
+ }
+ }
+
diff --git a/qtwebengine-opensource-src-5.9.0-no-sse2.patch b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
new file mode 100644
index 0000000..5c10ebf
--- /dev/null
+++ b/qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -0,0 +1,2601 @@
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/build/config/compiler/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/build/config/compiler/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/build/config/compiler/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/build/config/compiler/BUILD.gn 2017-06-08 23:09:28.104582812 +0200
+@@ -533,13 +533,6 @@
+ } else if (current_cpu == "x86") {
+ cflags += [ "-m32" ]
+ ldflags += [ "-m32" ]
+- if (!is_nacl) {
+- cflags += [
+- "-msse2",
+- "-mfpmath=sse",
+- "-mmmx",
+- ]
+- }
+ } else if (current_cpu == "arm") {
+ if (is_clang && !is_android && !is_nacl) {
+ cflags += [ "--target=arm-linux-gnueabihf" ]
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/build/config/v8_target_cpu.gni qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/build/config/v8_target_cpu.gni
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/build/config/v8_target_cpu.gni 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/build/config/v8_target_cpu.gni 2017-06-10 01:42:15.216049690 +0200
+@@ -59,3 +59,11 @@
+ # It should never be explicitly set by the user.
+ v8_current_cpu = v8_target_cpu
+ }
++
++if (v8_current_cpu == "x86") {
++ # If we are not building for the x86_sse2 toolchain, we actually want to build
++ # the "x87" backend instead.
++ if (current_toolchain != "//build/toolchain/linux:x86_sse2") {
++ v8_current_cpu = "x87"
++ }
++}
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/build/toolchain/linux/BUILD.gn 2017-06-10 02:09:47.874494730 +0200
+@@ -78,6 +78,26 @@
+ }
+ }
+
++gcc_toolchain("x86_sse2") {
++ cc = "gcc"
++ cxx = "g++"
++
++ readelf = "readelf"
++ nm = "nm"
++ ar = "ar"
++ ld = cxx
++
++ extra_cflags = "-msse2 -mfpmath=sse"
++ extra_cxxflags = "-msse2 -mfpmath=sse"
++ shlib_subdir = "lib/sse2"
++
++ toolchain_args = {
++ current_cpu = "x86"
++ current_os = "linux"
++ is_clang = false
++ }
++}
++
+ clang_toolchain("clang_x64") {
+ toolchain_args = {
+ current_cpu = "x64"
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/cc/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/cc/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/cc/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/cc/BUILD.gn 2017-06-08 23:12:50.719511297 +0200
+@@ -567,13 +567,6 @@
+ "trees/tree_synchronizer.h",
+ ]
+
+- if (current_cpu == "x86" || current_cpu == "x64") {
+- sources += [
+- "raster/texture_compressor_etc1_sse.cc",
+- "raster/texture_compressor_etc1_sse.h",
+- ]
+- }
+-
+ configs += [ "//build/config:precompiled_headers" ]
+
+ public_deps = [
+@@ -583,6 +576,7 @@
+ deps = [
+ "//base",
+ "//base/third_party/dynamic_annotations",
++ "//cc:cc_opts",
+ "//cc/proto",
+ "//cc/surfaces:surface_id",
+ "//gpu",
+@@ -612,6 +606,36 @@
+ }
+ }
+
++source_set("cc_opts") {
++ public_deps = [
++ "//cc:cc_opts_sse",
++ ]
++}
++
++source_set("cc_opts_sse") {
++ if (current_cpu == "x86" || current_cpu == "x64") {
++ deps = [
++ "//base",
++ ]
++
++ defines = [ "CC_IMPLEMENTATION=1" ]
++
++ if (!is_debug && (is_win || is_android)) {
++ configs -= [ "//build/config/compiler:optimize" ]
++ configs += [ "//build/config/compiler:optimize_max" ]
++ }
++
++ sources = [
++ "raster/texture_compressor.h",
++ "raster/texture_compressor_etc1.h",
++ "raster/texture_compressor_etc1_sse.cc",
++ "raster/texture_compressor_etc1_sse.h",
++ ]
++
++ cflags = [ "-msse2" ]
++ }
++}
++
+ static_library("test_support") {
+ testonly = true
+ sources = [
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/chrome/renderer/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/chrome/renderer/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/chrome/renderer/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/chrome/renderer/BUILD.gn 2017-06-10 02:12:19.472150369 +0200
+@@ -136,6 +136,12 @@
+ "//v8:v8",
+ ]
+
++ if (current_cpu == "x86") {
++ deps += [
++ "//v8:v8(//build/toolchain/linux:x86_sse2)",
++ ]
++ }
++
+ configs += [ "//build/config/compiler:wexit_time_destructors" ]
+
+ if (enable_nacl) {
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/BUILD.gn 2017-06-08 22:49:57.484256877 +0200
+@@ -336,13 +336,13 @@
+ }
+
+ if (current_cpu == "x86" || current_cpu == "x64") {
+- sources += [
+- "simd/convert_rgb_to_yuv_sse2.cc",
+- "simd/convert_rgb_to_yuv_ssse3.cc",
+- "simd/convert_yuv_to_rgb_x86.cc",
+- "simd/filter_yuv_sse2.cc",
++ sources += [ "simd/convert_yuv_to_rgb_x86.cc" ]
++ deps += [
++ ":media_yasm",
++ ":media_mmx",
++ ":media_sse",
++ ":media_sse2",
+ ]
+- deps += [ ":media_yasm" ]
+ }
+
+ if (is_linux || is_win) {
+@@ -539,10 +539,47 @@
+ }
+
+ if (current_cpu == "x86" || current_cpu == "x64") {
++ source_set("media_mmx") {
++ sources = [ "simd/filter_yuv_mmx.cc" ]
++ configs += [ "//media:media_config" ]
++ if (!is_win) {
++ cflags = [ "-mmmx" ]
++ }
++ }
++
++ source_set("media_sse") {
++ sources = [
++ "simd/sinc_resampler_sse.cc",
++ ]
++ configs += [
++ "//media:media_config",
++ "//media:media_implementation",
++ ]
++ if (!is_win) {
++ cflags = [ "-msse" ]
++ }
++ }
++
++ source_set("media_sse2") {
++ sources = [
++ "simd/convert_rgb_to_yuv_sse2.cc",
++ "simd/convert_rgb_to_yuv_ssse3.cc",
++ "simd/filter_yuv_sse2.cc",
++ ]
++ configs += [
++ "//media:media_config",
++ "//media:media_implementation",
++ ]
++ if (!is_win) {
++ cflags = [ "-msse2" ]
++ }
++ }
++
+ import("//third_party/yasm/yasm_assemble.gni")
+ yasm_assemble("media_yasm") {
+ sources = [
+ "simd/convert_rgb_to_yuv_ssse3.asm",
++ "simd/convert_yuv_to_rgb_mmx.asm",
+ "simd/convert_yuv_to_rgb_sse.asm",
+ "simd/convert_yuva_to_argb_mmx.asm",
+ "simd/empty_register_state_mmx.asm",
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/media.cc qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/media.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/media.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/media.cc 2017-06-08 22:49:57.484256877 +0200
+@@ -10,6 +10,8 @@
+ #include "base/metrics/field_trial.h"
+ #include "base/trace_event/trace_event.h"
+ #include "media/base/media_switches.h"
++#include "media/base/sinc_resampler.h"
++#include "media/base/vector_math.h"
+ #include "media/base/yuv_convert.h"
+
+ #if defined(OS_ANDROID)
+@@ -40,6 +42,8 @@
+ TRACE_EVENT_WARMUP_CATEGORY("media");
+
+ // Perform initialization of libraries which require runtime CPU detection.
++ vector_math::Initialize();
++ SincResampler::InitializeCPUSpecificFeatures();
+ InitializeCPUSpecificYUVConversions();
+
+ #if !defined(MEDIA_DISABLE_FFMPEG)
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h 2017-06-08 22:49:57.643254478 +0200
+@@ -65,6 +65,17 @@
+ int rgbstride,
+ YUVType yuv_type);
+
++MEDIA_EXPORT void ConvertYUVToRGB32_MMX(const uint8_t* yplane,
++ const uint8_t* uplane,
++ const uint8_t* vplane,
++ uint8_t* rgbframe,
++ int width,
++ int height,
++ int ystride,
++ int uvstride,
++ int rgbstride,
++ YUVType yuv_type);
++
+ MEDIA_EXPORT void ConvertYUVAToARGB_MMX(const uint8_t* yplane,
+ const uint8_t* uplane,
+ const uint8_t* vplane,
+@@ -124,6 +135,13 @@
+ ptrdiff_t width,
+ const int16_t* convert_table);
+
++MEDIA_EXPORT void ConvertYUVToRGB32Row_MMX(const uint8_t* yplane,
++ const uint8_t* uplane,
++ const uint8_t* vplane,
++ uint8_t* rgbframe,
++ ptrdiff_t width,
++ const int16_t* convert_table);
++
+ MEDIA_EXPORT void ConvertYUVToRGB32Row_SSE(const uint8_t* yplane,
+ const uint8_t* uplane,
+ const uint8_t* vplane,
+@@ -131,6 +149,14 @@
+ ptrdiff_t width,
+ const int16_t* convert_table);
+
++MEDIA_EXPORT void ScaleYUVToRGB32Row_MMX(const uint8_t* y_buf,
++ const uint8_t* u_buf,
++ const uint8_t* v_buf,
++ uint8_t* rgb_buf,
++ ptrdiff_t width,
++ ptrdiff_t source_dx,
++ const int16_t* convert_table);
++
+ MEDIA_EXPORT void ScaleYUVToRGB32Row_SSE(const uint8_t* y_buf,
+ const uint8_t* u_buf,
+ const uint8_t* v_buf,
+@@ -147,6 +173,14 @@
+ ptrdiff_t source_dx,
+ const int16_t* convert_table);
+
++MEDIA_EXPORT void LinearScaleYUVToRGB32Row_MMX(const uint8_t* y_buf,
++ const uint8_t* u_buf,
++ const uint8_t* v_buf,
++ uint8_t* rgb_buf,
++ ptrdiff_t width,
++ ptrdiff_t source_dx,
++ const int16_t* convert_table);
++
+ MEDIA_EXPORT void LinearScaleYUVToRGB32Row_SSE(const uint8_t* y_buf,
+ const uint8_t* u_buf,
+ const uint8_t* v_buf,
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm 2017-06-08 22:49:57.698253649 +0200
+@@ -0,0 +1,23 @@
++; Copyright (c) 2011 The Chromium Authors. All rights reserved.
++; Use of this source code is governed by a BSD-style license that can be
++; found in the LICENSE file.
++
++%include "third_party/x86inc/x86inc.asm"
++
++;
++; This file uses MMX instructions.
++;
++ SECTION_TEXT
++ CPU MMX
++
++; Use movq to save the output.
++%define MOVQ movq
++
++; extern "C" void ConvertYUVToRGB32Row_MMX(const uint8* y_buf,
++; const uint8* u_buf,
++; const uint8* v_buf,
++; uint8* rgb_buf,
++; ptrdiff_t width,
++; const int16* convert_table);
++%define SYMBOL ConvertYUVToRGB32Row_MMX
++%include "convert_yuv_to_rgb_mmx.inc"
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc 2017-06-08 22:49:57.699253634 +0200
+@@ -47,6 +47,34 @@
+ EmptyRegisterState();
+ }
+
++void ConvertYUVToRGB32_MMX(const uint8_t* yplane,
++ const uint8_t* uplane,
++ const uint8_t* vplane,
++ uint8_t* rgbframe,
++ int width,
++ int height,
++ int ystride,
++ int uvstride,
++ int rgbstride,
++ YUVType yuv_type) {
++ unsigned int y_shift = GetVerticalShift(yuv_type);
++ for (int y = 0; y < height; ++y) {
++ uint8_t* rgb_row = rgbframe + y * rgbstride;
++ const uint8_t* y_ptr = yplane + y * ystride;
++ const uint8_t* u_ptr = uplane + (y >> y_shift) * uvstride;
++ const uint8_t* v_ptr = vplane + (y >> y_shift) * uvstride;
++
++ ConvertYUVToRGB32Row_MMX(y_ptr,
++ u_ptr,
++ v_ptr,
++ rgb_row,
++ width,
++ GetLookupTable(yuv_type));
++ }
++
++ EmptyRegisterState();
++}
++
+ void ConvertYUVToRGB32_SSE(const uint8_t* yplane,
+ const uint8_t* uplane,
+ const uint8_t* vplane,
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/simd/filter_yuv.h qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/simd/filter_yuv.h
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/simd/filter_yuv.h 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/simd/filter_yuv.h 2017-06-08 22:49:57.699253634 +0200
+@@ -20,6 +20,12 @@
+ int source_width,
+ uint8_t source_y_fraction);
+
++MEDIA_EXPORT void FilterYUVRows_MMX(uint8_t* ybuf,
++ const uint8_t* y0_ptr,
++ const uint8_t* y1_ptr,
++ int source_width,
++ uint8_t source_y_fraction);
++
+ MEDIA_EXPORT void FilterYUVRows_SSE2(uint8_t* ybuf,
+ const uint8_t* y0_ptr,
+ const uint8_t* y1_ptr,
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc 2017-06-08 22:49:57.699253634 +0200
+@@ -0,0 +1,79 @@
++// Copyright (c) 2011 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#if defined(_MSC_VER)
++#include <intrin.h>
++#else
++#include <mmintrin.h>
++#endif
++
++#include "build/build_config.h"
++#include "media/base/simd/filter_yuv.h"
++
++namespace media {
++
++#if defined(COMPILER_MSVC)
++// Warning 4799 is about calling emms before the function exits.
++// We calls emms in a frame level so suppress this warning.
++#pragma warning(push)
++#pragma warning(disable: 4799)
++#endif
++
++void FilterYUVRows_MMX(uint8_t* dest,
++ const uint8_t* src0,
++ const uint8_t* src1,
++ int width,
++ uint8_t fraction) {
++ int pixel = 0;
++
++ // Process the unaligned bytes first.
++ int unaligned_width =
++ (8 - (reinterpret_cast<uintptr_t>(dest) & 7)) & 7;
++ while (pixel < width && pixel < unaligned_width) {
++ dest[pixel] = (src0[pixel] * (256 - fraction) +
++ src1[pixel] * fraction) >> 8;
++ ++pixel;
++ }
++
++ __m64 zero = _mm_setzero_si64();
++ __m64 src1_fraction = _mm_set1_pi16(fraction);
++ __m64 src0_fraction = _mm_set1_pi16(256 - fraction);
++ const __m64* src0_64 = reinterpret_cast<const __m64*>(src0 + pixel);
++ const __m64* src1_64 = reinterpret_cast<const __m64*>(src1 + pixel);
++ __m64* dest64 = reinterpret_cast<__m64*>(dest + pixel);
++ __m64* end64 = reinterpret_cast<__m64*>(
++ reinterpret_cast<uintptr_t>(dest + width) & ~7);
++
++ while (dest64 < end64) {
++ __m64 src0 = *src0_64++;
++ __m64 src1 = *src1_64++;
++ __m64 src2 = _mm_unpackhi_pi8(src0, zero);
++ __m64 src3 = _mm_unpackhi_pi8(src1, zero);
++ src0 = _mm_unpacklo_pi8(src0, zero);
++ src1 = _mm_unpacklo_pi8(src1, zero);
++ src0 = _mm_mullo_pi16(src0, src0_fraction);
++ src1 = _mm_mullo_pi16(src1, src1_fraction);
++ src2 = _mm_mullo_pi16(src2, src0_fraction);
++ src3 = _mm_mullo_pi16(src3, src1_fraction);
++ src0 = _mm_add_pi16(src0, src1);
++ src2 = _mm_add_pi16(src2, src3);
++ src0 = _mm_srli_pi16(src0, 8);
++ src2 = _mm_srli_pi16(src2, 8);
++ src0 = _mm_packs_pu16(src0, src2);
++ *dest64++ = src0;
++ pixel += 8;
++ }
++
++ while (pixel < width) {
++ dest[pixel] = (src0[pixel] * (256 - fraction) +
++ src1[pixel] * fraction) >> 8;
++ ++pixel;
++ }
++}
++
++#if defined(COMPILER_MSVC)
++#pragma warning(pop)
++#endif
++
++} // namespace media
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc 2017-06-08 22:49:57.699253634 +0200
+@@ -0,0 +1,50 @@
++// Copyright 2013 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "media/base/sinc_resampler.h"
++
++#include <xmmintrin.h>
++
++namespace media {
++
++float SincResampler::Convolve_SSE(const float* input_ptr, const float* k1,
++ const float* k2,
++ double kernel_interpolation_factor) {
++ __m128 m_input;
++ __m128 m_sums1 = _mm_setzero_ps();
++ __m128 m_sums2 = _mm_setzero_ps();
++
++ // Based on |input_ptr| alignment, we need to use loadu or load. Unrolling
++ // these loops hurt performance in local testing.
++ if (reinterpret_cast<uintptr_t>(input_ptr) & 0x0F) {
++ for (int i = 0; i < kKernelSize; i += 4) {
++ m_input = _mm_loadu_ps(input_ptr + i);
++ m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
++ m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
++ }
++ } else {
++ for (int i = 0; i < kKernelSize; i += 4) {
++ m_input = _mm_load_ps(input_ptr + i);
++ m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
++ m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
++ }
++ }
++
++ // Linearly interpolate the two "convolutions".
++ m_sums1 = _mm_mul_ps(m_sums1, _mm_set_ps1(
++ static_cast<float>(1.0 - kernel_interpolation_factor)));
++ m_sums2 = _mm_mul_ps(m_sums2, _mm_set_ps1(
++ static_cast<float>(kernel_interpolation_factor)));
++ m_sums1 = _mm_add_ps(m_sums1, m_sums2);
++
++ // Sum components together.
++ float result;
++ m_sums2 = _mm_add_ps(_mm_movehl_ps(m_sums1, m_sums1), m_sums1);
++ _mm_store_ss(&result, _mm_add_ss(m_sums2, _mm_shuffle_ps(
++ m_sums2, m_sums2, 1)));
++
++ return result;
++}
++
++} // namespace media
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc 2017-06-08 22:49:57.700253619 +0200
+@@ -0,0 +1,118 @@
++// Copyright 2013 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "media/base/vector_math_testing.h"
++
++#include <algorithm>
++
++#include <xmmintrin.h> // NOLINT
++
++namespace media {
++namespace vector_math {
++
++void FMUL_SSE(const float src[], float scale, int len, float dest[]) {
++ const int rem = len % 4;
++ const int last_index = len - rem;
++ __m128 m_scale = _mm_set_ps1(scale);
++ for (int i = 0; i < last_index; i += 4)
++ _mm_store_ps(dest + i, _mm_mul_ps(_mm_load_ps(src + i), m_scale));
++
++ // Handle any remaining values that wouldn't fit in an SSE pass.
++ for (int i = last_index; i < len; ++i)
++ dest[i] = src[i] * scale;
++}
++
++void FMAC_SSE(const float src[], float scale, int len, float dest[]) {
++ const int rem = len % 4;
++ const int last_index = len - rem;
++ __m128 m_scale = _mm_set_ps1(scale);
++ for (int i = 0; i < last_index; i += 4) {
++ _mm_store_ps(dest + i, _mm_add_ps(_mm_load_ps(dest + i),
++ _mm_mul_ps(_mm_load_ps(src + i), m_scale)));
++ }
++
++ // Handle any remaining values that wouldn't fit in an SSE pass.
++ for (int i = last_index; i < len; ++i)
++ dest[i] += src[i] * scale;
++}
++
++// Convenience macro to extract float 0 through 3 from the vector |a|. This is
++// needed because compilers other than clang don't support access via
++// operator[]().
++#define EXTRACT_FLOAT(a, i) \
++ (i == 0 ? \
++ _mm_cvtss_f32(a) : \
++ _mm_cvtss_f32(_mm_shuffle_ps(a, a, i)))
++
++std::pair<float, float> EWMAAndMaxPower_SSE(
++ float initial_value, const float src[], int len, float smoothing_factor) {
++ // When the recurrence is unrolled, we see that we can split it into 4
++ // separate lanes of evaluation:
++ //
++ // y[n] = a(S[n]^2) + (1-a)(y[n-1])
++ // = a(S[n]^2) + (1-a)^1(aS[n-1]^2) + (1-a)^2(aS[n-2]^2) + ...
++ // = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
++ //
++ // where z[n] = a(S[n]^2) + (1-a)^4(z[n-4]) + (1-a)^8(z[n-8]) + ...
++ //
++ // Thus, the strategy here is to compute z[n], z[n-1], z[n-2], and z[n-3] in
++ // each of the 4 lanes, and then combine them to give y[n].
++
++ const int rem = len % 4;
++ const int last_index = len - rem;
++
++ const __m128 smoothing_factor_x4 = _mm_set_ps1(smoothing_factor);
++ const float weight_prev = 1.0f - smoothing_factor;
++ const __m128 weight_prev_x4 = _mm_set_ps1(weight_prev);
++ const __m128 weight_prev_squared_x4 =
++ _mm_mul_ps(weight_prev_x4, weight_prev_x4);
++ const __m128 weight_prev_4th_x4 =
++ _mm_mul_ps(weight_prev_squared_x4, weight_prev_squared_x4);
++
++ // Compute z[n], z[n-1], z[n-2], and z[n-3] in parallel in lanes 3, 2, 1 and
++ // 0, respectively.
++ __m128 max_x4 = _mm_setzero_ps();
++ __m128 ewma_x4 = _mm_setr_ps(0.0f, 0.0f, 0.0f, initial_value);
++ int i;
++ for (i = 0; i < last_index; i += 4) {
++ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_4th_x4);
++ const __m128 sample_x4 = _mm_load_ps(src + i);
++ const __m128 sample_squared_x4 = _mm_mul_ps(sample_x4, sample_x4);
++ max_x4 = _mm_max_ps(max_x4, sample_squared_x4);
++ // Note: The compiler optimizes this to a single multiply-and-accumulate
++ // instruction:
++ ewma_x4 = _mm_add_ps(ewma_x4,
++ _mm_mul_ps(sample_squared_x4, smoothing_factor_x4));
++ }
++
++ // y[n] = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
++ float ewma = EXTRACT_FLOAT(ewma_x4, 3);
++ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
++ ewma += EXTRACT_FLOAT(ewma_x4, 2);
++ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
++ ewma += EXTRACT_FLOAT(ewma_x4, 1);
++ ewma_x4 = _mm_mul_ss(ewma_x4, weight_prev_x4);
++ ewma += EXTRACT_FLOAT(ewma_x4, 0);
++
++ // Fold the maximums together to get the overall maximum.
++ max_x4 = _mm_max_ps(max_x4,
++ _mm_shuffle_ps(max_x4, max_x4, _MM_SHUFFLE(3, 3, 1, 1)));
++ max_x4 = _mm_max_ss(max_x4, _mm_shuffle_ps(max_x4, max_x4, 2));
++
++ std::pair<float, float> result(ewma, EXTRACT_FLOAT(max_x4, 0));
++
++ // Handle remaining values at the end of |src|.
++ for (; i < len; ++i) {
++ result.first *= weight_prev;
++ const float sample = src[i];
++ const float sample_squared = sample * sample;
++ result.first += sample_squared * smoothing_factor;
++ result.second = std::max(result.second, sample_squared);
++ }
++
++ return result;
++}
++
++} // namespace vector_math
++} // namespace media
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/sinc_resampler.cc qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/sinc_resampler.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler.cc 2017-06-08 22:49:57.700253619 +0200
+@@ -81,17 +81,12 @@
+ #include <cmath>
+ #include <limits>
+
++#include "base/cpu.h"
+ #include "base/logging.h"
+ #include "build/build_config.h"
+
+-#if defined(ARCH_CPU_X86_FAMILY)
+-#include <xmmintrin.h>
+-#define CONVOLVE_FUNC Convolve_SSE
+-#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
++#if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
+ #include <arm_neon.h>
+-#define CONVOLVE_FUNC Convolve_NEON
+-#else
+-#define CONVOLVE_FUNC Convolve_C
+ #endif
+
+ namespace media {
+@@ -112,10 +107,41 @@
+ return sinc_scale_factor;
+ }
+
++#undef CONVOLVE_FUNC
++
+ static int CalculateChunkSize(int block_size_, double io_ratio) {
+ return block_size_ / io_ratio;
+ }
+
++// If we know the minimum architecture at compile time, avoid CPU detection.
++// Force NaCl code to use C routines since (at present) nothing there uses these
++// methods and plumbing the -msse built library is non-trivial.
++#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
++#if defined(__SSE__)
++#define CONVOLVE_FUNC Convolve_SSE
++void SincResampler::InitializeCPUSpecificFeatures() {}
++#else
++// X86 CPU detection required. Functions will be set by
++// InitializeCPUSpecificFeatures().
++#define CONVOLVE_FUNC g_convolve_proc_
++
++typedef float (*ConvolveProc)(const float*, const float*, const float*, double);
++static ConvolveProc g_convolve_proc_ = NULL;
++
++void SincResampler::InitializeCPUSpecificFeatures() {
++ CHECK(!g_convolve_proc_);
++ g_convolve_proc_ = base::CPU().has_sse() ? Convolve_SSE : Convolve_C;
++}
++#endif
++#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
++#define CONVOLVE_FUNC Convolve_NEON
++void SincResampler::InitializeCPUSpecificFeatures() {}
++#else
++// Unknown architecture.
++#define CONVOLVE_FUNC Convolve_C
++void SincResampler::InitializeCPUSpecificFeatures() {}
++#endif
++
+ SincResampler::SincResampler(double io_sample_rate_ratio,
+ int request_frames,
+ const ReadCB& read_cb)
+@@ -328,46 +354,7 @@
+ kernel_interpolation_factor * sum2);
+ }
+
+-#if defined(ARCH_CPU_X86_FAMILY)
+-float SincResampler::Convolve_SSE(const float* input_ptr, const float* k1,
+- const float* k2,
+- double kernel_interpolation_factor) {
+- __m128 m_input;
+- __m128 m_sums1 = _mm_setzero_ps();
+- __m128 m_sums2 = _mm_setzero_ps();
+-
+- // Based on |input_ptr| alignment, we need to use loadu or load. Unrolling
+- // these loops hurt performance in local testing.
+- if (reinterpret_cast<uintptr_t>(input_ptr) & 0x0F) {
+- for (int i = 0; i < kKernelSize; i += 4) {
+- m_input = _mm_loadu_ps(input_ptr + i);
+- m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
+- m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
+- }
+- } else {
+- for (int i = 0; i < kKernelSize; i += 4) {
+- m_input = _mm_load_ps(input_ptr + i);
+- m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
+- m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
+- }
+- }
+-
+- // Linearly interpolate the two "convolutions".
+- m_sums1 = _mm_mul_ps(m_sums1, _mm_set_ps1(
+- static_cast<float>(1.0 - kernel_interpolation_factor)));
+- m_sums2 = _mm_mul_ps(m_sums2, _mm_set_ps1(
+- static_cast<float>(kernel_interpolation_factor)));
+- m_sums1 = _mm_add_ps(m_sums1, m_sums2);
+-
+- // Sum components together.
+- float result;
+- m_sums2 = _mm_add_ps(_mm_movehl_ps(m_sums1, m_sums1), m_sums1);
+- _mm_store_ss(&result, _mm_add_ss(m_sums2, _mm_shuffle_ps(
+- m_sums2, m_sums2, 1)));
+-
+- return result;
+-}
+-#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
++#if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
+ float SincResampler::Convolve_NEON(const float* input_ptr, const float* k1,
+ const float* k2,
+ double kernel_interpolation_factor) {
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/sinc_resampler.h qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler.h
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/sinc_resampler.h 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler.h 2017-06-08 22:49:57.700253619 +0200
+@@ -36,6 +36,10 @@
+ kKernelStorageSize = kKernelSize * (kKernelOffsetCount + 1),
+ };
+
++ // Selects runtime specific CPU features like SSE. Must be called before
++ // using SincResampler.
++ static void InitializeCPUSpecificFeatures();
++
+ // Callback type for providing more data into the resampler. Expects |frames|
+ // of data to be rendered into |destination|; zero padded if not enough frames
+ // are available to satisfy the request.
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc 2017-06-08 22:49:57.701253604 +0200
+@@ -4,6 +4,7 @@
+
+ #include "base/bind.h"
+ #include "base/bind_helpers.h"
++#include "base/cpu.h"
+ #include "base/time/time.h"
+ #include "build/build_config.h"
+ #include "media/base/sinc_resampler.h"
+@@ -61,6 +62,9 @@
+ &resampler, SincResampler::Convolve_C, true, "unoptimized_aligned");
+
+ #if defined(CONVOLVE_FUNC)
++#if defined(ARCH_CPU_X86_FAMILY)
++ ASSERT_TRUE(base::CPU().has_sse());
++#endif
+ RunConvolveBenchmark(
+ &resampler, SincResampler::CONVOLVE_FUNC, true, "optimized_aligned");
+ RunConvolveBenchmark(
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc 2017-06-08 22:49:57.701253604 +0200
+@@ -10,6 +10,7 @@
+
+ #include "base/bind.h"
+ #include "base/bind_helpers.h"
++#include "base/cpu.h"
+ #include "base/macros.h"
+ #include "base/strings/string_number_conversions.h"
+ #include "base/time/time.h"
+@@ -166,6 +167,10 @@
+ static const double kKernelInterpolationFactor = 0.5;
+
+ TEST(SincResamplerTest, Convolve) {
++#if defined(ARCH_CPU_X86_FAMILY)
++ ASSERT_TRUE(base::CPU().has_sse());
++#endif
++
+ // Initialize a dummy resampler.
+ MockSource mock_source;
+ SincResampler resampler(
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/vector_math.cc qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/vector_math.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/vector_math.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/vector_math.cc 2017-06-08 22:49:57.701253604 +0200
+@@ -7,12 +7,17 @@
+
+ #include <algorithm>
+
++#include "base/cpu.h"
+ #include "base/logging.h"
+ #include "build/build_config.h"
+
++namespace media {
++namespace vector_math {
++
++// If we know the minimum architecture at compile time, avoid CPU detection.
+ // NaCl does not allow intrinsics.
+ #if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
+-#include <xmmintrin.h>
++#if defined(__SSE__)
+ // Don't use custom SSE versions where the auto-vectorized C version performs
+ // better, which is anywhere clang is used.
+ #if !defined(__clang__)
+@@ -23,20 +28,52 @@
+ #define FMUL_FUNC FMUL_C
+ #endif
+ #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
++void Initialize() {}
++#else
++// X86 CPU detection required. Functions will be set by Initialize().
++#if !defined(__clang__)
++#define FMAC_FUNC g_fmac_proc_
++#define FMUL_FUNC g_fmul_proc_
++#else
++#define FMAC_FUNC FMAC_C
++#define FMUL_FUNC FMUL_C
++#endif
++#define EWMAAndMaxPower_FUNC g_ewma_power_proc_
++
++#if !defined(__clang__)
++typedef void (*MathProc)(const float src[], float scale, int len, float dest[]);
++static MathProc g_fmac_proc_ = NULL;
++static MathProc g_fmul_proc_ = NULL;
++#endif
++typedef std::pair<float, float> (*EWMAAndMaxPowerProc)(
++ float initial_value, const float src[], int len, float smoothing_factor);
++static EWMAAndMaxPowerProc g_ewma_power_proc_ = NULL;
++
++void Initialize() {
++ CHECK(!g_fmac_proc_);
++ CHECK(!g_fmul_proc_);
++ CHECK(!g_ewma_power_proc_);
++ const bool kUseSSE = base::CPU().has_sse();
++#if !defined(__clang__)
++ g_fmac_proc_ = kUseSSE ? FMAC_SSE : FMAC_C;
++ g_fmul_proc_ = kUseSSE ? FMUL_SSE : FMUL_C;
++#endif
++ g_ewma_power_proc_ = kUseSSE ? EWMAAndMaxPower_SSE : EWMAAndMaxPower_C;
++}
++#endif
+ #elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
+ #include <arm_neon.h>
+ #define FMAC_FUNC FMAC_NEON
+ #define FMUL_FUNC FMUL_NEON
+ #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
++void Initialize() {}
+ #else
+ #define FMAC_FUNC FMAC_C
+ #define FMUL_FUNC FMUL_C
+ #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_C
++void Initialize() {}
+ #endif
+
+-namespace media {
+-namespace vector_math {
+-
+ void FMAC(const float src[], float scale, int len, float dest[]) {
+ // Ensure |src| and |dest| are 16-byte aligned.
+ DCHECK_EQ(0u, reinterpret_cast<uintptr_t>(src) & (kRequiredAlignment - 1));
+@@ -89,111 +126,6 @@
+ return result;
+ }
+
+-#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
+-void FMUL_SSE(const float src[], float scale, int len, float dest[]) {
+- const int rem = len % 4;
+- const int last_index = len - rem;
+- __m128 m_scale = _mm_set_ps1(scale);
+- for (int i = 0; i < last_index; i += 4)
+- _mm_store_ps(dest + i, _mm_mul_ps(_mm_load_ps(src + i), m_scale));
+-
+- // Handle any remaining values that wouldn't fit in an SSE pass.
+- for (int i = last_index; i < len; ++i)
+- dest[i] = src[i] * scale;
+-}
+-
+-void FMAC_SSE(const float src[], float scale, int len, float dest[]) {
+- const int rem = len % 4;
+- const int last_index = len - rem;
+- __m128 m_scale = _mm_set_ps1(scale);
+- for (int i = 0; i < last_index; i += 4) {
+- _mm_store_ps(dest + i, _mm_add_ps(_mm_load_ps(dest + i),
+- _mm_mul_ps(_mm_load_ps(src + i), m_scale)));
+- }
+-
+- // Handle any remaining values that wouldn't fit in an SSE pass.
+- for (int i = last_index; i < len; ++i)
+- dest[i] += src[i] * scale;
+-}
+-
+-// Convenience macro to extract float 0 through 3 from the vector |a|. This is
+-// needed because compilers other than clang don't support access via
+-// operator[]().
+-#define EXTRACT_FLOAT(a, i) \
+- (i == 0 ? \
+- _mm_cvtss_f32(a) : \
+- _mm_cvtss_f32(_mm_shuffle_ps(a, a, i)))
+-
+-std::pair<float, float> EWMAAndMaxPower_SSE(
+- float initial_value, const float src[], int len, float smoothing_factor) {
+- // When the recurrence is unrolled, we see that we can split it into 4
+- // separate lanes of evaluation:
+- //
+- // y[n] = a(S[n]^2) + (1-a)(y[n-1])
+- // = a(S[n]^2) + (1-a)^1(aS[n-1]^2) + (1-a)^2(aS[n-2]^2) + ...
+- // = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
+- //
+- // where z[n] = a(S[n]^2) + (1-a)^4(z[n-4]) + (1-a)^8(z[n-8]) + ...
+- //
+- // Thus, the strategy here is to compute z[n], z[n-1], z[n-2], and z[n-3] in
+- // each of the 4 lanes, and then combine them to give y[n].
+-
+- const int rem = len % 4;
+- const int last_index = len - rem;
+-
+- const __m128 smoothing_factor_x4 = _mm_set_ps1(smoothing_factor);
+- const float weight_prev = 1.0f - smoothing_factor;
+- const __m128 weight_prev_x4 = _mm_set_ps1(weight_prev);
+- const __m128 weight_prev_squared_x4 =
+- _mm_mul_ps(weight_prev_x4, weight_prev_x4);
+- const __m128 weight_prev_4th_x4 =
+- _mm_mul_ps(weight_prev_squared_x4, weight_prev_squared_x4);
+-
+- // Compute z[n], z[n-1], z[n-2], and z[n-3] in parallel in lanes 3, 2, 1 and
+- // 0, respectively.
+- __m128 max_x4 = _mm_setzero_ps();
+- __m128 ewma_x4 = _mm_setr_ps(0.0f, 0.0f, 0.0f, initial_value);
+- int i;
+- for (i = 0; i < last_index; i += 4) {
+- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_4th_x4);
+- const __m128 sample_x4 = _mm_load_ps(src + i);
+- const __m128 sample_squared_x4 = _mm_mul_ps(sample_x4, sample_x4);
+- max_x4 = _mm_max_ps(max_x4, sample_squared_x4);
+- // Note: The compiler optimizes this to a single multiply-and-accumulate
+- // instruction:
+- ewma_x4 = _mm_add_ps(ewma_x4,
+- _mm_mul_ps(sample_squared_x4, smoothing_factor_x4));
+- }
+-
+- // y[n] = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
+- float ewma = EXTRACT_FLOAT(ewma_x4, 3);
+- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
+- ewma += EXTRACT_FLOAT(ewma_x4, 2);
+- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
+- ewma += EXTRACT_FLOAT(ewma_x4, 1);
+- ewma_x4 = _mm_mul_ss(ewma_x4, weight_prev_x4);
+- ewma += EXTRACT_FLOAT(ewma_x4, 0);
+-
+- // Fold the maximums together to get the overall maximum.
+- max_x4 = _mm_max_ps(max_x4,
+- _mm_shuffle_ps(max_x4, max_x4, _MM_SHUFFLE(3, 3, 1, 1)));
+- max_x4 = _mm_max_ss(max_x4, _mm_shuffle_ps(max_x4, max_x4, 2));
+-
+- std::pair<float, float> result(ewma, EXTRACT_FLOAT(max_x4, 0));
+-
+- // Handle remaining values at the end of |src|.
+- for (; i < len; ++i) {
+- result.first *= weight_prev;
+- const float sample = src[i];
+- const float sample_squared = sample * sample;
+- result.first += sample_squared * smoothing_factor;
+- result.second = std::max(result.second, sample_squared);
+- }
+-
+- return result;
+-}
+-#endif
+-
+ #if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
+ void FMAC_NEON(const float src[], float scale, int len, float dest[]) {
+ const int rem = len % 4;
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/vector_math.h qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/vector_math.h
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/vector_math.h 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/vector_math.h 2017-06-08 22:49:57.701253604 +0200
+@@ -15,6 +15,11 @@
+ // Required alignment for inputs and outputs to all vector math functions
+ enum { kRequiredAlignment = 16 };
+
++// Selects runtime specific optimizations such as SSE. Must be called prior to
++// calling FMAC() or FMUL(). Called during media library initialization; most
++// users should never have to call this.
++MEDIA_EXPORT void Initialize();
++
+ // Multiply each element of |src| (up to |len|) by |scale| and add to |dest|.
+ // |src| and |dest| must be aligned by kRequiredAlignment.
+ MEDIA_EXPORT void FMAC(const float src[], float scale, int len, float dest[]);
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/vector_math_perftest.cc qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_perftest.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/vector_math_perftest.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_perftest.cc 2017-06-08 22:49:57.702253589 +0200
+@@ -5,6 +5,7 @@
+ #include <memory>
+
+ #include "base/macros.h"
++#include "base/cpu.h"
+ #include "base/memory/aligned_memory.h"
+ #include "base/time/time.h"
+ #include "build/build_config.h"
+@@ -82,15 +83,11 @@
+ DISALLOW_COPY_AND_ASSIGN(VectorMathPerfTest);
+ };
+
+-// Define platform dependent function names for SIMD optimized methods.
++// Define platform independent function name for FMAC* perf tests.
+ #if defined(ARCH_CPU_X86_FAMILY)
+ #define FMAC_FUNC FMAC_SSE
+-#define FMUL_FUNC FMUL_SSE
+-#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
+ #elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
+ #define FMAC_FUNC FMAC_NEON
+-#define FMUL_FUNC FMUL_NEON
+-#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
+ #endif
+
+ // Benchmark for each optimized vector_math::FMAC() method.
+@@ -99,6 +96,9 @@
+ RunBenchmark(
+ vector_math::FMAC_C, true, "vector_math_fmac", "unoptimized");
+ #if defined(FMAC_FUNC)
++#if defined(ARCH_CPU_X86_FAMILY)
++ ASSERT_TRUE(base::CPU().has_sse());
++#endif
+ // Benchmark FMAC_FUNC() with unaligned size.
+ ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
+ sizeof(float)), 0U);
+@@ -112,12 +112,24 @@
+ #endif
+ }
+
++#undef FMAC_FUNC
++
++// Define platform independent function name for FMULBenchmark* tests.
++#if defined(ARCH_CPU_X86_FAMILY)
++#define FMUL_FUNC FMUL_SSE
++#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
++#define FMUL_FUNC FMUL_NEON
++#endif
++
+ // Benchmark for each optimized vector_math::FMUL() method.
+ TEST_F(VectorMathPerfTest, FMUL) {
+ // Benchmark FMUL_C().
+ RunBenchmark(
+ vector_math::FMUL_C, true, "vector_math_fmul", "unoptimized");
+ #if defined(FMUL_FUNC)
++#if defined(ARCH_CPU_X86_FAMILY)
++ ASSERT_TRUE(base::CPU().has_sse());
++#endif
+ // Benchmark FMUL_FUNC() with unaligned size.
+ ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
+ sizeof(float)), 0U);
+@@ -131,6 +143,14 @@
+ #endif
+ }
+
++#undef FMUL_FUNC
++
++#if defined(ARCH_CPU_X86_FAMILY)
++#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
++#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
++#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
++#endif
++
+ // Benchmark for each optimized vector_math::EWMAAndMaxPower() method.
+ TEST_F(VectorMathPerfTest, EWMAAndMaxPower) {
+ // Benchmark EWMAAndMaxPower_C().
+@@ -139,6 +159,9 @@
+ "vector_math_ewma_and_max_power",
+ "unoptimized");
+ #if defined(EWMAAndMaxPower_FUNC)
++#if defined(ARCH_CPU_X86_FAMILY)
++ ASSERT_TRUE(base::CPU().has_sse());
++#endif
+ // Benchmark EWMAAndMaxPower_FUNC() with unaligned size.
+ ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
+ sizeof(float)), 0U);
+@@ -156,4 +179,6 @@
+ #endif
+ }
+
++#undef EWMAAndMaxPower_FUNC
++
+ } // namespace media
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/vector_math_testing.h qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_testing.h
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/vector_math_testing.h 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_testing.h 2017-06-08 22:49:57.702253589 +0200
+@@ -19,7 +19,7 @@
+ MEDIA_EXPORT std::pair<float, float> EWMAAndMaxPower_C(
+ float initial_value, const float src[], int len, float smoothing_factor);
+
+-#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
++#if defined(ARCH_CPU_X86_FAMILY)
+ MEDIA_EXPORT void FMAC_SSE(const float src[], float scale, int len,
+ float dest[]);
+ MEDIA_EXPORT void FMUL_SSE(const float src[], float scale, int len,
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/vector_math_unittest.cc qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_unittest.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/vector_math_unittest.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_unittest.cc 2017-06-08 22:49:57.702253589 +0200
+@@ -9,6 +9,7 @@
+ #include <memory>
+
+ #include "base/macros.h"
++#include "base/cpu.h"
+ #include "base/memory/aligned_memory.h"
+ #include "base/strings/string_number_conversions.h"
+ #include "base/strings/stringize_macros.h"
+@@ -78,6 +79,7 @@
+
+ #if defined(ARCH_CPU_X86_FAMILY)
+ {
++ ASSERT_TRUE(base::CPU().has_sse());
+ SCOPED_TRACE("FMAC_SSE");
+ FillTestVectors(kInputFillValue, kOutputFillValue);
+ vector_math::FMAC_SSE(
+@@ -119,6 +121,7 @@
+
+ #if defined(ARCH_CPU_X86_FAMILY)
+ {
++ ASSERT_TRUE(base::CPU().has_sse());
+ SCOPED_TRACE("FMUL_SSE");
+ FillTestVectors(kInputFillValue, kOutputFillValue);
+ vector_math::FMUL_SSE(
+@@ -227,6 +230,7 @@
+
+ #if defined(ARCH_CPU_X86_FAMILY)
+ {
++ ASSERT_TRUE(base::CPU().has_sse());
+ SCOPED_TRACE("EWMAAndMaxPower_SSE");
+ const std::pair<float, float>& result = vector_math::EWMAAndMaxPower_SSE(
+ initial_value_, data_.get(), data_len_, smoothing_factor_);
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/yuv_convert.cc qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/yuv_convert.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert.cc 2017-06-08 22:49:57.703253573 +0200
+@@ -32,7 +32,7 @@
+ #include "media/base/simd/convert_yuv_to_rgb.h"
+ #include "media/base/simd/filter_yuv.h"
+
+-#if defined(ARCH_CPU_X86_FAMILY)
++#if defined(ARCH_CPU_X86_FAMILY) && defined(__MMX__)
+ #if defined(COMPILER_MSVC)
+ #include <intrin.h>
+ #else
+@@ -133,7 +133,7 @@
+
+ // Empty SIMD registers state after using them.
+ void EmptyRegisterStateStub() {}
+-#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
++#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE) && defined(__MMX__)
+ void EmptyRegisterStateIntrinsic() { _mm_empty(); }
+ #endif
+ typedef void (*EmptyRegisterStateProc)();
+@@ -247,34 +247,46 @@
+ // Assembly code confuses MemorySanitizer. Also not available in iOS builds.
+ #if defined(ARCH_CPU_X86_FAMILY) && !defined(MEMORY_SANITIZER) && \
+ !defined(OS_IOS)
+- g_convert_yuva_to_argb_proc_ = ConvertYUVAToARGB_MMX;
++ base::CPU cpu;
++ if (cpu.has_mmx()) {
++ g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_MMX;
++ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_MMX;
++ g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_MMX;
++ g_convert_yuva_to_argb_proc_ = ConvertYUVAToARGB_MMX;
++ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX;
+
+ #if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
+- g_empty_register_state_proc_ = EmptyRegisterStateIntrinsic;
++ g_filter_yuv_rows_proc_ = FilterYUVRows_MMX;
++#endif
++#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE) && defined(__MMX__)
++ g_empty_register_state_proc_ = EmptyRegisterStateIntrinsic;
+ #else
+- g_empty_register_state_proc_ = EmptyRegisterState_MMX;
++ g_empty_register_state_proc_ = EmptyRegisterState_MMX;
+ #endif
++ }
+
+- g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_SSE;
+- g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_SSE;
++ if (cpu.has_sse()) {
++ g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_SSE;
++ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE;
++ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_SSE;
++ g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_SSE;
++ }
+
+- g_filter_yuv_rows_proc_ = FilterYUVRows_SSE2;
+- g_convert_rgb32_to_yuv_proc_ = ConvertRGB32ToYUV_SSE2;
++ if (cpu.has_sse2()) {
++ g_filter_yuv_rows_proc_ = FilterYUVRows_SSE2;
++ g_convert_rgb32_to_yuv_proc_ = ConvertRGB32ToYUV_SSE2;
+
+ #if defined(ARCH_CPU_X86_64)
+- g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE2_X64;
++ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE2_X64;
+
+- // Technically this should be in the MMX section, but MSVC will optimize out
+- // the export of LinearScaleYUVToRGB32Row_MMX, which is required by the unit
+- // tests, if that decision can be made at compile time. Since all X64 CPUs
+- // have SSE2, we can hack around this by making the selection here.
+- g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX_X64;
+-#else
+- g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE;
+- g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_SSE;
++ // Technically this should be in the MMX section, but MSVC will optimize out
++ // the export of LinearScaleYUVToRGB32Row_MMX, which is required by the unit
++ // tests, if that decision can be made at compile time. Since all X64 CPUs
++ // have SSE2, we can hack around this by making the selection here.
++ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX_X64;
+ #endif
++ }
+
+- base::CPU cpu;
+ if (cpu.has_ssse3()) {
+ g_convert_rgb24_to_yuv_proc_ = &ConvertRGB24ToYUV_SSSE3;
+
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc 2017-06-08 22:49:57.703253573 +0200
+@@ -71,6 +71,29 @@
+ DISALLOW_COPY_AND_ASSIGN(YUVConvertPerfTest);
+ };
+
++TEST_F(YUVConvertPerfTest, ConvertYUVToRGB32Row_MMX) {
++ ASSERT_TRUE(base::CPU().has_mmx());
++
++ base::TimeTicks start = base::TimeTicks::Now();
++ for (int i = 0; i < kPerfTestIterations; ++i) {
++ for (int row = 0; row < kSourceHeight; ++row) {
++ int chroma_row = row / 2;
++ ConvertYUVToRGB32Row_MMX(
++ yuv_bytes_.get() + row * kSourceWidth,
++ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
++ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
++ rgb_bytes_converted_.get(),
++ kWidth,
++ GetLookupTable(YV12));
++ }
++ }
++ media::EmptyRegisterState();
++ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
++ perf_test::PrintResult(
++ "yuv_convert_perftest", "", "ConvertYUVToRGB32Row_MMX",
++ kPerfTestIterations / total_time_seconds, "runs/s", true);
++}
++
+ TEST_F(YUVConvertPerfTest, ConvertYUVToRGB32Row_SSE) {
+ ASSERT_TRUE(base::CPU().has_sse());
+
+@@ -161,9 +184,32 @@
+ }
+ #endif
+
+-// 64-bit release + component builds on Windows are too smart and optimizes
+-// away the function being tested.
+-#if defined(OS_WIN) && (defined(ARCH_CPU_X86) || !defined(COMPONENT_BUILD))
++TEST_F(YUVConvertPerfTest, ScaleYUVToRGB32Row_MMX) {
++ ASSERT_TRUE(base::CPU().has_mmx());
++
++ const int kSourceDx = 80000; // This value means a scale down.
++
++ base::TimeTicks start = base::TimeTicks::Now();
++ for (int i = 0; i < kPerfTestIterations; ++i) {
++ for (int row = 0; row < kSourceHeight; ++row) {
++ int chroma_row = row / 2;
++ ScaleYUVToRGB32Row_MMX(
++ yuv_bytes_.get() + row * kSourceWidth,
++ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
++ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
++ rgb_bytes_converted_.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ }
++ }
++ media::EmptyRegisterState();
++ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
++ perf_test::PrintResult(
++ "yuv_convert_perftest", "", "ScaleYUVToRGB32Row_MMX",
++ kPerfTestIterations / total_time_seconds, "runs/s", true);
++}
++
+ TEST_F(YUVConvertPerfTest, ScaleYUVToRGB32Row_SSE) {
+ ASSERT_TRUE(base::CPU().has_sse());
+
+@@ -190,6 +236,32 @@
+ kPerfTestIterations / total_time_seconds, "runs/s", true);
+ }
+
++TEST_F(YUVConvertPerfTest, LinearScaleYUVToRGB32Row_MMX) {
++ ASSERT_TRUE(base::CPU().has_mmx());
++
++ const int kSourceDx = 80000; // This value means a scale down.
++
++ base::TimeTicks start = base::TimeTicks::Now();
++ for (int i = 0; i < kPerfTestIterations; ++i) {
++ for (int row = 0; row < kSourceHeight; ++row) {
++ int chroma_row = row / 2;
++ LinearScaleYUVToRGB32Row_MMX(
++ yuv_bytes_.get() + row * kSourceWidth,
++ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
++ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
++ rgb_bytes_converted_.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ }
++ }
++ media::EmptyRegisterState();
++ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
++ perf_test::PrintResult(
++ "yuv_convert_perftest", "", "LinearScaleYUVToRGB32Row_MMX",
++ kPerfTestIterations / total_time_seconds, "runs/s", true);
++}
++
+ TEST_F(YUVConvertPerfTest, LinearScaleYUVToRGB32Row_SSE) {
+ ASSERT_TRUE(base::CPU().has_sse());
+
+@@ -215,7 +287,6 @@
+ "yuv_convert_perftest", "", "LinearScaleYUVToRGB32Row_SSE",
+ kPerfTestIterations / total_time_seconds, "runs/s", true);
+ }
+-#endif // defined(OS_WIN) && (ARCH_CPU_X86 || COMPONENT_BUILD)
+
+ #endif // !defined(ARCH_CPU_ARM_FAMILY) && !defined(ARCH_CPU_MIPS_FAMILY)
+
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc 2017-06-08 22:49:57.703253573 +0200
+@@ -643,6 +643,37 @@
+ EXPECT_EQ(0, error);
+ }
+
++TEST(YUVConvertTest, ConvertYUVToRGB32Row_MMX) {
++ base::CPU cpu;
++ if (!cpu.has_mmx()) {
++ LOG(WARNING) << "System not supported. Test skipped.";
++ return;
++ }
++
++ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
++ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
++ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
++ ReadYV12Data(&yuv_bytes);
++
++ const int kWidth = 167;
++ ConvertYUVToRGB32Row_C(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_reference.get(),
++ kWidth,
++ GetLookupTable(YV12));
++ ConvertYUVToRGB32Row_MMX(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_converted.get(),
++ kWidth,
++ GetLookupTable(YV12));
++ media::EmptyRegisterState();
++ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
++ rgb_bytes_converted.get(),
++ kWidth * kBpp));
++}
++
+ TEST(YUVConvertTest, ConvertYUVToRGB32Row_SSE) {
+ base::CPU cpu;
+ if (!cpu.has_sse()) {
+@@ -674,9 +705,40 @@
+ kWidth * kBpp));
+ }
+
+-// 64-bit release + component builds on Windows are too smart and optimizes
+-// away the function being tested.
+-#if defined(OS_WIN) && (defined(ARCH_CPU_X86) || !defined(COMPONENT_BUILD))
++TEST(YUVConvertTest, ScaleYUVToRGB32Row_MMX) {
++ base::CPU cpu;
++ if (!cpu.has_mmx()) {
++ LOG(WARNING) << "System not supported. Test skipped.";
++ return;
++ }
++
++ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
++ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
++ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
++ ReadYV12Data(&yuv_bytes);
++
++ const int kWidth = 167;
++ const int kSourceDx = 80000; // This value means a scale down.
++ ScaleYUVToRGB32Row_C(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_reference.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ ScaleYUVToRGB32Row_MMX(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_converted.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ media::EmptyRegisterState();
++ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
++ rgb_bytes_converted.get(),
++ kWidth * kBpp));
++}
++
+ TEST(YUVConvertTest, ScaleYUVToRGB32Row_SSE) {
+ base::CPU cpu;
+ if (!cpu.has_sse()) {
+@@ -711,6 +773,40 @@
+ kWidth * kBpp));
+ }
+
++TEST(YUVConvertTest, LinearScaleYUVToRGB32Row_MMX) {
++ base::CPU cpu;
++ if (!cpu.has_mmx()) {
++ LOG(WARNING) << "System not supported. Test skipped.";
++ return;
++ }
++
++ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
++ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
++ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
++ ReadYV12Data(&yuv_bytes);
++
++ const int kWidth = 167;
++ const int kSourceDx = 80000; // This value means a scale down.
++ LinearScaleYUVToRGB32Row_C(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_reference.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ LinearScaleYUVToRGB32Row_MMX(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_converted.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ media::EmptyRegisterState();
++ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
++ rgb_bytes_converted.get(),
++ kWidth * kBpp));
++}
++
+ TEST(YUVConvertTest, LinearScaleYUVToRGB32Row_SSE) {
+ base::CPU cpu;
+ if (!cpu.has_sse()) {
+@@ -744,7 +840,6 @@
+ rgb_bytes_converted.get(),
+ kWidth * kBpp));
+ }
+-#endif // defined(OS_WIN) && (ARCH_CPU_X86 || COMPONENT_BUILD)
+
+ TEST(YUVConvertTest, FilterYUVRows_C_OutOfBounds) {
+ std::unique_ptr<uint8_t[]> src(new uint8_t[16]);
+@@ -761,6 +856,30 @@
+ }
+ }
+
++#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
++TEST(YUVConvertTest, FilterYUVRows_MMX_OutOfBounds) {
++ base::CPU cpu;
++ if (!cpu.has_mmx()) {
++ LOG(WARNING) << "System not supported. Test skipped.";
++ return;
++ }
++
++ scoped_ptr<uint8[]> src(new uint8[16]);
++ scoped_ptr<uint8[]> dst(new uint8[16]);
++
++ memset(src.get(), 0xff, 16);
++ memset(dst.get(), 0, 16);
++
++ media::FilterYUVRows_MMX(dst.get(), src.get(), src.get(), 1, 255);
++ media::EmptyRegisterState();
++
++ EXPECT_EQ(255u, dst[0]);
++ for (int i = 1; i < 16; ++i) {
++ EXPECT_EQ(0u, dst[i]);
++ }
++}
++#endif // defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
++
+ TEST(YUVConvertTest, FilterYUVRows_SSE2_OutOfBounds) {
+ base::CPU cpu;
+ if (!cpu.has_sse2()) {
+@@ -782,6 +901,38 @@
+ }
+ }
+
++#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
++TEST(YUVConvertTest, FilterYUVRows_MMX_UnalignedDestination) {
++ base::CPU cpu;
++ if (!cpu.has_mmx()) {
++ LOG(WARNING) << "System not supported. Test skipped.";
++ return;
++ }
++
++ const int kSize = 32;
++ scoped_ptr<uint8[]> src(new uint8[kSize]);
++ scoped_ptr<uint8[]> dst_sample(new uint8[kSize]);
++ scoped_ptr<uint8[]> dst(new uint8[kSize]);
++
++ memset(dst_sample.get(), 0, kSize);
++ memset(dst.get(), 0, kSize);
++ for (int i = 0; i < kSize; ++i)
++ src[i] = 100 + i;
++
++ media::FilterYUVRows_C(dst_sample.get(),
++ src.get(), src.get(), 17, 128);
++
++ // Generate an unaligned output address.
++ uint8* dst_ptr =
++ reinterpret_cast<uint8*>(
++ (reinterpret_cast<uintptr_t>(dst.get() + 8) & ~7) + 1);
++ media::FilterYUVRows_MMX(dst_ptr, src.get(), src.get(), 17, 128);
++ media::EmptyRegisterState();
++
++ EXPECT_EQ(0, memcmp(dst_sample.get(), dst_ptr, 17));
++}
++#endif // defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
++
+ TEST(YUVConvertTest, FilterYUVRows_SSE2_UnalignedDestination) {
+ base::CPU cpu;
+ if (!cpu.has_sse2()) {
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/media/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/media/BUILD.gn 2017-06-08 22:49:57.704253558 +0200
+@@ -832,6 +832,26 @@
+ "//base",
+ "//ui/gfx/geometry",
+ ]
++ if (current_cpu == "x86" || current_cpu == "x64") {
++ deps += [
++ ":shared_memory_support_sse",
++ ]
++ }
++}
++
++if (current_cpu == "x86" || current_cpu == "x64") {
++ source_set("shared_memory_support_sse") {
++ sources = [
++ "base/simd/vector_math_sse.cc",
++ ]
++ configs += [
++ "//media:media_config",
++ "//media:media_implementation",
++ ]
++ if (!is_win) {
++ cflags = [ "-msse" ]
++ }
++ }
+ }
+
+ # TODO(watk): Refactor tests that could be made to run on Android. See
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/skia/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/skia/BUILD.gn 2017-06-08 23:34:35.516753817 +0200
+@@ -231,11 +231,6 @@
+ if (!is_ios) {
+ sources += [ "ext/platform_canvas.cc" ]
+ }
+- if (!is_ios && (current_cpu == "x86" || current_cpu == "x64")) {
+- sources += [ "ext/convolver_SSE2.cc" ]
+- } else if (current_cpu == "mipsel" && mips_dsp_rev >= 2) {
+- sources += [ "ext/convolver_mips_dspr2.cc" ]
+- }
+
+ # The skia gypi values are relative to the skia_dir, so we need to rebase.
+ sources += skia_core_sources
+@@ -608,7 +603,15 @@
+ if (skia_build_no_opts) {
+ sources = skia_opts.none_sources
+ } else if (current_cpu == "x86" || current_cpu == "x64") {
+- sources = skia_opts.sse2_sources
++ sources = skia_opts.sse2_sources +
++ [
++ # Chrome-specific.
++ "ext/convolver_SSE2.cc",
++ "ext/convolver_SSE2.h",
++ ]
++ if (!is_win || is_clang) {
++ cflags += [ "-msse2" ]
++ }
+ deps += [
+ ":skia_opts_avx",
+ ":skia_opts_hsw",
+@@ -644,6 +647,13 @@
+
+ if (mips_dsp_rev >= 1) {
+ sources = skia_opts.mips_dsp_sources
++ if (mips_dsp_rev >= 2) {
++ sources += [
++ # Chrome-specific.
++ "ext/convolver_mips_dspr2.cc",
++ "ext/convolver_mips_dspr2.h",
++ ]
++ }
+ } else {
+ sources = skia_opts.none_sources
+ }
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/ext/convolver.cc qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/skia/ext/convolver.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/ext/convolver.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/skia/ext/convolver.cc 2017-06-08 22:50:00.933204857 +0200
+@@ -362,10 +362,13 @@
+
+ void SetupSIMD(ConvolveProcs *procs) {
+ #ifdef SIMD_SSE2
+- procs->extra_horizontal_reads = 3;
+- procs->convolve_vertically = &ConvolveVertically_SSE2;
+- procs->convolve_4rows_horizontally = &Convolve4RowsHorizontally_SSE2;
+- procs->convolve_horizontally = &ConvolveHorizontally_SSE2;
++ base::CPU cpu;
++ if (cpu.has_sse2()) {
++ procs->extra_horizontal_reads = 3;
++ procs->convolve_vertically = &ConvolveVertically_SSE2;
++ procs->convolve_4rows_horizontally = &Convolve4RowsHorizontally_SSE2;
++ procs->convolve_horizontally = &ConvolveHorizontally_SSE2;
++ }
+ #elif defined SIMD_MIPS_DSPR2
+ procs->extra_horizontal_reads = 3;
+ procs->convolve_vertically = &ConvolveVertically_mips_dspr2;
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/ext/convolver.h qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/skia/ext/convolver.h
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/skia/ext/convolver.h 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/skia/ext/convolver.h 2017-06-08 22:50:00.998203877 +0200
+@@ -11,6 +11,7 @@
+ #include <vector>
+
+ #include "build/build_config.h"
++#include "base/cpu.h"
+ #include "third_party/skia/include/core/SkSize.h"
+ #include "third_party/skia/include/core/SkTypes.h"
+
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/qcms/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/qcms/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/qcms/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/qcms/BUILD.gn 2017-06-08 22:50:07.147111135 +0200
+@@ -30,8 +30,8 @@
+ ]
+
+ if (current_cpu == "x86" || current_cpu == "x64") {
+- defines = [ "SSE2_ENABLE" ]
+- sources += [ "src/transform-sse2.c" ]
++ defines = [ "SSE2_ENABLE" ] # runtime detection
++ deps = [ "qcms_sse2" ]
+ }
+ }
+
+@@ -74,3 +74,15 @@
+ public_configs = [ ":qcms_config" ]
+ }
+ }
++
++source_set("qcms_sse2") {
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [ "//build/config/compiler:no_chromium_code" ]
++ public_configs = [ ":qcms_config" ]
++
++ if (current_cpu == "x86" || current_cpu == "x64") {
++ defines = [ "SSE2_ENABLE" ]
++ sources = [ "src/transform-sse2.c" ]
++ cflags = [ "-msse2" ]
++ }
++}
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp 2017-06-08 23:59:48.897938821 +0200
+@@ -31,7 +31,7 @@
+ #include "wtf/MathExtras.h"
+ #include <algorithm>
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ #include <emmintrin.h>
+ #endif
+
+@@ -662,7 +662,7 @@
+ // the next event.
+ if (nextEventType == ParamEvent::LinearRampToValue) {
+ const float valueDelta = value2 - value1;
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if (fillToFrame > writeIndex) {
+ // Minimize in-loop operations. Calculate starting value and increment.
+ // Next step: value += inc.
+@@ -841,7 +841,7 @@
+ for (; writeIndex < fillToFrame; ++writeIndex)
+ values[writeIndex] = target;
+ } else {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if (fillToFrame > writeIndex) {
+ // Resolve recursion by expanding constants to achieve a 4-step
+ // loop unrolling.
+@@ -959,7 +959,7 @@
+ // Oversampled curve data can be provided if sharp discontinuities are
+ // desired.
+ unsigned k = 0;
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if (fillToFrame > writeIndex) {
+ const __m128 vCurveVirtualIndex = _mm_set_ps1(curveVirtualIndex);
+ const __m128 vCurvePointsPerFrame =
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp 2017-06-09 00:10:04.104673129 +0200
+@@ -26,6 +26,9 @@
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
++// include this first to get it before the CPU() function-like macro
++#include "base/cpu.h"
++
+ #include "platform/audio/DirectConvolver.h"
+
+ #if OS(MACOSX)
+@@ -35,21 +38,47 @@
+ #include "platform/audio/VectorMath.h"
+ #include "wtf/CPU.h"
+
+-#if (CPU(X86) || CPU(X86_64)) && !OS(MACOSX)
++#if ((CPU(X86) && defined(__SSE2__)) || CPU(X86_64)) && !OS(MACOSX)
+ #include <emmintrin.h>
+ #endif
+
++#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
++#error SSE2 parts must be built with -msse2
++#endif
++
+ namespace blink {
+
+ using namespace VectorMath;
+
++#ifndef BUILD_ONLY_THE_SSE2_PARTS
++
+ DirectConvolver::DirectConvolver(size_t inputBlockSize)
+- : m_inputBlockSize(inputBlockSize), m_buffer(inputBlockSize * 2) {}
++ : m_inputBlockSize(inputBlockSize), m_buffer(inputBlockSize * 2) {
++#if CPU(X86)
++ base::CPU cpu;
++ m_haveSSE2 = cpu.has_sse2();
++#endif
++}
++
++#endif
+
++#ifdef BUILD_ONLY_THE_SSE2_PARTS
++void DirectConvolver::m_processSSE2(AudioFloatArray* convolutionKernel,
++ const float* sourceP,
++ float* destP,
++ size_t framesToProcess) {
++#else
+ void DirectConvolver::process(AudioFloatArray* convolutionKernel,
+ const float* sourceP,
+ float* destP,
+ size_t framesToProcess) {
++#endif
++#if CPU(X86) && !defined(__SSE2__)
++ if (m_haveSSE2) {
++ m_processSSE2(convolutionKernel, sourceP, destP, framesToProcess);
++ return;
++ }
++#endif
+ ASSERT(framesToProcess == m_inputBlockSize);
+ if (framesToProcess != m_inputBlockSize)
+ return;
+@@ -83,7 +112,7 @@
+ #endif // CPU(X86)
+ #else
+ size_t i = 0;
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ // Convolution using SSE2. Currently only do this if both |kernelSize| and
+ // |framesToProcess| are multiples of 4. If not, use the straightforward loop
+ // below.
+@@ -397,7 +426,7 @@
+ }
+ destP[i++] = sum;
+ }
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ }
+ #endif
+ #endif // OS(MACOSX)
+@@ -406,8 +435,12 @@
+ memcpy(m_buffer.data(), inputP, sizeof(float) * framesToProcess);
+ }
+
++#ifndef BUILD_ONLY_THE_SSE2_PARTS
++
+ void DirectConvolver::reset() {
+ m_buffer.zero();
+ }
+
++#endif
++
+ } // namespace blink
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h 2017-06-09 00:07:03.143398606 +0200
+@@ -32,6 +32,7 @@
+ #include "platform/PlatformExport.h"
+ #include "platform/audio/AudioArray.h"
+ #include "wtf/Allocator.h"
++#include "wtf/CPU.h"
+ #include "wtf/Noncopyable.h"
+
+ namespace blink {
+@@ -54,6 +55,14 @@
+ size_t m_inputBlockSize;
+
+ AudioFloatArray m_buffer;
++
++#if CPU(X86)
++ bool m_haveSSE2;
++ void m_processSSE2(AudioFloatArray* convolutionKernel,
++ const float* sourceP,
++ float* destP,
++ size_t framesToProcess);
++#endif
+ };
+
+ } // namespace blink
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolverSSE2.cpp qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolverSSE2.cpp
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolverSSE2.cpp 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolverSSE2.cpp 2017-06-08 22:50:07.966098783 +0200
+@@ -0,0 +1,2 @@
++#define BUILD_ONLY_THE_SSE2_PARTS
++#include "DirectConvolver.cpp"
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp 2017-06-09 00:12:04.250863595 +0200
+@@ -26,15 +26,22 @@
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
++// include this first to get it before the CPU() function-like macro
++#include "base/cpu.h"
++
+ #include "platform/audio/SincResampler.h"
+ #include "platform/audio/AudioBus.h"
+ #include "wtf/CPU.h"
+ #include "wtf/MathExtras.h"
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ #include <emmintrin.h>
+ #endif
+
++#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
++#error SSE2 parts must be built with -msse2
++#endif
++
+ // Input buffer layout, dividing the total buffer into regions (r0 - r5):
+ //
+ // |----------------|-----------------------------------------|----------------|
+@@ -66,6 +73,8 @@
+
+ namespace blink {
+
++#ifndef BUILD_ONLY_THE_SSE2_PARTS
++
+ SincResampler::SincResampler(double scaleFactor,
+ unsigned kernelSize,
+ unsigned numberOfKernelOffsets)
+@@ -81,6 +90,10 @@
+ m_sourceFramesAvailable(0),
+ m_sourceProvider(nullptr),
+ m_isBufferPrimed(false) {
++#if CPU(X86)
++ base::CPU cpu;
++ m_haveSSE2 = cpu.has_sse2();
++#endif
+ initializeKernel();
+ }
+
+@@ -201,9 +214,23 @@
+ }
+ }
+
++#endif
++
++#ifdef BUILD_ONLY_THE_SSE2_PARTS
++void SincResampler::m_processSSE2(AudioSourceProvider* sourceProvider,
++ float* destination,
++ size_t framesToProcess) {
++#else
+ void SincResampler::process(AudioSourceProvider* sourceProvider,
+ float* destination,
+ size_t framesToProcess) {
++#endif
++#if CPU(X86) && !defined(__SSE2__)
++ if (m_haveSSE2) {
++ m_processSSE2(sourceProvider, destination, framesToProcess);
++ return;
++ }
++#endif
+ bool isGood = sourceProvider && m_blockSize > m_kernelSize &&
+ m_inputBuffer.size() >= m_blockSize + m_kernelSize &&
+ !(m_kernelSize % 2);
+@@ -269,7 +296,7 @@
+ {
+ float input;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ // If the sourceP address is not 16-byte aligned, the first several
+ // frames (at most three) should be processed seperately.
+ while ((reinterpret_cast<uintptr_t>(inputP) & 0x0F) && n) {
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h 2017-06-09 00:12:54.187111500 +0200
+@@ -33,6 +33,7 @@
+ #include "platform/audio/AudioArray.h"
+ #include "platform/audio/AudioSourceProvider.h"
+ #include "wtf/Allocator.h"
++#include "wtf/CPU.h"
+ #include "wtf/Noncopyable.h"
+
+ namespace blink {
+@@ -96,6 +97,13 @@
+
+ // The buffer is primed once at the very beginning of processing.
+ bool m_isBufferPrimed;
++
++#if CPU(X86)
++ bool m_haveSSE2;
++ void m_processSSE2(AudioSourceProvider*,
++ float* destination,
++ size_t framesToProcess);
++#endif
+ };
+
+ } // namespace blink
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResamplerSSE2.cpp qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResamplerSSE2.cpp
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResamplerSSE2.cpp 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResamplerSSE2.cpp 2017-06-08 22:50:07.967098767 +0200
+@@ -0,0 +1,2 @@
++#define BUILD_ONLY_THE_SSE2_PARTS
++#include "SincResampler.cpp"
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp 2017-06-09 00:26:26.048970670 +0200
+@@ -23,6 +23,9 @@
+ * DAMAGE.
+ */
+
++// include this first to get it before the CPU() function-like macro
++#include "base/cpu.h"
++
+ #include "platform/audio/VectorMath.h"
+ #include "wtf/Assertions.h"
+ #include "wtf/CPU.h"
+@@ -33,10 +36,14 @@
+ #include <Accelerate/Accelerate.h>
+ #endif
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ #include <emmintrin.h>
+ #endif
+
++#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
++#error SSE2 parts must be built with -msse2
++#endif
++
+ #if HAVE(ARM_NEON_INTRINSICS)
+ #include <arm_neon.h>
+ #endif
+@@ -165,15 +172,30 @@
+ }
+ #else
+
++#ifdef BUILD_ONLY_THE_SSE2_PARTS
++namespace SSE2 {
++#endif
++
++#if CPU(X86) && !defined(__SSE2__)
++static base::CPU cpu;
++#endif
++
+ void vsma(const float* sourceP,
+ int sourceStride,
+ const float* scale,
+ float* destP,
+ int destStride,
+ size_t framesToProcess) {
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vsma(sourceP, sourceStride, scale, destP,
++ destStride, framesToProcess);
++ return;
++ }
++#endif
+ int n = framesToProcess;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if ((sourceStride == 1) && (destStride == 1)) {
+ float k = *scale;
+
+@@ -269,9 +291,16 @@
+ float* destP,
+ int destStride,
+ size_t framesToProcess) {
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vsmul(sourceP, sourceStride, scale, destP,
++ destStride, framesToProcess);
++ return;
++ }
++#endif
+ int n = framesToProcess;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if ((sourceStride == 1) && (destStride == 1)) {
+ float k = *scale;
+
+@@ -360,7 +389,7 @@
+ sourceP += sourceStride;
+ destP += destStride;
+ }
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ }
+ #endif
+ }
+@@ -372,9 +401,17 @@
+ float* destP,
+ int destStride,
+ size_t framesToProcess) {
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vadd(source1P, sourceStride1, source2P,
++ sourceStride2, destP, destStride,
++ framesToProcess);
++ return;
++ }
++#endif
+ int n = framesToProcess;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if ((sourceStride1 == 1) && (sourceStride2 == 1) && (destStride == 1)) {
+ // If the sourceP address is not 16-byte aligned, the first several frames
+ // (at most three) should be processed separately.
+@@ -501,7 +538,7 @@
+ source2P += sourceStride2;
+ destP += destStride;
+ }
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ }
+ #endif
+ }
+@@ -513,9 +550,17 @@
+ float* destP,
+ int destStride,
+ size_t framesToProcess) {
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vmul(source1P, sourceStride1, source2P,
++ sourceStride2, destP, destStride,
++ framesToProcess);
++ return;
++ }
++#endif
+ int n = framesToProcess;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if ((sourceStride1 == 1) && (sourceStride2 == 1) && (destStride == 1)) {
+ // If the source1P address is not 16-byte aligned, the first several frames
+ // (at most three) should be processed separately.
+@@ -614,8 +659,15 @@
+ float* realDestP,
+ float* imagDestP,
+ size_t framesToProcess) {
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::zvmul(real1P, imag1P, real2P, imag2P, realDestP,
++ imagDestP, framesToProcess);
++ return;
++ }
++#endif
+ unsigned i = 0;
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ // Only use the SSE optimization in the very common case that all addresses
+ // are 16-byte aligned. Otherwise, fall through to the scalar code below.
+ if (!(reinterpret_cast<uintptr_t>(real1P) & 0x0F) &&
+@@ -671,10 +723,17 @@
+ int sourceStride,
+ float* sumP,
+ size_t framesToProcess) {
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vsvesq(sourceP, sourceStride, sumP,
++ framesToProcess);
++ return;
++ }
++#endif
+ int n = framesToProcess;
+ float sum = 0;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if (sourceStride == 1) {
+ // If the sourceP address is not 16-byte aligned, the first several frames
+ // (at most three) should be processed separately.
+@@ -740,10 +799,17 @@
+ int sourceStride,
+ float* maxP,
+ size_t framesToProcess) {
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vmaxmgv(sourceP, sourceStride, maxP,
++ framesToProcess);
++ return;
++ }
++#endif
+ int n = framesToProcess;
+ float max = 0;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if (sourceStride == 1) {
+ // If the sourceP address is not 16-byte aligned, the first several frames
+ // (at most three) should be processed separately.
+@@ -832,6 +898,8 @@
+ *maxP = max;
+ }
+
++#ifndef BUILD_ONLY_THE_SSE2_PARTS
++
+ void vclip(const float* sourceP,
+ int sourceStride,
+ const float* lowThresholdP,
+@@ -889,6 +957,12 @@
+ }
+ }
+
++#endif
++
++#ifdef BUILD_ONLY_THE_SSE2_PARTS
++} // namespace SSE2
++#endif
++
+ #endif // OS(MACOSX)
+
+ } // namespace VectorMath
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h 2017-06-09 00:27:58.975582370 +0200
+@@ -27,6 +27,7 @@
+ #define VectorMath_h
+
+ #include "platform/PlatformExport.h"
++#include "wtf/CPU.h"
+ #include "wtf/build_config.h"
+ #include <cstddef>
+
+@@ -97,6 +98,62 @@
+ int destStride,
+ size_t framesToProcess);
+
++#if CPU(X86)
++namespace SSE2 {
++// Vector scalar multiply and then add.
++PLATFORM_EXPORT void vsma(const float* sourceP,
++ int sourceStride,
++ const float* scale,
++ float* destP,
++ int destStride,
++ size_t framesToProcess);
++
++PLATFORM_EXPORT void vsmul(const float* sourceP,
++ int sourceStride,
++ const float* scale,
++ float* destP,
++ int destStride,
++ size_t framesToProcess);
++PLATFORM_EXPORT void vadd(const float* source1P,
++ int sourceStride1,
++ const float* source2P,
++ int sourceStride2,
++ float* destP,
++ int destStride,
++ size_t framesToProcess);
++
++// Finds the maximum magnitude of a float vector.
++PLATFORM_EXPORT void vmaxmgv(const float* sourceP,
++ int sourceStride,
++ float* maxP,
++ size_t framesToProcess);
++
++// Sums the squares of a float vector's elements.
++PLATFORM_EXPORT void vsvesq(const float* sourceP,
++ int sourceStride,
++ float* sumP,
++ size_t framesToProcess);
++
++// For an element-by-element multiply of two float vectors.
++PLATFORM_EXPORT void vmul(const float* source1P,
++ int sourceStride1,
++ const float* source2P,
++ int sourceStride2,
++ float* destP,
++ int destStride,
++ size_t framesToProcess);
++
++// Multiplies two complex vectors.
++PLATFORM_EXPORT void zvmul(const float* real1P,
++ const float* imag1P,
++ const float* real2P,
++ const float* imag2P,
++ float* realDestP,
++ float* imagDestP,
++ size_t framesToProcess);
++}
++#endif
++
+ } // namespace VectorMath
+ } // namespace blink
+
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMathSSE2.cpp qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMathSSE2.cpp
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMathSSE2.cpp 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMathSSE2.cpp 2017-06-08 22:50:07.969098737 +0200
+@@ -0,0 +1,2 @@
++#define BUILD_ONLY_THE_SSE2_PARTS
++#include "VectorMath.cpp"
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/BUILD.gn 2017-06-09 00:40:12.361601303 +0200
+@@ -1529,6 +1529,10 @@
+ deps += [ ":blink_x86_sse" ]
+ }
+
++ if (current_cpu == "x86") {
++ deps += [ ":blink_x86_sse2" ]
++ }
++
+ if (use_webaudio_ffmpeg) {
+ include_dirs += [ "//third_party/ffmpeg" ]
+ deps += [ "//third_party/ffmpeg" ]
+@@ -1912,6 +1916,20 @@
+ deps = [
+ ":blink_common",
+ ]
++ }
++}
++
++if (current_cpu == "x86") {
++ source_set("blink_x86_sse2") {
++ sources = [
++ "audio/DirectConvolverSSE2.cpp",
++ "audio/SincResamplerSSE2.cpp",
++ "audio/VectorMathSSE2.cpp",
++ ]
++ cflags = [ "-msse2", '-mfpmath=sse' ]
++ deps = [
++ ":blink_common",
++ ]
+ }
+ }
+
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h 2017-06-08 22:50:09.251079402 +0200
+@@ -5,7 +5,7 @@
+ #ifndef WebGLImageConversionSSE_h
+ #define WebGLImageConversionSSE_h
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+
+ #include <emmintrin.h>
+
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp 2017-06-09 00:33:14.375866479 +0200
+@@ -441,7 +441,7 @@
+ const uint32_t* source32 = reinterpret_cast_ptr<const uint32_t*>(source);
+ uint32_t* destination32 = reinterpret_cast_ptr<uint32_t*>(destination);
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::unpackOneRowOfBGRA8LittleToRGBA8(source32, destination32, pixelsPerRow);
+ #endif
+ #if HAVE(MIPS_MSA_INTRINSICS)
+@@ -467,7 +467,7 @@
+ const uint16_t* source,
+ uint8_t* destination,
+ unsigned pixelsPerRow) {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::unpackOneRowOfRGBA5551LittleToRGBA8(source, destination, pixelsPerRow);
+ #endif
+ #if HAVE(ARM_NEON_INTRINSICS)
+@@ -496,7 +496,7 @@
+ const uint16_t* source,
+ uint8_t* destination,
+ unsigned pixelsPerRow) {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::unpackOneRowOfRGBA4444LittleToRGBA8(source, destination, pixelsPerRow);
+ #endif
+ #if HAVE(ARM_NEON_INTRINSICS)
+@@ -711,7 +711,7 @@
+ uint8_t>(const uint8_t* source,
+ uint8_t* destination,
+ unsigned pixelsPerRow) {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::packOneRowOfRGBA8LittleToR8(source, destination, pixelsPerRow);
+ #endif
+ #if HAVE(MIPS_MSA_INTRINSICS)
+@@ -768,7 +768,7 @@
+ uint8_t>(const uint8_t* source,
+ uint8_t* destination,
+ unsigned pixelsPerRow) {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::packOneRowOfRGBA8LittleToRA8(source, destination, pixelsPerRow);
+ #endif
+ #if HAVE(MIPS_MSA_INTRINSICS)
+@@ -880,7 +880,7 @@
+ uint8_t>(const uint8_t* source,
+ uint8_t* destination,
+ unsigned pixelsPerRow) {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::packOneRowOfRGBA8LittleToRGBA8(source, destination, pixelsPerRow);
+ #endif
+ #if HAVE(MIPS_MSA_INTRINSICS)
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc 2017-06-08 22:50:09.434076641 +0200
+@@ -14,6 +14,7 @@
+ #include "webrtc/common_audio/real_fourier_ooura.h"
+ #include "webrtc/common_audio/real_fourier_openmax.h"
+ #include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
++#include "webrtc/system_wrappers/include/cpu_features_wrapper.h"
+
+ namespace webrtc {
+
+@@ -23,7 +24,15 @@
+
+ std::unique_ptr<RealFourier> RealFourier::Create(int fft_order) {
+ #if defined(RTC_USE_OPENMAX_DL)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && !defined(__SSE2__)
++ // x86 CPU detection required.
++ if (WebRtc_GetCPUInfo(kSSE2))
++ return std::unique_ptr<RealFourier>(new RealFourierOpenmax(fft_order));
++ else
++ return std::unique_ptr<RealFourier>(new RealFourierOoura(fft_order));
++#else
+ return std::unique_ptr<RealFourier>(new RealFourierOpenmax(fft_order));
++#endif
+ #else
+ return std::unique_ptr<RealFourier>(new RealFourierOoura(fft_order));
+ #endif
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn 2017-06-10 02:09:29.227782885 +0200
+@@ -73,6 +73,9 @@
+ # If true, doesn't compile debug symbols into v8base reducing the
+ # size of the binary and increasing the speed of gdb.
+ remove_v8base_debug_symbols = false
++
++ # Whether to build V8 as a shared library
++ v8_build_shared = false
+ }
+
+ # Set project-specific defaults for some args if not provided in args.gn. The
+@@ -99,6 +102,10 @@
+ if (v8_enable_disassembler == "") {
+ v8_enable_disassembler = is_debug && !v8_optimized_debug
+ }
++if (v8_current_cpu == "x86" || v8_current_cpu == "x87") {
++ # build V8 shared on x86 so we can swap x87 vs. SSE2 builds
++ v8_build_shared = true
++}
+
+ # Specifies if the target build is a simulator build. Comparing target cpu
+ # with v8 target cpu to not affect simulator builds for making cross-compile
+@@ -117,7 +124,7 @@
+
+ include_dirs = [ "." ]
+
+- if (is_component_build) {
++ if (is_component_build || v8_build_shared) {
+ defines = [ "BUILDING_V8_SHARED" ]
+ }
+ }
+@@ -131,14 +138,14 @@
+ # This config should be applied to code using the libplatform.
+ config("libplatform_config") {
+ include_dirs = [ "include" ]
+- if (is_component_build) {
++ if (is_component_build || v8_build_shared) {
+ defines = [ "USING_V8_PLATFORM_SHARED" ]
+ }
+ }
+
+ # This config should be applied to code using the libbase.
+ config("libbase_config") {
+- if (is_component_build) {
++ if (is_component_build || v8_build_shared) {
+ defines = [ "USING_V8_BASE_SHARED" ]
+ }
+ libs = []
+@@ -155,7 +162,7 @@
+ # This config should only be applied to code using V8 and not any V8 code
+ # itself.
+ config("external_config") {
+- if (is_component_build) {
++ if (is_component_build || v8_build_shared) {
+ defines = [ "USING_V8_SHARED" ]
+ }
+ include_dirs = [ "include" ]
+@@ -2274,7 +2281,7 @@
+
+ defines = []
+
+- if (is_component_build) {
++ if (is_component_build || v8_build_shared) {
+ defines = [ "BUILDING_V8_BASE_SHARED" ]
+ }
+
+@@ -2364,7 +2371,7 @@
+
+ configs = [ ":internal_config_base" ]
+
+- if (is_component_build) {
++ if (is_component_build || v8_build_shared) {
+ defines = [ "BUILDING_V8_PLATFORM_SHARED" ]
+ }
+
+@@ -2507,7 +2514,26 @@
+ }
+ }
+
+-if (is_component_build) {
++if (v8_build_shared) {
++ shared_library("v8") {
++ sources = [
++ "src/v8dll-main.cc",
++ ]
++
++ deps = [
++ ":v8_dump_build_config",
++ ]
++
++ public_deps = [
++ ":v8_base",
++ ":v8_maybe_snapshot",
++ ]
++
++ configs = [ ":internal_config" ]
++
++ public_configs = [ ":external_config" ]
++ }
++} else if (v8_is_component_build) {
+ v8_component("v8") {
+ sources = [
+ "src/v8dll-main.cc",
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/make-v8-sse2-gyp.sh qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/make-v8-sse2-gyp.sh
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/v8/make-v8-sse2-gyp.sh 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/3rdparty/chromium/v8/make-v8-sse2-gyp.sh 2017-06-08 22:50:09.496075706 +0200
+@@ -0,0 +1,56 @@
++#!/bin/sh
++# This script renames the v8 targets to _sse2 names so that they do not conflict
++# with the non-SSE2 versions.
++
++# Copyright 2016 Kevin Kofler. All rights reserved.
++# Redistribution and use in source and binary forms, with or without
++# modification, are permitted provided that the following conditions are
++# met:
++#
++# * Redistributions of source code must retain the above copyright
++# notice, this list of conditions and the following disclaimer.
++# * Redistributions in binary form must reproduce the above
++# copyright notice, this list of conditions and the following
++# disclaimer in the documentation and/or other materials provided
++# with the distribution.
++# * Neither the name of Google Inc. nor the names of its
++# contributors may be used to endorse or promote products derived
++# from this software without specific prior written permission.
++#
++# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
++# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
++# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
++# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
++# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++
++# add comment noting that the file is generated
++echo "# Generated from v8.gyp by make-v8-sse2-gyp.sh" >v8_sse2.gyp
++# rename all target names
++SUBTARGETS=`grep "'target_name': '" v8.gyp | sed -e "s/^.*'target_name': '//g" -e "s/',$//g"`
++SEDS=
++for SUBTARGET in $SUBTARGETS ; do
++ SEDS=$SEDS\ -e\ "s/'$SUBTARGET\(['#]\)/'${SUBTARGET}_sse2\1/g"
++done
++# in addition:
++# * set v8_target_arch to "ia32" (instead of "x87")
++# * rename all actions
++# * fix mksnapshot_exec to match the renamed target
++# * rename the generated snapshot.cc (but not mksnapshot.cc) to snapshot_sse2.cc
++# * rename the generated *libraries.cc to *libraries_sse2.cc
++# * rename the generated *.bin to *_sse2.bin
++# * set product_name and product_dir for the v8_sse2 target
++sed -e "s/^\( 'variables': {\)/\1\n 'v8_target_arch': 'ia32',/g" \
++ -e "s/\('action_name': '\)/\1v8_sse2_/g" \
++ $SEDS \
++ -e "s/\('mksnapshot_exec': '.*mksnapshot\)/\1_sse2/g" \
++ -e "s#/snapshot\.cc#/snapshot_sse2.cc#g" \
++ -e "s/libraries\.cc/libraries_sse2.cc/g" \
++ -e "s/\.bin/_sse2.bin/g" \
++ -e "s#^\( *\)\('target_name': 'v8_sse2',\)#\1\2\n\1'product_name': 'v8',\n\1'product_dir': '<(PRODUCT_DIR)/lib/sse2',#g" \
++ v8.gyp >>v8_sse2.gyp
+diff -Nur qtwebengine-opensource-src-5.9.0/src/core/core_module.pro qtwebengine-opensource-src-5.9.0-no-sse2/src/core/core_module.pro
+--- qtwebengine-opensource-src-5.9.0/src/core/core_module.pro 2017-05-19 06:22:04.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-no-sse2/src/core/core_module.pro 2017-06-09 00:59:19.199411383 +0200
+@@ -41,6 +41,28 @@
+ else: QMAKE_LFLAGS += $$NINJA_LFLAGS
+ POST_TARGETDEPS += $$NINJA_TARGETDEPS
+
++# go through the shared libraries that GN wants to link to
++# add the ones NOT in lib/sse2 to LIBS_PRIVATE
++# don't add those in lib/sse2 that are only replacements for the normal ones
++# collect all shared libraries, non-SSE2 and SSE2, so they can be installed
++for(shlib, NINJA_SOLIBS) {
++ contains(shlib, .*/lib/sse2/.*) {
++ shlibs_sse2 += $$shlib
++ } else {
++ LIBS_PRIVATE += $$shlib
++ shlibs += $$shlib
++ }
++}
++
++# set the shared libraries to be installed
++# add an rpath to their installation location
++shlib_install_path = $$[QT_INSTALL_LIBS]/qtwebengine
++!isEmpty(shlibs) {
++ shlibs.files += $$shlibs
++ shlibs_sse2.files += $$shlibs_sse2
++ LIBS_PRIVATE += -Wl,--rpath,$$shlib_install_path
++}
++
+
+ LIBS_PRIVATE += -L$$api_library_path
+ CONFIG *= no_smart_library_merge
+@@ -100,7 +122,12 @@
+ locales.path = $$[QT_INSTALL_TRANSLATIONS]/qtwebengine_locales
+ resources.CONFIG += no_check_exist
+ resources.path = $$[QT_INSTALL_DATA]/resources
+- INSTALLS += locales resources
++ # install the shared libraries
++ shlibs.CONFIG += no_check_exist
++ shlibs.path = $$shlib_install_path
++ shlibs_sse2.CONFIG += no_check_exist
++ shlibs_sse2.path = $$shlib_install_path/sse2
++ INSTALLS += locales resources shlibs shlibs_sse2
+
+ !use?(system_icu) {
+ icu.CONFIG += no_check_exist
diff --git a/qtwebengine-opensource-src-5.9.0-openmax-dl-neon.patch b/qtwebengine-opensource-src-5.9.0-openmax-dl-neon.patch
new file mode 100644
index 0000000..fd11fae
--- /dev/null
+++ b/qtwebengine-opensource-src-5.9.0-openmax-dl-neon.patch
@@ -0,0 +1,92 @@
+diff -ur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/openmax_dl/dl/BUILD.gn qtwebengine-opensource-src-5.9.0-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/openmax_dl/dl/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/BUILD.gn 2017-06-10 02:41:10.317340598 +0200
+@@ -196,9 +196,6 @@
+ ]
+ if (arm_optionally_use_neon) {
+ # Run-time NEON detection.
+- deps = [ "//third_party/android_tools:cpu_features" ]
+- # To get the __android_log_print routine
+- libs = [ "log" ]
+ # Detection routine
+ sources += [ "sp/src/arm/detect.c" ]
+ }
+diff -ur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c qtwebengine-opensource-src-5.9.0-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c 2017-06-10 02:38:30.593809570 +0200
+@@ -9,13 +9,57 @@
+ *
+ */
+
+-#include <cpu-features.h>
+-
+-#include "android/log.h"
+ #include "dl/sp/api/omxSP.h"
+
++// For ArmCpuCaps()
++#include <stdio.h>
++#include <string.h>
++
++// based on libvpx arm_cpudetect.c
++static int ArmCpuCaps(const char* cpuinfo_name) {
++ char cpuinfo_line[512];
++ FILE* f = fopen(cpuinfo_name, "r");
++ if (!f) {
++ // Assume Neon if /proc/cpuinfo is unavailable.
++ // This will occur for Chrome sandbox for Pepper or Render process.
++ return 1;
++ }
++ while (fgets(cpuinfo_line, sizeof(cpuinfo_line) - 1, f)) {
++ if (memcmp(cpuinfo_line, "Features", 8) == 0) {
++ char* p = strstr(cpuinfo_line, " neon");
++ if (p && (p[5] == ' ' || p[5] == '\n')) {
++ fclose(f);
++ return 1;
++ }
++ // aarch64 uses asimd for Neon.
++ p = strstr(cpuinfo_line, " asimd");
++ if (p && (p[6] == ' ' || p[6] == '\n')) {
++ fclose(f);
++ return 1;
++ }
++ }
++ }
++ fclose(f);
++ return 0;
++}
++
+ int omxSP_HasArmNeon() {
+- return (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0;
++#if defined(__arm__) || defined(__aarch64__)
++// gcc -mfpu=neon defines __ARM_NEON__
++// __ARM_NEON__ generates code that requires Neon. NaCL also requires Neon.
++// For Linux, /proc/cpuinfo can be tested but without that assume Neon.
++#if defined(__ARM_NEON__) || defined(__native_client__) || !defined(__linux__)
++ return 1;
++// For aarch64(arm64), /proc/cpuinfo's feature is not complete, e.g. no neon
++// flag in it.
++// So for aarch64, neon enabling is hard coded here.
++#elif defined(__aarch64__)
++ return 1;
++#else
++ // Linux arm parse text file for neon detect.
++ return ArmCpuCaps("/proc/cpuinfo");
++#endif
++#endif // __arm__
+ }
+
+ static void SetFFTRoutines() {
+@@ -24,13 +68,9 @@
+ * forward and inverse FFTs
+ */
+ if (omxSP_HasArmNeon()) {
+- __android_log_print(ANDROID_LOG_INFO, "OpenMAX DL FFT",
+- "Using NEON FFT");
+ omxSP_FFTFwd_RToCCS_F32 = omxSP_FFTFwd_RToCCS_F32_Sfs;
+ omxSP_FFTInv_CCSToR_F32 = omxSP_FFTInv_CCSToR_F32_Sfs;
+ } else {
+- __android_log_print(ANDROID_LOG_INFO, "OpenMAX DL FFT",
+- "Using non-NEON FFT");
+ omxSP_FFTFwd_RToCCS_F32 = omxSP_FFTFwd_RToCCS_F32_Sfs_vfp;
+ omxSP_FFTInv_CCSToR_F32 = omxSP_FFTInv_CCSToR_F32_Sfs_vfp;
+ }
diff --git a/qtwebengine-opensource-src-5.9.0-skia-neon.patch b/qtwebengine-opensource-src-5.9.0-skia-neon.patch
new file mode 100644
index 0000000..a9e774a
--- /dev/null
+++ b/qtwebengine-opensource-src-5.9.0-skia-neon.patch
@@ -0,0 +1,392 @@
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/gn/opts.gni qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/gn/opts.gni
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/gn/opts.gni 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/gn/opts.gni 2017-06-10 13:01:07.120762647 +0200
+@@ -23,6 +23,7 @@
+ "$_src/opts/SkBitmapProcState_matrixProcs_neon.cpp",
+ "$_src/opts/SkBlitMask_opts_arm_neon.cpp",
+ "$_src/opts/SkBlitRow_opts_arm_neon.cpp",
++ "$_src/opts/SkOpts_neon.cpp",
+ ]
+
+ arm64 = [
+@@ -33,6 +34,7 @@
+ "$_src/opts/SkBlitMask_opts_arm_neon.cpp",
+ "$_src/opts/SkBlitRow_opts_arm.cpp",
+ "$_src/opts/SkBlitRow_opts_arm_neon.cpp",
++ "$_src/opts/SkOpts_neon.cpp",
+ ]
+
+ crc32 = [ "$_src/opts/SkOpts_crc32.cpp" ]
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState.cpp qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState.cpp
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState.cpp 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState.cpp 2017-06-10 12:52:48.259092758 +0200
+@@ -19,7 +19,7 @@
+ #include "SkImageEncoder.h"
+ #include "SkResourceCache.h"
+
+-#if defined(SK_ARM_HAS_NEON)
++#if !SK_ARM_NEON_IS_NONE
+ // These are defined in src/opts/SkBitmapProcState_arm_neon.cpp
+ extern const SkBitmapProcState::SampleProc32 gSkBitmapProcStateSample32_neon[];
+ extern void S16_D16_filter_DX_neon(const SkBitmapProcState&, const uint32_t*, int, uint16_t*);
+@@ -280,7 +280,7 @@
+ return false;
+ }
+
+-#if !defined(SK_ARM_HAS_NEON)
++#if !SK_ARM_NEON_IS_ALWAYS
+ static const SampleProc32 gSkBitmapProcStateSample32[] = {
+ S32_opaque_D32_nofilter_DXDY,
+ S32_alpha_D32_nofilter_DXDY,
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState_matrixProcs.cpp qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState_matrixProcs.cpp
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState_matrixProcs.cpp 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkBitmapProcState_matrixProcs.cpp 2017-06-10 12:52:48.259092758 +0200
+@@ -47,16 +47,16 @@
+ ///////////////////////////////////////////////////////////////////////////////
+
+ // Compile neon code paths if needed
+-#if defined(SK_ARM_HAS_NEON)
++#if !SK_ARM_NEON_IS_NONE
+
+ // These are defined in src/opts/SkBitmapProcState_matrixProcs_neon.cpp
+ extern const SkBitmapProcState::MatrixProc ClampX_ClampY_Procs_neon[];
+ extern const SkBitmapProcState::MatrixProc RepeatX_RepeatY_Procs_neon[];
+
+-#endif // defined(SK_ARM_HAS_NEON)
++#endif // !SK_ARM_NEON_IS_NONE
+
+ // Compile non-neon code path if needed
+-#if !defined(SK_ARM_HAS_NEON)
++#if !SK_ARM_NEON_IS_ALWAYS
+ #define MAKENAME(suffix) ClampX_ClampY ## suffix
+ #define TILEX_PROCF(fx, max) SkClampMax((fx) >> 16, max)
+ #define TILEY_PROCF(fy, max) SkClampMax((fy) >> 16, max)
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkBlitter_RGB16.cpp qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkBlitter_RGB16.cpp
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkBlitter_RGB16.cpp 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkBlitter_RGB16.cpp 2017-06-10 12:52:48.260092743 +0200
+@@ -20,7 +20,7 @@
+ uint32_t expanded32, unsigned maskRB);
+ #endif
+
+-#if defined(SK_ARM_HAS_NEON) && defined(SK_CPU_LENDIAN)
++#if SK_ARM_NEON_IS_ALWAYS && defined(SK_CPU_LENDIAN)
+ #include <arm_neon.h>
+ extern void SkRGB16BlitterBlitV_neon(uint16_t* device,
+ int height,
+@@ -381,7 +381,7 @@
+ unsigned maskRB = mask.fRowBytes - width;
+ uint32_t expanded32 = fExpandedRaw16;
+
+-#if defined(SK_ARM_HAS_NEON) && defined(SK_CPU_LENDIAN)
++#if SK_ARM_NEON_IS_ALWAYS && defined(SK_CPU_LENDIAN)
+ #define UNROLL 8
+ do {
+ int w = width;
+@@ -475,7 +475,7 @@
+ unsigned scale5 = SkAlpha255To256(alpha) >> 3;
+ uint32_t src32 = fExpandedRaw16 * scale5;
+ scale5 = 32 - scale5;
+-#if defined(SK_ARM_HAS_NEON) && defined(SK_CPU_LENDIAN)
++#if SK_ARM_NEON_IS_ALWAYS && defined(SK_CPU_LENDIAN)
+ SkRGB16BlitterBlitV_neon(device, height, deviceRB, scale5, src32);
+ #else
+ do {
+@@ -654,7 +654,7 @@
+ unsigned scale5 = SkAlpha255To256(alpha) * fScale >> (8 + 3);
+ uint32_t src32 = fExpandedRaw16 * scale5;
+ scale5 = 32 - scale5;
+-#if defined(SK_ARM_HAS_NEON) && defined(SK_CPU_LENDIAN)
++#if SK_ARM_NEON_IS_ALWAYS && defined(SK_CPU_LENDIAN)
+ SkRGB16BlitterBlitV_neon(device, height, deviceRB, scale5, src32);
+ #else
+ do {
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp 2017-06-10 13:10:57.090108380 +0200
+@@ -73,6 +73,124 @@
+ return features;
+ }
+
++#elif defined(SK_CPU_ARM32) && \
++ !defined(SK_BUILD_FOR_ANDROID)
++#include <unistd.h>
++#include <fcntl.h>
++#include <errno.h>
++#include <string.h>
++#include <pthread.h>
++
++ static uint32_t read_cpu_features() {
++ uint32_t features = 0;
++
++ // If we fail any of the following, assume we don't have NEON/VFPv4 instructions
++ // This allows us to return immediately in case of error.
++ bool have_neon = false;
++ bool have_vfpv4 = false;
++
++ // There is no user-accessible CPUID instruction on ARM that we can use.
++ // Instead, we must parse /proc/cpuinfo and look for the 'neon' feature.
++ // For example, here's a typical output (Nexus S running ICS 4.0.3):
++ /*
++ Processor : ARMv7 Processor rev 2 (v7l)
++ BogoMIPS : 994.65
++ Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3
++ CPU implementer : 0x41
++ CPU architecture: 7
++ CPU variant : 0x2
++ CPU part : 0xc08
++ CPU revision : 2
++
++ Hardware : herring
++ Revision : 000b
++ Serial : 3833c77d6dc000ec
++ */
++ char buffer[4096];
++
++ do {
++ // open /proc/cpuinfo
++ int fd = TEMP_FAILURE_RETRY(open("/proc/cpuinfo", O_RDONLY));
++ if (fd < 0) {
++ SkDebugf("Could not open /proc/cpuinfo: %s\n", strerror(errno));
++ break;
++ }
++
++ // Read the file. To simplify our search, we're going to place two
++ // sentinel '\n' characters: one at the start of the buffer, and one at
++ // the end. This means we reserve the first and last buffer bytes.
++ buffer[0] = '\n';
++ int size = TEMP_FAILURE_RETRY(read(fd, buffer+1, sizeof(buffer)-2));
++ close(fd);
++
++ if (size < 0) { // should not happen
++ SkDebugf("Could not read /proc/cpuinfo: %s\n", strerror(errno));
++ break;
++ }
++
++ SkDebugf("START /proc/cpuinfo:\n%.*s\nEND /proc/cpuinfo\n",
++ size, buffer+1);
++
++ // Compute buffer limit, and place final sentinel
++ char* buffer_end = buffer + 1 + size;
++ buffer_end[0] = '\n';
++
++ // Now, find a line that starts with "Features", i.e. look for
++ // '\nFeatures ' in our buffer.
++ const char features[] = "\nFeatures\t";
++ const size_t features_len = sizeof(features)-1;
++
++ char* line = (char*) memmem(buffer, buffer_end - buffer,
++ features, features_len);
++ if (line == nullptr) { // Weird, no Features line, bad kernel?
++ SkDebugf("Could not find a line starting with 'Features'"
++ "in /proc/cpuinfo ?\n");
++ break;
++ }
++
++ line += features_len; // Skip the "\nFeatures\t" prefix
++
++ // Find the end of the current line
++ char* line_end = (char*) memchr(line, '\n', buffer_end - line);
++ if (line_end == nullptr)
++ line_end = buffer_end;
++
++ // Now find an instance of 'neon' in the flags list. We want to
++ // ensure it's only 'neon' and not something fancy like 'noneon'
++ // so check that it follows a space.
++ const char neon[] = " neon";
++ const size_t neon_len = sizeof(neon)-1;
++ const char* flag = (const char*) memmem(line, line_end - line,
++ neon, neon_len);
++ // Ensure it is followed by a space or a newline.
++ if (flag != nullptr
++ && (flag[neon_len] == ' ' || flag[neon_len] == '\n')) {
++ // Fine, we support Arm NEON !
++ have_neon = true;
++ }
++
++ // Now find an instance of 'vfpv4' in the flags list. We want to
++ // ensure it's only 'vfpv4' and not something fancy like 'novfpv4'
++ // so check that it follows a space.
++ const char vfpv4[] = " vfpv4";
++ const size_t vfpv4_len = sizeof(vfpv4)-1;
++ const char* vflag = (const char*) memmem(line, line_end - line,
++ vfpv4, vfpv4_len);
++ // Ensure it is followed by a space or a newline.
++ if (vflag != nullptr
++ && (vflag[vfpv4_len] == ' ' || vflag[vfpv4_len] == '\n')) {
++ // Fine, we support Arm VFPv4 !
++ have_vfpv4 = true;
++ }
++
++ } while (0);
++
++ if (have_neon) { features |= SkCpu::NEON ; }
++ if (have_neon && have_vfpv4) { features |= SkCpu::NEON_FMA; }
++ if (have_vfpv4) { features |= SkCpu::VFP_FP16; }
++ return features;
++ }
++
+ #elif defined(SK_CPU_ARM64) && \
+ defined(SK_BUILD_FOR_ANDROID) && \
+ !defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkOpts.cpp qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkOpts.cpp
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkOpts.cpp 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkOpts.cpp 2017-06-10 12:56:42.672648362 +0200
+@@ -99,6 +99,7 @@
+ void Init_avx();
+ void Init_hsw();
+ void Init_crc32();
++ void Init_neon();
+
+ static void init() {
+ #if !defined(SK_BUILD_NO_OPTS)
+@@ -109,6 +110,9 @@
+ if (SkCpu::Supports(SkCpu::AVX )) { Init_avx(); }
+ if (SkCpu::Supports(SkCpu::HSW )) { Init_hsw(); }
+
++ #elif defined(SK_CPU_ARM32)
++ if (SkCpu::Supports(SkCpu::NEON)) { Init_neon(); }
++
+ #elif defined(SK_CPU_ARM64)
+ if (SkCpu::Supports(SkCpu::CRC32)) { Init_crc32(); }
+
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkUtilsArm.h qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkUtilsArm.h
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/core/SkUtilsArm.h 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/core/SkUtilsArm.h 2017-06-10 12:52:48.260092743 +0200
+@@ -8,12 +8,75 @@
+ #ifndef SkUtilsArm_DEFINED
+ #define SkUtilsArm_DEFINED
+
+-#include "SkTypes.h"
++#include "SkCpu.h"
++#include "SkUtils.h"
+
+-#if defined(SK_ARM_HAS_NEON)
+- #define SK_ARM_NEON_WRAP(x) (x ## _neon)
++// Define SK_ARM_NEON_MODE to one of the following values
++// corresponding respectively to:
++// - No ARM Neon support at all (not targetting ARMv7-A, or don't have NEON)
++// - Full ARM Neon support (i.e. assume the CPU always supports it)
++// - Optional ARM Neon support (i.e. probe CPU at runtime)
++//
++#define SK_ARM_NEON_MODE_NONE 0
++#define SK_ARM_NEON_MODE_ALWAYS 1
++#define SK_ARM_NEON_MODE_DYNAMIC 2
++
++#if defined(SK_ARM_HAS_OPTIONAL_NEON)
++# define SK_ARM_NEON_MODE SK_ARM_NEON_MODE_DYNAMIC
++#elif defined(SK_ARM_HAS_NEON)
++# define SK_ARM_NEON_MODE SK_ARM_NEON_MODE_ALWAYS
++#else
++# define SK_ARM_NEON_MODE SK_ARM_NEON_MODE_NONE
++#endif
++
++// Convenience test macros, always defined as 0 or 1
++#define SK_ARM_NEON_IS_NONE (SK_ARM_NEON_MODE == SK_ARM_NEON_MODE_NONE)
++#define SK_ARM_NEON_IS_ALWAYS (SK_ARM_NEON_MODE == SK_ARM_NEON_MODE_ALWAYS)
++#define SK_ARM_NEON_IS_DYNAMIC (SK_ARM_NEON_MODE == SK_ARM_NEON_MODE_DYNAMIC)
++
++// The sk_cpu_arm_has_neon() function returns true iff the target device
++// is ARMv7-A and supports Neon instructions. In DYNAMIC mode, this actually
++// probes the CPU at runtime (and caches the result).
++
++static inline bool sk_cpu_arm_has_neon(void) {
++#if SK_ARM_NEON_IS_NONE
++ return false;
+ #else
+- #define SK_ARM_NEON_WRAP(x) (x)
++ return SkCpu::Supports(SkCpu::NEON);
++#endif
++}
++
++// Use SK_ARM_NEON_WRAP(symbol) to map 'symbol' to a NEON-specific symbol
++// when applicable. This will transform 'symbol' differently depending on
++// the current NEON configuration, i.e.:
++//
++// NONE -> 'symbol'
++// ALWAYS -> 'symbol_neon'
++// DYNAMIC -> 'symbol' or 'symbol_neon' depending on runtime check.
++//
++// The goal is to simplify user code, for example:
++//
++// return SK_ARM_NEON_WRAP(do_something)(params);
++//
++// Replaces the equivalent:
++//
++// #if SK_ARM_NEON_IS_NONE
++// return do_something(params);
++// #elif SK_ARM_NEON_IS_ALWAYS
++// return do_something_neon(params);
++// #elif SK_ARM_NEON_IS_DYNAMIC
++// if (sk_cpu_arm_has_neon())
++// return do_something_neon(params);
++// else
++// return do_something(params);
++// #endif
++//
++#if SK_ARM_NEON_IS_NONE
++# define SK_ARM_NEON_WRAP(x) (x)
++#elif SK_ARM_NEON_IS_ALWAYS
++# define SK_ARM_NEON_WRAP(x) (x ## _neon)
++#elif SK_ARM_NEON_IS_DYNAMIC
++# define SK_ARM_NEON_WRAP(x) (sk_cpu_arm_has_neon() ? x ## _neon : x)
+ #endif
+
+ #endif // SkUtilsArm_DEFINED
+diff -Nur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/opts/SkOpts_neon.cpp qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/opts/SkOpts_neon.cpp
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/skia/src/opts/SkOpts_neon.cpp 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.9.0-skia-neon/src/3rdparty/chromium/third_party/skia/src/opts/SkOpts_neon.cpp 2017-06-10 12:52:48.259092758 +0200
+@@ -0,0 +1,54 @@
++/*
++ * Copyright 2015 Google Inc.
++ *
++ * Use of this source code is governed by a BSD-style license that can be
++ * found in the LICENSE file.
++ */
++
++#include "SkOpts.h"
++
++#define SK_OPTS_NS sk_neon
++#include "SkBlitMask_opts.h"
++#include "SkBlitRow_opts.h"
++#include "SkBlurImageFilter_opts.h"
++#include "SkColorCubeFilter_opts.h"
++#include "SkMorphologyImageFilter_opts.h"
++#include "SkSwizzler_opts.h"
++#include "SkTextureCompressor_opts.h"
++#include "SkXfermode_opts.h"
++
++namespace SkOpts {
++ void Init_neon() {
++ create_xfermode = sk_neon::create_xfermode;
++
++ box_blur_xx = sk_neon::box_blur_xx;
++ box_blur_xy = sk_neon::box_blur_xy;
++ box_blur_yx = sk_neon::box_blur_yx;
++
++ dilate_x = sk_neon::dilate_x;
++ dilate_y = sk_neon::dilate_y;
++ erode_x = sk_neon::erode_x;
++ erode_y = sk_neon::erode_y;
++
++ texture_compressor = sk_neon::texture_compressor;
++ fill_block_dimensions = sk_neon::fill_block_dimensions;
++
++ blit_mask_d32_a8 = sk_neon::blit_mask_d32_a8;
++
++ blit_row_color32 = sk_neon::blit_row_color32;
++ blit_row_s32a_opaque = sk_neon::blit_row_s32a_opaque;
++
++ color_cube_filter_span = sk_neon::color_cube_filter_span;
++
++ RGBA_to_BGRA = sk_neon::RGBA_to_BGRA;
++ RGBA_to_rgbA = sk_neon::RGBA_to_rgbA;
++ RGBA_to_bgrA = sk_neon::RGBA_to_bgrA;
++ RGB_to_RGB1 = sk_neon::RGB_to_RGB1;
++ RGB_to_BGR1 = sk_neon::RGB_to_BGR1;
++ gray_to_RGB1 = sk_neon::gray_to_RGB1;
++ grayA_to_RGBA = sk_neon::grayA_to_RGBA;
++ grayA_to_rgbA = sk_neon::grayA_to_rgbA;
++ inverted_CMYK_to_RGB1 = sk_neon::inverted_CMYK_to_RGB1;
++ inverted_CMYK_to_BGR1 = sk_neon::inverted_CMYK_to_BGR1;
++ }
++}
diff --git a/qtwebengine-opensource-src-5.9.0-system-icu-utf.patch b/qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
new file mode 100644
index 0000000..d35ba87
--- /dev/null
+++ b/qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
@@ -0,0 +1,376 @@
+diff -ur qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/BUILD.gn qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/base/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/BUILD.gn 2017-06-08 10:52:51.565409865 +0200
++++ qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/base/BUILD.gn 2017-06-08 11:13:47.297983554 +0200
+@@ -834,8 +834,6 @@
+ "third_party/dmg_fp/dmg_fp.h",
+ "third_party/dmg_fp/dtoa_wrapper.cc",
+ "third_party/dmg_fp/g_fmt.cc",
+- "third_party/icu/icu_utf.cc",
+- "third_party/icu/icu_utf.h",
+ "third_party/superfasthash/superfasthash.c",
+ "threading/non_thread_safe.h",
+ "threading/non_thread_safe_impl.cc",
+diff -ur qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/files/file_path.cc qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/base/files/file_path.cc
+--- qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/files/file_path.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/base/files/file_path.cc 2017-06-08 11:02:19.933803953 +0200
+@@ -18,7 +18,7 @@
+
+ #if defined(OS_MACOSX)
+ #include "base/mac/scoped_cftyperef.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+ #endif
+
+ #if defined(OS_WIN)
+@@ -1156,9 +1156,9 @@
+ int* index) {
+ int codepoint = 0;
+ while (*index < length && codepoint == 0) {
+- // CBU8_NEXT returns a value < 0 in error cases. For purposes of string
++ // U8_NEXT returns a value < 0 in error cases. For purposes of string
+ // comparison, we just use that value and flag it with DCHECK.
+- CBU8_NEXT(string, *index, length, codepoint);
++ U8_NEXT(string, *index, length, codepoint);
+ DCHECK_GT(codepoint, 0);
+ if (codepoint > 0) {
+ // Check if there is a subtable for this upper byte.
+diff -ur qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/json/json_parser.cc qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/base/json/json_parser.cc
+--- qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/json/json_parser.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/base/json/json_parser.cc 2017-06-08 11:05:52.045814002 +0200
+@@ -16,7 +16,7 @@
+ #include "base/strings/stringprintf.h"
+ #include "base/strings/utf_string_conversion_utils.h"
+ #include "base/strings/utf_string_conversions.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+ #include "base/values.h"
+
+ namespace base {
+@@ -630,21 +630,21 @@
+
+ while (CanConsume(1)) {
+ int start_index = index_;
+- pos_ = start_pos_ + index_; // CBU8_NEXT is postcrement.
+- CBU8_NEXT(start_pos_, index_, length, next_char);
++ pos_ = start_pos_ + index_; // U8_NEXT is postcrement.
++ U8_NEXT(start_pos_, index_, length, next_char);
+ if (next_char < 0 || !IsValidCharacter(next_char)) {
+ if ((options_ & JSON_REPLACE_INVALID_CHARACTERS) == 0) {
+ ReportError(JSONReader::JSON_UNSUPPORTED_ENCODING, 1);
+ return false;
+ }
+- CBU8_NEXT(start_pos_, start_index, length, next_char);
++ U8_NEXT(start_pos_, start_index, length, next_char);
+ string.Convert();
+ string.AppendString(kUnicodeReplacementString);
+ continue;
+ }
+
+ if (next_char == '"') {
+- --index_; // Rewind by one because of CBU8_NEXT.
++ --index_; // Rewind by one because of U8_NEXT.
+ out->Swap(&string);
+ return true;
+ }
+@@ -774,10 +774,10 @@
+
+ // If this is a high surrogate, consume the next code unit to get the
+ // low surrogate.
+- if (CBU16_IS_SURROGATE(code_unit16_high)) {
++ if (U16_IS_SURROGATE(code_unit16_high)) {
+ // Make sure this is the high surrogate. If not, it's an encoding
+ // error.
+- if (!CBU16_IS_SURROGATE_LEAD(code_unit16_high))
++ if (!U16_IS_SURROGATE_LEAD(code_unit16_high))
+ return false;
+
+ // Make sure that the token has more characters to consume the
+@@ -794,24 +794,24 @@
+
+ NextNChars(3);
+
+- if (!CBU16_IS_TRAIL(code_unit16_low)) {
++ if (!U16_IS_TRAIL(code_unit16_low)) {
+ return false;
+ }
+
+ uint32_t code_point =
+- CBU16_GET_SUPPLEMENTARY(code_unit16_high, code_unit16_low);
++ U16_GET_SUPPLEMENTARY(code_unit16_high, code_unit16_low);
+ if (!IsValidCharacter(code_point))
+ return false;
+
+ offset = 0;
+- CBU8_APPEND_UNSAFE(code_unit8, offset, code_point);
++ U8_APPEND_UNSAFE(code_unit8, offset, code_point);
+ } else {
+ // Not a surrogate.
+- DCHECK(CBU16_IS_SINGLE(code_unit16_high));
++ DCHECK(U16_IS_SINGLE(code_unit16_high));
+ if (!IsValidCharacter(code_unit16_high))
+ return false;
+
+- CBU8_APPEND_UNSAFE(code_unit8, offset, code_unit16_high);
++ U8_APPEND_UNSAFE(code_unit8, offset, code_unit16_high);
+ }
+
+ dest_string->append(code_unit8);
+@@ -828,9 +828,9 @@
+ } else {
+ char utf8_units[4] = { 0 };
+ int offset = 0;
+- CBU8_APPEND_UNSAFE(utf8_units, offset, point);
++ U8_APPEND_UNSAFE(utf8_units, offset, point);
+ dest->Convert();
+- // CBU8_APPEND_UNSAFE can overwrite up to 4 bytes, so utf8_units may not be
++ // U8_APPEND_UNSAFE can overwrite up to 4 bytes, so utf8_units may not be
+ // zero terminated at this point. |offset| contains the correct length.
+ dest->AppendString(std::string(utf8_units, offset));
+ }
+diff -ur qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/json/string_escape.cc qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/base/json/string_escape.cc
+--- qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/json/string_escape.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/base/json/string_escape.cc 2017-06-08 11:02:19.934803939 +0200
+@@ -14,7 +14,7 @@
+ #include "base/strings/stringprintf.h"
+ #include "base/strings/utf_string_conversion_utils.h"
+ #include "base/strings/utf_string_conversions.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+
+ namespace base {
+
+diff -ur qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/pattern.cc qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/base/strings/pattern.cc
+--- qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/pattern.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/base/strings/pattern.cc 2017-06-08 11:02:21.774778002 +0200
+@@ -4,13 +4,13 @@
+
+ #include "base/strings/pattern.h"
+
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+
+ namespace base {
+
+ namespace {
+
+-static bool IsWildcard(base_icu::UChar32 character) {
++static bool IsWildcard(UChar32 character) {
+ return character == '*' || character == '?';
+ }
+
+@@ -37,9 +37,9 @@
+ // Check if the chars match, if so, increment the ptrs.
+ const CHAR* pattern_next = *pattern;
+ const CHAR* string_next = *string;
+- base_icu::UChar32 pattern_char = next(&pattern_next, pattern_end);
++ UChar32 pattern_char = next(&pattern_next, pattern_end);
+ if (pattern_char == next(&string_next, string_end) &&
+- pattern_char != CBU_SENTINEL) {
++ pattern_char != U_SENTINEL) {
+ *pattern = pattern_next;
+ *string = string_next;
+ } else {
+@@ -133,20 +133,20 @@
+ }
+
+ struct NextCharUTF8 {
+- base_icu::UChar32 operator()(const char** p, const char* end) {
+- base_icu::UChar32 c;
++ UChar32 operator()(const char** p, const char* end) {
++ UChar32 c;
+ int offset = 0;
+- CBU8_NEXT(*p, offset, end - *p, c);
++ U8_NEXT(*p, offset, end - *p, c);
+ *p += offset;
+ return c;
+ }
+ };
+
+ struct NextCharUTF16 {
+- base_icu::UChar32 operator()(const char16** p, const char16* end) {
+- base_icu::UChar32 c;
++ UChar32 operator()(const char16** p, const char16* end) {
++ UChar32 c;
+ int offset = 0;
+- CBU16_NEXT(*p, offset, end - *p, c);
++ U16_NEXT(*p, offset, end - *p, c);
+ *p += offset;
+ return c;
+ }
+diff -ur qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/string_split.cc qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/base/strings/string_split.cc
+--- qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/string_split.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/base/strings/string_split.cc 2017-06-08 11:02:21.774778002 +0200
+@@ -8,7 +8,7 @@
+
+ #include "base/logging.h"
+ #include "base/strings/string_util.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+
+ namespace base {
+
+diff -ur qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/string_util.cc qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/base/strings/string_util.cc
+--- qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/string_util.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/base/strings/string_util.cc 2017-06-08 11:02:21.775777988 +0200
+@@ -25,7 +25,7 @@
+ #include "base/memory/singleton.h"
+ #include "base/strings/utf_string_conversion_utils.h"
+ #include "base/strings/utf_string_conversions.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+ #include "build/build_config.h"
+
+ namespace base {
+@@ -357,19 +357,19 @@
+ }
+ DCHECK_LE(byte_size,
+ static_cast<uint32_t>(std::numeric_limits<int32_t>::max()));
+- // Note: This cast is necessary because CBU8_NEXT uses int32_ts.
++ // Note: This cast is necessary because U8_NEXT uses int32_ts.
+ int32_t truncation_length = static_cast<int32_t>(byte_size);
+ int32_t char_index = truncation_length - 1;
+ const char* data = input.data();
+
+- // Using CBU8, we will move backwards from the truncation point
++ // Using U8, we will move backwards from the truncation point
+ // to the beginning of the string looking for a valid UTF8
+ // character. Once a full UTF8 character is found, we will
+ // truncate the string to the end of that character.
+ while (char_index >= 0) {
+ int32_t prev = char_index;
+- base_icu::UChar32 code_point = 0;
+- CBU8_NEXT(data, char_index, truncation_length, code_point);
++ UChar32 code_point = 0;
++ U8_NEXT(data, char_index, truncation_length, code_point);
+ if (!IsValidCharacter(code_point) ||
+ !IsValidCodepoint(code_point)) {
+ char_index = prev - 1;
+@@ -522,7 +522,7 @@
+
+ while (char_index < src_len) {
+ int32_t code_point;
+- CBU8_NEXT(src, char_index, src_len, code_point);
++ U8_NEXT(src, char_index, src_len, code_point);
+ if (!IsValidCharacter(code_point))
+ return false;
+ }
+diff -ur qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc
+--- qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc 2017-06-08 11:02:21.775777988 +0200
+@@ -4,7 +4,7 @@
+
+ #include "base/strings/utf_string_conversion_utils.h"
+
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+
+ namespace base {
+
+@@ -18,7 +18,7 @@
+ // use a signed type for code_point. But this function returns false
+ // on error anyway, so code_point_out is unsigned.
+ int32_t code_point;
+- CBU8_NEXT(src, *char_index, src_len, code_point);
++ U8_NEXT(src, *char_index, src_len, code_point);
+ *code_point_out = static_cast<uint32_t>(code_point);
+
+ // The ICU macro above moves to the next char, we want to point to the last
+@@ -33,16 +33,16 @@
+ int32_t src_len,
+ int32_t* char_index,
+ uint32_t* code_point) {
+- if (CBU16_IS_SURROGATE(src[*char_index])) {
+- if (!CBU16_IS_SURROGATE_LEAD(src[*char_index]) ||
++ if (U16_IS_SURROGATE(src[*char_index])) {
++ if (!U16_IS_SURROGATE_LEAD(src[*char_index]) ||
+ *char_index + 1 >= src_len ||
+- !CBU16_IS_TRAIL(src[*char_index + 1])) {
++ !U16_IS_TRAIL(src[*char_index + 1])) {
+ // Invalid surrogate pair.
+ return false;
+ }
+
+ // Valid surrogate pair.
+- *code_point = CBU16_GET_SUPPLEMENTARY(src[*char_index],
++ *code_point = U16_GET_SUPPLEMENTARY(src[*char_index],
+ src[*char_index + 1]);
+ (*char_index)++;
+ } else {
+@@ -76,30 +76,30 @@
+ }
+
+
+- // CBU8_APPEND_UNSAFE can append up to 4 bytes.
++ // U8_APPEND_UNSAFE can append up to 4 bytes.
+ size_t char_offset = output->length();
+ size_t original_char_offset = char_offset;
+- output->resize(char_offset + CBU8_MAX_LENGTH);
++ output->resize(char_offset + U8_MAX_LENGTH);
+
+- CBU8_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
++ U8_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
+
+- // CBU8_APPEND_UNSAFE will advance our pointer past the inserted character, so
++ // U8_APPEND_UNSAFE will advance our pointer past the inserted character, so
+ // it will represent the new length of the string.
+ output->resize(char_offset);
+ return char_offset - original_char_offset;
+ }
+
+ size_t WriteUnicodeCharacter(uint32_t code_point, string16* output) {
+- if (CBU16_LENGTH(code_point) == 1) {
++ if (U16_LENGTH(code_point) == 1) {
+ // Thie code point is in the Basic Multilingual Plane (BMP).
+ output->push_back(static_cast<char16>(code_point));
+ return 1;
+ }
+ // Non-BMP characters use a double-character encoding.
+ size_t char_offset = output->length();
+- output->resize(char_offset + CBU16_MAX_LENGTH);
+- CBU16_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
+- return CBU16_MAX_LENGTH;
++ output->resize(char_offset + U16_MAX_LENGTH);
++ U16_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
++ return U16_MAX_LENGTH;
+ }
+
+ // Generalized Unicode converter -----------------------------------------------
+diff -ur qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py
+--- qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py 2017-06-08 10:55:05.945934291 +0200
++++ qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py 2017-06-08 11:14:16.956570568 +0200
+@@ -472,7 +472,6 @@
+ 'base/task_scheduler/task_traits.cc',
+ 'base/third_party/dmg_fp/dtoa_wrapper.cc',
+ 'base/third_party/dmg_fp/g_fmt.cc',
+- 'base/third_party/icu/icu_utf.cc',
+ 'base/threading/non_thread_safe_impl.cc',
+ 'base/threading/post_task_and_reply_impl.cc',
+ 'base/threading/sequenced_task_runner_handle.cc',
+@@ -574,7 +573,7 @@
+ }
+
+ if is_linux:
+- libs.extend(['-lrt', '-lnspr4'])
++ libs.extend(['-lrt', '-lnspr4', '-licuuc'])
+ ldflags.extend(['-pthread'])
+
+ static_libraries['xdg_user_dirs'] = {
+diff -ur qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc
+--- qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-system-icu-utf/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc 2017-06-08 11:02:21.776777974 +0200
+@@ -5,13 +5,13 @@
+ #include "ui/gfx/utf16_indexing.h"
+
+ #include "base/logging.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+
+ namespace gfx {
+
+ bool IsValidCodePointIndex(const base::string16& s, size_t index) {
+ return index == 0 || index == s.length() ||
+- !(CBU16_IS_TRAIL(s[index]) && CBU16_IS_LEAD(s[index - 1]));
++ !(U16_IS_TRAIL(s[index]) && U16_IS_LEAD(s[index - 1]));
+ }
+
+ ptrdiff_t UTF16IndexToOffset(const base::string16& s, size_t base, size_t pos) {
diff --git a/qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch b/qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
new file mode 100644
index 0000000..33dcc91
--- /dev/null
+++ b/qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
@@ -0,0 +1,66 @@
+diff -ur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/base/BUILD.gn qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/base/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/BUILD.gn 2017-06-08 10:52:51.565409865 +0200
+@@ -49,6 +49,9 @@
+ "-Wno-char-subscripts",
+ ]
+ }
++ ldflags = [
++ "-lnspr4",
++ ]
+ }
+
+ config("base_implementation") {
+@@ -833,8 +836,6 @@
+ "third_party/dmg_fp/g_fmt.cc",
+ "third_party/icu/icu_utf.cc",
+ "third_party/icu/icu_utf.h",
+- "third_party/nspr/prtime.cc",
+- "third_party/nspr/prtime.h",
+ "third_party/superfasthash/superfasthash.c",
+ "threading/non_thread_safe.h",
+ "threading/non_thread_safe_impl.cc",
+diff -ur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/base/time/pr_time_unittest.cc qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/time/pr_time_unittest.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/base/time/pr_time_unittest.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/time/pr_time_unittest.cc 2017-06-08 10:58:06.743413247 +0200
+@@ -7,7 +7,7 @@
+
+ #include "base/compiler_specific.h"
+ #include "base/macros.h"
+-#include "base/third_party/nspr/prtime.h"
++#include <nspr4/prtime.h>
+ #include "base/time/time.h"
+ #include "build/build_config.h"
+ #include "testing/gtest/include/gtest/gtest.h"
+diff -ur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/base/time/time.cc qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/time/time.cc
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/base/time/time.cc 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/base/time/time.cc 2017-06-08 10:58:09.557373071 +0200
+@@ -14,7 +14,7 @@
+ #include "base/logging.h"
+ #include "base/macros.h"
+ #include "base/strings/stringprintf.h"
+-#include "base/third_party/nspr/prtime.h"
++#include <nspr4/prtime.h>
+ #include "build/build_config.h"
+
+ namespace base {
+diff -ur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-system-nspr-prtime/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py 2017-06-08 10:55:05.945934291 +0200
+@@ -473,7 +473,6 @@
+ 'base/third_party/dmg_fp/dtoa_wrapper.cc',
+ 'base/third_party/dmg_fp/g_fmt.cc',
+ 'base/third_party/icu/icu_utf.cc',
+- 'base/third_party/nspr/prtime.cc',
+ 'base/threading/non_thread_safe_impl.cc',
+ 'base/threading/post_task_and_reply_impl.cc',
+ 'base/threading/sequenced_task_runner_handle.cc',
+@@ -575,7 +574,7 @@
+ }
+
+ if is_linux:
+- libs.extend(['-lrt'])
++ libs.extend(['-lrt', '-lnspr4'])
+ ldflags.extend(['-pthread'])
+
+ static_libraries['xdg_user_dirs'] = {
diff --git a/qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch b/qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch
new file mode 100644
index 0000000..a21802a
--- /dev/null
+++ b/qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch
@@ -0,0 +1,14 @@
+diff -ur qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn qtwebengine-opensource-src-5.9.0-webrtc-neon-detect/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn
+--- qtwebengine-opensource-src-5.9.0/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn 2017-05-18 16:51:44.000000000 +0200
++++ qtwebengine-opensource-src-5.9.0-webrtc-neon-detect/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn 2017-06-10 13:20:14.959007488 +0200
+@@ -93,9 +93,7 @@
+ if (is_linux) {
+ defines += [ "WEBRTC_THREAD_RR" ]
+
+- if (!build_with_chromium) {
+- deps += [ ":cpu_features_linux" ]
+- }
++ deps += [ ":cpu_features_linux" ]
+
+ libs += [ "rt" ]
+ }
diff --git a/sources b/sources
index 805aa50..bf7d94e 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (qtwebengine-opensource-src-5.8.0-clean.tar.xz) = 18a49156da8d2e21fb0fe4781646c753c82d616964dd14b0651a1097b2a79a5ddb852dbdcc838d1e9e9a4ec460dd77fbab78a03672f5e827ab061fdf97db4a25
+SHA512 (qtwebengine-opensource-src-5.9.0-clean.tar.xz) = 523568e690afa7dc4657458daa4c424a3006e32f4bcfbe015b90813b44967b36d9ec3263b4281089d33edd6e75d5b948cddc42792939fcf6aa71d051fc6937a8
commit bf7ab1afddf6e87a6fd10a02c07b8ff752ff5627
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Wed Jun 7 19:36:42 2017 +0200
clean_ffmpeg.sh: Remove obsolete sed hack
The problematic unused #include was removed from the upstream
libavcodec/arm/fft_init_arm.c.
diff --git a/clean_ffmpeg.sh b/clean_ffmpeg.sh
index af4c3ef..6b33ac9 100755
--- a/clean_ffmpeg.sh
+++ b/clean_ffmpeg.sh
@@ -270,9 +270,6 @@ done
mkdir -p ../tmp_ffmpeg/chromium
cp -pr chromium/config ../tmp_ffmpeg/chromium/
-# unused include
-sed -i -e '/synth_filter\.h/d' ../tmp_ffmpeg/libavcodec/arm/fft_init_arm.c
-
cd ..
rm -rf ffmpeg
mv tmp_ffmpeg ffmpeg
commit be68fdf87b4bc25b77832b6868efda4d89dd2b36
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Wed Jun 7 19:33:48 2017 +0200
Update get_free_ffmpeg_source_files.py from Chromium dist-git
There are no longer 'ffmpeg_branding == "Chromium"' conditionals, we
need to key on the absence of 'ffmpeg_branding == "Chrome"' or
'ffmpeg_branding == "ChromeOS"' conditionals instead.
diff --git a/get_free_ffmpeg_source_files.py b/get_free_ffmpeg_source_files.py
index e659d63..5a0e421 100755
--- a/get_free_ffmpeg_source_files.py
+++ b/get_free_ffmpeg_source_files.py
@@ -50,19 +50,24 @@ def parse_ffmpeg_gyni_file(gyni_path, arch_not_arm):
# Get all the sections.
sections = re.findall(r"if (.*?})", content, re.DOTALL)
for section in sections:
- # Get all the conditions (first group) and sources (second group)for the
+ # Get all the conditions (first group) and sources (second group) for the
# current section.
blocks = re.findall(r"(\(.*?\))\s\{(.*?)\}", section, re.DOTALL)
for block in blocks:
conditions = re.findall(r"\(?\((.*?)\)", block[0])
+ inserted = False
for condition in conditions:
- limitations = ['is_linux', 'ffmpeg_branding == "Chromium"']
- if all(limitation in condition for limitation in limitations):
+ if inserted:
+ break
+ limitations = ['ffmpeg_branding == "Chrome"', 'ffmpeg_branding == "ChromeOS"']
+ if ('is_linux' in condition) and not any(limitation in condition for limitation in limitations):
if (arch_not_arm):
if ('x64' in condition) or ('x86' in condition):
parse_sources (block[1], output_sources, arch_not_arm)
+ inserted = True
else:
parse_sources (block[1], output_sources, arch_not_arm)
+ inserted = True
print ' '.join(output_sources)
commit c8151228d073a702ceb0fb1b97bcca2d9256bfb0
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Tue Jun 6 00:00:55 2017 +0200
Revert "Prep webengine 5.9.0"
This reverts commit 7816e88f62f2da31954d17cc5c755d88ebe1625f.
I already told you last time (5.8) that this way of maintaining patches
(importing them all into git and reexporting them from there each time)
is not how I work (I want only those patches rebased and renamed that
actually need rebasing) and that you are only causing me more work.
Please keep your hands off my package from now on.
diff --git a/.gitignore b/.gitignore
index 3eee6b2..0983a72 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,4 +5,3 @@
/qtwebengine-opensource-src-5.7.0-clean.tar.xz
/qtwebengine-opensource-src-5.7.1-clean.tar.xz
/qtwebengine-opensource-src-5.8.0-clean.tar.xz
-/qtwebengine-opensource-src-5.9.0-clean.tar.xz
diff --git a/0001-qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch b/0001-qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch
deleted file mode 100644
index 7c48a10..0000000
--- a/0001-qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From bef192680ca3c78493c064d7b4a21b79afa92c3e Mon Sep 17 00:00:00 2001
-From: Helio Chissini de Castro <helio(a)kde.org>
-Date: Wed, 31 May 2017 10:41:10 +0200
-Subject: [PATCH] qtwebengine-opensource-src-5.9.0-webrtc-neon-detect
-
----
- src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn
-index 8bed25e27..b0cc2a5e3 100644
---- a/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn
-+++ b/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn
-@@ -93,9 +93,7 @@ rtc_static_library("system_wrappers") {
- if (is_linux) {
- defines += [ "WEBRTC_THREAD_RR" ]
-
-- if (!build_with_chromium) {
-- deps += [ ":cpu_features_linux" ]
-- }
-+ deps += [ ":cpu_features_linux" ]
-
- libs += [ "rt" ]
- }
---
-2.13.0
-
diff --git a/0002-qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch b/0002-qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
deleted file mode 100644
index 5bc39ee..0000000
--- a/0002-qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 60434d58353db516e795e12817e1953700f9e5e4 Mon Sep 17 00:00:00 2001
-From: Helio Chissini de Castro <helio(a)kde.org>
-Date: Wed, 31 May 2017 10:46:36 +0200
-Subject: [PATCH] qtwebengine-opensource-src-5.9.0-system-nspr-prtime
-
----
- src/3rdparty/chromium/base/BUILD.gn | 2 --
- src/3rdparty/chromium/base/time/pr_time_unittest.cc | 2 +-
- src/3rdparty/chromium/base/time/time.cc | 2 +-
- 3 files changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/src/3rdparty/chromium/base/BUILD.gn b/src/3rdparty/chromium/base/BUILD.gn
-index f2672cba7..66f2be1ff 100644
---- a/src/3rdparty/chromium/base/BUILD.gn
-+++ b/src/3rdparty/chromium/base/BUILD.gn
-@@ -833,8 +833,6 @@ component("base") {
- "third_party/dmg_fp/g_fmt.cc",
- "third_party/icu/icu_utf.cc",
- "third_party/icu/icu_utf.h",
-- "third_party/nspr/prtime.cc",
-- "third_party/nspr/prtime.h",
- "third_party/superfasthash/superfasthash.c",
- "threading/non_thread_safe.h",
- "threading/non_thread_safe_impl.cc",
-diff --git a/src/3rdparty/chromium/base/time/pr_time_unittest.cc b/src/3rdparty/chromium/base/time/pr_time_unittest.cc
-index 3f1a348ae..8f1a11e51 100644
---- a/src/3rdparty/chromium/base/time/pr_time_unittest.cc
-+++ b/src/3rdparty/chromium/base/time/pr_time_unittest.cc
-@@ -7,7 +7,7 @@
-
- #include "base/compiler_specific.h"
- #include "base/macros.h"
--#include "base/third_party/nspr/prtime.h"
-+#include <nspr4/prtime.h>
- #include "base/time/time.h"
- #include "build/build_config.h"
- #include "testing/gtest/include/gtest/gtest.h"
-diff --git a/src/3rdparty/chromium/base/time/time.cc b/src/3rdparty/chromium/base/time/time.cc
-index 4e942015f..29fde71dd 100644
---- a/src/3rdparty/chromium/base/time/time.cc
-+++ b/src/3rdparty/chromium/base/time/time.cc
-@@ -13,8 +13,8 @@
- #include "base/lazy_instance.h"
- #include "base/logging.h"
- #include "base/macros.h"
-+#include <nspr4/prtime.h>
- #include "base/strings/stringprintf.h"
--#include "base/third_party/nspr/prtime.h"
- #include "build/build_config.h"
-
- namespace base {
---
-2.13.0
-
diff --git a/0003-qtwebengine-opensource-src-5.9.0-system-icu-utf.patch b/0003-qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
deleted file mode 100644
index c7fc67f..0000000
--- a/0003-qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
+++ /dev/null
@@ -1,552 +0,0 @@
-From 63abd7883643841941505c82d42589d8d6814478 Mon Sep 17 00:00:00 2001
-From: Helio Chissini de Castro <helio(a)kde.org>
-Date: Wed, 31 May 2017 11:16:12 +0200
-Subject: [PATCH] qtwebengine-opensource-src-5.9.0-system-icu-utf
-
----
- src/3rdparty/chromium/base/BUILD.gn | 2 --
- src/3rdparty/chromium/base/files/file_path.cc | 6 ++---
- src/3rdparty/chromium/base/json/json_parser.cc | 28 ++++++++++----------
- src/3rdparty/chromium/base/json/string_escape.cc | 2 +-
- src/3rdparty/chromium/base/strings/pattern.cc | 9 +++----
- src/3rdparty/chromium/base/strings/string_split.cc | 2 +-
- src/3rdparty/chromium/base/strings/string_util.cc | 10 ++++----
- .../base/strings/utf_string_conversion_utils.cc | 28 ++++++++++----------
- .../chromium/base/third_party/icu/icu_utf.cc | 30 +++++++++++-----------
- .../browser/devtools/devtools_io_context.cc | 4 +--
- .../chromium/net/cert/internal/parse_name.cc | 6 ++---
- .../chromium/ui/base/ime/input_method_chromeos.cc | 2 +-
- src/3rdparty/chromium/ui/gfx/utf16_indexing.cc | 4 +--
- 13 files changed, 65 insertions(+), 68 deletions(-)
-
-diff --git a/src/3rdparty/chromium/base/BUILD.gn b/src/3rdparty/chromium/base/BUILD.gn
-index 66f2be1ff..51faf08ad 100644
---- a/src/3rdparty/chromium/base/BUILD.gn
-+++ b/src/3rdparty/chromium/base/BUILD.gn
-@@ -831,8 +831,6 @@ component("base") {
- "third_party/dmg_fp/dmg_fp.h",
- "third_party/dmg_fp/dtoa_wrapper.cc",
- "third_party/dmg_fp/g_fmt.cc",
-- "third_party/icu/icu_utf.cc",
-- "third_party/icu/icu_utf.h",
- "third_party/superfasthash/superfasthash.c",
- "threading/non_thread_safe.h",
- "threading/non_thread_safe_impl.cc",
-diff --git a/src/3rdparty/chromium/base/files/file_path.cc b/src/3rdparty/chromium/base/files/file_path.cc
-index cff862ae1..b17b46e5f 100644
---- a/src/3rdparty/chromium/base/files/file_path.cc
-+++ b/src/3rdparty/chromium/base/files/file_path.cc
-@@ -18,7 +18,7 @@
-
- #if defined(OS_MACOSX)
- #include "base/mac/scoped_cftyperef.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
- #endif
-
- #if defined(OS_WIN)
-@@ -1156,9 +1156,9 @@ inline int HFSReadNextNonIgnorableCodepoint(const char* string,
- int* index) {
- int codepoint = 0;
- while (*index < length && codepoint == 0) {
-- // CBU8_NEXT returns a value < 0 in error cases. For purposes of string
-+ // U8_NEXT returns a value < 0 in error cases. For purposes of string
- // comparison, we just use that value and flag it with DCHECK.
-- CBU8_NEXT(string, *index, length, codepoint);
-+ U8_NEXT(string, *index, length, codepoint);
- DCHECK_GT(codepoint, 0);
- if (codepoint > 0) {
- // Check if there is a subtable for this upper byte.
-diff --git a/src/3rdparty/chromium/base/json/json_parser.cc b/src/3rdparty/chromium/base/json/json_parser.cc
-index cd427da9e..82ff9773c 100644
---- a/src/3rdparty/chromium/base/json/json_parser.cc
-+++ b/src/3rdparty/chromium/base/json/json_parser.cc
-@@ -16,7 +16,7 @@
- #include "base/strings/stringprintf.h"
- #include "base/strings/utf_string_conversion_utils.h"
- #include "base/strings/utf_string_conversions.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
- #include "base/values.h"
-
- namespace base {
-@@ -630,21 +630,21 @@ bool JSONParser::ConsumeStringRaw(StringBuilder* out) {
-
- while (CanConsume(1)) {
- int start_index = index_;
-- pos_ = start_pos_ + index_; // CBU8_NEXT is postcrement.
-- CBU8_NEXT(start_pos_, index_, length, next_char);
-+ pos_ = start_pos_ + index_; // U8_NEXT is postcrement.
-+ U8_NEXT(start_pos_, index_, length, next_char);
- if (next_char < 0 || !IsValidCharacter(next_char)) {
- if ((options_ & JSON_REPLACE_INVALID_CHARACTERS) == 0) {
- ReportError(JSONReader::JSON_UNSUPPORTED_ENCODING, 1);
- return false;
- }
-- CBU8_NEXT(start_pos_, start_index, length, next_char);
-+ U8_NEXT(start_pos_, start_index, length, next_char);
- string.Convert();
- string.AppendString(kUnicodeReplacementString);
- continue;
- }
-
- if (next_char == '"') {
-- --index_; // Rewind by one because of CBU8_NEXT.
-+ --index_; // Rewind by one because of U8_NEXT.
- out->Swap(&string);
- return true;
- }
-@@ -774,10 +774,10 @@ bool JSONParser::DecodeUTF16(std::string* dest_string) {
-
- // If this is a high surrogate, consume the next code unit to get the
- // low surrogate.
-- if (CBU16_IS_SURROGATE(code_unit16_high)) {
-+ if (U16_IS_SURROGATE(code_unit16_high)) {
- // Make sure this is the high surrogate. If not, it's an encoding
- // error.
-- if (!CBU16_IS_SURROGATE_LEAD(code_unit16_high))
-+ if (!U16_IS_SURROGATE_LEAD(code_unit16_high))
- return false;
-
- // Make sure that the token has more characters to consume the
-@@ -794,24 +794,24 @@ bool JSONParser::DecodeUTF16(std::string* dest_string) {
-
- NextNChars(3);
-
-- if (!CBU16_IS_TRAIL(code_unit16_low)) {
-+ if (!U16_IS_TRAIL(code_unit16_low)) {
- return false;
- }
-
- uint32_t code_point =
-- CBU16_GET_SUPPLEMENTARY(code_unit16_high, code_unit16_low);
-+ U16_GET_SUPPLEMENTARY(code_unit16_high, code_unit16_low);
- if (!IsValidCharacter(code_point))
- return false;
-
- offset = 0;
-- CBU8_APPEND_UNSAFE(code_unit8, offset, code_point);
-+ U8_APPEND_UNSAFE(code_unit8, offset, code_point);
- } else {
- // Not a surrogate.
-- DCHECK(CBU16_IS_SINGLE(code_unit16_high));
-+ DCHECK(U16_IS_SINGLE(code_unit16_high));
- if (!IsValidCharacter(code_unit16_high))
- return false;
-
-- CBU8_APPEND_UNSAFE(code_unit8, offset, code_unit16_high);
-+ U8_APPEND_UNSAFE(code_unit8, offset, code_unit16_high);
- }
-
- dest_string->append(code_unit8);
-@@ -828,9 +828,9 @@ void JSONParser::DecodeUTF8(const int32_t& point, StringBuilder* dest) {
- } else {
- char utf8_units[4] = { 0 };
- int offset = 0;
-- CBU8_APPEND_UNSAFE(utf8_units, offset, point);
-+ U8_APPEND_UNSAFE(utf8_units, offset, point);
- dest->Convert();
-- // CBU8_APPEND_UNSAFE can overwrite up to 4 bytes, so utf8_units may not be
-+ // U8_APPEND_UNSAFE can overwrite up to 4 bytes, so utf8_units may not be
- // zero terminated at this point. |offset| contains the correct length.
- dest->AppendString(std::string(utf8_units, offset));
- }
-diff --git a/src/3rdparty/chromium/base/json/string_escape.cc b/src/3rdparty/chromium/base/json/string_escape.cc
-index f67fa93bf..907b80a73 100644
---- a/src/3rdparty/chromium/base/json/string_escape.cc
-+++ b/src/3rdparty/chromium/base/json/string_escape.cc
-@@ -14,7 +14,7 @@
- #include "base/strings/stringprintf.h"
- #include "base/strings/utf_string_conversion_utils.h"
- #include "base/strings/utf_string_conversions.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
-
- namespace base {
-
-diff --git a/src/3rdparty/chromium/base/strings/pattern.cc b/src/3rdparty/chromium/base/strings/pattern.cc
-index af30aab86..7df8f7255 100644
---- a/src/3rdparty/chromium/base/strings/pattern.cc
-+++ b/src/3rdparty/chromium/base/strings/pattern.cc
-@@ -3,8 +3,7 @@
- // found in the LICENSE file.
-
- #include "base/strings/pattern.h"
--
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
-
- namespace base {
-
-@@ -39,7 +38,7 @@ static void EatSameChars(const CHAR** pattern, const CHAR* pattern_end,
- const CHAR* string_next = *string;
- base_icu::UChar32 pattern_char = next(&pattern_next, pattern_end);
- if (pattern_char == next(&string_next, string_end) &&
-- pattern_char != CBU_SENTINEL) {
-+ pattern_char != U_SENTINEL) {
- *pattern = pattern_next;
- *string = string_next;
- } else {
-@@ -136,7 +135,7 @@ struct NextCharUTF8 {
- base_icu::UChar32 operator()(const char** p, const char* end) {
- base_icu::UChar32 c;
- int offset = 0;
-- CBU8_NEXT(*p, offset, end - *p, c);
-+ U8_NEXT(*p, offset, end - *p, c);
- *p += offset;
- return c;
- }
-@@ -146,7 +145,7 @@ struct NextCharUTF16 {
- base_icu::UChar32 operator()(const char16** p, const char16* end) {
- base_icu::UChar32 c;
- int offset = 0;
-- CBU16_NEXT(*p, offset, end - *p, c);
-+ U16_NEXT(*p, offset, end - *p, c);
- *p += offset;
- return c;
- }
-diff --git a/src/3rdparty/chromium/base/strings/string_split.cc b/src/3rdparty/chromium/base/strings/string_split.cc
-index a8180b24d..ac771a0f0 100644
---- a/src/3rdparty/chromium/base/strings/string_split.cc
-+++ b/src/3rdparty/chromium/base/strings/string_split.cc
-@@ -8,7 +8,7 @@
-
- #include "base/logging.h"
- #include "base/strings/string_util.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
-
- namespace base {
-
-diff --git a/src/3rdparty/chromium/base/strings/string_util.cc b/src/3rdparty/chromium/base/strings/string_util.cc
-index cb668ed7f..542f12819 100644
---- a/src/3rdparty/chromium/base/strings/string_util.cc
-+++ b/src/3rdparty/chromium/base/strings/string_util.cc
-@@ -25,7 +25,7 @@
- #include "base/memory/singleton.h"
- #include "base/strings/utf_string_conversion_utils.h"
- #include "base/strings/utf_string_conversions.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
- #include "build/build_config.h"
-
- namespace base {
-@@ -357,19 +357,19 @@ void TruncateUTF8ToByteSize(const std::string& input,
- }
- DCHECK_LE(byte_size,
- static_cast<uint32_t>(std::numeric_limits<int32_t>::max()));
-- // Note: This cast is necessary because CBU8_NEXT uses int32_ts.
-+ // Note: This cast is necessary because U8_NEXT uses int32_ts.
- int32_t truncation_length = static_cast<int32_t>(byte_size);
- int32_t char_index = truncation_length - 1;
- const char* data = input.data();
-
-- // Using CBU8, we will move backwards from the truncation point
-+ // Using U8, we will move backwards from the truncation point
- // to the beginning of the string looking for a valid UTF8
- // character. Once a full UTF8 character is found, we will
- // truncate the string to the end of that character.
- while (char_index >= 0) {
- int32_t prev = char_index;
- base_icu::UChar32 code_point = 0;
-- CBU8_NEXT(data, char_index, truncation_length, code_point);
-+ U8_NEXT(data, char_index, truncation_length, code_point);
- if (!IsValidCharacter(code_point) ||
- !IsValidCodepoint(code_point)) {
- char_index = prev - 1;
-@@ -522,7 +522,7 @@ bool IsStringUTF8(const StringPiece& str) {
-
- while (char_index < src_len) {
- int32_t code_point;
-- CBU8_NEXT(src, char_index, src_len, code_point);
-+ U8_NEXT(src, char_index, src_len, code_point);
- if (!IsValidCharacter(code_point))
- return false;
- }
-diff --git a/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc b/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc
-index 3101a6028..7f7d84b3c 100644
---- a/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc
-+++ b/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc
-@@ -4,7 +4,7 @@
-
- #include "base/strings/utf_string_conversion_utils.h"
-
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
-
- namespace base {
-
-@@ -18,7 +18,7 @@ bool ReadUnicodeCharacter(const char* src,
- // use a signed type for code_point. But this function returns false
- // on error anyway, so code_point_out is unsigned.
- int32_t code_point;
-- CBU8_NEXT(src, *char_index, src_len, code_point);
-+ U8_NEXT(src, *char_index, src_len, code_point);
- *code_point_out = static_cast<uint32_t>(code_point);
-
- // The ICU macro above moves to the next char, we want to point to the last
-@@ -33,16 +33,16 @@ bool ReadUnicodeCharacter(const char16* src,
- int32_t src_len,
- int32_t* char_index,
- uint32_t* code_point) {
-- if (CBU16_IS_SURROGATE(src[*char_index])) {
-- if (!CBU16_IS_SURROGATE_LEAD(src[*char_index]) ||
-+ if (U16_IS_SURROGATE(src[*char_index])) {
-+ if (!U16_IS_SURROGATE_LEAD(src[*char_index]) ||
- *char_index + 1 >= src_len ||
-- !CBU16_IS_TRAIL(src[*char_index + 1])) {
-+ !U16_IS_TRAIL(src[*char_index + 1])) {
- // Invalid surrogate pair.
- return false;
- }
-
- // Valid surrogate pair.
-- *code_point = CBU16_GET_SUPPLEMENTARY(src[*char_index],
-+ *code_point = U16_GET_SUPPLEMENTARY(src[*char_index],
- src[*char_index + 1]);
- (*char_index)++;
- } else {
-@@ -76,30 +76,30 @@ size_t WriteUnicodeCharacter(uint32_t code_point, std::string* output) {
- }
-
-
-- // CBU8_APPEND_UNSAFE can append up to 4 bytes.
-+ // U8_APPEND_UNSAFE can append up to 4 bytes.
- size_t char_offset = output->length();
- size_t original_char_offset = char_offset;
-- output->resize(char_offset + CBU8_MAX_LENGTH);
-+ output->resize(char_offset + U8_MAX_LENGTH);
-
-- CBU8_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
-+ U8_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
-
-- // CBU8_APPEND_UNSAFE will advance our pointer past the inserted character, so
-+ // U8_APPEND_UNSAFE will advance our pointer past the inserted character, so
- // it will represent the new length of the string.
- output->resize(char_offset);
- return char_offset - original_char_offset;
- }
-
- size_t WriteUnicodeCharacter(uint32_t code_point, string16* output) {
-- if (CBU16_LENGTH(code_point) == 1) {
-+ if (U16_LENGTH(code_point) == 1) {
- // Thie code point is in the Basic Multilingual Plane (BMP).
- output->push_back(static_cast<char16>(code_point));
- return 1;
- }
- // Non-BMP characters use a double-character encoding.
- size_t char_offset = output->length();
-- output->resize(char_offset + CBU16_MAX_LENGTH);
-- CBU16_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
-- return CBU16_MAX_LENGTH;
-+ output->resize(char_offset + U16_MAX_LENGTH);
-+ U16_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
-+ return U16_MAX_LENGTH;
- }
-
- // Generalized Unicode converter -----------------------------------------------
-diff --git a/src/3rdparty/chromium/base/third_party/icu/icu_utf.cc b/src/3rdparty/chromium/base/third_party/icu/icu_utf.cc
-index 2b67c5d9c..7ca6a6e0f 100644
---- a/src/3rdparty/chromium/base/third_party/icu/icu_utf.cc
-+++ b/src/3rdparty/chromium/base/third_party/icu/icu_utf.cc
-@@ -17,7 +17,7 @@
- * that would otherwise be too long as macros.
- */
-
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
-
- namespace base_icu {
-
-@@ -35,14 +35,14 @@ namespace base_icu {
- *
- * @deprecated ICU 2.4. Obsolete, see utf_old.h.
- */
--#define CBUTF8_ERROR_VALUE_1 0x15
-+#define UTF8_ERROR_VALUE_1 0x15
-
- /**
- * See documentation on UTF8_ERROR_VALUE_1 for details.
- *
- * @deprecated ICU 2.4. Obsolete, see utf_old.h.
- */
--#define CBUTF8_ERROR_VALUE_2 0x9f
-+#define UTF8_ERROR_VALUE_2 0x9f
-
-
- /**
-@@ -51,7 +51,7 @@ namespace base_icu {
- *
- * @deprecated ICU 2.4. Obsolete, see utf_old.h.
- */
--#define CBUTF_ERROR_VALUE 0xffff
-+#define UTF_ERROR_VALUE 0xffff
-
- /*
- * This table could be replaced on many machines by
-@@ -103,7 +103,7 @@ utf8_minLegal[4]={ 0, 0x80, 0x800, 0x10000 };
-
- static const UChar32
- utf8_errorValue[6]={
-- CBUTF8_ERROR_VALUE_1, CBUTF8_ERROR_VALUE_2, CBUTF_ERROR_VALUE, 0x10ffff,
-+ UTF8_ERROR_VALUE_1, UTF8_ERROR_VALUE_2, UTF_ERROR_VALUE, 0x10ffff,
- 0x3ffffff, 0x7fffffff
- };
-
-@@ -135,11 +135,11 @@ UChar32 utf8_nextCharSafeBody(const uint8_t* s,
- UChar32 c,
- UBool strict) {
- int32_t i = *pi;
-- uint8_t count = CBU8_COUNT_TRAIL_BYTES(c);
-+ uint8_t count = U8_COUNT_TRAIL_BYTES(c);
- if((i)+count<=(length)) {
- uint8_t trail, illegal = 0;
-
-- CBU8_MASK_LEAD_BYTE((c), count);
-+ U8_MASK_LEAD_BYTE((c), count);
- /* count==0 for illegally leading trail bytes and the illegal bytes 0xfe and 0xff */
- switch(count) {
- /* each branch falls through to the next one */
-@@ -169,9 +169,9 @@ UChar32 utf8_nextCharSafeBody(const uint8_t* s,
- break;
- case 0:
- if(strict>=0) {
-- return CBUTF8_ERROR_VALUE_1;
-+ return UTF8_ERROR_VALUE_1;
- } else {
-- return CBU_SENTINEL;
-+ return U_SENTINEL;
- }
- /* no default branch to optimize switch() - all values are covered */
- }
-@@ -189,21 +189,21 @@ UChar32 utf8_nextCharSafeBody(const uint8_t* s,
-
- /* correct sequence - all trail bytes have (b7..b6)==(10)? */
- /* illegal is also set if count>=4 */
-- if(illegal || (c)<utf8_minLegal[count] || (CBU_IS_SURROGATE(c) && strict!=-2)) {
-+ if(illegal || (c)<utf8_minLegal[count] || (U_IS_SURROGATE(c) && strict!=-2)) {
- /* error handling */
- uint8_t errorCount = count;
- /* don't go beyond this sequence */
- i=*pi;
-- while(count>0 && CBU8_IS_TRAIL(s[i])) {
-+ while(count>0 && U8_IS_TRAIL(s[i])) {
- ++(i);
- --count;
- }
- if(strict>=0) {
- c=utf8_errorValue[errorCount-count];
- } else {
-- c=CBU_SENTINEL;
-+ c=U_SENTINEL;
- }
-- } else if((strict)>0 && CBU_IS_UNICODE_NONCHAR(c)) {
-+ } else if((strict)>0 && U_IS_UNICODE_NONCHAR(c)) {
- /* strict: forbid non-characters like U+fffe */
- c=utf8_errorValue[count];
- }
-@@ -211,13 +211,13 @@ UChar32 utf8_nextCharSafeBody(const uint8_t* s,
- /* error handling */
- int32_t i0 = i;
- /* don't just set (i)=(length) in case there is an illegal sequence */
-- while((i)<(length) && CBU8_IS_TRAIL(s[i])) {
-+ while((i)<(length) && U8_IS_TRAIL(s[i])) {
- ++(i);
- }
- if(strict>=0) {
- c=utf8_errorValue[i-i0];
- } else {
-- c=CBU_SENTINEL;
-+ c=U_SENTINEL;
- }
- }
- *pi=i;
-diff --git a/src/3rdparty/chromium/content/browser/devtools/devtools_io_context.cc b/src/3rdparty/chromium/content/browser/devtools/devtools_io_context.cc
-index 55f65f8c3..a7d616115 100644
---- a/src/3rdparty/chromium/content/browser/devtools/devtools_io_context.cc
-+++ b/src/3rdparty/chromium/content/browser/devtools/devtools_io_context.cc
-@@ -8,7 +8,7 @@
- #include "base/files/file_util.h"
- #include "base/strings/string_number_conversions.h"
- #include "base/strings/string_util.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
- #include "content/public/browser/browser_thread.h"
-
- namespace content {
-@@ -87,7 +87,7 @@ void Stream::ReadOnFileThread(off_t position, size_t max_size,
- } else {
- // Provided client has requested sufficient large block, make their
- // life easier by not truncating in the middle of a UTF-8 character.
-- if (size_got > 6 && !CBU8_IS_SINGLE(buffer[size_got - 1])) {
-+ if (size_got > 6 && !U8_IS_SINGLE(buffer[size_got - 1])) {
- base::TruncateUTF8ToByteSize(buffer, size_got, &buffer);
- size_got = buffer.size();
- } else {
-diff --git a/src/3rdparty/chromium/net/cert/internal/parse_name.cc b/src/3rdparty/chromium/net/cert/internal/parse_name.cc
-index bb9b64051..5eaeb52d0 100644
---- a/src/3rdparty/chromium/net/cert/internal/parse_name.cc
-+++ b/src/3rdparty/chromium/net/cert/internal/parse_name.cc
-@@ -10,7 +10,7 @@
- #include "base/strings/utf_string_conversion_utils.h"
- #include "base/strings/utf_string_conversions.h"
- #include "base/sys_byteorder.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
-
- namespace net {
-
-@@ -35,7 +35,7 @@ bool ConvertBmpStringValue(const der::Input& in, std::string* out) {
-
- // BMPString only supports codepoints in the Basic Multilingual Plane;
- // surrogates are not allowed.
-- if (CBU_IS_SURROGATE(c))
-+ if (U_IS_SURROGATE(c))
- return false;
- }
- return base::UTF16ToUTF8(in_16bit.data(), in_16bit.size(), out);
-@@ -55,7 +55,7 @@ bool ConvertUniversalStringValue(const der::Input& in, std::string* out) {
- for (const uint32_t c : in_32bit) {
- // UniversalString is UCS-4 in big-endian order.
- uint32_t codepoint = base::NetToHost32(c);
-- if (!CBU_IS_UNICODE_CHAR(codepoint))
-+ if (!U_IS_UNICODE_CHAR(codepoint))
- return false;
-
- base::WriteUnicodeCharacter(codepoint, out);
-diff --git a/src/3rdparty/chromium/ui/base/ime/input_method_chromeos.cc b/src/3rdparty/chromium/ui/base/ime/input_method_chromeos.cc
-index a8ac9028f..8fa5d2a64 100644
---- a/src/3rdparty/chromium/ui/base/ime/input_method_chromeos.cc
-+++ b/src/3rdparty/chromium/ui/base/ime/input_method_chromeos.cc
-@@ -17,7 +17,7 @@
- #include "base/strings/string_util.h"
- #include "base/strings/utf_string_conversions.h"
- #include "base/sys_info.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
- #include "ui/base/ime/chromeos/ime_keyboard.h"
- #include "ui/base/ime/chromeos/input_method_manager.h"
- #include "ui/base/ime/composition_text.h"
-diff --git a/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc b/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc
-index c7f38de0d..08a0ff5fb 100644
---- a/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc
-+++ b/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc
-@@ -5,13 +5,13 @@
- #include "ui/gfx/utf16_indexing.h"
-
- #include "base/logging.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
-
- namespace gfx {
-
- bool IsValidCodePointIndex(const base::string16& s, size_t index) {
- return index == 0 || index == s.length() ||
-- !(CBU16_IS_TRAIL(s[index]) && CBU16_IS_LEAD(s[index - 1]));
-+ !(U16_IS_TRAIL(s[index]) && U16_IS_LEAD(s[index - 1]));
- }
-
- ptrdiff_t UTF16IndexToOffset(const base::string16& s, size_t base, size_t pos) {
---
-2.13.0
-
diff --git a/0004-qtwebengine-opensource-src-5.9.0-no-sse2.patch b/0004-qtwebengine-opensource-src-5.9.0-no-sse2.patch
deleted file mode 100644
index 5df622b..0000000
--- a/0004-qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ /dev/null
@@ -1,4971 +0,0 @@
-From 844246bd10971ec348f044bc7a13acb17b9ce033 Mon Sep 17 00:00:00 2001
-From: Helio Chissini de Castro <helio(a)kde.org>
-Date: Wed, 31 May 2017 14:38:20 +0200
-Subject: [PATCH] qtwebengine-opensource-src-5.9.0-no-sse2
-
----
- .../chromium/breakpad/src/build/common.gypi | 8 +-
- src/3rdparty/chromium/cc/BUILD.gn | 39 +-
- src/3rdparty/chromium/media/BUILD.gn | 20 +
- src/3rdparty/chromium/media/base/BUILD.gn | 48 +-
- src/3rdparty/chromium/media/base/media.cc | 4 +
- .../chromium/media/base/simd/convert_yuv_to_rgb.h | 34 +
- .../media/base/simd/convert_yuv_to_rgb_mmx.asm | 24 +
- .../media/base/simd/convert_yuv_to_rgb_x86.cc | 56 +
- src/3rdparty/chromium/media/base/simd/filter_yuv.h | 6 +
- .../chromium/media/base/simd/filter_yuv_mmx.cc | 79 +
- .../chromium/media/base/simd/sinc_resampler_sse.cc | 50 +
- .../chromium/media/base/simd/vector_math_sse.cc | 118 +
- src/3rdparty/chromium/media/base/sinc_resampler.cc | 81 +-
- src/3rdparty/chromium/media/base/sinc_resampler.h | 4 +
- .../chromium/media/base/sinc_resampler_perftest.cc | 4 +
- .../chromium/media/base/sinc_resampler_unittest.cc | 5 +
- src/3rdparty/chromium/media/base/vector_math.cc | 150 +-
- src/3rdparty/chromium/media/base/vector_math.h | 5 +
- .../chromium/media/base/vector_math_perftest.cc | 35 +-
- .../chromium/media/base/vector_math_testing.h | 2 +-
- .../chromium/media/base/vector_math_unittest.cc | 4 +
- src/3rdparty/chromium/media/base/yuv_convert.cc | 50 +-
- .../chromium/media/base/yuv_convert_perftest.cc | 79 +-
- .../chromium/media/base/yuv_convert_unittest.cc | 159 +-
- src/3rdparty/chromium/skia/BUILD.gn | 52 +-
- src/3rdparty/chromium/skia/ext/convolver.cc | 11 +-
- src/3rdparty/chromium/skia/ext/convolver.h | 1 +
- .../Source/modules/webaudio/AudioParamTimeline.cpp | 8 +-
- .../Source/platform/audio/DirectConvolver.cpp | 40 +-
- .../WebKit/Source/platform/audio/DirectConvolver.h | 7 +
- .../WebKit/Source/platform/audio/SincResampler.cpp | 31 +-
- .../WebKit/Source/platform/audio/SincResampler.h | 7 +
- .../WebKit/Source/platform/audio/VectorMath.cpp | 97 +-
- .../WebKit/Source/platform/audio/VectorMath.h | 23 +
- .../graphics/cpu/x86/WebGLImageConversionSSE.h | 2 +-
- .../platform/graphics/gpu/WebGLImageConversion.cpp | 12 +-
- src/3rdparty/chromium/third_party/qcms/BUILD.gn | 17 +-
- .../webrtc/common_audio/real_fourier.cc | 9 +
- src/3rdparty/chromium/v8/BUILD.gn | 72 +-
- src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh | 56 +
- src/3rdparty/chromium/v8/src/v8.gyp | 12 +-
- src/3rdparty/chromium/v8/src/v8_sse2.gyp | 2313 ++++++++++++++++++++
- src/core/core_module.pro | 30 +-
- 43 files changed, 3537 insertions(+), 327 deletions(-)
- create mode 100644 src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm
- create mode 100644 src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc
- create mode 100644 src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc
- create mode 100644 src/3rdparty/chromium/media/base/simd/vector_math_sse.cc
- create mode 100644 src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh
- create mode 100644 src/3rdparty/chromium/v8/src/v8_sse2.gyp
-
-diff --git a/src/3rdparty/chromium/breakpad/src/build/common.gypi b/src/3rdparty/chromium/breakpad/src/build/common.gypi
-index b9466a325..8ad78e24f 100644
---- a/src/3rdparty/chromium/breakpad/src/build/common.gypi
-+++ b/src/3rdparty/chromium/breakpad/src/build/common.gypi
-@@ -80,8 +80,8 @@
- # The system root for cross-compiles. Default: none.
- 'sysroot%': '',
-
-- # On Linux, we build with sse2 for Chromium builds.
-- 'disable_sse2%': 0,
-+ # Do not assume SSE2 by default (Fedora patch).
-+ 'disable_sse2%': 1,
- },
-
- 'target_arch%': '<(target_arch)',
-@@ -725,17 +725,13 @@
- 'conditions': [
- ['disable_sse2==0', {
- 'cflags': [
-- '-march=pentium4',
- '-msse2',
- '-mfpmath=sse',
- ],
- }],
- ],
-- # -mmmx allows mmintrin.h to be used for mmx intrinsics.
-- # video playback is mmx and sse2 optimized.
- 'cflags': [
- '-m32',
-- '-mmmx',
- ],
- 'ldflags': [
- '-m32',
-diff --git a/src/3rdparty/chromium/cc/BUILD.gn b/src/3rdparty/chromium/cc/BUILD.gn
-index e461a898d..b50659b89 100644
---- a/src/3rdparty/chromium/cc/BUILD.gn
-+++ b/src/3rdparty/chromium/cc/BUILD.gn
-@@ -567,13 +567,6 @@ component("cc") {
- "trees/tree_synchronizer.h",
- ]
-
-- if (current_cpu == "x86" || current_cpu == "x64") {
-- sources += [
-- "raster/texture_compressor_etc1_sse.cc",
-- "raster/texture_compressor_etc1_sse.h",
-- ]
-- }
--
- configs += [ "//build/config:precompiled_headers" ]
-
- public_deps = [
-@@ -583,6 +576,7 @@ component("cc") {
- deps = [
- "//base",
- "//base/third_party/dynamic_annotations",
-+ "//cc:cc_opts",
- "//cc/proto",
- "//cc/surfaces:surface_id",
- "//gpu",
-@@ -612,6 +606,37 @@ component("cc") {
- }
- }
-
-+source_set("cc_opts") {
-+ public_deps = [
-+ "//cc:cc_opts_sse",
-+ ]
-+}
-+
-+source_set("cc_opts_sse") {
-+ if (current_cpu == "x86" || current_cpu == "x64") {
-+ deps = [
-+ "//base",
-+ ]
-+
-+ defines = [ "CC_IMPLEMENTATION=1" ]
-+
-+ if (!is_debug && (is_win || is_android)) {
-+ configs -= [ "//build/config/compiler:optimize" ]
-+ configs += [ "//build/config/compiler:optimize_max" ]
-+ }
-+
-+ sources = [
-+ "raster/texture_compressor.h",
-+ "raster/texture_compressor_etc1.h",
-+ "raster/texture_compressor_etc1_sse.cc",
-+ "raster/texture_compressor_etc1_sse.h",
-+ ]
-+
-+ cflags = [ "-msse2" ]
-+ }
-+}
-+
-+
- static_library("test_support") {
- testonly = true
- sources = [
-diff --git a/src/3rdparty/chromium/media/BUILD.gn b/src/3rdparty/chromium/media/BUILD.gn
-index 652aad4d9..063254830 100644
---- a/src/3rdparty/chromium/media/BUILD.gn
-+++ b/src/3rdparty/chromium/media/BUILD.gn
-@@ -832,6 +832,26 @@ component("shared_memory_support") {
- "//base",
- "//ui/gfx/geometry",
- ]
-+ if (current_cpu == "x86" || current_cpu == "x64") {
-+ deps += [
-+ ":shared_memory_support_sse",
-+ ]
-+ }
-+}
-+
-+if (current_cpu == "x86" || current_cpu == "x64") {
-+ source_set("shared_memory_support_sse") {
-+ sources = [
-+ "base/simd/vector_math_sse.cc",
-+ ]
-+ configs += [
-+ "//media:media_config",
-+ "//media:media_implementation",
-+ ]
-+ if (!is_win) {
-+ cflags = [ "-msse" ]
-+ }
-+ }
- }
-
- # TODO(watk): Refactor tests that could be made to run on Android. See
-diff --git a/src/3rdparty/chromium/media/base/BUILD.gn b/src/3rdparty/chromium/media/base/BUILD.gn
-index d288ec787..fac712c00 100644
---- a/src/3rdparty/chromium/media/base/BUILD.gn
-+++ b/src/3rdparty/chromium/media/base/BUILD.gn
-@@ -336,11 +336,12 @@ target(link_target_type, "base") {
- }
-
- if (current_cpu == "x86" || current_cpu == "x64") {
-- sources += [
-- "simd/convert_rgb_to_yuv_sse2.cc",
-- "simd/convert_rgb_to_yuv_ssse3.cc",
-- "simd/convert_yuv_to_rgb_x86.cc",
-- "simd/filter_yuv_sse2.cc",
-+ sources += [ "simd/convert_yuv_to_rgb_x86.cc" ]
-+ deps += [
-+ ":media_yasm",
-+ ":media_mmx",
-+ ":media_sse",
-+ ":media_sse2",
- ]
- deps += [ ":media_yasm" ]
- }
-@@ -539,10 +540,47 @@ source_set("perftests") {
- }
-
- if (current_cpu == "x86" || current_cpu == "x64") {
-+ source_set("media_mmx") {
-+ sources = [ "simd/filter_yuv_mmx.cc" ]
-+ configs += [ "//media:media_config" ]
-+ if (!is_win) {
-+ cflags = [ "-mmmx" ]
-+ }
-+ }
-+
-+ source_set("media_sse") {
-+ sources = [
-+ "simd/sinc_resampler_sse.cc",
-+ ]
-+ configs += [
-+ "//media:media_config",
-+ "//media:media_implementation",
-+ ]
-+ if (!is_win) {
-+ cflags = [ "-msse" ]
-+ }
-+ }
-+
-+ source_set("media_sse2") {
-+ sources = [
-+ "simd/convert_rgb_to_yuv_sse2.cc",
-+ "simd/convert_rgb_to_yuv_ssse3.cc",
-+ "simd/filter_yuv_sse2.cc",
-+ ]
-+ configs += [
-+ "//media:media_config",
-+ "//media:media_implementation",
-+ ]
-+ if (!is_win) {
-+ cflags = [ "-msse2" ]
-+ }
-+ }
-+
- import("//third_party/yasm/yasm_assemble.gni")
- yasm_assemble("media_yasm") {
- sources = [
- "simd/convert_rgb_to_yuv_ssse3.asm",
-+ "simd/convert_yuv_to_rgb_mmx.asm",
- "simd/convert_yuv_to_rgb_sse.asm",
- "simd/convert_yuva_to_argb_mmx.asm",
- "simd/empty_register_state_mmx.asm",
-diff --git a/src/3rdparty/chromium/media/base/media.cc b/src/3rdparty/chromium/media/base/media.cc
-index 38daf05b8..bb43b405f 100644
---- a/src/3rdparty/chromium/media/base/media.cc
-+++ b/src/3rdparty/chromium/media/base/media.cc
-@@ -10,6 +10,8 @@
- #include "base/metrics/field_trial.h"
- #include "base/trace_event/trace_event.h"
- #include "media/base/media_switches.h"
-+#include "media/base/sinc_resampler.h"
-+#include "media/base/vector_math.h"
- #include "media/base/yuv_convert.h"
-
- #if defined(OS_ANDROID)
-@@ -40,6 +42,8 @@ class MediaInitializer {
- TRACE_EVENT_WARMUP_CATEGORY("media");
-
- // Perform initialization of libraries which require runtime CPU detection.
-+ vector_math::Initialize();
-+ SincResampler::InitializeCPUSpecificFeatures();
- InitializeCPUSpecificYUVConversions();
-
- #if !defined(MEDIA_DISABLE_FFMPEG)
-diff --git a/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h b/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h
-index a421ff566..8373fde90 100644
---- a/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h
-+++ b/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h
-@@ -65,6 +65,17 @@ MEDIA_EXPORT void ConvertYUVToRGB32_SSE(const uint8_t* yplane,
- int rgbstride,
- YUVType yuv_type);
-
-+MEDIA_EXPORT void ConvertYUVToRGB32_MMX(const uint8_t* yplane,
-+ const uint8_t* uplane,
-+ const uint8_t* vplane,
-+ uint8_t* rgbframe,
-+ int width,
-+ int height,
-+ int ystride,
-+ int uvstride,
-+ int rgbstride,
-+ YUVType yuv_type);
-+
- MEDIA_EXPORT void ConvertYUVAToARGB_MMX(const uint8_t* yplane,
- const uint8_t* uplane,
- const uint8_t* vplane,
-@@ -86,6 +97,13 @@ MEDIA_EXPORT void ScaleYUVToRGB32Row_C(const uint8_t* y_buf,
- ptrdiff_t source_dx,
- const int16_t* convert_table);
-
-+MEDIA_EXPORT void ConvertYUVToRGB32Row_MMX(const uint8_t* yplane,
-+ const uint8_t* uplane,
-+ const uint8_t* vplane,
-+ uint8_t* rgbframe,
-+ ptrdiff_t width,
-+ const int16_t* convert_table);
-+
- MEDIA_EXPORT void LinearScaleYUVToRGB32Row_C(const uint8_t* y_buf,
- const uint8_t* u_buf,
- const uint8_t* v_buf,
-@@ -94,6 +112,14 @@ MEDIA_EXPORT void LinearScaleYUVToRGB32Row_C(const uint8_t* y_buf,
- ptrdiff_t source_dx,
- const int16_t* convert_table);
-
-+MEDIA_EXPORT void ScaleYUVToRGB32Row_MMX(const uint8_t* y_buf,
-+ const uint8_t* u_buf,
-+ const uint8_t* v_buf,
-+ uint8_t* rgb_buf,
-+ ptrdiff_t width,
-+ ptrdiff_t source_dx,
-+ const int16_t* convert_table);
-+
- MEDIA_EXPORT void LinearScaleYUVToRGB32RowWithRange_C(
- const uint8_t* y_buf,
- const uint8_t* u_buf,
-@@ -104,6 +130,14 @@ MEDIA_EXPORT void LinearScaleYUVToRGB32RowWithRange_C(
- int source_dx,
- const int16_t* convert_table);
-
-+MEDIA_EXPORT void LinearScaleYUVToRGB32Row_MMX(const uint8_t* y_buf,
-+ const uint8_t* u_buf,
-+ const uint8_t* v_buf,
-+ uint8_t* rgb_buf,
-+ ptrdiff_t width,
-+ ptrdiff_t source_dx,
-+ const int16_t* convert_table);
-+
- } // namespace media
-
- // Assembly functions are declared without namespace.
-diff --git a/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm b/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm
-new file mode 100644
-index 000000000..3650c9f73
---- /dev/null
-+++ b/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm
-@@ -0,0 +1,24 @@
-+; Copyright (c) 2011 The Chromium Authors. All rights reserved.
-+; Use of this source code is governed by a BSD-style license that can be
-+; found in the LICENSE file.
-+
-+%include "third_party/x86inc/x86inc.asm"
-+
-+;
-+; This file uses MMX instructions.
-+;
-+ SECTION_TEXT
-+ CPU MMX
-+
-+; Use movq to save the output.
-+%define MOVQ movq
-+
-+; extern "C" void ConvertYUVToRGB32Row_MMX(const uint8* y_buf,
-+; const uint8* u_buf,
-+; const uint8* v_buf,
-+; uint8* rgb_buf,
-+; ptrdiff_t width,
-+; const int16* convert_table);
-+%define SYMBOL ConvertYUVToRGB32Row_MMX
-+%include "convert_yuv_to_rgb_mmx.inc"
-+
-diff --git a/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc b/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc
-index a06799bfd..819bb60a8 100644
---- a/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc
-+++ b/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc
-@@ -47,6 +47,62 @@ void ConvertYUVAToARGB_MMX(const uint8_t* yplane,
- EmptyRegisterState();
- }
-
-+void ConvertYUVToRGB32_MMX(const uint8_t* yplane,
-+ const uint8_t* uplane,
-+ const uint8_t* vplane,
-+ uint8_t* rgbframe,
-+ int width,
-+ int height,
-+ int ystride,
-+ int uvstride,
-+ int rgbstride,
-+ YUVType yuv_type) {
-+ unsigned int y_shift = GetVerticalShift(yuv_type);
-+ for (int y = 0; y < height; ++y) {
-+ uint8_t* rgb_row = rgbframe + y * rgbstride;
-+ const uint8_t* y_ptr = yplane + y * ystride;
-+ const uint8_t* u_ptr = uplane + (y >> y_shift) * uvstride;
-+ const uint8_t* v_ptr = vplane + (y >> y_shift) * uvstride;
-+
-+ ConvertYUVToRGB32Row_MMX(y_ptr,
-+ u_ptr,
-+ v_ptr,
-+ rgb_row,
-+ width,
-+ GetLookupTable(yuv_type));
-+ }
-+
-+ EmptyRegisterState();
-+}
-+
-+void ConvertYUVToRGB32_MMX(const uint8_t* yplane,
-+ const uint8_t* uplane,
-+ const uint8_t* vplane,
-+ uint8_t* rgbframe,
-+ int width,
-+ int height,
-+ int ystride,
-+ int uvstride,
-+ int rgbstride,
-+ YUVType yuv_type) {
-+ unsigned int y_shift = GetVerticalShift(yuv_type);
-+ for (int y = 0; y < height; ++y) {
-+ uint8_t* rgb_row = rgbframe + y * rgbstride;
-+ const uint8_t* y_ptr = yplane + y * ystride;
-+ const uint8_t* u_ptr = uplane + (y >> y_shift) * uvstride;
-+ const uint8_t* v_ptr = vplane + (y >> y_shift) * uvstride;
-+
-+ ConvertYUVToRGB32Row_MMX(y_ptr,
-+ u_ptr,
-+ v_ptr,
-+ rgb_row,
-+ width,
-+ GetLookupTable(yuv_type));
-+ }
-+
-+ EmptyRegisterState();
-+}
-+
- void ConvertYUVToRGB32_SSE(const uint8_t* yplane,
- const uint8_t* uplane,
- const uint8_t* vplane,
-diff --git a/src/3rdparty/chromium/media/base/simd/filter_yuv.h b/src/3rdparty/chromium/media/base/simd/filter_yuv.h
-index af30bd133..206fb7f11 100644
---- a/src/3rdparty/chromium/media/base/simd/filter_yuv.h
-+++ b/src/3rdparty/chromium/media/base/simd/filter_yuv.h
-@@ -20,6 +20,12 @@ MEDIA_EXPORT void FilterYUVRows_C(uint8_t* ybuf,
- int source_width,
- uint8_t source_y_fraction);
-
-+MEDIA_EXPORT void FilterYUVRows_MMX(uint8_t* ybuf,
-+ const uint8_t* y0_ptr,
-+ const uint8_t* y1_ptr,
-+ int source_width,
-+ uint8_t source_y_fraction);
-+
- MEDIA_EXPORT void FilterYUVRows_SSE2(uint8_t* ybuf,
- const uint8_t* y0_ptr,
- const uint8_t* y1_ptr,
-diff --git a/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc b/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc
-new file mode 100644
-index 000000000..416aca699
---- /dev/null
-+++ b/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc
-@@ -0,0 +1,79 @@
-+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style license that can be
-+// found in the LICENSE file.
-+
-+#if defined(_MSC_VER)
-+#include <intrin.h>
-+#else
-+#include <mmintrin.h>
-+#endif
-+
-+#include "build/build_config.h"
-+#include "media/base/simd/filter_yuv.h"
-+
-+namespace media {
-+
-+#if defined(COMPILER_MSVC)
-+// Warning 4799 is about calling emms before the function exits.
-+// We calls emms in a frame level so suppress this warning.
-+#pragma warning(push)
-+#pragma warning(disable: 4799)
-+#endif
-+
-+void FilterYUVRows_MMX(uint8_t* dest,
-+ const uint8_t* src0,
-+ const uint8_t* src1,
-+ int width,
-+ uint8_t fraction) {
-+ int pixel = 0;
-+
-+ // Process the unaligned bytes first.
-+ int unaligned_width =
-+ (8 - (reinterpret_cast<uintptr_t>(dest) & 7)) & 7;
-+ while (pixel < width && pixel < unaligned_width) {
-+ dest[pixel] = (src0[pixel] * (256 - fraction) +
-+ src1[pixel] * fraction) >> 8;
-+ ++pixel;
-+ }
-+
-+ __m64 zero = _mm_setzero_si64();
-+ __m64 src1_fraction = _mm_set1_pi16(fraction);
-+ __m64 src0_fraction = _mm_set1_pi16(256 - fraction);
-+ const __m64* src0_64 = reinterpret_cast<const __m64*>(src0 + pixel);
-+ const __m64* src1_64 = reinterpret_cast<const __m64*>(src1 + pixel);
-+ __m64* dest64 = reinterpret_cast<__m64*>(dest + pixel);
-+ __m64* end64 = reinterpret_cast<__m64*>(
-+ reinterpret_cast<uintptr_t>(dest + width) & ~7);
-+
-+ while (dest64 < end64) {
-+ __m64 src0 = *src0_64++;
-+ __m64 src1 = *src1_64++;
-+ __m64 src2 = _mm_unpackhi_pi8(src0, zero);
-+ __m64 src3 = _mm_unpackhi_pi8(src1, zero);
-+ src0 = _mm_unpacklo_pi8(src0, zero);
-+ src1 = _mm_unpacklo_pi8(src1, zero);
-+ src0 = _mm_mullo_pi16(src0, src0_fraction);
-+ src1 = _mm_mullo_pi16(src1, src1_fraction);
-+ src2 = _mm_mullo_pi16(src2, src0_fraction);
-+ src3 = _mm_mullo_pi16(src3, src1_fraction);
-+ src0 = _mm_add_pi16(src0, src1);
-+ src2 = _mm_add_pi16(src2, src3);
-+ src0 = _mm_srli_pi16(src0, 8);
-+ src2 = _mm_srli_pi16(src2, 8);
-+ src0 = _mm_packs_pu16(src0, src2);
-+ *dest64++ = src0;
-+ pixel += 8;
-+ }
-+
-+ while (pixel < width) {
-+ dest[pixel] = (src0[pixel] * (256 - fraction) +
-+ src1[pixel] * fraction) >> 8;
-+ ++pixel;
-+ }
-+}
-+
-+#if defined(COMPILER_MSVC)
-+#pragma warning(pop)
-+#endif
-+
-+} // namespace media
-diff --git a/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc b/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc
-new file mode 100644
-index 000000000..c5d03dc48
---- /dev/null
-+++ b/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc
-@@ -0,0 +1,50 @@
-+// Copyright 2013 The Chromium Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style license that can be
-+// found in the LICENSE file.
-+
-+#include "media/base/sinc_resampler.h"
-+
-+#include <xmmintrin.h>
-+
-+namespace media {
-+
-+float SincResampler::Convolve_SSE(const float* input_ptr, const float* k1,
-+ const float* k2,
-+ double kernel_interpolation_factor) {
-+ __m128 m_input;
-+ __m128 m_sums1 = _mm_setzero_ps();
-+ __m128 m_sums2 = _mm_setzero_ps();
-+
-+ // Based on |input_ptr| alignment, we need to use loadu or load. Unrolling
-+ // these loops hurt performance in local testing.
-+ if (reinterpret_cast<uintptr_t>(input_ptr) & 0x0F) {
-+ for (int i = 0; i < kKernelSize; i += 4) {
-+ m_input = _mm_loadu_ps(input_ptr + i);
-+ m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
-+ m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
-+ }
-+ } else {
-+ for (int i = 0; i < kKernelSize; i += 4) {
-+ m_input = _mm_load_ps(input_ptr + i);
-+ m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
-+ m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
-+ }
-+ }
-+
-+ // Linearly interpolate the two "convolutions".
-+ m_sums1 = _mm_mul_ps(m_sums1, _mm_set_ps1(
-+ static_cast<float>(1.0 - kernel_interpolation_factor)));
-+ m_sums2 = _mm_mul_ps(m_sums2, _mm_set_ps1(
-+ static_cast<float>(kernel_interpolation_factor)));
-+ m_sums1 = _mm_add_ps(m_sums1, m_sums2);
-+
-+ // Sum components together.
-+ float result;
-+ m_sums2 = _mm_add_ps(_mm_movehl_ps(m_sums1, m_sums1), m_sums1);
-+ _mm_store_ss(&result, _mm_add_ss(m_sums2, _mm_shuffle_ps(
-+ m_sums2, m_sums2, 1)));
-+
-+ return result;
-+}
-+
-+} // namespace media
-diff --git a/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc b/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc
-new file mode 100644
-index 000000000..c2121225c
---- /dev/null
-+++ b/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc
-@@ -0,0 +1,118 @@
-+// Copyright 2013 The Chromium Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style license that can be
-+// found in the LICENSE file.
-+
-+#include "media/base/vector_math_testing.h"
-+
-+#include <algorithm>
-+
-+#include <xmmintrin.h> // NOLINT
-+
-+namespace media {
-+namespace vector_math {
-+
-+void FMUL_SSE(const float src[], float scale, int len, float dest[]) {
-+ const int rem = len % 4;
-+ const int last_index = len - rem;
-+ __m128 m_scale = _mm_set_ps1(scale);
-+ for (int i = 0; i < last_index; i += 4)
-+ _mm_store_ps(dest + i, _mm_mul_ps(_mm_load_ps(src + i), m_scale));
-+
-+ // Handle any remaining values that wouldn't fit in an SSE pass.
-+ for (int i = last_index; i < len; ++i)
-+ dest[i] = src[i] * scale;
-+}
-+
-+void FMAC_SSE(const float src[], float scale, int len, float dest[]) {
-+ const int rem = len % 4;
-+ const int last_index = len - rem;
-+ __m128 m_scale = _mm_set_ps1(scale);
-+ for (int i = 0; i < last_index; i += 4) {
-+ _mm_store_ps(dest + i, _mm_add_ps(_mm_load_ps(dest + i),
-+ _mm_mul_ps(_mm_load_ps(src + i), m_scale)));
-+ }
-+
-+ // Handle any remaining values that wouldn't fit in an SSE pass.
-+ for (int i = last_index; i < len; ++i)
-+ dest[i] += src[i] * scale;
-+}
-+
-+// Convenience macro to extract float 0 through 3 from the vector |a|. This is
-+// needed because compilers other than clang don't support access via
-+// operator[]().
-+#define EXTRACT_FLOAT(a, i) \
-+ (i == 0 ? \
-+ _mm_cvtss_f32(a) : \
-+ _mm_cvtss_f32(_mm_shuffle_ps(a, a, i)))
-+
-+std::pair<float, float> EWMAAndMaxPower_SSE(
-+ float initial_value, const float src[], int len, float smoothing_factor) {
-+ // When the recurrence is unrolled, we see that we can split it into 4
-+ // separate lanes of evaluation:
-+ //
-+ // y[n] = a(S[n]^2) + (1-a)(y[n-1])
-+ // = a(S[n]^2) + (1-a)^1(aS[n-1]^2) + (1-a)^2(aS[n-2]^2) + ...
-+ // = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
-+ //
-+ // where z[n] = a(S[n]^2) + (1-a)^4(z[n-4]) + (1-a)^8(z[n-8]) + ...
-+ //
-+ // Thus, the strategy here is to compute z[n], z[n-1], z[n-2], and z[n-3] in
-+ // each of the 4 lanes, and then combine them to give y[n].
-+
-+ const int rem = len % 4;
-+ const int last_index = len - rem;
-+
-+ const __m128 smoothing_factor_x4 = _mm_set_ps1(smoothing_factor);
-+ const float weight_prev = 1.0f - smoothing_factor;
-+ const __m128 weight_prev_x4 = _mm_set_ps1(weight_prev);
-+ const __m128 weight_prev_squared_x4 =
-+ _mm_mul_ps(weight_prev_x4, weight_prev_x4);
-+ const __m128 weight_prev_4th_x4 =
-+ _mm_mul_ps(weight_prev_squared_x4, weight_prev_squared_x4);
-+
-+ // Compute z[n], z[n-1], z[n-2], and z[n-3] in parallel in lanes 3, 2, 1 and
-+ // 0, respectively.
-+ __m128 max_x4 = _mm_setzero_ps();
-+ __m128 ewma_x4 = _mm_setr_ps(0.0f, 0.0f, 0.0f, initial_value);
-+ int i;
-+ for (i = 0; i < last_index; i += 4) {
-+ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_4th_x4);
-+ const __m128 sample_x4 = _mm_load_ps(src + i);
-+ const __m128 sample_squared_x4 = _mm_mul_ps(sample_x4, sample_x4);
-+ max_x4 = _mm_max_ps(max_x4, sample_squared_x4);
-+ // Note: The compiler optimizes this to a single multiply-and-accumulate
-+ // instruction:
-+ ewma_x4 = _mm_add_ps(ewma_x4,
-+ _mm_mul_ps(sample_squared_x4, smoothing_factor_x4));
-+ }
-+
-+ // y[n] = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
-+ float ewma = EXTRACT_FLOAT(ewma_x4, 3);
-+ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
-+ ewma += EXTRACT_FLOAT(ewma_x4, 2);
-+ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
-+ ewma += EXTRACT_FLOAT(ewma_x4, 1);
-+ ewma_x4 = _mm_mul_ss(ewma_x4, weight_prev_x4);
-+ ewma += EXTRACT_FLOAT(ewma_x4, 0);
-+
-+ // Fold the maximums together to get the overall maximum.
-+ max_x4 = _mm_max_ps(max_x4,
-+ _mm_shuffle_ps(max_x4, max_x4, _MM_SHUFFLE(3, 3, 1, 1)));
-+ max_x4 = _mm_max_ss(max_x4, _mm_shuffle_ps(max_x4, max_x4, 2));
-+
-+ std::pair<float, float> result(ewma, EXTRACT_FLOAT(max_x4, 0));
-+
-+ // Handle remaining values at the end of |src|.
-+ for (; i < len; ++i) {
-+ result.first *= weight_prev;
-+ const float sample = src[i];
-+ const float sample_squared = sample * sample;
-+ result.first += sample_squared * smoothing_factor;
-+ result.second = std::max(result.second, sample_squared);
-+ }
-+
-+ return result;
-+}
-+
-+} // namespace vector_math
-+} // namespace media
-diff --git a/src/3rdparty/chromium/media/base/sinc_resampler.cc b/src/3rdparty/chromium/media/base/sinc_resampler.cc
-index cffb0c9d6..010775544 100644
---- a/src/3rdparty/chromium/media/base/sinc_resampler.cc
-+++ b/src/3rdparty/chromium/media/base/sinc_resampler.cc
-@@ -81,17 +81,12 @@
- #include <cmath>
- #include <limits>
-
-+#include "base/cpu.h"
- #include "base/logging.h"
- #include "build/build_config.h"
-
--#if defined(ARCH_CPU_X86_FAMILY)
--#include <xmmintrin.h>
--#define CONVOLVE_FUNC Convolve_SSE
--#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
-+#if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
- #include <arm_neon.h>
--#define CONVOLVE_FUNC Convolve_NEON
--#else
--#define CONVOLVE_FUNC Convolve_C
- #endif
-
- namespace media {
-@@ -112,10 +107,41 @@ static double SincScaleFactor(double io_ratio) {
- return sinc_scale_factor;
- }
-
-+#undef CONVOLVE_FUNC
-+
- static int CalculateChunkSize(int block_size_, double io_ratio) {
- return block_size_ / io_ratio;
- }
-
-+// If we know the minimum architecture at compile time, avoid CPU detection.
-+// Force NaCl code to use C routines since (at present) nothing there uses these
-+// methods and plumbing the -msse built library is non-trivial.
-+#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
-+#if defined(__SSE__)
-+#define CONVOLVE_FUNC Convolve_SSE
-+void SincResampler::InitializeCPUSpecificFeatures() {}
-+#else
-+// X86 CPU detection required. Functions will be set by
-+// InitializeCPUSpecificFeatures().
-+#define CONVOLVE_FUNC g_convolve_proc_
-+
-+typedef float (*ConvolveProc)(const float*, const float*, const float*, double);
-+static ConvolveProc g_convolve_proc_ = NULL;
-+
-+void SincResampler::InitializeCPUSpecificFeatures() {
-+ CHECK(!g_convolve_proc_);
-+ g_convolve_proc_ = base::CPU().has_sse() ? Convolve_SSE : Convolve_C;
-+}
-+#endif
-+#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
-+#define CONVOLVE_FUNC Convolve_NEON
-+void SincResampler::InitializeCPUSpecificFeatures() {}
-+#else
-+// Unknown architecture.
-+#define CONVOLVE_FUNC Convolve_C
-+void SincResampler::InitializeCPUSpecificFeatures() {}
-+#endif
-+
- SincResampler::SincResampler(double io_sample_rate_ratio,
- int request_frames,
- const ReadCB& read_cb)
-@@ -328,46 +354,7 @@ float SincResampler::Convolve_C(const float* input_ptr, const float* k1,
- kernel_interpolation_factor * sum2);
- }
-
--#if defined(ARCH_CPU_X86_FAMILY)
--float SincResampler::Convolve_SSE(const float* input_ptr, const float* k1,
-- const float* k2,
-- double kernel_interpolation_factor) {
-- __m128 m_input;
-- __m128 m_sums1 = _mm_setzero_ps();
-- __m128 m_sums2 = _mm_setzero_ps();
--
-- // Based on |input_ptr| alignment, we need to use loadu or load. Unrolling
-- // these loops hurt performance in local testing.
-- if (reinterpret_cast<uintptr_t>(input_ptr) & 0x0F) {
-- for (int i = 0; i < kKernelSize; i += 4) {
-- m_input = _mm_loadu_ps(input_ptr + i);
-- m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
-- m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
-- }
-- } else {
-- for (int i = 0; i < kKernelSize; i += 4) {
-- m_input = _mm_load_ps(input_ptr + i);
-- m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
-- m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
-- }
-- }
--
-- // Linearly interpolate the two "convolutions".
-- m_sums1 = _mm_mul_ps(m_sums1, _mm_set_ps1(
-- static_cast<float>(1.0 - kernel_interpolation_factor)));
-- m_sums2 = _mm_mul_ps(m_sums2, _mm_set_ps1(
-- static_cast<float>(kernel_interpolation_factor)));
-- m_sums1 = _mm_add_ps(m_sums1, m_sums2);
--
-- // Sum components together.
-- float result;
-- m_sums2 = _mm_add_ps(_mm_movehl_ps(m_sums1, m_sums1), m_sums1);
-- _mm_store_ss(&result, _mm_add_ss(m_sums2, _mm_shuffle_ps(
-- m_sums2, m_sums2, 1)));
--
-- return result;
--}
--#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
-+#if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
- float SincResampler::Convolve_NEON(const float* input_ptr, const float* k1,
- const float* k2,
- double kernel_interpolation_factor) {
-diff --git a/src/3rdparty/chromium/media/base/sinc_resampler.h b/src/3rdparty/chromium/media/base/sinc_resampler.h
-index afbd2abc9..9e3df2c55 100644
---- a/src/3rdparty/chromium/media/base/sinc_resampler.h
-+++ b/src/3rdparty/chromium/media/base/sinc_resampler.h
-@@ -36,6 +36,10 @@ class MEDIA_EXPORT SincResampler {
- kKernelStorageSize = kKernelSize * (kKernelOffsetCount + 1),
- };
-
-+ // Selects runtime specific CPU features like SSE. Must be called before
-+ // using SincResampler.
-+ static void InitializeCPUSpecificFeatures();
-+
- // Callback type for providing more data into the resampler. Expects |frames|
- // of data to be rendered into |destination|; zero padded if not enough frames
- // are available to satisfy the request.
-diff --git a/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc b/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc
-index 9cb7f4f2e..285382490 100644
---- a/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc
-+++ b/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc
-@@ -4,6 +4,7 @@
-
- #include "base/bind.h"
- #include "base/bind_helpers.h"
-+#include "base/cpu.h"
- #include "base/time/time.h"
- #include "build/build_config.h"
- #include "media/base/sinc_resampler.h"
-@@ -61,6 +62,9 @@ TEST(SincResamplerPerfTest, Convolve) {
- &resampler, SincResampler::Convolve_C, true, "unoptimized_aligned");
-
- #if defined(CONVOLVE_FUNC)
-+#if defined(ARCH_CPU_X86_FAMILY)
-+ ASSERT_TRUE(base::CPU().has_sse());
-+#endif
- RunConvolveBenchmark(
- &resampler, SincResampler::CONVOLVE_FUNC, true, "optimized_aligned");
- RunConvolveBenchmark(
-diff --git a/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc b/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc
-index 8dd346ee4..7401eee96 100644
---- a/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc
-+++ b/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc
-@@ -10,6 +10,7 @@
-
- #include "base/bind.h"
- #include "base/bind_helpers.h"
-+#include "base/cpu.h"
- #include "base/macros.h"
- #include "base/strings/string_number_conversions.h"
- #include "base/time/time.h"
-@@ -166,6 +167,10 @@ TEST(SincResamplerTest, DISABLED_SetRatioBench) {
- static const double kKernelInterpolationFactor = 0.5;
-
- TEST(SincResamplerTest, Convolve) {
-+#if defined(ARCH_CPU_X86_FAMILY)
-+ ASSERT_TRUE(base::CPU().has_sse());
-+#endif
-+
- // Initialize a dummy resampler.
- MockSource mock_source;
- SincResampler resampler(
-diff --git a/src/3rdparty/chromium/media/base/vector_math.cc b/src/3rdparty/chromium/media/base/vector_math.cc
-index 578290538..e041d8d4c 100644
---- a/src/3rdparty/chromium/media/base/vector_math.cc
-+++ b/src/3rdparty/chromium/media/base/vector_math.cc
-@@ -7,12 +7,17 @@
-
- #include <algorithm>
-
-+#include "base/cpu.h"
- #include "base/logging.h"
- #include "build/build_config.h"
-
-+namespace media {
-+namespace vector_math {
-+
-+// If we know the minimum architecture at compile time, avoid CPU detection.
- // NaCl does not allow intrinsics.
- #if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
--#include <xmmintrin.h>
-+#if defined(__SSE__)
- // Don't use custom SSE versions where the auto-vectorized C version performs
- // better, which is anywhere clang is used.
- #if !defined(__clang__)
-@@ -23,20 +28,52 @@
- #define FMUL_FUNC FMUL_C
- #endif
- #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
-+void Initialize() {}
-+#else
-+// X86 CPU detection required. Functions will be set by Initialize().
-+#if !defined(__clang__)
-+#define FMAC_FUNC g_fmac_proc_
-+#define FMUL_FUNC g_fmul_proc_
-+#else
-+#define FMAC_FUNC FMAC_C
-+#define FMUL_FUNC FMUL_C
-+#endif
-+#define EWMAAndMaxPower_FUNC g_ewma_power_proc_
-+
-+#if !defined(__clang__)
-+typedef void (*MathProc)(const float src[], float scale, int len, float dest[]);
-+static MathProc g_fmac_proc_ = NULL;
-+static MathProc g_fmul_proc_ = NULL;
-+#endif
-+typedef std::pair<float, float> (*EWMAAndMaxPowerProc)(
-+ float initial_value, const float src[], int len, float smoothing_factor);
-+static EWMAAndMaxPowerProc g_ewma_power_proc_ = NULL;
-+
-+void Initialize() {
-+ CHECK(!g_fmac_proc_);
-+ CHECK(!g_fmul_proc_);
-+ CHECK(!g_ewma_power_proc_);
-+ const bool kUseSSE = base::CPU().has_sse();
-+#if !defined(__clang__)
-+ g_fmac_proc_ = kUseSSE ? FMAC_SSE : FMAC_C;
-+ g_fmul_proc_ = kUseSSE ? FMUL_SSE : FMUL_C;
-+#endif
-+ g_ewma_power_proc_ = kUseSSE ? EWMAAndMaxPower_SSE : EWMAAndMaxPower_C;
-+}
-+#endif
- #elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
- #include <arm_neon.h>
- #define FMAC_FUNC FMAC_NEON
- #define FMUL_FUNC FMUL_NEON
- #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
-+void Initialize() {}
- #else
- #define FMAC_FUNC FMAC_C
- #define FMUL_FUNC FMUL_C
- #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_C
-+void Initialize() {}
- #endif
-
--namespace media {
--namespace vector_math {
--
- void FMAC(const float src[], float scale, int len, float dest[]) {
- // Ensure |src| and |dest| are 16-byte aligned.
- DCHECK_EQ(0u, reinterpret_cast<uintptr_t>(src) & (kRequiredAlignment - 1));
-@@ -89,111 +126,6 @@ std::pair<float, float> EWMAAndMaxPower_C(
- return result;
- }
-
--#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
--void FMUL_SSE(const float src[], float scale, int len, float dest[]) {
-- const int rem = len % 4;
-- const int last_index = len - rem;
-- __m128 m_scale = _mm_set_ps1(scale);
-- for (int i = 0; i < last_index; i += 4)
-- _mm_store_ps(dest + i, _mm_mul_ps(_mm_load_ps(src + i), m_scale));
--
-- // Handle any remaining values that wouldn't fit in an SSE pass.
-- for (int i = last_index; i < len; ++i)
-- dest[i] = src[i] * scale;
--}
--
--void FMAC_SSE(const float src[], float scale, int len, float dest[]) {
-- const int rem = len % 4;
-- const int last_index = len - rem;
-- __m128 m_scale = _mm_set_ps1(scale);
-- for (int i = 0; i < last_index; i += 4) {
-- _mm_store_ps(dest + i, _mm_add_ps(_mm_load_ps(dest + i),
-- _mm_mul_ps(_mm_load_ps(src + i), m_scale)));
-- }
--
-- // Handle any remaining values that wouldn't fit in an SSE pass.
-- for (int i = last_index; i < len; ++i)
-- dest[i] += src[i] * scale;
--}
--
--// Convenience macro to extract float 0 through 3 from the vector |a|. This is
--// needed because compilers other than clang don't support access via
--// operator[]().
--#define EXTRACT_FLOAT(a, i) \
-- (i == 0 ? \
-- _mm_cvtss_f32(a) : \
-- _mm_cvtss_f32(_mm_shuffle_ps(a, a, i)))
--
--std::pair<float, float> EWMAAndMaxPower_SSE(
-- float initial_value, const float src[], int len, float smoothing_factor) {
-- // When the recurrence is unrolled, we see that we can split it into 4
-- // separate lanes of evaluation:
-- //
-- // y[n] = a(S[n]^2) + (1-a)(y[n-1])
-- // = a(S[n]^2) + (1-a)^1(aS[n-1]^2) + (1-a)^2(aS[n-2]^2) + ...
-- // = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
-- //
-- // where z[n] = a(S[n]^2) + (1-a)^4(z[n-4]) + (1-a)^8(z[n-8]) + ...
-- //
-- // Thus, the strategy here is to compute z[n], z[n-1], z[n-2], and z[n-3] in
-- // each of the 4 lanes, and then combine them to give y[n].
--
-- const int rem = len % 4;
-- const int last_index = len - rem;
--
-- const __m128 smoothing_factor_x4 = _mm_set_ps1(smoothing_factor);
-- const float weight_prev = 1.0f - smoothing_factor;
-- const __m128 weight_prev_x4 = _mm_set_ps1(weight_prev);
-- const __m128 weight_prev_squared_x4 =
-- _mm_mul_ps(weight_prev_x4, weight_prev_x4);
-- const __m128 weight_prev_4th_x4 =
-- _mm_mul_ps(weight_prev_squared_x4, weight_prev_squared_x4);
--
-- // Compute z[n], z[n-1], z[n-2], and z[n-3] in parallel in lanes 3, 2, 1 and
-- // 0, respectively.
-- __m128 max_x4 = _mm_setzero_ps();
-- __m128 ewma_x4 = _mm_setr_ps(0.0f, 0.0f, 0.0f, initial_value);
-- int i;
-- for (i = 0; i < last_index; i += 4) {
-- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_4th_x4);
-- const __m128 sample_x4 = _mm_load_ps(src + i);
-- const __m128 sample_squared_x4 = _mm_mul_ps(sample_x4, sample_x4);
-- max_x4 = _mm_max_ps(max_x4, sample_squared_x4);
-- // Note: The compiler optimizes this to a single multiply-and-accumulate
-- // instruction:
-- ewma_x4 = _mm_add_ps(ewma_x4,
-- _mm_mul_ps(sample_squared_x4, smoothing_factor_x4));
-- }
--
-- // y[n] = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
-- float ewma = EXTRACT_FLOAT(ewma_x4, 3);
-- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
-- ewma += EXTRACT_FLOAT(ewma_x4, 2);
-- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
-- ewma += EXTRACT_FLOAT(ewma_x4, 1);
-- ewma_x4 = _mm_mul_ss(ewma_x4, weight_prev_x4);
-- ewma += EXTRACT_FLOAT(ewma_x4, 0);
--
-- // Fold the maximums together to get the overall maximum.
-- max_x4 = _mm_max_ps(max_x4,
-- _mm_shuffle_ps(max_x4, max_x4, _MM_SHUFFLE(3, 3, 1, 1)));
-- max_x4 = _mm_max_ss(max_x4, _mm_shuffle_ps(max_x4, max_x4, 2));
--
-- std::pair<float, float> result(ewma, EXTRACT_FLOAT(max_x4, 0));
--
-- // Handle remaining values at the end of |src|.
-- for (; i < len; ++i) {
-- result.first *= weight_prev;
-- const float sample = src[i];
-- const float sample_squared = sample * sample;
-- result.first += sample_squared * smoothing_factor;
-- result.second = std::max(result.second, sample_squared);
-- }
--
-- return result;
--}
--#endif
--
- #if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
- void FMAC_NEON(const float src[], float scale, int len, float dest[]) {
- const int rem = len % 4;
-diff --git a/src/3rdparty/chromium/media/base/vector_math.h b/src/3rdparty/chromium/media/base/vector_math.h
-index a148ca050..0a2cb06f6 100644
---- a/src/3rdparty/chromium/media/base/vector_math.h
-+++ b/src/3rdparty/chromium/media/base/vector_math.h
-@@ -15,6 +15,11 @@ namespace vector_math {
- // Required alignment for inputs and outputs to all vector math functions
- enum { kRequiredAlignment = 16 };
-
-+// Selects runtime specific optimizations such as SSE. Must be called prior to
-+// calling FMAC() or FMUL(). Called during media library initialization; most
-+// users should never have to call this.
-+MEDIA_EXPORT void Initialize();
-+
- // Multiply each element of |src| (up to |len|) by |scale| and add to |dest|.
- // |src| and |dest| must be aligned by kRequiredAlignment.
- MEDIA_EXPORT void FMAC(const float src[], float scale, int len, float dest[]);
-diff --git a/src/3rdparty/chromium/media/base/vector_math_perftest.cc b/src/3rdparty/chromium/media/base/vector_math_perftest.cc
-index 59b259dc2..c4c89a3b5 100644
---- a/src/3rdparty/chromium/media/base/vector_math_perftest.cc
-+++ b/src/3rdparty/chromium/media/base/vector_math_perftest.cc
-@@ -5,6 +5,7 @@
- #include <memory>
-
- #include "base/macros.h"
-+#include "base/cpu.h"
- #include "base/memory/aligned_memory.h"
- #include "base/time/time.h"
- #include "build/build_config.h"
-@@ -82,15 +83,11 @@ class VectorMathPerfTest : public testing::Test {
- DISALLOW_COPY_AND_ASSIGN(VectorMathPerfTest);
- };
-
--// Define platform dependent function names for SIMD optimized methods.
-+// Define platform independent function name for FMAC* perf tests.
- #if defined(ARCH_CPU_X86_FAMILY)
- #define FMAC_FUNC FMAC_SSE
--#define FMUL_FUNC FMUL_SSE
--#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
- #elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
- #define FMAC_FUNC FMAC_NEON
--#define FMUL_FUNC FMUL_NEON
--#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
- #endif
-
- // Benchmark for each optimized vector_math::FMAC() method.
-@@ -99,6 +96,9 @@ TEST_F(VectorMathPerfTest, FMAC) {
- RunBenchmark(
- vector_math::FMAC_C, true, "vector_math_fmac", "unoptimized");
- #if defined(FMAC_FUNC)
-+#if defined(ARCH_CPU_X86_FAMILY)
-+ ASSERT_TRUE(base::CPU().has_sse());
-+#endif
- // Benchmark FMAC_FUNC() with unaligned size.
- ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
- sizeof(float)), 0U);
-@@ -112,12 +112,24 @@ TEST_F(VectorMathPerfTest, FMAC) {
- #endif
- }
-
-+#undef FMAC_FUNC
-+
-+// Define platform independent function name for FMULBenchmark* tests.
-+#if defined(ARCH_CPU_X86_FAMILY)
-+#define FMUL_FUNC FMUL_SSE
-+#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
-+#define FMUL_FUNC FMUL_NEON
-+#endif
-+
- // Benchmark for each optimized vector_math::FMUL() method.
- TEST_F(VectorMathPerfTest, FMUL) {
- // Benchmark FMUL_C().
- RunBenchmark(
- vector_math::FMUL_C, true, "vector_math_fmul", "unoptimized");
- #if defined(FMUL_FUNC)
-+#if defined(ARCH_CPU_X86_FAMILY)
-+ ASSERT_TRUE(base::CPU().has_sse());
-+#endif
- // Benchmark FMUL_FUNC() with unaligned size.
- ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
- sizeof(float)), 0U);
-@@ -131,6 +143,14 @@ TEST_F(VectorMathPerfTest, FMUL) {
- #endif
- }
-
-+#undef FMUL_FUNC
-+
-+#if defined(ARCH_CPU_X86_FAMILY)
-+#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
-+#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
-+#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
-+#endif
-+
- // Benchmark for each optimized vector_math::EWMAAndMaxPower() method.
- TEST_F(VectorMathPerfTest, EWMAAndMaxPower) {
- // Benchmark EWMAAndMaxPower_C().
-@@ -139,6 +159,9 @@ TEST_F(VectorMathPerfTest, EWMAAndMaxPower) {
- "vector_math_ewma_and_max_power",
- "unoptimized");
- #if defined(EWMAAndMaxPower_FUNC)
-+#if defined(ARCH_CPU_X86_FAMILY)
-+ ASSERT_TRUE(base::CPU().has_sse());
-+#endif
- // Benchmark EWMAAndMaxPower_FUNC() with unaligned size.
- ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
- sizeof(float)), 0U);
-@@ -156,4 +179,6 @@ TEST_F(VectorMathPerfTest, EWMAAndMaxPower) {
- #endif
- }
-
-+#undef EWMAAndMaxPower_FUNC
-+
- } // namespace media
-diff --git a/src/3rdparty/chromium/media/base/vector_math_testing.h b/src/3rdparty/chromium/media/base/vector_math_testing.h
-index 9240fbf54..b0b304409 100644
---- a/src/3rdparty/chromium/media/base/vector_math_testing.h
-+++ b/src/3rdparty/chromium/media/base/vector_math_testing.h
-@@ -19,7 +19,7 @@ MEDIA_EXPORT void FMUL_C(const float src[], float scale, int len, float dest[]);
- MEDIA_EXPORT std::pair<float, float> EWMAAndMaxPower_C(
- float initial_value, const float src[], int len, float smoothing_factor);
-
--#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
-+#if defined(ARCH_CPU_X86_FAMILY)
- MEDIA_EXPORT void FMAC_SSE(const float src[], float scale, int len,
- float dest[]);
- MEDIA_EXPORT void FMUL_SSE(const float src[], float scale, int len,
-diff --git a/src/3rdparty/chromium/media/base/vector_math_unittest.cc b/src/3rdparty/chromium/media/base/vector_math_unittest.cc
-index 3fcb3fad4..c4e8586aa 100644
---- a/src/3rdparty/chromium/media/base/vector_math_unittest.cc
-+++ b/src/3rdparty/chromium/media/base/vector_math_unittest.cc
-@@ -9,6 +9,7 @@
- #include <memory>
-
- #include "base/macros.h"
-+#include "base/cpu.h"
- #include "base/memory/aligned_memory.h"
- #include "base/strings/string_number_conversions.h"
- #include "base/strings/stringize_macros.h"
-@@ -78,6 +79,7 @@ TEST_F(VectorMathTest, FMAC) {
-
- #if defined(ARCH_CPU_X86_FAMILY)
- {
-+ ASSERT_TRUE(base::CPU().has_sse());
- SCOPED_TRACE("FMAC_SSE");
- FillTestVectors(kInputFillValue, kOutputFillValue);
- vector_math::FMAC_SSE(
-@@ -119,6 +121,7 @@ TEST_F(VectorMathTest, FMUL) {
-
- #if defined(ARCH_CPU_X86_FAMILY)
- {
-+ ASSERT_TRUE(base::CPU().has_sse());
- SCOPED_TRACE("FMUL_SSE");
- FillTestVectors(kInputFillValue, kOutputFillValue);
- vector_math::FMUL_SSE(
-@@ -227,6 +230,7 @@ class EWMATestScenario {
-
- #if defined(ARCH_CPU_X86_FAMILY)
- {
-+ ASSERT_TRUE(base::CPU().has_sse());
- SCOPED_TRACE("EWMAAndMaxPower_SSE");
- const std::pair<float, float>& result = vector_math::EWMAAndMaxPower_SSE(
- initial_value_, data_.get(), data_len_, smoothing_factor_);
-diff --git a/src/3rdparty/chromium/media/base/yuv_convert.cc b/src/3rdparty/chromium/media/base/yuv_convert.cc
-index 2cdd9b1fd..2fc643416 100644
---- a/src/3rdparty/chromium/media/base/yuv_convert.cc
-+++ b/src/3rdparty/chromium/media/base/yuv_convert.cc
-@@ -32,7 +32,7 @@
- #include "media/base/simd/convert_yuv_to_rgb.h"
- #include "media/base/simd/filter_yuv.h"
-
--#if defined(ARCH_CPU_X86_FAMILY)
-+#if defined(ARCH_CPU_X86_FAMILY) && defined(__MMX__)
- #if defined(COMPILER_MSVC)
- #include <intrin.h>
- #else
-@@ -133,7 +133,7 @@ static const int16_t* g_table_rec709_ptr = NULL;
-
- // Empty SIMD registers state after using them.
- void EmptyRegisterStateStub() {}
--#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-+#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE) && defined(__MMX__)
- void EmptyRegisterStateIntrinsic() { _mm_empty(); }
- #endif
- typedef void (*EmptyRegisterStateProc)();
-@@ -247,34 +247,46 @@ void InitializeCPUSpecificYUVConversions() {
- // Assembly code confuses MemorySanitizer. Also not available in iOS builds.
- #if defined(ARCH_CPU_X86_FAMILY) && !defined(MEMORY_SANITIZER) && \
- !defined(OS_IOS)
-- g_convert_yuva_to_argb_proc_ = ConvertYUVAToARGB_MMX;
-+ base::CPU cpu;
-+ if (cpu.has_mmx()) {
-+ g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_MMX;
-+ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_MMX;
-+ g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_MMX;
-+ g_convert_yuva_to_argb_proc_ = ConvertYUVAToARGB_MMX;
-+ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX;
-
- #if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-- g_empty_register_state_proc_ = EmptyRegisterStateIntrinsic;
-+ g_filter_yuv_rows_proc_ = FilterYUVRows_MMX;
-+#endif
-+#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE) && defined(__MMX__)
-+ g_empty_register_state_proc_ = EmptyRegisterStateIntrinsic;
- #else
-- g_empty_register_state_proc_ = EmptyRegisterState_MMX;
-+ g_empty_register_state_proc_ = EmptyRegisterState_MMX;
- #endif
-+ }
-
-- g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_SSE;
-- g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_SSE;
-+ if (cpu.has_sse()) {
-+ g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_SSE;
-+ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE;
-+ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_SSE;
-+ g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_SSE;
-+ }
-
-- g_filter_yuv_rows_proc_ = FilterYUVRows_SSE2;
-- g_convert_rgb32_to_yuv_proc_ = ConvertRGB32ToYUV_SSE2;
-+ if (cpu.has_sse2()) {
-+ g_filter_yuv_rows_proc_ = FilterYUVRows_SSE2;
-+ g_convert_rgb32_to_yuv_proc_ = ConvertRGB32ToYUV_SSE2;
-
- #if defined(ARCH_CPU_X86_64)
-- g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE2_X64;
-+ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE2_X64;
-
-- // Technically this should be in the MMX section, but MSVC will optimize out
-- // the export of LinearScaleYUVToRGB32Row_MMX, which is required by the unit
-- // tests, if that decision can be made at compile time. Since all X64 CPUs
-- // have SSE2, we can hack around this by making the selection here.
-- g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX_X64;
--#else
-- g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE;
-- g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_SSE;
-+ // Technically this should be in the MMX section, but MSVC will optimize out
-+ // the export of LinearScaleYUVToRGB32Row_MMX, which is required by the unit
-+ // tests, if that decision can be made at compile time. Since all X64 CPUs
-+ // have SSE2, we can hack around this by making the selection here.
-+ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX_X64;
- #endif
-+ }
-
-- base::CPU cpu;
- if (cpu.has_ssse3()) {
- g_convert_rgb24_to_yuv_proc_ = &ConvertRGB24ToYUV_SSSE3;
-
-diff --git a/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc b/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc
-index ddf777cf3..f5520fd58 100644
---- a/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc
-+++ b/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc
-@@ -71,6 +71,29 @@ class YUVConvertPerfTest : public testing::Test {
- DISALLOW_COPY_AND_ASSIGN(YUVConvertPerfTest);
- };
-
-+TEST_F(YUVConvertPerfTest, ConvertYUVToRGB32Row_MMX) {
-+ ASSERT_TRUE(base::CPU().has_mmx());
-+
-+ base::TimeTicks start = base::TimeTicks::Now();
-+ for (int i = 0; i < kPerfTestIterations; ++i) {
-+ for (int row = 0; row < kSourceHeight; ++row) {
-+ int chroma_row = row / 2;
-+ ConvertYUVToRGB32Row_MMX(
-+ yuv_bytes_.get() + row * kSourceWidth,
-+ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
-+ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
-+ rgb_bytes_converted_.get(),
-+ kWidth,
-+ GetLookupTable(YV12));
-+ }
-+ }
-+ media::EmptyRegisterState();
-+ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
-+ perf_test::PrintResult(
-+ "yuv_convert_perftest", "", "ConvertYUVToRGB32Row_MMX",
-+ kPerfTestIterations / total_time_seconds, "runs/s", true);
-+}
-+
- TEST_F(YUVConvertPerfTest, ConvertYUVToRGB32Row_SSE) {
- ASSERT_TRUE(base::CPU().has_sse());
-
-@@ -161,9 +184,32 @@ TEST_F(YUVConvertPerfTest, I422AlphaToARGBRow_SSSE3) {
- }
- #endif
-
--// 64-bit release + component builds on Windows are too smart and optimizes
--// away the function being tested.
--#if defined(OS_WIN) && (defined(ARCH_CPU_X86) || !defined(COMPONENT_BUILD))
-+TEST_F(YUVConvertPerfTest, ScaleYUVToRGB32Row_MMX) {
-+ ASSERT_TRUE(base::CPU().has_mmx());
-+
-+ const int kSourceDx = 80000; // This value means a scale down.
-+
-+ base::TimeTicks start = base::TimeTicks::Now();
-+ for (int i = 0; i < kPerfTestIterations; ++i) {
-+ for (int row = 0; row < kSourceHeight; ++row) {
-+ int chroma_row = row / 2;
-+ ScaleYUVToRGB32Row_MMX(
-+ yuv_bytes_.get() + row * kSourceWidth,
-+ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
-+ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
-+ rgb_bytes_converted_.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ }
-+ }
-+ media::EmptyRegisterState();
-+ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
-+ perf_test::PrintResult(
-+ "yuv_convert_perftest", "", "ScaleYUVToRGB32Row_MMX",
-+ kPerfTestIterations / total_time_seconds, "runs/s", true);
-+}
-+
- TEST_F(YUVConvertPerfTest, ScaleYUVToRGB32Row_SSE) {
- ASSERT_TRUE(base::CPU().has_sse());
-
-@@ -190,6 +236,32 @@ TEST_F(YUVConvertPerfTest, ScaleYUVToRGB32Row_SSE) {
- kPerfTestIterations / total_time_seconds, "runs/s", true);
- }
-
-+TEST_F(YUVConvertPerfTest, LinearScaleYUVToRGB32Row_MMX) {
-+ ASSERT_TRUE(base::CPU().has_mmx());
-+
-+ const int kSourceDx = 80000; // This value means a scale down.
-+
-+ base::TimeTicks start = base::TimeTicks::Now();
-+ for (int i = 0; i < kPerfTestIterations; ++i) {
-+ for (int row = 0; row < kSourceHeight; ++row) {
-+ int chroma_row = row / 2;
-+ LinearScaleYUVToRGB32Row_MMX(
-+ yuv_bytes_.get() + row * kSourceWidth,
-+ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
-+ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
-+ rgb_bytes_converted_.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ }
-+ }
-+ media::EmptyRegisterState();
-+ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
-+ perf_test::PrintResult(
-+ "yuv_convert_perftest", "", "LinearScaleYUVToRGB32Row_MMX",
-+ kPerfTestIterations / total_time_seconds, "runs/s", true);
-+}
-+
- TEST_F(YUVConvertPerfTest, LinearScaleYUVToRGB32Row_SSE) {
- ASSERT_TRUE(base::CPU().has_sse());
-
-@@ -215,7 +287,6 @@ TEST_F(YUVConvertPerfTest, LinearScaleYUVToRGB32Row_SSE) {
- "yuv_convert_perftest", "", "LinearScaleYUVToRGB32Row_SSE",
- kPerfTestIterations / total_time_seconds, "runs/s", true);
- }
--#endif // defined(OS_WIN) && (ARCH_CPU_X86 || COMPONENT_BUILD)
-
- #endif // !defined(ARCH_CPU_ARM_FAMILY) && !defined(ARCH_CPU_MIPS_FAMILY)
-
-diff --git a/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc b/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc
-index ec872c89b..801466add 100644
---- a/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc
-+++ b/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc
-@@ -643,6 +643,37 @@ TEST(YUVConvertTest, RGB32ToYUV_SSE2_MatchReference) {
- EXPECT_EQ(0, error);
- }
-
-+TEST(YUVConvertTest, ConvertYUVToRGB32Row_MMX) {
-+ base::CPU cpu;
-+ if (!cpu.has_mmx()) {
-+ LOG(WARNING) << "System not supported. Test skipped.";
-+ return;
-+ }
-+
-+ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
-+ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
-+ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
-+ ReadYV12Data(&yuv_bytes);
-+
-+ const int kWidth = 167;
-+ ConvertYUVToRGB32Row_C(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_reference.get(),
-+ kWidth,
-+ GetLookupTable(YV12));
-+ ConvertYUVToRGB32Row_MMX(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_converted.get(),
-+ kWidth,
-+ GetLookupTable(YV12));
-+ media::EmptyRegisterState();
-+ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
-+ rgb_bytes_converted.get(),
-+ kWidth * kBpp));
-+}
-+
- TEST(YUVConvertTest, ConvertYUVToRGB32Row_SSE) {
- base::CPU cpu;
- if (!cpu.has_sse()) {
-@@ -674,9 +705,40 @@ TEST(YUVConvertTest, ConvertYUVToRGB32Row_SSE) {
- kWidth * kBpp));
- }
-
--// 64-bit release + component builds on Windows are too smart and optimizes
--// away the function being tested.
--#if defined(OS_WIN) && (defined(ARCH_CPU_X86) || !defined(COMPONENT_BUILD))
-+TEST(YUVConvertTest, ScaleYUVToRGB32Row_MMX) {
-+ base::CPU cpu;
-+ if (!cpu.has_mmx()) {
-+ LOG(WARNING) << "System not supported. Test skipped.";
-+ return;
-+ }
-+
-+ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
-+ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
-+ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
-+ ReadYV12Data(&yuv_bytes);
-+
-+ const int kWidth = 167;
-+ const int kSourceDx = 80000; // This value means a scale down.
-+ ScaleYUVToRGB32Row_C(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_reference.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ ScaleYUVToRGB32Row_MMX(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_converted.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ media::EmptyRegisterState();
-+ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
-+ rgb_bytes_converted.get(),
-+ kWidth * kBpp));
-+}
-+
- TEST(YUVConvertTest, ScaleYUVToRGB32Row_SSE) {
- base::CPU cpu;
- if (!cpu.has_sse()) {
-@@ -711,6 +773,40 @@ TEST(YUVConvertTest, ScaleYUVToRGB32Row_SSE) {
- kWidth * kBpp));
- }
-
-+TEST(YUVConvertTest, LinearScaleYUVToRGB32Row_MMX) {
-+ base::CPU cpu;
-+ if (!cpu.has_mmx()) {
-+ LOG(WARNING) << "System not supported. Test skipped.";
-+ return;
-+ }
-+
-+ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
-+ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
-+ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
-+ ReadYV12Data(&yuv_bytes);
-+
-+ const int kWidth = 167;
-+ const int kSourceDx = 80000; // This value means a scale down.
-+ LinearScaleYUVToRGB32Row_C(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_reference.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ LinearScaleYUVToRGB32Row_MMX(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_converted.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ media::EmptyRegisterState();
-+ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
-+ rgb_bytes_converted.get(),
-+ kWidth * kBpp));
-+}
-+
- TEST(YUVConvertTest, LinearScaleYUVToRGB32Row_SSE) {
- base::CPU cpu;
- if (!cpu.has_sse()) {
-@@ -744,7 +840,6 @@ TEST(YUVConvertTest, LinearScaleYUVToRGB32Row_SSE) {
- rgb_bytes_converted.get(),
- kWidth * kBpp));
- }
--#endif // defined(OS_WIN) && (ARCH_CPU_X86 || COMPONENT_BUILD)
-
- TEST(YUVConvertTest, FilterYUVRows_C_OutOfBounds) {
- std::unique_ptr<uint8_t[]> src(new uint8_t[16]);
-@@ -761,6 +856,30 @@ TEST(YUVConvertTest, FilterYUVRows_C_OutOfBounds) {
- }
- }
-
-+#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-+TEST(YUVConvertTest, FilterYUVRows_MMX_OutOfBounds) {
-+ base::CPU cpu;
-+ if (!cpu.has_mmx()) {
-+ LOG(WARNING) << "System not supported. Test skipped.";
-+ return;
-+ }
-+
-+ scoped_ptr<uint8[]> src(new uint8[16]);
-+ scoped_ptr<uint8[]> dst(new uint8[16]);
-+
-+ memset(src.get(), 0xff, 16);
-+ memset(dst.get(), 0, 16);
-+
-+ media::FilterYUVRows_MMX(dst.get(), src.get(), src.get(), 1, 255);
-+ media::EmptyRegisterState();
-+
-+ EXPECT_EQ(255u, dst[0]);
-+ for (int i = 1; i < 16; ++i) {
-+ EXPECT_EQ(0u, dst[i]);
-+ }
-+}
-+#endif // defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-+
- TEST(YUVConvertTest, FilterYUVRows_SSE2_OutOfBounds) {
- base::CPU cpu;
- if (!cpu.has_sse2()) {
-@@ -782,6 +901,38 @@ TEST(YUVConvertTest, FilterYUVRows_SSE2_OutOfBounds) {
- }
- }
-
-+#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-+TEST(YUVConvertTest, FilterYUVRows_MMX_UnalignedDestination) {
-+ base::CPU cpu;
-+ if (!cpu.has_mmx()) {
-+ LOG(WARNING) << "System not supported. Test skipped.";
-+ return;
-+ }
-+
-+ const int kSize = 32;
-+ scoped_ptr<uint8[]> src(new uint8[kSize]);
-+ scoped_ptr<uint8[]> dst_sample(new uint8[kSize]);
-+ scoped_ptr<uint8[]> dst(new uint8[kSize]);
-+
-+ memset(dst_sample.get(), 0, kSize);
-+ memset(dst.get(), 0, kSize);
-+ for (int i = 0; i < kSize; ++i)
-+ src[i] = 100 + i;
-+
-+ media::FilterYUVRows_C(dst_sample.get(),
-+ src.get(), src.get(), 17, 128);
-+
-+ // Generate an unaligned output address.
-+ uint8* dst_ptr =
-+ reinterpret_cast<uint8*>(
-+ (reinterpret_cast<uintptr_t>(dst.get() + 8) & ~7) + 1);
-+ media::FilterYUVRows_MMX(dst_ptr, src.get(), src.get(), 17, 128);
-+ media::EmptyRegisterState();
-+
-+ EXPECT_EQ(0, memcmp(dst_sample.get(), dst_ptr, 17));
-+}
-+#endif // defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-+
- TEST(YUVConvertTest, FilterYUVRows_SSE2_UnalignedDestination) {
- base::CPU cpu;
- if (!cpu.has_sse2()) {
-diff --git a/src/3rdparty/chromium/skia/BUILD.gn b/src/3rdparty/chromium/skia/BUILD.gn
-index 55854ffe6..9a1d4ec0f 100644
---- a/src/3rdparty/chromium/skia/BUILD.gn
-+++ b/src/3rdparty/chromium/skia/BUILD.gn
-@@ -1,38 +1,3 @@
--# Copyright (c) 2013 The Chromium Authors. All rights reserved.
--# Use of this source code is governed by a BSD-style license that can be
--# found in the LICENSE file.
--
--import("//build/config/features.gni")
--import("//build/config/ui.gni")
--import("//printing/features/features.gni")
--import("//testing/test.gni")
--import("//third_party/skia/gn/shared_sources.gni")
--
--if (current_cpu == "arm") {
-- import("//build/config/arm.gni")
--}
--if (current_cpu == "mipsel" || current_cpu == "mips64el") {
-- import("//build/config/mips.gni")
--}
--
--skia_support_gpu = !is_ios
--skia_support_pdf = !is_ios && (enable_basic_printing || enable_print_preview)
--
--# When building Chrome for iOS with GYP, the target cpu is not known during
--# the invocation of gyp. This cause the iOS build to use non-optimised skia.
--# Replicate this with GN to avoid introducing regression as recommended by
--# the OWNERS of skia.
--
--declare_args() {
-- skia_whitelist_serialized_typefaces = false
--
-- # TODO(crbug.com/607933): Once GYP is no longer supported, port iOS to use
-- # optimised skia.
-- skia_build_no_opts = is_ios
--}
--
--# External-facing config for dependent code.
--config("skia_config") {
- include_dirs = [
- "config",
- "ext",
-@@ -608,7 +573,15 @@ source_set("skia_opts") {
- if (skia_build_no_opts) {
- sources = skia_opts.none_sources
- } else if (current_cpu == "x86" || current_cpu == "x64") {
-- sources = skia_opts.sse2_sources
-+ sources = skia_opts.sse2_sources +
-+ [
-+ # Chrome-specific.
-+ "ext/convolver_SSE2.cc",
-+ "ext/convolver_SSE2.h",
-+ ]
-+ if (!is_win || is_clang) {
-+ cflags += [ "-msse2" ]
-+ }
- deps += [
- ":skia_opts_avx",
- ":skia_opts_hsw",
-@@ -644,6 +617,13 @@ source_set("skia_opts") {
-
- if (mips_dsp_rev >= 1) {
- sources = skia_opts.mips_dsp_sources
-+ if (mips_dsp_rev >= 2) {
-+ sources += [
-+ # Chrome-specific.
-+ "ext/convolver_mips_dspr2.cc",
-+ "ext/convolver_mips_dspr2.h",
-+ ]
-+ }
- } else {
- sources = skia_opts.none_sources
- }
-diff --git a/src/3rdparty/chromium/skia/ext/convolver.cc b/src/3rdparty/chromium/skia/ext/convolver.cc
-index 092fefaa9..4b40ffd2c 100644
---- a/src/3rdparty/chromium/skia/ext/convolver.cc
-+++ b/src/3rdparty/chromium/skia/ext/convolver.cc
-@@ -362,10 +362,13 @@ struct ConvolveProcs {
-
- void SetupSIMD(ConvolveProcs *procs) {
- #ifdef SIMD_SSE2
-- procs->extra_horizontal_reads = 3;
-- procs->convolve_vertically = &ConvolveVertically_SSE2;
-- procs->convolve_4rows_horizontally = &Convolve4RowsHorizontally_SSE2;
-- procs->convolve_horizontally = &ConvolveHorizontally_SSE2;
-+ base::CPU cpu;
-+ if (cpu.has_sse2()) {
-+ procs->extra_horizontal_reads = 3;
-+ procs->convolve_vertically = &ConvolveVertically_SSE2;
-+ procs->convolve_4rows_horizontally = &Convolve4RowsHorizontally_SSE2;
-+ procs->convolve_horizontally = &ConvolveHorizontally_SSE2;
-+ }
- #elif defined SIMD_MIPS_DSPR2
- procs->extra_horizontal_reads = 3;
- procs->convolve_vertically = &ConvolveVertically_mips_dspr2;
-diff --git a/src/3rdparty/chromium/skia/ext/convolver.h b/src/3rdparty/chromium/skia/ext/convolver.h
-index 1f33d4c0f..f7cd4770a 100644
---- a/src/3rdparty/chromium/skia/ext/convolver.h
-+++ b/src/3rdparty/chromium/skia/ext/convolver.h
-@@ -11,6 +11,7 @@
- #include <vector>
-
- #include "build/build_config.h"
-+#include "base/cpu.h"
- #include "third_party/skia/include/core/SkSize.h"
- #include "third_party/skia/include/core/SkTypes.h"
-
-diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp b/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
-index 8e558f439..20ba17688 100644
---- a/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
-+++ b/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
-@@ -31,7 +31,7 @@
- #include "wtf/MathExtras.h"
- #include <algorithm>
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- #include <emmintrin.h>
- #endif
-
-@@ -662,7 +662,7 @@ float AudioParamTimeline::valuesForFrameRangeImpl(size_t startFrame,
- // the next event.
- if (nextEventType == ParamEvent::LinearRampToValue) {
- const float valueDelta = value2 - value1;
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if (fillToFrame > writeIndex) {
- // Minimize in-loop operations. Calculate starting value and increment.
- // Next step: value += inc.
-@@ -841,7 +841,7 @@ float AudioParamTimeline::valuesForFrameRangeImpl(size_t startFrame,
- for (; writeIndex < fillToFrame; ++writeIndex)
- values[writeIndex] = target;
- } else {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if (fillToFrame > writeIndex) {
- // Resolve recursion by expanding constants to achieve a 4-step
- // loop unrolling.
-@@ -959,7 +959,7 @@ float AudioParamTimeline::valuesForFrameRangeImpl(size_t startFrame,
- // Oversampled curve data can be provided if sharp discontinuities are
- // desired.
- unsigned k = 0;
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if (fillToFrame > writeIndex) {
- const __m128 vCurveVirtualIndex = _mm_set_ps1(curveVirtualIndex);
- const __m128 vCurvePointsPerFrame =
-diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp
-index a77ec195c..d76c2d015 100644
---- a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp
-+++ b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp
-@@ -26,6 +26,9 @@
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-+// include this first to get it before the CPU() function-like macro
-+#include "base/cpu.h"
-+
- #include "platform/audio/DirectConvolver.h"
-
- #if OS(MACOSX)
-@@ -35,21 +38,45 @@
- #include "platform/audio/VectorMath.h"
- #include "wtf/CPU.h"
-
--#if (CPU(X86) || CPU(X86_64)) && !OS(MACOSX)
-+#if ((CPU(X86) && defined(__SSE2__)) || CPU(X86_64)) && !OS(MACOSX)
- #include <emmintrin.h>
- #endif
-
-+#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
-+#error SSE2 parts must be built with -msse2
-+#endif
-+
- namespace blink {
-
- using namespace VectorMath;
-
-+#ifndef BUILD_ONLY_THE_SSE2_PARTS
-+
- DirectConvolver::DirectConvolver(size_t inputBlockSize)
-- : m_inputBlockSize(inputBlockSize), m_buffer(inputBlockSize * 2) {}
-+ : m_inputBlockSize(inputBlockSize), m_buffer(inputBlockSize * 2)
-+{
-+#if CPU(X86)
-+ base::CPU cpu;
-+ m_haveSSE2 = cpu.has_sse2();
-+#endif
-+}
-+#endif
-
-+#ifdef BUILD_ONLY_THE_SSE2_PARTS
-+void DirectConvolver::m_processSSE2(AudioFloatArray* convolutionKernel, const float* sourceP, float* destP, size_t framesToProcess)
-+#else
- void DirectConvolver::process(AudioFloatArray* convolutionKernel,
- const float* sourceP,
- float* destP,
-- size_t framesToProcess) {
-+ size_t framesToProcess)
-+#endif
-+{
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
-+ if (m_haveSSE2) {
-+ m_processSSE2(convolutionKernel, sourceP, destP, framesToProcess);
-+ return;
-+ }
-+#endif
- ASSERT(framesToProcess == m_inputBlockSize);
- if (framesToProcess != m_inputBlockSize)
- return;
-@@ -83,7 +110,7 @@ void DirectConvolver::process(AudioFloatArray* convolutionKernel,
- #endif // CPU(X86)
- #else
- size_t i = 0;
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- // Convolution using SSE2. Currently only do this if both |kernelSize| and
- // |framesToProcess| are multiples of 4. If not, use the straightforward loop
- // below.
-@@ -397,7 +424,7 @@ void DirectConvolver::process(AudioFloatArray* convolutionKernel,
- }
- destP[i++] = sum;
- }
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- }
- #endif
- #endif // OS(MACOSX)
-@@ -406,8 +433,9 @@ void DirectConvolver::process(AudioFloatArray* convolutionKernel,
- memcpy(m_buffer.data(), inputP, sizeof(float) * framesToProcess);
- }
-
-+#ifndef BUILD_ONLY_THE_SSE2_PARTS
- void DirectConvolver::reset() {
- m_buffer.zero();
- }
--
-+#endif
- } // namespace blink
-diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h
-index 848f6aa73..78ea0d84c 100644
---- a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h
-+++ b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h
-@@ -32,6 +32,7 @@
- #include "platform/PlatformExport.h"
- #include "platform/audio/AudioArray.h"
- #include "wtf/Allocator.h"
-+#include "wtf/CPU.h"
- #include "wtf/Noncopyable.h"
-
- namespace blink {
-@@ -54,6 +55,12 @@ class PLATFORM_EXPORT DirectConvolver {
- size_t m_inputBlockSize;
-
- AudioFloatArray m_buffer;
-+
-+#if CPU(X86)
-+ bool m_haveSSE2;
-+ void m_processSSE2(AudioFloatArray* convolutionKernel, const float* sourceP, float* destP, size_t framesToProcess);
-+#endif
-+
- };
-
- } // namespace blink
-diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp
-index e7ca2c77d..a0ad93953 100644
---- a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp
-+++ b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp
-@@ -26,15 +26,22 @@
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-+// include this first to get it before the CPU() function-like macro
-+#include "base/cpu.h"
-+
- #include "platform/audio/SincResampler.h"
- #include "platform/audio/AudioBus.h"
- #include "wtf/CPU.h"
- #include "wtf/MathExtras.h"
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- #include <emmintrin.h>
- #endif
-
-+#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
-+#error SSE2 parts must be built with -msse2
-+#endif
-+
- // Input buffer layout, dividing the total buffer into regions (r0 - r5):
- //
- // |----------------|-----------------------------------------|----------------|
-@@ -66,6 +73,8 @@
-
- namespace blink {
-
-+#ifndef BUILD_ONLY_THE_SSE2_PARTS
-+
- SincResampler::SincResampler(double scaleFactor,
- unsigned kernelSize,
- unsigned numberOfKernelOffsets)
-@@ -81,6 +90,10 @@ SincResampler::SincResampler(double scaleFactor,
- m_sourceFramesAvailable(0),
- m_sourceProvider(nullptr),
- m_isBufferPrimed(false) {
-+#if CPU(X86)
-+ base::CPU cpu;
-+ m_haveSSE2 = cpu.has_sse2();
-+#endif
- initializeKernel();
- }
-
-@@ -200,10 +213,22 @@ void SincResampler::process(const float* source,
- remaining -= framesThisTime;
- }
- }
-+#endif //BUILD_ONLY_THE_SSE2_PARTS
-
-+#ifdef BUILD_ONLY_THE_SSE2_PARTS
-+void SincResampler::m_processSSE2(AudioSourceProvider* sourceProvider, float* destination, size_t framesToProcess)
-+#else
- void SincResampler::process(AudioSourceProvider* sourceProvider,
- float* destination,
-- size_t framesToProcess) {
-+ size_t framesToProcess)
-+#endif
-+{
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (m_haveSSE2) {
-+ m_processSSE2(sourceProvider, destination, framesToProcess);
-+ return;
-+ }
-+#endif
- bool isGood = sourceProvider && m_blockSize > m_kernelSize &&
- m_inputBuffer.size() >= m_blockSize + m_kernelSize &&
- !(m_kernelSize % 2);
-@@ -269,7 +294,7 @@ void SincResampler::process(AudioSourceProvider* sourceProvider,
- {
- float input;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- // If the sourceP address is not 16-byte aligned, the first several
- // frames (at most three) should be processed seperately.
- while ((reinterpret_cast<uintptr_t>(inputP) & 0x0F) && n) {
-diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h
-index b96ec94cf..4b6b3293e 100644
---- a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h
-+++ b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h
-@@ -33,6 +33,7 @@
- #include "platform/audio/AudioArray.h"
- #include "platform/audio/AudioSourceProvider.h"
- #include "wtf/Allocator.h"
-+#include "wtf/CPU.h"
- #include "wtf/Noncopyable.h"
-
- namespace blink {
-@@ -96,6 +97,12 @@ class PLATFORM_EXPORT SincResampler {
-
- // The buffer is primed once at the very beginning of processing.
- bool m_isBufferPrimed;
-+
-+#if CPU(X86)
-+ bool m_haveSSE2;
-+ void m_processSSE2(AudioSourceProvider*, float* destination, size_t framesToProcess);
-+#endif
-+ };
- };
-
- } // namespace blink
-diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp
-index 8f3592cd7..ba9fc1a73 100644
---- a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp
-+++ b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp
-@@ -23,6 +23,9 @@
- * DAMAGE.
- */
-
-+// include this first to get it before the CPU() function-like macro
-+#include "base/cpu.h"
-+
- #include "platform/audio/VectorMath.h"
- #include "wtf/Assertions.h"
- #include "wtf/CPU.h"
-@@ -33,10 +36,14 @@
- #include <Accelerate/Accelerate.h>
- #endif
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- #include <emmintrin.h>
- #endif
-
-+#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
-+#error SSE2 parts must be built with -msse2
-+#endif
-+
- #if HAVE(ARM_NEON_INTRINSICS)
- #include <arm_neon.h>
- #endif
-@@ -165,15 +172,30 @@ void vclip(const float* sourceP,
- }
- #else
-
-+#ifdef BUILD_ONLY_THE_SSE2_PARTS
-+namespace SSE2 {
-+#endif
-+
-+#if CPU(X86) && !defined(__SSE2__)
-+static base::CPU cpu;
-+#endif
-+
- void vsma(const float* sourceP,
- int sourceStride,
- const float* scale,
- float* destP,
- int destStride,
- size_t framesToProcess) {
-- int n = framesToProcess;
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vsma(sourceP, sourceStride, scale, destP, destStride, framesToProcess);
-+ return;
-+ }
-+#endif
-+
-+int n = framesToProcess;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if ((sourceStride == 1) && (destStride == 1)) {
- float k = *scale;
-
-@@ -269,9 +291,16 @@ void vsmul(const float* sourceP,
- float* destP,
- int destStride,
- size_t framesToProcess) {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vsmul(sourceP, sourceStride, scale, destP, destStride, framesToProcess);
-+ return;
-+ }
-+#endif
-+
- int n = framesToProcess;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if ((sourceStride == 1) && (destStride == 1)) {
- float k = *scale;
-
-@@ -360,7 +389,7 @@ void vsmul(const float* sourceP,
- sourceP += sourceStride;
- destP += destStride;
- }
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- }
- #endif
- }
-@@ -372,9 +401,16 @@ void vadd(const float* source1P,
- float* destP,
- int destStride,
- size_t framesToProcess) {
-- int n = framesToProcess;
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vadd(source1P, sourceStride1, source2P, sourceStride2, destP, destStride, framesToProcess);
-+ return;
-+ }
-+#endif
-
--#if CPU(X86) || CPU(X86_64)
-+ int n = framesToProcess;
-+
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if ((sourceStride1 == 1) && (sourceStride2 == 1) && (destStride == 1)) {
- // If the sourceP address is not 16-byte aligned, the first several frames
- // (at most three) should be processed separately.
-@@ -501,7 +537,7 @@ void vadd(const float* source1P,
- source2P += sourceStride2;
- destP += destStride;
- }
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- }
- #endif
- }
-@@ -513,9 +549,16 @@ void vmul(const float* source1P,
- float* destP,
- int destStride,
- size_t framesToProcess) {
-- int n = framesToProcess;
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vmul(source1P, sourceStride1, source2P, sourceStride2, destP, destStride, framesToProcess);
-+ return;
-+ }
-+#endif
-+
-+int n = framesToProcess;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if ((sourceStride1 == 1) && (sourceStride2 == 1) && (destStride == 1)) {
- // If the source1P address is not 16-byte aligned, the first several frames
- // (at most three) should be processed separately.
-@@ -614,8 +657,15 @@ void zvmul(const float* real1P,
- float* realDestP,
- float* imagDestP,
- size_t framesToProcess) {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::zvmul(real1P, imag1P, real2P, imag2P, realDestP, imagDestP, framesToProcess);
-+ return;
-+ }
-+#endif
-+
- unsigned i = 0;
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- // Only use the SSE optimization in the very common case that all addresses
- // are 16-byte aligned. Otherwise, fall through to the scalar code below.
- if (!(reinterpret_cast<uintptr_t>(real1P) & 0x0F) &&
-@@ -671,10 +721,17 @@ void vsvesq(const float* sourceP,
- int sourceStride,
- float* sumP,
- size_t framesToProcess) {
-- int n = framesToProcess;
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vsvesq(sourceP, sourceStride, sumP, framesToProcess);
-+ return;
-+ }
-+#endif
-+
-+ int n = framesToProcess;
- float sum = 0;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if (sourceStride == 1) {
- // If the sourceP address is not 16-byte aligned, the first several frames
- // (at most three) should be processed separately.
-@@ -740,10 +797,16 @@ void vmaxmgv(const float* sourceP,
- int sourceStride,
- float* maxP,
- size_t framesToProcess) {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vmaxmgv(sourceP, sourceStride, maxP, framesToProcess);
-+ return;
-+ }
-+#endif
- int n = framesToProcess;
- float max = 0;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if (sourceStride == 1) {
- // If the sourceP address is not 16-byte aligned, the first several frames
- // (at most three) should be processed separately.
-@@ -839,6 +902,7 @@ void vclip(const float* sourceP,
- float* destP,
- int destStride,
- size_t framesToProcess) {
-+#ifndef BUILD_ONLY_THE_SSE2_PARTS
- int n = framesToProcess;
- float lowThreshold = *lowThresholdP;
- float highThreshold = *highThresholdP;
-@@ -888,6 +952,11 @@ void vclip(const float* sourceP,
- destP += destStride;
- }
- }
-+#endif
-+
-+#ifdef BUILD_ONLY_THE_SSE2_PARTS
-+} // namespace SSE2
-+#endif
-
- #endif // OS(MACOSX)
-
-diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h
-index 8f375071c..d92e5b85e 100644
---- a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h
-+++ b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h
-@@ -27,6 +27,7 @@
- #define VectorMath_h
-
- #include "platform/PlatformExport.h"
-+#include "wtf/CPU.h"
- #include "wtf/build_config.h"
- #include <cstddef>
-
-@@ -97,6 +98,28 @@ PLATFORM_EXPORT void vclip(const float* sourceP,
- int destStride,
- size_t framesToProcess);
-
-+#if CPU(X86)
-+namespace SSE2 {
-+// Vector scalar multiply and then add.
-+PLATFORM_EXPORT void vsma(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess);
-+
-+PLATFORM_EXPORT void vsmul(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess);
-+PLATFORM_EXPORT void vadd(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess);
-+
-+// Finds the maximum magnitude of a float vector.
-+PLATFORM_EXPORT void vmaxmgv(const float* sourceP, int sourceStride, float* maxP, size_t framesToProcess);
-+
-+// Sums the squares of a float vector's elements.
-+PLATFORM_EXPORT void vsvesq(const float* sourceP, int sourceStride, float* sumP, size_t framesToProcess);
-+
-+// For an element-by-element multiply of two float vectors.
-+PLATFORM_EXPORT void vmul(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess);
-+
-+// Multiplies two complex vectors.
-+PLATFORM_EXPORT void zvmul(const float* real1P, const float* imag1P, const float* real2P, const float* imag2P, float* realDestP, float* imagDestP, size_t framesToProcess);
-+}
-+#endif
-+
- } // namespace VectorMath
- } // namespace blink
-
-diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h b/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h
-index e30fcb464..4b3437057 100644
---- a/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h
-+++ b/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h
-@@ -5,7 +5,7 @@
- #ifndef WebGLImageConversionSSE_h
- #define WebGLImageConversionSSE_h
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
-
- #include <emmintrin.h>
-
-diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp b/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp
-index be417ea88..e79034424 100644
---- a/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp
-+++ b/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp
-@@ -441,7 +441,7 @@ void unpack<WebGLImageConversion::DataFormatBGRA8, uint8_t, uint8_t>(
- const uint32_t* source32 = reinterpret_cast_ptr<const uint32_t*>(source);
- uint32_t* destination32 = reinterpret_cast_ptr<uint32_t*>(destination);
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::unpackOneRowOfBGRA8LittleToRGBA8(source32, destination32, pixelsPerRow);
- #endif
- #if HAVE(MIPS_MSA_INTRINSICS)
-@@ -467,7 +467,7 @@ void unpack<WebGLImageConversion::DataFormatRGBA5551, uint16_t, uint8_t>(
- const uint16_t* source,
- uint8_t* destination,
- unsigned pixelsPerRow) {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::unpackOneRowOfRGBA5551LittleToRGBA8(source, destination, pixelsPerRow);
- #endif
- #if HAVE(ARM_NEON_INTRINSICS)
-@@ -496,7 +496,7 @@ void unpack<WebGLImageConversion::DataFormatRGBA4444, uint16_t, uint8_t>(
- const uint16_t* source,
- uint8_t* destination,
- unsigned pixelsPerRow) {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::unpackOneRowOfRGBA4444LittleToRGBA8(source, destination, pixelsPerRow);
- #endif
- #if HAVE(ARM_NEON_INTRINSICS)
-@@ -711,7 +711,7 @@ void pack<WebGLImageConversion::DataFormatR8,
- uint8_t>(const uint8_t* source,
- uint8_t* destination,
- unsigned pixelsPerRow) {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::packOneRowOfRGBA8LittleToR8(source, destination, pixelsPerRow);
- #endif
- #if HAVE(MIPS_MSA_INTRINSICS)
-@@ -768,7 +768,7 @@ void pack<WebGLImageConversion::DataFormatRA8,
- uint8_t>(const uint8_t* source,
- uint8_t* destination,
- unsigned pixelsPerRow) {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::packOneRowOfRGBA8LittleToRA8(source, destination, pixelsPerRow);
- #endif
- #if HAVE(MIPS_MSA_INTRINSICS)
-@@ -880,7 +880,7 @@ void pack<WebGLImageConversion::DataFormatRGBA8,
- uint8_t>(const uint8_t* source,
- uint8_t* destination,
- unsigned pixelsPerRow) {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::packOneRowOfRGBA8LittleToRGBA8(source, destination, pixelsPerRow);
- #endif
- #if HAVE(MIPS_MSA_INTRINSICS)
-diff --git a/src/3rdparty/chromium/third_party/qcms/BUILD.gn b/src/3rdparty/chromium/third_party/qcms/BUILD.gn
-index 1183569be..771dd02c8 100644
---- a/src/3rdparty/chromium/third_party/qcms/BUILD.gn
-+++ b/src/3rdparty/chromium/third_party/qcms/BUILD.gn
-@@ -30,8 +30,8 @@ static_library("qcms") {
- ]
-
- if (current_cpu == "x86" || current_cpu == "x64") {
-- defines = [ "SSE2_ENABLE" ]
-- sources += [ "src/transform-sse2.c" ]
-+ defines = [ "SSE2_ENABLE" ] # runtime detection
-+ deps = [ "qcms_sse2" ]
- }
- }
-
-@@ -74,3 +74,16 @@ if (!disable_qcms) {
- public_configs = [ ":qcms_config" ]
- }
- }
-+
-+source_set("qcms_sse2") {
-+ configs -= [ "//build/config/compiler:chromium_code" ]
-+ configs += [ "//build/config/compiler:no_chromium_code" ]
-+ public_configs = [ ":qcms_config" ]
-+
-+ if (current_cpu == "x86" || current_cpu == "x64") {
-+ defines = [ "SSE2_ENABLE" ]
-+ sources = [ "src/transform-sse2.c" ]
-+ cflags = [ "-msse2" ]
-+ }
-+}
-+
-diff --git a/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc b/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc
-index e721346f3..ef5a4e4a7 100644
---- a/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc
-+++ b/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc
-@@ -14,6 +14,7 @@
- #include "webrtc/common_audio/real_fourier_ooura.h"
- #include "webrtc/common_audio/real_fourier_openmax.h"
- #include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-+#include "webrtc/system_wrappers/include/cpu_features_wrapper.h"
-
- namespace webrtc {
-
-@@ -23,7 +24,15 @@ const size_t RealFourier::kFftBufferAlignment = 32;
-
- std::unique_ptr<RealFourier> RealFourier::Create(int fft_order) {
- #if defined(RTC_USE_OPENMAX_DL)
-+#if defined(WEBRTC_ARCH_X86_FAMILY) && !defined(__SSE2__)
-+ // x86 CPU detection required.
-+ if (WebRtc_GetCPUInfo(kSSE2))
-+ return std::unique_ptr<RealFourier>(new RealFourierOpenmax(fft_order));
-+ else
-+ return std::unique_ptr<RealFourier>(new RealFourierOoura(fft_order));
-+#else
- return std::unique_ptr<RealFourier>(new RealFourierOpenmax(fft_order));
-+#endif
- #else
- return std::unique_ptr<RealFourier>(new RealFourierOoura(fft_order));
- #endif
-diff --git a/src/3rdparty/chromium/v8/BUILD.gn b/src/3rdparty/chromium/v8/BUILD.gn
-index 9b209dfff..d88261d53 100644
---- a/src/3rdparty/chromium/v8/BUILD.gn
-+++ b/src/3rdparty/chromium/v8/BUILD.gn
-@@ -1769,43 +1769,41 @@ v8_static_library("v8_base") {
-
- if (v8_current_cpu == "x86") {
- sources += [ ### gcmole(arch:ia32) ###
-- "src/builtins/ia32/builtins-ia32.cc",
-- "src/compiler/ia32/code-generator-ia32.cc",
-- "src/compiler/ia32/instruction-codes-ia32.h",
-- "src/compiler/ia32/instruction-scheduler-ia32.cc",
-- "src/compiler/ia32/instruction-selector-ia32.cc",
-- "src/crankshaft/ia32/lithium-codegen-ia32.cc",
-- "src/crankshaft/ia32/lithium-codegen-ia32.h",
-- "src/crankshaft/ia32/lithium-gap-resolver-ia32.cc",
-- "src/crankshaft/ia32/lithium-gap-resolver-ia32.h",
-- "src/crankshaft/ia32/lithium-ia32.cc",
-- "src/crankshaft/ia32/lithium-ia32.h",
-- "src/debug/ia32/debug-ia32.cc",
-- "src/full-codegen/ia32/full-codegen-ia32.cc",
-- "src/ia32/assembler-ia32-inl.h",
-- "src/ia32/assembler-ia32.cc",
-- "src/ia32/assembler-ia32.h",
-- "src/ia32/code-stubs-ia32.cc",
-- "src/ia32/code-stubs-ia32.h",
-- "src/ia32/codegen-ia32.cc",
-- "src/ia32/codegen-ia32.h",
-- "src/ia32/cpu-ia32.cc",
-- "src/ia32/deoptimizer-ia32.cc",
-- "src/ia32/disasm-ia32.cc",
-- "src/ia32/frames-ia32.cc",
-- "src/ia32/frames-ia32.h",
-- "src/ia32/interface-descriptors-ia32.cc",
-- "src/ia32/macro-assembler-ia32.cc",
-- "src/ia32/macro-assembler-ia32.h",
-- "src/ia32/simulator-ia32.cc",
-- "src/ia32/simulator-ia32.h",
-- "src/ic/ia32/access-compiler-ia32.cc",
-- "src/ic/ia32/handler-compiler-ia32.cc",
-- "src/ic/ia32/ic-compiler-ia32.cc",
-- "src/ic/ia32/ic-ia32.cc",
-- "src/ic/ia32/stub-cache-ia32.cc",
-- "src/regexp/ia32/regexp-macro-assembler-ia32.cc",
-- "src/regexp/ia32/regexp-macro-assembler-ia32.h",
-+ "src/compiler/x87/code-generator-x87.cc",
-+ "src/compiler/x87/instruction-codes-x87.h",
-+ "src/compiler/x87/instruction-scheduler-x87.cc",
-+ "src/compiler/x87/instruction-selector-x87.cc",
-+ "src/crankshaft/x87/lithium-codegen-x87.cc",
-+ "src/crankshaft/x87/lithium-codegen-x87.h",
-+ "src/crankshaft/x87/lithium-gap-resolver-x87.cc",
-+ "src/crankshaft/x87/lithium-gap-resolver-x87.h",
-+ "src/crankshaft/x87/lithium-x87.cc",
-+ "src/crankshaft/x87/lithium-x87.h",
-+ "src/debug/x87/debug-x87.cc",
-+ "src/full-codegen/x87/full-codegen-x87.cc",
-+ "src/x87/assembler-x87-inl.h",
-+ "src/x87/assembler-x87.cc",
-+ "src/x87/assembler-x87.h",
-+ "src/x87/builtins-x87.cc",
-+ "src/x87/code-stubs-x87.cc",
-+ "src/x87/code-stubs-x87.h",
-+ "src/x87/codegen-x87.cc",
-+ "src/x87/codegen-x87.h",
-+ "src/x87/cpu-x87.cc",
-+ "src/x87/deoptimizer-x87.cc",
-+ "src/x87/disasm-x87.cc",
-+ "src/x87/frames-x87.cc",
-+ "src/x87/frames-x87.h",
-+ "src/x87/interface-descriptors-x87.cc",
-+ "src/x87/macro-assembler-x87.cc",
-+ "src/x87/macro-assembler-x87.h",
-+ "src/ic/x87/access-compiler-x87.cc",
-+ "src/ic/x87/handler-compiler-x87.cc",
-+ "src/ic/x87/ic-compiler-x87.cc",
-+ "src/ic/x87/ic-x87.cc",
-+ "src/ic/x87/stub-cache-x87.cc",
-+ "src/regexp/x87/regexp-macro-assembler-x87.cc",
-+ "src/regexp/x87/regexp-macro-assembler-x87.h",
- ]
- } else if (v8_current_cpu == "x64") {
- sources += [ ### gcmole(arch:x64) ###
-diff --git a/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh b/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh
-new file mode 100644
-index 000000000..0e7ec1621
---- /dev/null
-+++ b/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh
-@@ -0,0 +1,56 @@
-+#!/bin/sh
-+# This script renames the v8 targets to _sse2 names so that they do not conflict
-+# with the non-SSE2 versions.
-+
-+# Copyright 2016 Kevin Kofler. All rights reserved.
-+# Redistribution and use in source and binary forms, with or without
-+# modification, are permitted provided that the following conditions are
-+# met:
-+#
-+# * Redistributions of source code must retain the above copyright
-+# notice, this list of conditions and the following disclaimer.
-+# * Redistributions in binary form must reproduce the above
-+# copyright notice, this list of conditions and the following
-+# disclaimer in the documentation and/or other materials provided
-+# with the distribution.
-+# * Neither the name of Google Inc. nor the names of its
-+# contributors may be used to endorse or promote products derived
-+# from this software without specific prior written permission.
-+#
-+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+# add comment noting that the file is generated
-+echo "# Generated from v8.gyp by make-v8-sse2-gyp.sh" >v8_sse2.gyp
-+# rename all target names
-+SUBTARGETS=`grep "'target_name': '" v8.gyp | sed -e "s/^.*'target_name': '//g" -e "s/',$//g"`
-+SEDS=
-+for SUBTARGET in $SUBTARGETS ; do
-+ SEDS=$SEDS\ -e\ "s/'$SUBTARGET\(['#]\)/'${SUBTARGET}_sse2\1/g"
-+done
-+# in addition:
-+# * set v8_target_arch to "ia32" (instead of "x87")
-+# * rename all actions
-+# * fix mksnapshot_exec to match the renamed target
-+# * rename the generated snapshot.cc (but not mksnapshot.cc) to snapshot_sse2.cc
-+# * rename the generated *libraries.cc to *libraries_sse2.cc
-+# * rename the generated *.bin to *_sse2.bin
-+# * set product_name and product_dir for the v8_sse2 target
-+sed -e "s/^\( 'variables': {\)/\1\n 'v8_target_arch': 'ia32',/g" \
-+ -e "s/\('action_name': '\)/\1v8_sse2_/g" \
-+ $SEDS \
-+ -e "s/\('mksnapshot_exec': '.*mksnapshot\)/\1_sse2/g" \
-+ -e "s#/snapshot\.cc#/snapshot_sse2.cc#g" \
-+ -e "s/libraries\.cc/libraries_sse2.cc/g" \
-+ -e "s/\.bin/_sse2.bin/g" \
-+ -e "s#^\( *\)\('target_name': 'v8_sse2',\)#\1\2\n\1'product_name': 'v8',\n\1'product_dir': '<(PRODUCT_DIR)/lib/sse2',#g" \
-+ v8.gyp >>v8_sse2.gyp
-diff --git a/src/3rdparty/chromium/v8/src/v8.gyp b/src/3rdparty/chromium/v8/src/v8.gyp
-index 020ec0928..2add932fc 100644
---- a/src/3rdparty/chromium/v8/src/v8.gyp
-+++ b/src/3rdparty/chromium/v8/src/v8.gyp
-@@ -51,8 +51,8 @@
- }, {
- 'toolsets': ['target'],
- }],
-- ['component=="shared_library"', {
-- 'type': '<(component)',
-+ ['v8_component=="shared_library"', {
-+ 'type': '<(v8_component)',
- 'sources': [
- # Note: on non-Windows we still build this file so that gyp
- # has some sources to link into the component.
-@@ -151,7 +151,7 @@
- 'js2c',
- ],
- }],
-- ['component=="shared_library"', {
-+ ['v8_component=="shared_library"', {
- 'defines': [
- 'BUILDING_V8_SHARED',
- ],
-@@ -243,7 +243,7 @@
- 'toolsets': ['target'],
- 'dependencies': ['js2c'],
- }],
-- ['component=="shared_library"', {
-+ ['v8_component=="shared_library"', {
- 'defines': [
- 'BUILDING_V8_SHARED',
- ],
-@@ -270,7 +270,7 @@
- 'natives_blob',
- ],
- }],
-- ['component=="shared_library"', {
-+ ['v8_component=="shared_library"', {
- 'defines': [
- 'BUILDING_V8_SHARED',
- ],
-@@ -1727,7 +1727,7 @@
- # See http://crbug.com/485155.
- 'msvs_shard': 4,
- }],
-- ['component=="shared_library"', {
-+ ['v8_component=="shared_library"', {
- 'defines': [
- 'BUILDING_V8_SHARED',
- ],
-diff --git a/src/3rdparty/chromium/v8/src/v8_sse2.gyp b/src/3rdparty/chromium/v8/src/v8_sse2.gyp
-new file mode 100644
-index 000000000..140b071a6
---- /dev/null
-+++ b/src/3rdparty/chromium/v8/src/v8_sse2.gyp
-@@ -0,0 +1,2313 @@
-+# Generated from v8.gyp by make-v8-sse2-gyp.sh
-+# Copyright 2012 the V8 project authors. All rights reserved.
-+# Redistribution and use in source and binary forms, with or without
-+# modification, are permitted provided that the following conditions are
-+# met:
-+#
-+# * Redistributions of source code must retain the above copyright
-+# notice, this list of conditions and the following disclaimer.
-+# * Redistributions in binary form must reproduce the above
-+# copyright notice, this list of conditions and the following
-+# disclaimer in the documentation and/or other materials provided
-+# with the distribution.
-+# * Neither the name of Google Inc. nor the names of its
-+# contributors may be used to endorse or promote products derived
-+# from this software without specific prior written permission.
-+#
-+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+{
-+ 'variables': {
-+ 'v8_target_arch': 'ia32',
-+ 'v8_code': 1,
-+ 'v8_random_seed%': 314159265,
-+ 'v8_vector_stores%': 0,
-+ 'embed_script%': "",
-+ 'warmup_script%': "",
-+ 'v8_extra_library_files%': [],
-+ 'v8_experimental_extra_library_files%': [],
-+ 'mksnapshot_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)mksnapshot_sse2<(EXECUTABLE_SUFFIX)',
-+ 'remove_v8base_debug_symbols%': 0,
-+ 'conditions': [
-+ # build V8 shared on ia32 so we can swap x87 vs. SSE2 builds
-+ ['target_arch == "ia32"', {
-+ 'v8_component%': 'shared_library',
-+ }, {
-+ 'v8_component%': '<(component)',
-+ }],
-+ ],
-+ },
-+ 'includes': ['../gypfiles/toolchain.gypi', '../gypfiles/features.gypi'],
-+ 'targets': [
-+ {
-+ 'target_name': 'v8_sse2',
-+ 'product_name': 'v8',
-+ 'product_dir': '<(PRODUCT_DIR)/lib/sse2',
-+ 'dependencies_traverse': 1,
-+ 'dependencies': ['v8_maybe_snapshot_sse2'],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ['v8_component=="shared_library"', {
-+ 'type': '<(v8_component)',
-+ 'sources': [
-+ # Note: on non-Windows we still build this file so that gyp
-+ # has some sources to link into the component.
-+ 'v8dll-main.cc',
-+ ],
-+ 'include_dirs': [
-+ '..',
-+ ],
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'BUILDING_V8_SHARED',
-+ ],
-+ 'direct_dependent_settings': {
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'USING_V8_SHARED',
-+ ],
-+ },
-+ 'target_conditions': [
-+ ['OS=="android" and _toolset=="target"', {
-+ 'libraries': [
-+ '-llog',
-+ ],
-+ 'include_dirs': [
-+ 'src/common/android/include',
-+ ],
-+ }],
-+ ],
-+ 'conditions': [
-+ ['OS=="mac"', {
-+ 'xcode_settings': {
-+ 'OTHER_LDFLAGS': ['-dynamiclib', '-all_load']
-+ },
-+ }],
-+ ['soname_version!=""', {
-+ 'product_extension': 'so.<(soname_version)',
-+ }],
-+ ],
-+ },
-+ {
-+ 'type': 'none',
-+ }],
-+ ],
-+ 'direct_dependent_settings': {
-+ 'include_dirs': [
-+ '../include',
-+ ],
-+ },
-+ },
-+ {
-+ # This rule delegates to either v8_snapshot, v8_nosnapshot, or
-+ # v8_external_snapshot, depending on the current variables.
-+ # The intention is to make the 'calling' rules a bit simpler.
-+ 'target_name': 'v8_maybe_snapshot_sse2',
-+ 'type': 'none',
-+ 'conditions': [
-+ ['v8_use_snapshot!="true"', {
-+ # The dependency on v8_base should come from a transitive
-+ # dependency however the Android toolchain requires libv8_base.a
-+ # to appear before libv8_snapshot.a so it's listed explicitly.
-+ 'dependencies': ['v8_base_sse2', 'v8_nosnapshot_sse2'],
-+ }],
-+ ['v8_use_snapshot=="true" and v8_use_external_startup_data==0', {
-+ # The dependency on v8_base should come from a transitive
-+ # dependency however the Android toolchain requires libv8_base.a
-+ # to appear before libv8_snapshot.a so it's listed explicitly.
-+ 'dependencies': ['v8_base_sse2', 'v8_snapshot_sse2'],
-+ }],
-+ ['v8_use_snapshot=="true" and v8_use_external_startup_data==1 and want_separate_host_toolset==0', {
-+ 'dependencies': ['v8_base_sse2', 'v8_external_snapshot_sse2'],
-+ 'inputs': [ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin', ],
-+ }],
-+ ['v8_use_snapshot=="true" and v8_use_external_startup_data==1 and want_separate_host_toolset==1', {
-+ 'dependencies': ['v8_base_sse2', 'v8_external_snapshot_sse2'],
-+ 'target_conditions': [
-+ ['_toolset=="host"', {
-+ 'inputs': [
-+ '<(PRODUCT_DIR)/snapshot_blob_host_sse2.bin',
-+ ],
-+ }, {
-+ 'inputs': [
-+ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
-+ ],
-+ }],
-+ ],
-+ }],
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ]
-+ },
-+ {
-+ 'target_name': 'v8_snapshot_sse2',
-+ 'type': 'static_library',
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ 'dependencies': [
-+ 'mksnapshot_sse2#host',
-+ 'js2c_sse2#host',
-+ ],
-+ }, {
-+ 'toolsets': ['target'],
-+ 'dependencies': [
-+ 'mksnapshot_sse2',
-+ 'js2c_sse2',
-+ ],
-+ }],
-+ ['v8_component=="shared_library"', {
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'BUILDING_V8_SHARED',
-+ ],
-+ 'direct_dependent_settings': {
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'USING_V8_SHARED',
-+ ],
-+ },
-+ }],
-+ ],
-+ 'dependencies': [
-+ 'v8_base_sse2',
-+ ],
-+ 'include_dirs+': [
-+ '..',
-+ ],
-+ 'sources': [
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
-+ '<(INTERMEDIATE_DIR)/snapshot_sse2.cc',
-+ ],
-+ 'actions': [
-+ {
-+ 'action_name': 'v8_sse2_run_mksnapshot',
-+ 'inputs': [
-+ '<(mksnapshot_exec)',
-+ ],
-+ 'conditions': [
-+ ['embed_script!=""', {
-+ 'inputs': [
-+ '<(embed_script)',
-+ ],
-+ }],
-+ ['warmup_script!=""', {
-+ 'inputs': [
-+ '<(warmup_script)',
-+ ],
-+ }],
-+ ],
-+ 'outputs': [
-+ '<(INTERMEDIATE_DIR)/snapshot_sse2.cc',
-+ ],
-+ 'variables': {
-+ 'mksnapshot_flags': [],
-+ 'conditions': [
-+ ['v8_random_seed!=0', {
-+ 'mksnapshot_flags': ['--random-seed', '<(v8_random_seed)'],
-+ }],
-+ ['v8_vector_stores!=0', {
-+ 'mksnapshot_flags': ['--vector-stores'],
-+ }],
-+ ],
-+ },
-+ 'action': [
-+ '<(mksnapshot_exec)',
-+ '<@(mksnapshot_flags)',
-+ '--startup_src', '<@(INTERMEDIATE_DIR)/snapshot_sse2.cc',
-+ '<(embed_script)',
-+ '<(warmup_script)',
-+ ],
-+ },
-+ ],
-+ },
-+ {
-+ 'target_name': 'v8_nosnapshot_sse2',
-+ 'type': 'static_library',
-+ 'dependencies': [
-+ 'v8_base_sse2',
-+ ],
-+ 'include_dirs+': [
-+ '..',
-+ ],
-+ 'sources': [
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
-+ 'snapshot/snapshot-empty.cc',
-+ ],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ 'dependencies': ['js2c_sse2#host'],
-+ }, {
-+ 'toolsets': ['target'],
-+ 'dependencies': ['js2c_sse2'],
-+ }],
-+ ['v8_component=="shared_library"', {
-+ 'defines': [
-+ 'BUILDING_V8_SHARED',
-+ 'V8_SHARED',
-+ ],
-+ }],
-+ ]
-+ },
-+ {
-+ 'target_name': 'v8_external_snapshot_sse2',
-+ 'type': 'static_library',
-+ 'conditions': [
-+ [ 'v8_use_external_startup_data==1', {
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ 'dependencies': [
-+ 'mksnapshot_sse2#host',
-+ 'js2c_sse2#host',
-+ 'natives_blob_sse2',
-+ ]}, {
-+ 'toolsets': ['target'],
-+ 'dependencies': [
-+ 'mksnapshot_sse2',
-+ 'js2c_sse2',
-+ 'natives_blob_sse2',
-+ ],
-+ }],
-+ ['v8_component=="shared_library"', {
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'BUILDING_V8_SHARED',
-+ ],
-+ 'direct_dependent_settings': {
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'USING_V8_SHARED',
-+ ],
-+ },
-+ }],
-+ ],
-+ 'dependencies': [
-+ 'v8_base_sse2',
-+ ],
-+ 'include_dirs+': [
-+ '..',
-+ ],
-+ 'sources': [
-+ 'snapshot/natives-external.cc',
-+ 'snapshot/snapshot-external.cc',
-+ ],
-+ 'actions': [
-+ {
-+ 'action_name': 'v8_sse2_run_mksnapshot (external)',
-+ 'inputs': [
-+ '<(mksnapshot_exec)',
-+ ],
-+ 'variables': {
-+ 'mksnapshot_flags': [],
-+ 'conditions': [
-+ ['v8_random_seed!=0', {
-+ 'mksnapshot_flags': ['--random-seed', '<(v8_random_seed)'],
-+ }],
-+ ['v8_vector_stores!=0', {
-+ 'mksnapshot_flags': ['--vector-stores'],
-+ }],
-+ ],
-+ },
-+ 'conditions': [
-+ ['embed_script!=""', {
-+ 'inputs': [
-+ '<(embed_script)',
-+ ],
-+ }],
-+ ['warmup_script!=""', {
-+ 'inputs': [
-+ '<(warmup_script)',
-+ ],
-+ }],
-+ ['want_separate_host_toolset==1', {
-+ 'target_conditions': [
-+ ['_toolset=="host"', {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/snapshot_blob_host_sse2.bin',
-+ ],
-+ 'action': [
-+ '<(mksnapshot_exec)',
-+ '<@(mksnapshot_flags)',
-+ '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob_host_sse2.bin',
-+ '<(embed_script)',
-+ '<(warmup_script)',
-+ ],
-+ }, {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
-+ ],
-+ 'action': [
-+ '<(mksnapshot_exec)',
-+ '<@(mksnapshot_flags)',
-+ '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
-+ '<(embed_script)',
-+ '<(warmup_script)',
-+ ],
-+ }],
-+ ],
-+ }, {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
-+ ],
-+ 'action': [
-+ '<(mksnapshot_exec)',
-+ '<@(mksnapshot_flags)',
-+ '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
-+ '<(embed_script)',
-+ '<(warmup_script)',
-+ ],
-+ }],
-+ ],
-+ },
-+ ],
-+ }],
-+ ],
-+ },
-+ {
-+ 'target_name': 'v8_base_sse2',
-+ 'type': 'static_library',
-+ 'dependencies': [
-+ 'v8_libbase_sse2',
-+ 'v8_libsampler_sse2',
-+ ],
-+ 'variables': {
-+ 'optimize': 'max',
-+ },
-+ 'include_dirs+': [
-+ '..',
-+ '<(DEPTH)',
-+ ],
-+ 'sources': [ ### gcmole(all) ###
-+ '../include/v8-debug.h',
-+ '../include/v8-experimental.h',
-+ '../include/v8-platform.h',
-+ '../include/v8-profiler.h',
-+ '../include/v8-testing.h',
-+ '../include/v8-util.h',
-+ '../include/v8-version.h',
-+ '../include/v8.h',
-+ '../include/v8config.h',
-+ 'accessors.cc',
-+ 'accessors.h',
-+ 'address-map.cc',
-+ 'address-map.h',
-+ 'allocation.cc',
-+ 'allocation.h',
-+ 'allocation-site-scopes.cc',
-+ 'allocation-site-scopes.h',
-+ 'api-experimental.cc',
-+ 'api-experimental.h',
-+ 'api.cc',
-+ 'api.h',
-+ 'api-arguments-inl.h',
-+ 'api-arguments.cc',
-+ 'api-arguments.h',
-+ 'api-natives.cc',
-+ 'api-natives.h',
-+ 'arguments.cc',
-+ 'arguments.h',
-+ 'assembler.cc',
-+ 'assembler.h',
-+ 'assert-scope.h',
-+ 'assert-scope.cc',
-+ 'ast/ast-expression-rewriter.cc',
-+ 'ast/ast-expression-rewriter.h',
-+ 'ast/ast-expression-visitor.cc',
-+ 'ast/ast-expression-visitor.h',
-+ 'ast/ast-literal-reindexer.cc',
-+ 'ast/ast-literal-reindexer.h',
-+ 'ast/ast-numbering.cc',
-+ 'ast/ast-numbering.h',
-+ 'ast/ast-type-bounds.h',
-+ 'ast/ast-value-factory.cc',
-+ 'ast/ast-value-factory.h',
-+ 'ast/ast.cc',
-+ 'ast/ast.h',
-+ 'ast/modules.cc',
-+ 'ast/modules.h',
-+ 'ast/prettyprinter.cc',
-+ 'ast/prettyprinter.h',
-+ 'ast/scopeinfo.cc',
-+ 'ast/scopeinfo.h',
-+ 'ast/scopes.cc',
-+ 'ast/scopes.h',
-+ 'ast/variables.cc',
-+ 'ast/variables.h',
-+ 'background-parsing-task.cc',
-+ 'background-parsing-task.h',
-+ 'bailout-reason.cc',
-+ 'bailout-reason.h',
-+ 'basic-block-profiler.cc',
-+ 'basic-block-profiler.h',
-+ 'bignum-dtoa.cc',
-+ 'bignum-dtoa.h',
-+ 'bignum.cc',
-+ 'bignum.h',
-+ 'bit-vector.cc',
-+ 'bit-vector.h',
-+ 'bootstrapper.cc',
-+ 'bootstrapper.h',
-+ 'builtins.cc',
-+ 'builtins.h',
-+ 'cached-powers.cc',
-+ 'cached-powers.h',
-+ 'cancelable-task.cc',
-+ 'cancelable-task.h',
-+ 'char-predicates.cc',
-+ 'char-predicates-inl.h',
-+ 'char-predicates.h',
-+ 'checks.h',
-+ 'code-events.h',
-+ 'code-factory.cc',
-+ 'code-factory.h',
-+ 'code-stub-assembler.cc',
-+ 'code-stub-assembler.h',
-+ 'code-stubs.cc',
-+ 'code-stubs.h',
-+ 'code-stubs-hydrogen.cc',
-+ 'codegen.cc',
-+ 'codegen.h',
-+ 'collector.h',
-+ 'compilation-cache.cc',
-+ 'compilation-cache.h',
-+ 'compilation-dependencies.cc',
-+ 'compilation-dependencies.h',
-+ 'compilation-statistics.cc',
-+ 'compilation-statistics.h',
-+ 'compiler/access-builder.cc',
-+ 'compiler/access-builder.h',
-+ 'compiler/access-info.cc',
-+ 'compiler/access-info.h',
-+ 'compiler/all-nodes.cc',
-+ 'compiler/all-nodes.h',
-+ 'compiler/ast-graph-builder.cc',
-+ 'compiler/ast-graph-builder.h',
-+ 'compiler/ast-loop-assignment-analyzer.cc',
-+ 'compiler/ast-loop-assignment-analyzer.h',
-+ 'compiler/basic-block-instrumentor.cc',
-+ 'compiler/basic-block-instrumentor.h',
-+ 'compiler/branch-elimination.cc',
-+ 'compiler/branch-elimination.h',
-+ 'compiler/bytecode-branch-analysis.cc',
-+ 'compiler/bytecode-branch-analysis.h',
-+ 'compiler/bytecode-graph-builder.cc',
-+ 'compiler/bytecode-graph-builder.h',
-+ 'compiler/c-linkage.cc',
-+ 'compiler/checkpoint-elimination.cc',
-+ 'compiler/checkpoint-elimination.h',
-+ 'compiler/code-generator-impl.h',
-+ 'compiler/code-generator.cc',
-+ 'compiler/code-generator.h',
-+ 'compiler/code-assembler.cc',
-+ 'compiler/code-assembler.h',
-+ 'compiler/common-node-cache.cc',
-+ 'compiler/common-node-cache.h',
-+ 'compiler/common-operator-reducer.cc',
-+ 'compiler/common-operator-reducer.h',
-+ 'compiler/common-operator.cc',
-+ 'compiler/common-operator.h',
-+ 'compiler/control-builders.cc',
-+ 'compiler/control-builders.h',
-+ 'compiler/control-equivalence.cc',
-+ 'compiler/control-equivalence.h',
-+ 'compiler/control-flow-optimizer.cc',
-+ 'compiler/control-flow-optimizer.h',
-+ 'compiler/dead-code-elimination.cc',
-+ 'compiler/dead-code-elimination.h',
-+ 'compiler/diamond.h',
-+ 'compiler/effect-control-linearizer.cc',
-+ 'compiler/effect-control-linearizer.h',
-+ 'compiler/escape-analysis.cc',
-+ 'compiler/escape-analysis.h',
-+ "compiler/escape-analysis-reducer.cc",
-+ "compiler/escape-analysis-reducer.h",
-+ 'compiler/frame.cc',
-+ 'compiler/frame.h',
-+ 'compiler/frame-elider.cc',
-+ 'compiler/frame-elider.h',
-+ "compiler/frame-states.cc",
-+ "compiler/frame-states.h",
-+ 'compiler/gap-resolver.cc',
-+ 'compiler/gap-resolver.h',
-+ 'compiler/graph-reducer.cc',
-+ 'compiler/graph-reducer.h',
-+ 'compiler/graph-replay.cc',
-+ 'compiler/graph-replay.h',
-+ 'compiler/graph-trimmer.cc',
-+ 'compiler/graph-trimmer.h',
-+ 'compiler/graph-visualizer.cc',
-+ 'compiler/graph-visualizer.h',
-+ 'compiler/graph.cc',
-+ 'compiler/graph.h',
-+ 'compiler/instruction-codes.h',
-+ 'compiler/instruction-selector-impl.h',
-+ 'compiler/instruction-selector.cc',
-+ 'compiler/instruction-selector.h',
-+ 'compiler/instruction-scheduler.cc',
-+ 'compiler/instruction-scheduler.h',
-+ 'compiler/instruction.cc',
-+ 'compiler/instruction.h',
-+ 'compiler/int64-lowering.cc',
-+ 'compiler/int64-lowering.h',
-+ 'compiler/js-builtin-reducer.cc',
-+ 'compiler/js-builtin-reducer.h',
-+ 'compiler/js-call-reducer.cc',
-+ 'compiler/js-call-reducer.h',
-+ 'compiler/js-context-specialization.cc',
-+ 'compiler/js-context-specialization.h',
-+ 'compiler/js-create-lowering.cc',
-+ 'compiler/js-create-lowering.h',
-+ 'compiler/js-frame-specialization.cc',
-+ 'compiler/js-frame-specialization.h',
-+ 'compiler/js-generic-lowering.cc',
-+ 'compiler/js-generic-lowering.h',
-+ 'compiler/js-global-object-specialization.cc',
-+ 'compiler/js-global-object-specialization.h',
-+ 'compiler/js-graph.cc',
-+ 'compiler/js-graph.h',
-+ 'compiler/js-inlining.cc',
-+ 'compiler/js-inlining.h',
-+ 'compiler/js-inlining-heuristic.cc',
-+ 'compiler/js-inlining-heuristic.h',
-+ 'compiler/js-intrinsic-lowering.cc',
-+ 'compiler/js-intrinsic-lowering.h',
-+ 'compiler/js-native-context-specialization.cc',
-+ 'compiler/js-native-context-specialization.h',
-+ 'compiler/js-operator.cc',
-+ 'compiler/js-operator.h',
-+ 'compiler/js-typed-lowering.cc',
-+ 'compiler/js-typed-lowering.h',
-+ 'compiler/jump-threading.cc',
-+ 'compiler/jump-threading.h',
-+ 'compiler/linkage.cc',
-+ 'compiler/linkage.h',
-+ 'compiler/liveness-analyzer.cc',
-+ 'compiler/liveness-analyzer.h',
-+ 'compiler/live-range-separator.cc',
-+ 'compiler/live-range-separator.h',
-+ 'compiler/load-elimination.cc',
-+ 'compiler/load-elimination.h',
-+ 'compiler/loop-analysis.cc',
-+ 'compiler/loop-analysis.h',
-+ 'compiler/loop-peeling.cc',
-+ 'compiler/loop-peeling.h',
-+ 'compiler/machine-operator-reducer.cc',
-+ 'compiler/machine-operator-reducer.h',
-+ 'compiler/machine-operator.cc',
-+ 'compiler/machine-operator.h',
-+ 'compiler/memory-optimizer.cc',
-+ 'compiler/memory-optimizer.h',
-+ 'compiler/move-optimizer.cc',
-+ 'compiler/move-optimizer.h',
-+ 'compiler/node-aux-data.h',
-+ 'compiler/node-cache.cc',
-+ 'compiler/node-cache.h',
-+ 'compiler/node-marker.cc',
-+ 'compiler/node-marker.h',
-+ 'compiler/node-matchers.cc',
-+ 'compiler/node-matchers.h',
-+ 'compiler/node-properties.cc',
-+ 'compiler/node-properties.h',
-+ 'compiler/node.cc',
-+ 'compiler/node.h',
-+ 'compiler/opcodes.cc',
-+ 'compiler/opcodes.h',
-+ 'compiler/operation-typer.cc',
-+ 'compiler/operation-typer.h',
-+ 'compiler/operator-properties.cc',
-+ 'compiler/operator-properties.h',
-+ 'compiler/operator.cc',
-+ 'compiler/operator.h',
-+ 'compiler/osr.cc',
-+ 'compiler/osr.h',
-+ 'compiler/pipeline.cc',
-+ 'compiler/pipeline.h',
-+ 'compiler/pipeline-statistics.cc',
-+ 'compiler/pipeline-statistics.h',
-+ 'compiler/raw-machine-assembler.cc',
-+ 'compiler/raw-machine-assembler.h',
-+ 'compiler/redundancy-elimination.cc',
-+ 'compiler/redundancy-elimination.h',
-+ 'compiler/register-allocator.cc',
-+ 'compiler/register-allocator.h',
-+ 'compiler/register-allocator-verifier.cc',
-+ 'compiler/register-allocator-verifier.h',
-+ 'compiler/representation-change.cc',
-+ 'compiler/representation-change.h',
-+ 'compiler/schedule.cc',
-+ 'compiler/schedule.h',
-+ 'compiler/scheduler.cc',
-+ 'compiler/scheduler.h',
-+ 'compiler/select-lowering.cc',
-+ 'compiler/select-lowering.h',
-+ 'compiler/simplified-lowering.cc',
-+ 'compiler/simplified-lowering.h',
-+ 'compiler/simplified-operator-reducer.cc',
-+ 'compiler/simplified-operator-reducer.h',
-+ 'compiler/simplified-operator.cc',
-+ 'compiler/simplified-operator.h',
-+ 'compiler/source-position.cc',
-+ 'compiler/source-position.h',
-+ 'compiler/state-values-utils.cc',
-+ 'compiler/state-values-utils.h',
-+ 'compiler/store-store-elimination.cc',
-+ 'compiler/store-store-elimination.h',
-+ 'compiler/tail-call-optimization.cc',
-+ 'compiler/tail-call-optimization.h',
-+ 'compiler/type-hint-analyzer.cc',
-+ 'compiler/type-hint-analyzer.h',
-+ 'compiler/type-hints.cc',
-+ 'compiler/type-hints.h',
-+ 'compiler/typer.cc',
-+ 'compiler/typer.h',
-+ 'compiler/value-numbering-reducer.cc',
-+ 'compiler/value-numbering-reducer.h',
-+ 'compiler/verifier.cc',
-+ 'compiler/verifier.h',
-+ 'compiler/wasm-compiler.cc',
-+ 'compiler/wasm-compiler.h',
-+ 'compiler/wasm-linkage.cc',
-+ 'compiler/zone-pool.cc',
-+ 'compiler/zone-pool.h',
-+ 'compiler.cc',
-+ 'compiler.h',
-+ 'context-measure.cc',
-+ 'context-measure.h',
-+ 'contexts-inl.h',
-+ 'contexts.cc',
-+ 'contexts.h',
-+ 'conversions-inl.h',
-+ 'conversions.cc',
-+ 'conversions.h',
-+ 'counters-inl.h',
-+ 'counters.cc',
-+ 'counters.h',
-+ 'crankshaft/compilation-phase.cc',
-+ 'crankshaft/compilation-phase.h',
-+ 'crankshaft/hydrogen-alias-analysis.h',
-+ 'crankshaft/hydrogen-bce.cc',
-+ 'crankshaft/hydrogen-bce.h',
-+ 'crankshaft/hydrogen-canonicalize.cc',
-+ 'crankshaft/hydrogen-canonicalize.h',
-+ 'crankshaft/hydrogen-check-elimination.cc',
-+ 'crankshaft/hydrogen-check-elimination.h',
-+ 'crankshaft/hydrogen-dce.cc',
-+ 'crankshaft/hydrogen-dce.h',
-+ 'crankshaft/hydrogen-dehoist.cc',
-+ 'crankshaft/hydrogen-dehoist.h',
-+ 'crankshaft/hydrogen-environment-liveness.cc',
-+ 'crankshaft/hydrogen-environment-liveness.h',
-+ 'crankshaft/hydrogen-escape-analysis.cc',
-+ 'crankshaft/hydrogen-escape-analysis.h',
-+ 'crankshaft/hydrogen-flow-engine.h',
-+ 'crankshaft/hydrogen-gvn.cc',
-+ 'crankshaft/hydrogen-gvn.h',
-+ 'crankshaft/hydrogen-infer-representation.cc',
-+ 'crankshaft/hydrogen-infer-representation.h',
-+ 'crankshaft/hydrogen-infer-types.cc',
-+ 'crankshaft/hydrogen-infer-types.h',
-+ 'crankshaft/hydrogen-instructions.cc',
-+ 'crankshaft/hydrogen-instructions.h',
-+ 'crankshaft/hydrogen-load-elimination.cc',
-+ 'crankshaft/hydrogen-load-elimination.h',
-+ 'crankshaft/hydrogen-mark-deoptimize.cc',
-+ 'crankshaft/hydrogen-mark-deoptimize.h',
-+ 'crankshaft/hydrogen-mark-unreachable.cc',
-+ 'crankshaft/hydrogen-mark-unreachable.h',
-+ 'crankshaft/hydrogen-osr.cc',
-+ 'crankshaft/hydrogen-osr.h',
-+ 'crankshaft/hydrogen-range-analysis.cc',
-+ 'crankshaft/hydrogen-range-analysis.h',
-+ 'crankshaft/hydrogen-redundant-phi.cc',
-+ 'crankshaft/hydrogen-redundant-phi.h',
-+ 'crankshaft/hydrogen-removable-simulates.cc',
-+ 'crankshaft/hydrogen-removable-simulates.h',
-+ 'crankshaft/hydrogen-representation-changes.cc',
-+ 'crankshaft/hydrogen-representation-changes.h',
-+ 'crankshaft/hydrogen-sce.cc',
-+ 'crankshaft/hydrogen-sce.h',
-+ 'crankshaft/hydrogen-store-elimination.cc',
-+ 'crankshaft/hydrogen-store-elimination.h',
-+ 'crankshaft/hydrogen-types.cc',
-+ 'crankshaft/hydrogen-types.h',
-+ 'crankshaft/hydrogen-uint32-analysis.cc',
-+ 'crankshaft/hydrogen-uint32-analysis.h',
-+ 'crankshaft/hydrogen.cc',
-+ 'crankshaft/hydrogen.h',
-+ 'crankshaft/lithium-allocator-inl.h',
-+ 'crankshaft/lithium-allocator.cc',
-+ 'crankshaft/lithium-allocator.h',
-+ 'crankshaft/lithium-codegen.cc',
-+ 'crankshaft/lithium-codegen.h',
-+ 'crankshaft/lithium.cc',
-+ 'crankshaft/lithium.h',
-+ 'crankshaft/lithium-inl.h',
-+ 'crankshaft/typing.cc',
-+ 'crankshaft/typing.h',
-+ 'crankshaft/unique.h',
-+ 'date.cc',
-+ 'date.h',
-+ 'dateparser-inl.h',
-+ 'dateparser.cc',
-+ 'dateparser.h',
-+ 'debug/debug-evaluate.cc',
-+ 'debug/debug-evaluate.h',
-+ 'debug/debug-frames.cc',
-+ 'debug/debug-frames.h',
-+ 'debug/debug-scopes.cc',
-+ 'debug/debug-scopes.h',
-+ 'debug/debug.cc',
-+ 'debug/debug.h',
-+ 'debug/liveedit.cc',
-+ 'debug/liveedit.h',
-+ 'deoptimizer.cc',
-+ 'deoptimizer.h',
-+ 'disasm.h',
-+ 'disassembler.cc',
-+ 'disassembler.h',
-+ 'diy-fp.cc',
-+ 'diy-fp.h',
-+ 'double.h',
-+ 'dtoa.cc',
-+ 'dtoa.h',
-+ 'effects.h',
-+ 'eh-frame.cc',
-+ 'eh-frame.h',
-+ 'elements-kind.cc',
-+ 'elements-kind.h',
-+ 'elements.cc',
-+ 'elements.h',
-+ 'execution.cc',
-+ 'execution.h',
-+ 'extensions/externalize-string-extension.cc',
-+ 'extensions/externalize-string-extension.h',
-+ 'extensions/free-buffer-extension.cc',
-+ 'extensions/free-buffer-extension.h',
-+ 'extensions/gc-extension.cc',
-+ 'extensions/gc-extension.h',
-+ 'extensions/ignition-statistics-extension.cc',
-+ 'extensions/ignition-statistics-extension.h',
-+ 'extensions/statistics-extension.cc',
-+ 'extensions/statistics-extension.h',
-+ 'extensions/trigger-failure-extension.cc',
-+ 'extensions/trigger-failure-extension.h',
-+ 'external-reference-table.cc',
-+ 'external-reference-table.h',
-+ 'factory.cc',
-+ 'factory.h',
-+ 'fast-accessor-assembler.cc',
-+ 'fast-accessor-assembler.h',
-+ 'fast-dtoa.cc',
-+ 'fast-dtoa.h',
-+ 'field-index.h',
-+ 'field-index-inl.h',
-+ 'field-type.cc',
-+ 'field-type.h',
-+ 'fixed-dtoa.cc',
-+ 'fixed-dtoa.h',
-+ 'flag-definitions.h',
-+ 'flags.cc',
-+ 'flags.h',
-+ 'frames-inl.h',
-+ 'frames.cc',
-+ 'frames.h',
-+ 'full-codegen/full-codegen.cc',
-+ 'full-codegen/full-codegen.h',
-+ 'futex-emulation.cc',
-+ 'futex-emulation.h',
-+ 'gdb-jit.cc',
-+ 'gdb-jit.h',
-+ 'global-handles.cc',
-+ 'global-handles.h',
-+ 'globals.h',
-+ 'handles-inl.h',
-+ 'handles.cc',
-+ 'handles.h',
-+ 'heap-symbols.h',
-+ 'heap/array-buffer-tracker-inl.h',
-+ 'heap/array-buffer-tracker.cc',
-+ 'heap/array-buffer-tracker.h',
-+ 'heap/memory-reducer.cc',
-+ 'heap/memory-reducer.h',
-+ 'heap/gc-idle-time-handler.cc',
-+ 'heap/gc-idle-time-handler.h',
-+ 'heap/gc-tracer.cc',
-+ 'heap/gc-tracer.h',
-+ 'heap/heap-inl.h',
-+ 'heap/heap.cc',
-+ 'heap/heap.h',
-+ 'heap/incremental-marking-inl.h',
-+ 'heap/incremental-marking-job.cc',
-+ 'heap/incremental-marking-job.h',
-+ 'heap/incremental-marking.cc',
-+ 'heap/incremental-marking.h',
-+ 'heap/mark-compact-inl.h',
-+ 'heap/mark-compact.cc',
-+ 'heap/mark-compact.h',
-+ 'heap/object-stats.cc',
-+ 'heap/object-stats.h',
-+ 'heap/objects-visiting-inl.h',
-+ 'heap/objects-visiting.cc',
-+ 'heap/objects-visiting.h',
-+ 'heap/page-parallel-job.h',
-+ 'heap/remembered-set.cc',
-+ 'heap/remembered-set.h',
-+ 'heap/scavenge-job.h',
-+ 'heap/scavenge-job.cc',
-+ 'heap/scavenger-inl.h',
-+ 'heap/scavenger.cc',
-+ 'heap/scavenger.h',
-+ 'heap/slot-set.h',
-+ 'heap/spaces-inl.h',
-+ 'heap/spaces.cc',
-+ 'heap/spaces.h',
-+ 'heap/store-buffer.cc',
-+ 'heap/store-buffer.h',
-+ 'i18n.cc',
-+ 'i18n.h',
-+ 'icu_util.cc',
-+ 'icu_util.h',
-+ 'ic/access-compiler.cc',
-+ 'ic/access-compiler.h',
-+ 'ic/call-optimization.cc',
-+ 'ic/call-optimization.h',
-+ 'ic/handler-compiler.cc',
-+ 'ic/handler-compiler.h',
-+ 'ic/ic-inl.h',
-+ 'ic/ic-state.cc',
-+ 'ic/ic-state.h',
-+ 'ic/ic.cc',
-+ 'ic/ic.h',
-+ 'ic/ic-compiler.cc',
-+ 'ic/ic-compiler.h',
-+ 'identity-map.cc',
-+ 'identity-map.h',
-+ 'interface-descriptors.cc',
-+ 'interface-descriptors.h',
-+ 'interpreter/bytecodes.cc',
-+ 'interpreter/bytecodes.h',
-+ 'interpreter/bytecode-array-builder.cc',
-+ 'interpreter/bytecode-array-builder.h',
-+ 'interpreter/bytecode-array-iterator.cc',
-+ 'interpreter/bytecode-array-iterator.h',
-+ 'interpreter/bytecode-array-writer.cc',
-+ 'interpreter/bytecode-array-writer.h',
-+ 'interpreter/bytecode-dead-code-optimizer.cc',
-+ 'interpreter/bytecode-dead-code-optimizer.h',
-+ 'interpreter/bytecode-label.h',
-+ 'interpreter/bytecode-generator.cc',
-+ 'interpreter/bytecode-generator.h',
-+ 'interpreter/bytecode-peephole-optimizer.cc',
-+ 'interpreter/bytecode-peephole-optimizer.h',
-+ 'interpreter/bytecode-pipeline.cc',
-+ 'interpreter/bytecode-pipeline.h',
-+ 'interpreter/bytecode-register-allocator.cc',
-+ 'interpreter/bytecode-register-allocator.h',
-+ 'interpreter/bytecode-register-optimizer.cc',
-+ 'interpreter/bytecode-register-optimizer.h',
-+ 'interpreter/bytecode-traits.h',
-+ 'interpreter/constant-array-builder.cc',
-+ 'interpreter/constant-array-builder.h',
-+ 'interpreter/control-flow-builders.cc',
-+ 'interpreter/control-flow-builders.h',
-+ 'interpreter/handler-table-builder.cc',
-+ 'interpreter/handler-table-builder.h',
-+ 'interpreter/interpreter.cc',
-+ 'interpreter/interpreter.h',
-+ 'interpreter/interpreter-assembler.cc',
-+ 'interpreter/interpreter-assembler.h',
-+ 'interpreter/interpreter-intrinsics.cc',
-+ 'interpreter/interpreter-intrinsics.h',
-+ 'interpreter/source-position-table.cc',
-+ 'interpreter/source-position-table.h',
-+ 'isolate-inl.h',
-+ 'isolate.cc',
-+ 'isolate.h',
-+ 'json-parser.cc',
-+ 'json-parser.h',
-+ 'json-stringifier.cc',
-+ 'json-stringifier.h',
-+ 'keys.h',
-+ 'keys.cc',
-+ 'layout-descriptor-inl.h',
-+ 'layout-descriptor.cc',
-+ 'layout-descriptor.h',
-+ 'list-inl.h',
-+ 'list.h',
-+ 'locked-queue-inl.h',
-+ 'locked-queue.h',
-+ 'log-inl.h',
-+ 'log-utils.cc',
-+ 'log-utils.h',
-+ 'log.cc',
-+ 'log.h',
-+ 'lookup.cc',
-+ 'lookup.h',
-+ 'macro-assembler.h',
-+ 'machine-type.cc',
-+ 'machine-type.h',
-+ 'messages.cc',
-+ 'messages.h',
-+ 'msan.h',
-+ 'objects-body-descriptors-inl.h',
-+ 'objects-body-descriptors.h',
-+ 'objects-debug.cc',
-+ 'objects-inl.h',
-+ 'objects-printer.cc',
-+ 'objects.cc',
-+ 'objects.h',
-+ 'optimizing-compile-dispatcher.cc',
-+ 'optimizing-compile-dispatcher.h',
-+ 'ostreams.cc',
-+ 'ostreams.h',
-+ 'parsing/expression-classifier.h',
-+ 'parsing/func-name-inferrer.cc',
-+ 'parsing/func-name-inferrer.h',
-+ 'parsing/parameter-initializer-rewriter.cc',
-+ 'parsing/parameter-initializer-rewriter.h',
-+ 'parsing/parser-base.h',
-+ 'parsing/parser.cc',
-+ 'parsing/parser.h',
-+ 'parsing/pattern-rewriter.cc',
-+ 'parsing/preparse-data-format.h',
-+ 'parsing/preparse-data.cc',
-+ 'parsing/preparse-data.h',
-+ 'parsing/preparser.cc',
-+ 'parsing/preparser.h',
-+ 'parsing/rewriter.cc',
-+ 'parsing/rewriter.h',
-+ 'parsing/scanner-character-streams.cc',
-+ 'parsing/scanner-character-streams.h',
-+ 'parsing/scanner.cc',
-+ 'parsing/scanner.h',
-+ 'parsing/token.cc',
-+ 'parsing/token.h',
-+ 'pending-compilation-error-handler.cc',
-+ 'pending-compilation-error-handler.h',
-+ 'perf-jit.cc',
-+ 'perf-jit.h',
-+ 'profiler/allocation-tracker.cc',
-+ 'profiler/allocation-tracker.h',
-+ 'profiler/circular-queue-inl.h',
-+ 'profiler/circular-queue.h',
-+ 'profiler/cpu-profiler-inl.h',
-+ 'profiler/cpu-profiler.cc',
-+ 'profiler/cpu-profiler.h',
-+ 'profiler/heap-profiler.cc',
-+ 'profiler/heap-profiler.h',
-+ 'profiler/heap-snapshot-generator-inl.h',
-+ 'profiler/heap-snapshot-generator.cc',
-+ 'profiler/heap-snapshot-generator.h',
-+ 'profiler/profiler-listener.cc',
-+ 'profiler/profiler-listener.h',
-+ 'profiler/profile-generator-inl.h',
-+ 'profiler/profile-generator.cc',
-+ 'profiler/profile-generator.h',
-+ 'profiler/sampling-heap-profiler.cc',
-+ 'profiler/sampling-heap-profiler.h',
-+ 'profiler/strings-storage.cc',
-+ 'profiler/strings-storage.h',
-+ 'profiler/tick-sample.cc',
-+ 'profiler/tick-sample.h',
-+ 'profiler/unbound-queue-inl.h',
-+ 'profiler/unbound-queue.h',
-+ 'property-descriptor.cc',
-+ 'property-descriptor.h',
-+ 'property-details.h',
-+ 'property.cc',
-+ 'property.h',
-+ 'prototype.h',
-+ 'regexp/bytecodes-irregexp.h',
-+ 'regexp/interpreter-irregexp.cc',
-+ 'regexp/interpreter-irregexp.h',
-+ 'regexp/jsregexp-inl.h',
-+ 'regexp/jsregexp.cc',
-+ 'regexp/jsregexp.h',
-+ 'regexp/regexp-ast.cc',
-+ 'regexp/regexp-ast.h',
-+ 'regexp/regexp-macro-assembler-irregexp-inl.h',
-+ 'regexp/regexp-macro-assembler-irregexp.cc',
-+ 'regexp/regexp-macro-assembler-irregexp.h',
-+ 'regexp/regexp-macro-assembler-tracer.cc',
-+ 'regexp/regexp-macro-assembler-tracer.h',
-+ 'regexp/regexp-macro-assembler.cc',
-+ 'regexp/regexp-macro-assembler.h',
-+ 'regexp/regexp-parser.cc',
-+ 'regexp/regexp-parser.h',
-+ 'regexp/regexp-stack.cc',
-+ 'regexp/regexp-stack.h',
-+ 'register-configuration.cc',
-+ 'register-configuration.h',
-+ 'runtime-profiler.cc',
-+ 'runtime-profiler.h',
-+ 'runtime/runtime-array.cc',
-+ 'runtime/runtime-atomics.cc',
-+ 'runtime/runtime-classes.cc',
-+ 'runtime/runtime-collections.cc',
-+ 'runtime/runtime-compiler.cc',
-+ 'runtime/runtime-date.cc',
-+ 'runtime/runtime-debug.cc',
-+ 'runtime/runtime-forin.cc',
-+ 'runtime/runtime-function.cc',
-+ 'runtime/runtime-futex.cc',
-+ 'runtime/runtime-generator.cc',
-+ 'runtime/runtime-i18n.cc',
-+ 'runtime/runtime-internal.cc',
-+ 'runtime/runtime-interpreter.cc',
-+ 'runtime/runtime-literals.cc',
-+ 'runtime/runtime-liveedit.cc',
-+ 'runtime/runtime-maths.cc',
-+ 'runtime/runtime-numbers.cc',
-+ 'runtime/runtime-object.cc',
-+ 'runtime/runtime-operators.cc',
-+ 'runtime/runtime-proxy.cc',
-+ 'runtime/runtime-regexp.cc',
-+ 'runtime/runtime-scopes.cc',
-+ 'runtime/runtime-simd.cc',
-+ 'runtime/runtime-strings.cc',
-+ 'runtime/runtime-symbol.cc',
-+ 'runtime/runtime-test.cc',
-+ 'runtime/runtime-typedarray.cc',
-+ 'runtime/runtime-utils.h',
-+ 'runtime/runtime.cc',
-+ 'runtime/runtime.h',
-+ 'safepoint-table.cc',
-+ 'safepoint-table.h',
-+ 'signature.h',
-+ 'simulator.h',
-+ 'small-pointer-list.h',
-+ 'snapshot/code-serializer.cc',
-+ 'snapshot/code-serializer.h',
-+ 'snapshot/deserializer.cc',
-+ 'snapshot/deserializer.h',
-+ 'snapshot/natives.h',
-+ 'snapshot/natives-common.cc',
-+ 'snapshot/partial-serializer.cc',
-+ 'snapshot/partial-serializer.h',
-+ 'snapshot/serializer.cc',
-+ 'snapshot/serializer.h',
-+ 'snapshot/serializer-common.cc',
-+ 'snapshot/serializer-common.h',
-+ 'snapshot/snapshot.h',
-+ 'snapshot/snapshot-common.cc',
-+ 'snapshot/snapshot-source-sink.cc',
-+ 'snapshot/snapshot-source-sink.h',
-+ 'snapshot/startup-serializer.cc',
-+ 'snapshot/startup-serializer.h',
-+ 'source-position.h',
-+ 'splay-tree.h',
-+ 'splay-tree-inl.h',
-+ 'startup-data-util.cc',
-+ 'startup-data-util.h',
-+ 'string-builder.cc',
-+ 'string-builder.h',
-+ 'string-search.h',
-+ 'string-stream.cc',
-+ 'string-stream.h',
-+ 'strtod.cc',
-+ 'strtod.h',
-+ 'ic/stub-cache.cc',
-+ 'ic/stub-cache.h',
-+ 'tracing/trace-event.cc',
-+ 'tracing/trace-event.h',
-+ 'transitions-inl.h',
-+ 'transitions.cc',
-+ 'transitions.h',
-+ 'type-cache.cc',
-+ 'type-cache.h',
-+ 'type-feedback-vector-inl.h',
-+ 'type-feedback-vector.cc',
-+ 'type-feedback-vector.h',
-+ 'type-info.cc',
-+ 'type-info.h',
-+ 'types.cc',
-+ 'types.h',
-+ 'typing-asm.cc',
-+ 'typing-asm.h',
-+ 'unicode-inl.h',
-+ 'unicode.cc',
-+ 'unicode.h',
-+ 'unicode-cache-inl.h',
-+ 'unicode-cache.h',
-+ 'unicode-decoder.cc',
-+ 'unicode-decoder.h',
-+ 'uri.cc',
-+ 'uri.h',
-+ 'utils-inl.h',
-+ 'utils.cc',
-+ 'utils.h',
-+ 'v8.cc',
-+ 'v8.h',
-+ 'v8memory.h',
-+ 'v8threads.cc',
-+ 'v8threads.h',
-+ 'vector.h',
-+ 'version.cc',
-+ 'version.h',
-+ 'vm-state-inl.h',
-+ 'vm-state.h',
-+ 'wasm/asm-types.cc',
-+ 'wasm/asm-types.h',
-+ 'wasm/asm-wasm-builder.cc',
-+ 'wasm/asm-wasm-builder.h',
-+ 'wasm/ast-decoder.cc',
-+ 'wasm/ast-decoder.h',
-+ 'wasm/decoder.h',
-+ 'wasm/encoder.cc',
-+ 'wasm/encoder.h',
-+ 'wasm/leb-helper.h',
-+ 'wasm/module-decoder.cc',
-+ 'wasm/module-decoder.h',
-+ 'wasm/switch-logic.h',
-+ 'wasm/switch-logic.cc',
-+ 'wasm/wasm-debug.cc',
-+ 'wasm/wasm-debug.h',
-+ 'wasm/wasm-external-refs.cc',
-+ 'wasm/wasm-external-refs.h',
-+ 'wasm/wasm-function-name-table.cc',
-+ 'wasm/wasm-function-name-table.h',
-+ 'wasm/wasm-js.cc',
-+ 'wasm/wasm-js.h',
-+ 'wasm/wasm-macro-gen.h',
-+ 'wasm/wasm-module.cc',
-+ 'wasm/wasm-module.h',
-+ 'wasm/wasm-interpreter.cc',
-+ 'wasm/wasm-interpreter.h',
-+ 'wasm/wasm-opcodes.cc',
-+ 'wasm/wasm-opcodes.h',
-+ 'wasm/wasm-result.cc',
-+ 'wasm/wasm-result.h',
-+ 'zone.cc',
-+ 'zone.h',
-+ 'zone-allocator.h',
-+ 'zone-containers.h',
-+ ],
-+ 'conditions': [
-+ ['OS!="win" and remove_v8base_debug_symbols==1', {
-+ 'cflags!': ['-g', '-gdwarf-4'],
-+ }],
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ['v8_target_arch=="arm"', {
-+ 'sources': [ ### gcmole(arch:arm) ###
-+ 'arm/assembler-arm-inl.h',
-+ 'arm/assembler-arm.cc',
-+ 'arm/assembler-arm.h',
-+ 'arm/builtins-arm.cc',
-+ 'arm/code-stubs-arm.cc',
-+ 'arm/code-stubs-arm.h',
-+ 'arm/codegen-arm.cc',
-+ 'arm/codegen-arm.h',
-+ 'arm/constants-arm.h',
-+ 'arm/constants-arm.cc',
-+ 'arm/cpu-arm.cc',
-+ 'arm/deoptimizer-arm.cc',
-+ 'arm/disasm-arm.cc',
-+ 'arm/frames-arm.cc',
-+ 'arm/frames-arm.h',
-+ 'arm/interface-descriptors-arm.cc',
-+ 'arm/interface-descriptors-arm.h',
-+ 'arm/macro-assembler-arm.cc',
-+ 'arm/macro-assembler-arm.h',
-+ 'arm/simulator-arm.cc',
-+ 'arm/simulator-arm.h',
-+ 'compiler/arm/code-generator-arm.cc',
-+ 'compiler/arm/instruction-codes-arm.h',
-+ 'compiler/arm/instruction-scheduler-arm.cc',
-+ 'compiler/arm/instruction-selector-arm.cc',
-+ 'crankshaft/arm/lithium-arm.cc',
-+ 'crankshaft/arm/lithium-arm.h',
-+ 'crankshaft/arm/lithium-codegen-arm.cc',
-+ 'crankshaft/arm/lithium-codegen-arm.h',
-+ 'crankshaft/arm/lithium-gap-resolver-arm.cc',
-+ 'crankshaft/arm/lithium-gap-resolver-arm.h',
-+ 'debug/arm/debug-arm.cc',
-+ 'full-codegen/arm/full-codegen-arm.cc',
-+ 'ic/arm/access-compiler-arm.cc',
-+ 'ic/arm/handler-compiler-arm.cc',
-+ 'ic/arm/ic-arm.cc',
-+ 'ic/arm/ic-compiler-arm.cc',
-+ 'ic/arm/stub-cache-arm.cc',
-+ 'regexp/arm/regexp-macro-assembler-arm.cc',
-+ 'regexp/arm/regexp-macro-assembler-arm.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="arm64"', {
-+ 'sources': [ ### gcmole(arch:arm64) ###
-+ 'arm64/assembler-arm64.cc',
-+ 'arm64/assembler-arm64.h',
-+ 'arm64/assembler-arm64-inl.h',
-+ 'arm64/builtins-arm64.cc',
-+ 'arm64/codegen-arm64.cc',
-+ 'arm64/codegen-arm64.h',
-+ 'arm64/code-stubs-arm64.cc',
-+ 'arm64/code-stubs-arm64.h',
-+ 'arm64/constants-arm64.h',
-+ 'arm64/cpu-arm64.cc',
-+ 'arm64/decoder-arm64.cc',
-+ 'arm64/decoder-arm64.h',
-+ 'arm64/decoder-arm64-inl.h',
-+ 'arm64/deoptimizer-arm64.cc',
-+ 'arm64/disasm-arm64.cc',
-+ 'arm64/disasm-arm64.h',
-+ 'arm64/frames-arm64.cc',
-+ 'arm64/frames-arm64.h',
-+ 'arm64/instructions-arm64.cc',
-+ 'arm64/instructions-arm64.h',
-+ 'arm64/instrument-arm64.cc',
-+ 'arm64/instrument-arm64.h',
-+ 'arm64/interface-descriptors-arm64.cc',
-+ 'arm64/interface-descriptors-arm64.h',
-+ 'arm64/macro-assembler-arm64.cc',
-+ 'arm64/macro-assembler-arm64.h',
-+ 'arm64/macro-assembler-arm64-inl.h',
-+ 'arm64/simulator-arm64.cc',
-+ 'arm64/simulator-arm64.h',
-+ 'arm64/utils-arm64.cc',
-+ 'arm64/utils-arm64.h',
-+ 'compiler/arm64/code-generator-arm64.cc',
-+ 'compiler/arm64/instruction-codes-arm64.h',
-+ 'compiler/arm64/instruction-scheduler-arm64.cc',
-+ 'compiler/arm64/instruction-selector-arm64.cc',
-+ 'crankshaft/arm64/delayed-masm-arm64.cc',
-+ 'crankshaft/arm64/delayed-masm-arm64.h',
-+ 'crankshaft/arm64/delayed-masm-arm64-inl.h',
-+ 'crankshaft/arm64/lithium-arm64.cc',
-+ 'crankshaft/arm64/lithium-arm64.h',
-+ 'crankshaft/arm64/lithium-codegen-arm64.cc',
-+ 'crankshaft/arm64/lithium-codegen-arm64.h',
-+ 'crankshaft/arm64/lithium-gap-resolver-arm64.cc',
-+ 'crankshaft/arm64/lithium-gap-resolver-arm64.h',
-+ 'debug/arm64/debug-arm64.cc',
-+ 'full-codegen/arm64/full-codegen-arm64.cc',
-+ 'ic/arm64/access-compiler-arm64.cc',
-+ 'ic/arm64/handler-compiler-arm64.cc',
-+ 'ic/arm64/ic-arm64.cc',
-+ 'ic/arm64/ic-compiler-arm64.cc',
-+ 'ic/arm64/stub-cache-arm64.cc',
-+ 'regexp/arm64/regexp-macro-assembler-arm64.cc',
-+ 'regexp/arm64/regexp-macro-assembler-arm64.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="ia32"', {
-+ 'sources': [ ### gcmole(arch:ia32) ###
-+ 'ia32/assembler-ia32-inl.h',
-+ 'ia32/assembler-ia32.cc',
-+ 'ia32/assembler-ia32.h',
-+ 'ia32/builtins-ia32.cc',
-+ 'ia32/code-stubs-ia32.cc',
-+ 'ia32/code-stubs-ia32.h',
-+ 'ia32/codegen-ia32.cc',
-+ 'ia32/codegen-ia32.h',
-+ 'ia32/cpu-ia32.cc',
-+ 'ia32/deoptimizer-ia32.cc',
-+ 'ia32/disasm-ia32.cc',
-+ 'ia32/frames-ia32.cc',
-+ 'ia32/frames-ia32.h',
-+ 'ia32/interface-descriptors-ia32.cc',
-+ 'ia32/macro-assembler-ia32.cc',
-+ 'ia32/macro-assembler-ia32.h',
-+ 'compiler/ia32/code-generator-ia32.cc',
-+ 'compiler/ia32/instruction-codes-ia32.h',
-+ 'compiler/ia32/instruction-scheduler-ia32.cc',
-+ 'compiler/ia32/instruction-selector-ia32.cc',
-+ 'crankshaft/ia32/lithium-codegen-ia32.cc',
-+ 'crankshaft/ia32/lithium-codegen-ia32.h',
-+ 'crankshaft/ia32/lithium-gap-resolver-ia32.cc',
-+ 'crankshaft/ia32/lithium-gap-resolver-ia32.h',
-+ 'crankshaft/ia32/lithium-ia32.cc',
-+ 'crankshaft/ia32/lithium-ia32.h',
-+ 'debug/ia32/debug-ia32.cc',
-+ 'full-codegen/ia32/full-codegen-ia32.cc',
-+ 'ic/ia32/access-compiler-ia32.cc',
-+ 'ic/ia32/handler-compiler-ia32.cc',
-+ 'ic/ia32/ic-ia32.cc',
-+ 'ic/ia32/ic-compiler-ia32.cc',
-+ 'ic/ia32/stub-cache-ia32.cc',
-+ 'regexp/ia32/regexp-macro-assembler-ia32.cc',
-+ 'regexp/ia32/regexp-macro-assembler-ia32.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="x87"', {
-+ 'sources': [ ### gcmole(arch:x87) ###
-+ 'x87/assembler-x87-inl.h',
-+ 'x87/assembler-x87.cc',
-+ 'x87/assembler-x87.h',
-+ 'x87/builtins-x87.cc',
-+ 'x87/code-stubs-x87.cc',
-+ 'x87/code-stubs-x87.h',
-+ 'x87/codegen-x87.cc',
-+ 'x87/codegen-x87.h',
-+ 'x87/cpu-x87.cc',
-+ 'x87/deoptimizer-x87.cc',
-+ 'x87/disasm-x87.cc',
-+ 'x87/frames-x87.cc',
-+ 'x87/frames-x87.h',
-+ 'x87/interface-descriptors-x87.cc',
-+ 'x87/macro-assembler-x87.cc',
-+ 'x87/macro-assembler-x87.h',
-+ 'compiler/x87/code-generator-x87.cc',
-+ 'compiler/x87/instruction-codes-x87.h',
-+ 'compiler/x87/instruction-scheduler-x87.cc',
-+ 'compiler/x87/instruction-selector-x87.cc',
-+ 'crankshaft/x87/lithium-codegen-x87.cc',
-+ 'crankshaft/x87/lithium-codegen-x87.h',
-+ 'crankshaft/x87/lithium-gap-resolver-x87.cc',
-+ 'crankshaft/x87/lithium-gap-resolver-x87.h',
-+ 'crankshaft/x87/lithium-x87.cc',
-+ 'crankshaft/x87/lithium-x87.h',
-+ 'debug/x87/debug-x87.cc',
-+ 'full-codegen/x87/full-codegen-x87.cc',
-+ 'ic/x87/access-compiler-x87.cc',
-+ 'ic/x87/handler-compiler-x87.cc',
-+ 'ic/x87/ic-x87.cc',
-+ 'ic/x87/ic-compiler-x87.cc',
-+ 'ic/x87/stub-cache-x87.cc',
-+ 'regexp/x87/regexp-macro-assembler-x87.cc',
-+ 'regexp/x87/regexp-macro-assembler-x87.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="mips" or v8_target_arch=="mipsel"', {
-+ 'sources': [ ### gcmole(arch:mipsel) ###
-+ 'mips/assembler-mips.cc',
-+ 'mips/assembler-mips.h',
-+ 'mips/assembler-mips-inl.h',
-+ 'mips/builtins-mips.cc',
-+ 'mips/codegen-mips.cc',
-+ 'mips/codegen-mips.h',
-+ 'mips/code-stubs-mips.cc',
-+ 'mips/code-stubs-mips.h',
-+ 'mips/constants-mips.cc',
-+ 'mips/constants-mips.h',
-+ 'mips/cpu-mips.cc',
-+ 'mips/deoptimizer-mips.cc',
-+ 'mips/disasm-mips.cc',
-+ 'mips/frames-mips.cc',
-+ 'mips/frames-mips.h',
-+ 'mips/interface-descriptors-mips.cc',
-+ 'mips/macro-assembler-mips.cc',
-+ 'mips/macro-assembler-mips.h',
-+ 'mips/simulator-mips.cc',
-+ 'mips/simulator-mips.h',
-+ 'compiler/mips/code-generator-mips.cc',
-+ 'compiler/mips/instruction-codes-mips.h',
-+ 'compiler/mips/instruction-scheduler-mips.cc',
-+ 'compiler/mips/instruction-selector-mips.cc',
-+ 'crankshaft/mips/lithium-codegen-mips.cc',
-+ 'crankshaft/mips/lithium-codegen-mips.h',
-+ 'crankshaft/mips/lithium-gap-resolver-mips.cc',
-+ 'crankshaft/mips/lithium-gap-resolver-mips.h',
-+ 'crankshaft/mips/lithium-mips.cc',
-+ 'crankshaft/mips/lithium-mips.h',
-+ 'full-codegen/mips/full-codegen-mips.cc',
-+ 'debug/mips/debug-mips.cc',
-+ 'ic/mips/access-compiler-mips.cc',
-+ 'ic/mips/handler-compiler-mips.cc',
-+ 'ic/mips/ic-mips.cc',
-+ 'ic/mips/ic-compiler-mips.cc',
-+ 'ic/mips/stub-cache-mips.cc',
-+ 'regexp/mips/regexp-macro-assembler-mips.cc',
-+ 'regexp/mips/regexp-macro-assembler-mips.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="mips64" or v8_target_arch=="mips64el"', {
-+ 'sources': [ ### gcmole(arch:mips64el) ###
-+ 'mips64/assembler-mips64.cc',
-+ 'mips64/assembler-mips64.h',
-+ 'mips64/assembler-mips64-inl.h',
-+ 'mips64/builtins-mips64.cc',
-+ 'mips64/codegen-mips64.cc',
-+ 'mips64/codegen-mips64.h',
-+ 'mips64/code-stubs-mips64.cc',
-+ 'mips64/code-stubs-mips64.h',
-+ 'mips64/constants-mips64.cc',
-+ 'mips64/constants-mips64.h',
-+ 'mips64/cpu-mips64.cc',
-+ 'mips64/deoptimizer-mips64.cc',
-+ 'mips64/disasm-mips64.cc',
-+ 'mips64/frames-mips64.cc',
-+ 'mips64/frames-mips64.h',
-+ 'mips64/interface-descriptors-mips64.cc',
-+ 'mips64/macro-assembler-mips64.cc',
-+ 'mips64/macro-assembler-mips64.h',
-+ 'mips64/simulator-mips64.cc',
-+ 'mips64/simulator-mips64.h',
-+ 'compiler/mips64/code-generator-mips64.cc',
-+ 'compiler/mips64/instruction-codes-mips64.h',
-+ 'compiler/mips64/instruction-scheduler-mips64.cc',
-+ 'compiler/mips64/instruction-selector-mips64.cc',
-+ 'crankshaft/mips64/lithium-codegen-mips64.cc',
-+ 'crankshaft/mips64/lithium-codegen-mips64.h',
-+ 'crankshaft/mips64/lithium-gap-resolver-mips64.cc',
-+ 'crankshaft/mips64/lithium-gap-resolver-mips64.h',
-+ 'crankshaft/mips64/lithium-mips64.cc',
-+ 'crankshaft/mips64/lithium-mips64.h',
-+ 'debug/mips64/debug-mips64.cc',
-+ 'full-codegen/mips64/full-codegen-mips64.cc',
-+ 'ic/mips64/access-compiler-mips64.cc',
-+ 'ic/mips64/handler-compiler-mips64.cc',
-+ 'ic/mips64/ic-mips64.cc',
-+ 'ic/mips64/ic-compiler-mips64.cc',
-+ 'ic/mips64/stub-cache-mips64.cc',
-+ 'regexp/mips64/regexp-macro-assembler-mips64.cc',
-+ 'regexp/mips64/regexp-macro-assembler-mips64.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="x64" or v8_target_arch=="x32"', {
-+ 'sources': [ ### gcmole(arch:x64) ###
-+ 'crankshaft/x64/lithium-codegen-x64.cc',
-+ 'crankshaft/x64/lithium-codegen-x64.h',
-+ 'crankshaft/x64/lithium-gap-resolver-x64.cc',
-+ 'crankshaft/x64/lithium-gap-resolver-x64.h',
-+ 'crankshaft/x64/lithium-x64.cc',
-+ 'crankshaft/x64/lithium-x64.h',
-+ 'x64/assembler-x64-inl.h',
-+ 'x64/assembler-x64.cc',
-+ 'x64/assembler-x64.h',
-+ 'x64/builtins-x64.cc',
-+ 'x64/code-stubs-x64.cc',
-+ 'x64/code-stubs-x64.h',
-+ 'x64/codegen-x64.cc',
-+ 'x64/codegen-x64.h',
-+ 'x64/cpu-x64.cc',
-+ 'x64/deoptimizer-x64.cc',
-+ 'x64/disasm-x64.cc',
-+ 'x64/frames-x64.cc',
-+ 'x64/frames-x64.h',
-+ 'x64/interface-descriptors-x64.cc',
-+ 'x64/macro-assembler-x64.cc',
-+ 'x64/macro-assembler-x64.h',
-+ 'debug/x64/debug-x64.cc',
-+ 'full-codegen/x64/full-codegen-x64.cc',
-+ 'ic/x64/access-compiler-x64.cc',
-+ 'ic/x64/handler-compiler-x64.cc',
-+ 'ic/x64/ic-x64.cc',
-+ 'ic/x64/ic-compiler-x64.cc',
-+ 'ic/x64/stub-cache-x64.cc',
-+ 'regexp/x64/regexp-macro-assembler-x64.cc',
-+ 'regexp/x64/regexp-macro-assembler-x64.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="x64"', {
-+ 'sources': [
-+ 'compiler/x64/code-generator-x64.cc',
-+ 'compiler/x64/instruction-codes-x64.h',
-+ 'compiler/x64/instruction-scheduler-x64.cc',
-+ 'compiler/x64/instruction-selector-x64.cc',
-+ ],
-+ }],
-+ ['v8_target_arch=="ppc" or v8_target_arch=="ppc64"', {
-+ 'sources': [ ### gcmole(arch:ppc) ###
-+ 'compiler/ppc/code-generator-ppc.cc',
-+ 'compiler/ppc/instruction-codes-ppc.h',
-+ 'compiler/ppc/instruction-scheduler-ppc.cc',
-+ 'compiler/ppc/instruction-selector-ppc.cc',
-+ 'crankshaft/ppc/lithium-ppc.cc',
-+ 'crankshaft/ppc/lithium-ppc.h',
-+ 'crankshaft/ppc/lithium-codegen-ppc.cc',
-+ 'crankshaft/ppc/lithium-codegen-ppc.h',
-+ 'crankshaft/ppc/lithium-gap-resolver-ppc.cc',
-+ 'crankshaft/ppc/lithium-gap-resolver-ppc.h',
-+ 'debug/ppc/debug-ppc.cc',
-+ 'full-codegen/ppc/full-codegen-ppc.cc',
-+ 'ic/ppc/access-compiler-ppc.cc',
-+ 'ic/ppc/handler-compiler-ppc.cc',
-+ 'ic/ppc/ic-ppc.cc',
-+ 'ic/ppc/ic-compiler-ppc.cc',
-+ 'ic/ppc/stub-cache-ppc.cc',
-+ 'ppc/assembler-ppc-inl.h',
-+ 'ppc/assembler-ppc.cc',
-+ 'ppc/assembler-ppc.h',
-+ 'ppc/builtins-ppc.cc',
-+ 'ppc/code-stubs-ppc.cc',
-+ 'ppc/code-stubs-ppc.h',
-+ 'ppc/codegen-ppc.cc',
-+ 'ppc/codegen-ppc.h',
-+ 'ppc/constants-ppc.h',
-+ 'ppc/constants-ppc.cc',
-+ 'ppc/cpu-ppc.cc',
-+ 'ppc/deoptimizer-ppc.cc',
-+ 'ppc/disasm-ppc.cc',
-+ 'ppc/frames-ppc.cc',
-+ 'ppc/frames-ppc.h',
-+ 'ppc/interface-descriptors-ppc.cc',
-+ 'ppc/macro-assembler-ppc.cc',
-+ 'ppc/macro-assembler-ppc.h',
-+ 'ppc/simulator-ppc.cc',
-+ 'ppc/simulator-ppc.h',
-+ 'regexp/ppc/regexp-macro-assembler-ppc.cc',
-+ 'regexp/ppc/regexp-macro-assembler-ppc.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="s390" or v8_target_arch=="s390x"', {
-+ 'sources': [ ### gcmole(arch:s390) ###
-+ 'compiler/s390/code-generator-s390.cc',
-+ 'compiler/s390/instruction-codes-s390.h',
-+ 'compiler/s390/instruction-scheduler-s390.cc',
-+ 'compiler/s390/instruction-selector-s390.cc',
-+ 'crankshaft/s390/lithium-codegen-s390.cc',
-+ 'crankshaft/s390/lithium-codegen-s390.h',
-+ 'crankshaft/s390/lithium-gap-resolver-s390.cc',
-+ 'crankshaft/s390/lithium-gap-resolver-s390.h',
-+ 'crankshaft/s390/lithium-s390.cc',
-+ 'crankshaft/s390/lithium-s390.h',
-+ 'debug/s390/debug-s390.cc',
-+ 'full-codegen/s390/full-codegen-s390.cc',
-+ 'ic/s390/access-compiler-s390.cc',
-+ 'ic/s390/handler-compiler-s390.cc',
-+ 'ic/s390/ic-compiler-s390.cc',
-+ 'ic/s390/ic-s390.cc',
-+ 'ic/s390/stub-cache-s390.cc',
-+ 'regexp/s390/regexp-macro-assembler-s390.cc',
-+ 'regexp/s390/regexp-macro-assembler-s390.h',
-+ 's390/assembler-s390.cc',
-+ 's390/assembler-s390.h',
-+ 's390/assembler-s390-inl.h',
-+ 's390/builtins-s390.cc',
-+ 's390/codegen-s390.cc',
-+ 's390/codegen-s390.h',
-+ 's390/code-stubs-s390.cc',
-+ 's390/code-stubs-s390.h',
-+ 's390/constants-s390.cc',
-+ 's390/constants-s390.h',
-+ 's390/cpu-s390.cc',
-+ 's390/deoptimizer-s390.cc',
-+ 's390/disasm-s390.cc',
-+ 's390/frames-s390.cc',
-+ 's390/frames-s390.h',
-+ 's390/interface-descriptors-s390.cc',
-+ 's390/macro-assembler-s390.cc',
-+ 's390/macro-assembler-s390.h',
-+ 's390/simulator-s390.cc',
-+ 's390/simulator-s390.h',
-+ ],
-+ }],
-+ ['OS=="win"', {
-+ 'variables': {
-+ 'gyp_generators': '<!(echo $GYP_GENERATORS)',
-+ },
-+ 'msvs_disabled_warnings': [4351, 4355, 4800],
-+ # When building Official, the .lib is too large and exceeds the 2G
-+ # limit. This breaks it into multiple pieces to avoid the limit.
-+ # See http://crbug.com/485155.
-+ 'msvs_shard': 4,
-+ }],
-+ ['v8_component=="shared_library"', {
-+ 'defines': [
-+ 'BUILDING_V8_SHARED',
-+ 'V8_SHARED',
-+ ],
-+ }],
-+ ['v8_postmortem_support=="true"', {
-+ 'sources': [
-+ '<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
-+ ]
-+ }],
-+ ['v8_enable_i18n_support==1', {
-+ 'dependencies': [
-+ '<(icu_gyp_path):icui18n',
-+ '<(icu_gyp_path):icuuc',
-+ ],
-+ 'conditions': [
-+ ['icu_use_data_file_flag==1', {
-+ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE'],
-+ }, { # else icu_use_data_file_flag !=1
-+ 'conditions': [
-+ ['OS=="win"', {
-+ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_SHARED'],
-+ }, {
-+ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC'],
-+ }],
-+ ],
-+ }],
-+ ],
-+ }, { # v8_enable_i18n_support==0
-+ 'sources!': [
-+ 'i18n.cc',
-+ 'i18n.h',
-+ ],
-+ }],
-+ ['OS=="win" and v8_enable_i18n_support==1', {
-+ 'dependencies': [
-+ '<(icu_gyp_path):icudata',
-+ ],
-+ }],
-+ ],
-+ },
-+ {
-+ 'target_name': 'v8_libbase_sse2',
-+ 'type': 'static_library',
-+ 'variables': {
-+ 'optimize': 'max',
-+ },
-+ 'include_dirs+': [
-+ '..',
-+ ],
-+ 'sources': [
-+ 'base/accounting-allocator.cc',
-+ 'base/accounting-allocator.h',
-+ 'base/adapters.h',
-+ 'base/atomic-utils.h',
-+ 'base/atomicops.h',
-+ 'base/atomicops_internals_arm64_gcc.h',
-+ 'base/atomicops_internals_arm_gcc.h',
-+ 'base/atomicops_internals_atomicword_compat.h',
-+ 'base/atomicops_internals_mac.h',
-+ 'base/atomicops_internals_mips_gcc.h',
-+ 'base/atomicops_internals_mips64_gcc.h',
-+ 'base/atomicops_internals_portable.h',
-+ 'base/atomicops_internals_ppc_gcc.h',
-+ 'base/atomicops_internals_s390_gcc.h',
-+ 'base/atomicops_internals_tsan.h',
-+ 'base/atomicops_internals_x86_gcc.cc',
-+ 'base/atomicops_internals_x86_gcc.h',
-+ 'base/atomicops_internals_x86_msvc.h',
-+ 'base/bits.cc',
-+ 'base/bits.h',
-+ 'base/build_config.h',
-+ 'base/compiler-specific.h',
-+ 'base/cpu.cc',
-+ 'base/cpu.h',
-+ 'base/division-by-constant.cc',
-+ 'base/division-by-constant.h',
-+ 'base/file-utils.cc',
-+ 'base/file-utils.h',
-+ 'base/flags.h',
-+ 'base/format-macros.h',
-+ 'base/functional.cc',
-+ 'base/functional.h',
-+ 'base/hashmap.h',
-+ 'base/ieee754.cc',
-+ 'base/ieee754.h',
-+ 'base/iterator.h',
-+ 'base/lazy-instance.h',
-+ 'base/logging.cc',
-+ 'base/logging.h',
-+ 'base/macros.h',
-+ 'base/once.cc',
-+ 'base/once.h',
-+ 'base/platform/elapsed-timer.h',
-+ 'base/platform/time.cc',
-+ 'base/platform/time.h',
-+ 'base/platform/condition-variable.cc',
-+ 'base/platform/condition-variable.h',
-+ 'base/platform/mutex.cc',
-+ 'base/platform/mutex.h',
-+ 'base/platform/platform.h',
-+ 'base/platform/semaphore.cc',
-+ 'base/platform/semaphore.h',
-+ 'base/safe_conversions.h',
-+ 'base/safe_conversions_impl.h',
-+ 'base/safe_math.h',
-+ 'base/safe_math_impl.h',
-+ 'base/smart-pointers.h',
-+ 'base/sys-info.cc',
-+ 'base/sys-info.h',
-+ 'base/utils/random-number-generator.cc',
-+ 'base/utils/random-number-generator.h',
-+ ],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ['OS=="linux"', {
-+ 'conditions': [
-+ ['nacl_target_arch=="none"', {
-+ 'link_settings': {
-+ 'libraries': [
-+ '-ldl',
-+ '-lrt'
-+ ],
-+ },
-+ }, {
-+ 'defines': [
-+ 'V8_LIBRT_NOT_AVAILABLE=1',
-+ ],
-+ }],
-+ ],
-+ 'sources': [
-+ 'base/platform/platform-linux.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }
-+ ],
-+ ['OS=="android"', {
-+ 'sources': [
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ 'link_settings': {
-+ 'target_conditions': [
-+ ['_toolset=="host" and host_os!="mac"', {
-+ # Only include libdl and librt on host builds because they
-+ # are included by default on Android target builds, and we
-+ # don't want to re-include them here since this will change
-+ # library order and break (see crbug.com/469973).
-+ # These libraries do not exist on Mac hosted builds.
-+ 'libraries': [
-+ '-ldl',
-+ '-lrt'
-+ ]
-+ }]
-+ ]
-+ },
-+ 'conditions': [
-+ ['host_os=="mac"', {
-+ 'target_conditions': [
-+ ['_toolset=="host"', {
-+ 'sources': [
-+ 'base/platform/platform-macos.cc'
-+ ]
-+ }, {
-+ 'sources': [
-+ 'base/platform/platform-linux.cc'
-+ ]
-+ }],
-+ ],
-+ }, {
-+ 'sources': [
-+ 'base/platform/platform-linux.cc'
-+ ]
-+ }],
-+ ],
-+ },
-+ ],
-+ ['OS=="qnx"', {
-+ 'link_settings': {
-+ 'target_conditions': [
-+ ['_toolset=="host" and host_os=="linux"', {
-+ 'libraries': [
-+ '-lrt'
-+ ],
-+ }],
-+ ['_toolset=="target"', {
-+ 'libraries': [
-+ '-lbacktrace'
-+ ],
-+ }],
-+ ],
-+ },
-+ 'sources': [
-+ 'base/platform/platform-posix.cc',
-+ 'base/qnx-math.h',
-+ ],
-+ 'target_conditions': [
-+ ['_toolset=="host" and host_os=="linux"', {
-+ 'sources': [
-+ 'base/platform/platform-linux.cc'
-+ ],
-+ }],
-+ ['_toolset=="host" and host_os=="mac"', {
-+ 'sources': [
-+ 'base/platform/platform-macos.cc'
-+ ],
-+ }],
-+ ['_toolset=="target"', {
-+ 'sources': [
-+ 'base/platform/platform-qnx.cc'
-+ ],
-+ }],
-+ ],
-+ },
-+ ],
-+ ['OS=="freebsd"', {
-+ 'link_settings': {
-+ 'libraries': [
-+ '-L/usr/local/lib -lexecinfo',
-+ ]},
-+ 'sources': [
-+ 'base/platform/platform-freebsd.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }
-+ ],
-+ ['OS=="openbsd"', {
-+ 'link_settings': {
-+ 'libraries': [
-+ '-L/usr/local/lib -lexecinfo',
-+ ]},
-+ 'sources': [
-+ 'base/platform/platform-openbsd.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }
-+ ],
-+ ['OS=="netbsd"', {
-+ 'link_settings': {
-+ 'libraries': [
-+ '-L/usr/pkg/lib -Wl,-R/usr/pkg/lib -lexecinfo',
-+ ]},
-+ 'sources': [
-+ 'base/platform/platform-openbsd.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }
-+ ],
-+ ['OS=="aix"', {
-+ 'sources': [
-+ 'base/platform/platform-aix.cc',
-+ 'base/platform/platform-posix.cc'
-+ ]},
-+ ],
-+ ['OS=="solaris"', {
-+ 'link_settings': {
-+ 'libraries': [
-+ '-lnsl -lrt',
-+ ]},
-+ 'sources': [
-+ 'base/platform/platform-solaris.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }
-+ ],
-+ ['OS=="mac"', {
-+ 'sources': [
-+ 'base/platform/platform-macos.cc',
-+ 'base/platform/platform-posix.cc'
-+ ]},
-+ ],
-+ ['OS=="win"', {
-+ 'defines': [
-+ '_CRT_RAND_S' # for rand_s()
-+ ],
-+ 'variables': {
-+ 'gyp_generators': '<!(echo $GYP_GENERATORS)',
-+ },
-+ 'conditions': [
-+ ['gyp_generators=="make"', {
-+ 'variables': {
-+ 'build_env': '<!(uname -o)',
-+ },
-+ 'conditions': [
-+ ['build_env=="Cygwin"', {
-+ 'sources': [
-+ 'base/platform/platform-cygwin.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }, {
-+ 'sources': [
-+ 'base/platform/platform-win32.cc',
-+ 'base/win32-headers.h',
-+ ],
-+ }],
-+ ],
-+ 'link_settings': {
-+ 'libraries': [ '-lwinmm', '-lws2_32' ],
-+ },
-+ }, {
-+ 'sources': [
-+ 'base/platform/platform-win32.cc',
-+ 'base/win32-headers.h',
-+ ],
-+ 'msvs_disabled_warnings': [4351, 4355, 4800],
-+ 'link_settings': {
-+ 'libraries': [ '-lwinmm.lib', '-lws2_32.lib' ],
-+ },
-+ }],
-+ ],
-+ }],
-+ ],
-+ },
-+ {
-+ 'target_name': 'v8_libplatform_sse2',
-+ 'type': 'static_library',
-+ 'variables': {
-+ 'optimize': 'max',
-+ },
-+ 'dependencies': [
-+ 'v8_libbase_sse2',
-+ ],
-+ 'include_dirs+': [
-+ '..',
-+ '../include',
-+ ],
-+ 'sources': [
-+ '../include/libplatform/libplatform.h',
-+ 'libplatform/default-platform.cc',
-+ 'libplatform/default-platform.h',
-+ 'libplatform/task-queue.cc',
-+ 'libplatform/task-queue.h',
-+ 'libplatform/worker-thread.cc',
-+ 'libplatform/worker-thread.h',
-+ ],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ],
-+ 'direct_dependent_settings': {
-+ 'include_dirs': [
-+ '../include',
-+ ],
-+ },
-+ },
-+ {
-+ 'target_name': 'v8_libsampler_sse2',
-+ 'type': 'static_library',
-+ 'variables': {
-+ 'optimize': 'max',
-+ },
-+ 'dependencies': [
-+ 'v8_libbase_sse2',
-+ ],
-+ 'include_dirs+': [
-+ '..',
-+ '../include',
-+ ],
-+ 'sources': [
-+ 'libsampler/v8-sampler.cc',
-+ 'libsampler/v8-sampler.h'
-+ ],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ],
-+ 'direct_dependent_settings': {
-+ 'include_dirs': [
-+ '../include',
-+ ],
-+ },
-+ },
-+ {
-+ 'target_name': 'natives_blob_sse2',
-+ 'type': 'none',
-+ 'conditions': [
-+ [ 'v8_use_external_startup_data==1', {
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'dependencies': ['js2c_sse2#host'],
-+ }, {
-+ 'dependencies': ['js2c_sse2'],
-+ }],
-+ ],
-+ 'actions': [{
-+ 'action_name': 'v8_sse2_concatenate_natives_blob',
-+ 'inputs': [
-+ '../tools/concatenate-files.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.bin',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental_sse2.bin',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries-extras_sse2.bin',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental-extras_sse2.bin',
-+ ],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'target_conditions': [
-+ ['_toolset=="host"', {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/natives_blob_host_sse2.bin',
-+ ],
-+ 'action': [
-+ 'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_host_sse2.bin'
-+ ],
-+ }, {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/natives_blob_sse2.bin',
-+ ],
-+ 'action': [
-+ 'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_sse2.bin'
-+ ],
-+ }],
-+ ],
-+ }, {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/natives_blob_sse2.bin',
-+ ],
-+ 'action': [
-+ 'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_sse2.bin'
-+ ],
-+ }],
-+ ],
-+ }],
-+ }],
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ]
-+ },
-+ {
-+ 'target_name': 'js2c_sse2',
-+ 'type': 'none',
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ],
-+ 'variables': {
-+ 'library_files': [
-+ 'js/macros.py',
-+ 'messages.h',
-+ 'js/prologue.js',
-+ 'js/runtime.js',
-+ 'js/v8natives.js',
-+ 'js/symbol.js',
-+ 'js/array.js',
-+ 'js/string.js',
-+ 'js/math.js',
-+ 'third_party/fdlibm/fdlibm.js',
-+ 'js/regexp.js',
-+ 'js/arraybuffer.js',
-+ 'js/typedarray.js',
-+ 'js/iterator-prototype.js',
-+ 'js/collection.js',
-+ 'js/weak-collection.js',
-+ 'js/collection-iterator.js',
-+ 'js/promise.js',
-+ 'js/messages.js',
-+ 'js/array-iterator.js',
-+ 'js/string-iterator.js',
-+ 'js/templates.js',
-+ 'js/spread.js',
-+ 'js/proxy.js',
-+ 'debug/mirrors.js',
-+ 'debug/debug.js',
-+ 'debug/liveedit.js',
-+ ],
-+ 'experimental_library_files': [
-+ 'js/macros.py',
-+ 'messages.h',
-+ 'js/harmony-atomics.js',
-+ 'js/harmony-sharedarraybuffer.js',
-+ 'js/harmony-simd.js',
-+ 'js/harmony-string-padding.js',
-+ 'js/promise-extra.js',
-+ 'js/harmony-async-await.js'
-+ ],
-+ 'libraries_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.bin',
-+ 'libraries_experimental_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental_sse2.bin',
-+ 'libraries_extras_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-extras_sse2.bin',
-+ 'libraries_experimental_extras_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental-extras_sse2.bin',
-+ 'conditions': [
-+ ['v8_enable_i18n_support==1', {
-+ 'library_files': ['js/i18n.js'],
-+ 'experimental_library_files': [
-+ 'js/icu-case-mapping.js',
-+ 'js/intl-extra.js',
-+ ],
-+ }],
-+ ],
-+ },
-+ 'actions': [
-+ {
-+ 'action_name': 'v8_sse2_js2c',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(library_files)',
-+ ],
-+ 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
-+ 'CORE',
-+ '<@(library_files)',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_bin',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(library_files)',
-+ ],
-+ 'outputs': ['<@(libraries_bin_file)'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
-+ 'CORE',
-+ '<@(library_files)',
-+ '--startup_blob', '<@(libraries_bin_file)',
-+ '--nojs',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_experimental',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(experimental_library_files)',
-+ ],
-+ 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
-+ 'EXPERIMENTAL',
-+ '<@(experimental_library_files)',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_experimental_bin',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(experimental_library_files)',
-+ ],
-+ 'outputs': ['<@(libraries_experimental_bin_file)'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
-+ 'EXPERIMENTAL',
-+ '<@(experimental_library_files)',
-+ '--startup_blob', '<@(libraries_experimental_bin_file)',
-+ '--nojs',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_extras',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(v8_extra_library_files)',
-+ ],
-+ 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
-+ 'EXTRAS',
-+ '<@(v8_extra_library_files)',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_extras_bin',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(v8_extra_library_files)',
-+ ],
-+ 'outputs': ['<@(libraries_extras_bin_file)'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
-+ 'EXTRAS',
-+ '<@(v8_extra_library_files)',
-+ '--startup_blob', '<@(libraries_extras_bin_file)',
-+ '--nojs',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_experimental_extras',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(v8_experimental_extra_library_files)',
-+ ],
-+ 'outputs': [
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
-+ ],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
-+ 'EXPERIMENTAL_EXTRAS',
-+ '<@(v8_experimental_extra_library_files)',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_experimental_extras_bin',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(v8_experimental_extra_library_files)',
-+ ],
-+ 'outputs': ['<@(libraries_experimental_extras_bin_file)'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
-+ 'EXPERIMENTAL_EXTRAS',
-+ '<@(v8_experimental_extra_library_files)',
-+ '--startup_blob', '<@(libraries_experimental_extras_bin_file)',
-+ '--nojs',
-+ ],
-+ },
-+ ],
-+ },
-+ {
-+ 'target_name': 'postmortem-metadata_sse2',
-+ 'type': 'none',
-+ 'variables': {
-+ 'heapobject_files': [
-+ 'objects.h',
-+ 'objects-inl.h',
-+ ],
-+ },
-+ 'actions': [
-+ {
-+ 'action_name': 'v8_sse2_gen-postmortem-metadata',
-+ 'inputs': [
-+ '../tools/gen-postmortem-metadata.py',
-+ '<@(heapobject_files)',
-+ ],
-+ 'outputs': [
-+ '<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
-+ ],
-+ 'action': [
-+ 'python',
-+ '../tools/gen-postmortem-metadata.py',
-+ '<@(_outputs)',
-+ '<@(heapobject_files)'
-+ ]
-+ }
-+ ]
-+ },
-+ {
-+ 'target_name': 'mksnapshot_sse2',
-+ 'type': 'executable',
-+ 'dependencies': ['v8_base_sse2', 'v8_nosnapshot_sse2', 'v8_libplatform_sse2'],
-+ 'include_dirs+': [
-+ '..',
-+ ],
-+ 'sources': [
-+ 'snapshot/mksnapshot.cc',
-+ ],
-+ 'conditions': [
-+ ['v8_enable_i18n_support==1', {
-+ 'dependencies': [
-+ '<(icu_gyp_path):icui18n',
-+ '<(icu_gyp_path):icuuc',
-+ ]
-+ }],
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ],
-+ },
-+ ],
-+}
-diff --git a/src/core/core_module.pro b/src/core/core_module.pro
-index 44e8ac613..7fe1a49e9 100644
---- a/src/core/core_module.pro
-+++ b/src/core/core_module.pro
-@@ -10,6 +10,29 @@ linking_pri = $$OUT_PWD/$$getConfigDir()/$${TARGET}.pri
- error("Could not find the linking information that gn should have generated.")
- }
-
-+# find the shared libraries in the link line
-+# remove those in lib/sse2 that are only replacements for the normal ones
-+# collect all shared libraries so they can be installed
-+for(private_lib, LIBS_PRIVATE) {
-+ contains(private_lib, .*\.so) {
-+ contains(private_lib, .*/lib/sse2/.*) {
-+ LIBS_PRIVATE -= $$private_lib
-+ shlibs_sse2 += $$private_lib
-+ } else {
-+ shlibs += $$private_lib
-+ }
-+ }
-+}
-+
-+# set the shared libraries to be installed
-+# add an rpath to their installation location
-+shlib_install_path = $$[QT_INSTALL_LIBS]/qtwebengine
-+!isEmpty(shlibs) {
-+ shlibs.files += $$shlibs
-+ shlibs_sse2.files += $$shlibs_sse2
-+ LIBS_PRIVATE += -Wl,--rpath,$$shlib_install_path
-+}
-+
- load(qt_module)
-
- api_library_name = qtwebenginecoreapi$$qtPlatformTargetSuffix()
-@@ -100,7 +123,12 @@ icu.files = $$OUT_PWD/$$getConfigDir()/icudtl.dat
- locales.path = $$[QT_INSTALL_TRANSLATIONS]/qtwebengine_locales
- resources.CONFIG += no_check_exist
- resources.path = $$[QT_INSTALL_DATA]/resources
-- INSTALLS += locales resources
-+ # install the shared libraries
-+ shlibs.CONFIG += no_check_exist
-+ shlibs.path = $$shlib_install_path
-+ shlibs_sse2.CONFIG += no_check_exist
-+ shlibs_sse2.path = $$shlib_install_path/sse2
-+ INSTALLS += locales resources shlibs shlibs_sse2
-
- !use?(system_icu) {
- icu.CONFIG += no_check_exist
---
-2.13.0
-
diff --git a/0005-qtwebengine-opensource-src-5.9.-openmax-dl-neon.patch b/0005-qtwebengine-opensource-src-5.9.-openmax-dl-neon.patch
deleted file mode 100644
index 732be1a..0000000
--- a/0005-qtwebengine-opensource-src-5.9.-openmax-dl-neon.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From 8bad8aac82444a9e1feda3f1a8b214b81be8a8fc Mon Sep 17 00:00:00 2001
-From: Helio Chissini de Castro <helio(a)kde.org>
-Date: Wed, 31 May 2017 15:02:52 +0200
-Subject: [PATCH] qtwebengine-opensource-src-5.9.-openmax-dl-neon
-
----
- .../chromium/third_party/openmax_dl/dl/dl.gyp | 9 ----
- .../third_party/openmax_dl/dl/sp/src/arm/detect.c | 56 ++++++++++++++++++----
- 2 files changed, 48 insertions(+), 17 deletions(-)
-
-diff --git a/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp b/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp
-index 2b0826fe1..20b4b1f35 100644
---- a/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp
-+++ b/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp
-@@ -219,15 +219,6 @@
- 'conditions': [
- ['arm_neon_optional==1', {
- # Run-time NEON detection.
-- 'dependencies': [
-- '../../../build/android/ndk.gyp:cpu_features',
-- ],
-- 'link_settings' : {
-- 'libraries': [
-- # To get the __android_log_print routine
-- '-llog',
-- ],
-- },
- 'sources': [
- # Detection routine
- 'sp/src/arm/detect.c',
-diff --git a/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c b/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c
-index 57bfe4089..94a3f7ddc 100644
---- a/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c
-+++ b/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c
-@@ -9,13 +9,57 @@
- *
- */
-
--#include <cpu-features.h>
--
--#include "android/log.h"
- #include "dl/sp/api/omxSP.h"
-
-+// For ArmCpuCaps()
-+#include <stdio.h>
-+#include <string.h>
-+
-+// based on libvpx arm_cpudetect.c
-+static int ArmCpuCaps(const char* cpuinfo_name) {
-+ char cpuinfo_line[512];
-+ FILE* f = fopen(cpuinfo_name, "r");
-+ if (!f) {
-+ // Assume Neon if /proc/cpuinfo is unavailable.
-+ // This will occur for Chrome sandbox for Pepper or Render process.
-+ return 1;
-+ }
-+ while (fgets(cpuinfo_line, sizeof(cpuinfo_line) - 1, f)) {
-+ if (memcmp(cpuinfo_line, "Features", 8) == 0) {
-+ char* p = strstr(cpuinfo_line, " neon");
-+ if (p && (p[5] == ' ' || p[5] == '\n')) {
-+ fclose(f);
-+ return 1;
-+ }
-+ // aarch64 uses asimd for Neon.
-+ p = strstr(cpuinfo_line, " asimd");
-+ if (p && (p[6] == ' ' || p[6] == '\n')) {
-+ fclose(f);
-+ return 1;
-+ }
-+ }
-+ }
-+ fclose(f);
-+ return 0;
-+}
-+
- int omxSP_HasArmNeon() {
-- return (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0;
-+#if defined(__arm__) || defined(__aarch64__)
-+// gcc -mfpu=neon defines __ARM_NEON__
-+// __ARM_NEON__ generates code that requires Neon. NaCL also requires Neon.
-+// For Linux, /proc/cpuinfo can be tested but without that assume Neon.
-+#if defined(__ARM_NEON__) || defined(__native_client__) || !defined(__linux__)
-+ return 1;
-+// For aarch64(arm64), /proc/cpuinfo's feature is not complete, e.g. no neon
-+// flag in it.
-+// So for aarch64, neon enabling is hard coded here.
-+#elif defined(__aarch64__)
-+ return 1;
-+#else
-+ // Linux arm parse text file for neon detect.
-+ return ArmCpuCaps("/proc/cpuinfo");
-+#endif
-+#endif // __arm__
- }
-
- static void SetFFTRoutines() {
-@@ -24,13 +68,9 @@ static void SetFFTRoutines() {
- * forward and inverse FFTs
- */
- if (omxSP_HasArmNeon()) {
-- __android_log_print(ANDROID_LOG_INFO, "OpenMAX DL FFT",
-- "Using NEON FFT");
- omxSP_FFTFwd_RToCCS_F32 = omxSP_FFTFwd_RToCCS_F32_Sfs;
- omxSP_FFTInv_CCSToR_F32 = omxSP_FFTInv_CCSToR_F32_Sfs;
- } else {
-- __android_log_print(ANDROID_LOG_INFO, "OpenMAX DL FFT",
-- "Using non-NEON FFT");
- omxSP_FFTFwd_RToCCS_F32 = omxSP_FFTFwd_RToCCS_F32_Sfs_vfp;
- omxSP_FFTInv_CCSToR_F32 = omxSP_FFTInv_CCSToR_F32_Sfs_vfp;
- }
---
-2.13.0
-
diff --git a/0006-qtwebengine-opensource-src-5.9.0-linux-pri.patch b/0006-qtwebengine-opensource-src-5.9.0-linux-pri.patch
deleted file mode 100644
index 92c12de..0000000
--- a/0006-qtwebengine-opensource-src-5.9.0-linux-pri.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From a7885b823a2d3fc853f532fb5ae3a43a3e9967c0 Mon Sep 17 00:00:00 2001
-From: Helio Chissini de Castro <helio(a)kde.org>
-Date: Wed, 31 May 2017 15:13:15 +0200
-Subject: [PATCH] qtwebengine-opensource-src-5.9.0-linux-pri
-
----
- src/core/config/linux.pri | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/src/core/config/linux.pri b/src/core/config/linux.pri
-index 24951cd07..c28e3b312 100644
---- a/src/core/config/linux.pri
-+++ b/src/core/config/linux.pri
-@@ -147,4 +147,16 @@ host_build {
- use?(system_icu): gn_args += use_system_icu=true icu_use_data_file=false
- use?(system_ffmpeg): gn_args += use_system_ffmpeg=true
- #use?(system_protobuf): gn_args += use_system_protobuf=true
-+
-+ # some more system packages, that are not checked for for some reason
-+ gn_args += use_system_re2=true
-+
-+ # yasm is only used on x86, and passing use_system_yasm makes the build fail on
-+ # other architectures (e.g., ARM), so make it conditional on the architecture
-+ contains(QT_ARCH, "x86_64")|contains(QT_ARCH, "i386") {
-+ gn_args += use_system_yasm=true
-+ }
-+
-+ #link libpci instead of dlopening it, our Qt packaging depends on it anyway
-+ gn_args += linux_link_libpci=true
- }
---
-2.13.0
-
diff --git a/0007-qtwebengine-opensource-src-5.9.0-no-icudtl-dat.patch b/0007-qtwebengine-opensource-src-5.9.0-no-icudtl-dat.patch
deleted file mode 100644
index bf97a76..0000000
--- a/0007-qtwebengine-opensource-src-5.9.0-no-icudtl-dat.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 99294d646e58bcbedc5987a1816fed592290566f Mon Sep 17 00:00:00 2001
-From: Helio Chissini de Castro <helio(a)kde.org>
-Date: Wed, 31 May 2017 15:16:56 +0200
-Subject: [PATCH] qtwebengine-opensource-src-5.9.0-no-icudtl-dat
-
----
- src/core/web_engine_library_info.cpp | 17 -----------------
- 1 file changed, 17 deletions(-)
-
-diff --git a/src/core/web_engine_library_info.cpp b/src/core/web_engine_library_info.cpp
-index f46f8f425..96cd48ac4 100644
---- a/src/core/web_engine_library_info.cpp
-+++ b/src/core/web_engine_library_info.cpp
-@@ -254,24 +254,7 @@ QString icuDataPath()
- #if defined(OS_MACOSX) && defined(QT_MAC_FRAMEWORK_BUILD)
- return getResourcesPath(frameworkBundle());
- #else
-- static bool initialized = false;
- static QString potentialResourcesPath = QLibraryInfo::location(QLibraryInfo::DataPath) % QLatin1String("/resources");
-- if (!initialized) {
-- initialized = true;
-- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/icudtl.dat"))) {
-- qWarning("Qt WebEngine ICU data not found at %s. Trying parent directory...", qPrintable(potentialResourcesPath));
-- potentialResourcesPath = QLibraryInfo::location(QLibraryInfo::DataPath);
-- }
-- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/icudtl.dat"))) {
-- qWarning("Qt WebEngine ICU data not found at %s. Trying application directory...", qPrintable(potentialResourcesPath));
-- potentialResourcesPath = QCoreApplication::applicationDirPath();
-- }
-- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/icudtl.dat"))) {
-- qWarning("Qt WebEngine ICU data not found at %s. Trying fallback directory... The application MAY NOT work.", qPrintable(potentialResourcesPath));
-- potentialResourcesPath = fallbackDir();
-- }
-- }
--
- return potentialResourcesPath;
- #endif
- }
---
-2.13.0
-
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index b039a74..5ddbf65 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -40,8 +40,8 @@
Summary: Qt5 - QtWebEngine components
Name: qt5-qtwebengine
-Version: 5.9.0
-Release: 1%{?dist}
+Version: 5.8.0
+Release: 14%{?dist}
# See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details
# See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html
@@ -51,40 +51,68 @@ URL: http://www.qt.io
# cleaned tarball with patent-encumbered codecs removed from the bundled FFmpeg
# wget http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtwebengi...
# ./clean_qtwebengine.sh 5.8.0
-Source0: https://download.qt.io/official_releases/qt/5.9/5.9.0/submodules/qtwebeng...
+Source0: qtwebengine-opensource-src-%{version}-clean.tar.xz
# cleanup scripts used above
Source1: clean_qtwebengine.sh
Source2: clean_ffmpeg.sh
Source3: get_free_ffmpeg_source_files.py
# macros
Source10: macros.qt5-qtwebengine
-# webrtc: enable the CPU feature detection for ARM Linux also for Chromium
-Patch0: 0001-qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch
+# some tweaks to linux.pri (system libs, link libpci, run unbundling script)
+Patch0: qtwebengine-opensource-src-5.7.0-linux-pri.patch
+# quick hack to avoid checking for the nonexistent icudtl.dat and silence the
+# resulting warnings - not upstreamable as is because it removes the fallback
+# mechanism for the ICU data directory (which is not used in our builds because
+# we use the system ICU, which embeds the data statically) completely
+Patch1: qtwebengine-opensource-src-5.6.0-no-icudtl-dat.patch
+# fix extractCFlag to also look in QMAKE_CFLAGS_RELEASE, needed to detect the
+# ARM flags with our %%qmake_qt5 macro, including for the next patch
+Patch2: qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag.patch
+# disable NEON vector instructions on ARM where the NEON code FTBFS due to
+# GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495
+# otherwise, we use the arm-fpu-fix below instead (which this patch contains)
+Patch3: qtwebengine-opensource-src-5.7.1-no-neon.patch
# use the system NSPR prtime (based on Debian patch)
# We already depend on NSPR, so it is useless to copy these functions here.
# Debian uses this just fine, and I don't see relevant modifications either.
-Patch1: 0002-qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
+Patch4: qtwebengine-opensource-src-5.8.0-system-nspr-prtime.patch
# use the system ICU UTF functions
# We already depend on ICU, so it is useless to copy these functions here.
# I checked the history of that directory, and other than the renames I am
# undoing, there were no modifications at all. Must be applied after Patch5.
-Patch2: 0003-qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
+Patch5: qtwebengine-opensource-src-5.8.0-system-icu-utf.patch
# do not require SSE2 on i686
# cumulative revert of upstream reviews 187423002, 308003004, 511773002 (parts
# relevant to QtWebEngine only), 516543004, 1152053004 and 1161853008, along
# with some custom fixes and improvements
# also build V8 shared and twice on i686 (once for x87, once for SSE2)
# TODO: For 5.9, we will need the GN files updated (where not done yet), too.
-Patch3: 0004-qtwebengine-opensource-src-5.9.0-no-sse2.patch
+Patch6: qtwebengine-opensource-src-5.8.0-no-sse2.patch
+# fix ARM NEON handling in webrtc gyp files
+# Fix video_processing.gypi to only build NEON files when actually requested
+# (i.e., not if arm_neon=0 arm_neon_optional=0).
+Patch7: qtwebengine-opensource-src-5.7.0-webrtc-neon.patch
+# fix missing ARM -mfpu setting (see the comment in the no-neon patch above)
+Patch9: qtwebengine-opensource-src-5.7.1-arm-fpu-fix.patch
# remove Android dependencies from openmax_dl ARM NEON detection (detect.c)
-Patch4: 0005-qtwebengine-opensource-src-5.9.-openmax-dl-neon.patch
-# some tweaks to linux.pri (system libs, link libpci, run unbundling script)
-Patch5: 0006-qtwebengine-opensource-src-5.9.0-linux-pri.patch
-# quick hack to avoid checking for the nonexistent icudtl.dat and silence the
-# resulting warnings - not upstreamable as is because it removes the fallback
-# mechanism for the ICU data directory (which is not used in our builds because
-# we use the system ICU, which embeds the data statically) completely
-Patch6: 0007-qtwebengine-opensource-src-5.9.0-no-icudtl-dat.patch
+Patch10: qtwebengine-opensource-src-5.7.1-openmax-dl-neon.patch
+# chromium-skia: build SkUtilsArm.cpp also on non-Android ARM
+Patch11: qtwebengine-opensource-src-5.7.1-skia-neon.patch
+# webrtc: enable the CPU feature detection for ARM Linux also for Chromium
+Patch12: qtwebengine-opensource-src-5.8.0-webrtc-neon-detect.patch
+# fix FTBFS in V8 with GCC 7 (by Ben Noordhuis, backported from Chromium RPM)
+Patch13: qtwebengine-opensource-src-5.8.0-v8-gcc7.patch
+# fix FTBFS in PDFium with GCC 7: backport upstream cleanup removing that code
+# https://codereview.chromium.org/2154503002
+Patch14: qtwebengine-opensource-src-5.8.0-pdfium-gcc7.patch
+# fix FTBFS in the WTF part of Blink/WebKit with GCC 7
+Patch15: qtwebengine-opensource-src-5.8.0-wtf-gcc7.patch
+# FTBFS using qt < 5.8
+Patch20: qtwebengine-opensource-src-5.8.0-qt57.patch
+# upstream fix for blank pages when a link opens in a new tab
+Patch100: qtwebengine-opensource-src-5.8.0-fix-open-in-new-tab.patch
+# upstream fix for non-functional dead keys in text fields
+Patch101: qtwebengine-opensource-src-5.8.0-fix-dead-keys.patch
%if 0%{?fedora} && 0%{?fedora} < 25
# work around missing qt5_qtwebengine_arches macro on F24
@@ -312,16 +340,28 @@ BuildArch: noarch
%prep
-%setup -q -n %{qt_module}-opensource-src-%{version}
+%setup -q -n %{qt_module}-opensource-src-%{version}%{?prerelease:-%{prerelease}}
+%patch0 -p1 -b .linux-pri
+%patch1 -p1 -b .no-icudtl-dat
+%patch2 -p1 -b .fix-extractcflag
%if 0%{?arm_neon}
-%patch0 -p1 -b .webrtc-neon-detect
+%patch9 -p1 -b .arm-fpu-fix
+%else
+%patch3 -p1 -b .no-neon
%endif
-%patch1 -p1 -b .system-nspr-prtime
-%patch2 -p1 -b .system-icu-utf
-%patch3 -p1 -b .no-sse2
-%patch4 -p1 -b .openmax-dl-neon
-%patch5 -p1 -b .linux-pri
-%patch6 -p1 -b .no-icudtl
+%patch4 -p1 -b .system-nspr-prtime
+%patch5 -p1 -b .system-icu-utf
+%patch6 -p1 -b .no-sse2
+%patch7 -p1 -b .webrtc-neon
+%patch10 -p1 -b .openmax-dl-neon
+%patch11 -p1 -b .skia-neon
+%patch12 -p1 -b .webrtc-neon-detect
+%patch13 -p1 -b .v8-gcc7
+%patch14 -p1 -b .pdfium-gcc7
+%patch15 -p1 -b .wtf-gcc7
+%patch20 -p1 -b .qt57
+%patch100 -p1 -b .fix-open-in-new-tab
+%patch101 -p1 -b .fix-dead-keys
# fix // in #include in content/renderer/gpu to avoid debugedit failure
sed -i -e 's!gpu//!gpu/!g' \
src/3rdparty/chromium/content/renderer/gpu/compositor_forwarding_message_filter.cc
@@ -532,9 +572,6 @@ done
%changelog
-* Wed May 31 2017 Helio Chissini de Castro <helio(a)kde.org> - 5.9.0-1
-- Upstream official release
-
* Sat May 13 2017 Rex Dieter <rdieter(a)fedoraproject.org> - 5.8.0-14
- fix rpm macros
diff --git a/qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag.patch b/qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag.patch
new file mode 100644
index 0000000..8beae69
--- /dev/null
+++ b/qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag.patch
@@ -0,0 +1,12 @@
+diff -ur qtwebengine-opensource-src-5.6.0-beta/tools/qmake/mkspecs/features/functions.prf qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag/tools/qmake/mkspecs/features/functions.prf
+--- qtwebengine-opensource-src-5.6.0-beta/tools/qmake/mkspecs/features/functions.prf 2015-12-14 16:27:24.000000000 +0100
++++ qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag/tools/qmake/mkspecs/features/functions.prf 2016-01-10 18:15:23.942032985 +0100
+@@ -87,7 +87,7 @@
+ }
+
+ defineReplace(extractCFlag) {
+- CFLAGS = $$QMAKE_CC $$QMAKE_CFLAGS
++ CFLAGS = $$QMAKE_CC $$QMAKE_CFLAGS $$QMAKE_CFLAGS_RELEASE
+ OPTION = $$find(CFLAGS, $$1)
+ OPTION = $$split(OPTION, =)
+ return ($$member(OPTION, 1))
diff --git a/qtwebengine-opensource-src-5.6.0-no-icudtl-dat.patch b/qtwebengine-opensource-src-5.6.0-no-icudtl-dat.patch
new file mode 100644
index 0000000..00cbfc2
--- /dev/null
+++ b/qtwebengine-opensource-src-5.6.0-no-icudtl-dat.patch
@@ -0,0 +1,28 @@
+diff -ur qtwebengine-opensource-src-5.6.0/src/core/web_engine_library_info.cpp qtwebengine-opensource-src-5.6.0-no-icudtl-dat/src/core/web_engine_library_info.cpp
+--- qtwebengine-opensource-src-5.6.0/src/core/web_engine_library_info.cpp 2016-03-03 17:02:28.000000000 +0100
++++ qtwebengine-opensource-src-5.6.0-no-icudtl-dat/src/core/web_engine_library_info.cpp 2016-03-18 03:08:24.385444415 +0100
+@@ -207,24 +207,7 @@
+ #if defined(OS_MACOSX) && defined(QT_MAC_FRAMEWORK_BUILD)
+ return getResourcesPath(frameworkBundle());
+ #else
+- static bool initialized = false;
+ static QString potentialResourcesPath = QLibraryInfo::location(QLibraryInfo::DataPath) % QLatin1String("/resources");
+- if (!initialized) {
+- initialized = true;
+- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/icudtl.dat"))) {
+- qWarning("Qt WebEngine ICU data not found at %s. Trying parent directory...", qPrintable(potentialResourcesPath));
+- potentialResourcesPath = QLibraryInfo::location(QLibraryInfo::DataPath);
+- }
+- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/icudtl.dat"))) {
+- qWarning("Qt WebEngine ICU data not found at %s. Trying application directory...", qPrintable(potentialResourcesPath));
+- potentialResourcesPath = QCoreApplication::applicationDirPath();
+- }
+- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/icudtl.dat"))) {
+- qWarning("Qt WebEngine ICU data not found at %s. Trying fallback directory... The application MAY NOT work.", qPrintable(potentialResourcesPath));
+- potentialResourcesPath = fallbackDir();
+- }
+- }
+-
+ return potentialResourcesPath;
+ #endif
+ }
diff --git a/qtwebengine-opensource-src-5.7.0-linux-pri.patch b/qtwebengine-opensource-src-5.7.0-linux-pri.patch
new file mode 100644
index 0000000..321a1d7
--- /dev/null
+++ b/qtwebengine-opensource-src-5.7.0-linux-pri.patch
@@ -0,0 +1,26 @@
+diff -ur qtwebengine-opensource-src-5.7.0/src/core/config/linux.pri qtwebengine-opensource-src-5.7.0-linux-pri/src/core/config/linux.pri
+--- qtwebengine-opensource-src-5.7.0/src/core/config/linux.pri 2016-06-07 06:20:06.000000000 +0200
++++ qtwebengine-opensource-src-5.7.0-linux-pri/src/core/config/linux.pri 2016-07-17 22:18:17.312471202 +0200
+@@ -46,3 +46,22 @@
+ use?(system_icu): GYP_CONFIG += use_system_icu=1 icu_use_data_file_flag=0
+ use?(system_ffmpeg): GYP_CONFIG += use_system_ffmpeg=1
+ use?(system_protobuf): GYP_CONFIG += use_system_protobuf=1
++
++# some more system packages, that are not checked for for some reason
++GYP_CONFIG += use_system_re2=1
++
++# yasm is only used on x86, and passing use_system_yasm makes the build fail on
++# other architectures (e.g., ARM), so make it conditional on the architecture
++contains(QT_ARCH, "x86_64")|contains(QT_ARCH, "i386") {
++ GYP_CONFIG += use_system_yasm=1
++}
++
++# link libpci instead of dlopening it, our Qt packaging depends on it anyway
++GYP_CONFIG += linux_link_libpci=1
++
++# run the unbundling script Chromium provides
++CHROMIUM_SRC_DIR = "$$QTWEBENGINE_ROOT/$$getChromiumSrcDir()"
++R_G_F_PY = "$$CHROMIUM_SRC_DIR/build/linux/unbundle/replace_gyp_files.py"
++R_G_F_PY_ARGS = "-D use_system_re2=1"
++log("Running python $$R_G_F_PY $$R_G_F_PY_ARGS$${EOL}")
++!system("python $$R_G_F_PY $$R_G_F_PY_ARGS"): error("-- unbundling failed")
diff --git a/qtwebengine-opensource-src-5.7.1-openmax-dl-neon.patch b/qtwebengine-opensource-src-5.7.1-openmax-dl-neon.patch
new file mode 100644
index 0000000..08ff6e5
--- /dev/null
+++ b/qtwebengine-opensource-src-5.7.1-openmax-dl-neon.patch
@@ -0,0 +1,98 @@
+diff -ur qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp qtwebengine-opensource-src-5.7.1-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp
+--- qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp 2016-11-07 15:46:18.000000000 +0100
++++ qtwebengine-opensource-src-5.7.1-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp 2016-12-03 22:50:19.369158276 +0100
+@@ -219,15 +219,6 @@
+ 'conditions': [
+ ['arm_neon_optional==1', {
+ # Run-time NEON detection.
+- 'dependencies': [
+- '../../../build/android/ndk.gyp:cpu_features',
+- ],
+- 'link_settings' : {
+- 'libraries': [
+- # To get the __android_log_print routine
+- '-llog',
+- ],
+- },
+ 'sources': [
+ # Detection routine
+ 'sp/src/arm/detect.c',
+diff -ur qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c qtwebengine-opensource-src-5.7.1-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c
+--- qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c 2016-11-07 15:46:18.000000000 +0100
++++ qtwebengine-opensource-src-5.7.1-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c 2016-12-03 22:48:13.745095083 +0100
+@@ -9,13 +9,57 @@
+ *
+ */
+
+-#include <cpu-features.h>
+-
+-#include "android/log.h"
+ #include "dl/sp/api/omxSP.h"
+
++// For ArmCpuCaps()
++#include <stdio.h>
++#include <string.h>
++
++// based on libvpx arm_cpudetect.c
++static int ArmCpuCaps(const char* cpuinfo_name) {
++ char cpuinfo_line[512];
++ FILE* f = fopen(cpuinfo_name, "r");
++ if (!f) {
++ // Assume Neon if /proc/cpuinfo is unavailable.
++ // This will occur for Chrome sandbox for Pepper or Render process.
++ return 1;
++ }
++ while (fgets(cpuinfo_line, sizeof(cpuinfo_line) - 1, f)) {
++ if (memcmp(cpuinfo_line, "Features", 8) == 0) {
++ char* p = strstr(cpuinfo_line, " neon");
++ if (p && (p[5] == ' ' || p[5] == '\n')) {
++ fclose(f);
++ return 1;
++ }
++ // aarch64 uses asimd for Neon.
++ p = strstr(cpuinfo_line, " asimd");
++ if (p && (p[6] == ' ' || p[6] == '\n')) {
++ fclose(f);
++ return 1;
++ }
++ }
++ }
++ fclose(f);
++ return 0;
++}
++
+ int omxSP_HasArmNeon() {
+- return (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0;
++#if defined(__arm__) || defined(__aarch64__)
++// gcc -mfpu=neon defines __ARM_NEON__
++// __ARM_NEON__ generates code that requires Neon. NaCL also requires Neon.
++// For Linux, /proc/cpuinfo can be tested but without that assume Neon.
++#if defined(__ARM_NEON__) || defined(__native_client__) || !defined(__linux__)
++ return 1;
++// For aarch64(arm64), /proc/cpuinfo's feature is not complete, e.g. no neon
++// flag in it.
++// So for aarch64, neon enabling is hard coded here.
++#elif defined(__aarch64__)
++ return 1;
++#else
++ // Linux arm parse text file for neon detect.
++ return ArmCpuCaps("/proc/cpuinfo");
++#endif
++#endif // __arm__
+ }
+
+ static void SetFFTRoutines() {
+@@ -24,13 +68,9 @@
+ * forward and inverse FFTs
+ */
+ if (omxSP_HasArmNeon()) {
+- __android_log_print(ANDROID_LOG_INFO, "OpenMAX DL FFT",
+- "Using NEON FFT");
+ omxSP_FFTFwd_RToCCS_F32 = omxSP_FFTFwd_RToCCS_F32_Sfs;
+ omxSP_FFTInv_CCSToR_F32 = omxSP_FFTInv_CCSToR_F32_Sfs;
+ } else {
+- __android_log_print(ANDROID_LOG_INFO, "OpenMAX DL FFT",
+- "Using non-NEON FFT");
+ omxSP_FFTFwd_RToCCS_F32 = omxSP_FFTFwd_RToCCS_F32_Sfs_vfp;
+ omxSP_FFTInv_CCSToR_F32 = omxSP_FFTInv_CCSToR_F32_Sfs_vfp;
+ }
diff --git a/qtwebengine-opensource-src-5.7.1-skia-neon.patch b/qtwebengine-opensource-src-5.7.1-skia-neon.patch
new file mode 100644
index 0000000..c9b385b
--- /dev/null
+++ b/qtwebengine-opensource-src-5.7.1-skia-neon.patch
@@ -0,0 +1,15 @@
+diff -ur qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/skia/skia_library.gypi qtwebengine-opensource-src-5.7.1-skia-neon/src/3rdparty/chromium/skia/skia_library.gypi
+--- qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/skia/skia_library.gypi 2016-11-07 15:46:18.000000000 +0100
++++ qtwebengine-opensource-src-5.7.1-skia-neon/src/3rdparty/chromium/skia/skia_library.gypi 2016-12-04 14:34:12.531877529 +0100
+@@ -159,6 +159,11 @@
+ '../build/android/ndk.gyp:cpu_features',
+ ],
+ }],
++ [ 'OS != "android" and target_arch == "arm"', {
++ 'sources': [
++ '../third_party/skia/src/core/SkUtilsArm.cpp',
++ ],
++ }],
+ [ 'desktop_linux == 1 or chromeos == 1 or qt_os=="embedded_linux"', {
+ 'dependencies': [
+ '../build/linux/system.gyp:fontconfig',
diff --git a/qtwebengine-opensource-src-5.8.0-fix-dead-keys.patch b/qtwebengine-opensource-src-5.8.0-fix-dead-keys.patch
new file mode 100644
index 0000000..a0cf81c
--- /dev/null
+++ b/qtwebengine-opensource-src-5.8.0-fix-dead-keys.patch
@@ -0,0 +1,40 @@
+From 31374ba98829e984c7600419c0e5fa71b96fc530 Mon Sep 17 00:00:00 2001
+From: Peter Varga <pvarga(a)inf.u-szeged.hu>
+Date: Fri, 24 Mar 2017 14:31:02 +0100
+Subject: Forward input method events to RWHV in widget
+
+Task-number: QTBUG-58362
+Change-Id: Id4cf57c60da17538b224bb9bc91277c324c6a55d
+Reviewed-by: Viktor Engelmann <viktor.engelmann(a)qt.io>
+Reviewed-by: Allan Sandfeld Jensen <allan.jensen(a)qt.io>
+---
+ .../render_widget_host_view_qt_delegate_widget.cpp | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
+index 14c4d72..fd58a07 100644
+--- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
++++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
+@@ -84,10 +84,19 @@ protected:
+ {
+ m_client->forwardEvent(event);
+ }
++ void inputMethodEvent(QInputMethodEvent *event) override
++ {
++ m_client->forwardEvent(event);
++ }
+ QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override
+ {
+ return m_client->updatePaintNode(oldNode);
+ }
++
++ QVariant inputMethodQuery(Qt::InputMethodQuery query) const override
++ {
++ return m_client->inputMethodQuery(query);
++ }
+ private:
+ RenderWidgetHostViewQtDelegateClient *m_client;
+ };
+--
+cgit v1.0-4-g1e03
+
diff --git a/qtwebengine-opensource-src-5.8.0-fix-open-in-new-tab.patch b/qtwebengine-opensource-src-5.8.0-fix-open-in-new-tab.patch
new file mode 100644
index 0000000..c95a712
--- /dev/null
+++ b/qtwebengine-opensource-src-5.8.0-fix-open-in-new-tab.patch
@@ -0,0 +1,46 @@
+From 8e147ed3be7740092de233a2a7c67ec890069649 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Michael=20Br=C3=BCning?= <michael.bruning(a)qt.io>
+Date: Mon, 13 Mar 2017 11:13:56 +0100
+Subject: Remove stale parent connection when initializing delegate as a child
+
+When clicking on a blank link target, the constructor of the
+RenderWidgetHostViewQtDelegateWidget instance for the newly created
+view is called with the originating QWebEngineView as its parent
+and will connect its removeParentBeforeParentDelete slot to the
+originating view's destroyed signal.
+
+This leads to the situation where the delegate's parent will be set to
+null when the originating view is closed, causing the view to display
+only an empty widget with the actual web contents remaining live in
+the background.
+
+This patch removes the connection to the old view when initializing
+the delegate as a child of the QWebEnginePagePrivate instance. The
+addition to the layout updates the parent and child relationship
+between the view and the delegate internally.
+
+Task-number: QTBUG-58381
+Change-Id: I448380478c2bcfcfbddaee8a35caf46010e57972
+Reviewed-by: Florian Bruhin <qt-project.org(a)the-compiler.org>
+Reviewed-by: Joerg Bornemann <joerg.bornemann(a)qt.io>
+---
+ src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
+index e7ad5b1..14c4d72 100644
+--- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
++++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
+@@ -163,6 +163,9 @@ void RenderWidgetHostViewQtDelegateWidget::initAsChild(WebContentsAdapterClient*
+
+ QWebEnginePagePrivate *pagePrivate = static_cast<QWebEnginePagePrivate *>(container);
+ if (pagePrivate->view) {
++ if (parentWidget())
++ disconnect(parentWidget(), &QObject::destroyed,
++ this, &RenderWidgetHostViewQtDelegateWidget::removeParentBeforeParentDelete);
+ pagePrivate->view->layout()->addWidget(this);
+ pagePrivate->view->setFocusProxy(this);
+ show();
+--
+cgit v1.0-4-g1e03
+
diff --git a/qtwebengine-opensource-src-5.8.0-no-sse2.patch b/qtwebengine-opensource-src-5.8.0-no-sse2.patch
new file mode 100644
index 0000000..ee15329
--- /dev/null
+++ b/qtwebengine-opensource-src-5.8.0-no-sse2.patch
@@ -0,0 +1,5311 @@
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/breakpad/src/build/common.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/breakpad/src/build/common.gypi
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/breakpad/src/build/common.gypi 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/breakpad/src/build/common.gypi 2017-03-05 17:26:14.507159420 +0100
+@@ -80,8 +80,8 @@
+ # The system root for cross-compiles. Default: none.
+ 'sysroot%': '',
+
+- # On Linux, we build with sse2 for Chromium builds.
+- 'disable_sse2%': 0,
++ # Do not assume SSE2 by default (Fedora patch).
++ 'disable_sse2%': 1
+ },
+
+ 'target_arch%': '<(target_arch)',
+@@ -725,17 +725,13 @@
+ 'conditions': [
+ ['disable_sse2==0', {
+ 'cflags': [
+- '-march=pentium4',
+ '-msse2',
+ '-mfpmath=sse',
+ ],
+ }],
+ ],
+- # -mmmx allows mmintrin.h to be used for mmx intrinsics.
+- # video playback is mmx and sse2 optimized.
+ 'cflags': [
+ '-m32',
+- '-mmmx',
+ ],
+ 'ldflags': [
+ '-m32',
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/build/common.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/build/common.gypi
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/build/common.gypi 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/build/common.gypi 2017-03-05 17:26:14.612157862 +0100
+@@ -3861,15 +3861,7 @@
+ # value used during computation does not change depending on
+ # how the compiler optimized the code, since the value is
+ # always kept in its specified precision.
+- #
+- # Refer to http://crbug.com/348761 for rationale behind SSE2
+- # being a minimum requirement for 32-bit Linux builds and
+- # http://crbug.com/313032 for an example where this has "bit"
+- # us in the past.
+ 'cflags': [
+- '-msse2',
+- '-mfpmath=sse',
+- '-mmmx', # Allows mmintrin.h for MMX intrinsics.
+ '-m32',
+ ],
+ 'ldflags': [
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/cc/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/cc/BUILD.gn
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/cc/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/cc/BUILD.gn 2017-03-05 17:38:41.416050535 +0100
+@@ -537,13 +537,6 @@
+ "trees/tree_synchronizer.h",
+ ]
+
+- if (current_cpu == "x86" || current_cpu == "x64") {
+- sources += [
+- "raster/texture_compressor_etc1_sse.cc",
+- "raster/texture_compressor_etc1_sse.h",
+- ]
+- }
+-
+ configs += [ "//build/config:precompiled_headers" ]
+
+ public_deps = [
+@@ -553,6 +546,7 @@
+ deps = [
+ "//base",
+ "//base/third_party/dynamic_annotations",
++ "//cc:cc_opts",
+ "//cc/proto",
+ "//cc/surfaces:surface_id",
+ "//gpu",
+@@ -581,6 +575,36 @@
+ }
+ }
+
++source_set("cc_opts") {
++ public_deps = [
++ "//cc:cc_opts_sse",
++ ]
++}
++
++source_set("cc_opts_sse") {
++ if (current_cpu == "x86" || current_cpu == "x64") {
++ deps = [
++ "//base",
++ ]
++
++ defines = [ "CC_IMPLEMENTATION=1" ]
++
++ if (!is_debug && (is_win || is_android)) {
++ configs -= [ "//build/config/compiler:optimize" ]
++ configs += [ "//build/config/compiler:optimize_max" ]
++ }
++
++ sources = [
++ "raster/texture_compressor.h",
++ "raster/texture_compressor_etc1.h",
++ "raster/texture_compressor_etc1_sse.cc",
++ "raster/texture_compressor_etc1_sse.h",
++ ]
++
++ cflags = [ "-msse2" ]
++ }
++}
++
+ source_set("test_support") {
+ testonly = true
+ sources = [
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/cc/cc.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/cc/cc.gyp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/cc/cc.gyp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/cc/cc.gyp 2017-03-05 17:26:26.081987615 +0100
+@@ -602,14 +602,6 @@
+ 'includes': [
+ '../build/android/increase_size_for_speed.gypi',
+ ],
+- 'conditions': [
+- ['target_arch == "ia32" or target_arch == "x64"', {
+- 'sources': [
+- 'raster/texture_compressor_etc1_sse.cc',
+- 'raster/texture_compressor_etc1_sse.h',
+- ],
+- }],
+- ],
+ },
+ {
+ # GN version: "//cc/proto"
+@@ -678,6 +670,7 @@
+ '<(DEPTH)/ui/events/events.gyp:events_base',
+ '<(DEPTH)/ui/gfx/gfx.gyp:gfx',
+ '<(DEPTH)/ui/gfx/gfx.gyp:gfx_geometry',
++ 'cc_opts',
+ ],
+ 'defines': [
+ 'CC_SURFACES_IMPLEMENTATION=1',
+@@ -714,5 +707,41 @@
+ '../build/android/increase_size_for_speed.gypi',
+ ],
+ },
++ {
++ 'target_name': 'cc_opts',
++ 'type': 'static_library',
++ 'conditions': [
++ ['target_arch == "ia32" or target_arch == "x64"', {
++ 'defines': [
++ 'CC_IMPLEMENTATION=1',
++ ],
++ 'dependencies': [
++ 'cc_opts_sse',
++ ]
++ }],
++ ],
++ },
++ {
++ 'target_name': 'cc_opts_sse',
++ 'type': 'static_library',
++ 'dependencies': [
++ '<(DEPTH)/base/base.gyp:base',
++ ],
++ 'conditions': [
++ ['target_arch == "ia32" or target_arch == "x64"', {
++ 'defines': [
++ 'CC_IMPLEMENTATION=1',
++ ],
++ 'sources': [
++ # Conditional compilation for SSE2 code on x86 and x64 machines
++ 'raster/texture_compressor_etc1_sse.cc',
++ 'raster/texture_compressor_etc1_sse.h',
++ ],
++ 'cflags': [
++ '-msse2',
++ ],
++ }],
++ ],
++ },
+ ],
+ }
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/BUILD.gn
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/BUILD.gn 2017-03-05 17:26:26.082987600 +0100
+@@ -312,13 +312,13 @@
+ }
+
+ if (current_cpu == "x86" || current_cpu == "x64") {
+- sources += [
+- "simd/convert_rgb_to_yuv_sse2.cc",
+- "simd/convert_rgb_to_yuv_ssse3.cc",
+- "simd/convert_yuv_to_rgb_x86.cc",
+- "simd/filter_yuv_sse2.cc",
++ sources += [ "simd/convert_yuv_to_rgb_x86.cc" ]
++ deps += [
++ ":media_yasm",
++ ":media_mmx",
++ ":media_sse",
++ ":media_sse2",
+ ]
+- deps += [ ":media_yasm" ]
+ }
+
+ if (is_linux || is_win) {
+@@ -534,10 +534,47 @@
+ }
+
+ if (current_cpu == "x86" || current_cpu == "x64") {
++ source_set("media_mmx") {
++ sources = [ "simd/filter_yuv_mmx.cc" ]
++ configs += [ "//media:media_config" ]
++ if (!is_win) {
++ cflags = [ "-mmmx" ]
++ }
++ }
++
++ source_set("media_sse") {
++ sources = [
++ "simd/sinc_resampler_sse.cc",
++ ]
++ configs += [
++ "//media:media_config",
++ "//media:media_implementation",
++ ]
++ if (!is_win) {
++ cflags = [ "-msse" ]
++ }
++ }
++
++ source_set("media_sse2") {
++ sources = [
++ "simd/convert_rgb_to_yuv_sse2.cc",
++ "simd/convert_rgb_to_yuv_ssse3.cc",
++ "simd/filter_yuv_sse2.cc",
++ ]
++ configs += [
++ "//media:media_config",
++ "//media:media_implementation",
++ ]
++ if (!is_win) {
++ cflags = [ "-msse2" ]
++ }
++ }
++
+ import("//third_party/yasm/yasm_assemble.gni")
+ yasm_assemble("media_yasm") {
+ sources = [
+ "simd/convert_rgb_to_yuv_ssse3.asm",
++ "simd/convert_yuv_to_rgb_mmx.asm",
+ "simd/convert_yuv_to_rgb_sse.asm",
+ "simd/convert_yuva_to_argb_mmx.asm",
+ "simd/empty_register_state_mmx.asm",
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/media.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/media.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/media.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/media.cc 2017-03-05 17:44:02.063267153 +0100
+@@ -10,6 +10,8 @@
+ #include "base/metrics/field_trial.h"
+ #include "base/trace_event/trace_event.h"
+ #include "media/base/media_switches.h"
++#include "media/base/sinc_resampler.h"
++#include "media/base/vector_math.h"
+ #include "media/base/yuv_convert.h"
+
+ #if defined(OS_ANDROID)
+@@ -40,6 +42,8 @@
+ TRACE_EVENT_WARMUP_CATEGORY("media");
+
+ // Perform initialization of libraries which require runtime CPU detection.
++ vector_math::Initialize();
++ SincResampler::InitializeCPUSpecificFeatures();
+ InitializeCPUSpecificYUVConversions();
+
+ #if !defined(MEDIA_DISABLE_FFMPEG)
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h 2017-03-05 17:26:26.083987585 +0100
+@@ -65,6 +65,17 @@
+ int rgbstride,
+ YUVType yuv_type);
+
++MEDIA_EXPORT void ConvertYUVToRGB32_MMX(const uint8_t* yplane,
++ const uint8_t* uplane,
++ const uint8_t* vplane,
++ uint8_t* rgbframe,
++ int width,
++ int height,
++ int ystride,
++ int uvstride,
++ int rgbstride,
++ YUVType yuv_type);
++
+ MEDIA_EXPORT void ConvertYUVAToARGB_MMX(const uint8_t* yplane,
+ const uint8_t* uplane,
+ const uint8_t* vplane,
+@@ -124,6 +135,13 @@
+ ptrdiff_t width,
+ const int16_t* convert_table);
+
++MEDIA_EXPORT void ConvertYUVToRGB32Row_MMX(const uint8_t* yplane,
++ const uint8_t* uplane,
++ const uint8_t* vplane,
++ uint8_t* rgbframe,
++ ptrdiff_t width,
++ const int16_t* convert_table);
++
+ MEDIA_EXPORT void ConvertYUVToRGB32Row_SSE(const uint8_t* yplane,
+ const uint8_t* uplane,
+ const uint8_t* vplane,
+@@ -131,6 +149,14 @@
+ ptrdiff_t width,
+ const int16_t* convert_table);
+
++MEDIA_EXPORT void ScaleYUVToRGB32Row_MMX(const uint8_t* y_buf,
++ const uint8_t* u_buf,
++ const uint8_t* v_buf,
++ uint8_t* rgb_buf,
++ ptrdiff_t width,
++ ptrdiff_t source_dx,
++ const int16_t* convert_table);
++
+ MEDIA_EXPORT void ScaleYUVToRGB32Row_SSE(const uint8_t* y_buf,
+ const uint8_t* u_buf,
+ const uint8_t* v_buf,
+@@ -147,6 +173,14 @@
+ ptrdiff_t source_dx,
+ const int16_t* convert_table);
+
++MEDIA_EXPORT void LinearScaleYUVToRGB32Row_MMX(const uint8_t* y_buf,
++ const uint8_t* u_buf,
++ const uint8_t* v_buf,
++ uint8_t* rgb_buf,
++ ptrdiff_t width,
++ ptrdiff_t source_dx,
++ const int16_t* convert_table);
++
+ MEDIA_EXPORT void LinearScaleYUVToRGB32Row_SSE(const uint8_t* y_buf,
+ const uint8_t* u_buf,
+ const uint8_t* v_buf,
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm 2017-03-05 17:26:26.167986340 +0100
+@@ -0,0 +1,23 @@
++; Copyright (c) 2011 The Chromium Authors. All rights reserved.
++; Use of this source code is governed by a BSD-style license that can be
++; found in the LICENSE file.
++
++%include "third_party/x86inc/x86inc.asm"
++
++;
++; This file uses MMX instructions.
++;
++ SECTION_TEXT
++ CPU MMX
++
++; Use movq to save the output.
++%define MOVQ movq
++
++; extern "C" void ConvertYUVToRGB32Row_MMX(const uint8* y_buf,
++; const uint8* u_buf,
++; const uint8* v_buf,
++; uint8* rgb_buf,
++; ptrdiff_t width,
++; const int16* convert_table);
++%define SYMBOL ConvertYUVToRGB32Row_MMX
++%include "convert_yuv_to_rgb_mmx.inc"
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc 2017-03-05 17:26:26.167986340 +0100
+@@ -47,6 +47,34 @@
+ EmptyRegisterState();
+ }
+
++void ConvertYUVToRGB32_MMX(const uint8_t* yplane,
++ const uint8_t* uplane,
++ const uint8_t* vplane,
++ uint8_t* rgbframe,
++ int width,
++ int height,
++ int ystride,
++ int uvstride,
++ int rgbstride,
++ YUVType yuv_type) {
++ unsigned int y_shift = GetVerticalShift(yuv_type);
++ for (int y = 0; y < height; ++y) {
++ uint8_t* rgb_row = rgbframe + y * rgbstride;
++ const uint8_t* y_ptr = yplane + y * ystride;
++ const uint8_t* u_ptr = uplane + (y >> y_shift) * uvstride;
++ const uint8_t* v_ptr = vplane + (y >> y_shift) * uvstride;
++
++ ConvertYUVToRGB32Row_MMX(y_ptr,
++ u_ptr,
++ v_ptr,
++ rgb_row,
++ width,
++ GetLookupTable(yuv_type));
++ }
++
++ EmptyRegisterState();
++}
++
+ void ConvertYUVToRGB32_SSE(const uint8_t* yplane,
+ const uint8_t* uplane,
+ const uint8_t* vplane,
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/filter_yuv.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/filter_yuv.h
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/filter_yuv.h 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/filter_yuv.h 2017-03-05 17:26:26.167986340 +0100
+@@ -20,6 +20,12 @@
+ int source_width,
+ uint8_t source_y_fraction);
+
++MEDIA_EXPORT void FilterYUVRows_MMX(uint8_t* ybuf,
++ const uint8_t* y0_ptr,
++ const uint8_t* y1_ptr,
++ int source_width,
++ uint8_t source_y_fraction);
++
+ MEDIA_EXPORT void FilterYUVRows_SSE2(uint8_t* ybuf,
+ const uint8_t* y0_ptr,
+ const uint8_t* y1_ptr,
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc 2017-03-05 17:26:26.167986340 +0100
+@@ -0,0 +1,79 @@
++// Copyright (c) 2011 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#if defined(_MSC_VER)
++#include <intrin.h>
++#else
++#include <mmintrin.h>
++#endif
++
++#include "build/build_config.h"
++#include "media/base/simd/filter_yuv.h"
++
++namespace media {
++
++#if defined(COMPILER_MSVC)
++// Warning 4799 is about calling emms before the function exits.
++// We calls emms in a frame level so suppress this warning.
++#pragma warning(push)
++#pragma warning(disable: 4799)
++#endif
++
++void FilterYUVRows_MMX(uint8_t* dest,
++ const uint8_t* src0,
++ const uint8_t* src1,
++ int width,
++ uint8_t fraction) {
++ int pixel = 0;
++
++ // Process the unaligned bytes first.
++ int unaligned_width =
++ (8 - (reinterpret_cast<uintptr_t>(dest) & 7)) & 7;
++ while (pixel < width && pixel < unaligned_width) {
++ dest[pixel] = (src0[pixel] * (256 - fraction) +
++ src1[pixel] * fraction) >> 8;
++ ++pixel;
++ }
++
++ __m64 zero = _mm_setzero_si64();
++ __m64 src1_fraction = _mm_set1_pi16(fraction);
++ __m64 src0_fraction = _mm_set1_pi16(256 - fraction);
++ const __m64* src0_64 = reinterpret_cast<const __m64*>(src0 + pixel);
++ const __m64* src1_64 = reinterpret_cast<const __m64*>(src1 + pixel);
++ __m64* dest64 = reinterpret_cast<__m64*>(dest + pixel);
++ __m64* end64 = reinterpret_cast<__m64*>(
++ reinterpret_cast<uintptr_t>(dest + width) & ~7);
++
++ while (dest64 < end64) {
++ __m64 src0 = *src0_64++;
++ __m64 src1 = *src1_64++;
++ __m64 src2 = _mm_unpackhi_pi8(src0, zero);
++ __m64 src3 = _mm_unpackhi_pi8(src1, zero);
++ src0 = _mm_unpacklo_pi8(src0, zero);
++ src1 = _mm_unpacklo_pi8(src1, zero);
++ src0 = _mm_mullo_pi16(src0, src0_fraction);
++ src1 = _mm_mullo_pi16(src1, src1_fraction);
++ src2 = _mm_mullo_pi16(src2, src0_fraction);
++ src3 = _mm_mullo_pi16(src3, src1_fraction);
++ src0 = _mm_add_pi16(src0, src1);
++ src2 = _mm_add_pi16(src2, src3);
++ src0 = _mm_srli_pi16(src0, 8);
++ src2 = _mm_srli_pi16(src2, 8);
++ src0 = _mm_packs_pu16(src0, src2);
++ *dest64++ = src0;
++ pixel += 8;
++ }
++
++ while (pixel < width) {
++ dest[pixel] = (src0[pixel] * (256 - fraction) +
++ src1[pixel] * fraction) >> 8;
++ ++pixel;
++ }
++}
++
++#if defined(COMPILER_MSVC)
++#pragma warning(pop)
++#endif
++
++} // namespace media
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc 2017-03-05 17:26:26.168986325 +0100
+@@ -0,0 +1,50 @@
++// Copyright 2013 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "media/base/sinc_resampler.h"
++
++#include <xmmintrin.h>
++
++namespace media {
++
++float SincResampler::Convolve_SSE(const float* input_ptr, const float* k1,
++ const float* k2,
++ double kernel_interpolation_factor) {
++ __m128 m_input;
++ __m128 m_sums1 = _mm_setzero_ps();
++ __m128 m_sums2 = _mm_setzero_ps();
++
++ // Based on |input_ptr| alignment, we need to use loadu or load. Unrolling
++ // these loops hurt performance in local testing.
++ if (reinterpret_cast<uintptr_t>(input_ptr) & 0x0F) {
++ for (int i = 0; i < kKernelSize; i += 4) {
++ m_input = _mm_loadu_ps(input_ptr + i);
++ m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
++ m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
++ }
++ } else {
++ for (int i = 0; i < kKernelSize; i += 4) {
++ m_input = _mm_load_ps(input_ptr + i);
++ m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
++ m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
++ }
++ }
++
++ // Linearly interpolate the two "convolutions".
++ m_sums1 = _mm_mul_ps(m_sums1, _mm_set_ps1(
++ static_cast<float>(1.0 - kernel_interpolation_factor)));
++ m_sums2 = _mm_mul_ps(m_sums2, _mm_set_ps1(
++ static_cast<float>(kernel_interpolation_factor)));
++ m_sums1 = _mm_add_ps(m_sums1, m_sums2);
++
++ // Sum components together.
++ float result;
++ m_sums2 = _mm_add_ps(_mm_movehl_ps(m_sums1, m_sums1), m_sums1);
++ _mm_store_ss(&result, _mm_add_ss(m_sums2, _mm_shuffle_ps(
++ m_sums2, m_sums2, 1)));
++
++ return result;
++}
++
++} // namespace media
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc 2017-03-05 17:26:26.168986325 +0100
+@@ -0,0 +1,118 @@
++// Copyright 2013 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "media/base/vector_math_testing.h"
++
++#include <algorithm>
++
++#include <xmmintrin.h> // NOLINT
++
++namespace media {
++namespace vector_math {
++
++void FMUL_SSE(const float src[], float scale, int len, float dest[]) {
++ const int rem = len % 4;
++ const int last_index = len - rem;
++ __m128 m_scale = _mm_set_ps1(scale);
++ for (int i = 0; i < last_index; i += 4)
++ _mm_store_ps(dest + i, _mm_mul_ps(_mm_load_ps(src + i), m_scale));
++
++ // Handle any remaining values that wouldn't fit in an SSE pass.
++ for (int i = last_index; i < len; ++i)
++ dest[i] = src[i] * scale;
++}
++
++void FMAC_SSE(const float src[], float scale, int len, float dest[]) {
++ const int rem = len % 4;
++ const int last_index = len - rem;
++ __m128 m_scale = _mm_set_ps1(scale);
++ for (int i = 0; i < last_index; i += 4) {
++ _mm_store_ps(dest + i, _mm_add_ps(_mm_load_ps(dest + i),
++ _mm_mul_ps(_mm_load_ps(src + i), m_scale)));
++ }
++
++ // Handle any remaining values that wouldn't fit in an SSE pass.
++ for (int i = last_index; i < len; ++i)
++ dest[i] += src[i] * scale;
++}
++
++// Convenience macro to extract float 0 through 3 from the vector |a|. This is
++// needed because compilers other than clang don't support access via
++// operator[]().
++#define EXTRACT_FLOAT(a, i) \
++ (i == 0 ? \
++ _mm_cvtss_f32(a) : \
++ _mm_cvtss_f32(_mm_shuffle_ps(a, a, i)))
++
++std::pair<float, float> EWMAAndMaxPower_SSE(
++ float initial_value, const float src[], int len, float smoothing_factor) {
++ // When the recurrence is unrolled, we see that we can split it into 4
++ // separate lanes of evaluation:
++ //
++ // y[n] = a(S[n]^2) + (1-a)(y[n-1])
++ // = a(S[n]^2) + (1-a)^1(aS[n-1]^2) + (1-a)^2(aS[n-2]^2) + ...
++ // = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
++ //
++ // where z[n] = a(S[n]^2) + (1-a)^4(z[n-4]) + (1-a)^8(z[n-8]) + ...
++ //
++ // Thus, the strategy here is to compute z[n], z[n-1], z[n-2], and z[n-3] in
++ // each of the 4 lanes, and then combine them to give y[n].
++
++ const int rem = len % 4;
++ const int last_index = len - rem;
++
++ const __m128 smoothing_factor_x4 = _mm_set_ps1(smoothing_factor);
++ const float weight_prev = 1.0f - smoothing_factor;
++ const __m128 weight_prev_x4 = _mm_set_ps1(weight_prev);
++ const __m128 weight_prev_squared_x4 =
++ _mm_mul_ps(weight_prev_x4, weight_prev_x4);
++ const __m128 weight_prev_4th_x4 =
++ _mm_mul_ps(weight_prev_squared_x4, weight_prev_squared_x4);
++
++ // Compute z[n], z[n-1], z[n-2], and z[n-3] in parallel in lanes 3, 2, 1 and
++ // 0, respectively.
++ __m128 max_x4 = _mm_setzero_ps();
++ __m128 ewma_x4 = _mm_setr_ps(0.0f, 0.0f, 0.0f, initial_value);
++ int i;
++ for (i = 0; i < last_index; i += 4) {
++ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_4th_x4);
++ const __m128 sample_x4 = _mm_load_ps(src + i);
++ const __m128 sample_squared_x4 = _mm_mul_ps(sample_x4, sample_x4);
++ max_x4 = _mm_max_ps(max_x4, sample_squared_x4);
++ // Note: The compiler optimizes this to a single multiply-and-accumulate
++ // instruction:
++ ewma_x4 = _mm_add_ps(ewma_x4,
++ _mm_mul_ps(sample_squared_x4, smoothing_factor_x4));
++ }
++
++ // y[n] = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
++ float ewma = EXTRACT_FLOAT(ewma_x4, 3);
++ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
++ ewma += EXTRACT_FLOAT(ewma_x4, 2);
++ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
++ ewma += EXTRACT_FLOAT(ewma_x4, 1);
++ ewma_x4 = _mm_mul_ss(ewma_x4, weight_prev_x4);
++ ewma += EXTRACT_FLOAT(ewma_x4, 0);
++
++ // Fold the maximums together to get the overall maximum.
++ max_x4 = _mm_max_ps(max_x4,
++ _mm_shuffle_ps(max_x4, max_x4, _MM_SHUFFLE(3, 3, 1, 1)));
++ max_x4 = _mm_max_ss(max_x4, _mm_shuffle_ps(max_x4, max_x4, 2));
++
++ std::pair<float, float> result(ewma, EXTRACT_FLOAT(max_x4, 0));
++
++ // Handle remaining values at the end of |src|.
++ for (; i < len; ++i) {
++ result.first *= weight_prev;
++ const float sample = src[i];
++ const float sample_squared = sample * sample;
++ result.first += sample_squared * smoothing_factor;
++ result.second = std::max(result.second, sample_squared);
++ }
++
++ return result;
++}
++
++} // namespace vector_math
++} // namespace media
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler.cc 2017-03-05 17:26:26.168986325 +0100
+@@ -81,17 +81,12 @@
+ #include <cmath>
+ #include <limits>
+
++#include "base/cpu.h"
+ #include "base/logging.h"
+ #include "build/build_config.h"
+
+-#if defined(ARCH_CPU_X86_FAMILY)
+-#include <xmmintrin.h>
+-#define CONVOLVE_FUNC Convolve_SSE
+-#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
++#if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
+ #include <arm_neon.h>
+-#define CONVOLVE_FUNC Convolve_NEON
+-#else
+-#define CONVOLVE_FUNC Convolve_C
+ #endif
+
+ namespace media {
+@@ -112,10 +107,41 @@
+ return sinc_scale_factor;
+ }
+
++#undef CONVOLVE_FUNC
++
+ static int CalculateChunkSize(int block_size_, double io_ratio) {
+ return block_size_ / io_ratio;
+ }
+
++// If we know the minimum architecture at compile time, avoid CPU detection.
++// Force NaCl code to use C routines since (at present) nothing there uses these
++// methods and plumbing the -msse built library is non-trivial.
++#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
++#if defined(__SSE__)
++#define CONVOLVE_FUNC Convolve_SSE
++void SincResampler::InitializeCPUSpecificFeatures() {}
++#else
++// X86 CPU detection required. Functions will be set by
++// InitializeCPUSpecificFeatures().
++#define CONVOLVE_FUNC g_convolve_proc_
++
++typedef float (*ConvolveProc)(const float*, const float*, const float*, double);
++static ConvolveProc g_convolve_proc_ = NULL;
++
++void SincResampler::InitializeCPUSpecificFeatures() {
++ CHECK(!g_convolve_proc_);
++ g_convolve_proc_ = base::CPU().has_sse() ? Convolve_SSE : Convolve_C;
++}
++#endif
++#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
++#define CONVOLVE_FUNC Convolve_NEON
++void SincResampler::InitializeCPUSpecificFeatures() {}
++#else
++// Unknown architecture.
++#define CONVOLVE_FUNC Convolve_C
++void SincResampler::InitializeCPUSpecificFeatures() {}
++#endif
++
+ SincResampler::SincResampler(double io_sample_rate_ratio,
+ int request_frames,
+ const ReadCB& read_cb)
+@@ -343,46 +369,7 @@
+ kernel_interpolation_factor * sum2);
+ }
+
+-#if defined(ARCH_CPU_X86_FAMILY)
+-float SincResampler::Convolve_SSE(const float* input_ptr, const float* k1,
+- const float* k2,
+- double kernel_interpolation_factor) {
+- __m128 m_input;
+- __m128 m_sums1 = _mm_setzero_ps();
+- __m128 m_sums2 = _mm_setzero_ps();
+-
+- // Based on |input_ptr| alignment, we need to use loadu or load. Unrolling
+- // these loops hurt performance in local testing.
+- if (reinterpret_cast<uintptr_t>(input_ptr) & 0x0F) {
+- for (int i = 0; i < kKernelSize; i += 4) {
+- m_input = _mm_loadu_ps(input_ptr + i);
+- m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
+- m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
+- }
+- } else {
+- for (int i = 0; i < kKernelSize; i += 4) {
+- m_input = _mm_load_ps(input_ptr + i);
+- m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
+- m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
+- }
+- }
+-
+- // Linearly interpolate the two "convolutions".
+- m_sums1 = _mm_mul_ps(m_sums1, _mm_set_ps1(
+- static_cast<float>(1.0 - kernel_interpolation_factor)));
+- m_sums2 = _mm_mul_ps(m_sums2, _mm_set_ps1(
+- static_cast<float>(kernel_interpolation_factor)));
+- m_sums1 = _mm_add_ps(m_sums1, m_sums2);
+-
+- // Sum components together.
+- float result;
+- m_sums2 = _mm_add_ps(_mm_movehl_ps(m_sums1, m_sums1), m_sums1);
+- _mm_store_ss(&result, _mm_add_ss(m_sums2, _mm_shuffle_ps(
+- m_sums2, m_sums2, 1)));
+-
+- return result;
+-}
+-#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
++#if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
+ float SincResampler::Convolve_NEON(const float* input_ptr, const float* k1,
+ const float* k2,
+ double kernel_interpolation_factor) {
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler.h
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler.h 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler.h 2017-03-05 17:26:26.169986310 +0100
+@@ -36,6 +36,10 @@
+ kKernelStorageSize = kKernelSize * (kKernelOffsetCount + 1),
+ };
+
++ // Selects runtime specific CPU features like SSE. Must be called before
++ // using SincResampler.
++ static void InitializeCPUSpecificFeatures();
++
+ // Callback type for providing more data into the resampler. Expects |frames|
+ // of data to be rendered into |destination|; zero padded if not enough frames
+ // are available to satisfy the request.
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc 2017-03-05 17:26:26.169986310 +0100
+@@ -4,6 +4,7 @@
+
+ #include "base/bind.h"
+ #include "base/bind_helpers.h"
++#include "base/cpu.h"
+ #include "base/time/time.h"
+ #include "build/build_config.h"
+ #include "media/base/sinc_resampler.h"
+@@ -61,6 +62,9 @@
+ &resampler, SincResampler::Convolve_C, true, "unoptimized_aligned");
+
+ #if defined(CONVOLVE_FUNC)
++#if defined(ARCH_CPU_X86_FAMILY)
++ ASSERT_TRUE(base::CPU().has_sse());
++#endif
+ RunConvolveBenchmark(
+ &resampler, SincResampler::CONVOLVE_FUNC, true, "optimized_aligned");
+ RunConvolveBenchmark(
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc 2017-03-05 17:26:26.169986310 +0100
+@@ -10,6 +10,7 @@
+
+ #include "base/bind.h"
+ #include "base/bind_helpers.h"
++#include "base/cpu.h"
+ #include "base/macros.h"
+ #include "base/strings/string_number_conversions.h"
+ #include "base/time/time.h"
+@@ -166,6 +167,10 @@
+ static const double kKernelInterpolationFactor = 0.5;
+
+ TEST(SincResamplerTest, Convolve) {
++#if defined(ARCH_CPU_X86_FAMILY)
++ ASSERT_TRUE(base::CPU().has_sse());
++#endif
++
+ // Initialize a dummy resampler.
+ MockSource mock_source;
+ SincResampler resampler(
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math.cc 2017-03-05 17:26:26.170986295 +0100
+@@ -7,12 +7,17 @@
+
+ #include <algorithm>
+
++#include "base/cpu.h"
+ #include "base/logging.h"
+ #include "build/build_config.h"
+
++namespace media {
++namespace vector_math {
++
++// If we know the minimum architecture at compile time, avoid CPU detection.
+ // NaCl does not allow intrinsics.
+ #if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
+-#include <xmmintrin.h>
++#if defined(__SSE__)
+ // Don't use custom SSE versions where the auto-vectorized C version performs
+ // better, which is anywhere clang is used.
+ #if !defined(__clang__)
+@@ -23,20 +28,52 @@
+ #define FMUL_FUNC FMUL_C
+ #endif
+ #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
++void Initialize() {}
++#else
++// X86 CPU detection required. Functions will be set by Initialize().
++#if !defined(__clang__)
++#define FMAC_FUNC g_fmac_proc_
++#define FMUL_FUNC g_fmul_proc_
++#else
++#define FMAC_FUNC FMAC_C
++#define FMUL_FUNC FMUL_C
++#endif
++#define EWMAAndMaxPower_FUNC g_ewma_power_proc_
++
++#if !defined(__clang__)
++typedef void (*MathProc)(const float src[], float scale, int len, float dest[]);
++static MathProc g_fmac_proc_ = NULL;
++static MathProc g_fmul_proc_ = NULL;
++#endif
++typedef std::pair<float, float> (*EWMAAndMaxPowerProc)(
++ float initial_value, const float src[], int len, float smoothing_factor);
++static EWMAAndMaxPowerProc g_ewma_power_proc_ = NULL;
++
++void Initialize() {
++ CHECK(!g_fmac_proc_);
++ CHECK(!g_fmul_proc_);
++ CHECK(!g_ewma_power_proc_);
++ const bool kUseSSE = base::CPU().has_sse();
++#if !defined(__clang__)
++ g_fmac_proc_ = kUseSSE ? FMAC_SSE : FMAC_C;
++ g_fmul_proc_ = kUseSSE ? FMUL_SSE : FMUL_C;
++#endif
++ g_ewma_power_proc_ = kUseSSE ? EWMAAndMaxPower_SSE : EWMAAndMaxPower_C;
++}
++#endif
+ #elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
+ #include <arm_neon.h>
+ #define FMAC_FUNC FMAC_NEON
+ #define FMUL_FUNC FMUL_NEON
+ #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
++void Initialize() {}
+ #else
+ #define FMAC_FUNC FMAC_C
+ #define FMUL_FUNC FMUL_C
+ #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_C
++void Initialize() {}
+ #endif
+
+-namespace media {
+-namespace vector_math {
+-
+ void FMAC(const float src[], float scale, int len, float dest[]) {
+ // Ensure |src| and |dest| are 16-byte aligned.
+ DCHECK_EQ(0u, reinterpret_cast<uintptr_t>(src) & (kRequiredAlignment - 1));
+@@ -89,111 +126,6 @@
+ return result;
+ }
+
+-#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
+-void FMUL_SSE(const float src[], float scale, int len, float dest[]) {
+- const int rem = len % 4;
+- const int last_index = len - rem;
+- __m128 m_scale = _mm_set_ps1(scale);
+- for (int i = 0; i < last_index; i += 4)
+- _mm_store_ps(dest + i, _mm_mul_ps(_mm_load_ps(src + i), m_scale));
+-
+- // Handle any remaining values that wouldn't fit in an SSE pass.
+- for (int i = last_index; i < len; ++i)
+- dest[i] = src[i] * scale;
+-}
+-
+-void FMAC_SSE(const float src[], float scale, int len, float dest[]) {
+- const int rem = len % 4;
+- const int last_index = len - rem;
+- __m128 m_scale = _mm_set_ps1(scale);
+- for (int i = 0; i < last_index; i += 4) {
+- _mm_store_ps(dest + i, _mm_add_ps(_mm_load_ps(dest + i),
+- _mm_mul_ps(_mm_load_ps(src + i), m_scale)));
+- }
+-
+- // Handle any remaining values that wouldn't fit in an SSE pass.
+- for (int i = last_index; i < len; ++i)
+- dest[i] += src[i] * scale;
+-}
+-
+-// Convenience macro to extract float 0 through 3 from the vector |a|. This is
+-// needed because compilers other than clang don't support access via
+-// operator[]().
+-#define EXTRACT_FLOAT(a, i) \
+- (i == 0 ? \
+- _mm_cvtss_f32(a) : \
+- _mm_cvtss_f32(_mm_shuffle_ps(a, a, i)))
+-
+-std::pair<float, float> EWMAAndMaxPower_SSE(
+- float initial_value, const float src[], int len, float smoothing_factor) {
+- // When the recurrence is unrolled, we see that we can split it into 4
+- // separate lanes of evaluation:
+- //
+- // y[n] = a(S[n]^2) + (1-a)(y[n-1])
+- // = a(S[n]^2) + (1-a)^1(aS[n-1]^2) + (1-a)^2(aS[n-2]^2) + ...
+- // = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
+- //
+- // where z[n] = a(S[n]^2) + (1-a)^4(z[n-4]) + (1-a)^8(z[n-8]) + ...
+- //
+- // Thus, the strategy here is to compute z[n], z[n-1], z[n-2], and z[n-3] in
+- // each of the 4 lanes, and then combine them to give y[n].
+-
+- const int rem = len % 4;
+- const int last_index = len - rem;
+-
+- const __m128 smoothing_factor_x4 = _mm_set_ps1(smoothing_factor);
+- const float weight_prev = 1.0f - smoothing_factor;
+- const __m128 weight_prev_x4 = _mm_set_ps1(weight_prev);
+- const __m128 weight_prev_squared_x4 =
+- _mm_mul_ps(weight_prev_x4, weight_prev_x4);
+- const __m128 weight_prev_4th_x4 =
+- _mm_mul_ps(weight_prev_squared_x4, weight_prev_squared_x4);
+-
+- // Compute z[n], z[n-1], z[n-2], and z[n-3] in parallel in lanes 3, 2, 1 and
+- // 0, respectively.
+- __m128 max_x4 = _mm_setzero_ps();
+- __m128 ewma_x4 = _mm_setr_ps(0.0f, 0.0f, 0.0f, initial_value);
+- int i;
+- for (i = 0; i < last_index; i += 4) {
+- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_4th_x4);
+- const __m128 sample_x4 = _mm_load_ps(src + i);
+- const __m128 sample_squared_x4 = _mm_mul_ps(sample_x4, sample_x4);
+- max_x4 = _mm_max_ps(max_x4, sample_squared_x4);
+- // Note: The compiler optimizes this to a single multiply-and-accumulate
+- // instruction:
+- ewma_x4 = _mm_add_ps(ewma_x4,
+- _mm_mul_ps(sample_squared_x4, smoothing_factor_x4));
+- }
+-
+- // y[n] = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
+- float ewma = EXTRACT_FLOAT(ewma_x4, 3);
+- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
+- ewma += EXTRACT_FLOAT(ewma_x4, 2);
+- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
+- ewma += EXTRACT_FLOAT(ewma_x4, 1);
+- ewma_x4 = _mm_mul_ss(ewma_x4, weight_prev_x4);
+- ewma += EXTRACT_FLOAT(ewma_x4, 0);
+-
+- // Fold the maximums together to get the overall maximum.
+- max_x4 = _mm_max_ps(max_x4,
+- _mm_shuffle_ps(max_x4, max_x4, _MM_SHUFFLE(3, 3, 1, 1)));
+- max_x4 = _mm_max_ss(max_x4, _mm_shuffle_ps(max_x4, max_x4, 2));
+-
+- std::pair<float, float> result(ewma, EXTRACT_FLOAT(max_x4, 0));
+-
+- // Handle remaining values at the end of |src|.
+- for (; i < len; ++i) {
+- result.first *= weight_prev;
+- const float sample = src[i];
+- const float sample_squared = sample * sample;
+- result.first += sample_squared * smoothing_factor;
+- result.second = std::max(result.second, sample_squared);
+- }
+-
+- return result;
+-}
+-#endif
+-
+ #if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
+ void FMAC_NEON(const float src[], float scale, int len, float dest[]) {
+ const int rem = len % 4;
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math.h
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math.h 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math.h 2017-03-05 17:26:26.170986295 +0100
+@@ -15,6 +15,11 @@
+ // Required alignment for inputs and outputs to all vector math functions
+ enum { kRequiredAlignment = 16 };
+
++// Selects runtime specific optimizations such as SSE. Must be called prior to
++// calling FMAC() or FMUL(). Called during media library initialization; most
++// users should never have to call this.
++MEDIA_EXPORT void Initialize();
++
+ // Multiply each element of |src| (up to |len|) by |scale| and add to |dest|.
+ // |src| and |dest| must be aligned by kRequiredAlignment.
+ MEDIA_EXPORT void FMAC(const float src[], float scale, int len, float dest[]);
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_perftest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_perftest.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_perftest.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_perftest.cc 2017-03-05 17:26:26.171986280 +0100
+@@ -5,6 +5,7 @@
+ #include <memory>
+
+ #include "base/macros.h"
++#include "base/cpu.h"
+ #include "base/memory/aligned_memory.h"
+ #include "base/time/time.h"
+ #include "build/build_config.h"
+@@ -82,15 +83,11 @@
+ DISALLOW_COPY_AND_ASSIGN(VectorMathPerfTest);
+ };
+
+-// Define platform dependent function names for SIMD optimized methods.
++// Define platform independent function name for FMAC* perf tests.
+ #if defined(ARCH_CPU_X86_FAMILY)
+ #define FMAC_FUNC FMAC_SSE
+-#define FMUL_FUNC FMUL_SSE
+-#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
+ #elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
+ #define FMAC_FUNC FMAC_NEON
+-#define FMUL_FUNC FMUL_NEON
+-#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
+ #endif
+
+ // Benchmark for each optimized vector_math::FMAC() method.
+@@ -99,6 +96,9 @@
+ RunBenchmark(
+ vector_math::FMAC_C, true, "vector_math_fmac", "unoptimized");
+ #if defined(FMAC_FUNC)
++#if defined(ARCH_CPU_X86_FAMILY)
++ ASSERT_TRUE(base::CPU().has_sse());
++#endif
+ // Benchmark FMAC_FUNC() with unaligned size.
+ ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
+ sizeof(float)), 0U);
+@@ -112,12 +112,24 @@
+ #endif
+ }
+
++#undef FMAC_FUNC
++
++// Define platform independent function name for FMULBenchmark* tests.
++#if defined(ARCH_CPU_X86_FAMILY)
++#define FMUL_FUNC FMUL_SSE
++#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
++#define FMUL_FUNC FMUL_NEON
++#endif
++
+ // Benchmark for each optimized vector_math::FMUL() method.
+ TEST_F(VectorMathPerfTest, FMUL) {
+ // Benchmark FMUL_C().
+ RunBenchmark(
+ vector_math::FMUL_C, true, "vector_math_fmul", "unoptimized");
+ #if defined(FMUL_FUNC)
++#if defined(ARCH_CPU_X86_FAMILY)
++ ASSERT_TRUE(base::CPU().has_sse());
++#endif
+ // Benchmark FMUL_FUNC() with unaligned size.
+ ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
+ sizeof(float)), 0U);
+@@ -131,6 +143,14 @@
+ #endif
+ }
+
++#undef FMUL_FUNC
++
++#if defined(ARCH_CPU_X86_FAMILY)
++#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
++#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
++#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
++#endif
++
+ // Benchmark for each optimized vector_math::EWMAAndMaxPower() method.
+ TEST_F(VectorMathPerfTest, EWMAAndMaxPower) {
+ // Benchmark EWMAAndMaxPower_C().
+@@ -139,6 +159,9 @@
+ "vector_math_ewma_and_max_power",
+ "unoptimized");
+ #if defined(EWMAAndMaxPower_FUNC)
++#if defined(ARCH_CPU_X86_FAMILY)
++ ASSERT_TRUE(base::CPU().has_sse());
++#endif
+ // Benchmark EWMAAndMaxPower_FUNC() with unaligned size.
+ ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
+ sizeof(float)), 0U);
+@@ -156,4 +179,6 @@
+ #endif
+ }
+
++#undef EWMAAndMaxPower_FUNC
++
+ } // namespace media
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_testing.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_testing.h
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_testing.h 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_testing.h 2017-03-05 17:26:26.171986280 +0100
+@@ -19,7 +19,7 @@
+ MEDIA_EXPORT std::pair<float, float> EWMAAndMaxPower_C(
+ float initial_value, const float src[], int len, float smoothing_factor);
+
+-#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
++#if defined(ARCH_CPU_X86_FAMILY)
+ MEDIA_EXPORT void FMAC_SSE(const float src[], float scale, int len,
+ float dest[]);
+ MEDIA_EXPORT void FMUL_SSE(const float src[], float scale, int len,
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_unittest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_unittest.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_unittest.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_unittest.cc 2017-03-05 17:26:26.172986265 +0100
+@@ -9,6 +9,7 @@
+ #include <memory>
+
+ #include "base/macros.h"
++#include "base/cpu.h"
+ #include "base/memory/aligned_memory.h"
+ #include "base/strings/string_number_conversions.h"
+ #include "base/strings/stringize_macros.h"
+@@ -78,6 +79,7 @@
+
+ #if defined(ARCH_CPU_X86_FAMILY)
+ {
++ ASSERT_TRUE(base::CPU().has_sse());
+ SCOPED_TRACE("FMAC_SSE");
+ FillTestVectors(kInputFillValue, kOutputFillValue);
+ vector_math::FMAC_SSE(
+@@ -119,6 +121,7 @@
+
+ #if defined(ARCH_CPU_X86_FAMILY)
+ {
++ ASSERT_TRUE(base::CPU().has_sse());
+ SCOPED_TRACE("FMUL_SSE");
+ FillTestVectors(kInputFillValue, kOutputFillValue);
+ vector_math::FMUL_SSE(
+@@ -227,6 +230,7 @@
+
+ #if defined(ARCH_CPU_X86_FAMILY)
+ {
++ ASSERT_TRUE(base::CPU().has_sse());
+ SCOPED_TRACE("EWMAAndMaxPower_SSE");
+ const std::pair<float, float>& result = vector_math::EWMAAndMaxPower_SSE(
+ initial_value_, data_.get(), data_len_, smoothing_factor_);
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert.cc 2017-03-05 17:26:26.173986250 +0100
+@@ -32,7 +32,7 @@
+ #include "media/base/simd/convert_yuv_to_rgb.h"
+ #include "media/base/simd/filter_yuv.h"
+
+-#if defined(ARCH_CPU_X86_FAMILY)
++#if defined(ARCH_CPU_X86_FAMILY) && defined(__MMX__)
+ #if defined(COMPILER_MSVC)
+ #include <intrin.h>
+ #else
+@@ -133,7 +133,7 @@
+
+ // Empty SIMD registers state after using them.
+ void EmptyRegisterStateStub() {}
+-#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
++#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE) && defined(__MMX__)
+ void EmptyRegisterStateIntrinsic() { _mm_empty(); }
+ #endif
+ typedef void (*EmptyRegisterStateProc)();
+@@ -247,34 +247,46 @@
+ // Assembly code confuses MemorySanitizer. Also not available in iOS builds.
+ #if defined(ARCH_CPU_X86_FAMILY) && !defined(MEMORY_SANITIZER) && \
+ !defined(OS_IOS)
+- g_convert_yuva_to_argb_proc_ = ConvertYUVAToARGB_MMX;
++ base::CPU cpu;
++ if (cpu.has_mmx()) {
++ g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_MMX;
++ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_MMX;
++ g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_MMX;
++ g_convert_yuva_to_argb_proc_ = ConvertYUVAToARGB_MMX;
++ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX;
+
+ #if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
+- g_empty_register_state_proc_ = EmptyRegisterStateIntrinsic;
++ g_filter_yuv_rows_proc_ = FilterYUVRows_MMX;
++#endif
++#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE) && defined(__MMX__)
++ g_empty_register_state_proc_ = EmptyRegisterStateIntrinsic;
+ #else
+- g_empty_register_state_proc_ = EmptyRegisterState_MMX;
++ g_empty_register_state_proc_ = EmptyRegisterState_MMX;
+ #endif
++ }
+
+- g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_SSE;
+- g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_SSE;
++ if (cpu.has_sse()) {
++ g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_SSE;
++ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE;
++ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_SSE;
++ g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_SSE;
++ }
+
+- g_filter_yuv_rows_proc_ = FilterYUVRows_SSE2;
+- g_convert_rgb32_to_yuv_proc_ = ConvertRGB32ToYUV_SSE2;
++ if (cpu.has_sse2()) {
++ g_filter_yuv_rows_proc_ = FilterYUVRows_SSE2;
++ g_convert_rgb32_to_yuv_proc_ = ConvertRGB32ToYUV_SSE2;
+
+ #if defined(ARCH_CPU_X86_64)
+- g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE2_X64;
++ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE2_X64;
+
+- // Technically this should be in the MMX section, but MSVC will optimize out
+- // the export of LinearScaleYUVToRGB32Row_MMX, which is required by the unit
+- // tests, if that decision can be made at compile time. Since all X64 CPUs
+- // have SSE2, we can hack around this by making the selection here.
+- g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX_X64;
+-#else
+- g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE;
+- g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_SSE;
++ // Technically this should be in the MMX section, but MSVC will optimize out
++ // the export of LinearScaleYUVToRGB32Row_MMX, which is required by the unit
++ // tests, if that decision can be made at compile time. Since all X64 CPUs
++ // have SSE2, we can hack around this by making the selection here.
++ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX_X64;
+ #endif
++ }
+
+- base::CPU cpu;
+ if (cpu.has_ssse3()) {
+ g_convert_rgb24_to_yuv_proc_ = &ConvertRGB24ToYUV_SSSE3;
+
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc 2017-03-05 17:26:26.173986250 +0100
+@@ -71,6 +71,29 @@
+ DISALLOW_COPY_AND_ASSIGN(YUVConvertPerfTest);
+ };
+
++TEST_F(YUVConvertPerfTest, ConvertYUVToRGB32Row_MMX) {
++ ASSERT_TRUE(base::CPU().has_mmx());
++
++ base::TimeTicks start = base::TimeTicks::Now();
++ for (int i = 0; i < kPerfTestIterations; ++i) {
++ for (int row = 0; row < kSourceHeight; ++row) {
++ int chroma_row = row / 2;
++ ConvertYUVToRGB32Row_MMX(
++ yuv_bytes_.get() + row * kSourceWidth,
++ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
++ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
++ rgb_bytes_converted_.get(),
++ kWidth,
++ GetLookupTable(YV12));
++ }
++ }
++ media::EmptyRegisterState();
++ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
++ perf_test::PrintResult(
++ "yuv_convert_perftest", "", "ConvertYUVToRGB32Row_MMX",
++ kPerfTestIterations / total_time_seconds, "runs/s", true);
++}
++
+ TEST_F(YUVConvertPerfTest, ConvertYUVToRGB32Row_SSE) {
+ ASSERT_TRUE(base::CPU().has_sse());
+
+@@ -161,9 +184,32 @@
+ }
+ #endif
+
+-// 64-bit release + component builds on Windows are too smart and optimizes
+-// away the function being tested.
+-#if defined(OS_WIN) && (defined(ARCH_CPU_X86) || !defined(COMPONENT_BUILD))
++TEST_F(YUVConvertPerfTest, ScaleYUVToRGB32Row_MMX) {
++ ASSERT_TRUE(base::CPU().has_mmx());
++
++ const int kSourceDx = 80000; // This value means a scale down.
++
++ base::TimeTicks start = base::TimeTicks::Now();
++ for (int i = 0; i < kPerfTestIterations; ++i) {
++ for (int row = 0; row < kSourceHeight; ++row) {
++ int chroma_row = row / 2;
++ ScaleYUVToRGB32Row_MMX(
++ yuv_bytes_.get() + row * kSourceWidth,
++ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
++ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
++ rgb_bytes_converted_.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ }
++ }
++ media::EmptyRegisterState();
++ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
++ perf_test::PrintResult(
++ "yuv_convert_perftest", "", "ScaleYUVToRGB32Row_MMX",
++ kPerfTestIterations / total_time_seconds, "runs/s", true);
++}
++
+ TEST_F(YUVConvertPerfTest, ScaleYUVToRGB32Row_SSE) {
+ ASSERT_TRUE(base::CPU().has_sse());
+
+@@ -190,6 +236,32 @@
+ kPerfTestIterations / total_time_seconds, "runs/s", true);
+ }
+
++TEST_F(YUVConvertPerfTest, LinearScaleYUVToRGB32Row_MMX) {
++ ASSERT_TRUE(base::CPU().has_mmx());
++
++ const int kSourceDx = 80000; // This value means a scale down.
++
++ base::TimeTicks start = base::TimeTicks::Now();
++ for (int i = 0; i < kPerfTestIterations; ++i) {
++ for (int row = 0; row < kSourceHeight; ++row) {
++ int chroma_row = row / 2;
++ LinearScaleYUVToRGB32Row_MMX(
++ yuv_bytes_.get() + row * kSourceWidth,
++ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
++ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
++ rgb_bytes_converted_.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ }
++ }
++ media::EmptyRegisterState();
++ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
++ perf_test::PrintResult(
++ "yuv_convert_perftest", "", "LinearScaleYUVToRGB32Row_MMX",
++ kPerfTestIterations / total_time_seconds, "runs/s", true);
++}
++
+ TEST_F(YUVConvertPerfTest, LinearScaleYUVToRGB32Row_SSE) {
+ ASSERT_TRUE(base::CPU().has_sse());
+
+@@ -215,7 +287,6 @@
+ "yuv_convert_perftest", "", "LinearScaleYUVToRGB32Row_SSE",
+ kPerfTestIterations / total_time_seconds, "runs/s", true);
+ }
+-#endif // defined(OS_WIN) && (ARCH_CPU_X86 || COMPONENT_BUILD)
+
+ #endif // !defined(ARCH_CPU_ARM_FAMILY) && !defined(ARCH_CPU_MIPS_FAMILY)
+
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc 2017-03-05 17:26:26.174986235 +0100
+@@ -643,6 +643,37 @@
+ EXPECT_EQ(0, error);
+ }
+
++TEST(YUVConvertTest, ConvertYUVToRGB32Row_MMX) {
++ base::CPU cpu;
++ if (!cpu.has_mmx()) {
++ LOG(WARNING) << "System not supported. Test skipped.";
++ return;
++ }
++
++ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
++ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
++ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
++ ReadYV12Data(&yuv_bytes);
++
++ const int kWidth = 167;
++ ConvertYUVToRGB32Row_C(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_reference.get(),
++ kWidth,
++ GetLookupTable(YV12));
++ ConvertYUVToRGB32Row_MMX(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_converted.get(),
++ kWidth,
++ GetLookupTable(YV12));
++ media::EmptyRegisterState();
++ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
++ rgb_bytes_converted.get(),
++ kWidth * kBpp));
++}
++
+ TEST(YUVConvertTest, ConvertYUVToRGB32Row_SSE) {
+ base::CPU cpu;
+ if (!cpu.has_sse()) {
+@@ -674,9 +705,40 @@
+ kWidth * kBpp));
+ }
+
+-// 64-bit release + component builds on Windows are too smart and optimizes
+-// away the function being tested.
+-#if defined(OS_WIN) && (defined(ARCH_CPU_X86) || !defined(COMPONENT_BUILD))
++TEST(YUVConvertTest, ScaleYUVToRGB32Row_MMX) {
++ base::CPU cpu;
++ if (!cpu.has_mmx()) {
++ LOG(WARNING) << "System not supported. Test skipped.";
++ return;
++ }
++
++ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
++ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
++ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
++ ReadYV12Data(&yuv_bytes);
++
++ const int kWidth = 167;
++ const int kSourceDx = 80000; // This value means a scale down.
++ ScaleYUVToRGB32Row_C(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_reference.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ ScaleYUVToRGB32Row_MMX(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_converted.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ media::EmptyRegisterState();
++ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
++ rgb_bytes_converted.get(),
++ kWidth * kBpp));
++}
++
+ TEST(YUVConvertTest, ScaleYUVToRGB32Row_SSE) {
+ base::CPU cpu;
+ if (!cpu.has_sse()) {
+@@ -711,6 +773,40 @@
+ kWidth * kBpp));
+ }
+
++TEST(YUVConvertTest, LinearScaleYUVToRGB32Row_MMX) {
++ base::CPU cpu;
++ if (!cpu.has_mmx()) {
++ LOG(WARNING) << "System not supported. Test skipped.";
++ return;
++ }
++
++ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
++ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
++ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
++ ReadYV12Data(&yuv_bytes);
++
++ const int kWidth = 167;
++ const int kSourceDx = 80000; // This value means a scale down.
++ LinearScaleYUVToRGB32Row_C(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_reference.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ LinearScaleYUVToRGB32Row_MMX(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_converted.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ media::EmptyRegisterState();
++ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
++ rgb_bytes_converted.get(),
++ kWidth * kBpp));
++}
++
+ TEST(YUVConvertTest, LinearScaleYUVToRGB32Row_SSE) {
+ base::CPU cpu;
+ if (!cpu.has_sse()) {
+@@ -744,7 +840,6 @@
+ rgb_bytes_converted.get(),
+ kWidth * kBpp));
+ }
+-#endif // defined(OS_WIN) && (ARCH_CPU_X86 || COMPONENT_BUILD)
+
+ TEST(YUVConvertTest, FilterYUVRows_C_OutOfBounds) {
+ std::unique_ptr<uint8_t[]> src(new uint8_t[16]);
+@@ -761,6 +856,30 @@
+ }
+ }
+
++#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
++TEST(YUVConvertTest, FilterYUVRows_MMX_OutOfBounds) {
++ base::CPU cpu;
++ if (!cpu.has_mmx()) {
++ LOG(WARNING) << "System not supported. Test skipped.";
++ return;
++ }
++
++ scoped_ptr<uint8[]> src(new uint8[16]);
++ scoped_ptr<uint8[]> dst(new uint8[16]);
++
++ memset(src.get(), 0xff, 16);
++ memset(dst.get(), 0, 16);
++
++ media::FilterYUVRows_MMX(dst.get(), src.get(), src.get(), 1, 255);
++ media::EmptyRegisterState();
++
++ EXPECT_EQ(255u, dst[0]);
++ for (int i = 1; i < 16; ++i) {
++ EXPECT_EQ(0u, dst[i]);
++ }
++}
++#endif // defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
++
+ TEST(YUVConvertTest, FilterYUVRows_SSE2_OutOfBounds) {
+ base::CPU cpu;
+ if (!cpu.has_sse2()) {
+@@ -782,6 +901,38 @@
+ }
+ }
+
++#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
++TEST(YUVConvertTest, FilterYUVRows_MMX_UnalignedDestination) {
++ base::CPU cpu;
++ if (!cpu.has_mmx()) {
++ LOG(WARNING) << "System not supported. Test skipped.";
++ return;
++ }
++
++ const int kSize = 32;
++ scoped_ptr<uint8[]> src(new uint8[kSize]);
++ scoped_ptr<uint8[]> dst_sample(new uint8[kSize]);
++ scoped_ptr<uint8[]> dst(new uint8[kSize]);
++
++ memset(dst_sample.get(), 0, kSize);
++ memset(dst.get(), 0, kSize);
++ for (int i = 0; i < kSize; ++i)
++ src[i] = 100 + i;
++
++ media::FilterYUVRows_C(dst_sample.get(),
++ src.get(), src.get(), 17, 128);
++
++ // Generate an unaligned output address.
++ uint8* dst_ptr =
++ reinterpret_cast<uint8*>(
++ (reinterpret_cast<uintptr_t>(dst.get() + 8) & ~7) + 1);
++ media::FilterYUVRows_MMX(dst_ptr, src.get(), src.get(), 17, 128);
++ media::EmptyRegisterState();
++
++ EXPECT_EQ(0, memcmp(dst_sample.get(), dst_ptr, 17));
++}
++#endif // defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
++
+ TEST(YUVConvertTest, FilterYUVRows_SSE2_UnalignedDestination) {
+ base::CPU cpu;
+ if (!cpu.has_sse2()) {
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/BUILD.gn
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/BUILD.gn 2017-03-05 17:26:26.175986220 +0100
+@@ -805,6 +805,26 @@
+ "//base",
+ "//ui/gfx/geometry",
+ ]
++ if (current_cpu == "x86" || current_cpu == "x64") {
++ deps += [
++ ":shared_memory_support_sse",
++ ]
++ }
++}
++
++if (current_cpu == "x86" || current_cpu == "x64") {
++ source_set("shared_memory_support_sse") {
++ sources = [
++ "base/simd/vector_math_sse.cc",
++ ]
++ configs += [
++ "//media:media_config",
++ "//media:media_implementation",
++ ]
++ if (!is_win) {
++ cflags = [ "-msse" ]
++ }
++ }
+ }
+
+ # TODO(watk): Refactor tests that could be made to run on Android. See
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/media.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/media.gyp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/media.gyp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/media.gyp 2017-03-05 17:51:56.424188330 +0100
+@@ -1020,12 +1020,12 @@
+ ['target_arch=="ia32" or target_arch=="x64"', {
+ 'dependencies': [
+ 'media_asm',
++ 'media_mmx',
++ 'media_sse',
++ 'media_sse2',
+ ],
+ 'sources': [
+- 'base/simd/convert_rgb_to_yuv_sse2.cc',
+- 'base/simd/convert_rgb_to_yuv_ssse3.cc',
+ 'base/simd/convert_yuv_to_rgb_x86.cc',
+- 'base/simd/filter_yuv_sse2.cc',
+ ],
+ }],
+ ['OS!="linux" and OS!="win"', {
+@@ -1616,6 +1616,11 @@
+ 'USE_NEON'
+ ],
+ }],
++ ['target_arch=="ia32" or target_arch=="x64"', {
++ 'dependencies': [
++ 'shared_memory_support_sse'
++ ],
++ }],
+ ],
+ },
+ {
+@@ -1633,6 +1638,7 @@
+ 'type': 'static_library',
+ 'sources': [
+ 'base/simd/convert_rgb_to_yuv_ssse3.asm',
++ 'base/simd/convert_yuv_to_rgb_mmx.asm',
+ 'base/simd/convert_yuv_to_rgb_sse.asm',
+ 'base/simd/convert_yuva_to_argb_mmx.asm',
+ 'base/simd/empty_register_state_mmx.asm',
+@@ -1713,6 +1719,75 @@
+ '../third_party/yasm/yasm_compile.gypi',
+ ],
+ },
++ {
++ # GN version: //media/base:media_mmx
++ 'target_name': 'media_mmx',
++ 'type': 'static_library',
++ 'cflags': [
++ '-mmmx',
++ ],
++ 'defines': [
++ 'MEDIA_IMPLEMENTATION',
++ ],
++ 'include_dirs': [
++ '..',
++ ],
++ 'sources': [
++ 'base/simd/filter_yuv_mmx.cc',
++ ],
++ },
++ {
++ # GN version: //media/base:media_sse
++ 'target_name': 'media_sse',
++ 'type': 'static_library',
++ 'cflags': [
++ '-msse',
++ ],
++ 'defines': [
++ 'MEDIA_IMPLEMENTATION',
++ ],
++ 'include_dirs': [
++ '..',
++ ],
++ 'sources': [
++ 'base/simd/sinc_resampler_sse.cc',
++ ],
++ },
++ {
++ # GN version: //media/base:media_sse2
++ 'target_name': 'media_sse2',
++ 'type': 'static_library',
++ 'cflags': [
++ '-msse2',
++ ],
++ 'defines': [
++ 'MEDIA_IMPLEMENTATION',
++ ],
++ 'include_dirs': [
++ '..',
++ ],
++ 'sources': [
++ 'base/simd/convert_rgb_to_yuv_sse2.cc',
++ 'base/simd/convert_rgb_to_yuv_ssse3.cc',
++ 'base/simd/filter_yuv_sse2.cc',
++ ],
++ },
++ {
++ 'target_name': 'shared_memory_support_sse',
++ 'type': 'static_library',
++ 'cflags': [
++ '-msse',
++ ],
++ 'defines': [
++ 'MEDIA_IMPLEMENTATION',
++ ],
++ 'include_dirs': [
++ '..',
++ ],
++ 'sources': [
++ 'base/simd/vector_math_sse.cc',
++ ],
++ },
+ ], # targets
+ }],
+ ['OS=="win"', {
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/BUILD.gn
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/BUILD.gn 2017-03-05 17:56:08.829413581 +0100
+@@ -329,11 +329,6 @@
+ if (!is_ios) {
+ sources += [ "ext/platform_canvas.cc" ]
+ }
+- if (!is_ios && (current_cpu == "x86" || current_cpu == "x64")) {
+- sources += [ "ext/convolver_SSE2.cc" ]
+- } else if (current_cpu == "mipsel" && mips_dsp_rev >= 2) {
+- sources += [ "ext/convolver_mips_dspr2.cc" ]
+- }
+
+ # The skia gypi values are relative to the skia_dir, so we need to rebase.
+ sources += gypi_skia_core.sources
+@@ -642,7 +637,15 @@
+ if (skia_build_no_opts) {
+ sources = gypi_skia_opts.none_sources
+ } else if (current_cpu == "x86" || current_cpu == "x64") {
+- sources = gypi_skia_opts.sse2_sources
++ sources = gypi_skia_opts.sse2_sources +
++ [
++ # Chrome-specific.
++ "ext/convolver_SSE2.cc",
++ "ext/convolver_SSE2.h",
++ ]
++ if (!is_win || is_clang) {
++ cflags += [ "-msse2" ]
++ }
+ deps += [
+ ":skia_opts_avx",
+ ":skia_opts_avx2",
+@@ -677,6 +680,13 @@
+
+ if (mips_dsp_rev >= 1) {
+ sources = gypi_skia_opts.mips_dsp_sources
++ if (mips_dsp_rev >= 2) {
++ sources += [
++ # Chrome-specific.
++ "ext/convolver_mips_dspr2.cc",
++ "ext/convolver_mips_dspr2.h",
++ ]
++ }
+ } else {
+ sources = gypi_skia_opts.none_sources
+ }
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/ext/convolver.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/ext/convolver.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/ext/convolver.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/ext/convolver.cc 2017-03-05 17:26:26.176986205 +0100
+@@ -362,10 +362,13 @@
+
+ void SetupSIMD(ConvolveProcs *procs) {
+ #ifdef SIMD_SSE2
+- procs->extra_horizontal_reads = 3;
+- procs->convolve_vertically = &ConvolveVertically_SSE2;
+- procs->convolve_4rows_horizontally = &Convolve4RowsHorizontally_SSE2;
+- procs->convolve_horizontally = &ConvolveHorizontally_SSE2;
++ base::CPU cpu;
++ if (cpu.has_sse2()) {
++ procs->extra_horizontal_reads = 3;
++ procs->convolve_vertically = &ConvolveVertically_SSE2;
++ procs->convolve_4rows_horizontally = &Convolve4RowsHorizontally_SSE2;
++ procs->convolve_horizontally = &ConvolveHorizontally_SSE2;
++ }
+ #elif defined SIMD_MIPS_DSPR2
+ procs->extra_horizontal_reads = 3;
+ procs->convolve_vertically = &ConvolveVertically_mips_dspr2;
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/ext/convolver.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/ext/convolver.h
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/ext/convolver.h 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/ext/convolver.h 2017-03-05 17:26:26.239985269 +0100
+@@ -11,6 +11,7 @@
+ #include <vector>
+
+ #include "build/build_config.h"
++#include "base/cpu.h"
+ #include "third_party/skia/include/core/SkSize.h"
+ #include "third_party/skia/include/core/SkTypes.h"
+
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia_chrome.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia_chrome.gypi
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia_chrome.gypi 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia_chrome.gypi 2017-03-05 17:26:26.239985269 +0100
+@@ -9,6 +9,7 @@
+ {
+ 'dependencies': [
+ 'skia_library',
++ 'skia_chrome_opts',
+ '../base/base.gyp:base',
+ '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
+ ],
+@@ -67,22 +68,16 @@
+ 'ext/skia_utils_base.cc',
+ ],
+ }],
++ ['OS == "ios"', {
++ 'dependencies!': [
++ 'skia_chrome_opts',
++ ],
++ }],
+ [ 'OS != "android" and (OS != "linux" or use_cairo==1)', {
+ 'sources!': [
+ 'ext/bitmap_platform_device_skia.cc',
+ ],
+ }],
+- [ 'OS != "ios" and target_arch != "arm" and target_arch != "mipsel" and \
+- target_arch != "arm64" and target_arch != "mips64el"', {
+- 'sources': [
+- 'ext/convolver_SSE2.cc',
+- ],
+- }],
+- [ 'target_arch == "mipsel" and mips_dsp_rev >= 2',{
+- 'sources': [
+- 'ext/convolver_mips_dspr2.cc',
+- ],
+- }],
+ ],
+
+ 'target_conditions': [
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia.gyp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia.gyp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia.gyp 2017-03-05 17:26:26.239985269 +0100
+@@ -128,6 +128,37 @@
+ # targets that are not dependent upon the component type
+ 'targets': [
+ {
++ 'target_name': 'skia_chrome_opts',
++ 'type': 'static_library',
++ 'include_dirs': [
++ '..',
++ 'config',
++ '../third_party/skia/include/core',
++ ],
++ 'conditions': [
++ [ 'os_posix == 1 and OS != "mac" and OS != "android" and \
++ target_arch != "arm" and target_arch != "mipsel" and \
++ target_arch != "arm64" and target_arch != "mips64el"', {
++ 'cflags': [
++ '-msse2',
++ ],
++ }],
++ [ 'target_arch != "arm" and target_arch != "mipsel" and \
++ target_arch != "arm64" and target_arch != "mips64el"', {
++ 'sources': [
++ 'ext/convolver_SSE2.cc',
++ 'ext/convolver_SSE2.h',
++ ],
++ }],
++ [ 'target_arch == "mipsel" and mips_dsp_rev >= 2',{
++ 'sources': [
++ 'ext/convolver_mips_dspr2.cc',
++ 'ext/convolver_mips_dspr2.h',
++ ],
++ }],
++ ],
++ },
++ {
+ 'target_name': 'image_operations_bench',
+ # The optimize: 'max' scattered throughout are particularly
+ # important when compiled by MSVC 2013, which seems
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia_library_opts.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia_library_opts.gyp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia_library_opts.gyp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia_library_opts.gyp 2017-03-05 17:26:26.239985269 +0100
+@@ -19,10 +19,22 @@
+ },
+
+ 'targets': [
+- # SSE files have to be built in a separate target, because gcc needs
+- # different -msse flags for different SSE levels which enable use of SSE
+- # intrinsics but also allow emission of SSE2 instructions for scalar code.
+- # gyp does not allow per-file compiler flags.
++ # Due to an unfortunate intersection of lameness between gcc and gyp,
++ # we have to build the *_SSE2.cpp files in a separate target. The
++ # gcc lameness is that, in order to compile SSE2 intrinsics code, it
++ # must be passed the -msse2 flag. However, with this flag, it may
++ # emit SSE2 instructions even for scalar code, such as the CPUID
++ # test used to test for the presence of SSE2. So that, and all other
++ # code must be compiled *without* -msse2. The gyp lameness is that it
++ # does not allow file-specific CFLAGS, so we must create this extra
++ # target for those files to be compiled with -msse2.
++ #
++ # This is actually only a problem on 32-bit Linux (all Intel Macs have
++ # SSE2, Linux x86_64 has SSE2 by definition, and MSC will happily emit
++ # SSE2 from instrinsics, which generating plain ol' 386 for everything
++ # else). However, to keep the .gyp file simple and avoid platform-specific
++ # build breakage, we do this on all platforms.
++
+ # For about the same reason, we need to compile the ARM opts files
+ # separately as well.
+ {
+@@ -45,12 +57,13 @@
+ ],
+ 'include_dirs': [ '<@(include_dirs)' ],
+ 'conditions': [
++ [ 'os_posix == 1 and OS != "mac" and OS != "android" and \
++ target_arch != "arm" and target_arch != "arm64" and \
++ target_arch != "mipsel" and target_arch != "mips64el"', {
++ 'cflags': [ '-msse2' ],
++ }],
+ [ 'target_arch != "arm" and target_arch != "mipsel" and \
+ target_arch != "arm64" and target_arch != "mips64el"', {
+- # Chrome builds with -msse2 locally, so sse2_sources could in theory
+- # be in the regular skia target. But we need skia_opts for arm
+- # anyway, so putting sse2_sources here is simpler than making this
+- # conditionally a type none target on x86.
+ 'sources': [ '<@(sse2_sources)' ],
+ 'dependencies': [
+ 'skia_opts_ssse3',
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/qcms/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/qcms/BUILD.gn
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/qcms/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/qcms/BUILD.gn 2017-03-05 17:26:26.240985255 +0100
+@@ -31,8 +31,8 @@
+ ]
+
+ if (current_cpu == "x86" || current_cpu == "x64") {
+- defines = [ "SSE2_ENABLE" ]
+- sources += [ "src/transform-sse2.c" ]
++ defines = [ "SSE2_ENABLE" ] # runtime detection
++ deps = [ "qcms_sse2" ]
+ }
+ }
+
+@@ -75,3 +75,15 @@
+ public_configs = [ ":qcms_config" ]
+ }
+ }
++
++source_set("qcms_sse2") {
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [ "//build/config/compiler:no_chromium_code" ]
++ public_configs = [ ":qcms_config" ]
++
++ if (current_cpu == "x86" || current_cpu == "x64") {
++ defines = [ "SSE2_ENABLE" ]
++ sources = [ "src/transform-sse2.c" ]
++ cflags = [ "-msse2" ]
++ }
++}
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/qcms/qcms.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/qcms/qcms.gyp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/qcms/qcms.gyp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/qcms/qcms.gyp 2017-03-05 18:01:48.843328633 +0100
+@@ -52,10 +52,10 @@
+ 'conditions': [
+ ['target_arch=="ia32" or target_arch=="x64"', {
+ 'defines': [
+- 'SSE2_ENABLE',
++ 'SSE2_ENABLE', # runtime detection
+ ],
+- 'sources': [
+- 'src/transform-sse2.c',
++ 'dependencies': [
++ 'qcms_sse2',
+ ],
+ }],
+ ],
+@@ -68,6 +68,29 @@
+ }],
+ ],
+ },
++ {
++ 'target_name': 'qcms_sse2',
++ 'type': 'static_library',
++ 'conditions': [
++ ['target_arch == "ia32" or target_arch == "x64"', {
++ 'defines': [
++ 'SSE2_ENABLE',
++ ],
++ 'sources': [
++ # Conditional compilation for SSE2 code on x86 and x64 machines
++ 'src/transform-sse2.c',
++ ],
++ 'cflags': [
++ '-msse2',
++ ],
++ }],
++ ],
++ 'direct_dependent_settings': {
++ 'include_dirs': [
++ './src',
++ ],
++ },
++ },
+ ],
+ 'conditions': [
+ ['disable_qcms == 0', {
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp 2017-03-05 17:26:26.240985255 +0100
+@@ -32,7 +32,7 @@
+ #include "wtf/MathExtras.h"
+ #include <algorithm>
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ #include <emmintrin.h>
+ #endif
+
+@@ -575,7 +575,7 @@
+ // First handle linear and exponential ramps which require looking ahead to the next event.
+ if (nextEventType == ParamEvent::LinearRampToValue) {
+ const float valueDelta = value2 - value1;
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ // Minimize in-loop operations. Calculate starting value and increment. Next step: value += inc.
+ // value = value1 + (currentFrame/sampleRate - time1) * k * (value2 - value1);
+ // inc = 4 / sampleRate * k * (value2 - value1);
+@@ -738,7 +738,7 @@
+ for (; writeIndex < fillToFrame; ++writeIndex)
+ values[writeIndex] = target;
+ } else {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ // Resolve recursion by expanding constants to achieve a 4-step loop unrolling.
+ // v1 = v0 + (t - v0) * c
+ // v2 = v1 + (t - v1) * c
+@@ -843,7 +843,7 @@
+ // Render the stretched curve data using linear interpolation. Oversampled
+ // curve data can be provided if sharp discontinuities are desired.
+ unsigned k = 0;
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ const __m128 vCurveVirtualIndex = _mm_set_ps1(curveVirtualIndex);
+ const __m128 vCurvePointsPerFrame = _mm_set_ps1(curvePointsPerFrame);
+ const __m128 vNumberOfCurvePointsM1 = _mm_set_ps1(numberOfCurvePoints - 1);
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp 2017-03-05 18:09:17.132624414 +0100
+@@ -26,6 +26,9 @@
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
++// include this first to get it before the CPU() function-like macro
++#include "base/cpu.h"
++
+ #include "platform/audio/DirectConvolver.h"
+
+ #if OS(MACOSX)
+@@ -35,22 +38,44 @@
+ #include "platform/audio/VectorMath.h"
+ #include "wtf/CPU.h"
+
+-#if (CPU(X86) || CPU(X86_64)) && !OS(MACOSX)
++#if ((CPU(X86) && defined(__SSE2__)) || CPU(X86_64)) && !OS(MACOSX)
+ #include <emmintrin.h>
+ #endif
+
++#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
++#error SSE2 parts must be built with -msse2
++#endif
++
+ namespace blink {
+
+ using namespace VectorMath;
+
++#ifndef BUILD_ONLY_THE_SSE2_PARTS
++
+ DirectConvolver::DirectConvolver(size_t inputBlockSize)
+ : m_inputBlockSize(inputBlockSize)
+ , m_buffer(inputBlockSize * 2)
+ {
++#if CPU(X86)
++ base::CPU cpu;
++ m_haveSSE2 = cpu.has_sse2();
++#endif
+ }
+
++#endif
++
++#ifdef BUILD_ONLY_THE_SSE2_PARTS
++void DirectConvolver::m_processSSE2(AudioFloatArray* convolutionKernel, const float* sourceP, float* destP, size_t framesToProcess)
++#else
+ void DirectConvolver::process(AudioFloatArray* convolutionKernel, const float* sourceP, float* destP, size_t framesToProcess)
++#endif
+ {
++#if CPU(X86) && !defined(__SSE2__)
++ if (m_haveSSE2) {
++ m_processSSE2(convolutionKernel, sourceP, destP, framesToProcess);
++ return;
++ }
++#endif
+ ASSERT(framesToProcess == m_inputBlockSize);
+ if (framesToProcess != m_inputBlockSize)
+ return;
+@@ -82,7 +107,7 @@
+ #endif // CPU(X86)
+ #else
+ size_t i = 0;
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ // Convolution using SSE2. Currently only do this if both |kernelSize| and |framesToProcess|
+ // are multiples of 4. If not, use the straightforward loop below.
+
+@@ -392,7 +417,7 @@
+ }
+ destP[i++] = sum;
+ }
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ }
+ #endif
+ #endif // OS(MACOSX)
+@@ -401,10 +426,14 @@
+ memcpy(m_buffer.data(), inputP, sizeof(float) * framesToProcess);
+ }
+
++#ifndef BUILD_ONLY_THE_SSE2_PARTS
++
+ void DirectConvolver::reset()
+ {
+ m_buffer.zero();
+ }
+
++#endif
++
+ } // namespace blink
+
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h 2017-03-05 17:26:26.241985240 +0100
+@@ -32,6 +32,7 @@
+ #include "platform/PlatformExport.h"
+ #include "platform/audio/AudioArray.h"
+ #include "wtf/Allocator.h"
++#include "wtf/CPU.h"
+ #include "wtf/Noncopyable.h"
+
+ namespace blink {
+@@ -50,6 +51,11 @@
+ size_t m_inputBlockSize;
+
+ AudioFloatArray m_buffer;
++
++#if CPU(X86)
++ bool m_haveSSE2;
++ void m_processSSE2(AudioFloatArray* convolutionKernel, const float* sourceP, float* destP, size_t framesToProcess);
++#endif
+ };
+
+ } // namespace blink
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolverSSE2.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolverSSE2.cpp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolverSSE2.cpp 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolverSSE2.cpp 2017-03-05 17:26:26.242985225 +0100
+@@ -0,0 +1,2 @@
++#define BUILD_ONLY_THE_SSE2_PARTS
++#include "DirectConvolver.cpp"
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp 2017-03-05 17:26:26.242985225 +0100
+@@ -26,15 +26,22 @@
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
++// include this first to get it before the CPU() function-like macro
++#include "base/cpu.h"
++
+ #include "platform/audio/SincResampler.h"
+ #include "platform/audio/AudioBus.h"
+ #include "wtf/CPU.h"
+ #include "wtf/MathExtras.h"
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ #include <emmintrin.h>
+ #endif
+
++#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
++#error SSE2 parts must be built with -msse2
++#endif
++
+ // Input buffer layout, dividing the total buffer into regions (r0 - r5):
+ //
+ // |----------------|----------------------------------------------------------------|----------------|
+@@ -64,6 +71,8 @@
+
+ namespace blink {
+
++#ifndef BUILD_ONLY_THE_SSE2_PARTS
++
+ SincResampler::SincResampler(double scaleFactor, unsigned kernelSize, unsigned numberOfKernelOffsets)
+ : m_scaleFactor(scaleFactor)
+ , m_kernelSize(kernelSize)
+@@ -77,6 +86,10 @@
+ , m_sourceProvider(nullptr)
+ , m_isBufferPrimed(false)
+ {
++#if CPU(X86)
++ base::CPU cpu;
++ m_haveSSE2 = cpu.has_sse2();
++#endif
+ initializeKernel();
+ }
+
+@@ -193,8 +206,20 @@
+ }
+ }
+
++#endif
++
++#ifdef BUILD_ONLY_THE_SSE2_PARTS
++void SincResampler::m_processSSE2(AudioSourceProvider* sourceProvider, float* destination, size_t framesToProcess)
++#else
+ void SincResampler::process(AudioSourceProvider* sourceProvider, float* destination, size_t framesToProcess)
++#endif
+ {
++#if CPU(X86) && !defined(__SSE2__)
++ if (m_haveSSE2) {
++ m_processSSE2(sourceProvider, destination, framesToProcess);
++ return;
++ }
++#endif
+ bool isGood = sourceProvider && m_blockSize > m_kernelSize && m_inputBuffer.size() >= m_blockSize + m_kernelSize && !(m_kernelSize % 2);
+ ASSERT(isGood);
+ if (!isGood)
+@@ -256,7 +281,7 @@
+ {
+ float input;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ // If the sourceP address is not 16-byte aligned, the first several frames (at most three) should be processed seperately.
+ while ((reinterpret_cast<uintptr_t>(inputP) & 0x0F) && n) {
+ CONVOLVE_ONE_SAMPLE
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h 2017-03-05 17:26:26.305984290 +0100
+@@ -33,6 +33,7 @@
+ #include "platform/audio/AudioArray.h"
+ #include "platform/audio/AudioSourceProvider.h"
+ #include "wtf/Allocator.h"
++#include "wtf/CPU.h"
+ #include "wtf/Noncopyable.h"
+
+ namespace blink {
+@@ -84,6 +85,11 @@
+
+ // The buffer is primed once at the very beginning of processing.
+ bool m_isBufferPrimed;
++
++#if CPU(X86)
++ bool m_haveSSE2;
++ void m_processSSE2(AudioSourceProvider*, float* destination, size_t framesToProcess);
++#endif
+ };
+
+ } // namespace blink
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResamplerSSE2.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResamplerSSE2.cpp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResamplerSSE2.cpp 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResamplerSSE2.cpp 2017-03-05 17:26:26.305984290 +0100
+@@ -0,0 +1,2 @@
++#define BUILD_ONLY_THE_SSE2_PARTS
++#include "SincResampler.cpp"
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp 2017-03-05 17:26:26.306984275 +0100
+@@ -22,6 +22,9 @@
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
++// include this first to get it before the CPU() function-like macro
++#include "base/cpu.h"
++
+ #include "platform/audio/VectorMath.h"
+ #include "wtf/Assertions.h"
+ #include "wtf/CPU.h"
+@@ -32,10 +35,14 @@
+ #include <Accelerate/Accelerate.h>
+ #endif
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ #include <emmintrin.h>
+ #endif
+
++#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
++#error SSE2 parts must be built with -msse2
++#endif
++
+ #if HAVE(ARM_NEON_INTRINSICS)
+ #include <arm_neon.h>
+ #endif
+@@ -118,11 +125,25 @@
+ }
+ #else
+
++#ifdef BUILD_ONLY_THE_SSE2_PARTS
++namespace SSE2 {
++#endif
++
++#if CPU(X86) && !defined(__SSE2__)
++static base::CPU cpu;
++#endif
++
+ void vsma(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess)
+ {
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vsma(sourceP, sourceStride, scale, destP, destStride, framesToProcess);
++ return;
++ }
++#endif
+ int n = framesToProcess;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if ((sourceStride == 1) && (destStride == 1)) {
+ float k = *scale;
+
+@@ -193,9 +214,15 @@
+
+ void vsmul(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess)
+ {
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vsmul(sourceP, sourceStride, scale, destP, destStride, framesToProcess);
++ return;
++ }
++#endif
+ int n = framesToProcess;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if ((sourceStride == 1) && (destStride == 1)) {
+ float k = *scale;
+
+@@ -266,16 +293,22 @@
+ sourceP += sourceStride;
+ destP += destStride;
+ }
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ }
+ #endif
+ }
+
+ void vadd(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess)
+ {
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vadd(source1P, sourceStride1, source2P, sourceStride2, destP, destStride, framesToProcess);
++ return;
++ }
++#endif
+ int n = framesToProcess;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if ((sourceStride1 ==1) && (sourceStride2 == 1) && (destStride == 1)) {
+ // If the sourceP address is not 16-byte aligned, the first several frames (at most three) should be processed separately.
+ while ((reinterpret_cast<size_t>(source1P) & 0x0F) && n) {
+@@ -378,17 +411,23 @@
+ source2P += sourceStride2;
+ destP += destStride;
+ }
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ }
+ #endif
+ }
+
+ void vmul(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess)
+ {
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vmul(source1P, sourceStride1, source2P, sourceStride2, destP, destStride, framesToProcess);
++ return;
++ }
++#endif
+
+ int n = framesToProcess;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if ((sourceStride1 == 1) && (sourceStride2 == 1) && (destStride == 1)) {
+ // If the source1P address is not 16-byte aligned, the first several frames (at most three) should be processed separately.
+ while ((reinterpret_cast<uintptr_t>(source1P) & 0x0F) && n) {
+@@ -460,8 +499,14 @@
+
+ void zvmul(const float* real1P, const float* imag1P, const float* real2P, const float* imag2P, float* realDestP, float* imagDestP, size_t framesToProcess)
+ {
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::zvmul(real1P, imag1P, real2P, imag2P, realDestP, imagDestP, framesToProcess);
++ return;
++ }
++#endif
+ unsigned i = 0;
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ // Only use the SSE optimization in the very common case that all addresses are 16-byte aligned.
+ // Otherwise, fall through to the scalar code below.
+ if (!(reinterpret_cast<uintptr_t>(real1P) & 0x0F)
+@@ -516,10 +561,16 @@
+
+ void vsvesq(const float* sourceP, int sourceStride, float* sumP, size_t framesToProcess)
+ {
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vsvesq(sourceP, sourceStride, sumP, framesToProcess);
++ return;
++ }
++#endif
+ int n = framesToProcess;
+ float sum = 0;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if (sourceStride == 1) {
+ // If the sourceP address is not 16-byte aligned, the first several frames (at most three) should be processed separately.
+ while ((reinterpret_cast<uintptr_t>(sourceP) & 0x0F) && n) {
+@@ -581,10 +632,16 @@
+
+ void vmaxmgv(const float* sourceP, int sourceStride, float* maxP, size_t framesToProcess)
+ {
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vmaxmgv(sourceP, sourceStride, maxP, framesToProcess);
++ return;
++ }
++#endif
+ int n = framesToProcess;
+ float max = 0;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if (sourceStride == 1) {
+ // If the sourceP address is not 16-byte aligned, the first several frames (at most three) should be processed separately.
+ while ((reinterpret_cast<uintptr_t>(sourceP) & 0x0F) && n) {
+@@ -648,6 +705,8 @@
+ *maxP = max;
+ }
+
++#ifndef BUILD_ONLY_THE_SSE2_PARTS
++
+ void vclip(const float* sourceP, int sourceStride, const float* lowThresholdP, const float* highThresholdP, float* destP, int destStride, size_t framesToProcess)
+ {
+ int n = framesToProcess;
+@@ -678,6 +737,12 @@
+ }
+ }
+
++#endif
++
++#ifdef BUILD_ONLY_THE_SSE2_PARTS
++} // namespace SSE2
++#endif
++
+ #endif // OS(MACOSX)
+
+ } // namespace VectorMath
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h 2017-03-05 17:26:26.306984275 +0100
+@@ -26,6 +26,7 @@
+ #define VectorMath_h
+
+ #include "platform/PlatformExport.h"
++#include "wtf/CPU.h"
+ #include "wtf/build_config.h"
+ #include <cstddef>
+
+@@ -55,6 +56,28 @@
+ // Copies elements while clipping values to the threshold inputs.
+ PLATFORM_EXPORT void vclip(const float* sourceP, int sourceStride, const float* lowThresholdP, const float* highThresholdP, float* destP, int destStride, size_t framesToProcess);
+
++#if CPU(X86)
++namespace SSE2 {
++// Vector scalar multiply and then add.
++PLATFORM_EXPORT void vsma(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess);
++
++PLATFORM_EXPORT void vsmul(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess);
++PLATFORM_EXPORT void vadd(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess);
++
++// Finds the maximum magnitude of a float vector.
++PLATFORM_EXPORT void vmaxmgv(const float* sourceP, int sourceStride, float* maxP, size_t framesToProcess);
++
++// Sums the squares of a float vector's elements.
++PLATFORM_EXPORT void vsvesq(const float* sourceP, int sourceStride, float* sumP, size_t framesToProcess);
++
++// For an element-by-element multiply of two float vectors.
++PLATFORM_EXPORT void vmul(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess);
++
++// Multiplies two complex vectors.
++PLATFORM_EXPORT void zvmul(const float* real1P, const float* imag1P, const float* real2P, const float* imag2P, float* realDestP, float* imagDestP, size_t framesToProcess);
++}
++#endif
++
+ } // namespace VectorMath
+ } // namespace blink
+
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMathSSE2.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMathSSE2.cpp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMathSSE2.cpp 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMathSSE2.cpp 2017-03-05 17:26:26.307984260 +0100
+@@ -0,0 +1,2 @@
++#define BUILD_ONLY_THE_SSE2_PARTS
++#include "VectorMath.cpp"
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/blink_platform.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/blink_platform.gyp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/blink_platform.gyp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/blink_platform.gyp 2017-03-05 17:26:26.307984260 +0100
+@@ -392,6 +392,11 @@
+ '<(DEPTH)/third_party/openmax_dl/dl/dl.gyp:openmax_dl',
+ ],
+ }],
++ ['target_arch == "ia32"', {
++ 'dependencies': [
++ 'blink_sse2',
++ ],
++ }],
+ ['target_arch=="arm"', {
+ 'dependencies': [
+ 'blink_arm_neon',
+@@ -406,6 +411,36 @@
+ }],
+ ],
+ },
++ {
++ 'target_name': 'blink_sse2',
++ 'conditions': [
++ ['target_arch=="ia32"', {
++ 'type': 'static_library',
++ 'dependencies': [
++ '<(DEPTH)/third_party/khronos/khronos.gyp:khronos_headers',
++ '../config.gyp:config',
++ '../wtf/wtf.gyp:wtf',
++ 'blink_common',
++ 'blink_heap_asm_stubs',
++ ],
++ 'defines': [
++ 'BLINK_PLATFORM_IMPLEMENTATION=1',
++ 'INSIDE_BLINK',
++ ],
++ 'sources': [
++ 'audio/DirectConvolverSSE2.cpp',
++ 'audio/SincResamplerSSE2.cpp',
++ 'audio/VectorMathSSE2.cpp',
++ ],
++ 'cflags': [
++ '-msse2',
++ '-mfpmath=sse',
++ ],
++ },{ # target_arch != "ia32"
++ 'type': 'none',
++ }],
++ ],
++ },
+ # The *NEON.cpp files fail to compile when -mthumb is passed. Force
+ # them to build in ARM mode.
+ # See https://bugs.webkit.org/show_bug.cgi?id=62916.
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h 2017-03-05 17:26:26.308984245 +0100
+@@ -5,7 +5,7 @@
+ #ifndef WebGLImageConversionSSE_h
+ #define WebGLImageConversionSSE_h
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+
+ #include <emmintrin.h>
+
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp 2017-03-05 17:26:26.309984231 +0100
+@@ -423,7 +423,7 @@
+ const uint32_t* source32 = reinterpret_cast_ptr<const uint32_t*>(source);
+ uint32_t* destination32 = reinterpret_cast_ptr<uint32_t*>(destination);
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::unpackOneRowOfBGRA8LittleToRGBA8(source32, destination32, pixelsPerRow);
+ #endif
+ for (unsigned i = 0; i < pixelsPerRow; ++i) {
+@@ -442,7 +442,7 @@
+
+ template<> void unpack<WebGLImageConversion::DataFormatRGBA5551, uint16_t, uint8_t>(const uint16_t* source, uint8_t* destination, unsigned pixelsPerRow)
+ {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::unpackOneRowOfRGBA5551LittleToRGBA8(source, destination, pixelsPerRow);
+ #endif
+ #if HAVE(ARM_NEON_INTRINSICS)
+@@ -464,7 +464,7 @@
+
+ template<> void unpack<WebGLImageConversion::DataFormatRGBA4444, uint16_t, uint8_t>(const uint16_t* source, uint8_t* destination, unsigned pixelsPerRow)
+ {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::unpackOneRowOfRGBA4444LittleToRGBA8(source, destination, pixelsPerRow);
+ #endif
+ #if HAVE(ARM_NEON_INTRINSICS)
+@@ -630,7 +630,7 @@
+ // FIXME: this routine is lossy and must be removed.
+ template<> void pack<WebGLImageConversion::DataFormatR8, WebGLImageConversion::AlphaDoUnmultiply, uint8_t, uint8_t>(const uint8_t* source, uint8_t* destination, unsigned pixelsPerRow)
+ {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::packOneRowOfRGBA8LittleToR8(source, destination, pixelsPerRow);
+ #endif
+ for (unsigned i = 0; i < pixelsPerRow; ++i) {
+@@ -667,7 +667,7 @@
+ // FIXME: this routine is lossy and must be removed.
+ template<> void pack<WebGLImageConversion::DataFormatRA8, WebGLImageConversion::AlphaDoUnmultiply, uint8_t, uint8_t>(const uint8_t* source, uint8_t* destination, unsigned pixelsPerRow)
+ {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::packOneRowOfRGBA8LittleToRA8(source, destination, pixelsPerRow);
+ #endif
+ for (unsigned i = 0; i < pixelsPerRow; ++i) {
+@@ -741,7 +741,7 @@
+ // FIXME: this routine is lossy and must be removed.
+ template<> void pack<WebGLImageConversion::DataFormatRGBA8, WebGLImageConversion::AlphaDoUnmultiply, uint8_t, uint8_t>(const uint8_t* source, uint8_t* destination, unsigned pixelsPerRow)
+ {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::packOneRowOfRGBA8LittleToRGBA8(source, destination, pixelsPerRow);
+ #else
+ for (unsigned i = 0; i < pixelsPerRow; ++i) {
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc 2017-03-05 18:14:44.694725685 +0100
+@@ -14,6 +14,7 @@
+ #include "webrtc/common_audio/real_fourier_ooura.h"
+ #include "webrtc/common_audio/real_fourier_openmax.h"
+ #include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
++#include "webrtc/system_wrappers/include/cpu_features_wrapper.h"
+
+ namespace webrtc {
+
+@@ -23,7 +24,15 @@
+
+ std::unique_ptr<RealFourier> RealFourier::Create(int fft_order) {
+ #if defined(RTC_USE_OPENMAX_DL)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && !defined(__SSE2__)
++ // x86 CPU detection required.
++ if (WebRtc_GetCPUInfo(kSSE2))
++ return std::unique_ptr<RealFourier>(new RealFourierOpenmax(fft_order));
++ else
++ return std::unique_ptr<RealFourier>(new RealFourierOoura(fft_order));
++#else
+ return std::unique_ptr<RealFourier>(new RealFourierOpenmax(fft_order));
++#endif
+ #else
+ return std::unique_ptr<RealFourier>(new RealFourierOoura(fft_order));
+ #endif
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/tools/gyp/pylib/gyp/generator/ninja.py qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/tools/gyp/pylib/gyp/generator/ninja.py
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/tools/gyp/pylib/gyp/generator/ninja.py 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/tools/gyp/pylib/gyp/generator/ninja.py 2017-03-05 17:26:26.310984216 +0100
+@@ -1345,6 +1345,8 @@
+ # Make sure that we have relative paths to our out/(Release|Debug), where we generate our .pri file, and then prepend $$PWD to them.
+ prefixed_objects = ['$$PWD/' + o for o in toAbsPaths(objects)]
+ prefixed_archives = ['$$PWD/' + o for o in toAbsPaths(libs)]
++ if len(solibs):
++ prefixed_solibs = ['$$PWD/' + so for so in toAbsPaths(solibs)]
+
+ pri_file.write("QMAKE_LFLAGS += %s\n" % qmakeLiteral(' '.join(prefixed_lflags)))
+ pri_file.write("OBJECTS += %s\n" % qmakeLiteral(' '.join(prefixed_objects)))
+@@ -1353,6 +1355,8 @@
+ pri_file.write("LIBS_PRIVATE += -Wl,--start-group %s -Wl,--end-group\n" % qmakeLiteral(' '.join(prefixed_archives)))
+ else:
+ pri_file.write("LIBS_PRIVATE += %s\n" % qmakeLiteral(' '.join(prefixed_archives)))
++ if len(solibs):
++ pri_file.write("LIBS_PRIVATE += %s\n" % qmakeLiteral(' '.join(prefixed_solibs)))
+ # External libs have to come after objects/archives, the linker resolve them in order.
+ pri_file.write("LIBS_PRIVATE += %s\n" % qmakeLiteral(' '.join(prefixed_library_dirs + prefixed_libraries)))
+ # Make sure that if ninja modifies one of the inputs, qmake/make will link again.
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn 2017-03-05 18:22:29.296777508 +0100
+@@ -1523,41 +1523,41 @@
+
+ if (v8_target_cpu == "x86") {
+ sources += [
+- "src/compiler/ia32/code-generator-ia32.cc",
+- "src/compiler/ia32/instruction-codes-ia32.h",
+- "src/compiler/ia32/instruction-scheduler-ia32.cc",
+- "src/compiler/ia32/instruction-selector-ia32.cc",
+- "src/crankshaft/ia32/lithium-codegen-ia32.cc",
+- "src/crankshaft/ia32/lithium-codegen-ia32.h",
+- "src/crankshaft/ia32/lithium-gap-resolver-ia32.cc",
+- "src/crankshaft/ia32/lithium-gap-resolver-ia32.h",
+- "src/crankshaft/ia32/lithium-ia32.cc",
+- "src/crankshaft/ia32/lithium-ia32.h",
+- "src/debug/ia32/debug-ia32.cc",
+- "src/full-codegen/ia32/full-codegen-ia32.cc",
+- "src/ia32/assembler-ia32-inl.h",
+- "src/ia32/assembler-ia32.cc",
+- "src/ia32/assembler-ia32.h",
+- "src/ia32/builtins-ia32.cc",
+- "src/ia32/code-stubs-ia32.cc",
+- "src/ia32/code-stubs-ia32.h",
+- "src/ia32/codegen-ia32.cc",
+- "src/ia32/codegen-ia32.h",
+- "src/ia32/cpu-ia32.cc",
+- "src/ia32/deoptimizer-ia32.cc",
+- "src/ia32/disasm-ia32.cc",
+- "src/ia32/frames-ia32.cc",
+- "src/ia32/frames-ia32.h",
+- "src/ia32/interface-descriptors-ia32.cc",
+- "src/ia32/macro-assembler-ia32.cc",
+- "src/ia32/macro-assembler-ia32.h",
+- "src/ic/ia32/access-compiler-ia32.cc",
+- "src/ic/ia32/handler-compiler-ia32.cc",
+- "src/ic/ia32/ic-compiler-ia32.cc",
+- "src/ic/ia32/ic-ia32.cc",
+- "src/ic/ia32/stub-cache-ia32.cc",
+- "src/regexp/ia32/regexp-macro-assembler-ia32.cc",
+- "src/regexp/ia32/regexp-macro-assembler-ia32.h",
++ "src/compiler/x87/code-generator-x87.cc",
++ "src/compiler/x87/instruction-codes-x87.h",
++ "src/compiler/x87/instruction-scheduler-x87.cc",
++ "src/compiler/x87/instruction-selector-x87.cc",
++ "src/crankshaft/x87/lithium-codegen-x87.cc",
++ "src/crankshaft/x87/lithium-codegen-x87.h",
++ "src/crankshaft/x87/lithium-gap-resolver-x87.cc",
++ "src/crankshaft/x87/lithium-gap-resolver-x87.h",
++ "src/crankshaft/x87/lithium-x87.cc",
++ "src/crankshaft/x87/lithium-x87.h",
++ "src/debug/x87/debug-x87.cc",
++ "src/full-codegen/x87/full-codegen-x87.cc",
++ "src/x87/assembler-x87-inl.h",
++ "src/x87/assembler-x87.cc",
++ "src/x87/assembler-x87.h",
++ "src/x87/builtins-x87.cc",
++ "src/x87/code-stubs-x87.cc",
++ "src/x87/code-stubs-x87.h",
++ "src/x87/codegen-x87.cc",
++ "src/x87/codegen-x87.h",
++ "src/x87/cpu-x87.cc",
++ "src/x87/deoptimizer-x87.cc",
++ "src/x87/disasm-x87.cc",
++ "src/x87/frames-x87.cc",
++ "src/x87/frames-x87.h",
++ "src/x87/interface-descriptors-x87.cc",
++ "src/x87/macro-assembler-x87.cc",
++ "src/x87/macro-assembler-x87.h",
++ "src/ic/x87/access-compiler-x87.cc",
++ "src/ic/x87/handler-compiler-x87.cc",
++ "src/ic/x87/ic-compiler-x87.cc",
++ "src/ic/x87/ic-x87.cc",
++ "src/ic/x87/stub-cache-x87.cc",
++ "src/regexp/x87/regexp-macro-assembler-x87.cc",
++ "src/regexp/x87/regexp-macro-assembler-x87.h",
+ ]
+ } else if (v8_target_cpu == "x64") {
+ sources += [
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/gypfiles/standalone.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/gypfiles/standalone.gypi
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/gypfiles/standalone.gypi 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/gypfiles/standalone.gypi 2017-03-05 18:20:24.988636550 +0100
+@@ -159,6 +159,9 @@
+ }, {
+ 'gomadir': '<!(/bin/echo -n ${HOME}/goma)',
+ }],
++ ['target_arch=="ia32"', {
++ 'v8_target_arch%': 'x87',
++ }],
+ ['host_arch!="ppc" and host_arch!="ppc64" and host_arch!="ppc64le" and host_arch!="s390" and host_arch!="s390x"', {
+ 'host_clang%': 1,
+ }, {
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/gypfiles/toolchain.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/gypfiles/toolchain.gypi
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/gypfiles/toolchain.gypi 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/gypfiles/toolchain.gypi 2017-03-05 17:27:34.951965375 +0100
+@@ -95,6 +95,9 @@
+ 'binutils_dir%': '',
+
+ 'conditions': [
++ ['target_arch=="ia32"', {
++ 'v8_target_arch%': 'x87',
++ }],
+ ['OS=="linux" and host_arch=="x64"', {
+ 'binutils_dir%': 'third_party/binutils/Linux_x64/Release/bin',
+ }],
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh 2017-03-05 17:27:34.953965345 +0100
+@@ -0,0 +1,56 @@
++#!/bin/sh
++# This script renames the v8 targets to _sse2 names so that they do not conflict
++# with the non-SSE2 versions.
++
++# Copyright 2016 Kevin Kofler. All rights reserved.
++# Redistribution and use in source and binary forms, with or without
++# modification, are permitted provided that the following conditions are
++# met:
++#
++# * Redistributions of source code must retain the above copyright
++# notice, this list of conditions and the following disclaimer.
++# * Redistributions in binary form must reproduce the above
++# copyright notice, this list of conditions and the following
++# disclaimer in the documentation and/or other materials provided
++# with the distribution.
++# * Neither the name of Google Inc. nor the names of its
++# contributors may be used to endorse or promote products derived
++# from this software without specific prior written permission.
++#
++# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
++# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
++# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
++# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
++# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++
++# add comment noting that the file is generated
++echo "# Generated from v8.gyp by make-v8-sse2-gyp.sh" >v8_sse2.gyp
++# rename all target names
++SUBTARGETS=`grep "'target_name': '" v8.gyp | sed -e "s/^.*'target_name': '//g" -e "s/',$//g"`
++SEDS=
++for SUBTARGET in $SUBTARGETS ; do
++ SEDS=$SEDS\ -e\ "s/'$SUBTARGET\(['#]\)/'${SUBTARGET}_sse2\1/g"
++done
++# in addition:
++# * set v8_target_arch to "ia32" (instead of "x87")
++# * rename all actions
++# * fix mksnapshot_exec to match the renamed target
++# * rename the generated snapshot.cc (but not mksnapshot.cc) to snapshot_sse2.cc
++# * rename the generated *libraries.cc to *libraries_sse2.cc
++# * rename the generated *.bin to *_sse2.bin
++# * set product_name and product_dir for the v8_sse2 target
++sed -e "s/^\( 'variables': {\)/\1\n 'v8_target_arch': 'ia32',/g" \
++ -e "s/\('action_name': '\)/\1v8_sse2_/g" \
++ $SEDS \
++ -e "s/\('mksnapshot_exec': '.*mksnapshot\)/\1_sse2/g" \
++ -e "s#/snapshot\.cc#/snapshot_sse2.cc#g" \
++ -e "s/libraries\.cc/libraries_sse2.cc/g" \
++ -e "s/\.bin/_sse2.bin/g" \
++ -e "s#^\( *\)\('target_name': 'v8_sse2',\)#\1\2\n\1'product_name': 'v8',\n\1'product_dir': '<(PRODUCT_DIR)/lib/sse2',#g" \
++ v8.gyp >>v8_sse2.gyp
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/v8.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/v8.gyp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/v8.gyp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/v8.gyp 2017-03-05 17:30:17.500552662 +0100
+@@ -36,6 +36,14 @@
+ 'v8_experimental_extra_library_files%': [],
+ 'mksnapshot_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)mksnapshot<(EXECUTABLE_SUFFIX)',
+ 'remove_v8base_debug_symbols%': 0,
++ 'conditions': [
++ # build V8 shared on ia32 so we can swap x87 vs. SSE2 builds
++ ['target_arch == "ia32"', {
++ 'v8_component%': 'shared_library',
++ }, {
++ 'v8_component%': '<(component)',
++ }],
++ ],
+ },
+ 'includes': ['../gypfiles/toolchain.gypi', '../gypfiles/features.gypi'],
+ 'targets': [
+@@ -49,8 +57,8 @@
+ }, {
+ 'toolsets': ['target'],
+ }],
+- ['component=="shared_library"', {
+- 'type': '<(component)',
++ ['v8_component=="shared_library"', {
++ 'type': '<(v8_component)',
+ 'sources': [
+ # Note: on non-Windows we still build this file so that gyp
+ # has some sources to link into the component.
+@@ -161,7 +169,7 @@
+ 'js2c',
+ ],
+ }],
+- ['component=="shared_library"', {
++ ['v8_component=="shared_library"', {
+ 'defines': [
+ 'V8_SHARED',
+ 'BUILDING_V8_SHARED',
+@@ -253,7 +261,7 @@
+ 'toolsets': ['target'],
+ 'dependencies': ['js2c'],
+ }],
+- ['component=="shared_library"', {
++ ['v8_component=="shared_library"', {
+ 'defines': [
+ 'BUILDING_V8_SHARED',
+ 'V8_SHARED',
+@@ -281,7 +289,7 @@
+ 'natives_blob',
+ ],
+ }],
+- ['component=="shared_library"', {
++ ['v8_component=="shared_library"', {
+ 'defines': [
+ 'V8_SHARED',
+ 'BUILDING_V8_SHARED',
+@@ -1608,7 +1616,7 @@
+ # See http://crbug.com/485155.
+ 'msvs_shard': 4,
+ }],
+- ['component=="shared_library"', {
++ ['v8_component=="shared_library"', {
+ 'defines': [
+ 'BUILDING_V8_SHARED',
+ 'V8_SHARED',
+diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/v8_sse2.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/v8_sse2.gyp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/v8_sse2.gyp 1970-01-01 01:00:00.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/v8_sse2.gyp 2017-03-05 18:25:37.781958850 +0100
+@@ -0,0 +1,2313 @@
++# Generated from v8.gyp by make-v8-sse2-gyp.sh
++# Copyright 2012 the V8 project authors. All rights reserved.
++# Redistribution and use in source and binary forms, with or without
++# modification, are permitted provided that the following conditions are
++# met:
++#
++# * Redistributions of source code must retain the above copyright
++# notice, this list of conditions and the following disclaimer.
++# * Redistributions in binary form must reproduce the above
++# copyright notice, this list of conditions and the following
++# disclaimer in the documentation and/or other materials provided
++# with the distribution.
++# * Neither the name of Google Inc. nor the names of its
++# contributors may be used to endorse or promote products derived
++# from this software without specific prior written permission.
++#
++# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
++# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
++# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
++# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
++# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++
++{
++ 'variables': {
++ 'v8_target_arch': 'ia32',
++ 'v8_code': 1,
++ 'v8_random_seed%': 314159265,
++ 'v8_vector_stores%': 0,
++ 'embed_script%': "",
++ 'warmup_script%': "",
++ 'v8_extra_library_files%': [],
++ 'v8_experimental_extra_library_files%': [],
++ 'mksnapshot_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)mksnapshot_sse2<(EXECUTABLE_SUFFIX)',
++ 'remove_v8base_debug_symbols%': 0,
++ 'conditions': [
++ # build V8 shared on ia32 so we can swap x87 vs. SSE2 builds
++ ['target_arch == "ia32"', {
++ 'v8_component%': 'shared_library',
++ }, {
++ 'v8_component%': '<(component)',
++ }],
++ ],
++ },
++ 'includes': ['../gypfiles/toolchain.gypi', '../gypfiles/features.gypi'],
++ 'targets': [
++ {
++ 'target_name': 'v8_sse2',
++ 'product_name': 'v8',
++ 'product_dir': '<(PRODUCT_DIR)/lib/sse2',
++ 'dependencies_traverse': 1,
++ 'dependencies': ['v8_maybe_snapshot_sse2'],
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ['v8_component=="shared_library"', {
++ 'type': '<(v8_component)',
++ 'sources': [
++ # Note: on non-Windows we still build this file so that gyp
++ # has some sources to link into the component.
++ 'v8dll-main.cc',
++ ],
++ 'include_dirs': [
++ '..',
++ ],
++ 'defines': [
++ 'V8_SHARED',
++ 'BUILDING_V8_SHARED',
++ ],
++ 'direct_dependent_settings': {
++ 'defines': [
++ 'V8_SHARED',
++ 'USING_V8_SHARED',
++ ],
++ },
++ 'target_conditions': [
++ ['OS=="android" and _toolset=="target"', {
++ 'libraries': [
++ '-llog',
++ ],
++ 'include_dirs': [
++ 'src/common/android/include',
++ ],
++ }],
++ ],
++ 'conditions': [
++ ['OS=="mac"', {
++ 'xcode_settings': {
++ 'OTHER_LDFLAGS': ['-dynamiclib', '-all_load']
++ },
++ }],
++ ['soname_version!=""', {
++ 'product_extension': 'so.<(soname_version)',
++ }],
++ ],
++ },
++ {
++ 'type': 'none',
++ }],
++ ],
++ 'direct_dependent_settings': {
++ 'include_dirs': [
++ '../include',
++ ],
++ },
++ },
++ {
++ # This rule delegates to either v8_snapshot, v8_nosnapshot, or
++ # v8_external_snapshot, depending on the current variables.
++ # The intention is to make the 'calling' rules a bit simpler.
++ 'target_name': 'v8_maybe_snapshot_sse2',
++ 'type': 'none',
++ 'conditions': [
++ ['v8_use_snapshot!="true"', {
++ # The dependency on v8_base should come from a transitive
++ # dependency however the Android toolchain requires libv8_base.a
++ # to appear before libv8_snapshot.a so it's listed explicitly.
++ 'dependencies': ['v8_base_sse2', 'v8_nosnapshot_sse2'],
++ }],
++ ['v8_use_snapshot=="true" and v8_use_external_startup_data==0', {
++ # The dependency on v8_base should come from a transitive
++ # dependency however the Android toolchain requires libv8_base.a
++ # to appear before libv8_snapshot.a so it's listed explicitly.
++ 'dependencies': ['v8_base_sse2', 'v8_snapshot_sse2'],
++ }],
++ ['v8_use_snapshot=="true" and v8_use_external_startup_data==1 and want_separate_host_toolset==0', {
++ 'dependencies': ['v8_base_sse2', 'v8_external_snapshot_sse2'],
++ 'inputs': [ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin', ],
++ }],
++ ['v8_use_snapshot=="true" and v8_use_external_startup_data==1 and want_separate_host_toolset==1', {
++ 'dependencies': ['v8_base_sse2', 'v8_external_snapshot_sse2'],
++ 'target_conditions': [
++ ['_toolset=="host"', {
++ 'inputs': [
++ '<(PRODUCT_DIR)/snapshot_blob_host_sse2.bin',
++ ],
++ }, {
++ 'inputs': [
++ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
++ ],
++ }],
++ ],
++ }],
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ]
++ },
++ {
++ 'target_name': 'v8_snapshot_sse2',
++ 'type': 'static_library',
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ 'dependencies': [
++ 'mksnapshot_sse2#host',
++ 'js2c_sse2#host',
++ ],
++ }, {
++ 'toolsets': ['target'],
++ 'dependencies': [
++ 'mksnapshot_sse2',
++ 'js2c_sse2',
++ ],
++ }],
++ ['v8_component=="shared_library"', {
++ 'defines': [
++ 'V8_SHARED',
++ 'BUILDING_V8_SHARED',
++ ],
++ 'direct_dependent_settings': {
++ 'defines': [
++ 'V8_SHARED',
++ 'USING_V8_SHARED',
++ ],
++ },
++ }],
++ ],
++ 'dependencies': [
++ 'v8_base_sse2',
++ ],
++ 'include_dirs+': [
++ '..',
++ ],
++ 'sources': [
++ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
++ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
++ '<(INTERMEDIATE_DIR)/snapshot_sse2.cc',
++ ],
++ 'actions': [
++ {
++ 'action_name': 'v8_sse2_run_mksnapshot',
++ 'inputs': [
++ '<(mksnapshot_exec)',
++ ],
++ 'conditions': [
++ ['embed_script!=""', {
++ 'inputs': [
++ '<(embed_script)',
++ ],
++ }],
++ ['warmup_script!=""', {
++ 'inputs': [
++ '<(warmup_script)',
++ ],
++ }],
++ ],
++ 'outputs': [
++ '<(INTERMEDIATE_DIR)/snapshot_sse2.cc',
++ ],
++ 'variables': {
++ 'mksnapshot_flags': [],
++ 'conditions': [
++ ['v8_random_seed!=0', {
++ 'mksnapshot_flags': ['--random-seed', '<(v8_random_seed)'],
++ }],
++ ['v8_vector_stores!=0', {
++ 'mksnapshot_flags': ['--vector-stores'],
++ }],
++ ],
++ },
++ 'action': [
++ '<(mksnapshot_exec)',
++ '<@(mksnapshot_flags)',
++ '--startup_src', '<@(INTERMEDIATE_DIR)/snapshot_sse2.cc',
++ '<(embed_script)',
++ '<(warmup_script)',
++ ],
++ },
++ ],
++ },
++ {
++ 'target_name': 'v8_nosnapshot_sse2',
++ 'type': 'static_library',
++ 'dependencies': [
++ 'v8_base_sse2',
++ ],
++ 'include_dirs+': [
++ '..',
++ ],
++ 'sources': [
++ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
++ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
++ 'snapshot/snapshot-empty.cc',
++ ],
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ 'dependencies': ['js2c_sse2#host'],
++ }, {
++ 'toolsets': ['target'],
++ 'dependencies': ['js2c_sse2'],
++ }],
++ ['v8_component=="shared_library"', {
++ 'defines': [
++ 'BUILDING_V8_SHARED',
++ 'V8_SHARED',
++ ],
++ }],
++ ]
++ },
++ {
++ 'target_name': 'v8_external_snapshot_sse2',
++ 'type': 'static_library',
++ 'conditions': [
++ [ 'v8_use_external_startup_data==1', {
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ 'dependencies': [
++ 'mksnapshot_sse2#host',
++ 'js2c_sse2#host',
++ 'natives_blob_sse2',
++ ]}, {
++ 'toolsets': ['target'],
++ 'dependencies': [
++ 'mksnapshot_sse2',
++ 'js2c_sse2',
++ 'natives_blob_sse2',
++ ],
++ }],
++ ['v8_component=="shared_library"', {
++ 'defines': [
++ 'V8_SHARED',
++ 'BUILDING_V8_SHARED',
++ ],
++ 'direct_dependent_settings': {
++ 'defines': [
++ 'V8_SHARED',
++ 'USING_V8_SHARED',
++ ],
++ },
++ }],
++ ],
++ 'dependencies': [
++ 'v8_base_sse2',
++ ],
++ 'include_dirs+': [
++ '..',
++ ],
++ 'sources': [
++ 'snapshot/natives-external.cc',
++ 'snapshot/snapshot-external.cc',
++ ],
++ 'actions': [
++ {
++ 'action_name': 'v8_sse2_run_mksnapshot (external)',
++ 'inputs': [
++ '<(mksnapshot_exec)',
++ ],
++ 'variables': {
++ 'mksnapshot_flags': [],
++ 'conditions': [
++ ['v8_random_seed!=0', {
++ 'mksnapshot_flags': ['--random-seed', '<(v8_random_seed)'],
++ }],
++ ['v8_vector_stores!=0', {
++ 'mksnapshot_flags': ['--vector-stores'],
++ }],
++ ],
++ },
++ 'conditions': [
++ ['embed_script!=""', {
++ 'inputs': [
++ '<(embed_script)',
++ ],
++ }],
++ ['warmup_script!=""', {
++ 'inputs': [
++ '<(warmup_script)',
++ ],
++ }],
++ ['want_separate_host_toolset==1', {
++ 'target_conditions': [
++ ['_toolset=="host"', {
++ 'outputs': [
++ '<(PRODUCT_DIR)/snapshot_blob_host_sse2.bin',
++ ],
++ 'action': [
++ '<(mksnapshot_exec)',
++ '<@(mksnapshot_flags)',
++ '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob_host_sse2.bin',
++ '<(embed_script)',
++ '<(warmup_script)',
++ ],
++ }, {
++ 'outputs': [
++ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
++ ],
++ 'action': [
++ '<(mksnapshot_exec)',
++ '<@(mksnapshot_flags)',
++ '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
++ '<(embed_script)',
++ '<(warmup_script)',
++ ],
++ }],
++ ],
++ }, {
++ 'outputs': [
++ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
++ ],
++ 'action': [
++ '<(mksnapshot_exec)',
++ '<@(mksnapshot_flags)',
++ '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
++ '<(embed_script)',
++ '<(warmup_script)',
++ ],
++ }],
++ ],
++ },
++ ],
++ }],
++ ],
++ },
++ {
++ 'target_name': 'v8_base_sse2',
++ 'type': 'static_library',
++ 'dependencies': [
++ 'v8_libbase_sse2',
++ 'v8_libsampler_sse2',
++ ],
++ 'variables': {
++ 'optimize': 'max',
++ },
++ 'include_dirs+': [
++ '..',
++ '<(DEPTH)',
++ ],
++ 'sources': [ ### gcmole(all) ###
++ '../include/v8-debug.h',
++ '../include/v8-experimental.h',
++ '../include/v8-platform.h',
++ '../include/v8-profiler.h',
++ '../include/v8-testing.h',
++ '../include/v8-util.h',
++ '../include/v8-version.h',
++ '../include/v8.h',
++ '../include/v8config.h',
++ 'accessors.cc',
++ 'accessors.h',
++ 'address-map.cc',
++ 'address-map.h',
++ 'allocation.cc',
++ 'allocation.h',
++ 'allocation-site-scopes.cc',
++ 'allocation-site-scopes.h',
++ 'api-experimental.cc',
++ 'api-experimental.h',
++ 'api.cc',
++ 'api.h',
++ 'api-arguments-inl.h',
++ 'api-arguments.cc',
++ 'api-arguments.h',
++ 'api-natives.cc',
++ 'api-natives.h',
++ 'arguments.cc',
++ 'arguments.h',
++ 'assembler.cc',
++ 'assembler.h',
++ 'assert-scope.h',
++ 'assert-scope.cc',
++ 'ast/ast-expression-rewriter.cc',
++ 'ast/ast-expression-rewriter.h',
++ 'ast/ast-expression-visitor.cc',
++ 'ast/ast-expression-visitor.h',
++ 'ast/ast-literal-reindexer.cc',
++ 'ast/ast-literal-reindexer.h',
++ 'ast/ast-numbering.cc',
++ 'ast/ast-numbering.h',
++ 'ast/ast-type-bounds.h',
++ 'ast/ast-value-factory.cc',
++ 'ast/ast-value-factory.h',
++ 'ast/ast.cc',
++ 'ast/ast.h',
++ 'ast/modules.cc',
++ 'ast/modules.h',
++ 'ast/prettyprinter.cc',
++ 'ast/prettyprinter.h',
++ 'ast/scopeinfo.cc',
++ 'ast/scopeinfo.h',
++ 'ast/scopes.cc',
++ 'ast/scopes.h',
++ 'ast/variables.cc',
++ 'ast/variables.h',
++ 'background-parsing-task.cc',
++ 'background-parsing-task.h',
++ 'bailout-reason.cc',
++ 'bailout-reason.h',
++ 'basic-block-profiler.cc',
++ 'basic-block-profiler.h',
++ 'bignum-dtoa.cc',
++ 'bignum-dtoa.h',
++ 'bignum.cc',
++ 'bignum.h',
++ 'bit-vector.cc',
++ 'bit-vector.h',
++ 'bootstrapper.cc',
++ 'bootstrapper.h',
++ 'builtins.cc',
++ 'builtins.h',
++ 'cached-powers.cc',
++ 'cached-powers.h',
++ 'cancelable-task.cc',
++ 'cancelable-task.h',
++ 'char-predicates.cc',
++ 'char-predicates-inl.h',
++ 'char-predicates.h',
++ 'checks.h',
++ 'code-events.h',
++ 'code-factory.cc',
++ 'code-factory.h',
++ 'code-stub-assembler.cc',
++ 'code-stub-assembler.h',
++ 'code-stubs.cc',
++ 'code-stubs.h',
++ 'code-stubs-hydrogen.cc',
++ 'codegen.cc',
++ 'codegen.h',
++ 'collector.h',
++ 'compilation-cache.cc',
++ 'compilation-cache.h',
++ 'compilation-dependencies.cc',
++ 'compilation-dependencies.h',
++ 'compilation-statistics.cc',
++ 'compilation-statistics.h',
++ 'compiler/access-builder.cc',
++ 'compiler/access-builder.h',
++ 'compiler/access-info.cc',
++ 'compiler/access-info.h',
++ 'compiler/all-nodes.cc',
++ 'compiler/all-nodes.h',
++ 'compiler/ast-graph-builder.cc',
++ 'compiler/ast-graph-builder.h',
++ 'compiler/ast-loop-assignment-analyzer.cc',
++ 'compiler/ast-loop-assignment-analyzer.h',
++ 'compiler/basic-block-instrumentor.cc',
++ 'compiler/basic-block-instrumentor.h',
++ 'compiler/branch-elimination.cc',
++ 'compiler/branch-elimination.h',
++ 'compiler/bytecode-branch-analysis.cc',
++ 'compiler/bytecode-branch-analysis.h',
++ 'compiler/bytecode-graph-builder.cc',
++ 'compiler/bytecode-graph-builder.h',
++ 'compiler/c-linkage.cc',
++ 'compiler/checkpoint-elimination.cc',
++ 'compiler/checkpoint-elimination.h',
++ 'compiler/code-generator-impl.h',
++ 'compiler/code-generator.cc',
++ 'compiler/code-generator.h',
++ 'compiler/code-assembler.cc',
++ 'compiler/code-assembler.h',
++ 'compiler/common-node-cache.cc',
++ 'compiler/common-node-cache.h',
++ 'compiler/common-operator-reducer.cc',
++ 'compiler/common-operator-reducer.h',
++ 'compiler/common-operator.cc',
++ 'compiler/common-operator.h',
++ 'compiler/control-builders.cc',
++ 'compiler/control-builders.h',
++ 'compiler/control-equivalence.cc',
++ 'compiler/control-equivalence.h',
++ 'compiler/control-flow-optimizer.cc',
++ 'compiler/control-flow-optimizer.h',
++ 'compiler/dead-code-elimination.cc',
++ 'compiler/dead-code-elimination.h',
++ 'compiler/diamond.h',
++ 'compiler/effect-control-linearizer.cc',
++ 'compiler/effect-control-linearizer.h',
++ 'compiler/escape-analysis.cc',
++ 'compiler/escape-analysis.h',
++ "compiler/escape-analysis-reducer.cc",
++ "compiler/escape-analysis-reducer.h",
++ 'compiler/frame.cc',
++ 'compiler/frame.h',
++ 'compiler/frame-elider.cc',
++ 'compiler/frame-elider.h',
++ "compiler/frame-states.cc",
++ "compiler/frame-states.h",
++ 'compiler/gap-resolver.cc',
++ 'compiler/gap-resolver.h',
++ 'compiler/graph-reducer.cc',
++ 'compiler/graph-reducer.h',
++ 'compiler/graph-replay.cc',
++ 'compiler/graph-replay.h',
++ 'compiler/graph-trimmer.cc',
++ 'compiler/graph-trimmer.h',
++ 'compiler/graph-visualizer.cc',
++ 'compiler/graph-visualizer.h',
++ 'compiler/graph.cc',
++ 'compiler/graph.h',
++ 'compiler/instruction-codes.h',
++ 'compiler/instruction-selector-impl.h',
++ 'compiler/instruction-selector.cc',
++ 'compiler/instruction-selector.h',
++ 'compiler/instruction-scheduler.cc',
++ 'compiler/instruction-scheduler.h',
++ 'compiler/instruction.cc',
++ 'compiler/instruction.h',
++ 'compiler/int64-lowering.cc',
++ 'compiler/int64-lowering.h',
++ 'compiler/js-builtin-reducer.cc',
++ 'compiler/js-builtin-reducer.h',
++ 'compiler/js-call-reducer.cc',
++ 'compiler/js-call-reducer.h',
++ 'compiler/js-context-specialization.cc',
++ 'compiler/js-context-specialization.h',
++ 'compiler/js-create-lowering.cc',
++ 'compiler/js-create-lowering.h',
++ 'compiler/js-frame-specialization.cc',
++ 'compiler/js-frame-specialization.h',
++ 'compiler/js-generic-lowering.cc',
++ 'compiler/js-generic-lowering.h',
++ 'compiler/js-global-object-specialization.cc',
++ 'compiler/js-global-object-specialization.h',
++ 'compiler/js-graph.cc',
++ 'compiler/js-graph.h',
++ 'compiler/js-inlining.cc',
++ 'compiler/js-inlining.h',
++ 'compiler/js-inlining-heuristic.cc',
++ 'compiler/js-inlining-heuristic.h',
++ 'compiler/js-intrinsic-lowering.cc',
++ 'compiler/js-intrinsic-lowering.h',
++ 'compiler/js-native-context-specialization.cc',
++ 'compiler/js-native-context-specialization.h',
++ 'compiler/js-operator.cc',
++ 'compiler/js-operator.h',
++ 'compiler/js-typed-lowering.cc',
++ 'compiler/js-typed-lowering.h',
++ 'compiler/jump-threading.cc',
++ 'compiler/jump-threading.h',
++ 'compiler/linkage.cc',
++ 'compiler/linkage.h',
++ 'compiler/liveness-analyzer.cc',
++ 'compiler/liveness-analyzer.h',
++ 'compiler/live-range-separator.cc',
++ 'compiler/live-range-separator.h',
++ 'compiler/load-elimination.cc',
++ 'compiler/load-elimination.h',
++ 'compiler/loop-analysis.cc',
++ 'compiler/loop-analysis.h',
++ 'compiler/loop-peeling.cc',
++ 'compiler/loop-peeling.h',
++ 'compiler/machine-operator-reducer.cc',
++ 'compiler/machine-operator-reducer.h',
++ 'compiler/machine-operator.cc',
++ 'compiler/machine-operator.h',
++ 'compiler/memory-optimizer.cc',
++ 'compiler/memory-optimizer.h',
++ 'compiler/move-optimizer.cc',
++ 'compiler/move-optimizer.h',
++ 'compiler/node-aux-data.h',
++ 'compiler/node-cache.cc',
++ 'compiler/node-cache.h',
++ 'compiler/node-marker.cc',
++ 'compiler/node-marker.h',
++ 'compiler/node-matchers.cc',
++ 'compiler/node-matchers.h',
++ 'compiler/node-properties.cc',
++ 'compiler/node-properties.h',
++ 'compiler/node.cc',
++ 'compiler/node.h',
++ 'compiler/opcodes.cc',
++ 'compiler/opcodes.h',
++ 'compiler/operation-typer.cc',
++ 'compiler/operation-typer.h',
++ 'compiler/operator-properties.cc',
++ 'compiler/operator-properties.h',
++ 'compiler/operator.cc',
++ 'compiler/operator.h',
++ 'compiler/osr.cc',
++ 'compiler/osr.h',
++ 'compiler/pipeline.cc',
++ 'compiler/pipeline.h',
++ 'compiler/pipeline-statistics.cc',
++ 'compiler/pipeline-statistics.h',
++ 'compiler/raw-machine-assembler.cc',
++ 'compiler/raw-machine-assembler.h',
++ 'compiler/redundancy-elimination.cc',
++ 'compiler/redundancy-elimination.h',
++ 'compiler/register-allocator.cc',
++ 'compiler/register-allocator.h',
++ 'compiler/register-allocator-verifier.cc',
++ 'compiler/register-allocator-verifier.h',
++ 'compiler/representation-change.cc',
++ 'compiler/representation-change.h',
++ 'compiler/schedule.cc',
++ 'compiler/schedule.h',
++ 'compiler/scheduler.cc',
++ 'compiler/scheduler.h',
++ 'compiler/select-lowering.cc',
++ 'compiler/select-lowering.h',
++ 'compiler/simplified-lowering.cc',
++ 'compiler/simplified-lowering.h',
++ 'compiler/simplified-operator-reducer.cc',
++ 'compiler/simplified-operator-reducer.h',
++ 'compiler/simplified-operator.cc',
++ 'compiler/simplified-operator.h',
++ 'compiler/source-position.cc',
++ 'compiler/source-position.h',
++ 'compiler/state-values-utils.cc',
++ 'compiler/state-values-utils.h',
++ 'compiler/store-store-elimination.cc',
++ 'compiler/store-store-elimination.h',
++ 'compiler/tail-call-optimization.cc',
++ 'compiler/tail-call-optimization.h',
++ 'compiler/type-hint-analyzer.cc',
++ 'compiler/type-hint-analyzer.h',
++ 'compiler/type-hints.cc',
++ 'compiler/type-hints.h',
++ 'compiler/typer.cc',
++ 'compiler/typer.h',
++ 'compiler/value-numbering-reducer.cc',
++ 'compiler/value-numbering-reducer.h',
++ 'compiler/verifier.cc',
++ 'compiler/verifier.h',
++ 'compiler/wasm-compiler.cc',
++ 'compiler/wasm-compiler.h',
++ 'compiler/wasm-linkage.cc',
++ 'compiler/zone-pool.cc',
++ 'compiler/zone-pool.h',
++ 'compiler.cc',
++ 'compiler.h',
++ 'context-measure.cc',
++ 'context-measure.h',
++ 'contexts-inl.h',
++ 'contexts.cc',
++ 'contexts.h',
++ 'conversions-inl.h',
++ 'conversions.cc',
++ 'conversions.h',
++ 'counters-inl.h',
++ 'counters.cc',
++ 'counters.h',
++ 'crankshaft/compilation-phase.cc',
++ 'crankshaft/compilation-phase.h',
++ 'crankshaft/hydrogen-alias-analysis.h',
++ 'crankshaft/hydrogen-bce.cc',
++ 'crankshaft/hydrogen-bce.h',
++ 'crankshaft/hydrogen-canonicalize.cc',
++ 'crankshaft/hydrogen-canonicalize.h',
++ 'crankshaft/hydrogen-check-elimination.cc',
++ 'crankshaft/hydrogen-check-elimination.h',
++ 'crankshaft/hydrogen-dce.cc',
++ 'crankshaft/hydrogen-dce.h',
++ 'crankshaft/hydrogen-dehoist.cc',
++ 'crankshaft/hydrogen-dehoist.h',
++ 'crankshaft/hydrogen-environment-liveness.cc',
++ 'crankshaft/hydrogen-environment-liveness.h',
++ 'crankshaft/hydrogen-escape-analysis.cc',
++ 'crankshaft/hydrogen-escape-analysis.h',
++ 'crankshaft/hydrogen-flow-engine.h',
++ 'crankshaft/hydrogen-gvn.cc',
++ 'crankshaft/hydrogen-gvn.h',
++ 'crankshaft/hydrogen-infer-representation.cc',
++ 'crankshaft/hydrogen-infer-representation.h',
++ 'crankshaft/hydrogen-infer-types.cc',
++ 'crankshaft/hydrogen-infer-types.h',
++ 'crankshaft/hydrogen-instructions.cc',
++ 'crankshaft/hydrogen-instructions.h',
++ 'crankshaft/hydrogen-load-elimination.cc',
++ 'crankshaft/hydrogen-load-elimination.h',
++ 'crankshaft/hydrogen-mark-deoptimize.cc',
++ 'crankshaft/hydrogen-mark-deoptimize.h',
++ 'crankshaft/hydrogen-mark-unreachable.cc',
++ 'crankshaft/hydrogen-mark-unreachable.h',
++ 'crankshaft/hydrogen-osr.cc',
++ 'crankshaft/hydrogen-osr.h',
++ 'crankshaft/hydrogen-range-analysis.cc',
++ 'crankshaft/hydrogen-range-analysis.h',
++ 'crankshaft/hydrogen-redundant-phi.cc',
++ 'crankshaft/hydrogen-redundant-phi.h',
++ 'crankshaft/hydrogen-removable-simulates.cc',
++ 'crankshaft/hydrogen-removable-simulates.h',
++ 'crankshaft/hydrogen-representation-changes.cc',
++ 'crankshaft/hydrogen-representation-changes.h',
++ 'crankshaft/hydrogen-sce.cc',
++ 'crankshaft/hydrogen-sce.h',
++ 'crankshaft/hydrogen-store-elimination.cc',
++ 'crankshaft/hydrogen-store-elimination.h',
++ 'crankshaft/hydrogen-types.cc',
++ 'crankshaft/hydrogen-types.h',
++ 'crankshaft/hydrogen-uint32-analysis.cc',
++ 'crankshaft/hydrogen-uint32-analysis.h',
++ 'crankshaft/hydrogen.cc',
++ 'crankshaft/hydrogen.h',
++ 'crankshaft/lithium-allocator-inl.h',
++ 'crankshaft/lithium-allocator.cc',
++ 'crankshaft/lithium-allocator.h',
++ 'crankshaft/lithium-codegen.cc',
++ 'crankshaft/lithium-codegen.h',
++ 'crankshaft/lithium.cc',
++ 'crankshaft/lithium.h',
++ 'crankshaft/lithium-inl.h',
++ 'crankshaft/typing.cc',
++ 'crankshaft/typing.h',
++ 'crankshaft/unique.h',
++ 'date.cc',
++ 'date.h',
++ 'dateparser-inl.h',
++ 'dateparser.cc',
++ 'dateparser.h',
++ 'debug/debug-evaluate.cc',
++ 'debug/debug-evaluate.h',
++ 'debug/debug-frames.cc',
++ 'debug/debug-frames.h',
++ 'debug/debug-scopes.cc',
++ 'debug/debug-scopes.h',
++ 'debug/debug.cc',
++ 'debug/debug.h',
++ 'debug/liveedit.cc',
++ 'debug/liveedit.h',
++ 'deoptimizer.cc',
++ 'deoptimizer.h',
++ 'disasm.h',
++ 'disassembler.cc',
++ 'disassembler.h',
++ 'diy-fp.cc',
++ 'diy-fp.h',
++ 'double.h',
++ 'dtoa.cc',
++ 'dtoa.h',
++ 'effects.h',
++ 'eh-frame.cc',
++ 'eh-frame.h',
++ 'elements-kind.cc',
++ 'elements-kind.h',
++ 'elements.cc',
++ 'elements.h',
++ 'execution.cc',
++ 'execution.h',
++ 'extensions/externalize-string-extension.cc',
++ 'extensions/externalize-string-extension.h',
++ 'extensions/free-buffer-extension.cc',
++ 'extensions/free-buffer-extension.h',
++ 'extensions/gc-extension.cc',
++ 'extensions/gc-extension.h',
++ 'extensions/ignition-statistics-extension.cc',
++ 'extensions/ignition-statistics-extension.h',
++ 'extensions/statistics-extension.cc',
++ 'extensions/statistics-extension.h',
++ 'extensions/trigger-failure-extension.cc',
++ 'extensions/trigger-failure-extension.h',
++ 'external-reference-table.cc',
++ 'external-reference-table.h',
++ 'factory.cc',
++ 'factory.h',
++ 'fast-accessor-assembler.cc',
++ 'fast-accessor-assembler.h',
++ 'fast-dtoa.cc',
++ 'fast-dtoa.h',
++ 'field-index.h',
++ 'field-index-inl.h',
++ 'field-type.cc',
++ 'field-type.h',
++ 'fixed-dtoa.cc',
++ 'fixed-dtoa.h',
++ 'flag-definitions.h',
++ 'flags.cc',
++ 'flags.h',
++ 'frames-inl.h',
++ 'frames.cc',
++ 'frames.h',
++ 'full-codegen/full-codegen.cc',
++ 'full-codegen/full-codegen.h',
++ 'futex-emulation.cc',
++ 'futex-emulation.h',
++ 'gdb-jit.cc',
++ 'gdb-jit.h',
++ 'global-handles.cc',
++ 'global-handles.h',
++ 'globals.h',
++ 'handles-inl.h',
++ 'handles.cc',
++ 'handles.h',
++ 'heap-symbols.h',
++ 'heap/array-buffer-tracker-inl.h',
++ 'heap/array-buffer-tracker.cc',
++ 'heap/array-buffer-tracker.h',
++ 'heap/memory-reducer.cc',
++ 'heap/memory-reducer.h',
++ 'heap/gc-idle-time-handler.cc',
++ 'heap/gc-idle-time-handler.h',
++ 'heap/gc-tracer.cc',
++ 'heap/gc-tracer.h',
++ 'heap/heap-inl.h',
++ 'heap/heap.cc',
++ 'heap/heap.h',
++ 'heap/incremental-marking-inl.h',
++ 'heap/incremental-marking-job.cc',
++ 'heap/incremental-marking-job.h',
++ 'heap/incremental-marking.cc',
++ 'heap/incremental-marking.h',
++ 'heap/mark-compact-inl.h',
++ 'heap/mark-compact.cc',
++ 'heap/mark-compact.h',
++ 'heap/object-stats.cc',
++ 'heap/object-stats.h',
++ 'heap/objects-visiting-inl.h',
++ 'heap/objects-visiting.cc',
++ 'heap/objects-visiting.h',
++ 'heap/page-parallel-job.h',
++ 'heap/remembered-set.cc',
++ 'heap/remembered-set.h',
++ 'heap/scavenge-job.h',
++ 'heap/scavenge-job.cc',
++ 'heap/scavenger-inl.h',
++ 'heap/scavenger.cc',
++ 'heap/scavenger.h',
++ 'heap/slot-set.h',
++ 'heap/spaces-inl.h',
++ 'heap/spaces.cc',
++ 'heap/spaces.h',
++ 'heap/store-buffer.cc',
++ 'heap/store-buffer.h',
++ 'i18n.cc',
++ 'i18n.h',
++ 'icu_util.cc',
++ 'icu_util.h',
++ 'ic/access-compiler.cc',
++ 'ic/access-compiler.h',
++ 'ic/call-optimization.cc',
++ 'ic/call-optimization.h',
++ 'ic/handler-compiler.cc',
++ 'ic/handler-compiler.h',
++ 'ic/ic-inl.h',
++ 'ic/ic-state.cc',
++ 'ic/ic-state.h',
++ 'ic/ic.cc',
++ 'ic/ic.h',
++ 'ic/ic-compiler.cc',
++ 'ic/ic-compiler.h',
++ 'identity-map.cc',
++ 'identity-map.h',
++ 'interface-descriptors.cc',
++ 'interface-descriptors.h',
++ 'interpreter/bytecodes.cc',
++ 'interpreter/bytecodes.h',
++ 'interpreter/bytecode-array-builder.cc',
++ 'interpreter/bytecode-array-builder.h',
++ 'interpreter/bytecode-array-iterator.cc',
++ 'interpreter/bytecode-array-iterator.h',
++ 'interpreter/bytecode-array-writer.cc',
++ 'interpreter/bytecode-array-writer.h',
++ 'interpreter/bytecode-dead-code-optimizer.cc',
++ 'interpreter/bytecode-dead-code-optimizer.h',
++ 'interpreter/bytecode-label.h',
++ 'interpreter/bytecode-generator.cc',
++ 'interpreter/bytecode-generator.h',
++ 'interpreter/bytecode-peephole-optimizer.cc',
++ 'interpreter/bytecode-peephole-optimizer.h',
++ 'interpreter/bytecode-pipeline.cc',
++ 'interpreter/bytecode-pipeline.h',
++ 'interpreter/bytecode-register-allocator.cc',
++ 'interpreter/bytecode-register-allocator.h',
++ 'interpreter/bytecode-register-optimizer.cc',
++ 'interpreter/bytecode-register-optimizer.h',
++ 'interpreter/bytecode-traits.h',
++ 'interpreter/constant-array-builder.cc',
++ 'interpreter/constant-array-builder.h',
++ 'interpreter/control-flow-builders.cc',
++ 'interpreter/control-flow-builders.h',
++ 'interpreter/handler-table-builder.cc',
++ 'interpreter/handler-table-builder.h',
++ 'interpreter/interpreter.cc',
++ 'interpreter/interpreter.h',
++ 'interpreter/interpreter-assembler.cc',
++ 'interpreter/interpreter-assembler.h',
++ 'interpreter/interpreter-intrinsics.cc',
++ 'interpreter/interpreter-intrinsics.h',
++ 'interpreter/source-position-table.cc',
++ 'interpreter/source-position-table.h',
++ 'isolate-inl.h',
++ 'isolate.cc',
++ 'isolate.h',
++ 'json-parser.cc',
++ 'json-parser.h',
++ 'json-stringifier.cc',
++ 'json-stringifier.h',
++ 'keys.h',
++ 'keys.cc',
++ 'layout-descriptor-inl.h',
++ 'layout-descriptor.cc',
++ 'layout-descriptor.h',
++ 'list-inl.h',
++ 'list.h',
++ 'locked-queue-inl.h',
++ 'locked-queue.h',
++ 'log-inl.h',
++ 'log-utils.cc',
++ 'log-utils.h',
++ 'log.cc',
++ 'log.h',
++ 'lookup.cc',
++ 'lookup.h',
++ 'macro-assembler.h',
++ 'machine-type.cc',
++ 'machine-type.h',
++ 'messages.cc',
++ 'messages.h',
++ 'msan.h',
++ 'objects-body-descriptors-inl.h',
++ 'objects-body-descriptors.h',
++ 'objects-debug.cc',
++ 'objects-inl.h',
++ 'objects-printer.cc',
++ 'objects.cc',
++ 'objects.h',
++ 'optimizing-compile-dispatcher.cc',
++ 'optimizing-compile-dispatcher.h',
++ 'ostreams.cc',
++ 'ostreams.h',
++ 'parsing/expression-classifier.h',
++ 'parsing/func-name-inferrer.cc',
++ 'parsing/func-name-inferrer.h',
++ 'parsing/parameter-initializer-rewriter.cc',
++ 'parsing/parameter-initializer-rewriter.h',
++ 'parsing/parser-base.h',
++ 'parsing/parser.cc',
++ 'parsing/parser.h',
++ 'parsing/pattern-rewriter.cc',
++ 'parsing/preparse-data-format.h',
++ 'parsing/preparse-data.cc',
++ 'parsing/preparse-data.h',
++ 'parsing/preparser.cc',
++ 'parsing/preparser.h',
++ 'parsing/rewriter.cc',
++ 'parsing/rewriter.h',
++ 'parsing/scanner-character-streams.cc',
++ 'parsing/scanner-character-streams.h',
++ 'parsing/scanner.cc',
++ 'parsing/scanner.h',
++ 'parsing/token.cc',
++ 'parsing/token.h',
++ 'pending-compilation-error-handler.cc',
++ 'pending-compilation-error-handler.h',
++ 'perf-jit.cc',
++ 'perf-jit.h',
++ 'profiler/allocation-tracker.cc',
++ 'profiler/allocation-tracker.h',
++ 'profiler/circular-queue-inl.h',
++ 'profiler/circular-queue.h',
++ 'profiler/cpu-profiler-inl.h',
++ 'profiler/cpu-profiler.cc',
++ 'profiler/cpu-profiler.h',
++ 'profiler/heap-profiler.cc',
++ 'profiler/heap-profiler.h',
++ 'profiler/heap-snapshot-generator-inl.h',
++ 'profiler/heap-snapshot-generator.cc',
++ 'profiler/heap-snapshot-generator.h',
++ 'profiler/profiler-listener.cc',
++ 'profiler/profiler-listener.h',
++ 'profiler/profile-generator-inl.h',
++ 'profiler/profile-generator.cc',
++ 'profiler/profile-generator.h',
++ 'profiler/sampling-heap-profiler.cc',
++ 'profiler/sampling-heap-profiler.h',
++ 'profiler/strings-storage.cc',
++ 'profiler/strings-storage.h',
++ 'profiler/tick-sample.cc',
++ 'profiler/tick-sample.h',
++ 'profiler/unbound-queue-inl.h',
++ 'profiler/unbound-queue.h',
++ 'property-descriptor.cc',
++ 'property-descriptor.h',
++ 'property-details.h',
++ 'property.cc',
++ 'property.h',
++ 'prototype.h',
++ 'regexp/bytecodes-irregexp.h',
++ 'regexp/interpreter-irregexp.cc',
++ 'regexp/interpreter-irregexp.h',
++ 'regexp/jsregexp-inl.h',
++ 'regexp/jsregexp.cc',
++ 'regexp/jsregexp.h',
++ 'regexp/regexp-ast.cc',
++ 'regexp/regexp-ast.h',
++ 'regexp/regexp-macro-assembler-irregexp-inl.h',
++ 'regexp/regexp-macro-assembler-irregexp.cc',
++ 'regexp/regexp-macro-assembler-irregexp.h',
++ 'regexp/regexp-macro-assembler-tracer.cc',
++ 'regexp/regexp-macro-assembler-tracer.h',
++ 'regexp/regexp-macro-assembler.cc',
++ 'regexp/regexp-macro-assembler.h',
++ 'regexp/regexp-parser.cc',
++ 'regexp/regexp-parser.h',
++ 'regexp/regexp-stack.cc',
++ 'regexp/regexp-stack.h',
++ 'register-configuration.cc',
++ 'register-configuration.h',
++ 'runtime-profiler.cc',
++ 'runtime-profiler.h',
++ 'runtime/runtime-array.cc',
++ 'runtime/runtime-atomics.cc',
++ 'runtime/runtime-classes.cc',
++ 'runtime/runtime-collections.cc',
++ 'runtime/runtime-compiler.cc',
++ 'runtime/runtime-date.cc',
++ 'runtime/runtime-debug.cc',
++ 'runtime/runtime-forin.cc',
++ 'runtime/runtime-function.cc',
++ 'runtime/runtime-futex.cc',
++ 'runtime/runtime-generator.cc',
++ 'runtime/runtime-i18n.cc',
++ 'runtime/runtime-internal.cc',
++ 'runtime/runtime-interpreter.cc',
++ 'runtime/runtime-literals.cc',
++ 'runtime/runtime-liveedit.cc',
++ 'runtime/runtime-maths.cc',
++ 'runtime/runtime-numbers.cc',
++ 'runtime/runtime-object.cc',
++ 'runtime/runtime-operators.cc',
++ 'runtime/runtime-proxy.cc',
++ 'runtime/runtime-regexp.cc',
++ 'runtime/runtime-scopes.cc',
++ 'runtime/runtime-simd.cc',
++ 'runtime/runtime-strings.cc',
++ 'runtime/runtime-symbol.cc',
++ 'runtime/runtime-test.cc',
++ 'runtime/runtime-typedarray.cc',
++ 'runtime/runtime-utils.h',
++ 'runtime/runtime.cc',
++ 'runtime/runtime.h',
++ 'safepoint-table.cc',
++ 'safepoint-table.h',
++ 'signature.h',
++ 'simulator.h',
++ 'small-pointer-list.h',
++ 'snapshot/code-serializer.cc',
++ 'snapshot/code-serializer.h',
++ 'snapshot/deserializer.cc',
++ 'snapshot/deserializer.h',
++ 'snapshot/natives.h',
++ 'snapshot/natives-common.cc',
++ 'snapshot/partial-serializer.cc',
++ 'snapshot/partial-serializer.h',
++ 'snapshot/serializer.cc',
++ 'snapshot/serializer.h',
++ 'snapshot/serializer-common.cc',
++ 'snapshot/serializer-common.h',
++ 'snapshot/snapshot.h',
++ 'snapshot/snapshot-common.cc',
++ 'snapshot/snapshot-source-sink.cc',
++ 'snapshot/snapshot-source-sink.h',
++ 'snapshot/startup-serializer.cc',
++ 'snapshot/startup-serializer.h',
++ 'source-position.h',
++ 'splay-tree.h',
++ 'splay-tree-inl.h',
++ 'startup-data-util.cc',
++ 'startup-data-util.h',
++ 'string-builder.cc',
++ 'string-builder.h',
++ 'string-search.h',
++ 'string-stream.cc',
++ 'string-stream.h',
++ 'strtod.cc',
++ 'strtod.h',
++ 'ic/stub-cache.cc',
++ 'ic/stub-cache.h',
++ 'tracing/trace-event.cc',
++ 'tracing/trace-event.h',
++ 'transitions-inl.h',
++ 'transitions.cc',
++ 'transitions.h',
++ 'type-cache.cc',
++ 'type-cache.h',
++ 'type-feedback-vector-inl.h',
++ 'type-feedback-vector.cc',
++ 'type-feedback-vector.h',
++ 'type-info.cc',
++ 'type-info.h',
++ 'types.cc',
++ 'types.h',
++ 'typing-asm.cc',
++ 'typing-asm.h',
++ 'unicode-inl.h',
++ 'unicode.cc',
++ 'unicode.h',
++ 'unicode-cache-inl.h',
++ 'unicode-cache.h',
++ 'unicode-decoder.cc',
++ 'unicode-decoder.h',
++ 'uri.cc',
++ 'uri.h',
++ 'utils-inl.h',
++ 'utils.cc',
++ 'utils.h',
++ 'v8.cc',
++ 'v8.h',
++ 'v8memory.h',
++ 'v8threads.cc',
++ 'v8threads.h',
++ 'vector.h',
++ 'version.cc',
++ 'version.h',
++ 'vm-state-inl.h',
++ 'vm-state.h',
++ 'wasm/asm-types.cc',
++ 'wasm/asm-types.h',
++ 'wasm/asm-wasm-builder.cc',
++ 'wasm/asm-wasm-builder.h',
++ 'wasm/ast-decoder.cc',
++ 'wasm/ast-decoder.h',
++ 'wasm/decoder.h',
++ 'wasm/encoder.cc',
++ 'wasm/encoder.h',
++ 'wasm/leb-helper.h',
++ 'wasm/module-decoder.cc',
++ 'wasm/module-decoder.h',
++ 'wasm/switch-logic.h',
++ 'wasm/switch-logic.cc',
++ 'wasm/wasm-debug.cc',
++ 'wasm/wasm-debug.h',
++ 'wasm/wasm-external-refs.cc',
++ 'wasm/wasm-external-refs.h',
++ 'wasm/wasm-function-name-table.cc',
++ 'wasm/wasm-function-name-table.h',
++ 'wasm/wasm-js.cc',
++ 'wasm/wasm-js.h',
++ 'wasm/wasm-macro-gen.h',
++ 'wasm/wasm-module.cc',
++ 'wasm/wasm-module.h',
++ 'wasm/wasm-interpreter.cc',
++ 'wasm/wasm-interpreter.h',
++ 'wasm/wasm-opcodes.cc',
++ 'wasm/wasm-opcodes.h',
++ 'wasm/wasm-result.cc',
++ 'wasm/wasm-result.h',
++ 'zone.cc',
++ 'zone.h',
++ 'zone-allocator.h',
++ 'zone-containers.h',
++ ],
++ 'conditions': [
++ ['OS!="win" and remove_v8base_debug_symbols==1', {
++ 'cflags!': ['-g', '-gdwarf-4'],
++ }],
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ['v8_target_arch=="arm"', {
++ 'sources': [ ### gcmole(arch:arm) ###
++ 'arm/assembler-arm-inl.h',
++ 'arm/assembler-arm.cc',
++ 'arm/assembler-arm.h',
++ 'arm/builtins-arm.cc',
++ 'arm/code-stubs-arm.cc',
++ 'arm/code-stubs-arm.h',
++ 'arm/codegen-arm.cc',
++ 'arm/codegen-arm.h',
++ 'arm/constants-arm.h',
++ 'arm/constants-arm.cc',
++ 'arm/cpu-arm.cc',
++ 'arm/deoptimizer-arm.cc',
++ 'arm/disasm-arm.cc',
++ 'arm/frames-arm.cc',
++ 'arm/frames-arm.h',
++ 'arm/interface-descriptors-arm.cc',
++ 'arm/interface-descriptors-arm.h',
++ 'arm/macro-assembler-arm.cc',
++ 'arm/macro-assembler-arm.h',
++ 'arm/simulator-arm.cc',
++ 'arm/simulator-arm.h',
++ 'compiler/arm/code-generator-arm.cc',
++ 'compiler/arm/instruction-codes-arm.h',
++ 'compiler/arm/instruction-scheduler-arm.cc',
++ 'compiler/arm/instruction-selector-arm.cc',
++ 'crankshaft/arm/lithium-arm.cc',
++ 'crankshaft/arm/lithium-arm.h',
++ 'crankshaft/arm/lithium-codegen-arm.cc',
++ 'crankshaft/arm/lithium-codegen-arm.h',
++ 'crankshaft/arm/lithium-gap-resolver-arm.cc',
++ 'crankshaft/arm/lithium-gap-resolver-arm.h',
++ 'debug/arm/debug-arm.cc',
++ 'full-codegen/arm/full-codegen-arm.cc',
++ 'ic/arm/access-compiler-arm.cc',
++ 'ic/arm/handler-compiler-arm.cc',
++ 'ic/arm/ic-arm.cc',
++ 'ic/arm/ic-compiler-arm.cc',
++ 'ic/arm/stub-cache-arm.cc',
++ 'regexp/arm/regexp-macro-assembler-arm.cc',
++ 'regexp/arm/regexp-macro-assembler-arm.h',
++ ],
++ }],
++ ['v8_target_arch=="arm64"', {
++ 'sources': [ ### gcmole(arch:arm64) ###
++ 'arm64/assembler-arm64.cc',
++ 'arm64/assembler-arm64.h',
++ 'arm64/assembler-arm64-inl.h',
++ 'arm64/builtins-arm64.cc',
++ 'arm64/codegen-arm64.cc',
++ 'arm64/codegen-arm64.h',
++ 'arm64/code-stubs-arm64.cc',
++ 'arm64/code-stubs-arm64.h',
++ 'arm64/constants-arm64.h',
++ 'arm64/cpu-arm64.cc',
++ 'arm64/decoder-arm64.cc',
++ 'arm64/decoder-arm64.h',
++ 'arm64/decoder-arm64-inl.h',
++ 'arm64/deoptimizer-arm64.cc',
++ 'arm64/disasm-arm64.cc',
++ 'arm64/disasm-arm64.h',
++ 'arm64/frames-arm64.cc',
++ 'arm64/frames-arm64.h',
++ 'arm64/instructions-arm64.cc',
++ 'arm64/instructions-arm64.h',
++ 'arm64/instrument-arm64.cc',
++ 'arm64/instrument-arm64.h',
++ 'arm64/interface-descriptors-arm64.cc',
++ 'arm64/interface-descriptors-arm64.h',
++ 'arm64/macro-assembler-arm64.cc',
++ 'arm64/macro-assembler-arm64.h',
++ 'arm64/macro-assembler-arm64-inl.h',
++ 'arm64/simulator-arm64.cc',
++ 'arm64/simulator-arm64.h',
++ 'arm64/utils-arm64.cc',
++ 'arm64/utils-arm64.h',
++ 'compiler/arm64/code-generator-arm64.cc',
++ 'compiler/arm64/instruction-codes-arm64.h',
++ 'compiler/arm64/instruction-scheduler-arm64.cc',
++ 'compiler/arm64/instruction-selector-arm64.cc',
++ 'crankshaft/arm64/delayed-masm-arm64.cc',
++ 'crankshaft/arm64/delayed-masm-arm64.h',
++ 'crankshaft/arm64/delayed-masm-arm64-inl.h',
++ 'crankshaft/arm64/lithium-arm64.cc',
++ 'crankshaft/arm64/lithium-arm64.h',
++ 'crankshaft/arm64/lithium-codegen-arm64.cc',
++ 'crankshaft/arm64/lithium-codegen-arm64.h',
++ 'crankshaft/arm64/lithium-gap-resolver-arm64.cc',
++ 'crankshaft/arm64/lithium-gap-resolver-arm64.h',
++ 'debug/arm64/debug-arm64.cc',
++ 'full-codegen/arm64/full-codegen-arm64.cc',
++ 'ic/arm64/access-compiler-arm64.cc',
++ 'ic/arm64/handler-compiler-arm64.cc',
++ 'ic/arm64/ic-arm64.cc',
++ 'ic/arm64/ic-compiler-arm64.cc',
++ 'ic/arm64/stub-cache-arm64.cc',
++ 'regexp/arm64/regexp-macro-assembler-arm64.cc',
++ 'regexp/arm64/regexp-macro-assembler-arm64.h',
++ ],
++ }],
++ ['v8_target_arch=="ia32"', {
++ 'sources': [ ### gcmole(arch:ia32) ###
++ 'ia32/assembler-ia32-inl.h',
++ 'ia32/assembler-ia32.cc',
++ 'ia32/assembler-ia32.h',
++ 'ia32/builtins-ia32.cc',
++ 'ia32/code-stubs-ia32.cc',
++ 'ia32/code-stubs-ia32.h',
++ 'ia32/codegen-ia32.cc',
++ 'ia32/codegen-ia32.h',
++ 'ia32/cpu-ia32.cc',
++ 'ia32/deoptimizer-ia32.cc',
++ 'ia32/disasm-ia32.cc',
++ 'ia32/frames-ia32.cc',
++ 'ia32/frames-ia32.h',
++ 'ia32/interface-descriptors-ia32.cc',
++ 'ia32/macro-assembler-ia32.cc',
++ 'ia32/macro-assembler-ia32.h',
++ 'compiler/ia32/code-generator-ia32.cc',
++ 'compiler/ia32/instruction-codes-ia32.h',
++ 'compiler/ia32/instruction-scheduler-ia32.cc',
++ 'compiler/ia32/instruction-selector-ia32.cc',
++ 'crankshaft/ia32/lithium-codegen-ia32.cc',
++ 'crankshaft/ia32/lithium-codegen-ia32.h',
++ 'crankshaft/ia32/lithium-gap-resolver-ia32.cc',
++ 'crankshaft/ia32/lithium-gap-resolver-ia32.h',
++ 'crankshaft/ia32/lithium-ia32.cc',
++ 'crankshaft/ia32/lithium-ia32.h',
++ 'debug/ia32/debug-ia32.cc',
++ 'full-codegen/ia32/full-codegen-ia32.cc',
++ 'ic/ia32/access-compiler-ia32.cc',
++ 'ic/ia32/handler-compiler-ia32.cc',
++ 'ic/ia32/ic-ia32.cc',
++ 'ic/ia32/ic-compiler-ia32.cc',
++ 'ic/ia32/stub-cache-ia32.cc',
++ 'regexp/ia32/regexp-macro-assembler-ia32.cc',
++ 'regexp/ia32/regexp-macro-assembler-ia32.h',
++ ],
++ }],
++ ['v8_target_arch=="x87"', {
++ 'sources': [ ### gcmole(arch:x87) ###
++ 'x87/assembler-x87-inl.h',
++ 'x87/assembler-x87.cc',
++ 'x87/assembler-x87.h',
++ 'x87/builtins-x87.cc',
++ 'x87/code-stubs-x87.cc',
++ 'x87/code-stubs-x87.h',
++ 'x87/codegen-x87.cc',
++ 'x87/codegen-x87.h',
++ 'x87/cpu-x87.cc',
++ 'x87/deoptimizer-x87.cc',
++ 'x87/disasm-x87.cc',
++ 'x87/frames-x87.cc',
++ 'x87/frames-x87.h',
++ 'x87/interface-descriptors-x87.cc',
++ 'x87/macro-assembler-x87.cc',
++ 'x87/macro-assembler-x87.h',
++ 'compiler/x87/code-generator-x87.cc',
++ 'compiler/x87/instruction-codes-x87.h',
++ 'compiler/x87/instruction-scheduler-x87.cc',
++ 'compiler/x87/instruction-selector-x87.cc',
++ 'crankshaft/x87/lithium-codegen-x87.cc',
++ 'crankshaft/x87/lithium-codegen-x87.h',
++ 'crankshaft/x87/lithium-gap-resolver-x87.cc',
++ 'crankshaft/x87/lithium-gap-resolver-x87.h',
++ 'crankshaft/x87/lithium-x87.cc',
++ 'crankshaft/x87/lithium-x87.h',
++ 'debug/x87/debug-x87.cc',
++ 'full-codegen/x87/full-codegen-x87.cc',
++ 'ic/x87/access-compiler-x87.cc',
++ 'ic/x87/handler-compiler-x87.cc',
++ 'ic/x87/ic-x87.cc',
++ 'ic/x87/ic-compiler-x87.cc',
++ 'ic/x87/stub-cache-x87.cc',
++ 'regexp/x87/regexp-macro-assembler-x87.cc',
++ 'regexp/x87/regexp-macro-assembler-x87.h',
++ ],
++ }],
++ ['v8_target_arch=="mips" or v8_target_arch=="mipsel"', {
++ 'sources': [ ### gcmole(arch:mipsel) ###
++ 'mips/assembler-mips.cc',
++ 'mips/assembler-mips.h',
++ 'mips/assembler-mips-inl.h',
++ 'mips/builtins-mips.cc',
++ 'mips/codegen-mips.cc',
++ 'mips/codegen-mips.h',
++ 'mips/code-stubs-mips.cc',
++ 'mips/code-stubs-mips.h',
++ 'mips/constants-mips.cc',
++ 'mips/constants-mips.h',
++ 'mips/cpu-mips.cc',
++ 'mips/deoptimizer-mips.cc',
++ 'mips/disasm-mips.cc',
++ 'mips/frames-mips.cc',
++ 'mips/frames-mips.h',
++ 'mips/interface-descriptors-mips.cc',
++ 'mips/macro-assembler-mips.cc',
++ 'mips/macro-assembler-mips.h',
++ 'mips/simulator-mips.cc',
++ 'mips/simulator-mips.h',
++ 'compiler/mips/code-generator-mips.cc',
++ 'compiler/mips/instruction-codes-mips.h',
++ 'compiler/mips/instruction-scheduler-mips.cc',
++ 'compiler/mips/instruction-selector-mips.cc',
++ 'crankshaft/mips/lithium-codegen-mips.cc',
++ 'crankshaft/mips/lithium-codegen-mips.h',
++ 'crankshaft/mips/lithium-gap-resolver-mips.cc',
++ 'crankshaft/mips/lithium-gap-resolver-mips.h',
++ 'crankshaft/mips/lithium-mips.cc',
++ 'crankshaft/mips/lithium-mips.h',
++ 'full-codegen/mips/full-codegen-mips.cc',
++ 'debug/mips/debug-mips.cc',
++ 'ic/mips/access-compiler-mips.cc',
++ 'ic/mips/handler-compiler-mips.cc',
++ 'ic/mips/ic-mips.cc',
++ 'ic/mips/ic-compiler-mips.cc',
++ 'ic/mips/stub-cache-mips.cc',
++ 'regexp/mips/regexp-macro-assembler-mips.cc',
++ 'regexp/mips/regexp-macro-assembler-mips.h',
++ ],
++ }],
++ ['v8_target_arch=="mips64" or v8_target_arch=="mips64el"', {
++ 'sources': [ ### gcmole(arch:mips64el) ###
++ 'mips64/assembler-mips64.cc',
++ 'mips64/assembler-mips64.h',
++ 'mips64/assembler-mips64-inl.h',
++ 'mips64/builtins-mips64.cc',
++ 'mips64/codegen-mips64.cc',
++ 'mips64/codegen-mips64.h',
++ 'mips64/code-stubs-mips64.cc',
++ 'mips64/code-stubs-mips64.h',
++ 'mips64/constants-mips64.cc',
++ 'mips64/constants-mips64.h',
++ 'mips64/cpu-mips64.cc',
++ 'mips64/deoptimizer-mips64.cc',
++ 'mips64/disasm-mips64.cc',
++ 'mips64/frames-mips64.cc',
++ 'mips64/frames-mips64.h',
++ 'mips64/interface-descriptors-mips64.cc',
++ 'mips64/macro-assembler-mips64.cc',
++ 'mips64/macro-assembler-mips64.h',
++ 'mips64/simulator-mips64.cc',
++ 'mips64/simulator-mips64.h',
++ 'compiler/mips64/code-generator-mips64.cc',
++ 'compiler/mips64/instruction-codes-mips64.h',
++ 'compiler/mips64/instruction-scheduler-mips64.cc',
++ 'compiler/mips64/instruction-selector-mips64.cc',
++ 'crankshaft/mips64/lithium-codegen-mips64.cc',
++ 'crankshaft/mips64/lithium-codegen-mips64.h',
++ 'crankshaft/mips64/lithium-gap-resolver-mips64.cc',
++ 'crankshaft/mips64/lithium-gap-resolver-mips64.h',
++ 'crankshaft/mips64/lithium-mips64.cc',
++ 'crankshaft/mips64/lithium-mips64.h',
++ 'debug/mips64/debug-mips64.cc',
++ 'full-codegen/mips64/full-codegen-mips64.cc',
++ 'ic/mips64/access-compiler-mips64.cc',
++ 'ic/mips64/handler-compiler-mips64.cc',
++ 'ic/mips64/ic-mips64.cc',
++ 'ic/mips64/ic-compiler-mips64.cc',
++ 'ic/mips64/stub-cache-mips64.cc',
++ 'regexp/mips64/regexp-macro-assembler-mips64.cc',
++ 'regexp/mips64/regexp-macro-assembler-mips64.h',
++ ],
++ }],
++ ['v8_target_arch=="x64" or v8_target_arch=="x32"', {
++ 'sources': [ ### gcmole(arch:x64) ###
++ 'crankshaft/x64/lithium-codegen-x64.cc',
++ 'crankshaft/x64/lithium-codegen-x64.h',
++ 'crankshaft/x64/lithium-gap-resolver-x64.cc',
++ 'crankshaft/x64/lithium-gap-resolver-x64.h',
++ 'crankshaft/x64/lithium-x64.cc',
++ 'crankshaft/x64/lithium-x64.h',
++ 'x64/assembler-x64-inl.h',
++ 'x64/assembler-x64.cc',
++ 'x64/assembler-x64.h',
++ 'x64/builtins-x64.cc',
++ 'x64/code-stubs-x64.cc',
++ 'x64/code-stubs-x64.h',
++ 'x64/codegen-x64.cc',
++ 'x64/codegen-x64.h',
++ 'x64/cpu-x64.cc',
++ 'x64/deoptimizer-x64.cc',
++ 'x64/disasm-x64.cc',
++ 'x64/frames-x64.cc',
++ 'x64/frames-x64.h',
++ 'x64/interface-descriptors-x64.cc',
++ 'x64/macro-assembler-x64.cc',
++ 'x64/macro-assembler-x64.h',
++ 'debug/x64/debug-x64.cc',
++ 'full-codegen/x64/full-codegen-x64.cc',
++ 'ic/x64/access-compiler-x64.cc',
++ 'ic/x64/handler-compiler-x64.cc',
++ 'ic/x64/ic-x64.cc',
++ 'ic/x64/ic-compiler-x64.cc',
++ 'ic/x64/stub-cache-x64.cc',
++ 'regexp/x64/regexp-macro-assembler-x64.cc',
++ 'regexp/x64/regexp-macro-assembler-x64.h',
++ ],
++ }],
++ ['v8_target_arch=="x64"', {
++ 'sources': [
++ 'compiler/x64/code-generator-x64.cc',
++ 'compiler/x64/instruction-codes-x64.h',
++ 'compiler/x64/instruction-scheduler-x64.cc',
++ 'compiler/x64/instruction-selector-x64.cc',
++ ],
++ }],
++ ['v8_target_arch=="ppc" or v8_target_arch=="ppc64"', {
++ 'sources': [ ### gcmole(arch:ppc) ###
++ 'compiler/ppc/code-generator-ppc.cc',
++ 'compiler/ppc/instruction-codes-ppc.h',
++ 'compiler/ppc/instruction-scheduler-ppc.cc',
++ 'compiler/ppc/instruction-selector-ppc.cc',
++ 'crankshaft/ppc/lithium-ppc.cc',
++ 'crankshaft/ppc/lithium-ppc.h',
++ 'crankshaft/ppc/lithium-codegen-ppc.cc',
++ 'crankshaft/ppc/lithium-codegen-ppc.h',
++ 'crankshaft/ppc/lithium-gap-resolver-ppc.cc',
++ 'crankshaft/ppc/lithium-gap-resolver-ppc.h',
++ 'debug/ppc/debug-ppc.cc',
++ 'full-codegen/ppc/full-codegen-ppc.cc',
++ 'ic/ppc/access-compiler-ppc.cc',
++ 'ic/ppc/handler-compiler-ppc.cc',
++ 'ic/ppc/ic-ppc.cc',
++ 'ic/ppc/ic-compiler-ppc.cc',
++ 'ic/ppc/stub-cache-ppc.cc',
++ 'ppc/assembler-ppc-inl.h',
++ 'ppc/assembler-ppc.cc',
++ 'ppc/assembler-ppc.h',
++ 'ppc/builtins-ppc.cc',
++ 'ppc/code-stubs-ppc.cc',
++ 'ppc/code-stubs-ppc.h',
++ 'ppc/codegen-ppc.cc',
++ 'ppc/codegen-ppc.h',
++ 'ppc/constants-ppc.h',
++ 'ppc/constants-ppc.cc',
++ 'ppc/cpu-ppc.cc',
++ 'ppc/deoptimizer-ppc.cc',
++ 'ppc/disasm-ppc.cc',
++ 'ppc/frames-ppc.cc',
++ 'ppc/frames-ppc.h',
++ 'ppc/interface-descriptors-ppc.cc',
++ 'ppc/macro-assembler-ppc.cc',
++ 'ppc/macro-assembler-ppc.h',
++ 'ppc/simulator-ppc.cc',
++ 'ppc/simulator-ppc.h',
++ 'regexp/ppc/regexp-macro-assembler-ppc.cc',
++ 'regexp/ppc/regexp-macro-assembler-ppc.h',
++ ],
++ }],
++ ['v8_target_arch=="s390" or v8_target_arch=="s390x"', {
++ 'sources': [ ### gcmole(arch:s390) ###
++ 'compiler/s390/code-generator-s390.cc',
++ 'compiler/s390/instruction-codes-s390.h',
++ 'compiler/s390/instruction-scheduler-s390.cc',
++ 'compiler/s390/instruction-selector-s390.cc',
++ 'crankshaft/s390/lithium-codegen-s390.cc',
++ 'crankshaft/s390/lithium-codegen-s390.h',
++ 'crankshaft/s390/lithium-gap-resolver-s390.cc',
++ 'crankshaft/s390/lithium-gap-resolver-s390.h',
++ 'crankshaft/s390/lithium-s390.cc',
++ 'crankshaft/s390/lithium-s390.h',
++ 'debug/s390/debug-s390.cc',
++ 'full-codegen/s390/full-codegen-s390.cc',
++ 'ic/s390/access-compiler-s390.cc',
++ 'ic/s390/handler-compiler-s390.cc',
++ 'ic/s390/ic-compiler-s390.cc',
++ 'ic/s390/ic-s390.cc',
++ 'ic/s390/stub-cache-s390.cc',
++ 'regexp/s390/regexp-macro-assembler-s390.cc',
++ 'regexp/s390/regexp-macro-assembler-s390.h',
++ 's390/assembler-s390.cc',
++ 's390/assembler-s390.h',
++ 's390/assembler-s390-inl.h',
++ 's390/builtins-s390.cc',
++ 's390/codegen-s390.cc',
++ 's390/codegen-s390.h',
++ 's390/code-stubs-s390.cc',
++ 's390/code-stubs-s390.h',
++ 's390/constants-s390.cc',
++ 's390/constants-s390.h',
++ 's390/cpu-s390.cc',
++ 's390/deoptimizer-s390.cc',
++ 's390/disasm-s390.cc',
++ 's390/frames-s390.cc',
++ 's390/frames-s390.h',
++ 's390/interface-descriptors-s390.cc',
++ 's390/macro-assembler-s390.cc',
++ 's390/macro-assembler-s390.h',
++ 's390/simulator-s390.cc',
++ 's390/simulator-s390.h',
++ ],
++ }],
++ ['OS=="win"', {
++ 'variables': {
++ 'gyp_generators': '<!(echo $GYP_GENERATORS)',
++ },
++ 'msvs_disabled_warnings': [4351, 4355, 4800],
++ # When building Official, the .lib is too large and exceeds the 2G
++ # limit. This breaks it into multiple pieces to avoid the limit.
++ # See http://crbug.com/485155.
++ 'msvs_shard': 4,
++ }],
++ ['v8_component=="shared_library"', {
++ 'defines': [
++ 'BUILDING_V8_SHARED',
++ 'V8_SHARED',
++ ],
++ }],
++ ['v8_postmortem_support=="true"', {
++ 'sources': [
++ '<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
++ ]
++ }],
++ ['v8_enable_i18n_support==1', {
++ 'dependencies': [
++ '<(icu_gyp_path):icui18n',
++ '<(icu_gyp_path):icuuc',
++ ],
++ 'conditions': [
++ ['icu_use_data_file_flag==1', {
++ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE'],
++ }, { # else icu_use_data_file_flag !=1
++ 'conditions': [
++ ['OS=="win"', {
++ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_SHARED'],
++ }, {
++ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC'],
++ }],
++ ],
++ }],
++ ],
++ }, { # v8_enable_i18n_support==0
++ 'sources!': [
++ 'i18n.cc',
++ 'i18n.h',
++ ],
++ }],
++ ['OS=="win" and v8_enable_i18n_support==1', {
++ 'dependencies': [
++ '<(icu_gyp_path):icudata',
++ ],
++ }],
++ ],
++ },
++ {
++ 'target_name': 'v8_libbase_sse2',
++ 'type': 'static_library',
++ 'variables': {
++ 'optimize': 'max',
++ },
++ 'include_dirs+': [
++ '..',
++ ],
++ 'sources': [
++ 'base/accounting-allocator.cc',
++ 'base/accounting-allocator.h',
++ 'base/adapters.h',
++ 'base/atomic-utils.h',
++ 'base/atomicops.h',
++ 'base/atomicops_internals_arm64_gcc.h',
++ 'base/atomicops_internals_arm_gcc.h',
++ 'base/atomicops_internals_atomicword_compat.h',
++ 'base/atomicops_internals_mac.h',
++ 'base/atomicops_internals_mips_gcc.h',
++ 'base/atomicops_internals_mips64_gcc.h',
++ 'base/atomicops_internals_portable.h',
++ 'base/atomicops_internals_ppc_gcc.h',
++ 'base/atomicops_internals_s390_gcc.h',
++ 'base/atomicops_internals_tsan.h',
++ 'base/atomicops_internals_x86_gcc.cc',
++ 'base/atomicops_internals_x86_gcc.h',
++ 'base/atomicops_internals_x86_msvc.h',
++ 'base/bits.cc',
++ 'base/bits.h',
++ 'base/build_config.h',
++ 'base/compiler-specific.h',
++ 'base/cpu.cc',
++ 'base/cpu.h',
++ 'base/division-by-constant.cc',
++ 'base/division-by-constant.h',
++ 'base/file-utils.cc',
++ 'base/file-utils.h',
++ 'base/flags.h',
++ 'base/format-macros.h',
++ 'base/functional.cc',
++ 'base/functional.h',
++ 'base/hashmap.h',
++ 'base/ieee754.cc',
++ 'base/ieee754.h',
++ 'base/iterator.h',
++ 'base/lazy-instance.h',
++ 'base/logging.cc',
++ 'base/logging.h',
++ 'base/macros.h',
++ 'base/once.cc',
++ 'base/once.h',
++ 'base/platform/elapsed-timer.h',
++ 'base/platform/time.cc',
++ 'base/platform/time.h',
++ 'base/platform/condition-variable.cc',
++ 'base/platform/condition-variable.h',
++ 'base/platform/mutex.cc',
++ 'base/platform/mutex.h',
++ 'base/platform/platform.h',
++ 'base/platform/semaphore.cc',
++ 'base/platform/semaphore.h',
++ 'base/safe_conversions.h',
++ 'base/safe_conversions_impl.h',
++ 'base/safe_math.h',
++ 'base/safe_math_impl.h',
++ 'base/smart-pointers.h',
++ 'base/sys-info.cc',
++ 'base/sys-info.h',
++ 'base/utils/random-number-generator.cc',
++ 'base/utils/random-number-generator.h',
++ ],
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ['OS=="linux"', {
++ 'conditions': [
++ ['nacl_target_arch=="none"', {
++ 'link_settings': {
++ 'libraries': [
++ '-ldl',
++ '-lrt'
++ ],
++ },
++ }, {
++ 'defines': [
++ 'V8_LIBRT_NOT_AVAILABLE=1',
++ ],
++ }],
++ ],
++ 'sources': [
++ 'base/platform/platform-linux.cc',
++ 'base/platform/platform-posix.cc'
++ ],
++ }
++ ],
++ ['OS=="android"', {
++ 'sources': [
++ 'base/platform/platform-posix.cc'
++ ],
++ 'link_settings': {
++ 'target_conditions': [
++ ['_toolset=="host" and host_os!="mac"', {
++ # Only include libdl and librt on host builds because they
++ # are included by default on Android target builds, and we
++ # don't want to re-include them here since this will change
++ # library order and break (see crbug.com/469973).
++ # These libraries do not exist on Mac hosted builds.
++ 'libraries': [
++ '-ldl',
++ '-lrt'
++ ]
++ }]
++ ]
++ },
++ 'conditions': [
++ ['host_os=="mac"', {
++ 'target_conditions': [
++ ['_toolset=="host"', {
++ 'sources': [
++ 'base/platform/platform-macos.cc'
++ ]
++ }, {
++ 'sources': [
++ 'base/platform/platform-linux.cc'
++ ]
++ }],
++ ],
++ }, {
++ 'sources': [
++ 'base/platform/platform-linux.cc'
++ ]
++ }],
++ ],
++ },
++ ],
++ ['OS=="qnx"', {
++ 'link_settings': {
++ 'target_conditions': [
++ ['_toolset=="host" and host_os=="linux"', {
++ 'libraries': [
++ '-lrt'
++ ],
++ }],
++ ['_toolset=="target"', {
++ 'libraries': [
++ '-lbacktrace'
++ ],
++ }],
++ ],
++ },
++ 'sources': [
++ 'base/platform/platform-posix.cc',
++ 'base/qnx-math.h',
++ ],
++ 'target_conditions': [
++ ['_toolset=="host" and host_os=="linux"', {
++ 'sources': [
++ 'base/platform/platform-linux.cc'
++ ],
++ }],
++ ['_toolset=="host" and host_os=="mac"', {
++ 'sources': [
++ 'base/platform/platform-macos.cc'
++ ],
++ }],
++ ['_toolset=="target"', {
++ 'sources': [
++ 'base/platform/platform-qnx.cc'
++ ],
++ }],
++ ],
++ },
++ ],
++ ['OS=="freebsd"', {
++ 'link_settings': {
++ 'libraries': [
++ '-L/usr/local/lib -lexecinfo',
++ ]},
++ 'sources': [
++ 'base/platform/platform-freebsd.cc',
++ 'base/platform/platform-posix.cc'
++ ],
++ }
++ ],
++ ['OS=="openbsd"', {
++ 'link_settings': {
++ 'libraries': [
++ '-L/usr/local/lib -lexecinfo',
++ ]},
++ 'sources': [
++ 'base/platform/platform-openbsd.cc',
++ 'base/platform/platform-posix.cc'
++ ],
++ }
++ ],
++ ['OS=="netbsd"', {
++ 'link_settings': {
++ 'libraries': [
++ '-L/usr/pkg/lib -Wl,-R/usr/pkg/lib -lexecinfo',
++ ]},
++ 'sources': [
++ 'base/platform/platform-openbsd.cc',
++ 'base/platform/platform-posix.cc'
++ ],
++ }
++ ],
++ ['OS=="aix"', {
++ 'sources': [
++ 'base/platform/platform-aix.cc',
++ 'base/platform/platform-posix.cc'
++ ]},
++ ],
++ ['OS=="solaris"', {
++ 'link_settings': {
++ 'libraries': [
++ '-lnsl -lrt',
++ ]},
++ 'sources': [
++ 'base/platform/platform-solaris.cc',
++ 'base/platform/platform-posix.cc'
++ ],
++ }
++ ],
++ ['OS=="mac"', {
++ 'sources': [
++ 'base/platform/platform-macos.cc',
++ 'base/platform/platform-posix.cc'
++ ]},
++ ],
++ ['OS=="win"', {
++ 'defines': [
++ '_CRT_RAND_S' # for rand_s()
++ ],
++ 'variables': {
++ 'gyp_generators': '<!(echo $GYP_GENERATORS)',
++ },
++ 'conditions': [
++ ['gyp_generators=="make"', {
++ 'variables': {
++ 'build_env': '<!(uname -o)',
++ },
++ 'conditions': [
++ ['build_env=="Cygwin"', {
++ 'sources': [
++ 'base/platform/platform-cygwin.cc',
++ 'base/platform/platform-posix.cc'
++ ],
++ }, {
++ 'sources': [
++ 'base/platform/platform-win32.cc',
++ 'base/win32-headers.h',
++ ],
++ }],
++ ],
++ 'link_settings': {
++ 'libraries': [ '-lwinmm', '-lws2_32' ],
++ },
++ }, {
++ 'sources': [
++ 'base/platform/platform-win32.cc',
++ 'base/win32-headers.h',
++ ],
++ 'msvs_disabled_warnings': [4351, 4355, 4800],
++ 'link_settings': {
++ 'libraries': [ '-lwinmm.lib', '-lws2_32.lib' ],
++ },
++ }],
++ ],
++ }],
++ ],
++ },
++ {
++ 'target_name': 'v8_libplatform_sse2',
++ 'type': 'static_library',
++ 'variables': {
++ 'optimize': 'max',
++ },
++ 'dependencies': [
++ 'v8_libbase_sse2',
++ ],
++ 'include_dirs+': [
++ '..',
++ '../include',
++ ],
++ 'sources': [
++ '../include/libplatform/libplatform.h',
++ 'libplatform/default-platform.cc',
++ 'libplatform/default-platform.h',
++ 'libplatform/task-queue.cc',
++ 'libplatform/task-queue.h',
++ 'libplatform/worker-thread.cc',
++ 'libplatform/worker-thread.h',
++ ],
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ],
++ 'direct_dependent_settings': {
++ 'include_dirs': [
++ '../include',
++ ],
++ },
++ },
++ {
++ 'target_name': 'v8_libsampler_sse2',
++ 'type': 'static_library',
++ 'variables': {
++ 'optimize': 'max',
++ },
++ 'dependencies': [
++ 'v8_libbase_sse2',
++ ],
++ 'include_dirs+': [
++ '..',
++ '../include',
++ ],
++ 'sources': [
++ 'libsampler/v8-sampler.cc',
++ 'libsampler/v8-sampler.h'
++ ],
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ],
++ 'direct_dependent_settings': {
++ 'include_dirs': [
++ '../include',
++ ],
++ },
++ },
++ {
++ 'target_name': 'natives_blob_sse2',
++ 'type': 'none',
++ 'conditions': [
++ [ 'v8_use_external_startup_data==1', {
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'dependencies': ['js2c_sse2#host'],
++ }, {
++ 'dependencies': ['js2c_sse2'],
++ }],
++ ],
++ 'actions': [{
++ 'action_name': 'v8_sse2_concatenate_natives_blob',
++ 'inputs': [
++ '../tools/concatenate-files.py',
++ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.bin',
++ '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental_sse2.bin',
++ '<(SHARED_INTERMEDIATE_DIR)/libraries-extras_sse2.bin',
++ '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental-extras_sse2.bin',
++ ],
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'target_conditions': [
++ ['_toolset=="host"', {
++ 'outputs': [
++ '<(PRODUCT_DIR)/natives_blob_host_sse2.bin',
++ ],
++ 'action': [
++ 'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_host_sse2.bin'
++ ],
++ }, {
++ 'outputs': [
++ '<(PRODUCT_DIR)/natives_blob_sse2.bin',
++ ],
++ 'action': [
++ 'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_sse2.bin'
++ ],
++ }],
++ ],
++ }, {
++ 'outputs': [
++ '<(PRODUCT_DIR)/natives_blob_sse2.bin',
++ ],
++ 'action': [
++ 'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_sse2.bin'
++ ],
++ }],
++ ],
++ }],
++ }],
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ]
++ },
++ {
++ 'target_name': 'js2c_sse2',
++ 'type': 'none',
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ],
++ 'variables': {
++ 'library_files': [
++ 'js/macros.py',
++ 'messages.h',
++ 'js/prologue.js',
++ 'js/runtime.js',
++ 'js/v8natives.js',
++ 'js/symbol.js',
++ 'js/array.js',
++ 'js/string.js',
++ 'js/math.js',
++ 'third_party/fdlibm/fdlibm.js',
++ 'js/regexp.js',
++ 'js/arraybuffer.js',
++ 'js/typedarray.js',
++ 'js/iterator-prototype.js',
++ 'js/collection.js',
++ 'js/weak-collection.js',
++ 'js/collection-iterator.js',
++ 'js/promise.js',
++ 'js/messages.js',
++ 'js/array-iterator.js',
++ 'js/string-iterator.js',
++ 'js/templates.js',
++ 'js/spread.js',
++ 'js/proxy.js',
++ 'debug/mirrors.js',
++ 'debug/debug.js',
++ 'debug/liveedit.js',
++ ],
++ 'experimental_library_files': [
++ 'js/macros.py',
++ 'messages.h',
++ 'js/harmony-atomics.js',
++ 'js/harmony-sharedarraybuffer.js',
++ 'js/harmony-simd.js',
++ 'js/harmony-string-padding.js',
++ 'js/promise-extra.js',
++ 'js/harmony-async-await.js'
++ ],
++ 'libraries_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.bin',
++ 'libraries_experimental_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental_sse2.bin',
++ 'libraries_extras_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-extras_sse2.bin',
++ 'libraries_experimental_extras_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental-extras_sse2.bin',
++ 'conditions': [
++ ['v8_enable_i18n_support==1', {
++ 'library_files': ['js/i18n.js'],
++ 'experimental_library_files': [
++ 'js/icu-case-mapping.js',
++ 'js/intl-extra.js',
++ ],
++ }],
++ ],
++ },
++ 'actions': [
++ {
++ 'action_name': 'v8_sse2_js2c',
++ 'inputs': [
++ '../tools/js2c.py',
++ '<@(library_files)',
++ ],
++ 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc'],
++ 'action': [
++ 'python',
++ '../tools/js2c.py',
++ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
++ 'CORE',
++ '<@(library_files)',
++ ],
++ },
++ {
++ 'action_name': 'v8_sse2_js2c_bin',
++ 'inputs': [
++ '../tools/js2c.py',
++ '<@(library_files)',
++ ],
++ 'outputs': ['<@(libraries_bin_file)'],
++ 'action': [
++ 'python',
++ '../tools/js2c.py',
++ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
++ 'CORE',
++ '<@(library_files)',
++ '--startup_blob', '<@(libraries_bin_file)',
++ '--nojs',
++ ],
++ },
++ {
++ 'action_name': 'v8_sse2_js2c_experimental',
++ 'inputs': [
++ '../tools/js2c.py',
++ '<@(experimental_library_files)',
++ ],
++ 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc'],
++ 'action': [
++ 'python',
++ '../tools/js2c.py',
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
++ 'EXPERIMENTAL',
++ '<@(experimental_library_files)',
++ ],
++ },
++ {
++ 'action_name': 'v8_sse2_js2c_experimental_bin',
++ 'inputs': [
++ '../tools/js2c.py',
++ '<@(experimental_library_files)',
++ ],
++ 'outputs': ['<@(libraries_experimental_bin_file)'],
++ 'action': [
++ 'python',
++ '../tools/js2c.py',
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
++ 'EXPERIMENTAL',
++ '<@(experimental_library_files)',
++ '--startup_blob', '<@(libraries_experimental_bin_file)',
++ '--nojs',
++ ],
++ },
++ {
++ 'action_name': 'v8_sse2_js2c_extras',
++ 'inputs': [
++ '../tools/js2c.py',
++ '<@(v8_extra_library_files)',
++ ],
++ 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc'],
++ 'action': [
++ 'python',
++ '../tools/js2c.py',
++ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
++ 'EXTRAS',
++ '<@(v8_extra_library_files)',
++ ],
++ },
++ {
++ 'action_name': 'v8_sse2_js2c_extras_bin',
++ 'inputs': [
++ '../tools/js2c.py',
++ '<@(v8_extra_library_files)',
++ ],
++ 'outputs': ['<@(libraries_extras_bin_file)'],
++ 'action': [
++ 'python',
++ '../tools/js2c.py',
++ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
++ 'EXTRAS',
++ '<@(v8_extra_library_files)',
++ '--startup_blob', '<@(libraries_extras_bin_file)',
++ '--nojs',
++ ],
++ },
++ {
++ 'action_name': 'v8_sse2_js2c_experimental_extras',
++ 'inputs': [
++ '../tools/js2c.py',
++ '<@(v8_experimental_extra_library_files)',
++ ],
++ 'outputs': [
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
++ ],
++ 'action': [
++ 'python',
++ '../tools/js2c.py',
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
++ 'EXPERIMENTAL_EXTRAS',
++ '<@(v8_experimental_extra_library_files)',
++ ],
++ },
++ {
++ 'action_name': 'v8_sse2_js2c_experimental_extras_bin',
++ 'inputs': [
++ '../tools/js2c.py',
++ '<@(v8_experimental_extra_library_files)',
++ ],
++ 'outputs': ['<@(libraries_experimental_extras_bin_file)'],
++ 'action': [
++ 'python',
++ '../tools/js2c.py',
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
++ 'EXPERIMENTAL_EXTRAS',
++ '<@(v8_experimental_extra_library_files)',
++ '--startup_blob', '<@(libraries_experimental_extras_bin_file)',
++ '--nojs',
++ ],
++ },
++ ],
++ },
++ {
++ 'target_name': 'postmortem-metadata_sse2',
++ 'type': 'none',
++ 'variables': {
++ 'heapobject_files': [
++ 'objects.h',
++ 'objects-inl.h',
++ ],
++ },
++ 'actions': [
++ {
++ 'action_name': 'v8_sse2_gen-postmortem-metadata',
++ 'inputs': [
++ '../tools/gen-postmortem-metadata.py',
++ '<@(heapobject_files)',
++ ],
++ 'outputs': [
++ '<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
++ ],
++ 'action': [
++ 'python',
++ '../tools/gen-postmortem-metadata.py',
++ '<@(_outputs)',
++ '<@(heapobject_files)'
++ ]
++ }
++ ]
++ },
++ {
++ 'target_name': 'mksnapshot_sse2',
++ 'type': 'executable',
++ 'dependencies': ['v8_base_sse2', 'v8_nosnapshot_sse2', 'v8_libplatform_sse2'],
++ 'include_dirs+': [
++ '..',
++ ],
++ 'sources': [
++ 'snapshot/mksnapshot.cc',
++ ],
++ 'conditions': [
++ ['v8_enable_i18n_support==1', {
++ 'dependencies': [
++ '<(icu_gyp_path):icui18n',
++ '<(icu_gyp_path):icuuc',
++ ]
++ }],
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ],
++ },
++ ],
++}
+diff -Nur qtwebengine-opensource-src-5.8.0/src/core/core_module.pro qtwebengine-opensource-src-5.8.0-no-sse2/src/core/core_module.pro
+--- qtwebengine-opensource-src-5.8.0/src/core/core_module.pro 2017-01-03 11:35:11.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/core/core_module.pro 2017-03-05 17:30:17.502552632 +0100
+@@ -9,6 +9,29 @@
+ error("Could not find the linking information that gyp should have generated.")
+ }
+
++# find the shared libraries in the link line
++# remove those in lib/sse2 that are only replacements for the normal ones
++# collect all shared libraries so they can be installed
++for(private_lib, LIBS_PRIVATE) {
++ contains(private_lib, .*\.so) {
++ contains(private_lib, .*/lib/sse2/.*) {
++ LIBS_PRIVATE -= $$private_lib
++ shlibs_sse2 += $$private_lib
++ } else {
++ shlibs += $$private_lib
++ }
++ }
++}
++
++# set the shared libraries to be installed
++# add an rpath to their installation location
++shlib_install_path = $$[QT_INSTALL_LIBS]/qtwebengine
++!isEmpty(shlibs) {
++ shlibs.files += $$shlibs
++ shlibs_sse2.files += $$shlibs_sse2
++ LIBS_PRIVATE += -Wl,--rpath,$$shlib_install_path
++}
++
+ load(qt_module)
+
+ api_library_name = qtwebenginecoreapi$$qtPlatformTargetSuffix()
+@@ -74,7 +97,12 @@
+ locales.path = $$[QT_INSTALL_TRANSLATIONS]/qtwebengine_locales
+ resources.CONFIG += no_check_exist
+ resources.path = $$[QT_INSTALL_DATA]/resources
+- INSTALLS += locales resources
++ # install the shared libraries
++ shlibs.CONFIG += no_check_exist
++ shlibs.path = $$shlib_install_path
++ shlibs_sse2.CONFIG += no_check_exist
++ shlibs_sse2.path = $$shlib_install_path/sse2
++ INSTALLS += locales resources shlibs shlibs_sse2
+
+ !use?(system_icu) {
+ icu.CONFIG += no_check_exist
+diff -Nur qtwebengine-opensource-src-5.8.0/src/core/qtwebengine.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/core/qtwebengine.gypi
+--- qtwebengine-opensource-src-5.8.0/src/core/qtwebengine.gypi 2017-01-03 11:35:11.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-no-sse2/src/core/qtwebengine.gypi 2017-03-05 17:30:17.503552617 +0100
+@@ -63,6 +63,11 @@
+ },
+ },
+ 'conditions': [
++ ['target_arch=="ia32"', {
++ 'dependencies': [
++ '<(chromium_src_dir)/v8/src/v8_sse2.gyp:v8_sse2',
++ ],
++ }],
+ ['OS=="win" and win_use_allocator_shim==1', {
+ 'dependencies': [
+ '<(chromium_src_dir)/base/allocator/allocator.gyp:allocator',
diff --git a/qtwebengine-opensource-src-5.8.0-pdfium-gcc7.patch b/qtwebengine-opensource-src-5.8.0-pdfium-gcc7.patch
new file mode 100644
index 0000000..ce2c180
--- /dev/null
+++ b/qtwebengine-opensource-src-5.8.0-pdfium-gcc7.patch
@@ -0,0 +1,600 @@
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/app.cpp qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/app.cpp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/app.cpp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/app.cpp 2017-03-06 13:04:01.784297561 +0100
+@@ -454,7 +454,7 @@
+ }
+
+ void app::ClearTimerCommon(const CJS_Value& param) {
+- if (param.GetType() != CJS_Value::VT_fxobject)
++ if (param.GetType() != CJS_Value::VT_object)
+ return;
+
+ v8::Local<v8::Object> pObj = param.ToV8Object();
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/Document.cpp qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/Document.cpp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/Document.cpp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/Document.cpp 2017-03-06 13:04:01.783297575 +0100
+@@ -411,22 +411,20 @@
+
+ int nlength = params.size();
+ if (nlength == 9) {
+- if (params[8].GetType() == CJS_Value::VT_fxobject) {
++ if (params[8].GetType() == CJS_Value::VT_object) {
+ v8::Local<v8::Object> pObj = params[8].ToV8Object();
+- {
+- if (FXJS_GetObjDefnID(pObj) == CJS_PrintParamsObj::g_nObjDefnID) {
+- if (CJS_Object* pJSObj = params[8].ToCJSObject()) {
+- if (PrintParamsObj* pprintparamsObj =
+- (PrintParamsObj*)pJSObj->GetEmbedObject()) {
+- bUI = pprintparamsObj->bUI;
+- nStart = pprintparamsObj->nStart;
+- nEnd = pprintparamsObj->nEnd;
+- bSilent = pprintparamsObj->bSilent;
+- bShrinkToFit = pprintparamsObj->bShrinkToFit;
+- bPrintAsImage = pprintparamsObj->bPrintAsImage;
+- bReverse = pprintparamsObj->bReverse;
+- bAnnotations = pprintparamsObj->bAnnotations;
+- }
++ if (FXJS_GetObjDefnID(pObj) == CJS_PrintParamsObj::g_nObjDefnID) {
++ if (CJS_Object* pJSObj = params[8].ToCJSObject()) {
++ if (PrintParamsObj* pprintparamsObj =
++ static_cast<PrintParamsObj*>(pJSObj->GetEmbedObject())) {
++ bUI = pprintparamsObj->bUI;
++ nStart = pprintparamsObj->nStart;
++ nEnd = pprintparamsObj->nEnd;
++ bSilent = pprintparamsObj->bSilent;
++ bShrinkToFit = pprintparamsObj->bShrinkToFit;
++ bPrintAsImage = pprintparamsObj->bPrintAsImage;
++ bReverse = pprintparamsObj->bReverse;
++ bAnnotations = pprintparamsObj->bAnnotations;
+ }
+ }
+ }
+@@ -597,18 +595,16 @@
+ v8::Local<v8::Object> pObj = params[0].ToV8Object();
+ v8::Local<v8::Value> pValue = FXJS_GetObjectElement(isolate, pObj, L"cURL");
+ if (!pValue.IsEmpty())
+- strURL =
+- CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
++ strURL = CJS_Value(pRuntime, pValue).ToCFXWideString();
+
+ pValue = FXJS_GetObjectElement(isolate, pObj, L"bFDF");
+- bFDF = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToBool();
++ bFDF = CJS_Value(pRuntime, pValue).ToBool();
+
+ pValue = FXJS_GetObjectElement(isolate, pObj, L"bEmpty");
+- bEmpty = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToBool();
++ bEmpty = CJS_Value(pRuntime, pValue).ToBool();
+
+ pValue = FXJS_GetObjectElement(isolate, pObj, L"aFields");
+- aFields.Attach(
+- CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToV8Array());
++ aFields.Attach(CJS_Value(pRuntime, pValue).ToV8Array());
+ }
+
+ CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
+@@ -691,25 +687,22 @@
+ v8::Local<v8::Object> pObj = params[0].ToV8Object();
+
+ v8::Local<v8::Value> pValue = FXJS_GetObjectElement(isolate, pObj, L"bUI");
+- bUI = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToInt();
++ bUI = CJS_Value(pRuntime, pValue).ToInt();
+
+ pValue = FXJS_GetObjectElement(isolate, pObj, L"cTo");
+- cTo = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
++ cTo = CJS_Value(pRuntime, pValue).ToCFXWideString();
+
+ pValue = FXJS_GetObjectElement(isolate, pObj, L"cCc");
+- cCc = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
++ cCc = CJS_Value(pRuntime, pValue).ToCFXWideString();
+
+ pValue = FXJS_GetObjectElement(isolate, pObj, L"cBcc");
+- cBcc =
+- CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
++ cBcc = CJS_Value(pRuntime, pValue).ToCFXWideString();
+
+ pValue = FXJS_GetObjectElement(isolate, pObj, L"cSubject");
+- cSubject =
+- CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
++ cSubject = CJS_Value(pRuntime, pValue).ToCFXWideString();
+
+ pValue = FXJS_GetObjectElement(isolate, pObj, L"cMsg");
+- cMsg =
+- CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
++ cMsg = CJS_Value(pRuntime, pValue).ToCFXWideString();
+ }
+
+ pRuntime->BeginBlock();
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/global.cpp qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/global.cpp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/global.cpp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/global.cpp 2017-03-06 13:04:01.785297546 +0100
+@@ -17,63 +17,6 @@
+ #include "fpdfsdk/javascript/cjs_context.h"
+ #include "fpdfsdk/javascript/resource.h"
+
+-// Helper class for compile-time calculation of hash values in order to
+-// avoid having global object initializers.
+-template <unsigned ACC, wchar_t... Ns>
+-struct CHash;
+-
+-// Only needed to hash single-character strings.
+-template <wchar_t N>
+-struct CHash<N> {
+- static const unsigned value = N;
+-};
+-
+-template <unsigned ACC, wchar_t N>
+-struct CHash<ACC, N> {
+- static const unsigned value = (ACC * 1313LLU + N) & 0xFFFFFFFF;
+-};
+-
+-template <unsigned ACC, wchar_t N, wchar_t... Ns>
+-struct CHash<ACC, N, Ns...> {
+- static const unsigned value = CHash<CHash<ACC, N>::value, Ns...>::value;
+-};
+-
+-const unsigned int JSCONST_nStringHash =
+- CHash<'s', 't', 'r', 'i', 'n', 'g'>::value;
+-const unsigned int JSCONST_nNumberHash =
+- CHash<'n', 'u', 'm', 'b', 'e', 'r'>::value;
+-const unsigned int JSCONST_nBoolHash =
+- CHash<'b', 'o', 'o', 'l', 'e', 'a', 'n'>::value;
+-const unsigned int JSCONST_nDateHash = CHash<'d', 'a', 't', 'e'>::value;
+-const unsigned int JSCONST_nObjectHash =
+- CHash<'o', 'b', 'j', 'e', 'c', 't'>::value;
+-const unsigned int JSCONST_nFXobjHash = CHash<'f', 'x', 'o', 'b', 'j'>::value;
+-const unsigned int JSCONST_nNullHash = CHash<'n', 'u', 'l', 'l'>::value;
+-const unsigned int JSCONST_nUndefHash =
+- CHash<'u', 'n', 'd', 'e', 'f', 'i', 'n', 'e', 'd'>::value;
+-
+-static unsigned JS_CalcHash(const wchar_t* main) {
+- return (unsigned)FX_HashCode_GetW(CFX_WideStringC(main), false);
+-}
+-
+-#ifndef NDEBUG
+-class HashVerify {
+- public:
+- HashVerify();
+-} g_hashVerify;
+-
+-HashVerify::HashVerify() {
+- ASSERT(JSCONST_nStringHash == JS_CalcHash(kFXJSValueNameString));
+- ASSERT(JSCONST_nNumberHash == JS_CalcHash(kFXJSValueNameNumber));
+- ASSERT(JSCONST_nBoolHash == JS_CalcHash(kFXJSValueNameBoolean));
+- ASSERT(JSCONST_nDateHash == JS_CalcHash(kFXJSValueNameDate));
+- ASSERT(JSCONST_nObjectHash == JS_CalcHash(kFXJSValueNameObject));
+- ASSERT(JSCONST_nFXobjHash == JS_CalcHash(kFXJSValueNameFxobj));
+- ASSERT(JSCONST_nNullHash == JS_CalcHash(kFXJSValueNameNull));
+- ASSERT(JSCONST_nUndefHash == JS_CalcHash(kFXJSValueNameUndefined));
+-}
+-#endif
+-
+ BEGIN_JS_STATIC_CONST(CJS_Global)
+ END_JS_STATIC_CONST()
+
+@@ -335,9 +278,8 @@
+ CFX_WideString ws =
+ FXJS_ToString(isolate, FXJS_GetArrayElement(isolate, pKeyList, i));
+ CFX_ByteString sKey = ws.UTF8Encode();
+-
+ v8::Local<v8::Value> v = FXJS_GetObjectElement(isolate, pObj, ws);
+- switch (GET_VALUE_TYPE(v)) {
++ switch (CJS_Value::GetValueType(v)) {
+ case CJS_Value::VT_number: {
+ CJS_KeyValue* pObjElement = new CJS_KeyValue;
+ pObjElement->nType = JS_GLOBALDATA_TYPE_NUMBER;
+@@ -353,8 +295,7 @@
+ array.Add(pObjElement);
+ } break;
+ case CJS_Value::VT_string: {
+- CFX_ByteString sValue =
+- CJS_Value(pRuntime, v, CJS_Value::VT_string).ToCFXByteString();
++ CFX_ByteString sValue = CJS_Value(pRuntime, v).ToCFXByteString();
+ CJS_KeyValue* pObjElement = new CJS_KeyValue;
+ pObjElement->nType = JS_GLOBALDATA_TYPE_STRING;
+ pObjElement->sKey = sKey;
+@@ -500,26 +441,3 @@
+ m_mapGlobal[propname] = pNewData;
+ return TRUE;
+ }
+-
+-CJS_Value::Type GET_VALUE_TYPE(v8::Local<v8::Value> p) {
+- const unsigned int nHash = JS_CalcHash(FXJS_GetTypeof(p));
+-
+- if (nHash == JSCONST_nUndefHash)
+- return CJS_Value::VT_undefined;
+- if (nHash == JSCONST_nNullHash)
+- return CJS_Value::VT_null;
+- if (nHash == JSCONST_nStringHash)
+- return CJS_Value::VT_string;
+- if (nHash == JSCONST_nNumberHash)
+- return CJS_Value::VT_number;
+- if (nHash == JSCONST_nBoolHash)
+- return CJS_Value::VT_boolean;
+- if (nHash == JSCONST_nDateHash)
+- return CJS_Value::VT_date;
+- if (nHash == JSCONST_nObjectHash)
+- return CJS_Value::VT_object;
+- if (nHash == JSCONST_nFXobjHash)
+- return CJS_Value::VT_fxobject;
+-
+- return CJS_Value::VT_unknown;
+-}
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Define.h qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Define.h
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Define.h 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Define.h 2017-03-06 13:04:01.783297575 +0100
+@@ -111,7 +111,7 @@
+ CJS_Object* pJSObj = (CJS_Object*)FXJS_GetPrivate(isolate, info.Holder());
+ C* pObj = reinterpret_cast<C*>(pJSObj->GetEmbedObject());
+ CFX_WideString sError;
+- CJS_PropValue propValue(CJS_Value(pRuntime, value, CJS_Value::VT_unknown));
++ CJS_PropValue propValue(CJS_Value(pRuntime, value));
+ propValue.StartSetting();
+ if (!(pObj->*M)(pContext, propValue, sError)) {
+ FXJS_Error(isolate, JSFormatErrorString(class_name_string, prop_name_string,
+@@ -149,7 +149,7 @@
+ IJS_Context* pContext = pRuntime->GetCurrentContext();
+ std::vector<CJS_Value> parameters;
+ for (unsigned int i = 0; i < (unsigned int)info.Length(); i++) {
+- parameters.push_back(CJS_Value(pRuntime, info[i], CJS_Value::VT_unknown));
++ parameters.push_back(CJS_Value(pRuntime, info[i]));
+ }
+ CJS_Value valueRes(pRuntime);
+ CJS_Object* pJSObj = (CJS_Object*)FXJS_GetPrivate(isolate, info.Holder());
+@@ -404,7 +404,7 @@
+ CFX_WideString propname = CFX_WideString::FromUTF8(
+ CFX_ByteStringC(*utf8_value, utf8_value.length()));
+ CFX_WideString sError;
+- CJS_PropValue PropValue(CJS_Value(pRuntime, value, CJS_Value::VT_unknown));
++ CJS_PropValue PropValue(CJS_Value(pRuntime, value));
+ PropValue.StartSetting();
+ if (!pObj->DoProperty(pContext, propname.c_str(), PropValue, sError)) {
+ FXJS_Error(isolate, JSFormatErrorString(class_name, "PutProperty", sError));
+@@ -447,7 +447,7 @@
+ IJS_Context* pContext = pRuntime->GetCurrentContext();
+ std::vector<CJS_Value> parameters;
+ for (unsigned int i = 0; i < (unsigned int)info.Length(); i++) {
+- parameters.push_back(CJS_Value(pRuntime, info[i], CJS_Value::VT_unknown));
++ parameters.push_back(CJS_Value(pRuntime, info[i]));
+ }
+ CJS_Value valueRes(pRuntime);
+ CFX_WideString sError;
+@@ -485,6 +485,4 @@
+ } \
+ }
+
+-CJS_Value::Type GET_VALUE_TYPE(v8::Local<v8::Value> p);
+-
+ #endif // FPDFSDK_JAVASCRIPT_JS_DEFINE_H_
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.cpp qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.cpp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.cpp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.cpp 2017-03-06 13:10:30.896809956 +0100
+@@ -22,11 +22,10 @@
+ return *(double*)g_nan;
+ }
+
+-CJS_Value::CJS_Value(CJS_Runtime* pRuntime)
+- : m_eType(VT_unknown), m_pJSRuntime(pRuntime) {}
++CJS_Value::CJS_Value(CJS_Runtime* pRuntime) : m_pJSRuntime(pRuntime) {}
+
+-CJS_Value::CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Value> pValue, Type t)
+- : m_eType(t), m_pValue(pValue), m_pJSRuntime(pRuntime) {}
++CJS_Value::CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Value> pValue)
++ : m_pValue(pValue), m_pJSRuntime(pRuntime) {}
+
+ CJS_Value::CJS_Value(CJS_Runtime* pRuntime, const int& iValue)
+ : m_pJSRuntime(pRuntime) {
+@@ -48,23 +47,11 @@
+ operator=(dValue);
+ }
+
+-CJS_Value::CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Object> pJsObj)
+- : m_pJSRuntime(pRuntime) {
+- operator=(pJsObj);
+-}
+-
+ CJS_Value::CJS_Value(CJS_Runtime* pRuntime, CJS_Object* pJsObj)
+ : m_pJSRuntime(pRuntime) {
+ operator=(pJsObj);
+ }
+
+-CJS_Value::CJS_Value(CJS_Runtime* pRuntime, CJS_Document* pJsDoc)
+- : m_pJSRuntime(pRuntime) {
+- m_eType = VT_object;
+- if (pJsDoc)
+- m_pValue = pJsDoc->ToV8Object();
+-}
+-
+ CJS_Value::CJS_Value(CJS_Runtime* pRuntime, const FX_WCHAR* pWstr)
+ : m_pJSRuntime(pRuntime) {
+ operator=(pWstr);
+@@ -84,19 +71,17 @@
+
+ CJS_Value::CJS_Value(const CJS_Value& other) = default;
+
+-void CJS_Value::Attach(v8::Local<v8::Value> pValue, Type t) {
++void CJS_Value::Attach(v8::Local<v8::Value> pValue) {
+ m_pValue = pValue;
+- m_eType = t;
+ }
+
+ void CJS_Value::Attach(CJS_Value* pValue) {
+ if (pValue)
+- Attach(pValue->ToV8Value(), pValue->GetType());
++ Attach(pValue->ToV8Value());
+ }
+
+ void CJS_Value::Detach() {
+ m_pValue = v8::Local<v8::Value>();
+- m_eType = VT_unknown;
+ }
+
+ int CJS_Value::ToInt() const {
+@@ -146,7 +131,7 @@
+
+ void CJS_Value::MaybeCoerceToNumber() {
+ bool bAllowNaN = false;
+- if (m_eType == VT_string) {
++ if (GetType() == VT_string) {
+ CFX_ByteString bstr = ToCFXByteString();
+ if (bstr.GetLength() == 0)
+ return;
+@@ -162,32 +147,26 @@
+ if (std::isnan(num->Value()) && !bAllowNaN)
+ return;
+ m_pValue = num;
+- m_eType = VT_number;
+ }
+
+ void CJS_Value::operator=(int iValue) {
+ m_pValue = FXJS_NewNumber(m_pJSRuntime->GetIsolate(), iValue);
+- m_eType = VT_number;
+ }
+
+ void CJS_Value::operator=(bool bValue) {
+ m_pValue = FXJS_NewBoolean(m_pJSRuntime->GetIsolate(), bValue);
+- m_eType = VT_boolean;
+ }
+
+ void CJS_Value::operator=(double dValue) {
+ m_pValue = FXJS_NewNumber(m_pJSRuntime->GetIsolate(), dValue);
+- m_eType = VT_number;
+ }
+
+ void CJS_Value::operator=(float fValue) {
+ m_pValue = FXJS_NewNumber(m_pJSRuntime->GetIsolate(), fValue);
+- m_eType = VT_number;
+ }
+
+ void CJS_Value::operator=(v8::Local<v8::Object> pObj) {
+ m_pValue = FXJS_NewObject(m_pJSRuntime->GetIsolate(), pObj);
+- m_eType = VT_fxobject;
+ }
+
+ void CJS_Value::operator=(CJS_Object* pObj) {
+@@ -195,21 +174,12 @@
+ operator=(pObj->ToV8Object());
+ }
+
+-void CJS_Value::operator=(CJS_Document* pJsDoc) {
+- m_eType = VT_object;
+- if (pJsDoc) {
+- m_pValue = pJsDoc->ToV8Object();
+- }
+-}
+-
+ void CJS_Value::operator=(const FX_WCHAR* pWstr) {
+ m_pValue = FXJS_NewString(m_pJSRuntime->GetIsolate(), (wchar_t*)pWstr);
+- m_eType = VT_string;
+ }
+
+ void CJS_Value::SetNull() {
+ m_pValue = FXJS_NewNull();
+- m_eType = VT_null;
+ }
+
+ void CJS_Value::operator=(const FX_CHAR* pStr) {
+@@ -219,36 +189,34 @@
+ void CJS_Value::operator=(CJS_Array& array) {
+ m_pValue =
+ FXJS_NewObject2(m_pJSRuntime->GetIsolate(), (v8::Local<v8::Array>)array);
+- m_eType = VT_object;
+ }
+
+ void CJS_Value::operator=(CJS_Date& date) {
+ m_pValue = FXJS_NewDate(m_pJSRuntime->GetIsolate(), (double)date);
+- m_eType = VT_date;
+ }
+
+ void CJS_Value::operator=(CJS_Value value) {
+ m_pValue = value.ToV8Value();
+- m_eType = value.m_eType;
+ m_pJSRuntime = value.m_pJSRuntime;
+ }
+
+-CJS_Value::Type CJS_Value::GetType() const {
+- if (m_pValue.IsEmpty())
++// static
++CJS_Value::Type CJS_Value::GetValueType(v8::Local<v8::Value> value) {
++ if (value.IsEmpty())
+ return VT_unknown;
+- if (m_pValue->IsString())
++ if (value->IsString())
+ return VT_string;
+- if (m_pValue->IsNumber())
++ if (value->IsNumber())
+ return VT_number;
+- if (m_pValue->IsBoolean())
++ if (value->IsBoolean())
+ return VT_boolean;
+- if (m_pValue->IsDate())
++ if (value->IsDate())
+ return VT_date;
+- if (m_pValue->IsObject())
++ if (value->IsObject())
+ return VT_object;
+- if (m_pValue->IsNull())
++ if (value->IsNull())
+ return VT_null;
+- if (m_pValue->IsUndefined())
++ if (value->IsUndefined())
+ return VT_undefined;
+ return VT_unknown;
+ }
+@@ -427,7 +395,7 @@
+ return;
+ v8::Local<v8::Value> p =
+ FXJS_GetArrayElement(m_pJSRuntime->GetIsolate(), m_pArray, index);
+- value.Attach(p, CJS_Value::VT_object);
++ value.Attach(p);
+ }
+
+ void CJS_Array::SetElement(unsigned index, CJS_Value value) {
+@@ -899,7 +867,7 @@
+ v8::Local<v8::Value> v8Value =
+ FXJS_GetObjectElement(pRuntime->GetIsolate(), pObj, property);
+ if (!v8Value->IsUndefined())
+- result[i] = CJS_Value(pRuntime, v8Value, CJS_Value::VT_unknown);
++ result[i] = CJS_Value(pRuntime, v8Value);
+ }
+ va_end(ap);
+ return result;
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.h qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.h
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.h 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.h 2017-03-06 13:04:01.784297561 +0100
+@@ -27,20 +27,17 @@
+ VT_boolean,
+ VT_date,
+ VT_object,
+- VT_fxobject,
+ VT_null,
+ VT_undefined
+ };
+
+ CJS_Value(CJS_Runtime* pRuntime);
+- CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Value> pValue, Type t);
++ CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Value> pValue);
+ CJS_Value(CJS_Runtime* pRuntime, const int& iValue);
+ CJS_Value(CJS_Runtime* pRuntime, const double& dValue);
+ CJS_Value(CJS_Runtime* pRuntime, const float& fValue);
+ CJS_Value(CJS_Runtime* pRuntime, const bool& bValue);
+- CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Object>);
+- CJS_Value(CJS_Runtime* pRuntime, CJS_Object*);
+- CJS_Value(CJS_Runtime* pRuntime, CJS_Document*);
++ CJS_Value(CJS_Runtime* pRuntime, CJS_Object* pObj);
+ CJS_Value(CJS_Runtime* pRuntime, const FX_CHAR* pStr);
+ CJS_Value(CJS_Runtime* pRuntime, const FX_WCHAR* pWstr);
+ CJS_Value(CJS_Runtime* pRuntime, CJS_Array& array);
+@@ -49,11 +46,12 @@
+ CJS_Value(const CJS_Value& other);
+
+ void SetNull();
+- void Attach(v8::Local<v8::Value> pValue, Type t);
++ void Attach(v8::Local<v8::Value> pValue);
+ void Attach(CJS_Value* pValue);
+ void Detach();
+
+- Type GetType() const;
++ static Type GetValueType(v8::Local<v8::Value> value);
++ Type GetType() const { return GetValueType(m_pValue); }
+ int ToInt() const;
+ bool ToBool() const;
+ double ToDouble() const;
+@@ -66,8 +64,7 @@
+ v8::Local<v8::Value> ToV8Value() const;
+
+ // Replace the current |m_pValue| with a v8::Number if possible
+- // to make one from the current |m_pValue|, updating |m_eType|
+- // as appropriate to indicate the result.
++ // to make one from the current |m_pValue|.
+ void MaybeCoerceToNumber();
+
+ void operator=(int iValue);
+@@ -75,7 +72,6 @@
+ void operator=(double val);
+ void operator=(float val);
+ void operator=(CJS_Object* val);
+- void operator=(CJS_Document* val);
+ void operator=(v8::Local<v8::Object> val);
+ void operator=(CJS_Array& val);
+ void operator=(CJS_Date& val);
+@@ -91,7 +87,6 @@
+ CJS_Runtime* GetJSRuntime() const { return m_pJSRuntime; }
+
+ protected:
+- Type m_eType;
+ v8::Local<v8::Value> m_pValue;
+ CJS_Runtime* m_pJSRuntime;
+ };
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/fxjs_v8.cpp qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/fxjs_v8.cpp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/fxjs_v8.cpp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/fxjs_v8.cpp 2017-03-06 13:06:10.884476877 +0100
+@@ -10,15 +10,6 @@
+
+ #include "core/fxcrt/include/fx_basic.h"
+
+-const wchar_t kFXJSValueNameString[] = L"string";
+-const wchar_t kFXJSValueNameNumber[] = L"number";
+-const wchar_t kFXJSValueNameBoolean[] = L"boolean";
+-const wchar_t kFXJSValueNameDate[] = L"date";
+-const wchar_t kFXJSValueNameObject[] = L"object";
+-const wchar_t kFXJSValueNameFxobj[] = L"fxobj";
+-const wchar_t kFXJSValueNameNull[] = L"null";
+-const wchar_t kFXJSValueNameUndefined[] = L"undefined";
+-
+ // Keep this consistent with the values defined in gin/public/context_holder.h
+ // (without actually requiring a dependency on gin itself for the standalone
+ // embedders of PDFIum). The value we want to use is:
+@@ -540,26 +531,6 @@
+ .ToLocalChecked());
+ }
+
+-const wchar_t* FXJS_GetTypeof(v8::Local<v8::Value> pObj) {
+- if (pObj.IsEmpty())
+- return nullptr;
+- if (pObj->IsString())
+- return kFXJSValueNameString;
+- if (pObj->IsNumber())
+- return kFXJSValueNameNumber;
+- if (pObj->IsBoolean())
+- return kFXJSValueNameBoolean;
+- if (pObj->IsDate())
+- return kFXJSValueNameDate;
+- if (pObj->IsObject())
+- return kFXJSValueNameObject;
+- if (pObj->IsNull())
+- return kFXJSValueNameNull;
+- if (pObj->IsUndefined())
+- return kFXJSValueNameUndefined;
+- return nullptr;
+-}
+-
+ void FXJS_SetPrivate(v8::Isolate* pIsolate,
+ v8::Local<v8::Object> pObj,
+ void* p) {
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/include/fxjs_v8.h qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/include/fxjs_v8.h
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/include/fxjs_v8.h 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/include/fxjs_v8.h 2017-03-06 13:06:40.283062272 +0100
+@@ -118,15 +118,6 @@
+ FXJS_PerIsolateData();
+ };
+
+-extern const wchar_t kFXJSValueNameString[];
+-extern const wchar_t kFXJSValueNameNumber[];
+-extern const wchar_t kFXJSValueNameBoolean[];
+-extern const wchar_t kFXJSValueNameDate[];
+-extern const wchar_t kFXJSValueNameObject[];
+-extern const wchar_t kFXJSValueNameFxobj[];
+-extern const wchar_t kFXJSValueNameNull[];
+-extern const wchar_t kFXJSValueNameUndefined[];
+-
+ class FXJS_ArrayBufferAllocator : public v8::ArrayBuffer::Allocator {
+ void* Allocate(size_t length) override;
+ void* AllocateUninitialized(size_t length) override;
+@@ -209,7 +200,6 @@
+ bool bStatic = false);
+ v8::Local<v8::Object> FXJS_GetThisObj(v8::Isolate* pIsolate);
+ int FXJS_GetObjDefnID(v8::Local<v8::Object> pObj);
+-const wchar_t* FXJS_GetTypeof(v8::Local<v8::Value> pObj);
+
+ void FXJS_SetPrivate(v8::Isolate* pIsolate,
+ v8::Local<v8::Object> pObj,
diff --git a/qtwebengine-opensource-src-5.8.0-qt57.patch b/qtwebengine-opensource-src-5.8.0-qt57.patch
new file mode 100644
index 0000000..480ae11
--- /dev/null
+++ b/qtwebengine-opensource-src-5.8.0-qt57.patch
@@ -0,0 +1,12 @@
+diff -up qtwebengine-opensource-src-5.8.0/src/core/proxy_config_service_qt.cpp.qt58 qtwebengine-opensource-src-5.8.0/src/core/proxy_config_service_qt.cpp
+--- qtwebengine-opensource-src-5.8.0/src/core/proxy_config_service_qt.cpp.qt58 2017-01-03 04:35:11.000000000 -0600
++++ qtwebengine-opensource-src-5.8.0/src/core/proxy_config_service_qt.cpp 2017-03-24 14:43:55.120363292 -0500
+@@ -109,7 +109,7 @@ net::ProxyConfigService::ConfigAvailabil
+ }
+ m_qtApplicationProxy = qtProxy;
+ m_qtProxyConfig = net::ProxyConfig();
+-#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)
++#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0)
+ if (qtProxy.type() == QNetworkProxy::NoProxy
+ && QNetworkProxyFactory::usesSystemConfiguration()) {
+ *config = systemConfig;
diff --git a/qtwebengine-opensource-src-5.8.0-system-icu-utf.patch b/qtwebengine-opensource-src-5.8.0-system-icu-utf.patch
new file mode 100644
index 0000000..dff88b5
--- /dev/null
+++ b/qtwebengine-opensource-src-5.8.0-system-icu-utf.patch
@@ -0,0 +1,362 @@
+diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/base.gypi qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/base.gypi
+--- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/base.gypi 2017-03-05 16:48:14.206027229 +0100
++++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/base.gypi 2017-03-05 16:50:49.266714740 +0100
+@@ -674,8 +674,6 @@
+ 'third_party/dmg_fp/dmg_fp.h',
+ 'third_party/dmg_fp/dtoa_wrapper.cc',
+ 'third_party/dmg_fp/g_fmt.cc',
+- 'third_party/icu/icu_utf.cc',
+- 'third_party/icu/icu_utf.h',
+ 'third_party/superfasthash/superfasthash.c',
+ 'third_party/xdg_mime/xdgmime.h',
+ 'threading/non_thread_safe.h',
+diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/BUILD.gn qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/BUILD.gn
+--- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/BUILD.gn 2017-03-05 16:48:14.207027214 +0100
++++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/BUILD.gn 2017-03-05 16:50:49.267714725 +0100
+@@ -801,8 +801,6 @@
+ "third_party/dmg_fp/dmg_fp.h",
+ "third_party/dmg_fp/dtoa_wrapper.cc",
+ "third_party/dmg_fp/g_fmt.cc",
+- "third_party/icu/icu_utf.cc",
+- "third_party/icu/icu_utf.h",
+ "third_party/superfasthash/superfasthash.c",
+ "threading/non_thread_safe.h",
+ "threading/non_thread_safe_impl.cc",
+diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/files/file_path.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/files/file_path.cc
+--- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/files/file_path.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/files/file_path.cc 2017-03-05 16:50:49.267714725 +0100
+@@ -18,7 +18,7 @@
+
+ #if defined(OS_MACOSX)
+ #include "base/mac/scoped_cftyperef.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+ #endif
+
+ #if defined(OS_WIN)
+@@ -1150,9 +1150,9 @@
+ int* index) {
+ int codepoint = 0;
+ while (*index < length && codepoint == 0) {
+- // CBU8_NEXT returns a value < 0 in error cases. For purposes of string
++ // U8_NEXT returns a value < 0 in error cases. For purposes of string
+ // comparison, we just use that value and flag it with DCHECK.
+- CBU8_NEXT(string, *index, length, codepoint);
++ U8_NEXT(string, *index, length, codepoint);
+ DCHECK_GT(codepoint, 0);
+ if (codepoint > 0) {
+ // Check if there is a subtable for this upper byte.
+diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/json/json_parser.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/json/json_parser.cc
+--- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/json/json_parser.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/json/json_parser.cc 2017-03-05 16:50:49.268714710 +0100
+@@ -16,7 +16,7 @@
+ #include "base/strings/stringprintf.h"
+ #include "base/strings/utf_string_conversion_utils.h"
+ #include "base/strings/utf_string_conversions.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+ #include "base/values.h"
+
+ namespace base {
+@@ -631,8 +631,8 @@
+ int32_t next_char = 0;
+
+ while (CanConsume(1)) {
+- pos_ = start_pos_ + index_; // CBU8_NEXT is postcrement.
+- CBU8_NEXT(start_pos_, index_, length, next_char);
++ pos_ = start_pos_ + index_; // U8_NEXT is postcrement.
++ U8_NEXT(start_pos_, index_, length, next_char);
+ if (next_char < 0 || !IsValidCharacter(next_char)) {
+ ReportError(JSONReader::JSON_UNSUPPORTED_ENCODING, 1);
+ return false;
+@@ -725,7 +725,7 @@
+ return false;
+ }
+ } else if (next_char == '"') {
+- --index_; // Rewind by one because of CBU8_NEXT.
++ --index_; // Rewind by one because of U8_NEXT.
+ out->Swap(&string);
+ return true;
+ } else {
+@@ -765,10 +765,10 @@
+
+ // If this is a high surrogate, consume the next code unit to get the
+ // low surrogate.
+- if (CBU16_IS_SURROGATE(code_unit16_high)) {
++ if (U16_IS_SURROGATE(code_unit16_high)) {
+ // Make sure this is the high surrogate. If not, it's an encoding
+ // error.
+- if (!CBU16_IS_SURROGATE_LEAD(code_unit16_high))
++ if (!U16_IS_SURROGATE_LEAD(code_unit16_high))
+ return false;
+
+ // Make sure that the token has more characters to consume the
+@@ -785,24 +785,24 @@
+
+ NextNChars(3);
+
+- if (!CBU16_IS_TRAIL(code_unit16_low)) {
++ if (!U16_IS_TRAIL(code_unit16_low)) {
+ return false;
+ }
+
+ uint32_t code_point =
+- CBU16_GET_SUPPLEMENTARY(code_unit16_high, code_unit16_low);
++ U16_GET_SUPPLEMENTARY(code_unit16_high, code_unit16_low);
+ if (!IsValidCharacter(code_point))
+ return false;
+
+ offset = 0;
+- CBU8_APPEND_UNSAFE(code_unit8, offset, code_point);
++ U8_APPEND_UNSAFE(code_unit8, offset, code_point);
+ } else {
+ // Not a surrogate.
+- DCHECK(CBU16_IS_SINGLE(code_unit16_high));
++ DCHECK(U16_IS_SINGLE(code_unit16_high));
+ if (!IsValidCharacter(code_unit16_high))
+ return false;
+
+- CBU8_APPEND_UNSAFE(code_unit8, offset, code_unit16_high);
++ U8_APPEND_UNSAFE(code_unit8, offset, code_unit16_high);
+ }
+
+ dest_string->append(code_unit8);
+@@ -819,9 +819,9 @@
+ } else {
+ char utf8_units[4] = { 0 };
+ int offset = 0;
+- CBU8_APPEND_UNSAFE(utf8_units, offset, point);
++ U8_APPEND_UNSAFE(utf8_units, offset, point);
+ dest->Convert();
+- // CBU8_APPEND_UNSAFE can overwrite up to 4 bytes, so utf8_units may not be
++ // U8_APPEND_UNSAFE can overwrite up to 4 bytes, so utf8_units may not be
+ // zero terminated at this point. |offset| contains the correct length.
+ dest->AppendString(std::string(utf8_units, offset));
+ }
+diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/json/string_escape.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/json/string_escape.cc
+--- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/json/string_escape.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/json/string_escape.cc 2017-03-05 16:50:49.268714710 +0100
+@@ -14,7 +14,7 @@
+ #include "base/strings/stringprintf.h"
+ #include "base/strings/utf_string_conversion_utils.h"
+ #include "base/strings/utf_string_conversions.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+
+ namespace base {
+
+diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/pattern.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/pattern.cc
+--- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/pattern.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/pattern.cc 2017-03-05 16:50:49.404712681 +0100
+@@ -4,13 +4,13 @@
+
+ #include "base/strings/pattern.h"
+
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+
+ namespace base {
+
+ namespace {
+
+-static bool IsWildcard(base_icu::UChar32 character) {
++static bool IsWildcard(UChar32 character) {
+ return character == '*' || character == '?';
+ }
+
+@@ -37,9 +37,9 @@
+ // Check if the chars match, if so, increment the ptrs.
+ const CHAR* pattern_next = *pattern;
+ const CHAR* string_next = *string;
+- base_icu::UChar32 pattern_char = next(&pattern_next, pattern_end);
++ UChar32 pattern_char = next(&pattern_next, pattern_end);
+ if (pattern_char == next(&string_next, string_end) &&
+- pattern_char != CBU_SENTINEL) {
++ pattern_char != U_SENTINEL) {
+ *pattern = pattern_next;
+ *string = string_next;
+ } else {
+@@ -133,20 +133,20 @@
+ }
+
+ struct NextCharUTF8 {
+- base_icu::UChar32 operator()(const char** p, const char* end) {
+- base_icu::UChar32 c;
++ UChar32 operator()(const char** p, const char* end) {
++ UChar32 c;
+ int offset = 0;
+- CBU8_NEXT(*p, offset, end - *p, c);
++ U8_NEXT(*p, offset, end - *p, c);
+ *p += offset;
+ return c;
+ }
+ };
+
+ struct NextCharUTF16 {
+- base_icu::UChar32 operator()(const char16** p, const char16* end) {
+- base_icu::UChar32 c;
++ UChar32 operator()(const char16** p, const char16* end) {
++ UChar32 c;
+ int offset = 0;
+- CBU16_NEXT(*p, offset, end - *p, c);
++ U16_NEXT(*p, offset, end - *p, c);
+ *p += offset;
+ return c;
+ }
+diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/string_split.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/string_split.cc
+--- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/string_split.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/string_split.cc 2017-03-05 16:50:49.404712681 +0100
+@@ -8,7 +8,7 @@
+
+ #include "base/logging.h"
+ #include "base/strings/string_util.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+
+ namespace base {
+
+diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/string_util.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/string_util.cc
+--- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/string_util.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/string_util.cc 2017-03-05 16:50:49.404712681 +0100
+@@ -25,7 +25,7 @@
+ #include "base/memory/singleton.h"
+ #include "base/strings/utf_string_conversion_utils.h"
+ #include "base/strings/utf_string_conversions.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+ #include "build/build_config.h"
+
+ namespace base {
+@@ -357,19 +357,19 @@
+ }
+ DCHECK_LE(byte_size,
+ static_cast<uint32_t>(std::numeric_limits<int32_t>::max()));
+- // Note: This cast is necessary because CBU8_NEXT uses int32_ts.
++ // Note: This cast is necessary because U8_NEXT uses int32_ts.
+ int32_t truncation_length = static_cast<int32_t>(byte_size);
+ int32_t char_index = truncation_length - 1;
+ const char* data = input.data();
+
+- // Using CBU8, we will move backwards from the truncation point
++ // Using U8, we will move backwards from the truncation point
+ // to the beginning of the string looking for a valid UTF8
+ // character. Once a full UTF8 character is found, we will
+ // truncate the string to the end of that character.
+ while (char_index >= 0) {
+ int32_t prev = char_index;
+- base_icu::UChar32 code_point = 0;
+- CBU8_NEXT(data, char_index, truncation_length, code_point);
++ UChar32 code_point = 0;
++ U8_NEXT(data, char_index, truncation_length, code_point);
+ if (!IsValidCharacter(code_point) ||
+ !IsValidCodepoint(code_point)) {
+ char_index = prev - 1;
+@@ -522,7 +522,7 @@
+
+ while (char_index < src_len) {
+ int32_t code_point;
+- CBU8_NEXT(src, char_index, src_len, code_point);
++ U8_NEXT(src, char_index, src_len, code_point);
+ if (!IsValidCharacter(code_point))
+ return false;
+ }
+diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc
+--- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc 2017-03-05 16:50:49.404712681 +0100
+@@ -4,7 +4,7 @@
+
+ #include "base/strings/utf_string_conversion_utils.h"
+
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+
+ namespace base {
+
+@@ -18,7 +18,7 @@
+ // use a signed type for code_point. But this function returns false
+ // on error anyway, so code_point_out is unsigned.
+ int32_t code_point;
+- CBU8_NEXT(src, *char_index, src_len, code_point);
++ U8_NEXT(src, *char_index, src_len, code_point);
+ *code_point_out = static_cast<uint32_t>(code_point);
+
+ // The ICU macro above moves to the next char, we want to point to the last
+@@ -33,16 +33,16 @@
+ int32_t src_len,
+ int32_t* char_index,
+ uint32_t* code_point) {
+- if (CBU16_IS_SURROGATE(src[*char_index])) {
+- if (!CBU16_IS_SURROGATE_LEAD(src[*char_index]) ||
++ if (U16_IS_SURROGATE(src[*char_index])) {
++ if (!U16_IS_SURROGATE_LEAD(src[*char_index]) ||
+ *char_index + 1 >= src_len ||
+- !CBU16_IS_TRAIL(src[*char_index + 1])) {
++ !U16_IS_TRAIL(src[*char_index + 1])) {
+ // Invalid surrogate pair.
+ return false;
+ }
+
+ // Valid surrogate pair.
+- *code_point = CBU16_GET_SUPPLEMENTARY(src[*char_index],
++ *code_point = U16_GET_SUPPLEMENTARY(src[*char_index],
+ src[*char_index + 1]);
+ (*char_index)++;
+ } else {
+@@ -76,30 +76,30 @@
+ }
+
+
+- // CBU8_APPEND_UNSAFE can append up to 4 bytes.
++ // U8_APPEND_UNSAFE can append up to 4 bytes.
+ size_t char_offset = output->length();
+ size_t original_char_offset = char_offset;
+- output->resize(char_offset + CBU8_MAX_LENGTH);
++ output->resize(char_offset + U8_MAX_LENGTH);
+
+- CBU8_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
++ U8_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
+
+- // CBU8_APPEND_UNSAFE will advance our pointer past the inserted character, so
++ // U8_APPEND_UNSAFE will advance our pointer past the inserted character, so
+ // it will represent the new length of the string.
+ output->resize(char_offset);
+ return char_offset - original_char_offset;
+ }
+
+ size_t WriteUnicodeCharacter(uint32_t code_point, string16* output) {
+- if (CBU16_LENGTH(code_point) == 1) {
++ if (U16_LENGTH(code_point) == 1) {
+ // Thie code point is in the Basic Multilingual Plane (BMP).
+ output->push_back(static_cast<char16>(code_point));
+ return 1;
+ }
+ // Non-BMP characters use a double-character encoding.
+ size_t char_offset = output->length();
+- output->resize(char_offset + CBU16_MAX_LENGTH);
+- CBU16_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
+- return CBU16_MAX_LENGTH;
++ output->resize(char_offset + U16_MAX_LENGTH);
++ U16_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
++ return U16_MAX_LENGTH;
+ }
+
+ // Generalized Unicode converter -----------------------------------------------
+diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc
+--- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc 2017-03-05 16:50:49.405712666 +0100
+@@ -5,13 +5,13 @@
+ #include "ui/gfx/utf16_indexing.h"
+
+ #include "base/logging.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+
+ namespace gfx {
+
+ bool IsValidCodePointIndex(const base::string16& s, size_t index) {
+ return index == 0 || index == s.length() ||
+- !(CBU16_IS_TRAIL(s[index]) && CBU16_IS_LEAD(s[index - 1]));
++ !(U16_IS_TRAIL(s[index]) && U16_IS_LEAD(s[index - 1]));
+ }
+
+ ptrdiff_t UTF16IndexToOffset(const base::string16& s, size_t base, size_t pos) {
diff --git a/qtwebengine-opensource-src-5.8.0-system-nspr-prtime.patch b/qtwebengine-opensource-src-5.8.0-system-nspr-prtime.patch
new file mode 100644
index 0000000..4f17325
--- /dev/null
+++ b/qtwebengine-opensource-src-5.8.0-system-nspr-prtime.patch
@@ -0,0 +1,48 @@
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/base.gypi qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/base.gypi
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/base.gypi 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/base.gypi 2017-03-05 16:48:14.206027229 +0100
+@@ -676,8 +676,6 @@
+ 'third_party/dmg_fp/g_fmt.cc',
+ 'third_party/icu/icu_utf.cc',
+ 'third_party/icu/icu_utf.h',
+- 'third_party/nspr/prtime.cc',
+- 'third_party/nspr/prtime.h',
+ 'third_party/superfasthash/superfasthash.c',
+ 'third_party/xdg_mime/xdgmime.h',
+ 'threading/non_thread_safe.h',
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/BUILD.gn qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/BUILD.gn
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/BUILD.gn 2017-03-05 16:48:14.207027214 +0100
+@@ -803,8 +803,6 @@
+ "third_party/dmg_fp/g_fmt.cc",
+ "third_party/icu/icu_utf.cc",
+ "third_party/icu/icu_utf.h",
+- "third_party/nspr/prtime.cc",
+- "third_party/nspr/prtime.h",
+ "third_party/superfasthash/superfasthash.c",
+ "threading/non_thread_safe.h",
+ "threading/non_thread_safe_impl.cc",
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/time/pr_time_unittest.cc qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/time/pr_time_unittest.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/time/pr_time_unittest.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/time/pr_time_unittest.cc 2017-03-05 16:48:14.208027199 +0100
+@@ -7,7 +7,7 @@
+
+ #include "base/compiler_specific.h"
+ #include "base/macros.h"
+-#include "base/third_party/nspr/prtime.h"
++#include <nspr4/prtime.h>
+ #include "base/time/time.h"
+ #include "build/build_config.h"
+ #include "testing/gtest/include/gtest/gtest.h"
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/time/time.cc qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/time/time.cc
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/time/time.cc 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/time/time.cc 2017-03-05 16:48:14.298025856 +0100
+@@ -14,7 +14,7 @@
+ #include "base/logging.h"
+ #include "base/macros.h"
+ #include "base/strings/stringprintf.h"
+-#include "base/third_party/nspr/prtime.h"
++#include <nspr4/prtime.h>
+ #include "build/build_config.h"
+
+ namespace base {
diff --git a/qtwebengine-opensource-src-5.8.0-v8-gcc7.patch b/qtwebengine-opensource-src-5.8.0-v8-gcc7.patch
new file mode 100644
index 0000000..8a87503
--- /dev/null
+++ b/qtwebengine-opensource-src-5.8.0-v8-gcc7.patch
@@ -0,0 +1,71 @@
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects-body-descriptors.h qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects-body-descriptors.h
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects-body-descriptors.h 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects-body-descriptors.h 2017-03-06 02:05:57.848394582 +0100
+@@ -99,7 +99,7 @@
+
+ template <typename StaticVisitor>
+ static inline void IterateBody(HeapObject* obj, int object_size) {
+- IterateBody(obj);
++ IterateBody<StaticVisitor>(obj);
+ }
+ };
+
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects.h qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects.h
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects.h 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects.h 2017-03-06 02:05:57.990392454 +0100
+@@ -3193,22 +3193,10 @@
+ public:
+ typedef Shape ShapeT;
+
+- // Wrapper methods
+- inline uint32_t Hash(Key key) {
+- if (Shape::UsesSeed) {
+- return Shape::SeededHash(key, GetHeap()->HashSeed());
+- } else {
+- return Shape::Hash(key);
+- }
+- }
+-
+- inline uint32_t HashForObject(Key key, Object* object) {
+- if (Shape::UsesSeed) {
+- return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
+- } else {
+- return Shape::HashForObject(key, object);
+- }
+- }
++ // Wrapper methods. Defined in src/objects-inl.h
++ // to break a cycle with src/heap/heap.h.
++ inline uint32_t Hash(Key key);
++ inline uint32_t HashForObject(Key key, Object* object);
+
+ // Returns a new HashTable object.
+ MUST_USE_RESULT static Handle<Derived> New(
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects-inl.h qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects-inl.h
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects-inl.h 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects-inl.h 2017-03-06 02:05:57.992392424 +0100
+@@ -38,6 +38,25 @@
+ namespace v8 {
+ namespace internal {
+
++template <typename Derived, typename Shape, typename Key>
++uint32_t HashTable<Derived, Shape, Key>::Hash(Key key) {
++ if (Shape::UsesSeed) {
++ return Shape::SeededHash(key, GetHeap()->HashSeed());
++ } else {
++ return Shape::Hash(key);
++ }
++}
++
++template <typename Derived, typename Shape, typename Key>
++uint32_t HashTable<Derived, Shape, Key>::HashForObject(Key key,
++ Object* object) {
++ if (Shape::UsesSeed) {
++ return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
++ } else {
++ return Shape::HashForObject(key, object);
++ }
++}
++
+ PropertyDetails::PropertyDetails(Smi* smi) {
+ value_ = smi->value();
+ }
diff --git a/qtwebengine-opensource-src-5.8.0-webrtc-neon-detect.patch b/qtwebengine-opensource-src-5.8.0-webrtc-neon-detect.patch
new file mode 100644
index 0000000..8e26dbe
--- /dev/null
+++ b/qtwebengine-opensource-src-5.8.0-webrtc-neon-detect.patch
@@ -0,0 +1,32 @@
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn qtwebengine-opensource-src-5.8.0-webrtc-neon-detect/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-webrtc-neon-detect/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn 2017-03-05 17:08:43.547748044 +0100
+@@ -108,9 +108,7 @@
+ if (is_linux) {
+ defines += [ "WEBRTC_THREAD_RR" ]
+
+- if (!build_with_chromium) {
+- deps += [ ":cpu_features_linux" ]
+- }
++ deps += [ ":cpu_features_linux" ]
+
+ libs += [ "rt" ]
+ }
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/system_wrappers/system_wrappers.gyp qtwebengine-opensource-src-5.8.0-webrtc-neon-detect/src/3rdparty/chromium/third_party/webrtc/system_wrappers/system_wrappers.gyp
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/system_wrappers/system_wrappers.gyp 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-webrtc-neon-detect/src/3rdparty/chromium/third_party/webrtc/system_wrappers/system_wrappers.gyp 2017-03-05 17:07:01.869254856 +0100
+@@ -112,12 +112,8 @@
+ 'defines': [
+ 'WEBRTC_THREAD_RR',
+ ],
+- 'conditions': [
+- ['build_with_chromium==0', {
+- 'dependencies': [
+- 'cpu_features_webrtc.gyp:cpu_features_linux',
+- ],
+- }],
++ 'dependencies': [
++ 'cpu_features_webrtc.gyp:cpu_features_linux',
+ ],
+ 'link_settings': {
+ 'libraries': [ '-lrt', ],
diff --git a/qtwebengine-opensource-src-5.8.0-wtf-gcc7.patch b/qtwebengine-opensource-src-5.8.0-wtf-gcc7.patch
new file mode 100644
index 0000000..f679530
--- /dev/null
+++ b/qtwebengine-opensource-src-5.8.0-wtf-gcc7.patch
@@ -0,0 +1,12 @@
+diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h qtwebengine-opensource-src-5.8.0-wtf-gcc7/src/3rdparty/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h
+--- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h 2017-01-03 10:28:53.000000000 +0100
++++ qtwebengine-opensource-src-5.8.0-wtf-gcc7/src/3rdparty/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h 2017-03-07 03:00:44.783316233 +0100
+@@ -542,6 +542,8 @@
+ return *this;
+ }
+
++inline void swapAnchor(LinkedHashSetNodeBase& a, LinkedHashSetNodeBase& b);
++
+ template<typename T, typename U, typename V, typename W>
+ inline void LinkedHashSet<T, U, V, W>::swap(LinkedHashSet& other)
+ {
diff --git a/sources b/sources
index fb92ca3..805aa50 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (qtwebengine-opensource-src-5.9.0-clean.tar.xz) = b80070b267bffb29a17f8fbf9da8c9f9fe6d59c12bccb3710370b1c830f0f162199341266da6c24563e75f17f6f9d850fd762f58ab1fafc2535f432d6180c98c
+SHA512 (qtwebengine-opensource-src-5.8.0-clean.tar.xz) = 18a49156da8d2e21fb0fe4781646c753c82d616964dd14b0651a1097b2a79a5ddb852dbdcc838d1e9e9a4ec460dd77fbab78a03672f5e827ab061fdf97db4a25
commit 968c8c053a942ae14ddfa67700b63254f8a58fd9
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Tue Jun 6 00:00:44 2017 +0200
Revert "- Proper source"
This reverts commit 024052080f87f20df7b3cd6f411f2f3d91a0e518.
I already told you last time (5.8) that this way of maintaining patches
(importing them all into git and reexporting them from there each time)
is not how I work (I want only those patches rebased and renamed that
actually need rebasing) and that you are only causing me more work.
Please keep your hands off my package from now on.
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index ddc64fc..b039a74 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -49,9 +49,9 @@ Release: 1%{?dist}
License: (LGPLv2 with exceptions or GPLv3 with exceptions) and BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2)
URL: http://www.qt.io
# cleaned tarball with patent-encumbered codecs removed from the bundled FFmpeg
-# wget https://download.qt.io/official_releases/qt/5.9/5.9.0/submodules/qtwebeng...
+# wget http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtwebengi...
# ./clean_qtwebengine.sh 5.8.0
-Source0: qtwebengine-opensource-src-%{version}-clean.tar.xz
+Source0: https://download.qt.io/official_releases/qt/5.9/5.9.0/submodules/qtwebeng...
# cleanup scripts used above
Source1: clean_qtwebengine.sh
Source2: clean_ffmpeg.sh
commit e83ec109c866b66c33e636408855c9a2cba88b3f
Author: Kevin Kofler <Kevin(a)tigcc.ticalc.org>
Date: Mon Jun 5 23:59:21 2017 +0200
Revert "- Fix icu and nspr patches. One to go"
This reverts commit ee046f9af5635bb49d85121ec73e3cfe9415105a.
I already told you last time (5.8) that this way of maintaining patches
(importing them all into git and reexporting them from there each time)
is not how I work (I want only those patches rebased and renamed that
actually need rebasing) and that you are only causing me more work.
Please keep your hands off my package from now on.
diff --git a/0002-qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch b/0002-qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
index 9ec4358..5bc39ee 100644
--- a/0002-qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
+++ b/0002-qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
@@ -1,14 +1,13 @@
-From 1592ad223b8fe064a72e21e54d36de4bc9949756 Mon Sep 17 00:00:00 2001
+From 60434d58353db516e795e12817e1953700f9e5e4 Mon Sep 17 00:00:00 2001
From: Helio Chissini de Castro <helio(a)kde.org>
Date: Wed, 31 May 2017 10:46:36 +0200
Subject: [PATCH] qtwebengine-opensource-src-5.9.0-system-nspr-prtime
---
- src/3rdparty/chromium/base/BUILD.gn | 2 --
- src/3rdparty/chromium/base/time/pr_time_unittest.cc | 2 +-
- src/3rdparty/chromium/base/time/time.cc | 2 +-
- src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py | 4 ++++
- 4 files changed, 6 insertions(+), 4 deletions(-)
+ src/3rdparty/chromium/base/BUILD.gn | 2 --
+ src/3rdparty/chromium/base/time/pr_time_unittest.cc | 2 +-
+ src/3rdparty/chromium/base/time/time.cc | 2 +-
+ 3 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/src/3rdparty/chromium/base/BUILD.gn b/src/3rdparty/chromium/base/BUILD.gn
index f2672cba7..66f2be1ff 100644
@@ -50,21 +49,6 @@ index 4e942015f..29fde71dd 100644
#include "build/build_config.h"
namespace base {
-diff --git a/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py b/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py
-index 43d252b43..fc7efd80a 100755
---- a/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py
-+++ b/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py
-@@ -576,6 +576,10 @@ def write_gn_ninja(path, root_gen_dir, options):
-
- if is_linux:
- libs.extend(['-lrt'])
-+ libs.extend(['-lplds4'])
-+ libs.extend(['-lplc4'])
-+ libs.extend(['-lnspr4'])
-+
- ldflags.extend(['-pthread'])
-
- static_libraries['xdg_user_dirs'] = {
--
2.13.0
diff --git a/0003-qtwebengine-opensource-src-5.9.0-system-icu-utf.patch b/0003-qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
index 4d6034d..c7fc67f 100644
--- a/0003-qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
+++ b/0003-qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
@@ -1,27 +1,26 @@
-From dff1d03d1c4936183c46ff13f2bbd65901cf4ebb Mon Sep 17 00:00:00 2001
+From 63abd7883643841941505c82d42589d8d6814478 Mon Sep 17 00:00:00 2001
From: Helio Chissini de Castro <helio(a)kde.org>
Date: Wed, 31 May 2017 11:16:12 +0200
Subject: [PATCH] qtwebengine-opensource-src-5.9.0-system-icu-utf
---
- src/3rdparty/chromium/base/BUILD.gn | 4 +--
+ src/3rdparty/chromium/base/BUILD.gn | 2 --
src/3rdparty/chromium/base/files/file_path.cc | 6 ++---
src/3rdparty/chromium/base/json/json_parser.cc | 28 ++++++++++----------
src/3rdparty/chromium/base/json/string_escape.cc | 2 +-
- src/3rdparty/chromium/base/strings/pattern.cc | 21 ++++++++-------
+ src/3rdparty/chromium/base/strings/pattern.cc | 9 +++----
src/3rdparty/chromium/base/strings/string_split.cc | 2 +-
- src/3rdparty/chromium/base/strings/string_util.cc | 12 ++++-----
+ src/3rdparty/chromium/base/strings/string_util.cc | 10 ++++----
.../base/strings/utf_string_conversion_utils.cc | 28 ++++++++++----------
.../chromium/base/third_party/icu/icu_utf.cc | 30 +++++++++++-----------
.../browser/devtools/devtools_io_context.cc | 4 +--
.../chromium/net/cert/internal/parse_name.cc | 6 ++---
- .../chromium/tools/gn/bootstrap/bootstrap.py | 3 +++
.../chromium/ui/base/ime/input_method_chromeos.cc | 2 +-
src/3rdparty/chromium/ui/gfx/utf16_indexing.cc | 4 +--
- 14 files changed, 77 insertions(+), 75 deletions(-)
+ 13 files changed, 65 insertions(+), 68 deletions(-)
diff --git a/src/3rdparty/chromium/base/BUILD.gn b/src/3rdparty/chromium/base/BUILD.gn
-index 66f2be1ff..a7d384ca4 100644
+index 66f2be1ff..51faf08ad 100644
--- a/src/3rdparty/chromium/base/BUILD.gn
+++ b/src/3rdparty/chromium/base/BUILD.gn
@@ -831,8 +831,6 @@ component("base") {
@@ -33,15 +32,6 @@ index 66f2be1ff..a7d384ca4 100644
"third_party/superfasthash/superfasthash.c",
"threading/non_thread_safe.h",
"threading/non_thread_safe_impl.cc",
-@@ -1357,6 +1355,8 @@ component("base") {
- linux_configs += [ "//build/config/linux:glib" ]
- }
-
-+ libs += [ "icu18n" ]
-+
- defines += [ "USE_SYMBOLIZE" ]
-
- configs += linux_configs
diff --git a/src/3rdparty/chromium/base/files/file_path.cc b/src/3rdparty/chromium/base/files/file_path.cc
index cff862ae1..b17b46e5f 100644
--- a/src/3rdparty/chromium/base/files/file_path.cc
@@ -175,10 +165,10 @@ index f67fa93bf..907b80a73 100644
namespace base {
diff --git a/src/3rdparty/chromium/base/strings/pattern.cc b/src/3rdparty/chromium/base/strings/pattern.cc
-index af30aab86..c4ce6fc86 100644
+index af30aab86..7df8f7255 100644
--- a/src/3rdparty/chromium/base/strings/pattern.cc
+++ b/src/3rdparty/chromium/base/strings/pattern.cc
-@@ -3,14 +3,13 @@
+@@ -3,8 +3,7 @@
// found in the LICENSE file.
#include "base/strings/pattern.h"
@@ -188,46 +178,27 @@ index af30aab86..c4ce6fc86 100644
namespace base {
- namespace {
-
--static bool IsWildcard(base_icu::UChar32 character) {
-+static bool IsWildcard(UChar32 character) {
- return character == '*' || character == '?';
- }
-
-@@ -37,9 +36,9 @@ static void EatSameChars(const CHAR** pattern, const CHAR* pattern_end,
- // Check if the chars match, if so, increment the ptrs.
- const CHAR* pattern_next = *pattern;
+@@ -39,7 +38,7 @@ static void EatSameChars(const CHAR** pattern, const CHAR* pattern_end,
const CHAR* string_next = *string;
-- base_icu::UChar32 pattern_char = next(&pattern_next, pattern_end);
-+ UChar32 pattern_char = next(&pattern_next, pattern_end);
+ base_icu::UChar32 pattern_char = next(&pattern_next, pattern_end);
if (pattern_char == next(&string_next, string_end) &&
- pattern_char != CBU_SENTINEL) {
+ pattern_char != U_SENTINEL) {
*pattern = pattern_next;
*string = string_next;
} else {
-@@ -133,20 +132,20 @@ static bool MatchPatternT(const CHAR* eval, const CHAR* eval_end,
- }
-
- struct NextCharUTF8 {
-- base_icu::UChar32 operator()(const char** p, const char* end) {
-- base_icu::UChar32 c;
-+ UChar32 operator()(const char** p, const char* end) {
-+ UChar32 c;
+@@ -136,7 +135,7 @@ struct NextCharUTF8 {
+ base_icu::UChar32 operator()(const char** p, const char* end) {
+ base_icu::UChar32 c;
int offset = 0;
- CBU8_NEXT(*p, offset, end - *p, c);
+ U8_NEXT(*p, offset, end - *p, c);
*p += offset;
return c;
}
- };
-
- struct NextCharUTF16 {
-- base_icu::UChar32 operator()(const char16** p, const char16* end) {
-- base_icu::UChar32 c;
-+ UChar32 operator()(const char16** p, const char16* end) {
-+ UChar32 c;
+@@ -146,7 +145,7 @@ struct NextCharUTF16 {
+ base_icu::UChar32 operator()(const char16** p, const char16* end) {
+ base_icu::UChar32 c;
int offset = 0;
- CBU16_NEXT(*p, offset, end - *p, c);
+ U16_NEXT(*p, offset, end - *p, c);
@@ -248,7 +219,7 @@ index a8180b24d..ac771a0f0 100644
namespace base {
diff --git a/src/3rdparty/chromium/base/strings/string_util.cc b/src/3rdparty/chromium/base/strings/string_util.cc
-index cb668ed7f..c57ccf391 100644
+index cb668ed7f..542f12819 100644
--- a/src/3rdparty/chromium/base/strings/string_util.cc
+++ b/src/3rdparty/chromium/base/strings/string_util.cc
@@ -25,7 +25,7 @@
@@ -277,9 +248,8 @@ index cb668ed7f..c57ccf391 100644
// truncate the string to the end of that character.
while (char_index >= 0) {
int32_t prev = char_index;
-- base_icu::UChar32 code_point = 0;
+ base_icu::UChar32 code_point = 0;
- CBU8_NEXT(data, char_index, truncation_length, code_point);
-+ UChar32 code_point = 0;
+ U8_NEXT(data, char_index, truncation_length, code_point);
if (!IsValidCharacter(code_point) ||
!IsValidCodepoint(code_point)) {
@@ -544,20 +514,6 @@ index bb9b64051..5eaeb52d0 100644
return false;
base::WriteUnicodeCharacter(codepoint, out);
-diff --git a/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py b/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py
-index fc7efd80a..6dcec7f0e 100755
---- a/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py
-+++ b/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py
-@@ -579,6 +579,9 @@ def write_gn_ninja(path, root_gen_dir, options):
- libs.extend(['-lplds4'])
- libs.extend(['-lplc4'])
- libs.extend(['-lnspr4'])
-+ libs.extend(['-licui18n'])
-+ libs.extend(['-licuuc'])
-+ libs.extend(['-licudata'])
-
- ldflags.extend(['-pthread'])
-
diff --git a/src/3rdparty/chromium/ui/base/ime/input_method_chromeos.cc b/src/3rdparty/chromium/ui/base/ime/input_method_chromeos.cc
index a8ac9028f..8fa5d2a64 100644
--- a/src/3rdparty/chromium/ui/base/ime/input_method_chromeos.cc
diff --git a/0004-qtwebengine-opensource-src-5.9.0-no-sse2.patch b/0004-qtwebengine-opensource-src-5.9.0-no-sse2.patch
index 0671b2c..5df622b 100644
--- a/0004-qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/0004-qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -1,4 +1,4 @@
-From 6b733561c390650c11f8e570f59374dde04bed5e Mon Sep 17 00:00:00 2001
+From 844246bd10971ec348f044bc7a13acb17b9ce033 Mon Sep 17 00:00:00 2001
From: Helio Chissini de Castro <helio(a)kde.org>
Date: Wed, 31 May 2017 14:38:20 +0200
Subject: [PATCH] qtwebengine-opensource-src-5.9.0-no-sse2
diff --git a/0005-qtwebengine-opensource-src-5.9.-openmax-dl-neon.patch b/0005-qtwebengine-opensource-src-5.9.-openmax-dl-neon.patch
index e3edcd2..732be1a 100644
--- a/0005-qtwebengine-opensource-src-5.9.-openmax-dl-neon.patch
+++ b/0005-qtwebengine-opensource-src-5.9.-openmax-dl-neon.patch
@@ -1,4 +1,4 @@
-From 707210834b559d54fc7d9dd39a087041d668c9b8 Mon Sep 17 00:00:00 2001
+From 8bad8aac82444a9e1feda3f1a8b214b81be8a8fc Mon Sep 17 00:00:00 2001
From: Helio Chissini de Castro <helio(a)kde.org>
Date: Wed, 31 May 2017 15:02:52 +0200
Subject: [PATCH] qtwebengine-opensource-src-5.9.-openmax-dl-neon
diff --git a/0006-qtwebengine-opensource-src-5.9.0-linux-pri.patch b/0006-qtwebengine-opensource-src-5.9.0-linux-pri.patch
index f45a7c1..92c12de 100644
--- a/0006-qtwebengine-opensource-src-5.9.0-linux-pri.patch
+++ b/0006-qtwebengine-opensource-src-5.9.0-linux-pri.patch
@@ -1,4 +1,4 @@
-From c509c48670c74b4b29be32f9d6d8ca7687ffd340 Mon Sep 17 00:00:00 2001
+From a7885b823a2d3fc853f532fb5ae3a43a3e9967c0 Mon Sep 17 00:00:00 2001
From: Helio Chissini de Castro <helio(a)kde.org>
Date: Wed, 31 May 2017 15:13:15 +0200
Subject: [PATCH] qtwebengine-opensource-src-5.9.0-linux-pri
diff --git a/0007-qtwebengine-opensource-src-5.9.0-no-icudtl-dat.patch b/0007-qtwebengine-opensource-src-5.9.0-no-icudtl-dat.patch
index 883e3f1..bf97a76 100644
--- a/0007-qtwebengine-opensource-src-5.9.0-no-icudtl-dat.patch
+++ b/0007-qtwebengine-opensource-src-5.9.0-no-icudtl-dat.patch
@@ -1,4 +1,4 @@
-From 3edff809547a66830834ed687f138c37f912ee70 Mon Sep 17 00:00:00 2001
+From 99294d646e58bcbedc5987a1816fed592290566f Mon Sep 17 00:00:00 2001
From: Helio Chissini de Castro <helio(a)kde.org>
Date: Wed, 31 May 2017 15:16:56 +0200
Subject: [PATCH] qtwebengine-opensource-src-5.9.0-no-icudtl-dat
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index 949c3db..ddc64fc 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -368,7 +368,7 @@ export CXXFLAGS=`echo "$CXXFLAGS" | sed -e 's/ -g / -g1 /g'`
mkdir %{_target_platform}
pushd %{_target_platform}
-%{qmake_qt5} CONFIG+="webcore_debug v8base_debug use_system_icu force_debug_info" \
+%{qmake_qt5} CONFIG+="webcore_debug v8base_debug force_debug_info" \
WEBENGINE_CONFIG+="use_system_icu use_system_protobuf use_spellchecker" ..
# if we keep these set here, gyp picks up duplicate flags
commit ee046f9af5635bb49d85121ec73e3cfe9415105a
Author: Helio Chissini de Castro <helio(a)kde.org>
Date: Fri Jun 2 08:52:30 2017 +0200
- Fix icu and nspr patches. One to go
diff --git a/0002-qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch b/0002-qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
index 5bc39ee..9ec4358 100644
--- a/0002-qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
+++ b/0002-qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
@@ -1,13 +1,14 @@
-From 60434d58353db516e795e12817e1953700f9e5e4 Mon Sep 17 00:00:00 2001
+From 1592ad223b8fe064a72e21e54d36de4bc9949756 Mon Sep 17 00:00:00 2001
From: Helio Chissini de Castro <helio(a)kde.org>
Date: Wed, 31 May 2017 10:46:36 +0200
Subject: [PATCH] qtwebengine-opensource-src-5.9.0-system-nspr-prtime
---
- src/3rdparty/chromium/base/BUILD.gn | 2 --
- src/3rdparty/chromium/base/time/pr_time_unittest.cc | 2 +-
- src/3rdparty/chromium/base/time/time.cc | 2 +-
- 3 files changed, 2 insertions(+), 4 deletions(-)
+ src/3rdparty/chromium/base/BUILD.gn | 2 --
+ src/3rdparty/chromium/base/time/pr_time_unittest.cc | 2 +-
+ src/3rdparty/chromium/base/time/time.cc | 2 +-
+ src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py | 4 ++++
+ 4 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/3rdparty/chromium/base/BUILD.gn b/src/3rdparty/chromium/base/BUILD.gn
index f2672cba7..66f2be1ff 100644
@@ -49,6 +50,21 @@ index 4e942015f..29fde71dd 100644
#include "build/build_config.h"
namespace base {
+diff --git a/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py b/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py
+index 43d252b43..fc7efd80a 100755
+--- a/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py
++++ b/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py
+@@ -576,6 +576,10 @@ def write_gn_ninja(path, root_gen_dir, options):
+
+ if is_linux:
+ libs.extend(['-lrt'])
++ libs.extend(['-lplds4'])
++ libs.extend(['-lplc4'])
++ libs.extend(['-lnspr4'])
++
+ ldflags.extend(['-pthread'])
+
+ static_libraries['xdg_user_dirs'] = {
--
2.13.0
diff --git a/0003-qtwebengine-opensource-src-5.9.0-system-icu-utf.patch b/0003-qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
index c7fc67f..4d6034d 100644
--- a/0003-qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
+++ b/0003-qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
@@ -1,26 +1,27 @@
-From 63abd7883643841941505c82d42589d8d6814478 Mon Sep 17 00:00:00 2001
+From dff1d03d1c4936183c46ff13f2bbd65901cf4ebb Mon Sep 17 00:00:00 2001
From: Helio Chissini de Castro <helio(a)kde.org>
Date: Wed, 31 May 2017 11:16:12 +0200
Subject: [PATCH] qtwebengine-opensource-src-5.9.0-system-icu-utf
---
- src/3rdparty/chromium/base/BUILD.gn | 2 --
+ src/3rdparty/chromium/base/BUILD.gn | 4 +--
src/3rdparty/chromium/base/files/file_path.cc | 6 ++---
src/3rdparty/chromium/base/json/json_parser.cc | 28 ++++++++++----------
src/3rdparty/chromium/base/json/string_escape.cc | 2 +-
- src/3rdparty/chromium/base/strings/pattern.cc | 9 +++----
+ src/3rdparty/chromium/base/strings/pattern.cc | 21 ++++++++-------
src/3rdparty/chromium/base/strings/string_split.cc | 2 +-
- src/3rdparty/chromium/base/strings/string_util.cc | 10 ++++----
+ src/3rdparty/chromium/base/strings/string_util.cc | 12 ++++-----
.../base/strings/utf_string_conversion_utils.cc | 28 ++++++++++----------
.../chromium/base/third_party/icu/icu_utf.cc | 30 +++++++++++-----------
.../browser/devtools/devtools_io_context.cc | 4 +--
.../chromium/net/cert/internal/parse_name.cc | 6 ++---
+ .../chromium/tools/gn/bootstrap/bootstrap.py | 3 +++
.../chromium/ui/base/ime/input_method_chromeos.cc | 2 +-
src/3rdparty/chromium/ui/gfx/utf16_indexing.cc | 4 +--
- 13 files changed, 65 insertions(+), 68 deletions(-)
+ 14 files changed, 77 insertions(+), 75 deletions(-)
diff --git a/src/3rdparty/chromium/base/BUILD.gn b/src/3rdparty/chromium/base/BUILD.gn
-index 66f2be1ff..51faf08ad 100644
+index 66f2be1ff..a7d384ca4 100644
--- a/src/3rdparty/chromium/base/BUILD.gn
+++ b/src/3rdparty/chromium/base/BUILD.gn
@@ -831,8 +831,6 @@ component("base") {
@@ -32,6 +33,15 @@ index 66f2be1ff..51faf08ad 100644
"third_party/superfasthash/superfasthash.c",
"threading/non_thread_safe.h",
"threading/non_thread_safe_impl.cc",
+@@ -1357,6 +1355,8 @@ component("base") {
+ linux_configs += [ "//build/config/linux:glib" ]
+ }
+
++ libs += [ "icu18n" ]
++
+ defines += [ "USE_SYMBOLIZE" ]
+
+ configs += linux_configs
diff --git a/src/3rdparty/chromium/base/files/file_path.cc b/src/3rdparty/chromium/base/files/file_path.cc
index cff862ae1..b17b46e5f 100644
--- a/src/3rdparty/chromium/base/files/file_path.cc
@@ -165,10 +175,10 @@ index f67fa93bf..907b80a73 100644
namespace base {
diff --git a/src/3rdparty/chromium/base/strings/pattern.cc b/src/3rdparty/chromium/base/strings/pattern.cc
-index af30aab86..7df8f7255 100644
+index af30aab86..c4ce6fc86 100644
--- a/src/3rdparty/chromium/base/strings/pattern.cc
+++ b/src/3rdparty/chromium/base/strings/pattern.cc
-@@ -3,8 +3,7 @@
+@@ -3,14 +3,13 @@
// found in the LICENSE file.
#include "base/strings/pattern.h"
@@ -178,27 +188,46 @@ index af30aab86..7df8f7255 100644
namespace base {
-@@ -39,7 +38,7 @@ static void EatSameChars(const CHAR** pattern, const CHAR* pattern_end,
+ namespace {
+
+-static bool IsWildcard(base_icu::UChar32 character) {
++static bool IsWildcard(UChar32 character) {
+ return character == '*' || character == '?';
+ }
+
+@@ -37,9 +36,9 @@ static void EatSameChars(const CHAR** pattern, const CHAR* pattern_end,
+ // Check if the chars match, if so, increment the ptrs.
+ const CHAR* pattern_next = *pattern;
const CHAR* string_next = *string;
- base_icu::UChar32 pattern_char = next(&pattern_next, pattern_end);
+- base_icu::UChar32 pattern_char = next(&pattern_next, pattern_end);
++ UChar32 pattern_char = next(&pattern_next, pattern_end);
if (pattern_char == next(&string_next, string_end) &&
- pattern_char != CBU_SENTINEL) {
+ pattern_char != U_SENTINEL) {
*pattern = pattern_next;
*string = string_next;
} else {
-@@ -136,7 +135,7 @@ struct NextCharUTF8 {
- base_icu::UChar32 operator()(const char** p, const char* end) {
- base_icu::UChar32 c;
+@@ -133,20 +132,20 @@ static bool MatchPatternT(const CHAR* eval, const CHAR* eval_end,
+ }
+
+ struct NextCharUTF8 {
+- base_icu::UChar32 operator()(const char** p, const char* end) {
+- base_icu::UChar32 c;
++ UChar32 operator()(const char** p, const char* end) {
++ UChar32 c;
int offset = 0;
- CBU8_NEXT(*p, offset, end - *p, c);
+ U8_NEXT(*p, offset, end - *p, c);
*p += offset;
return c;
}
-@@ -146,7 +145,7 @@ struct NextCharUTF16 {
- base_icu::UChar32 operator()(const char16** p, const char16* end) {
- base_icu::UChar32 c;
+ };
+
+ struct NextCharUTF16 {
+- base_icu::UChar32 operator()(const char16** p, const char16* end) {
+- base_icu::UChar32 c;
++ UChar32 operator()(const char16** p, const char16* end) {
++ UChar32 c;
int offset = 0;
- CBU16_NEXT(*p, offset, end - *p, c);
+ U16_NEXT(*p, offset, end - *p, c);
@@ -219,7 +248,7 @@ index a8180b24d..ac771a0f0 100644
namespace base {
diff --git a/src/3rdparty/chromium/base/strings/string_util.cc b/src/3rdparty/chromium/base/strings/string_util.cc
-index cb668ed7f..542f12819 100644
+index cb668ed7f..c57ccf391 100644
--- a/src/3rdparty/chromium/base/strings/string_util.cc
+++ b/src/3rdparty/chromium/base/strings/string_util.cc
@@ -25,7 +25,7 @@
@@ -248,8 +277,9 @@ index cb668ed7f..542f12819 100644
// truncate the string to the end of that character.
while (char_index >= 0) {
int32_t prev = char_index;
- base_icu::UChar32 code_point = 0;
+- base_icu::UChar32 code_point = 0;
- CBU8_NEXT(data, char_index, truncation_length, code_point);
++ UChar32 code_point = 0;
+ U8_NEXT(data, char_index, truncation_length, code_point);
if (!IsValidCharacter(code_point) ||
!IsValidCodepoint(code_point)) {
@@ -514,6 +544,20 @@ index bb9b64051..5eaeb52d0 100644
return false;
base::WriteUnicodeCharacter(codepoint, out);
+diff --git a/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py b/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py
+index fc7efd80a..6dcec7f0e 100755
+--- a/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py
++++ b/src/3rdparty/chromium/tools/gn/bootstrap/bootstrap.py
+@@ -579,6 +579,9 @@ def write_gn_ninja(path, root_gen_dir, options):
+ libs.extend(['-lplds4'])
+ libs.extend(['-lplc4'])
+ libs.extend(['-lnspr4'])
++ libs.extend(['-licui18n'])
++ libs.extend(['-licuuc'])
++ libs.extend(['-licudata'])
+
+ ldflags.extend(['-pthread'])
+
diff --git a/src/3rdparty/chromium/ui/base/ime/input_method_chromeos.cc b/src/3rdparty/chromium/ui/base/ime/input_method_chromeos.cc
index a8ac9028f..8fa5d2a64 100644
--- a/src/3rdparty/chromium/ui/base/ime/input_method_chromeos.cc
diff --git a/0004-qtwebengine-opensource-src-5.9.0-no-sse2.patch b/0004-qtwebengine-opensource-src-5.9.0-no-sse2.patch
index 5df622b..0671b2c 100644
--- a/0004-qtwebengine-opensource-src-5.9.0-no-sse2.patch
+++ b/0004-qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -1,4 +1,4 @@
-From 844246bd10971ec348f044bc7a13acb17b9ce033 Mon Sep 17 00:00:00 2001
+From 6b733561c390650c11f8e570f59374dde04bed5e Mon Sep 17 00:00:00 2001
From: Helio Chissini de Castro <helio(a)kde.org>
Date: Wed, 31 May 2017 14:38:20 +0200
Subject: [PATCH] qtwebengine-opensource-src-5.9.0-no-sse2
diff --git a/0005-qtwebengine-opensource-src-5.9.-openmax-dl-neon.patch b/0005-qtwebengine-opensource-src-5.9.-openmax-dl-neon.patch
index 732be1a..e3edcd2 100644
--- a/0005-qtwebengine-opensource-src-5.9.-openmax-dl-neon.patch
+++ b/0005-qtwebengine-opensource-src-5.9.-openmax-dl-neon.patch
@@ -1,4 +1,4 @@
-From 8bad8aac82444a9e1feda3f1a8b214b81be8a8fc Mon Sep 17 00:00:00 2001
+From 707210834b559d54fc7d9dd39a087041d668c9b8 Mon Sep 17 00:00:00 2001
From: Helio Chissini de Castro <helio(a)kde.org>
Date: Wed, 31 May 2017 15:02:52 +0200
Subject: [PATCH] qtwebengine-opensource-src-5.9.-openmax-dl-neon
diff --git a/0006-qtwebengine-opensource-src-5.9.0-linux-pri.patch b/0006-qtwebengine-opensource-src-5.9.0-linux-pri.patch
index 92c12de..f45a7c1 100644
--- a/0006-qtwebengine-opensource-src-5.9.0-linux-pri.patch
+++ b/0006-qtwebengine-opensource-src-5.9.0-linux-pri.patch
@@ -1,4 +1,4 @@
-From a7885b823a2d3fc853f532fb5ae3a43a3e9967c0 Mon Sep 17 00:00:00 2001
+From c509c48670c74b4b29be32f9d6d8ca7687ffd340 Mon Sep 17 00:00:00 2001
From: Helio Chissini de Castro <helio(a)kde.org>
Date: Wed, 31 May 2017 15:13:15 +0200
Subject: [PATCH] qtwebengine-opensource-src-5.9.0-linux-pri
diff --git a/0007-qtwebengine-opensource-src-5.9.0-no-icudtl-dat.patch b/0007-qtwebengine-opensource-src-5.9.0-no-icudtl-dat.patch
index bf97a76..883e3f1 100644
--- a/0007-qtwebengine-opensource-src-5.9.0-no-icudtl-dat.patch
+++ b/0007-qtwebengine-opensource-src-5.9.0-no-icudtl-dat.patch
@@ -1,4 +1,4 @@
-From 99294d646e58bcbedc5987a1816fed592290566f Mon Sep 17 00:00:00 2001
+From 3edff809547a66830834ed687f138c37f912ee70 Mon Sep 17 00:00:00 2001
From: Helio Chissini de Castro <helio(a)kde.org>
Date: Wed, 31 May 2017 15:16:56 +0200
Subject: [PATCH] qtwebengine-opensource-src-5.9.0-no-icudtl-dat
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index ddc64fc..949c3db 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -368,7 +368,7 @@ export CXXFLAGS=`echo "$CXXFLAGS" | sed -e 's/ -g / -g1 /g'`
mkdir %{_target_platform}
pushd %{_target_platform}
-%{qmake_qt5} CONFIG+="webcore_debug v8base_debug force_debug_info" \
+%{qmake_qt5} CONFIG+="webcore_debug v8base_debug use_system_icu force_debug_info" \
WEBENGINE_CONFIG+="use_system_icu use_system_protobuf use_spellchecker" ..
# if we keep these set here, gyp picks up duplicate flags
commit 024052080f87f20df7b3cd6f411f2f3d91a0e518
Author: Helio Chissini de Castro <helio(a)kde.org>
Date: Wed May 31 15:52:05 2017 +0200
- Proper source
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index b039a74..ddc64fc 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -49,9 +49,9 @@ Release: 1%{?dist}
License: (LGPLv2 with exceptions or GPLv3 with exceptions) and BSD and LGPLv2+ and ASL 2.0 and IJG and MIT and GPLv2+ and ISC and OpenSSL and (MPLv1.1 or GPLv2 or LGPLv2)
URL: http://www.qt.io
# cleaned tarball with patent-encumbered codecs removed from the bundled FFmpeg
-# wget http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtwebengi...
+# wget https://download.qt.io/official_releases/qt/5.9/5.9.0/submodules/qtwebeng...
# ./clean_qtwebengine.sh 5.8.0
-Source0: https://download.qt.io/official_releases/qt/5.9/5.9.0/submodules/qtwebeng...
+Source0: qtwebengine-opensource-src-%{version}-clean.tar.xz
# cleanup scripts used above
Source1: clean_qtwebengine.sh
Source2: clean_ffmpeg.sh
commit 7816e88f62f2da31954d17cc5c755d88ebe1625f
Author: Helio Chissini de Castro <helio(a)kde.org>
Date: Wed May 31 15:43:14 2017 +0200
Prep webengine 5.9.0
diff --git a/.gitignore b/.gitignore
index 0983a72..3eee6b2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,4 @@
/qtwebengine-opensource-src-5.7.0-clean.tar.xz
/qtwebengine-opensource-src-5.7.1-clean.tar.xz
/qtwebengine-opensource-src-5.8.0-clean.tar.xz
+/qtwebengine-opensource-src-5.9.0-clean.tar.xz
diff --git a/0001-qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch b/0001-qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch
new file mode 100644
index 0000000..7c48a10
--- /dev/null
+++ b/0001-qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch
@@ -0,0 +1,27 @@
+From bef192680ca3c78493c064d7b4a21b79afa92c3e Mon Sep 17 00:00:00 2001
+From: Helio Chissini de Castro <helio(a)kde.org>
+Date: Wed, 31 May 2017 10:41:10 +0200
+Subject: [PATCH] qtwebengine-opensource-src-5.9.0-webrtc-neon-detect
+
+---
+ src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn b/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn
+index 8bed25e27..b0cc2a5e3 100644
+--- a/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn
++++ b/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn
+@@ -93,9 +93,7 @@ rtc_static_library("system_wrappers") {
+ if (is_linux) {
+ defines += [ "WEBRTC_THREAD_RR" ]
+
+- if (!build_with_chromium) {
+- deps += [ ":cpu_features_linux" ]
+- }
++ deps += [ ":cpu_features_linux" ]
+
+ libs += [ "rt" ]
+ }
+--
+2.13.0
+
diff --git a/0002-qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch b/0002-qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
new file mode 100644
index 0000000..5bc39ee
--- /dev/null
+++ b/0002-qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
@@ -0,0 +1,54 @@
+From 60434d58353db516e795e12817e1953700f9e5e4 Mon Sep 17 00:00:00 2001
+From: Helio Chissini de Castro <helio(a)kde.org>
+Date: Wed, 31 May 2017 10:46:36 +0200
+Subject: [PATCH] qtwebengine-opensource-src-5.9.0-system-nspr-prtime
+
+---
+ src/3rdparty/chromium/base/BUILD.gn | 2 --
+ src/3rdparty/chromium/base/time/pr_time_unittest.cc | 2 +-
+ src/3rdparty/chromium/base/time/time.cc | 2 +-
+ 3 files changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/src/3rdparty/chromium/base/BUILD.gn b/src/3rdparty/chromium/base/BUILD.gn
+index f2672cba7..66f2be1ff 100644
+--- a/src/3rdparty/chromium/base/BUILD.gn
++++ b/src/3rdparty/chromium/base/BUILD.gn
+@@ -833,8 +833,6 @@ component("base") {
+ "third_party/dmg_fp/g_fmt.cc",
+ "third_party/icu/icu_utf.cc",
+ "third_party/icu/icu_utf.h",
+- "third_party/nspr/prtime.cc",
+- "third_party/nspr/prtime.h",
+ "third_party/superfasthash/superfasthash.c",
+ "threading/non_thread_safe.h",
+ "threading/non_thread_safe_impl.cc",
+diff --git a/src/3rdparty/chromium/base/time/pr_time_unittest.cc b/src/3rdparty/chromium/base/time/pr_time_unittest.cc
+index 3f1a348ae..8f1a11e51 100644
+--- a/src/3rdparty/chromium/base/time/pr_time_unittest.cc
++++ b/src/3rdparty/chromium/base/time/pr_time_unittest.cc
+@@ -7,7 +7,7 @@
+
+ #include "base/compiler_specific.h"
+ #include "base/macros.h"
+-#include "base/third_party/nspr/prtime.h"
++#include <nspr4/prtime.h>
+ #include "base/time/time.h"
+ #include "build/build_config.h"
+ #include "testing/gtest/include/gtest/gtest.h"
+diff --git a/src/3rdparty/chromium/base/time/time.cc b/src/3rdparty/chromium/base/time/time.cc
+index 4e942015f..29fde71dd 100644
+--- a/src/3rdparty/chromium/base/time/time.cc
++++ b/src/3rdparty/chromium/base/time/time.cc
+@@ -13,8 +13,8 @@
+ #include "base/lazy_instance.h"
+ #include "base/logging.h"
+ #include "base/macros.h"
++#include <nspr4/prtime.h>
+ #include "base/strings/stringprintf.h"
+-#include "base/third_party/nspr/prtime.h"
+ #include "build/build_config.h"
+
+ namespace base {
+--
+2.13.0
+
diff --git a/0003-qtwebengine-opensource-src-5.9.0-system-icu-utf.patch b/0003-qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
new file mode 100644
index 0000000..c7fc67f
--- /dev/null
+++ b/0003-qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
@@ -0,0 +1,552 @@
+From 63abd7883643841941505c82d42589d8d6814478 Mon Sep 17 00:00:00 2001
+From: Helio Chissini de Castro <helio(a)kde.org>
+Date: Wed, 31 May 2017 11:16:12 +0200
+Subject: [PATCH] qtwebengine-opensource-src-5.9.0-system-icu-utf
+
+---
+ src/3rdparty/chromium/base/BUILD.gn | 2 --
+ src/3rdparty/chromium/base/files/file_path.cc | 6 ++---
+ src/3rdparty/chromium/base/json/json_parser.cc | 28 ++++++++++----------
+ src/3rdparty/chromium/base/json/string_escape.cc | 2 +-
+ src/3rdparty/chromium/base/strings/pattern.cc | 9 +++----
+ src/3rdparty/chromium/base/strings/string_split.cc | 2 +-
+ src/3rdparty/chromium/base/strings/string_util.cc | 10 ++++----
+ .../base/strings/utf_string_conversion_utils.cc | 28 ++++++++++----------
+ .../chromium/base/third_party/icu/icu_utf.cc | 30 +++++++++++-----------
+ .../browser/devtools/devtools_io_context.cc | 4 +--
+ .../chromium/net/cert/internal/parse_name.cc | 6 ++---
+ .../chromium/ui/base/ime/input_method_chromeos.cc | 2 +-
+ src/3rdparty/chromium/ui/gfx/utf16_indexing.cc | 4 +--
+ 13 files changed, 65 insertions(+), 68 deletions(-)
+
+diff --git a/src/3rdparty/chromium/base/BUILD.gn b/src/3rdparty/chromium/base/BUILD.gn
+index 66f2be1ff..51faf08ad 100644
+--- a/src/3rdparty/chromium/base/BUILD.gn
++++ b/src/3rdparty/chromium/base/BUILD.gn
+@@ -831,8 +831,6 @@ component("base") {
+ "third_party/dmg_fp/dmg_fp.h",
+ "third_party/dmg_fp/dtoa_wrapper.cc",
+ "third_party/dmg_fp/g_fmt.cc",
+- "third_party/icu/icu_utf.cc",
+- "third_party/icu/icu_utf.h",
+ "third_party/superfasthash/superfasthash.c",
+ "threading/non_thread_safe.h",
+ "threading/non_thread_safe_impl.cc",
+diff --git a/src/3rdparty/chromium/base/files/file_path.cc b/src/3rdparty/chromium/base/files/file_path.cc
+index cff862ae1..b17b46e5f 100644
+--- a/src/3rdparty/chromium/base/files/file_path.cc
++++ b/src/3rdparty/chromium/base/files/file_path.cc
+@@ -18,7 +18,7 @@
+
+ #if defined(OS_MACOSX)
+ #include "base/mac/scoped_cftyperef.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+ #endif
+
+ #if defined(OS_WIN)
+@@ -1156,9 +1156,9 @@ inline int HFSReadNextNonIgnorableCodepoint(const char* string,
+ int* index) {
+ int codepoint = 0;
+ while (*index < length && codepoint == 0) {
+- // CBU8_NEXT returns a value < 0 in error cases. For purposes of string
++ // U8_NEXT returns a value < 0 in error cases. For purposes of string
+ // comparison, we just use that value and flag it with DCHECK.
+- CBU8_NEXT(string, *index, length, codepoint);
++ U8_NEXT(string, *index, length, codepoint);
+ DCHECK_GT(codepoint, 0);
+ if (codepoint > 0) {
+ // Check if there is a subtable for this upper byte.
+diff --git a/src/3rdparty/chromium/base/json/json_parser.cc b/src/3rdparty/chromium/base/json/json_parser.cc
+index cd427da9e..82ff9773c 100644
+--- a/src/3rdparty/chromium/base/json/json_parser.cc
++++ b/src/3rdparty/chromium/base/json/json_parser.cc
+@@ -16,7 +16,7 @@
+ #include "base/strings/stringprintf.h"
+ #include "base/strings/utf_string_conversion_utils.h"
+ #include "base/strings/utf_string_conversions.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+ #include "base/values.h"
+
+ namespace base {
+@@ -630,21 +630,21 @@ bool JSONParser::ConsumeStringRaw(StringBuilder* out) {
+
+ while (CanConsume(1)) {
+ int start_index = index_;
+- pos_ = start_pos_ + index_; // CBU8_NEXT is postcrement.
+- CBU8_NEXT(start_pos_, index_, length, next_char);
++ pos_ = start_pos_ + index_; // U8_NEXT is postcrement.
++ U8_NEXT(start_pos_, index_, length, next_char);
+ if (next_char < 0 || !IsValidCharacter(next_char)) {
+ if ((options_ & JSON_REPLACE_INVALID_CHARACTERS) == 0) {
+ ReportError(JSONReader::JSON_UNSUPPORTED_ENCODING, 1);
+ return false;
+ }
+- CBU8_NEXT(start_pos_, start_index, length, next_char);
++ U8_NEXT(start_pos_, start_index, length, next_char);
+ string.Convert();
+ string.AppendString(kUnicodeReplacementString);
+ continue;
+ }
+
+ if (next_char == '"') {
+- --index_; // Rewind by one because of CBU8_NEXT.
++ --index_; // Rewind by one because of U8_NEXT.
+ out->Swap(&string);
+ return true;
+ }
+@@ -774,10 +774,10 @@ bool JSONParser::DecodeUTF16(std::string* dest_string) {
+
+ // If this is a high surrogate, consume the next code unit to get the
+ // low surrogate.
+- if (CBU16_IS_SURROGATE(code_unit16_high)) {
++ if (U16_IS_SURROGATE(code_unit16_high)) {
+ // Make sure this is the high surrogate. If not, it's an encoding
+ // error.
+- if (!CBU16_IS_SURROGATE_LEAD(code_unit16_high))
++ if (!U16_IS_SURROGATE_LEAD(code_unit16_high))
+ return false;
+
+ // Make sure that the token has more characters to consume the
+@@ -794,24 +794,24 @@ bool JSONParser::DecodeUTF16(std::string* dest_string) {
+
+ NextNChars(3);
+
+- if (!CBU16_IS_TRAIL(code_unit16_low)) {
++ if (!U16_IS_TRAIL(code_unit16_low)) {
+ return false;
+ }
+
+ uint32_t code_point =
+- CBU16_GET_SUPPLEMENTARY(code_unit16_high, code_unit16_low);
++ U16_GET_SUPPLEMENTARY(code_unit16_high, code_unit16_low);
+ if (!IsValidCharacter(code_point))
+ return false;
+
+ offset = 0;
+- CBU8_APPEND_UNSAFE(code_unit8, offset, code_point);
++ U8_APPEND_UNSAFE(code_unit8, offset, code_point);
+ } else {
+ // Not a surrogate.
+- DCHECK(CBU16_IS_SINGLE(code_unit16_high));
++ DCHECK(U16_IS_SINGLE(code_unit16_high));
+ if (!IsValidCharacter(code_unit16_high))
+ return false;
+
+- CBU8_APPEND_UNSAFE(code_unit8, offset, code_unit16_high);
++ U8_APPEND_UNSAFE(code_unit8, offset, code_unit16_high);
+ }
+
+ dest_string->append(code_unit8);
+@@ -828,9 +828,9 @@ void JSONParser::DecodeUTF8(const int32_t& point, StringBuilder* dest) {
+ } else {
+ char utf8_units[4] = { 0 };
+ int offset = 0;
+- CBU8_APPEND_UNSAFE(utf8_units, offset, point);
++ U8_APPEND_UNSAFE(utf8_units, offset, point);
+ dest->Convert();
+- // CBU8_APPEND_UNSAFE can overwrite up to 4 bytes, so utf8_units may not be
++ // U8_APPEND_UNSAFE can overwrite up to 4 bytes, so utf8_units may not be
+ // zero terminated at this point. |offset| contains the correct length.
+ dest->AppendString(std::string(utf8_units, offset));
+ }
+diff --git a/src/3rdparty/chromium/base/json/string_escape.cc b/src/3rdparty/chromium/base/json/string_escape.cc
+index f67fa93bf..907b80a73 100644
+--- a/src/3rdparty/chromium/base/json/string_escape.cc
++++ b/src/3rdparty/chromium/base/json/string_escape.cc
+@@ -14,7 +14,7 @@
+ #include "base/strings/stringprintf.h"
+ #include "base/strings/utf_string_conversion_utils.h"
+ #include "base/strings/utf_string_conversions.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+
+ namespace base {
+
+diff --git a/src/3rdparty/chromium/base/strings/pattern.cc b/src/3rdparty/chromium/base/strings/pattern.cc
+index af30aab86..7df8f7255 100644
+--- a/src/3rdparty/chromium/base/strings/pattern.cc
++++ b/src/3rdparty/chromium/base/strings/pattern.cc
+@@ -3,8 +3,7 @@
+ // found in the LICENSE file.
+
+ #include "base/strings/pattern.h"
+-
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+
+ namespace base {
+
+@@ -39,7 +38,7 @@ static void EatSameChars(const CHAR** pattern, const CHAR* pattern_end,
+ const CHAR* string_next = *string;
+ base_icu::UChar32 pattern_char = next(&pattern_next, pattern_end);
+ if (pattern_char == next(&string_next, string_end) &&
+- pattern_char != CBU_SENTINEL) {
++ pattern_char != U_SENTINEL) {
+ *pattern = pattern_next;
+ *string = string_next;
+ } else {
+@@ -136,7 +135,7 @@ struct NextCharUTF8 {
+ base_icu::UChar32 operator()(const char** p, const char* end) {
+ base_icu::UChar32 c;
+ int offset = 0;
+- CBU8_NEXT(*p, offset, end - *p, c);
++ U8_NEXT(*p, offset, end - *p, c);
+ *p += offset;
+ return c;
+ }
+@@ -146,7 +145,7 @@ struct NextCharUTF16 {
+ base_icu::UChar32 operator()(const char16** p, const char16* end) {
+ base_icu::UChar32 c;
+ int offset = 0;
+- CBU16_NEXT(*p, offset, end - *p, c);
++ U16_NEXT(*p, offset, end - *p, c);
+ *p += offset;
+ return c;
+ }
+diff --git a/src/3rdparty/chromium/base/strings/string_split.cc b/src/3rdparty/chromium/base/strings/string_split.cc
+index a8180b24d..ac771a0f0 100644
+--- a/src/3rdparty/chromium/base/strings/string_split.cc
++++ b/src/3rdparty/chromium/base/strings/string_split.cc
+@@ -8,7 +8,7 @@
+
+ #include "base/logging.h"
+ #include "base/strings/string_util.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+
+ namespace base {
+
+diff --git a/src/3rdparty/chromium/base/strings/string_util.cc b/src/3rdparty/chromium/base/strings/string_util.cc
+index cb668ed7f..542f12819 100644
+--- a/src/3rdparty/chromium/base/strings/string_util.cc
++++ b/src/3rdparty/chromium/base/strings/string_util.cc
+@@ -25,7 +25,7 @@
+ #include "base/memory/singleton.h"
+ #include "base/strings/utf_string_conversion_utils.h"
+ #include "base/strings/utf_string_conversions.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+ #include "build/build_config.h"
+
+ namespace base {
+@@ -357,19 +357,19 @@ void TruncateUTF8ToByteSize(const std::string& input,
+ }
+ DCHECK_LE(byte_size,
+ static_cast<uint32_t>(std::numeric_limits<int32_t>::max()));
+- // Note: This cast is necessary because CBU8_NEXT uses int32_ts.
++ // Note: This cast is necessary because U8_NEXT uses int32_ts.
+ int32_t truncation_length = static_cast<int32_t>(byte_size);
+ int32_t char_index = truncation_length - 1;
+ const char* data = input.data();
+
+- // Using CBU8, we will move backwards from the truncation point
++ // Using U8, we will move backwards from the truncation point
+ // to the beginning of the string looking for a valid UTF8
+ // character. Once a full UTF8 character is found, we will
+ // truncate the string to the end of that character.
+ while (char_index >= 0) {
+ int32_t prev = char_index;
+ base_icu::UChar32 code_point = 0;
+- CBU8_NEXT(data, char_index, truncation_length, code_point);
++ U8_NEXT(data, char_index, truncation_length, code_point);
+ if (!IsValidCharacter(code_point) ||
+ !IsValidCodepoint(code_point)) {
+ char_index = prev - 1;
+@@ -522,7 +522,7 @@ bool IsStringUTF8(const StringPiece& str) {
+
+ while (char_index < src_len) {
+ int32_t code_point;
+- CBU8_NEXT(src, char_index, src_len, code_point);
++ U8_NEXT(src, char_index, src_len, code_point);
+ if (!IsValidCharacter(code_point))
+ return false;
+ }
+diff --git a/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc b/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc
+index 3101a6028..7f7d84b3c 100644
+--- a/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc
++++ b/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc
+@@ -4,7 +4,7 @@
+
+ #include "base/strings/utf_string_conversion_utils.h"
+
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+
+ namespace base {
+
+@@ -18,7 +18,7 @@ bool ReadUnicodeCharacter(const char* src,
+ // use a signed type for code_point. But this function returns false
+ // on error anyway, so code_point_out is unsigned.
+ int32_t code_point;
+- CBU8_NEXT(src, *char_index, src_len, code_point);
++ U8_NEXT(src, *char_index, src_len, code_point);
+ *code_point_out = static_cast<uint32_t>(code_point);
+
+ // The ICU macro above moves to the next char, we want to point to the last
+@@ -33,16 +33,16 @@ bool ReadUnicodeCharacter(const char16* src,
+ int32_t src_len,
+ int32_t* char_index,
+ uint32_t* code_point) {
+- if (CBU16_IS_SURROGATE(src[*char_index])) {
+- if (!CBU16_IS_SURROGATE_LEAD(src[*char_index]) ||
++ if (U16_IS_SURROGATE(src[*char_index])) {
++ if (!U16_IS_SURROGATE_LEAD(src[*char_index]) ||
+ *char_index + 1 >= src_len ||
+- !CBU16_IS_TRAIL(src[*char_index + 1])) {
++ !U16_IS_TRAIL(src[*char_index + 1])) {
+ // Invalid surrogate pair.
+ return false;
+ }
+
+ // Valid surrogate pair.
+- *code_point = CBU16_GET_SUPPLEMENTARY(src[*char_index],
++ *code_point = U16_GET_SUPPLEMENTARY(src[*char_index],
+ src[*char_index + 1]);
+ (*char_index)++;
+ } else {
+@@ -76,30 +76,30 @@ size_t WriteUnicodeCharacter(uint32_t code_point, std::string* output) {
+ }
+
+
+- // CBU8_APPEND_UNSAFE can append up to 4 bytes.
++ // U8_APPEND_UNSAFE can append up to 4 bytes.
+ size_t char_offset = output->length();
+ size_t original_char_offset = char_offset;
+- output->resize(char_offset + CBU8_MAX_LENGTH);
++ output->resize(char_offset + U8_MAX_LENGTH);
+
+- CBU8_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
++ U8_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
+
+- // CBU8_APPEND_UNSAFE will advance our pointer past the inserted character, so
++ // U8_APPEND_UNSAFE will advance our pointer past the inserted character, so
+ // it will represent the new length of the string.
+ output->resize(char_offset);
+ return char_offset - original_char_offset;
+ }
+
+ size_t WriteUnicodeCharacter(uint32_t code_point, string16* output) {
+- if (CBU16_LENGTH(code_point) == 1) {
++ if (U16_LENGTH(code_point) == 1) {
+ // Thie code point is in the Basic Multilingual Plane (BMP).
+ output->push_back(static_cast<char16>(code_point));
+ return 1;
+ }
+ // Non-BMP characters use a double-character encoding.
+ size_t char_offset = output->length();
+- output->resize(char_offset + CBU16_MAX_LENGTH);
+- CBU16_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
+- return CBU16_MAX_LENGTH;
++ output->resize(char_offset + U16_MAX_LENGTH);
++ U16_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
++ return U16_MAX_LENGTH;
+ }
+
+ // Generalized Unicode converter -----------------------------------------------
+diff --git a/src/3rdparty/chromium/base/third_party/icu/icu_utf.cc b/src/3rdparty/chromium/base/third_party/icu/icu_utf.cc
+index 2b67c5d9c..7ca6a6e0f 100644
+--- a/src/3rdparty/chromium/base/third_party/icu/icu_utf.cc
++++ b/src/3rdparty/chromium/base/third_party/icu/icu_utf.cc
+@@ -17,7 +17,7 @@
+ * that would otherwise be too long as macros.
+ */
+
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+
+ namespace base_icu {
+
+@@ -35,14 +35,14 @@ namespace base_icu {
+ *
+ * @deprecated ICU 2.4. Obsolete, see utf_old.h.
+ */
+-#define CBUTF8_ERROR_VALUE_1 0x15
++#define UTF8_ERROR_VALUE_1 0x15
+
+ /**
+ * See documentation on UTF8_ERROR_VALUE_1 for details.
+ *
+ * @deprecated ICU 2.4. Obsolete, see utf_old.h.
+ */
+-#define CBUTF8_ERROR_VALUE_2 0x9f
++#define UTF8_ERROR_VALUE_2 0x9f
+
+
+ /**
+@@ -51,7 +51,7 @@ namespace base_icu {
+ *
+ * @deprecated ICU 2.4. Obsolete, see utf_old.h.
+ */
+-#define CBUTF_ERROR_VALUE 0xffff
++#define UTF_ERROR_VALUE 0xffff
+
+ /*
+ * This table could be replaced on many machines by
+@@ -103,7 +103,7 @@ utf8_minLegal[4]={ 0, 0x80, 0x800, 0x10000 };
+
+ static const UChar32
+ utf8_errorValue[6]={
+- CBUTF8_ERROR_VALUE_1, CBUTF8_ERROR_VALUE_2, CBUTF_ERROR_VALUE, 0x10ffff,
++ UTF8_ERROR_VALUE_1, UTF8_ERROR_VALUE_2, UTF_ERROR_VALUE, 0x10ffff,
+ 0x3ffffff, 0x7fffffff
+ };
+
+@@ -135,11 +135,11 @@ UChar32 utf8_nextCharSafeBody(const uint8_t* s,
+ UChar32 c,
+ UBool strict) {
+ int32_t i = *pi;
+- uint8_t count = CBU8_COUNT_TRAIL_BYTES(c);
++ uint8_t count = U8_COUNT_TRAIL_BYTES(c);
+ if((i)+count<=(length)) {
+ uint8_t trail, illegal = 0;
+
+- CBU8_MASK_LEAD_BYTE((c), count);
++ U8_MASK_LEAD_BYTE((c), count);
+ /* count==0 for illegally leading trail bytes and the illegal bytes 0xfe and 0xff */
+ switch(count) {
+ /* each branch falls through to the next one */
+@@ -169,9 +169,9 @@ UChar32 utf8_nextCharSafeBody(const uint8_t* s,
+ break;
+ case 0:
+ if(strict>=0) {
+- return CBUTF8_ERROR_VALUE_1;
++ return UTF8_ERROR_VALUE_1;
+ } else {
+- return CBU_SENTINEL;
++ return U_SENTINEL;
+ }
+ /* no default branch to optimize switch() - all values are covered */
+ }
+@@ -189,21 +189,21 @@ UChar32 utf8_nextCharSafeBody(const uint8_t* s,
+
+ /* correct sequence - all trail bytes have (b7..b6)==(10)? */
+ /* illegal is also set if count>=4 */
+- if(illegal || (c)<utf8_minLegal[count] || (CBU_IS_SURROGATE(c) && strict!=-2)) {
++ if(illegal || (c)<utf8_minLegal[count] || (U_IS_SURROGATE(c) && strict!=-2)) {
+ /* error handling */
+ uint8_t errorCount = count;
+ /* don't go beyond this sequence */
+ i=*pi;
+- while(count>0 && CBU8_IS_TRAIL(s[i])) {
++ while(count>0 && U8_IS_TRAIL(s[i])) {
+ ++(i);
+ --count;
+ }
+ if(strict>=0) {
+ c=utf8_errorValue[errorCount-count];
+ } else {
+- c=CBU_SENTINEL;
++ c=U_SENTINEL;
+ }
+- } else if((strict)>0 && CBU_IS_UNICODE_NONCHAR(c)) {
++ } else if((strict)>0 && U_IS_UNICODE_NONCHAR(c)) {
+ /* strict: forbid non-characters like U+fffe */
+ c=utf8_errorValue[count];
+ }
+@@ -211,13 +211,13 @@ UChar32 utf8_nextCharSafeBody(const uint8_t* s,
+ /* error handling */
+ int32_t i0 = i;
+ /* don't just set (i)=(length) in case there is an illegal sequence */
+- while((i)<(length) && CBU8_IS_TRAIL(s[i])) {
++ while((i)<(length) && U8_IS_TRAIL(s[i])) {
+ ++(i);
+ }
+ if(strict>=0) {
+ c=utf8_errorValue[i-i0];
+ } else {
+- c=CBU_SENTINEL;
++ c=U_SENTINEL;
+ }
+ }
+ *pi=i;
+diff --git a/src/3rdparty/chromium/content/browser/devtools/devtools_io_context.cc b/src/3rdparty/chromium/content/browser/devtools/devtools_io_context.cc
+index 55f65f8c3..a7d616115 100644
+--- a/src/3rdparty/chromium/content/browser/devtools/devtools_io_context.cc
++++ b/src/3rdparty/chromium/content/browser/devtools/devtools_io_context.cc
+@@ -8,7 +8,7 @@
+ #include "base/files/file_util.h"
+ #include "base/strings/string_number_conversions.h"
+ #include "base/strings/string_util.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+ #include "content/public/browser/browser_thread.h"
+
+ namespace content {
+@@ -87,7 +87,7 @@ void Stream::ReadOnFileThread(off_t position, size_t max_size,
+ } else {
+ // Provided client has requested sufficient large block, make their
+ // life easier by not truncating in the middle of a UTF-8 character.
+- if (size_got > 6 && !CBU8_IS_SINGLE(buffer[size_got - 1])) {
++ if (size_got > 6 && !U8_IS_SINGLE(buffer[size_got - 1])) {
+ base::TruncateUTF8ToByteSize(buffer, size_got, &buffer);
+ size_got = buffer.size();
+ } else {
+diff --git a/src/3rdparty/chromium/net/cert/internal/parse_name.cc b/src/3rdparty/chromium/net/cert/internal/parse_name.cc
+index bb9b64051..5eaeb52d0 100644
+--- a/src/3rdparty/chromium/net/cert/internal/parse_name.cc
++++ b/src/3rdparty/chromium/net/cert/internal/parse_name.cc
+@@ -10,7 +10,7 @@
+ #include "base/strings/utf_string_conversion_utils.h"
+ #include "base/strings/utf_string_conversions.h"
+ #include "base/sys_byteorder.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+
+ namespace net {
+
+@@ -35,7 +35,7 @@ bool ConvertBmpStringValue(const der::Input& in, std::string* out) {
+
+ // BMPString only supports codepoints in the Basic Multilingual Plane;
+ // surrogates are not allowed.
+- if (CBU_IS_SURROGATE(c))
++ if (U_IS_SURROGATE(c))
+ return false;
+ }
+ return base::UTF16ToUTF8(in_16bit.data(), in_16bit.size(), out);
+@@ -55,7 +55,7 @@ bool ConvertUniversalStringValue(const der::Input& in, std::string* out) {
+ for (const uint32_t c : in_32bit) {
+ // UniversalString is UCS-4 in big-endian order.
+ uint32_t codepoint = base::NetToHost32(c);
+- if (!CBU_IS_UNICODE_CHAR(codepoint))
++ if (!U_IS_UNICODE_CHAR(codepoint))
+ return false;
+
+ base::WriteUnicodeCharacter(codepoint, out);
+diff --git a/src/3rdparty/chromium/ui/base/ime/input_method_chromeos.cc b/src/3rdparty/chromium/ui/base/ime/input_method_chromeos.cc
+index a8ac9028f..8fa5d2a64 100644
+--- a/src/3rdparty/chromium/ui/base/ime/input_method_chromeos.cc
++++ b/src/3rdparty/chromium/ui/base/ime/input_method_chromeos.cc
+@@ -17,7 +17,7 @@
+ #include "base/strings/string_util.h"
+ #include "base/strings/utf_string_conversions.h"
+ #include "base/sys_info.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+ #include "ui/base/ime/chromeos/ime_keyboard.h"
+ #include "ui/base/ime/chromeos/input_method_manager.h"
+ #include "ui/base/ime/composition_text.h"
+diff --git a/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc b/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc
+index c7f38de0d..08a0ff5fb 100644
+--- a/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc
++++ b/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc
+@@ -5,13 +5,13 @@
+ #include "ui/gfx/utf16_indexing.h"
+
+ #include "base/logging.h"
+-#include "base/third_party/icu/icu_utf.h"
++#include <unicode/utf.h>
+
+ namespace gfx {
+
+ bool IsValidCodePointIndex(const base::string16& s, size_t index) {
+ return index == 0 || index == s.length() ||
+- !(CBU16_IS_TRAIL(s[index]) && CBU16_IS_LEAD(s[index - 1]));
++ !(U16_IS_TRAIL(s[index]) && U16_IS_LEAD(s[index - 1]));
+ }
+
+ ptrdiff_t UTF16IndexToOffset(const base::string16& s, size_t base, size_t pos) {
+--
+2.13.0
+
diff --git a/0004-qtwebengine-opensource-src-5.9.0-no-sse2.patch b/0004-qtwebengine-opensource-src-5.9.0-no-sse2.patch
new file mode 100644
index 0000000..5df622b
--- /dev/null
+++ b/0004-qtwebengine-opensource-src-5.9.0-no-sse2.patch
@@ -0,0 +1,4971 @@
+From 844246bd10971ec348f044bc7a13acb17b9ce033 Mon Sep 17 00:00:00 2001
+From: Helio Chissini de Castro <helio(a)kde.org>
+Date: Wed, 31 May 2017 14:38:20 +0200
+Subject: [PATCH] qtwebengine-opensource-src-5.9.0-no-sse2
+
+---
+ .../chromium/breakpad/src/build/common.gypi | 8 +-
+ src/3rdparty/chromium/cc/BUILD.gn | 39 +-
+ src/3rdparty/chromium/media/BUILD.gn | 20 +
+ src/3rdparty/chromium/media/base/BUILD.gn | 48 +-
+ src/3rdparty/chromium/media/base/media.cc | 4 +
+ .../chromium/media/base/simd/convert_yuv_to_rgb.h | 34 +
+ .../media/base/simd/convert_yuv_to_rgb_mmx.asm | 24 +
+ .../media/base/simd/convert_yuv_to_rgb_x86.cc | 56 +
+ src/3rdparty/chromium/media/base/simd/filter_yuv.h | 6 +
+ .../chromium/media/base/simd/filter_yuv_mmx.cc | 79 +
+ .../chromium/media/base/simd/sinc_resampler_sse.cc | 50 +
+ .../chromium/media/base/simd/vector_math_sse.cc | 118 +
+ src/3rdparty/chromium/media/base/sinc_resampler.cc | 81 +-
+ src/3rdparty/chromium/media/base/sinc_resampler.h | 4 +
+ .../chromium/media/base/sinc_resampler_perftest.cc | 4 +
+ .../chromium/media/base/sinc_resampler_unittest.cc | 5 +
+ src/3rdparty/chromium/media/base/vector_math.cc | 150 +-
+ src/3rdparty/chromium/media/base/vector_math.h | 5 +
+ .../chromium/media/base/vector_math_perftest.cc | 35 +-
+ .../chromium/media/base/vector_math_testing.h | 2 +-
+ .../chromium/media/base/vector_math_unittest.cc | 4 +
+ src/3rdparty/chromium/media/base/yuv_convert.cc | 50 +-
+ .../chromium/media/base/yuv_convert_perftest.cc | 79 +-
+ .../chromium/media/base/yuv_convert_unittest.cc | 159 +-
+ src/3rdparty/chromium/skia/BUILD.gn | 52 +-
+ src/3rdparty/chromium/skia/ext/convolver.cc | 11 +-
+ src/3rdparty/chromium/skia/ext/convolver.h | 1 +
+ .../Source/modules/webaudio/AudioParamTimeline.cpp | 8 +-
+ .../Source/platform/audio/DirectConvolver.cpp | 40 +-
+ .../WebKit/Source/platform/audio/DirectConvolver.h | 7 +
+ .../WebKit/Source/platform/audio/SincResampler.cpp | 31 +-
+ .../WebKit/Source/platform/audio/SincResampler.h | 7 +
+ .../WebKit/Source/platform/audio/VectorMath.cpp | 97 +-
+ .../WebKit/Source/platform/audio/VectorMath.h | 23 +
+ .../graphics/cpu/x86/WebGLImageConversionSSE.h | 2 +-
+ .../platform/graphics/gpu/WebGLImageConversion.cpp | 12 +-
+ src/3rdparty/chromium/third_party/qcms/BUILD.gn | 17 +-
+ .../webrtc/common_audio/real_fourier.cc | 9 +
+ src/3rdparty/chromium/v8/BUILD.gn | 72 +-
+ src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh | 56 +
+ src/3rdparty/chromium/v8/src/v8.gyp | 12 +-
+ src/3rdparty/chromium/v8/src/v8_sse2.gyp | 2313 ++++++++++++++++++++
+ src/core/core_module.pro | 30 +-
+ 43 files changed, 3537 insertions(+), 327 deletions(-)
+ create mode 100644 src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm
+ create mode 100644 src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc
+ create mode 100644 src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc
+ create mode 100644 src/3rdparty/chromium/media/base/simd/vector_math_sse.cc
+ create mode 100644 src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh
+ create mode 100644 src/3rdparty/chromium/v8/src/v8_sse2.gyp
+
+diff --git a/src/3rdparty/chromium/breakpad/src/build/common.gypi b/src/3rdparty/chromium/breakpad/src/build/common.gypi
+index b9466a325..8ad78e24f 100644
+--- a/src/3rdparty/chromium/breakpad/src/build/common.gypi
++++ b/src/3rdparty/chromium/breakpad/src/build/common.gypi
+@@ -80,8 +80,8 @@
+ # The system root for cross-compiles. Default: none.
+ 'sysroot%': '',
+
+- # On Linux, we build with sse2 for Chromium builds.
+- 'disable_sse2%': 0,
++ # Do not assume SSE2 by default (Fedora patch).
++ 'disable_sse2%': 1,
+ },
+
+ 'target_arch%': '<(target_arch)',
+@@ -725,17 +725,13 @@
+ 'conditions': [
+ ['disable_sse2==0', {
+ 'cflags': [
+- '-march=pentium4',
+ '-msse2',
+ '-mfpmath=sse',
+ ],
+ }],
+ ],
+- # -mmmx allows mmintrin.h to be used for mmx intrinsics.
+- # video playback is mmx and sse2 optimized.
+ 'cflags': [
+ '-m32',
+- '-mmmx',
+ ],
+ 'ldflags': [
+ '-m32',
+diff --git a/src/3rdparty/chromium/cc/BUILD.gn b/src/3rdparty/chromium/cc/BUILD.gn
+index e461a898d..b50659b89 100644
+--- a/src/3rdparty/chromium/cc/BUILD.gn
++++ b/src/3rdparty/chromium/cc/BUILD.gn
+@@ -567,13 +567,6 @@ component("cc") {
+ "trees/tree_synchronizer.h",
+ ]
+
+- if (current_cpu == "x86" || current_cpu == "x64") {
+- sources += [
+- "raster/texture_compressor_etc1_sse.cc",
+- "raster/texture_compressor_etc1_sse.h",
+- ]
+- }
+-
+ configs += [ "//build/config:precompiled_headers" ]
+
+ public_deps = [
+@@ -583,6 +576,7 @@ component("cc") {
+ deps = [
+ "//base",
+ "//base/third_party/dynamic_annotations",
++ "//cc:cc_opts",
+ "//cc/proto",
+ "//cc/surfaces:surface_id",
+ "//gpu",
+@@ -612,6 +606,37 @@ component("cc") {
+ }
+ }
+
++source_set("cc_opts") {
++ public_deps = [
++ "//cc:cc_opts_sse",
++ ]
++}
++
++source_set("cc_opts_sse") {
++ if (current_cpu == "x86" || current_cpu == "x64") {
++ deps = [
++ "//base",
++ ]
++
++ defines = [ "CC_IMPLEMENTATION=1" ]
++
++ if (!is_debug && (is_win || is_android)) {
++ configs -= [ "//build/config/compiler:optimize" ]
++ configs += [ "//build/config/compiler:optimize_max" ]
++ }
++
++ sources = [
++ "raster/texture_compressor.h",
++ "raster/texture_compressor_etc1.h",
++ "raster/texture_compressor_etc1_sse.cc",
++ "raster/texture_compressor_etc1_sse.h",
++ ]
++
++ cflags = [ "-msse2" ]
++ }
++}
++
++
+ static_library("test_support") {
+ testonly = true
+ sources = [
+diff --git a/src/3rdparty/chromium/media/BUILD.gn b/src/3rdparty/chromium/media/BUILD.gn
+index 652aad4d9..063254830 100644
+--- a/src/3rdparty/chromium/media/BUILD.gn
++++ b/src/3rdparty/chromium/media/BUILD.gn
+@@ -832,6 +832,26 @@ component("shared_memory_support") {
+ "//base",
+ "//ui/gfx/geometry",
+ ]
++ if (current_cpu == "x86" || current_cpu == "x64") {
++ deps += [
++ ":shared_memory_support_sse",
++ ]
++ }
++}
++
++if (current_cpu == "x86" || current_cpu == "x64") {
++ source_set("shared_memory_support_sse") {
++ sources = [
++ "base/simd/vector_math_sse.cc",
++ ]
++ configs += [
++ "//media:media_config",
++ "//media:media_implementation",
++ ]
++ if (!is_win) {
++ cflags = [ "-msse" ]
++ }
++ }
+ }
+
+ # TODO(watk): Refactor tests that could be made to run on Android. See
+diff --git a/src/3rdparty/chromium/media/base/BUILD.gn b/src/3rdparty/chromium/media/base/BUILD.gn
+index d288ec787..fac712c00 100644
+--- a/src/3rdparty/chromium/media/base/BUILD.gn
++++ b/src/3rdparty/chromium/media/base/BUILD.gn
+@@ -336,11 +336,12 @@ target(link_target_type, "base") {
+ }
+
+ if (current_cpu == "x86" || current_cpu == "x64") {
+- sources += [
+- "simd/convert_rgb_to_yuv_sse2.cc",
+- "simd/convert_rgb_to_yuv_ssse3.cc",
+- "simd/convert_yuv_to_rgb_x86.cc",
+- "simd/filter_yuv_sse2.cc",
++ sources += [ "simd/convert_yuv_to_rgb_x86.cc" ]
++ deps += [
++ ":media_yasm",
++ ":media_mmx",
++ ":media_sse",
++ ":media_sse2",
+ ]
+ deps += [ ":media_yasm" ]
+ }
+@@ -539,10 +540,47 @@ source_set("perftests") {
+ }
+
+ if (current_cpu == "x86" || current_cpu == "x64") {
++ source_set("media_mmx") {
++ sources = [ "simd/filter_yuv_mmx.cc" ]
++ configs += [ "//media:media_config" ]
++ if (!is_win) {
++ cflags = [ "-mmmx" ]
++ }
++ }
++
++ source_set("media_sse") {
++ sources = [
++ "simd/sinc_resampler_sse.cc",
++ ]
++ configs += [
++ "//media:media_config",
++ "//media:media_implementation",
++ ]
++ if (!is_win) {
++ cflags = [ "-msse" ]
++ }
++ }
++
++ source_set("media_sse2") {
++ sources = [
++ "simd/convert_rgb_to_yuv_sse2.cc",
++ "simd/convert_rgb_to_yuv_ssse3.cc",
++ "simd/filter_yuv_sse2.cc",
++ ]
++ configs += [
++ "//media:media_config",
++ "//media:media_implementation",
++ ]
++ if (!is_win) {
++ cflags = [ "-msse2" ]
++ }
++ }
++
+ import("//third_party/yasm/yasm_assemble.gni")
+ yasm_assemble("media_yasm") {
+ sources = [
+ "simd/convert_rgb_to_yuv_ssse3.asm",
++ "simd/convert_yuv_to_rgb_mmx.asm",
+ "simd/convert_yuv_to_rgb_sse.asm",
+ "simd/convert_yuva_to_argb_mmx.asm",
+ "simd/empty_register_state_mmx.asm",
+diff --git a/src/3rdparty/chromium/media/base/media.cc b/src/3rdparty/chromium/media/base/media.cc
+index 38daf05b8..bb43b405f 100644
+--- a/src/3rdparty/chromium/media/base/media.cc
++++ b/src/3rdparty/chromium/media/base/media.cc
+@@ -10,6 +10,8 @@
+ #include "base/metrics/field_trial.h"
+ #include "base/trace_event/trace_event.h"
+ #include "media/base/media_switches.h"
++#include "media/base/sinc_resampler.h"
++#include "media/base/vector_math.h"
+ #include "media/base/yuv_convert.h"
+
+ #if defined(OS_ANDROID)
+@@ -40,6 +42,8 @@ class MediaInitializer {
+ TRACE_EVENT_WARMUP_CATEGORY("media");
+
+ // Perform initialization of libraries which require runtime CPU detection.
++ vector_math::Initialize();
++ SincResampler::InitializeCPUSpecificFeatures();
+ InitializeCPUSpecificYUVConversions();
+
+ #if !defined(MEDIA_DISABLE_FFMPEG)
+diff --git a/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h b/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h
+index a421ff566..8373fde90 100644
+--- a/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h
++++ b/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h
+@@ -65,6 +65,17 @@ MEDIA_EXPORT void ConvertYUVToRGB32_SSE(const uint8_t* yplane,
+ int rgbstride,
+ YUVType yuv_type);
+
++MEDIA_EXPORT void ConvertYUVToRGB32_MMX(const uint8_t* yplane,
++ const uint8_t* uplane,
++ const uint8_t* vplane,
++ uint8_t* rgbframe,
++ int width,
++ int height,
++ int ystride,
++ int uvstride,
++ int rgbstride,
++ YUVType yuv_type);
++
+ MEDIA_EXPORT void ConvertYUVAToARGB_MMX(const uint8_t* yplane,
+ const uint8_t* uplane,
+ const uint8_t* vplane,
+@@ -86,6 +97,13 @@ MEDIA_EXPORT void ScaleYUVToRGB32Row_C(const uint8_t* y_buf,
+ ptrdiff_t source_dx,
+ const int16_t* convert_table);
+
++MEDIA_EXPORT void ConvertYUVToRGB32Row_MMX(const uint8_t* yplane,
++ const uint8_t* uplane,
++ const uint8_t* vplane,
++ uint8_t* rgbframe,
++ ptrdiff_t width,
++ const int16_t* convert_table);
++
+ MEDIA_EXPORT void LinearScaleYUVToRGB32Row_C(const uint8_t* y_buf,
+ const uint8_t* u_buf,
+ const uint8_t* v_buf,
+@@ -94,6 +112,14 @@ MEDIA_EXPORT void LinearScaleYUVToRGB32Row_C(const uint8_t* y_buf,
+ ptrdiff_t source_dx,
+ const int16_t* convert_table);
+
++MEDIA_EXPORT void ScaleYUVToRGB32Row_MMX(const uint8_t* y_buf,
++ const uint8_t* u_buf,
++ const uint8_t* v_buf,
++ uint8_t* rgb_buf,
++ ptrdiff_t width,
++ ptrdiff_t source_dx,
++ const int16_t* convert_table);
++
+ MEDIA_EXPORT void LinearScaleYUVToRGB32RowWithRange_C(
+ const uint8_t* y_buf,
+ const uint8_t* u_buf,
+@@ -104,6 +130,14 @@ MEDIA_EXPORT void LinearScaleYUVToRGB32RowWithRange_C(
+ int source_dx,
+ const int16_t* convert_table);
+
++MEDIA_EXPORT void LinearScaleYUVToRGB32Row_MMX(const uint8_t* y_buf,
++ const uint8_t* u_buf,
++ const uint8_t* v_buf,
++ uint8_t* rgb_buf,
++ ptrdiff_t width,
++ ptrdiff_t source_dx,
++ const int16_t* convert_table);
++
+ } // namespace media
+
+ // Assembly functions are declared without namespace.
+diff --git a/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm b/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm
+new file mode 100644
+index 000000000..3650c9f73
+--- /dev/null
++++ b/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm
+@@ -0,0 +1,24 @@
++; Copyright (c) 2011 The Chromium Authors. All rights reserved.
++; Use of this source code is governed by a BSD-style license that can be
++; found in the LICENSE file.
++
++%include "third_party/x86inc/x86inc.asm"
++
++;
++; This file uses MMX instructions.
++;
++ SECTION_TEXT
++ CPU MMX
++
++; Use movq to save the output.
++%define MOVQ movq
++
++; extern "C" void ConvertYUVToRGB32Row_MMX(const uint8* y_buf,
++; const uint8* u_buf,
++; const uint8* v_buf,
++; uint8* rgb_buf,
++; ptrdiff_t width,
++; const int16* convert_table);
++%define SYMBOL ConvertYUVToRGB32Row_MMX
++%include "convert_yuv_to_rgb_mmx.inc"
++
+diff --git a/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc b/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc
+index a06799bfd..819bb60a8 100644
+--- a/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc
++++ b/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc
+@@ -47,6 +47,62 @@ void ConvertYUVAToARGB_MMX(const uint8_t* yplane,
+ EmptyRegisterState();
+ }
+
++void ConvertYUVToRGB32_MMX(const uint8_t* yplane,
++ const uint8_t* uplane,
++ const uint8_t* vplane,
++ uint8_t* rgbframe,
++ int width,
++ int height,
++ int ystride,
++ int uvstride,
++ int rgbstride,
++ YUVType yuv_type) {
++ unsigned int y_shift = GetVerticalShift(yuv_type);
++ for (int y = 0; y < height; ++y) {
++ uint8_t* rgb_row = rgbframe + y * rgbstride;
++ const uint8_t* y_ptr = yplane + y * ystride;
++ const uint8_t* u_ptr = uplane + (y >> y_shift) * uvstride;
++ const uint8_t* v_ptr = vplane + (y >> y_shift) * uvstride;
++
++ ConvertYUVToRGB32Row_MMX(y_ptr,
++ u_ptr,
++ v_ptr,
++ rgb_row,
++ width,
++ GetLookupTable(yuv_type));
++ }
++
++ EmptyRegisterState();
++}
++
++void ConvertYUVToRGB32_MMX(const uint8_t* yplane,
++ const uint8_t* uplane,
++ const uint8_t* vplane,
++ uint8_t* rgbframe,
++ int width,
++ int height,
++ int ystride,
++ int uvstride,
++ int rgbstride,
++ YUVType yuv_type) {
++ unsigned int y_shift = GetVerticalShift(yuv_type);
++ for (int y = 0; y < height; ++y) {
++ uint8_t* rgb_row = rgbframe + y * rgbstride;
++ const uint8_t* y_ptr = yplane + y * ystride;
++ const uint8_t* u_ptr = uplane + (y >> y_shift) * uvstride;
++ const uint8_t* v_ptr = vplane + (y >> y_shift) * uvstride;
++
++ ConvertYUVToRGB32Row_MMX(y_ptr,
++ u_ptr,
++ v_ptr,
++ rgb_row,
++ width,
++ GetLookupTable(yuv_type));
++ }
++
++ EmptyRegisterState();
++}
++
+ void ConvertYUVToRGB32_SSE(const uint8_t* yplane,
+ const uint8_t* uplane,
+ const uint8_t* vplane,
+diff --git a/src/3rdparty/chromium/media/base/simd/filter_yuv.h b/src/3rdparty/chromium/media/base/simd/filter_yuv.h
+index af30bd133..206fb7f11 100644
+--- a/src/3rdparty/chromium/media/base/simd/filter_yuv.h
++++ b/src/3rdparty/chromium/media/base/simd/filter_yuv.h
+@@ -20,6 +20,12 @@ MEDIA_EXPORT void FilterYUVRows_C(uint8_t* ybuf,
+ int source_width,
+ uint8_t source_y_fraction);
+
++MEDIA_EXPORT void FilterYUVRows_MMX(uint8_t* ybuf,
++ const uint8_t* y0_ptr,
++ const uint8_t* y1_ptr,
++ int source_width,
++ uint8_t source_y_fraction);
++
+ MEDIA_EXPORT void FilterYUVRows_SSE2(uint8_t* ybuf,
+ const uint8_t* y0_ptr,
+ const uint8_t* y1_ptr,
+diff --git a/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc b/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc
+new file mode 100644
+index 000000000..416aca699
+--- /dev/null
++++ b/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc
+@@ -0,0 +1,79 @@
++// Copyright (c) 2011 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#if defined(_MSC_VER)
++#include <intrin.h>
++#else
++#include <mmintrin.h>
++#endif
++
++#include "build/build_config.h"
++#include "media/base/simd/filter_yuv.h"
++
++namespace media {
++
++#if defined(COMPILER_MSVC)
++// Warning 4799 is about calling emms before the function exits.
++// We calls emms in a frame level so suppress this warning.
++#pragma warning(push)
++#pragma warning(disable: 4799)
++#endif
++
++void FilterYUVRows_MMX(uint8_t* dest,
++ const uint8_t* src0,
++ const uint8_t* src1,
++ int width,
++ uint8_t fraction) {
++ int pixel = 0;
++
++ // Process the unaligned bytes first.
++ int unaligned_width =
++ (8 - (reinterpret_cast<uintptr_t>(dest) & 7)) & 7;
++ while (pixel < width && pixel < unaligned_width) {
++ dest[pixel] = (src0[pixel] * (256 - fraction) +
++ src1[pixel] * fraction) >> 8;
++ ++pixel;
++ }
++
++ __m64 zero = _mm_setzero_si64();
++ __m64 src1_fraction = _mm_set1_pi16(fraction);
++ __m64 src0_fraction = _mm_set1_pi16(256 - fraction);
++ const __m64* src0_64 = reinterpret_cast<const __m64*>(src0 + pixel);
++ const __m64* src1_64 = reinterpret_cast<const __m64*>(src1 + pixel);
++ __m64* dest64 = reinterpret_cast<__m64*>(dest + pixel);
++ __m64* end64 = reinterpret_cast<__m64*>(
++ reinterpret_cast<uintptr_t>(dest + width) & ~7);
++
++ while (dest64 < end64) {
++ __m64 src0 = *src0_64++;
++ __m64 src1 = *src1_64++;
++ __m64 src2 = _mm_unpackhi_pi8(src0, zero);
++ __m64 src3 = _mm_unpackhi_pi8(src1, zero);
++ src0 = _mm_unpacklo_pi8(src0, zero);
++ src1 = _mm_unpacklo_pi8(src1, zero);
++ src0 = _mm_mullo_pi16(src0, src0_fraction);
++ src1 = _mm_mullo_pi16(src1, src1_fraction);
++ src2 = _mm_mullo_pi16(src2, src0_fraction);
++ src3 = _mm_mullo_pi16(src3, src1_fraction);
++ src0 = _mm_add_pi16(src0, src1);
++ src2 = _mm_add_pi16(src2, src3);
++ src0 = _mm_srli_pi16(src0, 8);
++ src2 = _mm_srli_pi16(src2, 8);
++ src0 = _mm_packs_pu16(src0, src2);
++ *dest64++ = src0;
++ pixel += 8;
++ }
++
++ while (pixel < width) {
++ dest[pixel] = (src0[pixel] * (256 - fraction) +
++ src1[pixel] * fraction) >> 8;
++ ++pixel;
++ }
++}
++
++#if defined(COMPILER_MSVC)
++#pragma warning(pop)
++#endif
++
++} // namespace media
+diff --git a/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc b/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc
+new file mode 100644
+index 000000000..c5d03dc48
+--- /dev/null
++++ b/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc
+@@ -0,0 +1,50 @@
++// Copyright 2013 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "media/base/sinc_resampler.h"
++
++#include <xmmintrin.h>
++
++namespace media {
++
++float SincResampler::Convolve_SSE(const float* input_ptr, const float* k1,
++ const float* k2,
++ double kernel_interpolation_factor) {
++ __m128 m_input;
++ __m128 m_sums1 = _mm_setzero_ps();
++ __m128 m_sums2 = _mm_setzero_ps();
++
++ // Based on |input_ptr| alignment, we need to use loadu or load. Unrolling
++ // these loops hurt performance in local testing.
++ if (reinterpret_cast<uintptr_t>(input_ptr) & 0x0F) {
++ for (int i = 0; i < kKernelSize; i += 4) {
++ m_input = _mm_loadu_ps(input_ptr + i);
++ m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
++ m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
++ }
++ } else {
++ for (int i = 0; i < kKernelSize; i += 4) {
++ m_input = _mm_load_ps(input_ptr + i);
++ m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
++ m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
++ }
++ }
++
++ // Linearly interpolate the two "convolutions".
++ m_sums1 = _mm_mul_ps(m_sums1, _mm_set_ps1(
++ static_cast<float>(1.0 - kernel_interpolation_factor)));
++ m_sums2 = _mm_mul_ps(m_sums2, _mm_set_ps1(
++ static_cast<float>(kernel_interpolation_factor)));
++ m_sums1 = _mm_add_ps(m_sums1, m_sums2);
++
++ // Sum components together.
++ float result;
++ m_sums2 = _mm_add_ps(_mm_movehl_ps(m_sums1, m_sums1), m_sums1);
++ _mm_store_ss(&result, _mm_add_ss(m_sums2, _mm_shuffle_ps(
++ m_sums2, m_sums2, 1)));
++
++ return result;
++}
++
++} // namespace media
+diff --git a/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc b/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc
+new file mode 100644
+index 000000000..c2121225c
+--- /dev/null
++++ b/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc
+@@ -0,0 +1,118 @@
++// Copyright 2013 The Chromium Authors. All rights reserved.
++// Use of this source code is governed by a BSD-style license that can be
++// found in the LICENSE file.
++
++#include "media/base/vector_math_testing.h"
++
++#include <algorithm>
++
++#include <xmmintrin.h> // NOLINT
++
++namespace media {
++namespace vector_math {
++
++void FMUL_SSE(const float src[], float scale, int len, float dest[]) {
++ const int rem = len % 4;
++ const int last_index = len - rem;
++ __m128 m_scale = _mm_set_ps1(scale);
++ for (int i = 0; i < last_index; i += 4)
++ _mm_store_ps(dest + i, _mm_mul_ps(_mm_load_ps(src + i), m_scale));
++
++ // Handle any remaining values that wouldn't fit in an SSE pass.
++ for (int i = last_index; i < len; ++i)
++ dest[i] = src[i] * scale;
++}
++
++void FMAC_SSE(const float src[], float scale, int len, float dest[]) {
++ const int rem = len % 4;
++ const int last_index = len - rem;
++ __m128 m_scale = _mm_set_ps1(scale);
++ for (int i = 0; i < last_index; i += 4) {
++ _mm_store_ps(dest + i, _mm_add_ps(_mm_load_ps(dest + i),
++ _mm_mul_ps(_mm_load_ps(src + i), m_scale)));
++ }
++
++ // Handle any remaining values that wouldn't fit in an SSE pass.
++ for (int i = last_index; i < len; ++i)
++ dest[i] += src[i] * scale;
++}
++
++// Convenience macro to extract float 0 through 3 from the vector |a|. This is
++// needed because compilers other than clang don't support access via
++// operator[]().
++#define EXTRACT_FLOAT(a, i) \
++ (i == 0 ? \
++ _mm_cvtss_f32(a) : \
++ _mm_cvtss_f32(_mm_shuffle_ps(a, a, i)))
++
++std::pair<float, float> EWMAAndMaxPower_SSE(
++ float initial_value, const float src[], int len, float smoothing_factor) {
++ // When the recurrence is unrolled, we see that we can split it into 4
++ // separate lanes of evaluation:
++ //
++ // y[n] = a(S[n]^2) + (1-a)(y[n-1])
++ // = a(S[n]^2) + (1-a)^1(aS[n-1]^2) + (1-a)^2(aS[n-2]^2) + ...
++ // = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
++ //
++ // where z[n] = a(S[n]^2) + (1-a)^4(z[n-4]) + (1-a)^8(z[n-8]) + ...
++ //
++ // Thus, the strategy here is to compute z[n], z[n-1], z[n-2], and z[n-3] in
++ // each of the 4 lanes, and then combine them to give y[n].
++
++ const int rem = len % 4;
++ const int last_index = len - rem;
++
++ const __m128 smoothing_factor_x4 = _mm_set_ps1(smoothing_factor);
++ const float weight_prev = 1.0f - smoothing_factor;
++ const __m128 weight_prev_x4 = _mm_set_ps1(weight_prev);
++ const __m128 weight_prev_squared_x4 =
++ _mm_mul_ps(weight_prev_x4, weight_prev_x4);
++ const __m128 weight_prev_4th_x4 =
++ _mm_mul_ps(weight_prev_squared_x4, weight_prev_squared_x4);
++
++ // Compute z[n], z[n-1], z[n-2], and z[n-3] in parallel in lanes 3, 2, 1 and
++ // 0, respectively.
++ __m128 max_x4 = _mm_setzero_ps();
++ __m128 ewma_x4 = _mm_setr_ps(0.0f, 0.0f, 0.0f, initial_value);
++ int i;
++ for (i = 0; i < last_index; i += 4) {
++ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_4th_x4);
++ const __m128 sample_x4 = _mm_load_ps(src + i);
++ const __m128 sample_squared_x4 = _mm_mul_ps(sample_x4, sample_x4);
++ max_x4 = _mm_max_ps(max_x4, sample_squared_x4);
++ // Note: The compiler optimizes this to a single multiply-and-accumulate
++ // instruction:
++ ewma_x4 = _mm_add_ps(ewma_x4,
++ _mm_mul_ps(sample_squared_x4, smoothing_factor_x4));
++ }
++
++ // y[n] = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
++ float ewma = EXTRACT_FLOAT(ewma_x4, 3);
++ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
++ ewma += EXTRACT_FLOAT(ewma_x4, 2);
++ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
++ ewma += EXTRACT_FLOAT(ewma_x4, 1);
++ ewma_x4 = _mm_mul_ss(ewma_x4, weight_prev_x4);
++ ewma += EXTRACT_FLOAT(ewma_x4, 0);
++
++ // Fold the maximums together to get the overall maximum.
++ max_x4 = _mm_max_ps(max_x4,
++ _mm_shuffle_ps(max_x4, max_x4, _MM_SHUFFLE(3, 3, 1, 1)));
++ max_x4 = _mm_max_ss(max_x4, _mm_shuffle_ps(max_x4, max_x4, 2));
++
++ std::pair<float, float> result(ewma, EXTRACT_FLOAT(max_x4, 0));
++
++ // Handle remaining values at the end of |src|.
++ for (; i < len; ++i) {
++ result.first *= weight_prev;
++ const float sample = src[i];
++ const float sample_squared = sample * sample;
++ result.first += sample_squared * smoothing_factor;
++ result.second = std::max(result.second, sample_squared);
++ }
++
++ return result;
++}
++
++} // namespace vector_math
++} // namespace media
+diff --git a/src/3rdparty/chromium/media/base/sinc_resampler.cc b/src/3rdparty/chromium/media/base/sinc_resampler.cc
+index cffb0c9d6..010775544 100644
+--- a/src/3rdparty/chromium/media/base/sinc_resampler.cc
++++ b/src/3rdparty/chromium/media/base/sinc_resampler.cc
+@@ -81,17 +81,12 @@
+ #include <cmath>
+ #include <limits>
+
++#include "base/cpu.h"
+ #include "base/logging.h"
+ #include "build/build_config.h"
+
+-#if defined(ARCH_CPU_X86_FAMILY)
+-#include <xmmintrin.h>
+-#define CONVOLVE_FUNC Convolve_SSE
+-#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
++#if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
+ #include <arm_neon.h>
+-#define CONVOLVE_FUNC Convolve_NEON
+-#else
+-#define CONVOLVE_FUNC Convolve_C
+ #endif
+
+ namespace media {
+@@ -112,10 +107,41 @@ static double SincScaleFactor(double io_ratio) {
+ return sinc_scale_factor;
+ }
+
++#undef CONVOLVE_FUNC
++
+ static int CalculateChunkSize(int block_size_, double io_ratio) {
+ return block_size_ / io_ratio;
+ }
+
++// If we know the minimum architecture at compile time, avoid CPU detection.
++// Force NaCl code to use C routines since (at present) nothing there uses these
++// methods and plumbing the -msse built library is non-trivial.
++#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
++#if defined(__SSE__)
++#define CONVOLVE_FUNC Convolve_SSE
++void SincResampler::InitializeCPUSpecificFeatures() {}
++#else
++// X86 CPU detection required. Functions will be set by
++// InitializeCPUSpecificFeatures().
++#define CONVOLVE_FUNC g_convolve_proc_
++
++typedef float (*ConvolveProc)(const float*, const float*, const float*, double);
++static ConvolveProc g_convolve_proc_ = NULL;
++
++void SincResampler::InitializeCPUSpecificFeatures() {
++ CHECK(!g_convolve_proc_);
++ g_convolve_proc_ = base::CPU().has_sse() ? Convolve_SSE : Convolve_C;
++}
++#endif
++#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
++#define CONVOLVE_FUNC Convolve_NEON
++void SincResampler::InitializeCPUSpecificFeatures() {}
++#else
++// Unknown architecture.
++#define CONVOLVE_FUNC Convolve_C
++void SincResampler::InitializeCPUSpecificFeatures() {}
++#endif
++
+ SincResampler::SincResampler(double io_sample_rate_ratio,
+ int request_frames,
+ const ReadCB& read_cb)
+@@ -328,46 +354,7 @@ float SincResampler::Convolve_C(const float* input_ptr, const float* k1,
+ kernel_interpolation_factor * sum2);
+ }
+
+-#if defined(ARCH_CPU_X86_FAMILY)
+-float SincResampler::Convolve_SSE(const float* input_ptr, const float* k1,
+- const float* k2,
+- double kernel_interpolation_factor) {
+- __m128 m_input;
+- __m128 m_sums1 = _mm_setzero_ps();
+- __m128 m_sums2 = _mm_setzero_ps();
+-
+- // Based on |input_ptr| alignment, we need to use loadu or load. Unrolling
+- // these loops hurt performance in local testing.
+- if (reinterpret_cast<uintptr_t>(input_ptr) & 0x0F) {
+- for (int i = 0; i < kKernelSize; i += 4) {
+- m_input = _mm_loadu_ps(input_ptr + i);
+- m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
+- m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
+- }
+- } else {
+- for (int i = 0; i < kKernelSize; i += 4) {
+- m_input = _mm_load_ps(input_ptr + i);
+- m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
+- m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
+- }
+- }
+-
+- // Linearly interpolate the two "convolutions".
+- m_sums1 = _mm_mul_ps(m_sums1, _mm_set_ps1(
+- static_cast<float>(1.0 - kernel_interpolation_factor)));
+- m_sums2 = _mm_mul_ps(m_sums2, _mm_set_ps1(
+- static_cast<float>(kernel_interpolation_factor)));
+- m_sums1 = _mm_add_ps(m_sums1, m_sums2);
+-
+- // Sum components together.
+- float result;
+- m_sums2 = _mm_add_ps(_mm_movehl_ps(m_sums1, m_sums1), m_sums1);
+- _mm_store_ss(&result, _mm_add_ss(m_sums2, _mm_shuffle_ps(
+- m_sums2, m_sums2, 1)));
+-
+- return result;
+-}
+-#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
++#if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
+ float SincResampler::Convolve_NEON(const float* input_ptr, const float* k1,
+ const float* k2,
+ double kernel_interpolation_factor) {
+diff --git a/src/3rdparty/chromium/media/base/sinc_resampler.h b/src/3rdparty/chromium/media/base/sinc_resampler.h
+index afbd2abc9..9e3df2c55 100644
+--- a/src/3rdparty/chromium/media/base/sinc_resampler.h
++++ b/src/3rdparty/chromium/media/base/sinc_resampler.h
+@@ -36,6 +36,10 @@ class MEDIA_EXPORT SincResampler {
+ kKernelStorageSize = kKernelSize * (kKernelOffsetCount + 1),
+ };
+
++ // Selects runtime specific CPU features like SSE. Must be called before
++ // using SincResampler.
++ static void InitializeCPUSpecificFeatures();
++
+ // Callback type for providing more data into the resampler. Expects |frames|
+ // of data to be rendered into |destination|; zero padded if not enough frames
+ // are available to satisfy the request.
+diff --git a/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc b/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc
+index 9cb7f4f2e..285382490 100644
+--- a/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc
++++ b/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc
+@@ -4,6 +4,7 @@
+
+ #include "base/bind.h"
+ #include "base/bind_helpers.h"
++#include "base/cpu.h"
+ #include "base/time/time.h"
+ #include "build/build_config.h"
+ #include "media/base/sinc_resampler.h"
+@@ -61,6 +62,9 @@ TEST(SincResamplerPerfTest, Convolve) {
+ &resampler, SincResampler::Convolve_C, true, "unoptimized_aligned");
+
+ #if defined(CONVOLVE_FUNC)
++#if defined(ARCH_CPU_X86_FAMILY)
++ ASSERT_TRUE(base::CPU().has_sse());
++#endif
+ RunConvolveBenchmark(
+ &resampler, SincResampler::CONVOLVE_FUNC, true, "optimized_aligned");
+ RunConvolveBenchmark(
+diff --git a/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc b/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc
+index 8dd346ee4..7401eee96 100644
+--- a/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc
++++ b/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc
+@@ -10,6 +10,7 @@
+
+ #include "base/bind.h"
+ #include "base/bind_helpers.h"
++#include "base/cpu.h"
+ #include "base/macros.h"
+ #include "base/strings/string_number_conversions.h"
+ #include "base/time/time.h"
+@@ -166,6 +167,10 @@ TEST(SincResamplerTest, DISABLED_SetRatioBench) {
+ static const double kKernelInterpolationFactor = 0.5;
+
+ TEST(SincResamplerTest, Convolve) {
++#if defined(ARCH_CPU_X86_FAMILY)
++ ASSERT_TRUE(base::CPU().has_sse());
++#endif
++
+ // Initialize a dummy resampler.
+ MockSource mock_source;
+ SincResampler resampler(
+diff --git a/src/3rdparty/chromium/media/base/vector_math.cc b/src/3rdparty/chromium/media/base/vector_math.cc
+index 578290538..e041d8d4c 100644
+--- a/src/3rdparty/chromium/media/base/vector_math.cc
++++ b/src/3rdparty/chromium/media/base/vector_math.cc
+@@ -7,12 +7,17 @@
+
+ #include <algorithm>
+
++#include "base/cpu.h"
+ #include "base/logging.h"
+ #include "build/build_config.h"
+
++namespace media {
++namespace vector_math {
++
++// If we know the minimum architecture at compile time, avoid CPU detection.
+ // NaCl does not allow intrinsics.
+ #if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
+-#include <xmmintrin.h>
++#if defined(__SSE__)
+ // Don't use custom SSE versions where the auto-vectorized C version performs
+ // better, which is anywhere clang is used.
+ #if !defined(__clang__)
+@@ -23,20 +28,52 @@
+ #define FMUL_FUNC FMUL_C
+ #endif
+ #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
++void Initialize() {}
++#else
++// X86 CPU detection required. Functions will be set by Initialize().
++#if !defined(__clang__)
++#define FMAC_FUNC g_fmac_proc_
++#define FMUL_FUNC g_fmul_proc_
++#else
++#define FMAC_FUNC FMAC_C
++#define FMUL_FUNC FMUL_C
++#endif
++#define EWMAAndMaxPower_FUNC g_ewma_power_proc_
++
++#if !defined(__clang__)
++typedef void (*MathProc)(const float src[], float scale, int len, float dest[]);
++static MathProc g_fmac_proc_ = NULL;
++static MathProc g_fmul_proc_ = NULL;
++#endif
++typedef std::pair<float, float> (*EWMAAndMaxPowerProc)(
++ float initial_value, const float src[], int len, float smoothing_factor);
++static EWMAAndMaxPowerProc g_ewma_power_proc_ = NULL;
++
++void Initialize() {
++ CHECK(!g_fmac_proc_);
++ CHECK(!g_fmul_proc_);
++ CHECK(!g_ewma_power_proc_);
++ const bool kUseSSE = base::CPU().has_sse();
++#if !defined(__clang__)
++ g_fmac_proc_ = kUseSSE ? FMAC_SSE : FMAC_C;
++ g_fmul_proc_ = kUseSSE ? FMUL_SSE : FMUL_C;
++#endif
++ g_ewma_power_proc_ = kUseSSE ? EWMAAndMaxPower_SSE : EWMAAndMaxPower_C;
++}
++#endif
+ #elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
+ #include <arm_neon.h>
+ #define FMAC_FUNC FMAC_NEON
+ #define FMUL_FUNC FMUL_NEON
+ #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
++void Initialize() {}
+ #else
+ #define FMAC_FUNC FMAC_C
+ #define FMUL_FUNC FMUL_C
+ #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_C
++void Initialize() {}
+ #endif
+
+-namespace media {
+-namespace vector_math {
+-
+ void FMAC(const float src[], float scale, int len, float dest[]) {
+ // Ensure |src| and |dest| are 16-byte aligned.
+ DCHECK_EQ(0u, reinterpret_cast<uintptr_t>(src) & (kRequiredAlignment - 1));
+@@ -89,111 +126,6 @@ std::pair<float, float> EWMAAndMaxPower_C(
+ return result;
+ }
+
+-#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
+-void FMUL_SSE(const float src[], float scale, int len, float dest[]) {
+- const int rem = len % 4;
+- const int last_index = len - rem;
+- __m128 m_scale = _mm_set_ps1(scale);
+- for (int i = 0; i < last_index; i += 4)
+- _mm_store_ps(dest + i, _mm_mul_ps(_mm_load_ps(src + i), m_scale));
+-
+- // Handle any remaining values that wouldn't fit in an SSE pass.
+- for (int i = last_index; i < len; ++i)
+- dest[i] = src[i] * scale;
+-}
+-
+-void FMAC_SSE(const float src[], float scale, int len, float dest[]) {
+- const int rem = len % 4;
+- const int last_index = len - rem;
+- __m128 m_scale = _mm_set_ps1(scale);
+- for (int i = 0; i < last_index; i += 4) {
+- _mm_store_ps(dest + i, _mm_add_ps(_mm_load_ps(dest + i),
+- _mm_mul_ps(_mm_load_ps(src + i), m_scale)));
+- }
+-
+- // Handle any remaining values that wouldn't fit in an SSE pass.
+- for (int i = last_index; i < len; ++i)
+- dest[i] += src[i] * scale;
+-}
+-
+-// Convenience macro to extract float 0 through 3 from the vector |a|. This is
+-// needed because compilers other than clang don't support access via
+-// operator[]().
+-#define EXTRACT_FLOAT(a, i) \
+- (i == 0 ? \
+- _mm_cvtss_f32(a) : \
+- _mm_cvtss_f32(_mm_shuffle_ps(a, a, i)))
+-
+-std::pair<float, float> EWMAAndMaxPower_SSE(
+- float initial_value, const float src[], int len, float smoothing_factor) {
+- // When the recurrence is unrolled, we see that we can split it into 4
+- // separate lanes of evaluation:
+- //
+- // y[n] = a(S[n]^2) + (1-a)(y[n-1])
+- // = a(S[n]^2) + (1-a)^1(aS[n-1]^2) + (1-a)^2(aS[n-2]^2) + ...
+- // = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
+- //
+- // where z[n] = a(S[n]^2) + (1-a)^4(z[n-4]) + (1-a)^8(z[n-8]) + ...
+- //
+- // Thus, the strategy here is to compute z[n], z[n-1], z[n-2], and z[n-3] in
+- // each of the 4 lanes, and then combine them to give y[n].
+-
+- const int rem = len % 4;
+- const int last_index = len - rem;
+-
+- const __m128 smoothing_factor_x4 = _mm_set_ps1(smoothing_factor);
+- const float weight_prev = 1.0f - smoothing_factor;
+- const __m128 weight_prev_x4 = _mm_set_ps1(weight_prev);
+- const __m128 weight_prev_squared_x4 =
+- _mm_mul_ps(weight_prev_x4, weight_prev_x4);
+- const __m128 weight_prev_4th_x4 =
+- _mm_mul_ps(weight_prev_squared_x4, weight_prev_squared_x4);
+-
+- // Compute z[n], z[n-1], z[n-2], and z[n-3] in parallel in lanes 3, 2, 1 and
+- // 0, respectively.
+- __m128 max_x4 = _mm_setzero_ps();
+- __m128 ewma_x4 = _mm_setr_ps(0.0f, 0.0f, 0.0f, initial_value);
+- int i;
+- for (i = 0; i < last_index; i += 4) {
+- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_4th_x4);
+- const __m128 sample_x4 = _mm_load_ps(src + i);
+- const __m128 sample_squared_x4 = _mm_mul_ps(sample_x4, sample_x4);
+- max_x4 = _mm_max_ps(max_x4, sample_squared_x4);
+- // Note: The compiler optimizes this to a single multiply-and-accumulate
+- // instruction:
+- ewma_x4 = _mm_add_ps(ewma_x4,
+- _mm_mul_ps(sample_squared_x4, smoothing_factor_x4));
+- }
+-
+- // y[n] = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
+- float ewma = EXTRACT_FLOAT(ewma_x4, 3);
+- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
+- ewma += EXTRACT_FLOAT(ewma_x4, 2);
+- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
+- ewma += EXTRACT_FLOAT(ewma_x4, 1);
+- ewma_x4 = _mm_mul_ss(ewma_x4, weight_prev_x4);
+- ewma += EXTRACT_FLOAT(ewma_x4, 0);
+-
+- // Fold the maximums together to get the overall maximum.
+- max_x4 = _mm_max_ps(max_x4,
+- _mm_shuffle_ps(max_x4, max_x4, _MM_SHUFFLE(3, 3, 1, 1)));
+- max_x4 = _mm_max_ss(max_x4, _mm_shuffle_ps(max_x4, max_x4, 2));
+-
+- std::pair<float, float> result(ewma, EXTRACT_FLOAT(max_x4, 0));
+-
+- // Handle remaining values at the end of |src|.
+- for (; i < len; ++i) {
+- result.first *= weight_prev;
+- const float sample = src[i];
+- const float sample_squared = sample * sample;
+- result.first += sample_squared * smoothing_factor;
+- result.second = std::max(result.second, sample_squared);
+- }
+-
+- return result;
+-}
+-#endif
+-
+ #if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
+ void FMAC_NEON(const float src[], float scale, int len, float dest[]) {
+ const int rem = len % 4;
+diff --git a/src/3rdparty/chromium/media/base/vector_math.h b/src/3rdparty/chromium/media/base/vector_math.h
+index a148ca050..0a2cb06f6 100644
+--- a/src/3rdparty/chromium/media/base/vector_math.h
++++ b/src/3rdparty/chromium/media/base/vector_math.h
+@@ -15,6 +15,11 @@ namespace vector_math {
+ // Required alignment for inputs and outputs to all vector math functions
+ enum { kRequiredAlignment = 16 };
+
++// Selects runtime specific optimizations such as SSE. Must be called prior to
++// calling FMAC() or FMUL(). Called during media library initialization; most
++// users should never have to call this.
++MEDIA_EXPORT void Initialize();
++
+ // Multiply each element of |src| (up to |len|) by |scale| and add to |dest|.
+ // |src| and |dest| must be aligned by kRequiredAlignment.
+ MEDIA_EXPORT void FMAC(const float src[], float scale, int len, float dest[]);
+diff --git a/src/3rdparty/chromium/media/base/vector_math_perftest.cc b/src/3rdparty/chromium/media/base/vector_math_perftest.cc
+index 59b259dc2..c4c89a3b5 100644
+--- a/src/3rdparty/chromium/media/base/vector_math_perftest.cc
++++ b/src/3rdparty/chromium/media/base/vector_math_perftest.cc
+@@ -5,6 +5,7 @@
+ #include <memory>
+
+ #include "base/macros.h"
++#include "base/cpu.h"
+ #include "base/memory/aligned_memory.h"
+ #include "base/time/time.h"
+ #include "build/build_config.h"
+@@ -82,15 +83,11 @@ class VectorMathPerfTest : public testing::Test {
+ DISALLOW_COPY_AND_ASSIGN(VectorMathPerfTest);
+ };
+
+-// Define platform dependent function names for SIMD optimized methods.
++// Define platform independent function name for FMAC* perf tests.
+ #if defined(ARCH_CPU_X86_FAMILY)
+ #define FMAC_FUNC FMAC_SSE
+-#define FMUL_FUNC FMUL_SSE
+-#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
+ #elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
+ #define FMAC_FUNC FMAC_NEON
+-#define FMUL_FUNC FMUL_NEON
+-#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
+ #endif
+
+ // Benchmark for each optimized vector_math::FMAC() method.
+@@ -99,6 +96,9 @@ TEST_F(VectorMathPerfTest, FMAC) {
+ RunBenchmark(
+ vector_math::FMAC_C, true, "vector_math_fmac", "unoptimized");
+ #if defined(FMAC_FUNC)
++#if defined(ARCH_CPU_X86_FAMILY)
++ ASSERT_TRUE(base::CPU().has_sse());
++#endif
+ // Benchmark FMAC_FUNC() with unaligned size.
+ ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
+ sizeof(float)), 0U);
+@@ -112,12 +112,24 @@ TEST_F(VectorMathPerfTest, FMAC) {
+ #endif
+ }
+
++#undef FMAC_FUNC
++
++// Define platform independent function name for FMULBenchmark* tests.
++#if defined(ARCH_CPU_X86_FAMILY)
++#define FMUL_FUNC FMUL_SSE
++#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
++#define FMUL_FUNC FMUL_NEON
++#endif
++
+ // Benchmark for each optimized vector_math::FMUL() method.
+ TEST_F(VectorMathPerfTest, FMUL) {
+ // Benchmark FMUL_C().
+ RunBenchmark(
+ vector_math::FMUL_C, true, "vector_math_fmul", "unoptimized");
+ #if defined(FMUL_FUNC)
++#if defined(ARCH_CPU_X86_FAMILY)
++ ASSERT_TRUE(base::CPU().has_sse());
++#endif
+ // Benchmark FMUL_FUNC() with unaligned size.
+ ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
+ sizeof(float)), 0U);
+@@ -131,6 +143,14 @@ TEST_F(VectorMathPerfTest, FMUL) {
+ #endif
+ }
+
++#undef FMUL_FUNC
++
++#if defined(ARCH_CPU_X86_FAMILY)
++#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
++#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
++#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
++#endif
++
+ // Benchmark for each optimized vector_math::EWMAAndMaxPower() method.
+ TEST_F(VectorMathPerfTest, EWMAAndMaxPower) {
+ // Benchmark EWMAAndMaxPower_C().
+@@ -139,6 +159,9 @@ TEST_F(VectorMathPerfTest, EWMAAndMaxPower) {
+ "vector_math_ewma_and_max_power",
+ "unoptimized");
+ #if defined(EWMAAndMaxPower_FUNC)
++#if defined(ARCH_CPU_X86_FAMILY)
++ ASSERT_TRUE(base::CPU().has_sse());
++#endif
+ // Benchmark EWMAAndMaxPower_FUNC() with unaligned size.
+ ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
+ sizeof(float)), 0U);
+@@ -156,4 +179,6 @@ TEST_F(VectorMathPerfTest, EWMAAndMaxPower) {
+ #endif
+ }
+
++#undef EWMAAndMaxPower_FUNC
++
+ } // namespace media
+diff --git a/src/3rdparty/chromium/media/base/vector_math_testing.h b/src/3rdparty/chromium/media/base/vector_math_testing.h
+index 9240fbf54..b0b304409 100644
+--- a/src/3rdparty/chromium/media/base/vector_math_testing.h
++++ b/src/3rdparty/chromium/media/base/vector_math_testing.h
+@@ -19,7 +19,7 @@ MEDIA_EXPORT void FMUL_C(const float src[], float scale, int len, float dest[]);
+ MEDIA_EXPORT std::pair<float, float> EWMAAndMaxPower_C(
+ float initial_value, const float src[], int len, float smoothing_factor);
+
+-#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
++#if defined(ARCH_CPU_X86_FAMILY)
+ MEDIA_EXPORT void FMAC_SSE(const float src[], float scale, int len,
+ float dest[]);
+ MEDIA_EXPORT void FMUL_SSE(const float src[], float scale, int len,
+diff --git a/src/3rdparty/chromium/media/base/vector_math_unittest.cc b/src/3rdparty/chromium/media/base/vector_math_unittest.cc
+index 3fcb3fad4..c4e8586aa 100644
+--- a/src/3rdparty/chromium/media/base/vector_math_unittest.cc
++++ b/src/3rdparty/chromium/media/base/vector_math_unittest.cc
+@@ -9,6 +9,7 @@
+ #include <memory>
+
+ #include "base/macros.h"
++#include "base/cpu.h"
+ #include "base/memory/aligned_memory.h"
+ #include "base/strings/string_number_conversions.h"
+ #include "base/strings/stringize_macros.h"
+@@ -78,6 +79,7 @@ TEST_F(VectorMathTest, FMAC) {
+
+ #if defined(ARCH_CPU_X86_FAMILY)
+ {
++ ASSERT_TRUE(base::CPU().has_sse());
+ SCOPED_TRACE("FMAC_SSE");
+ FillTestVectors(kInputFillValue, kOutputFillValue);
+ vector_math::FMAC_SSE(
+@@ -119,6 +121,7 @@ TEST_F(VectorMathTest, FMUL) {
+
+ #if defined(ARCH_CPU_X86_FAMILY)
+ {
++ ASSERT_TRUE(base::CPU().has_sse());
+ SCOPED_TRACE("FMUL_SSE");
+ FillTestVectors(kInputFillValue, kOutputFillValue);
+ vector_math::FMUL_SSE(
+@@ -227,6 +230,7 @@ class EWMATestScenario {
+
+ #if defined(ARCH_CPU_X86_FAMILY)
+ {
++ ASSERT_TRUE(base::CPU().has_sse());
+ SCOPED_TRACE("EWMAAndMaxPower_SSE");
+ const std::pair<float, float>& result = vector_math::EWMAAndMaxPower_SSE(
+ initial_value_, data_.get(), data_len_, smoothing_factor_);
+diff --git a/src/3rdparty/chromium/media/base/yuv_convert.cc b/src/3rdparty/chromium/media/base/yuv_convert.cc
+index 2cdd9b1fd..2fc643416 100644
+--- a/src/3rdparty/chromium/media/base/yuv_convert.cc
++++ b/src/3rdparty/chromium/media/base/yuv_convert.cc
+@@ -32,7 +32,7 @@
+ #include "media/base/simd/convert_yuv_to_rgb.h"
+ #include "media/base/simd/filter_yuv.h"
+
+-#if defined(ARCH_CPU_X86_FAMILY)
++#if defined(ARCH_CPU_X86_FAMILY) && defined(__MMX__)
+ #if defined(COMPILER_MSVC)
+ #include <intrin.h>
+ #else
+@@ -133,7 +133,7 @@ static const int16_t* g_table_rec709_ptr = NULL;
+
+ // Empty SIMD registers state after using them.
+ void EmptyRegisterStateStub() {}
+-#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
++#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE) && defined(__MMX__)
+ void EmptyRegisterStateIntrinsic() { _mm_empty(); }
+ #endif
+ typedef void (*EmptyRegisterStateProc)();
+@@ -247,34 +247,46 @@ void InitializeCPUSpecificYUVConversions() {
+ // Assembly code confuses MemorySanitizer. Also not available in iOS builds.
+ #if defined(ARCH_CPU_X86_FAMILY) && !defined(MEMORY_SANITIZER) && \
+ !defined(OS_IOS)
+- g_convert_yuva_to_argb_proc_ = ConvertYUVAToARGB_MMX;
++ base::CPU cpu;
++ if (cpu.has_mmx()) {
++ g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_MMX;
++ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_MMX;
++ g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_MMX;
++ g_convert_yuva_to_argb_proc_ = ConvertYUVAToARGB_MMX;
++ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX;
+
+ #if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
+- g_empty_register_state_proc_ = EmptyRegisterStateIntrinsic;
++ g_filter_yuv_rows_proc_ = FilterYUVRows_MMX;
++#endif
++#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE) && defined(__MMX__)
++ g_empty_register_state_proc_ = EmptyRegisterStateIntrinsic;
+ #else
+- g_empty_register_state_proc_ = EmptyRegisterState_MMX;
++ g_empty_register_state_proc_ = EmptyRegisterState_MMX;
+ #endif
++ }
+
+- g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_SSE;
+- g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_SSE;
++ if (cpu.has_sse()) {
++ g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_SSE;
++ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE;
++ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_SSE;
++ g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_SSE;
++ }
+
+- g_filter_yuv_rows_proc_ = FilterYUVRows_SSE2;
+- g_convert_rgb32_to_yuv_proc_ = ConvertRGB32ToYUV_SSE2;
++ if (cpu.has_sse2()) {
++ g_filter_yuv_rows_proc_ = FilterYUVRows_SSE2;
++ g_convert_rgb32_to_yuv_proc_ = ConvertRGB32ToYUV_SSE2;
+
+ #if defined(ARCH_CPU_X86_64)
+- g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE2_X64;
++ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE2_X64;
+
+- // Technically this should be in the MMX section, but MSVC will optimize out
+- // the export of LinearScaleYUVToRGB32Row_MMX, which is required by the unit
+- // tests, if that decision can be made at compile time. Since all X64 CPUs
+- // have SSE2, we can hack around this by making the selection here.
+- g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX_X64;
+-#else
+- g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE;
+- g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_SSE;
++ // Technically this should be in the MMX section, but MSVC will optimize out
++ // the export of LinearScaleYUVToRGB32Row_MMX, which is required by the unit
++ // tests, if that decision can be made at compile time. Since all X64 CPUs
++ // have SSE2, we can hack around this by making the selection here.
++ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX_X64;
+ #endif
++ }
+
+- base::CPU cpu;
+ if (cpu.has_ssse3()) {
+ g_convert_rgb24_to_yuv_proc_ = &ConvertRGB24ToYUV_SSSE3;
+
+diff --git a/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc b/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc
+index ddf777cf3..f5520fd58 100644
+--- a/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc
++++ b/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc
+@@ -71,6 +71,29 @@ class YUVConvertPerfTest : public testing::Test {
+ DISALLOW_COPY_AND_ASSIGN(YUVConvertPerfTest);
+ };
+
++TEST_F(YUVConvertPerfTest, ConvertYUVToRGB32Row_MMX) {
++ ASSERT_TRUE(base::CPU().has_mmx());
++
++ base::TimeTicks start = base::TimeTicks::Now();
++ for (int i = 0; i < kPerfTestIterations; ++i) {
++ for (int row = 0; row < kSourceHeight; ++row) {
++ int chroma_row = row / 2;
++ ConvertYUVToRGB32Row_MMX(
++ yuv_bytes_.get() + row * kSourceWidth,
++ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
++ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
++ rgb_bytes_converted_.get(),
++ kWidth,
++ GetLookupTable(YV12));
++ }
++ }
++ media::EmptyRegisterState();
++ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
++ perf_test::PrintResult(
++ "yuv_convert_perftest", "", "ConvertYUVToRGB32Row_MMX",
++ kPerfTestIterations / total_time_seconds, "runs/s", true);
++}
++
+ TEST_F(YUVConvertPerfTest, ConvertYUVToRGB32Row_SSE) {
+ ASSERT_TRUE(base::CPU().has_sse());
+
+@@ -161,9 +184,32 @@ TEST_F(YUVConvertPerfTest, I422AlphaToARGBRow_SSSE3) {
+ }
+ #endif
+
+-// 64-bit release + component builds on Windows are too smart and optimizes
+-// away the function being tested.
+-#if defined(OS_WIN) && (defined(ARCH_CPU_X86) || !defined(COMPONENT_BUILD))
++TEST_F(YUVConvertPerfTest, ScaleYUVToRGB32Row_MMX) {
++ ASSERT_TRUE(base::CPU().has_mmx());
++
++ const int kSourceDx = 80000; // This value means a scale down.
++
++ base::TimeTicks start = base::TimeTicks::Now();
++ for (int i = 0; i < kPerfTestIterations; ++i) {
++ for (int row = 0; row < kSourceHeight; ++row) {
++ int chroma_row = row / 2;
++ ScaleYUVToRGB32Row_MMX(
++ yuv_bytes_.get() + row * kSourceWidth,
++ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
++ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
++ rgb_bytes_converted_.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ }
++ }
++ media::EmptyRegisterState();
++ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
++ perf_test::PrintResult(
++ "yuv_convert_perftest", "", "ScaleYUVToRGB32Row_MMX",
++ kPerfTestIterations / total_time_seconds, "runs/s", true);
++}
++
+ TEST_F(YUVConvertPerfTest, ScaleYUVToRGB32Row_SSE) {
+ ASSERT_TRUE(base::CPU().has_sse());
+
+@@ -190,6 +236,32 @@ TEST_F(YUVConvertPerfTest, ScaleYUVToRGB32Row_SSE) {
+ kPerfTestIterations / total_time_seconds, "runs/s", true);
+ }
+
++TEST_F(YUVConvertPerfTest, LinearScaleYUVToRGB32Row_MMX) {
++ ASSERT_TRUE(base::CPU().has_mmx());
++
++ const int kSourceDx = 80000; // This value means a scale down.
++
++ base::TimeTicks start = base::TimeTicks::Now();
++ for (int i = 0; i < kPerfTestIterations; ++i) {
++ for (int row = 0; row < kSourceHeight; ++row) {
++ int chroma_row = row / 2;
++ LinearScaleYUVToRGB32Row_MMX(
++ yuv_bytes_.get() + row * kSourceWidth,
++ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
++ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
++ rgb_bytes_converted_.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ }
++ }
++ media::EmptyRegisterState();
++ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
++ perf_test::PrintResult(
++ "yuv_convert_perftest", "", "LinearScaleYUVToRGB32Row_MMX",
++ kPerfTestIterations / total_time_seconds, "runs/s", true);
++}
++
+ TEST_F(YUVConvertPerfTest, LinearScaleYUVToRGB32Row_SSE) {
+ ASSERT_TRUE(base::CPU().has_sse());
+
+@@ -215,7 +287,6 @@ TEST_F(YUVConvertPerfTest, LinearScaleYUVToRGB32Row_SSE) {
+ "yuv_convert_perftest", "", "LinearScaleYUVToRGB32Row_SSE",
+ kPerfTestIterations / total_time_seconds, "runs/s", true);
+ }
+-#endif // defined(OS_WIN) && (ARCH_CPU_X86 || COMPONENT_BUILD)
+
+ #endif // !defined(ARCH_CPU_ARM_FAMILY) && !defined(ARCH_CPU_MIPS_FAMILY)
+
+diff --git a/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc b/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc
+index ec872c89b..801466add 100644
+--- a/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc
++++ b/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc
+@@ -643,6 +643,37 @@ TEST(YUVConvertTest, RGB32ToYUV_SSE2_MatchReference) {
+ EXPECT_EQ(0, error);
+ }
+
++TEST(YUVConvertTest, ConvertYUVToRGB32Row_MMX) {
++ base::CPU cpu;
++ if (!cpu.has_mmx()) {
++ LOG(WARNING) << "System not supported. Test skipped.";
++ return;
++ }
++
++ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
++ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
++ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
++ ReadYV12Data(&yuv_bytes);
++
++ const int kWidth = 167;
++ ConvertYUVToRGB32Row_C(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_reference.get(),
++ kWidth,
++ GetLookupTable(YV12));
++ ConvertYUVToRGB32Row_MMX(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_converted.get(),
++ kWidth,
++ GetLookupTable(YV12));
++ media::EmptyRegisterState();
++ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
++ rgb_bytes_converted.get(),
++ kWidth * kBpp));
++}
++
+ TEST(YUVConvertTest, ConvertYUVToRGB32Row_SSE) {
+ base::CPU cpu;
+ if (!cpu.has_sse()) {
+@@ -674,9 +705,40 @@ TEST(YUVConvertTest, ConvertYUVToRGB32Row_SSE) {
+ kWidth * kBpp));
+ }
+
+-// 64-bit release + component builds on Windows are too smart and optimizes
+-// away the function being tested.
+-#if defined(OS_WIN) && (defined(ARCH_CPU_X86) || !defined(COMPONENT_BUILD))
++TEST(YUVConvertTest, ScaleYUVToRGB32Row_MMX) {
++ base::CPU cpu;
++ if (!cpu.has_mmx()) {
++ LOG(WARNING) << "System not supported. Test skipped.";
++ return;
++ }
++
++ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
++ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
++ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
++ ReadYV12Data(&yuv_bytes);
++
++ const int kWidth = 167;
++ const int kSourceDx = 80000; // This value means a scale down.
++ ScaleYUVToRGB32Row_C(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_reference.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ ScaleYUVToRGB32Row_MMX(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_converted.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ media::EmptyRegisterState();
++ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
++ rgb_bytes_converted.get(),
++ kWidth * kBpp));
++}
++
+ TEST(YUVConvertTest, ScaleYUVToRGB32Row_SSE) {
+ base::CPU cpu;
+ if (!cpu.has_sse()) {
+@@ -711,6 +773,40 @@ TEST(YUVConvertTest, ScaleYUVToRGB32Row_SSE) {
+ kWidth * kBpp));
+ }
+
++TEST(YUVConvertTest, LinearScaleYUVToRGB32Row_MMX) {
++ base::CPU cpu;
++ if (!cpu.has_mmx()) {
++ LOG(WARNING) << "System not supported. Test skipped.";
++ return;
++ }
++
++ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
++ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
++ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
++ ReadYV12Data(&yuv_bytes);
++
++ const int kWidth = 167;
++ const int kSourceDx = 80000; // This value means a scale down.
++ LinearScaleYUVToRGB32Row_C(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_reference.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ LinearScaleYUVToRGB32Row_MMX(yuv_bytes.get(),
++ yuv_bytes.get() + kSourceUOffset,
++ yuv_bytes.get() + kSourceVOffset,
++ rgb_bytes_converted.get(),
++ kWidth,
++ kSourceDx,
++ GetLookupTable(YV12));
++ media::EmptyRegisterState();
++ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
++ rgb_bytes_converted.get(),
++ kWidth * kBpp));
++}
++
+ TEST(YUVConvertTest, LinearScaleYUVToRGB32Row_SSE) {
+ base::CPU cpu;
+ if (!cpu.has_sse()) {
+@@ -744,7 +840,6 @@ TEST(YUVConvertTest, LinearScaleYUVToRGB32Row_SSE) {
+ rgb_bytes_converted.get(),
+ kWidth * kBpp));
+ }
+-#endif // defined(OS_WIN) && (ARCH_CPU_X86 || COMPONENT_BUILD)
+
+ TEST(YUVConvertTest, FilterYUVRows_C_OutOfBounds) {
+ std::unique_ptr<uint8_t[]> src(new uint8_t[16]);
+@@ -761,6 +856,30 @@ TEST(YUVConvertTest, FilterYUVRows_C_OutOfBounds) {
+ }
+ }
+
++#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
++TEST(YUVConvertTest, FilterYUVRows_MMX_OutOfBounds) {
++ base::CPU cpu;
++ if (!cpu.has_mmx()) {
++ LOG(WARNING) << "System not supported. Test skipped.";
++ return;
++ }
++
++ scoped_ptr<uint8[]> src(new uint8[16]);
++ scoped_ptr<uint8[]> dst(new uint8[16]);
++
++ memset(src.get(), 0xff, 16);
++ memset(dst.get(), 0, 16);
++
++ media::FilterYUVRows_MMX(dst.get(), src.get(), src.get(), 1, 255);
++ media::EmptyRegisterState();
++
++ EXPECT_EQ(255u, dst[0]);
++ for (int i = 1; i < 16; ++i) {
++ EXPECT_EQ(0u, dst[i]);
++ }
++}
++#endif // defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
++
+ TEST(YUVConvertTest, FilterYUVRows_SSE2_OutOfBounds) {
+ base::CPU cpu;
+ if (!cpu.has_sse2()) {
+@@ -782,6 +901,38 @@ TEST(YUVConvertTest, FilterYUVRows_SSE2_OutOfBounds) {
+ }
+ }
+
++#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
++TEST(YUVConvertTest, FilterYUVRows_MMX_UnalignedDestination) {
++ base::CPU cpu;
++ if (!cpu.has_mmx()) {
++ LOG(WARNING) << "System not supported. Test skipped.";
++ return;
++ }
++
++ const int kSize = 32;
++ scoped_ptr<uint8[]> src(new uint8[kSize]);
++ scoped_ptr<uint8[]> dst_sample(new uint8[kSize]);
++ scoped_ptr<uint8[]> dst(new uint8[kSize]);
++
++ memset(dst_sample.get(), 0, kSize);
++ memset(dst.get(), 0, kSize);
++ for (int i = 0; i < kSize; ++i)
++ src[i] = 100 + i;
++
++ media::FilterYUVRows_C(dst_sample.get(),
++ src.get(), src.get(), 17, 128);
++
++ // Generate an unaligned output address.
++ uint8* dst_ptr =
++ reinterpret_cast<uint8*>(
++ (reinterpret_cast<uintptr_t>(dst.get() + 8) & ~7) + 1);
++ media::FilterYUVRows_MMX(dst_ptr, src.get(), src.get(), 17, 128);
++ media::EmptyRegisterState();
++
++ EXPECT_EQ(0, memcmp(dst_sample.get(), dst_ptr, 17));
++}
++#endif // defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
++
+ TEST(YUVConvertTest, FilterYUVRows_SSE2_UnalignedDestination) {
+ base::CPU cpu;
+ if (!cpu.has_sse2()) {
+diff --git a/src/3rdparty/chromium/skia/BUILD.gn b/src/3rdparty/chromium/skia/BUILD.gn
+index 55854ffe6..9a1d4ec0f 100644
+--- a/src/3rdparty/chromium/skia/BUILD.gn
++++ b/src/3rdparty/chromium/skia/BUILD.gn
+@@ -1,38 +1,3 @@
+-# Copyright (c) 2013 The Chromium Authors. All rights reserved.
+-# Use of this source code is governed by a BSD-style license that can be
+-# found in the LICENSE file.
+-
+-import("//build/config/features.gni")
+-import("//build/config/ui.gni")
+-import("//printing/features/features.gni")
+-import("//testing/test.gni")
+-import("//third_party/skia/gn/shared_sources.gni")
+-
+-if (current_cpu == "arm") {
+- import("//build/config/arm.gni")
+-}
+-if (current_cpu == "mipsel" || current_cpu == "mips64el") {
+- import("//build/config/mips.gni")
+-}
+-
+-skia_support_gpu = !is_ios
+-skia_support_pdf = !is_ios && (enable_basic_printing || enable_print_preview)
+-
+-# When building Chrome for iOS with GYP, the target cpu is not known during
+-# the invocation of gyp. This cause the iOS build to use non-optimised skia.
+-# Replicate this with GN to avoid introducing regression as recommended by
+-# the OWNERS of skia.
+-
+-declare_args() {
+- skia_whitelist_serialized_typefaces = false
+-
+- # TODO(crbug.com/607933): Once GYP is no longer supported, port iOS to use
+- # optimised skia.
+- skia_build_no_opts = is_ios
+-}
+-
+-# External-facing config for dependent code.
+-config("skia_config") {
+ include_dirs = [
+ "config",
+ "ext",
+@@ -608,7 +573,15 @@ source_set("skia_opts") {
+ if (skia_build_no_opts) {
+ sources = skia_opts.none_sources
+ } else if (current_cpu == "x86" || current_cpu == "x64") {
+- sources = skia_opts.sse2_sources
++ sources = skia_opts.sse2_sources +
++ [
++ # Chrome-specific.
++ "ext/convolver_SSE2.cc",
++ "ext/convolver_SSE2.h",
++ ]
++ if (!is_win || is_clang) {
++ cflags += [ "-msse2" ]
++ }
+ deps += [
+ ":skia_opts_avx",
+ ":skia_opts_hsw",
+@@ -644,6 +617,13 @@ source_set("skia_opts") {
+
+ if (mips_dsp_rev >= 1) {
+ sources = skia_opts.mips_dsp_sources
++ if (mips_dsp_rev >= 2) {
++ sources += [
++ # Chrome-specific.
++ "ext/convolver_mips_dspr2.cc",
++ "ext/convolver_mips_dspr2.h",
++ ]
++ }
+ } else {
+ sources = skia_opts.none_sources
+ }
+diff --git a/src/3rdparty/chromium/skia/ext/convolver.cc b/src/3rdparty/chromium/skia/ext/convolver.cc
+index 092fefaa9..4b40ffd2c 100644
+--- a/src/3rdparty/chromium/skia/ext/convolver.cc
++++ b/src/3rdparty/chromium/skia/ext/convolver.cc
+@@ -362,10 +362,13 @@ struct ConvolveProcs {
+
+ void SetupSIMD(ConvolveProcs *procs) {
+ #ifdef SIMD_SSE2
+- procs->extra_horizontal_reads = 3;
+- procs->convolve_vertically = &ConvolveVertically_SSE2;
+- procs->convolve_4rows_horizontally = &Convolve4RowsHorizontally_SSE2;
+- procs->convolve_horizontally = &ConvolveHorizontally_SSE2;
++ base::CPU cpu;
++ if (cpu.has_sse2()) {
++ procs->extra_horizontal_reads = 3;
++ procs->convolve_vertically = &ConvolveVertically_SSE2;
++ procs->convolve_4rows_horizontally = &Convolve4RowsHorizontally_SSE2;
++ procs->convolve_horizontally = &ConvolveHorizontally_SSE2;
++ }
+ #elif defined SIMD_MIPS_DSPR2
+ procs->extra_horizontal_reads = 3;
+ procs->convolve_vertically = &ConvolveVertically_mips_dspr2;
+diff --git a/src/3rdparty/chromium/skia/ext/convolver.h b/src/3rdparty/chromium/skia/ext/convolver.h
+index 1f33d4c0f..f7cd4770a 100644
+--- a/src/3rdparty/chromium/skia/ext/convolver.h
++++ b/src/3rdparty/chromium/skia/ext/convolver.h
+@@ -11,6 +11,7 @@
+ #include <vector>
+
+ #include "build/build_config.h"
++#include "base/cpu.h"
+ #include "third_party/skia/include/core/SkSize.h"
+ #include "third_party/skia/include/core/SkTypes.h"
+
+diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp b/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
+index 8e558f439..20ba17688 100644
+--- a/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
++++ b/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
+@@ -31,7 +31,7 @@
+ #include "wtf/MathExtras.h"
+ #include <algorithm>
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ #include <emmintrin.h>
+ #endif
+
+@@ -662,7 +662,7 @@ float AudioParamTimeline::valuesForFrameRangeImpl(size_t startFrame,
+ // the next event.
+ if (nextEventType == ParamEvent::LinearRampToValue) {
+ const float valueDelta = value2 - value1;
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if (fillToFrame > writeIndex) {
+ // Minimize in-loop operations. Calculate starting value and increment.
+ // Next step: value += inc.
+@@ -841,7 +841,7 @@ float AudioParamTimeline::valuesForFrameRangeImpl(size_t startFrame,
+ for (; writeIndex < fillToFrame; ++writeIndex)
+ values[writeIndex] = target;
+ } else {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if (fillToFrame > writeIndex) {
+ // Resolve recursion by expanding constants to achieve a 4-step
+ // loop unrolling.
+@@ -959,7 +959,7 @@ float AudioParamTimeline::valuesForFrameRangeImpl(size_t startFrame,
+ // Oversampled curve data can be provided if sharp discontinuities are
+ // desired.
+ unsigned k = 0;
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if (fillToFrame > writeIndex) {
+ const __m128 vCurveVirtualIndex = _mm_set_ps1(curveVirtualIndex);
+ const __m128 vCurvePointsPerFrame =
+diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp
+index a77ec195c..d76c2d015 100644
+--- a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp
++++ b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp
+@@ -26,6 +26,9 @@
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
++// include this first to get it before the CPU() function-like macro
++#include "base/cpu.h"
++
+ #include "platform/audio/DirectConvolver.h"
+
+ #if OS(MACOSX)
+@@ -35,21 +38,45 @@
+ #include "platform/audio/VectorMath.h"
+ #include "wtf/CPU.h"
+
+-#if (CPU(X86) || CPU(X86_64)) && !OS(MACOSX)
++#if ((CPU(X86) && defined(__SSE2__)) || CPU(X86_64)) && !OS(MACOSX)
+ #include <emmintrin.h>
+ #endif
+
++#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
++#error SSE2 parts must be built with -msse2
++#endif
++
+ namespace blink {
+
+ using namespace VectorMath;
+
++#ifndef BUILD_ONLY_THE_SSE2_PARTS
++
+ DirectConvolver::DirectConvolver(size_t inputBlockSize)
+- : m_inputBlockSize(inputBlockSize), m_buffer(inputBlockSize * 2) {}
++ : m_inputBlockSize(inputBlockSize), m_buffer(inputBlockSize * 2)
++{
++#if CPU(X86)
++ base::CPU cpu;
++ m_haveSSE2 = cpu.has_sse2();
++#endif
++}
++#endif
+
++#ifdef BUILD_ONLY_THE_SSE2_PARTS
++void DirectConvolver::m_processSSE2(AudioFloatArray* convolutionKernel, const float* sourceP, float* destP, size_t framesToProcess)
++#else
+ void DirectConvolver::process(AudioFloatArray* convolutionKernel,
+ const float* sourceP,
+ float* destP,
+- size_t framesToProcess) {
++ size_t framesToProcess)
++#endif
++{
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
++ if (m_haveSSE2) {
++ m_processSSE2(convolutionKernel, sourceP, destP, framesToProcess);
++ return;
++ }
++#endif
+ ASSERT(framesToProcess == m_inputBlockSize);
+ if (framesToProcess != m_inputBlockSize)
+ return;
+@@ -83,7 +110,7 @@ void DirectConvolver::process(AudioFloatArray* convolutionKernel,
+ #endif // CPU(X86)
+ #else
+ size_t i = 0;
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ // Convolution using SSE2. Currently only do this if both |kernelSize| and
+ // |framesToProcess| are multiples of 4. If not, use the straightforward loop
+ // below.
+@@ -397,7 +424,7 @@ void DirectConvolver::process(AudioFloatArray* convolutionKernel,
+ }
+ destP[i++] = sum;
+ }
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ }
+ #endif
+ #endif // OS(MACOSX)
+@@ -406,8 +433,9 @@ void DirectConvolver::process(AudioFloatArray* convolutionKernel,
+ memcpy(m_buffer.data(), inputP, sizeof(float) * framesToProcess);
+ }
+
++#ifndef BUILD_ONLY_THE_SSE2_PARTS
+ void DirectConvolver::reset() {
+ m_buffer.zero();
+ }
+-
++#endif
+ } // namespace blink
+diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h
+index 848f6aa73..78ea0d84c 100644
+--- a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h
++++ b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h
+@@ -32,6 +32,7 @@
+ #include "platform/PlatformExport.h"
+ #include "platform/audio/AudioArray.h"
+ #include "wtf/Allocator.h"
++#include "wtf/CPU.h"
+ #include "wtf/Noncopyable.h"
+
+ namespace blink {
+@@ -54,6 +55,12 @@ class PLATFORM_EXPORT DirectConvolver {
+ size_t m_inputBlockSize;
+
+ AudioFloatArray m_buffer;
++
++#if CPU(X86)
++ bool m_haveSSE2;
++ void m_processSSE2(AudioFloatArray* convolutionKernel, const float* sourceP, float* destP, size_t framesToProcess);
++#endif
++
+ };
+
+ } // namespace blink
+diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp
+index e7ca2c77d..a0ad93953 100644
+--- a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp
++++ b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp
+@@ -26,15 +26,22 @@
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
++// include this first to get it before the CPU() function-like macro
++#include "base/cpu.h"
++
+ #include "platform/audio/SincResampler.h"
+ #include "platform/audio/AudioBus.h"
+ #include "wtf/CPU.h"
+ #include "wtf/MathExtras.h"
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ #include <emmintrin.h>
+ #endif
+
++#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
++#error SSE2 parts must be built with -msse2
++#endif
++
+ // Input buffer layout, dividing the total buffer into regions (r0 - r5):
+ //
+ // |----------------|-----------------------------------------|----------------|
+@@ -66,6 +73,8 @@
+
+ namespace blink {
+
++#ifndef BUILD_ONLY_THE_SSE2_PARTS
++
+ SincResampler::SincResampler(double scaleFactor,
+ unsigned kernelSize,
+ unsigned numberOfKernelOffsets)
+@@ -81,6 +90,10 @@ SincResampler::SincResampler(double scaleFactor,
+ m_sourceFramesAvailable(0),
+ m_sourceProvider(nullptr),
+ m_isBufferPrimed(false) {
++#if CPU(X86)
++ base::CPU cpu;
++ m_haveSSE2 = cpu.has_sse2();
++#endif
+ initializeKernel();
+ }
+
+@@ -200,10 +213,22 @@ void SincResampler::process(const float* source,
+ remaining -= framesThisTime;
+ }
+ }
++#endif //BUILD_ONLY_THE_SSE2_PARTS
+
++#ifdef BUILD_ONLY_THE_SSE2_PARTS
++void SincResampler::m_processSSE2(AudioSourceProvider* sourceProvider, float* destination, size_t framesToProcess)
++#else
+ void SincResampler::process(AudioSourceProvider* sourceProvider,
+ float* destination,
+- size_t framesToProcess) {
++ size_t framesToProcess)
++#endif
++{
++#if CPU(X86) && !defined(__SSE2__)
++ if (m_haveSSE2) {
++ m_processSSE2(sourceProvider, destination, framesToProcess);
++ return;
++ }
++#endif
+ bool isGood = sourceProvider && m_blockSize > m_kernelSize &&
+ m_inputBuffer.size() >= m_blockSize + m_kernelSize &&
+ !(m_kernelSize % 2);
+@@ -269,7 +294,7 @@ void SincResampler::process(AudioSourceProvider* sourceProvider,
+ {
+ float input;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ // If the sourceP address is not 16-byte aligned, the first several
+ // frames (at most three) should be processed seperately.
+ while ((reinterpret_cast<uintptr_t>(inputP) & 0x0F) && n) {
+diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h
+index b96ec94cf..4b6b3293e 100644
+--- a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h
++++ b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h
+@@ -33,6 +33,7 @@
+ #include "platform/audio/AudioArray.h"
+ #include "platform/audio/AudioSourceProvider.h"
+ #include "wtf/Allocator.h"
++#include "wtf/CPU.h"
+ #include "wtf/Noncopyable.h"
+
+ namespace blink {
+@@ -96,6 +97,12 @@ class PLATFORM_EXPORT SincResampler {
+
+ // The buffer is primed once at the very beginning of processing.
+ bool m_isBufferPrimed;
++
++#if CPU(X86)
++ bool m_haveSSE2;
++ void m_processSSE2(AudioSourceProvider*, float* destination, size_t framesToProcess);
++#endif
++ };
+ };
+
+ } // namespace blink
+diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp
+index 8f3592cd7..ba9fc1a73 100644
+--- a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp
++++ b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp
+@@ -23,6 +23,9 @@
+ * DAMAGE.
+ */
+
++// include this first to get it before the CPU() function-like macro
++#include "base/cpu.h"
++
+ #include "platform/audio/VectorMath.h"
+ #include "wtf/Assertions.h"
+ #include "wtf/CPU.h"
+@@ -33,10 +36,14 @@
+ #include <Accelerate/Accelerate.h>
+ #endif
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ #include <emmintrin.h>
+ #endif
+
++#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
++#error SSE2 parts must be built with -msse2
++#endif
++
+ #if HAVE(ARM_NEON_INTRINSICS)
+ #include <arm_neon.h>
+ #endif
+@@ -165,15 +172,30 @@ void vclip(const float* sourceP,
+ }
+ #else
+
++#ifdef BUILD_ONLY_THE_SSE2_PARTS
++namespace SSE2 {
++#endif
++
++#if CPU(X86) && !defined(__SSE2__)
++static base::CPU cpu;
++#endif
++
+ void vsma(const float* sourceP,
+ int sourceStride,
+ const float* scale,
+ float* destP,
+ int destStride,
+ size_t framesToProcess) {
+- int n = framesToProcess;
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vsma(sourceP, sourceStride, scale, destP, destStride, framesToProcess);
++ return;
++ }
++#endif
++
++int n = framesToProcess;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if ((sourceStride == 1) && (destStride == 1)) {
+ float k = *scale;
+
+@@ -269,9 +291,16 @@ void vsmul(const float* sourceP,
+ float* destP,
+ int destStride,
+ size_t framesToProcess) {
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vsmul(sourceP, sourceStride, scale, destP, destStride, framesToProcess);
++ return;
++ }
++#endif
++
+ int n = framesToProcess;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if ((sourceStride == 1) && (destStride == 1)) {
+ float k = *scale;
+
+@@ -360,7 +389,7 @@ void vsmul(const float* sourceP,
+ sourceP += sourceStride;
+ destP += destStride;
+ }
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ }
+ #endif
+ }
+@@ -372,9 +401,16 @@ void vadd(const float* source1P,
+ float* destP,
+ int destStride,
+ size_t framesToProcess) {
+- int n = framesToProcess;
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vadd(source1P, sourceStride1, source2P, sourceStride2, destP, destStride, framesToProcess);
++ return;
++ }
++#endif
+
+-#if CPU(X86) || CPU(X86_64)
++ int n = framesToProcess;
++
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if ((sourceStride1 == 1) && (sourceStride2 == 1) && (destStride == 1)) {
+ // If the sourceP address is not 16-byte aligned, the first several frames
+ // (at most three) should be processed separately.
+@@ -501,7 +537,7 @@ void vadd(const float* source1P,
+ source2P += sourceStride2;
+ destP += destStride;
+ }
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ }
+ #endif
+ }
+@@ -513,9 +549,16 @@ void vmul(const float* source1P,
+ float* destP,
+ int destStride,
+ size_t framesToProcess) {
+- int n = framesToProcess;
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vmul(source1P, sourceStride1, source2P, sourceStride2, destP, destStride, framesToProcess);
++ return;
++ }
++#endif
++
++int n = framesToProcess;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if ((sourceStride1 == 1) && (sourceStride2 == 1) && (destStride == 1)) {
+ // If the source1P address is not 16-byte aligned, the first several frames
+ // (at most three) should be processed separately.
+@@ -614,8 +657,15 @@ void zvmul(const float* real1P,
+ float* realDestP,
+ float* imagDestP,
+ size_t framesToProcess) {
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::zvmul(real1P, imag1P, real2P, imag2P, realDestP, imagDestP, framesToProcess);
++ return;
++ }
++#endif
++
+ unsigned i = 0;
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ // Only use the SSE optimization in the very common case that all addresses
+ // are 16-byte aligned. Otherwise, fall through to the scalar code below.
+ if (!(reinterpret_cast<uintptr_t>(real1P) & 0x0F) &&
+@@ -671,10 +721,17 @@ void vsvesq(const float* sourceP,
+ int sourceStride,
+ float* sumP,
+ size_t framesToProcess) {
+- int n = framesToProcess;
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vsvesq(sourceP, sourceStride, sumP, framesToProcess);
++ return;
++ }
++#endif
++
++ int n = framesToProcess;
+ float sum = 0;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if (sourceStride == 1) {
+ // If the sourceP address is not 16-byte aligned, the first several frames
+ // (at most three) should be processed separately.
+@@ -740,10 +797,16 @@ void vmaxmgv(const float* sourceP,
+ int sourceStride,
+ float* maxP,
+ size_t framesToProcess) {
++#if CPU(X86) && !defined(__SSE2__)
++ if (cpu.has_sse2()) {
++ blink::VectorMath::SSE2::vmaxmgv(sourceP, sourceStride, maxP, framesToProcess);
++ return;
++ }
++#endif
+ int n = framesToProcess;
+ float max = 0;
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ if (sourceStride == 1) {
+ // If the sourceP address is not 16-byte aligned, the first several frames
+ // (at most three) should be processed separately.
+@@ -839,6 +902,7 @@ void vclip(const float* sourceP,
+ float* destP,
+ int destStride,
+ size_t framesToProcess) {
++#ifndef BUILD_ONLY_THE_SSE2_PARTS
+ int n = framesToProcess;
+ float lowThreshold = *lowThresholdP;
+ float highThreshold = *highThresholdP;
+@@ -888,6 +952,11 @@ void vclip(const float* sourceP,
+ destP += destStride;
+ }
+ }
++#endif
++
++#ifdef BUILD_ONLY_THE_SSE2_PARTS
++} // namespace SSE2
++#endif
+
+ #endif // OS(MACOSX)
+
+diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h
+index 8f375071c..d92e5b85e 100644
+--- a/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h
++++ b/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h
+@@ -27,6 +27,7 @@
+ #define VectorMath_h
+
+ #include "platform/PlatformExport.h"
++#include "wtf/CPU.h"
+ #include "wtf/build_config.h"
+ #include <cstddef>
+
+@@ -97,6 +98,28 @@ PLATFORM_EXPORT void vclip(const float* sourceP,
+ int destStride,
+ size_t framesToProcess);
+
++#if CPU(X86)
++namespace SSE2 {
++// Vector scalar multiply and then add.
++PLATFORM_EXPORT void vsma(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess);
++
++PLATFORM_EXPORT void vsmul(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess);
++PLATFORM_EXPORT void vadd(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess);
++
++// Finds the maximum magnitude of a float vector.
++PLATFORM_EXPORT void vmaxmgv(const float* sourceP, int sourceStride, float* maxP, size_t framesToProcess);
++
++// Sums the squares of a float vector's elements.
++PLATFORM_EXPORT void vsvesq(const float* sourceP, int sourceStride, float* sumP, size_t framesToProcess);
++
++// For an element-by-element multiply of two float vectors.
++PLATFORM_EXPORT void vmul(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess);
++
++// Multiplies two complex vectors.
++PLATFORM_EXPORT void zvmul(const float* real1P, const float* imag1P, const float* real2P, const float* imag2P, float* realDestP, float* imagDestP, size_t framesToProcess);
++}
++#endif
++
+ } // namespace VectorMath
+ } // namespace blink
+
+diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h b/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h
+index e30fcb464..4b3437057 100644
+--- a/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h
++++ b/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h
+@@ -5,7 +5,7 @@
+ #ifndef WebGLImageConversionSSE_h
+ #define WebGLImageConversionSSE_h
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+
+ #include <emmintrin.h>
+
+diff --git a/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp b/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp
+index be417ea88..e79034424 100644
+--- a/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp
++++ b/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp
+@@ -441,7 +441,7 @@ void unpack<WebGLImageConversion::DataFormatBGRA8, uint8_t, uint8_t>(
+ const uint32_t* source32 = reinterpret_cast_ptr<const uint32_t*>(source);
+ uint32_t* destination32 = reinterpret_cast_ptr<uint32_t*>(destination);
+
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::unpackOneRowOfBGRA8LittleToRGBA8(source32, destination32, pixelsPerRow);
+ #endif
+ #if HAVE(MIPS_MSA_INTRINSICS)
+@@ -467,7 +467,7 @@ void unpack<WebGLImageConversion::DataFormatRGBA5551, uint16_t, uint8_t>(
+ const uint16_t* source,
+ uint8_t* destination,
+ unsigned pixelsPerRow) {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::unpackOneRowOfRGBA5551LittleToRGBA8(source, destination, pixelsPerRow);
+ #endif
+ #if HAVE(ARM_NEON_INTRINSICS)
+@@ -496,7 +496,7 @@ void unpack<WebGLImageConversion::DataFormatRGBA4444, uint16_t, uint8_t>(
+ const uint16_t* source,
+ uint8_t* destination,
+ unsigned pixelsPerRow) {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::unpackOneRowOfRGBA4444LittleToRGBA8(source, destination, pixelsPerRow);
+ #endif
+ #if HAVE(ARM_NEON_INTRINSICS)
+@@ -711,7 +711,7 @@ void pack<WebGLImageConversion::DataFormatR8,
+ uint8_t>(const uint8_t* source,
+ uint8_t* destination,
+ unsigned pixelsPerRow) {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::packOneRowOfRGBA8LittleToR8(source, destination, pixelsPerRow);
+ #endif
+ #if HAVE(MIPS_MSA_INTRINSICS)
+@@ -768,7 +768,7 @@ void pack<WebGLImageConversion::DataFormatRA8,
+ uint8_t>(const uint8_t* source,
+ uint8_t* destination,
+ unsigned pixelsPerRow) {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::packOneRowOfRGBA8LittleToRA8(source, destination, pixelsPerRow);
+ #endif
+ #if HAVE(MIPS_MSA_INTRINSICS)
+@@ -880,7 +880,7 @@ void pack<WebGLImageConversion::DataFormatRGBA8,
+ uint8_t>(const uint8_t* source,
+ uint8_t* destination,
+ unsigned pixelsPerRow) {
+-#if CPU(X86) || CPU(X86_64)
++#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
+ SIMD::packOneRowOfRGBA8LittleToRGBA8(source, destination, pixelsPerRow);
+ #endif
+ #if HAVE(MIPS_MSA_INTRINSICS)
+diff --git a/src/3rdparty/chromium/third_party/qcms/BUILD.gn b/src/3rdparty/chromium/third_party/qcms/BUILD.gn
+index 1183569be..771dd02c8 100644
+--- a/src/3rdparty/chromium/third_party/qcms/BUILD.gn
++++ b/src/3rdparty/chromium/third_party/qcms/BUILD.gn
+@@ -30,8 +30,8 @@ static_library("qcms") {
+ ]
+
+ if (current_cpu == "x86" || current_cpu == "x64") {
+- defines = [ "SSE2_ENABLE" ]
+- sources += [ "src/transform-sse2.c" ]
++ defines = [ "SSE2_ENABLE" ] # runtime detection
++ deps = [ "qcms_sse2" ]
+ }
+ }
+
+@@ -74,3 +74,16 @@ if (!disable_qcms) {
+ public_configs = [ ":qcms_config" ]
+ }
+ }
++
++source_set("qcms_sse2") {
++ configs -= [ "//build/config/compiler:chromium_code" ]
++ configs += [ "//build/config/compiler:no_chromium_code" ]
++ public_configs = [ ":qcms_config" ]
++
++ if (current_cpu == "x86" || current_cpu == "x64") {
++ defines = [ "SSE2_ENABLE" ]
++ sources = [ "src/transform-sse2.c" ]
++ cflags = [ "-msse2" ]
++ }
++}
++
+diff --git a/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc b/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc
+index e721346f3..ef5a4e4a7 100644
+--- a/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc
++++ b/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc
+@@ -14,6 +14,7 @@
+ #include "webrtc/common_audio/real_fourier_ooura.h"
+ #include "webrtc/common_audio/real_fourier_openmax.h"
+ #include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
++#include "webrtc/system_wrappers/include/cpu_features_wrapper.h"
+
+ namespace webrtc {
+
+@@ -23,7 +24,15 @@ const size_t RealFourier::kFftBufferAlignment = 32;
+
+ std::unique_ptr<RealFourier> RealFourier::Create(int fft_order) {
+ #if defined(RTC_USE_OPENMAX_DL)
++#if defined(WEBRTC_ARCH_X86_FAMILY) && !defined(__SSE2__)
++ // x86 CPU detection required.
++ if (WebRtc_GetCPUInfo(kSSE2))
++ return std::unique_ptr<RealFourier>(new RealFourierOpenmax(fft_order));
++ else
++ return std::unique_ptr<RealFourier>(new RealFourierOoura(fft_order));
++#else
+ return std::unique_ptr<RealFourier>(new RealFourierOpenmax(fft_order));
++#endif
+ #else
+ return std::unique_ptr<RealFourier>(new RealFourierOoura(fft_order));
+ #endif
+diff --git a/src/3rdparty/chromium/v8/BUILD.gn b/src/3rdparty/chromium/v8/BUILD.gn
+index 9b209dfff..d88261d53 100644
+--- a/src/3rdparty/chromium/v8/BUILD.gn
++++ b/src/3rdparty/chromium/v8/BUILD.gn
+@@ -1769,43 +1769,41 @@ v8_static_library("v8_base") {
+
+ if (v8_current_cpu == "x86") {
+ sources += [ ### gcmole(arch:ia32) ###
+- "src/builtins/ia32/builtins-ia32.cc",
+- "src/compiler/ia32/code-generator-ia32.cc",
+- "src/compiler/ia32/instruction-codes-ia32.h",
+- "src/compiler/ia32/instruction-scheduler-ia32.cc",
+- "src/compiler/ia32/instruction-selector-ia32.cc",
+- "src/crankshaft/ia32/lithium-codegen-ia32.cc",
+- "src/crankshaft/ia32/lithium-codegen-ia32.h",
+- "src/crankshaft/ia32/lithium-gap-resolver-ia32.cc",
+- "src/crankshaft/ia32/lithium-gap-resolver-ia32.h",
+- "src/crankshaft/ia32/lithium-ia32.cc",
+- "src/crankshaft/ia32/lithium-ia32.h",
+- "src/debug/ia32/debug-ia32.cc",
+- "src/full-codegen/ia32/full-codegen-ia32.cc",
+- "src/ia32/assembler-ia32-inl.h",
+- "src/ia32/assembler-ia32.cc",
+- "src/ia32/assembler-ia32.h",
+- "src/ia32/code-stubs-ia32.cc",
+- "src/ia32/code-stubs-ia32.h",
+- "src/ia32/codegen-ia32.cc",
+- "src/ia32/codegen-ia32.h",
+- "src/ia32/cpu-ia32.cc",
+- "src/ia32/deoptimizer-ia32.cc",
+- "src/ia32/disasm-ia32.cc",
+- "src/ia32/frames-ia32.cc",
+- "src/ia32/frames-ia32.h",
+- "src/ia32/interface-descriptors-ia32.cc",
+- "src/ia32/macro-assembler-ia32.cc",
+- "src/ia32/macro-assembler-ia32.h",
+- "src/ia32/simulator-ia32.cc",
+- "src/ia32/simulator-ia32.h",
+- "src/ic/ia32/access-compiler-ia32.cc",
+- "src/ic/ia32/handler-compiler-ia32.cc",
+- "src/ic/ia32/ic-compiler-ia32.cc",
+- "src/ic/ia32/ic-ia32.cc",
+- "src/ic/ia32/stub-cache-ia32.cc",
+- "src/regexp/ia32/regexp-macro-assembler-ia32.cc",
+- "src/regexp/ia32/regexp-macro-assembler-ia32.h",
++ "src/compiler/x87/code-generator-x87.cc",
++ "src/compiler/x87/instruction-codes-x87.h",
++ "src/compiler/x87/instruction-scheduler-x87.cc",
++ "src/compiler/x87/instruction-selector-x87.cc",
++ "src/crankshaft/x87/lithium-codegen-x87.cc",
++ "src/crankshaft/x87/lithium-codegen-x87.h",
++ "src/crankshaft/x87/lithium-gap-resolver-x87.cc",
++ "src/crankshaft/x87/lithium-gap-resolver-x87.h",
++ "src/crankshaft/x87/lithium-x87.cc",
++ "src/crankshaft/x87/lithium-x87.h",
++ "src/debug/x87/debug-x87.cc",
++ "src/full-codegen/x87/full-codegen-x87.cc",
++ "src/x87/assembler-x87-inl.h",
++ "src/x87/assembler-x87.cc",
++ "src/x87/assembler-x87.h",
++ "src/x87/builtins-x87.cc",
++ "src/x87/code-stubs-x87.cc",
++ "src/x87/code-stubs-x87.h",
++ "src/x87/codegen-x87.cc",
++ "src/x87/codegen-x87.h",
++ "src/x87/cpu-x87.cc",
++ "src/x87/deoptimizer-x87.cc",
++ "src/x87/disasm-x87.cc",
++ "src/x87/frames-x87.cc",
++ "src/x87/frames-x87.h",
++ "src/x87/interface-descriptors-x87.cc",
++ "src/x87/macro-assembler-x87.cc",
++ "src/x87/macro-assembler-x87.h",
++ "src/ic/x87/access-compiler-x87.cc",
++ "src/ic/x87/handler-compiler-x87.cc",
++ "src/ic/x87/ic-compiler-x87.cc",
++ "src/ic/x87/ic-x87.cc",
++ "src/ic/x87/stub-cache-x87.cc",
++ "src/regexp/x87/regexp-macro-assembler-x87.cc",
++ "src/regexp/x87/regexp-macro-assembler-x87.h",
+ ]
+ } else if (v8_current_cpu == "x64") {
+ sources += [ ### gcmole(arch:x64) ###
+diff --git a/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh b/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh
+new file mode 100644
+index 000000000..0e7ec1621
+--- /dev/null
++++ b/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh
+@@ -0,0 +1,56 @@
++#!/bin/sh
++# This script renames the v8 targets to _sse2 names so that they do not conflict
++# with the non-SSE2 versions.
++
++# Copyright 2016 Kevin Kofler. All rights reserved.
++# Redistribution and use in source and binary forms, with or without
++# modification, are permitted provided that the following conditions are
++# met:
++#
++# * Redistributions of source code must retain the above copyright
++# notice, this list of conditions and the following disclaimer.
++# * Redistributions in binary form must reproduce the above
++# copyright notice, this list of conditions and the following
++# disclaimer in the documentation and/or other materials provided
++# with the distribution.
++# * Neither the name of Google Inc. nor the names of its
++# contributors may be used to endorse or promote products derived
++# from this software without specific prior written permission.
++#
++# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
++# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
++# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
++# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
++# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++
++# add comment noting that the file is generated
++echo "# Generated from v8.gyp by make-v8-sse2-gyp.sh" >v8_sse2.gyp
++# rename all target names
++SUBTARGETS=`grep "'target_name': '" v8.gyp | sed -e "s/^.*'target_name': '//g" -e "s/',$//g"`
++SEDS=
++for SUBTARGET in $SUBTARGETS ; do
++ SEDS=$SEDS\ -e\ "s/'$SUBTARGET\(['#]\)/'${SUBTARGET}_sse2\1/g"
++done
++# in addition:
++# * set v8_target_arch to "ia32" (instead of "x87")
++# * rename all actions
++# * fix mksnapshot_exec to match the renamed target
++# * rename the generated snapshot.cc (but not mksnapshot.cc) to snapshot_sse2.cc
++# * rename the generated *libraries.cc to *libraries_sse2.cc
++# * rename the generated *.bin to *_sse2.bin
++# * set product_name and product_dir for the v8_sse2 target
++sed -e "s/^\( 'variables': {\)/\1\n 'v8_target_arch': 'ia32',/g" \
++ -e "s/\('action_name': '\)/\1v8_sse2_/g" \
++ $SEDS \
++ -e "s/\('mksnapshot_exec': '.*mksnapshot\)/\1_sse2/g" \
++ -e "s#/snapshot\.cc#/snapshot_sse2.cc#g" \
++ -e "s/libraries\.cc/libraries_sse2.cc/g" \
++ -e "s/\.bin/_sse2.bin/g" \
++ -e "s#^\( *\)\('target_name': 'v8_sse2',\)#\1\2\n\1'product_name': 'v8',\n\1'product_dir': '<(PRODUCT_DIR)/lib/sse2',#g" \
++ v8.gyp >>v8_sse2.gyp
+diff --git a/src/3rdparty/chromium/v8/src/v8.gyp b/src/3rdparty/chromium/v8/src/v8.gyp
+index 020ec0928..2add932fc 100644
+--- a/src/3rdparty/chromium/v8/src/v8.gyp
++++ b/src/3rdparty/chromium/v8/src/v8.gyp
+@@ -51,8 +51,8 @@
+ }, {
+ 'toolsets': ['target'],
+ }],
+- ['component=="shared_library"', {
+- 'type': '<(component)',
++ ['v8_component=="shared_library"', {
++ 'type': '<(v8_component)',
+ 'sources': [
+ # Note: on non-Windows we still build this file so that gyp
+ # has some sources to link into the component.
+@@ -151,7 +151,7 @@
+ 'js2c',
+ ],
+ }],
+- ['component=="shared_library"', {
++ ['v8_component=="shared_library"', {
+ 'defines': [
+ 'BUILDING_V8_SHARED',
+ ],
+@@ -243,7 +243,7 @@
+ 'toolsets': ['target'],
+ 'dependencies': ['js2c'],
+ }],
+- ['component=="shared_library"', {
++ ['v8_component=="shared_library"', {
+ 'defines': [
+ 'BUILDING_V8_SHARED',
+ ],
+@@ -270,7 +270,7 @@
+ 'natives_blob',
+ ],
+ }],
+- ['component=="shared_library"', {
++ ['v8_component=="shared_library"', {
+ 'defines': [
+ 'BUILDING_V8_SHARED',
+ ],
+@@ -1727,7 +1727,7 @@
+ # See http://crbug.com/485155.
+ 'msvs_shard': 4,
+ }],
+- ['component=="shared_library"', {
++ ['v8_component=="shared_library"', {
+ 'defines': [
+ 'BUILDING_V8_SHARED',
+ ],
+diff --git a/src/3rdparty/chromium/v8/src/v8_sse2.gyp b/src/3rdparty/chromium/v8/src/v8_sse2.gyp
+new file mode 100644
+index 000000000..140b071a6
+--- /dev/null
++++ b/src/3rdparty/chromium/v8/src/v8_sse2.gyp
+@@ -0,0 +1,2313 @@
++# Generated from v8.gyp by make-v8-sse2-gyp.sh
++# Copyright 2012 the V8 project authors. All rights reserved.
++# Redistribution and use in source and binary forms, with or without
++# modification, are permitted provided that the following conditions are
++# met:
++#
++# * Redistributions of source code must retain the above copyright
++# notice, this list of conditions and the following disclaimer.
++# * Redistributions in binary form must reproduce the above
++# copyright notice, this list of conditions and the following
++# disclaimer in the documentation and/or other materials provided
++# with the distribution.
++# * Neither the name of Google Inc. nor the names of its
++# contributors may be used to endorse or promote products derived
++# from this software without specific prior written permission.
++#
++# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
++# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
++# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
++# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
++# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++
++{
++ 'variables': {
++ 'v8_target_arch': 'ia32',
++ 'v8_code': 1,
++ 'v8_random_seed%': 314159265,
++ 'v8_vector_stores%': 0,
++ 'embed_script%': "",
++ 'warmup_script%': "",
++ 'v8_extra_library_files%': [],
++ 'v8_experimental_extra_library_files%': [],
++ 'mksnapshot_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)mksnapshot_sse2<(EXECUTABLE_SUFFIX)',
++ 'remove_v8base_debug_symbols%': 0,
++ 'conditions': [
++ # build V8 shared on ia32 so we can swap x87 vs. SSE2 builds
++ ['target_arch == "ia32"', {
++ 'v8_component%': 'shared_library',
++ }, {
++ 'v8_component%': '<(component)',
++ }],
++ ],
++ },
++ 'includes': ['../gypfiles/toolchain.gypi', '../gypfiles/features.gypi'],
++ 'targets': [
++ {
++ 'target_name': 'v8_sse2',
++ 'product_name': 'v8',
++ 'product_dir': '<(PRODUCT_DIR)/lib/sse2',
++ 'dependencies_traverse': 1,
++ 'dependencies': ['v8_maybe_snapshot_sse2'],
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ['v8_component=="shared_library"', {
++ 'type': '<(v8_component)',
++ 'sources': [
++ # Note: on non-Windows we still build this file so that gyp
++ # has some sources to link into the component.
++ 'v8dll-main.cc',
++ ],
++ 'include_dirs': [
++ '..',
++ ],
++ 'defines': [
++ 'V8_SHARED',
++ 'BUILDING_V8_SHARED',
++ ],
++ 'direct_dependent_settings': {
++ 'defines': [
++ 'V8_SHARED',
++ 'USING_V8_SHARED',
++ ],
++ },
++ 'target_conditions': [
++ ['OS=="android" and _toolset=="target"', {
++ 'libraries': [
++ '-llog',
++ ],
++ 'include_dirs': [
++ 'src/common/android/include',
++ ],
++ }],
++ ],
++ 'conditions': [
++ ['OS=="mac"', {
++ 'xcode_settings': {
++ 'OTHER_LDFLAGS': ['-dynamiclib', '-all_load']
++ },
++ }],
++ ['soname_version!=""', {
++ 'product_extension': 'so.<(soname_version)',
++ }],
++ ],
++ },
++ {
++ 'type': 'none',
++ }],
++ ],
++ 'direct_dependent_settings': {
++ 'include_dirs': [
++ '../include',
++ ],
++ },
++ },
++ {
++ # This rule delegates to either v8_snapshot, v8_nosnapshot, or
++ # v8_external_snapshot, depending on the current variables.
++ # The intention is to make the 'calling' rules a bit simpler.
++ 'target_name': 'v8_maybe_snapshot_sse2',
++ 'type': 'none',
++ 'conditions': [
++ ['v8_use_snapshot!="true"', {
++ # The dependency on v8_base should come from a transitive
++ # dependency however the Android toolchain requires libv8_base.a
++ # to appear before libv8_snapshot.a so it's listed explicitly.
++ 'dependencies': ['v8_base_sse2', 'v8_nosnapshot_sse2'],
++ }],
++ ['v8_use_snapshot=="true" and v8_use_external_startup_data==0', {
++ # The dependency on v8_base should come from a transitive
++ # dependency however the Android toolchain requires libv8_base.a
++ # to appear before libv8_snapshot.a so it's listed explicitly.
++ 'dependencies': ['v8_base_sse2', 'v8_snapshot_sse2'],
++ }],
++ ['v8_use_snapshot=="true" and v8_use_external_startup_data==1 and want_separate_host_toolset==0', {
++ 'dependencies': ['v8_base_sse2', 'v8_external_snapshot_sse2'],
++ 'inputs': [ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin', ],
++ }],
++ ['v8_use_snapshot=="true" and v8_use_external_startup_data==1 and want_separate_host_toolset==1', {
++ 'dependencies': ['v8_base_sse2', 'v8_external_snapshot_sse2'],
++ 'target_conditions': [
++ ['_toolset=="host"', {
++ 'inputs': [
++ '<(PRODUCT_DIR)/snapshot_blob_host_sse2.bin',
++ ],
++ }, {
++ 'inputs': [
++ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
++ ],
++ }],
++ ],
++ }],
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ]
++ },
++ {
++ 'target_name': 'v8_snapshot_sse2',
++ 'type': 'static_library',
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ 'dependencies': [
++ 'mksnapshot_sse2#host',
++ 'js2c_sse2#host',
++ ],
++ }, {
++ 'toolsets': ['target'],
++ 'dependencies': [
++ 'mksnapshot_sse2',
++ 'js2c_sse2',
++ ],
++ }],
++ ['v8_component=="shared_library"', {
++ 'defines': [
++ 'V8_SHARED',
++ 'BUILDING_V8_SHARED',
++ ],
++ 'direct_dependent_settings': {
++ 'defines': [
++ 'V8_SHARED',
++ 'USING_V8_SHARED',
++ ],
++ },
++ }],
++ ],
++ 'dependencies': [
++ 'v8_base_sse2',
++ ],
++ 'include_dirs+': [
++ '..',
++ ],
++ 'sources': [
++ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
++ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
++ '<(INTERMEDIATE_DIR)/snapshot_sse2.cc',
++ ],
++ 'actions': [
++ {
++ 'action_name': 'v8_sse2_run_mksnapshot',
++ 'inputs': [
++ '<(mksnapshot_exec)',
++ ],
++ 'conditions': [
++ ['embed_script!=""', {
++ 'inputs': [
++ '<(embed_script)',
++ ],
++ }],
++ ['warmup_script!=""', {
++ 'inputs': [
++ '<(warmup_script)',
++ ],
++ }],
++ ],
++ 'outputs': [
++ '<(INTERMEDIATE_DIR)/snapshot_sse2.cc',
++ ],
++ 'variables': {
++ 'mksnapshot_flags': [],
++ 'conditions': [
++ ['v8_random_seed!=0', {
++ 'mksnapshot_flags': ['--random-seed', '<(v8_random_seed)'],
++ }],
++ ['v8_vector_stores!=0', {
++ 'mksnapshot_flags': ['--vector-stores'],
++ }],
++ ],
++ },
++ 'action': [
++ '<(mksnapshot_exec)',
++ '<@(mksnapshot_flags)',
++ '--startup_src', '<@(INTERMEDIATE_DIR)/snapshot_sse2.cc',
++ '<(embed_script)',
++ '<(warmup_script)',
++ ],
++ },
++ ],
++ },
++ {
++ 'target_name': 'v8_nosnapshot_sse2',
++ 'type': 'static_library',
++ 'dependencies': [
++ 'v8_base_sse2',
++ ],
++ 'include_dirs+': [
++ '..',
++ ],
++ 'sources': [
++ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
++ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
++ 'snapshot/snapshot-empty.cc',
++ ],
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ 'dependencies': ['js2c_sse2#host'],
++ }, {
++ 'toolsets': ['target'],
++ 'dependencies': ['js2c_sse2'],
++ }],
++ ['v8_component=="shared_library"', {
++ 'defines': [
++ 'BUILDING_V8_SHARED',
++ 'V8_SHARED',
++ ],
++ }],
++ ]
++ },
++ {
++ 'target_name': 'v8_external_snapshot_sse2',
++ 'type': 'static_library',
++ 'conditions': [
++ [ 'v8_use_external_startup_data==1', {
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ 'dependencies': [
++ 'mksnapshot_sse2#host',
++ 'js2c_sse2#host',
++ 'natives_blob_sse2',
++ ]}, {
++ 'toolsets': ['target'],
++ 'dependencies': [
++ 'mksnapshot_sse2',
++ 'js2c_sse2',
++ 'natives_blob_sse2',
++ ],
++ }],
++ ['v8_component=="shared_library"', {
++ 'defines': [
++ 'V8_SHARED',
++ 'BUILDING_V8_SHARED',
++ ],
++ 'direct_dependent_settings': {
++ 'defines': [
++ 'V8_SHARED',
++ 'USING_V8_SHARED',
++ ],
++ },
++ }],
++ ],
++ 'dependencies': [
++ 'v8_base_sse2',
++ ],
++ 'include_dirs+': [
++ '..',
++ ],
++ 'sources': [
++ 'snapshot/natives-external.cc',
++ 'snapshot/snapshot-external.cc',
++ ],
++ 'actions': [
++ {
++ 'action_name': 'v8_sse2_run_mksnapshot (external)',
++ 'inputs': [
++ '<(mksnapshot_exec)',
++ ],
++ 'variables': {
++ 'mksnapshot_flags': [],
++ 'conditions': [
++ ['v8_random_seed!=0', {
++ 'mksnapshot_flags': ['--random-seed', '<(v8_random_seed)'],
++ }],
++ ['v8_vector_stores!=0', {
++ 'mksnapshot_flags': ['--vector-stores'],
++ }],
++ ],
++ },
++ 'conditions': [
++ ['embed_script!=""', {
++ 'inputs': [
++ '<(embed_script)',
++ ],
++ }],
++ ['warmup_script!=""', {
++ 'inputs': [
++ '<(warmup_script)',
++ ],
++ }],
++ ['want_separate_host_toolset==1', {
++ 'target_conditions': [
++ ['_toolset=="host"', {
++ 'outputs': [
++ '<(PRODUCT_DIR)/snapshot_blob_host_sse2.bin',
++ ],
++ 'action': [
++ '<(mksnapshot_exec)',
++ '<@(mksnapshot_flags)',
++ '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob_host_sse2.bin',
++ '<(embed_script)',
++ '<(warmup_script)',
++ ],
++ }, {
++ 'outputs': [
++ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
++ ],
++ 'action': [
++ '<(mksnapshot_exec)',
++ '<@(mksnapshot_flags)',
++ '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
++ '<(embed_script)',
++ '<(warmup_script)',
++ ],
++ }],
++ ],
++ }, {
++ 'outputs': [
++ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
++ ],
++ 'action': [
++ '<(mksnapshot_exec)',
++ '<@(mksnapshot_flags)',
++ '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
++ '<(embed_script)',
++ '<(warmup_script)',
++ ],
++ }],
++ ],
++ },
++ ],
++ }],
++ ],
++ },
++ {
++ 'target_name': 'v8_base_sse2',
++ 'type': 'static_library',
++ 'dependencies': [
++ 'v8_libbase_sse2',
++ 'v8_libsampler_sse2',
++ ],
++ 'variables': {
++ 'optimize': 'max',
++ },
++ 'include_dirs+': [
++ '..',
++ '<(DEPTH)',
++ ],
++ 'sources': [ ### gcmole(all) ###
++ '../include/v8-debug.h',
++ '../include/v8-experimental.h',
++ '../include/v8-platform.h',
++ '../include/v8-profiler.h',
++ '../include/v8-testing.h',
++ '../include/v8-util.h',
++ '../include/v8-version.h',
++ '../include/v8.h',
++ '../include/v8config.h',
++ 'accessors.cc',
++ 'accessors.h',
++ 'address-map.cc',
++ 'address-map.h',
++ 'allocation.cc',
++ 'allocation.h',
++ 'allocation-site-scopes.cc',
++ 'allocation-site-scopes.h',
++ 'api-experimental.cc',
++ 'api-experimental.h',
++ 'api.cc',
++ 'api.h',
++ 'api-arguments-inl.h',
++ 'api-arguments.cc',
++ 'api-arguments.h',
++ 'api-natives.cc',
++ 'api-natives.h',
++ 'arguments.cc',
++ 'arguments.h',
++ 'assembler.cc',
++ 'assembler.h',
++ 'assert-scope.h',
++ 'assert-scope.cc',
++ 'ast/ast-expression-rewriter.cc',
++ 'ast/ast-expression-rewriter.h',
++ 'ast/ast-expression-visitor.cc',
++ 'ast/ast-expression-visitor.h',
++ 'ast/ast-literal-reindexer.cc',
++ 'ast/ast-literal-reindexer.h',
++ 'ast/ast-numbering.cc',
++ 'ast/ast-numbering.h',
++ 'ast/ast-type-bounds.h',
++ 'ast/ast-value-factory.cc',
++ 'ast/ast-value-factory.h',
++ 'ast/ast.cc',
++ 'ast/ast.h',
++ 'ast/modules.cc',
++ 'ast/modules.h',
++ 'ast/prettyprinter.cc',
++ 'ast/prettyprinter.h',
++ 'ast/scopeinfo.cc',
++ 'ast/scopeinfo.h',
++ 'ast/scopes.cc',
++ 'ast/scopes.h',
++ 'ast/variables.cc',
++ 'ast/variables.h',
++ 'background-parsing-task.cc',
++ 'background-parsing-task.h',
++ 'bailout-reason.cc',
++ 'bailout-reason.h',
++ 'basic-block-profiler.cc',
++ 'basic-block-profiler.h',
++ 'bignum-dtoa.cc',
++ 'bignum-dtoa.h',
++ 'bignum.cc',
++ 'bignum.h',
++ 'bit-vector.cc',
++ 'bit-vector.h',
++ 'bootstrapper.cc',
++ 'bootstrapper.h',
++ 'builtins.cc',
++ 'builtins.h',
++ 'cached-powers.cc',
++ 'cached-powers.h',
++ 'cancelable-task.cc',
++ 'cancelable-task.h',
++ 'char-predicates.cc',
++ 'char-predicates-inl.h',
++ 'char-predicates.h',
++ 'checks.h',
++ 'code-events.h',
++ 'code-factory.cc',
++ 'code-factory.h',
++ 'code-stub-assembler.cc',
++ 'code-stub-assembler.h',
++ 'code-stubs.cc',
++ 'code-stubs.h',
++ 'code-stubs-hydrogen.cc',
++ 'codegen.cc',
++ 'codegen.h',
++ 'collector.h',
++ 'compilation-cache.cc',
++ 'compilation-cache.h',
++ 'compilation-dependencies.cc',
++ 'compilation-dependencies.h',
++ 'compilation-statistics.cc',
++ 'compilation-statistics.h',
++ 'compiler/access-builder.cc',
++ 'compiler/access-builder.h',
++ 'compiler/access-info.cc',
++ 'compiler/access-info.h',
++ 'compiler/all-nodes.cc',
++ 'compiler/all-nodes.h',
++ 'compiler/ast-graph-builder.cc',
++ 'compiler/ast-graph-builder.h',
++ 'compiler/ast-loop-assignment-analyzer.cc',
++ 'compiler/ast-loop-assignment-analyzer.h',
++ 'compiler/basic-block-instrumentor.cc',
++ 'compiler/basic-block-instrumentor.h',
++ 'compiler/branch-elimination.cc',
++ 'compiler/branch-elimination.h',
++ 'compiler/bytecode-branch-analysis.cc',
++ 'compiler/bytecode-branch-analysis.h',
++ 'compiler/bytecode-graph-builder.cc',
++ 'compiler/bytecode-graph-builder.h',
++ 'compiler/c-linkage.cc',
++ 'compiler/checkpoint-elimination.cc',
++ 'compiler/checkpoint-elimination.h',
++ 'compiler/code-generator-impl.h',
++ 'compiler/code-generator.cc',
++ 'compiler/code-generator.h',
++ 'compiler/code-assembler.cc',
++ 'compiler/code-assembler.h',
++ 'compiler/common-node-cache.cc',
++ 'compiler/common-node-cache.h',
++ 'compiler/common-operator-reducer.cc',
++ 'compiler/common-operator-reducer.h',
++ 'compiler/common-operator.cc',
++ 'compiler/common-operator.h',
++ 'compiler/control-builders.cc',
++ 'compiler/control-builders.h',
++ 'compiler/control-equivalence.cc',
++ 'compiler/control-equivalence.h',
++ 'compiler/control-flow-optimizer.cc',
++ 'compiler/control-flow-optimizer.h',
++ 'compiler/dead-code-elimination.cc',
++ 'compiler/dead-code-elimination.h',
++ 'compiler/diamond.h',
++ 'compiler/effect-control-linearizer.cc',
++ 'compiler/effect-control-linearizer.h',
++ 'compiler/escape-analysis.cc',
++ 'compiler/escape-analysis.h',
++ "compiler/escape-analysis-reducer.cc",
++ "compiler/escape-analysis-reducer.h",
++ 'compiler/frame.cc',
++ 'compiler/frame.h',
++ 'compiler/frame-elider.cc',
++ 'compiler/frame-elider.h',
++ "compiler/frame-states.cc",
++ "compiler/frame-states.h",
++ 'compiler/gap-resolver.cc',
++ 'compiler/gap-resolver.h',
++ 'compiler/graph-reducer.cc',
++ 'compiler/graph-reducer.h',
++ 'compiler/graph-replay.cc',
++ 'compiler/graph-replay.h',
++ 'compiler/graph-trimmer.cc',
++ 'compiler/graph-trimmer.h',
++ 'compiler/graph-visualizer.cc',
++ 'compiler/graph-visualizer.h',
++ 'compiler/graph.cc',
++ 'compiler/graph.h',
++ 'compiler/instruction-codes.h',
++ 'compiler/instruction-selector-impl.h',
++ 'compiler/instruction-selector.cc',
++ 'compiler/instruction-selector.h',
++ 'compiler/instruction-scheduler.cc',
++ 'compiler/instruction-scheduler.h',
++ 'compiler/instruction.cc',
++ 'compiler/instruction.h',
++ 'compiler/int64-lowering.cc',
++ 'compiler/int64-lowering.h',
++ 'compiler/js-builtin-reducer.cc',
++ 'compiler/js-builtin-reducer.h',
++ 'compiler/js-call-reducer.cc',
++ 'compiler/js-call-reducer.h',
++ 'compiler/js-context-specialization.cc',
++ 'compiler/js-context-specialization.h',
++ 'compiler/js-create-lowering.cc',
++ 'compiler/js-create-lowering.h',
++ 'compiler/js-frame-specialization.cc',
++ 'compiler/js-frame-specialization.h',
++ 'compiler/js-generic-lowering.cc',
++ 'compiler/js-generic-lowering.h',
++ 'compiler/js-global-object-specialization.cc',
++ 'compiler/js-global-object-specialization.h',
++ 'compiler/js-graph.cc',
++ 'compiler/js-graph.h',
++ 'compiler/js-inlining.cc',
++ 'compiler/js-inlining.h',
++ 'compiler/js-inlining-heuristic.cc',
++ 'compiler/js-inlining-heuristic.h',
++ 'compiler/js-intrinsic-lowering.cc',
++ 'compiler/js-intrinsic-lowering.h',
++ 'compiler/js-native-context-specialization.cc',
++ 'compiler/js-native-context-specialization.h',
++ 'compiler/js-operator.cc',
++ 'compiler/js-operator.h',
++ 'compiler/js-typed-lowering.cc',
++ 'compiler/js-typed-lowering.h',
++ 'compiler/jump-threading.cc',
++ 'compiler/jump-threading.h',
++ 'compiler/linkage.cc',
++ 'compiler/linkage.h',
++ 'compiler/liveness-analyzer.cc',
++ 'compiler/liveness-analyzer.h',
++ 'compiler/live-range-separator.cc',
++ 'compiler/live-range-separator.h',
++ 'compiler/load-elimination.cc',
++ 'compiler/load-elimination.h',
++ 'compiler/loop-analysis.cc',
++ 'compiler/loop-analysis.h',
++ 'compiler/loop-peeling.cc',
++ 'compiler/loop-peeling.h',
++ 'compiler/machine-operator-reducer.cc',
++ 'compiler/machine-operator-reducer.h',
++ 'compiler/machine-operator.cc',
++ 'compiler/machine-operator.h',
++ 'compiler/memory-optimizer.cc',
++ 'compiler/memory-optimizer.h',
++ 'compiler/move-optimizer.cc',
++ 'compiler/move-optimizer.h',
++ 'compiler/node-aux-data.h',
++ 'compiler/node-cache.cc',
++ 'compiler/node-cache.h',
++ 'compiler/node-marker.cc',
++ 'compiler/node-marker.h',
++ 'compiler/node-matchers.cc',
++ 'compiler/node-matchers.h',
++ 'compiler/node-properties.cc',
++ 'compiler/node-properties.h',
++ 'compiler/node.cc',
++ 'compiler/node.h',
++ 'compiler/opcodes.cc',
++ 'compiler/opcodes.h',
++ 'compiler/operation-typer.cc',
++ 'compiler/operation-typer.h',
++ 'compiler/operator-properties.cc',
++ 'compiler/operator-properties.h',
++ 'compiler/operator.cc',
++ 'compiler/operator.h',
++ 'compiler/osr.cc',
++ 'compiler/osr.h',
++ 'compiler/pipeline.cc',
++ 'compiler/pipeline.h',
++ 'compiler/pipeline-statistics.cc',
++ 'compiler/pipeline-statistics.h',
++ 'compiler/raw-machine-assembler.cc',
++ 'compiler/raw-machine-assembler.h',
++ 'compiler/redundancy-elimination.cc',
++ 'compiler/redundancy-elimination.h',
++ 'compiler/register-allocator.cc',
++ 'compiler/register-allocator.h',
++ 'compiler/register-allocator-verifier.cc',
++ 'compiler/register-allocator-verifier.h',
++ 'compiler/representation-change.cc',
++ 'compiler/representation-change.h',
++ 'compiler/schedule.cc',
++ 'compiler/schedule.h',
++ 'compiler/scheduler.cc',
++ 'compiler/scheduler.h',
++ 'compiler/select-lowering.cc',
++ 'compiler/select-lowering.h',
++ 'compiler/simplified-lowering.cc',
++ 'compiler/simplified-lowering.h',
++ 'compiler/simplified-operator-reducer.cc',
++ 'compiler/simplified-operator-reducer.h',
++ 'compiler/simplified-operator.cc',
++ 'compiler/simplified-operator.h',
++ 'compiler/source-position.cc',
++ 'compiler/source-position.h',
++ 'compiler/state-values-utils.cc',
++ 'compiler/state-values-utils.h',
++ 'compiler/store-store-elimination.cc',
++ 'compiler/store-store-elimination.h',
++ 'compiler/tail-call-optimization.cc',
++ 'compiler/tail-call-optimization.h',
++ 'compiler/type-hint-analyzer.cc',
++ 'compiler/type-hint-analyzer.h',
++ 'compiler/type-hints.cc',
++ 'compiler/type-hints.h',
++ 'compiler/typer.cc',
++ 'compiler/typer.h',
++ 'compiler/value-numbering-reducer.cc',
++ 'compiler/value-numbering-reducer.h',
++ 'compiler/verifier.cc',
++ 'compiler/verifier.h',
++ 'compiler/wasm-compiler.cc',
++ 'compiler/wasm-compiler.h',
++ 'compiler/wasm-linkage.cc',
++ 'compiler/zone-pool.cc',
++ 'compiler/zone-pool.h',
++ 'compiler.cc',
++ 'compiler.h',
++ 'context-measure.cc',
++ 'context-measure.h',
++ 'contexts-inl.h',
++ 'contexts.cc',
++ 'contexts.h',
++ 'conversions-inl.h',
++ 'conversions.cc',
++ 'conversions.h',
++ 'counters-inl.h',
++ 'counters.cc',
++ 'counters.h',
++ 'crankshaft/compilation-phase.cc',
++ 'crankshaft/compilation-phase.h',
++ 'crankshaft/hydrogen-alias-analysis.h',
++ 'crankshaft/hydrogen-bce.cc',
++ 'crankshaft/hydrogen-bce.h',
++ 'crankshaft/hydrogen-canonicalize.cc',
++ 'crankshaft/hydrogen-canonicalize.h',
++ 'crankshaft/hydrogen-check-elimination.cc',
++ 'crankshaft/hydrogen-check-elimination.h',
++ 'crankshaft/hydrogen-dce.cc',
++ 'crankshaft/hydrogen-dce.h',
++ 'crankshaft/hydrogen-dehoist.cc',
++ 'crankshaft/hydrogen-dehoist.h',
++ 'crankshaft/hydrogen-environment-liveness.cc',
++ 'crankshaft/hydrogen-environment-liveness.h',
++ 'crankshaft/hydrogen-escape-analysis.cc',
++ 'crankshaft/hydrogen-escape-analysis.h',
++ 'crankshaft/hydrogen-flow-engine.h',
++ 'crankshaft/hydrogen-gvn.cc',
++ 'crankshaft/hydrogen-gvn.h',
++ 'crankshaft/hydrogen-infer-representation.cc',
++ 'crankshaft/hydrogen-infer-representation.h',
++ 'crankshaft/hydrogen-infer-types.cc',
++ 'crankshaft/hydrogen-infer-types.h',
++ 'crankshaft/hydrogen-instructions.cc',
++ 'crankshaft/hydrogen-instructions.h',
++ 'crankshaft/hydrogen-load-elimination.cc',
++ 'crankshaft/hydrogen-load-elimination.h',
++ 'crankshaft/hydrogen-mark-deoptimize.cc',
++ 'crankshaft/hydrogen-mark-deoptimize.h',
++ 'crankshaft/hydrogen-mark-unreachable.cc',
++ 'crankshaft/hydrogen-mark-unreachable.h',
++ 'crankshaft/hydrogen-osr.cc',
++ 'crankshaft/hydrogen-osr.h',
++ 'crankshaft/hydrogen-range-analysis.cc',
++ 'crankshaft/hydrogen-range-analysis.h',
++ 'crankshaft/hydrogen-redundant-phi.cc',
++ 'crankshaft/hydrogen-redundant-phi.h',
++ 'crankshaft/hydrogen-removable-simulates.cc',
++ 'crankshaft/hydrogen-removable-simulates.h',
++ 'crankshaft/hydrogen-representation-changes.cc',
++ 'crankshaft/hydrogen-representation-changes.h',
++ 'crankshaft/hydrogen-sce.cc',
++ 'crankshaft/hydrogen-sce.h',
++ 'crankshaft/hydrogen-store-elimination.cc',
++ 'crankshaft/hydrogen-store-elimination.h',
++ 'crankshaft/hydrogen-types.cc',
++ 'crankshaft/hydrogen-types.h',
++ 'crankshaft/hydrogen-uint32-analysis.cc',
++ 'crankshaft/hydrogen-uint32-analysis.h',
++ 'crankshaft/hydrogen.cc',
++ 'crankshaft/hydrogen.h',
++ 'crankshaft/lithium-allocator-inl.h',
++ 'crankshaft/lithium-allocator.cc',
++ 'crankshaft/lithium-allocator.h',
++ 'crankshaft/lithium-codegen.cc',
++ 'crankshaft/lithium-codegen.h',
++ 'crankshaft/lithium.cc',
++ 'crankshaft/lithium.h',
++ 'crankshaft/lithium-inl.h',
++ 'crankshaft/typing.cc',
++ 'crankshaft/typing.h',
++ 'crankshaft/unique.h',
++ 'date.cc',
++ 'date.h',
++ 'dateparser-inl.h',
++ 'dateparser.cc',
++ 'dateparser.h',
++ 'debug/debug-evaluate.cc',
++ 'debug/debug-evaluate.h',
++ 'debug/debug-frames.cc',
++ 'debug/debug-frames.h',
++ 'debug/debug-scopes.cc',
++ 'debug/debug-scopes.h',
++ 'debug/debug.cc',
++ 'debug/debug.h',
++ 'debug/liveedit.cc',
++ 'debug/liveedit.h',
++ 'deoptimizer.cc',
++ 'deoptimizer.h',
++ 'disasm.h',
++ 'disassembler.cc',
++ 'disassembler.h',
++ 'diy-fp.cc',
++ 'diy-fp.h',
++ 'double.h',
++ 'dtoa.cc',
++ 'dtoa.h',
++ 'effects.h',
++ 'eh-frame.cc',
++ 'eh-frame.h',
++ 'elements-kind.cc',
++ 'elements-kind.h',
++ 'elements.cc',
++ 'elements.h',
++ 'execution.cc',
++ 'execution.h',
++ 'extensions/externalize-string-extension.cc',
++ 'extensions/externalize-string-extension.h',
++ 'extensions/free-buffer-extension.cc',
++ 'extensions/free-buffer-extension.h',
++ 'extensions/gc-extension.cc',
++ 'extensions/gc-extension.h',
++ 'extensions/ignition-statistics-extension.cc',
++ 'extensions/ignition-statistics-extension.h',
++ 'extensions/statistics-extension.cc',
++ 'extensions/statistics-extension.h',
++ 'extensions/trigger-failure-extension.cc',
++ 'extensions/trigger-failure-extension.h',
++ 'external-reference-table.cc',
++ 'external-reference-table.h',
++ 'factory.cc',
++ 'factory.h',
++ 'fast-accessor-assembler.cc',
++ 'fast-accessor-assembler.h',
++ 'fast-dtoa.cc',
++ 'fast-dtoa.h',
++ 'field-index.h',
++ 'field-index-inl.h',
++ 'field-type.cc',
++ 'field-type.h',
++ 'fixed-dtoa.cc',
++ 'fixed-dtoa.h',
++ 'flag-definitions.h',
++ 'flags.cc',
++ 'flags.h',
++ 'frames-inl.h',
++ 'frames.cc',
++ 'frames.h',
++ 'full-codegen/full-codegen.cc',
++ 'full-codegen/full-codegen.h',
++ 'futex-emulation.cc',
++ 'futex-emulation.h',
++ 'gdb-jit.cc',
++ 'gdb-jit.h',
++ 'global-handles.cc',
++ 'global-handles.h',
++ 'globals.h',
++ 'handles-inl.h',
++ 'handles.cc',
++ 'handles.h',
++ 'heap-symbols.h',
++ 'heap/array-buffer-tracker-inl.h',
++ 'heap/array-buffer-tracker.cc',
++ 'heap/array-buffer-tracker.h',
++ 'heap/memory-reducer.cc',
++ 'heap/memory-reducer.h',
++ 'heap/gc-idle-time-handler.cc',
++ 'heap/gc-idle-time-handler.h',
++ 'heap/gc-tracer.cc',
++ 'heap/gc-tracer.h',
++ 'heap/heap-inl.h',
++ 'heap/heap.cc',
++ 'heap/heap.h',
++ 'heap/incremental-marking-inl.h',
++ 'heap/incremental-marking-job.cc',
++ 'heap/incremental-marking-job.h',
++ 'heap/incremental-marking.cc',
++ 'heap/incremental-marking.h',
++ 'heap/mark-compact-inl.h',
++ 'heap/mark-compact.cc',
++ 'heap/mark-compact.h',
++ 'heap/object-stats.cc',
++ 'heap/object-stats.h',
++ 'heap/objects-visiting-inl.h',
++ 'heap/objects-visiting.cc',
++ 'heap/objects-visiting.h',
++ 'heap/page-parallel-job.h',
++ 'heap/remembered-set.cc',
++ 'heap/remembered-set.h',
++ 'heap/scavenge-job.h',
++ 'heap/scavenge-job.cc',
++ 'heap/scavenger-inl.h',
++ 'heap/scavenger.cc',
++ 'heap/scavenger.h',
++ 'heap/slot-set.h',
++ 'heap/spaces-inl.h',
++ 'heap/spaces.cc',
++ 'heap/spaces.h',
++ 'heap/store-buffer.cc',
++ 'heap/store-buffer.h',
++ 'i18n.cc',
++ 'i18n.h',
++ 'icu_util.cc',
++ 'icu_util.h',
++ 'ic/access-compiler.cc',
++ 'ic/access-compiler.h',
++ 'ic/call-optimization.cc',
++ 'ic/call-optimization.h',
++ 'ic/handler-compiler.cc',
++ 'ic/handler-compiler.h',
++ 'ic/ic-inl.h',
++ 'ic/ic-state.cc',
++ 'ic/ic-state.h',
++ 'ic/ic.cc',
++ 'ic/ic.h',
++ 'ic/ic-compiler.cc',
++ 'ic/ic-compiler.h',
++ 'identity-map.cc',
++ 'identity-map.h',
++ 'interface-descriptors.cc',
++ 'interface-descriptors.h',
++ 'interpreter/bytecodes.cc',
++ 'interpreter/bytecodes.h',
++ 'interpreter/bytecode-array-builder.cc',
++ 'interpreter/bytecode-array-builder.h',
++ 'interpreter/bytecode-array-iterator.cc',
++ 'interpreter/bytecode-array-iterator.h',
++ 'interpreter/bytecode-array-writer.cc',
++ 'interpreter/bytecode-array-writer.h',
++ 'interpreter/bytecode-dead-code-optimizer.cc',
++ 'interpreter/bytecode-dead-code-optimizer.h',
++ 'interpreter/bytecode-label.h',
++ 'interpreter/bytecode-generator.cc',
++ 'interpreter/bytecode-generator.h',
++ 'interpreter/bytecode-peephole-optimizer.cc',
++ 'interpreter/bytecode-peephole-optimizer.h',
++ 'interpreter/bytecode-pipeline.cc',
++ 'interpreter/bytecode-pipeline.h',
++ 'interpreter/bytecode-register-allocator.cc',
++ 'interpreter/bytecode-register-allocator.h',
++ 'interpreter/bytecode-register-optimizer.cc',
++ 'interpreter/bytecode-register-optimizer.h',
++ 'interpreter/bytecode-traits.h',
++ 'interpreter/constant-array-builder.cc',
++ 'interpreter/constant-array-builder.h',
++ 'interpreter/control-flow-builders.cc',
++ 'interpreter/control-flow-builders.h',
++ 'interpreter/handler-table-builder.cc',
++ 'interpreter/handler-table-builder.h',
++ 'interpreter/interpreter.cc',
++ 'interpreter/interpreter.h',
++ 'interpreter/interpreter-assembler.cc',
++ 'interpreter/interpreter-assembler.h',
++ 'interpreter/interpreter-intrinsics.cc',
++ 'interpreter/interpreter-intrinsics.h',
++ 'interpreter/source-position-table.cc',
++ 'interpreter/source-position-table.h',
++ 'isolate-inl.h',
++ 'isolate.cc',
++ 'isolate.h',
++ 'json-parser.cc',
++ 'json-parser.h',
++ 'json-stringifier.cc',
++ 'json-stringifier.h',
++ 'keys.h',
++ 'keys.cc',
++ 'layout-descriptor-inl.h',
++ 'layout-descriptor.cc',
++ 'layout-descriptor.h',
++ 'list-inl.h',
++ 'list.h',
++ 'locked-queue-inl.h',
++ 'locked-queue.h',
++ 'log-inl.h',
++ 'log-utils.cc',
++ 'log-utils.h',
++ 'log.cc',
++ 'log.h',
++ 'lookup.cc',
++ 'lookup.h',
++ 'macro-assembler.h',
++ 'machine-type.cc',
++ 'machine-type.h',
++ 'messages.cc',
++ 'messages.h',
++ 'msan.h',
++ 'objects-body-descriptors-inl.h',
++ 'objects-body-descriptors.h',
++ 'objects-debug.cc',
++ 'objects-inl.h',
++ 'objects-printer.cc',
++ 'objects.cc',
++ 'objects.h',
++ 'optimizing-compile-dispatcher.cc',
++ 'optimizing-compile-dispatcher.h',
++ 'ostreams.cc',
++ 'ostreams.h',
++ 'parsing/expression-classifier.h',
++ 'parsing/func-name-inferrer.cc',
++ 'parsing/func-name-inferrer.h',
++ 'parsing/parameter-initializer-rewriter.cc',
++ 'parsing/parameter-initializer-rewriter.h',
++ 'parsing/parser-base.h',
++ 'parsing/parser.cc',
++ 'parsing/parser.h',
++ 'parsing/pattern-rewriter.cc',
++ 'parsing/preparse-data-format.h',
++ 'parsing/preparse-data.cc',
++ 'parsing/preparse-data.h',
++ 'parsing/preparser.cc',
++ 'parsing/preparser.h',
++ 'parsing/rewriter.cc',
++ 'parsing/rewriter.h',
++ 'parsing/scanner-character-streams.cc',
++ 'parsing/scanner-character-streams.h',
++ 'parsing/scanner.cc',
++ 'parsing/scanner.h',
++ 'parsing/token.cc',
++ 'parsing/token.h',
++ 'pending-compilation-error-handler.cc',
++ 'pending-compilation-error-handler.h',
++ 'perf-jit.cc',
++ 'perf-jit.h',
++ 'profiler/allocation-tracker.cc',
++ 'profiler/allocation-tracker.h',
++ 'profiler/circular-queue-inl.h',
++ 'profiler/circular-queue.h',
++ 'profiler/cpu-profiler-inl.h',
++ 'profiler/cpu-profiler.cc',
++ 'profiler/cpu-profiler.h',
++ 'profiler/heap-profiler.cc',
++ 'profiler/heap-profiler.h',
++ 'profiler/heap-snapshot-generator-inl.h',
++ 'profiler/heap-snapshot-generator.cc',
++ 'profiler/heap-snapshot-generator.h',
++ 'profiler/profiler-listener.cc',
++ 'profiler/profiler-listener.h',
++ 'profiler/profile-generator-inl.h',
++ 'profiler/profile-generator.cc',
++ 'profiler/profile-generator.h',
++ 'profiler/sampling-heap-profiler.cc',
++ 'profiler/sampling-heap-profiler.h',
++ 'profiler/strings-storage.cc',
++ 'profiler/strings-storage.h',
++ 'profiler/tick-sample.cc',
++ 'profiler/tick-sample.h',
++ 'profiler/unbound-queue-inl.h',
++ 'profiler/unbound-queue.h',
++ 'property-descriptor.cc',
++ 'property-descriptor.h',
++ 'property-details.h',
++ 'property.cc',
++ 'property.h',
++ 'prototype.h',
++ 'regexp/bytecodes-irregexp.h',
++ 'regexp/interpreter-irregexp.cc',
++ 'regexp/interpreter-irregexp.h',
++ 'regexp/jsregexp-inl.h',
++ 'regexp/jsregexp.cc',
++ 'regexp/jsregexp.h',
++ 'regexp/regexp-ast.cc',
++ 'regexp/regexp-ast.h',
++ 'regexp/regexp-macro-assembler-irregexp-inl.h',
++ 'regexp/regexp-macro-assembler-irregexp.cc',
++ 'regexp/regexp-macro-assembler-irregexp.h',
++ 'regexp/regexp-macro-assembler-tracer.cc',
++ 'regexp/regexp-macro-assembler-tracer.h',
++ 'regexp/regexp-macro-assembler.cc',
++ 'regexp/regexp-macro-assembler.h',
++ 'regexp/regexp-parser.cc',
++ 'regexp/regexp-parser.h',
++ 'regexp/regexp-stack.cc',
++ 'regexp/regexp-stack.h',
++ 'register-configuration.cc',
++ 'register-configuration.h',
++ 'runtime-profiler.cc',
++ 'runtime-profiler.h',
++ 'runtime/runtime-array.cc',
++ 'runtime/runtime-atomics.cc',
++ 'runtime/runtime-classes.cc',
++ 'runtime/runtime-collections.cc',
++ 'runtime/runtime-compiler.cc',
++ 'runtime/runtime-date.cc',
++ 'runtime/runtime-debug.cc',
++ 'runtime/runtime-forin.cc',
++ 'runtime/runtime-function.cc',
++ 'runtime/runtime-futex.cc',
++ 'runtime/runtime-generator.cc',
++ 'runtime/runtime-i18n.cc',
++ 'runtime/runtime-internal.cc',
++ 'runtime/runtime-interpreter.cc',
++ 'runtime/runtime-literals.cc',
++ 'runtime/runtime-liveedit.cc',
++ 'runtime/runtime-maths.cc',
++ 'runtime/runtime-numbers.cc',
++ 'runtime/runtime-object.cc',
++ 'runtime/runtime-operators.cc',
++ 'runtime/runtime-proxy.cc',
++ 'runtime/runtime-regexp.cc',
++ 'runtime/runtime-scopes.cc',
++ 'runtime/runtime-simd.cc',
++ 'runtime/runtime-strings.cc',
++ 'runtime/runtime-symbol.cc',
++ 'runtime/runtime-test.cc',
++ 'runtime/runtime-typedarray.cc',
++ 'runtime/runtime-utils.h',
++ 'runtime/runtime.cc',
++ 'runtime/runtime.h',
++ 'safepoint-table.cc',
++ 'safepoint-table.h',
++ 'signature.h',
++ 'simulator.h',
++ 'small-pointer-list.h',
++ 'snapshot/code-serializer.cc',
++ 'snapshot/code-serializer.h',
++ 'snapshot/deserializer.cc',
++ 'snapshot/deserializer.h',
++ 'snapshot/natives.h',
++ 'snapshot/natives-common.cc',
++ 'snapshot/partial-serializer.cc',
++ 'snapshot/partial-serializer.h',
++ 'snapshot/serializer.cc',
++ 'snapshot/serializer.h',
++ 'snapshot/serializer-common.cc',
++ 'snapshot/serializer-common.h',
++ 'snapshot/snapshot.h',
++ 'snapshot/snapshot-common.cc',
++ 'snapshot/snapshot-source-sink.cc',
++ 'snapshot/snapshot-source-sink.h',
++ 'snapshot/startup-serializer.cc',
++ 'snapshot/startup-serializer.h',
++ 'source-position.h',
++ 'splay-tree.h',
++ 'splay-tree-inl.h',
++ 'startup-data-util.cc',
++ 'startup-data-util.h',
++ 'string-builder.cc',
++ 'string-builder.h',
++ 'string-search.h',
++ 'string-stream.cc',
++ 'string-stream.h',
++ 'strtod.cc',
++ 'strtod.h',
++ 'ic/stub-cache.cc',
++ 'ic/stub-cache.h',
++ 'tracing/trace-event.cc',
++ 'tracing/trace-event.h',
++ 'transitions-inl.h',
++ 'transitions.cc',
++ 'transitions.h',
++ 'type-cache.cc',
++ 'type-cache.h',
++ 'type-feedback-vector-inl.h',
++ 'type-feedback-vector.cc',
++ 'type-feedback-vector.h',
++ 'type-info.cc',
++ 'type-info.h',
++ 'types.cc',
++ 'types.h',
++ 'typing-asm.cc',
++ 'typing-asm.h',
++ 'unicode-inl.h',
++ 'unicode.cc',
++ 'unicode.h',
++ 'unicode-cache-inl.h',
++ 'unicode-cache.h',
++ 'unicode-decoder.cc',
++ 'unicode-decoder.h',
++ 'uri.cc',
++ 'uri.h',
++ 'utils-inl.h',
++ 'utils.cc',
++ 'utils.h',
++ 'v8.cc',
++ 'v8.h',
++ 'v8memory.h',
++ 'v8threads.cc',
++ 'v8threads.h',
++ 'vector.h',
++ 'version.cc',
++ 'version.h',
++ 'vm-state-inl.h',
++ 'vm-state.h',
++ 'wasm/asm-types.cc',
++ 'wasm/asm-types.h',
++ 'wasm/asm-wasm-builder.cc',
++ 'wasm/asm-wasm-builder.h',
++ 'wasm/ast-decoder.cc',
++ 'wasm/ast-decoder.h',
++ 'wasm/decoder.h',
++ 'wasm/encoder.cc',
++ 'wasm/encoder.h',
++ 'wasm/leb-helper.h',
++ 'wasm/module-decoder.cc',
++ 'wasm/module-decoder.h',
++ 'wasm/switch-logic.h',
++ 'wasm/switch-logic.cc',
++ 'wasm/wasm-debug.cc',
++ 'wasm/wasm-debug.h',
++ 'wasm/wasm-external-refs.cc',
++ 'wasm/wasm-external-refs.h',
++ 'wasm/wasm-function-name-table.cc',
++ 'wasm/wasm-function-name-table.h',
++ 'wasm/wasm-js.cc',
++ 'wasm/wasm-js.h',
++ 'wasm/wasm-macro-gen.h',
++ 'wasm/wasm-module.cc',
++ 'wasm/wasm-module.h',
++ 'wasm/wasm-interpreter.cc',
++ 'wasm/wasm-interpreter.h',
++ 'wasm/wasm-opcodes.cc',
++ 'wasm/wasm-opcodes.h',
++ 'wasm/wasm-result.cc',
++ 'wasm/wasm-result.h',
++ 'zone.cc',
++ 'zone.h',
++ 'zone-allocator.h',
++ 'zone-containers.h',
++ ],
++ 'conditions': [
++ ['OS!="win" and remove_v8base_debug_symbols==1', {
++ 'cflags!': ['-g', '-gdwarf-4'],
++ }],
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ['v8_target_arch=="arm"', {
++ 'sources': [ ### gcmole(arch:arm) ###
++ 'arm/assembler-arm-inl.h',
++ 'arm/assembler-arm.cc',
++ 'arm/assembler-arm.h',
++ 'arm/builtins-arm.cc',
++ 'arm/code-stubs-arm.cc',
++ 'arm/code-stubs-arm.h',
++ 'arm/codegen-arm.cc',
++ 'arm/codegen-arm.h',
++ 'arm/constants-arm.h',
++ 'arm/constants-arm.cc',
++ 'arm/cpu-arm.cc',
++ 'arm/deoptimizer-arm.cc',
++ 'arm/disasm-arm.cc',
++ 'arm/frames-arm.cc',
++ 'arm/frames-arm.h',
++ 'arm/interface-descriptors-arm.cc',
++ 'arm/interface-descriptors-arm.h',
++ 'arm/macro-assembler-arm.cc',
++ 'arm/macro-assembler-arm.h',
++ 'arm/simulator-arm.cc',
++ 'arm/simulator-arm.h',
++ 'compiler/arm/code-generator-arm.cc',
++ 'compiler/arm/instruction-codes-arm.h',
++ 'compiler/arm/instruction-scheduler-arm.cc',
++ 'compiler/arm/instruction-selector-arm.cc',
++ 'crankshaft/arm/lithium-arm.cc',
++ 'crankshaft/arm/lithium-arm.h',
++ 'crankshaft/arm/lithium-codegen-arm.cc',
++ 'crankshaft/arm/lithium-codegen-arm.h',
++ 'crankshaft/arm/lithium-gap-resolver-arm.cc',
++ 'crankshaft/arm/lithium-gap-resolver-arm.h',
++ 'debug/arm/debug-arm.cc',
++ 'full-codegen/arm/full-codegen-arm.cc',
++ 'ic/arm/access-compiler-arm.cc',
++ 'ic/arm/handler-compiler-arm.cc',
++ 'ic/arm/ic-arm.cc',
++ 'ic/arm/ic-compiler-arm.cc',
++ 'ic/arm/stub-cache-arm.cc',
++ 'regexp/arm/regexp-macro-assembler-arm.cc',
++ 'regexp/arm/regexp-macro-assembler-arm.h',
++ ],
++ }],
++ ['v8_target_arch=="arm64"', {
++ 'sources': [ ### gcmole(arch:arm64) ###
++ 'arm64/assembler-arm64.cc',
++ 'arm64/assembler-arm64.h',
++ 'arm64/assembler-arm64-inl.h',
++ 'arm64/builtins-arm64.cc',
++ 'arm64/codegen-arm64.cc',
++ 'arm64/codegen-arm64.h',
++ 'arm64/code-stubs-arm64.cc',
++ 'arm64/code-stubs-arm64.h',
++ 'arm64/constants-arm64.h',
++ 'arm64/cpu-arm64.cc',
++ 'arm64/decoder-arm64.cc',
++ 'arm64/decoder-arm64.h',
++ 'arm64/decoder-arm64-inl.h',
++ 'arm64/deoptimizer-arm64.cc',
++ 'arm64/disasm-arm64.cc',
++ 'arm64/disasm-arm64.h',
++ 'arm64/frames-arm64.cc',
++ 'arm64/frames-arm64.h',
++ 'arm64/instructions-arm64.cc',
++ 'arm64/instructions-arm64.h',
++ 'arm64/instrument-arm64.cc',
++ 'arm64/instrument-arm64.h',
++ 'arm64/interface-descriptors-arm64.cc',
++ 'arm64/interface-descriptors-arm64.h',
++ 'arm64/macro-assembler-arm64.cc',
++ 'arm64/macro-assembler-arm64.h',
++ 'arm64/macro-assembler-arm64-inl.h',
++ 'arm64/simulator-arm64.cc',
++ 'arm64/simulator-arm64.h',
++ 'arm64/utils-arm64.cc',
++ 'arm64/utils-arm64.h',
++ 'compiler/arm64/code-generator-arm64.cc',
++ 'compiler/arm64/instruction-codes-arm64.h',
++ 'compiler/arm64/instruction-scheduler-arm64.cc',
++ 'compiler/arm64/instruction-selector-arm64.cc',
++ 'crankshaft/arm64/delayed-masm-arm64.cc',
++ 'crankshaft/arm64/delayed-masm-arm64.h',
++ 'crankshaft/arm64/delayed-masm-arm64-inl.h',
++ 'crankshaft/arm64/lithium-arm64.cc',
++ 'crankshaft/arm64/lithium-arm64.h',
++ 'crankshaft/arm64/lithium-codegen-arm64.cc',
++ 'crankshaft/arm64/lithium-codegen-arm64.h',
++ 'crankshaft/arm64/lithium-gap-resolver-arm64.cc',
++ 'crankshaft/arm64/lithium-gap-resolver-arm64.h',
++ 'debug/arm64/debug-arm64.cc',
++ 'full-codegen/arm64/full-codegen-arm64.cc',
++ 'ic/arm64/access-compiler-arm64.cc',
++ 'ic/arm64/handler-compiler-arm64.cc',
++ 'ic/arm64/ic-arm64.cc',
++ 'ic/arm64/ic-compiler-arm64.cc',
++ 'ic/arm64/stub-cache-arm64.cc',
++ 'regexp/arm64/regexp-macro-assembler-arm64.cc',
++ 'regexp/arm64/regexp-macro-assembler-arm64.h',
++ ],
++ }],
++ ['v8_target_arch=="ia32"', {
++ 'sources': [ ### gcmole(arch:ia32) ###
++ 'ia32/assembler-ia32-inl.h',
++ 'ia32/assembler-ia32.cc',
++ 'ia32/assembler-ia32.h',
++ 'ia32/builtins-ia32.cc',
++ 'ia32/code-stubs-ia32.cc',
++ 'ia32/code-stubs-ia32.h',
++ 'ia32/codegen-ia32.cc',
++ 'ia32/codegen-ia32.h',
++ 'ia32/cpu-ia32.cc',
++ 'ia32/deoptimizer-ia32.cc',
++ 'ia32/disasm-ia32.cc',
++ 'ia32/frames-ia32.cc',
++ 'ia32/frames-ia32.h',
++ 'ia32/interface-descriptors-ia32.cc',
++ 'ia32/macro-assembler-ia32.cc',
++ 'ia32/macro-assembler-ia32.h',
++ 'compiler/ia32/code-generator-ia32.cc',
++ 'compiler/ia32/instruction-codes-ia32.h',
++ 'compiler/ia32/instruction-scheduler-ia32.cc',
++ 'compiler/ia32/instruction-selector-ia32.cc',
++ 'crankshaft/ia32/lithium-codegen-ia32.cc',
++ 'crankshaft/ia32/lithium-codegen-ia32.h',
++ 'crankshaft/ia32/lithium-gap-resolver-ia32.cc',
++ 'crankshaft/ia32/lithium-gap-resolver-ia32.h',
++ 'crankshaft/ia32/lithium-ia32.cc',
++ 'crankshaft/ia32/lithium-ia32.h',
++ 'debug/ia32/debug-ia32.cc',
++ 'full-codegen/ia32/full-codegen-ia32.cc',
++ 'ic/ia32/access-compiler-ia32.cc',
++ 'ic/ia32/handler-compiler-ia32.cc',
++ 'ic/ia32/ic-ia32.cc',
++ 'ic/ia32/ic-compiler-ia32.cc',
++ 'ic/ia32/stub-cache-ia32.cc',
++ 'regexp/ia32/regexp-macro-assembler-ia32.cc',
++ 'regexp/ia32/regexp-macro-assembler-ia32.h',
++ ],
++ }],
++ ['v8_target_arch=="x87"', {
++ 'sources': [ ### gcmole(arch:x87) ###
++ 'x87/assembler-x87-inl.h',
++ 'x87/assembler-x87.cc',
++ 'x87/assembler-x87.h',
++ 'x87/builtins-x87.cc',
++ 'x87/code-stubs-x87.cc',
++ 'x87/code-stubs-x87.h',
++ 'x87/codegen-x87.cc',
++ 'x87/codegen-x87.h',
++ 'x87/cpu-x87.cc',
++ 'x87/deoptimizer-x87.cc',
++ 'x87/disasm-x87.cc',
++ 'x87/frames-x87.cc',
++ 'x87/frames-x87.h',
++ 'x87/interface-descriptors-x87.cc',
++ 'x87/macro-assembler-x87.cc',
++ 'x87/macro-assembler-x87.h',
++ 'compiler/x87/code-generator-x87.cc',
++ 'compiler/x87/instruction-codes-x87.h',
++ 'compiler/x87/instruction-scheduler-x87.cc',
++ 'compiler/x87/instruction-selector-x87.cc',
++ 'crankshaft/x87/lithium-codegen-x87.cc',
++ 'crankshaft/x87/lithium-codegen-x87.h',
++ 'crankshaft/x87/lithium-gap-resolver-x87.cc',
++ 'crankshaft/x87/lithium-gap-resolver-x87.h',
++ 'crankshaft/x87/lithium-x87.cc',
++ 'crankshaft/x87/lithium-x87.h',
++ 'debug/x87/debug-x87.cc',
++ 'full-codegen/x87/full-codegen-x87.cc',
++ 'ic/x87/access-compiler-x87.cc',
++ 'ic/x87/handler-compiler-x87.cc',
++ 'ic/x87/ic-x87.cc',
++ 'ic/x87/ic-compiler-x87.cc',
++ 'ic/x87/stub-cache-x87.cc',
++ 'regexp/x87/regexp-macro-assembler-x87.cc',
++ 'regexp/x87/regexp-macro-assembler-x87.h',
++ ],
++ }],
++ ['v8_target_arch=="mips" or v8_target_arch=="mipsel"', {
++ 'sources': [ ### gcmole(arch:mipsel) ###
++ 'mips/assembler-mips.cc',
++ 'mips/assembler-mips.h',
++ 'mips/assembler-mips-inl.h',
++ 'mips/builtins-mips.cc',
++ 'mips/codegen-mips.cc',
++ 'mips/codegen-mips.h',
++ 'mips/code-stubs-mips.cc',
++ 'mips/code-stubs-mips.h',
++ 'mips/constants-mips.cc',
++ 'mips/constants-mips.h',
++ 'mips/cpu-mips.cc',
++ 'mips/deoptimizer-mips.cc',
++ 'mips/disasm-mips.cc',
++ 'mips/frames-mips.cc',
++ 'mips/frames-mips.h',
++ 'mips/interface-descriptors-mips.cc',
++ 'mips/macro-assembler-mips.cc',
++ 'mips/macro-assembler-mips.h',
++ 'mips/simulator-mips.cc',
++ 'mips/simulator-mips.h',
++ 'compiler/mips/code-generator-mips.cc',
++ 'compiler/mips/instruction-codes-mips.h',
++ 'compiler/mips/instruction-scheduler-mips.cc',
++ 'compiler/mips/instruction-selector-mips.cc',
++ 'crankshaft/mips/lithium-codegen-mips.cc',
++ 'crankshaft/mips/lithium-codegen-mips.h',
++ 'crankshaft/mips/lithium-gap-resolver-mips.cc',
++ 'crankshaft/mips/lithium-gap-resolver-mips.h',
++ 'crankshaft/mips/lithium-mips.cc',
++ 'crankshaft/mips/lithium-mips.h',
++ 'full-codegen/mips/full-codegen-mips.cc',
++ 'debug/mips/debug-mips.cc',
++ 'ic/mips/access-compiler-mips.cc',
++ 'ic/mips/handler-compiler-mips.cc',
++ 'ic/mips/ic-mips.cc',
++ 'ic/mips/ic-compiler-mips.cc',
++ 'ic/mips/stub-cache-mips.cc',
++ 'regexp/mips/regexp-macro-assembler-mips.cc',
++ 'regexp/mips/regexp-macro-assembler-mips.h',
++ ],
++ }],
++ ['v8_target_arch=="mips64" or v8_target_arch=="mips64el"', {
++ 'sources': [ ### gcmole(arch:mips64el) ###
++ 'mips64/assembler-mips64.cc',
++ 'mips64/assembler-mips64.h',
++ 'mips64/assembler-mips64-inl.h',
++ 'mips64/builtins-mips64.cc',
++ 'mips64/codegen-mips64.cc',
++ 'mips64/codegen-mips64.h',
++ 'mips64/code-stubs-mips64.cc',
++ 'mips64/code-stubs-mips64.h',
++ 'mips64/constants-mips64.cc',
++ 'mips64/constants-mips64.h',
++ 'mips64/cpu-mips64.cc',
++ 'mips64/deoptimizer-mips64.cc',
++ 'mips64/disasm-mips64.cc',
++ 'mips64/frames-mips64.cc',
++ 'mips64/frames-mips64.h',
++ 'mips64/interface-descriptors-mips64.cc',
++ 'mips64/macro-assembler-mips64.cc',
++ 'mips64/macro-assembler-mips64.h',
++ 'mips64/simulator-mips64.cc',
++ 'mips64/simulator-mips64.h',
++ 'compiler/mips64/code-generator-mips64.cc',
++ 'compiler/mips64/instruction-codes-mips64.h',
++ 'compiler/mips64/instruction-scheduler-mips64.cc',
++ 'compiler/mips64/instruction-selector-mips64.cc',
++ 'crankshaft/mips64/lithium-codegen-mips64.cc',
++ 'crankshaft/mips64/lithium-codegen-mips64.h',
++ 'crankshaft/mips64/lithium-gap-resolver-mips64.cc',
++ 'crankshaft/mips64/lithium-gap-resolver-mips64.h',
++ 'crankshaft/mips64/lithium-mips64.cc',
++ 'crankshaft/mips64/lithium-mips64.h',
++ 'debug/mips64/debug-mips64.cc',
++ 'full-codegen/mips64/full-codegen-mips64.cc',
++ 'ic/mips64/access-compiler-mips64.cc',
++ 'ic/mips64/handler-compiler-mips64.cc',
++ 'ic/mips64/ic-mips64.cc',
++ 'ic/mips64/ic-compiler-mips64.cc',
++ 'ic/mips64/stub-cache-mips64.cc',
++ 'regexp/mips64/regexp-macro-assembler-mips64.cc',
++ 'regexp/mips64/regexp-macro-assembler-mips64.h',
++ ],
++ }],
++ ['v8_target_arch=="x64" or v8_target_arch=="x32"', {
++ 'sources': [ ### gcmole(arch:x64) ###
++ 'crankshaft/x64/lithium-codegen-x64.cc',
++ 'crankshaft/x64/lithium-codegen-x64.h',
++ 'crankshaft/x64/lithium-gap-resolver-x64.cc',
++ 'crankshaft/x64/lithium-gap-resolver-x64.h',
++ 'crankshaft/x64/lithium-x64.cc',
++ 'crankshaft/x64/lithium-x64.h',
++ 'x64/assembler-x64-inl.h',
++ 'x64/assembler-x64.cc',
++ 'x64/assembler-x64.h',
++ 'x64/builtins-x64.cc',
++ 'x64/code-stubs-x64.cc',
++ 'x64/code-stubs-x64.h',
++ 'x64/codegen-x64.cc',
++ 'x64/codegen-x64.h',
++ 'x64/cpu-x64.cc',
++ 'x64/deoptimizer-x64.cc',
++ 'x64/disasm-x64.cc',
++ 'x64/frames-x64.cc',
++ 'x64/frames-x64.h',
++ 'x64/interface-descriptors-x64.cc',
++ 'x64/macro-assembler-x64.cc',
++ 'x64/macro-assembler-x64.h',
++ 'debug/x64/debug-x64.cc',
++ 'full-codegen/x64/full-codegen-x64.cc',
++ 'ic/x64/access-compiler-x64.cc',
++ 'ic/x64/handler-compiler-x64.cc',
++ 'ic/x64/ic-x64.cc',
++ 'ic/x64/ic-compiler-x64.cc',
++ 'ic/x64/stub-cache-x64.cc',
++ 'regexp/x64/regexp-macro-assembler-x64.cc',
++ 'regexp/x64/regexp-macro-assembler-x64.h',
++ ],
++ }],
++ ['v8_target_arch=="x64"', {
++ 'sources': [
++ 'compiler/x64/code-generator-x64.cc',
++ 'compiler/x64/instruction-codes-x64.h',
++ 'compiler/x64/instruction-scheduler-x64.cc',
++ 'compiler/x64/instruction-selector-x64.cc',
++ ],
++ }],
++ ['v8_target_arch=="ppc" or v8_target_arch=="ppc64"', {
++ 'sources': [ ### gcmole(arch:ppc) ###
++ 'compiler/ppc/code-generator-ppc.cc',
++ 'compiler/ppc/instruction-codes-ppc.h',
++ 'compiler/ppc/instruction-scheduler-ppc.cc',
++ 'compiler/ppc/instruction-selector-ppc.cc',
++ 'crankshaft/ppc/lithium-ppc.cc',
++ 'crankshaft/ppc/lithium-ppc.h',
++ 'crankshaft/ppc/lithium-codegen-ppc.cc',
++ 'crankshaft/ppc/lithium-codegen-ppc.h',
++ 'crankshaft/ppc/lithium-gap-resolver-ppc.cc',
++ 'crankshaft/ppc/lithium-gap-resolver-ppc.h',
++ 'debug/ppc/debug-ppc.cc',
++ 'full-codegen/ppc/full-codegen-ppc.cc',
++ 'ic/ppc/access-compiler-ppc.cc',
++ 'ic/ppc/handler-compiler-ppc.cc',
++ 'ic/ppc/ic-ppc.cc',
++ 'ic/ppc/ic-compiler-ppc.cc',
++ 'ic/ppc/stub-cache-ppc.cc',
++ 'ppc/assembler-ppc-inl.h',
++ 'ppc/assembler-ppc.cc',
++ 'ppc/assembler-ppc.h',
++ 'ppc/builtins-ppc.cc',
++ 'ppc/code-stubs-ppc.cc',
++ 'ppc/code-stubs-ppc.h',
++ 'ppc/codegen-ppc.cc',
++ 'ppc/codegen-ppc.h',
++ 'ppc/constants-ppc.h',
++ 'ppc/constants-ppc.cc',
++ 'ppc/cpu-ppc.cc',
++ 'ppc/deoptimizer-ppc.cc',
++ 'ppc/disasm-ppc.cc',
++ 'ppc/frames-ppc.cc',
++ 'ppc/frames-ppc.h',
++ 'ppc/interface-descriptors-ppc.cc',
++ 'ppc/macro-assembler-ppc.cc',
++ 'ppc/macro-assembler-ppc.h',
++ 'ppc/simulator-ppc.cc',
++ 'ppc/simulator-ppc.h',
++ 'regexp/ppc/regexp-macro-assembler-ppc.cc',
++ 'regexp/ppc/regexp-macro-assembler-ppc.h',
++ ],
++ }],
++ ['v8_target_arch=="s390" or v8_target_arch=="s390x"', {
++ 'sources': [ ### gcmole(arch:s390) ###
++ 'compiler/s390/code-generator-s390.cc',
++ 'compiler/s390/instruction-codes-s390.h',
++ 'compiler/s390/instruction-scheduler-s390.cc',
++ 'compiler/s390/instruction-selector-s390.cc',
++ 'crankshaft/s390/lithium-codegen-s390.cc',
++ 'crankshaft/s390/lithium-codegen-s390.h',
++ 'crankshaft/s390/lithium-gap-resolver-s390.cc',
++ 'crankshaft/s390/lithium-gap-resolver-s390.h',
++ 'crankshaft/s390/lithium-s390.cc',
++ 'crankshaft/s390/lithium-s390.h',
++ 'debug/s390/debug-s390.cc',
++ 'full-codegen/s390/full-codegen-s390.cc',
++ 'ic/s390/access-compiler-s390.cc',
++ 'ic/s390/handler-compiler-s390.cc',
++ 'ic/s390/ic-compiler-s390.cc',
++ 'ic/s390/ic-s390.cc',
++ 'ic/s390/stub-cache-s390.cc',
++ 'regexp/s390/regexp-macro-assembler-s390.cc',
++ 'regexp/s390/regexp-macro-assembler-s390.h',
++ 's390/assembler-s390.cc',
++ 's390/assembler-s390.h',
++ 's390/assembler-s390-inl.h',
++ 's390/builtins-s390.cc',
++ 's390/codegen-s390.cc',
++ 's390/codegen-s390.h',
++ 's390/code-stubs-s390.cc',
++ 's390/code-stubs-s390.h',
++ 's390/constants-s390.cc',
++ 's390/constants-s390.h',
++ 's390/cpu-s390.cc',
++ 's390/deoptimizer-s390.cc',
++ 's390/disasm-s390.cc',
++ 's390/frames-s390.cc',
++ 's390/frames-s390.h',
++ 's390/interface-descriptors-s390.cc',
++ 's390/macro-assembler-s390.cc',
++ 's390/macro-assembler-s390.h',
++ 's390/simulator-s390.cc',
++ 's390/simulator-s390.h',
++ ],
++ }],
++ ['OS=="win"', {
++ 'variables': {
++ 'gyp_generators': '<!(echo $GYP_GENERATORS)',
++ },
++ 'msvs_disabled_warnings': [4351, 4355, 4800],
++ # When building Official, the .lib is too large and exceeds the 2G
++ # limit. This breaks it into multiple pieces to avoid the limit.
++ # See http://crbug.com/485155.
++ 'msvs_shard': 4,
++ }],
++ ['v8_component=="shared_library"', {
++ 'defines': [
++ 'BUILDING_V8_SHARED',
++ 'V8_SHARED',
++ ],
++ }],
++ ['v8_postmortem_support=="true"', {
++ 'sources': [
++ '<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
++ ]
++ }],
++ ['v8_enable_i18n_support==1', {
++ 'dependencies': [
++ '<(icu_gyp_path):icui18n',
++ '<(icu_gyp_path):icuuc',
++ ],
++ 'conditions': [
++ ['icu_use_data_file_flag==1', {
++ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE'],
++ }, { # else icu_use_data_file_flag !=1
++ 'conditions': [
++ ['OS=="win"', {
++ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_SHARED'],
++ }, {
++ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC'],
++ }],
++ ],
++ }],
++ ],
++ }, { # v8_enable_i18n_support==0
++ 'sources!': [
++ 'i18n.cc',
++ 'i18n.h',
++ ],
++ }],
++ ['OS=="win" and v8_enable_i18n_support==1', {
++ 'dependencies': [
++ '<(icu_gyp_path):icudata',
++ ],
++ }],
++ ],
++ },
++ {
++ 'target_name': 'v8_libbase_sse2',
++ 'type': 'static_library',
++ 'variables': {
++ 'optimize': 'max',
++ },
++ 'include_dirs+': [
++ '..',
++ ],
++ 'sources': [
++ 'base/accounting-allocator.cc',
++ 'base/accounting-allocator.h',
++ 'base/adapters.h',
++ 'base/atomic-utils.h',
++ 'base/atomicops.h',
++ 'base/atomicops_internals_arm64_gcc.h',
++ 'base/atomicops_internals_arm_gcc.h',
++ 'base/atomicops_internals_atomicword_compat.h',
++ 'base/atomicops_internals_mac.h',
++ 'base/atomicops_internals_mips_gcc.h',
++ 'base/atomicops_internals_mips64_gcc.h',
++ 'base/atomicops_internals_portable.h',
++ 'base/atomicops_internals_ppc_gcc.h',
++ 'base/atomicops_internals_s390_gcc.h',
++ 'base/atomicops_internals_tsan.h',
++ 'base/atomicops_internals_x86_gcc.cc',
++ 'base/atomicops_internals_x86_gcc.h',
++ 'base/atomicops_internals_x86_msvc.h',
++ 'base/bits.cc',
++ 'base/bits.h',
++ 'base/build_config.h',
++ 'base/compiler-specific.h',
++ 'base/cpu.cc',
++ 'base/cpu.h',
++ 'base/division-by-constant.cc',
++ 'base/division-by-constant.h',
++ 'base/file-utils.cc',
++ 'base/file-utils.h',
++ 'base/flags.h',
++ 'base/format-macros.h',
++ 'base/functional.cc',
++ 'base/functional.h',
++ 'base/hashmap.h',
++ 'base/ieee754.cc',
++ 'base/ieee754.h',
++ 'base/iterator.h',
++ 'base/lazy-instance.h',
++ 'base/logging.cc',
++ 'base/logging.h',
++ 'base/macros.h',
++ 'base/once.cc',
++ 'base/once.h',
++ 'base/platform/elapsed-timer.h',
++ 'base/platform/time.cc',
++ 'base/platform/time.h',
++ 'base/platform/condition-variable.cc',
++ 'base/platform/condition-variable.h',
++ 'base/platform/mutex.cc',
++ 'base/platform/mutex.h',
++ 'base/platform/platform.h',
++ 'base/platform/semaphore.cc',
++ 'base/platform/semaphore.h',
++ 'base/safe_conversions.h',
++ 'base/safe_conversions_impl.h',
++ 'base/safe_math.h',
++ 'base/safe_math_impl.h',
++ 'base/smart-pointers.h',
++ 'base/sys-info.cc',
++ 'base/sys-info.h',
++ 'base/utils/random-number-generator.cc',
++ 'base/utils/random-number-generator.h',
++ ],
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ['OS=="linux"', {
++ 'conditions': [
++ ['nacl_target_arch=="none"', {
++ 'link_settings': {
++ 'libraries': [
++ '-ldl',
++ '-lrt'
++ ],
++ },
++ }, {
++ 'defines': [
++ 'V8_LIBRT_NOT_AVAILABLE=1',
++ ],
++ }],
++ ],
++ 'sources': [
++ 'base/platform/platform-linux.cc',
++ 'base/platform/platform-posix.cc'
++ ],
++ }
++ ],
++ ['OS=="android"', {
++ 'sources': [
++ 'base/platform/platform-posix.cc'
++ ],
++ 'link_settings': {
++ 'target_conditions': [
++ ['_toolset=="host" and host_os!="mac"', {
++ # Only include libdl and librt on host builds because they
++ # are included by default on Android target builds, and we
++ # don't want to re-include them here since this will change
++ # library order and break (see crbug.com/469973).
++ # These libraries do not exist on Mac hosted builds.
++ 'libraries': [
++ '-ldl',
++ '-lrt'
++ ]
++ }]
++ ]
++ },
++ 'conditions': [
++ ['host_os=="mac"', {
++ 'target_conditions': [
++ ['_toolset=="host"', {
++ 'sources': [
++ 'base/platform/platform-macos.cc'
++ ]
++ }, {
++ 'sources': [
++ 'base/platform/platform-linux.cc'
++ ]
++ }],
++ ],
++ }, {
++ 'sources': [
++ 'base/platform/platform-linux.cc'
++ ]
++ }],
++ ],
++ },
++ ],
++ ['OS=="qnx"', {
++ 'link_settings': {
++ 'target_conditions': [
++ ['_toolset=="host" and host_os=="linux"', {
++ 'libraries': [
++ '-lrt'
++ ],
++ }],
++ ['_toolset=="target"', {
++ 'libraries': [
++ '-lbacktrace'
++ ],
++ }],
++ ],
++ },
++ 'sources': [
++ 'base/platform/platform-posix.cc',
++ 'base/qnx-math.h',
++ ],
++ 'target_conditions': [
++ ['_toolset=="host" and host_os=="linux"', {
++ 'sources': [
++ 'base/platform/platform-linux.cc'
++ ],
++ }],
++ ['_toolset=="host" and host_os=="mac"', {
++ 'sources': [
++ 'base/platform/platform-macos.cc'
++ ],
++ }],
++ ['_toolset=="target"', {
++ 'sources': [
++ 'base/platform/platform-qnx.cc'
++ ],
++ }],
++ ],
++ },
++ ],
++ ['OS=="freebsd"', {
++ 'link_settings': {
++ 'libraries': [
++ '-L/usr/local/lib -lexecinfo',
++ ]},
++ 'sources': [
++ 'base/platform/platform-freebsd.cc',
++ 'base/platform/platform-posix.cc'
++ ],
++ }
++ ],
++ ['OS=="openbsd"', {
++ 'link_settings': {
++ 'libraries': [
++ '-L/usr/local/lib -lexecinfo',
++ ]},
++ 'sources': [
++ 'base/platform/platform-openbsd.cc',
++ 'base/platform/platform-posix.cc'
++ ],
++ }
++ ],
++ ['OS=="netbsd"', {
++ 'link_settings': {
++ 'libraries': [
++ '-L/usr/pkg/lib -Wl,-R/usr/pkg/lib -lexecinfo',
++ ]},
++ 'sources': [
++ 'base/platform/platform-openbsd.cc',
++ 'base/platform/platform-posix.cc'
++ ],
++ }
++ ],
++ ['OS=="aix"', {
++ 'sources': [
++ 'base/platform/platform-aix.cc',
++ 'base/platform/platform-posix.cc'
++ ]},
++ ],
++ ['OS=="solaris"', {
++ 'link_settings': {
++ 'libraries': [
++ '-lnsl -lrt',
++ ]},
++ 'sources': [
++ 'base/platform/platform-solaris.cc',
++ 'base/platform/platform-posix.cc'
++ ],
++ }
++ ],
++ ['OS=="mac"', {
++ 'sources': [
++ 'base/platform/platform-macos.cc',
++ 'base/platform/platform-posix.cc'
++ ]},
++ ],
++ ['OS=="win"', {
++ 'defines': [
++ '_CRT_RAND_S' # for rand_s()
++ ],
++ 'variables': {
++ 'gyp_generators': '<!(echo $GYP_GENERATORS)',
++ },
++ 'conditions': [
++ ['gyp_generators=="make"', {
++ 'variables': {
++ 'build_env': '<!(uname -o)',
++ },
++ 'conditions': [
++ ['build_env=="Cygwin"', {
++ 'sources': [
++ 'base/platform/platform-cygwin.cc',
++ 'base/platform/platform-posix.cc'
++ ],
++ }, {
++ 'sources': [
++ 'base/platform/platform-win32.cc',
++ 'base/win32-headers.h',
++ ],
++ }],
++ ],
++ 'link_settings': {
++ 'libraries': [ '-lwinmm', '-lws2_32' ],
++ },
++ }, {
++ 'sources': [
++ 'base/platform/platform-win32.cc',
++ 'base/win32-headers.h',
++ ],
++ 'msvs_disabled_warnings': [4351, 4355, 4800],
++ 'link_settings': {
++ 'libraries': [ '-lwinmm.lib', '-lws2_32.lib' ],
++ },
++ }],
++ ],
++ }],
++ ],
++ },
++ {
++ 'target_name': 'v8_libplatform_sse2',
++ 'type': 'static_library',
++ 'variables': {
++ 'optimize': 'max',
++ },
++ 'dependencies': [
++ 'v8_libbase_sse2',
++ ],
++ 'include_dirs+': [
++ '..',
++ '../include',
++ ],
++ 'sources': [
++ '../include/libplatform/libplatform.h',
++ 'libplatform/default-platform.cc',
++ 'libplatform/default-platform.h',
++ 'libplatform/task-queue.cc',
++ 'libplatform/task-queue.h',
++ 'libplatform/worker-thread.cc',
++ 'libplatform/worker-thread.h',
++ ],
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ],
++ 'direct_dependent_settings': {
++ 'include_dirs': [
++ '../include',
++ ],
++ },
++ },
++ {
++ 'target_name': 'v8_libsampler_sse2',
++ 'type': 'static_library',
++ 'variables': {
++ 'optimize': 'max',
++ },
++ 'dependencies': [
++ 'v8_libbase_sse2',
++ ],
++ 'include_dirs+': [
++ '..',
++ '../include',
++ ],
++ 'sources': [
++ 'libsampler/v8-sampler.cc',
++ 'libsampler/v8-sampler.h'
++ ],
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ],
++ 'direct_dependent_settings': {
++ 'include_dirs': [
++ '../include',
++ ],
++ },
++ },
++ {
++ 'target_name': 'natives_blob_sse2',
++ 'type': 'none',
++ 'conditions': [
++ [ 'v8_use_external_startup_data==1', {
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'dependencies': ['js2c_sse2#host'],
++ }, {
++ 'dependencies': ['js2c_sse2'],
++ }],
++ ],
++ 'actions': [{
++ 'action_name': 'v8_sse2_concatenate_natives_blob',
++ 'inputs': [
++ '../tools/concatenate-files.py',
++ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.bin',
++ '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental_sse2.bin',
++ '<(SHARED_INTERMEDIATE_DIR)/libraries-extras_sse2.bin',
++ '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental-extras_sse2.bin',
++ ],
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'target_conditions': [
++ ['_toolset=="host"', {
++ 'outputs': [
++ '<(PRODUCT_DIR)/natives_blob_host_sse2.bin',
++ ],
++ 'action': [
++ 'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_host_sse2.bin'
++ ],
++ }, {
++ 'outputs': [
++ '<(PRODUCT_DIR)/natives_blob_sse2.bin',
++ ],
++ 'action': [
++ 'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_sse2.bin'
++ ],
++ }],
++ ],
++ }, {
++ 'outputs': [
++ '<(PRODUCT_DIR)/natives_blob_sse2.bin',
++ ],
++ 'action': [
++ 'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_sse2.bin'
++ ],
++ }],
++ ],
++ }],
++ }],
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host', 'target'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ]
++ },
++ {
++ 'target_name': 'js2c_sse2',
++ 'type': 'none',
++ 'conditions': [
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ],
++ 'variables': {
++ 'library_files': [
++ 'js/macros.py',
++ 'messages.h',
++ 'js/prologue.js',
++ 'js/runtime.js',
++ 'js/v8natives.js',
++ 'js/symbol.js',
++ 'js/array.js',
++ 'js/string.js',
++ 'js/math.js',
++ 'third_party/fdlibm/fdlibm.js',
++ 'js/regexp.js',
++ 'js/arraybuffer.js',
++ 'js/typedarray.js',
++ 'js/iterator-prototype.js',
++ 'js/collection.js',
++ 'js/weak-collection.js',
++ 'js/collection-iterator.js',
++ 'js/promise.js',
++ 'js/messages.js',
++ 'js/array-iterator.js',
++ 'js/string-iterator.js',
++ 'js/templates.js',
++ 'js/spread.js',
++ 'js/proxy.js',
++ 'debug/mirrors.js',
++ 'debug/debug.js',
++ 'debug/liveedit.js',
++ ],
++ 'experimental_library_files': [
++ 'js/macros.py',
++ 'messages.h',
++ 'js/harmony-atomics.js',
++ 'js/harmony-sharedarraybuffer.js',
++ 'js/harmony-simd.js',
++ 'js/harmony-string-padding.js',
++ 'js/promise-extra.js',
++ 'js/harmony-async-await.js'
++ ],
++ 'libraries_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.bin',
++ 'libraries_experimental_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental_sse2.bin',
++ 'libraries_extras_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-extras_sse2.bin',
++ 'libraries_experimental_extras_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental-extras_sse2.bin',
++ 'conditions': [
++ ['v8_enable_i18n_support==1', {
++ 'library_files': ['js/i18n.js'],
++ 'experimental_library_files': [
++ 'js/icu-case-mapping.js',
++ 'js/intl-extra.js',
++ ],
++ }],
++ ],
++ },
++ 'actions': [
++ {
++ 'action_name': 'v8_sse2_js2c',
++ 'inputs': [
++ '../tools/js2c.py',
++ '<@(library_files)',
++ ],
++ 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc'],
++ 'action': [
++ 'python',
++ '../tools/js2c.py',
++ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
++ 'CORE',
++ '<@(library_files)',
++ ],
++ },
++ {
++ 'action_name': 'v8_sse2_js2c_bin',
++ 'inputs': [
++ '../tools/js2c.py',
++ '<@(library_files)',
++ ],
++ 'outputs': ['<@(libraries_bin_file)'],
++ 'action': [
++ 'python',
++ '../tools/js2c.py',
++ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
++ 'CORE',
++ '<@(library_files)',
++ '--startup_blob', '<@(libraries_bin_file)',
++ '--nojs',
++ ],
++ },
++ {
++ 'action_name': 'v8_sse2_js2c_experimental',
++ 'inputs': [
++ '../tools/js2c.py',
++ '<@(experimental_library_files)',
++ ],
++ 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc'],
++ 'action': [
++ 'python',
++ '../tools/js2c.py',
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
++ 'EXPERIMENTAL',
++ '<@(experimental_library_files)',
++ ],
++ },
++ {
++ 'action_name': 'v8_sse2_js2c_experimental_bin',
++ 'inputs': [
++ '../tools/js2c.py',
++ '<@(experimental_library_files)',
++ ],
++ 'outputs': ['<@(libraries_experimental_bin_file)'],
++ 'action': [
++ 'python',
++ '../tools/js2c.py',
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
++ 'EXPERIMENTAL',
++ '<@(experimental_library_files)',
++ '--startup_blob', '<@(libraries_experimental_bin_file)',
++ '--nojs',
++ ],
++ },
++ {
++ 'action_name': 'v8_sse2_js2c_extras',
++ 'inputs': [
++ '../tools/js2c.py',
++ '<@(v8_extra_library_files)',
++ ],
++ 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc'],
++ 'action': [
++ 'python',
++ '../tools/js2c.py',
++ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
++ 'EXTRAS',
++ '<@(v8_extra_library_files)',
++ ],
++ },
++ {
++ 'action_name': 'v8_sse2_js2c_extras_bin',
++ 'inputs': [
++ '../tools/js2c.py',
++ '<@(v8_extra_library_files)',
++ ],
++ 'outputs': ['<@(libraries_extras_bin_file)'],
++ 'action': [
++ 'python',
++ '../tools/js2c.py',
++ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
++ 'EXTRAS',
++ '<@(v8_extra_library_files)',
++ '--startup_blob', '<@(libraries_extras_bin_file)',
++ '--nojs',
++ ],
++ },
++ {
++ 'action_name': 'v8_sse2_js2c_experimental_extras',
++ 'inputs': [
++ '../tools/js2c.py',
++ '<@(v8_experimental_extra_library_files)',
++ ],
++ 'outputs': [
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
++ ],
++ 'action': [
++ 'python',
++ '../tools/js2c.py',
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
++ 'EXPERIMENTAL_EXTRAS',
++ '<@(v8_experimental_extra_library_files)',
++ ],
++ },
++ {
++ 'action_name': 'v8_sse2_js2c_experimental_extras_bin',
++ 'inputs': [
++ '../tools/js2c.py',
++ '<@(v8_experimental_extra_library_files)',
++ ],
++ 'outputs': ['<@(libraries_experimental_extras_bin_file)'],
++ 'action': [
++ 'python',
++ '../tools/js2c.py',
++ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
++ 'EXPERIMENTAL_EXTRAS',
++ '<@(v8_experimental_extra_library_files)',
++ '--startup_blob', '<@(libraries_experimental_extras_bin_file)',
++ '--nojs',
++ ],
++ },
++ ],
++ },
++ {
++ 'target_name': 'postmortem-metadata_sse2',
++ 'type': 'none',
++ 'variables': {
++ 'heapobject_files': [
++ 'objects.h',
++ 'objects-inl.h',
++ ],
++ },
++ 'actions': [
++ {
++ 'action_name': 'v8_sse2_gen-postmortem-metadata',
++ 'inputs': [
++ '../tools/gen-postmortem-metadata.py',
++ '<@(heapobject_files)',
++ ],
++ 'outputs': [
++ '<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
++ ],
++ 'action': [
++ 'python',
++ '../tools/gen-postmortem-metadata.py',
++ '<@(_outputs)',
++ '<@(heapobject_files)'
++ ]
++ }
++ ]
++ },
++ {
++ 'target_name': 'mksnapshot_sse2',
++ 'type': 'executable',
++ 'dependencies': ['v8_base_sse2', 'v8_nosnapshot_sse2', 'v8_libplatform_sse2'],
++ 'include_dirs+': [
++ '..',
++ ],
++ 'sources': [
++ 'snapshot/mksnapshot.cc',
++ ],
++ 'conditions': [
++ ['v8_enable_i18n_support==1', {
++ 'dependencies': [
++ '<(icu_gyp_path):icui18n',
++ '<(icu_gyp_path):icuuc',
++ ]
++ }],
++ ['want_separate_host_toolset==1', {
++ 'toolsets': ['host'],
++ }, {
++ 'toolsets': ['target'],
++ }],
++ ],
++ },
++ ],
++}
+diff --git a/src/core/core_module.pro b/src/core/core_module.pro
+index 44e8ac613..7fe1a49e9 100644
+--- a/src/core/core_module.pro
++++ b/src/core/core_module.pro
+@@ -10,6 +10,29 @@ linking_pri = $$OUT_PWD/$$getConfigDir()/$${TARGET}.pri
+ error("Could not find the linking information that gn should have generated.")
+ }
+
++# find the shared libraries in the link line
++# remove those in lib/sse2 that are only replacements for the normal ones
++# collect all shared libraries so they can be installed
++for(private_lib, LIBS_PRIVATE) {
++ contains(private_lib, .*\.so) {
++ contains(private_lib, .*/lib/sse2/.*) {
++ LIBS_PRIVATE -= $$private_lib
++ shlibs_sse2 += $$private_lib
++ } else {
++ shlibs += $$private_lib
++ }
++ }
++}
++
++# set the shared libraries to be installed
++# add an rpath to their installation location
++shlib_install_path = $$[QT_INSTALL_LIBS]/qtwebengine
++!isEmpty(shlibs) {
++ shlibs.files += $$shlibs
++ shlibs_sse2.files += $$shlibs_sse2
++ LIBS_PRIVATE += -Wl,--rpath,$$shlib_install_path
++}
++
+ load(qt_module)
+
+ api_library_name = qtwebenginecoreapi$$qtPlatformTargetSuffix()
+@@ -100,7 +123,12 @@ icu.files = $$OUT_PWD/$$getConfigDir()/icudtl.dat
+ locales.path = $$[QT_INSTALL_TRANSLATIONS]/qtwebengine_locales
+ resources.CONFIG += no_check_exist
+ resources.path = $$[QT_INSTALL_DATA]/resources
+- INSTALLS += locales resources
++ # install the shared libraries
++ shlibs.CONFIG += no_check_exist
++ shlibs.path = $$shlib_install_path
++ shlibs_sse2.CONFIG += no_check_exist
++ shlibs_sse2.path = $$shlib_install_path/sse2
++ INSTALLS += locales resources shlibs shlibs_sse2
+
+ !use?(system_icu) {
+ icu.CONFIG += no_check_exist
+--
+2.13.0
+
diff --git a/0005-qtwebengine-opensource-src-5.9.-openmax-dl-neon.patch b/0005-qtwebengine-opensource-src-5.9.-openmax-dl-neon.patch
new file mode 100644
index 0000000..732be1a
--- /dev/null
+++ b/0005-qtwebengine-opensource-src-5.9.-openmax-dl-neon.patch
@@ -0,0 +1,113 @@
+From 8bad8aac82444a9e1feda3f1a8b214b81be8a8fc Mon Sep 17 00:00:00 2001
+From: Helio Chissini de Castro <helio(a)kde.org>
+Date: Wed, 31 May 2017 15:02:52 +0200
+Subject: [PATCH] qtwebengine-opensource-src-5.9.-openmax-dl-neon
+
+---
+ .../chromium/third_party/openmax_dl/dl/dl.gyp | 9 ----
+ .../third_party/openmax_dl/dl/sp/src/arm/detect.c | 56 ++++++++++++++++++----
+ 2 files changed, 48 insertions(+), 17 deletions(-)
+
+diff --git a/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp b/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp
+index 2b0826fe1..20b4b1f35 100644
+--- a/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp
++++ b/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp
+@@ -219,15 +219,6 @@
+ 'conditions': [
+ ['arm_neon_optional==1', {
+ # Run-time NEON detection.
+- 'dependencies': [
+- '../../../build/android/ndk.gyp:cpu_features',
+- ],
+- 'link_settings' : {
+- 'libraries': [
+- # To get the __android_log_print routine
+- '-llog',
+- ],
+- },
+ 'sources': [
+ # Detection routine
+ 'sp/src/arm/detect.c',
+diff --git a/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c b/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c
+index 57bfe4089..94a3f7ddc 100644
+--- a/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c
++++ b/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c
+@@ -9,13 +9,57 @@
+ *
+ */
+
+-#include <cpu-features.h>
+-
+-#include "android/log.h"
+ #include "dl/sp/api/omxSP.h"
+
++// For ArmCpuCaps()
++#include <stdio.h>
++#include <string.h>
++
++// based on libvpx arm_cpudetect.c
++static int ArmCpuCaps(const char* cpuinfo_name) {
++ char cpuinfo_line[512];
++ FILE* f = fopen(cpuinfo_name, "r");
++ if (!f) {
++ // Assume Neon if /proc/cpuinfo is unavailable.
++ // This will occur for Chrome sandbox for Pepper or Render process.
++ return 1;
++ }
++ while (fgets(cpuinfo_line, sizeof(cpuinfo_line) - 1, f)) {
++ if (memcmp(cpuinfo_line, "Features", 8) == 0) {
++ char* p = strstr(cpuinfo_line, " neon");
++ if (p && (p[5] == ' ' || p[5] == '\n')) {
++ fclose(f);
++ return 1;
++ }
++ // aarch64 uses asimd for Neon.
++ p = strstr(cpuinfo_line, " asimd");
++ if (p && (p[6] == ' ' || p[6] == '\n')) {
++ fclose(f);
++ return 1;
++ }
++ }
++ }
++ fclose(f);
++ return 0;
++}
++
+ int omxSP_HasArmNeon() {
+- return (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0;
++#if defined(__arm__) || defined(__aarch64__)
++// gcc -mfpu=neon defines __ARM_NEON__
++// __ARM_NEON__ generates code that requires Neon. NaCL also requires Neon.
++// For Linux, /proc/cpuinfo can be tested but without that assume Neon.
++#if defined(__ARM_NEON__) || defined(__native_client__) || !defined(__linux__)
++ return 1;
++// For aarch64(arm64), /proc/cpuinfo's feature is not complete, e.g. no neon
++// flag in it.
++// So for aarch64, neon enabling is hard coded here.
++#elif defined(__aarch64__)
++ return 1;
++#else
++ // Linux arm parse text file for neon detect.
++ return ArmCpuCaps("/proc/cpuinfo");
++#endif
++#endif // __arm__
+ }
+
+ static void SetFFTRoutines() {
+@@ -24,13 +68,9 @@ static void SetFFTRoutines() {
+ * forward and inverse FFTs
+ */
+ if (omxSP_HasArmNeon()) {
+- __android_log_print(ANDROID_LOG_INFO, "OpenMAX DL FFT",
+- "Using NEON FFT");
+ omxSP_FFTFwd_RToCCS_F32 = omxSP_FFTFwd_RToCCS_F32_Sfs;
+ omxSP_FFTInv_CCSToR_F32 = omxSP_FFTInv_CCSToR_F32_Sfs;
+ } else {
+- __android_log_print(ANDROID_LOG_INFO, "OpenMAX DL FFT",
+- "Using non-NEON FFT");
+ omxSP_FFTFwd_RToCCS_F32 = omxSP_FFTFwd_RToCCS_F32_Sfs_vfp;
+ omxSP_FFTInv_CCSToR_F32 = omxSP_FFTInv_CCSToR_F32_Sfs_vfp;
+ }
+--
+2.13.0
+
diff --git a/0006-qtwebengine-opensource-src-5.9.0-linux-pri.patch b/0006-qtwebengine-opensource-src-5.9.0-linux-pri.patch
new file mode 100644
index 0000000..92c12de
--- /dev/null
+++ b/0006-qtwebengine-opensource-src-5.9.0-linux-pri.patch
@@ -0,0 +1,33 @@
+From a7885b823a2d3fc853f532fb5ae3a43a3e9967c0 Mon Sep 17 00:00:00 2001
+From: Helio Chissini de Castro <helio(a)kde.org>
+Date: Wed, 31 May 2017 15:13:15 +0200
+Subject: [PATCH] qtwebengine-opensource-src-5.9.0-linux-pri
+
+---
+ src/core/config/linux.pri | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/src/core/config/linux.pri b/src/core/config/linux.pri
+index 24951cd07..c28e3b312 100644
+--- a/src/core/config/linux.pri
++++ b/src/core/config/linux.pri
+@@ -147,4 +147,16 @@ host_build {
+ use?(system_icu): gn_args += use_system_icu=true icu_use_data_file=false
+ use?(system_ffmpeg): gn_args += use_system_ffmpeg=true
+ #use?(system_protobuf): gn_args += use_system_protobuf=true
++
++ # some more system packages, that are not checked for for some reason
++ gn_args += use_system_re2=true
++
++ # yasm is only used on x86, and passing use_system_yasm makes the build fail on
++ # other architectures (e.g., ARM), so make it conditional on the architecture
++ contains(QT_ARCH, "x86_64")|contains(QT_ARCH, "i386") {
++ gn_args += use_system_yasm=true
++ }
++
++ #link libpci instead of dlopening it, our Qt packaging depends on it anyway
++ gn_args += linux_link_libpci=true
+ }
+--
+2.13.0
+
diff --git a/0007-qtwebengine-opensource-src-5.9.0-no-icudtl-dat.patch b/0007-qtwebengine-opensource-src-5.9.0-no-icudtl-dat.patch
new file mode 100644
index 0000000..bf97a76
--- /dev/null
+++ b/0007-qtwebengine-opensource-src-5.9.0-no-icudtl-dat.patch
@@ -0,0 +1,41 @@
+From 99294d646e58bcbedc5987a1816fed592290566f Mon Sep 17 00:00:00 2001
+From: Helio Chissini de Castro <helio(a)kde.org>
+Date: Wed, 31 May 2017 15:16:56 +0200
+Subject: [PATCH] qtwebengine-opensource-src-5.9.0-no-icudtl-dat
+
+---
+ src/core/web_engine_library_info.cpp | 17 -----------------
+ 1 file changed, 17 deletions(-)
+
+diff --git a/src/core/web_engine_library_info.cpp b/src/core/web_engine_library_info.cpp
+index f46f8f425..96cd48ac4 100644
+--- a/src/core/web_engine_library_info.cpp
++++ b/src/core/web_engine_library_info.cpp
+@@ -254,24 +254,7 @@ QString icuDataPath()
+ #if defined(OS_MACOSX) && defined(QT_MAC_FRAMEWORK_BUILD)
+ return getResourcesPath(frameworkBundle());
+ #else
+- static bool initialized = false;
+ static QString potentialResourcesPath = QLibraryInfo::location(QLibraryInfo::DataPath) % QLatin1String("/resources");
+- if (!initialized) {
+- initialized = true;
+- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/icudtl.dat"))) {
+- qWarning("Qt WebEngine ICU data not found at %s. Trying parent directory...", qPrintable(potentialResourcesPath));
+- potentialResourcesPath = QLibraryInfo::location(QLibraryInfo::DataPath);
+- }
+- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/icudtl.dat"))) {
+- qWarning("Qt WebEngine ICU data not found at %s. Trying application directory...", qPrintable(potentialResourcesPath));
+- potentialResourcesPath = QCoreApplication::applicationDirPath();
+- }
+- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/icudtl.dat"))) {
+- qWarning("Qt WebEngine ICU data not found at %s. Trying fallback directory... The application MAY NOT work.", qPrintable(potentialResourcesPath));
+- potentialResourcesPath = fallbackDir();
+- }
+- }
+-
+ return potentialResourcesPath;
+ #endif
+ }
+--
+2.13.0
+
diff --git a/qt5-qtwebengine.spec b/qt5-qtwebengine.spec
index 5ddbf65..b039a74 100644
--- a/qt5-qtwebengine.spec
+++ b/qt5-qtwebengine.spec
@@ -40,8 +40,8 @@
Summary: Qt5 - QtWebEngine components
Name: qt5-qtwebengine
-Version: 5.8.0
-Release: 14%{?dist}
+Version: 5.9.0
+Release: 1%{?dist}
# See LICENSE.GPL LICENSE.LGPL LGPL_EXCEPTION.txt, for details
# See also http://qt-project.org/doc/qt-5.0/qtdoc/licensing.html
@@ -51,68 +51,40 @@ URL: http://www.qt.io
# cleaned tarball with patent-encumbered codecs removed from the bundled FFmpeg
# wget http://download.qt.io/official_releases/qt/5.8/5.8.0/submodules/qtwebengi...
# ./clean_qtwebengine.sh 5.8.0
-Source0: qtwebengine-opensource-src-%{version}-clean.tar.xz
+Source0: https://download.qt.io/official_releases/qt/5.9/5.9.0/submodules/qtwebeng...
# cleanup scripts used above
Source1: clean_qtwebengine.sh
Source2: clean_ffmpeg.sh
Source3: get_free_ffmpeg_source_files.py
# macros
Source10: macros.qt5-qtwebengine
-# some tweaks to linux.pri (system libs, link libpci, run unbundling script)
-Patch0: qtwebengine-opensource-src-5.7.0-linux-pri.patch
-# quick hack to avoid checking for the nonexistent icudtl.dat and silence the
-# resulting warnings - not upstreamable as is because it removes the fallback
-# mechanism for the ICU data directory (which is not used in our builds because
-# we use the system ICU, which embeds the data statically) completely
-Patch1: qtwebengine-opensource-src-5.6.0-no-icudtl-dat.patch
-# fix extractCFlag to also look in QMAKE_CFLAGS_RELEASE, needed to detect the
-# ARM flags with our %%qmake_qt5 macro, including for the next patch
-Patch2: qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag.patch
-# disable NEON vector instructions on ARM where the NEON code FTBFS due to
-# GCC bug https://bugzilla.redhat.com/show_bug.cgi?id=1282495
-# otherwise, we use the arm-fpu-fix below instead (which this patch contains)
-Patch3: qtwebengine-opensource-src-5.7.1-no-neon.patch
+# webrtc: enable the CPU feature detection for ARM Linux also for Chromium
+Patch0: 0001-qtwebengine-opensource-src-5.9.0-webrtc-neon-detect.patch
# use the system NSPR prtime (based on Debian patch)
# We already depend on NSPR, so it is useless to copy these functions here.
# Debian uses this just fine, and I don't see relevant modifications either.
-Patch4: qtwebengine-opensource-src-5.8.0-system-nspr-prtime.patch
+Patch1: 0002-qtwebengine-opensource-src-5.9.0-system-nspr-prtime.patch
# use the system ICU UTF functions
# We already depend on ICU, so it is useless to copy these functions here.
# I checked the history of that directory, and other than the renames I am
# undoing, there were no modifications at all. Must be applied after Patch5.
-Patch5: qtwebengine-opensource-src-5.8.0-system-icu-utf.patch
+Patch2: 0003-qtwebengine-opensource-src-5.9.0-system-icu-utf.patch
# do not require SSE2 on i686
# cumulative revert of upstream reviews 187423002, 308003004, 511773002 (parts
# relevant to QtWebEngine only), 516543004, 1152053004 and 1161853008, along
# with some custom fixes and improvements
# also build V8 shared and twice on i686 (once for x87, once for SSE2)
# TODO: For 5.9, we will need the GN files updated (where not done yet), too.
-Patch6: qtwebengine-opensource-src-5.8.0-no-sse2.patch
-# fix ARM NEON handling in webrtc gyp files
-# Fix video_processing.gypi to only build NEON files when actually requested
-# (i.e., not if arm_neon=0 arm_neon_optional=0).
-Patch7: qtwebengine-opensource-src-5.7.0-webrtc-neon.patch
-# fix missing ARM -mfpu setting (see the comment in the no-neon patch above)
-Patch9: qtwebengine-opensource-src-5.7.1-arm-fpu-fix.patch
+Patch3: 0004-qtwebengine-opensource-src-5.9.0-no-sse2.patch
# remove Android dependencies from openmax_dl ARM NEON detection (detect.c)
-Patch10: qtwebengine-opensource-src-5.7.1-openmax-dl-neon.patch
-# chromium-skia: build SkUtilsArm.cpp also on non-Android ARM
-Patch11: qtwebengine-opensource-src-5.7.1-skia-neon.patch
-# webrtc: enable the CPU feature detection for ARM Linux also for Chromium
-Patch12: qtwebengine-opensource-src-5.8.0-webrtc-neon-detect.patch
-# fix FTBFS in V8 with GCC 7 (by Ben Noordhuis, backported from Chromium RPM)
-Patch13: qtwebengine-opensource-src-5.8.0-v8-gcc7.patch
-# fix FTBFS in PDFium with GCC 7: backport upstream cleanup removing that code
-# https://codereview.chromium.org/2154503002
-Patch14: qtwebengine-opensource-src-5.8.0-pdfium-gcc7.patch
-# fix FTBFS in the WTF part of Blink/WebKit with GCC 7
-Patch15: qtwebengine-opensource-src-5.8.0-wtf-gcc7.patch
-# FTBFS using qt < 5.8
-Patch20: qtwebengine-opensource-src-5.8.0-qt57.patch
-# upstream fix for blank pages when a link opens in a new tab
-Patch100: qtwebengine-opensource-src-5.8.0-fix-open-in-new-tab.patch
-# upstream fix for non-functional dead keys in text fields
-Patch101: qtwebengine-opensource-src-5.8.0-fix-dead-keys.patch
+Patch4: 0005-qtwebengine-opensource-src-5.9.-openmax-dl-neon.patch
+# some tweaks to linux.pri (system libs, link libpci, run unbundling script)
+Patch5: 0006-qtwebengine-opensource-src-5.9.0-linux-pri.patch
+# quick hack to avoid checking for the nonexistent icudtl.dat and silence the
+# resulting warnings - not upstreamable as is because it removes the fallback
+# mechanism for the ICU data directory (which is not used in our builds because
+# we use the system ICU, which embeds the data statically) completely
+Patch6: 0007-qtwebengine-opensource-src-5.9.0-no-icudtl-dat.patch
%if 0%{?fedora} && 0%{?fedora} < 25
# work around missing qt5_qtwebengine_arches macro on F24
@@ -340,28 +312,16 @@ BuildArch: noarch
%prep
-%setup -q -n %{qt_module}-opensource-src-%{version}%{?prerelease:-%{prerelease}}
-%patch0 -p1 -b .linux-pri
-%patch1 -p1 -b .no-icudtl-dat
-%patch2 -p1 -b .fix-extractcflag
+%setup -q -n %{qt_module}-opensource-src-%{version}
%if 0%{?arm_neon}
-%patch9 -p1 -b .arm-fpu-fix
-%else
-%patch3 -p1 -b .no-neon
+%patch0 -p1 -b .webrtc-neon-detect
%endif
-%patch4 -p1 -b .system-nspr-prtime
-%patch5 -p1 -b .system-icu-utf
-%patch6 -p1 -b .no-sse2
-%patch7 -p1 -b .webrtc-neon
-%patch10 -p1 -b .openmax-dl-neon
-%patch11 -p1 -b .skia-neon
-%patch12 -p1 -b .webrtc-neon-detect
-%patch13 -p1 -b .v8-gcc7
-%patch14 -p1 -b .pdfium-gcc7
-%patch15 -p1 -b .wtf-gcc7
-%patch20 -p1 -b .qt57
-%patch100 -p1 -b .fix-open-in-new-tab
-%patch101 -p1 -b .fix-dead-keys
+%patch1 -p1 -b .system-nspr-prtime
+%patch2 -p1 -b .system-icu-utf
+%patch3 -p1 -b .no-sse2
+%patch4 -p1 -b .openmax-dl-neon
+%patch5 -p1 -b .linux-pri
+%patch6 -p1 -b .no-icudtl
# fix // in #include in content/renderer/gpu to avoid debugedit failure
sed -i -e 's!gpu//!gpu/!g' \
src/3rdparty/chromium/content/renderer/gpu/compositor_forwarding_message_filter.cc
@@ -572,6 +532,9 @@ done
%changelog
+* Wed May 31 2017 Helio Chissini de Castro <helio(a)kde.org> - 5.9.0-1
+- Upstream official release
+
* Sat May 13 2017 Rex Dieter <rdieter(a)fedoraproject.org> - 5.8.0-14
- fix rpm macros
diff --git a/qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag.patch b/qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag.patch
deleted file mode 100644
index 8beae69..0000000
--- a/qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.6.0-beta/tools/qmake/mkspecs/features/functions.prf qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag/tools/qmake/mkspecs/features/functions.prf
---- qtwebengine-opensource-src-5.6.0-beta/tools/qmake/mkspecs/features/functions.prf 2015-12-14 16:27:24.000000000 +0100
-+++ qtwebengine-opensource-src-5.6.0-beta-fix-extractcflag/tools/qmake/mkspecs/features/functions.prf 2016-01-10 18:15:23.942032985 +0100
-@@ -87,7 +87,7 @@
- }
-
- defineReplace(extractCFlag) {
-- CFLAGS = $$QMAKE_CC $$QMAKE_CFLAGS
-+ CFLAGS = $$QMAKE_CC $$QMAKE_CFLAGS $$QMAKE_CFLAGS_RELEASE
- OPTION = $$find(CFLAGS, $$1)
- OPTION = $$split(OPTION, =)
- return ($$member(OPTION, 1))
diff --git a/qtwebengine-opensource-src-5.6.0-no-icudtl-dat.patch b/qtwebengine-opensource-src-5.6.0-no-icudtl-dat.patch
deleted file mode 100644
index 00cbfc2..0000000
--- a/qtwebengine-opensource-src-5.6.0-no-icudtl-dat.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.6.0/src/core/web_engine_library_info.cpp qtwebengine-opensource-src-5.6.0-no-icudtl-dat/src/core/web_engine_library_info.cpp
---- qtwebengine-opensource-src-5.6.0/src/core/web_engine_library_info.cpp 2016-03-03 17:02:28.000000000 +0100
-+++ qtwebengine-opensource-src-5.6.0-no-icudtl-dat/src/core/web_engine_library_info.cpp 2016-03-18 03:08:24.385444415 +0100
-@@ -207,24 +207,7 @@
- #if defined(OS_MACOSX) && defined(QT_MAC_FRAMEWORK_BUILD)
- return getResourcesPath(frameworkBundle());
- #else
-- static bool initialized = false;
- static QString potentialResourcesPath = QLibraryInfo::location(QLibraryInfo::DataPath) % QLatin1String("/resources");
-- if (!initialized) {
-- initialized = true;
-- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/icudtl.dat"))) {
-- qWarning("Qt WebEngine ICU data not found at %s. Trying parent directory...", qPrintable(potentialResourcesPath));
-- potentialResourcesPath = QLibraryInfo::location(QLibraryInfo::DataPath);
-- }
-- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/icudtl.dat"))) {
-- qWarning("Qt WebEngine ICU data not found at %s. Trying application directory...", qPrintable(potentialResourcesPath));
-- potentialResourcesPath = QCoreApplication::applicationDirPath();
-- }
-- if (!QFileInfo::exists(potentialResourcesPath % QLatin1String("/icudtl.dat"))) {
-- qWarning("Qt WebEngine ICU data not found at %s. Trying fallback directory... The application MAY NOT work.", qPrintable(potentialResourcesPath));
-- potentialResourcesPath = fallbackDir();
-- }
-- }
--
- return potentialResourcesPath;
- #endif
- }
diff --git a/qtwebengine-opensource-src-5.7.0-linux-pri.patch b/qtwebengine-opensource-src-5.7.0-linux-pri.patch
deleted file mode 100644
index 321a1d7..0000000
--- a/qtwebengine-opensource-src-5.7.0-linux-pri.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.7.0/src/core/config/linux.pri qtwebengine-opensource-src-5.7.0-linux-pri/src/core/config/linux.pri
---- qtwebengine-opensource-src-5.7.0/src/core/config/linux.pri 2016-06-07 06:20:06.000000000 +0200
-+++ qtwebengine-opensource-src-5.7.0-linux-pri/src/core/config/linux.pri 2016-07-17 22:18:17.312471202 +0200
-@@ -46,3 +46,22 @@
- use?(system_icu): GYP_CONFIG += use_system_icu=1 icu_use_data_file_flag=0
- use?(system_ffmpeg): GYP_CONFIG += use_system_ffmpeg=1
- use?(system_protobuf): GYP_CONFIG += use_system_protobuf=1
-+
-+# some more system packages, that are not checked for for some reason
-+GYP_CONFIG += use_system_re2=1
-+
-+# yasm is only used on x86, and passing use_system_yasm makes the build fail on
-+# other architectures (e.g., ARM), so make it conditional on the architecture
-+contains(QT_ARCH, "x86_64")|contains(QT_ARCH, "i386") {
-+ GYP_CONFIG += use_system_yasm=1
-+}
-+
-+# link libpci instead of dlopening it, our Qt packaging depends on it anyway
-+GYP_CONFIG += linux_link_libpci=1
-+
-+# run the unbundling script Chromium provides
-+CHROMIUM_SRC_DIR = "$$QTWEBENGINE_ROOT/$$getChromiumSrcDir()"
-+R_G_F_PY = "$$CHROMIUM_SRC_DIR/build/linux/unbundle/replace_gyp_files.py"
-+R_G_F_PY_ARGS = "-D use_system_re2=1"
-+log("Running python $$R_G_F_PY $$R_G_F_PY_ARGS$${EOL}")
-+!system("python $$R_G_F_PY $$R_G_F_PY_ARGS"): error("-- unbundling failed")
diff --git a/qtwebengine-opensource-src-5.7.1-openmax-dl-neon.patch b/qtwebengine-opensource-src-5.7.1-openmax-dl-neon.patch
deleted file mode 100644
index 08ff6e5..0000000
--- a/qtwebengine-opensource-src-5.7.1-openmax-dl-neon.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp qtwebengine-opensource-src-5.7.1-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp
---- qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp 2016-11-07 15:46:18.000000000 +0100
-+++ qtwebengine-opensource-src-5.7.1-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/dl.gyp 2016-12-03 22:50:19.369158276 +0100
-@@ -219,15 +219,6 @@
- 'conditions': [
- ['arm_neon_optional==1', {
- # Run-time NEON detection.
-- 'dependencies': [
-- '../../../build/android/ndk.gyp:cpu_features',
-- ],
-- 'link_settings' : {
-- 'libraries': [
-- # To get the __android_log_print routine
-- '-llog',
-- ],
-- },
- 'sources': [
- # Detection routine
- 'sp/src/arm/detect.c',
-diff -ur qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c qtwebengine-opensource-src-5.7.1-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c
---- qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c 2016-11-07 15:46:18.000000000 +0100
-+++ qtwebengine-opensource-src-5.7.1-openmax-dl-neon/src/3rdparty/chromium/third_party/openmax_dl/dl/sp/src/arm/detect.c 2016-12-03 22:48:13.745095083 +0100
-@@ -9,13 +9,57 @@
- *
- */
-
--#include <cpu-features.h>
--
--#include "android/log.h"
- #include "dl/sp/api/omxSP.h"
-
-+// For ArmCpuCaps()
-+#include <stdio.h>
-+#include <string.h>
-+
-+// based on libvpx arm_cpudetect.c
-+static int ArmCpuCaps(const char* cpuinfo_name) {
-+ char cpuinfo_line[512];
-+ FILE* f = fopen(cpuinfo_name, "r");
-+ if (!f) {
-+ // Assume Neon if /proc/cpuinfo is unavailable.
-+ // This will occur for Chrome sandbox for Pepper or Render process.
-+ return 1;
-+ }
-+ while (fgets(cpuinfo_line, sizeof(cpuinfo_line) - 1, f)) {
-+ if (memcmp(cpuinfo_line, "Features", 8) == 0) {
-+ char* p = strstr(cpuinfo_line, " neon");
-+ if (p && (p[5] == ' ' || p[5] == '\n')) {
-+ fclose(f);
-+ return 1;
-+ }
-+ // aarch64 uses asimd for Neon.
-+ p = strstr(cpuinfo_line, " asimd");
-+ if (p && (p[6] == ' ' || p[6] == '\n')) {
-+ fclose(f);
-+ return 1;
-+ }
-+ }
-+ }
-+ fclose(f);
-+ return 0;
-+}
-+
- int omxSP_HasArmNeon() {
-- return (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0;
-+#if defined(__arm__) || defined(__aarch64__)
-+// gcc -mfpu=neon defines __ARM_NEON__
-+// __ARM_NEON__ generates code that requires Neon. NaCL also requires Neon.
-+// For Linux, /proc/cpuinfo can be tested but without that assume Neon.
-+#if defined(__ARM_NEON__) || defined(__native_client__) || !defined(__linux__)
-+ return 1;
-+// For aarch64(arm64), /proc/cpuinfo's feature is not complete, e.g. no neon
-+// flag in it.
-+// So for aarch64, neon enabling is hard coded here.
-+#elif defined(__aarch64__)
-+ return 1;
-+#else
-+ // Linux arm parse text file for neon detect.
-+ return ArmCpuCaps("/proc/cpuinfo");
-+#endif
-+#endif // __arm__
- }
-
- static void SetFFTRoutines() {
-@@ -24,13 +68,9 @@
- * forward and inverse FFTs
- */
- if (omxSP_HasArmNeon()) {
-- __android_log_print(ANDROID_LOG_INFO, "OpenMAX DL FFT",
-- "Using NEON FFT");
- omxSP_FFTFwd_RToCCS_F32 = omxSP_FFTFwd_RToCCS_F32_Sfs;
- omxSP_FFTInv_CCSToR_F32 = omxSP_FFTInv_CCSToR_F32_Sfs;
- } else {
-- __android_log_print(ANDROID_LOG_INFO, "OpenMAX DL FFT",
-- "Using non-NEON FFT");
- omxSP_FFTFwd_RToCCS_F32 = omxSP_FFTFwd_RToCCS_F32_Sfs_vfp;
- omxSP_FFTInv_CCSToR_F32 = omxSP_FFTInv_CCSToR_F32_Sfs_vfp;
- }
diff --git a/qtwebengine-opensource-src-5.7.1-skia-neon.patch b/qtwebengine-opensource-src-5.7.1-skia-neon.patch
deleted file mode 100644
index c9b385b..0000000
--- a/qtwebengine-opensource-src-5.7.1-skia-neon.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/skia/skia_library.gypi qtwebengine-opensource-src-5.7.1-skia-neon/src/3rdparty/chromium/skia/skia_library.gypi
---- qtwebengine-opensource-src-5.7.1/src/3rdparty/chromium/skia/skia_library.gypi 2016-11-07 15:46:18.000000000 +0100
-+++ qtwebengine-opensource-src-5.7.1-skia-neon/src/3rdparty/chromium/skia/skia_library.gypi 2016-12-04 14:34:12.531877529 +0100
-@@ -159,6 +159,11 @@
- '../build/android/ndk.gyp:cpu_features',
- ],
- }],
-+ [ 'OS != "android" and target_arch == "arm"', {
-+ 'sources': [
-+ '../third_party/skia/src/core/SkUtilsArm.cpp',
-+ ],
-+ }],
- [ 'desktop_linux == 1 or chromeos == 1 or qt_os=="embedded_linux"', {
- 'dependencies': [
- '../build/linux/system.gyp:fontconfig',
diff --git a/qtwebengine-opensource-src-5.8.0-fix-dead-keys.patch b/qtwebengine-opensource-src-5.8.0-fix-dead-keys.patch
deleted file mode 100644
index a0cf81c..0000000
--- a/qtwebengine-opensource-src-5.8.0-fix-dead-keys.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 31374ba98829e984c7600419c0e5fa71b96fc530 Mon Sep 17 00:00:00 2001
-From: Peter Varga <pvarga(a)inf.u-szeged.hu>
-Date: Fri, 24 Mar 2017 14:31:02 +0100
-Subject: Forward input method events to RWHV in widget
-
-Task-number: QTBUG-58362
-Change-Id: Id4cf57c60da17538b224bb9bc91277c324c6a55d
-Reviewed-by: Viktor Engelmann <viktor.engelmann(a)qt.io>
-Reviewed-by: Allan Sandfeld Jensen <allan.jensen(a)qt.io>
----
- .../render_widget_host_view_qt_delegate_widget.cpp | 9 +++++++++
- 1 file changed, 9 insertions(+)
-
-diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
-index 14c4d72..fd58a07 100644
---- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
-+++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
-@@ -84,10 +84,19 @@ protected:
- {
- m_client->forwardEvent(event);
- }
-+ void inputMethodEvent(QInputMethodEvent *event) override
-+ {
-+ m_client->forwardEvent(event);
-+ }
- QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override
- {
- return m_client->updatePaintNode(oldNode);
- }
-+
-+ QVariant inputMethodQuery(Qt::InputMethodQuery query) const override
-+ {
-+ return m_client->inputMethodQuery(query);
-+ }
- private:
- RenderWidgetHostViewQtDelegateClient *m_client;
- };
---
-cgit v1.0-4-g1e03
-
diff --git a/qtwebengine-opensource-src-5.8.0-fix-open-in-new-tab.patch b/qtwebengine-opensource-src-5.8.0-fix-open-in-new-tab.patch
deleted file mode 100644
index c95a712..0000000
--- a/qtwebengine-opensource-src-5.8.0-fix-open-in-new-tab.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 8e147ed3be7740092de233a2a7c67ec890069649 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Michael=20Br=C3=BCning?= <michael.bruning(a)qt.io>
-Date: Mon, 13 Mar 2017 11:13:56 +0100
-Subject: Remove stale parent connection when initializing delegate as a child
-
-When clicking on a blank link target, the constructor of the
-RenderWidgetHostViewQtDelegateWidget instance for the newly created
-view is called with the originating QWebEngineView as its parent
-and will connect its removeParentBeforeParentDelete slot to the
-originating view's destroyed signal.
-
-This leads to the situation where the delegate's parent will be set to
-null when the originating view is closed, causing the view to display
-only an empty widget with the actual web contents remaining live in
-the background.
-
-This patch removes the connection to the old view when initializing
-the delegate as a child of the QWebEnginePagePrivate instance. The
-addition to the layout updates the parent and child relationship
-between the view and the delegate internally.
-
-Task-number: QTBUG-58381
-Change-Id: I448380478c2bcfcfbddaee8a35caf46010e57972
-Reviewed-by: Florian Bruhin <qt-project.org(a)the-compiler.org>
-Reviewed-by: Joerg Bornemann <joerg.bornemann(a)qt.io>
----
- src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
-index e7ad5b1..14c4d72 100644
---- a/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
-+++ b/src/webenginewidgets/render_widget_host_view_qt_delegate_widget.cpp
-@@ -163,6 +163,9 @@ void RenderWidgetHostViewQtDelegateWidget::initAsChild(WebContentsAdapterClient*
-
- QWebEnginePagePrivate *pagePrivate = static_cast<QWebEnginePagePrivate *>(container);
- if (pagePrivate->view) {
-+ if (parentWidget())
-+ disconnect(parentWidget(), &QObject::destroyed,
-+ this, &RenderWidgetHostViewQtDelegateWidget::removeParentBeforeParentDelete);
- pagePrivate->view->layout()->addWidget(this);
- pagePrivate->view->setFocusProxy(this);
- show();
---
-cgit v1.0-4-g1e03
-
diff --git a/qtwebengine-opensource-src-5.8.0-no-sse2.patch b/qtwebengine-opensource-src-5.8.0-no-sse2.patch
deleted file mode 100644
index ee15329..0000000
--- a/qtwebengine-opensource-src-5.8.0-no-sse2.patch
+++ /dev/null
@@ -1,5311 +0,0 @@
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/breakpad/src/build/common.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/breakpad/src/build/common.gypi
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/breakpad/src/build/common.gypi 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/breakpad/src/build/common.gypi 2017-03-05 17:26:14.507159420 +0100
-@@ -80,8 +80,8 @@
- # The system root for cross-compiles. Default: none.
- 'sysroot%': '',
-
-- # On Linux, we build with sse2 for Chromium builds.
-- 'disable_sse2%': 0,
-+ # Do not assume SSE2 by default (Fedora patch).
-+ 'disable_sse2%': 1
- },
-
- 'target_arch%': '<(target_arch)',
-@@ -725,17 +725,13 @@
- 'conditions': [
- ['disable_sse2==0', {
- 'cflags': [
-- '-march=pentium4',
- '-msse2',
- '-mfpmath=sse',
- ],
- }],
- ],
-- # -mmmx allows mmintrin.h to be used for mmx intrinsics.
-- # video playback is mmx and sse2 optimized.
- 'cflags': [
- '-m32',
-- '-mmmx',
- ],
- 'ldflags': [
- '-m32',
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/build/common.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/build/common.gypi
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/build/common.gypi 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/build/common.gypi 2017-03-05 17:26:14.612157862 +0100
-@@ -3861,15 +3861,7 @@
- # value used during computation does not change depending on
- # how the compiler optimized the code, since the value is
- # always kept in its specified precision.
-- #
-- # Refer to http://crbug.com/348761 for rationale behind SSE2
-- # being a minimum requirement for 32-bit Linux builds and
-- # http://crbug.com/313032 for an example where this has "bit"
-- # us in the past.
- 'cflags': [
-- '-msse2',
-- '-mfpmath=sse',
-- '-mmmx', # Allows mmintrin.h for MMX intrinsics.
- '-m32',
- ],
- 'ldflags': [
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/cc/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/cc/BUILD.gn
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/cc/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/cc/BUILD.gn 2017-03-05 17:38:41.416050535 +0100
-@@ -537,13 +537,6 @@
- "trees/tree_synchronizer.h",
- ]
-
-- if (current_cpu == "x86" || current_cpu == "x64") {
-- sources += [
-- "raster/texture_compressor_etc1_sse.cc",
-- "raster/texture_compressor_etc1_sse.h",
-- ]
-- }
--
- configs += [ "//build/config:precompiled_headers" ]
-
- public_deps = [
-@@ -553,6 +546,7 @@
- deps = [
- "//base",
- "//base/third_party/dynamic_annotations",
-+ "//cc:cc_opts",
- "//cc/proto",
- "//cc/surfaces:surface_id",
- "//gpu",
-@@ -581,6 +575,36 @@
- }
- }
-
-+source_set("cc_opts") {
-+ public_deps = [
-+ "//cc:cc_opts_sse",
-+ ]
-+}
-+
-+source_set("cc_opts_sse") {
-+ if (current_cpu == "x86" || current_cpu == "x64") {
-+ deps = [
-+ "//base",
-+ ]
-+
-+ defines = [ "CC_IMPLEMENTATION=1" ]
-+
-+ if (!is_debug && (is_win || is_android)) {
-+ configs -= [ "//build/config/compiler:optimize" ]
-+ configs += [ "//build/config/compiler:optimize_max" ]
-+ }
-+
-+ sources = [
-+ "raster/texture_compressor.h",
-+ "raster/texture_compressor_etc1.h",
-+ "raster/texture_compressor_etc1_sse.cc",
-+ "raster/texture_compressor_etc1_sse.h",
-+ ]
-+
-+ cflags = [ "-msse2" ]
-+ }
-+}
-+
- source_set("test_support") {
- testonly = true
- sources = [
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/cc/cc.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/cc/cc.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/cc/cc.gyp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/cc/cc.gyp 2017-03-05 17:26:26.081987615 +0100
-@@ -602,14 +602,6 @@
- 'includes': [
- '../build/android/increase_size_for_speed.gypi',
- ],
-- 'conditions': [
-- ['target_arch == "ia32" or target_arch == "x64"', {
-- 'sources': [
-- 'raster/texture_compressor_etc1_sse.cc',
-- 'raster/texture_compressor_etc1_sse.h',
-- ],
-- }],
-- ],
- },
- {
- # GN version: "//cc/proto"
-@@ -678,6 +670,7 @@
- '<(DEPTH)/ui/events/events.gyp:events_base',
- '<(DEPTH)/ui/gfx/gfx.gyp:gfx',
- '<(DEPTH)/ui/gfx/gfx.gyp:gfx_geometry',
-+ 'cc_opts',
- ],
- 'defines': [
- 'CC_SURFACES_IMPLEMENTATION=1',
-@@ -714,5 +707,41 @@
- '../build/android/increase_size_for_speed.gypi',
- ],
- },
-+ {
-+ 'target_name': 'cc_opts',
-+ 'type': 'static_library',
-+ 'conditions': [
-+ ['target_arch == "ia32" or target_arch == "x64"', {
-+ 'defines': [
-+ 'CC_IMPLEMENTATION=1',
-+ ],
-+ 'dependencies': [
-+ 'cc_opts_sse',
-+ ]
-+ }],
-+ ],
-+ },
-+ {
-+ 'target_name': 'cc_opts_sse',
-+ 'type': 'static_library',
-+ 'dependencies': [
-+ '<(DEPTH)/base/base.gyp:base',
-+ ],
-+ 'conditions': [
-+ ['target_arch == "ia32" or target_arch == "x64"', {
-+ 'defines': [
-+ 'CC_IMPLEMENTATION=1',
-+ ],
-+ 'sources': [
-+ # Conditional compilation for SSE2 code on x86 and x64 machines
-+ 'raster/texture_compressor_etc1_sse.cc',
-+ 'raster/texture_compressor_etc1_sse.h',
-+ ],
-+ 'cflags': [
-+ '-msse2',
-+ ],
-+ }],
-+ ],
-+ },
- ],
- }
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/BUILD.gn
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/BUILD.gn 2017-03-05 17:26:26.082987600 +0100
-@@ -312,13 +312,13 @@
- }
-
- if (current_cpu == "x86" || current_cpu == "x64") {
-- sources += [
-- "simd/convert_rgb_to_yuv_sse2.cc",
-- "simd/convert_rgb_to_yuv_ssse3.cc",
-- "simd/convert_yuv_to_rgb_x86.cc",
-- "simd/filter_yuv_sse2.cc",
-+ sources += [ "simd/convert_yuv_to_rgb_x86.cc" ]
-+ deps += [
-+ ":media_yasm",
-+ ":media_mmx",
-+ ":media_sse",
-+ ":media_sse2",
- ]
-- deps += [ ":media_yasm" ]
- }
-
- if (is_linux || is_win) {
-@@ -534,10 +534,47 @@
- }
-
- if (current_cpu == "x86" || current_cpu == "x64") {
-+ source_set("media_mmx") {
-+ sources = [ "simd/filter_yuv_mmx.cc" ]
-+ configs += [ "//media:media_config" ]
-+ if (!is_win) {
-+ cflags = [ "-mmmx" ]
-+ }
-+ }
-+
-+ source_set("media_sse") {
-+ sources = [
-+ "simd/sinc_resampler_sse.cc",
-+ ]
-+ configs += [
-+ "//media:media_config",
-+ "//media:media_implementation",
-+ ]
-+ if (!is_win) {
-+ cflags = [ "-msse" ]
-+ }
-+ }
-+
-+ source_set("media_sse2") {
-+ sources = [
-+ "simd/convert_rgb_to_yuv_sse2.cc",
-+ "simd/convert_rgb_to_yuv_ssse3.cc",
-+ "simd/filter_yuv_sse2.cc",
-+ ]
-+ configs += [
-+ "//media:media_config",
-+ "//media:media_implementation",
-+ ]
-+ if (!is_win) {
-+ cflags = [ "-msse2" ]
-+ }
-+ }
-+
- import("//third_party/yasm/yasm_assemble.gni")
- yasm_assemble("media_yasm") {
- sources = [
- "simd/convert_rgb_to_yuv_ssse3.asm",
-+ "simd/convert_yuv_to_rgb_mmx.asm",
- "simd/convert_yuv_to_rgb_sse.asm",
- "simd/convert_yuva_to_argb_mmx.asm",
- "simd/empty_register_state_mmx.asm",
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/media.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/media.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/media.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/media.cc 2017-03-05 17:44:02.063267153 +0100
-@@ -10,6 +10,8 @@
- #include "base/metrics/field_trial.h"
- #include "base/trace_event/trace_event.h"
- #include "media/base/media_switches.h"
-+#include "media/base/sinc_resampler.h"
-+#include "media/base/vector_math.h"
- #include "media/base/yuv_convert.h"
-
- #if defined(OS_ANDROID)
-@@ -40,6 +42,8 @@
- TRACE_EVENT_WARMUP_CATEGORY("media");
-
- // Perform initialization of libraries which require runtime CPU detection.
-+ vector_math::Initialize();
-+ SincResampler::InitializeCPUSpecificFeatures();
- InitializeCPUSpecificYUVConversions();
-
- #if !defined(MEDIA_DISABLE_FFMPEG)
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb.h 2017-03-05 17:26:26.083987585 +0100
-@@ -65,6 +65,17 @@
- int rgbstride,
- YUVType yuv_type);
-
-+MEDIA_EXPORT void ConvertYUVToRGB32_MMX(const uint8_t* yplane,
-+ const uint8_t* uplane,
-+ const uint8_t* vplane,
-+ uint8_t* rgbframe,
-+ int width,
-+ int height,
-+ int ystride,
-+ int uvstride,
-+ int rgbstride,
-+ YUVType yuv_type);
-+
- MEDIA_EXPORT void ConvertYUVAToARGB_MMX(const uint8_t* yplane,
- const uint8_t* uplane,
- const uint8_t* vplane,
-@@ -124,6 +135,13 @@
- ptrdiff_t width,
- const int16_t* convert_table);
-
-+MEDIA_EXPORT void ConvertYUVToRGB32Row_MMX(const uint8_t* yplane,
-+ const uint8_t* uplane,
-+ const uint8_t* vplane,
-+ uint8_t* rgbframe,
-+ ptrdiff_t width,
-+ const int16_t* convert_table);
-+
- MEDIA_EXPORT void ConvertYUVToRGB32Row_SSE(const uint8_t* yplane,
- const uint8_t* uplane,
- const uint8_t* vplane,
-@@ -131,6 +149,14 @@
- ptrdiff_t width,
- const int16_t* convert_table);
-
-+MEDIA_EXPORT void ScaleYUVToRGB32Row_MMX(const uint8_t* y_buf,
-+ const uint8_t* u_buf,
-+ const uint8_t* v_buf,
-+ uint8_t* rgb_buf,
-+ ptrdiff_t width,
-+ ptrdiff_t source_dx,
-+ const int16_t* convert_table);
-+
- MEDIA_EXPORT void ScaleYUVToRGB32Row_SSE(const uint8_t* y_buf,
- const uint8_t* u_buf,
- const uint8_t* v_buf,
-@@ -147,6 +173,14 @@
- ptrdiff_t source_dx,
- const int16_t* convert_table);
-
-+MEDIA_EXPORT void LinearScaleYUVToRGB32Row_MMX(const uint8_t* y_buf,
-+ const uint8_t* u_buf,
-+ const uint8_t* v_buf,
-+ uint8_t* rgb_buf,
-+ ptrdiff_t width,
-+ ptrdiff_t source_dx,
-+ const int16_t* convert_table);
-+
- MEDIA_EXPORT void LinearScaleYUVToRGB32Row_SSE(const uint8_t* y_buf,
- const uint8_t* u_buf,
- const uint8_t* v_buf,
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_mmx.asm 2017-03-05 17:26:26.167986340 +0100
-@@ -0,0 +1,23 @@
-+; Copyright (c) 2011 The Chromium Authors. All rights reserved.
-+; Use of this source code is governed by a BSD-style license that can be
-+; found in the LICENSE file.
-+
-+%include "third_party/x86inc/x86inc.asm"
-+
-+;
-+; This file uses MMX instructions.
-+;
-+ SECTION_TEXT
-+ CPU MMX
-+
-+; Use movq to save the output.
-+%define MOVQ movq
-+
-+; extern "C" void ConvertYUVToRGB32Row_MMX(const uint8* y_buf,
-+; const uint8* u_buf,
-+; const uint8* v_buf,
-+; uint8* rgb_buf,
-+; ptrdiff_t width,
-+; const int16* convert_table);
-+%define SYMBOL ConvertYUVToRGB32Row_MMX
-+%include "convert_yuv_to_rgb_mmx.inc"
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/convert_yuv_to_rgb_x86.cc 2017-03-05 17:26:26.167986340 +0100
-@@ -47,6 +47,34 @@
- EmptyRegisterState();
- }
-
-+void ConvertYUVToRGB32_MMX(const uint8_t* yplane,
-+ const uint8_t* uplane,
-+ const uint8_t* vplane,
-+ uint8_t* rgbframe,
-+ int width,
-+ int height,
-+ int ystride,
-+ int uvstride,
-+ int rgbstride,
-+ YUVType yuv_type) {
-+ unsigned int y_shift = GetVerticalShift(yuv_type);
-+ for (int y = 0; y < height; ++y) {
-+ uint8_t* rgb_row = rgbframe + y * rgbstride;
-+ const uint8_t* y_ptr = yplane + y * ystride;
-+ const uint8_t* u_ptr = uplane + (y >> y_shift) * uvstride;
-+ const uint8_t* v_ptr = vplane + (y >> y_shift) * uvstride;
-+
-+ ConvertYUVToRGB32Row_MMX(y_ptr,
-+ u_ptr,
-+ v_ptr,
-+ rgb_row,
-+ width,
-+ GetLookupTable(yuv_type));
-+ }
-+
-+ EmptyRegisterState();
-+}
-+
- void ConvertYUVToRGB32_SSE(const uint8_t* yplane,
- const uint8_t* uplane,
- const uint8_t* vplane,
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/filter_yuv.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/filter_yuv.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/filter_yuv.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/filter_yuv.h 2017-03-05 17:26:26.167986340 +0100
-@@ -20,6 +20,12 @@
- int source_width,
- uint8_t source_y_fraction);
-
-+MEDIA_EXPORT void FilterYUVRows_MMX(uint8_t* ybuf,
-+ const uint8_t* y0_ptr,
-+ const uint8_t* y1_ptr,
-+ int source_width,
-+ uint8_t source_y_fraction);
-+
- MEDIA_EXPORT void FilterYUVRows_SSE2(uint8_t* ybuf,
- const uint8_t* y0_ptr,
- const uint8_t* y1_ptr,
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/filter_yuv_mmx.cc 2017-03-05 17:26:26.167986340 +0100
-@@ -0,0 +1,79 @@
-+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style license that can be
-+// found in the LICENSE file.
-+
-+#if defined(_MSC_VER)
-+#include <intrin.h>
-+#else
-+#include <mmintrin.h>
-+#endif
-+
-+#include "build/build_config.h"
-+#include "media/base/simd/filter_yuv.h"
-+
-+namespace media {
-+
-+#if defined(COMPILER_MSVC)
-+// Warning 4799 is about calling emms before the function exits.
-+// We calls emms in a frame level so suppress this warning.
-+#pragma warning(push)
-+#pragma warning(disable: 4799)
-+#endif
-+
-+void FilterYUVRows_MMX(uint8_t* dest,
-+ const uint8_t* src0,
-+ const uint8_t* src1,
-+ int width,
-+ uint8_t fraction) {
-+ int pixel = 0;
-+
-+ // Process the unaligned bytes first.
-+ int unaligned_width =
-+ (8 - (reinterpret_cast<uintptr_t>(dest) & 7)) & 7;
-+ while (pixel < width && pixel < unaligned_width) {
-+ dest[pixel] = (src0[pixel] * (256 - fraction) +
-+ src1[pixel] * fraction) >> 8;
-+ ++pixel;
-+ }
-+
-+ __m64 zero = _mm_setzero_si64();
-+ __m64 src1_fraction = _mm_set1_pi16(fraction);
-+ __m64 src0_fraction = _mm_set1_pi16(256 - fraction);
-+ const __m64* src0_64 = reinterpret_cast<const __m64*>(src0 + pixel);
-+ const __m64* src1_64 = reinterpret_cast<const __m64*>(src1 + pixel);
-+ __m64* dest64 = reinterpret_cast<__m64*>(dest + pixel);
-+ __m64* end64 = reinterpret_cast<__m64*>(
-+ reinterpret_cast<uintptr_t>(dest + width) & ~7);
-+
-+ while (dest64 < end64) {
-+ __m64 src0 = *src0_64++;
-+ __m64 src1 = *src1_64++;
-+ __m64 src2 = _mm_unpackhi_pi8(src0, zero);
-+ __m64 src3 = _mm_unpackhi_pi8(src1, zero);
-+ src0 = _mm_unpacklo_pi8(src0, zero);
-+ src1 = _mm_unpacklo_pi8(src1, zero);
-+ src0 = _mm_mullo_pi16(src0, src0_fraction);
-+ src1 = _mm_mullo_pi16(src1, src1_fraction);
-+ src2 = _mm_mullo_pi16(src2, src0_fraction);
-+ src3 = _mm_mullo_pi16(src3, src1_fraction);
-+ src0 = _mm_add_pi16(src0, src1);
-+ src2 = _mm_add_pi16(src2, src3);
-+ src0 = _mm_srli_pi16(src0, 8);
-+ src2 = _mm_srli_pi16(src2, 8);
-+ src0 = _mm_packs_pu16(src0, src2);
-+ *dest64++ = src0;
-+ pixel += 8;
-+ }
-+
-+ while (pixel < width) {
-+ dest[pixel] = (src0[pixel] * (256 - fraction) +
-+ src1[pixel] * fraction) >> 8;
-+ ++pixel;
-+ }
-+}
-+
-+#if defined(COMPILER_MSVC)
-+#pragma warning(pop)
-+#endif
-+
-+} // namespace media
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/sinc_resampler_sse.cc 2017-03-05 17:26:26.168986325 +0100
-@@ -0,0 +1,50 @@
-+// Copyright 2013 The Chromium Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style license that can be
-+// found in the LICENSE file.
-+
-+#include "media/base/sinc_resampler.h"
-+
-+#include <xmmintrin.h>
-+
-+namespace media {
-+
-+float SincResampler::Convolve_SSE(const float* input_ptr, const float* k1,
-+ const float* k2,
-+ double kernel_interpolation_factor) {
-+ __m128 m_input;
-+ __m128 m_sums1 = _mm_setzero_ps();
-+ __m128 m_sums2 = _mm_setzero_ps();
-+
-+ // Based on |input_ptr| alignment, we need to use loadu or load. Unrolling
-+ // these loops hurt performance in local testing.
-+ if (reinterpret_cast<uintptr_t>(input_ptr) & 0x0F) {
-+ for (int i = 0; i < kKernelSize; i += 4) {
-+ m_input = _mm_loadu_ps(input_ptr + i);
-+ m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
-+ m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
-+ }
-+ } else {
-+ for (int i = 0; i < kKernelSize; i += 4) {
-+ m_input = _mm_load_ps(input_ptr + i);
-+ m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
-+ m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
-+ }
-+ }
-+
-+ // Linearly interpolate the two "convolutions".
-+ m_sums1 = _mm_mul_ps(m_sums1, _mm_set_ps1(
-+ static_cast<float>(1.0 - kernel_interpolation_factor)));
-+ m_sums2 = _mm_mul_ps(m_sums2, _mm_set_ps1(
-+ static_cast<float>(kernel_interpolation_factor)));
-+ m_sums1 = _mm_add_ps(m_sums1, m_sums2);
-+
-+ // Sum components together.
-+ float result;
-+ m_sums2 = _mm_add_ps(_mm_movehl_ps(m_sums1, m_sums1), m_sums1);
-+ _mm_store_ss(&result, _mm_add_ss(m_sums2, _mm_shuffle_ps(
-+ m_sums2, m_sums2, 1)));
-+
-+ return result;
-+}
-+
-+} // namespace media
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/simd/vector_math_sse.cc 2017-03-05 17:26:26.168986325 +0100
-@@ -0,0 +1,118 @@
-+// Copyright 2013 The Chromium Authors. All rights reserved.
-+// Use of this source code is governed by a BSD-style license that can be
-+// found in the LICENSE file.
-+
-+#include "media/base/vector_math_testing.h"
-+
-+#include <algorithm>
-+
-+#include <xmmintrin.h> // NOLINT
-+
-+namespace media {
-+namespace vector_math {
-+
-+void FMUL_SSE(const float src[], float scale, int len, float dest[]) {
-+ const int rem = len % 4;
-+ const int last_index = len - rem;
-+ __m128 m_scale = _mm_set_ps1(scale);
-+ for (int i = 0; i < last_index; i += 4)
-+ _mm_store_ps(dest + i, _mm_mul_ps(_mm_load_ps(src + i), m_scale));
-+
-+ // Handle any remaining values that wouldn't fit in an SSE pass.
-+ for (int i = last_index; i < len; ++i)
-+ dest[i] = src[i] * scale;
-+}
-+
-+void FMAC_SSE(const float src[], float scale, int len, float dest[]) {
-+ const int rem = len % 4;
-+ const int last_index = len - rem;
-+ __m128 m_scale = _mm_set_ps1(scale);
-+ for (int i = 0; i < last_index; i += 4) {
-+ _mm_store_ps(dest + i, _mm_add_ps(_mm_load_ps(dest + i),
-+ _mm_mul_ps(_mm_load_ps(src + i), m_scale)));
-+ }
-+
-+ // Handle any remaining values that wouldn't fit in an SSE pass.
-+ for (int i = last_index; i < len; ++i)
-+ dest[i] += src[i] * scale;
-+}
-+
-+// Convenience macro to extract float 0 through 3 from the vector |a|. This is
-+// needed because compilers other than clang don't support access via
-+// operator[]().
-+#define EXTRACT_FLOAT(a, i) \
-+ (i == 0 ? \
-+ _mm_cvtss_f32(a) : \
-+ _mm_cvtss_f32(_mm_shuffle_ps(a, a, i)))
-+
-+std::pair<float, float> EWMAAndMaxPower_SSE(
-+ float initial_value, const float src[], int len, float smoothing_factor) {
-+ // When the recurrence is unrolled, we see that we can split it into 4
-+ // separate lanes of evaluation:
-+ //
-+ // y[n] = a(S[n]^2) + (1-a)(y[n-1])
-+ // = a(S[n]^2) + (1-a)^1(aS[n-1]^2) + (1-a)^2(aS[n-2]^2) + ...
-+ // = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
-+ //
-+ // where z[n] = a(S[n]^2) + (1-a)^4(z[n-4]) + (1-a)^8(z[n-8]) + ...
-+ //
-+ // Thus, the strategy here is to compute z[n], z[n-1], z[n-2], and z[n-3] in
-+ // each of the 4 lanes, and then combine them to give y[n].
-+
-+ const int rem = len % 4;
-+ const int last_index = len - rem;
-+
-+ const __m128 smoothing_factor_x4 = _mm_set_ps1(smoothing_factor);
-+ const float weight_prev = 1.0f - smoothing_factor;
-+ const __m128 weight_prev_x4 = _mm_set_ps1(weight_prev);
-+ const __m128 weight_prev_squared_x4 =
-+ _mm_mul_ps(weight_prev_x4, weight_prev_x4);
-+ const __m128 weight_prev_4th_x4 =
-+ _mm_mul_ps(weight_prev_squared_x4, weight_prev_squared_x4);
-+
-+ // Compute z[n], z[n-1], z[n-2], and z[n-3] in parallel in lanes 3, 2, 1 and
-+ // 0, respectively.
-+ __m128 max_x4 = _mm_setzero_ps();
-+ __m128 ewma_x4 = _mm_setr_ps(0.0f, 0.0f, 0.0f, initial_value);
-+ int i;
-+ for (i = 0; i < last_index; i += 4) {
-+ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_4th_x4);
-+ const __m128 sample_x4 = _mm_load_ps(src + i);
-+ const __m128 sample_squared_x4 = _mm_mul_ps(sample_x4, sample_x4);
-+ max_x4 = _mm_max_ps(max_x4, sample_squared_x4);
-+ // Note: The compiler optimizes this to a single multiply-and-accumulate
-+ // instruction:
-+ ewma_x4 = _mm_add_ps(ewma_x4,
-+ _mm_mul_ps(sample_squared_x4, smoothing_factor_x4));
-+ }
-+
-+ // y[n] = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
-+ float ewma = EXTRACT_FLOAT(ewma_x4, 3);
-+ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
-+ ewma += EXTRACT_FLOAT(ewma_x4, 2);
-+ ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
-+ ewma += EXTRACT_FLOAT(ewma_x4, 1);
-+ ewma_x4 = _mm_mul_ss(ewma_x4, weight_prev_x4);
-+ ewma += EXTRACT_FLOAT(ewma_x4, 0);
-+
-+ // Fold the maximums together to get the overall maximum.
-+ max_x4 = _mm_max_ps(max_x4,
-+ _mm_shuffle_ps(max_x4, max_x4, _MM_SHUFFLE(3, 3, 1, 1)));
-+ max_x4 = _mm_max_ss(max_x4, _mm_shuffle_ps(max_x4, max_x4, 2));
-+
-+ std::pair<float, float> result(ewma, EXTRACT_FLOAT(max_x4, 0));
-+
-+ // Handle remaining values at the end of |src|.
-+ for (; i < len; ++i) {
-+ result.first *= weight_prev;
-+ const float sample = src[i];
-+ const float sample_squared = sample * sample;
-+ result.first += sample_squared * smoothing_factor;
-+ result.second = std::max(result.second, sample_squared);
-+ }
-+
-+ return result;
-+}
-+
-+} // namespace vector_math
-+} // namespace media
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler.cc 2017-03-05 17:26:26.168986325 +0100
-@@ -81,17 +81,12 @@
- #include <cmath>
- #include <limits>
-
-+#include "base/cpu.h"
- #include "base/logging.h"
- #include "build/build_config.h"
-
--#if defined(ARCH_CPU_X86_FAMILY)
--#include <xmmintrin.h>
--#define CONVOLVE_FUNC Convolve_SSE
--#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
-+#if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
- #include <arm_neon.h>
--#define CONVOLVE_FUNC Convolve_NEON
--#else
--#define CONVOLVE_FUNC Convolve_C
- #endif
-
- namespace media {
-@@ -112,10 +107,41 @@
- return sinc_scale_factor;
- }
-
-+#undef CONVOLVE_FUNC
-+
- static int CalculateChunkSize(int block_size_, double io_ratio) {
- return block_size_ / io_ratio;
- }
-
-+// If we know the minimum architecture at compile time, avoid CPU detection.
-+// Force NaCl code to use C routines since (at present) nothing there uses these
-+// methods and plumbing the -msse built library is non-trivial.
-+#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
-+#if defined(__SSE__)
-+#define CONVOLVE_FUNC Convolve_SSE
-+void SincResampler::InitializeCPUSpecificFeatures() {}
-+#else
-+// X86 CPU detection required. Functions will be set by
-+// InitializeCPUSpecificFeatures().
-+#define CONVOLVE_FUNC g_convolve_proc_
-+
-+typedef float (*ConvolveProc)(const float*, const float*, const float*, double);
-+static ConvolveProc g_convolve_proc_ = NULL;
-+
-+void SincResampler::InitializeCPUSpecificFeatures() {
-+ CHECK(!g_convolve_proc_);
-+ g_convolve_proc_ = base::CPU().has_sse() ? Convolve_SSE : Convolve_C;
-+}
-+#endif
-+#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
-+#define CONVOLVE_FUNC Convolve_NEON
-+void SincResampler::InitializeCPUSpecificFeatures() {}
-+#else
-+// Unknown architecture.
-+#define CONVOLVE_FUNC Convolve_C
-+void SincResampler::InitializeCPUSpecificFeatures() {}
-+#endif
-+
- SincResampler::SincResampler(double io_sample_rate_ratio,
- int request_frames,
- const ReadCB& read_cb)
-@@ -343,46 +369,7 @@
- kernel_interpolation_factor * sum2);
- }
-
--#if defined(ARCH_CPU_X86_FAMILY)
--float SincResampler::Convolve_SSE(const float* input_ptr, const float* k1,
-- const float* k2,
-- double kernel_interpolation_factor) {
-- __m128 m_input;
-- __m128 m_sums1 = _mm_setzero_ps();
-- __m128 m_sums2 = _mm_setzero_ps();
--
-- // Based on |input_ptr| alignment, we need to use loadu or load. Unrolling
-- // these loops hurt performance in local testing.
-- if (reinterpret_cast<uintptr_t>(input_ptr) & 0x0F) {
-- for (int i = 0; i < kKernelSize; i += 4) {
-- m_input = _mm_loadu_ps(input_ptr + i);
-- m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
-- m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
-- }
-- } else {
-- for (int i = 0; i < kKernelSize; i += 4) {
-- m_input = _mm_load_ps(input_ptr + i);
-- m_sums1 = _mm_add_ps(m_sums1, _mm_mul_ps(m_input, _mm_load_ps(k1 + i)));
-- m_sums2 = _mm_add_ps(m_sums2, _mm_mul_ps(m_input, _mm_load_ps(k2 + i)));
-- }
-- }
--
-- // Linearly interpolate the two "convolutions".
-- m_sums1 = _mm_mul_ps(m_sums1, _mm_set_ps1(
-- static_cast<float>(1.0 - kernel_interpolation_factor)));
-- m_sums2 = _mm_mul_ps(m_sums2, _mm_set_ps1(
-- static_cast<float>(kernel_interpolation_factor)));
-- m_sums1 = _mm_add_ps(m_sums1, m_sums2);
--
-- // Sum components together.
-- float result;
-- m_sums2 = _mm_add_ps(_mm_movehl_ps(m_sums1, m_sums1), m_sums1);
-- _mm_store_ss(&result, _mm_add_ss(m_sums2, _mm_shuffle_ps(
-- m_sums2, m_sums2, 1)));
--
-- return result;
--}
--#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
-+#if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
- float SincResampler::Convolve_NEON(const float* input_ptr, const float* k1,
- const float* k2,
- double kernel_interpolation_factor) {
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler.h 2017-03-05 17:26:26.169986310 +0100
-@@ -36,6 +36,10 @@
- kKernelStorageSize = kKernelSize * (kKernelOffsetCount + 1),
- };
-
-+ // Selects runtime specific CPU features like SSE. Must be called before
-+ // using SincResampler.
-+ static void InitializeCPUSpecificFeatures();
-+
- // Callback type for providing more data into the resampler. Expects |frames|
- // of data to be rendered into |destination|; zero padded if not enough frames
- // are available to satisfy the request.
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler_perftest.cc 2017-03-05 17:26:26.169986310 +0100
-@@ -4,6 +4,7 @@
-
- #include "base/bind.h"
- #include "base/bind_helpers.h"
-+#include "base/cpu.h"
- #include "base/time/time.h"
- #include "build/build_config.h"
- #include "media/base/sinc_resampler.h"
-@@ -61,6 +62,9 @@
- &resampler, SincResampler::Convolve_C, true, "unoptimized_aligned");
-
- #if defined(CONVOLVE_FUNC)
-+#if defined(ARCH_CPU_X86_FAMILY)
-+ ASSERT_TRUE(base::CPU().has_sse());
-+#endif
- RunConvolveBenchmark(
- &resampler, SincResampler::CONVOLVE_FUNC, true, "optimized_aligned");
- RunConvolveBenchmark(
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/sinc_resampler_unittest.cc 2017-03-05 17:26:26.169986310 +0100
-@@ -10,6 +10,7 @@
-
- #include "base/bind.h"
- #include "base/bind_helpers.h"
-+#include "base/cpu.h"
- #include "base/macros.h"
- #include "base/strings/string_number_conversions.h"
- #include "base/time/time.h"
-@@ -166,6 +167,10 @@
- static const double kKernelInterpolationFactor = 0.5;
-
- TEST(SincResamplerTest, Convolve) {
-+#if defined(ARCH_CPU_X86_FAMILY)
-+ ASSERT_TRUE(base::CPU().has_sse());
-+#endif
-+
- // Initialize a dummy resampler.
- MockSource mock_source;
- SincResampler resampler(
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math.cc 2017-03-05 17:26:26.170986295 +0100
-@@ -7,12 +7,17 @@
-
- #include <algorithm>
-
-+#include "base/cpu.h"
- #include "base/logging.h"
- #include "build/build_config.h"
-
-+namespace media {
-+namespace vector_math {
-+
-+// If we know the minimum architecture at compile time, avoid CPU detection.
- // NaCl does not allow intrinsics.
- #if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
--#include <xmmintrin.h>
-+#if defined(__SSE__)
- // Don't use custom SSE versions where the auto-vectorized C version performs
- // better, which is anywhere clang is used.
- #if !defined(__clang__)
-@@ -23,20 +28,52 @@
- #define FMUL_FUNC FMUL_C
- #endif
- #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
-+void Initialize() {}
-+#else
-+// X86 CPU detection required. Functions will be set by Initialize().
-+#if !defined(__clang__)
-+#define FMAC_FUNC g_fmac_proc_
-+#define FMUL_FUNC g_fmul_proc_
-+#else
-+#define FMAC_FUNC FMAC_C
-+#define FMUL_FUNC FMUL_C
-+#endif
-+#define EWMAAndMaxPower_FUNC g_ewma_power_proc_
-+
-+#if !defined(__clang__)
-+typedef void (*MathProc)(const float src[], float scale, int len, float dest[]);
-+static MathProc g_fmac_proc_ = NULL;
-+static MathProc g_fmul_proc_ = NULL;
-+#endif
-+typedef std::pair<float, float> (*EWMAAndMaxPowerProc)(
-+ float initial_value, const float src[], int len, float smoothing_factor);
-+static EWMAAndMaxPowerProc g_ewma_power_proc_ = NULL;
-+
-+void Initialize() {
-+ CHECK(!g_fmac_proc_);
-+ CHECK(!g_fmul_proc_);
-+ CHECK(!g_ewma_power_proc_);
-+ const bool kUseSSE = base::CPU().has_sse();
-+#if !defined(__clang__)
-+ g_fmac_proc_ = kUseSSE ? FMAC_SSE : FMAC_C;
-+ g_fmul_proc_ = kUseSSE ? FMUL_SSE : FMUL_C;
-+#endif
-+ g_ewma_power_proc_ = kUseSSE ? EWMAAndMaxPower_SSE : EWMAAndMaxPower_C;
-+}
-+#endif
- #elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
- #include <arm_neon.h>
- #define FMAC_FUNC FMAC_NEON
- #define FMUL_FUNC FMUL_NEON
- #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
-+void Initialize() {}
- #else
- #define FMAC_FUNC FMAC_C
- #define FMUL_FUNC FMUL_C
- #define EWMAAndMaxPower_FUNC EWMAAndMaxPower_C
-+void Initialize() {}
- #endif
-
--namespace media {
--namespace vector_math {
--
- void FMAC(const float src[], float scale, int len, float dest[]) {
- // Ensure |src| and |dest| are 16-byte aligned.
- DCHECK_EQ(0u, reinterpret_cast<uintptr_t>(src) & (kRequiredAlignment - 1));
-@@ -89,111 +126,6 @@
- return result;
- }
-
--#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
--void FMUL_SSE(const float src[], float scale, int len, float dest[]) {
-- const int rem = len % 4;
-- const int last_index = len - rem;
-- __m128 m_scale = _mm_set_ps1(scale);
-- for (int i = 0; i < last_index; i += 4)
-- _mm_store_ps(dest + i, _mm_mul_ps(_mm_load_ps(src + i), m_scale));
--
-- // Handle any remaining values that wouldn't fit in an SSE pass.
-- for (int i = last_index; i < len; ++i)
-- dest[i] = src[i] * scale;
--}
--
--void FMAC_SSE(const float src[], float scale, int len, float dest[]) {
-- const int rem = len % 4;
-- const int last_index = len - rem;
-- __m128 m_scale = _mm_set_ps1(scale);
-- for (int i = 0; i < last_index; i += 4) {
-- _mm_store_ps(dest + i, _mm_add_ps(_mm_load_ps(dest + i),
-- _mm_mul_ps(_mm_load_ps(src + i), m_scale)));
-- }
--
-- // Handle any remaining values that wouldn't fit in an SSE pass.
-- for (int i = last_index; i < len; ++i)
-- dest[i] += src[i] * scale;
--}
--
--// Convenience macro to extract float 0 through 3 from the vector |a|. This is
--// needed because compilers other than clang don't support access via
--// operator[]().
--#define EXTRACT_FLOAT(a, i) \
-- (i == 0 ? \
-- _mm_cvtss_f32(a) : \
-- _mm_cvtss_f32(_mm_shuffle_ps(a, a, i)))
--
--std::pair<float, float> EWMAAndMaxPower_SSE(
-- float initial_value, const float src[], int len, float smoothing_factor) {
-- // When the recurrence is unrolled, we see that we can split it into 4
-- // separate lanes of evaluation:
-- //
-- // y[n] = a(S[n]^2) + (1-a)(y[n-1])
-- // = a(S[n]^2) + (1-a)^1(aS[n-1]^2) + (1-a)^2(aS[n-2]^2) + ...
-- // = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
-- //
-- // where z[n] = a(S[n]^2) + (1-a)^4(z[n-4]) + (1-a)^8(z[n-8]) + ...
-- //
-- // Thus, the strategy here is to compute z[n], z[n-1], z[n-2], and z[n-3] in
-- // each of the 4 lanes, and then combine them to give y[n].
--
-- const int rem = len % 4;
-- const int last_index = len - rem;
--
-- const __m128 smoothing_factor_x4 = _mm_set_ps1(smoothing_factor);
-- const float weight_prev = 1.0f - smoothing_factor;
-- const __m128 weight_prev_x4 = _mm_set_ps1(weight_prev);
-- const __m128 weight_prev_squared_x4 =
-- _mm_mul_ps(weight_prev_x4, weight_prev_x4);
-- const __m128 weight_prev_4th_x4 =
-- _mm_mul_ps(weight_prev_squared_x4, weight_prev_squared_x4);
--
-- // Compute z[n], z[n-1], z[n-2], and z[n-3] in parallel in lanes 3, 2, 1 and
-- // 0, respectively.
-- __m128 max_x4 = _mm_setzero_ps();
-- __m128 ewma_x4 = _mm_setr_ps(0.0f, 0.0f, 0.0f, initial_value);
-- int i;
-- for (i = 0; i < last_index; i += 4) {
-- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_4th_x4);
-- const __m128 sample_x4 = _mm_load_ps(src + i);
-- const __m128 sample_squared_x4 = _mm_mul_ps(sample_x4, sample_x4);
-- max_x4 = _mm_max_ps(max_x4, sample_squared_x4);
-- // Note: The compiler optimizes this to a single multiply-and-accumulate
-- // instruction:
-- ewma_x4 = _mm_add_ps(ewma_x4,
-- _mm_mul_ps(sample_squared_x4, smoothing_factor_x4));
-- }
--
-- // y[n] = z[n] + (1-a)^1(z[n-1]) + (1-a)^2(z[n-2]) + (1-a)^3(z[n-3])
-- float ewma = EXTRACT_FLOAT(ewma_x4, 3);
-- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
-- ewma += EXTRACT_FLOAT(ewma_x4, 2);
-- ewma_x4 = _mm_mul_ps(ewma_x4, weight_prev_x4);
-- ewma += EXTRACT_FLOAT(ewma_x4, 1);
-- ewma_x4 = _mm_mul_ss(ewma_x4, weight_prev_x4);
-- ewma += EXTRACT_FLOAT(ewma_x4, 0);
--
-- // Fold the maximums together to get the overall maximum.
-- max_x4 = _mm_max_ps(max_x4,
-- _mm_shuffle_ps(max_x4, max_x4, _MM_SHUFFLE(3, 3, 1, 1)));
-- max_x4 = _mm_max_ss(max_x4, _mm_shuffle_ps(max_x4, max_x4, 2));
--
-- std::pair<float, float> result(ewma, EXTRACT_FLOAT(max_x4, 0));
--
-- // Handle remaining values at the end of |src|.
-- for (; i < len; ++i) {
-- result.first *= weight_prev;
-- const float sample = src[i];
-- const float sample_squared = sample * sample;
-- result.first += sample_squared * smoothing_factor;
-- result.second = std::max(result.second, sample_squared);
-- }
--
-- return result;
--}
--#endif
--
- #if defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
- void FMAC_NEON(const float src[], float scale, int len, float dest[]) {
- const int rem = len % 4;
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math.h 2017-03-05 17:26:26.170986295 +0100
-@@ -15,6 +15,11 @@
- // Required alignment for inputs and outputs to all vector math functions
- enum { kRequiredAlignment = 16 };
-
-+// Selects runtime specific optimizations such as SSE. Must be called prior to
-+// calling FMAC() or FMUL(). Called during media library initialization; most
-+// users should never have to call this.
-+MEDIA_EXPORT void Initialize();
-+
- // Multiply each element of |src| (up to |len|) by |scale| and add to |dest|.
- // |src| and |dest| must be aligned by kRequiredAlignment.
- MEDIA_EXPORT void FMAC(const float src[], float scale, int len, float dest[]);
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_perftest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_perftest.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_perftest.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_perftest.cc 2017-03-05 17:26:26.171986280 +0100
-@@ -5,6 +5,7 @@
- #include <memory>
-
- #include "base/macros.h"
-+#include "base/cpu.h"
- #include "base/memory/aligned_memory.h"
- #include "base/time/time.h"
- #include "build/build_config.h"
-@@ -82,15 +83,11 @@
- DISALLOW_COPY_AND_ASSIGN(VectorMathPerfTest);
- };
-
--// Define platform dependent function names for SIMD optimized methods.
-+// Define platform independent function name for FMAC* perf tests.
- #if defined(ARCH_CPU_X86_FAMILY)
- #define FMAC_FUNC FMAC_SSE
--#define FMUL_FUNC FMUL_SSE
--#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
- #elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
- #define FMAC_FUNC FMAC_NEON
--#define FMUL_FUNC FMUL_NEON
--#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
- #endif
-
- // Benchmark for each optimized vector_math::FMAC() method.
-@@ -99,6 +96,9 @@
- RunBenchmark(
- vector_math::FMAC_C, true, "vector_math_fmac", "unoptimized");
- #if defined(FMAC_FUNC)
-+#if defined(ARCH_CPU_X86_FAMILY)
-+ ASSERT_TRUE(base::CPU().has_sse());
-+#endif
- // Benchmark FMAC_FUNC() with unaligned size.
- ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
- sizeof(float)), 0U);
-@@ -112,12 +112,24 @@
- #endif
- }
-
-+#undef FMAC_FUNC
-+
-+// Define platform independent function name for FMULBenchmark* tests.
-+#if defined(ARCH_CPU_X86_FAMILY)
-+#define FMUL_FUNC FMUL_SSE
-+#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
-+#define FMUL_FUNC FMUL_NEON
-+#endif
-+
- // Benchmark for each optimized vector_math::FMUL() method.
- TEST_F(VectorMathPerfTest, FMUL) {
- // Benchmark FMUL_C().
- RunBenchmark(
- vector_math::FMUL_C, true, "vector_math_fmul", "unoptimized");
- #if defined(FMUL_FUNC)
-+#if defined(ARCH_CPU_X86_FAMILY)
-+ ASSERT_TRUE(base::CPU().has_sse());
-+#endif
- // Benchmark FMUL_FUNC() with unaligned size.
- ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
- sizeof(float)), 0U);
-@@ -131,6 +143,14 @@
- #endif
- }
-
-+#undef FMUL_FUNC
-+
-+#if defined(ARCH_CPU_X86_FAMILY)
-+#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_SSE
-+#elif defined(ARCH_CPU_ARM_FAMILY) && defined(USE_NEON)
-+#define EWMAAndMaxPower_FUNC EWMAAndMaxPower_NEON
-+#endif
-+
- // Benchmark for each optimized vector_math::EWMAAndMaxPower() method.
- TEST_F(VectorMathPerfTest, EWMAAndMaxPower) {
- // Benchmark EWMAAndMaxPower_C().
-@@ -139,6 +159,9 @@
- "vector_math_ewma_and_max_power",
- "unoptimized");
- #if defined(EWMAAndMaxPower_FUNC)
-+#if defined(ARCH_CPU_X86_FAMILY)
-+ ASSERT_TRUE(base::CPU().has_sse());
-+#endif
- // Benchmark EWMAAndMaxPower_FUNC() with unaligned size.
- ASSERT_NE((kVectorSize - 1) % (vector_math::kRequiredAlignment /
- sizeof(float)), 0U);
-@@ -156,4 +179,6 @@
- #endif
- }
-
-+#undef EWMAAndMaxPower_FUNC
-+
- } // namespace media
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_testing.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_testing.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_testing.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_testing.h 2017-03-05 17:26:26.171986280 +0100
-@@ -19,7 +19,7 @@
- MEDIA_EXPORT std::pair<float, float> EWMAAndMaxPower_C(
- float initial_value, const float src[], int len, float smoothing_factor);
-
--#if defined(ARCH_CPU_X86_FAMILY) && !defined(OS_NACL)
-+#if defined(ARCH_CPU_X86_FAMILY)
- MEDIA_EXPORT void FMAC_SSE(const float src[], float scale, int len,
- float dest[]);
- MEDIA_EXPORT void FMUL_SSE(const float src[], float scale, int len,
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_unittest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_unittest.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/vector_math_unittest.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/vector_math_unittest.cc 2017-03-05 17:26:26.172986265 +0100
-@@ -9,6 +9,7 @@
- #include <memory>
-
- #include "base/macros.h"
-+#include "base/cpu.h"
- #include "base/memory/aligned_memory.h"
- #include "base/strings/string_number_conversions.h"
- #include "base/strings/stringize_macros.h"
-@@ -78,6 +79,7 @@
-
- #if defined(ARCH_CPU_X86_FAMILY)
- {
-+ ASSERT_TRUE(base::CPU().has_sse());
- SCOPED_TRACE("FMAC_SSE");
- FillTestVectors(kInputFillValue, kOutputFillValue);
- vector_math::FMAC_SSE(
-@@ -119,6 +121,7 @@
-
- #if defined(ARCH_CPU_X86_FAMILY)
- {
-+ ASSERT_TRUE(base::CPU().has_sse());
- SCOPED_TRACE("FMUL_SSE");
- FillTestVectors(kInputFillValue, kOutputFillValue);
- vector_math::FMUL_SSE(
-@@ -227,6 +230,7 @@
-
- #if defined(ARCH_CPU_X86_FAMILY)
- {
-+ ASSERT_TRUE(base::CPU().has_sse());
- SCOPED_TRACE("EWMAAndMaxPower_SSE");
- const std::pair<float, float>& result = vector_math::EWMAAndMaxPower_SSE(
- initial_value_, data_.get(), data_len_, smoothing_factor_);
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert.cc 2017-03-05 17:26:26.173986250 +0100
-@@ -32,7 +32,7 @@
- #include "media/base/simd/convert_yuv_to_rgb.h"
- #include "media/base/simd/filter_yuv.h"
-
--#if defined(ARCH_CPU_X86_FAMILY)
-+#if defined(ARCH_CPU_X86_FAMILY) && defined(__MMX__)
- #if defined(COMPILER_MSVC)
- #include <intrin.h>
- #else
-@@ -133,7 +133,7 @@
-
- // Empty SIMD registers state after using them.
- void EmptyRegisterStateStub() {}
--#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-+#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE) && defined(__MMX__)
- void EmptyRegisterStateIntrinsic() { _mm_empty(); }
- #endif
- typedef void (*EmptyRegisterStateProc)();
-@@ -247,34 +247,46 @@
- // Assembly code confuses MemorySanitizer. Also not available in iOS builds.
- #if defined(ARCH_CPU_X86_FAMILY) && !defined(MEMORY_SANITIZER) && \
- !defined(OS_IOS)
-- g_convert_yuva_to_argb_proc_ = ConvertYUVAToARGB_MMX;
-+ base::CPU cpu;
-+ if (cpu.has_mmx()) {
-+ g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_MMX;
-+ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_MMX;
-+ g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_MMX;
-+ g_convert_yuva_to_argb_proc_ = ConvertYUVAToARGB_MMX;
-+ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX;
-
- #if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-- g_empty_register_state_proc_ = EmptyRegisterStateIntrinsic;
-+ g_filter_yuv_rows_proc_ = FilterYUVRows_MMX;
-+#endif
-+#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE) && defined(__MMX__)
-+ g_empty_register_state_proc_ = EmptyRegisterStateIntrinsic;
- #else
-- g_empty_register_state_proc_ = EmptyRegisterState_MMX;
-+ g_empty_register_state_proc_ = EmptyRegisterState_MMX;
- #endif
-+ }
-
-- g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_SSE;
-- g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_SSE;
-+ if (cpu.has_sse()) {
-+ g_convert_yuv_to_rgb32_row_proc_ = ConvertYUVToRGB32Row_SSE;
-+ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE;
-+ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_SSE;
-+ g_convert_yuv_to_rgb32_proc_ = ConvertYUVToRGB32_SSE;
-+ }
-
-- g_filter_yuv_rows_proc_ = FilterYUVRows_SSE2;
-- g_convert_rgb32_to_yuv_proc_ = ConvertRGB32ToYUV_SSE2;
-+ if (cpu.has_sse2()) {
-+ g_filter_yuv_rows_proc_ = FilterYUVRows_SSE2;
-+ g_convert_rgb32_to_yuv_proc_ = ConvertRGB32ToYUV_SSE2;
-
- #if defined(ARCH_CPU_X86_64)
-- g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE2_X64;
-+ g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE2_X64;
-
-- // Technically this should be in the MMX section, but MSVC will optimize out
-- // the export of LinearScaleYUVToRGB32Row_MMX, which is required by the unit
-- // tests, if that decision can be made at compile time. Since all X64 CPUs
-- // have SSE2, we can hack around this by making the selection here.
-- g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX_X64;
--#else
-- g_scale_yuv_to_rgb32_row_proc_ = ScaleYUVToRGB32Row_SSE;
-- g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_SSE;
-+ // Technically this should be in the MMX section, but MSVC will optimize out
-+ // the export of LinearScaleYUVToRGB32Row_MMX, which is required by the unit
-+ // tests, if that decision can be made at compile time. Since all X64 CPUs
-+ // have SSE2, we can hack around this by making the selection here.
-+ g_linear_scale_yuv_to_rgb32_row_proc_ = LinearScaleYUVToRGB32Row_MMX_X64;
- #endif
-+ }
-
-- base::CPU cpu;
- if (cpu.has_ssse3()) {
- g_convert_rgb24_to_yuv_proc_ = &ConvertRGB24ToYUV_SSSE3;
-
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert_perftest.cc 2017-03-05 17:26:26.173986250 +0100
-@@ -71,6 +71,29 @@
- DISALLOW_COPY_AND_ASSIGN(YUVConvertPerfTest);
- };
-
-+TEST_F(YUVConvertPerfTest, ConvertYUVToRGB32Row_MMX) {
-+ ASSERT_TRUE(base::CPU().has_mmx());
-+
-+ base::TimeTicks start = base::TimeTicks::Now();
-+ for (int i = 0; i < kPerfTestIterations; ++i) {
-+ for (int row = 0; row < kSourceHeight; ++row) {
-+ int chroma_row = row / 2;
-+ ConvertYUVToRGB32Row_MMX(
-+ yuv_bytes_.get() + row * kSourceWidth,
-+ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
-+ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
-+ rgb_bytes_converted_.get(),
-+ kWidth,
-+ GetLookupTable(YV12));
-+ }
-+ }
-+ media::EmptyRegisterState();
-+ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
-+ perf_test::PrintResult(
-+ "yuv_convert_perftest", "", "ConvertYUVToRGB32Row_MMX",
-+ kPerfTestIterations / total_time_seconds, "runs/s", true);
-+}
-+
- TEST_F(YUVConvertPerfTest, ConvertYUVToRGB32Row_SSE) {
- ASSERT_TRUE(base::CPU().has_sse());
-
-@@ -161,9 +184,32 @@
- }
- #endif
-
--// 64-bit release + component builds on Windows are too smart and optimizes
--// away the function being tested.
--#if defined(OS_WIN) && (defined(ARCH_CPU_X86) || !defined(COMPONENT_BUILD))
-+TEST_F(YUVConvertPerfTest, ScaleYUVToRGB32Row_MMX) {
-+ ASSERT_TRUE(base::CPU().has_mmx());
-+
-+ const int kSourceDx = 80000; // This value means a scale down.
-+
-+ base::TimeTicks start = base::TimeTicks::Now();
-+ for (int i = 0; i < kPerfTestIterations; ++i) {
-+ for (int row = 0; row < kSourceHeight; ++row) {
-+ int chroma_row = row / 2;
-+ ScaleYUVToRGB32Row_MMX(
-+ yuv_bytes_.get() + row * kSourceWidth,
-+ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
-+ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
-+ rgb_bytes_converted_.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ }
-+ }
-+ media::EmptyRegisterState();
-+ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
-+ perf_test::PrintResult(
-+ "yuv_convert_perftest", "", "ScaleYUVToRGB32Row_MMX",
-+ kPerfTestIterations / total_time_seconds, "runs/s", true);
-+}
-+
- TEST_F(YUVConvertPerfTest, ScaleYUVToRGB32Row_SSE) {
- ASSERT_TRUE(base::CPU().has_sse());
-
-@@ -190,6 +236,32 @@
- kPerfTestIterations / total_time_seconds, "runs/s", true);
- }
-
-+TEST_F(YUVConvertPerfTest, LinearScaleYUVToRGB32Row_MMX) {
-+ ASSERT_TRUE(base::CPU().has_mmx());
-+
-+ const int kSourceDx = 80000; // This value means a scale down.
-+
-+ base::TimeTicks start = base::TimeTicks::Now();
-+ for (int i = 0; i < kPerfTestIterations; ++i) {
-+ for (int row = 0; row < kSourceHeight; ++row) {
-+ int chroma_row = row / 2;
-+ LinearScaleYUVToRGB32Row_MMX(
-+ yuv_bytes_.get() + row * kSourceWidth,
-+ yuv_bytes_.get() + kSourceUOffset + (chroma_row * kSourceWidth / 2),
-+ yuv_bytes_.get() + kSourceVOffset + (chroma_row * kSourceWidth / 2),
-+ rgb_bytes_converted_.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ }
-+ }
-+ media::EmptyRegisterState();
-+ double total_time_seconds = (base::TimeTicks::Now() - start).InSecondsF();
-+ perf_test::PrintResult(
-+ "yuv_convert_perftest", "", "LinearScaleYUVToRGB32Row_MMX",
-+ kPerfTestIterations / total_time_seconds, "runs/s", true);
-+}
-+
- TEST_F(YUVConvertPerfTest, LinearScaleYUVToRGB32Row_SSE) {
- ASSERT_TRUE(base::CPU().has_sse());
-
-@@ -215,7 +287,6 @@
- "yuv_convert_perftest", "", "LinearScaleYUVToRGB32Row_SSE",
- kPerfTestIterations / total_time_seconds, "runs/s", true);
- }
--#endif // defined(OS_WIN) && (ARCH_CPU_X86 || COMPONENT_BUILD)
-
- #endif // !defined(ARCH_CPU_ARM_FAMILY) && !defined(ARCH_CPU_MIPS_FAMILY)
-
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/base/yuv_convert_unittest.cc 2017-03-05 17:26:26.174986235 +0100
-@@ -643,6 +643,37 @@
- EXPECT_EQ(0, error);
- }
-
-+TEST(YUVConvertTest, ConvertYUVToRGB32Row_MMX) {
-+ base::CPU cpu;
-+ if (!cpu.has_mmx()) {
-+ LOG(WARNING) << "System not supported. Test skipped.";
-+ return;
-+ }
-+
-+ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
-+ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
-+ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
-+ ReadYV12Data(&yuv_bytes);
-+
-+ const int kWidth = 167;
-+ ConvertYUVToRGB32Row_C(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_reference.get(),
-+ kWidth,
-+ GetLookupTable(YV12));
-+ ConvertYUVToRGB32Row_MMX(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_converted.get(),
-+ kWidth,
-+ GetLookupTable(YV12));
-+ media::EmptyRegisterState();
-+ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
-+ rgb_bytes_converted.get(),
-+ kWidth * kBpp));
-+}
-+
- TEST(YUVConvertTest, ConvertYUVToRGB32Row_SSE) {
- base::CPU cpu;
- if (!cpu.has_sse()) {
-@@ -674,9 +705,40 @@
- kWidth * kBpp));
- }
-
--// 64-bit release + component builds on Windows are too smart and optimizes
--// away the function being tested.
--#if defined(OS_WIN) && (defined(ARCH_CPU_X86) || !defined(COMPONENT_BUILD))
-+TEST(YUVConvertTest, ScaleYUVToRGB32Row_MMX) {
-+ base::CPU cpu;
-+ if (!cpu.has_mmx()) {
-+ LOG(WARNING) << "System not supported. Test skipped.";
-+ return;
-+ }
-+
-+ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
-+ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
-+ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
-+ ReadYV12Data(&yuv_bytes);
-+
-+ const int kWidth = 167;
-+ const int kSourceDx = 80000; // This value means a scale down.
-+ ScaleYUVToRGB32Row_C(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_reference.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ ScaleYUVToRGB32Row_MMX(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_converted.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ media::EmptyRegisterState();
-+ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
-+ rgb_bytes_converted.get(),
-+ kWidth * kBpp));
-+}
-+
- TEST(YUVConvertTest, ScaleYUVToRGB32Row_SSE) {
- base::CPU cpu;
- if (!cpu.has_sse()) {
-@@ -711,6 +773,40 @@
- kWidth * kBpp));
- }
-
-+TEST(YUVConvertTest, LinearScaleYUVToRGB32Row_MMX) {
-+ base::CPU cpu;
-+ if (!cpu.has_mmx()) {
-+ LOG(WARNING) << "System not supported. Test skipped.";
-+ return;
-+ }
-+
-+ scoped_ptr<uint8[]> yuv_bytes(new uint8[kYUV12Size]);
-+ scoped_ptr<uint8[]> rgb_bytes_reference(new uint8[kRGBSize]);
-+ scoped_ptr<uint8[]> rgb_bytes_converted(new uint8[kRGBSize]);
-+ ReadYV12Data(&yuv_bytes);
-+
-+ const int kWidth = 167;
-+ const int kSourceDx = 80000; // This value means a scale down.
-+ LinearScaleYUVToRGB32Row_C(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_reference.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ LinearScaleYUVToRGB32Row_MMX(yuv_bytes.get(),
-+ yuv_bytes.get() + kSourceUOffset,
-+ yuv_bytes.get() + kSourceVOffset,
-+ rgb_bytes_converted.get(),
-+ kWidth,
-+ kSourceDx,
-+ GetLookupTable(YV12));
-+ media::EmptyRegisterState();
-+ EXPECT_EQ(0, memcmp(rgb_bytes_reference.get(),
-+ rgb_bytes_converted.get(),
-+ kWidth * kBpp));
-+}
-+
- TEST(YUVConvertTest, LinearScaleYUVToRGB32Row_SSE) {
- base::CPU cpu;
- if (!cpu.has_sse()) {
-@@ -744,7 +840,6 @@
- rgb_bytes_converted.get(),
- kWidth * kBpp));
- }
--#endif // defined(OS_WIN) && (ARCH_CPU_X86 || COMPONENT_BUILD)
-
- TEST(YUVConvertTest, FilterYUVRows_C_OutOfBounds) {
- std::unique_ptr<uint8_t[]> src(new uint8_t[16]);
-@@ -761,6 +856,30 @@
- }
- }
-
-+#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-+TEST(YUVConvertTest, FilterYUVRows_MMX_OutOfBounds) {
-+ base::CPU cpu;
-+ if (!cpu.has_mmx()) {
-+ LOG(WARNING) << "System not supported. Test skipped.";
-+ return;
-+ }
-+
-+ scoped_ptr<uint8[]> src(new uint8[16]);
-+ scoped_ptr<uint8[]> dst(new uint8[16]);
-+
-+ memset(src.get(), 0xff, 16);
-+ memset(dst.get(), 0, 16);
-+
-+ media::FilterYUVRows_MMX(dst.get(), src.get(), src.get(), 1, 255);
-+ media::EmptyRegisterState();
-+
-+ EXPECT_EQ(255u, dst[0]);
-+ for (int i = 1; i < 16; ++i) {
-+ EXPECT_EQ(0u, dst[i]);
-+ }
-+}
-+#endif // defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-+
- TEST(YUVConvertTest, FilterYUVRows_SSE2_OutOfBounds) {
- base::CPU cpu;
- if (!cpu.has_sse2()) {
-@@ -782,6 +901,38 @@
- }
- }
-
-+#if defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-+TEST(YUVConvertTest, FilterYUVRows_MMX_UnalignedDestination) {
-+ base::CPU cpu;
-+ if (!cpu.has_mmx()) {
-+ LOG(WARNING) << "System not supported. Test skipped.";
-+ return;
-+ }
-+
-+ const int kSize = 32;
-+ scoped_ptr<uint8[]> src(new uint8[kSize]);
-+ scoped_ptr<uint8[]> dst_sample(new uint8[kSize]);
-+ scoped_ptr<uint8[]> dst(new uint8[kSize]);
-+
-+ memset(dst_sample.get(), 0, kSize);
-+ memset(dst.get(), 0, kSize);
-+ for (int i = 0; i < kSize; ++i)
-+ src[i] = 100 + i;
-+
-+ media::FilterYUVRows_C(dst_sample.get(),
-+ src.get(), src.get(), 17, 128);
-+
-+ // Generate an unaligned output address.
-+ uint8* dst_ptr =
-+ reinterpret_cast<uint8*>(
-+ (reinterpret_cast<uintptr_t>(dst.get() + 8) & ~7) + 1);
-+ media::FilterYUVRows_MMX(dst_ptr, src.get(), src.get(), 17, 128);
-+ media::EmptyRegisterState();
-+
-+ EXPECT_EQ(0, memcmp(dst_sample.get(), dst_ptr, 17));
-+}
-+#endif // defined(MEDIA_MMX_INTRINSICS_AVAILABLE)
-+
- TEST(YUVConvertTest, FilterYUVRows_SSE2_UnalignedDestination) {
- base::CPU cpu;
- if (!cpu.has_sse2()) {
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/BUILD.gn
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/BUILD.gn 2017-03-05 17:26:26.175986220 +0100
-@@ -805,6 +805,26 @@
- "//base",
- "//ui/gfx/geometry",
- ]
-+ if (current_cpu == "x86" || current_cpu == "x64") {
-+ deps += [
-+ ":shared_memory_support_sse",
-+ ]
-+ }
-+}
-+
-+if (current_cpu == "x86" || current_cpu == "x64") {
-+ source_set("shared_memory_support_sse") {
-+ sources = [
-+ "base/simd/vector_math_sse.cc",
-+ ]
-+ configs += [
-+ "//media:media_config",
-+ "//media:media_implementation",
-+ ]
-+ if (!is_win) {
-+ cflags = [ "-msse" ]
-+ }
-+ }
- }
-
- # TODO(watk): Refactor tests that could be made to run on Android. See
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/media.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/media.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/media/media.gyp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/media/media.gyp 2017-03-05 17:51:56.424188330 +0100
-@@ -1020,12 +1020,12 @@
- ['target_arch=="ia32" or target_arch=="x64"', {
- 'dependencies': [
- 'media_asm',
-+ 'media_mmx',
-+ 'media_sse',
-+ 'media_sse2',
- ],
- 'sources': [
-- 'base/simd/convert_rgb_to_yuv_sse2.cc',
-- 'base/simd/convert_rgb_to_yuv_ssse3.cc',
- 'base/simd/convert_yuv_to_rgb_x86.cc',
-- 'base/simd/filter_yuv_sse2.cc',
- ],
- }],
- ['OS!="linux" and OS!="win"', {
-@@ -1616,6 +1616,11 @@
- 'USE_NEON'
- ],
- }],
-+ ['target_arch=="ia32" or target_arch=="x64"', {
-+ 'dependencies': [
-+ 'shared_memory_support_sse'
-+ ],
-+ }],
- ],
- },
- {
-@@ -1633,6 +1638,7 @@
- 'type': 'static_library',
- 'sources': [
- 'base/simd/convert_rgb_to_yuv_ssse3.asm',
-+ 'base/simd/convert_yuv_to_rgb_mmx.asm',
- 'base/simd/convert_yuv_to_rgb_sse.asm',
- 'base/simd/convert_yuva_to_argb_mmx.asm',
- 'base/simd/empty_register_state_mmx.asm',
-@@ -1713,6 +1719,75 @@
- '../third_party/yasm/yasm_compile.gypi',
- ],
- },
-+ {
-+ # GN version: //media/base:media_mmx
-+ 'target_name': 'media_mmx',
-+ 'type': 'static_library',
-+ 'cflags': [
-+ '-mmmx',
-+ ],
-+ 'defines': [
-+ 'MEDIA_IMPLEMENTATION',
-+ ],
-+ 'include_dirs': [
-+ '..',
-+ ],
-+ 'sources': [
-+ 'base/simd/filter_yuv_mmx.cc',
-+ ],
-+ },
-+ {
-+ # GN version: //media/base:media_sse
-+ 'target_name': 'media_sse',
-+ 'type': 'static_library',
-+ 'cflags': [
-+ '-msse',
-+ ],
-+ 'defines': [
-+ 'MEDIA_IMPLEMENTATION',
-+ ],
-+ 'include_dirs': [
-+ '..',
-+ ],
-+ 'sources': [
-+ 'base/simd/sinc_resampler_sse.cc',
-+ ],
-+ },
-+ {
-+ # GN version: //media/base:media_sse2
-+ 'target_name': 'media_sse2',
-+ 'type': 'static_library',
-+ 'cflags': [
-+ '-msse2',
-+ ],
-+ 'defines': [
-+ 'MEDIA_IMPLEMENTATION',
-+ ],
-+ 'include_dirs': [
-+ '..',
-+ ],
-+ 'sources': [
-+ 'base/simd/convert_rgb_to_yuv_sse2.cc',
-+ 'base/simd/convert_rgb_to_yuv_ssse3.cc',
-+ 'base/simd/filter_yuv_sse2.cc',
-+ ],
-+ },
-+ {
-+ 'target_name': 'shared_memory_support_sse',
-+ 'type': 'static_library',
-+ 'cflags': [
-+ '-msse',
-+ ],
-+ 'defines': [
-+ 'MEDIA_IMPLEMENTATION',
-+ ],
-+ 'include_dirs': [
-+ '..',
-+ ],
-+ 'sources': [
-+ 'base/simd/vector_math_sse.cc',
-+ ],
-+ },
- ], # targets
- }],
- ['OS=="win"', {
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/BUILD.gn
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/BUILD.gn 2017-03-05 17:56:08.829413581 +0100
-@@ -329,11 +329,6 @@
- if (!is_ios) {
- sources += [ "ext/platform_canvas.cc" ]
- }
-- if (!is_ios && (current_cpu == "x86" || current_cpu == "x64")) {
-- sources += [ "ext/convolver_SSE2.cc" ]
-- } else if (current_cpu == "mipsel" && mips_dsp_rev >= 2) {
-- sources += [ "ext/convolver_mips_dspr2.cc" ]
-- }
-
- # The skia gypi values are relative to the skia_dir, so we need to rebase.
- sources += gypi_skia_core.sources
-@@ -642,7 +637,15 @@
- if (skia_build_no_opts) {
- sources = gypi_skia_opts.none_sources
- } else if (current_cpu == "x86" || current_cpu == "x64") {
-- sources = gypi_skia_opts.sse2_sources
-+ sources = gypi_skia_opts.sse2_sources +
-+ [
-+ # Chrome-specific.
-+ "ext/convolver_SSE2.cc",
-+ "ext/convolver_SSE2.h",
-+ ]
-+ if (!is_win || is_clang) {
-+ cflags += [ "-msse2" ]
-+ }
- deps += [
- ":skia_opts_avx",
- ":skia_opts_avx2",
-@@ -677,6 +680,13 @@
-
- if (mips_dsp_rev >= 1) {
- sources = gypi_skia_opts.mips_dsp_sources
-+ if (mips_dsp_rev >= 2) {
-+ sources += [
-+ # Chrome-specific.
-+ "ext/convolver_mips_dspr2.cc",
-+ "ext/convolver_mips_dspr2.h",
-+ ]
-+ }
- } else {
- sources = gypi_skia_opts.none_sources
- }
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/ext/convolver.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/ext/convolver.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/ext/convolver.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/ext/convolver.cc 2017-03-05 17:26:26.176986205 +0100
-@@ -362,10 +362,13 @@
-
- void SetupSIMD(ConvolveProcs *procs) {
- #ifdef SIMD_SSE2
-- procs->extra_horizontal_reads = 3;
-- procs->convolve_vertically = &ConvolveVertically_SSE2;
-- procs->convolve_4rows_horizontally = &Convolve4RowsHorizontally_SSE2;
-- procs->convolve_horizontally = &ConvolveHorizontally_SSE2;
-+ base::CPU cpu;
-+ if (cpu.has_sse2()) {
-+ procs->extra_horizontal_reads = 3;
-+ procs->convolve_vertically = &ConvolveVertically_SSE2;
-+ procs->convolve_4rows_horizontally = &Convolve4RowsHorizontally_SSE2;
-+ procs->convolve_horizontally = &ConvolveHorizontally_SSE2;
-+ }
- #elif defined SIMD_MIPS_DSPR2
- procs->extra_horizontal_reads = 3;
- procs->convolve_vertically = &ConvolveVertically_mips_dspr2;
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/ext/convolver.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/ext/convolver.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/ext/convolver.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/ext/convolver.h 2017-03-05 17:26:26.239985269 +0100
-@@ -11,6 +11,7 @@
- #include <vector>
-
- #include "build/build_config.h"
-+#include "base/cpu.h"
- #include "third_party/skia/include/core/SkSize.h"
- #include "third_party/skia/include/core/SkTypes.h"
-
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia_chrome.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia_chrome.gypi
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia_chrome.gypi 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia_chrome.gypi 2017-03-05 17:26:26.239985269 +0100
-@@ -9,6 +9,7 @@
- {
- 'dependencies': [
- 'skia_library',
-+ 'skia_chrome_opts',
- '../base/base.gyp:base',
- '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations',
- ],
-@@ -67,22 +68,16 @@
- 'ext/skia_utils_base.cc',
- ],
- }],
-+ ['OS == "ios"', {
-+ 'dependencies!': [
-+ 'skia_chrome_opts',
-+ ],
-+ }],
- [ 'OS != "android" and (OS != "linux" or use_cairo==1)', {
- 'sources!': [
- 'ext/bitmap_platform_device_skia.cc',
- ],
- }],
-- [ 'OS != "ios" and target_arch != "arm" and target_arch != "mipsel" and \
-- target_arch != "arm64" and target_arch != "mips64el"', {
-- 'sources': [
-- 'ext/convolver_SSE2.cc',
-- ],
-- }],
-- [ 'target_arch == "mipsel" and mips_dsp_rev >= 2',{
-- 'sources': [
-- 'ext/convolver_mips_dspr2.cc',
-- ],
-- }],
- ],
-
- 'target_conditions': [
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia.gyp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia.gyp 2017-03-05 17:26:26.239985269 +0100
-@@ -128,6 +128,37 @@
- # targets that are not dependent upon the component type
- 'targets': [
- {
-+ 'target_name': 'skia_chrome_opts',
-+ 'type': 'static_library',
-+ 'include_dirs': [
-+ '..',
-+ 'config',
-+ '../third_party/skia/include/core',
-+ ],
-+ 'conditions': [
-+ [ 'os_posix == 1 and OS != "mac" and OS != "android" and \
-+ target_arch != "arm" and target_arch != "mipsel" and \
-+ target_arch != "arm64" and target_arch != "mips64el"', {
-+ 'cflags': [
-+ '-msse2',
-+ ],
-+ }],
-+ [ 'target_arch != "arm" and target_arch != "mipsel" and \
-+ target_arch != "arm64" and target_arch != "mips64el"', {
-+ 'sources': [
-+ 'ext/convolver_SSE2.cc',
-+ 'ext/convolver_SSE2.h',
-+ ],
-+ }],
-+ [ 'target_arch == "mipsel" and mips_dsp_rev >= 2',{
-+ 'sources': [
-+ 'ext/convolver_mips_dspr2.cc',
-+ 'ext/convolver_mips_dspr2.h',
-+ ],
-+ }],
-+ ],
-+ },
-+ {
- 'target_name': 'image_operations_bench',
- # The optimize: 'max' scattered throughout are particularly
- # important when compiled by MSVC 2013, which seems
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia_library_opts.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia_library_opts.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/skia/skia_library_opts.gyp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/skia/skia_library_opts.gyp 2017-03-05 17:26:26.239985269 +0100
-@@ -19,10 +19,22 @@
- },
-
- 'targets': [
-- # SSE files have to be built in a separate target, because gcc needs
-- # different -msse flags for different SSE levels which enable use of SSE
-- # intrinsics but also allow emission of SSE2 instructions for scalar code.
-- # gyp does not allow per-file compiler flags.
-+ # Due to an unfortunate intersection of lameness between gcc and gyp,
-+ # we have to build the *_SSE2.cpp files in a separate target. The
-+ # gcc lameness is that, in order to compile SSE2 intrinsics code, it
-+ # must be passed the -msse2 flag. However, with this flag, it may
-+ # emit SSE2 instructions even for scalar code, such as the CPUID
-+ # test used to test for the presence of SSE2. So that, and all other
-+ # code must be compiled *without* -msse2. The gyp lameness is that it
-+ # does not allow file-specific CFLAGS, so we must create this extra
-+ # target for those files to be compiled with -msse2.
-+ #
-+ # This is actually only a problem on 32-bit Linux (all Intel Macs have
-+ # SSE2, Linux x86_64 has SSE2 by definition, and MSC will happily emit
-+ # SSE2 from instrinsics, which generating plain ol' 386 for everything
-+ # else). However, to keep the .gyp file simple and avoid platform-specific
-+ # build breakage, we do this on all platforms.
-+
- # For about the same reason, we need to compile the ARM opts files
- # separately as well.
- {
-@@ -45,12 +57,13 @@
- ],
- 'include_dirs': [ '<@(include_dirs)' ],
- 'conditions': [
-+ [ 'os_posix == 1 and OS != "mac" and OS != "android" and \
-+ target_arch != "arm" and target_arch != "arm64" and \
-+ target_arch != "mipsel" and target_arch != "mips64el"', {
-+ 'cflags': [ '-msse2' ],
-+ }],
- [ 'target_arch != "arm" and target_arch != "mipsel" and \
- target_arch != "arm64" and target_arch != "mips64el"', {
-- # Chrome builds with -msse2 locally, so sse2_sources could in theory
-- # be in the regular skia target. But we need skia_opts for arm
-- # anyway, so putting sse2_sources here is simpler than making this
-- # conditionally a type none target on x86.
- 'sources': [ '<@(sse2_sources)' ],
- 'dependencies': [
- 'skia_opts_ssse3',
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/qcms/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/qcms/BUILD.gn
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/qcms/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/qcms/BUILD.gn 2017-03-05 17:26:26.240985255 +0100
-@@ -31,8 +31,8 @@
- ]
-
- if (current_cpu == "x86" || current_cpu == "x64") {
-- defines = [ "SSE2_ENABLE" ]
-- sources += [ "src/transform-sse2.c" ]
-+ defines = [ "SSE2_ENABLE" ] # runtime detection
-+ deps = [ "qcms_sse2" ]
- }
- }
-
-@@ -75,3 +75,15 @@
- public_configs = [ ":qcms_config" ]
- }
- }
-+
-+source_set("qcms_sse2") {
-+ configs -= [ "//build/config/compiler:chromium_code" ]
-+ configs += [ "//build/config/compiler:no_chromium_code" ]
-+ public_configs = [ ":qcms_config" ]
-+
-+ if (current_cpu == "x86" || current_cpu == "x64") {
-+ defines = [ "SSE2_ENABLE" ]
-+ sources = [ "src/transform-sse2.c" ]
-+ cflags = [ "-msse2" ]
-+ }
-+}
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/qcms/qcms.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/qcms/qcms.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/qcms/qcms.gyp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/qcms/qcms.gyp 2017-03-05 18:01:48.843328633 +0100
-@@ -52,10 +52,10 @@
- 'conditions': [
- ['target_arch=="ia32" or target_arch=="x64"', {
- 'defines': [
-- 'SSE2_ENABLE',
-+ 'SSE2_ENABLE', # runtime detection
- ],
-- 'sources': [
-- 'src/transform-sse2.c',
-+ 'dependencies': [
-+ 'qcms_sse2',
- ],
- }],
- ],
-@@ -68,6 +68,29 @@
- }],
- ],
- },
-+ {
-+ 'target_name': 'qcms_sse2',
-+ 'type': 'static_library',
-+ 'conditions': [
-+ ['target_arch == "ia32" or target_arch == "x64"', {
-+ 'defines': [
-+ 'SSE2_ENABLE',
-+ ],
-+ 'sources': [
-+ # Conditional compilation for SSE2 code on x86 and x64 machines
-+ 'src/transform-sse2.c',
-+ ],
-+ 'cflags': [
-+ '-msse2',
-+ ],
-+ }],
-+ ],
-+ 'direct_dependent_settings': {
-+ 'include_dirs': [
-+ './src',
-+ ],
-+ },
-+ },
- ],
- 'conditions': [
- ['disable_qcms == 0', {
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/modules/webaudio/AudioParamTimeline.cpp 2017-03-05 17:26:26.240985255 +0100
-@@ -32,7 +32,7 @@
- #include "wtf/MathExtras.h"
- #include <algorithm>
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- #include <emmintrin.h>
- #endif
-
-@@ -575,7 +575,7 @@
- // First handle linear and exponential ramps which require looking ahead to the next event.
- if (nextEventType == ParamEvent::LinearRampToValue) {
- const float valueDelta = value2 - value1;
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- // Minimize in-loop operations. Calculate starting value and increment. Next step: value += inc.
- // value = value1 + (currentFrame/sampleRate - time1) * k * (value2 - value1);
- // inc = 4 / sampleRate * k * (value2 - value1);
-@@ -738,7 +738,7 @@
- for (; writeIndex < fillToFrame; ++writeIndex)
- values[writeIndex] = target;
- } else {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- // Resolve recursion by expanding constants to achieve a 4-step loop unrolling.
- // v1 = v0 + (t - v0) * c
- // v2 = v1 + (t - v1) * c
-@@ -843,7 +843,7 @@
- // Render the stretched curve data using linear interpolation. Oversampled
- // curve data can be provided if sharp discontinuities are desired.
- unsigned k = 0;
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- const __m128 vCurveVirtualIndex = _mm_set_ps1(curveVirtualIndex);
- const __m128 vCurvePointsPerFrame = _mm_set_ps1(curvePointsPerFrame);
- const __m128 vNumberOfCurvePointsM1 = _mm_set_ps1(numberOfCurvePoints - 1);
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.cpp 2017-03-05 18:09:17.132624414 +0100
-@@ -26,6 +26,9 @@
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-+// include this first to get it before the CPU() function-like macro
-+#include "base/cpu.h"
-+
- #include "platform/audio/DirectConvolver.h"
-
- #if OS(MACOSX)
-@@ -35,22 +38,44 @@
- #include "platform/audio/VectorMath.h"
- #include "wtf/CPU.h"
-
--#if (CPU(X86) || CPU(X86_64)) && !OS(MACOSX)
-+#if ((CPU(X86) && defined(__SSE2__)) || CPU(X86_64)) && !OS(MACOSX)
- #include <emmintrin.h>
- #endif
-
-+#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
-+#error SSE2 parts must be built with -msse2
-+#endif
-+
- namespace blink {
-
- using namespace VectorMath;
-
-+#ifndef BUILD_ONLY_THE_SSE2_PARTS
-+
- DirectConvolver::DirectConvolver(size_t inputBlockSize)
- : m_inputBlockSize(inputBlockSize)
- , m_buffer(inputBlockSize * 2)
- {
-+#if CPU(X86)
-+ base::CPU cpu;
-+ m_haveSSE2 = cpu.has_sse2();
-+#endif
- }
-
-+#endif
-+
-+#ifdef BUILD_ONLY_THE_SSE2_PARTS
-+void DirectConvolver::m_processSSE2(AudioFloatArray* convolutionKernel, const float* sourceP, float* destP, size_t framesToProcess)
-+#else
- void DirectConvolver::process(AudioFloatArray* convolutionKernel, const float* sourceP, float* destP, size_t framesToProcess)
-+#endif
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (m_haveSSE2) {
-+ m_processSSE2(convolutionKernel, sourceP, destP, framesToProcess);
-+ return;
-+ }
-+#endif
- ASSERT(framesToProcess == m_inputBlockSize);
- if (framesToProcess != m_inputBlockSize)
- return;
-@@ -82,7 +107,7 @@
- #endif // CPU(X86)
- #else
- size_t i = 0;
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- // Convolution using SSE2. Currently only do this if both |kernelSize| and |framesToProcess|
- // are multiples of 4. If not, use the straightforward loop below.
-
-@@ -392,7 +417,7 @@
- }
- destP[i++] = sum;
- }
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- }
- #endif
- #endif // OS(MACOSX)
-@@ -401,10 +426,14 @@
- memcpy(m_buffer.data(), inputP, sizeof(float) * framesToProcess);
- }
-
-+#ifndef BUILD_ONLY_THE_SSE2_PARTS
-+
- void DirectConvolver::reset()
- {
- m_buffer.zero();
- }
-
-+#endif
-+
- } // namespace blink
-
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolver.h 2017-03-05 17:26:26.241985240 +0100
-@@ -32,6 +32,7 @@
- #include "platform/PlatformExport.h"
- #include "platform/audio/AudioArray.h"
- #include "wtf/Allocator.h"
-+#include "wtf/CPU.h"
- #include "wtf/Noncopyable.h"
-
- namespace blink {
-@@ -50,6 +51,11 @@
- size_t m_inputBlockSize;
-
- AudioFloatArray m_buffer;
-+
-+#if CPU(X86)
-+ bool m_haveSSE2;
-+ void m_processSSE2(AudioFloatArray* convolutionKernel, const float* sourceP, float* destP, size_t framesToProcess);
-+#endif
- };
-
- } // namespace blink
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolverSSE2.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolverSSE2.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolverSSE2.cpp 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/DirectConvolverSSE2.cpp 2017-03-05 17:26:26.242985225 +0100
-@@ -0,0 +1,2 @@
-+#define BUILD_ONLY_THE_SSE2_PARTS
-+#include "DirectConvolver.cpp"
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.cpp 2017-03-05 17:26:26.242985225 +0100
-@@ -26,15 +26,22 @@
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-+// include this first to get it before the CPU() function-like macro
-+#include "base/cpu.h"
-+
- #include "platform/audio/SincResampler.h"
- #include "platform/audio/AudioBus.h"
- #include "wtf/CPU.h"
- #include "wtf/MathExtras.h"
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- #include <emmintrin.h>
- #endif
-
-+#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
-+#error SSE2 parts must be built with -msse2
-+#endif
-+
- // Input buffer layout, dividing the total buffer into regions (r0 - r5):
- //
- // |----------------|----------------------------------------------------------------|----------------|
-@@ -64,6 +71,8 @@
-
- namespace blink {
-
-+#ifndef BUILD_ONLY_THE_SSE2_PARTS
-+
- SincResampler::SincResampler(double scaleFactor, unsigned kernelSize, unsigned numberOfKernelOffsets)
- : m_scaleFactor(scaleFactor)
- , m_kernelSize(kernelSize)
-@@ -77,6 +86,10 @@
- , m_sourceProvider(nullptr)
- , m_isBufferPrimed(false)
- {
-+#if CPU(X86)
-+ base::CPU cpu;
-+ m_haveSSE2 = cpu.has_sse2();
-+#endif
- initializeKernel();
- }
-
-@@ -193,8 +206,20 @@
- }
- }
-
-+#endif
-+
-+#ifdef BUILD_ONLY_THE_SSE2_PARTS
-+void SincResampler::m_processSSE2(AudioSourceProvider* sourceProvider, float* destination, size_t framesToProcess)
-+#else
- void SincResampler::process(AudioSourceProvider* sourceProvider, float* destination, size_t framesToProcess)
-+#endif
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (m_haveSSE2) {
-+ m_processSSE2(sourceProvider, destination, framesToProcess);
-+ return;
-+ }
-+#endif
- bool isGood = sourceProvider && m_blockSize > m_kernelSize && m_inputBuffer.size() >= m_blockSize + m_kernelSize && !(m_kernelSize % 2);
- ASSERT(isGood);
- if (!isGood)
-@@ -256,7 +281,7 @@
- {
- float input;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- // If the sourceP address is not 16-byte aligned, the first several frames (at most three) should be processed seperately.
- while ((reinterpret_cast<uintptr_t>(inputP) & 0x0F) && n) {
- CONVOLVE_ONE_SAMPLE
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResampler.h 2017-03-05 17:26:26.305984290 +0100
-@@ -33,6 +33,7 @@
- #include "platform/audio/AudioArray.h"
- #include "platform/audio/AudioSourceProvider.h"
- #include "wtf/Allocator.h"
-+#include "wtf/CPU.h"
- #include "wtf/Noncopyable.h"
-
- namespace blink {
-@@ -84,6 +85,11 @@
-
- // The buffer is primed once at the very beginning of processing.
- bool m_isBufferPrimed;
-+
-+#if CPU(X86)
-+ bool m_haveSSE2;
-+ void m_processSSE2(AudioSourceProvider*, float* destination, size_t framesToProcess);
-+#endif
- };
-
- } // namespace blink
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResamplerSSE2.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResamplerSSE2.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResamplerSSE2.cpp 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/SincResamplerSSE2.cpp 2017-03-05 17:26:26.305984290 +0100
-@@ -0,0 +1,2 @@
-+#define BUILD_ONLY_THE_SSE2_PARTS
-+#include "SincResampler.cpp"
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.cpp 2017-03-05 17:26:26.306984275 +0100
-@@ -22,6 +22,9 @@
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-+// include this first to get it before the CPU() function-like macro
-+#include "base/cpu.h"
-+
- #include "platform/audio/VectorMath.h"
- #include "wtf/Assertions.h"
- #include "wtf/CPU.h"
-@@ -32,10 +35,14 @@
- #include <Accelerate/Accelerate.h>
- #endif
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- #include <emmintrin.h>
- #endif
-
-+#if defined(BUILD_ONLY_THE_SSE2_PARTS) && !defined(__SSE2__)
-+#error SSE2 parts must be built with -msse2
-+#endif
-+
- #if HAVE(ARM_NEON_INTRINSICS)
- #include <arm_neon.h>
- #endif
-@@ -118,11 +125,25 @@
- }
- #else
-
-+#ifdef BUILD_ONLY_THE_SSE2_PARTS
-+namespace SSE2 {
-+#endif
-+
-+#if CPU(X86) && !defined(__SSE2__)
-+static base::CPU cpu;
-+#endif
-+
- void vsma(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess)
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vsma(sourceP, sourceStride, scale, destP, destStride, framesToProcess);
-+ return;
-+ }
-+#endif
- int n = framesToProcess;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if ((sourceStride == 1) && (destStride == 1)) {
- float k = *scale;
-
-@@ -193,9 +214,15 @@
-
- void vsmul(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess)
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vsmul(sourceP, sourceStride, scale, destP, destStride, framesToProcess);
-+ return;
-+ }
-+#endif
- int n = framesToProcess;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if ((sourceStride == 1) && (destStride == 1)) {
- float k = *scale;
-
-@@ -266,16 +293,22 @@
- sourceP += sourceStride;
- destP += destStride;
- }
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- }
- #endif
- }
-
- void vadd(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess)
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vadd(source1P, sourceStride1, source2P, sourceStride2, destP, destStride, framesToProcess);
-+ return;
-+ }
-+#endif
- int n = framesToProcess;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if ((sourceStride1 ==1) && (sourceStride2 == 1) && (destStride == 1)) {
- // If the sourceP address is not 16-byte aligned, the first several frames (at most three) should be processed separately.
- while ((reinterpret_cast<size_t>(source1P) & 0x0F) && n) {
-@@ -378,17 +411,23 @@
- source2P += sourceStride2;
- destP += destStride;
- }
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- }
- #endif
- }
-
- void vmul(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess)
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vmul(source1P, sourceStride1, source2P, sourceStride2, destP, destStride, framesToProcess);
-+ return;
-+ }
-+#endif
-
- int n = framesToProcess;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if ((sourceStride1 == 1) && (sourceStride2 == 1) && (destStride == 1)) {
- // If the source1P address is not 16-byte aligned, the first several frames (at most three) should be processed separately.
- while ((reinterpret_cast<uintptr_t>(source1P) & 0x0F) && n) {
-@@ -460,8 +499,14 @@
-
- void zvmul(const float* real1P, const float* imag1P, const float* real2P, const float* imag2P, float* realDestP, float* imagDestP, size_t framesToProcess)
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::zvmul(real1P, imag1P, real2P, imag2P, realDestP, imagDestP, framesToProcess);
-+ return;
-+ }
-+#endif
- unsigned i = 0;
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- // Only use the SSE optimization in the very common case that all addresses are 16-byte aligned.
- // Otherwise, fall through to the scalar code below.
- if (!(reinterpret_cast<uintptr_t>(real1P) & 0x0F)
-@@ -516,10 +561,16 @@
-
- void vsvesq(const float* sourceP, int sourceStride, float* sumP, size_t framesToProcess)
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vsvesq(sourceP, sourceStride, sumP, framesToProcess);
-+ return;
-+ }
-+#endif
- int n = framesToProcess;
- float sum = 0;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if (sourceStride == 1) {
- // If the sourceP address is not 16-byte aligned, the first several frames (at most three) should be processed separately.
- while ((reinterpret_cast<uintptr_t>(sourceP) & 0x0F) && n) {
-@@ -581,10 +632,16 @@
-
- void vmaxmgv(const float* sourceP, int sourceStride, float* maxP, size_t framesToProcess)
- {
-+#if CPU(X86) && !defined(__SSE2__)
-+ if (cpu.has_sse2()) {
-+ blink::VectorMath::SSE2::vmaxmgv(sourceP, sourceStride, maxP, framesToProcess);
-+ return;
-+ }
-+#endif
- int n = framesToProcess;
- float max = 0;
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- if (sourceStride == 1) {
- // If the sourceP address is not 16-byte aligned, the first several frames (at most three) should be processed separately.
- while ((reinterpret_cast<uintptr_t>(sourceP) & 0x0F) && n) {
-@@ -648,6 +705,8 @@
- *maxP = max;
- }
-
-+#ifndef BUILD_ONLY_THE_SSE2_PARTS
-+
- void vclip(const float* sourceP, int sourceStride, const float* lowThresholdP, const float* highThresholdP, float* destP, int destStride, size_t framesToProcess)
- {
- int n = framesToProcess;
-@@ -678,6 +737,12 @@
- }
- }
-
-+#endif
-+
-+#ifdef BUILD_ONLY_THE_SSE2_PARTS
-+} // namespace SSE2
-+#endif
-+
- #endif // OS(MACOSX)
-
- } // namespace VectorMath
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMath.h 2017-03-05 17:26:26.306984275 +0100
-@@ -26,6 +26,7 @@
- #define VectorMath_h
-
- #include "platform/PlatformExport.h"
-+#include "wtf/CPU.h"
- #include "wtf/build_config.h"
- #include <cstddef>
-
-@@ -55,6 +56,28 @@
- // Copies elements while clipping values to the threshold inputs.
- PLATFORM_EXPORT void vclip(const float* sourceP, int sourceStride, const float* lowThresholdP, const float* highThresholdP, float* destP, int destStride, size_t framesToProcess);
-
-+#if CPU(X86)
-+namespace SSE2 {
-+// Vector scalar multiply and then add.
-+PLATFORM_EXPORT void vsma(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess);
-+
-+PLATFORM_EXPORT void vsmul(const float* sourceP, int sourceStride, const float* scale, float* destP, int destStride, size_t framesToProcess);
-+PLATFORM_EXPORT void vadd(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess);
-+
-+// Finds the maximum magnitude of a float vector.
-+PLATFORM_EXPORT void vmaxmgv(const float* sourceP, int sourceStride, float* maxP, size_t framesToProcess);
-+
-+// Sums the squares of a float vector's elements.
-+PLATFORM_EXPORT void vsvesq(const float* sourceP, int sourceStride, float* sumP, size_t framesToProcess);
-+
-+// For an element-by-element multiply of two float vectors.
-+PLATFORM_EXPORT void vmul(const float* source1P, int sourceStride1, const float* source2P, int sourceStride2, float* destP, int destStride, size_t framesToProcess);
-+
-+// Multiplies two complex vectors.
-+PLATFORM_EXPORT void zvmul(const float* real1P, const float* imag1P, const float* real2P, const float* imag2P, float* realDestP, float* imagDestP, size_t framesToProcess);
-+}
-+#endif
-+
- } // namespace VectorMath
- } // namespace blink
-
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMathSSE2.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMathSSE2.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMathSSE2.cpp 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/audio/VectorMathSSE2.cpp 2017-03-05 17:26:26.307984260 +0100
-@@ -0,0 +1,2 @@
-+#define BUILD_ONLY_THE_SSE2_PARTS
-+#include "VectorMath.cpp"
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/blink_platform.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/blink_platform.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/blink_platform.gyp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/blink_platform.gyp 2017-03-05 17:26:26.307984260 +0100
-@@ -392,6 +392,11 @@
- '<(DEPTH)/third_party/openmax_dl/dl/dl.gyp:openmax_dl',
- ],
- }],
-+ ['target_arch == "ia32"', {
-+ 'dependencies': [
-+ 'blink_sse2',
-+ ],
-+ }],
- ['target_arch=="arm"', {
- 'dependencies': [
- 'blink_arm_neon',
-@@ -406,6 +411,36 @@
- }],
- ],
- },
-+ {
-+ 'target_name': 'blink_sse2',
-+ 'conditions': [
-+ ['target_arch=="ia32"', {
-+ 'type': 'static_library',
-+ 'dependencies': [
-+ '<(DEPTH)/third_party/khronos/khronos.gyp:khronos_headers',
-+ '../config.gyp:config',
-+ '../wtf/wtf.gyp:wtf',
-+ 'blink_common',
-+ 'blink_heap_asm_stubs',
-+ ],
-+ 'defines': [
-+ 'BLINK_PLATFORM_IMPLEMENTATION=1',
-+ 'INSIDE_BLINK',
-+ ],
-+ 'sources': [
-+ 'audio/DirectConvolverSSE2.cpp',
-+ 'audio/SincResamplerSSE2.cpp',
-+ 'audio/VectorMathSSE2.cpp',
-+ ],
-+ 'cflags': [
-+ '-msse2',
-+ '-mfpmath=sse',
-+ ],
-+ },{ # target_arch != "ia32"
-+ 'type': 'none',
-+ }],
-+ ],
-+ },
- # The *NEON.cpp files fail to compile when -mthumb is passed. Force
- # them to build in ARM mode.
- # See https://bugs.webkit.org/show_bug.cgi?id=62916.
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/cpu/x86/WebGLImageConversionSSE.h 2017-03-05 17:26:26.308984245 +0100
-@@ -5,7 +5,7 @@
- #ifndef WebGLImageConversionSSE_h
- #define WebGLImageConversionSSE_h
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
-
- #include <emmintrin.h>
-
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/WebKit/Source/platform/graphics/gpu/WebGLImageConversion.cpp 2017-03-05 17:26:26.309984231 +0100
-@@ -423,7 +423,7 @@
- const uint32_t* source32 = reinterpret_cast_ptr<const uint32_t*>(source);
- uint32_t* destination32 = reinterpret_cast_ptr<uint32_t*>(destination);
-
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::unpackOneRowOfBGRA8LittleToRGBA8(source32, destination32, pixelsPerRow);
- #endif
- for (unsigned i = 0; i < pixelsPerRow; ++i) {
-@@ -442,7 +442,7 @@
-
- template<> void unpack<WebGLImageConversion::DataFormatRGBA5551, uint16_t, uint8_t>(const uint16_t* source, uint8_t* destination, unsigned pixelsPerRow)
- {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::unpackOneRowOfRGBA5551LittleToRGBA8(source, destination, pixelsPerRow);
- #endif
- #if HAVE(ARM_NEON_INTRINSICS)
-@@ -464,7 +464,7 @@
-
- template<> void unpack<WebGLImageConversion::DataFormatRGBA4444, uint16_t, uint8_t>(const uint16_t* source, uint8_t* destination, unsigned pixelsPerRow)
- {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::unpackOneRowOfRGBA4444LittleToRGBA8(source, destination, pixelsPerRow);
- #endif
- #if HAVE(ARM_NEON_INTRINSICS)
-@@ -630,7 +630,7 @@
- // FIXME: this routine is lossy and must be removed.
- template<> void pack<WebGLImageConversion::DataFormatR8, WebGLImageConversion::AlphaDoUnmultiply, uint8_t, uint8_t>(const uint8_t* source, uint8_t* destination, unsigned pixelsPerRow)
- {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::packOneRowOfRGBA8LittleToR8(source, destination, pixelsPerRow);
- #endif
- for (unsigned i = 0; i < pixelsPerRow; ++i) {
-@@ -667,7 +667,7 @@
- // FIXME: this routine is lossy and must be removed.
- template<> void pack<WebGLImageConversion::DataFormatRA8, WebGLImageConversion::AlphaDoUnmultiply, uint8_t, uint8_t>(const uint8_t* source, uint8_t* destination, unsigned pixelsPerRow)
- {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::packOneRowOfRGBA8LittleToRA8(source, destination, pixelsPerRow);
- #endif
- for (unsigned i = 0; i < pixelsPerRow; ++i) {
-@@ -741,7 +741,7 @@
- // FIXME: this routine is lossy and must be removed.
- template<> void pack<WebGLImageConversion::DataFormatRGBA8, WebGLImageConversion::AlphaDoUnmultiply, uint8_t, uint8_t>(const uint8_t* source, uint8_t* destination, unsigned pixelsPerRow)
- {
--#if CPU(X86) || CPU(X86_64)
-+#if (CPU(X86) && defined(__SSE2__)) || CPU(X86_64)
- SIMD::packOneRowOfRGBA8LittleToRGBA8(source, destination, pixelsPerRow);
- #else
- for (unsigned i = 0; i < pixelsPerRow; ++i) {
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/third_party/webrtc/common_audio/real_fourier.cc 2017-03-05 18:14:44.694725685 +0100
-@@ -14,6 +14,7 @@
- #include "webrtc/common_audio/real_fourier_ooura.h"
- #include "webrtc/common_audio/real_fourier_openmax.h"
- #include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
-+#include "webrtc/system_wrappers/include/cpu_features_wrapper.h"
-
- namespace webrtc {
-
-@@ -23,7 +24,15 @@
-
- std::unique_ptr<RealFourier> RealFourier::Create(int fft_order) {
- #if defined(RTC_USE_OPENMAX_DL)
-+#if defined(WEBRTC_ARCH_X86_FAMILY) && !defined(__SSE2__)
-+ // x86 CPU detection required.
-+ if (WebRtc_GetCPUInfo(kSSE2))
-+ return std::unique_ptr<RealFourier>(new RealFourierOpenmax(fft_order));
-+ else
-+ return std::unique_ptr<RealFourier>(new RealFourierOoura(fft_order));
-+#else
- return std::unique_ptr<RealFourier>(new RealFourierOpenmax(fft_order));
-+#endif
- #else
- return std::unique_ptr<RealFourier>(new RealFourierOoura(fft_order));
- #endif
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/tools/gyp/pylib/gyp/generator/ninja.py qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/tools/gyp/pylib/gyp/generator/ninja.py
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/tools/gyp/pylib/gyp/generator/ninja.py 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/tools/gyp/pylib/gyp/generator/ninja.py 2017-03-05 17:26:26.310984216 +0100
-@@ -1345,6 +1345,8 @@
- # Make sure that we have relative paths to our out/(Release|Debug), where we generate our .pri file, and then prepend $$PWD to them.
- prefixed_objects = ['$$PWD/' + o for o in toAbsPaths(objects)]
- prefixed_archives = ['$$PWD/' + o for o in toAbsPaths(libs)]
-+ if len(solibs):
-+ prefixed_solibs = ['$$PWD/' + so for so in toAbsPaths(solibs)]
-
- pri_file.write("QMAKE_LFLAGS += %s\n" % qmakeLiteral(' '.join(prefixed_lflags)))
- pri_file.write("OBJECTS += %s\n" % qmakeLiteral(' '.join(prefixed_objects)))
-@@ -1353,6 +1355,8 @@
- pri_file.write("LIBS_PRIVATE += -Wl,--start-group %s -Wl,--end-group\n" % qmakeLiteral(' '.join(prefixed_archives)))
- else:
- pri_file.write("LIBS_PRIVATE += %s\n" % qmakeLiteral(' '.join(prefixed_archives)))
-+ if len(solibs):
-+ pri_file.write("LIBS_PRIVATE += %s\n" % qmakeLiteral(' '.join(prefixed_solibs)))
- # External libs have to come after objects/archives, the linker resolve them in order.
- pri_file.write("LIBS_PRIVATE += %s\n" % qmakeLiteral(' '.join(prefixed_library_dirs + prefixed_libraries)))
- # Make sure that if ninja modifies one of the inputs, qmake/make will link again.
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/BUILD.gn qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/BUILD.gn 2017-03-05 18:22:29.296777508 +0100
-@@ -1523,41 +1523,41 @@
-
- if (v8_target_cpu == "x86") {
- sources += [
-- "src/compiler/ia32/code-generator-ia32.cc",
-- "src/compiler/ia32/instruction-codes-ia32.h",
-- "src/compiler/ia32/instruction-scheduler-ia32.cc",
-- "src/compiler/ia32/instruction-selector-ia32.cc",
-- "src/crankshaft/ia32/lithium-codegen-ia32.cc",
-- "src/crankshaft/ia32/lithium-codegen-ia32.h",
-- "src/crankshaft/ia32/lithium-gap-resolver-ia32.cc",
-- "src/crankshaft/ia32/lithium-gap-resolver-ia32.h",
-- "src/crankshaft/ia32/lithium-ia32.cc",
-- "src/crankshaft/ia32/lithium-ia32.h",
-- "src/debug/ia32/debug-ia32.cc",
-- "src/full-codegen/ia32/full-codegen-ia32.cc",
-- "src/ia32/assembler-ia32-inl.h",
-- "src/ia32/assembler-ia32.cc",
-- "src/ia32/assembler-ia32.h",
-- "src/ia32/builtins-ia32.cc",
-- "src/ia32/code-stubs-ia32.cc",
-- "src/ia32/code-stubs-ia32.h",
-- "src/ia32/codegen-ia32.cc",
-- "src/ia32/codegen-ia32.h",
-- "src/ia32/cpu-ia32.cc",
-- "src/ia32/deoptimizer-ia32.cc",
-- "src/ia32/disasm-ia32.cc",
-- "src/ia32/frames-ia32.cc",
-- "src/ia32/frames-ia32.h",
-- "src/ia32/interface-descriptors-ia32.cc",
-- "src/ia32/macro-assembler-ia32.cc",
-- "src/ia32/macro-assembler-ia32.h",
-- "src/ic/ia32/access-compiler-ia32.cc",
-- "src/ic/ia32/handler-compiler-ia32.cc",
-- "src/ic/ia32/ic-compiler-ia32.cc",
-- "src/ic/ia32/ic-ia32.cc",
-- "src/ic/ia32/stub-cache-ia32.cc",
-- "src/regexp/ia32/regexp-macro-assembler-ia32.cc",
-- "src/regexp/ia32/regexp-macro-assembler-ia32.h",
-+ "src/compiler/x87/code-generator-x87.cc",
-+ "src/compiler/x87/instruction-codes-x87.h",
-+ "src/compiler/x87/instruction-scheduler-x87.cc",
-+ "src/compiler/x87/instruction-selector-x87.cc",
-+ "src/crankshaft/x87/lithium-codegen-x87.cc",
-+ "src/crankshaft/x87/lithium-codegen-x87.h",
-+ "src/crankshaft/x87/lithium-gap-resolver-x87.cc",
-+ "src/crankshaft/x87/lithium-gap-resolver-x87.h",
-+ "src/crankshaft/x87/lithium-x87.cc",
-+ "src/crankshaft/x87/lithium-x87.h",
-+ "src/debug/x87/debug-x87.cc",
-+ "src/full-codegen/x87/full-codegen-x87.cc",
-+ "src/x87/assembler-x87-inl.h",
-+ "src/x87/assembler-x87.cc",
-+ "src/x87/assembler-x87.h",
-+ "src/x87/builtins-x87.cc",
-+ "src/x87/code-stubs-x87.cc",
-+ "src/x87/code-stubs-x87.h",
-+ "src/x87/codegen-x87.cc",
-+ "src/x87/codegen-x87.h",
-+ "src/x87/cpu-x87.cc",
-+ "src/x87/deoptimizer-x87.cc",
-+ "src/x87/disasm-x87.cc",
-+ "src/x87/frames-x87.cc",
-+ "src/x87/frames-x87.h",
-+ "src/x87/interface-descriptors-x87.cc",
-+ "src/x87/macro-assembler-x87.cc",
-+ "src/x87/macro-assembler-x87.h",
-+ "src/ic/x87/access-compiler-x87.cc",
-+ "src/ic/x87/handler-compiler-x87.cc",
-+ "src/ic/x87/ic-compiler-x87.cc",
-+ "src/ic/x87/ic-x87.cc",
-+ "src/ic/x87/stub-cache-x87.cc",
-+ "src/regexp/x87/regexp-macro-assembler-x87.cc",
-+ "src/regexp/x87/regexp-macro-assembler-x87.h",
- ]
- } else if (v8_target_cpu == "x64") {
- sources += [
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/gypfiles/standalone.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/gypfiles/standalone.gypi
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/gypfiles/standalone.gypi 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/gypfiles/standalone.gypi 2017-03-05 18:20:24.988636550 +0100
-@@ -159,6 +159,9 @@
- }, {
- 'gomadir': '<!(/bin/echo -n ${HOME}/goma)',
- }],
-+ ['target_arch=="ia32"', {
-+ 'v8_target_arch%': 'x87',
-+ }],
- ['host_arch!="ppc" and host_arch!="ppc64" and host_arch!="ppc64le" and host_arch!="s390" and host_arch!="s390x"', {
- 'host_clang%': 1,
- }, {
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/gypfiles/toolchain.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/gypfiles/toolchain.gypi
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/gypfiles/toolchain.gypi 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/gypfiles/toolchain.gypi 2017-03-05 17:27:34.951965375 +0100
-@@ -95,6 +95,9 @@
- 'binutils_dir%': '',
-
- 'conditions': [
-+ ['target_arch=="ia32"', {
-+ 'v8_target_arch%': 'x87',
-+ }],
- ['OS=="linux" and host_arch=="x64"', {
- 'binutils_dir%': 'third_party/binutils/Linux_x64/Release/bin',
- }],
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/make-v8-sse2-gyp.sh 2017-03-05 17:27:34.953965345 +0100
-@@ -0,0 +1,56 @@
-+#!/bin/sh
-+# This script renames the v8 targets to _sse2 names so that they do not conflict
-+# with the non-SSE2 versions.
-+
-+# Copyright 2016 Kevin Kofler. All rights reserved.
-+# Redistribution and use in source and binary forms, with or without
-+# modification, are permitted provided that the following conditions are
-+# met:
-+#
-+# * Redistributions of source code must retain the above copyright
-+# notice, this list of conditions and the following disclaimer.
-+# * Redistributions in binary form must reproduce the above
-+# copyright notice, this list of conditions and the following
-+# disclaimer in the documentation and/or other materials provided
-+# with the distribution.
-+# * Neither the name of Google Inc. nor the names of its
-+# contributors may be used to endorse or promote products derived
-+# from this software without specific prior written permission.
-+#
-+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+# add comment noting that the file is generated
-+echo "# Generated from v8.gyp by make-v8-sse2-gyp.sh" >v8_sse2.gyp
-+# rename all target names
-+SUBTARGETS=`grep "'target_name': '" v8.gyp | sed -e "s/^.*'target_name': '//g" -e "s/',$//g"`
-+SEDS=
-+for SUBTARGET in $SUBTARGETS ; do
-+ SEDS=$SEDS\ -e\ "s/'$SUBTARGET\(['#]\)/'${SUBTARGET}_sse2\1/g"
-+done
-+# in addition:
-+# * set v8_target_arch to "ia32" (instead of "x87")
-+# * rename all actions
-+# * fix mksnapshot_exec to match the renamed target
-+# * rename the generated snapshot.cc (but not mksnapshot.cc) to snapshot_sse2.cc
-+# * rename the generated *libraries.cc to *libraries_sse2.cc
-+# * rename the generated *.bin to *_sse2.bin
-+# * set product_name and product_dir for the v8_sse2 target
-+sed -e "s/^\( 'variables': {\)/\1\n 'v8_target_arch': 'ia32',/g" \
-+ -e "s/\('action_name': '\)/\1v8_sse2_/g" \
-+ $SEDS \
-+ -e "s/\('mksnapshot_exec': '.*mksnapshot\)/\1_sse2/g" \
-+ -e "s#/snapshot\.cc#/snapshot_sse2.cc#g" \
-+ -e "s/libraries\.cc/libraries_sse2.cc/g" \
-+ -e "s/\.bin/_sse2.bin/g" \
-+ -e "s#^\( *\)\('target_name': 'v8_sse2',\)#\1\2\n\1'product_name': 'v8',\n\1'product_dir': '<(PRODUCT_DIR)/lib/sse2',#g" \
-+ v8.gyp >>v8_sse2.gyp
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/v8.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/v8.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/v8.gyp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/v8.gyp 2017-03-05 17:30:17.500552662 +0100
-@@ -36,6 +36,14 @@
- 'v8_experimental_extra_library_files%': [],
- 'mksnapshot_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)mksnapshot<(EXECUTABLE_SUFFIX)',
- 'remove_v8base_debug_symbols%': 0,
-+ 'conditions': [
-+ # build V8 shared on ia32 so we can swap x87 vs. SSE2 builds
-+ ['target_arch == "ia32"', {
-+ 'v8_component%': 'shared_library',
-+ }, {
-+ 'v8_component%': '<(component)',
-+ }],
-+ ],
- },
- 'includes': ['../gypfiles/toolchain.gypi', '../gypfiles/features.gypi'],
- 'targets': [
-@@ -49,8 +57,8 @@
- }, {
- 'toolsets': ['target'],
- }],
-- ['component=="shared_library"', {
-- 'type': '<(component)',
-+ ['v8_component=="shared_library"', {
-+ 'type': '<(v8_component)',
- 'sources': [
- # Note: on non-Windows we still build this file so that gyp
- # has some sources to link into the component.
-@@ -161,7 +169,7 @@
- 'js2c',
- ],
- }],
-- ['component=="shared_library"', {
-+ ['v8_component=="shared_library"', {
- 'defines': [
- 'V8_SHARED',
- 'BUILDING_V8_SHARED',
-@@ -253,7 +261,7 @@
- 'toolsets': ['target'],
- 'dependencies': ['js2c'],
- }],
-- ['component=="shared_library"', {
-+ ['v8_component=="shared_library"', {
- 'defines': [
- 'BUILDING_V8_SHARED',
- 'V8_SHARED',
-@@ -281,7 +289,7 @@
- 'natives_blob',
- ],
- }],
-- ['component=="shared_library"', {
-+ ['v8_component=="shared_library"', {
- 'defines': [
- 'V8_SHARED',
- 'BUILDING_V8_SHARED',
-@@ -1608,7 +1616,7 @@
- # See http://crbug.com/485155.
- 'msvs_shard': 4,
- }],
-- ['component=="shared_library"', {
-+ ['v8_component=="shared_library"', {
- 'defines': [
- 'BUILDING_V8_SHARED',
- 'V8_SHARED',
-diff -Nur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/v8_sse2.gyp qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/v8_sse2.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/v8_sse2.gyp 1970-01-01 01:00:00.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/3rdparty/chromium/v8/src/v8_sse2.gyp 2017-03-05 18:25:37.781958850 +0100
-@@ -0,0 +1,2313 @@
-+# Generated from v8.gyp by make-v8-sse2-gyp.sh
-+# Copyright 2012 the V8 project authors. All rights reserved.
-+# Redistribution and use in source and binary forms, with or without
-+# modification, are permitted provided that the following conditions are
-+# met:
-+#
-+# * Redistributions of source code must retain the above copyright
-+# notice, this list of conditions and the following disclaimer.
-+# * Redistributions in binary form must reproduce the above
-+# copyright notice, this list of conditions and the following
-+# disclaimer in the documentation and/or other materials provided
-+# with the distribution.
-+# * Neither the name of Google Inc. nor the names of its
-+# contributors may be used to endorse or promote products derived
-+# from this software without specific prior written permission.
-+#
-+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-+
-+{
-+ 'variables': {
-+ 'v8_target_arch': 'ia32',
-+ 'v8_code': 1,
-+ 'v8_random_seed%': 314159265,
-+ 'v8_vector_stores%': 0,
-+ 'embed_script%': "",
-+ 'warmup_script%': "",
-+ 'v8_extra_library_files%': [],
-+ 'v8_experimental_extra_library_files%': [],
-+ 'mksnapshot_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)mksnapshot_sse2<(EXECUTABLE_SUFFIX)',
-+ 'remove_v8base_debug_symbols%': 0,
-+ 'conditions': [
-+ # build V8 shared on ia32 so we can swap x87 vs. SSE2 builds
-+ ['target_arch == "ia32"', {
-+ 'v8_component%': 'shared_library',
-+ }, {
-+ 'v8_component%': '<(component)',
-+ }],
-+ ],
-+ },
-+ 'includes': ['../gypfiles/toolchain.gypi', '../gypfiles/features.gypi'],
-+ 'targets': [
-+ {
-+ 'target_name': 'v8_sse2',
-+ 'product_name': 'v8',
-+ 'product_dir': '<(PRODUCT_DIR)/lib/sse2',
-+ 'dependencies_traverse': 1,
-+ 'dependencies': ['v8_maybe_snapshot_sse2'],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ['v8_component=="shared_library"', {
-+ 'type': '<(v8_component)',
-+ 'sources': [
-+ # Note: on non-Windows we still build this file so that gyp
-+ # has some sources to link into the component.
-+ 'v8dll-main.cc',
-+ ],
-+ 'include_dirs': [
-+ '..',
-+ ],
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'BUILDING_V8_SHARED',
-+ ],
-+ 'direct_dependent_settings': {
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'USING_V8_SHARED',
-+ ],
-+ },
-+ 'target_conditions': [
-+ ['OS=="android" and _toolset=="target"', {
-+ 'libraries': [
-+ '-llog',
-+ ],
-+ 'include_dirs': [
-+ 'src/common/android/include',
-+ ],
-+ }],
-+ ],
-+ 'conditions': [
-+ ['OS=="mac"', {
-+ 'xcode_settings': {
-+ 'OTHER_LDFLAGS': ['-dynamiclib', '-all_load']
-+ },
-+ }],
-+ ['soname_version!=""', {
-+ 'product_extension': 'so.<(soname_version)',
-+ }],
-+ ],
-+ },
-+ {
-+ 'type': 'none',
-+ }],
-+ ],
-+ 'direct_dependent_settings': {
-+ 'include_dirs': [
-+ '../include',
-+ ],
-+ },
-+ },
-+ {
-+ # This rule delegates to either v8_snapshot, v8_nosnapshot, or
-+ # v8_external_snapshot, depending on the current variables.
-+ # The intention is to make the 'calling' rules a bit simpler.
-+ 'target_name': 'v8_maybe_snapshot_sse2',
-+ 'type': 'none',
-+ 'conditions': [
-+ ['v8_use_snapshot!="true"', {
-+ # The dependency on v8_base should come from a transitive
-+ # dependency however the Android toolchain requires libv8_base.a
-+ # to appear before libv8_snapshot.a so it's listed explicitly.
-+ 'dependencies': ['v8_base_sse2', 'v8_nosnapshot_sse2'],
-+ }],
-+ ['v8_use_snapshot=="true" and v8_use_external_startup_data==0', {
-+ # The dependency on v8_base should come from a transitive
-+ # dependency however the Android toolchain requires libv8_base.a
-+ # to appear before libv8_snapshot.a so it's listed explicitly.
-+ 'dependencies': ['v8_base_sse2', 'v8_snapshot_sse2'],
-+ }],
-+ ['v8_use_snapshot=="true" and v8_use_external_startup_data==1 and want_separate_host_toolset==0', {
-+ 'dependencies': ['v8_base_sse2', 'v8_external_snapshot_sse2'],
-+ 'inputs': [ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin', ],
-+ }],
-+ ['v8_use_snapshot=="true" and v8_use_external_startup_data==1 and want_separate_host_toolset==1', {
-+ 'dependencies': ['v8_base_sse2', 'v8_external_snapshot_sse2'],
-+ 'target_conditions': [
-+ ['_toolset=="host"', {
-+ 'inputs': [
-+ '<(PRODUCT_DIR)/snapshot_blob_host_sse2.bin',
-+ ],
-+ }, {
-+ 'inputs': [
-+ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
-+ ],
-+ }],
-+ ],
-+ }],
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ]
-+ },
-+ {
-+ 'target_name': 'v8_snapshot_sse2',
-+ 'type': 'static_library',
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ 'dependencies': [
-+ 'mksnapshot_sse2#host',
-+ 'js2c_sse2#host',
-+ ],
-+ }, {
-+ 'toolsets': ['target'],
-+ 'dependencies': [
-+ 'mksnapshot_sse2',
-+ 'js2c_sse2',
-+ ],
-+ }],
-+ ['v8_component=="shared_library"', {
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'BUILDING_V8_SHARED',
-+ ],
-+ 'direct_dependent_settings': {
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'USING_V8_SHARED',
-+ ],
-+ },
-+ }],
-+ ],
-+ 'dependencies': [
-+ 'v8_base_sse2',
-+ ],
-+ 'include_dirs+': [
-+ '..',
-+ ],
-+ 'sources': [
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
-+ '<(INTERMEDIATE_DIR)/snapshot_sse2.cc',
-+ ],
-+ 'actions': [
-+ {
-+ 'action_name': 'v8_sse2_run_mksnapshot',
-+ 'inputs': [
-+ '<(mksnapshot_exec)',
-+ ],
-+ 'conditions': [
-+ ['embed_script!=""', {
-+ 'inputs': [
-+ '<(embed_script)',
-+ ],
-+ }],
-+ ['warmup_script!=""', {
-+ 'inputs': [
-+ '<(warmup_script)',
-+ ],
-+ }],
-+ ],
-+ 'outputs': [
-+ '<(INTERMEDIATE_DIR)/snapshot_sse2.cc',
-+ ],
-+ 'variables': {
-+ 'mksnapshot_flags': [],
-+ 'conditions': [
-+ ['v8_random_seed!=0', {
-+ 'mksnapshot_flags': ['--random-seed', '<(v8_random_seed)'],
-+ }],
-+ ['v8_vector_stores!=0', {
-+ 'mksnapshot_flags': ['--vector-stores'],
-+ }],
-+ ],
-+ },
-+ 'action': [
-+ '<(mksnapshot_exec)',
-+ '<@(mksnapshot_flags)',
-+ '--startup_src', '<@(INTERMEDIATE_DIR)/snapshot_sse2.cc',
-+ '<(embed_script)',
-+ '<(warmup_script)',
-+ ],
-+ },
-+ ],
-+ },
-+ {
-+ 'target_name': 'v8_nosnapshot_sse2',
-+ 'type': 'static_library',
-+ 'dependencies': [
-+ 'v8_base_sse2',
-+ ],
-+ 'include_dirs+': [
-+ '..',
-+ ],
-+ 'sources': [
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
-+ 'snapshot/snapshot-empty.cc',
-+ ],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ 'dependencies': ['js2c_sse2#host'],
-+ }, {
-+ 'toolsets': ['target'],
-+ 'dependencies': ['js2c_sse2'],
-+ }],
-+ ['v8_component=="shared_library"', {
-+ 'defines': [
-+ 'BUILDING_V8_SHARED',
-+ 'V8_SHARED',
-+ ],
-+ }],
-+ ]
-+ },
-+ {
-+ 'target_name': 'v8_external_snapshot_sse2',
-+ 'type': 'static_library',
-+ 'conditions': [
-+ [ 'v8_use_external_startup_data==1', {
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ 'dependencies': [
-+ 'mksnapshot_sse2#host',
-+ 'js2c_sse2#host',
-+ 'natives_blob_sse2',
-+ ]}, {
-+ 'toolsets': ['target'],
-+ 'dependencies': [
-+ 'mksnapshot_sse2',
-+ 'js2c_sse2',
-+ 'natives_blob_sse2',
-+ ],
-+ }],
-+ ['v8_component=="shared_library"', {
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'BUILDING_V8_SHARED',
-+ ],
-+ 'direct_dependent_settings': {
-+ 'defines': [
-+ 'V8_SHARED',
-+ 'USING_V8_SHARED',
-+ ],
-+ },
-+ }],
-+ ],
-+ 'dependencies': [
-+ 'v8_base_sse2',
-+ ],
-+ 'include_dirs+': [
-+ '..',
-+ ],
-+ 'sources': [
-+ 'snapshot/natives-external.cc',
-+ 'snapshot/snapshot-external.cc',
-+ ],
-+ 'actions': [
-+ {
-+ 'action_name': 'v8_sse2_run_mksnapshot (external)',
-+ 'inputs': [
-+ '<(mksnapshot_exec)',
-+ ],
-+ 'variables': {
-+ 'mksnapshot_flags': [],
-+ 'conditions': [
-+ ['v8_random_seed!=0', {
-+ 'mksnapshot_flags': ['--random-seed', '<(v8_random_seed)'],
-+ }],
-+ ['v8_vector_stores!=0', {
-+ 'mksnapshot_flags': ['--vector-stores'],
-+ }],
-+ ],
-+ },
-+ 'conditions': [
-+ ['embed_script!=""', {
-+ 'inputs': [
-+ '<(embed_script)',
-+ ],
-+ }],
-+ ['warmup_script!=""', {
-+ 'inputs': [
-+ '<(warmup_script)',
-+ ],
-+ }],
-+ ['want_separate_host_toolset==1', {
-+ 'target_conditions': [
-+ ['_toolset=="host"', {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/snapshot_blob_host_sse2.bin',
-+ ],
-+ 'action': [
-+ '<(mksnapshot_exec)',
-+ '<@(mksnapshot_flags)',
-+ '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob_host_sse2.bin',
-+ '<(embed_script)',
-+ '<(warmup_script)',
-+ ],
-+ }, {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
-+ ],
-+ 'action': [
-+ '<(mksnapshot_exec)',
-+ '<@(mksnapshot_flags)',
-+ '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
-+ '<(embed_script)',
-+ '<(warmup_script)',
-+ ],
-+ }],
-+ ],
-+ }, {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
-+ ],
-+ 'action': [
-+ '<(mksnapshot_exec)',
-+ '<@(mksnapshot_flags)',
-+ '--startup_blob', '<(PRODUCT_DIR)/snapshot_blob_sse2.bin',
-+ '<(embed_script)',
-+ '<(warmup_script)',
-+ ],
-+ }],
-+ ],
-+ },
-+ ],
-+ }],
-+ ],
-+ },
-+ {
-+ 'target_name': 'v8_base_sse2',
-+ 'type': 'static_library',
-+ 'dependencies': [
-+ 'v8_libbase_sse2',
-+ 'v8_libsampler_sse2',
-+ ],
-+ 'variables': {
-+ 'optimize': 'max',
-+ },
-+ 'include_dirs+': [
-+ '..',
-+ '<(DEPTH)',
-+ ],
-+ 'sources': [ ### gcmole(all) ###
-+ '../include/v8-debug.h',
-+ '../include/v8-experimental.h',
-+ '../include/v8-platform.h',
-+ '../include/v8-profiler.h',
-+ '../include/v8-testing.h',
-+ '../include/v8-util.h',
-+ '../include/v8-version.h',
-+ '../include/v8.h',
-+ '../include/v8config.h',
-+ 'accessors.cc',
-+ 'accessors.h',
-+ 'address-map.cc',
-+ 'address-map.h',
-+ 'allocation.cc',
-+ 'allocation.h',
-+ 'allocation-site-scopes.cc',
-+ 'allocation-site-scopes.h',
-+ 'api-experimental.cc',
-+ 'api-experimental.h',
-+ 'api.cc',
-+ 'api.h',
-+ 'api-arguments-inl.h',
-+ 'api-arguments.cc',
-+ 'api-arguments.h',
-+ 'api-natives.cc',
-+ 'api-natives.h',
-+ 'arguments.cc',
-+ 'arguments.h',
-+ 'assembler.cc',
-+ 'assembler.h',
-+ 'assert-scope.h',
-+ 'assert-scope.cc',
-+ 'ast/ast-expression-rewriter.cc',
-+ 'ast/ast-expression-rewriter.h',
-+ 'ast/ast-expression-visitor.cc',
-+ 'ast/ast-expression-visitor.h',
-+ 'ast/ast-literal-reindexer.cc',
-+ 'ast/ast-literal-reindexer.h',
-+ 'ast/ast-numbering.cc',
-+ 'ast/ast-numbering.h',
-+ 'ast/ast-type-bounds.h',
-+ 'ast/ast-value-factory.cc',
-+ 'ast/ast-value-factory.h',
-+ 'ast/ast.cc',
-+ 'ast/ast.h',
-+ 'ast/modules.cc',
-+ 'ast/modules.h',
-+ 'ast/prettyprinter.cc',
-+ 'ast/prettyprinter.h',
-+ 'ast/scopeinfo.cc',
-+ 'ast/scopeinfo.h',
-+ 'ast/scopes.cc',
-+ 'ast/scopes.h',
-+ 'ast/variables.cc',
-+ 'ast/variables.h',
-+ 'background-parsing-task.cc',
-+ 'background-parsing-task.h',
-+ 'bailout-reason.cc',
-+ 'bailout-reason.h',
-+ 'basic-block-profiler.cc',
-+ 'basic-block-profiler.h',
-+ 'bignum-dtoa.cc',
-+ 'bignum-dtoa.h',
-+ 'bignum.cc',
-+ 'bignum.h',
-+ 'bit-vector.cc',
-+ 'bit-vector.h',
-+ 'bootstrapper.cc',
-+ 'bootstrapper.h',
-+ 'builtins.cc',
-+ 'builtins.h',
-+ 'cached-powers.cc',
-+ 'cached-powers.h',
-+ 'cancelable-task.cc',
-+ 'cancelable-task.h',
-+ 'char-predicates.cc',
-+ 'char-predicates-inl.h',
-+ 'char-predicates.h',
-+ 'checks.h',
-+ 'code-events.h',
-+ 'code-factory.cc',
-+ 'code-factory.h',
-+ 'code-stub-assembler.cc',
-+ 'code-stub-assembler.h',
-+ 'code-stubs.cc',
-+ 'code-stubs.h',
-+ 'code-stubs-hydrogen.cc',
-+ 'codegen.cc',
-+ 'codegen.h',
-+ 'collector.h',
-+ 'compilation-cache.cc',
-+ 'compilation-cache.h',
-+ 'compilation-dependencies.cc',
-+ 'compilation-dependencies.h',
-+ 'compilation-statistics.cc',
-+ 'compilation-statistics.h',
-+ 'compiler/access-builder.cc',
-+ 'compiler/access-builder.h',
-+ 'compiler/access-info.cc',
-+ 'compiler/access-info.h',
-+ 'compiler/all-nodes.cc',
-+ 'compiler/all-nodes.h',
-+ 'compiler/ast-graph-builder.cc',
-+ 'compiler/ast-graph-builder.h',
-+ 'compiler/ast-loop-assignment-analyzer.cc',
-+ 'compiler/ast-loop-assignment-analyzer.h',
-+ 'compiler/basic-block-instrumentor.cc',
-+ 'compiler/basic-block-instrumentor.h',
-+ 'compiler/branch-elimination.cc',
-+ 'compiler/branch-elimination.h',
-+ 'compiler/bytecode-branch-analysis.cc',
-+ 'compiler/bytecode-branch-analysis.h',
-+ 'compiler/bytecode-graph-builder.cc',
-+ 'compiler/bytecode-graph-builder.h',
-+ 'compiler/c-linkage.cc',
-+ 'compiler/checkpoint-elimination.cc',
-+ 'compiler/checkpoint-elimination.h',
-+ 'compiler/code-generator-impl.h',
-+ 'compiler/code-generator.cc',
-+ 'compiler/code-generator.h',
-+ 'compiler/code-assembler.cc',
-+ 'compiler/code-assembler.h',
-+ 'compiler/common-node-cache.cc',
-+ 'compiler/common-node-cache.h',
-+ 'compiler/common-operator-reducer.cc',
-+ 'compiler/common-operator-reducer.h',
-+ 'compiler/common-operator.cc',
-+ 'compiler/common-operator.h',
-+ 'compiler/control-builders.cc',
-+ 'compiler/control-builders.h',
-+ 'compiler/control-equivalence.cc',
-+ 'compiler/control-equivalence.h',
-+ 'compiler/control-flow-optimizer.cc',
-+ 'compiler/control-flow-optimizer.h',
-+ 'compiler/dead-code-elimination.cc',
-+ 'compiler/dead-code-elimination.h',
-+ 'compiler/diamond.h',
-+ 'compiler/effect-control-linearizer.cc',
-+ 'compiler/effect-control-linearizer.h',
-+ 'compiler/escape-analysis.cc',
-+ 'compiler/escape-analysis.h',
-+ "compiler/escape-analysis-reducer.cc",
-+ "compiler/escape-analysis-reducer.h",
-+ 'compiler/frame.cc',
-+ 'compiler/frame.h',
-+ 'compiler/frame-elider.cc',
-+ 'compiler/frame-elider.h',
-+ "compiler/frame-states.cc",
-+ "compiler/frame-states.h",
-+ 'compiler/gap-resolver.cc',
-+ 'compiler/gap-resolver.h',
-+ 'compiler/graph-reducer.cc',
-+ 'compiler/graph-reducer.h',
-+ 'compiler/graph-replay.cc',
-+ 'compiler/graph-replay.h',
-+ 'compiler/graph-trimmer.cc',
-+ 'compiler/graph-trimmer.h',
-+ 'compiler/graph-visualizer.cc',
-+ 'compiler/graph-visualizer.h',
-+ 'compiler/graph.cc',
-+ 'compiler/graph.h',
-+ 'compiler/instruction-codes.h',
-+ 'compiler/instruction-selector-impl.h',
-+ 'compiler/instruction-selector.cc',
-+ 'compiler/instruction-selector.h',
-+ 'compiler/instruction-scheduler.cc',
-+ 'compiler/instruction-scheduler.h',
-+ 'compiler/instruction.cc',
-+ 'compiler/instruction.h',
-+ 'compiler/int64-lowering.cc',
-+ 'compiler/int64-lowering.h',
-+ 'compiler/js-builtin-reducer.cc',
-+ 'compiler/js-builtin-reducer.h',
-+ 'compiler/js-call-reducer.cc',
-+ 'compiler/js-call-reducer.h',
-+ 'compiler/js-context-specialization.cc',
-+ 'compiler/js-context-specialization.h',
-+ 'compiler/js-create-lowering.cc',
-+ 'compiler/js-create-lowering.h',
-+ 'compiler/js-frame-specialization.cc',
-+ 'compiler/js-frame-specialization.h',
-+ 'compiler/js-generic-lowering.cc',
-+ 'compiler/js-generic-lowering.h',
-+ 'compiler/js-global-object-specialization.cc',
-+ 'compiler/js-global-object-specialization.h',
-+ 'compiler/js-graph.cc',
-+ 'compiler/js-graph.h',
-+ 'compiler/js-inlining.cc',
-+ 'compiler/js-inlining.h',
-+ 'compiler/js-inlining-heuristic.cc',
-+ 'compiler/js-inlining-heuristic.h',
-+ 'compiler/js-intrinsic-lowering.cc',
-+ 'compiler/js-intrinsic-lowering.h',
-+ 'compiler/js-native-context-specialization.cc',
-+ 'compiler/js-native-context-specialization.h',
-+ 'compiler/js-operator.cc',
-+ 'compiler/js-operator.h',
-+ 'compiler/js-typed-lowering.cc',
-+ 'compiler/js-typed-lowering.h',
-+ 'compiler/jump-threading.cc',
-+ 'compiler/jump-threading.h',
-+ 'compiler/linkage.cc',
-+ 'compiler/linkage.h',
-+ 'compiler/liveness-analyzer.cc',
-+ 'compiler/liveness-analyzer.h',
-+ 'compiler/live-range-separator.cc',
-+ 'compiler/live-range-separator.h',
-+ 'compiler/load-elimination.cc',
-+ 'compiler/load-elimination.h',
-+ 'compiler/loop-analysis.cc',
-+ 'compiler/loop-analysis.h',
-+ 'compiler/loop-peeling.cc',
-+ 'compiler/loop-peeling.h',
-+ 'compiler/machine-operator-reducer.cc',
-+ 'compiler/machine-operator-reducer.h',
-+ 'compiler/machine-operator.cc',
-+ 'compiler/machine-operator.h',
-+ 'compiler/memory-optimizer.cc',
-+ 'compiler/memory-optimizer.h',
-+ 'compiler/move-optimizer.cc',
-+ 'compiler/move-optimizer.h',
-+ 'compiler/node-aux-data.h',
-+ 'compiler/node-cache.cc',
-+ 'compiler/node-cache.h',
-+ 'compiler/node-marker.cc',
-+ 'compiler/node-marker.h',
-+ 'compiler/node-matchers.cc',
-+ 'compiler/node-matchers.h',
-+ 'compiler/node-properties.cc',
-+ 'compiler/node-properties.h',
-+ 'compiler/node.cc',
-+ 'compiler/node.h',
-+ 'compiler/opcodes.cc',
-+ 'compiler/opcodes.h',
-+ 'compiler/operation-typer.cc',
-+ 'compiler/operation-typer.h',
-+ 'compiler/operator-properties.cc',
-+ 'compiler/operator-properties.h',
-+ 'compiler/operator.cc',
-+ 'compiler/operator.h',
-+ 'compiler/osr.cc',
-+ 'compiler/osr.h',
-+ 'compiler/pipeline.cc',
-+ 'compiler/pipeline.h',
-+ 'compiler/pipeline-statistics.cc',
-+ 'compiler/pipeline-statistics.h',
-+ 'compiler/raw-machine-assembler.cc',
-+ 'compiler/raw-machine-assembler.h',
-+ 'compiler/redundancy-elimination.cc',
-+ 'compiler/redundancy-elimination.h',
-+ 'compiler/register-allocator.cc',
-+ 'compiler/register-allocator.h',
-+ 'compiler/register-allocator-verifier.cc',
-+ 'compiler/register-allocator-verifier.h',
-+ 'compiler/representation-change.cc',
-+ 'compiler/representation-change.h',
-+ 'compiler/schedule.cc',
-+ 'compiler/schedule.h',
-+ 'compiler/scheduler.cc',
-+ 'compiler/scheduler.h',
-+ 'compiler/select-lowering.cc',
-+ 'compiler/select-lowering.h',
-+ 'compiler/simplified-lowering.cc',
-+ 'compiler/simplified-lowering.h',
-+ 'compiler/simplified-operator-reducer.cc',
-+ 'compiler/simplified-operator-reducer.h',
-+ 'compiler/simplified-operator.cc',
-+ 'compiler/simplified-operator.h',
-+ 'compiler/source-position.cc',
-+ 'compiler/source-position.h',
-+ 'compiler/state-values-utils.cc',
-+ 'compiler/state-values-utils.h',
-+ 'compiler/store-store-elimination.cc',
-+ 'compiler/store-store-elimination.h',
-+ 'compiler/tail-call-optimization.cc',
-+ 'compiler/tail-call-optimization.h',
-+ 'compiler/type-hint-analyzer.cc',
-+ 'compiler/type-hint-analyzer.h',
-+ 'compiler/type-hints.cc',
-+ 'compiler/type-hints.h',
-+ 'compiler/typer.cc',
-+ 'compiler/typer.h',
-+ 'compiler/value-numbering-reducer.cc',
-+ 'compiler/value-numbering-reducer.h',
-+ 'compiler/verifier.cc',
-+ 'compiler/verifier.h',
-+ 'compiler/wasm-compiler.cc',
-+ 'compiler/wasm-compiler.h',
-+ 'compiler/wasm-linkage.cc',
-+ 'compiler/zone-pool.cc',
-+ 'compiler/zone-pool.h',
-+ 'compiler.cc',
-+ 'compiler.h',
-+ 'context-measure.cc',
-+ 'context-measure.h',
-+ 'contexts-inl.h',
-+ 'contexts.cc',
-+ 'contexts.h',
-+ 'conversions-inl.h',
-+ 'conversions.cc',
-+ 'conversions.h',
-+ 'counters-inl.h',
-+ 'counters.cc',
-+ 'counters.h',
-+ 'crankshaft/compilation-phase.cc',
-+ 'crankshaft/compilation-phase.h',
-+ 'crankshaft/hydrogen-alias-analysis.h',
-+ 'crankshaft/hydrogen-bce.cc',
-+ 'crankshaft/hydrogen-bce.h',
-+ 'crankshaft/hydrogen-canonicalize.cc',
-+ 'crankshaft/hydrogen-canonicalize.h',
-+ 'crankshaft/hydrogen-check-elimination.cc',
-+ 'crankshaft/hydrogen-check-elimination.h',
-+ 'crankshaft/hydrogen-dce.cc',
-+ 'crankshaft/hydrogen-dce.h',
-+ 'crankshaft/hydrogen-dehoist.cc',
-+ 'crankshaft/hydrogen-dehoist.h',
-+ 'crankshaft/hydrogen-environment-liveness.cc',
-+ 'crankshaft/hydrogen-environment-liveness.h',
-+ 'crankshaft/hydrogen-escape-analysis.cc',
-+ 'crankshaft/hydrogen-escape-analysis.h',
-+ 'crankshaft/hydrogen-flow-engine.h',
-+ 'crankshaft/hydrogen-gvn.cc',
-+ 'crankshaft/hydrogen-gvn.h',
-+ 'crankshaft/hydrogen-infer-representation.cc',
-+ 'crankshaft/hydrogen-infer-representation.h',
-+ 'crankshaft/hydrogen-infer-types.cc',
-+ 'crankshaft/hydrogen-infer-types.h',
-+ 'crankshaft/hydrogen-instructions.cc',
-+ 'crankshaft/hydrogen-instructions.h',
-+ 'crankshaft/hydrogen-load-elimination.cc',
-+ 'crankshaft/hydrogen-load-elimination.h',
-+ 'crankshaft/hydrogen-mark-deoptimize.cc',
-+ 'crankshaft/hydrogen-mark-deoptimize.h',
-+ 'crankshaft/hydrogen-mark-unreachable.cc',
-+ 'crankshaft/hydrogen-mark-unreachable.h',
-+ 'crankshaft/hydrogen-osr.cc',
-+ 'crankshaft/hydrogen-osr.h',
-+ 'crankshaft/hydrogen-range-analysis.cc',
-+ 'crankshaft/hydrogen-range-analysis.h',
-+ 'crankshaft/hydrogen-redundant-phi.cc',
-+ 'crankshaft/hydrogen-redundant-phi.h',
-+ 'crankshaft/hydrogen-removable-simulates.cc',
-+ 'crankshaft/hydrogen-removable-simulates.h',
-+ 'crankshaft/hydrogen-representation-changes.cc',
-+ 'crankshaft/hydrogen-representation-changes.h',
-+ 'crankshaft/hydrogen-sce.cc',
-+ 'crankshaft/hydrogen-sce.h',
-+ 'crankshaft/hydrogen-store-elimination.cc',
-+ 'crankshaft/hydrogen-store-elimination.h',
-+ 'crankshaft/hydrogen-types.cc',
-+ 'crankshaft/hydrogen-types.h',
-+ 'crankshaft/hydrogen-uint32-analysis.cc',
-+ 'crankshaft/hydrogen-uint32-analysis.h',
-+ 'crankshaft/hydrogen.cc',
-+ 'crankshaft/hydrogen.h',
-+ 'crankshaft/lithium-allocator-inl.h',
-+ 'crankshaft/lithium-allocator.cc',
-+ 'crankshaft/lithium-allocator.h',
-+ 'crankshaft/lithium-codegen.cc',
-+ 'crankshaft/lithium-codegen.h',
-+ 'crankshaft/lithium.cc',
-+ 'crankshaft/lithium.h',
-+ 'crankshaft/lithium-inl.h',
-+ 'crankshaft/typing.cc',
-+ 'crankshaft/typing.h',
-+ 'crankshaft/unique.h',
-+ 'date.cc',
-+ 'date.h',
-+ 'dateparser-inl.h',
-+ 'dateparser.cc',
-+ 'dateparser.h',
-+ 'debug/debug-evaluate.cc',
-+ 'debug/debug-evaluate.h',
-+ 'debug/debug-frames.cc',
-+ 'debug/debug-frames.h',
-+ 'debug/debug-scopes.cc',
-+ 'debug/debug-scopes.h',
-+ 'debug/debug.cc',
-+ 'debug/debug.h',
-+ 'debug/liveedit.cc',
-+ 'debug/liveedit.h',
-+ 'deoptimizer.cc',
-+ 'deoptimizer.h',
-+ 'disasm.h',
-+ 'disassembler.cc',
-+ 'disassembler.h',
-+ 'diy-fp.cc',
-+ 'diy-fp.h',
-+ 'double.h',
-+ 'dtoa.cc',
-+ 'dtoa.h',
-+ 'effects.h',
-+ 'eh-frame.cc',
-+ 'eh-frame.h',
-+ 'elements-kind.cc',
-+ 'elements-kind.h',
-+ 'elements.cc',
-+ 'elements.h',
-+ 'execution.cc',
-+ 'execution.h',
-+ 'extensions/externalize-string-extension.cc',
-+ 'extensions/externalize-string-extension.h',
-+ 'extensions/free-buffer-extension.cc',
-+ 'extensions/free-buffer-extension.h',
-+ 'extensions/gc-extension.cc',
-+ 'extensions/gc-extension.h',
-+ 'extensions/ignition-statistics-extension.cc',
-+ 'extensions/ignition-statistics-extension.h',
-+ 'extensions/statistics-extension.cc',
-+ 'extensions/statistics-extension.h',
-+ 'extensions/trigger-failure-extension.cc',
-+ 'extensions/trigger-failure-extension.h',
-+ 'external-reference-table.cc',
-+ 'external-reference-table.h',
-+ 'factory.cc',
-+ 'factory.h',
-+ 'fast-accessor-assembler.cc',
-+ 'fast-accessor-assembler.h',
-+ 'fast-dtoa.cc',
-+ 'fast-dtoa.h',
-+ 'field-index.h',
-+ 'field-index-inl.h',
-+ 'field-type.cc',
-+ 'field-type.h',
-+ 'fixed-dtoa.cc',
-+ 'fixed-dtoa.h',
-+ 'flag-definitions.h',
-+ 'flags.cc',
-+ 'flags.h',
-+ 'frames-inl.h',
-+ 'frames.cc',
-+ 'frames.h',
-+ 'full-codegen/full-codegen.cc',
-+ 'full-codegen/full-codegen.h',
-+ 'futex-emulation.cc',
-+ 'futex-emulation.h',
-+ 'gdb-jit.cc',
-+ 'gdb-jit.h',
-+ 'global-handles.cc',
-+ 'global-handles.h',
-+ 'globals.h',
-+ 'handles-inl.h',
-+ 'handles.cc',
-+ 'handles.h',
-+ 'heap-symbols.h',
-+ 'heap/array-buffer-tracker-inl.h',
-+ 'heap/array-buffer-tracker.cc',
-+ 'heap/array-buffer-tracker.h',
-+ 'heap/memory-reducer.cc',
-+ 'heap/memory-reducer.h',
-+ 'heap/gc-idle-time-handler.cc',
-+ 'heap/gc-idle-time-handler.h',
-+ 'heap/gc-tracer.cc',
-+ 'heap/gc-tracer.h',
-+ 'heap/heap-inl.h',
-+ 'heap/heap.cc',
-+ 'heap/heap.h',
-+ 'heap/incremental-marking-inl.h',
-+ 'heap/incremental-marking-job.cc',
-+ 'heap/incremental-marking-job.h',
-+ 'heap/incremental-marking.cc',
-+ 'heap/incremental-marking.h',
-+ 'heap/mark-compact-inl.h',
-+ 'heap/mark-compact.cc',
-+ 'heap/mark-compact.h',
-+ 'heap/object-stats.cc',
-+ 'heap/object-stats.h',
-+ 'heap/objects-visiting-inl.h',
-+ 'heap/objects-visiting.cc',
-+ 'heap/objects-visiting.h',
-+ 'heap/page-parallel-job.h',
-+ 'heap/remembered-set.cc',
-+ 'heap/remembered-set.h',
-+ 'heap/scavenge-job.h',
-+ 'heap/scavenge-job.cc',
-+ 'heap/scavenger-inl.h',
-+ 'heap/scavenger.cc',
-+ 'heap/scavenger.h',
-+ 'heap/slot-set.h',
-+ 'heap/spaces-inl.h',
-+ 'heap/spaces.cc',
-+ 'heap/spaces.h',
-+ 'heap/store-buffer.cc',
-+ 'heap/store-buffer.h',
-+ 'i18n.cc',
-+ 'i18n.h',
-+ 'icu_util.cc',
-+ 'icu_util.h',
-+ 'ic/access-compiler.cc',
-+ 'ic/access-compiler.h',
-+ 'ic/call-optimization.cc',
-+ 'ic/call-optimization.h',
-+ 'ic/handler-compiler.cc',
-+ 'ic/handler-compiler.h',
-+ 'ic/ic-inl.h',
-+ 'ic/ic-state.cc',
-+ 'ic/ic-state.h',
-+ 'ic/ic.cc',
-+ 'ic/ic.h',
-+ 'ic/ic-compiler.cc',
-+ 'ic/ic-compiler.h',
-+ 'identity-map.cc',
-+ 'identity-map.h',
-+ 'interface-descriptors.cc',
-+ 'interface-descriptors.h',
-+ 'interpreter/bytecodes.cc',
-+ 'interpreter/bytecodes.h',
-+ 'interpreter/bytecode-array-builder.cc',
-+ 'interpreter/bytecode-array-builder.h',
-+ 'interpreter/bytecode-array-iterator.cc',
-+ 'interpreter/bytecode-array-iterator.h',
-+ 'interpreter/bytecode-array-writer.cc',
-+ 'interpreter/bytecode-array-writer.h',
-+ 'interpreter/bytecode-dead-code-optimizer.cc',
-+ 'interpreter/bytecode-dead-code-optimizer.h',
-+ 'interpreter/bytecode-label.h',
-+ 'interpreter/bytecode-generator.cc',
-+ 'interpreter/bytecode-generator.h',
-+ 'interpreter/bytecode-peephole-optimizer.cc',
-+ 'interpreter/bytecode-peephole-optimizer.h',
-+ 'interpreter/bytecode-pipeline.cc',
-+ 'interpreter/bytecode-pipeline.h',
-+ 'interpreter/bytecode-register-allocator.cc',
-+ 'interpreter/bytecode-register-allocator.h',
-+ 'interpreter/bytecode-register-optimizer.cc',
-+ 'interpreter/bytecode-register-optimizer.h',
-+ 'interpreter/bytecode-traits.h',
-+ 'interpreter/constant-array-builder.cc',
-+ 'interpreter/constant-array-builder.h',
-+ 'interpreter/control-flow-builders.cc',
-+ 'interpreter/control-flow-builders.h',
-+ 'interpreter/handler-table-builder.cc',
-+ 'interpreter/handler-table-builder.h',
-+ 'interpreter/interpreter.cc',
-+ 'interpreter/interpreter.h',
-+ 'interpreter/interpreter-assembler.cc',
-+ 'interpreter/interpreter-assembler.h',
-+ 'interpreter/interpreter-intrinsics.cc',
-+ 'interpreter/interpreter-intrinsics.h',
-+ 'interpreter/source-position-table.cc',
-+ 'interpreter/source-position-table.h',
-+ 'isolate-inl.h',
-+ 'isolate.cc',
-+ 'isolate.h',
-+ 'json-parser.cc',
-+ 'json-parser.h',
-+ 'json-stringifier.cc',
-+ 'json-stringifier.h',
-+ 'keys.h',
-+ 'keys.cc',
-+ 'layout-descriptor-inl.h',
-+ 'layout-descriptor.cc',
-+ 'layout-descriptor.h',
-+ 'list-inl.h',
-+ 'list.h',
-+ 'locked-queue-inl.h',
-+ 'locked-queue.h',
-+ 'log-inl.h',
-+ 'log-utils.cc',
-+ 'log-utils.h',
-+ 'log.cc',
-+ 'log.h',
-+ 'lookup.cc',
-+ 'lookup.h',
-+ 'macro-assembler.h',
-+ 'machine-type.cc',
-+ 'machine-type.h',
-+ 'messages.cc',
-+ 'messages.h',
-+ 'msan.h',
-+ 'objects-body-descriptors-inl.h',
-+ 'objects-body-descriptors.h',
-+ 'objects-debug.cc',
-+ 'objects-inl.h',
-+ 'objects-printer.cc',
-+ 'objects.cc',
-+ 'objects.h',
-+ 'optimizing-compile-dispatcher.cc',
-+ 'optimizing-compile-dispatcher.h',
-+ 'ostreams.cc',
-+ 'ostreams.h',
-+ 'parsing/expression-classifier.h',
-+ 'parsing/func-name-inferrer.cc',
-+ 'parsing/func-name-inferrer.h',
-+ 'parsing/parameter-initializer-rewriter.cc',
-+ 'parsing/parameter-initializer-rewriter.h',
-+ 'parsing/parser-base.h',
-+ 'parsing/parser.cc',
-+ 'parsing/parser.h',
-+ 'parsing/pattern-rewriter.cc',
-+ 'parsing/preparse-data-format.h',
-+ 'parsing/preparse-data.cc',
-+ 'parsing/preparse-data.h',
-+ 'parsing/preparser.cc',
-+ 'parsing/preparser.h',
-+ 'parsing/rewriter.cc',
-+ 'parsing/rewriter.h',
-+ 'parsing/scanner-character-streams.cc',
-+ 'parsing/scanner-character-streams.h',
-+ 'parsing/scanner.cc',
-+ 'parsing/scanner.h',
-+ 'parsing/token.cc',
-+ 'parsing/token.h',
-+ 'pending-compilation-error-handler.cc',
-+ 'pending-compilation-error-handler.h',
-+ 'perf-jit.cc',
-+ 'perf-jit.h',
-+ 'profiler/allocation-tracker.cc',
-+ 'profiler/allocation-tracker.h',
-+ 'profiler/circular-queue-inl.h',
-+ 'profiler/circular-queue.h',
-+ 'profiler/cpu-profiler-inl.h',
-+ 'profiler/cpu-profiler.cc',
-+ 'profiler/cpu-profiler.h',
-+ 'profiler/heap-profiler.cc',
-+ 'profiler/heap-profiler.h',
-+ 'profiler/heap-snapshot-generator-inl.h',
-+ 'profiler/heap-snapshot-generator.cc',
-+ 'profiler/heap-snapshot-generator.h',
-+ 'profiler/profiler-listener.cc',
-+ 'profiler/profiler-listener.h',
-+ 'profiler/profile-generator-inl.h',
-+ 'profiler/profile-generator.cc',
-+ 'profiler/profile-generator.h',
-+ 'profiler/sampling-heap-profiler.cc',
-+ 'profiler/sampling-heap-profiler.h',
-+ 'profiler/strings-storage.cc',
-+ 'profiler/strings-storage.h',
-+ 'profiler/tick-sample.cc',
-+ 'profiler/tick-sample.h',
-+ 'profiler/unbound-queue-inl.h',
-+ 'profiler/unbound-queue.h',
-+ 'property-descriptor.cc',
-+ 'property-descriptor.h',
-+ 'property-details.h',
-+ 'property.cc',
-+ 'property.h',
-+ 'prototype.h',
-+ 'regexp/bytecodes-irregexp.h',
-+ 'regexp/interpreter-irregexp.cc',
-+ 'regexp/interpreter-irregexp.h',
-+ 'regexp/jsregexp-inl.h',
-+ 'regexp/jsregexp.cc',
-+ 'regexp/jsregexp.h',
-+ 'regexp/regexp-ast.cc',
-+ 'regexp/regexp-ast.h',
-+ 'regexp/regexp-macro-assembler-irregexp-inl.h',
-+ 'regexp/regexp-macro-assembler-irregexp.cc',
-+ 'regexp/regexp-macro-assembler-irregexp.h',
-+ 'regexp/regexp-macro-assembler-tracer.cc',
-+ 'regexp/regexp-macro-assembler-tracer.h',
-+ 'regexp/regexp-macro-assembler.cc',
-+ 'regexp/regexp-macro-assembler.h',
-+ 'regexp/regexp-parser.cc',
-+ 'regexp/regexp-parser.h',
-+ 'regexp/regexp-stack.cc',
-+ 'regexp/regexp-stack.h',
-+ 'register-configuration.cc',
-+ 'register-configuration.h',
-+ 'runtime-profiler.cc',
-+ 'runtime-profiler.h',
-+ 'runtime/runtime-array.cc',
-+ 'runtime/runtime-atomics.cc',
-+ 'runtime/runtime-classes.cc',
-+ 'runtime/runtime-collections.cc',
-+ 'runtime/runtime-compiler.cc',
-+ 'runtime/runtime-date.cc',
-+ 'runtime/runtime-debug.cc',
-+ 'runtime/runtime-forin.cc',
-+ 'runtime/runtime-function.cc',
-+ 'runtime/runtime-futex.cc',
-+ 'runtime/runtime-generator.cc',
-+ 'runtime/runtime-i18n.cc',
-+ 'runtime/runtime-internal.cc',
-+ 'runtime/runtime-interpreter.cc',
-+ 'runtime/runtime-literals.cc',
-+ 'runtime/runtime-liveedit.cc',
-+ 'runtime/runtime-maths.cc',
-+ 'runtime/runtime-numbers.cc',
-+ 'runtime/runtime-object.cc',
-+ 'runtime/runtime-operators.cc',
-+ 'runtime/runtime-proxy.cc',
-+ 'runtime/runtime-regexp.cc',
-+ 'runtime/runtime-scopes.cc',
-+ 'runtime/runtime-simd.cc',
-+ 'runtime/runtime-strings.cc',
-+ 'runtime/runtime-symbol.cc',
-+ 'runtime/runtime-test.cc',
-+ 'runtime/runtime-typedarray.cc',
-+ 'runtime/runtime-utils.h',
-+ 'runtime/runtime.cc',
-+ 'runtime/runtime.h',
-+ 'safepoint-table.cc',
-+ 'safepoint-table.h',
-+ 'signature.h',
-+ 'simulator.h',
-+ 'small-pointer-list.h',
-+ 'snapshot/code-serializer.cc',
-+ 'snapshot/code-serializer.h',
-+ 'snapshot/deserializer.cc',
-+ 'snapshot/deserializer.h',
-+ 'snapshot/natives.h',
-+ 'snapshot/natives-common.cc',
-+ 'snapshot/partial-serializer.cc',
-+ 'snapshot/partial-serializer.h',
-+ 'snapshot/serializer.cc',
-+ 'snapshot/serializer.h',
-+ 'snapshot/serializer-common.cc',
-+ 'snapshot/serializer-common.h',
-+ 'snapshot/snapshot.h',
-+ 'snapshot/snapshot-common.cc',
-+ 'snapshot/snapshot-source-sink.cc',
-+ 'snapshot/snapshot-source-sink.h',
-+ 'snapshot/startup-serializer.cc',
-+ 'snapshot/startup-serializer.h',
-+ 'source-position.h',
-+ 'splay-tree.h',
-+ 'splay-tree-inl.h',
-+ 'startup-data-util.cc',
-+ 'startup-data-util.h',
-+ 'string-builder.cc',
-+ 'string-builder.h',
-+ 'string-search.h',
-+ 'string-stream.cc',
-+ 'string-stream.h',
-+ 'strtod.cc',
-+ 'strtod.h',
-+ 'ic/stub-cache.cc',
-+ 'ic/stub-cache.h',
-+ 'tracing/trace-event.cc',
-+ 'tracing/trace-event.h',
-+ 'transitions-inl.h',
-+ 'transitions.cc',
-+ 'transitions.h',
-+ 'type-cache.cc',
-+ 'type-cache.h',
-+ 'type-feedback-vector-inl.h',
-+ 'type-feedback-vector.cc',
-+ 'type-feedback-vector.h',
-+ 'type-info.cc',
-+ 'type-info.h',
-+ 'types.cc',
-+ 'types.h',
-+ 'typing-asm.cc',
-+ 'typing-asm.h',
-+ 'unicode-inl.h',
-+ 'unicode.cc',
-+ 'unicode.h',
-+ 'unicode-cache-inl.h',
-+ 'unicode-cache.h',
-+ 'unicode-decoder.cc',
-+ 'unicode-decoder.h',
-+ 'uri.cc',
-+ 'uri.h',
-+ 'utils-inl.h',
-+ 'utils.cc',
-+ 'utils.h',
-+ 'v8.cc',
-+ 'v8.h',
-+ 'v8memory.h',
-+ 'v8threads.cc',
-+ 'v8threads.h',
-+ 'vector.h',
-+ 'version.cc',
-+ 'version.h',
-+ 'vm-state-inl.h',
-+ 'vm-state.h',
-+ 'wasm/asm-types.cc',
-+ 'wasm/asm-types.h',
-+ 'wasm/asm-wasm-builder.cc',
-+ 'wasm/asm-wasm-builder.h',
-+ 'wasm/ast-decoder.cc',
-+ 'wasm/ast-decoder.h',
-+ 'wasm/decoder.h',
-+ 'wasm/encoder.cc',
-+ 'wasm/encoder.h',
-+ 'wasm/leb-helper.h',
-+ 'wasm/module-decoder.cc',
-+ 'wasm/module-decoder.h',
-+ 'wasm/switch-logic.h',
-+ 'wasm/switch-logic.cc',
-+ 'wasm/wasm-debug.cc',
-+ 'wasm/wasm-debug.h',
-+ 'wasm/wasm-external-refs.cc',
-+ 'wasm/wasm-external-refs.h',
-+ 'wasm/wasm-function-name-table.cc',
-+ 'wasm/wasm-function-name-table.h',
-+ 'wasm/wasm-js.cc',
-+ 'wasm/wasm-js.h',
-+ 'wasm/wasm-macro-gen.h',
-+ 'wasm/wasm-module.cc',
-+ 'wasm/wasm-module.h',
-+ 'wasm/wasm-interpreter.cc',
-+ 'wasm/wasm-interpreter.h',
-+ 'wasm/wasm-opcodes.cc',
-+ 'wasm/wasm-opcodes.h',
-+ 'wasm/wasm-result.cc',
-+ 'wasm/wasm-result.h',
-+ 'zone.cc',
-+ 'zone.h',
-+ 'zone-allocator.h',
-+ 'zone-containers.h',
-+ ],
-+ 'conditions': [
-+ ['OS!="win" and remove_v8base_debug_symbols==1', {
-+ 'cflags!': ['-g', '-gdwarf-4'],
-+ }],
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ['v8_target_arch=="arm"', {
-+ 'sources': [ ### gcmole(arch:arm) ###
-+ 'arm/assembler-arm-inl.h',
-+ 'arm/assembler-arm.cc',
-+ 'arm/assembler-arm.h',
-+ 'arm/builtins-arm.cc',
-+ 'arm/code-stubs-arm.cc',
-+ 'arm/code-stubs-arm.h',
-+ 'arm/codegen-arm.cc',
-+ 'arm/codegen-arm.h',
-+ 'arm/constants-arm.h',
-+ 'arm/constants-arm.cc',
-+ 'arm/cpu-arm.cc',
-+ 'arm/deoptimizer-arm.cc',
-+ 'arm/disasm-arm.cc',
-+ 'arm/frames-arm.cc',
-+ 'arm/frames-arm.h',
-+ 'arm/interface-descriptors-arm.cc',
-+ 'arm/interface-descriptors-arm.h',
-+ 'arm/macro-assembler-arm.cc',
-+ 'arm/macro-assembler-arm.h',
-+ 'arm/simulator-arm.cc',
-+ 'arm/simulator-arm.h',
-+ 'compiler/arm/code-generator-arm.cc',
-+ 'compiler/arm/instruction-codes-arm.h',
-+ 'compiler/arm/instruction-scheduler-arm.cc',
-+ 'compiler/arm/instruction-selector-arm.cc',
-+ 'crankshaft/arm/lithium-arm.cc',
-+ 'crankshaft/arm/lithium-arm.h',
-+ 'crankshaft/arm/lithium-codegen-arm.cc',
-+ 'crankshaft/arm/lithium-codegen-arm.h',
-+ 'crankshaft/arm/lithium-gap-resolver-arm.cc',
-+ 'crankshaft/arm/lithium-gap-resolver-arm.h',
-+ 'debug/arm/debug-arm.cc',
-+ 'full-codegen/arm/full-codegen-arm.cc',
-+ 'ic/arm/access-compiler-arm.cc',
-+ 'ic/arm/handler-compiler-arm.cc',
-+ 'ic/arm/ic-arm.cc',
-+ 'ic/arm/ic-compiler-arm.cc',
-+ 'ic/arm/stub-cache-arm.cc',
-+ 'regexp/arm/regexp-macro-assembler-arm.cc',
-+ 'regexp/arm/regexp-macro-assembler-arm.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="arm64"', {
-+ 'sources': [ ### gcmole(arch:arm64) ###
-+ 'arm64/assembler-arm64.cc',
-+ 'arm64/assembler-arm64.h',
-+ 'arm64/assembler-arm64-inl.h',
-+ 'arm64/builtins-arm64.cc',
-+ 'arm64/codegen-arm64.cc',
-+ 'arm64/codegen-arm64.h',
-+ 'arm64/code-stubs-arm64.cc',
-+ 'arm64/code-stubs-arm64.h',
-+ 'arm64/constants-arm64.h',
-+ 'arm64/cpu-arm64.cc',
-+ 'arm64/decoder-arm64.cc',
-+ 'arm64/decoder-arm64.h',
-+ 'arm64/decoder-arm64-inl.h',
-+ 'arm64/deoptimizer-arm64.cc',
-+ 'arm64/disasm-arm64.cc',
-+ 'arm64/disasm-arm64.h',
-+ 'arm64/frames-arm64.cc',
-+ 'arm64/frames-arm64.h',
-+ 'arm64/instructions-arm64.cc',
-+ 'arm64/instructions-arm64.h',
-+ 'arm64/instrument-arm64.cc',
-+ 'arm64/instrument-arm64.h',
-+ 'arm64/interface-descriptors-arm64.cc',
-+ 'arm64/interface-descriptors-arm64.h',
-+ 'arm64/macro-assembler-arm64.cc',
-+ 'arm64/macro-assembler-arm64.h',
-+ 'arm64/macro-assembler-arm64-inl.h',
-+ 'arm64/simulator-arm64.cc',
-+ 'arm64/simulator-arm64.h',
-+ 'arm64/utils-arm64.cc',
-+ 'arm64/utils-arm64.h',
-+ 'compiler/arm64/code-generator-arm64.cc',
-+ 'compiler/arm64/instruction-codes-arm64.h',
-+ 'compiler/arm64/instruction-scheduler-arm64.cc',
-+ 'compiler/arm64/instruction-selector-arm64.cc',
-+ 'crankshaft/arm64/delayed-masm-arm64.cc',
-+ 'crankshaft/arm64/delayed-masm-arm64.h',
-+ 'crankshaft/arm64/delayed-masm-arm64-inl.h',
-+ 'crankshaft/arm64/lithium-arm64.cc',
-+ 'crankshaft/arm64/lithium-arm64.h',
-+ 'crankshaft/arm64/lithium-codegen-arm64.cc',
-+ 'crankshaft/arm64/lithium-codegen-arm64.h',
-+ 'crankshaft/arm64/lithium-gap-resolver-arm64.cc',
-+ 'crankshaft/arm64/lithium-gap-resolver-arm64.h',
-+ 'debug/arm64/debug-arm64.cc',
-+ 'full-codegen/arm64/full-codegen-arm64.cc',
-+ 'ic/arm64/access-compiler-arm64.cc',
-+ 'ic/arm64/handler-compiler-arm64.cc',
-+ 'ic/arm64/ic-arm64.cc',
-+ 'ic/arm64/ic-compiler-arm64.cc',
-+ 'ic/arm64/stub-cache-arm64.cc',
-+ 'regexp/arm64/regexp-macro-assembler-arm64.cc',
-+ 'regexp/arm64/regexp-macro-assembler-arm64.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="ia32"', {
-+ 'sources': [ ### gcmole(arch:ia32) ###
-+ 'ia32/assembler-ia32-inl.h',
-+ 'ia32/assembler-ia32.cc',
-+ 'ia32/assembler-ia32.h',
-+ 'ia32/builtins-ia32.cc',
-+ 'ia32/code-stubs-ia32.cc',
-+ 'ia32/code-stubs-ia32.h',
-+ 'ia32/codegen-ia32.cc',
-+ 'ia32/codegen-ia32.h',
-+ 'ia32/cpu-ia32.cc',
-+ 'ia32/deoptimizer-ia32.cc',
-+ 'ia32/disasm-ia32.cc',
-+ 'ia32/frames-ia32.cc',
-+ 'ia32/frames-ia32.h',
-+ 'ia32/interface-descriptors-ia32.cc',
-+ 'ia32/macro-assembler-ia32.cc',
-+ 'ia32/macro-assembler-ia32.h',
-+ 'compiler/ia32/code-generator-ia32.cc',
-+ 'compiler/ia32/instruction-codes-ia32.h',
-+ 'compiler/ia32/instruction-scheduler-ia32.cc',
-+ 'compiler/ia32/instruction-selector-ia32.cc',
-+ 'crankshaft/ia32/lithium-codegen-ia32.cc',
-+ 'crankshaft/ia32/lithium-codegen-ia32.h',
-+ 'crankshaft/ia32/lithium-gap-resolver-ia32.cc',
-+ 'crankshaft/ia32/lithium-gap-resolver-ia32.h',
-+ 'crankshaft/ia32/lithium-ia32.cc',
-+ 'crankshaft/ia32/lithium-ia32.h',
-+ 'debug/ia32/debug-ia32.cc',
-+ 'full-codegen/ia32/full-codegen-ia32.cc',
-+ 'ic/ia32/access-compiler-ia32.cc',
-+ 'ic/ia32/handler-compiler-ia32.cc',
-+ 'ic/ia32/ic-ia32.cc',
-+ 'ic/ia32/ic-compiler-ia32.cc',
-+ 'ic/ia32/stub-cache-ia32.cc',
-+ 'regexp/ia32/regexp-macro-assembler-ia32.cc',
-+ 'regexp/ia32/regexp-macro-assembler-ia32.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="x87"', {
-+ 'sources': [ ### gcmole(arch:x87) ###
-+ 'x87/assembler-x87-inl.h',
-+ 'x87/assembler-x87.cc',
-+ 'x87/assembler-x87.h',
-+ 'x87/builtins-x87.cc',
-+ 'x87/code-stubs-x87.cc',
-+ 'x87/code-stubs-x87.h',
-+ 'x87/codegen-x87.cc',
-+ 'x87/codegen-x87.h',
-+ 'x87/cpu-x87.cc',
-+ 'x87/deoptimizer-x87.cc',
-+ 'x87/disasm-x87.cc',
-+ 'x87/frames-x87.cc',
-+ 'x87/frames-x87.h',
-+ 'x87/interface-descriptors-x87.cc',
-+ 'x87/macro-assembler-x87.cc',
-+ 'x87/macro-assembler-x87.h',
-+ 'compiler/x87/code-generator-x87.cc',
-+ 'compiler/x87/instruction-codes-x87.h',
-+ 'compiler/x87/instruction-scheduler-x87.cc',
-+ 'compiler/x87/instruction-selector-x87.cc',
-+ 'crankshaft/x87/lithium-codegen-x87.cc',
-+ 'crankshaft/x87/lithium-codegen-x87.h',
-+ 'crankshaft/x87/lithium-gap-resolver-x87.cc',
-+ 'crankshaft/x87/lithium-gap-resolver-x87.h',
-+ 'crankshaft/x87/lithium-x87.cc',
-+ 'crankshaft/x87/lithium-x87.h',
-+ 'debug/x87/debug-x87.cc',
-+ 'full-codegen/x87/full-codegen-x87.cc',
-+ 'ic/x87/access-compiler-x87.cc',
-+ 'ic/x87/handler-compiler-x87.cc',
-+ 'ic/x87/ic-x87.cc',
-+ 'ic/x87/ic-compiler-x87.cc',
-+ 'ic/x87/stub-cache-x87.cc',
-+ 'regexp/x87/regexp-macro-assembler-x87.cc',
-+ 'regexp/x87/regexp-macro-assembler-x87.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="mips" or v8_target_arch=="mipsel"', {
-+ 'sources': [ ### gcmole(arch:mipsel) ###
-+ 'mips/assembler-mips.cc',
-+ 'mips/assembler-mips.h',
-+ 'mips/assembler-mips-inl.h',
-+ 'mips/builtins-mips.cc',
-+ 'mips/codegen-mips.cc',
-+ 'mips/codegen-mips.h',
-+ 'mips/code-stubs-mips.cc',
-+ 'mips/code-stubs-mips.h',
-+ 'mips/constants-mips.cc',
-+ 'mips/constants-mips.h',
-+ 'mips/cpu-mips.cc',
-+ 'mips/deoptimizer-mips.cc',
-+ 'mips/disasm-mips.cc',
-+ 'mips/frames-mips.cc',
-+ 'mips/frames-mips.h',
-+ 'mips/interface-descriptors-mips.cc',
-+ 'mips/macro-assembler-mips.cc',
-+ 'mips/macro-assembler-mips.h',
-+ 'mips/simulator-mips.cc',
-+ 'mips/simulator-mips.h',
-+ 'compiler/mips/code-generator-mips.cc',
-+ 'compiler/mips/instruction-codes-mips.h',
-+ 'compiler/mips/instruction-scheduler-mips.cc',
-+ 'compiler/mips/instruction-selector-mips.cc',
-+ 'crankshaft/mips/lithium-codegen-mips.cc',
-+ 'crankshaft/mips/lithium-codegen-mips.h',
-+ 'crankshaft/mips/lithium-gap-resolver-mips.cc',
-+ 'crankshaft/mips/lithium-gap-resolver-mips.h',
-+ 'crankshaft/mips/lithium-mips.cc',
-+ 'crankshaft/mips/lithium-mips.h',
-+ 'full-codegen/mips/full-codegen-mips.cc',
-+ 'debug/mips/debug-mips.cc',
-+ 'ic/mips/access-compiler-mips.cc',
-+ 'ic/mips/handler-compiler-mips.cc',
-+ 'ic/mips/ic-mips.cc',
-+ 'ic/mips/ic-compiler-mips.cc',
-+ 'ic/mips/stub-cache-mips.cc',
-+ 'regexp/mips/regexp-macro-assembler-mips.cc',
-+ 'regexp/mips/regexp-macro-assembler-mips.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="mips64" or v8_target_arch=="mips64el"', {
-+ 'sources': [ ### gcmole(arch:mips64el) ###
-+ 'mips64/assembler-mips64.cc',
-+ 'mips64/assembler-mips64.h',
-+ 'mips64/assembler-mips64-inl.h',
-+ 'mips64/builtins-mips64.cc',
-+ 'mips64/codegen-mips64.cc',
-+ 'mips64/codegen-mips64.h',
-+ 'mips64/code-stubs-mips64.cc',
-+ 'mips64/code-stubs-mips64.h',
-+ 'mips64/constants-mips64.cc',
-+ 'mips64/constants-mips64.h',
-+ 'mips64/cpu-mips64.cc',
-+ 'mips64/deoptimizer-mips64.cc',
-+ 'mips64/disasm-mips64.cc',
-+ 'mips64/frames-mips64.cc',
-+ 'mips64/frames-mips64.h',
-+ 'mips64/interface-descriptors-mips64.cc',
-+ 'mips64/macro-assembler-mips64.cc',
-+ 'mips64/macro-assembler-mips64.h',
-+ 'mips64/simulator-mips64.cc',
-+ 'mips64/simulator-mips64.h',
-+ 'compiler/mips64/code-generator-mips64.cc',
-+ 'compiler/mips64/instruction-codes-mips64.h',
-+ 'compiler/mips64/instruction-scheduler-mips64.cc',
-+ 'compiler/mips64/instruction-selector-mips64.cc',
-+ 'crankshaft/mips64/lithium-codegen-mips64.cc',
-+ 'crankshaft/mips64/lithium-codegen-mips64.h',
-+ 'crankshaft/mips64/lithium-gap-resolver-mips64.cc',
-+ 'crankshaft/mips64/lithium-gap-resolver-mips64.h',
-+ 'crankshaft/mips64/lithium-mips64.cc',
-+ 'crankshaft/mips64/lithium-mips64.h',
-+ 'debug/mips64/debug-mips64.cc',
-+ 'full-codegen/mips64/full-codegen-mips64.cc',
-+ 'ic/mips64/access-compiler-mips64.cc',
-+ 'ic/mips64/handler-compiler-mips64.cc',
-+ 'ic/mips64/ic-mips64.cc',
-+ 'ic/mips64/ic-compiler-mips64.cc',
-+ 'ic/mips64/stub-cache-mips64.cc',
-+ 'regexp/mips64/regexp-macro-assembler-mips64.cc',
-+ 'regexp/mips64/regexp-macro-assembler-mips64.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="x64" or v8_target_arch=="x32"', {
-+ 'sources': [ ### gcmole(arch:x64) ###
-+ 'crankshaft/x64/lithium-codegen-x64.cc',
-+ 'crankshaft/x64/lithium-codegen-x64.h',
-+ 'crankshaft/x64/lithium-gap-resolver-x64.cc',
-+ 'crankshaft/x64/lithium-gap-resolver-x64.h',
-+ 'crankshaft/x64/lithium-x64.cc',
-+ 'crankshaft/x64/lithium-x64.h',
-+ 'x64/assembler-x64-inl.h',
-+ 'x64/assembler-x64.cc',
-+ 'x64/assembler-x64.h',
-+ 'x64/builtins-x64.cc',
-+ 'x64/code-stubs-x64.cc',
-+ 'x64/code-stubs-x64.h',
-+ 'x64/codegen-x64.cc',
-+ 'x64/codegen-x64.h',
-+ 'x64/cpu-x64.cc',
-+ 'x64/deoptimizer-x64.cc',
-+ 'x64/disasm-x64.cc',
-+ 'x64/frames-x64.cc',
-+ 'x64/frames-x64.h',
-+ 'x64/interface-descriptors-x64.cc',
-+ 'x64/macro-assembler-x64.cc',
-+ 'x64/macro-assembler-x64.h',
-+ 'debug/x64/debug-x64.cc',
-+ 'full-codegen/x64/full-codegen-x64.cc',
-+ 'ic/x64/access-compiler-x64.cc',
-+ 'ic/x64/handler-compiler-x64.cc',
-+ 'ic/x64/ic-x64.cc',
-+ 'ic/x64/ic-compiler-x64.cc',
-+ 'ic/x64/stub-cache-x64.cc',
-+ 'regexp/x64/regexp-macro-assembler-x64.cc',
-+ 'regexp/x64/regexp-macro-assembler-x64.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="x64"', {
-+ 'sources': [
-+ 'compiler/x64/code-generator-x64.cc',
-+ 'compiler/x64/instruction-codes-x64.h',
-+ 'compiler/x64/instruction-scheduler-x64.cc',
-+ 'compiler/x64/instruction-selector-x64.cc',
-+ ],
-+ }],
-+ ['v8_target_arch=="ppc" or v8_target_arch=="ppc64"', {
-+ 'sources': [ ### gcmole(arch:ppc) ###
-+ 'compiler/ppc/code-generator-ppc.cc',
-+ 'compiler/ppc/instruction-codes-ppc.h',
-+ 'compiler/ppc/instruction-scheduler-ppc.cc',
-+ 'compiler/ppc/instruction-selector-ppc.cc',
-+ 'crankshaft/ppc/lithium-ppc.cc',
-+ 'crankshaft/ppc/lithium-ppc.h',
-+ 'crankshaft/ppc/lithium-codegen-ppc.cc',
-+ 'crankshaft/ppc/lithium-codegen-ppc.h',
-+ 'crankshaft/ppc/lithium-gap-resolver-ppc.cc',
-+ 'crankshaft/ppc/lithium-gap-resolver-ppc.h',
-+ 'debug/ppc/debug-ppc.cc',
-+ 'full-codegen/ppc/full-codegen-ppc.cc',
-+ 'ic/ppc/access-compiler-ppc.cc',
-+ 'ic/ppc/handler-compiler-ppc.cc',
-+ 'ic/ppc/ic-ppc.cc',
-+ 'ic/ppc/ic-compiler-ppc.cc',
-+ 'ic/ppc/stub-cache-ppc.cc',
-+ 'ppc/assembler-ppc-inl.h',
-+ 'ppc/assembler-ppc.cc',
-+ 'ppc/assembler-ppc.h',
-+ 'ppc/builtins-ppc.cc',
-+ 'ppc/code-stubs-ppc.cc',
-+ 'ppc/code-stubs-ppc.h',
-+ 'ppc/codegen-ppc.cc',
-+ 'ppc/codegen-ppc.h',
-+ 'ppc/constants-ppc.h',
-+ 'ppc/constants-ppc.cc',
-+ 'ppc/cpu-ppc.cc',
-+ 'ppc/deoptimizer-ppc.cc',
-+ 'ppc/disasm-ppc.cc',
-+ 'ppc/frames-ppc.cc',
-+ 'ppc/frames-ppc.h',
-+ 'ppc/interface-descriptors-ppc.cc',
-+ 'ppc/macro-assembler-ppc.cc',
-+ 'ppc/macro-assembler-ppc.h',
-+ 'ppc/simulator-ppc.cc',
-+ 'ppc/simulator-ppc.h',
-+ 'regexp/ppc/regexp-macro-assembler-ppc.cc',
-+ 'regexp/ppc/regexp-macro-assembler-ppc.h',
-+ ],
-+ }],
-+ ['v8_target_arch=="s390" or v8_target_arch=="s390x"', {
-+ 'sources': [ ### gcmole(arch:s390) ###
-+ 'compiler/s390/code-generator-s390.cc',
-+ 'compiler/s390/instruction-codes-s390.h',
-+ 'compiler/s390/instruction-scheduler-s390.cc',
-+ 'compiler/s390/instruction-selector-s390.cc',
-+ 'crankshaft/s390/lithium-codegen-s390.cc',
-+ 'crankshaft/s390/lithium-codegen-s390.h',
-+ 'crankshaft/s390/lithium-gap-resolver-s390.cc',
-+ 'crankshaft/s390/lithium-gap-resolver-s390.h',
-+ 'crankshaft/s390/lithium-s390.cc',
-+ 'crankshaft/s390/lithium-s390.h',
-+ 'debug/s390/debug-s390.cc',
-+ 'full-codegen/s390/full-codegen-s390.cc',
-+ 'ic/s390/access-compiler-s390.cc',
-+ 'ic/s390/handler-compiler-s390.cc',
-+ 'ic/s390/ic-compiler-s390.cc',
-+ 'ic/s390/ic-s390.cc',
-+ 'ic/s390/stub-cache-s390.cc',
-+ 'regexp/s390/regexp-macro-assembler-s390.cc',
-+ 'regexp/s390/regexp-macro-assembler-s390.h',
-+ 's390/assembler-s390.cc',
-+ 's390/assembler-s390.h',
-+ 's390/assembler-s390-inl.h',
-+ 's390/builtins-s390.cc',
-+ 's390/codegen-s390.cc',
-+ 's390/codegen-s390.h',
-+ 's390/code-stubs-s390.cc',
-+ 's390/code-stubs-s390.h',
-+ 's390/constants-s390.cc',
-+ 's390/constants-s390.h',
-+ 's390/cpu-s390.cc',
-+ 's390/deoptimizer-s390.cc',
-+ 's390/disasm-s390.cc',
-+ 's390/frames-s390.cc',
-+ 's390/frames-s390.h',
-+ 's390/interface-descriptors-s390.cc',
-+ 's390/macro-assembler-s390.cc',
-+ 's390/macro-assembler-s390.h',
-+ 's390/simulator-s390.cc',
-+ 's390/simulator-s390.h',
-+ ],
-+ }],
-+ ['OS=="win"', {
-+ 'variables': {
-+ 'gyp_generators': '<!(echo $GYP_GENERATORS)',
-+ },
-+ 'msvs_disabled_warnings': [4351, 4355, 4800],
-+ # When building Official, the .lib is too large and exceeds the 2G
-+ # limit. This breaks it into multiple pieces to avoid the limit.
-+ # See http://crbug.com/485155.
-+ 'msvs_shard': 4,
-+ }],
-+ ['v8_component=="shared_library"', {
-+ 'defines': [
-+ 'BUILDING_V8_SHARED',
-+ 'V8_SHARED',
-+ ],
-+ }],
-+ ['v8_postmortem_support=="true"', {
-+ 'sources': [
-+ '<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
-+ ]
-+ }],
-+ ['v8_enable_i18n_support==1', {
-+ 'dependencies': [
-+ '<(icu_gyp_path):icui18n',
-+ '<(icu_gyp_path):icuuc',
-+ ],
-+ 'conditions': [
-+ ['icu_use_data_file_flag==1', {
-+ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE'],
-+ }, { # else icu_use_data_file_flag !=1
-+ 'conditions': [
-+ ['OS=="win"', {
-+ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_SHARED'],
-+ }, {
-+ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC'],
-+ }],
-+ ],
-+ }],
-+ ],
-+ }, { # v8_enable_i18n_support==0
-+ 'sources!': [
-+ 'i18n.cc',
-+ 'i18n.h',
-+ ],
-+ }],
-+ ['OS=="win" and v8_enable_i18n_support==1', {
-+ 'dependencies': [
-+ '<(icu_gyp_path):icudata',
-+ ],
-+ }],
-+ ],
-+ },
-+ {
-+ 'target_name': 'v8_libbase_sse2',
-+ 'type': 'static_library',
-+ 'variables': {
-+ 'optimize': 'max',
-+ },
-+ 'include_dirs+': [
-+ '..',
-+ ],
-+ 'sources': [
-+ 'base/accounting-allocator.cc',
-+ 'base/accounting-allocator.h',
-+ 'base/adapters.h',
-+ 'base/atomic-utils.h',
-+ 'base/atomicops.h',
-+ 'base/atomicops_internals_arm64_gcc.h',
-+ 'base/atomicops_internals_arm_gcc.h',
-+ 'base/atomicops_internals_atomicword_compat.h',
-+ 'base/atomicops_internals_mac.h',
-+ 'base/atomicops_internals_mips_gcc.h',
-+ 'base/atomicops_internals_mips64_gcc.h',
-+ 'base/atomicops_internals_portable.h',
-+ 'base/atomicops_internals_ppc_gcc.h',
-+ 'base/atomicops_internals_s390_gcc.h',
-+ 'base/atomicops_internals_tsan.h',
-+ 'base/atomicops_internals_x86_gcc.cc',
-+ 'base/atomicops_internals_x86_gcc.h',
-+ 'base/atomicops_internals_x86_msvc.h',
-+ 'base/bits.cc',
-+ 'base/bits.h',
-+ 'base/build_config.h',
-+ 'base/compiler-specific.h',
-+ 'base/cpu.cc',
-+ 'base/cpu.h',
-+ 'base/division-by-constant.cc',
-+ 'base/division-by-constant.h',
-+ 'base/file-utils.cc',
-+ 'base/file-utils.h',
-+ 'base/flags.h',
-+ 'base/format-macros.h',
-+ 'base/functional.cc',
-+ 'base/functional.h',
-+ 'base/hashmap.h',
-+ 'base/ieee754.cc',
-+ 'base/ieee754.h',
-+ 'base/iterator.h',
-+ 'base/lazy-instance.h',
-+ 'base/logging.cc',
-+ 'base/logging.h',
-+ 'base/macros.h',
-+ 'base/once.cc',
-+ 'base/once.h',
-+ 'base/platform/elapsed-timer.h',
-+ 'base/platform/time.cc',
-+ 'base/platform/time.h',
-+ 'base/platform/condition-variable.cc',
-+ 'base/platform/condition-variable.h',
-+ 'base/platform/mutex.cc',
-+ 'base/platform/mutex.h',
-+ 'base/platform/platform.h',
-+ 'base/platform/semaphore.cc',
-+ 'base/platform/semaphore.h',
-+ 'base/safe_conversions.h',
-+ 'base/safe_conversions_impl.h',
-+ 'base/safe_math.h',
-+ 'base/safe_math_impl.h',
-+ 'base/smart-pointers.h',
-+ 'base/sys-info.cc',
-+ 'base/sys-info.h',
-+ 'base/utils/random-number-generator.cc',
-+ 'base/utils/random-number-generator.h',
-+ ],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ['OS=="linux"', {
-+ 'conditions': [
-+ ['nacl_target_arch=="none"', {
-+ 'link_settings': {
-+ 'libraries': [
-+ '-ldl',
-+ '-lrt'
-+ ],
-+ },
-+ }, {
-+ 'defines': [
-+ 'V8_LIBRT_NOT_AVAILABLE=1',
-+ ],
-+ }],
-+ ],
-+ 'sources': [
-+ 'base/platform/platform-linux.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }
-+ ],
-+ ['OS=="android"', {
-+ 'sources': [
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ 'link_settings': {
-+ 'target_conditions': [
-+ ['_toolset=="host" and host_os!="mac"', {
-+ # Only include libdl and librt on host builds because they
-+ # are included by default on Android target builds, and we
-+ # don't want to re-include them here since this will change
-+ # library order and break (see crbug.com/469973).
-+ # These libraries do not exist on Mac hosted builds.
-+ 'libraries': [
-+ '-ldl',
-+ '-lrt'
-+ ]
-+ }]
-+ ]
-+ },
-+ 'conditions': [
-+ ['host_os=="mac"', {
-+ 'target_conditions': [
-+ ['_toolset=="host"', {
-+ 'sources': [
-+ 'base/platform/platform-macos.cc'
-+ ]
-+ }, {
-+ 'sources': [
-+ 'base/platform/platform-linux.cc'
-+ ]
-+ }],
-+ ],
-+ }, {
-+ 'sources': [
-+ 'base/platform/platform-linux.cc'
-+ ]
-+ }],
-+ ],
-+ },
-+ ],
-+ ['OS=="qnx"', {
-+ 'link_settings': {
-+ 'target_conditions': [
-+ ['_toolset=="host" and host_os=="linux"', {
-+ 'libraries': [
-+ '-lrt'
-+ ],
-+ }],
-+ ['_toolset=="target"', {
-+ 'libraries': [
-+ '-lbacktrace'
-+ ],
-+ }],
-+ ],
-+ },
-+ 'sources': [
-+ 'base/platform/platform-posix.cc',
-+ 'base/qnx-math.h',
-+ ],
-+ 'target_conditions': [
-+ ['_toolset=="host" and host_os=="linux"', {
-+ 'sources': [
-+ 'base/platform/platform-linux.cc'
-+ ],
-+ }],
-+ ['_toolset=="host" and host_os=="mac"', {
-+ 'sources': [
-+ 'base/platform/platform-macos.cc'
-+ ],
-+ }],
-+ ['_toolset=="target"', {
-+ 'sources': [
-+ 'base/platform/platform-qnx.cc'
-+ ],
-+ }],
-+ ],
-+ },
-+ ],
-+ ['OS=="freebsd"', {
-+ 'link_settings': {
-+ 'libraries': [
-+ '-L/usr/local/lib -lexecinfo',
-+ ]},
-+ 'sources': [
-+ 'base/platform/platform-freebsd.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }
-+ ],
-+ ['OS=="openbsd"', {
-+ 'link_settings': {
-+ 'libraries': [
-+ '-L/usr/local/lib -lexecinfo',
-+ ]},
-+ 'sources': [
-+ 'base/platform/platform-openbsd.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }
-+ ],
-+ ['OS=="netbsd"', {
-+ 'link_settings': {
-+ 'libraries': [
-+ '-L/usr/pkg/lib -Wl,-R/usr/pkg/lib -lexecinfo',
-+ ]},
-+ 'sources': [
-+ 'base/platform/platform-openbsd.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }
-+ ],
-+ ['OS=="aix"', {
-+ 'sources': [
-+ 'base/platform/platform-aix.cc',
-+ 'base/platform/platform-posix.cc'
-+ ]},
-+ ],
-+ ['OS=="solaris"', {
-+ 'link_settings': {
-+ 'libraries': [
-+ '-lnsl -lrt',
-+ ]},
-+ 'sources': [
-+ 'base/platform/platform-solaris.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }
-+ ],
-+ ['OS=="mac"', {
-+ 'sources': [
-+ 'base/platform/platform-macos.cc',
-+ 'base/platform/platform-posix.cc'
-+ ]},
-+ ],
-+ ['OS=="win"', {
-+ 'defines': [
-+ '_CRT_RAND_S' # for rand_s()
-+ ],
-+ 'variables': {
-+ 'gyp_generators': '<!(echo $GYP_GENERATORS)',
-+ },
-+ 'conditions': [
-+ ['gyp_generators=="make"', {
-+ 'variables': {
-+ 'build_env': '<!(uname -o)',
-+ },
-+ 'conditions': [
-+ ['build_env=="Cygwin"', {
-+ 'sources': [
-+ 'base/platform/platform-cygwin.cc',
-+ 'base/platform/platform-posix.cc'
-+ ],
-+ }, {
-+ 'sources': [
-+ 'base/platform/platform-win32.cc',
-+ 'base/win32-headers.h',
-+ ],
-+ }],
-+ ],
-+ 'link_settings': {
-+ 'libraries': [ '-lwinmm', '-lws2_32' ],
-+ },
-+ }, {
-+ 'sources': [
-+ 'base/platform/platform-win32.cc',
-+ 'base/win32-headers.h',
-+ ],
-+ 'msvs_disabled_warnings': [4351, 4355, 4800],
-+ 'link_settings': {
-+ 'libraries': [ '-lwinmm.lib', '-lws2_32.lib' ],
-+ },
-+ }],
-+ ],
-+ }],
-+ ],
-+ },
-+ {
-+ 'target_name': 'v8_libplatform_sse2',
-+ 'type': 'static_library',
-+ 'variables': {
-+ 'optimize': 'max',
-+ },
-+ 'dependencies': [
-+ 'v8_libbase_sse2',
-+ ],
-+ 'include_dirs+': [
-+ '..',
-+ '../include',
-+ ],
-+ 'sources': [
-+ '../include/libplatform/libplatform.h',
-+ 'libplatform/default-platform.cc',
-+ 'libplatform/default-platform.h',
-+ 'libplatform/task-queue.cc',
-+ 'libplatform/task-queue.h',
-+ 'libplatform/worker-thread.cc',
-+ 'libplatform/worker-thread.h',
-+ ],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ],
-+ 'direct_dependent_settings': {
-+ 'include_dirs': [
-+ '../include',
-+ ],
-+ },
-+ },
-+ {
-+ 'target_name': 'v8_libsampler_sse2',
-+ 'type': 'static_library',
-+ 'variables': {
-+ 'optimize': 'max',
-+ },
-+ 'dependencies': [
-+ 'v8_libbase_sse2',
-+ ],
-+ 'include_dirs+': [
-+ '..',
-+ '../include',
-+ ],
-+ 'sources': [
-+ 'libsampler/v8-sampler.cc',
-+ 'libsampler/v8-sampler.h'
-+ ],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ],
-+ 'direct_dependent_settings': {
-+ 'include_dirs': [
-+ '../include',
-+ ],
-+ },
-+ },
-+ {
-+ 'target_name': 'natives_blob_sse2',
-+ 'type': 'none',
-+ 'conditions': [
-+ [ 'v8_use_external_startup_data==1', {
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'dependencies': ['js2c_sse2#host'],
-+ }, {
-+ 'dependencies': ['js2c_sse2'],
-+ }],
-+ ],
-+ 'actions': [{
-+ 'action_name': 'v8_sse2_concatenate_natives_blob',
-+ 'inputs': [
-+ '../tools/concatenate-files.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.bin',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental_sse2.bin',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries-extras_sse2.bin',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental-extras_sse2.bin',
-+ ],
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'target_conditions': [
-+ ['_toolset=="host"', {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/natives_blob_host_sse2.bin',
-+ ],
-+ 'action': [
-+ 'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_host_sse2.bin'
-+ ],
-+ }, {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/natives_blob_sse2.bin',
-+ ],
-+ 'action': [
-+ 'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_sse2.bin'
-+ ],
-+ }],
-+ ],
-+ }, {
-+ 'outputs': [
-+ '<(PRODUCT_DIR)/natives_blob_sse2.bin',
-+ ],
-+ 'action': [
-+ 'python', '<@(_inputs)', '<(PRODUCT_DIR)/natives_blob_sse2.bin'
-+ ],
-+ }],
-+ ],
-+ }],
-+ }],
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host', 'target'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ]
-+ },
-+ {
-+ 'target_name': 'js2c_sse2',
-+ 'type': 'none',
-+ 'conditions': [
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ],
-+ 'variables': {
-+ 'library_files': [
-+ 'js/macros.py',
-+ 'messages.h',
-+ 'js/prologue.js',
-+ 'js/runtime.js',
-+ 'js/v8natives.js',
-+ 'js/symbol.js',
-+ 'js/array.js',
-+ 'js/string.js',
-+ 'js/math.js',
-+ 'third_party/fdlibm/fdlibm.js',
-+ 'js/regexp.js',
-+ 'js/arraybuffer.js',
-+ 'js/typedarray.js',
-+ 'js/iterator-prototype.js',
-+ 'js/collection.js',
-+ 'js/weak-collection.js',
-+ 'js/collection-iterator.js',
-+ 'js/promise.js',
-+ 'js/messages.js',
-+ 'js/array-iterator.js',
-+ 'js/string-iterator.js',
-+ 'js/templates.js',
-+ 'js/spread.js',
-+ 'js/proxy.js',
-+ 'debug/mirrors.js',
-+ 'debug/debug.js',
-+ 'debug/liveedit.js',
-+ ],
-+ 'experimental_library_files': [
-+ 'js/macros.py',
-+ 'messages.h',
-+ 'js/harmony-atomics.js',
-+ 'js/harmony-sharedarraybuffer.js',
-+ 'js/harmony-simd.js',
-+ 'js/harmony-string-padding.js',
-+ 'js/promise-extra.js',
-+ 'js/harmony-async-await.js'
-+ ],
-+ 'libraries_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.bin',
-+ 'libraries_experimental_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental_sse2.bin',
-+ 'libraries_extras_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-extras_sse2.bin',
-+ 'libraries_experimental_extras_bin_file': '<(SHARED_INTERMEDIATE_DIR)/libraries-experimental-extras_sse2.bin',
-+ 'conditions': [
-+ ['v8_enable_i18n_support==1', {
-+ 'library_files': ['js/i18n.js'],
-+ 'experimental_library_files': [
-+ 'js/icu-case-mapping.js',
-+ 'js/intl-extra.js',
-+ ],
-+ }],
-+ ],
-+ },
-+ 'actions': [
-+ {
-+ 'action_name': 'v8_sse2_js2c',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(library_files)',
-+ ],
-+ 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
-+ 'CORE',
-+ '<@(library_files)',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_bin',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(library_files)',
-+ ],
-+ 'outputs': ['<@(libraries_bin_file)'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/libraries_sse2.cc',
-+ 'CORE',
-+ '<@(library_files)',
-+ '--startup_blob', '<@(libraries_bin_file)',
-+ '--nojs',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_experimental',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(experimental_library_files)',
-+ ],
-+ 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
-+ 'EXPERIMENTAL',
-+ '<@(experimental_library_files)',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_experimental_bin',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(experimental_library_files)',
-+ ],
-+ 'outputs': ['<@(libraries_experimental_bin_file)'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries_sse2.cc',
-+ 'EXPERIMENTAL',
-+ '<@(experimental_library_files)',
-+ '--startup_blob', '<@(libraries_experimental_bin_file)',
-+ '--nojs',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_extras',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(v8_extra_library_files)',
-+ ],
-+ 'outputs': ['<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
-+ 'EXTRAS',
-+ '<@(v8_extra_library_files)',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_extras_bin',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(v8_extra_library_files)',
-+ ],
-+ 'outputs': ['<@(libraries_extras_bin_file)'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/extras-libraries_sse2.cc',
-+ 'EXTRAS',
-+ '<@(v8_extra_library_files)',
-+ '--startup_blob', '<@(libraries_extras_bin_file)',
-+ '--nojs',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_experimental_extras',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(v8_experimental_extra_library_files)',
-+ ],
-+ 'outputs': [
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
-+ ],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
-+ 'EXPERIMENTAL_EXTRAS',
-+ '<@(v8_experimental_extra_library_files)',
-+ ],
-+ },
-+ {
-+ 'action_name': 'v8_sse2_js2c_experimental_extras_bin',
-+ 'inputs': [
-+ '../tools/js2c.py',
-+ '<@(v8_experimental_extra_library_files)',
-+ ],
-+ 'outputs': ['<@(libraries_experimental_extras_bin_file)'],
-+ 'action': [
-+ 'python',
-+ '../tools/js2c.py',
-+ '<(SHARED_INTERMEDIATE_DIR)/experimental-extras-libraries_sse2.cc',
-+ 'EXPERIMENTAL_EXTRAS',
-+ '<@(v8_experimental_extra_library_files)',
-+ '--startup_blob', '<@(libraries_experimental_extras_bin_file)',
-+ '--nojs',
-+ ],
-+ },
-+ ],
-+ },
-+ {
-+ 'target_name': 'postmortem-metadata_sse2',
-+ 'type': 'none',
-+ 'variables': {
-+ 'heapobject_files': [
-+ 'objects.h',
-+ 'objects-inl.h',
-+ ],
-+ },
-+ 'actions': [
-+ {
-+ 'action_name': 'v8_sse2_gen-postmortem-metadata',
-+ 'inputs': [
-+ '../tools/gen-postmortem-metadata.py',
-+ '<@(heapobject_files)',
-+ ],
-+ 'outputs': [
-+ '<(SHARED_INTERMEDIATE_DIR)/debug-support.cc',
-+ ],
-+ 'action': [
-+ 'python',
-+ '../tools/gen-postmortem-metadata.py',
-+ '<@(_outputs)',
-+ '<@(heapobject_files)'
-+ ]
-+ }
-+ ]
-+ },
-+ {
-+ 'target_name': 'mksnapshot_sse2',
-+ 'type': 'executable',
-+ 'dependencies': ['v8_base_sse2', 'v8_nosnapshot_sse2', 'v8_libplatform_sse2'],
-+ 'include_dirs+': [
-+ '..',
-+ ],
-+ 'sources': [
-+ 'snapshot/mksnapshot.cc',
-+ ],
-+ 'conditions': [
-+ ['v8_enable_i18n_support==1', {
-+ 'dependencies': [
-+ '<(icu_gyp_path):icui18n',
-+ '<(icu_gyp_path):icuuc',
-+ ]
-+ }],
-+ ['want_separate_host_toolset==1', {
-+ 'toolsets': ['host'],
-+ }, {
-+ 'toolsets': ['target'],
-+ }],
-+ ],
-+ },
-+ ],
-+}
-diff -Nur qtwebengine-opensource-src-5.8.0/src/core/core_module.pro qtwebengine-opensource-src-5.8.0-no-sse2/src/core/core_module.pro
---- qtwebengine-opensource-src-5.8.0/src/core/core_module.pro 2017-01-03 11:35:11.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/core/core_module.pro 2017-03-05 17:30:17.502552632 +0100
-@@ -9,6 +9,29 @@
- error("Could not find the linking information that gyp should have generated.")
- }
-
-+# find the shared libraries in the link line
-+# remove those in lib/sse2 that are only replacements for the normal ones
-+# collect all shared libraries so they can be installed
-+for(private_lib, LIBS_PRIVATE) {
-+ contains(private_lib, .*\.so) {
-+ contains(private_lib, .*/lib/sse2/.*) {
-+ LIBS_PRIVATE -= $$private_lib
-+ shlibs_sse2 += $$private_lib
-+ } else {
-+ shlibs += $$private_lib
-+ }
-+ }
-+}
-+
-+# set the shared libraries to be installed
-+# add an rpath to their installation location
-+shlib_install_path = $$[QT_INSTALL_LIBS]/qtwebengine
-+!isEmpty(shlibs) {
-+ shlibs.files += $$shlibs
-+ shlibs_sse2.files += $$shlibs_sse2
-+ LIBS_PRIVATE += -Wl,--rpath,$$shlib_install_path
-+}
-+
- load(qt_module)
-
- api_library_name = qtwebenginecoreapi$$qtPlatformTargetSuffix()
-@@ -74,7 +97,12 @@
- locales.path = $$[QT_INSTALL_TRANSLATIONS]/qtwebengine_locales
- resources.CONFIG += no_check_exist
- resources.path = $$[QT_INSTALL_DATA]/resources
-- INSTALLS += locales resources
-+ # install the shared libraries
-+ shlibs.CONFIG += no_check_exist
-+ shlibs.path = $$shlib_install_path
-+ shlibs_sse2.CONFIG += no_check_exist
-+ shlibs_sse2.path = $$shlib_install_path/sse2
-+ INSTALLS += locales resources shlibs shlibs_sse2
-
- !use?(system_icu) {
- icu.CONFIG += no_check_exist
-diff -Nur qtwebengine-opensource-src-5.8.0/src/core/qtwebengine.gypi qtwebengine-opensource-src-5.8.0-no-sse2/src/core/qtwebengine.gypi
---- qtwebengine-opensource-src-5.8.0/src/core/qtwebengine.gypi 2017-01-03 11:35:11.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-no-sse2/src/core/qtwebengine.gypi 2017-03-05 17:30:17.503552617 +0100
-@@ -63,6 +63,11 @@
- },
- },
- 'conditions': [
-+ ['target_arch=="ia32"', {
-+ 'dependencies': [
-+ '<(chromium_src_dir)/v8/src/v8_sse2.gyp:v8_sse2',
-+ ],
-+ }],
- ['OS=="win" and win_use_allocator_shim==1', {
- 'dependencies': [
- '<(chromium_src_dir)/base/allocator/allocator.gyp:allocator',
diff --git a/qtwebengine-opensource-src-5.8.0-pdfium-gcc7.patch b/qtwebengine-opensource-src-5.8.0-pdfium-gcc7.patch
deleted file mode 100644
index ce2c180..0000000
--- a/qtwebengine-opensource-src-5.8.0-pdfium-gcc7.patch
+++ /dev/null
@@ -1,600 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/app.cpp qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/app.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/app.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/app.cpp 2017-03-06 13:04:01.784297561 +0100
-@@ -454,7 +454,7 @@
- }
-
- void app::ClearTimerCommon(const CJS_Value& param) {
-- if (param.GetType() != CJS_Value::VT_fxobject)
-+ if (param.GetType() != CJS_Value::VT_object)
- return;
-
- v8::Local<v8::Object> pObj = param.ToV8Object();
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/Document.cpp qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/Document.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/Document.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/Document.cpp 2017-03-06 13:04:01.783297575 +0100
-@@ -411,22 +411,20 @@
-
- int nlength = params.size();
- if (nlength == 9) {
-- if (params[8].GetType() == CJS_Value::VT_fxobject) {
-+ if (params[8].GetType() == CJS_Value::VT_object) {
- v8::Local<v8::Object> pObj = params[8].ToV8Object();
-- {
-- if (FXJS_GetObjDefnID(pObj) == CJS_PrintParamsObj::g_nObjDefnID) {
-- if (CJS_Object* pJSObj = params[8].ToCJSObject()) {
-- if (PrintParamsObj* pprintparamsObj =
-- (PrintParamsObj*)pJSObj->GetEmbedObject()) {
-- bUI = pprintparamsObj->bUI;
-- nStart = pprintparamsObj->nStart;
-- nEnd = pprintparamsObj->nEnd;
-- bSilent = pprintparamsObj->bSilent;
-- bShrinkToFit = pprintparamsObj->bShrinkToFit;
-- bPrintAsImage = pprintparamsObj->bPrintAsImage;
-- bReverse = pprintparamsObj->bReverse;
-- bAnnotations = pprintparamsObj->bAnnotations;
-- }
-+ if (FXJS_GetObjDefnID(pObj) == CJS_PrintParamsObj::g_nObjDefnID) {
-+ if (CJS_Object* pJSObj = params[8].ToCJSObject()) {
-+ if (PrintParamsObj* pprintparamsObj =
-+ static_cast<PrintParamsObj*>(pJSObj->GetEmbedObject())) {
-+ bUI = pprintparamsObj->bUI;
-+ nStart = pprintparamsObj->nStart;
-+ nEnd = pprintparamsObj->nEnd;
-+ bSilent = pprintparamsObj->bSilent;
-+ bShrinkToFit = pprintparamsObj->bShrinkToFit;
-+ bPrintAsImage = pprintparamsObj->bPrintAsImage;
-+ bReverse = pprintparamsObj->bReverse;
-+ bAnnotations = pprintparamsObj->bAnnotations;
- }
- }
- }
-@@ -597,18 +595,16 @@
- v8::Local<v8::Object> pObj = params[0].ToV8Object();
- v8::Local<v8::Value> pValue = FXJS_GetObjectElement(isolate, pObj, L"cURL");
- if (!pValue.IsEmpty())
-- strURL =
-- CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
-+ strURL = CJS_Value(pRuntime, pValue).ToCFXWideString();
-
- pValue = FXJS_GetObjectElement(isolate, pObj, L"bFDF");
-- bFDF = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToBool();
-+ bFDF = CJS_Value(pRuntime, pValue).ToBool();
-
- pValue = FXJS_GetObjectElement(isolate, pObj, L"bEmpty");
-- bEmpty = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToBool();
-+ bEmpty = CJS_Value(pRuntime, pValue).ToBool();
-
- pValue = FXJS_GetObjectElement(isolate, pObj, L"aFields");
-- aFields.Attach(
-- CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToV8Array());
-+ aFields.Attach(CJS_Value(pRuntime, pValue).ToV8Array());
- }
-
- CPDFSDK_InterForm* pInterForm = m_pDocument->GetInterForm();
-@@ -691,25 +687,22 @@
- v8::Local<v8::Object> pObj = params[0].ToV8Object();
-
- v8::Local<v8::Value> pValue = FXJS_GetObjectElement(isolate, pObj, L"bUI");
-- bUI = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToInt();
-+ bUI = CJS_Value(pRuntime, pValue).ToInt();
-
- pValue = FXJS_GetObjectElement(isolate, pObj, L"cTo");
-- cTo = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
-+ cTo = CJS_Value(pRuntime, pValue).ToCFXWideString();
-
- pValue = FXJS_GetObjectElement(isolate, pObj, L"cCc");
-- cCc = CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
-+ cCc = CJS_Value(pRuntime, pValue).ToCFXWideString();
-
- pValue = FXJS_GetObjectElement(isolate, pObj, L"cBcc");
-- cBcc =
-- CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
-+ cBcc = CJS_Value(pRuntime, pValue).ToCFXWideString();
-
- pValue = FXJS_GetObjectElement(isolate, pObj, L"cSubject");
-- cSubject =
-- CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
-+ cSubject = CJS_Value(pRuntime, pValue).ToCFXWideString();
-
- pValue = FXJS_GetObjectElement(isolate, pObj, L"cMsg");
-- cMsg =
-- CJS_Value(pRuntime, pValue, GET_VALUE_TYPE(pValue)).ToCFXWideString();
-+ cMsg = CJS_Value(pRuntime, pValue).ToCFXWideString();
- }
-
- pRuntime->BeginBlock();
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/global.cpp qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/global.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/global.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/global.cpp 2017-03-06 13:04:01.785297546 +0100
-@@ -17,63 +17,6 @@
- #include "fpdfsdk/javascript/cjs_context.h"
- #include "fpdfsdk/javascript/resource.h"
-
--// Helper class for compile-time calculation of hash values in order to
--// avoid having global object initializers.
--template <unsigned ACC, wchar_t... Ns>
--struct CHash;
--
--// Only needed to hash single-character strings.
--template <wchar_t N>
--struct CHash<N> {
-- static const unsigned value = N;
--};
--
--template <unsigned ACC, wchar_t N>
--struct CHash<ACC, N> {
-- static const unsigned value = (ACC * 1313LLU + N) & 0xFFFFFFFF;
--};
--
--template <unsigned ACC, wchar_t N, wchar_t... Ns>
--struct CHash<ACC, N, Ns...> {
-- static const unsigned value = CHash<CHash<ACC, N>::value, Ns...>::value;
--};
--
--const unsigned int JSCONST_nStringHash =
-- CHash<'s', 't', 'r', 'i', 'n', 'g'>::value;
--const unsigned int JSCONST_nNumberHash =
-- CHash<'n', 'u', 'm', 'b', 'e', 'r'>::value;
--const unsigned int JSCONST_nBoolHash =
-- CHash<'b', 'o', 'o', 'l', 'e', 'a', 'n'>::value;
--const unsigned int JSCONST_nDateHash = CHash<'d', 'a', 't', 'e'>::value;
--const unsigned int JSCONST_nObjectHash =
-- CHash<'o', 'b', 'j', 'e', 'c', 't'>::value;
--const unsigned int JSCONST_nFXobjHash = CHash<'f', 'x', 'o', 'b', 'j'>::value;
--const unsigned int JSCONST_nNullHash = CHash<'n', 'u', 'l', 'l'>::value;
--const unsigned int JSCONST_nUndefHash =
-- CHash<'u', 'n', 'd', 'e', 'f', 'i', 'n', 'e', 'd'>::value;
--
--static unsigned JS_CalcHash(const wchar_t* main) {
-- return (unsigned)FX_HashCode_GetW(CFX_WideStringC(main), false);
--}
--
--#ifndef NDEBUG
--class HashVerify {
-- public:
-- HashVerify();
--} g_hashVerify;
--
--HashVerify::HashVerify() {
-- ASSERT(JSCONST_nStringHash == JS_CalcHash(kFXJSValueNameString));
-- ASSERT(JSCONST_nNumberHash == JS_CalcHash(kFXJSValueNameNumber));
-- ASSERT(JSCONST_nBoolHash == JS_CalcHash(kFXJSValueNameBoolean));
-- ASSERT(JSCONST_nDateHash == JS_CalcHash(kFXJSValueNameDate));
-- ASSERT(JSCONST_nObjectHash == JS_CalcHash(kFXJSValueNameObject));
-- ASSERT(JSCONST_nFXobjHash == JS_CalcHash(kFXJSValueNameFxobj));
-- ASSERT(JSCONST_nNullHash == JS_CalcHash(kFXJSValueNameNull));
-- ASSERT(JSCONST_nUndefHash == JS_CalcHash(kFXJSValueNameUndefined));
--}
--#endif
--
- BEGIN_JS_STATIC_CONST(CJS_Global)
- END_JS_STATIC_CONST()
-
-@@ -335,9 +278,8 @@
- CFX_WideString ws =
- FXJS_ToString(isolate, FXJS_GetArrayElement(isolate, pKeyList, i));
- CFX_ByteString sKey = ws.UTF8Encode();
--
- v8::Local<v8::Value> v = FXJS_GetObjectElement(isolate, pObj, ws);
-- switch (GET_VALUE_TYPE(v)) {
-+ switch (CJS_Value::GetValueType(v)) {
- case CJS_Value::VT_number: {
- CJS_KeyValue* pObjElement = new CJS_KeyValue;
- pObjElement->nType = JS_GLOBALDATA_TYPE_NUMBER;
-@@ -353,8 +295,7 @@
- array.Add(pObjElement);
- } break;
- case CJS_Value::VT_string: {
-- CFX_ByteString sValue =
-- CJS_Value(pRuntime, v, CJS_Value::VT_string).ToCFXByteString();
-+ CFX_ByteString sValue = CJS_Value(pRuntime, v).ToCFXByteString();
- CJS_KeyValue* pObjElement = new CJS_KeyValue;
- pObjElement->nType = JS_GLOBALDATA_TYPE_STRING;
- pObjElement->sKey = sKey;
-@@ -500,26 +441,3 @@
- m_mapGlobal[propname] = pNewData;
- return TRUE;
- }
--
--CJS_Value::Type GET_VALUE_TYPE(v8::Local<v8::Value> p) {
-- const unsigned int nHash = JS_CalcHash(FXJS_GetTypeof(p));
--
-- if (nHash == JSCONST_nUndefHash)
-- return CJS_Value::VT_undefined;
-- if (nHash == JSCONST_nNullHash)
-- return CJS_Value::VT_null;
-- if (nHash == JSCONST_nStringHash)
-- return CJS_Value::VT_string;
-- if (nHash == JSCONST_nNumberHash)
-- return CJS_Value::VT_number;
-- if (nHash == JSCONST_nBoolHash)
-- return CJS_Value::VT_boolean;
-- if (nHash == JSCONST_nDateHash)
-- return CJS_Value::VT_date;
-- if (nHash == JSCONST_nObjectHash)
-- return CJS_Value::VT_object;
-- if (nHash == JSCONST_nFXobjHash)
-- return CJS_Value::VT_fxobject;
--
-- return CJS_Value::VT_unknown;
--}
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Define.h qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Define.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Define.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Define.h 2017-03-06 13:04:01.783297575 +0100
-@@ -111,7 +111,7 @@
- CJS_Object* pJSObj = (CJS_Object*)FXJS_GetPrivate(isolate, info.Holder());
- C* pObj = reinterpret_cast<C*>(pJSObj->GetEmbedObject());
- CFX_WideString sError;
-- CJS_PropValue propValue(CJS_Value(pRuntime, value, CJS_Value::VT_unknown));
-+ CJS_PropValue propValue(CJS_Value(pRuntime, value));
- propValue.StartSetting();
- if (!(pObj->*M)(pContext, propValue, sError)) {
- FXJS_Error(isolate, JSFormatErrorString(class_name_string, prop_name_string,
-@@ -149,7 +149,7 @@
- IJS_Context* pContext = pRuntime->GetCurrentContext();
- std::vector<CJS_Value> parameters;
- for (unsigned int i = 0; i < (unsigned int)info.Length(); i++) {
-- parameters.push_back(CJS_Value(pRuntime, info[i], CJS_Value::VT_unknown));
-+ parameters.push_back(CJS_Value(pRuntime, info[i]));
- }
- CJS_Value valueRes(pRuntime);
- CJS_Object* pJSObj = (CJS_Object*)FXJS_GetPrivate(isolate, info.Holder());
-@@ -404,7 +404,7 @@
- CFX_WideString propname = CFX_WideString::FromUTF8(
- CFX_ByteStringC(*utf8_value, utf8_value.length()));
- CFX_WideString sError;
-- CJS_PropValue PropValue(CJS_Value(pRuntime, value, CJS_Value::VT_unknown));
-+ CJS_PropValue PropValue(CJS_Value(pRuntime, value));
- PropValue.StartSetting();
- if (!pObj->DoProperty(pContext, propname.c_str(), PropValue, sError)) {
- FXJS_Error(isolate, JSFormatErrorString(class_name, "PutProperty", sError));
-@@ -447,7 +447,7 @@
- IJS_Context* pContext = pRuntime->GetCurrentContext();
- std::vector<CJS_Value> parameters;
- for (unsigned int i = 0; i < (unsigned int)info.Length(); i++) {
-- parameters.push_back(CJS_Value(pRuntime, info[i], CJS_Value::VT_unknown));
-+ parameters.push_back(CJS_Value(pRuntime, info[i]));
- }
- CJS_Value valueRes(pRuntime);
- CFX_WideString sError;
-@@ -485,6 +485,4 @@
- } \
- }
-
--CJS_Value::Type GET_VALUE_TYPE(v8::Local<v8::Value> p);
--
- #endif // FPDFSDK_JAVASCRIPT_JS_DEFINE_H_
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.cpp qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.cpp 2017-03-06 13:10:30.896809956 +0100
-@@ -22,11 +22,10 @@
- return *(double*)g_nan;
- }
-
--CJS_Value::CJS_Value(CJS_Runtime* pRuntime)
-- : m_eType(VT_unknown), m_pJSRuntime(pRuntime) {}
-+CJS_Value::CJS_Value(CJS_Runtime* pRuntime) : m_pJSRuntime(pRuntime) {}
-
--CJS_Value::CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Value> pValue, Type t)
-- : m_eType(t), m_pValue(pValue), m_pJSRuntime(pRuntime) {}
-+CJS_Value::CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Value> pValue)
-+ : m_pValue(pValue), m_pJSRuntime(pRuntime) {}
-
- CJS_Value::CJS_Value(CJS_Runtime* pRuntime, const int& iValue)
- : m_pJSRuntime(pRuntime) {
-@@ -48,23 +47,11 @@
- operator=(dValue);
- }
-
--CJS_Value::CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Object> pJsObj)
-- : m_pJSRuntime(pRuntime) {
-- operator=(pJsObj);
--}
--
- CJS_Value::CJS_Value(CJS_Runtime* pRuntime, CJS_Object* pJsObj)
- : m_pJSRuntime(pRuntime) {
- operator=(pJsObj);
- }
-
--CJS_Value::CJS_Value(CJS_Runtime* pRuntime, CJS_Document* pJsDoc)
-- : m_pJSRuntime(pRuntime) {
-- m_eType = VT_object;
-- if (pJsDoc)
-- m_pValue = pJsDoc->ToV8Object();
--}
--
- CJS_Value::CJS_Value(CJS_Runtime* pRuntime, const FX_WCHAR* pWstr)
- : m_pJSRuntime(pRuntime) {
- operator=(pWstr);
-@@ -84,19 +71,17 @@
-
- CJS_Value::CJS_Value(const CJS_Value& other) = default;
-
--void CJS_Value::Attach(v8::Local<v8::Value> pValue, Type t) {
-+void CJS_Value::Attach(v8::Local<v8::Value> pValue) {
- m_pValue = pValue;
-- m_eType = t;
- }
-
- void CJS_Value::Attach(CJS_Value* pValue) {
- if (pValue)
-- Attach(pValue->ToV8Value(), pValue->GetType());
-+ Attach(pValue->ToV8Value());
- }
-
- void CJS_Value::Detach() {
- m_pValue = v8::Local<v8::Value>();
-- m_eType = VT_unknown;
- }
-
- int CJS_Value::ToInt() const {
-@@ -146,7 +131,7 @@
-
- void CJS_Value::MaybeCoerceToNumber() {
- bool bAllowNaN = false;
-- if (m_eType == VT_string) {
-+ if (GetType() == VT_string) {
- CFX_ByteString bstr = ToCFXByteString();
- if (bstr.GetLength() == 0)
- return;
-@@ -162,32 +147,26 @@
- if (std::isnan(num->Value()) && !bAllowNaN)
- return;
- m_pValue = num;
-- m_eType = VT_number;
- }
-
- void CJS_Value::operator=(int iValue) {
- m_pValue = FXJS_NewNumber(m_pJSRuntime->GetIsolate(), iValue);
-- m_eType = VT_number;
- }
-
- void CJS_Value::operator=(bool bValue) {
- m_pValue = FXJS_NewBoolean(m_pJSRuntime->GetIsolate(), bValue);
-- m_eType = VT_boolean;
- }
-
- void CJS_Value::operator=(double dValue) {
- m_pValue = FXJS_NewNumber(m_pJSRuntime->GetIsolate(), dValue);
-- m_eType = VT_number;
- }
-
- void CJS_Value::operator=(float fValue) {
- m_pValue = FXJS_NewNumber(m_pJSRuntime->GetIsolate(), fValue);
-- m_eType = VT_number;
- }
-
- void CJS_Value::operator=(v8::Local<v8::Object> pObj) {
- m_pValue = FXJS_NewObject(m_pJSRuntime->GetIsolate(), pObj);
-- m_eType = VT_fxobject;
- }
-
- void CJS_Value::operator=(CJS_Object* pObj) {
-@@ -195,21 +174,12 @@
- operator=(pObj->ToV8Object());
- }
-
--void CJS_Value::operator=(CJS_Document* pJsDoc) {
-- m_eType = VT_object;
-- if (pJsDoc) {
-- m_pValue = pJsDoc->ToV8Object();
-- }
--}
--
- void CJS_Value::operator=(const FX_WCHAR* pWstr) {
- m_pValue = FXJS_NewString(m_pJSRuntime->GetIsolate(), (wchar_t*)pWstr);
-- m_eType = VT_string;
- }
-
- void CJS_Value::SetNull() {
- m_pValue = FXJS_NewNull();
-- m_eType = VT_null;
- }
-
- void CJS_Value::operator=(const FX_CHAR* pStr) {
-@@ -219,36 +189,34 @@
- void CJS_Value::operator=(CJS_Array& array) {
- m_pValue =
- FXJS_NewObject2(m_pJSRuntime->GetIsolate(), (v8::Local<v8::Array>)array);
-- m_eType = VT_object;
- }
-
- void CJS_Value::operator=(CJS_Date& date) {
- m_pValue = FXJS_NewDate(m_pJSRuntime->GetIsolate(), (double)date);
-- m_eType = VT_date;
- }
-
- void CJS_Value::operator=(CJS_Value value) {
- m_pValue = value.ToV8Value();
-- m_eType = value.m_eType;
- m_pJSRuntime = value.m_pJSRuntime;
- }
-
--CJS_Value::Type CJS_Value::GetType() const {
-- if (m_pValue.IsEmpty())
-+// static
-+CJS_Value::Type CJS_Value::GetValueType(v8::Local<v8::Value> value) {
-+ if (value.IsEmpty())
- return VT_unknown;
-- if (m_pValue->IsString())
-+ if (value->IsString())
- return VT_string;
-- if (m_pValue->IsNumber())
-+ if (value->IsNumber())
- return VT_number;
-- if (m_pValue->IsBoolean())
-+ if (value->IsBoolean())
- return VT_boolean;
-- if (m_pValue->IsDate())
-+ if (value->IsDate())
- return VT_date;
-- if (m_pValue->IsObject())
-+ if (value->IsObject())
- return VT_object;
-- if (m_pValue->IsNull())
-+ if (value->IsNull())
- return VT_null;
-- if (m_pValue->IsUndefined())
-+ if (value->IsUndefined())
- return VT_undefined;
- return VT_unknown;
- }
-@@ -427,7 +395,7 @@
- return;
- v8::Local<v8::Value> p =
- FXJS_GetArrayElement(m_pJSRuntime->GetIsolate(), m_pArray, index);
-- value.Attach(p, CJS_Value::VT_object);
-+ value.Attach(p);
- }
-
- void CJS_Array::SetElement(unsigned index, CJS_Value value) {
-@@ -899,7 +867,7 @@
- v8::Local<v8::Value> v8Value =
- FXJS_GetObjectElement(pRuntime->GetIsolate(), pObj, property);
- if (!v8Value->IsUndefined())
-- result[i] = CJS_Value(pRuntime, v8Value, CJS_Value::VT_unknown);
-+ result[i] = CJS_Value(pRuntime, v8Value);
- }
- va_end(ap);
- return result;
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.h qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/javascript/JS_Value.h 2017-03-06 13:04:01.784297561 +0100
-@@ -27,20 +27,17 @@
- VT_boolean,
- VT_date,
- VT_object,
-- VT_fxobject,
- VT_null,
- VT_undefined
- };
-
- CJS_Value(CJS_Runtime* pRuntime);
-- CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Value> pValue, Type t);
-+ CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Value> pValue);
- CJS_Value(CJS_Runtime* pRuntime, const int& iValue);
- CJS_Value(CJS_Runtime* pRuntime, const double& dValue);
- CJS_Value(CJS_Runtime* pRuntime, const float& fValue);
- CJS_Value(CJS_Runtime* pRuntime, const bool& bValue);
-- CJS_Value(CJS_Runtime* pRuntime, v8::Local<v8::Object>);
-- CJS_Value(CJS_Runtime* pRuntime, CJS_Object*);
-- CJS_Value(CJS_Runtime* pRuntime, CJS_Document*);
-+ CJS_Value(CJS_Runtime* pRuntime, CJS_Object* pObj);
- CJS_Value(CJS_Runtime* pRuntime, const FX_CHAR* pStr);
- CJS_Value(CJS_Runtime* pRuntime, const FX_WCHAR* pWstr);
- CJS_Value(CJS_Runtime* pRuntime, CJS_Array& array);
-@@ -49,11 +46,12 @@
- CJS_Value(const CJS_Value& other);
-
- void SetNull();
-- void Attach(v8::Local<v8::Value> pValue, Type t);
-+ void Attach(v8::Local<v8::Value> pValue);
- void Attach(CJS_Value* pValue);
- void Detach();
-
-- Type GetType() const;
-+ static Type GetValueType(v8::Local<v8::Value> value);
-+ Type GetType() const { return GetValueType(m_pValue); }
- int ToInt() const;
- bool ToBool() const;
- double ToDouble() const;
-@@ -66,8 +64,7 @@
- v8::Local<v8::Value> ToV8Value() const;
-
- // Replace the current |m_pValue| with a v8::Number if possible
-- // to make one from the current |m_pValue|, updating |m_eType|
-- // as appropriate to indicate the result.
-+ // to make one from the current |m_pValue|.
- void MaybeCoerceToNumber();
-
- void operator=(int iValue);
-@@ -75,7 +72,6 @@
- void operator=(double val);
- void operator=(float val);
- void operator=(CJS_Object* val);
-- void operator=(CJS_Document* val);
- void operator=(v8::Local<v8::Object> val);
- void operator=(CJS_Array& val);
- void operator=(CJS_Date& val);
-@@ -91,7 +87,6 @@
- CJS_Runtime* GetJSRuntime() const { return m_pJSRuntime; }
-
- protected:
-- Type m_eType;
- v8::Local<v8::Value> m_pValue;
- CJS_Runtime* m_pJSRuntime;
- };
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/fxjs_v8.cpp qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/fxjs_v8.cpp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/fxjs_v8.cpp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/fxjs_v8.cpp 2017-03-06 13:06:10.884476877 +0100
-@@ -10,15 +10,6 @@
-
- #include "core/fxcrt/include/fx_basic.h"
-
--const wchar_t kFXJSValueNameString[] = L"string";
--const wchar_t kFXJSValueNameNumber[] = L"number";
--const wchar_t kFXJSValueNameBoolean[] = L"boolean";
--const wchar_t kFXJSValueNameDate[] = L"date";
--const wchar_t kFXJSValueNameObject[] = L"object";
--const wchar_t kFXJSValueNameFxobj[] = L"fxobj";
--const wchar_t kFXJSValueNameNull[] = L"null";
--const wchar_t kFXJSValueNameUndefined[] = L"undefined";
--
- // Keep this consistent with the values defined in gin/public/context_holder.h
- // (without actually requiring a dependency on gin itself for the standalone
- // embedders of PDFIum). The value we want to use is:
-@@ -540,26 +531,6 @@
- .ToLocalChecked());
- }
-
--const wchar_t* FXJS_GetTypeof(v8::Local<v8::Value> pObj) {
-- if (pObj.IsEmpty())
-- return nullptr;
-- if (pObj->IsString())
-- return kFXJSValueNameString;
-- if (pObj->IsNumber())
-- return kFXJSValueNameNumber;
-- if (pObj->IsBoolean())
-- return kFXJSValueNameBoolean;
-- if (pObj->IsDate())
-- return kFXJSValueNameDate;
-- if (pObj->IsObject())
-- return kFXJSValueNameObject;
-- if (pObj->IsNull())
-- return kFXJSValueNameNull;
-- if (pObj->IsUndefined())
-- return kFXJSValueNameUndefined;
-- return nullptr;
--}
--
- void FXJS_SetPrivate(v8::Isolate* pIsolate,
- v8::Local<v8::Object> pObj,
- void* p) {
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/include/fxjs_v8.h qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/include/fxjs_v8.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/include/fxjs_v8.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-pdfium-gcc7/src/3rdparty/chromium/third_party/pdfium/fpdfsdk/jsapi/include/fxjs_v8.h 2017-03-06 13:06:40.283062272 +0100
-@@ -118,15 +118,6 @@
- FXJS_PerIsolateData();
- };
-
--extern const wchar_t kFXJSValueNameString[];
--extern const wchar_t kFXJSValueNameNumber[];
--extern const wchar_t kFXJSValueNameBoolean[];
--extern const wchar_t kFXJSValueNameDate[];
--extern const wchar_t kFXJSValueNameObject[];
--extern const wchar_t kFXJSValueNameFxobj[];
--extern const wchar_t kFXJSValueNameNull[];
--extern const wchar_t kFXJSValueNameUndefined[];
--
- class FXJS_ArrayBufferAllocator : public v8::ArrayBuffer::Allocator {
- void* Allocate(size_t length) override;
- void* AllocateUninitialized(size_t length) override;
-@@ -209,7 +200,6 @@
- bool bStatic = false);
- v8::Local<v8::Object> FXJS_GetThisObj(v8::Isolate* pIsolate);
- int FXJS_GetObjDefnID(v8::Local<v8::Object> pObj);
--const wchar_t* FXJS_GetTypeof(v8::Local<v8::Value> pObj);
-
- void FXJS_SetPrivate(v8::Isolate* pIsolate,
- v8::Local<v8::Object> pObj,
diff --git a/qtwebengine-opensource-src-5.8.0-qt57.patch b/qtwebengine-opensource-src-5.8.0-qt57.patch
deleted file mode 100644
index 480ae11..0000000
--- a/qtwebengine-opensource-src-5.8.0-qt57.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up qtwebengine-opensource-src-5.8.0/src/core/proxy_config_service_qt.cpp.qt58 qtwebengine-opensource-src-5.8.0/src/core/proxy_config_service_qt.cpp
---- qtwebengine-opensource-src-5.8.0/src/core/proxy_config_service_qt.cpp.qt58 2017-01-03 04:35:11.000000000 -0600
-+++ qtwebengine-opensource-src-5.8.0/src/core/proxy_config_service_qt.cpp 2017-03-24 14:43:55.120363292 -0500
-@@ -109,7 +109,7 @@ net::ProxyConfigService::ConfigAvailabil
- }
- m_qtApplicationProxy = qtProxy;
- m_qtProxyConfig = net::ProxyConfig();
--#if QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)
-+#if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0)
- if (qtProxy.type() == QNetworkProxy::NoProxy
- && QNetworkProxyFactory::usesSystemConfiguration()) {
- *config = systemConfig;
diff --git a/qtwebengine-opensource-src-5.8.0-system-icu-utf.patch b/qtwebengine-opensource-src-5.8.0-system-icu-utf.patch
deleted file mode 100644
index dff88b5..0000000
--- a/qtwebengine-opensource-src-5.8.0-system-icu-utf.patch
+++ /dev/null
@@ -1,362 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/base.gypi qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/base.gypi
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/base.gypi 2017-03-05 16:48:14.206027229 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/base.gypi 2017-03-05 16:50:49.266714740 +0100
-@@ -674,8 +674,6 @@
- 'third_party/dmg_fp/dmg_fp.h',
- 'third_party/dmg_fp/dtoa_wrapper.cc',
- 'third_party/dmg_fp/g_fmt.cc',
-- 'third_party/icu/icu_utf.cc',
-- 'third_party/icu/icu_utf.h',
- 'third_party/superfasthash/superfasthash.c',
- 'third_party/xdg_mime/xdgmime.h',
- 'threading/non_thread_safe.h',
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/BUILD.gn qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/BUILD.gn
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/BUILD.gn 2017-03-05 16:48:14.207027214 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/BUILD.gn 2017-03-05 16:50:49.267714725 +0100
-@@ -801,8 +801,6 @@
- "third_party/dmg_fp/dmg_fp.h",
- "third_party/dmg_fp/dtoa_wrapper.cc",
- "third_party/dmg_fp/g_fmt.cc",
-- "third_party/icu/icu_utf.cc",
-- "third_party/icu/icu_utf.h",
- "third_party/superfasthash/superfasthash.c",
- "threading/non_thread_safe.h",
- "threading/non_thread_safe_impl.cc",
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/files/file_path.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/files/file_path.cc
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/files/file_path.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/files/file_path.cc 2017-03-05 16:50:49.267714725 +0100
-@@ -18,7 +18,7 @@
-
- #if defined(OS_MACOSX)
- #include "base/mac/scoped_cftyperef.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
- #endif
-
- #if defined(OS_WIN)
-@@ -1150,9 +1150,9 @@
- int* index) {
- int codepoint = 0;
- while (*index < length && codepoint == 0) {
-- // CBU8_NEXT returns a value < 0 in error cases. For purposes of string
-+ // U8_NEXT returns a value < 0 in error cases. For purposes of string
- // comparison, we just use that value and flag it with DCHECK.
-- CBU8_NEXT(string, *index, length, codepoint);
-+ U8_NEXT(string, *index, length, codepoint);
- DCHECK_GT(codepoint, 0);
- if (codepoint > 0) {
- // Check if there is a subtable for this upper byte.
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/json/json_parser.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/json/json_parser.cc
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/json/json_parser.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/json/json_parser.cc 2017-03-05 16:50:49.268714710 +0100
-@@ -16,7 +16,7 @@
- #include "base/strings/stringprintf.h"
- #include "base/strings/utf_string_conversion_utils.h"
- #include "base/strings/utf_string_conversions.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
- #include "base/values.h"
-
- namespace base {
-@@ -631,8 +631,8 @@
- int32_t next_char = 0;
-
- while (CanConsume(1)) {
-- pos_ = start_pos_ + index_; // CBU8_NEXT is postcrement.
-- CBU8_NEXT(start_pos_, index_, length, next_char);
-+ pos_ = start_pos_ + index_; // U8_NEXT is postcrement.
-+ U8_NEXT(start_pos_, index_, length, next_char);
- if (next_char < 0 || !IsValidCharacter(next_char)) {
- ReportError(JSONReader::JSON_UNSUPPORTED_ENCODING, 1);
- return false;
-@@ -725,7 +725,7 @@
- return false;
- }
- } else if (next_char == '"') {
-- --index_; // Rewind by one because of CBU8_NEXT.
-+ --index_; // Rewind by one because of U8_NEXT.
- out->Swap(&string);
- return true;
- } else {
-@@ -765,10 +765,10 @@
-
- // If this is a high surrogate, consume the next code unit to get the
- // low surrogate.
-- if (CBU16_IS_SURROGATE(code_unit16_high)) {
-+ if (U16_IS_SURROGATE(code_unit16_high)) {
- // Make sure this is the high surrogate. If not, it's an encoding
- // error.
-- if (!CBU16_IS_SURROGATE_LEAD(code_unit16_high))
-+ if (!U16_IS_SURROGATE_LEAD(code_unit16_high))
- return false;
-
- // Make sure that the token has more characters to consume the
-@@ -785,24 +785,24 @@
-
- NextNChars(3);
-
-- if (!CBU16_IS_TRAIL(code_unit16_low)) {
-+ if (!U16_IS_TRAIL(code_unit16_low)) {
- return false;
- }
-
- uint32_t code_point =
-- CBU16_GET_SUPPLEMENTARY(code_unit16_high, code_unit16_low);
-+ U16_GET_SUPPLEMENTARY(code_unit16_high, code_unit16_low);
- if (!IsValidCharacter(code_point))
- return false;
-
- offset = 0;
-- CBU8_APPEND_UNSAFE(code_unit8, offset, code_point);
-+ U8_APPEND_UNSAFE(code_unit8, offset, code_point);
- } else {
- // Not a surrogate.
-- DCHECK(CBU16_IS_SINGLE(code_unit16_high));
-+ DCHECK(U16_IS_SINGLE(code_unit16_high));
- if (!IsValidCharacter(code_unit16_high))
- return false;
-
-- CBU8_APPEND_UNSAFE(code_unit8, offset, code_unit16_high);
-+ U8_APPEND_UNSAFE(code_unit8, offset, code_unit16_high);
- }
-
- dest_string->append(code_unit8);
-@@ -819,9 +819,9 @@
- } else {
- char utf8_units[4] = { 0 };
- int offset = 0;
-- CBU8_APPEND_UNSAFE(utf8_units, offset, point);
-+ U8_APPEND_UNSAFE(utf8_units, offset, point);
- dest->Convert();
-- // CBU8_APPEND_UNSAFE can overwrite up to 4 bytes, so utf8_units may not be
-+ // U8_APPEND_UNSAFE can overwrite up to 4 bytes, so utf8_units may not be
- // zero terminated at this point. |offset| contains the correct length.
- dest->AppendString(std::string(utf8_units, offset));
- }
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/json/string_escape.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/json/string_escape.cc
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/json/string_escape.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/json/string_escape.cc 2017-03-05 16:50:49.268714710 +0100
-@@ -14,7 +14,7 @@
- #include "base/strings/stringprintf.h"
- #include "base/strings/utf_string_conversion_utils.h"
- #include "base/strings/utf_string_conversions.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
-
- namespace base {
-
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/pattern.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/pattern.cc
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/pattern.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/pattern.cc 2017-03-05 16:50:49.404712681 +0100
-@@ -4,13 +4,13 @@
-
- #include "base/strings/pattern.h"
-
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
-
- namespace base {
-
- namespace {
-
--static bool IsWildcard(base_icu::UChar32 character) {
-+static bool IsWildcard(UChar32 character) {
- return character == '*' || character == '?';
- }
-
-@@ -37,9 +37,9 @@
- // Check if the chars match, if so, increment the ptrs.
- const CHAR* pattern_next = *pattern;
- const CHAR* string_next = *string;
-- base_icu::UChar32 pattern_char = next(&pattern_next, pattern_end);
-+ UChar32 pattern_char = next(&pattern_next, pattern_end);
- if (pattern_char == next(&string_next, string_end) &&
-- pattern_char != CBU_SENTINEL) {
-+ pattern_char != U_SENTINEL) {
- *pattern = pattern_next;
- *string = string_next;
- } else {
-@@ -133,20 +133,20 @@
- }
-
- struct NextCharUTF8 {
-- base_icu::UChar32 operator()(const char** p, const char* end) {
-- base_icu::UChar32 c;
-+ UChar32 operator()(const char** p, const char* end) {
-+ UChar32 c;
- int offset = 0;
-- CBU8_NEXT(*p, offset, end - *p, c);
-+ U8_NEXT(*p, offset, end - *p, c);
- *p += offset;
- return c;
- }
- };
-
- struct NextCharUTF16 {
-- base_icu::UChar32 operator()(const char16** p, const char16* end) {
-- base_icu::UChar32 c;
-+ UChar32 operator()(const char16** p, const char16* end) {
-+ UChar32 c;
- int offset = 0;
-- CBU16_NEXT(*p, offset, end - *p, c);
-+ U16_NEXT(*p, offset, end - *p, c);
- *p += offset;
- return c;
- }
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/string_split.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/string_split.cc
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/string_split.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/string_split.cc 2017-03-05 16:50:49.404712681 +0100
-@@ -8,7 +8,7 @@
-
- #include "base/logging.h"
- #include "base/strings/string_util.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
-
- namespace base {
-
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/string_util.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/string_util.cc
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/string_util.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/string_util.cc 2017-03-05 16:50:49.404712681 +0100
-@@ -25,7 +25,7 @@
- #include "base/memory/singleton.h"
- #include "base/strings/utf_string_conversion_utils.h"
- #include "base/strings/utf_string_conversions.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
- #include "build/build_config.h"
-
- namespace base {
-@@ -357,19 +357,19 @@
- }
- DCHECK_LE(byte_size,
- static_cast<uint32_t>(std::numeric_limits<int32_t>::max()));
-- // Note: This cast is necessary because CBU8_NEXT uses int32_ts.
-+ // Note: This cast is necessary because U8_NEXT uses int32_ts.
- int32_t truncation_length = static_cast<int32_t>(byte_size);
- int32_t char_index = truncation_length - 1;
- const char* data = input.data();
-
-- // Using CBU8, we will move backwards from the truncation point
-+ // Using U8, we will move backwards from the truncation point
- // to the beginning of the string looking for a valid UTF8
- // character. Once a full UTF8 character is found, we will
- // truncate the string to the end of that character.
- while (char_index >= 0) {
- int32_t prev = char_index;
-- base_icu::UChar32 code_point = 0;
-- CBU8_NEXT(data, char_index, truncation_length, code_point);
-+ UChar32 code_point = 0;
-+ U8_NEXT(data, char_index, truncation_length, code_point);
- if (!IsValidCharacter(code_point) ||
- !IsValidCodepoint(code_point)) {
- char_index = prev - 1;
-@@ -522,7 +522,7 @@
-
- while (char_index < src_len) {
- int32_t code_point;
-- CBU8_NEXT(src, char_index, src_len, code_point);
-+ U8_NEXT(src, char_index, src_len, code_point);
- if (!IsValidCharacter(code_point))
- return false;
- }
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/base/strings/utf_string_conversion_utils.cc 2017-03-05 16:50:49.404712681 +0100
-@@ -4,7 +4,7 @@
-
- #include "base/strings/utf_string_conversion_utils.h"
-
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
-
- namespace base {
-
-@@ -18,7 +18,7 @@
- // use a signed type for code_point. But this function returns false
- // on error anyway, so code_point_out is unsigned.
- int32_t code_point;
-- CBU8_NEXT(src, *char_index, src_len, code_point);
-+ U8_NEXT(src, *char_index, src_len, code_point);
- *code_point_out = static_cast<uint32_t>(code_point);
-
- // The ICU macro above moves to the next char, we want to point to the last
-@@ -33,16 +33,16 @@
- int32_t src_len,
- int32_t* char_index,
- uint32_t* code_point) {
-- if (CBU16_IS_SURROGATE(src[*char_index])) {
-- if (!CBU16_IS_SURROGATE_LEAD(src[*char_index]) ||
-+ if (U16_IS_SURROGATE(src[*char_index])) {
-+ if (!U16_IS_SURROGATE_LEAD(src[*char_index]) ||
- *char_index + 1 >= src_len ||
-- !CBU16_IS_TRAIL(src[*char_index + 1])) {
-+ !U16_IS_TRAIL(src[*char_index + 1])) {
- // Invalid surrogate pair.
- return false;
- }
-
- // Valid surrogate pair.
-- *code_point = CBU16_GET_SUPPLEMENTARY(src[*char_index],
-+ *code_point = U16_GET_SUPPLEMENTARY(src[*char_index],
- src[*char_index + 1]);
- (*char_index)++;
- } else {
-@@ -76,30 +76,30 @@
- }
-
-
-- // CBU8_APPEND_UNSAFE can append up to 4 bytes.
-+ // U8_APPEND_UNSAFE can append up to 4 bytes.
- size_t char_offset = output->length();
- size_t original_char_offset = char_offset;
-- output->resize(char_offset + CBU8_MAX_LENGTH);
-+ output->resize(char_offset + U8_MAX_LENGTH);
-
-- CBU8_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
-+ U8_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
-
-- // CBU8_APPEND_UNSAFE will advance our pointer past the inserted character, so
-+ // U8_APPEND_UNSAFE will advance our pointer past the inserted character, so
- // it will represent the new length of the string.
- output->resize(char_offset);
- return char_offset - original_char_offset;
- }
-
- size_t WriteUnicodeCharacter(uint32_t code_point, string16* output) {
-- if (CBU16_LENGTH(code_point) == 1) {
-+ if (U16_LENGTH(code_point) == 1) {
- // Thie code point is in the Basic Multilingual Plane (BMP).
- output->push_back(static_cast<char16>(code_point));
- return 1;
- }
- // Non-BMP characters use a double-character encoding.
- size_t char_offset = output->length();
-- output->resize(char_offset + CBU16_MAX_LENGTH);
-- CBU16_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
-- return CBU16_MAX_LENGTH;
-+ output->resize(char_offset + U16_MAX_LENGTH);
-+ U16_APPEND_UNSAFE(&(*output)[0], char_offset, code_point);
-+ return U16_MAX_LENGTH;
- }
-
- // Generalized Unicode converter -----------------------------------------------
-diff -ur qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc
---- qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-icu-utf/src/3rdparty/chromium/ui/gfx/utf16_indexing.cc 2017-03-05 16:50:49.405712666 +0100
-@@ -5,13 +5,13 @@
- #include "ui/gfx/utf16_indexing.h"
-
- #include "base/logging.h"
--#include "base/third_party/icu/icu_utf.h"
-+#include <unicode/utf.h>
-
- namespace gfx {
-
- bool IsValidCodePointIndex(const base::string16& s, size_t index) {
- return index == 0 || index == s.length() ||
-- !(CBU16_IS_TRAIL(s[index]) && CBU16_IS_LEAD(s[index - 1]));
-+ !(U16_IS_TRAIL(s[index]) && U16_IS_LEAD(s[index - 1]));
- }
-
- ptrdiff_t UTF16IndexToOffset(const base::string16& s, size_t base, size_t pos) {
diff --git a/qtwebengine-opensource-src-5.8.0-system-nspr-prtime.patch b/qtwebengine-opensource-src-5.8.0-system-nspr-prtime.patch
deleted file mode 100644
index 4f17325..0000000
--- a/qtwebengine-opensource-src-5.8.0-system-nspr-prtime.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/base.gypi qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/base.gypi
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/base.gypi 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/base.gypi 2017-03-05 16:48:14.206027229 +0100
-@@ -676,8 +676,6 @@
- 'third_party/dmg_fp/g_fmt.cc',
- 'third_party/icu/icu_utf.cc',
- 'third_party/icu/icu_utf.h',
-- 'third_party/nspr/prtime.cc',
-- 'third_party/nspr/prtime.h',
- 'third_party/superfasthash/superfasthash.c',
- 'third_party/xdg_mime/xdgmime.h',
- 'threading/non_thread_safe.h',
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/BUILD.gn qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/BUILD.gn
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/BUILD.gn 2017-03-05 16:48:14.207027214 +0100
-@@ -803,8 +803,6 @@
- "third_party/dmg_fp/g_fmt.cc",
- "third_party/icu/icu_utf.cc",
- "third_party/icu/icu_utf.h",
-- "third_party/nspr/prtime.cc",
-- "third_party/nspr/prtime.h",
- "third_party/superfasthash/superfasthash.c",
- "threading/non_thread_safe.h",
- "threading/non_thread_safe_impl.cc",
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/time/pr_time_unittest.cc qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/time/pr_time_unittest.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/time/pr_time_unittest.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/time/pr_time_unittest.cc 2017-03-05 16:48:14.208027199 +0100
-@@ -7,7 +7,7 @@
-
- #include "base/compiler_specific.h"
- #include "base/macros.h"
--#include "base/third_party/nspr/prtime.h"
-+#include <nspr4/prtime.h>
- #include "base/time/time.h"
- #include "build/build_config.h"
- #include "testing/gtest/include/gtest/gtest.h"
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/time/time.cc qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/time/time.cc
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/base/time/time.cc 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-system-nspr-prtime/src/3rdparty/chromium/base/time/time.cc 2017-03-05 16:48:14.298025856 +0100
-@@ -14,7 +14,7 @@
- #include "base/logging.h"
- #include "base/macros.h"
- #include "base/strings/stringprintf.h"
--#include "base/third_party/nspr/prtime.h"
-+#include <nspr4/prtime.h>
- #include "build/build_config.h"
-
- namespace base {
diff --git a/qtwebengine-opensource-src-5.8.0-v8-gcc7.patch b/qtwebengine-opensource-src-5.8.0-v8-gcc7.patch
deleted file mode 100644
index 8a87503..0000000
--- a/qtwebengine-opensource-src-5.8.0-v8-gcc7.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects-body-descriptors.h qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects-body-descriptors.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects-body-descriptors.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects-body-descriptors.h 2017-03-06 02:05:57.848394582 +0100
-@@ -99,7 +99,7 @@
-
- template <typename StaticVisitor>
- static inline void IterateBody(HeapObject* obj, int object_size) {
-- IterateBody(obj);
-+ IterateBody<StaticVisitor>(obj);
- }
- };
-
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects.h qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects.h 2017-03-06 02:05:57.990392454 +0100
-@@ -3193,22 +3193,10 @@
- public:
- typedef Shape ShapeT;
-
-- // Wrapper methods
-- inline uint32_t Hash(Key key) {
-- if (Shape::UsesSeed) {
-- return Shape::SeededHash(key, GetHeap()->HashSeed());
-- } else {
-- return Shape::Hash(key);
-- }
-- }
--
-- inline uint32_t HashForObject(Key key, Object* object) {
-- if (Shape::UsesSeed) {
-- return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
-- } else {
-- return Shape::HashForObject(key, object);
-- }
-- }
-+ // Wrapper methods. Defined in src/objects-inl.h
-+ // to break a cycle with src/heap/heap.h.
-+ inline uint32_t Hash(Key key);
-+ inline uint32_t HashForObject(Key key, Object* object);
-
- // Returns a new HashTable object.
- MUST_USE_RESULT static Handle<Derived> New(
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects-inl.h qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects-inl.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/v8/src/objects-inl.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-gcc7/src/3rdparty/chromium/v8/src/objects-inl.h 2017-03-06 02:05:57.992392424 +0100
-@@ -38,6 +38,25 @@
- namespace v8 {
- namespace internal {
-
-+template <typename Derived, typename Shape, typename Key>
-+uint32_t HashTable<Derived, Shape, Key>::Hash(Key key) {
-+ if (Shape::UsesSeed) {
-+ return Shape::SeededHash(key, GetHeap()->HashSeed());
-+ } else {
-+ return Shape::Hash(key);
-+ }
-+}
-+
-+template <typename Derived, typename Shape, typename Key>
-+uint32_t HashTable<Derived, Shape, Key>::HashForObject(Key key,
-+ Object* object) {
-+ if (Shape::UsesSeed) {
-+ return Shape::SeededHashForObject(key, GetHeap()->HashSeed(), object);
-+ } else {
-+ return Shape::HashForObject(key, object);
-+ }
-+}
-+
- PropertyDetails::PropertyDetails(Smi* smi) {
- value_ = smi->value();
- }
diff --git a/qtwebengine-opensource-src-5.8.0-webrtc-neon-detect.patch b/qtwebengine-opensource-src-5.8.0-webrtc-neon-detect.patch
deleted file mode 100644
index 8e26dbe..0000000
--- a/qtwebengine-opensource-src-5.8.0-webrtc-neon-detect.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn qtwebengine-opensource-src-5.8.0-webrtc-neon-detect/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-webrtc-neon-detect/src/3rdparty/chromium/third_party/webrtc/system_wrappers/BUILD.gn 2017-03-05 17:08:43.547748044 +0100
-@@ -108,9 +108,7 @@
- if (is_linux) {
- defines += [ "WEBRTC_THREAD_RR" ]
-
-- if (!build_with_chromium) {
-- deps += [ ":cpu_features_linux" ]
-- }
-+ deps += [ ":cpu_features_linux" ]
-
- libs += [ "rt" ]
- }
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/system_wrappers/system_wrappers.gyp qtwebengine-opensource-src-5.8.0-webrtc-neon-detect/src/3rdparty/chromium/third_party/webrtc/system_wrappers/system_wrappers.gyp
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/webrtc/system_wrappers/system_wrappers.gyp 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-webrtc-neon-detect/src/3rdparty/chromium/third_party/webrtc/system_wrappers/system_wrappers.gyp 2017-03-05 17:07:01.869254856 +0100
-@@ -112,12 +112,8 @@
- 'defines': [
- 'WEBRTC_THREAD_RR',
- ],
-- 'conditions': [
-- ['build_with_chromium==0', {
-- 'dependencies': [
-- 'cpu_features_webrtc.gyp:cpu_features_linux',
-- ],
-- }],
-+ 'dependencies': [
-+ 'cpu_features_webrtc.gyp:cpu_features_linux',
- ],
- 'link_settings': {
- 'libraries': [ '-lrt', ],
diff --git a/qtwebengine-opensource-src-5.8.0-wtf-gcc7.patch b/qtwebengine-opensource-src-5.8.0-wtf-gcc7.patch
deleted file mode 100644
index f679530..0000000
--- a/qtwebengine-opensource-src-5.8.0-wtf-gcc7.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ur qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h qtwebengine-opensource-src-5.8.0-wtf-gcc7/src/3rdparty/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h
---- qtwebengine-opensource-src-5.8.0/src/3rdparty/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h 2017-01-03 10:28:53.000000000 +0100
-+++ qtwebengine-opensource-src-5.8.0-wtf-gcc7/src/3rdparty/chromium/third_party/WebKit/Source/wtf/LinkedHashSet.h 2017-03-07 03:00:44.783316233 +0100
-@@ -542,6 +542,8 @@
- return *this;
- }
-
-+inline void swapAnchor(LinkedHashSetNodeBase& a, LinkedHashSetNodeBase& b);
-+
- template<typename T, typename U, typename V, typename W>
- inline void LinkedHashSet<T, U, V, W>::swap(LinkedHashSet& other)
- {
diff --git a/sources b/sources
index 805aa50..fb92ca3 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (qtwebengine-opensource-src-5.8.0-clean.tar.xz) = 18a49156da8d2e21fb0fe4781646c753c82d616964dd14b0651a1097b2a79a5ddb852dbdcc838d1e9e9a4ec460dd77fbab78a03672f5e827ab061fdf97db4a25
+SHA512 (qtwebengine-opensource-src-5.9.0-clean.tar.xz) = b80070b267bffb29a17f8fbf9da8c9f9fe6d59c12bccb3710370b1c830f0f162199341266da6c24563e75f17f6f9d850fd762f58ab1fafc2535f432d6180c98c
6 years, 10 months