xref: /spdk/Makefile (revision 66289a6dbe28217365daa40fd92dcf327871c2e8)
1488570ebSJim Harris#  SPDX-License-Identifier: BSD-3-Clause
2a6dbe372Spaul luse#  Copyright (C) 2015 Intel Corporation.
3fe87dcadSAlexey Marchuk#  Copyright (c) 2020, Mellanox Corporation.
4784b9d48SAlexey Marchuk#  Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES
51010fb3aSDaniel Verkamp#  All rights reserved.
61010fb3aSDaniel Verkamp#
71010fb3aSDaniel Verkamp
8d6540ae9SDaniel VerkampS :=
9d6540ae9SDaniel Verkamp
101010fb3aSDaniel VerkampSPDK_ROOT_DIR := $(CURDIR)
111010fb3aSDaniel Verkampinclude $(SPDK_ROOT_DIR)/mk/spdk.common.mk
121010fb3aSDaniel Verkamp
130923734cSLance HartmannDIRS-y += lib
1407fe6a43SSeth HowellDIRS-y += module
150923734cSLance HartmannDIRS-$(CONFIG_SHARED) += shared_lib
16119158cdSRajarshi ChowdhuryDIRS-y += include
179b2c6452SJacek KalwasDIRS-$(CONFIG_EXAMPLES) += examples
18119158cdSRajarshi ChowdhuryDIRS-$(CONFIG_APPS) += app
199fcb1cb0STomasz ZawadzkiDIRS-y += test
20f823b7f5SJim HarrisDIRS-$(CONFIG_IPSEC_MB) += ipsecbuild
21552e21ccSZiye YangDIRS-$(CONFIG_ISAL) += isalbuild
22784b9d48SAlexey MarchukDIRS-$(CONFIG_ISAL_CRYPTO) += isalcryptobuild
23b30d57cdSChangpeng LiuDIRS-$(CONFIG_VFIO_USER) += vfiouserbuild
24c996aff2SKonrad SztyberDIRS-$(CONFIG_SMA) += proto
256f338d4bSKrishna Kanth ReddyDIRS-$(CONFIG_XNVME) += xnvmebuild
261e46e023SMaciej MisDIRS-$(CONFIG_GOLANG) += go/rpc
2791c64673SSebastian BrzezinkaDIRS-y += python
281010fb3aSDaniel Verkamp
2973439e6fSBen Walker.PHONY: all clean $(DIRS-y) include/spdk/config.h mk/config.mk \
30c4d9daebSPiotr Pelplinski	cc_version cxx_version .libs_only_other .ldflags ldflags install \
31c4d9daebSPiotr Pelplinski	uninstall
321010fb3aSDaniel Verkamp
336b41a086SDarek Stojaczyk# Workaround for ninja. See dpdkbuild/Makefile
346b41a086SDarek Stojaczykexport MAKE_PID := $(shell echo $$PPID)
356b41a086SDarek Stojaczyk
363c849a4dSBen Walkerifeq ($(SPDK_ROOT_DIR)/lib/env_dpdk,$(CONFIG_ENV))
37737b1b57SJim Harrisifeq ($(CURDIR)/dpdk/build,$(CONFIG_DPDK_DIR))
389fccc84fSJim Harrisifneq ($(SKIP_DPDK_BUILD),1)
397232c450SMichal Bergerifneq ($(CONFIG_DPDK_PKG_CONFIG),y)
40737b1b57SJim HarrisDPDKBUILD = dpdkbuild
41737b1b57SJim HarrisDIRS-y += dpdkbuild
42737b1b57SJim Harrisendif
439fccc84fSJim Harrisendif
443c849a4dSBen Walkerendif
457232c450SMichal Bergerendif
46737b1b57SJim Harris
479854c138SNick Connollyifeq ($(OS),Windows)
489854c138SNick Connollyifeq ($(CURDIR)/wpdk/build,$(CONFIG_WPDK_DIR))
499854c138SNick ConnollyWPDK = wpdk
509854c138SNick ConnollyDIRS-y += wpdk
519854c138SNick Connollyendif
529854c138SNick Connollyendif
539854c138SNick Connolly
54ed537580SJim Harrisifeq ($(CONFIG_SHARED),y)
55ed537580SJim HarrisLIB = shared_lib
56ed537580SJim Harriselse
5707fe6a43SSeth HowellLIB = module
58ed537580SJim Harrisendif
59ed537580SJim Harris
60f823b7f5SJim Harrisifeq ($(CONFIG_IPSEC_MB),y)
61f823b7f5SJim HarrisLIB += ipsecbuild
624de4b78bSDarek StojaczykDPDK_DEPS += ipsecbuild
63f823b7f5SJim Harrisendif
64f823b7f5SJim Harris
65552e21ccSZiye Yangifeq ($(CONFIG_ISAL),y)
66b5689b38SMichal BergerISALBUILD = isalbuild
67552e21ccSZiye YangLIB += isalbuild
684de4b78bSDarek StojaczykDPDK_DEPS += isalbuild
69784b9d48SAlexey Marchukifeq ($(CONFIG_ISAL_CRYPTO),y)
70784b9d48SAlexey MarchukISALCRYPTOBUILD = isalcryptobuild
71784b9d48SAlexey MarchukLIB += isalcryptobuild
72784b9d48SAlexey Marchukendif
73552e21ccSZiye Yangendif
74552e21ccSZiye Yang
75b30d57cdSChangpeng Liuifeq ($(CONFIG_VFIO_USER),y)
76b30d57cdSChangpeng LiuVFIOUSERBUILD = vfiouserbuild
77b30d57cdSChangpeng LiuLIB += vfiouserbuild
78b30d57cdSChangpeng Liuendif
79b30d57cdSChangpeng Liu
806f338d4bSKrishna Kanth Reddyifeq ($(CONFIG_XNVME),y)
816f338d4bSKrishna Kanth ReddyXNVMEBUILD = xnvmebuild
826f338d4bSKrishna Kanth ReddyLIB += xnvmebuild
836f338d4bSKrishna Kanth Reddyendif
846f338d4bSKrishna Kanth Reddy
8573439e6fSBen Walkerall: mk/cc.mk $(DIRS-y)
861010fb3aSDaniel Verkampclean: $(DIRS-y)
87c5467556SPawel Wodkowski	$(Q)rm -f include/spdk/config.h
88*66289a6dSKonrad Sztyber	$(Q)rm -f include/spdk/version.h
8992e75dfcSJim Harris	$(Q)rm -rf build
901010fb3aSDaniel Verkamp
912e7fe8e8SDaniel Verkampinstall: all
922e7fe8e8SDaniel Verkamp	$(Q)echo "Installed to $(DESTDIR)$(CONFIG_PREFIX)"
932e7fe8e8SDaniel Verkamp
94c4d9daebSPiotr Pelplinskiuninstall: $(DIRS-y)
95c4d9daebSPiotr Pelplinski	$(Q)echo "Uninstalled spdk"
96c4d9daebSPiotr Pelplinski
97f5ea02f3SJim Harrisifneq ($(SKIP_DPDK_BUILD),1)
989854c138SNick Connollydpdkdeps $(DPDK_DEPS): $(WPDK)
999854c138SNick Connollydpdkbuild: $(WPDK) $(DPDK_DEPS)
100f5ea02f3SJim Harrisendif
101f5ea02f3SJim Harris
102784b9d48SAlexey Marchuklib: $(WPDK) $(DPDKBUILD) $(VFIOUSERBUILD) $(XNVMEBUILD) $(ISALBUILD) $(ISALCRYPTOBUILD)
10307fe6a43SSeth Howellmodule: lib
10407fe6a43SSeth Howellshared_lib: module
105ed537580SJim Harrisapp: $(LIB)
106ed537580SJim Harristest: $(LIB)
107ed537580SJim Harrisexamples: $(LIB)
10893533c20SHailiang Wangpkgdep:
10993533c20SHailiang Wang	sh ./scripts/pkgdep.sh
1101010fb3aSDaniel Verkamp
111*66289a6dSKonrad Sztyber$(DIRS-y): mk/cc.mk build_dir include/spdk/config.h include/spdk/version.h
1126d6d1161SDaniel Verkamp
1136d6d1161SDaniel Verkampmk/cc.mk:
11473439e6fSBen Walker	$(Q)echo "Please run configure prior to make"
11573439e6fSBen Walker	false
11692a02f58SDaniel Verkamp
1176b9b448eSBen Walkerbuild_dir: mk/cc.mk
1186e2c2306SJacek Kalwas	$(Q)mkdir -p build/lib/pkgconfig/tmp
1196b9b448eSBen Walker	$(Q)mkdir -p build/bin
120c3b5ae0cSBen Walker	$(Q)mkdir -p build/fio
12185bdd43bSBen Walker	$(Q)mkdir -p build/examples
1223352b2a7SBen Walker	$(Q)mkdir -p build/include/spdk
1236b9b448eSBen Walker
12485bc2bbeSPawel Wodkowskiinclude/spdk/config.h: mk/config.mk scripts/genconfig.py
125acac4b38SJim Harris	$(Q)echo "#ifndef SPDK_CONFIG_H" > $@.tmp; \
12655bc3a72SPawel Wodkowski	echo "#define SPDK_CONFIG_H" >> $@.tmp; \
127b41f404dSJonathan Richardson	scripts/genconfig.py $(MAKEFLAGS) >> $@.tmp; \
12855bc3a72SPawel Wodkowski	echo "#endif /* SPDK_CONFIG_H */" >> $@.tmp; \
12992a02f58SDaniel Verkamp	cmp -s $@.tmp $@ || mv $@.tmp $@ ; \
13092a02f58SDaniel Verkamp	rm -f $@.tmp
13192a02f58SDaniel Verkamp
132*66289a6dSKonrad Sztyberinclude/spdk/version.h: include/spdk/version.h.in VERSION
133*66289a6dSKonrad Sztyber	$(Q)sed " \
134*66289a6dSKonrad Sztyber		s/\$$SPDK_VERSION_MAJOR/$(version_major)/g; \
135*66289a6dSKonrad Sztyber		s/\$$SPDK_VERSION_MINOR/$(version_minor)/g; \
136*66289a6dSKonrad Sztyber		s/\$$SPDK_VERSION_PATCH/$(version_patch)/g; \
137*66289a6dSKonrad Sztyber		s/\$$SPDK_VERSION_SUFFIX/$(version_suffix)/g;" \
138*66289a6dSKonrad Sztyber		$@.in > $@
139*66289a6dSKonrad Sztyber
14054700c7eSJim Harriscc_version: mk/cc.mk
14154700c7eSJim Harris	$(Q)echo "SPDK using CC=$(CC)"; $(CC) -v
14254700c7eSJim Harris
14354700c7eSJim Harriscxx_version: mk/cc.mk
14454700c7eSJim Harris	$(Q)echo "SPDK using CXX=$(CXX)"; $(CXX) -v
14554700c7eSJim Harris
14634387cccSPawel Wodkowski.libs_only_other:
14734387cccSPawel Wodkowski	$(Q)echo -n '$(SYS_LIBS) '
14834387cccSPawel Wodkowski	$(Q)if [ "$(CONFIG_SHARED)" = "y" ]; then \
14934387cccSPawel Wodkowski		echo -n '-lspdk '; \
15034387cccSPawel Wodkowski	fi
15134387cccSPawel Wodkowski
15234387cccSPawel Wodkowski.ldflags:
15334387cccSPawel Wodkowski	$(Q)echo -n '$(LDFLAGS) '
15434387cccSPawel Wodkowski
15534387cccSPawel Wodkowskildflags: .ldflags .libs_only_other
15634387cccSPawel Wodkowski	$(Q)echo ''
15734387cccSPawel Wodkowski
1581010fb3aSDaniel Verkampinclude $(SPDK_ROOT_DIR)/mk/spdk.subdirs.mk
159