aboutsummaryrefslogtreecommitdiffstats
path: root/homescreen/meson.build
blob: db2409d0177d10bcab39be5a6e6054bbb9b81a0e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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('wayland-scanner')
agl_compositor_dep = dependency('agl-compositor-0.0.21-protocols')
dir_agl_compositor_base = agl_compositor_dep.get_variable(pkgconfig: '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)