Created
October 31, 2025 05:21
-
-
Save BluSyn/da0849e1b9c7b61da64adbc2fc56cedd to your computer and use it in GitHub Desktop.
gcc 15.2.1 for aarch64
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Maintainer: Giancarlo Razzolini <grazzolini@archlinux.org> | |
| # Maintainer: Frederik Schwan <freswa at archlinux dot org> | |
| # Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org> | |
| # Contributor: Allan McRae <allan@archlinux.org> | |
| # Contributor: Daniel Kozak <kozzi11@gmail.com> | |
| # toolchain build order: linux-api-headers->glibc->binutils->gcc->glibc->binutils->gcc | |
| # NOTE: libtool requires rebuilt with each new gcc version | |
| # ALARM: Kevin Mihelich <kevin@archlinuxarm.org> | |
| # - removed ada packages | |
| # - removed gnat (ada stuff) from gcc packaging | |
| # - disabled make check, too much stress, kills plugs :( | |
| # - specifid build host, disabled distcc | |
| # - replaced bugurl with our GitHub issue page | |
| noautobuild=1 | |
| pkgname=(gcc gcc-libs gcc-d gcc-fortran gcc-go gcc-m2 gcc-objc gcc-rust gcc-gcobol lto-dump libgccjit) | |
| pkgver=15.2.1+r22+gc4e96a094636 | |
| _commit=c4e96a094636b3c15b5e3bfde8673ec3b8172993 | |
| pkgrel=1 | |
| pkgdesc='The GNU Compiler Collection' | |
| arch=(x86_64 aarch64) | |
| license=(GPL-3.0-with-GCC-exception GFDL-1.3-or-later) | |
| url='https://gcc.gnu.org' | |
| makedepends=(binutils libmpc doxygen python git libxcrypt zstd) | |
| checkdepends=(dejagnu inetutils tcl expect python-pytest) | |
| makedepends=( | |
| binutils | |
| doxygen | |
| gcc-d | |
| git | |
| libisl | |
| libmpc | |
| python | |
| rust | |
| zstd | |
| ) | |
| checkdepends=( | |
| dejagnu | |
| expect | |
| inetutils | |
| python-pytest | |
| tcl | |
| ) | |
| options=(!emptydirs !lto !distcc) | |
| _libdir=usr/lib/gcc/$CHOST/${pkgver%%+*} | |
| source=(git+https://sourceware.org/git/gcc.git#commit=${_commit} | |
| c89 c99 | |
| gcc-ada-repro.patch | |
| ) | |
| validpgpkeys=(F3691687D867B81B51CE07D9BBE43771487328A9 # bpiotrowski@archlinux.org | |
| 86CFFCA918CF3AF47147588051E8B148A9999C34 # foutrelis@archlinux.org | |
| 13975A70E63C361C73AE69EF6EEB81F8981C74C7 # richard.guenther@gmail.com | |
| D3A93CAD751C2AF4F8C7AD516C35B99309B5FA62) # Jakub Jelinek <jakub@redhat.com> | |
| sha256sums=('d1d0263f7595e2189110dbe5d12608e144637a6a29a247e41c6926915caab8de' | |
| '7b09ec947f90b98315397af675369a1e3dfc527fa70013062e6e85c4be0275ab' | |
| '44ea973558842f3f4bd666bdaf6e810fd7b7c7bd36b5cc4c69f93d2cd0124fc7' | |
| '1773f5137f08ac1f48f0f7297e324d5d868d55201c03068670ee4602babdef2f') | |
| pkgver() { | |
| cd gcc | |
| echo "$(cat gcc/BASE-VER)+$(git describe --abbrev=12 --tags | sed 's/[^-]*-[^-]*-//;s/[^-]*-/r&/;s/-/+/g;s/_/./')" | |
| } | |
| prepare() { | |
| [[ ! -d gcc ]] && ln -s gcc-${pkgver/+/-} gcc | |
| cd gcc | |
| # Do not run fixincludes | |
| sed -i 's@\./fixinc\.sh@-c true@' gcc/Makefile.in | |
| # Arch Linux installs x86_64 libraries /lib | |
| [[ $CARCH == "x86_64" ]] && sed -i '/m64=/s/lib64/lib/' gcc/config/i386/t-linux64 | |
| # Arch Linux ARM installs aarch64 libraries /lib | |
| [[ $CARCH == "aarch64" ]] && sed -i '/lp64=/s/lib64/lib/' gcc/config/aarch64/t-aarch64-linux | |
| # Reproducible gcc-ada | |
| patch -Np0 < "$srcdir/gcc-ada-repro.patch" | |
| # ALARM: Specify build host types, triplet patch | |
| [[ $CARCH == "armv7h" ]] && CONFIGFLAG="--host=armv7l-unknown-linux-gnueabihf --build=armv7l-unknown-linux-gnueabihf --with-arch=armv7-a --with-float=hard --with-fpu=neon" | |
| [[ $CARCH == "aarch64" ]] && CONFIGFLAG="--host=aarch64-unknown-linux-gnu --build=aarch64-unknown-linux-gnu --with-arch=armv8-a --enable-fix-cortex-a53-835769 --enable-fix-cortex-a53-843419" | |
| mkdir -p "$srcdir/gcc-build" | |
| mkdir -p "$srcdir/libgccjit-build" | |
| } | |
| build() { | |
| local _confflags=( | |
| --prefix=/usr | |
| --libdir=/usr/lib | |
| --libexecdir=/usr/lib | |
| --mandir=/usr/share/man | |
| --infodir=/usr/share/info | |
| --with-bugurl=https://github.com/archlinuxarm/PKGBUILDs/issues | |
| --with-linker-hash-style=gnu | |
| --with-system-zlib | |
| --enable-__cxa_atexit | |
| --enable-checking=release | |
| --enable-clocale=gnu | |
| --enable-default-pie | |
| --enable-default-ssp | |
| --enable-gnu-indirect-function | |
| --enable-gnu-unique-object | |
| --enable-libstdcxx-backtrace | |
| --enable-linker-build-id | |
| --enable-lto | |
| --enable-plugin | |
| --enable-shared | |
| --enable-threads=posix | |
| --disable-libssp | |
| --disable-libstdcxx-pch | |
| --disable-multilib | |
| --disable-werror | |
| $CONFIGFLAG | |
| ) | |
| cd gcc-build | |
| # Credits @allanmcrae | |
| # https://github.com/allanmcrae/toolchain/blob/f18604d70c5933c31b51a320978711e4e6791cf1/gcc/PKGBUILD | |
| # TODO: properly deal with the build issues resulting from this | |
| CFLAGS=${CFLAGS/-Werror=format-security/} | |
| CXXFLAGS=${CXXFLAGS/-Werror=format-security/} | |
| "$srcdir/gcc/configure" \ | |
| --enable-languages=c,c++,d,fortran,go,lto,m2,objc,obj-c++,rust,cobol \ | |
| --enable-bootstrap \ | |
| "${_confflags[@]:?_confflags unset}" | |
| # see https://bugs.archlinux.org/task/71777 for rationale re *FLAGS handling | |
| make -O STAGE1_CFLAGS="-O2" \ | |
| BOOT_CFLAGS="$CFLAGS" \ | |
| BOOT_LDFLAGS="$LDFLAGS" \ | |
| LDFLAGS_FOR_TARGET="$LDFLAGS" \ | |
| bootstrap | |
| # make documentation | |
| make -O -C $CHOST/libstdc++-v3/doc doc-man-doxygen | |
| # Build libgccjit separately, to avoid building all compilers with --enable-host-shared | |
| # which brings a performance penalty | |
| cd "${srcdir}"/libgccjit-build | |
| "$srcdir/gcc/configure" \ | |
| --enable-languages=jit \ | |
| --disable-bootstrap \ | |
| --enable-host-shared \ | |
| "${_confflags[@]:?_confflags unset}" | |
| # see https://bugs.archlinux.org/task/71777 for rationale re *FLAGS handling | |
| make -O STAGE1_CFLAGS="-O2" \ | |
| BOOT_CFLAGS="$CFLAGS" \ | |
| BOOT_LDFLAGS="$LDFLAGS" \ | |
| LDFLAGS_FOR_TARGET="$LDFLAGS" \ | |
| all-gcc | |
| cp -a gcc/libgccjit.so* ../gcc-build/gcc/ | |
| } | |
| check() { | |
| cd gcc-build | |
| # disable libphobos test to avoid segfaults | |
| sed -i '/maybe-check-target-libphobos \\/d' Makefile | |
| # do not abort on error as some are "expected" | |
| make -O -k check || true | |
| "$srcdir/gcc/contrib/test_summary" | |
| } | |
| package_gcc-libs() { | |
| pkgdesc='Runtime libraries shipped by GCC' | |
| depends=('glibc>=2.27') | |
| options=(!emptydirs !strip) | |
| provides=(libgo.so libgfortran.so libgphobos.so | |
| libubsan.so libasan.so liblsan.so) | |
| if [[ $CARCH == "aarch64" ]]; then | |
| provides+=(libtsan.so) | |
| fi | |
| replaces=(libgphobos) | |
| cd gcc-build | |
| make -C $CHOST/libgcc DESTDIR="$pkgdir" install-shared | |
| rm -f "$pkgdir/$_libdir/libgcc_eh.a" | |
| for lib in libatomic \ | |
| libgfortran \ | |
| libgo \ | |
| libgomp \ | |
| libitm \ | |
| libquadmath \ | |
| libsanitizer/{a,l,ub}san \ | |
| libstdc++-v3/src \ | |
| libvtv; do | |
| make -C $CHOST/$lib DESTDIR="$pkgdir" install-toolexeclibLTLIBRARIES | |
| done | |
| if [[ $CARCH == "x86_64" || $CARCH == "aarch64" ]]; then | |
| make -C $CHOST/libsanitizer/tsan DESTDIR="$pkgdir" install-toolexeclibLTLIBRARIES | |
| fi | |
| make -C $CHOST/libobjc DESTDIR="$pkgdir" install-libs | |
| make -C $CHOST/libstdc++-v3/po DESTDIR="$pkgdir" install | |
| make -C $CHOST/libphobos DESTDIR="$pkgdir" install | |
| rm -rf "$pkgdir"/$_libdir/include/d/ | |
| rm -f "$pkgdir"/usr/lib/libgphobos.spec | |
| for lib in libgomp \ | |
| libitm \ | |
| libquadmath; do | |
| make -C $CHOST/$lib DESTDIR="$pkgdir" install-info | |
| done | |
| # Install Runtime Library Exception | |
| install -Dm644 "$srcdir/gcc/COPYING.RUNTIME" \ | |
| "$pkgdir/usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION" | |
| } | |
| package_gcc() { | |
| pkgdesc="The GNU Compiler Collection - C and C++ frontends" | |
| depends=("gcc-libs=$pkgver-$pkgrel" 'binutils>=2.28' libmpc zstd libisl.so) | |
| options=(!emptydirs staticlibs) | |
| cd gcc-build | |
| make -C gcc DESTDIR="$pkgdir" install-driver install-cpp install-gcc-ar \ | |
| c++.install-common install-headers install-plugin install-lto-wrapper | |
| install -m755 -t "$pkgdir/usr/bin/" gcc/gcov{,-tool} | |
| install -m755 -t "$pkgdir/${_libdir}/" gcc/{cc1,cc1plus,collect2,lto1} | |
| make -C $CHOST/libgcc DESTDIR="$pkgdir" install | |
| rm -f "$pkgdir"/usr/lib/libgcc_s.so* | |
| make -C $CHOST/libstdc++-v3/src DESTDIR="$pkgdir" install | |
| make -C $CHOST/libstdc++-v3/include DESTDIR="$pkgdir" install | |
| make -C $CHOST/libstdc++-v3/libsupc++ DESTDIR="$pkgdir" install | |
| make -C $CHOST/libstdc++-v3/python DESTDIR="$pkgdir" install | |
| make DESTDIR="$pkgdir" install-libcc1 | |
| install -d "$pkgdir/usr/share/gdb/auto-load/usr/lib" | |
| mv "$pkgdir"/usr/lib/libstdc++.so.6.*-gdb.py \ | |
| "$pkgdir/usr/share/gdb/auto-load/usr/lib/" | |
| rm "$pkgdir"/usr/lib/libstdc++.so* | |
| make DESTDIR="$pkgdir" install-fixincludes | |
| make -C gcc DESTDIR="$pkgdir" install-mkheaders | |
| make -C lto-plugin DESTDIR="$pkgdir" install | |
| install -dm755 "$pkgdir"/usr/lib/bfd-plugins/ | |
| ln -s /${_libdir}/liblto_plugin.so \ | |
| "$pkgdir/usr/lib/bfd-plugins/" | |
| make -C $CHOST/libgomp DESTDIR="$pkgdir" install-nodist_{libsubinclude,toolexeclib}HEADERS | |
| make -C $CHOST/libitm DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS | |
| make -C $CHOST/libquadmath DESTDIR="$pkgdir" install-nodist_libsubincludeHEADERS | |
| make -C $CHOST/libsanitizer DESTDIR="$pkgdir" install-nodist_{saninclude,toolexeclib}HEADERS | |
| make -C $CHOST/libsanitizer/asan DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS | |
| if [[ $CARCH == "aarch64" ]]; then | |
| make -C $CHOST/libsanitizer/tsan DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS | |
| fi | |
| make -C $CHOST/libsanitizer/lsan DESTDIR="$pkgdir" install-nodist_toolexeclibHEADERS | |
| make -C gcc DESTDIR="$pkgdir" install-man install-info | |
| rm "$pkgdir"/usr/share/man/man1/{gccgo,gfortran,lto-dump,gdc,gm2,gcobol}.1 | |
| rm "$pkgdir"/usr/share/man/man3/gcobol-io.3 | |
| rm "$pkgdir"/usr/share/info/{gccgo,gfortran,gdc,m2}.info | |
| make -C libcpp DESTDIR="$pkgdir" install | |
| make -C gcc DESTDIR="$pkgdir" install-po | |
| # many packages expect this symlink | |
| ln -s gcc "$pkgdir"/usr/bin/cc | |
| # POSIX conformance launcher scripts for c89 and c99 | |
| install -Dm755 "$srcdir/c89" "$pkgdir/usr/bin/c89" | |
| install -Dm755 "$srcdir/c99" "$pkgdir/usr/bin/c99" | |
| # install the libstdc++ man pages | |
| make -C $CHOST/libstdc++-v3/doc DESTDIR="$pkgdir" doc-install-man | |
| # byte-compile python libraries | |
| python -m compileall "$pkgdir/usr/share/gcc-${pkgver%%+*}/" | |
| python -O -m compileall "$pkgdir/usr/share/gcc-${pkgver%%+*}/" | |
| # Install Runtime Library Exception | |
| install -d "$pkgdir/usr/share/licenses/$pkgname/" | |
| ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \ | |
| "$pkgdir/usr/share/licenses/$pkgname/" | |
| } | |
| package_gcc-fortran() { | |
| pkgdesc='Fortran front-end for GCC' | |
| depends=("gcc=$pkgver-$pkgrel" libisl.so) | |
| cd gcc-build | |
| make -C $CHOST/libgfortran DESTDIR="$pkgdir" install-cafexeclibLTLIBRARIES \ | |
| install-{toolexeclibDATA,nodist_fincludeHEADERS,gfor_cHEADERS} | |
| make -C $CHOST/libgomp DESTDIR="$pkgdir" install-nodist_fincludeHEADERS | |
| make -C gcc DESTDIR="$pkgdir" fortran.install-{common,man,info} | |
| install -Dm755 gcc/f951 "$pkgdir/${_libdir}/f951" | |
| ln -s gfortran "$pkgdir/usr/bin/f95" | |
| # Install Runtime Library Exception | |
| install -d "$pkgdir/usr/share/licenses/$pkgname/" | |
| ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \ | |
| "$pkgdir/usr/share/licenses/$pkgname/" | |
| } | |
| package_gcc-objc() { | |
| pkgdesc='Objective-C front-end for GCC' | |
| depends=("gcc=$pkgver-$pkgrel" libisl.so) | |
| cd gcc-build | |
| make DESTDIR="$pkgdir" -C $CHOST/libobjc install-headers | |
| install -dm755 "$pkgdir/${_libdir}" | |
| install -m755 gcc/cc1obj{,plus} "$pkgdir/${_libdir}/" | |
| # Install Runtime Library Exception | |
| install -d "$pkgdir/usr/share/licenses/$pkgname/" | |
| ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \ | |
| "$pkgdir/usr/share/licenses/$pkgname/" | |
| } | |
| package_gcc-go() { | |
| pkgdesc='Go front-end for GCC' | |
| depends=("gcc=$pkgver-$pkgrel" libisl.so) | |
| provides=("go=1.17") | |
| conflicts=(go) | |
| cd gcc-build | |
| make -C $CHOST/libgo DESTDIR="$pkgdir" install-exec-am | |
| make DESTDIR="$pkgdir" install-gotools | |
| make -C gcc DESTDIR="$pkgdir" go.install-{common,man,info} | |
| rm -f "$pkgdir"/usr/lib/libgo.so* | |
| install -Dm755 gcc/go1 "$pkgdir/${_libdir}/go1" | |
| # Install Runtime Library Exception | |
| install -d "$pkgdir/usr/share/licenses/$pkgname/" | |
| ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \ | |
| "$pkgdir/usr/share/licenses/$pkgname/" | |
| } | |
| package_gcc-d() { | |
| pkgdesc="D frontend for GCC" | |
| depends=("gcc=$pkgver-$pkgrel" libisl.so) | |
| provides=(gdc) | |
| replaces=(gdc) | |
| options=(staticlibs) | |
| cd gcc-build | |
| make -C gcc DESTDIR="$pkgdir" d.install-{common,man,info} | |
| install -Dm755 gcc/gdc "$pkgdir"/usr/bin/gdc | |
| install -Dm755 gcc/d21 "$pkgdir"/"$_libdir"/d21 | |
| make -C $CHOST/libphobos DESTDIR="$pkgdir" install | |
| rm -f "$pkgdir/usr/lib/"lib{gphobos,gdruntime}.so* | |
| rm -f "$pkgdir/usr/lib32/"lib{gphobos,gdruntime}.so* | |
| # Install Runtime Library Exception | |
| install -d "$pkgdir/usr/share/licenses/$pkgname/" | |
| ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \ | |
| "$pkgdir/usr/share/licenses/$pkgname/" | |
| } | |
| package_gcc-m2() { | |
| pkgdesc='Modula-2 frontend for GCC' | |
| depends=("gcc=$pkgver-$pkgrel" libisl.so) | |
| cd gcc-build | |
| make -C gcc DESTDIR="$pkgdir" m2.install-{common,man,info} | |
| install -Dm755 gcc/cc1gm2 "$pkgdir/$_libdir"/cc1gm2 | |
| install -Dm755 gcc/gm2 "$pkgdir"/usr/bin/gm2 | |
| make -C $CHOST/libgm2 DESTDIR="$pkgdir" install | |
| # Install Runtime Library Exception | |
| install -d "$pkgdir/usr/share/licenses/$pkgname/" | |
| ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \ | |
| "$pkgdir/usr/share/licenses/$pkgname/" | |
| } | |
| package_gcc-rust() { | |
| pkgdesc="Rust frontend for GCC" | |
| depends=("gcc=$pkgver-$pkgrel" libisl.so) | |
| cd gcc-build | |
| make -C gcc DESTDIR="$pkgdir" rust.install-{common,man,info} | |
| install -Dm755 gcc/gccrs "$pkgdir"/usr/bin/gccrs | |
| install -Dm755 gcc/crab1 "$pkgdir"/usr/bin/crab1 | |
| # Install Runtime Library Exception | |
| install -d "$pkgdir/usr/share/licenses/$pkgname/" | |
| ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \ | |
| "$pkgdir/usr/share/licenses/$pkgname/" | |
| } | |
| package_gcc-gcobol() { | |
| pkgdesc="Cobol frontend for GCC" | |
| depends=("gcc=$pkgver-$pkgrel" libisl.so) | |
| cd gcc-build | |
| make -C gcc DESTDIR="$pkgdir" cobol.install-{common,man,info} | |
| install -Dm755 gcc/gcobol "$pkgdir"/usr/bin/gcobol | |
| # Install Runtime Library Exception | |
| install -d "$pkgdir/usr/share/licenses/$pkgname/" | |
| ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \ | |
| "$pkgdir/usr/share/licenses/$pkgname/" | |
| } | |
| package_lto-dump() { | |
| pkgdesc="Dump link time optimization object files" | |
| depends=("gcc=$pkgver-$pkgrel" libisl.so) | |
| cd gcc-build | |
| make -C gcc DESTDIR="$pkgdir" lto.install-{common,man,info} | |
| # Install Runtime Library Exception | |
| install -d "$pkgdir/usr/share/licenses/$pkgname/" | |
| ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \ | |
| "$pkgdir/usr/share/licenses/$pkgname/" | |
| } | |
| package_libgccjit() { | |
| pkgdesc="Just-In-Time Compilation with GCC backend" | |
| depends=("gcc=$pkgver-$pkgrel" libisl.so) | |
| cd gcc-build | |
| make -C gcc DESTDIR="$pkgdir" jit.install-common jit.install-info | |
| # Install Runtime Library Exception | |
| install -d "$pkgdir/usr/share/licenses/$pkgname/" | |
| ln -s /usr/share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION \ | |
| "$pkgdir/usr/share/licenses/$pkgname/" | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment