cmake_minimum_required(VERSION 3.13)
project(libadsb_reader VERSION 0.1.50 LANGUAGES C)
option(ENABLE_SDRPLAY "Build SDRplay API 3.x support" OFF)
option(ENABLE_RTLSDR "Build RTL-SDR support" OFF)
find_package(PkgConfig REQUIRED)
pkg_check_modules(LIBUSB REQUIRED libusb-1.0)
pkg_check_modules(LIBCURL REQUIRED libcurl)
pkg_check_modules(SQLITE3 REQUIRED sqlite3)
find_package(Threads REQUIRED)
set(ADSB_SOURCES src/core.c src/modes.c src/beast.c src/driver_radarbox.c src/driver_sbs1.c src/driver_sdrplay.c src/driver_rtlsdr.c src/demod_modes1090.c src/standing.c src/acarsd.c src/collect.c)
add_library(adsb-reader SHARED ${ADSB_SOURCES})
target_include_directories(adsb-reader PUBLIC include PRIVATE ${LIBUSB_INCLUDE_DIRS} ${LIBCURL_INCLUDE_DIRS} ${SQLITE3_INCLUDE_DIRS})
target_link_libraries(adsb-reader PRIVATE ${LIBUSB_LIBRARIES} ${LIBCURL_LIBRARIES} ${SQLITE3_LIBRARIES} Threads::Threads m)
if(ENABLE_SDRPLAY)
  find_path(SDRPLAY_INCLUDE_DIR sdrplay_api.h PATHS /usr/local/include /usr/include)
  find_library(SDRPLAY_LIBRARY sdrplay_api PATHS /usr/local/lib /usr/local/lib64 /usr/lib /usr/lib64)
  if(NOT SDRPLAY_INCLUDE_DIR OR NOT SDRPLAY_LIBRARY)
    message(FATAL_ERROR "SDRplay API not found; install API 3.x or set SDRPLAY_INCLUDE_DIR/SDRPLAY_LIBRARY")
  endif()
  target_compile_definitions(adsb-reader PRIVATE HAVE_SDRPLAY=1)
  target_include_directories(adsb-reader PRIVATE ${SDRPLAY_INCLUDE_DIR})
  target_link_libraries(adsb-reader PRIVATE ${SDRPLAY_LIBRARY})
endif()
if(ENABLE_RTLSDR)
  pkg_check_modules(RTLSDR REQUIRED librtlsdr)
  target_compile_definitions(adsb-reader PRIVATE HAVE_RTLSDR=1)
  target_include_directories(adsb-reader PRIVATE ${RTLSDR_INCLUDE_DIRS})
  target_link_libraries(adsb-reader PRIVATE ${RTLSDR_LIBRARIES})
endif()
set_target_properties(adsb-reader PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION 0 OUTPUT_NAME "adsb-reader")
add_executable(adsb-reader-tool tools/adsb-reader.c)
target_include_directories(adsb-reader-tool PRIVATE include)
target_link_libraries(adsb-reader-tool PRIVATE adsb-reader)
set_target_properties(adsb-reader-tool PROPERTIES OUTPUT_NAME "adsb-reader")
install(TARGETS adsb-reader adsb-reader-tool LIBRARY DESTINATION lib RUNTIME DESTINATION bin)
install(FILES include/adsb-reader/adsb_reader.h DESTINATION include/adsb-reader)
