echowithcolor(COLOR GREEN "-- Configure ${CMAKE_CURRENT_LIST_DIR}") file(RELATIVE_PATH PROJECT_ROOT_RELINC_DIR ${CMAKE_CURRENT_LIST_DIR} ${PROJECT_LIBATBUS_ROOT_INC_DIR}) set(PROJECT_LIB_SRC_LIST "${PROJECT_LIBATBUS_ROOT_INC_DIR}/detail/buffer.h" "${PROJECT_LIBATBUS_ROOT_INC_DIR}/detail/libatbus_adapter_libuv.h" "${PROJECT_LIBATBUS_ROOT_INC_DIR}/detail/libatbus_channel_export.h" "${PROJECT_LIBATBUS_ROOT_INC_DIR}/detail/libatbus_channel_types.h" "${PROJECT_LIBATBUS_ROOT_INC_DIR}/detail/libatbus_error.h" "${PROJECT_LIBATBUS_ROOT_INC_DIR}/atbus_connection.h" "${PROJECT_LIBATBUS_ROOT_INC_DIR}/atbus_endpoint.h" "${PROJECT_LIBATBUS_ROOT_INC_DIR}/atbus_msg_handler.h" "${PROJECT_LIBATBUS_ROOT_INC_DIR}/atbus_node.h" "${PROJECT_LIBATBUS_ROOT_INC_DIR}/libatbus.h" "${PROJECT_LIBATBUS_ROOT_INC_DIR}/libatbus_protocol.h" "${PROJECT_LIBATBUS_ROOT_SRC_DIR}/detail/buffer.cpp" "${PROJECT_LIBATBUS_ROOT_SRC_DIR}/atbus_connection.cpp" "${PROJECT_LIBATBUS_ROOT_SRC_DIR}/atbus_endpoint.cpp" "${PROJECT_LIBATBUS_ROOT_SRC_DIR}/atbus_msg_handler.cpp" "${PROJECT_LIBATBUS_ROOT_SRC_DIR}/atbus_node.cpp" "${PROJECT_LIBATBUS_ROOT_SRC_DIR}/channel_io_stream.cpp" "${PROJECT_LIBATBUS_ROOT_SRC_DIR}/channel_mem.cpp" "${PROJECT_LIBATBUS_ROOT_SRC_DIR}/channel_shm.cpp" "${PROJECT_LIBATBUS_ROOT_SRC_DIR}/channel_utility.cpp") source_group(TREE "${PROJECT_SOURCE_DIR}" FILES ${PROJECT_LIB_SRC_LIST}) list(APPEND PROJECT_LIB_SRC_LIST "${PROJECT_LIBATBUS_GENERATED_DIR}/include/detail/libatbus_config.h") source_group(TREE "${PROJECT_LIBATBUS_GENERATED_DIR}" FILES "${PROJECT_LIBATBUS_GENERATED_DIR}/include/detail/libatbus_config.h") set(PROJECT_LIB_PROTOCOL_SRC_LIST "${PROJECT_LIBATBUS_GENERATED_DIR}/include/libatbus_protocol.pb.h" "${PROJECT_LIBATBUS_GENERATED_DIR}/src/libatbus_protocol.pb.cc") set_source_files_properties("${PROJECT_LIBATBUS_GENERATED_DIR}/include/libatbus_protocol.pb.h" "${PROJECT_LIBATBUS_GENERATED_DIR}/src/libatbus_protocol.pb.cc" PROPERTIES GENERATED TRUE) # ============ libatbus - src ============ if(NOT DEFINED ATBUS_MACRO_PROTOCOL_USE_DYNAMIC_LIBRARY) if(BUILD_SHARED_LIBS OR ATFRAMEWORK_USE_DYNAMIC_LIBRARY) if(DEFINED ATFRAMEWORK_CMAKE_TOOLSET_THIRD_PARTY_PROTOBUF_ALLOW_SHARED_LIBS) set(ATBUS_MACRO_PROTOCOL_USE_DYNAMIC_LIBRARY ${ATFRAMEWORK_CMAKE_TOOLSET_THIRD_PARTY_PROTOBUF_ALLOW_SHARED_LIBS}) else() set(ATBUS_MACRO_PROTOCOL_USE_DYNAMIC_LIBRARY TRUE) endif() else() set(ATBUS_MACRO_PROTOCOL_USE_DYNAMIC_LIBRARY FALSE) endif() endif() if(ATBUS_MACRO_PROTOCOL_USE_DYNAMIC_LIBRARY) add_library("${PROJECT_LIBATBUS_LIB_LINK}-protocol" SHARED ${PROJECT_LIB_PROTOCOL_SRC_LIST}) project_build_tools_set_shared_library_declaration(ATBUS_MACRO_PROTOCOL_API "${PROJECT_LIBATBUS_LIB_LINK}-protocol") else() add_library("${PROJECT_LIBATBUS_LIB_LINK}-protocol" STATIC ${PROJECT_LIB_PROTOCOL_SRC_LIST}) if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|AppleClang|Intel|XL|XLClang") target_compile_definitions("${PROJECT_LIBATBUS_LIB_LINK}-protocol" PUBLIC "ATBUS_MACRO_PROTOCOL_API=__attribute__((visibility(\"default\")))") else() target_compile_definitions("${PROJECT_LIBATBUS_LIB_LINK}-protocol" PUBLIC "ATBUS_MACRO_PROTOCOL_API=") endif() endif() if(NOT APPLE) set_target_properties("${PROJECT_LIBATBUS_LIB_LINK}-protocol" PROPERTIES C_VISIBILITY_PRESET "hidden" CXX_VISIBILITY_PRESET "hidden") endif() set_target_properties( "${PROJECT_LIBATBUS_LIB_LINK}-protocol" PROPERTIES VERSION ${LIBATBUS_VERSION} CXX_INCLUDE_WHAT_YOU_USE "" CXX_CLANG_TIDY "") target_link_libraries("${PROJECT_LIBATBUS_LIB_LINK}-protocol" PUBLIC ${ATFRAMEWORK_CMAKE_TOOLSET_THIRD_PARTY_PROTOBUF_LINK_NAME}) target_include_directories( "${PROJECT_LIBATBUS_LIB_LINK}-protocol" PRIVATE "$" PUBLIC "$" "$") set(PROJECT_LIBATBUS_PROTOCOL_SOURCE_COMPILE_OPTIONS ${PROJECT_COMMON_PRIVATE_COMPILE_OPTIONS} ${PROJECT_BUILD_TOOLS_PATCH_PROTOBUF_SOURCES_OPTIONS}) if(PROJECT_BUILD_TOOLS_PATCH_PROTOBUF_SOURCES_REMOVE_OPTIONS) list(REMOVE_ITEM PROJECT_LIBATBUS_PROTOCOL_SOURCE_COMPILE_OPTIONS ${PROJECT_BUILD_TOOLS_PATCH_PROTOBUF_SOURCES_REMOVE_OPTIONS}) endif() if(PROJECT_LIBATBUS_PROTOCOL_SOURCE_COMPILE_OPTIONS) target_compile_options("${PROJECT_LIBATBUS_LIB_LINK}-protocol" PRIVATE ${PROJECT_LIBATBUS_PROTOCOL_SOURCE_COMPILE_OPTIONS}) endif() list(PREPEND PROJECT_LIBATBUS_PUBLIC_LINK_NAMES "${PROJECT_LIBATBUS_LIB_LINK}-protocol") add_dependencies("${PROJECT_LIBATBUS_LIB_LINK}-protocol" "atbus-generate-protocol") if(BUILD_SHARED_LIBS OR ATFRAMEWORK_USE_DYNAMIC_LIBRARY) add_library(${PROJECT_LIBATBUS_LIB_LINK} SHARED ${PROJECT_LIB_SRC_LIST}) set_target_properties( ${PROJECT_LIBATBUS_LIB_LINK} PROPERTIES C_VISIBILITY_PRESET "hidden" CXX_VISIBILITY_PRESET "hidden" VERSION ${LIBATBUS_VERSION} SOVERSION ${LIBATBUS_VERSION} INTERFACE_COMPILE_DEFINITIONS ATBUS_MACRO_API_DLL=1) target_compile_definitions(${PROJECT_LIBATBUS_LIB_LINK} PRIVATE ATBUS_MACRO_API_NATIVE=1 ATBUS_MACRO_API_DLL=1) else() add_library(${PROJECT_LIBATBUS_LIB_LINK} STATIC ${PROJECT_LIB_SRC_LIST}) set_target_properties( ${PROJECT_LIBATBUS_LIB_LINK} PROPERTIES C_VISIBILITY_PRESET "hidden" CXX_VISIBILITY_PRESET "hidden" VERSION ${LIBATBUS_VERSION}) target_compile_definitions(${PROJECT_LIBATBUS_LIB_LINK} PRIVATE ATBUS_MACRO_API_NATIVE=1) endif() add_dependencies(${PROJECT_LIBATBUS_LIB_LINK} "atbus-generate-protocol") target_include_directories( ${PROJECT_LIBATBUS_LIB_LINK} PUBLIC "$" "$" "$" PRIVATE "$") target_compile_definitions(${PROJECT_LIBATBUS_LIB_LINK} PRIVATE ATBUS_MACRO_BUILD_API=1) target_compile_options(${PROJECT_LIBATBUS_LIB_LINK} PRIVATE ${PROJECT_LIBATBUS_PRIVATE_COMPILE_OPTIONS}) target_link_libraries(${PROJECT_LIBATBUS_LIB_LINK} PUBLIC ${PROJECT_LIBATBUS_PUBLIC_LINK_NAMES}) set_property(TARGET ${PROJECT_LIBATBUS_LIB_LINK} PROPERTY FOLDER "atframework/atbus") set_property(TARGET "${PROJECT_LIBATBUS_LIB_LINK}-protocol" PROPERTY FOLDER "atframework/atbus") set(PROJECT_LIBATBUS_EXPORT_TARGETS "${PROJECT_LIBATBUS_LIB_LINK}" "${PROJECT_LIBATBUS_LIB_LINK}-protocol") add_library("atframework::${PROJECT_LIBATBUS_LIB_LINK}-protocol" ALIAS "${PROJECT_LIBATBUS_LIB_LINK}-protocol") add_library("atframework::${PROJECT_LIBATBUS_LIB_LINK}" ALIAS "${PROJECT_LIBATBUS_LIB_LINK}") install( TARGETS ${PROJECT_LIBATBUS_EXPORT_TARGETS} EXPORT ${PROJECT_LIBATBUS_EXPORT_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) install( DIRECTORY ${PROJECT_LIBATBUS_ROOT_INC_DIR} DESTINATION . FILES_MATCHING REGEX ".+\\.h(pp)?$" PATTERN ".svn" EXCLUDE PATTERN ".git" EXCLUDE) install(FILES "${PROJECT_LIBATBUS_GENERATED_DIR}/include/detail/libatbus_config.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/detail/") install(FILES "${PROJECT_LIBATBUS_GENERATED_DIR}/include/libatbus_protocol.pb.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")