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" | |
9d5c06a3 | 3 | _PKG_MAJOR_VERSION=1.7 |
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 |
9d5c06a3 | 6 | TERMUX_PKG_SHA256=7cd46140ca3e4ca0d52c352e5b694d4d5336898ed4f02c3e18e0eafd69dd18bd |
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 () { | |
9d5c06a3 | 24 | local LLVM_SRC_VERSION=5.0.1 |
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 \ |
9d5c06a3 | 28 | aa54870d2d4ab0066f8e26fe6880ec037565b0350d67bef55d0ac2018bfb1a45 |
89304c98 | 29 | |
30 | tar xf $TERMUX_PKG_CACHEDIR/llvm-${LLVM_SRC_VERSION}.src.tar.xz | |
9d5c06a3 | 31 | mv llvm-${LLVM_SRC_VERSION}.src llvm |
89304c98 | 32 | |
9d5c06a3 | 33 | DMD_COMPILER_VERSION=2.078.0 |
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 \ | |
9d5c06a3 | 37 | 651a6bf34bd23b893b8cb38a5b7783275145c047eef83c526730ba9394123c64 |
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 \ | |
9d5c06a3 | 42 | 5d3de1524bb1a024649a065e2567893c88cc4dba17ae9bd6f576e11bc91533ec |
085ed77a | 43 | |
44 | tar xf $TERMUX_PKG_CACHEDIR/tools-v${DMD_COMPILER_VERSION}.tar.gz | |
45 | mv tools-${DMD_COMPILER_VERSION} rdmd | |
46 | ||
9d5c06a3 | 47 | local DUB_VERSION=1.7.0 |
085ed77a | 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 \ | |
9d5c06a3 | 51 | 5c4875cf4ced113d35f1da949524a2b366dff93049dffe98da95171bed6cd069 |
085ed77a | 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 \ |
4ca52245 | 80 | -DLLVM_TARGETS_TO_BUILD="ARM;X86" \ |
89304c98 | 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" \ | |
9d5c06a3 | 92 | -DRT_CFLAGS="-march=armv7-a -mfpu=neon -mfloat-abi=softfp -mthumb -Os -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" |
89304c98 | 126 | termux_step_configure_cmake |
89304c98 | 127 | } |
128 | ||
129 | termux_step_make () { | |
130 | cd llvm | |
131 | if ls ./*akefile &> /dev/null; then | |
132 | make -j $TERMUX_MAKE_PROCESSES | |
133 | fi | |
134 | ||
135 | cd .. | |
136 | if ls ./*akefile &> /dev/null; then | |
dcd2ee17 | 137 | make -j $TERMUX_MAKE_PROCESSES ldc2 ldmd2 ldc-build-runtime |
89304c98 | 138 | fi |
085ed77a | 139 | |
140 | # Build the rdmd scripting wrapper and the dub package manager | |
9d5c06a3 | 141 | D_FLAGS="-w -de -O -mcpu=cortex-a8" |
085ed77a | 142 | $DMD $D_FLAGS -c $TERMUX_PKG_SRCDIR/rdmd/rdmd.d -of=$TERMUX_PKG_BUILDDIR/bin/rdmd.o |
143 | 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}" | |
144 | $CC $TERMUX_PKG_BUILDDIR/bin/rdmd.o $D_LDFLAGS -o $TERMUX_PKG_BUILDDIR/bin/rdmd | |
145 | ||
146 | cd $TERMUX_PKG_SRCDIR/dub | |
147 | $DMD $D_FLAGS -version=DubUseCurl -Isource -c @build-files.txt -of=$TERMUX_PKG_BUILDDIR/bin/dub.o | |
148 | cd $TERMUX_PKG_BUILDDIR | |
149 | $CC $TERMUX_PKG_BUILDDIR/bin/dub.o $D_LDFLAGS -o $TERMUX_PKG_BUILDDIR/bin/dub | |
89304c98 | 150 | } |
151 | ||
152 | termux_step_make_install () { | |
dcd2ee17 | 153 | cp bin/{dub,ldc-build-runtime,ldc2,ldmd2,rdmd} $TERMUX_PREFIX/bin |
89304c98 | 154 | cp $TERMUX_PKG_HOSTBUILD_DIR/ldc-bootstrap/lib/lib{druntime,phobos2}*.a $TERMUX_PREFIX/lib |
155 | sed -i "/runtime\/druntime\/src/d" bin/ldc2.conf | |
156 | sed -i "/runtime\/profile-rt\/d/d" bin/ldc2.conf | |
9d5c06a3 | 157 | sed -i "/runtime\/jit-rt\/d/d" bin/ldc2.conf |
89304c98 | 158 | sed -i "s|$TERMUX_PKG_SRCDIR/runtime/phobos|%%ldcbinarypath%%/../include/d|" bin/ldc2.conf |
159 | sed "s|$TERMUX_PKG_BUILDDIR/lib|%%ldcbinarypath%%/../lib|" bin/ldc2.conf > $TERMUX_PREFIX/etc/ldc2.conf | |
160 | ||
161 | rm -Rf $TERMUX_PREFIX/include/d | |
162 | mkdir $TERMUX_PREFIX/include/d | |
163 | cp -r $TERMUX_PKG_SRCDIR/runtime/druntime/src/{core,etc,ldc,object.d} $TERMUX_PREFIX/include/d | |
164 | cp $TERMUX_PKG_HOSTBUILD_DIR/ldc-bootstrap/runtime/gccbuiltins_arm.di $TERMUX_PREFIX/include/d/ldc | |
165 | cp -r $TERMUX_PKG_SRCDIR/runtime/phobos/etc/c $TERMUX_PREFIX/include/d/etc | |
166 | rm -Rf $TERMUX_PREFIX/include/d/etc/c/zlib | |
167 | find $TERMUX_PKG_SRCDIR/runtime/phobos/std -name "*.orig" -delete | |
168 | cp -r $TERMUX_PKG_SRCDIR/runtime/phobos/std $TERMUX_PREFIX/include/d | |
169 | ||
170 | rm -Rf $TERMUX_PREFIX/share/ldc | |
171 | mkdir $TERMUX_PREFIX/share/ldc | |
172 | cp -r $TERMUX_PKG_SRCDIR/{LICENSE,README,bash_completion.d} $TERMUX_PREFIX/share/ldc | |
173 | } |