cmake_minimum_required(VERSION 3.19)

if (${TOOLCHAIN_LANGUAGE} MATCHES "MikroC")
    project(Environmental_Data_Logger_With_Dual_RTC_Validation LANGUAGES MikroC)
else()
    project(Environmental_Data_Logger_With_Dual_RTC_Validation LANGUAGES C ASM)
endif()

include(mikroeUtils)

if (${MIKROSDK_TYPE} STREQUAL "legacy")
    legacy_cmake_path()
endif()

set(PROJECT_TYPE "mikrosdk" CACHE STRING "" FORCE)

add_executable(Environmental_Data_Logger_With_Dual_RTC_Validation 
main.c
systick.h
statemachine.c
statemachine.h
)

############################ Environmental_Data_Logger_With_Dual_RTC_Validation GENERATED CODE START ###########################
add_subdirectory(lib_rtc23)
target_link_libraries(Environmental_Data_Logger_With_Dual_RTC_Validation PUBLIC Click.RTC23)
add_subdirectory(lib_rtc22)
target_link_libraries(Environmental_Data_Logger_With_Dual_RTC_Validation PUBLIC Click.RTC22)
add_subdirectory(lib_ipsdisplay2)
target_link_libraries(Environmental_Data_Logger_With_Dual_RTC_Validation PUBLIC Click.IPSDisplay2)
add_subdirectory(lib_environment7)
target_link_libraries(Environmental_Data_Logger_With_Dual_RTC_Validation PUBLIC Click.Environment7)
find_package(MikroSDK.Driver.GPIO.In REQUIRED)
target_link_libraries(Environmental_Data_Logger_With_Dual_RTC_Validation PUBLIC MikroSDK.Driver.GPIO.In)
find_package(MikroSDK.Board REQUIRED)
target_link_libraries(Environmental_Data_Logger_With_Dual_RTC_Validation PUBLIC MikroSDK.Board)
find_package(MikroC.Core REQUIRED)
target_link_libraries(Environmental_Data_Logger_With_Dual_RTC_Validation PUBLIC MikroC.Core)
############################ Environmental_Data_Logger_With_Dual_RTC_Validation GENERATED CODE END ###########################

add_subdirectory(lvgl_940)
target_link_libraries(Environmental_Data_Logger_With_Dual_RTC_Validation PUBLIC lvgl)
add_subdirectory(ui)
target_link_libraries(Environmental_Data_Logger_With_Dual_RTC_Validation PUBLIC system_ui)

find_package(MikroC.Core REQUIRED)
target_link_libraries(Environmental_Data_Logger_With_Dual_RTC_Validation
    PUBLIC
        MikroC.Core
)

if (${MIKROSDK_TYPE} STREQUAL "legacy")
    find_package(MikroC.System REQUIRED)
    target_link_libraries(Environmental_Data_Logger_With_Dual_RTC_Validation
        PUBLIC
            MikroC.System
    )
endif()

if(COMPILER_REVISION)
    if(${COMPILER_REVISION} VERSION_GREATER_EQUAL "1.0")
        if(${TOOLCHAIN_LANGUAGE} STREQUAL "GNU")
            if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.meproject)
                fetch_startup_name(${CMAKE_CURRENT_SOURCE_DIR}/.meproject startupName)
                if(startupName)
                    add_startup_all_targets(. ${CMAKE_CURRENT_SOURCE_DIR} ${startupName})
                endif()
                fetch_linker_name(${CMAKE_CURRENT_SOURCE_DIR}/.meproject linkerName)
                if(linkerName)
                    add_ld_all_targets(. ${CMAKE_CURRENT_SOURCE_DIR} ${linkerName})
                endif()
            endif()
        endif()
    endif()
endif()
