这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions packages/ecl/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
TERMUX_PKG_HOMEPAGE=https://common-lisp.net/project/ecl/
TERMUX_PKG_DESCRIPTION="ECL (Embeddable Common Lisp) is an interpreter of the Common Lisp language."

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ecl is a compiler with runtime, not an interpreter

Copy link
Contributor Author

@fjl fjl Nov 26, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @dkochmanski, good to see you here :). I just copied the first sentence from https://common-lisp.net/project/ecl/main.html. Happy to adjust it if you think it's not correct.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks, I need probably to rephrase it. If you are interested in details:
ecl always compiles the code (either with the bytecodes compiler or the c compiler), in the former case it executes the bytecode in a bytecode vm and that could be called interpreter.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess it can be called an interpreter because python and most other scripting languages work the same way: compile to bytecode, then run that. ECL has the additional option of compiling to C.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I disagree, interpretation has a well defined meaning and it does not fit the model of compile->bytecode->execute. But I don't care enough to insist (especially that our own webpage is wrong :-)

TERMUX_PKG_LICENSE="LGPL-2.0"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fwiw ecl is licensed under lgpl-2.1+, not lgpl-2.0

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I put LGPL-2.0 here because it says "Version 2" in https://gitlab.com/embeddable-common-lisp/ecl/-/blob/develop/COPYING

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you are right, the included license is outdated (we already
bundle lgpl-2.1+ sources of other libraries)

(I will also need to change that), either way, since there is

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.

it should be at least mentioned as lgpl-2.0+

TERMUX_PKG_VERSION="20.4.24"
TERMUX_PKG_SRCURL=https://common-lisp.net/project/ecl/static/files/release/ecl-${TERMUX_PKG_VERSION}.tgz
TERMUX_PKG_SHA256=670838edf258a936b522fdb620da336de7e575aa0d27e34841727252726d0f07
TERMUX_PKG_DEPENDS="libandroid-support, libgmp, libgc, libffi"
TERMUX_PKG_HOSTBUILD=true
TERMUX_PKG_NO_STATICSPLIT=true
TERMUX_PKG_BLACKLISTED_ARCHES="i686, x86_64"
TERMUX_PKG_HAS_DEBUG=false

# See https://gitlab.com/embeddable-common-lisp/ecl/-/blob/develop/INSTALL
# for upstream cross build guide.

# ECL needs itself during build, so we need to build it for the host first.
termux_step_host_build() {
srcdir=$TERMUX_PKG_SRCDIR/src
hostprefix=$TERMUX_PKG_HOSTBUILD_DIR/prefix
mkdir $hostprefix
$srcdir/configure --prefix=$hostprefix --srcdir=$srcdir --disable-c99complex
make
make install
}

termux_step_configure() {
# Copy cross_config for target architecture.
case $TERMUX_ARCH in
aarch64) crossconfig=android-arm64 ;;
arm) crossconfig=android-arm ;;
*) termux_error_exit "Unsupported arch: $TERMUX_ARCH" ;;
esac
crossconfig="$TERMUX_PKG_SRCDIR/src/util/$crossconfig.cross_config"
export ECL_TO_RUN=$TERMUX_PKG_HOSTBUILD_DIR/prefix/bin/ecl

srcdir=$TERMUX_PKG_SRCDIR/src
$srcdir/configure \
--srcdir=$srcdir \
--prefix=$TERMUX_PREFIX \
--host=$TERMUX_HOST_PLATFORM \
--build=$TERMUX_BUILD_TUPLE \
--with-cross-config=$crossconfig \
--disable-c99complex \
--enable-gmp=system \
--enable-boehm=system
}