diff --git a/build/cmake/ThriftConfig.cmake.in b/build/cmake/ThriftConfig.cmake.in index 6bfb12c70..f82c0a55d 100644 --- a/build/cmake/ThriftConfig.cmake.in +++ b/build/cmake/ThriftConfig.cmake.in @@ -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) diff --git a/build/cmake/ThriftMacros.cmake b/build/cmake/ThriftMacros.cmake index 038651eea..392b96bc0 100644 --- a/build/cmake/ThriftMacros.cmake +++ b/build/cmake/ThriftMacros.cmake @@ -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) diff --git a/lib/c_glib/CMakeLists.txt b/lib/c_glib/CMakeLists.txt index 3a1f1880c..5f0b6f569 100644 --- a/lib/c_glib/CMakeLists.txt +++ b/lib/c_glib/CMakeLists.txt @@ -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}" diff --git a/lib/cpp/CMakeLists.txt b/lib/cpp/CMakeLists.txt index b3a34d095..7a656c067 100755 --- a/lib/cpp/CMakeLists.txt +++ b/lib/cpp/CMakeLists.txt @@ -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() diff --git a/lib/cpp/src/thrift/qt/CMakeLists.txt b/lib/cpp/src/thrift/qt/CMakeLists.txt index 04a9a316e..fc1a2c230 100644 --- a/lib/cpp/src/thrift/qt/CMakeLists.txt +++ b/lib/cpp/src/thrift/qt/CMakeLists.txt @@ -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) diff --git a/lib/cpp/test/CMakeLists.txt b/lib/cpp/test/CMakeLists.txt index ced78a257..3263b66b7 100644 --- a/lib/cpp/test/CMakeLists.txt +++ b/lib/cpp/test/CMakeLists.txt @@ -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) diff --git a/test/cpp/CMakeLists.txt b/test/cpp/CMakeLists.txt index 9ecc17183..969019d69 100755 --- a/test/cpp/CMakeLists.txt +++ b/test/cpp/CMakeLists.txt @@ -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)