set(HAZE_WASM_DEPS "${CMAKE_CURRENT_SOURCE_DIR}/../../local/deps" CACHE PATH
    "Pinned shader dependencies fetched by scripts/bootstrap-wasm.py")
if(NOT EXISTS "${HAZE_WASM_DEPS}/glslang/External/spirv-tools/CMakeLists.txt" OR
   NOT EXISTS "${HAZE_WASM_DEPS}/spirv-cross/CMakeLists.txt")
    message(FATAL_ERROR "Run python scripts/bootstrap-wasm.py to fetch the shader compiler sources")
endif()

# These libraries run in the same Wasm64 shared memory as the game.
add_compile_options(-pthread -sMEMORY64=1 -msimd128 -fwasm-exceptions)
set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE)
set(BUILD_TESTING OFF CACHE BOOL "" FORCE)
set(GLSLANG_TESTS OFF CACHE BOOL "" FORCE)
set(ENABLE_GLSLANG_BINARIES OFF CACHE BOOL "" FORCE)
set(ENABLE_HLSL ON CACHE BOOL "" FORCE)
set(ENABLE_OPT ON CACHE BOOL "" FORCE)
set(ENABLE_PCH OFF CACHE BOOL "" FORCE)
set(ENABLE_EXCEPTIONS ON CACHE BOOL "" FORCE)
set(SPIRV_SKIP_TESTS ON CACHE BOOL "" FORCE)
set(SPIRV_SKIP_EXECUTABLES ON CACHE BOOL "" FORCE)
set(SPIRV_TOOLS_BUILD_STATIC ON CACHE BOOL "" FORCE)
set(SPIRV_CROSS_CLI OFF CACHE BOOL "" FORCE)
set(SPIRV_CROSS_ENABLE_TESTS OFF CACHE BOOL "" FORCE)
set(SPIRV_CROSS_ENABLE_MSL OFF CACHE BOOL "" FORCE)
set(SPIRV_CROSS_ENABLE_HLSL OFF CACHE BOOL "" FORCE)
set(SPIRV_CROSS_ENABLE_CPP OFF CACHE BOOL "" FORCE)
set(SPIRV_CROSS_ENABLE_REFLECT OFF CACHE BOOL "" FORCE)
set(SPIRV_CROSS_ENABLE_C_API OFF CACHE BOOL "" FORCE)
add_subdirectory("${HAZE_WASM_DEPS}/glslang" glslang EXCLUDE_FROM_ALL)
add_subdirectory("${HAZE_WASM_DEPS}/spirv-cross" spirv-cross EXCLUDE_FROM_ALL)
add_library(HazeWasmShaders STATIC shader_glsl.cpp)
target_include_directories(HazeWasmShaders PRIVATE "${HAZE_WASM_DEPS}/glslang")
target_link_libraries(HazeWasmShaders PUBLIC glslang SPIRV glslang-default-resource-limits spirv-cross-glsl)
target_link_options(HazeWasmShaders PUBLIC -fwasm-exceptions)
