Add glslang;

This commit is contained in:
bjorn 2022-05-08 14:06:18 -07:00
parent 88296a7c16
commit 9ae285afa7
4 changed files with 53 additions and 1 deletions

3
.gitmodules vendored
View File

@ -19,3 +19,6 @@
[submodule "deps/oculus-openxr"]
path = deps/oculus-openxr
url = https://github.com/lovr-org/ovr_openxr_mobile_sdk
[submodule "deps/glslang"]
path = deps/glslang
url = https://github.com/KhronosGroup/glslang

View File

@ -16,6 +16,7 @@ option(LOVR_ENABLE_THREAD "Enable the thread module" ON)
option(LOVR_ENABLE_TIMER "Enable the timer module" ON)
option(LOVR_USE_LUAJIT "Use LuaJIT instead of Lua" ON)
option(LOVR_USE_GLSLANG "Use glslang to compile GLSL shaders" ON)
option(LOVR_USE_VULKAN "Use the Vulkan renderer" ON)
option(LOVR_USE_WEBGPU "Use the WebGPU renderer" OFF)
option(LOVR_USE_OPENXR "Enable the OpenXR backend for the headset module" ON)
@ -170,6 +171,20 @@ if(LOVR_ENABLE_PHYSICS)
endif()
endif()
# glslang
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_INSTALL OFF CACHE BOOL "")
set(ENABLE_OPT OFF CACHE BOOL "")
set(ENABLE_CTEST OFF CACHE BOOL "")
set(BUILD_EXTERNAL OFF CACHE BOOL "")
add_subdirectory(deps/glslang glslang)
set_target_properties(SPIRV PROPERTIES EXCLUDE_FROM_ALL 1)
set(LOVR_GLSLANG glslang)
endif()
# Vulkan
if(LOVR_USE_VULKAN)
find_package(Vulkan REQUIRED)
@ -322,7 +337,6 @@ if(NOT LOVR_BUILD_EXE)
target_compile_definitions(lovr PUBLIC LOVR_OMIT_MAIN) # specifically for win32 WinMain
endif()
set_target_properties(lovr PROPERTIES C_VISIBILITY_PRESET ${LOVR_SYMBOL_VISIBILITY})
set_target_properties(lovr PROPERTIES C_STANDARD 11)
target_include_directories(lovr PRIVATE src src/modules src/lib/stdatomic etc)
@ -331,6 +345,7 @@ target_link_libraries(lovr
${LOVR_LUA}
${LOVR_MSDF}
${LOVR_ODE}
${LOVR_GLSLANG}
${LOVR_OPENXR}
${LOVR_OCULUS_AUDIO}
${LOVR_PTHREADS}

View File

@ -6,6 +6,7 @@ config = {
sanitize = false,
strict = true,
luajit = false,
glslang = true,
modules = {
audio = true,
data = true,
@ -241,6 +242,38 @@ if target == 'win32' or target == 'macos' or target == 'linux' then
tup.rule('.obj/glfw/*.o', '^ LD %o^ $(cc) $(flags) -o %o %f $(glfw_lflags)', lib('glfw'))
end
if config.modules.graphics and config.glslang then
cflags_graphics += '-Ideps/glslang/glslang/Include'
cflags_graphics += '-Ideps/glslang/StandAlone'
cflags += '-DLOVR_USE_GLSLANG'
lflags += '-lglslang'
glslang_cflags += '-fPIC'
glslang_cflags += '-fno-exceptions'
glslang_cflags += '-fno-rtti'
glslang_cflags += '-Ideps/glslang'
glslang_lflags += '-shared'
glslang_lflags += '-lstdc++'
glslang_src += 'deps/glslang/OGLCompilersDLL/*.cpp'
glslang_src += 'deps/glslang/glslang/CInterface/*.cpp'
glslang_src += 'deps/glslang/glslang/MachineIndependent/*.cpp'
glslang_src += 'deps/glslang/glslang/MachineIndependent/preprocessor/*.cpp'
glslang_src += ('deps/glslang/glslang/OSDependent/%s/ossource.cpp'):format(target == 'win32' and 'Windows' or 'Unix')
glslang_src += 'deps/glslang/glslang/GenericCodeGen/*.cpp'
glslang_src += 'deps/glslang/SPIRV/GlslangToSpv.cpp'
glslang_src += 'deps/glslang/SPIRV/Logger.cpp'
glslang_src += 'deps/glslang/SPIRV/SpvTools.cpp'
glslang_src += 'deps/glslang/SPIRV/SpvBuilder.cpp'
glslang_src += 'deps/glslang/SPIRV/SpvPostProcess.cpp'
glslang_src += 'deps/glslang/SPIRV/InReadableOrder.cpp'
glslang_src += 'deps/glslang/SPIRV/CInterface/spirv_c_interface.cpp'
glslang_src += 'deps/glslang/StandAlone/resource_limits_c.cpp'
glslang_src += 'deps/glslang/StandAlone/ResourceLimits.cpp'
tup.foreach_rule(glslang_src, '^ CC glslang/%b^ $(cc) $(flags) $(glslang_cflags) -c %f -o %o', '.obj/glslang/%B.o')
tup.rule('.obj/glslang/*.o', '^ LD %o^ $(cxx) $(flags) -o %o %f $(glslang_lflags)', lib('glslang'))
end
if config.modules.data then
cflags_rasterizer += '-Ideps/msdfgen'
lflags += '-lmsdfgen'

1
deps/glslang vendored Submodule

@ -0,0 +1 @@
Subproject commit 14f6e2730457bac14a64cb3d962d0a3da8c15ae4