diff options
Diffstat (limited to 'recipes-extended/dpdk/dpdk.inc')
-rw-r--r-- | recipes-extended/dpdk/dpdk.inc | 191 |
1 files changed, 5 insertions, 186 deletions
diff --git a/recipes-extended/dpdk/dpdk.inc b/recipes-extended/dpdk/dpdk.inc index 64f8571..c38698d 100644 --- a/recipes-extended/dpdk/dpdk.inc +++ b/recipes-extended/dpdk/dpdk.inc | |||
@@ -1,193 +1,12 @@ | |||
1 | DESCRIPTION = "Intel(r) Data Plane Development Kit" | 1 | DESCRIPTION = "Intel(r) Data Plane Development Kit" |
2 | HOMEPAGE = "http://dpdk.org" | 2 | HOMEPAGE = "http://dpdk.org" |
3 | 3 | ||
4 | STABLE = "" | 4 | LICENSE = "BSD-3-Clause & LGPLv2.1 & GPLv2" |
5 | BRANCH = "main" | 5 | LIC_FILES_CHKSUM = "file://license/gpl-2.0.txt;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ |
6 | S = "${WORKDIR}/git" | 6 | file://license/lgpl-2.1.txt;md5=4b54a1fd55a448865a0b32d41598759d \ |
7 | file://license/bsd-3-clause.txt;md5=0f00d99239d922ffd13cabef83b33444" | ||
7 | 8 | ||
8 | SRC_URI = "git://dpdk.org/dpdk${STABLE};branch=${BRANCH} \ | 9 | SRC_URI = "git://dpdk.org/dpdk${STABLE};branch=${BRANCH} \ |
9 | file://dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch \ | 10 | " |
10 | file://dpdk-16.07-add-sysroot-option-within-app-makefile.patch \ | ||
11 | " | ||
12 | |||
13 | COMPATIBLE_MACHINE = "null" | ||
14 | COMPATIBLE_HOST_libc-musl_class-target = "null" | ||
15 | COMPATIBLE_HOST_linux-gnux32 = "null" | ||
16 | |||
17 | # dpdk example apps dpdk_qat and vhost have dependancy on fuse and qat. | ||
18 | # fuse is in meta-filesystems and qat is not yet upstreamed. | ||
19 | # So adding mechanism to explicitly disable the use of fuse and qat. | ||
20 | # To enable, uncomment the below line or include in .bbappend. | ||
21 | # PACKAGECONFIG ?= " dpdk_qat vhost libvirt" | ||
22 | |||
23 | PACKAGECONFIG[dpdk_qat] = ",,virtual/qat" | ||
24 | PACKAGECONFIG[vhost] = ",,fuse" | ||
25 | PACKAGECONFIG[libvirt] = ",,libvirt" | ||
26 | PACKAGECONFIG[numa] = ",,numactl" | ||
27 | |||
28 | export CONFIG_EXAMPLE_DPDK_QAT = "${@bb.utils.contains('PACKAGECONFIG', 'dpdk_qat', 'y', 'n', d)}" | ||
29 | export CONFIG_EXAMPLE_VM_POWER_MANAGER = "${@bb.utils.contains('PACKAGECONFIG', 'libvirt', 'y', 'n', d)}" | ||
30 | export CONFIG_VHOST_ENABLED = "${@bb.utils.contains('PACKAGECONFIG', 'vhost', 'y', 'n', d)}" | ||
31 | export CONFIG_HAVE_NUMA = "${@bb.utils.contains('PACKAGECONFIG', 'numa', 'y', 'n', d)}" | ||
32 | |||
33 | # Don't use the default value of datadir and let the dpdk set it to a dpdk | ||
34 | # specific directory | ||
35 | datadir[unexport] = "1" | ||
36 | |||
37 | RDEPENDS_${PN} += "pciutils python3-core" | ||
38 | DEPENDS = "virtual/kernel" | ||
39 | do_configure[depends] += "virtual/kernel:do_shared_workdir" | ||
40 | |||
41 | inherit module | ||
42 | |||
43 | export MODULE_DIR="${nonarch_base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net" | ||
44 | export RTE_SDK = "${S}" | ||
45 | |||
46 | export ICP_ROOT = "${PKG_CONFIG_SYSROOT_DIR}/usr/include" | ||
47 | export ICP_LIB_ROOT= "${PKG_CONFIG_SYSROOT_DIR}/usr/lib" | ||
48 | export RTE_KERNELDIR = "${STAGING_KERNEL_DIR}" | ||
49 | export RTE_KERNELDIR_OUT = "${STAGING_KERNEL_BUILDDIR}" | ||
50 | export INSTALL_PATH = "${prefix}/share/dpdk" | ||
51 | export RTE_OUTPUT = "${S}/${RTE_TARGET}" | ||
52 | export ETHTOOL_LIB_PATH = "${S}/examples/ethtool/lib/${RTE_TARGET}/" | ||
53 | export SYSROOTPATH = "--sysroot=${STAGING_DIR_HOST}" | ||
54 | export DPDK_TARGET_MACH = "${@get_dpdk_target_mach(bb,d)}" | ||
55 | export ICP_LAC_API_DIR = "${STAGING_DIR_TARGET}${includedir}/lac" | ||
56 | |||
57 | export EXAMPLES_BUILD_DIR = "${RTE_TARGET}" | ||
58 | export ARCHDIR = "generic" | ||
59 | |||
60 | DPDK_RTE_TARGET_x86-64 = "x86_64-native-linuxapp-gcc" | ||
61 | DPDK_RTE_TARGET_x86 = "i686-native-linuxapp-gcc" | ||
62 | DPDK_RTE_TARGET_aarch64 = "arm64-${DPDK_TARGET_MACH}-linuxapp-gcc" | ||
63 | export RTE_TARGET = "${DPDK_RTE_TARGET}" | ||
64 | |||
65 | # Workaround failure on gcc10 | ||
66 | TOOLCHAIN_OPTIONS += "-Wno-error=maybe-uninitialized" | ||
67 | |||
68 | CONFIG_NAME = "common_linux" | ||
69 | TEST_DIR = "test" | ||
70 | |||
71 | # The list of intel Comms platforms and their target machine | ||
72 | # process mapping. The supported target machine is listed under | ||
73 | # dpdk/mk/machine | ||
74 | def get_dpdk_target_mach(bb, d): | ||
75 | target_arch = d.getVar('DPDK_TARGET_MACHINE', True) | ||
76 | if target_arch: | ||
77 | return target_arch | ||
78 | return "default" | ||
79 | |||
80 | do_configure () { | ||
81 | ############################################################# | ||
82 | ### default value for prefix is "usr", unsetting it, so it | ||
83 | ### will not be concatenated in ${RTE_TARGET}/Makefile | ||
84 | ### which will cause compilation failure | ||
85 | ############################################################# | ||
86 | unset prefix | ||
87 | |||
88 | # Fix-up CONFIG_RTE_MACHINE based on target machine | ||
89 | sed -e "s#CONFIG_RTE_MACHINE=\"native\"#CONFIG_RTE_MACHINE=\"${DPDK_TARGET_MACH}\"#" -i ${S}/config/defconfig_${RTE_TARGET} | ||
90 | |||
91 | # Fix-up vhost configs based on package config | ||
92 | sed -e "s#CONFIG_RTE_KNI_VHOST=n#CONFIG_RTE_KNI_VHOST=${CONFIG_VHOST_ENABLED}#" -i ${S}/config/${CONFIG_NAME} | ||
93 | sed -e "s#CONFIG_RTE_KNI_VHOST_VNET_HDR_EN=n#CONFIG_RTE_KNI_VHOST_VNET_HDR_EN=${CONFIG_VHOST_ENABLED}#" -i ${S}/config/${CONFIG_NAME} | ||
94 | sed -e "s#CONFIG_RTE_LIBRTE_VHOST=n#CONFIG_RTE_LIBRTE_VHOST=${CONFIG_VHOST_ENABLED}#" -i ${S}/config/${CONFIG_NAME} | ||
95 | sed -e "s#CONFIG_RTE_LIBRTE_VHOST_NUMA=.*#CONFIG_RTE_LIBRTE_VHOST_NUMA=${CONFIG_HAVE_NUMA}#" -i ${S}/config/${CONFIG_NAME} | ||
96 | sed -e "s#CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=.*#CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES=${CONFIG_HAVE_NUMA}#" -i ${S}/config/${CONFIG_NAME} | ||
97 | |||
98 | # Fix-up CONFIG_RTE_LIBRTE_POWER based on package config for libvirt | ||
99 | sed -e "s#CONFIG_RTE_LIBRTE_POWER=y#CONFIG_RTE_LIBRTE_POWER=${CONFIG_EXAMPLE_VM_POWER_MANAGER}#" -i ${S}/config/${CONFIG_NAME} | ||
100 | |||
101 | make O=$RTE_TARGET T=$RTE_TARGET config | ||
102 | } | ||
103 | |||
104 | do_compile () { | ||
105 | unset LDFLAGS TARGET_LDFLAGS BUILD_LDFLAGS | ||
106 | |||
107 | cd ${S}/${RTE_TARGET} | ||
108 | oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu" \ | ||
109 | EXTRA_CFLAGS="${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} -I${STAGING_INCDIR}" \ | ||
110 | CROSS="${TARGET_PREFIX}" \ | ||
111 | prefix="" LDFLAGS="${TUNE_LDARGS}" WERROR_FLAGS="-w" V=1 | ||
112 | |||
113 | cd ${S}/examples/ | ||
114 | oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu -fuse-ld=bfd" \ | ||
115 | EXTRA_CFLAGS="${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} -O3 -I${STAGING_INCDIR}" \ | ||
116 | CROSS="${TARGET_PREFIX}" O="${S}/examples/$@/" | ||
117 | |||
118 | cd ${S}/${TEST_DIR}/ | ||
119 | oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu -fuse-ld=bfd" \ | ||
120 | EXTRA_CFLAGS="${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS} -O3 -I${STAGING_INCDIR}" \ | ||
121 | CROSS="${TARGET_PREFIX}" O="${S}/${TEST_DIR}/$@/" | ||
122 | } | ||
123 | |||
124 | do_install () { | ||
125 | oe_runmake O=${RTE_OUTPUT} T= install-runtime DESTDIR=${D} | ||
126 | oe_runmake O=${RTE_OUTPUT} T= install-kmod DESTDIR=${D} kerneldir=${MODULE_DIR} | ||
127 | oe_runmake O=${RTE_OUTPUT} T= install-sdk DESTDIR=${D} | ||
128 | |||
129 | # Install examples | ||
130 | for dirname in ${S}/examples/* | ||
131 | do | ||
132 | install -m 0755 -d ${D}/${INSTALL_PATH}/examples/`basename ${dirname}` | ||
133 | |||
134 | for appname in `find ${dirname} -regex ".*${EXAMPLES_BUILD_DIR}\/app\/[-0-9a-zA-Z0-9/_]*$"` | ||
135 | do | ||
136 | install -m 755 ${appname} ${D}/${INSTALL_PATH}/examples/`basename ${dirname}`/ | ||
137 | done | ||
138 | done | ||
139 | |||
140 | # Install test | ||
141 | for dirname in ${S}/${TEST_DIR}/app/* | ||
142 | do | ||
143 | install -m 0755 -d ${D}/${INSTALL_PATH}/test | ||
144 | |||
145 | for appname in `find ${dirname} -regex ".*test\/app\/[-0-9a-zA-Z0-9/_]*$"` | ||
146 | do | ||
147 | install -m 755 ${appname} ${D}/${INSTALL_PATH}/test | ||
148 | done | ||
149 | done | ||
150 | |||
151 | cp -r ${S}/mk ${D}${INSTALL_PATH}/ | ||
152 | |||
153 | for ss in $(find ${D} -type f -name "*.py"); do | ||
154 | sed -i -e "1s,#!.*python.*,#!${USRBINPATH}/env python3," ${ss} | ||
155 | done | ||
156 | } | ||
157 | |||
158 | PACKAGES += "${PN}-examples ${PN}-test" | ||
159 | |||
160 | FILES_${PN}-dbg += " \ | ||
161 | ${INSTALL_PATH}/.debug \ | ||
162 | ${INSTALL_PATH}/examples/*/.debug \ | ||
163 | " | ||
164 | |||
165 | FILES_${PN}-doc += "\ | ||
166 | ${INSTALL_PATH}/doc \ | ||
167 | " | ||
168 | |||
169 | FILES_${PN}-dev += " \ | ||
170 | ${INSTALL_PATH}/${RTE_TARGET}/.config \ | ||
171 | ${includedir} \ | ||
172 | ${includedir}/${ARCHDIR} \ | ||
173 | ${includedir}/exec-env \ | ||
174 | ${INSTALL_PATH}/buildtools/ \ | ||
175 | ${INSTALL_PATH}/${RTE_TARGET}/include \ | ||
176 | ${INSTALL_PATH}/${RTE_TARGET}/lib \ | ||
177 | ${INSTALL_PATH}/mk \ | ||
178 | " | ||
179 | |||
180 | FILES_${PN} += " ${INSTALL_PATH}/usertools/ \ | ||
181 | ${prefix}/sbin/ \ | ||
182 | ${prefix}/bin/ \ | ||
183 | ${libdir}/ \ | ||
184 | " | ||
185 | FILES_${PN}-examples += " \ | ||
186 | ${INSTALL_PATH}/examples/* \ | ||
187 | " | ||
188 | |||
189 | FILES_${PN}-test += " \ | ||
190 | ${INSTALL_PATH}/test \ | ||
191 | " | ||
192 | 11 | ||
193 | CVE_PRODUCT = "data_plane_development_kit" | 12 | CVE_PRODUCT = "data_plane_development_kit" |