diff --git a/CONFIG b/CONFIG index c1946fca6..cc924ea91 100644 --- a/CONFIG +++ b/CONFIG @@ -10,6 +10,9 @@ CONFIG_PREFIX="/usr/local" # Target architecture CONFIG_ARCH=native +# Destination directory for the libraries +CONFIG_LIBDIR= + # Prefix for cross compilation CONFIG_CROSS_PREFIX= diff --git a/configure b/configure index 50bd16aef..cac81ba76 100755 --- a/configure +++ b/configure @@ -22,6 +22,7 @@ function usage() { echo "" echo " --cross-prefix=prefix Prefix for cross compilation (default: none)" echo " example: aarch64-linux-gnu" + echo " --libdir=path Configure installation path for the libraries (default: \$prefix/lib)" echo "" echo " --enable-debug Configure for debug builds" echo " --enable-werror Treat compiler warnings as errors" @@ -298,6 +299,9 @@ for i in "$@"; do --target-arch=*) CONFIG[ARCH]="${i#*=}" ;; + --libdir=*) + CONFIG[LIBDIR]="${i#*=}" + ;; --enable-debug) CONFIG[DEBUG]=y ;; diff --git a/mk/spdk.common.mk b/mk/spdk.common.mk index 9e00225c4..d7fa73327 100644 --- a/mk/spdk.common.mk +++ b/mk/spdk.common.mk @@ -26,7 +26,11 @@ CONFIG_PREFIX=$(prefix) endif bindir?=$(CONFIG_PREFIX)/bin +ifeq ($(CONFIG_LIBDIR),) libdir?=$(CONFIG_PREFIX)/lib +else +libdir?=$(CONFIG_LIBDIR) +endif includedir?=$(CONFIG_PREFIX)/include ifeq ($(MAKECMDGOALS),) diff --git a/mk/spdk.lib.mk b/mk/spdk.lib.mk index 2db2db51c..33790b9c4 100644 --- a/mk/spdk.lib.mk +++ b/mk/spdk.lib.mk @@ -87,16 +87,16 @@ $(SHARED_REALNAME_LIB): $(LIB) $(call spdk_build_realname_shared_lib,$(COMPILER),$^,$(SPDK_MAP_FILE),$(LOCAL_SYS_LIBS),$(SPDK_DEP_LIBS)) define pkgconfig_create - $(Q)$(SPDK_ROOT_DIR)/scripts/pc.sh $(1) $(LIBNAME) $(SO_SUFFIX) \ + $(Q)$(SPDK_ROOT_DIR)/scripts/pc.sh $(1) $(2) $(LIBNAME) $(SO_SUFFIX) \ "$(DEPDIRS-$(LIBNAME):%=spdk_%) $(MODULES-$(LIBNAME))" \ "" > $@ endef $(PKGCONFIG): $(LIB) - $(call pkgconfig_create,$(SPDK_ROOT_DIR)/build) + $(call pkgconfig_create,$(SPDK_ROOT_DIR)/build "") $(PKGCONFIG_INST): $(LIB) - $(call pkgconfig_create,$(CONFIG_PREFIX)) + $(call pkgconfig_create,$(CONFIG_PREFIX),$(libdir)) $(LIB): $(OBJS) $(LIB_C) diff --git a/rpmbuild/rpm.sh b/rpmbuild/rpm.sh index ece265e43..7cc853a55 100755 --- a/rpmbuild/rpm.sh +++ b/rpmbuild/rpm.sh @@ -105,6 +105,10 @@ build_macros() { fi fi + if get_config libdir has-arg; then + macros+=(-D "libdir $(get_config libdir print)") + fi + if [[ $deps == no ]]; then macros+=(-D "deps 0") fi diff --git a/rpmbuild/spdk.spec b/rpmbuild/spdk.spec index e3812d9af..e6b8f04af 100644 --- a/rpmbuild/spdk.spec +++ b/rpmbuild/spdk.spec @@ -8,6 +8,7 @@ %{!?requirements:%define requirements 0} %{!?build_requirements:%define build_requirements 0} %{!?shared:%define shared 0} +%{!?libdir:%define libdir /usr/local/lib} # Spec metadata Name: spdk @@ -87,7 +88,7 @@ mkdir -p %{buildroot}/etc/ld.so.conf.d mkdir -p %{buildroot}%{python3_sitelib} cat <<-EOF > %{buildroot}/etc/ld.so.conf.d/spdk.conf -/usr/local/lib +%{libdir} /usr/local/lib/dpdk EOF @@ -127,7 +128,7 @@ SPDK development libraries and headers %files devel /usr/local/include/* %if %{shared} -/usr/local/lib/lib*.so +%{libdir}/lib*.so %endif %package libs @@ -138,10 +139,10 @@ SPDK libraries %files libs /etc/ld.so.conf.d/* -/usr/local/lib/lib*.a -/usr/local/lib/pkgconfig/*.pc +%{libdir}/lib*.a +%{libdir}/pkgconfig/*.pc %if %{shared} -/usr/local/lib/lib*.so.* +%{libdir}/lib*.so.* %endif %post libs diff --git a/scripts/pc.sh b/scripts/pc.sh index b8d64da10..306a44a61 100755 --- a/scripts/pc.sh +++ b/scripts/pc.sh @@ -1,10 +1,10 @@ #!/usr/bin/env bash cat << EOF -Description: SPDK $2 library -Name: spdk_$2 -Version: $3 -Libs: -L$1/lib -lspdk_$2 -Requires: $4 -Libs.private: $5 +Description: SPDK $3 library +Name: spdk_$3 +Version: $4 +Libs: -L${2:-"$1/lib"} -lspdk_$3 +Requires: $5 +Libs.private: $6 Cflags: -I$1/include EOF