1# SPDX-License-Identifier: BSD-3-Clause 2# Copyright (c) Intel Corporation. 3# All rights reserved. 4# Copyright (c) 2021 NVIDIA CORPORATION & AFFILIATES. 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 19endif 20 21ifeq ($(CONFIG_VFIO_USER),y) 22BLOCKDEV_MODULES_LIST += vfio_user 23endif 24 25ifeq ($(CONFIG_CRYPTO),y) 26BLOCKDEV_MODULES_LIST += bdev_crypto 27ifeq ($(CONFIG_CRYPTO_MLX5),y) 28BLOCKDEV_MODULES_PRIVATE_LIBS += -lmlx5 -libverbs 29endif 30endif 31 32ifeq ($(CONFIG_OCF),y) 33BLOCKDEV_MODULES_LIST += bdev_ocf 34BLOCKDEV_MODULES_LIST += ocfenv 35endif 36 37ifeq ($(CONFIG_REDUCE),y) 38BLOCKDEV_MODULES_LIST += bdev_compress reduce 39BLOCKDEV_MODULES_PRIVATE_LIBS += -lpmem 40ifeq ($(CONFIG_REDUCE_MLX5),y) 41BLOCKDEV_MODULES_PRIVATE_LIBS += -lmlx5 -libverbs 42endif 43endif 44 45ifeq ($(CONFIG_RDMA),y) 46BLOCKDEV_MODULES_LIST += rdma 47BLOCKDEV_MODULES_PRIVATE_LIBS += -libverbs -lrdmacm 48ifeq ($(CONFIG_RDMA_PROV),mlx5_dv) 49BLOCKDEV_MODULES_PRIVATE_LIBS += -lmlx5 50endif 51endif 52 53ifeq ($(OS),Linux) 54BLOCKDEV_MODULES_LIST += bdev_aio 55BLOCKDEV_MODULES_PRIVATE_LIBS += -laio 56INTR_BLOCKDEV_MODULES_LIST += bdev_aio 57BLOCKDEV_MODULES_LIST += bdev_ftl ftl 58ifeq ($(CONFIG_VIRTIO),y) 59BLOCKDEV_MODULES_LIST += bdev_virtio virtio 60endif 61ifeq ($(CONFIG_ISCSI_INITIATOR),y) 62BLOCKDEV_MODULES_LIST += bdev_iscsi 63# Fedora installs libiscsi to /usr/lib64/iscsi for some reason. 64BLOCKDEV_MODULES_PRIVATE_LIBS += -L/usr/lib64/iscsi -liscsi 65endif 66endif 67 68ifeq ($(CONFIG_URING),y) 69BLOCKDEV_MODULES_LIST += bdev_uring 70BLOCKDEV_MODULES_PRIVATE_LIBS += -luring 71ifneq ($(strip $(CONFIG_URING_PATH)),) 72CFLAGS += -I$(CONFIG_URING_PATH) 73BLOCKDEV_MODULES_PRIVATE_LIBS += -L$(CONFIG_URING_PATH) 74endif 75endif 76 77ifeq ($(CONFIG_RBD),y) 78BLOCKDEV_MODULES_LIST += bdev_rbd 79BLOCKDEV_MODULES_PRIVATE_LIBS += -lrados -lrbd 80endif 81 82ifeq ($(CONFIG_PMDK),y) 83BLOCKDEV_MODULES_LIST += bdev_pmem 84BLOCKDEV_MODULES_PRIVATE_LIBS += -lpmemblk -lpmem 85endif 86 87ifeq ($(CONFIG_DAOS),y) 88BLOCKDEV_MODULES_LIST += bdev_daos 89BLOCKDEV_MODULES_PRIVATE_LIBS += -ldaos -ldaos_common -ldfs -lgurt -luuid -ldl 90endif 91 92SOCK_MODULES_LIST = sock_posix 93 94ifeq ($(OS), Linux) 95ifeq ($(CONFIG_URING),y) 96SOCK_MODULES_LIST += sock_uring 97endif 98endif 99 100ACCEL_MODULES_LIST = accel_ioat ioat 101ifeq ($(CONFIG_IDXD),y) 102ACCEL_MODULES_LIST += accel_dsa accel_iaa idxd 103endif 104 105SCHEDULER_MODULES_LIST = scheduler_dynamic 106ifeq (y,$(DPDK_POWER)) 107SCHEDULER_MODULES_LIST += env_dpdk scheduler_dpdk_governor scheduler_gscheduler 108endif 109 110EVENT_BDEV_SUBSYSTEM = event_bdev event_accel event_vmd event_sock 111 112ALL_MODULES_LIST = $(BLOCKDEV_MODULES_LIST) $(ACCEL_MODULES_LIST) $(SCHEDULER_MODULES_LIST) $(SOCK_MODULES_LIST) 113SYS_LIBS += $(BLOCKDEV_MODULES_PRIVATE_LIBS) 114