diff options
Diffstat (limited to 'repo/devel/gcc.xibuild')
-rw-r--r-- | repo/devel/gcc.xibuild | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/repo/devel/gcc.xibuild b/repo/devel/gcc.xibuild new file mode 100644 index 0000000..ab9830d --- /dev/null +++ b/repo/devel/gcc.xibuild @@ -0,0 +1,78 @@ +#!/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 +} |