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)
set(ENABLE_HLSL 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_OPT OFF CACHE BOOL "")
set(ENABLE_CTEST OFF CACHE BOOL "")
@ -184,9 +184,14 @@ if(LOVR_USE_GLSLANG)
set(BUILD_SHARED_LIBS OFF)
include_directories(deps/glslang/glslang/Include deps/glslang/StandAlone)
add_subdirectory(deps/glslang glslang)
target_sources(glslang PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/deps/glslang/StandAlone/ResourceLimits.cpp")
target_sources(glslang PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/deps/glslang/StandAlone/resource_limits_c.cpp")
set(LOVR_GLSLANG glslang SPIRV)
add_library(lovr_glslang
"${CMAKE_CURRENT_SOURCE_DIR}/deps/glslang/StandAlone/ResourceLimits.cpp"
"${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()
# Vulkan
@ -474,10 +479,15 @@ if(LOVR_ENABLE_GRAPHICS)
add_dependencies(lovr 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}")
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()
file(GLOB shader_files "etc/shaders/*.${ARGV0}")
foreach(shader_file ${shader_files})