blob: 06695fc885918726a18ac0a0d31100ad106e4422 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
|
# Maintainer: Vladimir Panteleev <arch-pkg at thecybershadow.net>
# Contributor: zfo <zfoofz1@gmail.com>
# Contributor: Mihails Strasuns <public@dicebot.lv>
# Contributor: Sven-Hendrik Haase <sh@lutzhaase.com>
_pkgname=ldc
pkgname=("${_pkgname}-git" 'liblphobos-git')
groups=('dlang' 'dlang-ldc')
pkgver=v1.9.0.beta1
epoch=2
pkgrel=1
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=ON
# 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"
}
|