Make wayland-scanner install generated headers
QtWayland uses QtWaylandScanner to generate c++ files which will be subclassed. This works ok in QtCompositor as it implements the pimple pattern. However, QtWayland has to expose a library called QtWaylandClient as a way to create specialized wayland plugins. These classes don't promise an ABI, and has limited API guarantees, so they subclass the classes generated by the QtWaylandScanner directly. For this library to be possible, we have to install the generated files. Also, it should be possible to use the private API, and that's not possible without the generated files. Change-Id: Id55200fe23652587390dabf84ca846e4f39cf70e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com> Reviewed-by: Andy Nichols <andy.nichols@digia.com>
This commit is contained in:
parent
8fa6cb83c6
commit
0e1ce36ae6
@ -5,10 +5,52 @@
|
||||
|
||||
isEmpty(QMAKE_WAYLAND_SCANNER):error("QMAKE_WAYLAND_SCANNER not defined for this mkspec")
|
||||
|
||||
defineReplace(waylandScannerHeaderFiles) {
|
||||
side = $$1
|
||||
path = $$2
|
||||
isEqual(side, "server"): \
|
||||
sources_list = $$WAYLANDSERVERSOURCES
|
||||
else: \
|
||||
sources_list = $$WAYLANDCLIENTSOURCES
|
||||
wayland_header_files_for_side =
|
||||
for(file, sources_list) {
|
||||
basenameFile = $$basename(file)
|
||||
basenameFile ~= s,\\.xml$,,
|
||||
wayland_header_files_for_side += $$path/wayland-$$basenameFile-$$side-protocol$${first(QMAKE_EXT_H)}
|
||||
isEqual(side, "server"): \
|
||||
wayland_header_files_for_side += $$path/qwayland-server-$$basenameFile$${first(QMAKE_EXT_H)}
|
||||
else: \
|
||||
wayland_header_files_for_side += $$path/qwayland-$$basenameFile$${first(QMAKE_EXT_H)}
|
||||
}
|
||||
return($$wayland_header_files_for_side)
|
||||
}
|
||||
|
||||
qt_install_headers {
|
||||
header_dest = $$MODULE_BASE_OUTDIR/include/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/private
|
||||
|
||||
header_files_client = $$waylandScannerHeaderFiles(client, $$header_dest)
|
||||
!isEmpty(header_files_client) {
|
||||
wayland_generated_client_headers.files = $$header_files_client
|
||||
wayland_generated_client_headers.path = $$private_headers.path
|
||||
INSTALLS += wayland_generated_client_headers
|
||||
WAYLAND_CLIENT_HEADER_DEST = $$header_dest/
|
||||
WAYLAND_CLIENT_INCLUDE_DIR = $$MODULE_INCNAME/private
|
||||
}
|
||||
|
||||
header_files_server = $$waylandScannerHeaderFiles(server, $$header_dest)
|
||||
!isEmpty(header_files_server) {
|
||||
wayland_generated_server_headers.files = $$header_files_server
|
||||
wayland_generated_server_headers.path = $$private_headers.path
|
||||
INSTALLS += wayland_generated_server_headers
|
||||
WAYLAND_SERVER_HEADER_DEST = $$header_dest/
|
||||
WAYLAND_SERVER_INCLUDE_DIR = $$MODULE_INCNAME/private
|
||||
}
|
||||
}
|
||||
|
||||
wayland_server_header.name = wayland ${QMAKE_FILE_BASE}
|
||||
wayland_server_header.input = WAYLANDSERVERSOURCES
|
||||
wayland_server_header.variable_out = HEADERS
|
||||
wayland_server_header.output = wayland-${QMAKE_FILE_BASE}-server-protocol$${first(QMAKE_EXT_H)}
|
||||
wayland_server_header.output = $${WAYLAND_SERVER_HEADER_DEST}wayland-${QMAKE_FILE_BASE}-server-protocol$${first(QMAKE_EXT_H)}
|
||||
wayland_server_header.commands = $$QMAKE_WAYLAND_SCANNER server-header < ${QMAKE_FILE_IN} > ${QMAKE_FILE_OUT}
|
||||
silent:wayland_server_header.commands = @echo Wayland server header ${QMAKE_FILE_IN} && $$wayland_server_header.commands
|
||||
QMAKE_EXTRA_COMPILERS += wayland_server_header
|
||||
@ -16,7 +58,7 @@ QMAKE_EXTRA_COMPILERS += wayland_server_header
|
||||
wayland_client_header.name = wayland ${QMAKE_FILE_BASE}
|
||||
wayland_client_header.input = WAYLANDCLIENTSOURCES
|
||||
wayland_client_header.variable_out = HEADERS
|
||||
wayland_client_header.output = wayland-${QMAKE_FILE_BASE}-client-protocol$${first(QMAKE_EXT_H)}
|
||||
wayland_client_header.output = $${WAYLAND_CLIENT_HEADER_DEST}wayland-${QMAKE_FILE_BASE}-client-protocol$${first(QMAKE_EXT_H)}
|
||||
wayland_client_header.commands = $$QMAKE_WAYLAND_SCANNER client-header < ${QMAKE_FILE_IN} > ${QMAKE_FILE_OUT}
|
||||
silent:wayland_client_header.commands = @echo Wayland client header ${QMAKE_FILE_IN} && $$wayland_client_header.commands
|
||||
QMAKE_EXTRA_COMPILERS += wayland_client_header
|
||||
@ -34,35 +76,35 @@ qtPrepareTool(QMAKE_QTWAYLANDSCANNER, qtwaylandscanner)
|
||||
qtwayland_client_header.name = qtwayland ${QMAKE_FILE_BASE}
|
||||
qtwayland_client_header.input = WAYLANDCLIENTSOURCES
|
||||
qtwayland_client_header.variable_out = HEADERS
|
||||
qtwayland_client_header.depends = wayland-${QMAKE_FILE_BASE}-client-protocol$${first(QMAKE_EXT_H)}
|
||||
qtwayland_client_header.output = qwayland-${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)}
|
||||
qtwayland_client_header.commands = $$QMAKE_QTWAYLANDSCANNER client-header ${QMAKE_FILE_IN} > ${QMAKE_FILE_OUT}
|
||||
qtwayland_client_header.depends = $${WAYLAND_CLIENT_HEADER_DEST}wayland-${QMAKE_FILE_BASE}-client-protocol$${first(QMAKE_EXT_H)}
|
||||
qtwayland_client_header.output = $${WAYLAND_CLIENT_HEADER_DEST}qwayland-${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)}
|
||||
qtwayland_client_header.commands = $$QMAKE_QTWAYLANDSCANNER client-header ${QMAKE_FILE_IN} $$WAYLAND_CLIENT_INCLUDE_DIR > ${QMAKE_FILE_OUT}
|
||||
silent:qtwayland_client_header.commands = @echo QtWayland client header ${QMAKE_FILE_IN} && $$qtwayland_client_header.commands
|
||||
QMAKE_EXTRA_COMPILERS += qtwayland_client_header
|
||||
|
||||
qtwayland_client_code.name = qtwayland ${QMAKE_FILE_BASE}
|
||||
qtwayland_client_code.input = WAYLANDCLIENTSOURCES
|
||||
qtwayland_client_code.variable_out = SOURCES
|
||||
qtwayland_client_code.depends = qwayland-${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)}
|
||||
qtwayland_client_code.depends = $${WAYLAND_CLIENT_HEADER_DEST}qwayland-${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)}
|
||||
qtwayland_client_code.output = qwayland-${QMAKE_FILE_BASE}.cpp
|
||||
qtwayland_client_code.commands = $$QMAKE_QTWAYLANDSCANNER client-code ${QMAKE_FILE_IN} > ${QMAKE_FILE_OUT}
|
||||
qtwayland_client_code.commands = $$QMAKE_QTWAYLANDSCANNER client-code ${QMAKE_FILE_IN} $$WAYLAND_CLIENT_INCLUDE_DIR > ${QMAKE_FILE_OUT}
|
||||
silent:qtwayland_client_code.commands = @echo QtWayland client code ${QMAKE_FILE_IN} && $$qtwayland_client_code.commands
|
||||
QMAKE_EXTRA_COMPILERS += qtwayland_client_code
|
||||
|
||||
qtwayland_server_header.name = qtwayland ${QMAKE_FILE_BASE}
|
||||
qtwayland_server_header.input = WAYLANDSERVERSOURCES
|
||||
qtwayland_server_header.variable_out = HEADERS
|
||||
qtwayland_server_header.depends = wayland-${QMAKE_FILE_BASE}-server-protocol$${first(QMAKE_EXT_H)}
|
||||
qtwayland_server_header.output = qwayland-server-${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)}
|
||||
qtwayland_server_header.commands = $$QMAKE_QTWAYLANDSCANNER server-header ${QMAKE_FILE_IN} > ${QMAKE_FILE_OUT}
|
||||
qtwayland_server_header.depends = $${WAYLAND_SERVER_HEADER_DEST}wayland-${QMAKE_FILE_BASE}-server-protocol$${first(QMAKE_EXT_H)}
|
||||
qtwayland_server_header.output = $${WAYLAND_SERVER_HEADER_DEST}qwayland-server-${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)}
|
||||
qtwayland_server_header.commands = $$QMAKE_QTWAYLANDSCANNER server-header ${QMAKE_FILE_IN} $$WAYLAND_SERVER_INCLUDE_DIR > ${QMAKE_FILE_OUT}
|
||||
silent:qtwayland_server_header.commands = @echo QtWayland server header ${QMAKE_FILE_IN} && $$qtwayland_server_header.commands
|
||||
QMAKE_EXTRA_COMPILERS += qtwayland_server_header
|
||||
|
||||
qtwayland_server_code.name = qtwayland ${QMAKE_FILE_BASE}
|
||||
qtwayland_server_code.input = WAYLANDSERVERSOURCES
|
||||
qtwayland_server_code.variable_out = SOURCES
|
||||
qtwayland_server_code.depends = qwayland-server-${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)}
|
||||
qtwayland_server_code.depends = $${WAYLAND_SERVER_HEADER_DEST}qwayland-server-${QMAKE_FILE_BASE}$${first(QMAKE_EXT_H)}
|
||||
qtwayland_server_code.output = qwayland-server-${QMAKE_FILE_BASE}.cpp
|
||||
qtwayland_server_code.commands = $$QMAKE_QTWAYLANDSCANNER server-code ${QMAKE_FILE_IN} > ${QMAKE_FILE_OUT}
|
||||
qtwayland_server_code.commands = $$QMAKE_QTWAYLANDSCANNER server-code ${QMAKE_FILE_IN} $$WAYLAND_SERVER_INCLUDE_DIR > ${QMAKE_FILE_OUT}
|
||||
silent:qtwayland_server_code.commands = @echo QtWayland server code ${QMAKE_FILE_IN} && $$qtwayland_server_code.commands
|
||||
QMAKE_EXTRA_COMPILERS += qtwayland_server_code
|
||||
|
Loading…
x
Reference in New Issue
Block a user