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