cmake_minimum_required(VERSION 3.13)
project(led_indicator C)

set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)

add_library(led_indicator STATIC led_indicator.c)
target_include_directories(led_indicator PUBLIC .)

if(MSVC)
    target_compile_options(led_indicator PRIVATE /W4)
else()
    target_compile_options(led_indicator PRIVATE -Wall -Wextra -Wpedantic)
endif()

option(LED_INDICATOR_BUILD_TESTS "Собирать тесты LED indicator" ON)
if(LED_INDICATOR_BUILD_TESTS)
    enable_testing()
    add_executable(test_led_indicator tests/test_led_indicator.c)
    target_link_libraries(test_led_indicator PRIVATE led_indicator)
    add_test(NAME led_indicator COMMAND test_led_indicator)

    add_executable(test_led_indicator_stm32_port
        tests/test_stm32_port.c
        ports/stm32-hal/led_indicator_stm32_hal.c)
    target_include_directories(test_led_indicator_stm32_port PRIVATE
        . ports/stm32-hal tests/fakes)
    target_link_libraries(test_led_indicator_stm32_port PRIVATE led_indicator)
    add_test(NAME led_indicator_stm32_port COMMAND test_led_indicator_stm32_port)
endif()
