mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-05-03 11:31:56 +02:00
97 lines
3.5 KiB
Plaintext
97 lines
3.5 KiB
Plaintext
# Contributor: Mathias LANG <pro.mathias.lang@gmail.com>
|
|
# Maintainer: Mathias LANG <pro.mathias.lang@gmail.com>
|
|
pkgname=ldc
|
|
pkgver=1.20.0
|
|
pkgrel=0
|
|
pkgdesc="The LLVM-based D Compiler"
|
|
url="https://github.com/ldc-developers/ldc"
|
|
# LDC does not support host compiling on most of the architecture Alpine supports
|
|
arch="x86_64"
|
|
license="BSD-3-Clause AND BSL-1.0 AND ( Artistic-1.0 OR GPL-2.0-or-later ) AND NCSA AND MIT"
|
|
depends="libexecinfo tzdata"
|
|
makedepends="chrpath cmake curl-dev diffutils gdmd llvm9-dev llvm9-static libedit-dev libexecinfo-static zlib-dev"
|
|
checkdepends="bash gdb grep llvm9-test-utils"
|
|
# A user might want to install the '-runtime' subpackage when they have
|
|
# a dynamically-linked D program.
|
|
subpackages="$pkgname-runtime $pkgname-static"
|
|
source="https://github.com/ldc-developers/ldc/releases/download/v$pkgver/ldc-$pkgver-src.tar.gz
|
|
01-conf.patch
|
|
"
|
|
builddir="$srcdir/ldc-$pkgver-src/"
|
|
|
|
build() {
|
|
# First, build LDC using GDC
|
|
mkdir -p "$builddir/stage1"
|
|
if [ "$CBUILD" != "$CHOST" ]; then
|
|
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
|
|
fi
|
|
cmake \
|
|
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
|
|
-DCMAKE_C_FLAGS="$CFLAGS" \
|
|
-DD_COMPILER='gdmd' \
|
|
$CMAKE_CROSSOPTS -S "$builddir" -B "$builddir/stage1"
|
|
make -C "$builddir/stage1"
|
|
|
|
# Then, self-build
|
|
if [ "$CBUILD" != "$CHOST" ]; then
|
|
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
|
|
fi
|
|
cmake \
|
|
-DCMAKE_INSTALL_PREFIX=/usr \
|
|
-DCMAKE_INSTALL_LIBDIR=lib \
|
|
-DBUILD_SHARED_LIBS=True \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
|
|
-DCMAKE_C_FLAGS="$CFLAGS" \
|
|
-DD_COMPILER="$builddir/stage1/bin/ldmd2" \
|
|
$CMAKE_CROSSOPTS "$builddir"
|
|
make
|
|
|
|
# CMake added the rpaths to the shared libs - strip them
|
|
chrpath -d "$builddir"/lib/*.so*
|
|
}
|
|
|
|
check() {
|
|
# Note: The testsuite does not parallelize well, as the 'clean' target get run in parallel.
|
|
# Hence '-j${JOBS}' was left out on purpose
|
|
#
|
|
# - dmd-testsuite takes too long to run and has more to do with language checks
|
|
# which are less relevant to us than platform integration tests
|
|
# - lit-test disabled because 'TEST 'LDC :: debuginfo/print_gdb.d' FAILED'
|
|
# Something to do with TLS variables not being printable in GDB
|
|
# - 'druntime-test-shared' fails, probably because it is using 'Object.factory'
|
|
# - 'druntime-test-stdcpp' fails for an unknown reason and is temporarily disabled
|
|
# - 'druntime-test-exceptions' fails for an unknown reason and is temporarily disabled
|
|
ctest --output-on-failure -E "dmd-testsuite|lit-tests|druntime-test-exceptions|druntime-test-shared|druntime-test-stdcpp"
|
|
}
|
|
|
|
package() {
|
|
depends="$pkgname-static=$pkgver-r$pkgrel"
|
|
make DESTDIR="$pkgdir" install
|
|
}
|
|
|
|
runtime() {
|
|
depends="libexecinfo-dev"
|
|
pkgdesc="Dynamic runtime library for D code compiled with $pkgname-$pkgver"
|
|
|
|
mkdir -p "$subpkgdir/usr/lib/"
|
|
for libn in "libdruntime" "libphobos2";
|
|
do
|
|
mv "$pkgdir"/usr/lib/$libn-ldc-shared.so* "$subpkgdir/usr/lib/"
|
|
done
|
|
mv "$pkgdir"/usr/lib/libldc-jit.so* "$subpkgdir/usr/lib"
|
|
|
|
mv "$pkgdir"/usr/lib/*.so* "$subpkgdir/usr/lib/"
|
|
}
|
|
|
|
static() {
|
|
depends="libexecinfo-static"
|
|
pkgdesc="$pkgdesc (static library)"
|
|
|
|
mkdir -p "$subpkgdir/usr/lib/"
|
|
mv "$pkgdir"/usr/lib/*.a "$subpkgdir/usr/lib/"
|
|
}
|
|
|
|
sha512sums="6a94400a9f28bc5fe0d12d5ab5aa188eb84d929c61ee79f3d87e9719f4e72cc1b658c4290d30e038ee6f741ca55f81007965102b0c591d75234aa4ea57d6f21f ldc-1.20.0-src.tar.gz
|
|
eb86e4be0ecf72aaabbd5608c8056bb9cede035895e766330b6d14f14c06dc513fcecc1b6e56ab6fc9fc26c220a689cc8b1394a30a319189c414f1e067c1d983 01-conf.patch"
|