1glib_min_ver = '>=2.44.0'
2
3gio_dep = dependency('gio-2.0', version: glib_min_ver, required: true)
4glib_dep = dependency('glib-2.0', version: glib_min_ver, required: true)
5gtk3_dep = dependency('gtk+-3.0', version: '>=3.16', required: true)
6
7libdeps = []
8libdeps += gio_dep
9libdeps += glib_dep
10libdeps += gtk3_dep
11libdeps += dependency('gdk-pixbuf-2.0', version: '>=2.22.0', required: true)
12libdeps += dependency('cairo', required: true)
13libdeps += dependency('x11', required: true)
14
15favorite_vfs_sources = [
16  'favorite-vfs-file.c',
17  'favorite-vfs-file-enumerator.c',
18  'favorite-vfs-file-monitor.c'
19]
20
21xapp_debug = [
22    'xapp-debug.h',
23    'xapp-debug.c'
24]
25
26xapp_headers = [
27    'xapp-favorites.h',
28    'xapp-gtk-window.h',
29    'xapp-icon-chooser-button.h',
30    'xapp-icon-chooser-dialog.h',
31    'xapp-monitor-blanker.h',
32    'xapp-preferences-window.h',
33    'xapp-stack-sidebar.h',
34    'xapp-status-icon.h',
35    'xapp-status-icon-monitor.h',
36    'xapp-style-manager.h',
37    'xapp-util.h'
38]
39
40xapp_sources = [
41    'xapp-favorites.c',
42    'xapp-glade-catalog.c',
43    'xapp-gtk-window.c',
44    'xapp-icon-chooser-button.c',
45    'xapp-icon-chooser-dialog.c',
46    'xapp-monitor-blanker.c',
47    'xapp-preferences-window.c',
48    'xapp-stack-sidebar.c',
49    'xapp-status-icon.c',
50    'xapp-status-icon-monitor.c',
51    'xapp-style-manager.c',
52    'xapp-util.c'
53]
54
55if not app_lib_only
56    libdeps += dependency('libgnomekbdui', required: true)
57    xapp_headers += 'xapp-kbd-layout-controller.h'
58    xapp_sources += 'xapp-kbd-layout-controller.c'
59endif
60
61dbus_headers = []
62
63# FIXME: Ugly workaround that simulates the generation of
64#        two different targets, so headers can be included
65#        explicitly for introspection.
66#
67# This can be removed once all platforms use meson >=.46
68# and replaced with gnome.gdbus_codegen
69xapp_statusicon_interface_sources = custom_target(
70    'xapp-statusicon-interface',
71    input: 'org.x.StatusIcon.xml',
72    output: ['xapp-statusicon-interface.h', 'xapp-statusicon-interface.c'],
73    command: [
74        codegen,
75        'org.x.StatusIcon',
76        'xapp-statusicon-interface',
77        'StatusIconInterface',
78        meson.current_build_dir(),
79        '@INPUT@', '@OUTPUT@'
80    ]
81)
82
83dbus_headers += xapp_statusicon_interface_sources[0]
84xapp_sources += xapp_statusicon_interface_sources[1]
85
86# You can't actually access the generated header udring the install_header command below,
87# because the command is evaluated prior to the files being generated.  So we need to manually
88# install the dbus header file (custom install scripts really *do* get evaluated after build,
89# during the install phase.)
90codegen = find_program(join_paths(meson.source_root(), 'meson-scripts', 'g-codegen.py'))
91
92meson.add_install_script(join_paths(meson.source_root(), 'meson-scripts', 'install_generated_header.py'),
93  'xapp-statusicon-interface.h'
94)
95
96xapp_enums = gnome.mkenums('xapp-enums',
97    sources : xapp_headers,
98    c_template : 'xapp-enums.c.template',
99    h_template : 'xapp-enums.h.template',
100    identifier_prefix : 'XApp',
101    symbol_prefix : 'xapp'
102)
103
104libxapp = library('xapp',
105    sources  : xapp_headers + xapp_sources + xapp_enums + dbus_headers + favorite_vfs_sources + xapp_debug,
106    include_directories: [top_inc],
107    version: meson.project_version(),
108    soversion: '1',
109    dependencies: libdeps,
110    c_args: ['-Wno-declaration-after-statement', '-DG_LOG_DOMAIN="XApp"'],
111    link_args: [ '-Wl,-Bsymbolic', '-Wl,-z,relro', '-Wl,-z,now', '-lm'],
112    install: true
113)
114
115install_headers(xapp_headers,
116    subdir: 'xapp/libxapp'
117)
118
119libxapp_dep = declare_dependency(
120    link_with: libxapp,
121    include_directories: top_inc,
122    dependencies: libdeps,
123    sources: [ xapp_headers, dbus_headers ]
124)
125
126gir = gnome.generate_gir(libxapp,
127    namespace: 'XApp',
128    nsversion: '1.0',
129    sources: xapp_headers + xapp_sources + dbus_headers + xapp_enums,
130    identifier_prefix: 'XApp',
131    symbol_prefix: 'xapp_',
132    export_packages: 'xapp',
133    includes: ['GObject-2.0', 'Gtk-3.0'],
134    install: true
135)
136
137pkg.generate(
138    libraries: libxapp,
139    name: 'xapp',
140    subdirs: 'xapp',
141    description: 'Utility library',
142    version: meson.project_version(),
143    requires: ['gtk+-3.0', 'gobject-2.0', 'cairo'],
144    requires_private: 'xkbfile',
145)
146
147install_data(['xapp-glade-catalog.xml'],
148    install_dir : join_paths(get_option('datadir'), 'glade/catalogs')
149)
150
151gnome.generate_vapi('xapp',
152    packages: ['glib-2.0', 'gio-unix-2.0', 'gtk+-3.0'],
153    sources: gir[0],
154    metadata_dirs: meson.current_source_dir(),
155    install: true
156)
157
158if not app_lib_only
159    gtk3_module = shared_module(
160        'xapp-gtk3-module', ['xapp-gtk3-module.c'],
161        include_directories: [top_inc],
162        dependencies: [gtk3_dep, libxapp_dep],
163        install: true,
164        install_dir: join_paths(gtk3_dep.get_pkgconfig_variable('libdir'),'gtk-3.0','modules')
165    )
166endif
167