diff options
Diffstat (limited to 'meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/mb-convert.sh')
-rwxr-xr-x | meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/mb-convert.sh | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/mb-convert.sh b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/mb-convert.sh new file mode 100755 index 000000000..e05145ec4 --- /dev/null +++ b/meta-xilinx/meta-xilinx-standalone/recipes-devtools/gcc/mb-convert.sh @@ -0,0 +1,60 @@ +#! /bin/bash + +# Call using: +#../microblaze/sysroots/x86_64-oesdk-linux/usr/bin/microblaze-xilinx-elf/microblaze-xilinx-elf-gcc -print-multi-lib | mb-convert.sh + +# Then copy the output into the special microblaze-tc BSP + +mlib_to_feature() { + feature_base="microblaze" + feature_endian=" bigendian" + feature_barrel="" + feature_pattern="" + feature_multiply="" + feature_multiplyhigh="" + feature_sixtyfour="" + feature_math="" + while read feature ; do + case $feature in + le) feature_endian="";; + bs) feature_barrel=" barrel-shift";; + p) feature_pattern=" pattern-compare";; + m) if [ -z ${feature_multiplyhigh} ]; then feature_multiply=" multiply-low" ; fi ;; + mh) feature_multiply="" ; feature_multiplyhigh=" multiply-high";; + m64) feature_sixtyfour=" 64-bit";; + fpd) feature_math=" fpu-hard";; + *) echo "UNKNOWN $feature";; + esac + done + echo "${feature_base}${feature_sixtyfour}${feature_endian}${feature_barrel}${feature_pattern}${feature_multiply}${feature_multiplyhigh}${feature_math}" +} + +sed -e 's,;, ,' | + while read mlib args ; do + if [ $mlib = '.' ]; then + echo '# Base configuration' + echo '# CFLAGS:' + echo 'DEFAULTTUNE = "microblaze"' + echo + echo 'AVAILTUNES += "microblaze"' + echo 'BASE_LIB_tune-microblaze = "lib"' + echo 'TUNE_FEATURES_tune-microblaze = "microblaze bigendian"' + echo 'PACKAGE_EXTRA_ARCHS_tune-microblaze = "${TUNE_PKGARCH}"' + continue + fi + + cflags=$(echo $args | sed -e 's,@, -,g') + multilib="libmb$(echo $mlib | sed -e 's,/,,g')" + tune="microblaze$(echo $mlib | sed -e 's,m64,64,' -e 's,/,,g')" + features=$(echo $mlib | sed -e 's,/, ,g' | xargs -n 1 echo | mlib_to_feature) + echo + echo + echo "# $mlib" + echo "# CFLAGS:${cflags}" + echo "DEFAULTTUNE_virtclass-multilib-$multilib = \"$tune\"" + echo + echo "AVAILTUNES += \"$tune\"" + echo "BASE_LIB_tune-$tune = \"lib/$mlib\"" + echo "TUNE_FEATURES_tune-$tune = \"${features}\"" + echo "PACKAGE_EXTRA_ARCHS_tune-$tune = \"\${TUNE_PKGARCH}\"" + done |