diff --git a/configure b/configure index c5a45239f..075114e35 100755 --- a/configure +++ b/configure @@ -656,11 +656,6 @@ BUILD_CMD+=(-I/usr/local/include -L/usr/local/lib) if [[ "${CONFIG[VFIO_USER]}" = "y" ]]; then - if ! bash -c "command -v cmake3 cmake" > /dev/null; then - echo "ERROR: --with-vfio-user requires cmake" - echo "Please install then re-run this script" - exit 1 - fi if [[ ! -d /usr/include/json-c ]] && [[ ! -d /usr/local/include/json-c ]]; then echo "ERROR: --with-vfio-user requires json-c-devel" echo "Please install then re-run this script" diff --git a/libvfio-user b/libvfio-user index bc44bd1a2..b427c6084 160000 --- a/libvfio-user +++ b/libvfio-user @@ -1 +1 @@ -Subproject commit bc44bd1a246dc95b91faae30defafc3c259f5c4d +Subproject commit b427c6084311f0c620bf4afe7746739e8c887977 diff --git a/mk/spdk.common.mk b/mk/spdk.common.mk index d19e99bef..37e0ca43d 100644 --- a/mk/spdk.common.mk +++ b/mk/spdk.common.mk @@ -186,23 +186,20 @@ endif ifeq ($(CONFIG_VFIO_USER), y) ifneq ($(CONFIG_VFIO_USER_DIR),) -VFIO_USER_DIR=$(CONFIG_VFIO_USER_DIR) +VFIO_USER_SRC_DIR=$(CONFIG_VFIO_USER_DIR) else -VFIO_USER_DIR=$(SPDK_ROOT_DIR)/libvfio-user +VFIO_USER_SRC_DIR=$(SPDK_ROOT_DIR)/libvfio-user endif ifeq ($(CONFIG_DEBUG), y) -VFIO_USER_BUILD_TYPE=dbg +VFIO_USER_BUILD_TYPE=debug else VFIO_USER_BUILD_TYPE=release endif -VFIO_USER_INSTALL_DIR=$(VFIO_USER_DIR)/build +VFIO_USER_LIB_PREFIX=/usr/local/lib +VFIO_USER_BUILD_DIR=$(SPDK_ROOT_DIR)/build/libvfio-user/build-$(VFIO_USER_BUILD_TYPE) +VFIO_USER_INSTALL_DIR=$(SPDK_ROOT_DIR)/build/libvfio-user/ VFIO_USER_INCLUDE_DIR=$(VFIO_USER_INSTALL_DIR)/usr/local/include -VFIO_USER_LIBRARY_DIR=$(VFIO_USER_INSTALL_DIR)/usr/local/lib64 -ifeq (,$(wildcard $(VFIO_USER_LIBRARY_DIR)/.)) -# Some Linux distros use lib instead of lib64 -# for default installations -VFIO_USER_LIBRARY_DIR=$(VFIO_USER_INSTALL_DIR)/usr/local/lib -endif +VFIO_USER_LIBRARY_DIR=$(VFIO_USER_INSTALL_DIR)/$(VFIO_USER_LIB_PREFIX) CFLAGS += -I$(VFIO_USER_INCLUDE_DIR) LDFLAGS += -L$(VFIO_USER_LIBRARY_DIR) diff --git a/scripts/pkgdep/arch.sh b/scripts/pkgdep/arch.sh index 9e3a3c252..5bee0df3c 100755 --- a/scripts/pkgdep/arch.sh +++ b/scripts/pkgdep/arch.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Install main dependencies -pacman -Sy --needed --noconfirm gcc make cmake cunit libaio openssl \ +pacman -Sy --needed --noconfirm gcc make cunit libaio openssl \ libutil-linux libiscsi python ncurses json-c cmocka ninja meson # Additional dependencies for SPDK CLI pacman -Sy --needed --noconfirm python-pexpect python-pip libffi diff --git a/scripts/pkgdep/clear-linux-os.sh b/scripts/pkgdep/clear-linux-os.sh index d06dd6af0..90c5c3420 100755 --- a/scripts/pkgdep/clear-linux-os.sh +++ b/scripts/pkgdep/clear-linux-os.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Install main dependencies -swupd bundle-add -y c-basic make cmake dev-utils openssl devpkg-libiscsi \ +swupd bundle-add -y c-basic make dev-utils openssl devpkg-libiscsi \ devpkg-ncurses python3-basic python-extras devpkg-open-iscsi devpkg-json-c \ storage-utils # Additional dependencies for ISA-L used in compression diff --git a/scripts/pkgdep/debian.sh b/scripts/pkgdep/debian.sh index 9df697a98..7962dff91 100755 --- a/scripts/pkgdep/debian.sh +++ b/scripts/pkgdep/debian.sh @@ -3,7 +3,7 @@ VERSION_ID_NUM=$(sed 's/\.//g' <<< $VERSION_ID) # Includes Ubuntu, Debian # Minimal install -apt-get install -y gcc g++ make cmake libcunit1-dev libaio-dev libssl-dev libjson-c-dev libcmocka-dev \ +apt-get install -y gcc g++ make libcunit1-dev libaio-dev libssl-dev libjson-c-dev libcmocka-dev \ uuid-dev libiscsi-dev python libncurses5-dev libncursesw5-dev python3-pip pip3 install ninja if ! pip3 install meson; then diff --git a/scripts/pkgdep/rhel.sh b/scripts/pkgdep/rhel.sh index ba53eeeef..5bda930bf 100755 --- a/scripts/pkgdep/rhel.sh +++ b/scripts/pkgdep/rhel.sh @@ -82,7 +82,7 @@ if [ "$(uname -m)" = "aarch64" ]; then fi fi -yum install -y gcc gcc-c++ make cmake CUnit-devel libaio-devel openssl-devel \ +yum install -y gcc gcc-c++ make CUnit-devel libaio-devel openssl-devel \ libuuid-devel libiscsi-devel ncurses-devel json-c-devel libcmocka-devel # for rhel and centos7 OpenSSL 1.1 should be installed via EPEL if echo "$ID $VERSION_ID" | grep -E -q 'centos 7|rhel 7'; then diff --git a/scripts/pkgdep/sles.sh b/scripts/pkgdep/sles.sh index 1e722a08d..cb1be5871 100755 --- a/scripts/pkgdep/sles.sh +++ b/scripts/pkgdep/sles.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Minimal install -zypper install -y gcc gcc-c++ make cmake cunit-devel libaio-devel libopenssl-devel \ +zypper install -y gcc gcc-c++ make cunit-devel libaio-devel libopenssl-devel \ libuuid-devel python-base ncurses-devel json-c-devel libcmocka-devel ninja meson \ python-pyelftools # Additional dependencies for DPDK diff --git a/vfiouserbuild/Makefile b/vfiouserbuild/Makefile index e3832c540..df28f7418 100644 --- a/vfiouserbuild/Makefile +++ b/vfiouserbuild/Makefile @@ -36,15 +36,17 @@ include $(SPDK_ROOT_DIR)/mk/spdk.common.mk .PHONY: all clean install uninstall -#ifneq ($(Q),) -#REDIRECT=> /dev/null -#endif - # Force-disable scan-build SUB_CC = $(patsubst %ccc-analyzer,$(DEFAULT_CC),$(CC)) +VFIO_USER_CFG_OPTS = --buildtype $(VFIO_USER_BUILD_TYPE) -Ddefault_library=static -Dlibdir=$(VFIO_USER_LIB_PREFIX) + all: - $(Q)$(MAKE) -C $(VFIO_USER_DIR) BUILD_TYPE=$(VFIO_USER_BUILD_TYPE) DESTDIR=$(VFIO_USER_INSTALL_DIR) install CC=$(SUB_CC) $(REDIRECT) + $(Q)test -d $(VFIO_USER_BUILD_DIR) || \ + CC=$(SUB_CC) meson setup $(VFIO_USER_BUILD_DIR) $(VFIO_USER_SRC_DIR) + $(Q)meson configure $(VFIO_USER_BUILD_DIR) $(VFIO_USER_CFG_OPTS) + $(Q)meson compile $(MESON_COMPILE_OPTS) -C $(VFIO_USER_BUILD_DIR) + DESTDIR=$(VFIO_USER_INSTALL_DIR) meson install --quiet -C $(VFIO_USER_BUILD_DIR) install: all @@ -52,5 +54,4 @@ uninstall: @: clean: - $(Q)$(MAKE) -C $(VFIO_USER_DIR) clean $(REDIRECT) - $(Q)rm -rf $(VFIO_USER_DIR)/build + $(Q)rm -rf $(VFIO_USER_BUILD_DIR)