🔒 Repository is read-only – file editing is disabled.

recipes/core/llvm/PAGBUILD.yaml main

64 linii Raw ← Powrót
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
pkgname: llvm
pkgver: '22.1.8'
pkgrel: '1'
pkgdesc: 'Low Level Virtual Machine, collection of modular and reusable compiler and toolchain.'
url: 'https://llvm.org/'
arch: x86_64
depends: []
makedepends:
- grep
- python
- cmake
- ninja
- libxml2
- git

source:
- 'https://github.com/llvm/llvm-project/releases/download/llvmorg-${pkgver}/${pkgname}-project-${pkgver}.src.tar.xz'

sha256sums:
- SKIP

build: |
  # NINJAJOBS=10 na VPS (11GB RAM) wywoływał OOM: przy kompilacji clang
  # (Sema/Registry.cpp to najcięższe pliki, ~2-3GB cc1plus każdy) kernel
  # zabijał g++ ("Killed signal terminated program cc1plus"). 4 zadania
  # mieszczą się w pamięci; wolniej, ale stabilnie.
  export NINJAJOBS=4

  cd ${pkgname}-${pkgver}


  grep -rl '#!.*python' | xargs sed -i '1s/python$/python3/'

  sed 's/utility/tool/' -i llvm/utils/FileCheck/CMakeLists.txt

  mkdir llvm/build
  cd    llvm/build

  # compiler-rt (runtimes) WYŁĄCZONE: konfiguracja jego testów builtins
  # padała ("compiler-rt/test/builtins/CMakeLists.txt: file failed to open"),
  # a rustc i tak go nie potrzebuje (używa tylko core LLVM + llvm-config).
  # Bez runtimes build też jest szybszy. Komentarz MUSI być przed cmake,
  # nie w środku kontynuacji `\` (inaczej # zjada resztę opcji).
  CC=gcc CXX=g++ \
  cmake -DCMAKE_INSTALL_PREFIX=/usr  \
    -D CMAKE_SKIP_INSTALL_RPATH=ON   \
    -D LLVM_ENABLE_FFI=ON       \
    -D CMAKE_BUILD_TYPE=Release \
    -D LLVM_BUILD_LLVM_DYLIB=ON \
    -D LLVM_LINK_LLVM_DYLIB=ON  \
    -D LLVM_ENABLE_RTTI=ON      \
    -D LLVM_TARGETS_TO_BUILD="host;AMDGPU;BPF" \
    -D LLVM_ENABLE_PROJECTS=clang        \
    -D LLVM_BINUTILS_INCDIR=/usr/include \
    -D LLVM_INCLUDE_BENCHMARKS=OFF \
    -D LLVM_BUILD_TESTS=OFF          \
    -W no-dev -G Ninja ..

  ninja

  DESTDIR=${PKGDIR} ninja install

package: |
  true