Skip to content

Commit 063c190

Browse files
xhochywesm
authored andcommitted
ARROW-423: Define BUILD_BYPRODUCTS for CMake 3.2+
Author: Uwe L. Korn <uwelk@xhochy.com> Closes #240 from xhochy/ARROW-423 and squashes the following commits: 4c99ba2 [Uwe L. Korn] ARROW-423: Define BUILD_BYPRODUCTS for CMake 3.2+
1 parent 9352790 commit 063c190

File tree

2 files changed

+61
-32
lines changed

2 files changed

+61
-32
lines changed

cpp/CMakeLists.txt

Lines changed: 61 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -488,19 +488,32 @@ if(ARROW_BUILD_TESTS)
488488
set(GTEST_CMAKE_CXX_FLAGS "-fPIC")
489489
endif()
490490

491-
ExternalProject_Add(googletest_ep
492-
URL "https://github.com/google/googletest/archive/release-${GTEST_VERSION}.tar.gz"
493-
CMAKE_ARGS -DCMAKE_CXX_FLAGS=${GTEST_CMAKE_CXX_FLAGS} -Dgtest_force_shared_crt=ON
494-
# googletest doesn't define install rules, so just build in the
495-
# source dir and don't try to install. See its README for
496-
# details.
497-
BUILD_IN_SOURCE 1
498-
INSTALL_COMMAND "")
499-
500491
set(GTEST_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/googletest_ep-prefix/src/googletest_ep")
501492
set(GTEST_INCLUDE_DIR "${GTEST_PREFIX}/include")
502493
set(GTEST_STATIC_LIB "${GTEST_PREFIX}/${CMAKE_CFG_INTDIR}/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}")
503494
set(GTEST_VENDORED 1)
495+
496+
if (CMAKE_VERSION VERSION_GREATER "3.2")
497+
# BUILD_BYPRODUCTS is a 3.2+ feature
498+
ExternalProject_Add(googletest_ep
499+
URL "https://github.com/google/googletest/archive/release-${GTEST_VERSION}.tar.gz"
500+
CMAKE_ARGS -DCMAKE_CXX_FLAGS=${GTEST_CMAKE_CXX_FLAGS} -Dgtest_force_shared_crt=ON
501+
# googletest doesn't define install rules, so just build in the
502+
# source dir and don't try to install. See its README for
503+
# details.
504+
BUILD_IN_SOURCE 1
505+
BUILD_BYPRODUCTS "${GTEST_STATIC_LIB}"
506+
INSTALL_COMMAND "")
507+
else()
508+
ExternalProject_Add(googletest_ep
509+
URL "https://github.com/google/googletest/archive/release-${GTEST_VERSION}.tar.gz"
510+
CMAKE_ARGS -DCMAKE_CXX_FLAGS=${GTEST_CMAKE_CXX_FLAGS} -Dgtest_force_shared_crt=ON
511+
# googletest doesn't define install rules, so just build in the
512+
# source dir and don't try to install. See its README for
513+
# details.
514+
BUILD_IN_SOURCE 1
515+
INSTALL_COMMAND "")
516+
endif()
504517
else()
505518
find_package(GTest REQUIRED)
506519
set(GTEST_VENDORED 0)
@@ -525,24 +538,34 @@ if(ARROW_BUILD_TESTS)
525538
endif()
526539

527540
set(GFLAGS_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/gflags_ep-prefix/src/gflags_ep")
528-
ExternalProject_Add(gflags_ep
529-
GIT_REPOSITORY https://github.com/gflags/gflags.git
530-
GIT_TAG cce68f0c9c5d054017425e6e6fd54f696d36e8ee
531-
BUILD_IN_SOURCE 1
532-
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
533-
-DCMAKE_INSTALL_PREFIX=${GFLAGS_PREFIX}
534-
-DBUILD_SHARED_LIBS=OFF
535-
-DBUILD_STATIC_LIBS=ON
536-
-DBUILD_PACKAGING=OFF
537-
-DBUILD_TESTING=OFF
538-
-BUILD_CONFIG_TESTS=OFF
539-
-DINSTALL_HEADERS=ON
540-
-DCMAKE_CXX_FLAGS=${GFLAGS_CMAKE_CXX_FLAGS})
541-
542541
set(GFLAGS_HOME "${GFLAGS_PREFIX}")
543542
set(GFLAGS_INCLUDE_DIR "${GFLAGS_PREFIX}/include")
544543
set(GFLAGS_STATIC_LIB "${GFLAGS_PREFIX}/lib/libgflags.a")
545544
set(GFLAGS_VENDORED 1)
545+
set(GFLAGS_CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
546+
-DCMAKE_INSTALL_PREFIX=${GFLAGS_PREFIX}
547+
-DBUILD_SHARED_LIBS=OFF
548+
-DBUILD_STATIC_LIBS=ON
549+
-DBUILD_PACKAGING=OFF
550+
-DBUILD_TESTING=OFF
551+
-BUILD_CONFIG_TESTS=OFF
552+
-DINSTALL_HEADERS=ON
553+
-DCMAKE_CXX_FLAGS=${GFLAGS_CMAKE_CXX_FLAGS})
554+
if (CMAKE_VERSION VERSION_GREATER "3.2")
555+
# BUILD_BYPRODUCTS is a 3.2+ feature
556+
ExternalProject_Add(gflags_ep
557+
GIT_REPOSITORY https://github.com/gflags/gflags.git
558+
GIT_TAG cce68f0c9c5d054017425e6e6fd54f696d36e8ee
559+
BUILD_IN_SOURCE 1
560+
BUILD_BYPRODUCTS "${GFLAGS_STATIC_LIB}"
561+
CMAKE_ARGS ${GFLAGS_CMAKE_ARGS})
562+
else()
563+
ExternalProject_Add(gflags_ep
564+
GIT_REPOSITORY https://github.com/gflags/gflags.git
565+
GIT_TAG cce68f0c9c5d054017425e6e6fd54f696d36e8ee
566+
BUILD_IN_SOURCE 1
567+
CMAKE_ARGS ${GFLAGS_CMAKE_ARGS})
568+
endif()
546569
else()
547570
set(GFLAGS_VENDORED 0)
548571
find_package(GFlags REQUIRED)
@@ -570,16 +593,24 @@ if(ARROW_BUILD_BENCHMARKS)
570593
endif()
571594

572595
set(GBENCHMARK_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/gbenchmark_ep/src/gbenchmark_ep-install")
573-
ExternalProject_Add(gbenchmark_ep
574-
URL "https://github.com/google/benchmark/archive/v${GBENCHMARK_VERSION}.tar.gz"
575-
CMAKE_ARGS
576-
"-DCMAKE_BUILD_TYPE=Release"
577-
"-DCMAKE_INSTALL_PREFIX:PATH=${GBENCHMARK_PREFIX}"
578-
"-DCMAKE_CXX_FLAGS=-fPIC ${GBENCHMARK_CMAKE_CXX_FLAGS}")
579-
580596
set(GBENCHMARK_INCLUDE_DIR "${GBENCHMARK_PREFIX}/include")
581597
set(GBENCHMARK_STATIC_LIB "${GBENCHMARK_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}benchmark${CMAKE_STATIC_LIBRARY_SUFFIX}")
582598
set(GBENCHMARK_VENDORED 1)
599+
set(GBENCHMARK_CMAKE_ARGS
600+
"-DCMAKE_BUILD_TYPE=Release"
601+
"-DCMAKE_INSTALL_PREFIX:PATH=${GBENCHMARK_PREFIX}"
602+
"-DCMAKE_CXX_FLAGS=-fPIC ${GBENCHMARK_CMAKE_CXX_FLAGS}")
603+
if (CMAKE_VERSION VERSION_GREATER "3.2")
604+
# BUILD_BYPRODUCTS is a 3.2+ feature
605+
ExternalProject_Add(gbenchmark_ep
606+
URL "https://github.com/google/benchmark/archive/v${GBENCHMARK_VERSION}.tar.gz"
607+
BUILD_BYPRODUCTS "${GBENCHMARK_STATIC_LIB}"
608+
CMAKE_ARGS ${GBENCHMARK_CMAKE_ARGS})
609+
else()
610+
ExternalProject_Add(gbenchmark_ep
611+
URL "https://github.com/google/benchmark/archive/v${GBENCHMARK_VERSION}.tar.gz"
612+
CMAKE_ARGS ${GBENCHMARK_CMAKE_ARGS})
613+
endif()
583614
else()
584615
find_package(GBenchmark REQUIRED)
585616
set(GBENCHMARK_VENDORED 0)

cpp/src/arrow/CMakeLists.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ install(FILES
3737
# Unit tests
3838
#######################################
3939

40-
set(ARROW_TEST_LINK_LIBS ${ARROW_MIN_TEST_LIBS})
41-
4240
ADD_ARROW_TEST(array-test)
4341
ADD_ARROW_TEST(array-decimal-test)
4442
ADD_ARROW_TEST(array-list-test)

0 commit comments

Comments
 (0)