summaryrefslogtreecommitdiffstats
path: root/src/buildtools/configure_target.pro
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2017-02-09 12:00:15 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-03-01 16:05:00 +0000
commitedd8f2840d85e35bbec905440b0b524d7e0d108e (patch)
tree14f453473b6c1cc0cfec1e1ff8a5b572e4c8de77 /src/buildtools/configure_target.pro
parent5c42809274288811b386b3cb3cd08000777e37c8 (diff)
Support cross-builds and alternative compilers with GN
Adds GN versions of the gyp_configure targets, to create custom toolchains we can use to override compilers used by GN. Change-Id: Ic3a9cb7e83f845180396faff632f72f9c24f3365 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'src/buildtools/configure_target.pro')
-rw-r--r--src/buildtools/configure_target.pro29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/buildtools/configure_target.pro b/src/buildtools/configure_target.pro
new file mode 100644
index 000000000..ab30570e0
--- /dev/null
+++ b/src/buildtools/configure_target.pro
@@ -0,0 +1,29 @@
+# Prevent generating a makefile that attempts to create a lib
+TEMPLATE = aux
+
+GN_CPU = $$gnArch($$QT_ARCH)
+GN_OS = $$gnOS()
+
+clang: GN_CLANG = true
+else: GN_CLANG = false
+
+# We always use the gcc_toolchain, because clang_toolchain is just
+# a broken wrapper around it for Google's custom clang binaries.
+GN_CONTENTS = \
+"gcc_toolchain(\"target\") {" \
+" cc = \"$$which($$QMAKE_CC)\" " \
+" cxx = \"$$which($$QMAKE_CXX)\" " \
+" ld = \"$$which($$QMAKE_LINK)\" " \
+" ar = \"$$which($${CROSS_COMPILE}ar)\" " \
+" nm = \"$$which($${CROSS_COMPILE}nm)\" " \
+" toolchain_args = { " \
+" current_os = \"$$GN_OS\" " \
+" current_cpu = \"$$GN_CPU\" " \
+" is_clang = $$GN_CLANG " \
+" } " \
+"}"
+
+GN_FILE = $$OUT_PWD/../toolchain/BUILD.gn
+!build_pass {
+ write_file($$GN_FILE, GN_CONTENTS, append)
+}