diff --git a/.gitignore b/.gitignore
index 4eaebdc8b1..bd83e94e50 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,4 +26,5 @@ CONFIG.local
.cproject
.settings
mk/cc.mk
+mk/config.mk
PYTHON_COMMAND
diff --git a/CONFIG b/CONFIG
index 9c0d1a6b6e..113e93bc2d 100644
--- a/CONFIG
+++ b/CONFIG
@@ -32,82 +32,83 @@
#
# Installation prefix
-CONFIG_PREFIX?=/usr/local
+CONFIG_PREFIX="/usr/local"
# Build with debug logging. Turn off for performance testing and normal usage
-CONFIG_DEBUG?=n
+CONFIG_DEBUG=n
# Build with support of backtrace printing in log messages. Requires libunwind.
-CONFIG_LOG_BACKTRACE?=n
+CONFIG_LOG_BACKTRACE=n
# Treat warnings as errors (fail the build on any warning).
-CONFIG_WERROR?=n
+CONFIG_WERROR=n
# Build with link-time optimization.
-CONFIG_LTO?=n
+CONFIG_LTO=n
# Build with code coverage instrumentation.
-CONFIG_COVERAGE?=n
+CONFIG_COVERAGE=n
# Build with Address Sanitizer enabled
-CONFIG_ASAN?=n
+CONFIG_ASAN=n
# Build with Undefined Behavior Sanitizer enabled
-CONFIG_UBSAN?=n
+CONFIG_UBSAN=n
# Build with Thread Sanitizer enabled
-CONFIG_TSAN?=n
+CONFIG_TSAN=n
# Build tests
-CONFIG_TESTS?=y
+CONFIG_TESTS=y
# Directory that contains the desired SPDK environment library.
# By default, this is implemented using DPDK.
-CONFIG_ENV?=
+CONFIG_ENV=
# This directory should contain 'include' and 'lib' directories for your DPDK
# installation.
-CONFIG_DPDK_DIR?=
+CONFIG_DPDK_DIR=
# Build SPDK FIO plugin. Requires CONFIG_FIO_SOURCE_DIR set to a valid
# fio source code directory.
-CONFIG_FIO_PLUGIN?=n
+CONFIG_FIO_PLUGIN=n
# This directory should contain the source code directory for fio
# which is required for building the SPDK FIO plugin.
-CONFIG_FIO_SOURCE_DIR?=/usr/src/fio
+CONFIG_FIO_SOURCE_DIR=/usr/src/fio
# Enable RDMA support for the NVMf target.
# Requires ibverbs development libraries.
-CONFIG_RDMA?=n
-CONFIG_RDMA_SEND_WITH_INVAL?=n
+CONFIG_RDMA=n
+CONFIG_RDMA_SEND_WITH_INVAL=n
# Build Ceph RBD support in bdev modules
# Requires librbd development libraries
-CONFIG_RBD?=n
+CONFIG_RBD=n
# Build vhost library.
-CONFIG_VHOST?=y
+CONFIG_VHOST=y
# Build vhost initiator (Virtio) driver.
-CONFIG_VIRTIO?=y
+CONFIG_VIRTIO=y
# Build with PMDK backends
-CONFIG_PMDK?=n
-CONFIG_PMDK_DIR?=
+CONFIG_PMDK=n
+CONFIG_PMDK_DIR=
# Build with VPP
-CONFIG_VPP?=n
+CONFIG_VPP=n
+CONFIG_VPP_DIR=
# Requires libiscsi development libraries.
-CONFIG_ISCSI_INITIATOR?=n
+CONFIG_ISCSI_INITIATOR=n
# Enable the dependencies for building the crypto vbdev
-CONFIG_CRYPTO?=n
+CONFIG_CRYPTO=n
# Build spdk shared libraries in addition to the static ones.
-CONFIG_SHARED?=n
+CONFIG_SHARED=n
# Build with VTune suport.
-CONFIG_VTUNE?=n
-CONFIG_VTUNE_DIR?=
+CONFIG_VTUNE=n
+CONFIG_VTUNE_DIR=
diff --git a/Makefile b/Makefile
index 2afc85b697..5ee21b4661 100644
--- a/Makefile
+++ b/Makefile
@@ -41,7 +41,7 @@ DIRS-$(CONFIG_SHARED) += shared_lib
DIRS-y += examples app include
DIRS-$(CONFIG_TESTS) += test
-.PHONY: all clean $(DIRS-y) include/spdk/config.h CONFIG.local mk/cc.mk cc_version cxx_version
+.PHONY: all clean $(DIRS-y) include/spdk/config.h mk/config.mk mk/cc.mk cc_version cxx_version
ifeq ($(SPDK_ROOT_DIR)/lib/env_dpdk,$(CONFIG_ENV))
ifeq ($(CURDIR)/dpdk/build,$(CONFIG_DPDK_DIR))
@@ -81,7 +81,7 @@ mk/cc.mk:
cmp -s $@.tmp $@ || mv $@.tmp $@ ; \
rm -f $@.tmp
-include/spdk/config.h: CONFIG CONFIG.local scripts/genconfig.py
+include/spdk/config.h: mk/config.mk scripts/genconfig.py
$(Q)PYCMD=$$(cat PYTHON_COMMAND 2>/dev/null) ; \
test -z "$$PYCMD" && PYCMD=python ; \
echo "#ifndef SPDK_CONFIG_H" > $@.tmp; \
diff --git a/README.md b/README.md
index b960f58c4b..e48a8450b0 100644
--- a/README.md
+++ b/README.md
@@ -103,12 +103,12 @@ Details on the Vagrant setup can be found in the
## Advanced Build Options
Optional components and other build-time configuration are controlled by
-settings in two Makefile fragments in the root of the repository. `CONFIG`
-contains the base settings. Running the `configure` script generates a new
-file, `CONFIG.local`, that contains overrides to the base `CONFIG` file. For
-advanced configuration, there are a number of additional options to `configure`
-that may be used, or `CONFIG.local` can simply be created and edited by hand. A
-description of all possible options is located in `CONFIG`.
+settings in the Makefile configuration file in the root of the repository. `CONFIG`
+contains the base settings for the `configure` script. This script generates a new
+file, `mk/config.mk`, that contains final build settings. For advanced configuration,
+there are a number of additional options to `configure` that may be used, or
+`mk/config.mk` can simply be created and edited by hand. A description of all
+possible options is located in `CONFIG`.
Boolean (on/off) options are configured with a 'y' (yes) or 'n' (no). For
example, this line of `CONFIG` controls whether the optional RDMA (libibverbs)
@@ -116,7 +116,7 @@ support is enabled:
CONFIG_RDMA?=n
-To enable RDMA, this line may be added to `CONFIG.local` with a 'y' instead of
+To enable RDMA, this line may be added to `mk/config.mk` with a 'y' instead of
'n'. For the majority of options this can be done using the `configure` script.
For example:
@@ -152,10 +152,9 @@ gmake
~~~
The options specified on the `make` command line take precedence over the
-default values in `CONFIG` and `CONFIG.local`. This can be useful if you, for
-example, generate a `CONFIG.local` using the `configure` script and then have
-one or two options (i.e. debug builds) that you wish to turn on and off
-frequently.
+values in `mk/config.mk`. This can be useful if you, for example, generate
+a `mk/config.mk` using the `configure` script and then have one or two
+options (i.e. debug builds) that you wish to turn on and off frequently.
## Hugepages and Device Binding
diff --git a/configure b/configure
index 116ae43603..3b9bb697d4 100755
--- a/configure
+++ b/configure
@@ -70,7 +70,7 @@ function usage()
# Load default values
# Convert config to sourcable configuration file
-sed -r 's/CONFIG_([[:alnum:]_]+)\?=(.*)/CONFIG[\1]=\2/g' CONFIG > CONFIG.sh
+sed -r 's/CONFIG_([[:alnum:]_]+)=(.*)/CONFIG[\1]=\2/g' CONFIG > CONFIG.sh
declare -A CONFIG
source CONFIG.sh
rm CONFIG.sh
@@ -362,39 +362,35 @@ fi
# We are now ready to generate final configuration. But first do sanity
# check to see if all keys in CONFIG array have its reflection in CONFIG file.
-if [ $(egrep -c "^\s*CONFIG_[[:alnum:]_]+\?=" CONFIG) -ne ${#CONFIG[@]} ]; then
+if [ $(egrep -c "^\s*CONFIG_[[:alnum:]_]+=" CONFIG) -ne ${#CONFIG[@]} ]; then
echo ""
echo "BUG: Some configuration options are not present in CONFIG file. Please update this file."
echo "Missing options in CONFIG (+) file and in current config (-): "
diff -u --label "CONFIG file" --label "CONFIG[@]" \
- <(sed -r -e '/^\s*$/d; /^\s*#.*/d; s/(CONFIG_[[:alnum:]_]+)\?=.*/\1/g' CONFIG | sort) \
+ <(sed -r -e '/^\s*$/d; /^\s*#.*/d; s/(CONFIG_[[:alnum:]_]+)=.*/\1/g' CONFIG | sort) \
<(printf "CONFIG_%s\n" ${!CONFIG[@]} | sort)
exit 1
fi
-echo -n "Creating CONFIG.local..."
-cp -f CONFIG CONFIG.local
+echo -n "Creating mk/config.mk..."
+cp -f CONFIG mk/config.mk
for key in ${!CONFIG[@]}; do
- sed -i.bak -r "s#^\s*CONFIG_${key}\?=.*#CONFIG_${key}\?=${CONFIG[$key]}#g" CONFIG.local
+ sed -i.bak -r "s#^\s*CONFIG_${key}=.*#CONFIG_${key}\?=${CONFIG[$key]}#g" mk/config.mk
done
# On FreeBSD sed -i 'SUFFIX' - SUFFIX is mandatory. So no way but to delete the backed file.
-rm -f CONFIG.local.bak
+rm -f mk/config.mk.bak
# Environment variables
-if [ -n "$CFLAGS" ]; then
- echo "CFLAGS?=$CFLAGS" >> CONFIG.local
-fi
-if [ -n "$CXXFLAGS" ]; then
- echo "CXXFLAGS?=$CXXFLAGS" >> CONFIG.local
-fi
-if [ -n "$LDFLAGS" ]; then
- echo "LDFLAGS?=$LDFLAGS" >> CONFIG.local
-fi
-if [ -n "$DESTDIR" ]; then
- echo "DESTDIR?=$DESTDIR" >> CONFIG.local
-fi
+[ -n "$CFLAGS" ] && echo "CFLAGS?=$CFLAGS" >> mk/config.mk
+[ -n "$CXXFLAGS" ] && echo "CXXFLAGS?=$CXXFLAGS" >> mk/config.mk
+[ -n "$LDFLAGS" ] && echo "LDFLAGS?=$LDFLAGS" >> mk/config.mk
+[ -n "$DESTDIR" ] && echo "DESTDIR?=$DESTDIR" >> mk/config.mk
+
+# When nvme-cli repo will be update this link can be removed
+ln -fs mk/config.mk CONFIG.local
echo "done."
+
if [[ "$OSTYPE" == "freebsd"* ]]; then
echo "Type 'gmake' to build."
else
diff --git a/doc/vagrant.md b/doc/vagrant.md
index e1cd385cd6..4ab3d38cab 100644
--- a/doc/vagrant.md
+++ b/doc/vagrant.md
@@ -137,7 +137,7 @@ vagrant@vagrant:~/spdk_repo/spdk$ sudo scripts/pkgdep.sh
<