sylware / nyanlinux (public) (License: AFFERO GPLv3) (since 2019-09-09) (hash sha1)
scripts for a lean, from scratch, amd hardware, linux distro

/builders/bootstrap/gcc/builder.sh (4047c01b810218b5809cd3f3f7e70171f41f1b03) (7946 bytes) (mode 100644) (type blob)

. $nyan_root/conf.bootstrap.sh

src_name=gcc
slot=0
#TODO: move to gcc "4.7.5"
version=4.7.4
archive_name=$src_name-$version.tar.bz2
url0=https://ftpmirror.gnu.org/$src_name/$src_name-$version/$archive_name

pkg_dir=$pkgs_dir_root/$src_name-$version
rm -Rf $pkg_dir
mkdir -p $pkgs_dir_root
cp -f $src_dir_root/$archive_name $pkgs_dir_root
cd $pkgs_dir_root
tar xf $archive_name
#-------------------------------------------------------------------------------
# copy a fixed version of gperf hash file, pending for a non-gperf alternative
cp -f $nyan_root/builders/bootstrap/$pkg_name/cfns.h $pkg_dir/gcc/cp
#-------------------------------------------------------------------------------
# patch a linux troublesome bug 
# https://gcc.gnu.org/bugzilla/attachment.cgi?id=30653
cp -f $nyan_root/builders/bootstrap/$pkg_name/tree-sra.c.patch $pkg_dir/gcc
cd $pkg_dir/gcc
patch -p0 -N -i ./tree-sra.c.patch
#-------------------------------------------------------------------------------
# add the missing bswap16
# https://gcc.gnu.org/legacy-ml/gcc-patches/2012-04/msg00452.html
cp -f $nyan_root/builders/bootstrap/$pkg_name/bswap16.patch $pkg_dir/gcc
patch -p0 -i ./bswap16.patch
#-------------------------------------------------------------------------------

PATH_SAVED=$PATH
export PATH=$bootstrap_target_cross_toolchain/bin:$PATH

build_dir=$builds_dir_root/$pkg_name-$version-$bootstrap_target_gnu_triple
rm -Rf $build_dir
mkdir -p $build_dir

cd $build_dir
export "CFLAGS_FOR_BUILD=$bootstrap_build_cflags"
export "CPPFLAGS=\
	-I$bootstrap_target_sysroot/nyan/zlib/current/include \
	-isystem $bootstrap_target_sysroot/nyan/glibc/current/include \
	-isystem $bootstrap_target_sysroot/nyan/linux-headers/current/include"
export "CFLAGS=-O2 -pipe -fPIC"
# missing pthread for mpfr
export "LDFLAGS=-B$bootstrap_target_sysroot/nyan/glibc/current/lib \
	-L$bootstrap_target_sysroot/nyan/glibc/current/lib \
	-lpthread \
	-L$bootstrap_target_sysroot/nyan/zlib/current/lib \
	-L$bootstrap_target_sysroot/nyan/toolchains/binutils-2.36.1-$src_name-$version/$slot/lib \
	-Wl,-s"
export "CC_FOR_BUILD=$bootstrap_build_cc $bootstrap_build_cppflags $bootstrap_build_ccld_flags"
export "AR_FOR_BUILD=$bootstrap_build_ar"
export "RANLIB_FOR_BUILD=$bootstrap_build_ranlib"
export "CPP=$bootstrap_target_gnu_triple-cpp $CPPFLAGS"
export "CC=$bootstrap_target_gnu_triple-gcc $CPPFLAGS $LDFLAGS -static-libgcc"
export "CXX=none_please"
# native system header dir is relative to sysroot
mkdir $build_dir/gcc
# only way to pass a proper cxxcpp down to gcc subdir
printf "ac_cv_prog_CXXCPP=\"$bootstrap_target_gnu_triple-cpp $CPPFLAGS\"" >$build_dir/gcc/config.cache
# to use the right build system compiler, and use the right build system c++
# preprocessor (actually useless) passed down the only way we found working...
# jez... this sdk needs to be flatten and re-orthogonalized.
sed -r \
-e "11428 i\\
\tprintf \"ac_cv_prog_CXXCPP=\\\\\"$bootstrap_build_cpp\\\\\"\">\$tempdir/config.cache" \
-e "11437 i\\
\t\t--cache-file=./config.cache \\\\" \
-e "11931 i\\
CC_FOR_BUILD='$CC_FOR_BUILD'" -i $pkg_dir/gcc/configure

$pkg_dir/configure \
	--prefix=/nyan/toolchains/binutils-2.36.1-$src_name-$version/$slot \
\
	--build=$bootstrap_build_gnu_triple \
	--host=$bootstrap_target_gnu_triple \
	--target=$bootstrap_target_gnu_triple \
\
	--enable-decimal-float=no \
	--enable-threads=posix \
	--enable-tls \
	--enable-shared \
	--enable-languages=c,c++ \
	--disable-rpath \
	--enable-version-specific-runtime-libs \
	--disable-plugin \
	--disable-libquadmath-support \
	--with-sysroot=$bootstrap_target_sysroot \
	--with-native-system-header-dir=/nyan/glibc/current/include \
	--with-gmp=$bootstrap_target_sysroot/nyan/toolchains/binutils-2.36.1-gcc-4.7.4/$slot \
	--with-mpfr=$bootstrap_target_sysroot/nyan/toolchains/binutils-2.36.1-gcc-4.7.4/$slot \
	--with-mpc=$bootstrap_target_sysroot/nyan/toolchains/binutils-2.36.1-gcc-4.7.4/$slot \
	--disable-libquadmath \
	--disable-libada \
	--disable-libssp \
	--disable-bootstrap \
	--disable-lto \
	--disable-nls \
	--with-system-zlib
unset CFLAGS_FOR_BUILD
unset CPPFLAGS
unset CFLAGS
unset LDFLAGS
unset CC_FOR_BUILD
unset AR_FOR_BUILD
unset RANLIB_FOR_BUILD
unset CPP
unset CC
unset CXX
make -j $threads_n all-gcc
make install-gcc DESTDIR=$bootstrap_target_sysroot

ln -sTf $slot $bootstrap_target_sysroot/nyan/toolchains/binutils-2.36.1-$src_name-$version/current

#===============================================================================
# link the already cross-compiled "libgcc"
cd $bootstrap_target_sysroot/nyan/toolchains/binutils-2.36.1-$src_name-$version/current/lib/gcc/$bootstrap_target_gnu_triple/$version
ln -sTf /nyan/bootstrap/$bootstrap_build_gnu_triple/cross-toolchains/$bootstrap_target_gnu_triple/lib/gcc/$bootstrap_target_gnu_triple/$version/crtbegin.o		crtbegin.o
ln -sTf /nyan/bootstrap/$bootstrap_build_gnu_triple/cross-toolchains/$bootstrap_target_gnu_triple/lib/gcc/$bootstrap_target_gnu_triple/$version/crtbeginS.o		crtbeginS.o
ln -sTf /nyan/bootstrap/$bootstrap_build_gnu_triple/cross-toolchains/$bootstrap_target_gnu_triple/lib/gcc/$bootstrap_target_gnu_triple/$version/crtbeginT.o		crtbeginT.o
ln -sTf /nyan/bootstrap/$bootstrap_build_gnu_triple/cross-toolchains/$bootstrap_target_gnu_triple/lib/gcc/$bootstrap_target_gnu_triple/$version/crtend.o		crtend.o
ln -sTf /nyan/bootstrap/$bootstrap_build_gnu_triple/cross-toolchains/$bootstrap_target_gnu_triple/lib/gcc/$bootstrap_target_gnu_triple/$version/crtendS.o		crtendS.o
ln -sTf /nyan/bootstrap/$bootstrap_build_gnu_triple/cross-toolchains/$bootstrap_target_gnu_triple/lib/gcc/$bootstrap_target_gnu_triple/$version/crtfastmath.o		crtfastmath.o
ln -sTf /nyan/bootstrap/$bootstrap_build_gnu_triple/cross-toolchains/$bootstrap_target_gnu_triple/lib/gcc/$bootstrap_target_gnu_triple/$version/crtprec32.o		crtprec32.o
ln -sTf /nyan/bootstrap/$bootstrap_build_gnu_triple/cross-toolchains/$bootstrap_target_gnu_triple/lib/gcc/$bootstrap_target_gnu_triple/$version/crtprec64.o		crtprec64.o
ln -sTf /nyan/bootstrap/$bootstrap_build_gnu_triple/cross-toolchains/$bootstrap_target_gnu_triple/lib/gcc/$bootstrap_target_gnu_triple/$version/crtprec80.o		crtprec80.o
ln -sTf /nyan/bootstrap/$bootstrap_build_gnu_triple/cross-toolchains/$bootstrap_target_gnu_triple/lib/gcc/$bootstrap_target_gnu_triple/$version/libgcc.a		libgcc.a
ln -sTf /nyan/bootstrap/$bootstrap_build_gnu_triple/cross-toolchains/$bootstrap_target_gnu_triple/lib/gcc/$bootstrap_target_gnu_triple/$version/libgcc_eh.a		libgcc_eh.a
ln -sTf /nyan/bootstrap/$bootstrap_build_gnu_triple/cross-toolchains/$bootstrap_target_gnu_triple/lib/gcc/$bootstrap_target_gnu_triple/$version/libgcov.a		libgcov.a

ln -sTf /nyan/bootstrap/$bootstrap_build_gnu_triple/cross-toolchains/$bootstrap_target_gnu_triple/lib/gcc/$bootstrap_target_gnu_triple/$version/include/unwind.h	./include/unwind.h
#===============================================================================
rm -f $bootstrap_target_sysroot/nyan/toolchains/binutils-2.36.1-$src_name-$version/current/bin/c++
rm -f $bootstrap_target_sysroot/nyan/toolchains/binutils-2.36.1-$src_name-$version/current/bin/cpp
rm -f $bootstrap_target_sysroot/nyan/toolchains/binutils-2.36.1-$src_name-$version/current/bin/g++
rm -f $bootstrap_target_sysroot/nyan/toolchains/binutils-2.36.1-$src_name-$version/current/bin/gcc
rm -f $bootstrap_target_sysroot/nyan/toolchains/binutils-2.36.1-$src_name-$version/current/bin/gcc-ar
rm -f $bootstrap_target_sysroot/nyan/toolchains/binutils-2.36.1-$src_name-$version/current/bin/gcc-nm
rm -f $bootstrap_target_sysroot/nyan/toolchains/binutils-2.36.1-$src_name-$version/current/bin/gcc-ranlib
mv -f $bootstrap_target_sysroot/nyan/toolchains/binutils-2.36.1-$src_name-$version/current/bin/gcov $bootstrap_target_sysroot/nyan/toolchains/binutils-2.36.1-$src_name-$version/current/bin/$bootstrap_target_gnu_triple-gcov

export PATH=$PATH_SAVED

rm -f $pkgs_dir_root/$archive_name
rm -Rf $pkg_dir $build_dir


Mode Type Size Ref File
100644 blob 5 8eba6c8dd4dcaf6166bd22285ed34625f38a84ff .gitignore
100755 blob 1587 57fa4264b9ee0ae0a6f678f2527a05d3b22dda78 00-bootstrap-build.sh
100755 blob 848 a30f443bf405d56682efe3b4c5d3a19d5f7eb45d 01-re-bootstrap-build.sh
100644 blob 2142 f19c2d6b293244bb11a3f74ee77c10675cadc7d6 INSTALL
100644 blob 30 c9b735fa1332286f4b3f5f81fa10527fd7506b6e LICENSE
040000 tree - ec18cec5a18b12379c13e068413b4ca5d689bf28 builders
100644 blob 1773 ef1551089a803bde37e36edc8d61bb819d06f793 conf.bootstrap.sh
100644 blob 479 8cc15efe46965ac7750fe304460f5a2b0aa4201c conf.sh
040000 tree - 7736496abef80608f40188d3f4425ef67a16375e files
100755 blob 356 8fb8be28ac72f7214b59934b9f74a682665f2d32 pkg-build
100644 blob 22800641 e9e6291054c857401f6835c728f31541dae4311e steam.tar.bz2
100644 blob 173 2047af328b22f9d146585cd9e759edbc18122250 utils.sh
040000 tree - 8e23f551092a35f82b37129dd08c35c4d313c17b x64
040000 tree - b7a22de7f5cbd97650dd45412ef7d4246e395eb8 x86
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/sylware/nyanlinux

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/sylware/nyanlinux

Clone this repository using git:
git clone git://git.rocketgit.com/user/sylware/nyanlinux

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main