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.
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)
"\"${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
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")
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
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
# 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)
-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