diff options
Diffstat (limited to 'toolchain/helpers.mk')
-rw-r--r-- | toolchain/helpers.mk | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk index 764c795d85..4c988a5c9a 100644 --- a/toolchain/helpers.mk +++ b/toolchain/helpers.mk @@ -279,10 +279,25 @@ check_uclibc = \ # check_arm_abi = \ __CROSS_CC=$(strip $1) ; \ + __CROSS_READELF=$(strip $2) ; \ EXT_TOOLCHAIN_TARGET=`LANG=C $${__CROSS_CC} -v 2>&1 | grep ^Target | cut -f2 -d ' '` ; \ if ! echo $${EXT_TOOLCHAIN_TARGET} | grep -qE 'eabi(hf)?$$' ; then \ echo "External toolchain uses the unsuported OABI" ; \ exit 1 ; \ + fi ; \ + EXT_TOOLCHAIN_CRT1=`LANG=C $${__CROSS_CC} -print-file-name=crt1.o` ; \ + if $${__CROSS_READELF} -A $${EXT_TOOLCHAIN_CRT1} | grep -q "Tag_ABI_VFP_args:" ; then \ + EXT_TOOLCHAIN_ABI="eabihf" ; \ + else \ + EXT_TOOLCHAIN_ABI="eabi" ; \ + fi ; \ + if [ "$(BR2_ARM_EABI)" = "y" -a "$${EXT_TOOLCHAIN_ABI}" = "eabihf" ] ; then \ + echo "Incorrect ABI setting: EABI selected, but toolchain uses EABIhf" ; \ + exit 1 ; \ + fi ; \ + if [ "$(BR2_ARM_EABIHF)" = "y" -a "$${EXT_TOOLCHAIN_ABI}" = "eabi" ] ; then \ + echo "Incorrect ABI setting: EABIhf selected, but toolchain uses EABI" ; \ + exit 1 ; \ fi # |