cmake_minimum_required(VERSION 3.10)
project(ewsdr_dmr C)

find_path(MBELIB_INCLUDE_DIR mbelib.h REQUIRED)
find_library(MBELIB_LIBRARY NAMES mbe REQUIRED)

add_library(ewsdr_dmr SHARED ewsdr_dmr.c)
target_compile_definitions(ewsdr_dmr PRIVATE EWSDR_DMR_BUILD)
target_include_directories(ewsdr_dmr
  PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
  PRIVATE ${MBELIB_INCLUDE_DIR})
target_link_libraries(ewsdr_dmr PRIVATE ${MBELIB_LIBRARY})
set_target_properties(ewsdr_dmr PROPERTIES
  C_VISIBILITY_PRESET hidden
  VISIBILITY_INLINES_HIDDEN YES)

# DMRBindings.pas loads this exact name. MinGW otherwise adds the Unix-style
# "lib" prefix to DLLs (libewsdr_dmr.dll).
if(WIN32)
  set_target_properties(ewsdr_dmr PROPERTIES PREFIX "")
endif()

include(GNUInstallDirs)
install(TARGETS ewsdr_dmr
  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
install(FILES ewsdr_dmr.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
