project(simple_pv)
cmake_minimum_required(VERSION 3.18)

include( GNUInstallDirs )

set( CMAKE_CXX_STANDARD 14 )
set(CMAKE_MODULE_PATH "/usr/share/cds-cmake/cmake/Modules;${CMAKE_MODULE_PATH}")
message("${CMAKE_MODULE_PATH}")

set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS TRUE)

find_package(EPICSBase REQUIRED)

enable_testing()

add_library(simple_pv SHARED simple_pv.cc
        simple_epics.cc
        simple_pv_internal.cc)
target_include_directories(simple_pv PUBLIC
        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
        $<INSTALL_INTERFACE:include>)
target_link_libraries(simple_pv PUBLIC epics::cas epics::gdd epics::Com epics::ca)

add_library(simple_pv_static STATIC simple_pv.cc
        simple_epics.cc
        simple_pv_internal.cc)
target_include_directories(simple_pv_static PUBLIC
        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
        $<INSTALL_INTERFACE:include>)
target_include_directories(simple_pv_static PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include/private)
target_link_libraries(simple_pv_static PUBLIC epics::cas epics::gdd epics::Com epics::ca)


install(FILES include/simple_pv/simple_pv.h include/simple_pv/simple_epics.hh include/simple_pv/shareable_server.hh DESTINATION include/simple_pv)
install(TARGETS simple_pv simple_pv_static
        EXPORT simple_pv_install
        DESTINATION lib)

install( EXPORT simple_pv_install
        DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/simple_pv
        NAMESPACE simple_pv::
        FILE simple_pvConfig.cmake
)

add_executable(test_simple_pv tests/test_simple_pv.cc)
target_link_libraries(test_simple_pv PUBLIC simple_pv)
target_include_directories(test_simple_pv PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})

add_executable(test_simple_shareable_pv tests/test_simple_shareable_pv.cc)
target_link_libraries(test_simple_shareable_pv PUBLIC simple_pv)
target_include_directories(test_simple_shareable_pv PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})


add_executable(test_rw_ioc tests/test_rw_cas.cc)
target_link_libraries(test_rw_ioc PUBLIC simple_pv)

add_executable(test_c_server tests/test_c_server.c)
target_link_libraries(test_c_server PUBLIC simple_pv)
