From 45a5c006d12c38d17f5605c2f975a7eabda7456f Mon Sep 17 00:00:00 2001
From: Andras Becsi <andras.becsi@digia.com>
Date: Sat, 28 Sep 2013 03:24:07 +0200
Subject: [PATCH] Allow overriding target compiler and linker with qmake's one

Using make_global_settings, we can pass along the compiler and linker
that qmake uses, still allowing overriding it through environment variables.
We generate qmake_extras.gypi and populated with the host and target compilers
so that it also works when cross compiling.

Based on patch by Pierre Rossi <pierre.rossi@digia.com>

Change-Id: Ia3789abeea88f4d3cde75c2cf07cc9de66d7afbf
Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
---
 build/gyp_qtwebengine                |  3 +++
 build/qmake_extras/host/host.pro     | 14 ++++++++++++++
 build/qmake_extras/qmake_extras.pro  |  6 ++++++
 build/qmake_extras/target/target.pro | 15 +++++++++++++++
 qtwebengine.pro                      |  3 ++-
 5 files changed, 40 insertions(+), 1 deletion(-)
 create mode 100644 build/qmake_extras/host/host.pro
 create mode 100644 build/qmake_extras/qmake_extras.pro
 create mode 100644 build/qmake_extras/target/target.pro

diff --git a/build/gyp_qtwebengine b/build/gyp_qtwebengine
index b67314df2..bd7347e4a 100755
--- a/build/gyp_qtwebengine
+++ b/build/gyp_qtwebengine
@@ -65,6 +65,9 @@ def additional_include_files(args=[]):
   # Used for additional build tweaks such as file exclusions
   AddInclude(os.path.join(qtwebengine_src, 'build', 'qtwebengine_extras.gypi'))
 
+  # Common stuff we generate and extract from qmake
+  AddInclude(os.path.join(qtwebengine_src, 'build', 'qmake_extras.gypi'))
+
   # Optionally add supplemental .gypi files if present.
   supplements = glob.glob(os.path.join(chrome_src, '*', 'supplement.gypi'))
   for supplement in supplements:
diff --git a/build/qmake_extras/host/host.pro b/build/qmake_extras/host/host.pro
new file mode 100644
index 000000000..95d7b3cad
--- /dev/null
+++ b/build/qmake_extras/host/host.pro
@@ -0,0 +1,14 @@
+# Prevent generating a makefile that attempts to create a lib
+TEMPLATE = aux
+
+# Pick up the host toolchain
+option(host_build)
+
+GYPI_CONTENTS = "{" \
+                "  'make_global_settings': [" \
+                "    ['CC.host', '$$which($$QMAKE_CC)']," \
+                "    ['CXX.host', '$$which($$QMAKE_CXX)']," \
+                "    ['LD.host', '$$which($$QMAKE_LINK)'],"
+
+GYPI_FILE = $$absolute_path('build/qmake_extras.gypi', $$QTWEBENGINE_ROOT)
+write_file($$GYPI_FILE, GYPI_CONTENTS)
diff --git a/build/qmake_extras/qmake_extras.pro b/build/qmake_extras/qmake_extras.pro
new file mode 100644
index 000000000..409993128
--- /dev/null
+++ b/build/qmake_extras/qmake_extras.pro
@@ -0,0 +1,6 @@
+TEMPLATE = subdirs
+
+CONFIG += ordered
+
+SUBDIRS = host \
+          target
diff --git a/build/qmake_extras/target/target.pro b/build/qmake_extras/target/target.pro
new file mode 100644
index 000000000..294ebc609
--- /dev/null
+++ b/build/qmake_extras/target/target.pro
@@ -0,0 +1,15 @@
+# Prevent generating a makefile that attempts to create a lib
+TEMPLATE = aux
+
+GYPI_CONTENTS += "    ['CC', '$$which($$QMAKE_CC)']," \
+                 "    ['CXX', '$$which($$QMAKE_CXX)']," \
+                 "    ['LD', '$$which($$QMAKE_LINK)'],"
+GYPI_CONTENTS += "  ],"
+GYPI_CONTENTS += "}"
+
+GYPI_FILE = $$absolute_path('build/qmake_extras.gypi', $$QTWEBENGINE_ROOT)
+
+!exists($$GYPI_FILE): error("-- $$GYPI not found --")
+
+# Append to the file already containing the host settings.
+write_file($$GYPI_FILE, GYPI_CONTENTS, append)
diff --git a/qtwebengine.pro b/qtwebengine.pro
index ce0098c55..5a54df17e 100644
--- a/qtwebengine.pro
+++ b/qtwebengine.pro
@@ -4,7 +4,8 @@ CONFIG += ordered
 
 # The first three subdirs contain dummy .pro files that are used by qmake
 # to generate a corresponding .gyp file
-SUBDIRS = resources \
+SUBDIRS = build/qmake_extras \ # Phony pro file that extracts things like compiler and linker from qmake
+          resources \
           shared \
           lib \
           process \
-- 
GitLab