uClibc/extra/scripts/MAKEALL
Carmelo Amoroso ae14cd49a8 buildsys: s/CROSS/CROSS_COMPILE/g
Use CROSS_COMPILE instead of CROSS as other projects are doing
(i.e. kernel, busybox, buildroot).
CROSS is still supported for backward compatibility only

Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
2011-11-25 06:31:07 +01:00

142 lines
2.4 KiB
Bash
Executable File

#!/bin/sh
#
# helper script to quick build testing with cross-compilers
#
: ${MAKE:=make}
: ${BUILD_NCPUS:=$(getconf _NPROCESSORS_ONLN)}
if [ "$BUILD_NCPUS" -gt 1 ] ; then
JOBS=-j$((BUILD_NCPUS + 1))
else
JOBS=""
fi
MAKE="${MAKE} ${JOBS}"
: ${CROSS_COMPILE:=${CROSS_COMPILER_PREFIX}}
setconfig()
{
local opt=$1
shift
case $1 in
[yn]) ;;
[0-9]*) ;;
*) set -- '"'$*'"'
esac
sed -i \
-e "/${opt}=/s:=.*:=$*:" \
.config
echo " ## setconfig ${opt} $*"
}
get_arches()
{
case $1 in
sh) echo sh4 sh2 sh3 sh1 sh;;
*) echo $1;;
esac
}
find_compiler()
{
local t a v o l
for a in $(get_arches $1) ; do
for v in unknown pc gentoo "" ; do
for o in linux uclinux "" ; do
for l in uclibc "" ; do
t="${a}${v:+-${v}}${o:+-${o}}${l:+-${l}}"
if ${t}-gcc --help > /dev/null 2>&1 ; then
echo ${t}-
return 0
fi
done
done
done
done
}
do_make()
{
echo " ## ${MAKE} -s $*"
${MAKE} -s "$@"
}
mark_arch()
{
local r=$1 a=$2
eval $r=\"\$$r $a\"
}
if [ -z "$*" ] ; then
set -- $(awk \
'$0 ~ /^config TARGET_/ { sub("TARGET_",""); print $NF }' \
extra/Configs/Config.in | grep -v SUBARCH)
fi
pass=""
fail=""
skip=""
for a in "$@" ; do
if [ -z "${CROSS_COMPILE}" ] ; then
CROSS_COMPILE=$(find_compiler ${a})
fi
if [ -z "${CROSS_COMPILE}" ] ; then
mark_arch skip $a
echo " ### SKIP: ${a}: could not find compiler"
continue
fi
rm -f ${a}.log ${a}.fail
(
set -e
echo " ### Building target ${a} (${CROSS_COMPILE})"
do_make distclean
do_make ARCH=$a defconfig
do_make oldconfig
setconfig CROSS_COMPILER_PREFIX ${CROSS_COMPILE}
header_path=${KERNEL_HEADERS:-$(echo '#include <linux/version.h>' | ${CROSS_COMPILE}cpp 2>/dev/null | grep -o '[^"]*linux/version.h')} || :
if [ -z "${header_path}" ] ; then
for p in /usr/${CROSS_COMPILE%-}/usr/include ; do
if [ -e ${p}/linux/version.h ] ; then
header_path=${p}
break
fi
done
if [ -z "${header_path}" ] ; then
echo " ## unable to locate KERNEL_HEADERS"
fi
fi
setconfig KERNEL_HEADERS ${header_path%/linux/version.h}
if do_make ; then
echo " ## PASS"
else
echo " ## FAIL"
touch ${a}.fail
fi
) 2>&1 | tee ${a}.log
if [ -e ${a}.fail ] ; then
rm -f ${a}.fail
mark_arch fail $a
else
mark_arch pass $a
fi
done
if [ -n "${skip}" ] ; then
printf '\nSKIPPED: %s\n' "${skip}"
fi
if [ -n "${fail}" ] ; then
printf '\nPASSED: %s\nFAILED: %s\n\n' "${pass}" "${fail}"
exit 1
else
printf '\nAll arches passed!\n\n'
exit 0
fi