build: Add options for building layer/executable
This commit is contained in:
parent
a50ead0357
commit
6bc6a85d6d
5 changed files with 134 additions and 126 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
vkroots_dep = dependency('vkroots')
|
||||||
|
dep_xcb = dependency('xcb')
|
||||||
|
dep_x11_xcb = dependency('x11-xcb')
|
||||||
|
wayland_client = dependency('wayland-client')
|
||||||
|
|
||||||
gamescope_wsi_layer = shared_library('VkLayer_FROG_gamescope_wsi', 'VkLayer_FROG_gamescope_wsi.cpp', protocols_client_src,
|
gamescope_wsi_layer = shared_library('VkLayer_FROG_gamescope_wsi', 'VkLayer_FROG_gamescope_wsi.cpp', protocols_client_src,
|
||||||
dependencies : [ vkroots_dep, dep_xcb, dep_x11, dep_x11_xcb, wayland_client ],
|
dependencies : [ vkroots_dep, dep_xcb, dep_x11, dep_x11_xcb, wayland_client ],
|
||||||
|
|
134
meson.build
134
meson.build
|
@ -24,103 +24,12 @@ add_project_arguments(cppc.get_supported_arguments([
|
||||||
'-Wno-unused-const-variable',
|
'-Wno-unused-const-variable',
|
||||||
]), language: 'cpp')
|
]), 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')
|
|
||||||
dep_xcb = dependency('xcb')
|
|
||||||
dep_x11_xcb = dependency('x11-xcb')
|
|
||||||
|
|
||||||
drm_dep = dependency('libdrm', version: '>= 2.4.113')
|
|
||||||
vulkan_dep = dependency('vulkan')
|
|
||||||
|
|
||||||
wayland_client = dependency('wayland-client')
|
|
||||||
wayland_server = dependency('wayland-server', version: '>=1.21')
|
|
||||||
wayland_protos = dependency('wayland-protocols', version: '>=1.17')
|
|
||||||
xkbcommon = dependency('xkbcommon')
|
|
||||||
thread_dep = dependency('threads')
|
|
||||||
cap_dep = dependency('libcap')
|
|
||||||
sdl_dep = dependency('SDL2')
|
|
||||||
pipewire_dep = dependency('libpipewire-0.3', required: get_option('pipewire'))
|
pipewire_dep = dependency('libpipewire-0.3', required: get_option('pipewire'))
|
||||||
librt_dep = cppc.find_library('rt', required : get_option('pipewire'))
|
librt_dep = cppc.find_library('rt', required : get_option('pipewire'))
|
||||||
hwdata_dep = dependency('hwdata')
|
hwdata_dep = dependency('hwdata')
|
||||||
|
|
||||||
stb_dep = dependency('stb')
|
dep_x11 = dependency('x11')
|
||||||
vkroots_dep = dependency('vkroots')
|
vulkan_dep = dependency('vulkan')
|
||||||
|
|
||||||
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=[]'],
|
|
||||||
)
|
|
||||||
|
|
||||||
displayinfo_dep = dependency(
|
|
||||||
'display-info',
|
|
||||||
version: ['>= 0.0.0', '< 0.1.0'],
|
|
||||||
fallback: ['libdisplay-info', 'di_dep'],
|
|
||||||
default_options: ['default_library=static'],
|
|
||||||
)
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
|
|
||||||
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'],
|
|
||||||
depfile : '@BASENAME@.h.d',
|
|
||||||
)
|
|
||||||
else
|
|
||||||
glsl_generator = generator(
|
|
||||||
glsl_compiler,
|
|
||||||
output : ['@BASENAME@.h'],
|
|
||||||
arguments : ['-V', '@INPUT@', '--vn', '@BASENAME@', '-o', '@OUTPUT@'],
|
|
||||||
)
|
|
||||||
endif
|
|
||||||
|
|
||||||
shader_src = [
|
|
||||||
'src/shaders/cs_composite_blit.comp',
|
|
||||||
'src/shaders/cs_composite_blur.comp',
|
|
||||||
'src/shaders/cs_composite_blur_cond.comp',
|
|
||||||
'src/shaders/cs_composite_rcas.comp',
|
|
||||||
'src/shaders/cs_easu.comp',
|
|
||||||
'src/shaders/cs_easu_fp16.comp',
|
|
||||||
'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',
|
|
||||||
]
|
|
||||||
|
|
||||||
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'],
|
|
||||||
)
|
|
||||||
|
|
||||||
add_project_arguments(
|
add_project_arguments(
|
||||||
'-DHAVE_PIPEWIRE=@0@'.format(pipewire_dep.found().to_int()),
|
'-DHAVE_PIPEWIRE=@0@'.format(pipewire_dep.found().to_int()),
|
||||||
|
@ -128,39 +37,18 @@ add_project_arguments(
|
||||||
language: 'cpp',
|
language: 'cpp',
|
||||||
)
|
)
|
||||||
|
|
||||||
src = [
|
# Vulkan headers are installed separately from the loader (which ships the
|
||||||
'src/steamcompmgr.cpp',
|
# pkg-config file)
|
||||||
'src/main.cpp',
|
if not cppc.check_header('vulkan/vulkan.h', dependencies: vulkan_dep)
|
||||||
'src/wlserver.cpp',
|
error('Missing vulkan-headers')
|
||||||
'src/drm.cpp',
|
|
||||||
'src/modegen.cpp',
|
|
||||||
'src/sdlwindow.cpp',
|
|
||||||
'src/vblankmanager.cpp',
|
|
||||||
'src/rendervulkan.cpp',
|
|
||||||
'src/log.cpp',
|
|
||||||
'src/ime.cpp',
|
|
||||||
'src/mangoapp.cpp',
|
|
||||||
]
|
|
||||||
|
|
||||||
src += spirv_shaders
|
|
||||||
|
|
||||||
if pipewire_dep.found()
|
|
||||||
src += 'src/pipewire.cpp'
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
subdir('protocol')
|
subdir('protocol')
|
||||||
|
|
||||||
|
if get_option('enable_gamescope_wsi_layer')
|
||||||
subdir('layer')
|
subdir('layer')
|
||||||
|
endif
|
||||||
|
|
||||||
executable(
|
if get_option('enable_gamescope')
|
||||||
'gamescope',
|
subdir('src')
|
||||||
src,
|
endif
|
||||||
dependencies: [
|
|
||||||
dep_x11, dep_xdamage, dep_xcomposite, dep_xrender, dep_xext, dep_xfixes,
|
|
||||||
dep_xxf86vm, dep_xres, drm_dep, wayland_server,
|
|
||||||
xkbcommon, thread_dep, sdl_dep, wlroots_dep,
|
|
||||||
vulkan_dep, liftoff_dep, dep_xtst, cap_dep, pipewire_dep, librt_dep,
|
|
||||||
stb_dep, displayinfo_dep,
|
|
||||||
],
|
|
||||||
install: true,
|
|
||||||
)
|
|
||||||
|
|
|
@ -1 +1,3 @@
|
||||||
option('pipewire', type: 'feature', description: 'Screen capture via PipeWire')
|
option('pipewire', type: 'feature', description: 'Screen capture via PipeWire')
|
||||||
|
option('enable_gamescope', type : 'boolean', value : true, description: 'Build Gamescope executable')
|
||||||
|
option('enable_gamescope_wsi_layer', type : 'boolean', value : true, description: 'Build Gamescope layer')
|
||||||
|
|
|
@ -37,5 +37,3 @@ foreach name : protocols
|
||||||
protocols_server_src += [code, server_header]
|
protocols_server_src += [code, server_header]
|
||||||
protocols_client_src += [code, client_header]
|
protocols_client_src += [code, client_header]
|
||||||
endforeach
|
endforeach
|
||||||
|
|
||||||
src += protocols_server_src
|
|
||||||
|
|
116
src/meson.build
Normal file
116
src/meson.build
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
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.113')
|
||||||
|
|
||||||
|
wayland_server = dependency('wayland-server', version: '>=1.21')
|
||||||
|
wayland_protos = dependency('wayland-protocols', version: '>=1.17')
|
||||||
|
xkbcommon = dependency('xkbcommon')
|
||||||
|
thread_dep = dependency('threads')
|
||||||
|
cap_dep = dependency('libcap')
|
||||||
|
sdl_dep = dependency('SDL2')
|
||||||
|
|
||||||
|
stb_dep = dependency('stb')
|
||||||
|
|
||||||
|
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=[]'],
|
||||||
|
)
|
||||||
|
|
||||||
|
displayinfo_dep = dependency(
|
||||||
|
'display-info',
|
||||||
|
version: ['>= 0.0.0', '< 0.1.0'],
|
||||||
|
fallback: ['libdisplay-info', 'di_dep'],
|
||||||
|
default_options: ['default_library=static'],
|
||||||
|
)
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
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'],
|
||||||
|
depfile : '@BASENAME@.h.d',
|
||||||
|
)
|
||||||
|
else
|
||||||
|
glsl_generator = generator(
|
||||||
|
glsl_compiler,
|
||||||
|
output : ['@BASENAME@.h'],
|
||||||
|
arguments : ['-V', '@INPUT@', '--vn', '@BASENAME@', '-o', '@OUTPUT@'],
|
||||||
|
)
|
||||||
|
endif
|
||||||
|
|
||||||
|
shader_src = [
|
||||||
|
'shaders/cs_composite_blit.comp',
|
||||||
|
'shaders/cs_composite_blur.comp',
|
||||||
|
'shaders/cs_composite_blur_cond.comp',
|
||||||
|
'shaders/cs_composite_rcas.comp',
|
||||||
|
'shaders/cs_easu.comp',
|
||||||
|
'shaders/cs_easu_fp16.comp',
|
||||||
|
'shaders/cs_gaussian_blur_horizontal.comp',
|
||||||
|
'shaders/cs_nis.comp',
|
||||||
|
'shaders/cs_nis_fp16.comp',
|
||||||
|
'shaders/cs_rgb_to_nv12.comp',
|
||||||
|
]
|
||||||
|
|
||||||
|
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'],
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
src = [
|
||||||
|
'steamcompmgr.cpp',
|
||||||
|
'main.cpp',
|
||||||
|
'wlserver.cpp',
|
||||||
|
'drm.cpp',
|
||||||
|
'modegen.cpp',
|
||||||
|
'sdlwindow.cpp',
|
||||||
|
'vblankmanager.cpp',
|
||||||
|
'rendervulkan.cpp',
|
||||||
|
'log.cpp',
|
||||||
|
'ime.cpp',
|
||||||
|
'mangoapp.cpp',
|
||||||
|
]
|
||||||
|
|
||||||
|
src += spirv_shaders
|
||||||
|
src += protocols_server_src
|
||||||
|
|
||||||
|
if pipewire_dep.found()
|
||||||
|
src += 'pipewire.cpp'
|
||||||
|
endif
|
||||||
|
|
||||||
|
executable(
|
||||||
|
'gamescope',
|
||||||
|
src,
|
||||||
|
dependencies: [
|
||||||
|
dep_x11, dep_xdamage, dep_xcomposite, dep_xrender, dep_xext, dep_xfixes,
|
||||||
|
dep_xxf86vm, dep_xres, drm_dep, wayland_server,
|
||||||
|
xkbcommon, thread_dep, sdl_dep, wlroots_dep,
|
||||||
|
vulkan_dep, liftoff_dep, dep_xtst, cap_dep, pipewire_dep, librt_dep,
|
||||||
|
stb_dep, displayinfo_dep,
|
||||||
|
],
|
||||||
|
install: true,
|
||||||
|
)
|
Loading…
Reference in a new issue