summaryrefslogtreecommitdiffstats
path: root/src/buildtools
diff options
context:
space:
mode:
authorMichal Klocek <michal.klocek@qt.io>2020-07-20 15:56:14 +0200
committerMichal Klocek <michal.klocek@qt.io>2020-07-23 15:13:08 +0200
commit74fe796039e85c97ffac3f7b014ca718e7284dea (patch)
tree2ae017494833c923bcf1489dd3dfa29bcb888d60 /src/buildtools
parent6178015dff6f2f83c16a1dddb199c7f6c3e9c694 (diff)
Share linking config between webenginecore and pdf
Change-Id: Ib06a0a1ec3372d483008cc0ac0ec211ec8316e0e Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/buildtools')
-rw-r--r--src/buildtools/config/linking.pri53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/buildtools/config/linking.pri b/src/buildtools/config/linking.pri
new file mode 100644
index 000000000..a458b06bc
--- /dev/null
+++ b/src/buildtools/config/linking.pri
@@ -0,0 +1,53 @@
+include($$QTWEBENGINE_OUT_ROOT/src/buildtools/qtbuildtools-config.pri)
+QT_FOR_CONFIG += buildtools-private
+
+linking_pri = $$OUT_PWD/$$getConfigDir()/$${TARGET}.pri
+
+!include($$linking_pri) {
+ error("Could not find the linking information that gn should have generated.")
+}
+
+# Do not precompile any headers. We are only interested in the linker step.
+PRECOMPILED_HEADER =
+
+isEmpty(NINJA_OBJECTS): error("Missing object files from linking pri.")
+isEmpty(NINJA_LFLAGS): error("Missing linker flags from linking pri")
+isEmpty(NINJA_ARCHIVES): error("Missing archive files from linking pri")
+isEmpty(NINJA_LIBS): error("Missing library files from linking pri")
+NINJA_OBJECTS = $$eval($$list($$NINJA_OBJECTS))
+# Do manual response file linking for macOS and Linux
+
+RSP_OBJECT_FILE = $$OUT_PWD/$$getConfigDir()/$${TARGET}_o.rsp
+for(object, NINJA_OBJECTS): RSP_O_CONTENT += $$object
+write_file($$RSP_OBJECT_FILE, RSP_O_CONTENT)
+RSP_ARCHIVE_FILE = $$OUT_PWD/$$getConfigDir()/$${TARGET}_a.rsp
+for(archive, NINJA_ARCHIVES): RSP_A_CONTENT += $$archive
+write_file($$RSP_ARCHIVE_FILE, RSP_A_CONTENT)
+
+macos:LIBS_PRIVATE += -Wl,-filelist,$$shell_quote($${RSP_OBJECT_FILE}) @$${RSP_ARCHIVE_FILE}
+linux:QMAKE_LFLAGS += @$${RSP_OBJECT_FILE} -Wl,--start-group @$${RSP_ARCHIVE_FILE} -Wl,--end-group
+win32:QMAKE_LFLAGS += @$${RSP_OBJECT_FILE} @$${RSP_ARCHIVE_FILE}
+ios: OBJECTS += $$NINJA_OBJECTS
+
+LIBS_PRIVATE += $$NINJA_LIB_DIRS $$NINJA_LIBS
+# GN's LFLAGS doesn't always work across all the Linux configurations we support.
+# The Windows and macOS ones from GN does provide a few useful flags however
+
+unix:qtConfig(webengine-noexecstack): \
+ QMAKE_LFLAGS += -Wl,-z,noexecstack
+linux {
+ # add chromium flags
+ for(flag, NINJA_LFLAGS) {
+ # filter out some flags
+ !contains(flag, .*noexecstack$): \
+ !contains(flag, .*as-needed$): \
+ !contains(flag, ^-B.*): \
+ !contains(flag, ^-fuse-ld.*): \
+ QMAKE_LFLAGS += $$flag
+ }
+} else {
+ QMAKE_LFLAGS += $$NINJA_LFLAGS
+}
+
+POST_TARGETDEPS += $$eval($$NINJA_TARGETDEPS)
+