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