]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
cmake: do not assume ${CMAKE_GENERATOR} == make
authorKefu Chai <kchai@redhat.com>
Thu, 21 Mar 2019 05:16:13 +0000 (13:16 +0800)
committerKefu Chai <kchai@redhat.com>
Thu, 21 Mar 2019 07:45:07 +0000 (15:45 +0800)
* modules/BuildDPDK.cmake: always use "make"
* modules/BuildSPDK.cmake: always use "make"
  DPDK only support "make". if user wants to use other generator than
  "make", we will fail to build DPDK support. so we should always use
  "make" here. and before using "make", we need to detect it.
* cmake/modules/BuildRocksDB.cmake: use cmake for build
* src/compressor/zstd/CMakeLists.txt: use cmake for build
  just use whatever generator use specifies, and use ${CMAKE_COMMAND}
  for building the specified target, no need to repeat
  ${CMAKE_GENERATOR} for building the target.

Signed-off-by: Kefu Chai <kchai@redhat.com>
cmake/modules/BuildDPDK.cmake
cmake/modules/BuildRocksDB.cmake
cmake/modules/BuildSPDK.cmake
src/compressor/zstd/CMakeLists.txt

index 12a831a8b10a68e053dbab157f4cc43eb4258085..80d541227287e025b592ca8e47daaa6c4e2748ec 100644 (file)
@@ -1,4 +1,5 @@
 function(do_build_dpdk dpdk_dir)
+  find_program (MAKE_EXECUTABLE NAMES make gmake)
   # mk/machine/native/rte.vars.mk
   # rte_cflags are extracted from mk/machine/${machine}/rte.vars.mk
   # only 3 of them have -march=<arch> defined, so copying them here.
@@ -59,7 +60,7 @@ function(do_build_dpdk dpdk_dir)
   set(target "${arch}-${machine_tmpl}-${execenv}-${toolchain}")
 
   execute_process(
-    COMMAND ${CMAKE_MAKE_PROGRAM} showconfigs
+    COMMAND ${MAKE_EXECUTABLE} showconfigs
     WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/spdk/dpdk
     OUTPUT_VARIABLE supported_targets
     OUTPUT_STRIP_TRAILING_WHITESPACE)
@@ -71,11 +72,18 @@ function(do_build_dpdk dpdk_dir)
       "\"${target}\" not listed in ${supported_targets}")
   endif()
 
+  if(CMAKE_MAKE_PROGRAM MATCHES "make")
+    # try to inherit command line arguments passed by parent "make" job
+    set(make_cmd "$(MAKE)")
+  else()
+    set(make_cmd "${MAKE_EXECUTABLE}")
+  endif()
+
   include(ExternalProject)
   ExternalProject_Add(dpdk-ext
     SOURCE_DIR ${CMAKE_SOURCE_DIR}/src/spdk/dpdk
-    CONFIGURE_COMMAND $(MAKE) config O=${dpdk_dir} T=${target}
-    BUILD_COMMAND env CC=${CMAKE_C_COMPILER} $(MAKE) O=${dpdk_dir} EXTRA_CFLAGS=-fPIC
+    CONFIGURE_COMMAND ${make_cmd} config O=${dpdk_dir} T=${target}
+    BUILD_COMMAND env CC=${CMAKE_C_COMPILER} ${make_cmd} O=${dpdk_dir} EXTRA_CFLAGS=-fPIC
     BUILD_IN_SOURCE 1
     INSTALL_COMMAND "true")
   ExternalProject_Add_Step(dpdk-ext patch-config
index 69741f46015d87af3bb40969dae065ebdd789217..e59f9b5c17e3f39312db11b06d8dfcd81b033da4 100644 (file)
@@ -39,6 +39,7 @@ function(build_rocksdb)
   list(APPEND rocksdb_CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE})
   list(APPEND rocksdb_CMAKE_ARGS -DFAIL_ON_WARNINGS=OFF)
   list(APPEND rocksdb_CMAKE_ARGS -DUSE_RTTI=1)
+  list(APPEND rocksdb_CMAKE_ARGS -G${CMAKE_GENERATOR})
   CHECK_C_COMPILER_FLAG("-Wno-stringop-truncation" HAS_WARNING_STRINGOP_TRUNCATION)
   if(HAS_WARNING_STRINGOP_TRUNCATION)
     list(APPEND rocksdb_CMAKE_ARGS -DCMAKE_C_FLAGS="-Wno-stringop-truncation")
@@ -52,7 +53,7 @@ function(build_rocksdb)
     SOURCE_DIR "${rocksdb_SOURCE_DIR}"
     CMAKE_ARGS ${rocksdb_CMAKE_ARGS}
     BINARY_DIR "${rocksdb_BINARY_DIR}"
-    BUILD_COMMAND $(MAKE) rocksdb
+    BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --target rocksdb
     INSTALL_COMMAND "true")
   # force rocksdb make to be called on each time
   ExternalProject_Add_Step(rocksdb_ext forcebuild
index 46242dc930a0bb3a3e3e73fbeeb4476071ba5683..3637d7c66aaba95ddecf4eb2191d5a74efd78ddb 100644 (file)
@@ -9,6 +9,15 @@ macro(build_spdk)
     find_package(aio REQUIRED)
     find_package(uuid REQUIRED)
   endif()
+
+  find_program (MAKE_EXECUTABLE NAMES make gmake)
+  if(CMAKE_MAKE_PROGRAM MATCHES "make")
+    # try to inherit command line arguments passed by parent "make" job
+    set(make_cmd "$(MAKE)")
+  else()
+    set(make_cmd "${MAKE_EXECUTABLE}")
+  endif()
+
   include(ExternalProject)
   ExternalProject_Add(spdk-ext
     DEPENDS dpdk-ext
@@ -17,9 +26,10 @@ macro(build_spdk)
     # unset $CFLAGS, otherwise it will interfere with how SPDK sets
     # its include directory.
     # unset $LDFLAGS, otherwise SPDK will fail to mock some functions.
-    BUILD_COMMAND env -i PATH=$ENV{PATH} CC=${CMAKE_C_COMPILER} $(MAKE) EXTRA_CFLAGS="-fPIC"
+    BUILD_COMMAND env -i PATH=$ENV{PATH} CC=${CMAKE_C_COMPILER} ${make_cmd} EXTRA_CFLAGS="-fPIC"
     BUILD_IN_SOURCE 1
     INSTALL_COMMAND "true")
+  unset(make_cmd)
   ExternalProject_Get_Property(spdk-ext source_dir)
   foreach(c nvme log lvol env_dpdk util)
     add_library(spdk::${c} STATIC IMPORTED)
index 76709bbb66465aaf3275e3b4b87843569aef628b..9586c3baafa080d8518601c47aa8641174d539e0 100644 (file)
@@ -11,8 +11,9 @@ ExternalProject_Add(zstd_ext
              -DCMAKE_C_FLAGS=${ZSTD_C_FLAGS}
              -DCMAKE_AR=${CMAKE_AR}
              -DCMAKE_POSITION_INDEPENDENT_CODE=${ENABLE_SHARED}
+             -G${CMAKE_GENERATOR}
   BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/libzstd
-  BUILD_COMMAND $(MAKE) libzstd_static
+  BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --target libzstd_static
   INSTALL_COMMAND "true")
 
 # force zstd make to be called on each time