cmake_minimum_required(VERSION 3.13)
project(ds18b20 C)

set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED ON)

# Переносимое ядро: ни регистров, ни задержек, ни stm32f10x.h.
add_library(ds18b20 STATIC
    src/onewire.c
    src/ds18b20.c
)

target_include_directories(ds18b20 PUBLIC include)

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

# Порты (ports/) сюда не входят: им нужен CMSIS-заголовок целевого МК,
# они подключаются напрямую в проект прошивки.

option(DS18B20_BUILD_TESTS "Собирать тесты на симуляторе шины" ON)

if(DS18B20_BUILD_TESTS)
    enable_testing()
    add_executable(test_ds18b20
        tests/test_ds18b20.c
        tests/fake_onewire.c
    )
    target_link_libraries(test_ds18b20 PRIVATE ds18b20)
    target_include_directories(test_ds18b20 PRIVATE tests)
    add_test(NAME ds18b20 COMMAND test_ds18b20)
endif()
