diff --git a/community/ldc/PKGBUILD b/community/ldc/PKGBUILD new file mode 100644 index 000000000..8a8cb1825 --- /dev/null +++ b/community/ldc/PKGBUILD @@ -0,0 +1,118 @@ +# Maintainer: +# Contributor: Mihails Strasuns +# Contributor: Sven-Hendrik Haase + +# ALARM: Kevin Mihelich +# - -DBUILD_LTO_LIBS=OFF +# - removed "-linker=gold -flto=full" from -DD_COMPILER_FLAGS + +buildarch=12 + +pkgname=('ldc' 'liblphobos') +groups=('dlang' 'dlang-ldc') +pkgver=1.12.0 +_pkgcommit=d51f23400a0e4ab6e444b80fefa77baa05c3ed42 +_dversion=2.082.1 +_clangversion=7.0.0 # related to where ldc2 looks for compiler-rt sanitizers +epoch=2 +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') +makedepends=('git' 'cmake' 'llvm' 'ldc') + +source=( + "git+https://github.com/ldc-developers/ldc#commit=$_pkgcommit" + "git+https://github.com/ldc-developers/druntime.git" + "git+https://github.com/ldc-developers/phobos.git" + "git+https://github.com/ldc-developers/dmd-testsuite.git" + "ldc2.conf" +) + +sha256sums=('SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + '55ba34319db861a761797ac0075b0b1f5f4d37a243075aedb628aeedc77cc9d6') + +prepare() { + cd "$srcdir/ldc" + + git submodule init + git config submodule.druntime.url "$srcdir/druntime" + git config submodule.phobos.url "$srcdir/phobos" + git config submodule.tests/d2/dmd-testsuite.url "$srcdir/dmd-testsuite" + git submodule update + + # Set version used for path construction in getFullClangCompilerRTLibPath() + sed -i "s/ldc::llvm_version_base/\"$_clangversion\"/" driver/linker-gcc.cpp +} + +build() { + cd "$srcdir/ldc" + + mkdir -p build && cd build + + cmake \ + -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_WITH_LLD=OFF \ + -DD_COMPILER_FLAGS="-link-defaultlib-shared=false" \ + .. + make +} + +check() { + cd "$srcdir/ldc/build" + make all-test-runners +} + +package_ldc() { + depends=('liblphobos' 'llvm-libs' 'gcc' 'compiler-rt') + backup=('etc/ldc2.conf') + provides=("d-compiler=$_dversion") + + cd "$srcdir/ldc/build" + make install DESTDIR="$pkgdir" + + # 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" + + # default configuration files + install -D -m644 "$srcdir/ldc2.conf" "$pkgdir/etc/ldc2.conf" +} + +package_liblphobos() { + provides=('d-runtime' 'd-stdlib') + depends=('curl') + options=('staticlibs') + + cd "$srcdir/ldc/build" + make install DESTDIR="$pkgdir" + + # 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" +} diff --git a/community/ldc/ldc2.conf b/community/ldc/ldc2.conf new file mode 100644 index 000000000..ded2d8130 --- /dev/null +++ b/community/ldc/ldc2.conf @@ -0,0 +1,19 @@ +// See comments in driver/config.d in ldc source tree for grammar description of +// this config file. + +// The default group is required +default: +{ + // default switches injected before all explicit command-line switches + switches = [ + "-I/usr/include/dlang/ldc/ldc", + "-I/usr/include/dlang/ldc", + "-L--no-warn-search-mismatch", + "-defaultlib=phobos2-ldc,druntime-ldc", + "-link-defaultlib-shared" + ]; + // default switches appended after all explicit command-line switches + post-switches = [ + "-L-L/usr/lib" + ]; +};