gdk_public_sources = files([ 'gdk.c', 'gdkapplaunchcontext.c', 'gdkcairo.c', 'gdkcontentformats.c', 'gdkcursor.c', 'gdkdevice.c', 'gdkdevicepad.c', 'gdkdevicetool.c', 'gdkdisplay.c', 'gdkdisplaymanager.c', 'gdkdnd.c', 'gdkdrawcontext.c', 'gdkdrawingcontext.c', 'gdkevents.c', 'gdkframeclock.c', 'gdkframeclockidle.c', 'gdkframetimings.c', 'gdkgl.c', 'gdkglcontext.c', 'gdkglobals.c', 'gdkkeys.c', 'gdkkeyuni.c', 'gdkmonitor.c', 'gdkpango.c', 'gdkpixbuf-drawable.c', 'gdkproperty.c', 'gdkrectangle.c', 'gdkrgba.c', 'gdkseat.c', 'gdkseatdefault.c', 'gdkselection.c', 'gdktexture.c', 'gdkvulkancontext.c', 'gdkwindow.c', 'gdkwindowimpl.c', ]) gdk_public_headers = files([ 'gdk-autocleanup.h', 'gdk.h', 'gdkapplaunchcontext.h', 'gdkcairo.h', 'gdkcontentformats.h', 'gdkcursor.h', 'gdkdevice.h', 'gdkdevicepad.h', 'gdkdevicetool.h', 'gdkdisplay.h', 'gdkdisplaymanager.h', 'gdkdnd.h', 'gdkdrawcontext.h', 'gdkdrawingcontext.h', 'gdkevents.h', 'gdkframeclock.h', 'gdkframetimings.h', 'gdkglcontext.h', 'gdkkeys.h', 'gdkkeysyms.h', 'gdkmonitor.h', 'gdkpango.h', 'gdkpixbuf.h', 'gdkproperty.h', 'gdkrectangle.h', 'gdkrgba.h', 'gdkseat.h', 'gdkselection.h', 'gdkthreads.h', 'gdktexture.h', 'gdktypes.h', 'gdkvulkancontext.h', 'gdkwindow.h', ]) install_headers(gdk_public_headers, subdir: 'gtk-4.0/gdk/') gdk_sources = gdk_public_sources gdk_private_h_sources = files([ 'gdkeventsprivate.h', 'gdkdevicetoolprivate.h', 'gdkdrawingcontextprivate.h', 'gdkmonitorprivate.h', 'gdkseatdefaultprivate.h', ]) gdk_gresource_xml = configure_file(output : 'gdk.gresource.xml', input : 'gen-gdk-gresources-xml.py', command : [find_program('gen-gdk-gresources-xml.py'), meson.current_source_dir(), '@OUTPUT@']) gdkresources = gnome.compile_resources('gdkresources', gdk_gresource_xml, source_dir: '.', c_name: '_gdk', extra_args: '--manual-register') gdk_headers = gdk_public_headers gdk_enums = gnome.mkenums('gdkenumtypes', sources: gdk_public_headers, c_template : 'gdkenumtypes.c.template', h_template : 'gdkenumtypes.h.template', install_dir: join_paths(gtk_includedir, 'gtk-4.0/gdk'), install_header : true) gdkenum_h = gdk_enums[1] gdk_marshalers = gnome.genmarshal('gdkmarshalers', sources : 'gdkmarshalers.list', prefix : '_gdk_marshal', valist_marshallers : true) gdkmarshal_h = gdk_marshalers[1] gdkconfig_cdata = configuration_data() gdkconfig_cdata.set('GDK_WINDOWING_X11', x11_enabled) gdkconfig_cdata.set('GDK_WINDOWING_WAYLAND', wayland_enabled) gdkconfig_cdata.set('GDK_WINDOWING_WIN32', win32_enabled) gdkconfig_cdata.set('GDK_WINDOWING_BROADWAY', broadway_enabled) gdkconfig_cdata.set('GDK_WINDOWING_MIR', mir_enabled) gdkconfig_cdata.set('GDK_RENDERING_VULKAN', have_vulkan) gdkconfig = configure_file( input : 'gdkconfig.h.meson', output : 'gdkconfig.h', configuration : gdkconfig_cdata, install_dir: join_paths(gtk_includedir, 'gtk-4.0/gdk')) gdkversion_cdata = configuration_data() gdkversion_cdata.set('GTK_MAJOR_VERSION', gtk_major_version) gdkversion_cdata.set('GTK_MINOR_VERSION', gtk_minor_version) gdkversion_cdata.set('GTK_MICRO_VERSION', gtk_micro_version) gdkversionmacros = configure_file( input : 'gdkversionmacros.h.in', output : 'gdkversionmacros.h', configuration: gdkversion_cdata, install_dir: join_paths(gtk_includedir, 'gtk-4.0/gdk')) gdkinc = include_directories('.') xinc = include_directories('x11') wlinc = include_directories('.') gdk_gen_headers = [gdkenum_h, gdkmarshal_h, gdkconfig, gdkversionmacros] gdk_deps = [ libm, pixbuf_dep, cairo_dep, pango_dep, cairogobj_dep, glib_dep, gobject_dep, epoxy_dep, fontconfig_dep, platform_gio_dep, pangocairo_dep, vulkan_lib ] # add generated gdk sources gdk_sources += [ gdkconfig, gdk_enums, gdk_marshalers, gdkresources, gdkversionmacros, gdk_private_h_sources, gdk_public_headers ] if wayland_enabled or broadway_enabled if cc.has_function('shm_open', name : 'shm_open() in libc') shmlib = [] elif cc.has_function('shm_open', args : '-lrt', name : 'shm_open() in librt') shmlib = cc.find_library('rt') else shmlib = [] endif endif gdk_backends = [] gdk_backends_gen_headers = [] # non-public generated headers foreach backend : ['broadway', 'mir', 'quartz', 'wayland', 'win32', 'x11'] if get_variable('@0@_enabled'.format(backend)) subdir(backend) gdk_deps += get_variable('gdk_@0@_deps'.format(backend)) gdk_backends += get_variable('libgdk_@0@'.format(backend)) # Special-case this for now to work around Meson bug with get_variable() # fallback being an empty array, or any array (#1481) if backend == 'wayland' gdk_backends_gen_headers += get_variable('gdk_@0@_gen_headers'.format(backend)) endif endif endforeach # FIXME: might have to add '-xobjective-c' to c_args for quartz backend? libgdk = static_library('gdk', sources: [gdk_sources, gdk_backends_gen_headers, gdkconfig], dependencies: gdk_deps, include_directories: [confinc, xinc, wlinc], c_args: [ '-DGDK_COMPILATION', '-DG_LOG_DOMAIN="Gdk"', ] + common_cflags, link_whole: gdk_backends, link_args: common_ldflags) # We don't have link_with: to internal static libs here on purpose, just # list the dependencies and generated headers and such, for use in the # "public" libgtk_dep used by internal executables. libgdk_dep = declare_dependency( sources: ['gdk.h', gdkconfig, gdkenum_h], include_directories: [confinc, xinc, wlinc], dependencies: gdk_deps)