blob: 98e2bc5e779c16c6e4b180baf9f0195717a8a3ea [file] [log] [blame]
###############################################
### BaSyx::Shared ###
###############################################
set (BASYX_SHARED_LIB_SUFFIX "Shared")
set (BASYX_SHARED_LIBRARY_NAME "${PROJECT_SHORTNAME}${BASYX_SHARED_LIB_SUFFIX}")
set (BASYX_SHARED_INCLUDE_DIR "${BASYX_INCLUDE_DIR}/BaSyx/shared")
set (BASYX_SHARED_TARGET_NAME "${BASYX_SHARED_LIB_SUFFIX}")
add_library(${BASYX_SHARED_TARGET_NAME})
set_target_properties(${BASYX_SHARED_TARGET_NAME} PROPERTIES VERSION ${PROJECT_VERSION})
set_target_properties(${BASYX_SHARED_TARGET_NAME} PROPERTIES SOVERSION ${BASYX_PACKAGE_VERSION_MAJOR})
set_target_properties(${BASYX_SHARED_TARGET_NAME} PROPERTIES PREFIX "${CMAKE_STATIC_LIBRARY_PREFIX}${PROJECT_SHORTNAME}")
target_include_directories(${BASYX_SHARED_TARGET_NAME}
INTERFACE ${CMAKE_INSTALL_PREFIX}/include
${CMAKE_INSTALL_PREFIX}/include/${PROJECT_SHORTNAME})
target_sources(${BASYX_SHARED_TARGET_NAME}
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/shared/object/impl/obj_error.cpp
${CMAKE_CURRENT_SOURCE_DIR}/shared/object/impl/object_impl.cpp
${CMAKE_CURRENT_SOURCE_DIR}/shared/serialization/json/typeid.cpp
)
target_sources(${BASYX_SHARED_TARGET_NAME}
PRIVATE
${BASYX_SHARED_INCLUDE_DIR}/anyTypeChecker.h
${BASYX_SHARED_INCLUDE_DIR}/object/bad_object_cast.h
${BASYX_SHARED_INCLUDE_DIR}/object/impl/object_access_impl.h
${BASYX_SHARED_INCLUDE_DIR}/object/impl/object_cast_impl.h
${BASYX_SHARED_INCLUDE_DIR}/object/impl/object_factories_impl.h
${BASYX_SHARED_INCLUDE_DIR}/object/impl/object_meta_impl.h
${BASYX_SHARED_INCLUDE_DIR}/object/object_header.h
${BASYX_SHARED_INCLUDE_DIR}/object/object_type.h
${BASYX_SHARED_INCLUDE_DIR}/object/obj_function.h
${BASYX_SHARED_INCLUDE_DIR}/object/obj_error.h
${BASYX_SHARED_INCLUDE_DIR}/object/obj_holder.h
${BASYX_SHARED_INCLUDE_DIR}/object/obj_placeholder.h
${BASYX_SHARED_INCLUDE_DIR}/object/obj_error_holder.h
${BASYX_SHARED_INCLUDE_DIR}/object/obj_ref_holder.h
${BASYX_SHARED_INCLUDE_DIR}/object.h
${BASYX_SHARED_INCLUDE_DIR}/enums.h
${BASYX_SHARED_INCLUDE_DIR}/serialization/json/json.h
${BASYX_SHARED_INCLUDE_DIR}/serialization/json/json_deserializer.h
${BASYX_SHARED_INCLUDE_DIR}/serialization/json/json_serializer.h
${BASYX_SHARED_INCLUDE_DIR}/serialization/json/typeid.h
${BASYX_SHARED_INCLUDE_DIR}/serialization/json.h
${BASYX_SHARED_INCLUDE_DIR}/string_constants.h
${BASYX_SHARED_INCLUDE_DIR}/types.h
)
target_include_directories(${BASYX_SHARED_TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR})
target_link_libraries(${BASYX_SHARED_TARGET_NAME}
PUBLIC
BaSyx::Util
BaSyx::Log
nlohmann_json::nlohmann_json
)
add_library(basyx::shared ALIAS ${BASYX_SHARED_TARGET_NAME})
add_library(${PROJECT_SHORTNAME}::${BASYX_SHARED_LIB_SUFFIX} ALIAS ${BASYX_SHARED_TARGET_NAME})
diagnostics_print(${BASYX_SHARED_TARGET_NAME})
###############################################
### Install section ###
###############################################
if(${BASYX_INSTALL_SDK})
configure_package_config_file(
${CMAKE_CURRENT_SOURCE_DIR}/${BASYX_SHARED_LIBRARY_NAME}Config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/${BASYX_SHARED_LIBRARY_NAME}Config.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${BASYX_SHARED_LIBRARY_NAME}
PATH_VARS
CMAKE_INSTALL_PREFIX
)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${BASYX_SHARED_LIBRARY_NAME}Config.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${BASYX_SHARED_LIBRARY_NAME}
)
install(EXPORT ${BASYX_SHARED_LIB_SUFFIX}Targets
NAMESPACE ${PROJECT_SHORTNAME}::
FILE ${BASYX_SHARED_LIBRARY_NAME}Targets.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${BASYX_SHARED_LIBRARY_NAME}
)
install(TARGETS ${BASYX_SHARED_TARGET_NAME}
EXPORT ${BASYX_SHARED_LIB_SUFFIX}Targets
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
install(DIRECTORY "${BASYX_INCLUDE_DIR}/${PROJECT_SHORTNAME}/shared"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_SHORTNAME}"
FILES_MATCHING PATTERN "*.h"
)
endif()