cmake_minimum_required(VERSION 3.20)
set(CMAKE_CXX_FLAGS "-std=c++17 -Wno-error")
file(GLOB_RECURSE ENGINE_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
add_custom_command(OUTPUT "${CMAKE_BINARY_DIR}/force_rebuild"
        COMMAND rm -f "${CMAKE_SOURCE_DIR}/link/libenginend.so"
        COMMAND rm -rf "${CMAKE_SOURCE_DIR}/include/enginend"
)
add_library(enginend SHARED ${ENGINE_SOURCES} "${CMAKE_BINARY_DIR}/force_rebuild"
        ../include/json.h)
target_link_directories(
        enginend PUBLIC
        "${CMAKE_SOURCE_DIR}/link")
set(ENGINE_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
set(ENGINE_EXPORT_DIR "${CMAKE_SOURCE_DIR}/include/enginend")
set_target_properties(enginend PROPERTIES
        CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/link"
        ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/link"
        LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/link"
        RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/link"
)

file(GLOB_RECURSE HEADER_FILES "${ENGINE_SRC_DIR}/*.h" "${ENGINE_SRC_DIR}/*.hpp")
foreach(HEADER ${HEADER_FILES})
    file(RELATIVE_PATH REL_PATH "${ENGINE_SRC_DIR}" "${HEADER}")

    set(DEST "${ENGINE_EXPORT_DIR}/${REL_PATH}")

    get_filename_component(DEST_DIR "${DEST}" DIRECTORY)

    add_custom_command(
            TARGET enginend PRE_BUILD
            COMMAND ${CMAKE_COMMAND} -E make_directory "${DEST_DIR}"
            COMMAND ${CMAKE_COMMAND} -E copy_if_different "${HEADER}" "${DEST}"
    )
endforeach()


add_executable(test test.cpp)

set_target_properties(test PROPERTIES
        RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/engine/test"
)
target_link_directories(
        test PUBLIC
        "${CMAKE_SOURCE_DIR}/link")
target_link_libraries(test PRIVATE
        "${CMAKE_SOURCE_DIR}/link/libenginend.so"
        "${CMAKE_SOURCE_DIR}/link/libdesktopraylib.so"
)
target_include_directories(test PUBLIC
        ${CMAKE_SOURCE_DIR}/include
        ${CMAKE_SOURCE_DIR}/lib/raylib/linux-64/raylib/include
)
target_include_directories(enginend PUBLIC
        ${CMAKE_SOURCE_DIR}/include
        ${CMAKE_SOURCE_DIR}/lib/raylib/linux-64/raylib/include

)
