1gdk_public_sources = files([ 2 'gdk.c', 3 'gdkapplaunchcontext.c', 4 'gdkcairo.c', 5 'gdkcairocontext.c', 6 'gdkclipboard.c', 7 'gdkcontentdeserializer.c', 8 'gdkcontentformats.c', 9 'gdkcontentprovider.c', 10 'gdkcontentproviderimpl.c', 11 'gdkcontentserializer.c', 12 'gdkcursor.c', 13 'gdkdevice.c', 14 'gdkdevicepad.c', 15 'gdkdevicetool.c', 16 'gdkdisplay.c', 17 'gdkdisplaymanager.c', 18 'gdkdrag.c', 19 'gdkdrawcontext.c', 20 'gdkdrop.c', 21 'gdkevents.c', 22 'filetransferportal.c', 23 'gdkframeclock.c', 24 'gdkframeclockidle.c', 25 'gdkframetimings.c', 26 'gdkgl.c', 27 'gdkglcontext.c', 28 'gdkglobals.c', 29 'gdkgltexture.c', 30 'gdkkeys.c', 31 'gdkkeyuni.c', 32 'gdkmemorytexture.c', 33 'gdkmonitor.c', 34 'gdkpaintable.c', 35 'gdkpango.c', 36 'gdkpixbuf-drawable.c', 37 'gdkpipeiostream.c', 38 'gdkrectangle.c', 39 'gdkrgba.c', 40 'gdkseat.c', 41 'gdkseatdefault.c', 42 'gdksnapshot.c', 43 'gdktexture.c', 44 'gdkvulkancontext.c', 45 'gdksurface.c', 46 'gdkpopuplayout.c', 47 'gdkprofiler.c', 48 'gdkpopup.c', 49 'gdktoplevellayout.c', 50 'gdktoplevelsize.c', 51 'gdktoplevel.c', 52 'gdkdragsurface.c', 53]) 54 55gdk_public_headers = files([ 56 'gdk-autocleanup.h', 57 'gdk.h', 58 'gdkapplaunchcontext.h', 59 'gdkcairo.h', 60 'gdkcairocontext.h', 61 'gdkclipboard.h', 62 'gdkcontentdeserializer.h', 63 'gdkcontentformats.h', 64 'gdkcontentprovider.h', 65 'gdkcontentproviderimpl.h', 66 'gdkcontentserializer.h', 67 'gdkcursor.h', 68 'gdkdevice.h', 69 'gdkdevicepad.h', 70 'gdkdevicetool.h', 71 'gdkdisplay.h', 72 'gdkdisplaymanager.h', 73 'gdkdrag.h', 74 'gdkdrawcontext.h', 75 'gdkdrop.h', 76 'gdkevents.h', 77 'gdkframeclock.h', 78 'gdkframetimings.h', 79 'gdkglcontext.h', 80 'gdkgltexture.h', 81 'gdkkeys.h', 82 'gdkkeysyms.h', 83 'gdkmemorytexture.h', 84 'gdkmonitor.h', 85 'gdkpaintable.h', 86 'gdkpango.h', 87 'gdkpixbuf.h', 88 'gdkrectangle.h', 89 'gdkrgba.h', 90 'gdkseat.h', 91 'gdksnapshot.h', 92 'gdktexture.h', 93 'gdktypes.h', 94 'gdkvulkancontext.h', 95 'gdksurface.h', 96 'gdkpopuplayout.h', 97 'gdkpopup.h', 98 'gdktoplevellayout.h', 99 'gdktoplevelsize.h', 100 'gdktoplevel.h', 101 'gdkdragsurface.h', 102]) 103install_headers(gdk_public_headers, subdir: 'gtk-4.0/gdk/') 104 105gdk_sources = gdk_public_sources 106 107gdk_private_h_sources = files([ 108 'gdkeventsprivate.h', 109 'gdkdevicetoolprivate.h', 110 'gdkmonitorprivate.h', 111 'gdkseatdefaultprivate.h', 112 'gdktoplevelsizeprivate.h', 113]) 114 115gdk_gresource_xml = configure_file(output: 'gdk.gresource.xml', 116 input: 'gen-gdk-gresources-xml.py', 117 command: [ 118 find_program('gen-gdk-gresources-xml.py'), 119 meson.current_source_dir(), 120 '@OUTPUT@', 121 ], 122) 123 124gdkresources = gnome.compile_resources('gdkresources', 125 gdk_gresource_xml, 126 source_dir: '.', 127 c_name: '_gdk', 128 extra_args: '--manual-register', 129) 130 131gdk_headers = gdk_public_headers 132 133gdk_enums = gnome.mkenums('gdkenumtypes', 134 sources: gdk_public_headers, 135 c_template: 'gdkenumtypes.c.template', 136 h_template: 'gdkenumtypes.h.template', 137 install_dir: gtk_includedir / 'gtk-4.0/gdk', 138 install_header: true, 139) 140 141gdkenum_h = gdk_enums[1] 142 143gdk_marshalers = gnome.genmarshal('gdkmarshalers', 144 sources: 'gdkmarshalers.list', 145 prefix: '_gdk_marshal', 146 valist_marshallers: true, 147) 148 149gdkmarshal_h = gdk_marshalers[1] 150 151gdkconfig_cdata = configuration_data() 152gdkconfig_cdata.set('GDK_WINDOWING_X11', x11_enabled) 153gdkconfig_cdata.set('GDK_WINDOWING_WAYLAND', wayland_enabled) 154gdkconfig_cdata.set('GDK_WINDOWING_WIN32', win32_enabled) 155gdkconfig_cdata.set('GDK_WINDOWING_BROADWAY', broadway_enabled) 156gdkconfig_cdata.set('GDK_WINDOWING_MACOS', macos_enabled) 157gdkconfig_cdata.set('GDK_RENDERING_VULKAN', have_vulkan) 158 159gdkconfig = configure_file( 160 input: 'gdkconfig.h.meson', 161 output: 'gdkconfig.h', 162 configuration: gdkconfig_cdata, 163 install_dir: gtk_includedir / 'gtk-4.0/gdk', 164) 165 166gdkversion_cdata = configuration_data() 167gdkversion_cdata.set('GTK_MAJOR_VERSION', gtk_major_version) 168gdkversion_cdata.set('GTK_MINOR_VERSION', gtk_minor_version) 169gdkversion_cdata.set('GTK_MICRO_VERSION', gtk_micro_version) 170 171gdkversionmacros = configure_file( 172 input: 'gdkversionmacros.h.in', 173 output: 'gdkversionmacros.h', 174 configuration: gdkversion_cdata, 175 install_dir: gtk_includedir / 'gtk-4.0/gdk', 176) 177 178gdkinc = include_directories('.') 179gdkx11_inc = include_directories('x11') 180gdkwayland_inc = include_directories('wayland') 181 182wlinc = include_directories('.') 183win32rcinc = include_directories('win32/rc') 184 185gdk_gen_headers = [gdkenum_h, gdkmarshal_h, gdkconfig, gdkversionmacros] 186 187gdk_deps = [ 188 libm, 189 pixbuf_dep, 190 cairo_dep, 191 pango_dep, 192 fribidi_dep, 193 cairogobj_dep, 194 glib_dep, 195 gobject_dep, 196 graphene_dep, 197 epoxy_dep, 198 fontconfig_dep, 199 platform_gio_dep, 200 pangocairo_dep, 201 vulkan_dep, 202] 203 204if profiler_enabled 205 if libsysprof_capture_dep.found() 206 gdk_deps += [libsysprof_capture_dep] 207 endif 208endif 209 210# add generated gdk sources 211gdk_sources += [ 212 gdkconfig, 213 gdk_enums, 214 gdk_marshalers, 215 gdkresources, 216 gdkversionmacros, 217 gdk_private_h_sources, 218 gdk_public_headers 219] 220 221if wayland_enabled or broadway_enabled 222 if cc.has_function('shm_open') 223 shmlib = [] 224 elif cc.has_function('shm_open', args : '-lrt') 225 shmlib = cc.find_library('rt') 226 else 227 shmlib = [] 228 endif 229endif 230 231libgdk_c_args = [ 232 '-DGTK_COMPILATION', 233 '-DG_LOG_DOMAIN="Gdk"', 234] 235 236gdk_backends = [] 237gdk_backends_gen_headers = [] # non-public generated headers 238foreach backend : ['broadway', 'wayland', 'win32', 'x11', 'macos'] 239 if get_variable('@0@_enabled'.format(backend)) 240 subdir(backend) 241 gdk_deps += get_variable('gdk_@0@_deps'.format(backend)) 242 gdk_backends += get_variable('libgdk_@0@'.format(backend)) 243 # Special-case this for now to work around Meson bug with get_variable() 244 # fallback being an empty array, or any array (#1481) 245 if backend == 'wayland' 246 gdk_backends_gen_headers += get_variable('gdk_@0@_gen_headers'.format(backend)) 247 endif 248 endif 249endforeach 250 251if gdk_backends.length() == 0 252 error('No backends enabled') 253endif 254 255libgdk = static_library('gdk', 256 sources: [gdk_sources, gdk_backends_gen_headers, gdkconfig], 257 dependencies: gdk_deps + [libgtk_css_dep], 258 link_with: [libgtk_css, ], 259 include_directories: [confinc, gdkx11_inc, wlinc], 260 c_args: libgdk_c_args + common_cflags, 261 link_whole: gdk_backends, 262) 263 264# We don't have link_with: to internal static libs here on purpose, just 265# list the dependencies and generated headers and such, for use in the 266# "public" libgtk_dep used by internal executables. 267libgdk_dep = declare_dependency( 268 sources: ['gdk.h', gdkconfig, gdkenum_h], 269 include_directories: [confinc, gdkx11_inc, wlinc], 270 dependencies: gdk_deps + [libgtk_css_dep], 271) 272