mirror of https://github.com/OpenIPC/firmware.git
90 lines
2.5 KiB
Bash
Executable File
90 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
shopt -s nullglob
|
|
|
|
toolchain_by_config() {
|
|
CF=$1
|
|
FMT=$2
|
|
|
|
BR2_VER=$(grep BR2_DEFAULT_KERNEL_VERSION $CF)
|
|
if [ -n "$BR2_VER" ]; then
|
|
VENDOR=$(echo $CF | cut -d - -f 4 | cut -d / -f 1 | sed -r 's/\<./\U&/g')
|
|
KVER=$(echo $BR2_VER | cut -d \" -f 2 | awk -F . '{printf "%s_%s", $1, $2}')
|
|
GCC_VER=$(sed -rn "s/^BR2_GCC_VERSION_([0-9]*)_X=y/\1/p" $CF)
|
|
ARCH=$(sed -rn "s/^BR2_(arm[a-z0-9_]+)=y/\1/p" $CF)
|
|
if [ -z "$ARCH" ]; then
|
|
ARCH=$(sed -rn "s/^BR2_(cortex_[a-z0-9_]+)=y/\1/p" $CF)
|
|
fi
|
|
if [ -z "$ARCH" ]; then
|
|
ARCH=$(sed -rn "s/^BR2_(arm)=y/\1/p" $CF)
|
|
else
|
|
# Here we have something from ARM modern family
|
|
HF=$(sed -rn "s/^BR2_ARM_EABI(HF)=y/\1/p" $CF | tr '[:upper:]' '[:lower:]')
|
|
fi
|
|
|
|
if [ -z "$ARCH" ]; then
|
|
ARCH=$(sed -rn "s/^BR2_(mips_[a-z]*)=y/\1/p" $CF)
|
|
else
|
|
THUMB=$(sed -rn "s/^BR2_ARM_INSTRUCTIONS_(THUMB2)=y/\1/p" $CF)
|
|
if [ -n "$THUMB" ]; then
|
|
ARCH="${ARCH}_${THUMB,,}"
|
|
fi
|
|
if [ -n "$HF" ]; then
|
|
ARCH="${ARCH}_${HF}"
|
|
fi
|
|
fi
|
|
|
|
LIBC=$(sed -rn "s/^BR2_TOOLCHAIN_BUILDROOT_LIBC=\"(.*)\"/\1/p" $CF)
|
|
|
|
SOC=$(echo $CF | cut -d _ -f 3)
|
|
case $FMT in
|
|
list)
|
|
echo $ARCH $GCC_VER $LIBC $KVER $VENDOR $CF
|
|
;;
|
|
uniq)
|
|
echo $ARCH $GCC_VER $LIBC $KVER
|
|
;;
|
|
*)
|
|
if [ -n "$2" ]; then
|
|
BR_DIR=buildroot-$2
|
|
GCC_VER=$(sed -rn \
|
|
"s/^\s+default\s+\"([0-9.]+)\"\s+if BR2_GCC_VERSION_${GCC_VER}_X/\1/p" \
|
|
$BR_DIR/package/gcc/Config.in.host)
|
|
case $LIBC in
|
|
musl)
|
|
VER=$(sed -rn "s/^MUSL_VERSION\s*=\s*([0-9.]+)/\1/p" \
|
|
$BR_DIR/package/musl/musl.mk)
|
|
;;
|
|
uclibc)
|
|
VER=$(sed -rn "s/^UCLIBC_VERSION\s*=\s*([0-9.]+)/\1/p" \
|
|
$BR_DIR/package/uclibc/uclibc.mk)
|
|
;;
|
|
glibc)
|
|
VER=$(sed -rn "s/^GLIBC_VERSION\s*=\s*([0-9.]+).*/\1/p" \
|
|
$BR_DIR/package/glibc/glibc.mk | tail -1)
|
|
;;
|
|
esac
|
|
HASH=$(echo $VER | sha1sum | cut -c 1-8)
|
|
echo ${ARCH}-gcc${GCC_VER}-${LIBC}-${KVER}-${HASH}
|
|
else
|
|
echo ${ARCH}-gcc${GCC_VER}-${LIBC}-${KVER}
|
|
fi
|
|
;;
|
|
esac
|
|
fi
|
|
}
|
|
|
|
if [ $# -eq 0 ]; then
|
|
$0 list | sort
|
|
else
|
|
if [ "$1" != "list" ] && [ "$1" != "uniq" ]; then
|
|
toolchain_by_config $1 $2
|
|
else
|
|
for D in br-ext-chip-*; do
|
|
for CF in $D/configs/*; do
|
|
toolchain_by_config $CF $1
|
|
done
|
|
done
|
|
fi
|
|
fi
|