From: Kefu Chai Date: Mon, 27 May 2019 11:53:42 +0000 (+0800) Subject: cmake: use BUILD_BYPRODUCTS to fix build w/ ninja X-Git-Tag: v15.1.0~2568^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=63242a0191c86d9a4d3b055262e833893cf317e5;p=ceph.git cmake: use BUILD_BYPRODUCTS to fix build w/ ninja ninja scan the build dependencies differently than GNU make, so we need to specify the product of `ExternalProject_Add()`. with this change, we can build `vstart-base` without building the ExternalProject separately. Signed-off-by: Kefu Chai --- diff --git a/cmake/modules/BuildRocksDB.cmake b/cmake/modules/BuildRocksDB.cmake index e59f9b5c17e3..6652a5850a0e 100644 --- a/cmake/modules/BuildRocksDB.cmake +++ b/cmake/modules/BuildRocksDB.cmake @@ -49,11 +49,13 @@ function(build_rocksdb) include(ExternalProject) set(rocksdb_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/rocksdb") set(rocksdb_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/rocksdb") + set(rocksdb_LIBRARY "${rocksdb_BINARY_DIR}/librocksdb.a") ExternalProject_Add(rocksdb_ext SOURCE_DIR "${rocksdb_SOURCE_DIR}" CMAKE_ARGS ${rocksdb_CMAKE_ARGS} BINARY_DIR "${rocksdb_BINARY_DIR}" BUILD_COMMAND ${CMAKE_COMMAND} --build --target rocksdb + BUILD_BYPRODUCTS "${rocksdb_LIBRARY}" INSTALL_COMMAND "true") # force rocksdb make to be called on each time ExternalProject_Add_Step(rocksdb_ext forcebuild @@ -65,7 +67,6 @@ function(build_rocksdb) add_library(RocksDB::RocksDB STATIC IMPORTED) add_dependencies(RocksDB::RocksDB rocksdb_ext) set(rocksdb_INCLUDE_DIR "${rocksdb_SOURCE_DIR}/include") - set(rocksdb_LIBRARY "${rocksdb_BINARY_DIR}/librocksdb.a") foreach(ver "MAJOR" "MINOR" "PATCH") file(STRINGS "${rocksdb_INCLUDE_DIR}/rocksdb/version.h" ROCKSDB_VER_${ver}_LINE REGEX "^#define[ \t]+ROCKSDB_${ver}[ \t]+[0-9]+$") diff --git a/src/compressor/zstd/CMakeLists.txt b/src/compressor/zstd/CMakeLists.txt index 9586c3baafa0..ad2689777ce9 100644 --- a/src/compressor/zstd/CMakeLists.txt +++ b/src/compressor/zstd/CMakeLists.txt @@ -14,6 +14,7 @@ ExternalProject_Add(zstd_ext -G${CMAKE_GENERATOR} BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/libzstd BUILD_COMMAND ${CMAKE_COMMAND} --build --target libzstd_static + BUILD_BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/libzstd/lib/libzstd.a" INSTALL_COMMAND "true") # force zstd make to be called on each time