reconstructure script
This commit is contained in:
+94
-80
@@ -3,6 +3,18 @@ export PREFIX="`pwd`/rel-bin/${TARGET}"
|
||||
export PATH="${PREFIX}/bin:${PATH}"
|
||||
export OUT="`pwd`/out"
|
||||
|
||||
#### ZMIEŃ, JEŻELI CHCESZ INNE WERSJE, DOMYŚLNE "master", CZYLI "BLEEDING EDGE"
|
||||
export binutils_version="master"
|
||||
export libc_version="master"
|
||||
export linux_version="master"
|
||||
export gcc_version="master"
|
||||
|
||||
#### TU NIE ZMIENIAJ vvv
|
||||
export nproc="$(( `grep -c "processor" /proc/cpuinfo` * 2 ))"
|
||||
export ARGS="--enable-multilib --enable-multiarch --enable-targets=all --disable-werror"
|
||||
#### TU NIE ZMIENIAJ ^^^
|
||||
|
||||
|
||||
case "${2}" in
|
||||
64)
|
||||
export CC="cc -m64"
|
||||
@@ -10,96 +22,98 @@ case "${2}" in
|
||||
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.32" #TU ZMIENIAMY!
|
||||
export newlib_version="master" #TU ZMIENIAMY!
|
||||
export gcc_version="LATEST-4.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}"
|
||||
download_n_extract()
|
||||
{
|
||||
if [ ! -e gcc-${gcc_version}.tar.gz ]; then
|
||||
#lftp -c "open ftp://ftp.fu-berlin.de/unix/languages/gcc/snapshots; mirror ${gcc_version}" || return ${?}
|
||||
wget --no-check-cert -c "https://github.com/gcc-mirror/gcc/archive/${gcc_version}.tar.gz" -O gcc-${gcc_version}.tar.gz || return ${?}
|
||||
fi
|
||||
if [ ! -d binutils-${binutils_version} ]; then
|
||||
tar -xf binutils-*.*
|
||||
if [ ! -d gcc-${gcc_version} ]; then
|
||||
tar -xf gcc-${gcc_version}.tar.gz || return ${?}
|
||||
fi
|
||||
) || exit 1
|
||||
if [ ! -e glibc-${libc_version}.tar.gz ]; then
|
||||
wget --no-check-cert -c "https://github.com/bminor/glibc/archive/${libc_version}.tar.gz" -O glibc-${libc_version}.tar.gz || return ${?}
|
||||
fi
|
||||
if [ ! -d glibc-${libc_version} ]; then
|
||||
tar -xf glibc-${libc_version}.tar.gz || return ${?}
|
||||
fi
|
||||
if [ ! -e linux-${linux_version}.tar.gz ]; then
|
||||
wget --no-check-cert -c "https://github.com/torvalds/linux/archive/${linux_version}.tar.gz" -O linux-${linux_version}.tar.gz || return ${?}
|
||||
fi
|
||||
if [ ! -d linux-${linux_version} ]; then
|
||||
tar -xf linux-${linux_version}.tar.gz || return ${?}
|
||||
fi
|
||||
if [ ! -e binutils-gdb-${binutils_version}.tar.gz ]; then
|
||||
wget --no-check-cert -c "https://github.com/bminor/binutils-gdb/archive/${binutils_version}.tar.gz" -O binutils-gdb-${binutils_version}.tar.gz || return ${?}
|
||||
fi
|
||||
if [ ! -d binutils-gdb-${binutils_version} ]; then
|
||||
tar -xf binutils-gdb-${binutils_version}.tar.gz || return ${?}
|
||||
fi
|
||||
}
|
||||
|
||||
if ! (
|
||||
build()
|
||||
{
|
||||
mkdir -pv build-binutils
|
||||
(cd build-binutils; ../binutils-*/configure --target="${TARGET}" --prefix="${PREFIX}" --disable-nls --disable-werror --enable-obsolete --disable-debug --with-gcc --with-gnu-as --with-gnu-ld)
|
||||
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}"
|
||||
(cd build-binutils; ../binutils-gdb-${binutils_version}/configure --target="${TARGET}" --prefix="${PREFIX}" --disable-nls --enable-obsolete --disable-debug ${ARGS}) || return ${?}
|
||||
make -C build-binutils -j${nproc} || return ${?}
|
||||
make -C build-binutils -j${nproc} install || return ${?}
|
||||
if [ ! -e .dl_ok ]; then
|
||||
(cd gcc-${gcc_version}; contrib/download_prerequisites) || return ${?}
|
||||
touch .dl_ok || return ${?}
|
||||
fi
|
||||
if [ ! -d gcc-* ]; then
|
||||
tar -xf */gcc-*.*
|
||||
fi
|
||||
) || exit 1
|
||||
mkdir -pv build-gcc || return ${?}
|
||||
(cd build-gcc; ../gcc-${gcc_version}/configure --target="${TARGET}" --prefix="${PREFIX}" --enable-languages="c" --with-pkgversion="*DANiO* T00LCHAIN" --without-headers --disable-shared --disable-threads ${ARGS}) || return ${?}
|
||||
make -C build-gcc -j${nproc} all-gcc || return ${?}
|
||||
make -C build-gcc -j${nproc} install-gcc || return ${?}
|
||||
make -C build-gcc -j${nproc} all-target-libgcc || return ${?}
|
||||
make -C build-gcc -j${nproc} install-target-libgcc || return ${?}
|
||||
make -C linux-${linux_version} ARCH="`echo ${TARGET} | cut -f 1 -d '-' | sed -e s/i.86/x86/ -e s/x86_64/x86/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/ -e s/s390x/s390/ -e s/parisc64/parisc/ -e s/ppc.*/powerpc/ -e s/mips.*/mips/ -e s/sh[234].*/sh/ -e s/aarch64.*/arm64/ -e s/riscv.*/riscv/`" INSTALL_HDR_PATH="${PREFIX}/usr" headers_install || return ${?}
|
||||
find ${PREFIX}/usr -name "..install.cmd" | xargs rm -rf || return ${?}
|
||||
find ${PREFIX}/usr -name ".install" | xargs rm -rf || return ${?}
|
||||
mkdir -pv build-glibc || return ${?}
|
||||
env CC="${TARGET}-gcc" CXX="${TARGET}-g++" AR="${TARGET}-ar" RANLIB="${TARGET}-ranlib" bash -c '(cd build-glibc; ../glibc-${libc_version}/configure --prefix="${PREFIX}" --host="${TARGET}" --with-headers="${PREFIX}/usr/include" --with-pkgversion="*DANiO* T00LCHAIN" --enable-add-ons --disable-profile --without-gd ${ARGS})' || return ${?}
|
||||
make -C build-glibc -j${nproc} install-bootstrap-headers=yes install-headers || return ${?}
|
||||
make -C build-glibc -j${nproc} csu/subdir_lib || return ${?}
|
||||
mkdir -pv ${PREFIX}/usr/lib
|
||||
cp -ravf build-glibc/csu/crt1.o build-glibc/csu/crti.o build-glibc/csu/crtn.o ${PREFIX}/usr/lib || return ${?}
|
||||
${TARGET}-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o ${PREFIX}/usr/lib/libc.so || return ${?}
|
||||
rm -rf build-gcc || return ${?}
|
||||
mkdir -pv build-gcc || return ${?}
|
||||
(cd build-gcc; ../gcc-${gcc_version}/configure --target="${TARGET}" --prefix="${PREFIX}" --enable-languages="c" --with-pkgversion="*DANiO* T00LCHAIN" --without-headers --disable-shared --disable-threads --with-sysroot="${PREFIX}" ${ARGS}) || return ${?}
|
||||
make -C build-gcc -j${nproc} || return ${?}
|
||||
make -C build-gcc -j${nproc} install || return ${?}
|
||||
env CC="${TARGET}-gcc" CXX="${TARGET}-g++" AR="${TARGET}-ar" RANLIB="${TARGET}-ranlib" bash -c '(cd build-glibc; ../glibc-${libc_version}/configure --prefix="${PREFIX}" --host="${TARGET}" --with-headers="${PREFIX}/usr/include" --with-pkgversion="*DANiO* T00LCHAIN" --enable-add-ons --disable-profile --without-gd ${ARGS})' || return ${?}
|
||||
make -C build-glibc -j${nproc} || return ${?}
|
||||
make -C build-glibc -j${nproc} install_root="${PREFIX}" install || return ${?}
|
||||
rm -rf build-gcc || return ${?}
|
||||
mkdir -pv build-gcc || return ${?}
|
||||
(cd build-gcc; ../gcc-${gcc_version}/configure --target="${TARGET}" --prefix="${PREFIX}" --enable-languages="c,c++" --with-pkgversion="*DANiO* T00LCHAIN" --with-headers --enable-shared --enable-threads="posix" --with-sysroot="${PREFIX}" ${ARGS}) || return ${?}
|
||||
make -C build-gcc -j${nproc} || return ${?}
|
||||
make -C build-gcc -j${nproc} install || return ${?}
|
||||
}
|
||||
|
||||
(
|
||||
if [ ! -e newlib-*.tar.gz ]; then
|
||||
wget -c "https://github.com/bminor/newlib/archive/master.tar.gz" -O newlib-${newlib_version}.tar.gz
|
||||
fi
|
||||
if [ ! -d newlib-* ]; then
|
||||
tar -xf newlib-*.tar.gz
|
||||
fi
|
||||
) || exit 1
|
||||
|
||||
if ! (
|
||||
(cd gcc-*; contrib/download_prerequisites)#; ln -svf ../newlib-${newlib_version}/newlib newlib
|
||||
mkdir -pv build-gcc
|
||||
(cd build-gcc; ../gcc-*/configure --target="${TARGET}" --prefix="${PREFIX}" --disable-lto --disable-nls --disable-werror --enable-languages="c" --with-pkgversion="*DANiO* T00LCHAIN" --enable-obsolete --with-newlib --with-system-zlib --disable-shared --disable-debug --without-headers) #--disable-libquadmath --disable-libssp --disable-libgomp
|
||||
make -C build-gcc -j${nproc} all-gcc
|
||||
make -C build-gcc -j${nproc} install-gcc
|
||||
)
|
||||
then
|
||||
echo "STAGE=${TARGET}" > .error
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if (
|
||||
|
||||
mkdir -pv build-newlib
|
||||
(cd build-newlib; ../newlib-${newlib_version}/configure --prefix="${PREFIX}" --target="${TARGET}")
|
||||
make -C build-newlib -j${nproc}
|
||||
make -C build-newlib -j${nproc} install
|
||||
(cd build-gcc; ../gcc-*/configure --target="${TARGET}" --prefix="${PREFIX}" --disable-lto --disable-nls --disable-werror --enable-languages="c,c++" --with-pkgversion="*DANiO* T00LCHAIN" --enable-obsolete --with-newlib --with-system-zlib --disable-shared --disable-debug)
|
||||
make -C build-gcc -j${nproc}
|
||||
make -C build-gcc -j${nproc} install
|
||||
)
|
||||
then
|
||||
find ${PREFIX} | xargs file | grep "ELF" | grep "executable" | cut -f 1 -d ":" | xargs strip -S 2>/dev/null
|
||||
mkdir -pv out
|
||||
strip_n_pack()
|
||||
{
|
||||
find ${PREFIX} | xargs file | grep "ELF" | grep "executable" | cut -f 1 -d ":" | xargs strip -S 2>/dev/null || return ${?}
|
||||
mkdir -pv out || return ${?}
|
||||
if [ "${1}" == "64" ]; then
|
||||
(cd ${PREFIX}; tar -cJf "${OUT}/${TARGET}-`date +"%d-%m-%Y"`_x86-64.txz" .)
|
||||
(cd ${PREFIX}; tar -cJf "${OUT}/${TARGET}-GCC_${gcc_version}-`date +"%d-%m-%Y"`-`uname -s`_x86-64.txz" .) || return ${?}
|
||||
else
|
||||
(cd ${PREFIX}; tar -cJf "${OUT}/${TARGET}-`date +"%d-%m-%Y"`_x86-32.txz" .)
|
||||
(cd ${PREFIX}; tar -cJf "${OUT}/${TARGET}-GCC_${gcc_version}-`date +"%d-%m-%Y"`-`uname -s`_x86-32.txz" .) || return ${?}
|
||||
fi
|
||||
rm -rf build-*
|
||||
#printf "\n POPRAWNIE ZBUDOWANO GCC DLA ${TARGET}!\n\n"
|
||||
else
|
||||
echo "STAGE=${TARGET}" > .error
|
||||
}
|
||||
|
||||
if ! download_n_extract; then
|
||||
echo "STAGE=${TARGET} MSG='at \"download_n_extract\" section'" > .error
|
||||
exit 1
|
||||
fi
|
||||
if ! build; then
|
||||
echo "STAGE=${TARGET} MSG='at \"build\" section'" > .error
|
||||
exit 1
|
||||
fi
|
||||
if ! strip_n_pack ${2}; then
|
||||
echo "STAGE=${TARGET} MSG='at \"strip_n_pack ${2}\" section'" > .error
|
||||
exit 1
|
||||
fi
|
||||
|
||||
+20
-18
@@ -1,27 +1,29 @@
|
||||
#!/bin/sh
|
||||
|
||||
#REFERENCE: https://gist.github.com/maoueh/14ef25a03d5722bc1e03
|
||||
|
||||
build()
|
||||
{
|
||||
sudo apt update -qq
|
||||
sudo apt install -qq -y git-core gnupg flex bison lftp gperf m4 build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev libx11-dev lib32z-dev libxml2-utils xsltproc schedtool gettext texinfo nodejs npm
|
||||
sudo npm config set strict-ssl false
|
||||
sudo npm install -g surge
|
||||
sudo apt-get clean
|
||||
export TUPLE="danio"
|
||||
for i in aarch64-${TUPLE}-linux-gnu alpha-${TUPLE}-linux-gnu arm-${TUPLE}-eabi arc-${TUPLE}-linux-gnu c6x-${TUPLE}-linux-gnu h8300-${TUPLE}-elf parisc64-${TUPLE}-linux-gnu parisc-${TUPLE}-linux-gnu i386-${TUPLE}-linux-gnu i686-${TUPLE}-gnu -${TUPLE}-linux-gnu ia64-${TUPLE}-linux-gnu m68k-${TUPLE}-linux-gnu microblaze-${TUPLE}-linux-gnu mips64-${TUPLE}-linux-gnu mips-${TUPLE}-linux-gnu nios2-${TUPLE}-elf powerpc64-${TUPLE}-linux-gnu powerpc64-${TUPLE}-linux-gnu s390-${TUPLE}-linux-gnu sh2-${TUPLE}-linux-gnu sh4-${TUPLE}-linux-gnu riscv32-${TUPLE}-linux-gnu riscv64-${TUPLE}-linux-gnu sparc-${TUPLE}-linux-gnu sparc64-${TUPLE}-linux-gnu x86_64-${TUPLE}-linux-gnu xtensa-${TUPLE}-linux-gnu nds32le-${TUPLE}-linux-gnu or1k-${TUPLE}-linux-gnu hexagon-${TUPLE}-linux-gnu am33_2.0-${TUPLE}-linux-gnu bfin-${TUPLE}-uclinux crisv32-${TUPLE}-linux-gnu frv-${TUPLE}-linux-gnu m32r-${TUPLE}-linux-gnu tilepro-${TUPLE}-linux-gnu tilegx-${TUPLE}-linux-gnu; do
|
||||
if [ -e .error ]; then
|
||||
. ./.error
|
||||
break
|
||||
else
|
||||
#sudo apt update -qq
|
||||
#sudo apt install -qq -y git-core gnupg flex bison lftp gperf m4 build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev libx11-dev lib32z-dev libxml2-utils xsltproc schedtool gettext texinfo nodejs npm linux-libc-dev:i386 linux-libc-dev
|
||||
#sudo npm config set strict-ssl false
|
||||
#sudo npm install -g surge
|
||||
#sudo apt-get clean
|
||||
export TUPLE="danio"
|
||||
for i in aarch64-${TUPLE}-linux alpha-${TUPLE}-linux arm-${TUPLE}-eabi arc-${TUPLE}-linux c6x-${TUPLE}-linux h8300-${TUPLE}-elf parisc64-${TUPLE}-linux parisc-${TUPLE}-linux i386-${TUPLE}-linux i686-${TUPLE}-gnu -${TUPLE}-linux ia64-${TUPLE}-linux m68k-${TUPLE}-linux microblaze-${TUPLE}-linux mips64-${TUPLE}-linux mips-${TUPLE}-linux nios2-${TUPLE}-elf powerpc32-${TUPLE}-linux powerpc64-${TUPLE}-linux s390-${TUPLE}-linux sh2-${TUPLE}-linux sh4-${TUPLE}-linux riscv32-${TUPLE}-linux riscv64-${TUPLE}-linux sparc-${TUPLE}-linux sparc64-${TUPLE}-linux x86_64-${TUPLE}-linux xtensa-${TUPLE}-linux nds32le-${TUPLE}-linux or1k-${TUPLE}-linux hexagon-${TUPLE}-linux am33_2.0-${TUPLE}-linux bfin-${TUPLE}-linux crisv32-${TUPLE}-linux frv-${TUPLE}-linux m32r-${TUPLE}-linux tilepro-${TUPLE}-linux tilegx-${TUPLE}-linux; do
|
||||
if [ -e .error ]; then
|
||||
. ./.error
|
||||
break
|
||||
else
|
||||
|
||||
rm -rf build-* #LATEST-* gcc-* newlib-* binutils-*
|
||||
./danio_gcc.sh ${i} ${1} | tee out/${i}.log
|
||||
rm -rf build-*
|
||||
./danio_gcc.sh ${i} ${1} 2>out/error.log | tee out/${i}.log
|
||||
fi
|
||||
done
|
||||
if [ -e .error ]; then
|
||||
echo "error detected @ ${STAGE} ${MSG} !"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
if [ -e .error ]; then
|
||||
echo "error detected @ ${STAGE} !"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
mkdir -p out
|
||||
|
||||
Reference in New Issue
Block a user