cmake_minimum_required(VERSION 3.21)

include(${CMAKE_CURRENT_SOURCE_DIR}/../cmake/prelude.cmake)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CMAKE_CXX_EXTENSIONS NO)

project(simplepyble)

include(GNUInstallDirs)

include(${CMAKE_CURRENT_LIST_DIR}/../cmake/epilogue.cmake)

find_package(pybind11 REQUIRED)
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../simpleble ${CMAKE_BINARY_DIR}/simpleble)

pybind11_add_module(
    _simplepyble
    src/main.cpp
    src/wrap_adapter.cpp
    src/wrap_backend.cpp
    src/wrap_advanced.cpp
    src/wrap_peripheral.cpp
    src/wrap_service.cpp
    src/wrap_characteristic.cpp
    src/wrap_descriptor.cpp
    src/wrap_types.cpp
    src/wrap_config.cpp
    src/wrap_logging.cpp
)

target_link_libraries(_simplepyble PRIVATE simpleble::simpleble)

set(SIMPLEPYBLE_HAS_MACOS_ADVANCED 0)
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND NOT SIMPLEBLE_PLAIN)
    set(SIMPLEPYBLE_HAS_MACOS_ADVANCED 1)
endif()

target_compile_definitions(_simplepyble PRIVATE
    "-DSIMPLEPYBLE_VERSION=\"${SIMPLEPYBLE_VERSION}\""
    SIMPLEPYBLE_HAS_MACOS_ADVANCED=${SIMPLEPYBLE_HAS_MACOS_ADVANCED})

set_target_properties(
    _simplepyble PROPERTIES
    CXX_STANDARD 17
)

install(
    TARGETS _simplepyble
    DESTINATION .
)
