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:
@@ -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()
|
||||||
|
|
||||||
|
|||||||
5
shaders/precompiled/ball_vert_spv.h
Normal file
5
shaders/precompiled/ball_vert_spv.h
Normal file
File diff suppressed because one or more lines are too long
5
shaders/precompiled/postfx_frag_spv.h
Normal file
5
shaders/precompiled/postfx_frag_spv.h
Normal file
File diff suppressed because one or more lines are too long
5
shaders/precompiled/postfx_vert_spv.h
Normal file
5
shaders/precompiled/postfx_vert_spv.h
Normal file
File diff suppressed because one or more lines are too long
5
shaders/precompiled/sprite_frag_spv.h
Normal file
5
shaders/precompiled/sprite_frag_spv.h
Normal file
File diff suppressed because one or more lines are too long
5
shaders/precompiled/sprite_vert_spv.h
Normal file
5
shaders/precompiled/sprite_vert_spv.h
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user