aboutsummaryrefslogtreecommitdiffstats
path: root/homescreen/meson.build
diff options
context:
space:
mode:
authorMarius Vlad <marius.vlad@collabora.com>2022-09-29 14:22:11 +0300
committerMarius Vlad <marius.vlad@collabora.com>2022-10-07 21:28:01 +0300
commitd4f3ddfbad7a64937f00f13ba964e18d33effbb0 (patch)
tree8c13fc7de204e9a463c3dffa7033f021a2139df2 /homescreen/meson.build
parent52c767388614e2ec6fa26851840bf01d97c5d49e (diff)
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 <marius.vlad@collabora.com> Suggested-by: Scott Murray <scott.murray@konsulko.com> Change-Id: Id64bf3d5b41912d32df7f78e94ab04d231bb0c83
Diffstat (limited to 'homescreen/meson.build')
-rw-r--r--homescreen/meson.build107
1 files changed, 107 insertions, 0 deletions
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)