cmake_minimum_required(VERSION 3.16)

if(ESP_PLATFORM)
  # ---------------------------------------------------------------------------
  # Сборка как компонента ESP-IDF (корень репозитория = компонент; имя
  # компонента = имя каталога, из которого он подключён).
  # ВАЖНО: cmake_minimum_required должен остаться до этой ветки, project()
  # для IDF-сборки не вызывается.
  # ---------------------------------------------------------------------------
  idf_component_register(
    SRCS
      "src/ayla/httpd.cpp"
      "src/ayla/log.cpp"
      "src/ayla/platform/esp-idf/platform.cpp"
    INCLUDE_DIRS
      "include"
    PRIV_INCLUDE_DIRS
      "src"
    PRIV_REQUIRES
      lwip
      esp_timer
      esp_hw_support
      pthread
  )
  target_compile_options(${COMPONENT_LIB} PRIVATE
    -Wall -Wextra -Werror
    -fno-exceptions -fno-rtti
  )
  target_compile_features(${COMPONENT_LIB} PUBLIC cxx_std_20)
else()
  # ---------------------------------------------------------------------------
  # Обычная (POSIX) сборка: статическая библиотека + тесты.
  # ---------------------------------------------------------------------------
  project(fgl-aircon VERSION 0.1.0 LANGUAGES CXX)

  option(FGL_BUILD_TESTS "Build tests" ON)

  add_library(fgl-aircon STATIC
    src/ayla/httpd.cpp
    src/ayla/log.cpp
    src/ayla/platform/posix/platform.cpp
  )
  target_include_directories(fgl-aircon
    PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include"
    PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src"
  )
  target_compile_features(fgl-aircon PUBLIC cxx_std_20)
  target_compile_options(fgl-aircon PRIVATE
    -Wall -Wextra -Werror
    -fno-exceptions -fno-rtti
  )

  if(FGL_BUILD_TESTS)
    enable_testing()
    add_subdirectory(tests)
  endif()
endif()
