[meta-intel] [PATCH V3 1/2] meta-intel/common: Add include file for DPDK

Ong, Boon Leong boon.leong.ong at intel.com
Tue Sep 30 23:51:48 PDT 2014



> -----Original Message-----
> From: meta-intel-bounces at yoctoproject.org [mailto:meta-intel-
> bounces at yoctoproject.org] On Behalf Of
> sreeju.armughanx.selvaraj at intel.com
> Sent: Tuesday, September 30, 2014 10:43 AM
> To: meta-intel at yoctoproject.org
> Subject: [meta-intel] [PATCH V3 1/2] meta-intel/common: Add include file for
> DPDK
> 
> From: Sreeju Selvaraj <sreeju.armughanx.selvaraj at intel.com>
> 
> Added include file dpdk.inc to share the common functionality based on
> dpdk_1.6.0r2
> 
> Added a new variable EXAMPLE_BUILD_DIR. this points to apps build directory
> which is different in dpdk v1.6.0r2 and v1.7.0.
> User of dpdk.inc has to define EXAMPLE_BUILD_DIR for the installation of
> example apps
> 
> Signed-off-by: Sreeju Selvaraj <sreeju.armughanx.selvaraj at intel.com>
Acked-by: Ong Boon Leong <boon.leong.ong at intel.com>

> ---
>  common/recipes-extended/dpdk/dpdk.inc        | 139
> +++++++++++++++++++++++++
>  common/recipes-extended/dpdk/dpdk_1.6.0r2.bb | 150 +++---------------------
> ---
>  2 files changed, 154 insertions(+), 135 deletions(-)  create mode 100644
> common/recipes-extended/dpdk/dpdk.inc
> 
> diff --git a/common/recipes-extended/dpdk/dpdk.inc b/common/recipes-
> extended/dpdk/dpdk.inc
> new file mode 100644
> index 0000000..ef369df
> --- /dev/null
> +++ b/common/recipes-extended/dpdk/dpdk.inc
> @@ -0,0 +1,139 @@
> +DESCRIPTION = "Intel(r) Data Plane Development Kit"
> +HOMEPAGE = "http://dpdk.org"
> +LICENSE = "BSD & LGPLv2 & GPLv2"
> +LIC_FILES_CHKSUM =
> "file://LICENSE.GPL;md5=751419260aa954499f7abaabaa882bbe"
> +
> +
> +RDEPENDS_${PN} += "python-subprocess"
> +
> +inherit module
> +
> +export
> MODULE_DIR="/lib/modules/${KERNEL_VERSION}/kernel/drivers/net"
> +export RTE_SDK = "${S}"
> +export RTE_TARGET="${TARGET_ARCH}-ivshmem-${TARGET_OS}app-gcc"
> +export ICP_ROOT = "${PKG_CONFIG_SYSROOT_DIR}/usr/include"
> +export ICP_LIB_ROOT= "${PKG_CONFIG_SYSROOT_DIR}/usr/lib"
> +export RTE_KERNELDIR = "${STAGING_KERNEL_DIR}"
> +export INSTALL_PATH = "${prefix}/dpdk"
> +
> +
> +do_configure () {
> +
> 	######################################################
> #######
> +	### default value for prefix is "usr", unsetting it, so it
> +	### will not be concatenated in ${RTE_TARGET}/Makefile
> +	### which will cause compilation failure
> +
> 	######################################################
> #######
> +	unset prefix
> +
> +	make O=$RTE_TARGET T=$RTE_TARGET config
> +
> +}
> +
> +
> +do_compile () {
> +	unset LDFLAGS TARGET_LDFLAGS BUILD_LDFLAGS
> +
> +	cd ${S}/${RTE_TARGET}
> +	oe_runmake EXTRA_LDFLAGS=" --sysroot=${STAGING_DIR_HOST}" \
> +		   EXTRA_CFLAGS=" --sysroot=${STAGING_DIR_HOST}" \
> +		   CROSS="${TARGET_PREFIX}" \
> +		   prefix=""  LDFLAGS=""  WERROR_FLAGS="-w" V=1
> +
> +}
> +
> +
> +do_install () {
> +
> +	install -m 0755 -d	${D}/${INSTALL_PATH} \
> +				${D}/${INSTALL_PATH}/doc \
> +				${D}/${INSTALL_PATH}/tools \
> +				${D}/${INSTALL_PATH}/${RTE_TARGET} \
> +				${D}/${INSTALL_PATH}/${RTE_TARGET}/app \
> +				${D}${includedir} \
> +				${D}${includedir}/arch \
> +				${D}${includedir}/exec-env \
> +				${D}${libdir} \
> +				${D}${MODULE_DIR}
> +
> +	install -m 0755 ${S}/${RTE_TARGET}/kmod/igb_uio.ko
> 	${D}${MODULE_DIR}/
> +	install -m 0755 ${S}/${RTE_TARGET}/kmod/rte_kni.ko
> 	${D}${MODULE_DIR}/
> +
> +	install -m 640 ${S}/${RTE_TARGET}/lib/*.a		${D}${libdir}
> +
> +	install -m 640 ${S}/${RTE_TARGET}/.config
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/
> +	install -m 640 ${S}/${RTE_TARGET}/include/*.h
> 	${D}${includedir}/
> +	install -m 640 ${S}/${RTE_TARGET}/include/arch/*
> 	${D}${includedir}/arch/
> +	install -m 640 ${S}/${RTE_TARGET}/include/exec-env/*
> 	${D}${includedir}/exec-env/
> +	install -m 0755 ${S}/tools/*.py
> 	${D}/${INSTALL_PATH}/tools/
> +
> +
> +	#Install test applications
> +	install -m 0755 ${S}/${RTE_TARGET}/app/test
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> +	install -m 0755 ${S}/${RTE_TARGET}/app/testpmd
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> +	install -m 0755 ${S}/${RTE_TARGET}/app/dump_cfg
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> +	install -m 0755 ${S}/${RTE_TARGET}/app/cmdline_test
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> +
> +
> +	# Install example applications
> +	# It is expected that user of this include file should define
> EXAMPLES_BUILD_DIR
> +	for app in ${S}/examples/*
> +	do
> +		case `basename ${app}` in
> +		"dpdk_qat" | "vhost" | "vhost_xen" | "Makefile" ) continue
> +		;;
> +		"l2fwd-ivshmem")
> +		install -m 0755
> ${app}/guest/${EXAMPLES_BUILD_DIR}/app/guest
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> +		install -m 0755 ${app}/host/${EXAMPLES_BUILD_DIR}/app/host
> 		${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> +		continue
> +		;;
> +		"multi_process")
> +		install -m 0755
> ${app}/client_server_mp/mp_client/${EXAMPLES_BUILD_DIR}/app/mp_client
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> +		install -m 0755
> ${app}/client_server_mp/mp_server/${EXAMPLES_BUILD_DIR}/app/mp_serv
> er	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> +		install -m 0755
> ${app}/simple_mp/${EXAMPLES_BUILD_DIR}/app/simple_mp
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> +		install -m 0755
> ${app}/symmetric_mp/${EXAMPLES_BUILD_DIR}/app/symmetric_mp
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> +		continue
> +		;;
> +		"netmap_compat")
> +		install -m 0755
> ${app}/bridge/${EXAMPLES_BUILD_DIR}/app/bridge
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> +		continue
> +		;;
> +		"quota_watermark")
> +		install -m 0755 ${app}/qw/${EXAMPLES_BUILD_DIR}/app/qw
> 		${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> +		install -m 0755
> ${app}/qwctl/${EXAMPLES_BUILD_DIR}/app/qwctl
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> +		continue
> +		;;
> +		"vmdq")
> +		install -m 0755
> ${app}/${EXAMPLES_BUILD_DIR}/app/`basename ${app}`_app
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> +		continue
> +		;;
> +		"vmdq_dcb")
> +		install -m 0755
> ${app}/${EXAMPLES_BUILD_DIR}/app/`basename ${app}`_app
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> +		continue
> +		;;
> +		esac
> +
> +		install -m 0755
> ${app}/${EXAMPLES_BUILD_DIR}/app/`basename ${app}`
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> +	done
> +}
> +
> +PACKAGES += "${PN}-examples"
> +
> +FILES_${PN}-dbg += " \
> +	${INSTALL_PATH}/.debug \
> +	${INSTALL_PATH}/${RTE_TARGET}/app/.debug \
> +	"
> +
> +FILES_${PN}-doc += "\
> +	${INSTALL_PATH}/doc \
> +	"
> +
> +FILES_${PN}-dev += " \
> +	${INSTALL_PATH}/${RTE_TARGET}/.config \
> +	${includedir} \
> +	${includedir}/arch \
> +	${includedir}/exec-env \
> +	"
> +
> +FILES_${PN} +=  " ${INSTALL_PATH}/tools/ "
> +
> +FILES_${PN}-examples += " ${INSTALL_PATH}/${RTE_TARGET}/app/ "
> diff --git a/common/recipes-extended/dpdk/dpdk_1.6.0r2.bb
> b/common/recipes-extended/dpdk/dpdk_1.6.0r2.bb
> index cf06c4c..72f5768 100644
> --- a/common/recipes-extended/dpdk/dpdk_1.6.0r2.bb
> +++ b/common/recipes-extended/dpdk/dpdk_1.6.0r2.bb
> @@ -1,7 +1,4 @@
> -DESCRIPTION = "Intel(r) Data Plane Development Kit"
> -HOMEPAGE = "http://dpdk.org"
> -LICENSE = "BSD & LGPLv2 & GPLv2"
> -LIC_FILES_CHKSUM =
> "file://LICENSE.GPL;md5=751419260aa954499f7abaabaa882bbe"
> +include dpdk.inc
> 
> 
>  SRC_URI = "http://dpdk.org/browse/dpdk/snapshot/dpdk-
> ${PV}.tar.gz;name=dpdk \ @@ -14,41 +11,9 @@ SRC_URI =
> "http://dpdk.org/browse/dpdk/snapshot/dpdk-${PV}.tar.gz;name=dpdk \
> SRC_URI[dpdk.md5sum] = "f406d027320fc8e724bff20db5397cbb"
>  SRC_URI[dpdk.sha256sum] =
> "e72fdebcf8a899fc58e60c9b6493b7457576eece60b08dea6aee96c9087df4b2"
> 
> -RDEPENDS_${PN} += "python-subprocess"
> -
> -inherit module
> -
> -export
> MODULE_DIR="/lib/modules/${KERNEL_VERSION}/kernel/drivers/net"
> -export RTE_SDK = "${S}"
> -export RTE_TARGET="${TARGET_ARCH}-ivshmem-${TARGET_OS}app-gcc"
> -export ICP_ROOT = "${PKG_CONFIG_SYSROOT_DIR}/usr/include"
> -export ICP_LIB_ROOT= "${PKG_CONFIG_SYSROOT_DIR}/usr/lib"
> -export RTE_KERNELDIR = "${STAGING_KERNEL_DIR}"
> -export INSTALL_PATH = "${prefix}/dpdk"
> -
> -
> -do_configure () {
> -
> 	######################################################
> #######
> -	### default value for prefix is "usr", unsetting it, so it
> -	### will not be concatenated in ${RTE_TARGET}/Makefile
> -	### which will cause compilation failure
> -
> 	######################################################
> #######
> -	unset prefix
> -
> -	make O=$RTE_TARGET T=$RTE_TARGET config
> -
> -}
> -
> -
> -do_compile () {
> -	unset LDFLAGS TARGET_LDFLAGS BUILD_LDFLAGS
> -
> -	cd ${S}/${RTE_TARGET}
> -	oe_runmake EXTRA_LDFLAGS=" --sysroot=${STAGING_DIR_HOST}" \
> -		   EXTRA_CFLAGS=" --sysroot=${STAGING_DIR_HOST}" \
> -		   CROSS="${TARGET_PREFIX}" \
> -		   prefix=""  LDFLAGS=""  WERROR_FLAGS="-w" V=1
> +export EXAMPLES_BUILD_DIR = "build"
> 
> +do_compile_append () {
> 
> 
> 	######################################################
> #############
>  	### Compilation for examples
> @@ -62,104 +27,19 @@ do_compile () {
>  		[ `basename ${app}` = "dpdk_qat" -o `basename ${app}` =
> "vhost"  -o  `basename ${app}` = "vhost_xen" ] && continue;
> 
>  		cd ${app}
> -		oe_runmake CROSS="${TARGET_PREFIX}"
> -	done
> -
> -}
> -
> -
> -do_install () {
> -
> -	install -m 0755 -d	${D}/${INSTALL_PATH} \
> -				${D}/${INSTALL_PATH}/doc \
> -				${D}/${INSTALL_PATH}/tools \
> -				${D}/${INSTALL_PATH}/${RTE_TARGET} \
> -				${D}/${INSTALL_PATH}/${RTE_TARGET}/app \
> -				${D}${includedir} \
> -				${D}${includedir}/arch \
> -				${D}${includedir}/exec-env \
> -				${D}${libdir} \
> -				${D}${MODULE_DIR}
> 
> -	install -m 0755 ${S}/${RTE_TARGET}/kmod/igb_uio.ko
> 	${D}${MODULE_DIR}/
> -	install -m 0755 ${S}/${RTE_TARGET}/kmod/rte_kni.ko
> 	${D}${MODULE_DIR}/
> -
> -	install -m 640 ${S}/${RTE_TARGET}/lib/*.a		${D}${libdir}
> -
> -	install -m 640 ${S}/${RTE_TARGET}/.config
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/
> -	install -m 640 ${S}/${RTE_TARGET}/include/*.h
> 	${D}${includedir}/
> -	install -m 640 ${S}/${RTE_TARGET}/include/arch/*
> 	${D}${includedir}/arch/
> -	install -m 640 ${S}/${RTE_TARGET}/include/exec-env/*
> 	${D}${includedir}/exec-env/
> -	install -m 0755 ${S}/tools/igb_uio_bind.py
> 	${D}/${INSTALL_PATH}/tools/
> -	install -m 0755 ${S}/tools/cpu_layout.py
> 	${D}/${INSTALL_PATH}/tools/
> -
> -
> -	#Install test applications
> -	install -m 0755 ${S}/${RTE_TARGET}/app/test
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> -	install -m 0755 ${S}/${RTE_TARGET}/app/testpmd
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> -	install -m 0755 ${S}/${RTE_TARGET}/app/dump_cfg
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> -	install -m 0755 ${S}/${RTE_TARGET}/app/cmdline_test
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> -
> -
> -	#Install example applications
> -	for app in ${S}/examples/*
> -	do
> -		case `basename ${app}` in
> -		"dpdk_qat" | "vhost" | "vhost_xen" ) continue
> -		;;
> -		"l2fwd-ivshmem")
> -		install -m 0755 ${app}/guest/build/app/guest
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> -		install -m 0755 ${app}/host/build/app/host
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> -		continue
> -		;;
> -		"multi_process")
> -		install -m 0755
> ${app}/client_server_mp/mp_client/build/app/mp_client
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> -		install -m 0755
> ${app}/client_server_mp/mp_server/build/app/mp_server
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> -		install -m 0755 ${app}/simple_mp/build/app/simple_mp
> 		${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> -		install -m 0755
> ${app}/symmetric_mp/build/app/symmetric_mp
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> -		continue
> -		;;
> -		"netmap_compat")
> -		install -m 0755 ${app}/build/app/bridge
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> -		continue
> -		;;
> -		"quota_watermark")
> -		install -m 0755 ${app}/qw/build/app/qw
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> -		install -m 0755 ${app}/qwctl/build/app/qwctl
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> -		continue
> -		;;
> -		"vmdq")
> -		install -m 0755 ${app}/build/app/`basename ${app}`_app
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> -		continue
> -		;;
> -		"vmdq_dcb")
> -		install -m 0755 ${app}/build/app/`basename ${app}`_app
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> -		continue
> -		;;
> -		esac
> -
> -		install -m 0755 ${app}/build/app/`basename ${app}`
> 	${D}/${INSTALL_PATH}/${RTE_TARGET}/app
> +
> 	######################################################
> #########
> +		# netmap_compat is putting the binary in a directory path
> +		# which is different from rest of the example apps, so this
> +		# special case is handled here to avoid installation failure
> +		# with dpdk-1.6.0
> +
> 	######################################################
> #########
> +		if [ `basename ${app}` == "netmap_compat" ]; then
> +			oe_runmake CROSS="${TARGET_PREFIX}"
> O="${app}/bridge/${EXAMPLES_BUILD_DIR}/"
> +		else
> +			oe_runmake CROSS="${TARGET_PREFIX}"
> +		fi
>  	done
> -}
> -
> -PACKAGES += "${PN}-examples"
> -
> -FILES_${PN}-dbg += " \
> -	${INSTALL_PATH}/.debug \
> -	${INSTALL_PATH}/${RTE_TARGET}/app/.debug \
> -	"
> 
> -FILES_${PN}-doc += "\
> -	${INSTALL_PATH}/doc \
> -	"
> -
> -FILES_${PN}-dev += " \
> -	${INSTALL_PATH}/${RTE_TARGET}/.config \
> -	${includedir} \
> -	${includedir}/arch \
> -	${includedir}/exec-env \
> -	"
> -
> -FILES_${PN} +=  " ${INSTALL_PATH}/tools/ "
> +}
> 
> -FILES_${PN}-examples += " ${INSTALL_PATH}/${RTE_TARGET}/app/ "
> --
> 1.9.1
> 
> --
> _______________________________________________
> meta-intel mailing list
> meta-intel at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/meta-intel


More information about the meta-intel mailing list