mirror of
https://git.busybox.net/uClibc
synced 2025-05-08 23:02:28 +08:00

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>
142 lines
2.4 KiB
Bash
Executable File
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
|