cmake_minimum_required(VERSION 3.6)

project(MY_APP CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)


# Определение путей
set(SOURCE_RES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../../../resources")
set(TARGET_RES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../src/main/assets/resources")

# Получаем список всех файлов в исходной директории для отслеживания зависимостей
file(GLOB_RECURSE RES_FILES RELATIVE "${SOURCE_RES_DIR}" "${SOURCE_RES_DIR}/*")

set(COPY_COMMANDS "")

foreach(RES_FILE ${RES_FILES})
    set(SRC "${SOURCE_RES_DIR}/${RES_FILE}")
    set(DST "${TARGET_RES_DIR}/${RES_FILE}")

    # Команда копирования конкретного файла, если он изменился
    add_custom_command(
            OUTPUT "${DST}"
            COMMAND ${CMAKE_COMMAND} -E make_directory "${TARGET_RES_DIR}"
            COMMAND ${CMAKE_COMMAND} -E copy_if_different "${SRC}" "${DST}"
            DEPENDS "${SRC}"
            COMMENT "Syncing resource: ${RES_FILE}"
    )
    list(APPEND RES_OUTPUTS "${DST}")
endforeach()

# Создаем кастомную цель, которая будет запускать процесс копирования
add_custom_target(sync_resources ALL DEPENDS ${RES_OUTPUTS})


add_library(main SHARED
    SDL_android_main.c
        ../../../../src/BoneAnimatedModel.cpp
        ../../../../src/Environment.cpp
        ../../../../src/Game.cpp
        ../../../../src/main.cpp
        ../../../../src/Projectile.cpp
        ../../../../src/SparkEmitter.cpp
        ../../../../src/TextModel.cpp
        ../../../../src/UiManager.cpp
        ../../../../src/utils/Perlin.cpp
        ../../../../src/utils/TaskManager.cpp
        ../../../../src/utils/Utils.cpp
        ../../../../src/navigation/PathFinder.cpp
        ../../../../src/planet/PlanetData.cpp
        ../../../../src/planet/PlanetObject.cpp
        ../../../../src/planet/StoneObject.cpp
        ../../../../src/render/FrameBuffer.cpp
        ../../../../src/render/ShadowMap.cpp
        ../../../../src/render/Renderer.cpp
        ../../../../src/render/ShaderManager.cpp
        ../../../../src/render/TextureManager.cpp
        ../../../../src/render/OpenGlExtensions.cpp
)

# Подключаем заголовки
target_include_directories(main PRIVATE
    ${CMAKE_CURRENT_SOURCE_DIR}/../SDL/include
    ${CMAKE_CURRENT_SOURCE_DIR}/../zlib
    ${CMAKE_CURRENT_SOURCE_DIR}/../libpng
        ${CMAKE_CURRENT_SOURCE_DIR}/../../../../thirdparty/eigen-5.0.0
        ${CMAKE_CURRENT_SOURCE_DIR}/../../../../thirdparty/boost_1_90_0
        ${CMAKE_CURRENT_SOURCE_DIR}/../../../../src
        ${CMAKE_CURRENT_SOURCE_DIR}/../libzip
)

# ВАЖНО: Линкуемся с png_static (статика) или png_shared (динамика)
# Так как мы установили PNG_STATIC=ON и PNG_SHARED=OFF, 
# должна создаться цель png_static
target_link_libraries(main 
    png_static  # ← ЭТО ПРАВИЛЬНОЕ ИМЯ ЦЕЛИ!
    z
    SDL2
)


find_library(OPENGLES2_LIB GLESv2)

target_link_libraries(main
        ${OPENGLES2_LIB}    # OpenGL ES 2.0/3.0
        log
        android
        OpenSLES
        dl
            zip
)

add_dependencies(main sync_resources)
