Files
danio_toolchain/danio_gcc.sh
T
Daniel 8ad8c9b5e4 fix1
2018-10-20 01:55:39 +02:00

109 lines
2.9 KiB
Bash

export TARGET="${1}"
export PREFIX="`pwd`/rel-bin/${TARGET}"
export PATH="${PREFIX}/bin:${PATH}"
export OUT="`pwd`/out"
case "${2}" in
64)
export CC="cc -m64"
export CXX="c++ -m64" ;;
32)
export CC="cc -m32"
export CXX="c++ -m32" ;;
*)
export CC="cc"
export CXX="c++" ;;
esac
#### JEŚLI BĘDĄ NOWE WERSJE BINUTILS'A i GCC PROSZĘ ZMIENIĆ NUMER!!!
export binutils_version="2.31" #TU ZMIENIAMY!
export newlib_version="3.0.0" #TU ZMIENIAMY!
export gcc_version="LATEST-9" #TU ZMIENIAMY!
export nproc=$(( `grep -c "processor" /proc/cpuinfo` * 2 ))
export binutils_ext="tar.xz" #TU POD ŻADNYM POZOREM NIE ZMIENIAJ TYPU!!!!!
####
if ! command -v lftp >/dev/null; then
clear
printf "\n Nie znaleziono \"lftp\"!\n Prosze zanistaluj go na swoim obecnym systemie!\n\n"
exit 1
fi
(
if [ ! -e binutils-${binutils_version}${binutils_ext} ]; then
wget -c "http://ftp.gnu.org/gnu/binutils/binutils-${binutils_version}.${binutils_ext}"
fi
if [ ! -d binutils-${binutils_version} ]; then
tar -xf binutils-*.*
fi
) || exit 1
if ! (
mkdir -pv build-binutils
(cd build-binutils; ../binutils-*/configure --target="${TARGET}" --prefix="${PREFIX}" --disable-nls --disable-werror --enable-obsolete)
make -C build-binutils -j${nproc}
make -C build-binutils -j${nproc} install
)
then
echo "STAGE=${TARGET}" > .error
exit 1
fi
(
if [ ! -e */gcc-*.* ]; then
lftp -c "open ftp://ftp.fu-berlin.de/unix/languages/gcc/snapshots ; mirror ${gcc_version}"
fi
if [ ! -d gcc-* ]; then
tar -xf */gcc-*.*
fi
) || exit 1
(
if [ ! -e newlib-*.tar.gz ]; then
wget -c "ftp://sources.redhat.com/pub/newlib/newlib-${newlib_version}.tar.gz"
fi
if [ ! -d newlib-* ]; then
tar -xf newlib-*.tar.gz
fi
) || exit 1
if ! (
(cd gcc-*; contrib/download_prerequisites)
mkdir -pv build-gcc
(cd build-gcc; ../gcc-*/configure --target="${TARGET}" --prefix="${PREFIX}" --disable-lto --disable-nls --disable-werror --enable-languages=all --with-pkgversion="*DANiO* T00LCHAIN" --with-system-zlib --enable-obsolete --with-newlib --with-headers="../newlib-*/newlib/libc/include" --without-libssp )#--enable-multilib --enable-multiarch
)
then
echo "STAGE=${TARGET}" > .error
exit 1
fi
if ! (
make -C build-gcc -j${nproc}
make -C build-gcc install -j${nproc}
)
then
echo "STAGE=${TARGET}" > .error
exit 1
fi
if (
mkdir -pv build-newlib
(cd build-newlib; ../newlib-*/configure --target="${TARGET}" --prefix="${PREFIX}")
make -C build-newlib -j${nproc}
make -C build-newlib install
)
then
find ${PREFIX} | xargs file | grep "ELF" | grep "executable" | cut -f 1 -d ":" | xargs strip -S 2>/dev/null
mkdir -pv out
if [ "${1}" == "64" ]; then
(cd ${PREFIX}; tar -cJf "${OUT}/${TARGET}-`date +"%d-%m-%Y"`_x86-64.txz" .)
else
(cd ${PREFIX}; tar -cJf "${OUT}/${TARGET}-`date +"%d-%m-%Y"`_x86-32.txz" .)
fi
rm -rf build-*
#printf "\n POPRAWNIE ZBUDOWANO GCC DLA ${TARGET}!\n\n"
else
echo "STAGE=${TARGET}" > .error
exit 1
fi