#!/bin/sh -e HERE=$(dirname $(readlink -f ${0})) LOGS=${HERE}/../logs BINS=${HERE}/../output OBJS=${HERE}/../build CSUF=cross NSUF=native KALE="${PATH}" MCMT=; ## # Check whether target triple is specified. # test ${#} != 1 && printf "No target triple specified!\n" && exit 1; ## # When 'MCMTOOLS' is specified, ensure it is valid (at first glance). # if ! test -z ${MCMTOOLS}; then MCMT="${MCMTOOLS%/}"; fail=0; test -d "${MCMT}/sys/bin" || fail=1; test -d "${MCMT}/host/bin" || fail=1; test -d "${MCMT}/musl/bin" || fail=1; test $fail -eq 1 && printf "Using 'MCMTOOLS=%s' is not valid.\n" "${MCMTOOLS}" && exit 1; fi mkdir -p ${LOGS} ${BINS} # CROSS BUILD INSTALL if ! test -z ${MCMT}; then export PATH="${MCMT}/sys/bin:${MCMT}/musl/bin"; else export PATH="${KALE}"; fi [ -d ${BINS}/${1}-${CSUF} ] || make install \ TARGET=${1} OUTPUT=${BINS}/${1}-${CSUF} \ 2>&1 | tee ${LOGS}/${1}-${CSUF}.log # CROSS SCRATCH CLEANUP rm -fr ${OBJS}/local/${1} # CROSS PACKAGE [ -h ${BINS}/${1}-${CSUF}/usr ] || (cd ${BINS}/${1}-${CSUF} && ln -s . usr) [ -e ${BINS}/${1}-${CSUF}.tgz ] || (cd ${BINS} && tar pczf ${1}-${CSUF}.tgz ${1}-${CSUF}) # NATIVE BUILD INSTALL if ! test -z ${MCMT}; then export PATH="${MCMT}/sys/bin:${MCMT}/host/bin:${BINS}/${1}-${CSUF}/bin"; else export PATH="${KALE}:${BINS}/${1}-${CSUF}/bin"; fi if [ -d ${BINS}/${1}-${CSUF} ]; then [ -d ${BINS}/${1}-${NSUF} ] || make install NATIVE=1 \ TARGET=${1} CROSS_COMPILE=${1}- OUTPUT=${BINS}/${1}-${NSUF} \ 2>&1 | tee ${LOGS}/${1}-${NSUF}.log fi; # CROSS DIRECTORY CLEANUP (if native fails, this remains) rm -fr ${BINS}/${1}-${CSUF}; # NATIVE PACKAGE [ -h ${BINS}/${1}-${NSUF}/usr ] || (cd ${BINS}/${1}-${NSUF} && ln -s . usr) [ -e ${BINS}/${1}-${NSUF}.tgz ] || (cd ${BINS} && tar pczf ${1}-${NSUF}.tgz ${1}-${NSUF}); # NATIVE SCRATCH CLEANUP rm -fr ${OBJS}/${1} # NATIVE DIRECTORY CLEANUP rm -fr ${BINS}/${1}-${NSUF};