You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by we...@apache.org on 2019/02/20 05:45:34 UTC
[arrow] branch master updated: ARROW-4581: [C++] Do not require
googletest_ep or gbenchmark_ep for library targets
This is an automated email from the ASF dual-hosted git repository.
wesm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/master by this push:
new 09cfd46 ARROW-4581: [C++] Do not require googletest_ep or gbenchmark_ep for library targets
09cfd46 is described below
commit 09cfd466746fa186e458b5134fb4119c2ed3e7a2
Author: Wes McKinney <we...@apache.org>
AuthorDate: Tue Feb 19 23:45:26 2019 -0600
ARROW-4581: [C++] Do not require googletest_ep or gbenchmark_ep for library targets
Author: Wes McKinney <we...@apache.org>
Closes #3698 from wesm/ARROW-4581 and squashes the following commits:
1fde0b08b <Wes McKinney> Only add dependencies when ARROW_BUILD_TESTS/BENCHMARKS=ON
42b38133e <Wes McKinney> Another fix
f9f7738dc <Wes McKinney> Reorder dependency statements
eacb4b3bd <Wes McKinney> cmake-format
fab06864c <Wes McKinney> Add explicit arrow_test_dependencies and arrow_benchmark_dependencies targets
87fe8ed40 <Wes McKinney> Do not require googletest_ep or gbenchmark_ep when they are enabled but only building a library target
---
cpp/CMakeLists.txt | 27 +++++++++++++++++++++------
cpp/cmake_modules/ThirdpartyToolchain.cmake | 6 ++++--
cpp/src/arrow/CMakeLists.txt | 2 +-
cpp/src/arrow/util/CMakeLists.txt | 5 ++---
4 files changed, 28 insertions(+), 12 deletions(-)
diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
index 548e5c2..19cb13b 100644
--- a/cpp/CMakeLists.txt
+++ b/cpp/CMakeLists.txt
@@ -760,7 +760,14 @@ if(ARROW_USE_GLOG)
endif()
add_custom_target(arrow_dependencies)
+add_custom_target(arrow_benchmark_dependencies)
+add_custom_target(arrow_test_dependencies)
+
+# ARROW-4581: CMake can be finicky about invoking the ExternalProject builds
+# for some of the library dependencies, so we "nuke it from orbit" by making
+# the toolchain dependency explicit using these "dependencies" targets
add_dependencies(arrow_dependencies toolchain)
+add_dependencies(arrow_test_dependencies toolchain-tests)
if(ARROW_STATIC_LINK_LIBS)
add_dependencies(arrow_dependencies ${ARROW_STATIC_LINK_LIBS})
@@ -782,13 +789,23 @@ if(NOT MSVC)
list(APPEND ARROW_SHARED_INSTALL_INTERFACE_LIBS ${CMAKE_DL_LIBS})
endif()
+set(ARROW_TEST_LINK_TOOLCHAIN ${GTEST_LIBRARY} ${GMOCK_MAIN_LIBRARY} ${GMOCK_LIBRARY})
+
+if(ARROW_BUILD_TESTS)
+ add_dependencies(arrow_test_dependencies ${ARROW_TEST_LINK_TOOLCHAIN})
+endif()
+
+if(ARROW_BUILD_BENCHMARKS)
+ # Some benchmarks use gtest
+ add_dependencies(arrow_benchmark_dependencies arrow_test_dependencies
+ toolchain-benchmarks)
+endif()
+
set(ARROW_TEST_STATIC_LINK_LIBS
arrow_testing_static
arrow_static
${ARROW_LINK_LIBS}
- ${GTEST_LIBRARY}
- ${GMOCK_MAIN_LIBRARY}
- ${GMOCK_LIBRARY})
+ ${ARROW_TEST_LINK_TOOLCHAIN})
set(ARROW_TEST_SHARED_LINK_LIBS
arrow_testing_shared
@@ -798,9 +815,7 @@ set(ARROW_TEST_SHARED_LINK_LIBS
${BOOST_SYSTEM_LIBRARY}
${BOOST_FILESYSTEM_LIBRARY}
${BOOST_REGEX_LIBRARY}
- ${GTEST_LIBRARY}
- ${GMOCK_MAIN_LIBRARY}
- ${GMOCK_LIBRARY})
+ ${ARROW_TEST_LINK_TOOLCHAIN})
if(NOT MSVC)
set(ARROW_TEST_SHARED_LINK_LIBS ${ARROW_TEST_SHARED_LINK_LIBS} ${CMAKE_DL_LIBS})
diff --git a/cpp/cmake_modules/ThirdpartyToolchain.cmake b/cpp/cmake_modules/ThirdpartyToolchain.cmake
index 7b99440..726db85 100644
--- a/cpp/cmake_modules/ThirdpartyToolchain.cmake
+++ b/cpp/cmake_modules/ThirdpartyToolchain.cmake
@@ -16,6 +16,8 @@
# under the License.
add_custom_target(toolchain)
+add_custom_target(toolchain-benchmarks)
+add_custom_target(toolchain-tests)
# ----------------------------------------------------------------------
# Toolchain linkage options
@@ -711,7 +713,7 @@ if(ARROW_BUILD_TESTS OR ARROW_BUILD_BENCHMARKS)
CMAKE_ARGS ${GTEST_CMAKE_ARGS}
${EP_LOG_OPTIONS})
- add_dependencies(toolchain googletest_ep)
+ add_dependencies(toolchain-tests googletest_ep)
else()
find_package(GTest REQUIRED)
set(GTEST_VENDORED 0)
@@ -792,7 +794,7 @@ if(ARROW_BUILD_BENCHMARKS)
CMAKE_ARGS ${GBENCHMARK_CMAKE_ARGS}
${EP_LOG_OPTIONS})
- add_dependencies(toolchain gbenchmark_ep)
+ add_dependencies(toolchain-benchmarks gbenchmark_ep)
else()
find_package(GBenchmark REQUIRED)
set(GBENCHMARK_VENDORED 0)
diff --git a/cpp/src/arrow/CMakeLists.txt b/cpp/src/arrow/CMakeLists.txt
index b2aebe6..07c404a 100644
--- a/cpp/src/arrow/CMakeLists.txt
+++ b/cpp/src/arrow/CMakeLists.txt
@@ -262,7 +262,7 @@ if(ARROW_BUILD_TESTS OR ARROW_BUILD_BENCHMARKS)
OUTPUTS
ARROW_TESTING_LIBRARIES
DEPENDENCIES
- ${GTEST_LIBRARY}
+ arrow_test_dependencies
SHARED_LINK_LIBS
arrow_shared
${GTEST_LIBRARY}
diff --git a/cpp/src/arrow/util/CMakeLists.txt b/cpp/src/arrow/util/CMakeLists.txt
index 56d5801..4846c5b 100644
--- a/cpp/src/arrow/util/CMakeLists.txt
+++ b/cpp/src/arrow/util/CMakeLists.txt
@@ -33,11 +33,10 @@ if(ARROW_BUILD_BENCHMARKS)
elseif(MSVC)
target_link_libraries(arrow_benchmark_main gbenchmark_static Shlwapi.lib)
else()
- target_link_libraries(arrow_benchmark_main gbenchmark_static pthread)
+ target_link_libraries(arrow_benchmark_main gbenchmark_static Threads::Threads)
endif()
- # TODO(wesm): Some benchmarks include gtest.h
- add_dependencies(arrow_benchmark_main ${GTEST_LIBRARY})
+ add_dependencies(arrow_benchmark_main arrow_benchmark_dependencies)
endif()
add_arrow_test(bit-util-test)