#!/bin/bash

DEPS=(glibc)

SOURCE=https://mirrorservice.org/sites/sourceware.org/pub/gcc/releases/gcc-11.2.0/gcc-11.2.0.tar.xz

DESC="The GNU Compiler Collection - C and C++ frontends"


build () {
    #fix an issue breaking libasan.a

    sed -e '/static.*SIGSTKSZ/d' \
    -e 's/return kAltStackSize/return SIGSTKSZ * 4/' \
    -i libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp

    case $(uname -m) in
      x86_64)
        sed -e '/m64=/s/lib64/lib/' \
            -i.orig gcc/config/i386/t-linux64
      ;;
    esac


    mkdir -v build
    cd build

    ../configure --prefix=/usr            \
             LD=ld                    \
             --enable-languages=c,c++ \
             --disable-multilib       \
             --disable-bootstrap      \
             --with-system-zlib

    make

    ulimit -s 32768

    if id -u tester; then
        chown -Rv tester .
        su tester -c "PATH=$PATH make $MAKEFLAGS -k check"
        ../contrib/test_summary | grep -A7 Summ
    fi

}


package () {
    make DESTDIR=$PKG_DEST install

    rm -rf $PKG_DEST/usr/lib/gcc/$(gcc -dumpmachine)/11.2.0/include-fixed/bits/

    chown -v -R root:root \
    $PKG_DEST/usr/lib/gcc/*linux-gnu/11.2.0/include{,-fixed}
    ln -sv cpp $PKG_DEST/usr/lib/cpp

    ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/11.2.0/liblto_plugin.so \
        $PKG_DEST/usr/lib/bfd-plugins/


    # sanity checks
    echo 'int main(){}' > dummy.c
    cc dummy.c -v -Wl,--verbose &> dummy.log
    readelf -l a.out | grep ': /lib'

    grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log
    grep -B4 '^ /usr/include' dummy.log
    grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g'
    grep "/lib.*/libc.so.6 " dummy.log
    grep found dummy.log

    # move a misplaced file
    mkdir -pv $PKG_DEST/usr/share/gdb/auto-load/usr/lib
    mv -v $PKG_DEST/usr/lib/*gdb.py $PKG_DEST/usr/share/gdb/auto-load/usr/lib

    # set gcc as the default c compiler
    ln -s gcc $PKG_DEST/usr/bin/cc
}