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" | |
53025a10 | 3 | _PKG_MAJOR_VERSION=1.9 |
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 |
53025a10 | 6 | TERMUX_PKG_SHA256=e3f32a4dfcaae12f434e0e23638684faa83765827e7f2deb2df059dccc3169b9 |
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` | |
53025a10 | 18 | -DCOMPILER_RT_INCLUDE_TESTS=OFF |
8f8c71d7 | 19 | " |
89304c98 | 20 | TERMUX_PKG_KEEP_STATIC_LIBRARIES=true |
21 | TERMUX_PKG_NO_DEVELSPLIT=yes | |
22 | TERMUX_PKG_MAINTAINER="Joakim @joakim-noah" | |
23 | ||
24 | termux_step_post_extract_package () { | |
53025a10 | 25 | local LLVM_SRC_VERSION=6.0.0 |
89304c98 | 26 | termux_download \ |
19862327 | 27 | https://github.com/ldc-developers/llvm/releases/download/ldc-v${LLVM_SRC_VERSION}/llvm-${LLVM_SRC_VERSION}.src.tar.xz \ |
89304c98 | 28 | $TERMUX_PKG_CACHEDIR/llvm-${LLVM_SRC_VERSION}.src.tar.xz \ |
53025a10 | 29 | 5444d9da5929fd9062ac3d7793f484366de8b372411e0e5602ea23c2ff3fdb05 |
89304c98 | 30 | |
31 | tar xf $TERMUX_PKG_CACHEDIR/llvm-${LLVM_SRC_VERSION}.src.tar.xz | |
9d5c06a3 | 32 | mv llvm-${LLVM_SRC_VERSION}.src llvm |
89304c98 | 33 | |
89304c98 | 34 | termux_download \ |
f28a8b50 J |
35 | https://github.com/ldc-developers/ldc/releases/download/v${TERMUX_PKG_VERSION}/ldc2-${TERMUX_PKG_VERSION}-linux-x86_64.tar.xz \ |
36 | $TERMUX_PKG_CACHEDIR/ldc2-${TERMUX_PKG_VERSION}-linux-x86_64.tar.xz \ | |
53025a10 | 37 | e33e02456878776b9ba864a47ceb445aa6474a24167f26eab36fd9bb4276dcc5 |
085ed77a | 38 | |
53025a10 | 39 | local TOOLS_VERSION=2.079.1 |
085ed77a | 40 | termux_download \ |
53025a10 J |
41 | https://github.com/dlang/tools/archive/v${TOOLS_VERSION}.tar.gz \ |
42 | $TERMUX_PKG_CACHEDIR/tools-v${TOOLS_VERSION}.tar.gz \ | |
43 | 37e04b77a0ff5e13350662945327dccba4bcd4975d45b61db2524eadad3d56fe | |
085ed77a | 44 | |
53025a10 J |
45 | tar xf $TERMUX_PKG_CACHEDIR/tools-v${TOOLS_VERSION}.tar.gz |
46 | mv tools-${TOOLS_VERSION} rdmd | |
085ed77a | 47 | |
53025a10 | 48 | local DUB_VERSION=1.8.1 |
085ed77a | 49 | termux_download \ |
50 | https://github.com/dlang/dub/archive/v${DUB_VERSION}.tar.gz \ | |
51 | $TERMUX_PKG_CACHEDIR/dub-v${DUB_VERSION}.tar.gz \ | |
53025a10 | 52 | 79ad2dca0679f6d8b6a4d75e7ccea7930957134743bba290c949d5aa1aa53a14 |
085ed77a | 53 | |
54 | tar xf $TERMUX_PKG_CACHEDIR/dub-v${DUB_VERSION}.tar.gz | |
55 | mv dub-${DUB_VERSION} dub | |
89304c98 | 56 | |
89304c98 | 57 | sed "s#\@TERMUX_PKG_HOSTBUILD\@#$TERMUX_PKG_HOSTBUILD_DIR#" $TERMUX_PKG_BUILDER_DIR/ldc-linker-flags.patch.in > \ |
58 | $TERMUX_PKG_BUILDER_DIR/ldc-linker-flags.patch | |
99109276 | 59 | |
60 | sed $TERMUX_PKG_BUILDER_DIR/llvm-config.in \ | |
61 | -e "s|@LLVM_VERSION@|$LLVM_SRC_VERSION|g" \ | |
62 | -e "s|@LLVM_BUILD_DIR@|$TERMUX_PKG_BUILDDIR/llvm|g" \ | |
63 | -e "s|@TERMUX_PKG_SRCDIR@|$TERMUX_PKG_SRCDIR|g" \ | |
64 | -e "s|@LLVM_TARGETS@|ARM AArch64 X86|g" \ | |
65 | -e "s|@LLVM_DEFAULT_TARGET_TRIPLE@|armv7-none-linux-android|g" \ | |
66 | -e "s|@TERMUX_ARCH@|$TERMUX_ARCH|g" > $TERMUX_PKG_BUILDDIR/llvm-config | |
67 | chmod 755 $TERMUX_PKG_BUILDDIR/llvm-config | |
89304c98 | 68 | } |
69 | ||
70 | termux_step_host_build () { | |
f28a8b50 J |
71 | tar xf $TERMUX_PKG_CACHEDIR/ldc2-${TERMUX_PKG_VERSION}-linux-x86_64.tar.xz |
72 | mv ldc2-${TERMUX_PKG_VERSION}-linux-x86_64 ldc-bootstrap | |
89304c98 | 73 | |
74 | termux_setup_cmake | |
99109276 | 75 | termux_setup_ninja |
76 | cmake -GNinja $TERMUX_PKG_SRCDIR/llvm \ | |
89304c98 | 77 | -DLLVM_BUILD_TOOLS=OFF \ |
53025a10 J |
78 | -DLLVM_BUILD_UTILS=OFF \ |
79 | -DCOMPILER_RT_INCLUDE_TESTS=OFF | |
f28a8b50 J |
80 | ninja -j $TERMUX_MAKE_PROCESSES llvm-tblgen |
81 | ||
82 | CC="$TERMUX_STANDALONE_TOOLCHAIN/bin/$TERMUX_HOST_PLATFORM-clang" \ | |
83 | ./ldc-bootstrap/bin/ldc-build-runtime --ninja -j $TERMUX_MAKE_PROCESSES \ | |
84 | --dFlags="-mtriple=armv7-none-linux-android;-w;-mcpu=cortex-a8" \ | |
85 | --cFlags="-march=armv7-a -mfpu=neon -mfloat-abi=softfp -mthumb -Os -I$TERMUX_PREFIX/include" \ | |
86 | --targetSystem="Android;Linux;UNIX" --ldcSrcDir="$TERMUX_PKG_SRCDIR" | |
89304c98 | 87 | } |
88 | ||
89 | termux_step_pre_configure () { | |
89304c98 | 90 | rm $TERMUX_PKG_BUILDER_DIR/ldc-linker-flags.patch |
89304c98 | 91 | |
92 | TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DLLVM_DEFAULT_TARGET_TRIPLE=armv7a-linux-androideabi" | |
19862327 | 93 | TERMUX_PKG_EXTRA_CONFIGURE_ARGS+=" -DLLVM_TARGET_ARCH=ARM -DLLVM_TARGETS_TO_BUILD=AArch64;ARM;X86" |
89304c98 | 94 | |
95 | # CPPFLAGS adds the system llvm to the include path, which causes | |
96 | # conflicts with the local patched llvm when compiling ldc | |
97 | CPPFLAGS="" | |
98 | ||
99 | OLD_TERMUX_PKG_SRCDIR=$TERMUX_PKG_SRCDIR | |
100 | TERMUX_PKG_SRCDIR=$TERMUX_PKG_SRCDIR/llvm | |
101 | ||
102 | OLD_TERMUX_PKG_BUILDDIR=$TERMUX_PKG_BUILDDIR | |
103 | TERMUX_PKG_BUILDDIR=$TERMUX_PKG_BUILDDIR/llvm | |
104 | mkdir "$TERMUX_PKG_BUILDDIR" | |
105 | } | |
106 | ||
107 | termux_step_post_configure () { | |
108 | TERMUX_PKG_SRCDIR=$OLD_TERMUX_PKG_SRCDIR | |
109 | TERMUX_PKG_BUILDDIR=$OLD_TERMUX_PKG_BUILDDIR | |
110 | cd "$TERMUX_PKG_BUILDDIR" | |
111 | ||
99109276 | 112 | mv llvm-config llvm/bin |
113 | TERMUX_PKG_EXTRA_CONFIGURE_ARGS="-DLLVM_CONFIG=$TERMUX_PKG_BUILDDIR/llvm/bin/llvm-config" | |
89304c98 | 114 | export DMD="$TERMUX_PKG_HOSTBUILD_DIR/ldc-bootstrap/bin/ldmd2" |
f28a8b50 | 115 | export DFLAGS="-mtriple=armv7-none-linux-android -mcpu=cortex-a8" |
89304c98 | 116 | termux_step_configure_cmake |
89304c98 | 117 | } |
118 | ||
119 | termux_step_make () { | |
120 | cd llvm | |
121 | if ls ./*akefile &> /dev/null; then | |
122 | make -j $TERMUX_MAKE_PROCESSES | |
123 | fi | |
124 | ||
125 | cd .. | |
126 | if ls ./*akefile &> /dev/null; then | |
dcd2ee17 | 127 | make -j $TERMUX_MAKE_PROCESSES ldc2 ldmd2 ldc-build-runtime |
89304c98 | 128 | fi |
085ed77a | 129 | |
130 | # Build the rdmd scripting wrapper and the dub package manager | |
f28a8b50 | 131 | D_FLAGS="-w -de -O" |
085ed77a | 132 | $DMD $D_FLAGS -c $TERMUX_PKG_SRCDIR/rdmd/rdmd.d -of=$TERMUX_PKG_BUILDDIR/bin/rdmd.o |
f28a8b50 | 133 | D_LDFLAGS="-fuse-ld=bfd -L${TERMUX_PKG_HOSTBUILD_DIR}/ldc-build-runtime.tmp/lib -lphobos2-ldc -ldruntime-ldc -Wl,--gc-sections -ldl -lm -Wl,--fix-cortex-a8 -fPIE -pie -Wl,-z,nocopyreloc ${LDFLAGS}" |
085ed77a | 134 | $CC $TERMUX_PKG_BUILDDIR/bin/rdmd.o $D_LDFLAGS -o $TERMUX_PKG_BUILDDIR/bin/rdmd |
135 | ||
136 | cd $TERMUX_PKG_SRCDIR/dub | |
137 | $DMD $D_FLAGS -version=DubUseCurl -Isource -c @build-files.txt -of=$TERMUX_PKG_BUILDDIR/bin/dub.o | |
138 | cd $TERMUX_PKG_BUILDDIR | |
139 | $CC $TERMUX_PKG_BUILDDIR/bin/dub.o $D_LDFLAGS -o $TERMUX_PKG_BUILDDIR/bin/dub | |
89304c98 | 140 | } |
141 | ||
142 | termux_step_make_install () { | |
dcd2ee17 | 143 | cp bin/{dub,ldc-build-runtime,ldc2,ldmd2,rdmd} $TERMUX_PREFIX/bin |
f28a8b50 | 144 | cp $TERMUX_PKG_HOSTBUILD_DIR/ldc-build-runtime.tmp/lib/lib{druntime,phobos2}*.a $TERMUX_PREFIX/lib |
89304c98 | 145 | sed -i "/runtime\/druntime\/src/d" bin/ldc2.conf |
9d5c06a3 | 146 | sed -i "/runtime\/jit-rt\/d/d" bin/ldc2.conf |
89304c98 | 147 | sed -i "s|$TERMUX_PKG_SRCDIR/runtime/phobos|%%ldcbinarypath%%/../include/d|" bin/ldc2.conf |
148 | sed "s|$TERMUX_PKG_BUILDDIR/lib|%%ldcbinarypath%%/../lib|" bin/ldc2.conf > $TERMUX_PREFIX/etc/ldc2.conf | |
149 | ||
150 | rm -Rf $TERMUX_PREFIX/include/d | |
151 | mkdir $TERMUX_PREFIX/include/d | |
152 | cp -r $TERMUX_PKG_SRCDIR/runtime/druntime/src/{core,etc,ldc,object.d} $TERMUX_PREFIX/include/d | |
f28a8b50 | 153 | cp $TERMUX_PKG_HOSTBUILD_DIR/ldc-bootstrap/import/ldc/gccbuiltins_arm.di $TERMUX_PREFIX/include/d/ldc |
89304c98 | 154 | cp -r $TERMUX_PKG_SRCDIR/runtime/phobos/etc/c $TERMUX_PREFIX/include/d/etc |
155 | rm -Rf $TERMUX_PREFIX/include/d/etc/c/zlib | |
156 | find $TERMUX_PKG_SRCDIR/runtime/phobos/std -name "*.orig" -delete | |
157 | cp -r $TERMUX_PKG_SRCDIR/runtime/phobos/std $TERMUX_PREFIX/include/d | |
158 | ||
159 | rm -Rf $TERMUX_PREFIX/share/ldc | |
160 | mkdir $TERMUX_PREFIX/share/ldc | |
161 | cp -r $TERMUX_PKG_SRCDIR/{LICENSE,README,bash_completion.d} $TERMUX_PREFIX/share/ldc | |
162 | } |