From d4f3ddfbad7a64937f00f13ba964e18d33effbb0 Mon Sep 17 00:00:00 2001 From: Marius Vlad Date: Thu, 29 Sep 2022 14:22:11 +0300 Subject: homescreen: Change from qmake to meson This change will basically make way for adding grpc/protobuf support into homescreen, which turns out it's a pain to do with either qmake or cmake. Eventually, we'll move all our demos to using meson, which have gained a lot of support for building and support different technologies to allow far more saner configurations to take place. Based heavily on the work done by Scott Murray in libqtappfw, in the applauncher module. Bug-AGL: SPEC-4584 Signed-off-by: Marius Vlad Suggested-by: Scott Murray Change-Id: Id64bf3d5b41912d32df7f78e94ab04d231bb0c83 --- homescreen/meson.build | 107 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 homescreen/meson.build (limited to 'homescreen/meson.build') diff --git a/homescreen/meson.build b/homescreen/meson.build new file mode 100644 index 0000000..fc93d06 --- /dev/null +++ b/homescreen/meson.build @@ -0,0 +1,107 @@ +cpp = meson.get_compiler('cpp') +qt5_dep = dependency('qt5', modules: ['Qml', 'Quick', 'Gui']) +dep_wayland_client = dependency('wayland-client', version: '>= 1.20.0') +dep_qtappfw = [ + dependency('qtappfw-weather'), + dependency('qtappfw-network'), + dependency('qtappfw-bt'), + dependency('qtappfw-vehicle-signals'), + dependency('qtappfw-applauncher') +] + +qt_defines = [] +qpa_header_path = join_paths(qt5_dep.version(), 'QtGui') +qpa_header = join_paths(qpa_header_path, 'qpa/qplatformnativeinterface.h') +# we pass this QT_QPA_HEADER straight in the code as there's no easy +# way to pass the correct header +if cpp.has_header(qpa_header, dependencies : qt5_dep) + qt_defines += [ '-DQT_QPA_HEADER=<@0@>'.format(qpa_header) ] + message('Found QtGui QPA header in ' + qpa_header_path) +endif + +dep_scanner = dependency('wayland-scanner') +prog_scanner = find_program(dep_scanner.get_pkgconfig_variable('wayland_scanner')) +agl_compositor_dep = dependency('agl-compositor-0.0.20-protocols') +dir_agl_compositor_base = agl_compositor_dep.get_pkgconfig_variable('pkgdatadir') + +homescreen_dep = [ + qt5_dep, + dep_wayland_client, + dep_qtappfw, +] + +homescreen_resources = [ + 'qml/images/MediaPlayer/mediaplayer.qrc', + 'qml/images/MediaMusic/mediamusic.qrc', + 'qml/images/Weather/weather.qrc', + 'qml/images/Shortcut/shortcut.qrc', + 'qml/images/Status/status.qrc', + 'qml/images/images.qrc', + 'qml/qml.qrc' +] + +resource_files = qt5.compile_resources(sources: homescreen_resources) + +protocols = [ + [ 'agl-shell', 'agl-compositor' ], +] + +foreach proto: protocols + proto_name = proto[0] + if proto[1] == 'agl-compositor' + base_file = proto_name + xml_path = join_paths(dir_agl_compositor_base, '@0@.xml'.format(base_file)) + endif + + foreach output_type: [ 'client-header', 'server-header', 'private-code' ] + if output_type == 'client-header' + output_file = '@0@-client-protocol.h'.format(base_file) + elif output_type == 'server-header' + output_file = '@0@-server-protocol.h'.format(base_file) + else + output_file = '@0@-protocol.c'.format(base_file) + if dep_scanner.version().version_compare('< 1.14.91') + output_type = 'code' + endif + endif + + var_name = output_file.underscorify() + target = custom_target( + '@0@ @1@'.format(base_file, output_type), + command: [ prog_scanner, output_type, '@INPUT@', '@OUTPUT@' ], + input: xml_path, + output: output_file, + ) + message('protocol name is ' + var_name) + set_variable(var_name, target) + endforeach +endforeach + +homescreen_src_headers = [ + 'src/applicationlauncher.h', + 'src/mastervolume.h', + 'src/statusbarmodel.h', + 'src/statusbarserver.h', + 'src/homescreenhandler.h', + 'src/shell.h' +] + +moc_files = qt5.compile_moc(headers: homescreen_src_headers, + dependencies: qt5_dep) + +homescreen_src = [ + 'src/shell.cpp', + 'src/statusbarserver.cpp', + 'src/statusbarmodel.cpp', + 'src/applicationlauncher.cpp', + 'src/mastervolume.cpp', + 'src/homescreenhandler.cpp', + 'src/main.cpp', + agl_shell_client_protocol_h, + agl_shell_protocol_c +] + +executable('homescreen', homescreen_src, resource_files, moc_files, + cpp_args: qt_defines, + dependencies : homescreen_dep, + install: true) -- cgit 1.2.3-korg