#!/bin/bash
name=glibc
release=1
version=2.36
url='https://gitlab.com/sulinos/devel/ymp'
description='GNU libc library'
email='parduscix@yandex.ru'
maintainer='sulincix'
license=('GPLv3')
arch=(x86_64)
source=('https://ftp.gnu.org/gnu/glibc/glibc-2.36.tar.xz'
        'ld.so.conf'
        'usr-support.conf'
        'x86_64-linux-gnu.conf'
        'glibc.sysconf'
        'reenable_DT_HASH.patch'
)
md5sums=('00e9b89e043340f688bc93ec03239b57'
         'SKIP'
         'SKIP'
         'SKIP'
         'SKIP'
         'SKIP'
)

export CFLAGS="-O3 ${debug:+-g} -s -mno-tls-direct-seg-refs -mtune=generic -DSULIX"
export CXXFLAGS="-O3 ${debug:+-g} -s -mno-tls-direct-seg-refs -mtune=generic -DSULIX"

cd "$name-$version"
setup(){
    # Thx archlinux
    patch -Np1 -i "../reenable_DT_HASH.patch"
    opts=(
        --prefix=/
        --mandir=/share/man
        --infodir=/share/info
        --with-bugurl=http://gitlab.com/sulix/main/issues
        --enable-add-ons
        --enable-bind-now
        --enable-lock-elision
        --enable-multi-arch
        --enable-static-pie
        --enable-stack-protector=all
        --enable-kernel=5.10.0
        --enable-stackguard-randomization
        --without-selinux
        --disable-werror

    )
    if use multilib ; then
        export CC="gcc -m32"
        export CXX="g++ -m32"
        mkdir glibc32-build
        cd glibc32-build
        ../configure ${opts[@]} \
            --host=i686-pc-linux-gnu \
            --libdir=/lib32 \
            --libexecdir=/lib32/glibc
        cd ..
    fi
    export CC="gcc"
    export CXX="g++"
    mkdir glibc-build
    cd glibc-build
    pwd
    ../configure ${opts[@]} \
        --libdir=/lib \
        --libexecdir=/lib/glibc
    cd ..
}
build(){
    bdirs=(glibc-build)
    if use multilib ; then
        bdirs+=(glibc32-build)
    fi
    for bdir in ${bdirs[@]} ; do
        if [[ -d $bdir ]] ; then
            make -C $bdir -O -j`nproc --all`
            make -C $bdir info
        fi
    done
}
package(){
    # create symlink lib64 (gentoo compability)
    mkdir -p ${DESTDIR}/lib64
    ln -s lib64 ${DESTDIR}/lib
    if use multilib ; then
        mkdir -p ${DESTDIR}/lib32
        ln -s lib32 ${DESTDIR}/libx32
    fi
    for bdir in glibc-build ${multilib:+glibc32-build} ; do
        if [[ -d $bdir ]] ; then
            make -C $bdir install  -j$(nproc --all)
        fi
    done
    mkdir -p ${DESTDIR}/etc/ld.so.conf.d/ ${DESTDIR}/etc/sysconf.d/
    install ../../ld.so.conf ${DESTDIR}/etc/ld.so.conf
    install ../../usr-support.conf ${DESTDIR}/etc/ld.so.conf.d/
    install ../../x86_64-linux-gnu.conf ${DESTDIR}/etc/ld.so.conf.d/
    # remove ld.so.cache file (this file must generated by ldconfig command from inary)
    rm -f ${DESTDIR}/etc/ld.so.cache
    # install sysconf trigger
    install ../../glibc.sysconf ${DESTDIR}/etc/sysconf.d/glibc

}
