done
GCCPREFIX=invalid
-TMP=`mktemp /tmp/temp.XXXX 2>/dev/null || echo /tmp/temp.78gOIUGz`
-touch $TMP
+XGCCPATH=${1:-"`pwd`/util/crossgcc/xgcc/bin/"}
+echo '#XGCCPATH='${XGCCPATH}
+TMPFILE=`mktemp /tmp/temp.XXXX 2>/dev/null || echo /tmp/temp.78gOIUGz`
+touch $TMPFILE
# This should be a loop over all supported architectures
TARCH=i386
TWIDTH=32
-for gccprefixes in `pwd`/util/crossgcc/xgcc/bin/${TARCH}-elf- ${TARCH}-elf- ""; do
+for gccprefixes in ${XGCCPATH}${TARCH}-elf- ${TARCH}-elf- ""; do
if ! which ${gccprefixes}as 2>/dev/null >/dev/null; then
continue
fi
- rm -f ${TMP}.o
- if ${gccprefixes}as -o ${TMP}.o ${TMP}; then
- TYPE=`${gccprefixes}objdump -p ${TMP}.o`
+ rm -f ${TMPFILE}.o
+ if ${gccprefixes}as -o ${TMPFILE}.o ${TMPFILE}; then
+ TYPE=`${gccprefixes}objdump -p ${TMPFILE}.o`
if [ ${TYPE##* } == "elf${TWIDTH}-${TARCH}" ]; then
GCCPREFIX=$gccprefixes
ASFLAGS=
break
fi
fi
- if ${gccprefixes}as --32 -o ${TMP}.o ${TMP}; then
- TYPE=`${gccprefixes}objdump -p ${TMP}.o`
+ if ${gccprefixes}as --32 -o ${TMPFILE}.o ${TMPFILE}; then
+ TYPE=`${gccprefixes}objdump -p ${TMPFILE}.o`
if [ ${TYPE##* } == "elf${TWIDTH}-${TARCH}" ]; then
GCCPREFIX=$gccprefixes
ASFLAGS=--32
fi
fi
done
-rm -f $TMP ${TMP}.o
+rm -f $TMPFILE ${TMPFILE}.o
if [ "$GCCPREFIX" = "invalid" ]; then
echo '$(error no suitable gcc found)'
fi
CC="${GCCPREFIX}gcc"
+testcc "$CC" "$CFLAGS-Wa,--divide " && CFLAGS="$CFLAGS-Wa,--divide "
testcc "$CC" "$CFLAGS-fno-stack-protector " && CFLAGS="$CFLAGS-fno-stack-protector "
testcc "$CC" "$CFLAGS-Wl,--build-id=none " && CFLAGS="$CFLAGS-Wl,--build-id=none "
+# GCC 4.6 is much more picky about unused variables. Turn off it's warnings for
+# now:
+testcc "$CC" "$CFLAGS-Wno-unused-but-set-variable " && \
+ CFLAGS="$CFLAGS-Wno-unused-but-set-variable "
if which gcc 2>/dev/null >/dev/null; then
HOSTCC=gcc
HOSTCC=cc
fi
+if [ "`${XGCCPATH}/iasl 2>/dev/null | grep -c ACPI`" -gt 0 ]; then
+ IASL=${XGCCPATH}iasl
+else
+ IASL=iasl
+fi
+
cat << EOF
# elf${TWIDTH}-${TARCH} toolchain
AS:=${GCCPREFIX}as ${ASFLAGS}
CC:=${GCCPREFIX}gcc ${CFLAGS}
-CPP:=${GCCPREFIX}cpp
AR:=${GCCPREFIX}ar
LD:=${GCCPREFIX}ld ${LDFLAGS}
STRIP:=${GCCPREFIX}strip
OBJCOPY:=${GCCPREFIX}objcopy
OBJDUMP:=${GCCPREFIX}objdump
+IASL:=${IASL}
+
# native toolchain
HOSTCC:=${HOSTCC}
EOF