build: hacer Vulkan SDK opcional usando SPIR-V pre-compilados

Si glslc no está disponible, CMake usa los headers en shaders/precompiled/
en lugar de fallar. Los SPIR-V son portátiles entre Windows y Linux, por
lo que el build funciona sin instalar Vulkan SDK.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-21 01:38:09 +01:00
parent e13905567d
commit 2846987450
6 changed files with 64 additions and 36 deletions

View File

@@ -28,9 +28,9 @@ endif()
if(NOT APPLE) if(NOT APPLE)
find_program(GLSLC glslc HINTS "$ENV{VULKAN_SDK}/bin" "$ENV{VULKAN_SDK}/Bin") find_program(GLSLC glslc HINTS "$ENV{VULKAN_SDK}/bin" "$ENV{VULKAN_SDK}/Bin")
if(NOT GLSLC) if(NOT GLSLC)
message(FATAL_ERROR "glslc not found. Install the Vulkan SDK and ensure glslc is on PATH.") message(STATUS "glslc not found — using precompiled SPIR-V headers from shaders/precompiled/")
endif() set(SHADER_GEN_DIR "${CMAKE_SOURCE_DIR}/shaders/precompiled")
else()
set(SHADER_SRC_DIR "${CMAKE_SOURCE_DIR}/shaders") set(SHADER_SRC_DIR "${CMAKE_SOURCE_DIR}/shaders")
set(SHADER_GEN_DIR "${CMAKE_BINARY_DIR}/generated_shaders") set(SHADER_GEN_DIR "${CMAKE_BINARY_DIR}/generated_shaders")
file(MAKE_DIRECTORY "${SHADER_GEN_DIR}") file(MAKE_DIRECTORY "${SHADER_GEN_DIR}")
@@ -65,6 +65,7 @@ if(NOT APPLE)
add_custom_target(shaders ALL DEPENDS ${SPIRV_HEADERS}) add_custom_target(shaders ALL DEPENDS ${SPIRV_HEADERS})
endif() endif()
endif()
# Archivos fuente (excluir main_old.cpp) # Archivos fuente (excluir main_old.cpp)
file(GLOB SOURCE_FILES source/*.cpp source/external/*.cpp source/boids_mgr/*.cpp source/gpu/*.cpp source/input/*.cpp source/scene/*.cpp source/shapes/*.cpp source/shapes_mgr/*.cpp source/state/*.cpp source/themes/*.cpp source/text/*.cpp source/ui/*.cpp) file(GLOB SOURCE_FILES source/*.cpp source/external/*.cpp source/boids_mgr/*.cpp source/gpu/*.cpp source/input/*.cpp source/scene/*.cpp source/shapes/*.cpp source/shapes_mgr/*.cpp source/state/*.cpp source/themes/*.cpp source/text/*.cpp source/ui/*.cpp)
@@ -103,7 +104,9 @@ set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAK
target_link_libraries(${PROJECT_NAME} ${LINK_LIBS}) target_link_libraries(${PROJECT_NAME} ${LINK_LIBS})
if(NOT APPLE) if(NOT APPLE)
if(GLSLC)
add_dependencies(${PROJECT_NAME} shaders) add_dependencies(${PROJECT_NAME} shaders)
endif()
target_include_directories(${PROJECT_NAME} PRIVATE "${SHADER_GEN_DIR}") target_include_directories(${PROJECT_NAME} PRIVATE "${SHADER_GEN_DIR}")
endif() endif()

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long