Commit 0923734c authored by Lance Hartmann's avatar Lance Hartmann Committed by Jim Harris
Browse files

build: Conditionally builds single and separate shared libs



Adds option to configure script (default is disabled)
to build SPDK shared libraries, and enhances build
correspondingly to do so.  This includes the single, combined
shared library encompassing all of the SPDK static libs,
as well as production of individual SPDK shared libraries
corresponding to each of the static ones.  Although the
SPDK shared libs conform with shared lib naming conventions
complete with version numbering suffixes, this does not
confer any ABI compatibility claims whatsoever at this time.
It's merely conformance with the naming conventions.
Finally, there are no built-in dependencies between SPDK
shared libs, thus requiring one to specify all needed SPDK
shared libs to resolve all symbols in the final link of an
executable wishing to use said SPDK shared libs.

Change-Id: Ia375c0e3fb6d150d45a39e84e3b226fbaea48545
Signed-off-by: default avatarLance Hartmann <lance.hartmann@oracle.com>
Reviewed-on: https://review.gerrithub.io/422307


Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarDariusz Stojaczyk <dariuszx.stojaczyk@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
parent a6c89adf
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -8,6 +8,16 @@ spdk_nvme_ns_get_extended_sector_size() was added. This function includes
the metadata size per sector (if any).  spdk_nvme_ns_get_sector_size() still
returns only the data size per sector, not including metadata.

### Build System

New `configure` options, `--with-shared` and `--without-shared`
[default], provide the capability to build, or not, SPDK shared libraries.
This includes the single SPDK shared lib encompassing all of the SPDK
static libs as well as individual SPDK shared libs corresponding to
each of the SPDK static ones.  Although the production of the shared
libs conforms with conventional version naming practices, such naming
does not at this time confer any SPDK ABI compatibility claims.

## v18.07:

### bdev
+3 −0
Original line number Diff line number Diff line
@@ -107,3 +107,6 @@ CONFIG_RAID?=n

# Enable the dependencies for building the crypto vbdev
CONFIG_CRYPTO?=n

# Build spdk shared libraries in addition to the static ones.
CONFIG_SHARED?=n
+3 −1
Original line number Diff line number Diff line
@@ -36,7 +36,9 @@ S :=
SPDK_ROOT_DIR := $(CURDIR)
include $(SPDK_ROOT_DIR)/mk/spdk.common.mk

DIRS-y += lib shared_lib examples app include
DIRS-y += lib
DIRS-$(CONFIG_SHARED) += shared_lib
DIRS-y += examples app include
DIRS-$(CONFIG_TESTS) += test

.PHONY: all clean $(DIRS-y) config.h CONFIG.local mk/cc.mk cc_version cxx_version
+13 −2
Original line number Diff line number Diff line
@@ -51,6 +51,8 @@ function usage()
	echo "                           No path required."
	echo " rdma                      [disabled]"
	echo "                           No path required."
	echo " shared                    Required to build spdk shared libraries."
	echo "                           No path required."
	echo " iscsi-initiator           [disabled]"
	echo "                           No path required."
	echo " raid                      [disabled]"
@@ -158,6 +160,12 @@ for i in "$@"; do
		--without-rdma)
			CONFIG_RDMA=n
			;;
		--with-shared)
			CONFIG_SHARED=y
			;;
		--without-shared)
			CONFIG_SHARED=n
			;;
		--with-iscsi-initiator)
			CONFIG_ISCSI_INITIATOR=y
			;;
@@ -291,7 +299,7 @@ if [ "$CONFIG_ASAN" = "y" -a "$CONFIG_TSAN" = "y" ]; then
	exit 1
fi

if [[ "$OSTYPE" == "FreeBSD"* ]]; then
if [[ "$OSTYPE" == "freebsd"* ]]; then
	# FreeBSD doesn't support all configurations
	if [[ "$CONFIG_COVERAGE" == "y" ]]; then
		echo "ERROR: CONFIG_COVERAGE not available on FreeBSD"
@@ -369,6 +377,9 @@ fi
if [ -n "$CONFIG_RDMA" ]; then
	echo "CONFIG_RDMA?=$CONFIG_RDMA" >> CONFIG.local
fi
if [ -n "$CONFIG_SHARED" ]; then
	echo "CONFIG_SHARED?=$CONFIG_SHARED" >> CONFIG.local
fi
if [ -n "$CONFIG_ISCSI_INITIATOR" ]; then
	echo "CONFIG_ISCSI_INITIATOR?=$CONFIG_ISCSI_INITIATOR" >> CONFIG.local
fi
@@ -415,7 +426,7 @@ echo $python_command > PYTHON_COMMAND
$python_command scripts/genconfig.py > config.h

echo "done."
if [[ "$OSTYPE" == "FreeBSD"* ]]; then
if [[ "$OSTYPE" == "freebsd"* ]]; then
	echo "Type 'gmake' to build."
else
	echo "Type 'make' to build."