xref: /spdk/mk/spdk.modules.mk (revision d987d777d6b8ce05f11cb1d90f1241bfecfc9af4)
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