diff options
author | Michal Klocek <michal.klocek@qt.io> | 2020-07-20 15:56:14 +0200 |
---|---|---|
committer | Michal Klocek <michal.klocek@qt.io> | 2020-07-23 15:13:08 +0200 |
commit | 74fe796039e85c97ffac3f7b014ca718e7284dea (patch) | |
tree | 2ae017494833c923bcf1489dd3dfa29bcb888d60 /src/buildtools | |
parent | 6178015dff6f2f83c16a1dddb199c7f6c3e9c694 (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.pri | 53 |
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) + |