From eb8dc40360f0cfef56fb6947cc817a547d6d9bc6 Mon Sep 17 00:00:00 2001 From: Dave Cobbley Date: Tue, 14 Aug 2018 10:05:37 -0700 Subject: [Subtree] Removing import-layers directory As part of the move to subtrees, need to bring all the import layers content to the top level. Change-Id: I4a163d10898cbc6e11c27f776f60e1a470049d8f Signed-off-by: Dave Cobbley Signed-off-by: Brad Bishop --- .../meta-networking/classes/waf-samba.bbclass | 119 +++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 meta-openembedded/meta-networking/classes/waf-samba.bbclass (limited to 'meta-openembedded/meta-networking/classes') diff --git a/meta-openembedded/meta-networking/classes/waf-samba.bbclass b/meta-openembedded/meta-networking/classes/waf-samba.bbclass new file mode 100644 index 000000000..1632c3c60 --- /dev/null +++ b/meta-openembedded/meta-networking/classes/waf-samba.bbclass @@ -0,0 +1,119 @@ +# waf is a build system which is used by samba related project. +# Obtain details from https://wiki.samba.org/index.php/Waf +# +inherit qemu pythonnative + +DEPENDS += "qemu-native libxslt-native docbook-xsl-stylesheets-native python" + +CONFIGUREOPTS = " --prefix=${prefix} \ + --bindir=${bindir} \ + --sbindir=${sbindir} \ + --libexecdir=${libexecdir} \ + --datadir=${datadir} \ + --sysconfdir=${sysconfdir} \ + --sharedstatedir=${sharedstatedir} \ + --localstatedir=${localstatedir} \ + --libdir=${libdir} \ + --includedir=${includedir} \ + --oldincludedir=${oldincludedir} \ + --infodir=${infodir} \ + --mandir=${mandir} \ + ${PACKAGECONFIG_CONFARGS} \ + " + +# avoids build breaks when using no-static-libs.inc +DISABLE_STATIC = "" + +def get_waf_parallel_make(d): + pm = d.getVar('PARALLEL_MAKE') + if pm: + # look for '-j' and throw other options (e.g. '-l') away + # because they might have different meaning in bjam + pm = pm.split() + while pm: + opt = pm.pop(0) + if opt == '-j': + v = pm.pop(0) + elif opt.startswith('-j'): + v = opt[2:].strip() + else: + continue + + v = min(64, int(v)) + return '-j' + str(v) + + return "" + +# Three methods for waf cross compile: +# 1. answers: +# Only --cross-answers - try the cross-answers file, and if +# there's no corresponding answer, add to the file and mark +# the configure process as unfinished. +# 2. exec: +# Only --cross-execute - get the answer from cross-execute, +# an emulator (qemu) is used to run cross-compiled binaries. +# 3. both: +# (notes: not supported in lower version of some packages, +# please check buildtools/wafsamba/samba_cross.py in the +# package source) +# Try the cross-answers file first, and if there is no +# corresponding answer, use cross-execute to get an answer, +# and add that answer to the file. +# +# The first one is preferred since it may fail with 2 or 3 if +# the target board is not suported by qemu, but we can use 2 or 3 +# to help generate the cross answer when adding new board support. +CROSS_METHOD ?= "answer" + +do_configure() { + + # Prepare the cross-answers file + WAF_CROSS_ANSWERS_PATH="${THISDIR}/../../files/waf-cross-answers" + CROSS_ANSWERS="${B}/cross-answers-${TARGET_ARCH}.txt" + if [ -e ${CROSS_ANSWERS} ]; then + rm -f ${CROSS_ANSWERS} + fi + echo 'Checking uname machine type: "${TARGET_ARCH}"' >> ${CROSS_ANSWERS} + echo 'Checking uname release type: "${OLDEST_KERNEL}"' >> ${CROSS_ANSWERS} + cat ${WAF_CROSS_ANSWERS_PATH}/cross-answers-${TARGET_ARCH}.txt >> ${CROSS_ANSWERS} + + qemu_binary="${@qemu_target_binary(d)}" + if [ "${qemu_binary}" = "qemu-allarch" ]; then + qemu_binary="qemuwrapper" + fi + + libdir_qemu="${STAGING_DIR_HOST}/${libdir}" + base_libdir_qemu="${STAGING_DIR_HOST}/${base_libdir}" + + CROSS_EXEC="${qemu_binary} \ + ${QEMU_OPTIONS} \ + -L ${STAGING_DIR_HOST} \ + -E LD_LIBRARY_PATH=${libdir_qemu}:${base_libdir_qemu}" + + export BUILD_ARCH=${BUILD_ARCH} + export HOST_ARCH=${HOST_ARCH} + export STAGING_LIBDIR=${STAGING_LIBDIR} + export STAGING_INCDIR=${STAGING_INCDIR} + export PYTHONPATH=${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR} + + CONFIG_CMD="./configure ${CONFIGUREOPTS} ${EXTRA_OECONF} --cross-compile" + if [ "${CROSS_METHOD}" = "answer" ]; then + ${CONFIG_CMD} --cross-answers="${CROSS_ANSWERS}" + elif [ "${CROSS_METHOD}" = "exec" ]; then + ${CONFIG_CMD} --cross-exec="${CROSS_EXEC}" + elif [ "${CROSS_METHOD}" = "both" ]; then + ${CONFIG_CMD} --cross-answers="${CROSS_ANSWERS}" --cross-exec="${CROSS_EXEC}" + else + echo "ERROR: ${CROSS_METHOD} is not valid for cross-compile!" + exit 1 + fi +} + +do_compile[progress] = "outof:^\[\s*(\d+)/\s*(\d+)\]\s+" +do_compile () { + python ./buildtools/bin/waf ${@oe.utils.parallel_make_argument(d, '-j%d', limit=64)} +} + +do_install() { + oe_runmake install DESTDIR=${D} +} -- cgit v1.2.3