gamescope/meson.build

155 lines
4.3 KiB
Meson
Raw Normal View History

project(
'gamescope',
'c',
2021-07-20 16:43:09 +00:00
'cpp',
meson_version: '>=0.58.0',
2021-09-10 08:50:41 +00:00
default_options: [
'cpp_std=c++14',
'warning_level=2',
'force_fallback_for=wlroots,libliftoff',
],
)
add_project_arguments([
2021-07-20 16:39:23 +00:00
'-DWLR_USE_UNSTABLE',
2021-07-20 16:43:09 +00:00
], language: 'cpp')
cppc = meson.get_compiler('cpp')
add_project_arguments(cppc.get_supported_arguments([
'-Wno-unused-parameter',
'-Wno-missing-field-initializers',
'-Wno-c99-designator',
2022-08-23 23:18:58 +00:00
'-Wno-invalid-offsetof',
'-Wno-unused-const-variable',
]), language: 'cpp')
dep_x11 = dependency('x11')
dep_xdamage = dependency('xdamage')
dep_xcomposite = dependency('xcomposite')
dep_xrender = dependency('xrender')
dep_xext = dependency('xext')
dep_xfixes = dependency('xfixes')
dep_xxf86vm = dependency('xxf86vm')
dep_xtst = dependency('xtst')
dep_xres = dependency('xres')
drm_dep = dependency('libdrm', version: '>= 2.4.112')
vulkan_dep = dependency('vulkan')
wayland_server = dependency('wayland-server', version: '>=1.21')
wayland_protos = dependency('wayland-protocols', version: '>=1.17')
2021-07-20 16:39:23 +00:00
xkbcommon = dependency('xkbcommon')
thread_dep = dependency('threads')
2021-07-20 16:43:09 +00:00
cap_dep = dependency('libcap')
sdl_dep = dependency('SDL2')
2021-07-27 16:01:04 +00:00
pipewire_dep = dependency('libpipewire-0.3', required: get_option('pipewire'))
librt_dep = cppc.find_library('rt', required : get_option('pipewire'))
hwdata_dep = dependency('hwdata')
stb_dep = dependency('stb')
2022-12-02 17:25:51 +00:00
vkroots_dep = dependency('vkroots')
wlroots_dep = dependency(
'wlroots',
version: ['>= 0.16.0', '< 0.17.0'],
fallback: ['wlroots', 'wlroots'],
default_options: ['default_library=static', 'examples=false', 'xwayland=enabled', 'backends=libinput', 'renderers=[]', 'allocators=[]'],
)
build: abort if wlroots is too old or lacks xwayland src/wlserver.cpp:28:10: fatal error: 'wlr/xwayland.h' file not found #include <wlr/xwayland.h> ^~~~~~~~~~~~~~~~ src/drm.cpp:666:9: error: use of undeclared identifier 'wlr_buffer_lock'; did you mean 'wlr_buffer_ref'? buf = wlr_buffer_lock( buf ); ^~~~~~~~~~~~~~~ wlr_buffer_ref /usr/include/wlr/types/wlr_buffer.h:55:20: note: 'wlr_buffer_ref' declared here struct wlr_buffer *wlr_buffer_ref(struct wlr_buffer *buffer); ^ src/drm.cpp:691:3: error: use of undeclared identifier 'wlr_buffer_unlock'; did you mean 'wlr_buffer_unref'? wlr_buffer_unlock( fb->buf ); ^~~~~~~~~~~~~~~~~ wlr_buffer_unref /usr/include/wlr/types/wlr_buffer.h:60:6: note: 'wlr_buffer_unref' declared here void wlr_buffer_unref(struct wlr_buffer *buffer); ^ src/steamcompmgr.cpp:593:2: error: use of undeclared identifier 'wlr_buffer_unlock'; did you mean 'wlr_buffer_unref'? wlr_buffer_unlock( commit.buf ); ^~~~~~~~~~~~~~~~~ wlr_buffer_unref /usr/include/wlr/types/wlr_buffer.h:60:6: note: 'wlr_buffer_unref' declared here void wlr_buffer_unref(struct wlr_buffer *buffer); ^ src/steamcompmgr.cpp:2491:4: error: use of undeclared identifier 'wlr_buffer_unlock'; did you mean 'wlr_buffer_unref'? wlr_buffer_unlock( buf ); ^~~~~~~~~~~~~~~~~ wlr_buffer_unref /usr/include/wlr/types/wlr_buffer.h:60:6: note: 'wlr_buffer_unref' declared here void wlr_buffer_unref(struct wlr_buffer *buffer); ^ src/steamcompmgr.cpp:2507:46: error: member access into incomplete type 'struct wlr_client_buffer' result = wlr_texture_to_dmabuf( client_buf->texture, &dmabuf ); ^ src/steamcompmgr.cpp:2506:11: note: forward declaration of 'wlr_client_buffer' struct wlr_client_buffer *client_buf = (struct wlr_client_buffer *) buf; ^
2020-10-21 00:01:38 +00:00
required_wlroots_features = ['xwayland', 'libinput_backend']
foreach feat : required_wlroots_features
if wlroots_dep.get_variable('have_' + feat) != 'true'
error('Cannot use wlroots built without ' + feat + ' support')
endif
endforeach
2021-10-19 13:20:45 +00:00
# Vulkan headers are installed separately from the loader (which ships the
# pkg-config file)
if not cppc.check_header('vulkan/vulkan.h', dependencies: vulkan_dep)
error('Missing vulkan-headers')
endif
2021-12-13 10:53:59 +00:00
glsl_compiler = find_program('glslangValidator', native: true)
# Use --depfile to rebuild shaders when included files have changed. Sadly debian based
# distros don't have up-to-date glslang so we need to check for support first.
if run_command(glsl_compiler, ['--version', '--depfile', 'dummy.dep'], check: false).returncode() == 0
glsl_generator = generator(
glsl_compiler,
output : ['@BASENAME@.h'],
arguments : ['-V', '@INPUT@', '--vn', '@BASENAME@', '-o', '@OUTPUT@', '--depfile', '@DEPFILE@', '--quiet'],
2022-05-21 10:09:50 +00:00
depfile : '@BASENAME@.h.d',
)
else
glsl_generator = generator(
glsl_compiler,
output : ['@BASENAME@.h'],
arguments : ['-V', '@INPUT@', '--vn', '@BASENAME@', '-o', '@OUTPUT@'],
)
endif
2021-12-13 10:53:59 +00:00
shader_src = [
'src/shaders/cs_composite_blit.comp',
2022-02-16 15:47:07 +00:00
'src/shaders/cs_composite_blur.comp',
'src/shaders/cs_composite_blur_cond.comp',
2021-12-28 15:40:12 +00:00
'src/shaders/cs_composite_rcas.comp',
'src/shaders/cs_easu.comp',
2021-12-29 14:36:47 +00:00
'src/shaders/cs_easu_fp16.comp',
2022-02-16 15:47:07 +00:00
'src/shaders/cs_gaussian_blur_horizontal.comp',
'src/shaders/cs_nis.comp',
'src/shaders/cs_nis_fp16.comp',
'src/shaders/cs_rgb_to_nv12.comp',
2021-12-13 10:53:59 +00:00
]
spirv_shaders = glsl_generator.process(shader_src)
liftoff_dep = dependency(
'libliftoff',
version: ['>= 0.3.0', '< 0.4.0'],
fallback: ['libliftoff', 'liftoff'],
default_options: ['default_library=static'],
)
2021-07-27 16:01:04 +00:00
add_project_arguments(
'-DHAVE_PIPEWIRE=@0@'.format(pipewire_dep.found().to_int()),
'-DHWDATA_PNP_IDS="@0@"'.format(hwdata_dep.get_variable('pkgdatadir') / 'pnp.ids'),
2021-07-27 16:01:04 +00:00
language: 'cpp',
)
src = [
'src/steamcompmgr.cpp',
'src/main.cpp',
'src/wlserver.cpp',
'src/drm.cpp',
2021-10-26 14:33:34 +00:00
'src/modegen.cpp',
2021-07-27 16:01:04 +00:00
'src/sdlwindow.cpp',
'src/vblankmanager.cpp',
'src/rendervulkan.cpp',
'src/log.cpp',
'src/ime.cpp',
'src/mangoapp.cpp',
2021-07-27 16:01:04 +00:00
]
2021-12-13 10:53:59 +00:00
src += spirv_shaders
2021-07-27 16:01:04 +00:00
if pipewire_dep.found()
src += 'src/pipewire.cpp'
endif
subdir('protocol')
executable(
2021-07-20 16:25:36 +00:00
'gamescope',
2021-07-27 16:01:04 +00:00
src,
2021-07-20 16:25:36 +00:00
dependencies: [
dep_x11, dep_xdamage, dep_xcomposite, dep_xrender, dep_xext, dep_xfixes,
dep_xxf86vm, dep_xres, drm_dep, wayland_server,
2021-07-20 16:41:16 +00:00
xkbcommon, thread_dep, sdl_dep, wlroots_dep,
2022-12-02 17:25:51 +00:00
vulkan_dep, liftoff_dep, dep_xtst, cap_dep, pipewire_dep, librt_dep,
stb_dep,
2021-07-20 16:25:36 +00:00
],
install: true,
)