Use the internal glslang submodule for compiling shaders

Fixes #579
This commit is contained in:
Ryan Pavlik 2022-10-06 14:02:12 -05:00 committed by Bjorn
parent ee3cc30851
commit 7d0ac1520a
1 changed files with 16 additions and 6 deletions

View File

@ -176,7 +176,7 @@ endif()
if(LOVR_USE_GLSLANG) if(LOVR_USE_GLSLANG)
set(ENABLE_HLSL OFF CACHE BOOL "") set(ENABLE_HLSL OFF CACHE BOOL "")
set(ENABLE_SPVREMAPPER OFF CACHE BOOL "") set(ENABLE_SPVREMAPPER OFF CACHE BOOL "")
set(ENABLE_GLSLANG_BINARIES OFF CACHE BOOL "") set(ENABLE_GLSLANG_BINARIES ON CACHE BOOL "")
set(ENABLE_GLSLANG_INSTALL OFF CACHE BOOL "") set(ENABLE_GLSLANG_INSTALL OFF CACHE BOOL "")
set(ENABLE_OPT OFF CACHE BOOL "") set(ENABLE_OPT OFF CACHE BOOL "")
set(ENABLE_CTEST OFF CACHE BOOL "") set(ENABLE_CTEST OFF CACHE BOOL "")
@ -184,9 +184,14 @@ if(LOVR_USE_GLSLANG)
set(BUILD_SHARED_LIBS OFF) set(BUILD_SHARED_LIBS OFF)
include_directories(deps/glslang/glslang/Include deps/glslang/StandAlone) include_directories(deps/glslang/glslang/Include deps/glslang/StandAlone)
add_subdirectory(deps/glslang glslang) add_subdirectory(deps/glslang glslang)
target_sources(glslang PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/deps/glslang/StandAlone/ResourceLimits.cpp") add_library(lovr_glslang
target_sources(glslang PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/deps/glslang/StandAlone/resource_limits_c.cpp") "${CMAKE_CURRENT_SOURCE_DIR}/deps/glslang/StandAlone/ResourceLimits.cpp"
set(LOVR_GLSLANG glslang SPIRV) "${CMAKE_CURRENT_SOURCE_DIR}/deps/glslang/StandAlone/resource_limits_c.cpp"
)
target_link_libraries(lovr_glslang PUBLIC glslang)
set(LOVR_GLSLANG lovr_glslang SPIRV)
endif() endif()
# Vulkan # Vulkan
@ -474,10 +479,15 @@ if(LOVR_ENABLE_GRAPHICS)
add_dependencies(lovr compile_shaders) add_dependencies(lovr compile_shaders)
function(compile_shaders) function(compile_shaders)
if(Vulkan_GLSLANG_VALIDATOR_EXECUTABLE) if(LOVR_USE_GLSLANG AND ENABLE_GLSLANG_BINARIES)
set(GLSLANG_VALIDATOR $<TARGET_FILE:glslangValidator>)
elseif(Vulkan_GLSLANG_VALIDATOR_EXECUTABLE)
set(GLSLANG_VALIDATOR "${Vulkan_GLSLANG_VALIDATOR_EXECUTABLE}") set(GLSLANG_VALIDATOR "${Vulkan_GLSLANG_VALIDATOR_EXECUTABLE}")
else() else()
set(GLSLANG_VALIDATOR "glslangValidator") find_program(GLSLANG_VALIDATOR glslangValidator)
if(NOT GLSLANG_VALIDATOR)
message(FATAL_ERROR "Need glslangValidator installed or LOVR_USE_GLSLANG enabled")
endif()
endif() endif()
file(GLOB shader_files "etc/shaders/*.${ARGV0}") file(GLOB shader_files "etc/shaders/*.${ARGV0}")
foreach(shader_file ${shader_files}) foreach(shader_file ${shader_files})