gtk/gsk/meson.build
Tim-Philipp Müller f67a9d58db meson: make sure gsk/gdk generated headers exist for libgtk_dep users
Add back dependencies on libgdk_dep and libsk_dep which are declared
dependencies. We removed this before because these declarations had
link_with: lines that dragged in the static libgdk.a and libgsk.a libs
which are linked into libgtk-4.so anyway and thus shouldn't be used
when linking internal exes/tools against libgtk-4. Remove the static
libs from the declared dependencies and have libgtk link those in
explicitly, so that the declared deps now just provide all the built
dependencies and include dirs and such for declared libgtk_dep users
such as the internal exes/tools, which want all the generated gsk/gdk/gtk
headers to exist before attempting to compile anything against the
gtk+ headers.
2017-05-03 15:10:54 +01:00

171 lines
4.9 KiB
Meson

gsk_private_source_shaders = [
'resources/glsl/blend.fs.glsl',
'resources/glsl/blend.vs.glsl',
'resources/glsl/blit.fs.glsl',
'resources/glsl/blit.vs.glsl',
'resources/glsl/es2_common.fs.glsl',
'resources/glsl/es2_common.vs.glsl',
'resources/glsl/gl3_common.fs.glsl',
'resources/glsl/gl3_common.vs.glsl',
'resources/glsl/gl_common.fs.glsl',
'resources/glsl/gl_common.vs.glsl',
]
gsk_public_sources = files([
'gskrenderer.c',
'gskrendernode.c',
'gskrendernodeimpl.c',
'gskroundedrect.c',
'gsktexture.c',
])
gsk_private_sources = files([
'gskcairoblur.c',
'gskcairorenderer.c',
'gskdebug.c',
'gskgldriver.c',
'gskglprofiler.c',
'gskglrenderer.c',
'gskprivate.c',
'gskprofiler.c',
'gskshaderbuilder.c',
])
gsk_public_headers = files([
'gskenums.h',
'gskrenderer.h',
'gskrendernode.h',
'gskroundedrect.h',
'gsktexture.h',
'gsktypes.h',
])
install_headers(gsk_public_headers, 'gsk.h', subdir : 'gtk-4.0/gsk')
gsk_private_vulkan_shaders = []
gsk_private_vulkan_compiled_shaders = []
if have_vulkan
gsk_private_sources += files([
'gskvulkanblendpipeline.c',
'gskvulkanborderpipeline.c',
'gskvulkanboxshadowpipeline.c',
'gskvulkanbuffer.c',
'gskvulkanclip.c',
'gskvulkancolorpipeline.c',
'gskvulkancommandpool.c',
'gskvulkaneffectpipeline.c',
'gskvulkanlineargradientpipeline.c',
'gskvulkanimage.c',
'gskvulkanmemory.c',
'gskvulkanpipeline.c',
'gskvulkanpushconstants.c',
'gskvulkanrender.c',
'gskvulkanrenderer.c',
'gskvulkanrenderpass.c',
'gskvulkanshader.c',
])
# FIXME: what's up with these?
# gsk_private_vulkan_include_shaders = [
# 'resources/vulkan/clip.frag.glsl',
# 'resources/vulkan/clip.vert.glsl',
# 'resources/vulkan/constants.glsl',
# 'resources/vulkan/rounded-rect.glsl',
# ]
gsk_private_vulkan_fragment_shaders = [
'resources/vulkan/blend.frag',
'resources/vulkan/border.frag',
'resources/vulkan/color.frag',
'resources/vulkan/color-matrix.frag',
'resources/vulkan/inset-shadow.frag',
'resources/vulkan/linear.frag',
'resources/vulkan/outset-shadow.frag',
]
gsk_private_vulkan_vertex_shaders = [
'resources/vulkan/blend.vert',
'resources/vulkan/border.vert',
'resources/vulkan/color.vert',
'resources/vulkan/color-matrix.vert',
'resources/vulkan/inset-shadow.vert',
'resources/vulkan/linear.vert',
'resources/vulkan/outset-shadow.vert',
]
gsk_private_vulkan_shaders += gsk_private_vulkan_fragment_shaders
gsk_private_vulkan_shaders += gsk_private_vulkan_vertex_shaders
foreach shader : gsk_private_vulkan_shaders
basefn = shader.split('.').get(0)
suffix = shader.split('.').get(1)
# FIXME: the compiled shaders seem to exist in the srcdir already, do we
# want to or need to add a target to create them with glslc? Do we need to
# check for glslc at all then?
#
# stage_arg = suffix == 'frag' ? '-fshader-stage=fragment' : '-fshader-stage=vertex'
# compiled_shader = custom_target('xyz', input : shader,
# output : '@0@.@1@.spv'.format(basefn, suffix),
# command: [glslc, stage_arg, '-DCLIP_NONE', '-o', '@OUTPUT@'])
gsk_private_vulkan_compiled_shaders += '@0@.@1@.spv'.format(basefn, suffix)
gsk_private_vulkan_compiled_shaders += '@0@-clip.@1@.spv'.format(basefn, suffix)
gsk_private_vulkan_compiled_shaders += '@0@-clip-rounded.@1@.spv'.format(basefn, suffix)
endforeach
endif # have_vulkan
gsk_resources_xml = configure_file(output : 'gsk.resources.xml',
input : 'gen-gsk-resources-xml.py',
command : [find_program('gen-gsk-resources-xml.py'),
'@OUTPUT@',
gsk_private_source_shaders,
gsk_private_vulkan_compiled_shaders,
gsk_private_vulkan_shaders])
# FIXME: do we need this variable?
gsk_sources = gsk_public_sources + gsk_private_sources
gsk_enums = gnome.mkenums('gskenumtypes',
sources: gsk_public_headers,
c_template : 'gskenumtypes.c.template',
h_template : 'gskenumtypes.h.template',
install_dir : 'include/gtk-4.0/gsk',
install_header : true)
gskenum_h = gsk_enums[1]
gskresources = gnome.compile_resources('gskresources',
gsk_resources_xml,
source_dir: '.',
c_name: '_gsk',
extra_args: '--manual-register')
gsk_deps = [
graphene_dep,
pango_dep,
cairo_dep,
pixbuf_dep,
libgdk_dep,
]
libgsk = static_library('gsk',
sources: [gsk_sources, gsk_enums, gskresources],
dependencies: gsk_deps,
include_directories: [confinc],
c_args: ['-DGSK_COMPILATION', '-DG_LOG_DOMAIN="Gsk"'],
link_with: libgdk,
link_args: ['-Bsymbolic'])
# 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.
libgsk_dep = declare_dependency(
depends: gsk_sources,
include_directories: [confinc],
sources: [gskenum_h, gskresources],
dependencies: libgdk_dep)