Fix build without feature.xmlstreamreader

This commit introduces a new feature called vkgen for the tool which
depends on xmlstreamreader.

Note that when features.vkgen is disabled, vulkan.pri will generate
dummy qvulkanfunctions.h and qvulkanfunctions_p.h because buildsystem
needs them.

Task-number: QTBUG-76159
Change-Id: I03d526a0fd76a2d8b531940f37538cead109d9d3
Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
This commit is contained in:
Tasuku Suzuki 2019-06-03 21:24:15 +09:00
parent 7b17113e49
commit be1e682572
3 changed files with 47 additions and 34 deletions

View File

@ -1357,9 +1357,14 @@
"condition": "features.opengl-desktop || features.opengl-dynamic || features.opengles2",
"output": [ "publicFeature", "feature" ]
},
"vkgen": {
"label": "vkgen",
"condition": "features.xmlstreamreader",
"output": [ "privateFeature" ]
},
"vulkan": {
"label": "Vulkan",
"condition": "libs.vulkan",
"condition": "features.vkgen && libs.vulkan",
"output": [ "publicFeature" ]
},
"openvg": {

View File

@ -17,39 +17,45 @@ qtConfig(vulkan) {
QMAKE_USE += vulkan/nolink
}
# Generate qvulkanfunctions.h, qvulkanfunctions_p.h, qvulkanfunctions_p.cpp
QMAKE_QVKGEN_INPUT = vulkan/vk.xml
QMAKE_QVKGEN_LICENSE_HEADER = $$QT_SOURCE_TREE/header.LGPL
qtPrepareTool(QMAKE_QVKGEN, qvkgen)
qtConfig(vkgen) {
# Generate qvulkanfunctions.h, qvulkanfunctions_p.h, qvulkanfunctions_p.cpp
QMAKE_QVKGEN_INPUT = vulkan/vk.xml
QMAKE_QVKGEN_LICENSE_HEADER = $$QT_SOURCE_TREE/header.LGPL
qtPrepareTool(QMAKE_QVKGEN, qvkgen)
qvkgen_h.commands = $$QMAKE_QVKGEN ${QMAKE_FILE_IN} $$shell_quote($$QMAKE_QVKGEN_LICENSE_HEADER) ${QMAKE_FILE_OUT_PATH}/${QMAKE_FILE_OUT_BASE}
qvkgen_h.output = $$OUT_PWD/vulkan/qvulkanfunctions.h
qvkgen_h.input = QMAKE_QVKGEN_INPUT
qtConfig(vulkan): \
qvkgen_h.variable_out = HEADERS
else: \
qvkgen_h.CONFIG += target_predeps no_link
QMAKE_EXTRA_COMPILERS += qvkgen_h
qvkgen_h.commands = $$QMAKE_QVKGEN ${QMAKE_FILE_IN} $$shell_quote($$QMAKE_QVKGEN_LICENSE_HEADER) ${QMAKE_FILE_OUT_PATH}/${QMAKE_FILE_OUT_BASE}
qvkgen_h.output = $$OUT_PWD/vulkan/qvulkanfunctions.h
qvkgen_h.input = QMAKE_QVKGEN_INPUT
qtConfig(vulkan): \
qvkgen_h.variable_out = HEADERS
else: \
qvkgen_h.CONFIG += target_predeps no_link
QMAKE_EXTRA_COMPILERS += qvkgen_h
qvkgen_ph.commands = $$escape_expand(\\n)
qvkgen_ph.output = $$OUT_PWD/vulkan/qvulkanfunctions_p.h
qvkgen_ph.input = QMAKE_QVKGEN_INPUT
qvkgen_ph.depends += $$OUT_PWD/vulkan/qvulkanfunctions.h
qtConfig(vulkan): \
qvkgen_ph.variable_out = HEADERS
else: \
qvkgen_ph.CONFIG += target_predeps no_link
QMAKE_EXTRA_COMPILERS += qvkgen_ph
qvkgen_ph.commands = $$escape_expand(\\n)
qvkgen_ph.output = $$OUT_PWD/vulkan/qvulkanfunctions_p.h
qvkgen_ph.input = QMAKE_QVKGEN_INPUT
qvkgen_ph.depends += $$OUT_PWD/vulkan/qvulkanfunctions.h
qtConfig(vulkan): \
qvkgen_ph.variable_out = HEADERS
else: \
qvkgen_ph.CONFIG += target_predeps no_link
QMAKE_EXTRA_COMPILERS += qvkgen_ph
qvkgen_pimpl.commands = $$escape_expand(\\n)
qvkgen_pimpl.output = $$OUT_PWD/vulkan/qvulkanfunctions_p.cpp
qvkgen_pimpl.input = QMAKE_QVKGEN_INPUT
qvkgen_pimpl.depends += $$OUT_PWD/vulkan/qvulkanfunctions_p.h
qtConfig(vulkan): \
qvkgen_pimpl.variable_out = SOURCES
else: \
qvkgen_pimpl.CONFIG += target_predeps no_link
QMAKE_EXTRA_COMPILERS += qvkgen_pimpl
qvkgen_pimpl.commands = $$escape_expand(\\n)
qvkgen_pimpl.output = $$OUT_PWD/vulkan/qvulkanfunctions_p.cpp
qvkgen_pimpl.input = QMAKE_QVKGEN_INPUT
qvkgen_pimpl.depends += $$OUT_PWD/vulkan/qvulkanfunctions_p.h
qtConfig(vulkan): \
qvkgen_pimpl.variable_out = SOURCES
else: \
qvkgen_pimpl.CONFIG += target_predeps no_link
QMAKE_EXTRA_COMPILERS += qvkgen_pimpl
} else {
# generate dummy files to make qmake happy
write_file($$OUT_PWD/vulkan/qvulkanfunctions.h)
write_file($$OUT_PWD/vulkan/qvulkanfunctions_p.h)
}
# Ensure qvulkanfunctions.h gets installed correctly
targ_headers.CONFIG += no_check_exist

View File

@ -214,9 +214,11 @@ qtConfig(gui) {
SUBDIRS += src_3rdparty_freetype
src_platformsupport.depends += src_3rdparty_freetype
}
SUBDIRS += src_tools_qvkgen
src_gui.depends += src_tools_qvkgen
TOOLS += src_tools_qvkgen
qtConfig(vkgen) {
SUBDIRS += src_tools_qvkgen
src_gui.depends += src_tools_qvkgen
TOOLS += src_tools_qvkgen
}
SUBDIRS += src_gui src_platformsupport src_platformheaders
qtConfig(opengl): SUBDIRS += src_openglextensions
src_plugins.depends += src_gui src_platformsupport src_platformheaders