Commit | Line | Data |
---|---|---|
89304c98 | 1 | TERMUX_PKG_HOMEPAGE=https://github.com/ldc-developers/ldc |
2 | TERMUX_PKG_DESCRIPTION="D programming language compiler, built with LLVM" | |
99109276 | 3 | _PKG_MAJOR_VERSION=1.5 |
221ac3bb | 4 | TERMUX_PKG_VERSION=${_PKG_MAJOR_VERSION}.0 |
89304c98 | 5 | TERMUX_PKG_SRCURL=https://github.com/ldc-developers/ldc/releases/download/v${TERMUX_PKG_VERSION}/ldc-${TERMUX_PKG_VERSION}-src.tar.gz |
99109276 | 6 | TERMUX_PKG_SHA256=03659a4b9cafff0cf8d537469dd15579f097c7748a342ea2a5770fa0edd3a084 |
89304c98 | 7 | TERMUX_PKG_DEPENDS="clang" |
8 | TERMUX_PKG_HOSTBUILD=true | |
9 | TERMUX_PKG_BLACKLISTED_ARCHES="aarch64,i686,x86_64" | |
10 | TERMUX_PKG_FORCE_CMAKE=yes | |
11 | #These CMake args are only used to configure a patched LLVM | |
12 | TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" | |
13 | -DLLVM_ENABLE_PIC=ON | |
14 | -DLLVM_BUILD_TOOLS=OFF | |
15 | -DLLVM_BUILD_UTILS=OFF | |
8f8c71d7 FF |
16 | -DLLVM_TABLEGEN=$TERMUX_PKG_HOSTBUILD_DIR/bin/llvm-tblgen |
17 | -DPYTHON_EXECUTABLE=`which python` | |
18 | " | |
89304c98 | 19 | TERMUX_PKG_KEEP_STATIC_LIBRARIES=true |
20 | TERMUX_PKG_NO_DEVELSPLIT=yes | |
21 | TERMUX_PKG_MAINTAINER="Joakim @joakim-noah" | |
22 | ||
23 | termux_step_post_extract_package () { | |
99109276 | 24 | local LLVM_SRC_VERSION=5.0.0-2 |
89304c98 | 25 | termux_download \ |
19862327 | 26 | https://github.com/ldc-developers/llvm/releases/download/ldc-v${LLVM_SRC_VERSION}/llvm-${LLVM_SRC_VERSION}.src.tar.xz \ |
89304c98 | 27 | $TERMUX_PKG_CACHEDIR/llvm-${LLVM_SRC_VERSION}.src.tar.xz \ |
99109276 | 28 | 7bb7621ecb05ad9a9a2165bae69c0548c179fdaf7e12e8458897c5e8bc1a6dae |
89304c98 | 29 | |
30 | tar xf $TERMUX_PKG_CACHEDIR/llvm-${LLVM_SRC_VERSION}.src.tar.xz | |
31 | mv llvm-${LLVM_SRC_VERSION}.src llvm | |
32 | ||
99109276 | 33 | DMD_COMPILER_VERSION=2.076.1 |
89304c98 | 34 | termux_download \ |
35 | http://downloads.dlang.org/releases/2.x/${DMD_COMPILER_VERSION}/dmd.${DMD_COMPILER_VERSION}.linux.tar.xz \ | |
36 | $TERMUX_PKG_CACHEDIR/dmd.${DMD_COMPILER_VERSION}.linux.tar.xz \ | |
99109276 | 37 | 1d0b8fb6aadc80f6c5dfe7acf46fc17d2b3de24a0bf46e947352094bb21fef04 |
085ed77a | 38 | |
39 | termux_download \ | |
40 | https://github.com/dlang/tools/archive/v${DMD_COMPILER_VERSION}.tar.gz \ | |
41 | $TERMUX_PKG_CACHEDIR/tools-v${DMD_COMPILER_VERSION}.tar.gz \ | |
99109276 | 42 | cf42d4e5f9ceb5acfb5bd3000dd9c1ed7120b136f252b33b07fb026f36970e77 |
085ed77a | 43 | |
44 | tar xf $TERMUX_PKG_CACHEDIR/tools-v${DMD_COMPILER_VERSION}.tar.gz | |
45 | mv tools-${DMD_COMPILER_VERSION} rdmd | |
46 | ||
47 | local DUB_VERSION=1.5.0 | |
48 | termux_download \ | |
49 | https://github.com/dlang/dub/archive/v${DUB_VERSION}.tar.gz \ | |
50 | $TERMUX_PKG_CACHEDIR/dub-v${DUB_VERSION}.tar.gz \ | |
51 | 3509f959cc5b34e44adaae586b62ded387ac10031f6c1aaf1cfbb4aae5af37dd | |
52 | ||
53 | tar xf $TERMUX_PKG_CACHEDIR/dub-v${DUB_VERSION}.tar.gz | |
54 | mv dub-${DUB_VERSION} dub | |
89304c98 | 55 | |
56 | sed "s#\@TERMUX_C_COMPILER\@#$TERMUX_STANDALONE_TOOLCHAIN/bin/$TERMUX_HOST_PLATFORM-clang#" \ | |
57 | $TERMUX_PKG_BUILDER_DIR/ldc-config-stdlib.patch.beforehostbuild.in > \ | |
58 | $TERMUX_PKG_BUILDER_DIR/ldc-config-stdlib.patch.beforehostbuild | |
99109276 | 59 | |
89304c98 | 60 | sed "s#\@TERMUX_PKG_HOSTBUILD\@#$TERMUX_PKG_HOSTBUILD_DIR#" $TERMUX_PKG_BUILDER_DIR/ldc-linker-flags.patch.in > \ |
61 | $TERMUX_PKG_BUILDER_DIR/ldc-linker-flags.patch | |
99109276 | 62 | |
63 | sed $TERMUX_PKG_BUILDER_DIR/llvm-config.in \ | |
64 | -e "s|@LLVM_VERSION@|$LLVM_SRC_VERSION|g" \ | |
65 | -e "s|@LLVM_BUILD_DIR@|$TERMUX_PKG_BUILDDIR/llvm|g" \ | |
66 | -e "s|@TERMUX_PKG_SRCDIR@|$TERMUX_PKG_SRCDIR|g" \ | |
67 | -e "s|@LLVM_TARGETS@|ARM AArch64 X86|g" \ | |
68 | -e "s|@LLVM_DEFAULT_TARGET_TRIPLE@|armv7-none-linux-android|g" \ | |
69 | -e "s|@TERMUX_ARCH@|$TERMUX_ARCH|g" > $TERMUX_PKG_BUILDDIR/llvm-config | |
70 | chmod 755 $TERMUX_PKG_BUILDDIR/llvm-config | |
89304c98 | 71 | } |
72 | ||
73 | termux_step_host_build () { | |
74 | tar xf $TERMUX_PKG_CACHEDIR/dmd.${DMD_COMPILER_VERSION}.linux.tar.xz | |
75 | ||
76 | termux_setup_cmake | |
99109276 | 77 | termux_setup_ninja |
78 | cmake -GNinja $TERMUX_PKG_SRCDIR/llvm \ | |
89304c98 | 79 | -DCMAKE_BUILD_TYPE=Release \ |
80 | -DLLVM_TARGETS_TO_BUILD=ARM \ | |
81 | -DLLVM_DEFAULT_TARGET_TRIPLE=armv7-none-linux-android \ | |
82 | -DLLVM_BUILD_TOOLS=OFF \ | |
83 | -DLLVM_BUILD_UTILS=OFF | |
99109276 | 84 | ninja -j $TERMUX_MAKE_PROCESSES all llvm-config |
89304c98 | 85 | |
86 | mkdir ldc-bootstrap | |
87 | cd ldc-bootstrap | |
88 | export DMD="$TERMUX_PKG_HOSTBUILD_DIR/dmd2/linux/bin64/dmd" | |
99109276 | 89 | |
90 | cmake -GNinja $TERMUX_PKG_SRCDIR \ | |
91 | -DD_FLAGS="-w;-mcpu=cortex-a8" \ | |
92 | -DRT_CFLAGS="-march=armv7-a -mfpu=neon -mfloat-abi=softfp -mthumb -Oz -I$TERMUX_PREFIX/include" \ | |
89304c98 | 93 | -DLLVM_CONFIG="$TERMUX_PKG_HOSTBUILD_DIR/bin/llvm-config" |
99109276 | 94 | ninja -j $TERMUX_MAKE_PROCESSES druntime-ldc phobos2-ldc \ |
89304c98 | 95 | druntime-ldc-debug phobos2-ldc-debug ldmd2 |
96 | cd .. | |
97 | } | |
98 | ||
99 | termux_step_pre_configure () { | |
100 | rm $TERMUX_PKG_BUILDER_DIR/ldc-config-stdlib.patch.beforehostbuild | |
101 | rm $TERMUX_PKG_BUILDER_DIR/ldc-linker-flags.patch | |
89304c98 | 102 | |
103 | TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DLLVM_DEFAULT_TARGET_TRIPLE=armv7a-linux-androideabi" | |
19862327 | 104 | TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DLLVM_TARGET_ARCH=ARM -DLLVM_TARGETS_TO_BUILD=AArch64;ARM;X86" |
89304c98 | 105 | |
106 | # CPPFLAGS adds the system llvm to the include path, which causes | |
107 | # conflicts with the local patched llvm when compiling ldc | |
108 | CPPFLAGS="" | |
109 | ||
110 | OLD_TERMUX_PKG_SRCDIR=$TERMUX_PKG_SRCDIR | |
111 | TERMUX_PKG_SRCDIR=$TERMUX_PKG_SRCDIR/llvm | |
112 | ||
113 | OLD_TERMUX_PKG_BUILDDIR=$TERMUX_PKG_BUILDDIR | |
114 | TERMUX_PKG_BUILDDIR=$TERMUX_PKG_BUILDDIR/llvm | |
115 | mkdir "$TERMUX_PKG_BUILDDIR" | |
116 | } | |
117 | ||
118 | termux_step_post_configure () { | |
119 | TERMUX_PKG_SRCDIR=$OLD_TERMUX_PKG_SRCDIR | |
120 | TERMUX_PKG_BUILDDIR=$OLD_TERMUX_PKG_BUILDDIR | |
121 | cd "$TERMUX_PKG_BUILDDIR" | |
122 | ||
99109276 | 123 | mv llvm-config llvm/bin |
124 | TERMUX_PKG_EXTRA_CONFIGURE_ARGS="-DLLVM_CONFIG=$TERMUX_PKG_BUILDDIR/llvm/bin/llvm-config" | |
89304c98 | 125 | export DMD="$TERMUX_PKG_HOSTBUILD_DIR/ldc-bootstrap/bin/ldmd2" |
126 | ||
127 | termux_step_configure_cmake | |
128 | ||
129 | cp $TERMUX_PKG_HOSTBUILD_DIR/ldc-bootstrap/ddmd/id.d $TERMUX_PKG_BUILDDIR/ddmd | |
130 | cp $TERMUX_PKG_HOSTBUILD_DIR/ldc-bootstrap/ddmd/id.h $TERMUX_PKG_BUILDDIR/ddmd | |
131 | } | |
132 | ||
133 | termux_step_make () { | |
134 | cd llvm | |
135 | if ls ./*akefile &> /dev/null; then | |
136 | make -j $TERMUX_MAKE_PROCESSES | |
137 | fi | |
138 | ||
139 | cd .. | |
140 | if ls ./*akefile &> /dev/null; then | |
dcd2ee17 | 141 | make -j $TERMUX_MAKE_PROCESSES ldc2 ldmd2 ldc-build-runtime |
89304c98 | 142 | fi |
085ed77a | 143 | |
144 | # Build the rdmd scripting wrapper and the dub package manager | |
99109276 | 145 | D_FLAGS="-w -de -O -inline -release -mcpu=cortex-a8" |
085ed77a | 146 | $DMD $D_FLAGS -c $TERMUX_PKG_SRCDIR/rdmd/rdmd.d -of=$TERMUX_PKG_BUILDDIR/bin/rdmd.o |
147 | D_LDFLAGS="-fuse-ld=bfd -L${TERMUX_PKG_HOSTBUILD_DIR}/ldc-bootstrap/lib -lphobos2-ldc -ldruntime-ldc -Wl,--gc-sections -ldl -lm -Wl,--fix-cortex-a8 -fPIE -pie -Wl,-z,nocopyreloc ${LDFLAGS}" | |
148 | $CC $TERMUX_PKG_BUILDDIR/bin/rdmd.o $D_LDFLAGS -o $TERMUX_PKG_BUILDDIR/bin/rdmd | |
149 | ||
150 | cd $TERMUX_PKG_SRCDIR/dub | |
151 | $DMD $D_FLAGS -version=DubUseCurl -Isource -c @build-files.txt -of=$TERMUX_PKG_BUILDDIR/bin/dub.o | |
152 | cd $TERMUX_PKG_BUILDDIR | |
153 | $CC $TERMUX_PKG_BUILDDIR/bin/dub.o $D_LDFLAGS -o $TERMUX_PKG_BUILDDIR/bin/dub | |
89304c98 | 154 | } |
155 | ||
156 | termux_step_make_install () { | |
dcd2ee17 | 157 | cp bin/{dub,ldc-build-runtime,ldc2,ldmd2,rdmd} $TERMUX_PREFIX/bin |
89304c98 | 158 | cp $TERMUX_PKG_HOSTBUILD_DIR/ldc-bootstrap/lib/lib{druntime,phobos2}*.a $TERMUX_PREFIX/lib |
159 | sed -i "/runtime\/druntime\/src/d" bin/ldc2.conf | |
160 | sed -i "/runtime\/profile-rt\/d/d" bin/ldc2.conf | |
161 | sed -i "s|$TERMUX_PKG_SRCDIR/runtime/phobos|%%ldcbinarypath%%/../include/d|" bin/ldc2.conf | |
162 | sed "s|$TERMUX_PKG_BUILDDIR/lib|%%ldcbinarypath%%/../lib|" bin/ldc2.conf > $TERMUX_PREFIX/etc/ldc2.conf | |
163 | ||
164 | rm -Rf $TERMUX_PREFIX/include/d | |
165 | mkdir $TERMUX_PREFIX/include/d | |
166 | cp -r $TERMUX_PKG_SRCDIR/runtime/druntime/src/{core,etc,ldc,object.d} $TERMUX_PREFIX/include/d | |
167 | cp $TERMUX_PKG_HOSTBUILD_DIR/ldc-bootstrap/runtime/gccbuiltins_arm.di $TERMUX_PREFIX/include/d/ldc | |
168 | cp -r $TERMUX_PKG_SRCDIR/runtime/phobos/etc/c $TERMUX_PREFIX/include/d/etc | |
169 | rm -Rf $TERMUX_PREFIX/include/d/etc/c/zlib | |
170 | find $TERMUX_PKG_SRCDIR/runtime/phobos/std -name "*.orig" -delete | |
171 | cp -r $TERMUX_PKG_SRCDIR/runtime/phobos/std $TERMUX_PREFIX/include/d | |
172 | ||
173 | rm -Rf $TERMUX_PREFIX/share/ldc | |
174 | mkdir $TERMUX_PREFIX/share/ldc | |
175 | cp -r $TERMUX_PKG_SRCDIR/{LICENSE,README,bash_completion.d} $TERMUX_PREFIX/share/ldc | |
176 | } |