#!/usr/bin/env bash
name='gcc'
release='1'
version='12.2.0'
url='https://ftp.gnu.org/gnu/gcc/'
description='GNU Compiler Collection'
email=' parduscix@yandex.ru'
maintainer=' sulincix'
license=('GPLv3')
source=("https://ftp.gnu.org/gnu/gcc/gcc-12.2.0/gcc-${version}.tar.xz")
depends=(binutils libmpc zlib)
makedepends=( )
md5sums=('73bafd0af874439dcdb9fc063b6fb069')
arch=('x86_64')
group=(sys.devel)
uses=(multilib)
uses_extra=(langs)

cd $name-$version
export CFLAGS="-O2 -s"
export CXXFLAGS="-O2 -s"
unset LDFLAGS

prepare(){
    cd ..
    # tar permissions and owners is not supported by ymp sandbox.
    # we remove broken source and extract again without permission and owners
    rm -rf $name-$version
    tar --no-same-owner --no-same-permissions -xvf $name-$version.tar.xz
}

setup(){
    options=(
      --prefix=/usr
      --libexecdir=/usr/libexec
      --mandir=/usr/share/man
      --infodir=/usr/share/info
      --with-pkgversion="Sulix"
      --with-bugurl=https://gitlab.com/groups/sulix/-/issues
      --disable-checking
      --disable-fixed-point
      --disable-libstdcxx-pch
      --enable-plugin
      --enable-lto
      --enable-languages=c,c++$(use_opt langs ",fortran,go,objc,obj-c++" "")
      --enable-shared
      --without-zstd
      --with-system-zlib
      --disable-nls
    )
    if use multilib ; then
        mkdir build-lib32
        cd build-lib32
        ../configure ${options[@]} \
            --libdir=/usr/lib32 \
            --target=i686-pc-linux-gnu
        cd ..
    fi
    mkdir build
    cd build
    ../configure ${options[@]} \
        --libdir=/usr/lib64 \
        --target=x86_64-pc-linux-gnu \
        $(use_opt multilib "--enable-multilib" "") \
        $(use_opt multilib "--with-multilib-list=m32,m64" "")
}

build(){
    if use multilib ; then
        cd build-lib32
        make -j`nproc`
        cd ..
    fi
    cd build
    make -j`nproc`
}

package(){
    if use multilib ; then
        cd build-lib32
        make install -j`nproc`
        cd ..
    fi
    cd build
    make install -j`nproc`
    mkdir -p ${DESTDIR}/usr/lib64/
    if use multilib ; then
        # move lib to lib64
        if [ -d ${DESTDIR}/usr/lib && ! -d ${DESTDIR}/usr/lib32 ] ; then
            mv ${DESTDIR}/usr/{lib,lib32}
        fi
    fi
    ln -s gcc ${DESTDIR}/usr/bin/cc
    ln -s g++ ${DESTDIR}/usr/bin/cxx
    ln -s ../usr/bin/cpp ${DESTDIR}/lib64/cpp
}

