Merge pull request #2283 from BioDataAnalysis/bda_cmake_improvements

Diverse cmake improvements in dependency handling
This commit is contained in:
Mario Emmenlauer 2021-02-12 13:04:06 +01:00 committed by GitHub
commit e5e7d1d5fc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 45 additions and 29 deletions

View File

@ -27,17 +27,37 @@ set_and_check(THRIFT_BIN_DIR "@PACKAGE_BIN_INSTALL_DIR@")
set(THRIFT_COMPILER "${THRIFT_BIN_DIR}/thrift@CMAKE_EXECUTABLE_SUFFIX@")
if (NOT TARGET thrift::thrift)
include("${THRIFT_CMAKE_DIR}/thriftTargets.cmake")
include("${THRIFT_CMAKE_DIR}/thriftTargets.cmake")
endif()
set(THRIFT_LIBRARIES thrift::thrift)
if ("${THRIFT_LIBRARIES}" STREQUAL "")
message(FATAL_ERROR "thrift libraries were not found")
if(@ZLIB_FOUND@ AND @WITH_ZLIB@)
if (NOT TARGET thriftz::thriftz)
include("${THRIFT_CMAKE_DIR}/thriftzTargets.cmake")
endif()
set(THRIFT_LIBRARIES thriftz::thriftz)
endif()
if ("${THRIFT_LIBRARIES}" STREQUAL "")
message(FATAL_ERROR "thrift libraries were not found")
endif()
if (NOT Thrift_FIND_QUIETLY)
message(STATUS "Found thrift: ${PACKAGE_PREFIX_DIR}")
message(STATUS "Found thrift: ${PACKAGE_PREFIX_DIR}")
endif()
include(CMakeFindDependencyMacro)
if(@ZLIB_FOUND@ AND @WITH_ZLIB@)
find_dependency(ZLIB)
endif()
if(@OPENSSL_FOUND@ AND @WITH_OPENSSL@)
find_dependency(OpenSSL)
endif()
if(@Libevent_FOUND@ AND @WITH_LIBEVENT@)
find_dependency(Libevent)
endif()
check_required_components(Thrift)

View File

@ -54,8 +54,8 @@ macro(TARGET_LINK_LIBRARIES_THRIFT name)
target_link_libraries(${name} ${ARGN})
endmacro()
macro(LINK_AGAINST_THRIFT_LIBRARY target libname)
target_link_libraries(${target} ${libname})
macro(LINK_AGAINST_THRIFT_LIBRARY target)
target_link_libraries(${target} ${ARGN})
endmacro()
macro(TARGET_LINK_LIBRARIES_THRIFT_AGAINST_THRIFT_LIBRARY target libname)

View File

@ -73,7 +73,7 @@ endif()
include(ThriftMacros)
ADD_LIBRARY_THRIFT(thrift_c_glib ${thrift_c_glib_SOURCES})
TARGET_LINK_LIBRARIES_THRIFT(thrift_c_glib ${SYSLIBS})
TARGET_LINK_LIBRARIES_THRIFT(thrift_c_glib PUBLIC ${SYSLIBS})
# Install the headers
install(DIRECTORY "src/thrift" DESTINATION "${INCLUDE_INSTALL_DIR}"

View File

@ -153,9 +153,9 @@ include(ThriftMacros)
ADD_LIBRARY_THRIFT(thrift ${thriftcpp_SOURCES} ${thriftcpp_threads_SOURCES})
if(WIN32)
TARGET_LINK_LIBRARIES_THRIFT(thrift ${SYSLIBS} ws2_32)
TARGET_LINK_LIBRARIES_THRIFT(thrift PUBLIC ${SYSLIBS} ws2_32)
else()
TARGET_LINK_LIBRARIES_THRIFT(thrift ${SYSLIBS})
TARGET_LINK_LIBRARIES_THRIFT(thrift PUBLIC ${SYSLIBS})
endif()
ADD_PKGCONFIG_THRIFT(thrift)
@ -164,8 +164,13 @@ if(WITH_LIBEVENT)
include_directories(SYSTEM ${LIBEVENT_INCLUDE_DIRS})
ADD_LIBRARY_THRIFT(thriftnb ${thriftcppnb_SOURCES})
LINK_AGAINST_THRIFT_LIBRARY(thriftnb thrift)
TARGET_LINK_LIBRARIES_THRIFT(thriftnb ${SYSLIBS} ${LIBEVENT_LIBRARIES})
LINK_AGAINST_THRIFT_LIBRARY(thriftnb PUBLIC thrift)
if(TARGET libevent::core AND TARGET libevent::extra)
# libevent was found via its cmake config, use modern style targets
TARGET_LINK_LIBRARIES_THRIFT(thriftnb PUBLIC libevent::core libevent::extra)
else()
TARGET_LINK_LIBRARIES_THRIFT(thriftnb PUBLIC ${LIBEVENT_LIBRARIES})
endif()
ADD_PKGCONFIG_THRIFT(thrift-nb)
endif()
@ -174,8 +179,8 @@ if(WITH_ZLIB)
include_directories(SYSTEM ${ZLIB_INCLUDE_DIRS})
ADD_LIBRARY_THRIFT(thriftz ${thriftcppz_SOURCES})
TARGET_LINK_LIBRARIES_THRIFT(thriftz ${SYSLIBS} ${ZLIB_LIBRARIES})
TARGET_LINK_LIBRARIES_THRIFT_AGAINST_THRIFT_LIBRARY(thriftz thrift)
LINK_AGAINST_THRIFT_LIBRARY(thriftz PUBLIC thrift)
TARGET_LINK_LIBRARIES_THRIFT(thriftz PUBLIC ${ZLIB_LIBRARIES})
ADD_PKGCONFIG_THRIFT(thrift-z)
endif()

View File

@ -24,5 +24,5 @@ set( thriftcppqt5_SOURCES
set(CMAKE_AUTOMOC ON)
find_package(Qt5 REQUIRED COMPONENTS Core Network)
ADD_LIBRARY_THRIFT(thriftqt5 ${thriftcppqt5_SOURCES})
TARGET_LINK_LIBRARIES_THRIFT(thriftqt5 Qt5::Core Qt5::Network)
TARGET_LINK_LIBRARIES_THRIFT_AGAINST_THRIFT_LIBRARY(thriftqt5 thrift)
LINK_AGAINST_THRIFT_LIBRARY(thriftqt5 PUBLIC thrift)
TARGET_LINK_LIBRARIES_THRIFT(thriftqt5 PUBLIC Qt5::Core Qt5::Network)

View File

@ -283,7 +283,6 @@ target_link_libraries(processor_test
testgencpp_cob
${Boost_LIBRARIES}
)
LINK_AGAINST_THRIFT_LIBRARY(processor_test thrift)
LINK_AGAINST_THRIFT_LIBRARY(processor_test thriftnb)
add_test(NAME processor_test COMMAND processor_test)
@ -292,10 +291,8 @@ add_executable(TNonblockingServerTest ${TNonblockingServerTest_SOURCES})
include_directories(${LIBEVENT_INCLUDE_DIRS})
target_link_libraries(TNonblockingServerTest
testgencpp_cob
${LIBEVENT_LIBRARIES}
${Boost_LIBRARIES}
)
LINK_AGAINST_THRIFT_LIBRARY(TNonblockingServerTest thrift)
LINK_AGAINST_THRIFT_LIBRARY(TNonblockingServerTest thriftnb)
add_test(NAME TNonblockingServerTest COMMAND TNonblockingServerTest)
@ -305,10 +302,8 @@ if(OPENSSL_FOUND AND WITH_OPENSSL)
include_directories(${LIBEVENT_INCLUDE_DIRS})
target_link_libraries(TNonblockingSSLServerTest
testgencpp_cob
${LIBEVENT_LIBRARIES}
${Boost_LIBRARIES}
)
LINK_AGAINST_THRIFT_LIBRARY(TNonblockingSSLServerTest thrift)
LINK_AGAINST_THRIFT_LIBRARY(TNonblockingSSLServerTest thriftnb)
add_test(NAME TNonblockingSSLServerTest COMMAND TNonblockingSSLServerTest -- "${CMAKE_CURRENT_SOURCE_DIR}/../../../test/keys")
endif(OPENSSL_FOUND AND WITH_OPENSSL)

View File

@ -64,20 +64,17 @@ add_library(crossspecificnamegencpp STATIC ${crossspecificnamegencpp_SOURCES})
LINK_AGAINST_THRIFT_LIBRARY(crossspecificnamegencpp thrift)
add_executable(TestServer src/TestServer.cpp)
target_link_libraries(TestServer crosstestgencpp ${Boost_LIBRARIES} ${LIBEVENT_LIB})
LINK_AGAINST_THRIFT_LIBRARY(TestServer thrift)
target_link_libraries(TestServer crosstestgencpp ${Boost_LIBRARIES})
LINK_AGAINST_THRIFT_LIBRARY(TestServer thriftnb)
LINK_AGAINST_THRIFT_LIBRARY(TestServer thriftz)
add_executable(TestClient src/TestClient.cpp)
target_link_libraries(TestClient crosstestgencpp ${Boost_LIBRARIES} ${LIBEVENT_LIB})
LINK_AGAINST_THRIFT_LIBRARY(TestClient thrift)
target_link_libraries(TestClient crosstestgencpp ${Boost_LIBRARIES})
LINK_AGAINST_THRIFT_LIBRARY(TestClient thriftnb)
LINK_AGAINST_THRIFT_LIBRARY(TestClient thriftz)
add_executable(StressTest src/StressTest.cpp)
target_link_libraries(StressTest crossstressgencpp ${Boost_LIBRARIES} ${LIBEVENT_LIB})
LINK_AGAINST_THRIFT_LIBRARY(StressTest thrift)
target_link_libraries(StressTest crossstressgencpp ${Boost_LIBRARIES})
LINK_AGAINST_THRIFT_LIBRARY(StressTest thriftnb)
add_test(NAME StressTest COMMAND StressTest)
add_test(NAME StressTestConcurrent COMMAND StressTest --client-type=concurrent)
@ -86,8 +83,7 @@ add_test(NAME StressTestConcurrent COMMAND StressTest --client-type=concurrent)
# is broken on Windows. Contributions welcome.
if (NOT WIN32 AND NOT CYGWIN)
add_executable(StressTestNonBlocking src/StressTestNonBlocking.cpp)
target_link_libraries(StressTestNonBlocking crossstressgencpp ${Boost_LIBRARIES} ${LIBEVENT_LIB})
LINK_AGAINST_THRIFT_LIBRARY(StressTestNonBlocking thrift)
target_link_libraries(StressTestNonBlocking crossstressgencpp ${Boost_LIBRARIES})
LINK_AGAINST_THRIFT_LIBRARY(StressTestNonBlocking thriftnb)
LINK_AGAINST_THRIFT_LIBRARY(StressTestNonBlocking thriftz)
add_test(NAME StressTestNonBlocking COMMAND StressTestNonBlocking)