| Patrick Williams | b48b7b4 | 2016-08-17 15:04:38 -0500 | [diff] [blame] | 1 | # waf is a build system which is used by samba related project. | 
|  | 2 | # Obtain details from https://wiki.samba.org/index.php/Waf | 
|  | 3 | # | 
|  | 4 | inherit qemu pythonnative | 
|  | 5 |  | 
|  | 6 | DEPENDS += "qemu-native libxslt-native docbook-xsl-stylesheets-native python" | 
|  | 7 |  | 
|  | 8 | CONFIGUREOPTS = " --prefix=${prefix} \ | 
|  | 9 | --bindir=${bindir} \ | 
|  | 10 | --sbindir=${sbindir} \ | 
|  | 11 | --libexecdir=${libexecdir} \ | 
|  | 12 | --datadir=${datadir} \ | 
|  | 13 | --sysconfdir=${sysconfdir} \ | 
|  | 14 | --sharedstatedir=${sharedstatedir} \ | 
|  | 15 | --localstatedir=${localstatedir} \ | 
|  | 16 | --libdir=${libdir} \ | 
|  | 17 | --includedir=${includedir} \ | 
|  | 18 | --oldincludedir=${oldincludedir} \ | 
|  | 19 | --infodir=${infodir} \ | 
|  | 20 | --mandir=${mandir} \ | 
|  | 21 | " | 
|  | 22 |  | 
|  | 23 | # Three methods for waf cross compile: | 
|  | 24 | # 1. answers: | 
|  | 25 | #    Only --cross-answers - try the cross-answers file, and if | 
|  | 26 | #    there's no corresponding answer, add to the file and mark | 
|  | 27 | #    the configure process as unfinished. | 
|  | 28 | # 2. exec: | 
|  | 29 | #    Only --cross-execute - get the answer from cross-execute, | 
|  | 30 | #    an emulator (qemu) is used to run cross-compiled binaries. | 
|  | 31 | # 3. both: | 
|  | 32 | #    (notes: not supported in lower version of some packages, | 
|  | 33 | #     please check buildtools/wafsamba/samba_cross.py in the | 
|  | 34 | #     package source) | 
|  | 35 | #    Try the cross-answers file first, and if there is no | 
|  | 36 | #    corresponding answer, use cross-execute to get an answer, | 
|  | 37 | #    and add that answer to the file. | 
|  | 38 | # | 
|  | 39 | # The first one is preferred since it may fail with 2 or 3 if | 
|  | 40 | # the target board is not suported by qemu, but we can use 2 or 3 | 
|  | 41 | # to help generate the cross answer when adding new board support. | 
|  | 42 | CROSS_METHOD ?= "answer" | 
|  | 43 |  | 
|  | 44 | do_configure() { | 
|  | 45 |  | 
|  | 46 | # Prepare the cross-answers file | 
|  | 47 | CROSS_ANSWERS="${B}/cross-answers-${TARGET_ARCH}.txt" | 
|  | 48 | if [ -e ${CROSS_ANSWERS} ]; then | 
|  | 49 | rm -f ${CROSS_ANSWERS} | 
|  | 50 | fi | 
|  | 51 | echo 'Checking uname machine type: "${TARGET_ARCH}"' >> ${CROSS_ANSWERS} | 
|  | 52 | echo 'Checking uname release type: "${OLDEST_KERNEL}"' >> ${CROSS_ANSWERS} | 
|  | 53 | cat ${WAF_CROSS_ANSWERS_PATH}/cross-answers-${TARGET_ARCH}.txt >> ${CROSS_ANSWERS} | 
|  | 54 |  | 
|  | 55 | qemu_binary="${@qemu_target_binary(d)}" | 
|  | 56 | if [ "${qemu_binary}" = "qemu-allarch" ]; then | 
|  | 57 | qemu_binary="qemuwrapper" | 
|  | 58 | fi | 
|  | 59 |  | 
|  | 60 | libdir_qemu="${STAGING_DIR_HOST}/${libdir}" | 
|  | 61 | base_libdir_qemu="${STAGING_DIR_HOST}/${base_libdir}" | 
|  | 62 |  | 
|  | 63 | CROSS_EXEC="${qemu_binary} \ | 
|  | 64 | ${QEMU_OPTIONS} \ | 
|  | 65 | -L ${STAGING_DIR_HOST} \ | 
|  | 66 | -E LD_LIBRARY_PATH=${libdir_qemu}:${base_libdir_qemu}" | 
|  | 67 |  | 
|  | 68 | export BUILD_SYS=${BUILD_SYS} | 
|  | 69 | export HOST_SYS=${HOST_SYS} | 
|  | 70 | export BUILD_ARCH=${BUILD_ARCH} | 
|  | 71 | export HOST_ARCH=${HOST_ARCH} | 
|  | 72 | export STAGING_LIBDIR=${STAGING_LIBDIR} | 
|  | 73 | export STAGING_INCDIR=${STAGING_INCDIR} | 
|  | 74 | export PYTHONPATH=${STAGING_DIR_HOST}${PYTHON_SITEPACKAGES_DIR} | 
|  | 75 |  | 
|  | 76 | CONFIG_CMD="./configure ${CONFIGUREOPTS} ${EXTRA_OECONF} --cross-compile" | 
|  | 77 | if [ "${CROSS_METHOD}" = "answer" ]; then | 
|  | 78 | ${CONFIG_CMD} --cross-answers="${CROSS_ANSWERS}" | 
|  | 79 | elif [ "${CROSS_METHOD}" = "exec" ]; then | 
|  | 80 | ${CONFIG_CMD} --cross-exec="${CROSS_EXEC}" | 
|  | 81 | elif [ "${CROSS_METHOD}" = "both" ]; then | 
|  | 82 | ${CONFIG_CMD} --cross-answers="${CROSS_ANSWERS}" --cross-exec="${CROSS_EXEC}" | 
|  | 83 | else | 
|  | 84 | echo "ERROR: ${CROSS_METHOD} is not valid for cross-compile!" | 
|  | 85 | exit 1 | 
|  | 86 | fi | 
|  | 87 | } | 
|  | 88 |  | 
|  | 89 | do_compile () { | 
|  | 90 | python ./buildtools/bin/waf ${PARALLEL_MAKE} | 
|  | 91 | } | 
|  | 92 |  | 
|  | 93 | do_install() { | 
|  | 94 | oe_runmake install DESTDIR=${D} | 
|  | 95 | } |