qt5base-lts/mkspecs/features/dbuscommon.pri
Oswald Buddenhagen 17519feadd don't override user-provided dependencies for our extra compilers
while the names of the compilers are actually an undocumented internal,
we don't provide an actually working proper way to sequence extra
compiler execution with build-time generated inputs when they are
indirectly listed (as via .qrc files).

Task-number: QTBUG-54299
Change-Id: I269c26512897b72706dc8b769aa47e8157c2a5c5
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
2016-06-23 13:25:22 +00:00

83 lines
2.8 KiB
Plaintext

#
# W A R N I N G
# -------------
#
# This file is not part of the Qt API. It exists purely as an
# implementation detail. It may change from version to version
# without notice, or even be removed.
#
# We mean it.
#
load(moc)
qtPrepareTool(QMAKE_QDBUSXML2CPP, qdbusxml2cpp)
defineReplace(qdbusOutputBasename) {
return($$lower($$section($$list($$basename(1)),.,-2,-2)))
}
dbus_TYPE = $$upper($$dbus_type)
groups =
for(entry, DBUS_$${dbus_TYPE}S) {
files = $$eval($${entry}.files)
isEmpty(files) {
files = $$entry
group = dbus_$${dbus_type}
} else {
group = $${entry}_dbus_$${dbus_type}
}
groups *= $$group
input_list = $$upper($$group)_LIST
for(subent, $$list($$unique(files))) {
!contains(subent, .*\\w\\.xml$) {
warning("Invalid D-BUS $${dbus_type}: '$$subent', please use 'com.mydomain.myinterface.xml' instead.")
next()
}
$$input_list += $$subent
}
}
for(group, groups) {
GROUP = $$upper($$group)
input_list = $${GROUP}_LIST
# qmake does not keep empty elements in lists, so we reverse-engineer the short name
grp = $$replace(group, _?dbus_$${dbus_type}\$, )
isEmpty(grp) {
hdr_flags = $$eval(QDBUSXML2CPP_$${dbus_TYPE}_HEADER_FLAGS)
src_flags = $$eval(QDBUSXML2CPP_$${dbus_TYPE}_SOURCE_FLAGS)
} else {
hdr_flags = $$eval($${grp}.header_flags)
src_flags = $$eval($${grp}.source_flags)
}
$${group}_header.commands = $$QMAKE_QDBUSXML2CPP $$hdr_flags $$qdbusxml2cpp_option ${QMAKE_FILE_OUT}: ${QMAKE_FILE_IN}
$${group}_header.depends += $$QMAKE_QDBUSXML2CPP_EXE
$${group}_header.output = ${QMAKE_FUNC_FILE_IN_qdbusOutputBasename}_$${dbus_type}.h
$${group}_header.name = DBUSXML2CPP $${dbus_TYPE} HEADER ${QMAKE_FILE_IN}
$${group}_header.variable_out = $${GROUP}_HEADERS
$${group}_header.input = $$input_list
$${group}_source.commands = $$QMAKE_QDBUSXML2CPP -i ${QMAKE_FILE_OUT_BASE}.h $$src_flags $$qdbusxml2cpp_option :${QMAKE_FILE_OUT} ${QMAKE_FILE_IN}
$${group}_source.depends += $$QMAKE_QDBUSXML2CPP_EXE
$${group}_source.output = ${QMAKE_FUNC_FILE_IN_qdbusOutputBasename}_$${dbus_type}.cpp
$${group}_source.name = DBUSXML2CPP $${dbus_TYPE} SOURCE ${QMAKE_FILE_IN}
$${group}_source.variable_out = SOURCES
$${group}_source.input = $$input_list
$${group}_source.depends += $$eval($${group}_header.output) # this actually belongs to the object file
$${group}_moc.commands = $$moc_header.commands
$${group}_moc.depends += $$QMAKE_MOC_EXE
$${group}_moc.output = $$moc_header.output
$${group}_moc.input = $${GROUP}_HEADERS
$${group}_moc.variable_out = GENERATED_SOURCES
$${group}_moc.name = $${GROUP}_$$moc_header.name
QMAKE_EXTRA_COMPILERS += $${group}_header $${group}_source $${group}_moc
}