# Maintainer: Vladimir Panteleev # Contributor: zfo # Contributor: Mihails Strasuns # Contributor: Sven-Hendrik Haase _pkgname=ldc pkgname=("${_pkgname}-git" 'liblphobos-git') groups=('dlang' 'dlang-ldc') pkgver=v1.9.0.beta1 epoch=1 pkgrel=2 pkgdesc="A D Compiler based on the LLVM Compiler Infrastructure including D runtime and libphobos2" arch=('i686' 'x86_64') url="https://github.com/ldc-developers/ldc" license=('BSD') makedepends=('git' 'cmake' 'llvm' 'dmd' 'bash-completion') source=("git+https://github.com/ldc-developers/ldc.git" "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' '7f7eea41e730175ea52993f82bef5bdea6d6fc628344cda9488c04bf4b430024') pkgver() { cd "${srcdir}/${_pkgname}" git describe --tags HEAD | sed 's/-/./g' } prepare() { cd "${srcdir}/${_pkgname}" 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 # patch the config file to be /etc/ldc2-git.conf sed 's/ldc2[.]conf/ldc2-git.conf/' -i driver/configfile.cpp # patch ldc to properly link to ldc-git (needed for ldmd) sed 's/LDC_EXE ldc2/LDC_EXE ldc2-git/' -i CMakeLists.txt sed 's/LDMD_EXE ldmd2/LDMD_EXE ldmd2-git/' -i CMakeLists.txt # patch bash-completion sed 's/\(ldc2\?\)\b/\1-git/g' -i bash_completion.d/ldc2 # it's faster just to rename the config files mv ldc2_phobos.conf.in ldc2-git_phobos.conf.in mv ldc2_install.conf.in ldc2-git_install.conf.in } build() { cd "${srcdir}/${_pkgname}" mkdir -p build && cd build # workaround for wrong ld flag format generated by cmake: # export LDFLAGS="-L-O1 -L--sort-common -L--as-needed -L-z -Lrelro" local args=( env # Use host DMD # This 1) ensures we use the main dmd package, and not something in the user's $PATH; # and 2) compilation with ldc links Phobos/Druntime as shared libraries; # dmd does static linking to the rescue! DMD=/usr/bin/dmd cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DCMAKE_SKIP_RPATH=ON -DINCLUDE_INSTALL_DIR=/usr/include/dlang/ldc-git # This is the git version - use static linking by default -DBUILD_SHARED_LIBS=OFF # https://github.com/ldc-developers/ldc/issues/2661 -DLDC_WITH_LLD=OFF .. ) "${args[@]}" make } package_ldc-git() { local dmd_fe_ver dmd_fe_ver=$(sed -n 's/^.*dmd_version = "v\(.*\)";$/\1/p' \ "${srcdir}/${_pkgname}/build/driver/ldc-version.cpp") depends=('liblphobos-git' 'llvm-libs') backup=('etc/ldc2-git.conf') provides=("d-compiler=${dmd_fe_ver}") cd "${srcdir}/${_pkgname}/build" make install DESTDIR="${pkgdir}" # rename binaries for f in profdata prune-cache; do mv "${pkgdir}/usr/bin/ldc-$f" \ "${pkgdir}/usr/bin/ldc-git-$f" done # rename bash-completion mv "${pkgdir}/usr/share/bash-completion/completions/ldc2" \ "${pkgdir}/usr/share/bash-completion/completions/ldc2-git" # remove liblphobos files rm -rf "${pkgdir}/usr/include" rm -rf "${pkgdir}/usr/lib" # remove misc rm -rf "${pkgdir}/usr/bin/ldc-build-runtime" # symlinks ln -s ldc2-git "${pkgdir}/usr/share/bash-completion/completions/ldc-git" ln -s ldc2-git "${pkgdir}/usr/bin/ldc-git" ln -s ldmd2-git "${pkgdir}/usr/bin/ldmd-git" # 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-git.conf" } package_liblphobos-git() { provides=('d-runtime' 'd-stdlib') depends=('curl') cd "${srcdir}/ldc/build" make install DESTDIR="${pkgdir}" # remove ldc files rm -rf "${pkgdir}/usr/bin/" rm -rf "${pkgdir}/etc/" rm -rf "${pkgdir}/usr/share/bash-completion/" # rename libraries for f in libphobos2-ldc libdruntime-ldc libphobos2-ldc-debug libdruntime-ldc-debug \ libldc-jit libldc-jit-rt libldc-profile-rt; do for ext in a so; do test -e "${pkgdir}/usr/lib/$f.$ext" && \ mv "${pkgdir}/usr/lib/$f.$ext" "${pkgdir}/usr/lib/$f-git.$ext" done done # licenses install -D -m644 "${srcdir}/ldc/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" }