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