]> git.proxmox.com Git - ceph.git/blob - ceph/src/spdk/dpdkbuild/Makefile
import 15.2.0 Octopus source
[ceph.git] / ceph / src / spdk / dpdkbuild / Makefile
1 #
2 # BSD LICENSE
3 #
4 # Copyright (c) Intel Corporation.
5 # All rights reserved.
6 #
7 # Redistribution and use in source and binary forms, with or without
8 # modification, are permitted provided that the following conditions
9 # are met:
10 #
11 # * Redistributions of source code must retain the above copyright
12 # notice, this list of conditions and the following disclaimer.
13 # * Redistributions in binary form must reproduce the above copyright
14 # notice, this list of conditions and the following disclaimer in
15 # the documentation and/or other materials provided with the
16 # distribution.
17 # * Neither the name of Intel Corporation nor the names of its
18 # contributors may be used to endorse or promote products derived
19 # from this software without specific prior written permission.
20 #
21 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 #
33
34 SPDK_ROOT_DIR := $(abspath $(CURDIR)/..)
35 include $(SPDK_ROOT_DIR)/mk/spdk.common.mk
36
37 .PHONY: all clean install uninstall
38
39 DPDK_FRAMEWORK = n
40 DPDK_OPTS =
41 DPDK_CFLAGS =
42
43 ifeq ($(CONFIG_CRYPTO),y)
44 DPDK_FRAMEWORK = y
45 DPDK_OPTS += CONFIG_RTE_LIBRTE_PMD_AESNI_MB=y
46 DPDK_OPTS += CONFIG_RTE_LIBRTE_REORDER=y
47 DPDK_CFLAGS += -I$(IPSEC_MB_DIR)
48 DPDK_LDFLAGS += -L$(IPSEC_MB_DIR)
49 else
50 DPDK_OPTS += CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n
51 DPDK_OPTS += CONFIG_RTE_LIBRTE_REORDER=n
52 endif
53
54 ifeq ($(CONFIG_REDUCE),y)
55 DPDK_FRAMEWORK = y
56 DPDK_OPTS += CONFIG_RTE_LIBRTE_PMD_ISAL=y
57 DPDK_CFLAGS += -I$(ISAL_DIR)
58 DPDK_LDFLAGS += -L$(ISAL_DIR)/.libs
59 else
60 DPDK_OPTS += CONFIG_RTE_LIBRTE_PMD_ISAL=n
61 endif
62
63 ifeq ($(DPDK_FRAMEWORK),y)
64 DPDK_OPTS += CONFIG_RTE_LIBRTE_PMD_QAT=y
65 DPDK_OPTS += CONFIG_RTE_LIBRTE_PMD_QAT_SYM=y
66 ifeq ($(CONFIG_IGB_UIO_DRIVER),y)
67 DPDK_OPTS += CONFIG_RTE_EAL_IGB_UIO=y
68 else
69 DPDK_OPTS += CONFIG_RTE_EAL_IGB_UIO=n
70 endif
71 else
72 DPDK_OPTS += CONFIG_RTE_LIBRTE_PMD_QAT=n
73 DPDK_OPTS += CONFIG_RTE_LIBRTE_PMD_QAT_SYM=n
74 endif
75
76 ifeq ($(TARGET_MACHINE),aarch64)
77 DPDK_CONFIG := arm64-armv8a
78 else
79 DPDK_CONFIG := $(TARGET_MACHINE)-native
80 endif
81
82 ifeq ($(OS),Linux)
83 DPDK_CONFIG := $(DPDK_CONFIG)-linuxapp
84 NPROC := $(shell nproc)
85 else
86 ifeq ($(OS),FreeBSD)
87 DPDK_CONFIG := $(DPDK_CONFIG)-bsdapp
88 NPROC := $(shell sysctl hw.ncpu | awk '{print $$NF}')
89 endif
90 endif
91
92 ifeq ($(CC_TYPE),clang)
93 DPDK_CONFIG := $(DPDK_CONFIG)-clang
94 else
95 DPDK_CONFIG := $(DPDK_CONFIG)-gcc
96 endif
97
98 DPDK_CFLAGS += -fPIC
99
100 ifeq ($(CONFIG_DEBUG),y)
101 DPDK_CFLAGS += -O0 -g
102 endif
103
104 ifeq ($(CONFIG_WERROR),y)
105 DPDK_CFLAGS += -Werror
106 else
107 DPDK_CFLAGS += -Wno-error
108 endif
109
110 ifdef EXTRA_DPDK_CFLAGS
111 $(warning EXTRA_DPDK_CFLAGS defined, possibly to work around an unsupported compiler version)
112 $(shell sleep 1)
113 endif
114
115 # Allow users to specify EXTRA_DPDK_CFLAGS if they want to build DPDK using unsupported compiler versions
116 DPDK_CFLAGS += $(EXTRA_DPDK_CFLAGS)
117
118 $(SPDK_ROOT_DIR)/dpdk/build:
119 $(Q)$(MAKE) -C $(SPDK_ROOT_DIR)/dpdk config T=$(DPDK_CONFIG) $(DPDK_OPTS)
120
121 all: $(SPDK_ROOT_DIR)/dpdk/build
122 $(Q)$(MAKE) -C $(SPDK_ROOT_DIR)/dpdk/build EXTRA_CFLAGS="$(DPDK_CFLAGS)" EXTRA_LDFLAGS="$(DPDK_LDFLAGS)" MAKEFLAGS="T=$(DPDK_CONFIG) -j$(NPROC)" $(DPDK_OPTS)
123
124 clean:
125 $(Q)rm -rf $(SPDK_ROOT_DIR)/dpdk/build
126
127 install: all
128
129 uninstall:
130 @: