diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 7c2d5b3..32a2f40 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -13,11 +13,9 @@ endif () find_package(OpenSSL REQUIRED) set(protobuf_MODULE_COMPATIBLE ON CACHE BOOL "") -if (WIN32) - find_package(Protobuf REQUIRED CONFIG) -else () - find_package(Protobuf 3.5.0 REQUIRED) -endif () +find_package(Protobuf CONFIG REQUIRED) +# Use target in order to carry link libraries +set(Protobuf_LIBRARY protobuf::libprotobuf) if (WIN32) set (HAVE_SYS_UIO_H_01 false) @@ -39,12 +37,21 @@ else () configure_file(${SNAPPY_DIR}/snappy-stubs-public.h.in ${SNAPPY_DIR}/snappy-stubs-public.h) else () find_package(Snappy 1.1.6 REQUIRED CONFIG) + add_library(snappy ALIAS Snappy::snappy) set(SNAPPY_LIB snappy) endif () if (LZ4_INSTALLED) + find_package(lz4 CONFIG REQUIRED) + add_library(lz4 ALIAS lz4::lz4) set(LZ4_LIB lz4) endif () + + find_package(ZLIB REQUIRED) + add_library(z ALIAS ZLIB::ZLIB) + + find_package(Threads REQUIRED) + add_library(pthread ALIAS Threads::Threads) endif() include_directories( @@ -57,11 +64,10 @@ include_directories( if (WIN32) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP /wd4200") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /wd4200 /Zc:__cplusplus /std:c++14") -else () - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fPIC -pipe -std=gnu90") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fPIC -pipe -std=c++14 -fno-exceptions") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /wd4200 /Zc:__cplusplus") endif () +set(CMAKE_C_STANDARD 90) +set(CMAKE_CXX_STANDARD 17) add_subdirectory(generator) @@ -108,6 +114,8 @@ if (WIN32) strncasecmp=_strnicmp ) + target_link_libraries(${PROJECT_NAME} PRIVATE protobuf::libprotobuf) + install( TARGETS ${PROJECT_NAME} ARCHIVE @@ -118,7 +126,7 @@ if (WIN32) else () set(STATIC_LIB_NAME ${PROJECT_NAME}-static) set(SHARED_LIB_NAME ${PROJECT_NAME}-shared) - get_filename_component(Protobuf_LIB_DIR ${Protobuf_LIBRARY} DIRECTORY) + set(Protobuf_LIB_DIR "") link_directories(${OPENSSL_LINK_DIR} ${WORKFLOW_LIB_DIR} ${Protobuf_LIB_DIR}) add_library( @@ -143,8 +151,18 @@ else () $ ) - if (APPLE) + if (NOT BUILD_SHARED_LIBS) + target_link_libraries(${STATIC_LIB_NAME} + PRIVATE + OpenSSL::SSL + OpenSSL::Crypto + pthread + ${Protobuf_LIBRARY} + workflow + z ${SNAPPY_LIB} ${LZ4_LIB}) + elseif (1) target_link_libraries(${SHARED_LIB_NAME} + PRIVATE OpenSSL::SSL OpenSSL::Crypto pthread @@ -161,17 +179,22 @@ else () add_dependencies(${STATIC_LIB_NAME} LINK_HEADERS) add_dependencies(${SHARED_LIB_NAME} LINK_HEADERS) + if(NOT BUILD_SHARED_LIBS) + set_target_properties(${SHARED_LIB_NAME} PROPERTIES EXCLUDE_FROM_ALL 1) install( TARGETS ${STATIC_LIB_NAME} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT devel ) + else() + set_target_properties(${STATIC_LIB_NAME} PROPERTIES EXCLUDE_FROM_ALL 1) install( TARGETS ${SHARED_LIB_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT devel ) + endif() endif () diff --git a/srpc-config.cmake.in b/srpc-config.cmake.in index 54b4323..1cdb97f 100644 --- a/srpc-config.cmake.in +++ b/srpc-config.cmake.in @@ -3,7 +3,6 @@ set(SRPC_VERSION "@srpc_VERSION@") set_and_check(SRPC_INCLUDE_DIR "@PACKAGE_CONFIG_INC_DIR@") set_and_check(SRPC_LIB_DIR "@PACKAGE_CONFIG_LIB_DIR@") -set_and_check(SRPC_BIN_DIR "@PACKAGE_CONFIG_BIN_DIR@") if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/srpc-targets.cmake") include ("${CMAKE_CURRENT_LIST_DIR}/srpc-targets.cmake")