# This file will only be executed if VMA_BUILD_EXAMPLE_APP_SHADERS is set to ON

find_program(GLSL_VALIDATOR glslangValidator REQUIRED)

if(NOT GLSL_VALIDATOR)
    message(FATAL_ERROR "glslangValidator not found!")
endif()

set(SHADERS
    Shader.vert
    Shader.frag
    SparseBindingTest.comp
)

# Compile each shader using glslangValidator
foreach(SHADER ${SHADERS})
    get_filename_component(FILE_NAME ${SHADER} NAME)
    
    # Put the .spv files into the bin folder
    set(SPIRV ${PROJECT_SOURCE_DIR}/bin/${FILE_NAME}.spv)

    add_custom_command(
        OUTPUT ${SPIRV}
        # Use the same file name and append .spv to the compiled shader
        COMMAND ${GLSL_VALIDATOR} -V ${CMAKE_CURRENT_SOURCE_DIR}/${SHADER} -o ${SPIRV}
        DEPENDS ${SHADER}
    )

    list(APPEND SPIRV_FILES ${SPIRV})
endforeach()

add_custom_target(VmaShaders ALL DEPENDS ${SPIRV_FILES})
