diff options
Diffstat (limited to 'util/xcompile')
-rw-r--r-- | util/xcompile/xcompile | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/util/xcompile/xcompile b/util/xcompile/xcompile new file mode 100644 index 0000000000..d3990cf8c8 --- /dev/null +++ b/util/xcompile/xcompile @@ -0,0 +1,45 @@ + +for make in make gmake gnumake; do + if [ "`$make --version 2>/dev/null | grep -c GNU`" -gt 0 ]; then + MAKE=$make + break + fi +done + +GCCPREFIX=invalid +TMP=`mktemp /tmp/temp.XXXX` +echo "mov %eax, %eax" > ${TMP}.s +printf "\x7fELF" > ${TMP}.compare +for gccprefixes in `pwd`/../crossgcc/xgcc/bin/i386-elf- i386-elf- ""; do + if which ${gccprefixes}as 2>/dev/null >/dev/null; then + printf "" + else + continue + fi + rm -f ${TMP}.o + if ${gccprefixes}as --32 -o ${TMP}.o ${TMP}.s; then + dd bs=4 count=1 if=${TMP}.o > ${TMP}.test 2>/dev/null + if cmp ${TMP}.test ${TMP}.compare; then + GCCPREFIX=$gccprefixes + break + fi + fi +done +rm -f $TMP ${TMP}.s ${TMP}.o ${TMP}.compare ${TMP}.test + +if [ "$GCCPREFIX" = "invalid" ]; then + echo '$(error no suitable gcc found)' + exit 1 +fi + +cat << afteroptions +AS:=${GCCPREFIX}as --32 +CC:=${GCCPREFIX}gcc -m32 +AR:=${GCCPREFIX}ar +LD:=${GCCPREFIX}ld -b elf32-i386 +STRIP:=${GCCPREFIX}strip +NM:=${GCCPREFIX}nm +OBJCOPY:=${GCCPREFIX}objcopy +OBJDUMP:=${GCCPREFIX}objdump +HOSTCC:=gcc +afteroptions |