# Maintainer: Dan Printzell # Contributor: Mihails Strasuns # Contributor: Sven-Hendrik Haase # ALARM: Kevin Mihelich # - -DBUILD_LTO_LIBS=OFF # - -DLDC_BUILD_WITH_LTO=OFF # - removed "-linker=gold -flto=thin" from -DD_COMPILER_FLAGS # - ninja -j2 due to RAM constraints pkgname=('ldc' 'liblphobos') groups=('dlang' 'dlang-ldc') pkgver=1.39.0 _pkgcommit=ff7954cf1843b36f2a5caf1dacbf1ecf8803f77c _dversion=2.109.1 _clangversion=18 # related to where ldc2 looks for compiler-rt sanitizers epoch=3 pkgrel=1 pkgdesc="A D Compiler based on the LLVM Compiler Infrastructure including D runtime and libphobos2" arch=('x86_64') url="https://github.com/ldc-developers/ldc" license=('BSD-3-Clause AND BSL-1.0 AND Apache-2.0 WITH LLVM-exception') makedepends=('git' 'cmake' 'llvm' 'lld' 'ldc' 'ninja') # Disable lto as linking the ldc2 binary fails options=(!lto) source=( "git+https://github.com/ldc-developers/ldc#commit=$_pkgcommit" "ldc-phobos::git+https://github.com/ldc-developers/phobos.git" ) sha256sums=('c4bd5bf5337f2286a88c69c0d69d9ba88e03f8c519e79d19ce3ddeb761aa4f3e' 'SKIP') prepare() { cd "$srcdir/ldc" git submodule init git config submodule.phobos.url "$srcdir/ldc-phobos" git -c protocol.file.allow=always submodule update # Set version used for path construction in getRelativeClangCompilerRTLibPath() sed -i "s/ldc::llvm_version_base/\"$_clangversion\"/" driver/linker-gcc.cpp } build() { cd "$srcdir/ldc" mkdir -p build && cd build cmake -GNinja \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_SKIP_RPATH=ON \ -DINCLUDE_INSTALL_DIR=/usr/include/dlang/ldc \ -DBUILD_SHARED_LIBS=BOTH \ -DBUILD_LTO_LIBS=OFF \ -DLDC_BUILD_WITH_LTO=OFF \ -DLDC_WITH_LLD=OFF \ -DD_COMPILER_FLAGS="-link-defaultlib-shared=false" \ -DADDITIONAL_DEFAULT_LDC_SWITCHES="\"-link-defaultlib-shared\"," \ .. ninja -j2 } check() { cd "$srcdir/ldc/build" ninja all-test-runners } package_ldc() { depends=('liblphobos' 'llvm-libs' 'gcc' 'compiler-rt') backup=('etc/ldc2.conf') provides=("d-compiler=$_dversion") cd "$srcdir/ldc/build" DESTDIR="$pkgdir" ninja install # move bash-completion mkdir -p "$pkgdir/usr/share/bash-completion/completions/" mv "$pkgdir/etc/bash_completion.d/ldc2" "$pkgdir/usr/share/bash-completion/completions/" rm -rf "$pkgdir/etc/bash_completion.d" # remove liblphobos files rm -rf "$pkgdir/usr/include" rm -rf "$pkgdir/usr/lib" # symlinks ln -s /usr/share/bash-completion/completions/ldc2 "$pkgdir/usr/share/bash-completion/completions/ldc" ln -s /usr/bin/ldc2 "$pkgdir/usr/bin/ldc" ln -s /usr/bin/ldmd2 "$pkgdir/usr/bin/ldmd" # licenses install -D -m644 "$srcdir/ldc/LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE" } package_liblphobos() { provides=('d-runtime' 'd-stdlib') depends=('curl') options=('staticlibs') cd "$srcdir/ldc/build" DESTDIR="$pkgdir" ninja install # remove ldc files rm -rf "$pkgdir/usr/bin/" rm -rf "$pkgdir/etc/" # licenses install -D -m644 "$srcdir/ldc/LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENSE" }