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)