Add package: nim

Co-Authored-By: Epictek <kieran@coldron.com>

Update packages/nim/build.sh

Co-Authored-By: Epictek <kieran@coldron.com>

Update packages/nim/build.sh

Co-Authored-By: Epictek <kieran@coldron.com>

Remove duplicated line
This commit is contained in:
Kieran Coldron 2018-11-21 02:17:47 +00:00 committed by Fredrik Fornwall
parent 5b3698e320
commit 94d1104569
4 changed files with 98 additions and 0 deletions

54
packages/nim/build.sh Normal file
View File

@ -0,0 +1,54 @@
TERMUX_PKG_HOMEPAGE=https://nim-lang.org/
TERMUX_PKG_DESCRIPTION="Nim programming language compiler"
TERMUX_PKG_VERSION=0.19.0
TERMUX_PKG_SRCURL=https://nim-lang.org/download/nim-$TERMUX_PKG_VERSION.tar.xz
TERMUX_PKG_SHA256=a1996347253c590de42f6e36e33bd1d5ec7479c0aa013769b92deef802df3c2e
TERMUX_PKG_HOSTBUILD=yes
TERMUX_PKG_BUILD_IN_SRC=yes
TERMUX_PKG_DEPENDS="git, clang, libandroid-glob"
termux_step_host_build() {
cp ../src/* -r ./
make -j $TERMUX_MAKE_PROCESSES CC=gcc LD=gcc
}
termux_step_make() {
if [ $TERMUX_ARCH = "x86_64" ]; then
export NIM_ARCH=amd64
elif [ $TERMUX_ARCH = "i686" ]; then
export NIM_ARCH=i386
elif [ $TERMUX_ARCH = "aarch64" ]; then
# -Oz breaks aarch64 build
CFLAGS+=" -Os"
export NIM_ARCH=arm64
else
export NIM_ARCH=arm
fi
LDFLAGS+=" -landroid-glob"
sed -i "s%\@CC\@%${CC}%g" config/nim.cfg
sed -i "s%\@CFLAGS\@%${CFLAGS}%g" config/nim.cfg
sed -i "s%\@LDFLAGS\@%${LDFLAGS}%g" config/nim.cfg
sed -i "s%\@CPPFLAGS\@%${CPPFLAGS}%g" config/nim.cfg
find -name "stdlib_osproc.c" | xargs -n 1 sed -i 's',"/system/bin/sh\"\,\ 14","/data/data/com.termux/files/usr/bin/sh\"\,\ 38",'g'
PATH=$TERMUX_PKG_HOSTBUILD_DIR/bin:$PATH
if [ $NIM_ARCH = "amd64" ]; then
sed -i 's/arm64/amd64/g' makefile
fi
export CFLAGS=" $CPPFLAGS $CFLAGS -w -fno-strict-aliasing"
make LD=$CC uos=linux mycpu=$NIM_ARCH myos=android -j $TERMUX_MAKE_PROCESSES useShPath=$TERMUX_PREFIX/bin/sh
cp config/nim.cfg ../host-build/config
nim --opt:size --define:termux -d:release --os:android --cpu:$NIM_ARCH -t:-I/data/data/com.termux/files/usr/include -l:"-L/data/data/com.termux/files/usr/lib -landroid-glob" c koch.nim
cd dist/nimble/src
nim --define:termux -d:release --os:android --cpu:$NIM_ARCH -t:-I/data/data/com.termux/files/usr/include -l:"-L/data/data/com.termux/files/usr/lib -landroid-glob" c nimble.nim
}
termux_step_make_install() {
./install.sh $TERMUX_PREFIX/lib
cp koch $TERMUX_PREFIX/lib/nim/bin
cp dist/nimble/src/nimble $TERMUX_PREFIX/lib/nim/bin
ln -sf $TERMUX_PREFIX/lib/nim/bin/nim $TERMUX_PREFIX/bin/
ln -sf $TERMUX_PREFIX/lib/nim/bin/koch $TERMUX_PREFIX/bin/
ln -sf $TERMUX_PREFIX/lib/nim/bin/nimble $TERMUX_PREFIX/bin/
}

View File

@ -0,0 +1,22 @@
--- ./compiler/installer.a.ini 2018-11-20 22:15:41.349488361 +0000
+++ ./compiler/installer.ini 2018-11-20 22:14:38.431003964 +0000
@@ -5,17 +5,8 @@
Name: "Nim"
Version: "$version"
Platforms: """
- windows: i386;amd64
- linux: i386;amd64;powerpc64;arm;sparc;mips;mipsel;mips64;mips64el;powerpc;powerpc64el;arm64;riscv64
- macosx: i386;amd64;powerpc64
- solaris: i386;amd64;sparc;sparc64
- freebsd: i386;amd64
- netbsd: i386;amd64
- openbsd: i386;amd64
- dragonfly: i386;amd64
- haiku: i386;amd64
- android: i386;arm;arm64
- nintendoswitch: arm64
+ linux: i386;amd64;arm;arm64
+ android: i386;amd64;arm;arm64
"""
Authors: "Andreas Rumpf"

View File

@ -0,0 +1,11 @@
--- ./lib/pure/osproc.a.nim 2018-11-20 22:10:39.892888610 +0000
+++ ./lib/pure/osproc.nim 2018-11-20 22:11:48.031167863 +0000
@@ -792,7 +792,7 @@
if poEvalCommand in options:
const useShPath {.strdefine.} =
when not defined(android): "/bin/sh"
- else: "/system/bin/sh"
+ else: "@TERMUX_PREFIX@/bin/sh"
sysCommand = useShPath
sysArgsRaw = @[sysCommand, "-c", command]
assert args.len == 0, "`args` has to be empty when using poEvalCommand."

View File

@ -0,0 +1,11 @@
--- ./lib/posix/posix.a.nim 2018-11-20 22:08:36.965187234 +0000
+++ ./lib/posix/posix.nim 2018-11-20 22:07:25.911639450 +0000
@@ -92,7 +92,7 @@
# Platform specific stuff
-when defined(linux) and defined(amd64):
+when defined(linux) and defined(amd64) and not defined(android):
include posix_linux_amd64
elif defined(nintendoswitch):
include posix_nintendoswitch