blob: e76f6ef103861f92f5a748cef86df861ae638f5d [file] [log] [blame]
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