ADD_LIBRARY(${LIBNAME} SHARED
    msrproto/DataConverter.cpp
    msrproto/DirNode.cpp
    msrproto/PeriodicSubscriptions.cpp
    msrproto/ProtocolHandler.cpp
    msrproto/Subscription.cpp
    msrproto/Variable.cpp
    Debug.cpp
    IOLayer.cpp
    Process.cpp
    Sasl.cpp
    Selector.cpp
    SpyLayer.cpp
    StreambufLayer.cpp
    Subscription.cpp
    Variable.cpp
)

IF(NOT WIN32)
    TARGET_SOURCES(${LIBNAME} PRIVATE PosixProcess.cpp)
ENDIF()

TARGET_LINK_LIBRARIES(${LIBNAME} PRIVATE ${EXPAT_LIBRARIES})
TARGET_INCLUDE_DIRECTORIES(${LIBNAME} PUBLIC
    "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../include>"
    "$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>/.."
    "$<INSTALL_INTERFACE:../include>"
)
TARGET_INCLUDE_DIRECTORIES(${LIBNAME} PRIVATE
    ${EXPAT_INCLUDE_DIR}
)

SET_TARGET_PROPERTIES ( ${LIBNAME} PROPERTIES
    SOVERSION "${SOVERSION}"
    CLEAN_DIRECT_OUTPUT 1
    CXX_VISIBILITY_PRESET "hidden"
    PUBLIC_HEADER "${LIBHEADERS}"
    VISIBILITY_INLINES_HIDDEN 1
    VERSION "${PROJECT_VERSION}"
    CXX_STANDARD_REQUIRED 1
    CXX_STANDARD 11
)



## install target and headers

INSTALL (TARGETS ${LIBNAME}
    EXPORT ${LIBNAME}Targets
    ARCHIVE DESTINATION  "${CMAKE_INSTALL_LIBDIR}"
    LIBRARY DESTINATION  "${CMAKE_INSTALL_LIBDIR}"
    RUNTIME DESTINATION  "${CMAKE_INSTALL_BINDIR}"
)


## cmake target export stuff

SET(ConfigPackageLocation "${CMAKE_INSTALL_LIBDIR}/cmake/${LIBNAME}")
CONFIGURE_PACKAGE_CONFIG_FILE(../Config.cmake.in
        "${CMAKE_CURRENT_BINARY_DIR}/${LIBNAME}/${LIBNAME}-config.cmake"
    INSTALL_DESTINATION ${ConfigPackageLocation}
)
WRITE_BASIC_PACKAGE_VERSION_FILE(
        "${CMAKE_CURRENT_BINARY_DIR}/${LIBNAME}/${LIBNAME}-configVersion.cmake"
    COMPATIBILITY SameMajorVersion
)
INSTALL(EXPORT ${LIBNAME}Targets
    NAMESPACE EtherLab::
    FILE ${LIBNAME}Targets.cmake
    DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${LIBNAME}
)
INSTALL(FILES
        ${CMAKE_CURRENT_BINARY_DIR}/${LIBNAME}/${LIBNAME}-config.cmake
        ${CMAKE_CURRENT_BINARY_DIR}/${LIBNAME}/${LIBNAME}-configVersion.cmake
    DESTINATION ${ConfigPackageLocation}
)
EXPORT(EXPORT ${LIBNAME}Targets
    FILE "${CMAKE_CURRENT_BINARY_DIR}/${LIBNAME}/${LIBNAME}Targets.cmake"
    NAMESPACE EtherLab::
)
