musl-cross-make/scripts/build
2024-01-10 03:39:51 +08:00

75 lines
1.9 KiB
Bash
Executable File

#!/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};