CMake: Don't recompile shaders on every build;

Recompile them only when needed.
This commit is contained in:
bjorn 2022-11-26 14:20:09 -08:00
parent 4422df2a47
commit b4b2b56c90
1 changed files with 10 additions and 10 deletions

View File

@ -476,9 +476,6 @@ if(LOVR_ENABLE_GRAPHICS)
target_sources(lovr PRIVATE src/core/gpu_webgpu.c) target_sources(lovr PRIVATE src/core/gpu_webgpu.c)
endif() endif()
add_custom_target(compile_shaders ALL)
add_dependencies(lovr compile_shaders)
function(compile_shaders) function(compile_shaders)
if(LOVR_USE_GLSLANG AND ENABLE_GLSLANG_BINARIES AND NOT ANDROID) if(LOVR_USE_GLSLANG AND ENABLE_GLSLANG_BINARIES AND NOT ANDROID)
set(GLSLANG_VALIDATOR $<TARGET_FILE:glslangValidator>) set(GLSLANG_VALIDATOR $<TARGET_FILE:glslangValidator>)
@ -494,15 +491,18 @@ if(LOVR_ENABLE_GRAPHICS)
foreach(shader_file ${shader_files}) foreach(shader_file ${shader_files})
string(REGEX MATCH "([^\/]+)\.${ARGV0}" shader ${shader_file}) string(REGEX MATCH "([^\/]+)\.${ARGV0}" shader ${shader_file})
string(REPLACE ".${ARGV0}" "" shader ${shader}) string(REPLACE ".${ARGV0}" "" shader ${shader})
add_custom_command(TARGET compile_shaders POST_BUILD add_custom_command(
OUTPUT ${shader_file}.h
DEPENDS ${shader_file}
COMMAND COMMAND
${GLSLANG_VALIDATOR} ${GLSLANG_VALIDATOR}
--quiet --quiet
--target-env vulkan1.1 --target-env vulkan1.1
--vn lovr_shader_${shader}_${ARGV0} --vn lovr_shader_${shader}_${ARGV0}
-o ${shader_file}.h -o ${shader_file}.h
${shader_file} ${shader_file}
) )
target_sources(lovr PRIVATE ${shader_file}.h)
endforeach() endforeach()
endfunction() endfunction()