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
|
||||
|
||||
Reference in New Issue
Block a user