[arch-commits] Commit in gcc/trunk (PKGBUILD)

Frederik Schwan freswa at gemini.archlinux.org
Fri Feb 25 22:44:23 UTC 2022


    Date: Friday, February 25, 2022 @ 22:44:23
  Author: freswa
Revision: 438147

add libgccjit

- also use separate libisl
- implements FS#70280

Modified:
  gcc/trunk/PKGBUILD

----------+
 PKGBUILD |   91 ++++++++++++++++++++++++++++++++++++++++++++++---------------
 1 file changed, 70 insertions(+), 21 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2022-02-25 19:50:50 UTC (rev 438146)
+++ PKGBUILD	2022-02-25 22:44:23 UTC (rev 438147)
@@ -7,7 +7,7 @@
 # toolchain build order: linux-api-headers->glibc->binutils->gcc->glibc->binutils->gcc
 # NOTE: libtool requires rebuilt with each new gcc version
 
-pkgname=(gcc gcc-libs gcc-fortran gcc-objc gcc-ada gcc-go lib32-gcc-libs gcc-d)
+pkgname=(gcc gcc-libs lib32-gcc-libs gcc-fortran gcc-objc gcc-ada gcc-go gcc-d libgccjit)
 pkgver=11.2.0
 _majorver=${pkgver%%.*}
 _islver=0.24
@@ -16,14 +16,31 @@
 arch=(x86_64)
 license=(GPL LGPL FDL custom)
 url='https://gcc.gnu.org'
-makedepends=(binutils libmpc gcc-ada doxygen lib32-glibc lib32-gcc-libs python git libxcrypt zstd)
-checkdepends=(dejagnu inetutils tcl expect python-pytest)
+makedepends=(
+  binutils
+  doxygen
+  gcc-ada
+  git
+  lib32-glibc
+  lib32-gcc-libs
+  libisl
+  libmpc
+  libxcrypt
+  python
+  zstd
+)
+checkdepends=(
+  dejagnu
+  expect
+  inetutils
+  python-pytest
+  tcl
+)
 options=(!emptydirs !lto debug)
 _libdir=usr/lib/gcc/$CHOST/${pkgver%%+*}
 # _commit=6beb39ee6c465c21d0cc547fd66b445100cdcc35
 # source=(git://gcc.gnu.org/git/gcc.git#commit=$_commit
 source=(https://sourceware.org/pub/gcc/releases/gcc-${pkgver}/gcc-${pkgver}.tar.xz{,.sig}
-        https://libisl.sourceforge.io/isl-${_islver}.tar.xz
         c89 c99
         gdc_phobos_path.patch
         gcc-ada-repro.patch
@@ -34,7 +51,6 @@
               D3A93CAD751C2AF4F8C7AD516C35B99309B5FA62) # Jakub Jelinek <jakub at redhat.com>
 sha256sums=('d08edc536b54c372a1010ff6619dd274c0f1603aa49212ba20f7aa2cda36fa8b'
             'SKIP'
-            '043105cc544f416b48736fff8caf077fb0663a717d06b1113f16e391ac99ebad'
             'de48736f6e4153f03d0a5d38ceb6c6fdb7f054e8f47ddd6af0a3dbf14f27b931'
             '2513c6d9984dd0a2058557bf00f06d8d5181734e41dcfe07be7ed86f2959622a'
             'c86372c207d174c0918d4aedf1cb79f7fc093649eb1ad8d9450dccc46849d308'
@@ -44,9 +60,6 @@
   [[ ! -d gcc ]] && ln -s gcc-${pkgver/+/-} gcc
   cd gcc
 
-  # link isl for in-tree build
-  ln -s ../isl-${_islver} isl
-
   # Do not run fixincludes
   sed -i 's@\./fixinc\.sh at -c true@' gcc/Makefile.in
 
@@ -63,25 +76,16 @@
   patch -Np0 < "$srcdir/gcc-ada-repro.patch"
 
   mkdir -p "$srcdir/gcc-build"
+  mkdir -p "$srcdir/libgccjit-build"
 }
 
 build() {
-  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" --prefix=/usr \
+  local _confflags="--prefix=/usr \
       --libdir=/usr/lib \
       --libexecdir=/usr/lib \
       --mandir=/usr/share/man \
       --infodir=/usr/share/info \
       --with-bugurl=https://bugs.archlinux.org/ \
-      --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d \
-      --with-isl \
       --with-linker-hash-style=gnu \
       --with-system-zlib \
       --enable-__cxa_atexit \
@@ -104,16 +108,48 @@
       --disable-werror \
       --with-build-config=bootstrap-lto \
       --enable-link-serialization=1 \
-      gdc_include_dir=/usr/include/dlang/gdc
+      gdc_include_dir=/usr/include/dlang/gdc"
 
+  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++,ada,fortran,go,lto,objc,obj-c++,d \
+    --enable-bootstrap \
+    $_confflags
+
   # 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"
+          LDFLAGS_FOR_TARGET="$LDFLAGS" \
+          profiledbootstrap
 
   # make documentation
   make -O -C $CHOST/libstdc++-v3/doc doc-man-doxygen
+
+  # Build libgccjit separately, so that normal compiler binaries aren't -fpic
+  cd "${srcdir}"/libgccjit-build
+
+  "$srcdir/gcc/configure" \
+    --enable-languages=jit \
+    --disable-bootstrap \
+    --enable-host-shared \
+    $_confflags
+
+  # 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() {
@@ -420,3 +456,16 @@
   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/"
+}



More information about the arch-commits mailing list