1# SPDX-License-Identifier: BSD-3-Clause 2# Copyright (C) 2016 Intel Corporation. 3# Copyright (c) 2021-2024 NVIDIA CORPORATION & AFFILIATES. 4# All rights reserved. 5# 6 7BLOCKDEV_MODULES_LIST = bdev_malloc bdev_null bdev_nvme bdev_passthru bdev_lvol 8BLOCKDEV_MODULES_LIST += bdev_raid bdev_error bdev_gpt bdev_split bdev_delay 9BLOCKDEV_MODULES_LIST += bdev_zone_block 10BLOCKDEV_MODULES_LIST += blobfs blobfs_bdev blob_bdev blob lvol vmd nvme 11 12# Some bdev modules don't have pollers, so they can directly run in interrupt mode 13INTR_BLOCKDEV_MODULES_LIST = bdev_malloc bdev_passthru bdev_error bdev_gpt bdev_split bdev_raid 14# Logical volume, blobstore and blobfs can directly run in both interrupt mode and poll mode. 15INTR_BLOCKDEV_MODULES_LIST += bdev_lvol blobfs blobfs_bdev blob_bdev blob lvol 16 17ifeq ($(CONFIG_XNVME),y) 18BLOCKDEV_MODULES_LIST += bdev_xnvme 19XNVME_LIB_DIR=$(SPDK_ROOT_DIR)/xnvme/builddir/lib 20 21ifeq ($(CONFIG_SHARED),y) 22BLOCKDEV_MODULES_PRIVATE_LIBS += $(XNVME_LIB_DIR)/libxnvme.so -Wl,-rpath=$(XNVME_LIB_DIR) 23else 24BLOCKDEV_MODULES_PRIVATE_LIBS += $(XNVME_LIB_DIR)/libxnvme.a -luring -laio -pthread -lrt 25endif 26endif 27 28ifeq ($(CONFIG_VFIO_USER),y) 29BLOCKDEV_MODULES_LIST += vfio_user 30endif 31 32ifeq ($(CONFIG_CRYPTO),y) 33BLOCKDEV_MODULES_LIST += bdev_crypto 34ifeq ($(CONFIG_CRYPTO_MLX5),y) 35BLOCKDEV_MODULES_PRIVATE_LIBS += -lmlx5 -libverbs 36endif 37endif 38 39ifeq ($(CONFIG_OCF),y) 40BLOCKDEV_MODULES_LIST += bdev_ocf 41BLOCKDEV_MODULES_LIST += ocfenv 42endif 43 44ifeq ($(CONFIG_VBDEV_COMPRESS),y) 45BLOCKDEV_MODULES_LIST += bdev_compress reduce 46BLOCKDEV_MODULES_PRIVATE_LIBS += -lpmem 47ifeq ($(CONFIG_VBDEV_COMPRESS_MLX5),y) 48BLOCKDEV_MODULES_PRIVATE_LIBS += -lmlx5 -libverbs 49endif 50endif 51 52ifeq ($(CONFIG_RDMA),y) 53BLOCKDEV_MODULES_LIST += rdma_provider rdma_utils 54BLOCKDEV_MODULES_PRIVATE_LIBS += -libverbs -lrdmacm 55ifeq ($(CONFIG_RDMA_PROV),mlx5_dv) 56BLOCKDEV_MODULES_PRIVATE_LIBS += -lmlx5 57endif 58endif 59 60ifeq ($(OS),Linux) 61BLOCKDEV_MODULES_LIST += bdev_aio 62BLOCKDEV_MODULES_PRIVATE_LIBS += -laio 63INTR_BLOCKDEV_MODULES_LIST += bdev_aio 64BLOCKDEV_MODULES_LIST += bdev_ftl ftl 65ifeq ($(CONFIG_VIRTIO),y) 66BLOCKDEV_MODULES_LIST += bdev_virtio virtio 67endif 68ifeq ($(CONFIG_ISCSI_INITIATOR),y) 69BLOCKDEV_MODULES_LIST += bdev_iscsi 70# Fedora installs libiscsi to /usr/lib64/iscsi for some reason. 71BLOCKDEV_MODULES_PRIVATE_LIBS += -L/usr/lib64/iscsi -liscsi 72endif 73endif 74 75ifeq ($(OS),FreeBSD) 76BLOCKDEV_MODULES_LIST += bdev_aio 77endif 78 79ifeq ($(CONFIG_URING),y) 80BLOCKDEV_MODULES_LIST += bdev_uring 81BLOCKDEV_MODULES_PRIVATE_LIBS += -luring 82ifneq ($(strip $(CONFIG_URING_PATH)),) 83CFLAGS += -I$(CONFIG_URING_PATH) 84BLOCKDEV_MODULES_PRIVATE_LIBS += -L$(CONFIG_URING_PATH) 85endif 86endif 87 88ifeq ($(CONFIG_RBD),y) 89BLOCKDEV_MODULES_LIST += bdev_rbd 90BLOCKDEV_MODULES_PRIVATE_LIBS += -lrados -lrbd 91endif 92 93ifeq ($(CONFIG_DAOS),y) 94BLOCKDEV_MODULES_LIST += bdev_daos 95BLOCKDEV_MODULES_PRIVATE_LIBS += -ldaos -ldaos_common -ldfs -lgurt -luuid -ldl 96endif 97 98SOCK_MODULES_LIST = sock_posix 99 100ifeq ($(OS), Linux) 101ifeq ($(CONFIG_URING),y) 102SOCK_MODULES_LIST += sock_uring 103endif 104endif 105 106ACCEL_MODULES_LIST = accel_error accel_ioat ioat 107ifeq ($(CONFIG_IDXD),y) 108ACCEL_MODULES_LIST += accel_dsa accel_iaa idxd 109endif 110ifeq ($(CONFIG_CRYPTO),y) 111ACCEL_MODULES_LIST += accel_dpdk_cryptodev 112endif 113ifeq ($(CONFIG_DPDK_COMPRESSDEV),y) 114ACCEL_MODULES_LIST += accel_dpdk_compressdev 115endif 116 117ifeq ($(CONFIG_RDMA_PROV),mlx5_dv) 118ACCEL_MODULES_LIST += accel_mlx5 119endif 120 121SCHEDULER_MODULES_LIST = scheduler_dynamic 122ifeq (y,$(DPDK_POWER)) 123SCHEDULER_MODULES_LIST += env_dpdk scheduler_dpdk_governor scheduler_gscheduler 124endif 125 126ifeq ($(CONFIG_VFIO_USER),y) 127VFU_DEVICE_MODULES_LIST = vfu_device 128endif 129 130KEYRING_MODULES_LIST = event_keyring keyring_file 131ifeq ($(CONFIG_HAVE_KEYUTILS),y) 132KEYRING_MODULES_LIST += keyring_linux 133endif 134 135EVENT_BDEV_SUBSYSTEM = event_bdev event_accel event_vmd event_sock event_iobuf 136 137ifeq ($(CONFIG_AIO_FSDEV), y) 138FSDEV_MODULES_LIST = fsdev_aio 139endif 140 141ALL_MODULES_LIST = $(BLOCKDEV_MODULES_LIST) $(ACCEL_MODULES_LIST) $(SCHEDULER_MODULES_LIST) $(SOCK_MODULES_LIST) 142ALL_MODULES_LIST += $(VFU_DEVICE_MODULES_LIST) $(KEYRING_MODULES_LIST) $(FSDEV_MODULES_LIST) 143SYS_LIBS += $(BLOCKDEV_MODULES_PRIVATE_LIBS) 144