file(GLOB_RECURSE SRC "*.cpp" "*.c" "*.hpp" "*.h")

add_library(UwURenderEngine ${SRC})
target_include_directories(UwURenderEngine PUBLIC ${PROJECT_SOURCE_DIR}/RenderEngineSDK)
target_link_libraries(UwURenderEngine PUBLIC RenderEngineSDK)

target_compile_features(UwURenderEngine PRIVATE cxx_std_17)

file(GLOB_RECURSE HEADERS
        "${CMAKE_CURRENT_SOURCE_DIR}/*.h"
        "${CMAKE_CURRENT_SOURCE_DIR}/*.hpp"
)

foreach (HEADER ${HEADERS})
    file(RELATIVE_PATH R_PATH
            "${CMAKE_CURRENT_SOURCE_DIR}/"
            "${HEADER}"
    )
    
    get_filename_component(HEADER_DIR "${R_PATH}" DIRECTORY)
    
    add_custom_command(
            TARGET UwURenderEngine
            POST_BUILD
            COMMAND ${CMAKE_COMMAND} -E make_directory
            "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/include/${HEADER_DIR}"
            COMMAND ${CMAKE_COMMAND} -E copy_if_different
            "${HEADER}"
            "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/include/${R_PATH}"
            
            COMMENT "Copy UwURenderEngine headers"
    )
endforeach ()