forked from AuroraMiddleware/gtk
def700739d
We use a compilation symbol in our build to allow the inclusion of specific headers while building GTK, to avoid the need to include only the global header. Each namespace has its own compilation symbol because we used to have different libraries, and strict symbol visibility between libraries; now that we have a single library, and we can use private symbols across namespaces while building GTK, we should have a single compilation symbol, and simplify the build rules.
250 lines
6.2 KiB
Meson
250 lines
6.2 KiB
Meson
gdk_public_sources = files([
|
|
'gdk.c',
|
|
'gdkapplaunchcontext.c',
|
|
'gdkcairo.c',
|
|
'gdkcairocontext.c',
|
|
'gdkclipboard.c',
|
|
'gdkcontentdeserializer.c',
|
|
'gdkcontentformats.c',
|
|
'gdkcontentprovider.c',
|
|
'gdkcontentproviderimpl.c',
|
|
'gdkcontentserializer.c',
|
|
'gdkcursor.c',
|
|
'gdkdevice.c',
|
|
'gdkdevicepad.c',
|
|
'gdkdevicetool.c',
|
|
'gdkdisplay.c',
|
|
'gdkdisplaymanager.c',
|
|
'gdkdrag.c',
|
|
'gdkdrawcontext.c',
|
|
'gdkdrop.c',
|
|
'gdkevents.c',
|
|
'gdkframeclock.c',
|
|
'gdkframeclockidle.c',
|
|
'gdkframetimings.c',
|
|
'gdkgl.c',
|
|
'gdkglcontext.c',
|
|
'gdkglobals.c',
|
|
'gdkgltexture.c',
|
|
'gdkkeys.c',
|
|
'gdkkeyuni.c',
|
|
'gdkmemorytexture.c',
|
|
'gdkmonitor.c',
|
|
'gdkpaintable.c',
|
|
'gdkpango.c',
|
|
'gdkpixbuf-drawable.c',
|
|
'gdkpipeiostream.c',
|
|
'gdkproperty.c',
|
|
'gdkrectangle.c',
|
|
'gdkrgba.c',
|
|
'gdkseat.c',
|
|
'gdkseatdefault.c',
|
|
'gdkselection.c',
|
|
'gdksnapshot.c',
|
|
'gdktexture.c',
|
|
'gdkvulkancontext.c',
|
|
'gdksurface.c',
|
|
'gdkprofiler.c'
|
|
])
|
|
|
|
gdk_public_headers = files([
|
|
'gdk-autocleanup.h',
|
|
'gdk.h',
|
|
'gdkapplaunchcontext.h',
|
|
'gdkcairo.h',
|
|
'gdkcairocontext.h',
|
|
'gdkclipboard.h',
|
|
'gdkcontentdeserializer.h',
|
|
'gdkcontentformats.h',
|
|
'gdkcontentprovider.h',
|
|
'gdkcontentproviderimpl.h',
|
|
'gdkcontentserializer.h',
|
|
'gdkcursor.h',
|
|
'gdkdevice.h',
|
|
'gdkdevicepad.h',
|
|
'gdkdevicetool.h',
|
|
'gdkdisplay.h',
|
|
'gdkdisplaymanager.h',
|
|
'gdkdrag.h',
|
|
'gdkdrawcontext.h',
|
|
'gdkdrop.h',
|
|
'gdkevents.h',
|
|
'gdkframeclock.h',
|
|
'gdkframetimings.h',
|
|
'gdkglcontext.h',
|
|
'gdkgltexture.h',
|
|
'gdkkeys.h',
|
|
'gdkkeysyms.h',
|
|
'gdkmemorytexture.h',
|
|
'gdkmonitor.h',
|
|
'gdkpaintable.h',
|
|
'gdkpango.h',
|
|
'gdkpixbuf.h',
|
|
'gdkproperty.h',
|
|
'gdkrectangle.h',
|
|
'gdkrgba.h',
|
|
'gdkseat.h',
|
|
'gdksnapshot.h',
|
|
'gdktexture.h',
|
|
'gdktypes.h',
|
|
'gdkvulkancontext.h',
|
|
'gdksurface.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',
|
|
'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_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('.')
|
|
gdkx11_inc = include_directories('x11')
|
|
gdkwayland_inc = include_directories('wayland')
|
|
|
|
wlinc = include_directories('.')
|
|
win32rcinc = include_directories('win32/rc')
|
|
|
|
gdk_gen_headers = [gdkenum_h, gdkmarshal_h, gdkconfig, gdkversionmacros]
|
|
|
|
gdk_deps = [
|
|
libm,
|
|
pixbuf_dep,
|
|
cairo_dep,
|
|
pango_dep,
|
|
fribidi_dep,
|
|
cairogobj_dep,
|
|
glib_dep,
|
|
gobject_dep,
|
|
graphene_dep,
|
|
epoxy_dep,
|
|
fontconfig_dep,
|
|
platform_gio_dep,
|
|
pangocairo_dep,
|
|
vulkan_dep,
|
|
]
|
|
|
|
if profiler_enabled
|
|
if profiler_dep.found()
|
|
gdk_deps += [profiler_dep]
|
|
endif
|
|
endif
|
|
|
|
# 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')
|
|
shmlib = []
|
|
elif cc.has_function('shm_open', args : '-lrt')
|
|
shmlib = cc.find_library('rt')
|
|
else
|
|
shmlib = []
|
|
endif
|
|
endif
|
|
|
|
gdk_backends = []
|
|
gdk_backends_gen_headers = [] # non-public generated headers
|
|
foreach backend : ['broadway', '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
|
|
|
|
if gdk_backends.length() == 0
|
|
error('No backends enabled')
|
|
endif
|
|
|
|
# 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 + [libgtk_css_dep],
|
|
link_with: [libgtk_css, ],
|
|
include_directories: [confinc, gdkx11_inc, wlinc],
|
|
c_args: [
|
|
'-DGTK_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, gdkx11_inc, wlinc],
|
|
dependencies: gdk_deps + [libgtk_css_dep])
|