summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: c22bdfa2735350ed118b8b19350e6df10fe36ef8 (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
# Maintainer: zfo <zfoofz1@gmail.com>
# Contributor: Mihails Strasuns <public@dicebot.lv>
# Contributor: Sven-Hendrik Haase <sh@lutzhaase.com>
pkgname=('ldc-git' 'liblphobos-git')
_gitname=ldc
_pkgname=ldc-git
groups=('dlang' 'dlang-ldc')
pkgver=v1.0.0.beta1.146.ge058ab7
epoch=1
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')
depends=('libconfig')
#conflicts=('ldc')
#provides=('ldc')
makedepends=('git' 'cmake' 'llvm' 'sed' 'dmd')
source=("git://github.com/ldc-developers/ldc.git"
        "git://github.com/ldc-developers/druntime.git"
        "git://github.com/ldc-developers/phobos.git"
        "git://github.com/ldc-developers/dmd-testsuite.git"
        "ldc2.conf"
       )
sha256sums=('SKIP'
            'SKIP'
            'SKIP'
            'SKIP'
            '3e3b275f8c04d427b67c989cee591bff96f6701b118f29bb928fc9e3794b1dd7')

pkgver() {
    cd "${srcdir}/${_gitname}"
    git describe --tags HEAD | sed 's/-/./g'
}

build() {
    mkdir -p $srcdir/tmp_install_dir
    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/tests/d2/dmd-testsuite
    git submodule update

    # only touch file if necessary
    if grep -q 'ldc[.]conf' driver/configfile.cpp ; then
        # patch the config file to be /etc/ldc2-git.conf
        sed 's/ldc2[.]conf/ldc2-git.conf/' -i driver/configfile.cpp
    fi

    # compilation with ldc links phobos and runtime as shared libraries
    # dmd does static linking to the rescue!
    sed 's/"ldmd2" "dmd"/"dmd"/' -i cmake/Modules/FindDCompiler.cmake

    mkdir -p build && cd build

    # don't use ArchLinux LDFLAGS (#1494)
    LDFLAGS="" cmake \
    -DCMAKE_INSTALL_PREFIX=/usr \
    -DCMAKE_BUILD_TYPE=Release \
    -DCMAKE_EXE_LINKER_FLAGS='-static-libstdc++ -Wl,-rpath,\$ORIGIN' \
    -DINCLUDE_INSTALL_DIR=/usr/include/dlang/ldc \
    -DBUILD_SHARED_LIBS=ON \
    ..

    #-DCMAKE_SKIP_RPATH=ON \
    make -j $(nproc)
    make install DESTDIR=$srcdir/tmp_install_dir
}

package_ldc-git() {
    depends=('liblphobos-git' 'libconfig')
    backup=("etc/ldc2-git.conf")
    provides=("d-compiler")

    cd $srcdir/tmp_install_dir

    # binaries
    install -D -m755 ./usr/bin/ldmd2 $pkgdir/usr/bin/ldmd-git
    install -D -m755 ./usr/bin/ldc2 $pkgdir/usr/bin/ldc-git

    # supplementaries
    install -D -m644 $srcdir/ldc/bash_completion.d/ldc2 $pkgdir/usr/share/bash-completion/completions/ldc-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")
    #replaces=("liblphobos-devel" "liblphobos")
    #conflicts=("liblphobos-devel" "liblphobos" "ldc")
    depends=("curl")

    # licenses
    install -D -m644 $srcdir/ldc/LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE

    cd $srcdir/tmp_install_dir

    # libraries
    install -D -m644 ./usr/lib/libphobos2-ldc.so $pkgdir/usr/lib/liblphobos2-git.so
    install -D -m644 ./usr/lib/libdruntime-ldc.so $pkgdir/usr/lib/libldruntime-git.so
    install -D -m644 ./usr/lib/libphobos2-ldc-debug.so $pkgdir/usr/lib/liblphobos2-debug-git.so
    install -D -m644 ./usr/lib/libdruntime-ldc-debug.so $pkgdir/usr/lib/libldruntime-debug-git.so

    # imports
    mkdir -p $pkgdir/usr/include/dlang
    cp -r ./usr/include/dlang/ldc $pkgdir/usr/include/dlang/ldc-git
}