0e1ce36ae6
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>
111 lines
6.1 KiB
Plaintext
111 lines
6.1 KiB
Plaintext
#
|
|
# Extra-compilers for handling files specified in
|
|
# the WAYLANDSERVERSOURCES and WAYLANDCLIENTSOURCES variables
|
|
#
|
|
|
|
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_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
|
|
|
|
wayland_client_header.name = wayland ${QMAKE_FILE_BASE}
|
|
wayland_client_header.input = WAYLANDCLIENTSOURCES
|
|
wayland_client_header.variable_out = HEADERS
|
|
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
|
|
|
|
wayland_code.name = wayland ${QMAKE_FILE_BASE}
|
|
wayland_code.input = WAYLANDCLIENTSOURCES WAYLANDSERVERSOURCES
|
|
wayland_code.variable_out = SOURCES
|
|
wayland_code.output = wayland-${QMAKE_FILE_BASE}-protocol.c
|
|
wayland_code.commands = $$QMAKE_WAYLAND_SCANNER code < ${QMAKE_FILE_IN} > ${QMAKE_FILE_OUT}
|
|
silent:wayland_code.commands = @echo Wayland code header ${QMAKE_FILE_IN} && $$wayland_code.commands
|
|
QMAKE_EXTRA_COMPILERS += wayland_code
|
|
|
|
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_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 = $${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} $$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_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 = $${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} $$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
|