From 20250a0d6d3602eb190d7e750351d948f33ab56d Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Sat, 23 May 2026 12:55:48 +0200 Subject: [PATCH] fix(cmake): glslc opcional si els headers SPV ja estan commiteats al repo --- CMakeLists.txt | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a61b8b..79b6585 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -135,9 +135,8 @@ add_dependencies(${PROJECT_NAME} resource_pack) # --- COMPILACIÓ DE SHADERS GLSL → SPIR-V (headers C++ embedits) --- # Compila els shaders .glsl a SPIR-V i els converteix en headers C++ embedits -# (source/core/rendering/gpu/spv/*.h). Aquests headers es commiteen al repo: -# en macOS no cal glslc (els headers ja existeixen). En Linux/Windows glslc -# és obligatori per regenerar els headers en cada canvi del GLSL. +# (source/core/rendering/gpu/spv/*.h). Aquests headers es commiteen al repo, +# així que glslc només és necessari quan canvien els .glsl o falten headers. # # Per a macOS hi ha a més els headers MSL escrits a mà a source/core/rendering/gpu/msl/. set(SHADERS_DIR "${CMAKE_SOURCE_DIR}/shaders") @@ -156,6 +155,13 @@ set(ALL_SHADER_SOURCES "${SHADERS_DIR}/postfx.frag.glsl" "${SHADERS_DIR}/bloom.frag.glsl" ) +set(ALL_SHADER_HEADERS_PRESENT TRUE) +foreach(_spv_header IN LISTS ALL_SHADER_HEADERS) + if(NOT EXISTS "${_spv_header}") + set(ALL_SHADER_HEADERS_PRESENT FALSE) + break() + endif() +endforeach() find_program(GLSLC_EXE NAMES glslc HINTS ${Vulkan_GLSLC_EXECUTABLE}) if(GLSLC_EXE) add_custom_command( @@ -172,10 +178,10 @@ if(GLSLC_EXE) add_custom_target(shaders DEPENDS ${ALL_SHADER_HEADERS}) add_dependencies(${PROJECT_NAME} shaders) message(STATUS "Shaders: glslc trobat (${GLSLC_EXE}); headers SPV es regeneraran si canvia el GLSL") -elseif(APPLE) - message(STATUS "Shaders: glslc no trobat en macOS — s'usaran els headers SPV ja commiteats") +elseif(ALL_SHADER_HEADERS_PRESENT) + message(STATUS "Shaders: glslc no trobat — s'usaran els headers SPV ja commiteats al repo") else() - message(FATAL_ERROR "glslc no trobat: instal·la 'shaderc' o 'vulkan-sdk' per compilar shaders SPIR-V (obligatori a Linux/Windows)") + message(FATAL_ERROR "glslc no trobat i falten headers SPV: instal·la 'shaderc' o 'vulkan-sdk' per generar-los") endif() # --- STATIC ANALYSIS / FORMAT TARGETS ---