870ce250f1
First in a series of doc updates. Add in-page links for sections and various updates to each section for clarity. Note that this readme is focused on getting the code and running unit tests but includes some other basic info also. The last section links to spdk.io where the developer page is the home for details on contributing. Change-Id: Ibbe5a070488cf295c1decd1a8b72b23fd140e942 Signed-off-by: Paul Luse <paul.e.luse@intel.com> Reviewed-on: https://review.gerrithub.io/362847 Tested-by: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
238 lines
5.7 KiB
Bash
Executable File
238 lines
5.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
function usage()
|
|
{
|
|
echo "'configure' configures SPDK to compile on supported platforms."
|
|
echo ""
|
|
echo "Usage: ./configure [OPTION]..."
|
|
echo ""
|
|
echo "Defaults for the options are specified in brackets."
|
|
echo ""
|
|
echo "General:"
|
|
echo " -h, --help Display this help and exit"
|
|
echo " --enable-debug Configure for debug builds"
|
|
echo " --enable-werror Treat compiler warnings as errors"
|
|
echo " --enable-asan Enable address sanitizer"
|
|
echo " --enable-ubsan Enable undefined behavior sanitizer"
|
|
echo " --enable-coverage Enable code coverage tracking"
|
|
echo " --enable-lto Enable link-time optimization"
|
|
echo " --with-env=path Use an alternate environment implementation"
|
|
echo ""
|
|
echo "Specifying Dependencies:"
|
|
echo "--with-DEPENDENCY[=path] Use the given dependency. Optionally, provide the"
|
|
echo " path."
|
|
echo "--without-DEPENDENCY Do not link to the given dependency. This may"
|
|
echo " disable features and components."
|
|
echo ""
|
|
echo "Valid dependencies are listed below."
|
|
echo " dpdk Optional. Uses dpdk submodule in spdk tree if not specified."
|
|
echo " example: /usr/share/dpdk/x86_64-default-linuxapp-gcc"
|
|
echo " fio Required to build fio_plugin."
|
|
echo " example: /usr/src/fio"
|
|
echo " rbd [disabled]"
|
|
echo " No path required."
|
|
echo " rdma [disabled]"
|
|
echo " No path required."
|
|
echo " vtune Required to profile I/O under Intel VTune Amplifier XE."
|
|
echo " example: /opt/intel/vtune_amplifier_xe_version"
|
|
echo ""
|
|
}
|
|
|
|
for i in "$@"; do
|
|
case "$i" in
|
|
-h|--help)
|
|
usage
|
|
exit 0
|
|
;;
|
|
--enable-debug)
|
|
CONFIG_DEBUG=y
|
|
;;
|
|
--disable-debug)
|
|
CONFIG_DEBUG=n
|
|
;;
|
|
--enable-asan)
|
|
CONFIG_ASAN=y
|
|
;;
|
|
--disable-asan)
|
|
CONFIG_ASAN=n
|
|
;;
|
|
--enable-ubsan)
|
|
CONFIG_UBSAN=y
|
|
;;
|
|
--disable-ubsan)
|
|
CONFIG_UBSAN=n
|
|
;;
|
|
--enable-tsan)
|
|
CONFIG_TSAN=y
|
|
;;
|
|
--disable-tsan)
|
|
CONFIG_TSAN=n
|
|
;;
|
|
--enable-coverage)
|
|
CONFIG_COVERAGE=y
|
|
;;
|
|
--disable-coverage)
|
|
CONFIG_COVERAGE=n
|
|
;;
|
|
--enable-lto)
|
|
CONFIG_LTO=y
|
|
;;
|
|
--disable-lto)
|
|
CONFIG_LTO=n
|
|
;;
|
|
--enable-werror)
|
|
CONFIG_WERROR=y
|
|
;;
|
|
--disable-werror)
|
|
CONFIG_WERROR=n
|
|
;;
|
|
--with-env=*)
|
|
CONFIG_ENV="${i#*=}"
|
|
;;
|
|
--with-rbd)
|
|
CONFIG_RBD=y
|
|
;;
|
|
--without-rbd)
|
|
CONFIG_RBD=n
|
|
;;
|
|
--with-rdma)
|
|
CONFIG_RDMA=y
|
|
;;
|
|
--without-rdma)
|
|
CONFIG_RDMA=n
|
|
;;
|
|
--with-dpdk=*)
|
|
CONFIG_DPDK_DIR=$(readlink -f ${i#*=})
|
|
;;
|
|
--without-dpdk)
|
|
CONFIG_DPDK_DIR=
|
|
;;
|
|
--with-fio=*)
|
|
FIO_SOURCE_DIR="${i#*=}"
|
|
CONFIG_FIO_PLUGIN=y
|
|
;;
|
|
--without-fio)
|
|
FIO_SOURCE_DIR=
|
|
CONFIG_FIO_PLUGIN=n
|
|
;;
|
|
--with-vtune=*)
|
|
VTUNE_SOURCE_DIR="${i#*=}"
|
|
CONFIG_VTUNE=y
|
|
;;
|
|
--without-vtune)
|
|
VTUNE_SOURCE_DIR=
|
|
CONFIG_VTUNE=n
|
|
;;
|
|
--)
|
|
break
|
|
;;
|
|
*)
|
|
echo "Unrecognized option $i"
|
|
usage
|
|
exit 1
|
|
esac
|
|
done
|
|
|
|
if [ -z "$CONFIG_ENV" ]; then
|
|
if [ -z "$CONFIG_DPDK_DIR" ]; then
|
|
rootdir=$(readlink -f $(dirname $0))
|
|
if [ ! -f "$rootdir"/dpdk/config/common_spdk ]; then
|
|
echo "DPDK not found; please specify --with-dpdk=<path> or run:"
|
|
echo
|
|
echo " git submodule update --init"
|
|
exit 1
|
|
fi
|
|
CONFIG_DPDK_DIR="$rootdir"/dpdk/build
|
|
fi
|
|
fi
|
|
|
|
if [ "$CONFIG_FIO_PLUGIN" = "y" ]; then
|
|
if [ -z "$FIO_SOURCE_DIR" ]; then
|
|
echo "When fio is enabled, you must specify the fio directory using --with-fio=path"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [ "$CONFIG_VTUNE" = "y" ]; then
|
|
if [ -z "$VTUNE_SOURCE_DIR" ]; then
|
|
echo "When VTune is enabled, you must specify the VTune directory using --with-vtune=path"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [ "$CONFIG_ASAN" = "y" -a "$CONFIG_TSAN" = "y" ]; then
|
|
echo "ERROR: ASAN and TSAN cannot be enabled at the same time."
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "$OSTYPE" == "FreeBSD"* ]]; then
|
|
# FreeBSD doesn't support all configurations
|
|
if [[ "$CONFIG_COVERAGE" == "y" ]]; then
|
|
echo "ERROR: CONFIG_COVERAGE not available on FreeBSD"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo -n "Creating CONFIG.local..."
|
|
|
|
# Write the configuration file
|
|
rm -f CONFIG.local
|
|
if [ -n "$CONFIG_DEBUG" ]; then
|
|
echo "CONFIG_DEBUG?=$CONFIG_DEBUG" >> CONFIG.local
|
|
fi
|
|
if [ -n "$CONFIG_WERROR" ]; then
|
|
echo "CONFIG_WERROR?=$CONFIG_WERROR" >> CONFIG.local
|
|
fi
|
|
if [ -n "$CONFIG_COVERAGE" ]; then
|
|
echo "CONFIG_COVERAGE?=$CONFIG_COVERAGE" >> CONFIG.local
|
|
fi
|
|
if [ -n "$CONFIG_LTO" ]; then
|
|
echo "CONFIG_LTO?=$CONFIG_LTO" >> CONFIG.local
|
|
fi
|
|
if [ -n "$CONFIG_ASAN" ]; then
|
|
echo "CONFIG_ASAN?=$CONFIG_ASAN" >> CONFIG.local
|
|
fi
|
|
if [ -n "$CONFIG_UBSAN" ]; then
|
|
echo "CONFIG_UBSAN?=$CONFIG_UBSAN" >> CONFIG.local
|
|
fi
|
|
if [ -n "$CONFIG_TSAN" ]; then
|
|
echo "CONFIG_TSAN?=$CONFIG_TSAN" >> CONFIG.local
|
|
fi
|
|
if [ -n "$CONFIG_ENV" ]; then
|
|
echo "CONFIG_ENV?=$CONFIG_ENV" >> CONFIG.local
|
|
fi
|
|
if [ -n "$CONFIG_DPDK_DIR" ]; then
|
|
echo "CONFIG_DPDK_DIR?=$CONFIG_DPDK_DIR" >> CONFIG.local
|
|
fi
|
|
if [ -n "$CONFIG_FIO_PLUGIN" ]; then
|
|
echo "CONFIG_FIO_PLUGIN?=$CONFIG_FIO_PLUGIN" >> CONFIG.local
|
|
fi
|
|
if [ -n "$FIO_SOURCE_DIR" ]; then
|
|
echo "FIO_SOURCE_DIR?=$FIO_SOURCE_DIR" >> CONFIG.local
|
|
fi
|
|
if [ -n "$CONFIG_RDMA" ]; then
|
|
echo "CONFIG_RDMA?=$CONFIG_RDMA" >> CONFIG.local
|
|
fi
|
|
if [ -n "$CONFIG_RBD" ]; then
|
|
echo "CONFIG_RBD?=$CONFIG_RBD" >> CONFIG.local
|
|
fi
|
|
if [ -n "$CONFIG_VTUNE" ]; then
|
|
echo "CONFIG_VTUNE?=$CONFIG_VTUNE" >> CONFIG.local
|
|
fi
|
|
if [ -n "$VTUNE_SOURCE_DIR" ]; then
|
|
echo "VTUNE_SOURCE_DIR?=$VTUNE_SOURCE_DIR" >> CONFIG.local
|
|
fi
|
|
|
|
python scripts/genconfig.py > config.h
|
|
|
|
echo "done."
|
|
if [[ "$OSTYPE" == "FreeBSD"* ]]; then
|
|
echo "Type 'gmake' to build."
|
|
else
|
|
echo "Type 'make' to build."
|
|
fi
|
|
|
|
exit 0
|