diff options
Diffstat (limited to 'src/render/meson.build')
| -rw-r--r-- | src/render/meson.build | 56 |
1 files changed, 30 insertions, 26 deletions
diff --git a/src/render/meson.build b/src/render/meson.build index d342312..ee0017a 100644 --- a/src/render/meson.build +++ b/src/render/meson.build @@ -23,15 +23,11 @@ elif get_option('renderer') == 'libplacebo' 'xxhash=auto' ] - if get_option('renderer-api') == 'vulkan' or get_option('renderer-api') == 'dx11' + if renderer_api == 'vulkan' or renderer_api == 'dx11' if get_option('renderer-compiler') == 'shaderc' shaderc_found = false if 'shaderc' not in get_option('force_fallback_for') and get_option('wrap_mode') != 'forcefallback' - if is_windows - shaderc = dependency('shaderc_combined', required: false, allow_fallback: false) - else - shaderc = dependency('shaderc', required: false, allow_fallback: false) - endif + shaderc = dependency('shaderc', required: false, allow_fallback: false) shaderc_found = shaderc.found() endif if shaderc_found @@ -39,30 +35,35 @@ elif get_option('renderer') == 'libplacebo' else shaderc_opts = cmake.subproject_options() shaderc_opts.set_override_option('warning_level', '0') # Doesn't work. - reltype = is_minsize ? 'MinSizeRel' : 'Release' - shaderc_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : reltype }) + shaderc_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : cmake_reltype }) + shaderc_opts.add_cmake_defines({ 'BUILD_SHARED_LIBS': false }) shaderc_opts.add_cmake_defines({ 'SHADERC_SKIP_INSTALL': true }) shaderc_opts.add_cmake_defines({ 'SHADERC_SKIP_TESTS': true }) shaderc_opts.add_cmake_defines({ 'SHADERC_SKIP_EXAMPLES': true }) shaderc_opts.add_cmake_defines({ 'SHADERC_SKIP_COPYRIGHT_CHECK': true }) + shaderc_opts.add_cmake_defines({ 'SHADERC_ENABLE_HLSL': false }) + # glslang & spirv-tools + shaderc_opts.add_cmake_defines({ 'ENABLE_RTTI': false }) # glslang shaderc_opts.add_cmake_defines({ 'ENABLE_GLSLANG_BINARIES': false }) + shaderc_opts.add_cmake_defines({ 'ENABLE_GLSLANG_JS': false }) shaderc_opts.add_cmake_defines({ 'ENABLE_HLSL': false }) - shaderc_opts.add_cmake_defines({ 'ENABLE_SPVREMAPPER': false }) shaderc_opts.add_cmake_defines({ 'ENABLE_EXCEPTIONS': false }) spirv_optimizer = true shaderc_opts.add_cmake_defines({ 'ENABLE_OPT': spirv_optimizer }) # spirv-tools + shaderc_opts.add_cmake_defines({ 'SPIRV_ALLOW_TIMERS': false }) + shaderc_opts.add_cmake_defines({ 'SPIRV_COLOR_TERMINAL': false }) shaderc_opts.add_cmake_defines({ 'ENABLE_EXCEPTIONS_ON_MSVC': false }) shaderc_proj = cmake.subproject('shaderc', options: shaderc_opts) shaderc = shaderc_proj.dependency('shaderc') meson.override_dependency('shaderc', declare_dependency(dependencies: shaderc, version: '2026.2')) render_deps += [ shaderc_proj.dependency('shaderc_util'), - shaderc_proj.dependency('glslang'), shaderc_proj.dependency('MachineIndependent'), shaderc_proj.dependency('OSDependent'), shaderc_proj.dependency('GenericCodeGen'), + shaderc_proj.dependency('glslang'), shaderc_proj.dependency('SPIRV'), shaderc_proj.dependency('SPIRV-Tools-static') ] @@ -72,17 +73,21 @@ elif get_option('renderer') == 'libplacebo' endif libplacebo_opts += ['shaderc=enabled', 'glslang=disabled'] else - glslang = dependency('glslang', required: false, allow_fallback: false) - if glslang.found() + glslang_found = false + if 'glslang' not in get_option('force_fallback_for') and get_option('wrap_mode') != 'forcefallback' + glslang = dependency('glslang', required: false, allow_fallback: false) + glslang_found = glslang.found() + endif + if glslang_found render_deps += [glslang] else # Currently does not build. - prefer_static = get_option('prefer_static') + spirv_headers_proj = cmake.subproject('SPIRV-Headers') + spirv_headers = spirv_headers_proj.dependency('SPIRV-Headers') spirv_optimizer = false if spirv_optimizer - spirv_headers_proj = cmake.subproject('SPIRV-Headers') - spirv_headers = spirv_headers_proj.dependency('SPIRV-Headers') spirv_tools_opts = cmake.subproject_options() + spirv_tools_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : cmake_reltype }) spirv_tools_opts.add_cmake_defines({ 'SPIRV-Headers_SOURCE_DIR': meson.source_root() + '/subprojects/SPIRV-Headers-b824a46' }) spirv_tools_opts.add_cmake_defines({ 'ENABLE_EXCEPTIONS_ON_MSVC': false }) spirv_tools_proj = cmake.subproject('SPIRV-Tools', options: spirv_tools_opts) @@ -91,8 +96,7 @@ elif get_option('renderer') == 'libplacebo' endif glslang_opts = cmake.subproject_options() glslang_opts.set_override_option('warning_level', '0') - reltype = is_minsize ? 'MinSizeRel' : 'Release' - glslang_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : reltype }) + glslang_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : cmake_reltype }) glslang_opts.add_cmake_defines({ 'ENABLE_GLSLANG_BINARIES': false }) glslang_opts.add_cmake_defines({ 'ENABLE_HLSL': false }) glslang_opts.add_cmake_defines({ 'ENABLE_SPVREMAPPER': false }) @@ -100,24 +104,25 @@ elif get_option('renderer') == 'libplacebo' glslang_opts.add_cmake_defines({ 'ENABLE_OPT': spirv_optimizer }) glslang_opts.add_cmake_defines({ 'ALLOW_EXTERNAL_SPIRV_TOOLS': spirv_optimizer }) glslang_proj = cmake.subproject('glslang', options: glslang_opts) - spirv = glslang_proj.dependency('SPIRV') glslang = glslang_proj.dependency('glslang') glslang_default_resource_limits = glslang_proj.dependency('glslang-default-resource-limits') - meson.override_dependency('SPIRV', spirv, static: prefer_static) + spirv = glslang_proj.dependency('SPIRV') + prefer_static = get_option('prefer_static') meson.override_dependency('glslang', glslang, static: prefer_static) meson.override_dependency('glslang-default-resource-limits', glslang_default_resource_limits, static: prefer_static) + meson.override_dependency('SPIRV', spirv, static: prefer_static) render_deps += [ glslang_proj.dependency('MachineIndependent'), glslang_proj.dependency('OSDependent'), glslang_proj.dependency('GenericCodeGen'), - spirv, glslang, - glslang_default_resource_limits + glslang_default_resource_limits, + spirv, + spirv_headers ] if spirv_optimizer render_deps += [ spirv_tools, - spirv_headers, spirv_tools_opt ] endif @@ -128,12 +133,11 @@ elif get_option('renderer') == 'libplacebo' libplacebo_opts += ['glslang=disabled', 'shaderc=disabled'] endif - if get_option('renderer-api') == 'vulkan' + if renderer_api == 'vulkan' libplacebo_opts += ['vulkan=enabled', 'd3d11=disabled', 'opengl=disabled'] - elif get_option('renderer-api') == 'dx11' + elif renderer_api == 'dx11' spirv_cross_opts = cmake.subproject_options() - reltype = is_minsize ? 'MinSizeRel' : 'Release' - spirv_cross_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : reltype }) + spirv_cross_opts.add_cmake_defines({ 'CMAKE_BUILD_TYPE': is_debug ? 'Debug' : cmake_reltype }) spirv_cross_opts.add_cmake_defines({ 'SPIRV_CROSS_CLI': false }) spirv_cross_opts.add_cmake_defines({ 'SPIRV_CROSS_ENABLE_TESTS': false }) spirv_cross_opts.add_cmake_defines({ 'SPIRV_CROSS_ENABLE_MSL': false }) |