xref: /spdk/Makefile (revision 6f338d4bf3a8a91b7abe377a605a321ea2b05bf7)
1488570ebSJim Harris#  SPDX-License-Identifier: BSD-3-Clause
2c02b1794SDaniel Verkamp#  Copyright (c) Intel Corporation.
3fe87dcadSAlexey Marchuk#  Copyright (c) 2020, Mellanox Corporation.
41010fb3aSDaniel Verkamp#  All rights reserved.
51010fb3aSDaniel Verkamp#
61010fb3aSDaniel Verkamp
7d6540ae9SDaniel VerkampS :=
8d6540ae9SDaniel Verkamp
91010fb3aSDaniel VerkampSPDK_ROOT_DIR := $(CURDIR)
101010fb3aSDaniel Verkampinclude $(SPDK_ROOT_DIR)/mk/spdk.common.mk
111010fb3aSDaniel Verkamp
120923734cSLance HartmannDIRS-y += lib
1307fe6a43SSeth HowellDIRS-y += module
140923734cSLance HartmannDIRS-$(CONFIG_SHARED) += shared_lib
15119158cdSRajarshi ChowdhuryDIRS-y += include
169b2c6452SJacek KalwasDIRS-$(CONFIG_EXAMPLES) += examples
17119158cdSRajarshi ChowdhuryDIRS-$(CONFIG_APPS) += app
189fcb1cb0STomasz ZawadzkiDIRS-y += test
19f823b7f5SJim HarrisDIRS-$(CONFIG_IPSEC_MB) += ipsecbuild
20552e21ccSZiye YangDIRS-$(CONFIG_ISAL) += isalbuild
21b30d57cdSChangpeng LiuDIRS-$(CONFIG_VFIO_USER) += vfiouserbuild
22048fb36aSKonrad SztyberDIRS-y += python
23*6f338d4bSKrishna Kanth ReddyDIRS-$(CONFIG_XNVME) += xnvmebuild
241010fb3aSDaniel Verkamp
2573439e6fSBen Walker.PHONY: all clean $(DIRS-y) include/spdk/config.h mk/config.mk \
26c4d9daebSPiotr Pelplinski	cc_version cxx_version .libs_only_other .ldflags ldflags install \
27c4d9daebSPiotr Pelplinski	uninstall
281010fb3aSDaniel Verkamp
296b41a086SDarek Stojaczyk# Workaround for ninja. See dpdkbuild/Makefile
306b41a086SDarek Stojaczykexport MAKE_PID := $(shell echo $$PPID)
316b41a086SDarek Stojaczyk
323c849a4dSBen Walkerifeq ($(SPDK_ROOT_DIR)/lib/env_dpdk,$(CONFIG_ENV))
33737b1b57SJim Harrisifeq ($(CURDIR)/dpdk/build,$(CONFIG_DPDK_DIR))
349fccc84fSJim Harrisifneq ($(SKIP_DPDK_BUILD),1)
357232c450SMichal Bergerifneq ($(CONFIG_DPDK_PKG_CONFIG),y)
36737b1b57SJim HarrisDPDKBUILD = dpdkbuild
37737b1b57SJim HarrisDIRS-y += dpdkbuild
38737b1b57SJim Harrisendif
399fccc84fSJim Harrisendif
403c849a4dSBen Walkerendif
417232c450SMichal Bergerendif
42737b1b57SJim Harris
439854c138SNick Connollyifeq ($(OS),Windows)
449854c138SNick Connollyifeq ($(CURDIR)/wpdk/build,$(CONFIG_WPDK_DIR))
459854c138SNick ConnollyWPDK = wpdk
469854c138SNick ConnollyDIRS-y += wpdk
479854c138SNick Connollyendif
489854c138SNick Connollyendif
499854c138SNick Connolly
50ed537580SJim Harrisifeq ($(CONFIG_SHARED),y)
51ed537580SJim HarrisLIB = shared_lib
52ed537580SJim Harriselse
5307fe6a43SSeth HowellLIB = module
54ed537580SJim Harrisendif
55ed537580SJim Harris
56f823b7f5SJim Harrisifeq ($(CONFIG_IPSEC_MB),y)
57f823b7f5SJim HarrisLIB += ipsecbuild
584de4b78bSDarek StojaczykDPDK_DEPS += ipsecbuild
59f823b7f5SJim Harrisendif
60f823b7f5SJim Harris
61552e21ccSZiye Yangifeq ($(CONFIG_ISAL),y)
62552e21ccSZiye YangLIB += isalbuild
634de4b78bSDarek StojaczykDPDK_DEPS += isalbuild
64552e21ccSZiye Yangendif
65552e21ccSZiye Yang
66b30d57cdSChangpeng Liuifeq ($(CONFIG_VFIO_USER),y)
67b30d57cdSChangpeng LiuVFIOUSERBUILD = vfiouserbuild
68b30d57cdSChangpeng LiuLIB += vfiouserbuild
69b30d57cdSChangpeng Liuendif
70b30d57cdSChangpeng Liu
71*6f338d4bSKrishna Kanth Reddyifeq ($(CONFIG_XNVME),y)
72*6f338d4bSKrishna Kanth ReddyXNVMEBUILD = xnvmebuild
73*6f338d4bSKrishna Kanth ReddyLIB += xnvmebuild
74*6f338d4bSKrishna Kanth Reddyendif
75*6f338d4bSKrishna Kanth Reddy
7673439e6fSBen Walkerall: mk/cc.mk $(DIRS-y)
771010fb3aSDaniel Verkampclean: $(DIRS-y)
78c5467556SPawel Wodkowski	$(Q)rm -f include/spdk/config.h
7992e75dfcSJim Harris	$(Q)rm -rf build
801010fb3aSDaniel Verkamp
812e7fe8e8SDaniel Verkampinstall: all
822e7fe8e8SDaniel Verkamp	$(Q)echo "Installed to $(DESTDIR)$(CONFIG_PREFIX)"
832e7fe8e8SDaniel Verkamp
84c4d9daebSPiotr Pelplinskiuninstall: $(DIRS-y)
85c4d9daebSPiotr Pelplinski	$(Q)echo "Uninstalled spdk"
86c4d9daebSPiotr Pelplinski
87f5ea02f3SJim Harrisifneq ($(SKIP_DPDK_BUILD),1)
889854c138SNick Connollydpdkdeps $(DPDK_DEPS): $(WPDK)
899854c138SNick Connollydpdkbuild: $(WPDK) $(DPDK_DEPS)
90f5ea02f3SJim Harrisendif
91f5ea02f3SJim Harris
92*6f338d4bSKrishna Kanth Reddylib: $(WPDK) $(DPDKBUILD) $(VFIOUSERBUILD) $(XNVMEBUILD)
9307fe6a43SSeth Howellmodule: lib
9407fe6a43SSeth Howellshared_lib: module
95ed537580SJim Harrisapp: $(LIB)
96ed537580SJim Harristest: $(LIB)
97ed537580SJim Harrisexamples: $(LIB)
9893533c20SHailiang Wangpkgdep:
9993533c20SHailiang Wang	sh ./scripts/pkgdep.sh
1001010fb3aSDaniel Verkamp
1016b9b448eSBen Walker$(DIRS-y): mk/cc.mk build_dir include/spdk/config.h
1026d6d1161SDaniel Verkamp
1036d6d1161SDaniel Verkampmk/cc.mk:
10473439e6fSBen Walker	$(Q)echo "Please run configure prior to make"
10573439e6fSBen Walker	false
10692a02f58SDaniel Verkamp
1076b9b448eSBen Walkerbuild_dir: mk/cc.mk
1086e2c2306SJacek Kalwas	$(Q)mkdir -p build/lib/pkgconfig/tmp
1096b9b448eSBen Walker	$(Q)mkdir -p build/bin
110c3b5ae0cSBen Walker	$(Q)mkdir -p build/fio
11185bdd43bSBen Walker	$(Q)mkdir -p build/examples
1123352b2a7SBen Walker	$(Q)mkdir -p build/include/spdk
1136b9b448eSBen Walker
11485bc2bbeSPawel Wodkowskiinclude/spdk/config.h: mk/config.mk scripts/genconfig.py
115acac4b38SJim Harris	$(Q)echo "#ifndef SPDK_CONFIG_H" > $@.tmp; \
11655bc3a72SPawel Wodkowski	echo "#define SPDK_CONFIG_H" >> $@.tmp; \
117b41f404dSJonathan Richardson	scripts/genconfig.py $(MAKEFLAGS) >> $@.tmp; \
11855bc3a72SPawel Wodkowski	echo "#endif /* SPDK_CONFIG_H */" >> $@.tmp; \
11992a02f58SDaniel Verkamp	cmp -s $@.tmp $@ || mv $@.tmp $@ ; \
12092a02f58SDaniel Verkamp	rm -f $@.tmp
12192a02f58SDaniel Verkamp
12254700c7eSJim Harriscc_version: mk/cc.mk
12354700c7eSJim Harris	$(Q)echo "SPDK using CC=$(CC)"; $(CC) -v
12454700c7eSJim Harris
12554700c7eSJim Harriscxx_version: mk/cc.mk
12654700c7eSJim Harris	$(Q)echo "SPDK using CXX=$(CXX)"; $(CXX) -v
12754700c7eSJim Harris
12834387cccSPawel Wodkowski.libs_only_other:
12934387cccSPawel Wodkowski	$(Q)echo -n '$(SYS_LIBS) '
13034387cccSPawel Wodkowski	$(Q)if [ "$(CONFIG_SHARED)" = "y" ]; then \
13134387cccSPawel Wodkowski		echo -n '-lspdk '; \
13234387cccSPawel Wodkowski	fi
13334387cccSPawel Wodkowski
13434387cccSPawel Wodkowski.ldflags:
13534387cccSPawel Wodkowski	$(Q)echo -n '$(LDFLAGS) '
13634387cccSPawel Wodkowski
13734387cccSPawel Wodkowskildflags: .ldflags .libs_only_other
13834387cccSPawel Wodkowski	$(Q)echo ''
13934387cccSPawel Wodkowski
1401010fb3aSDaniel Verkampinclude $(SPDK_ROOT_DIR)/mk/spdk.subdirs.mk
141