| 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) |
| |
| if(macos|ios) { |
| !static { |
| QMAKE_LFLAGS += -Wl,-filelist,$$shell_quote($${RSP_OBJECT_FILE}) |
| QMAKE_LFLAGS += @$${RSP_ARCHIVE_FILE} |
| } else { |
| OBJECTS += $$NINJA_OBJECTS |
| LIBS_PRIVATE += $${NINJA_ARCHIVES} |
| } |
| } |
| |
| linux { |
| !static { |
| QMAKE_LFLAGS += @$${RSP_OBJECT_FILE} |
| QMAKE_LFLAGS += -Wl,--start-group @$${RSP_ARCHIVE_FILE} -Wl,--end-group |
| } else { |
| OBJECTS += $$NINJA_OBJECTS |
| LIBS_PRIVATE += -Wl,--start-group @$${NINJA_ARCHIVES} -Wl,--end-group |
| } |
| } |
| |
| win32 { |
| !static { |
| QMAKE_LFLAGS += @$${RSP_OBJECT_FILE} |
| QMAKE_LFLAGS += @$${RSP_ARCHIVE_FILE} |
| } else { |
| OBJECTS += $$NINJA_OBJECTS |
| LIBS_PRIVATE += $${NINJA_ARCHIVES} |
| } |
| } |
| |
| 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 += $$NINJA_TARGETDEPS |