ageneau / ecl-android Goto Github PK
View Code? Open in Web Editor NEWPatches for ECL to run on android iOS and Native client (Obsolete: You should use https://gitlab.common-lisp.net/ecl/ecl-android instead)
License: Other
Patches for ECL to run on android iOS and Native client (Obsolete: You should use https://gitlab.common-lisp.net/ecl/ecl-android instead)
License: Other
Warning: This project is obsolete. You probably want to use: https://gitlab.common-lisp.net/ecl/ecl-android instead. This project contains the needed patches to run ECL on android. The included Makefile will download and patch ECL (git is needed). See INSTALL for details. You'll need the android SDK + NDK to compile / run this project The included "HelloEcl" android application demonstrates how to start/run an in-process ECL from an android app using JNI. It loads the file "init.lisp" and displays a Toast notification. It also starts a swank server on port 4005 (on the emulator use "adb forward tcp:4005 tcp:4005" to be able to connect to it from slime). The first run will be slow because swank needs to be byte-compiled. To get more information on what ECL is doing you might want to enable stdout/stderr redirection: adb shell stop adb shell setprop log.redirect-stdio true adb shell start The cross-compiled ecl binary can also be run as a standalone executable (just "adb push" it to a directory on the emulator and use "adb shell" to execute it. Sylvain Ageneau <[email protected]>
change
`````` ecl_to_run=/opt/ecl/host/bin/eclto
ecl_to_run=$ECL_INSTALL_ROOT_DIR/host/bin/ecl```
git://common-lisp.net/projects/mirror/slime.git isn't cloneable by anonymous. Changing the source to to another slime repository, say https://github.com/slime/slime, caused the build to fail because it's unable to pull the specific version required by the build script. The work around that got things running for me was to remove the module:
rm -rf .git/modules/slime
git submodule deinit slime
git rm slime
git rm --cached slime
git clone https://github.com/slime/slime
The original error generated by
make update
was
Clone of 'git://common-lisp.net/projects/mirror/slime.git' into submodule path 'slime' failed
Makefile:37: recipe for target 'update-modules' failed
make: *** [update-modules] Error 1
rett@rett-nuc:~/dev/android-studio/ecl-android-bak/ecl-android$ make update
git submodule init
git submodule update
Cloning into 'slime'...
fatal: unable to connect to common-lisp.net:
common-lisp.net[0: 148.251.248.130]: errno=Connection refused
common-lisp.net[1: 2a01:4f8:200:4310::30]: errno=Network is unreachable
Clone of 'git://common-lisp.net/projects/mirror/slime.git' into submodule path 'slime' failed
Makefile:37: recipe for target 'update-modules' failed
make: *** [update-modules] Error 1
./configure_cross host fails with
"configure: error: Oops, mp_limb_t is 32 bits, but the assembler code
in this configuration expects 64 bits."
Fixed it by adding "ABI=32 " to the config_opts for the host in configure_cross
First issue I ran into seems to be when calling make. cl-opengl cannot be checked out.
I bypassed this by manually checking it out via -> git clone git://github.com/ageneau/cl-opengl.git to the lisp-packages directory.
2nd issue:
When configuring for host, I will run into the error that I cannot do "make install". bin/ doesn't contain a ecl binay. However I don't see any building errors. However there is a ecl-min binary in build/host/ecl directory.
3rd issue:
When configuring for Android under Linux 64bit, I will get this error:
./configure_gmp_cross android
Can not find Android toolchain in /opt/android/android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/.
The NDK version might be wrong.
The problem is that the NDK is 32bit only. This can by bypassed by setting a link from linux-x86 to linux-x86_64 in $ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.6/prebuilt.
4th issue
From here I cannot proceed, cause I do not have a working ecl, which failed in 2nd issue.
This was tested under Debain "wheezy" 64 bit VM install.
This project is not up-to-date - many dependencies are obsolete; neither is it straightforward. There are too many bugs to mention here, and the documentation for how to build it is spartan. Please have a look at a straightforward simple example: https://github.com/stockrt/sqlite3-android, this ECL project should be as easy and straightforward as building the sqlite3 example (even though ECL is more complicated than sqlite, that should not be an excuse to not have a streamlined build process). Regards.
Running the standalone binary ecl on Android L (emulator) causes an error:
error: only position independent executables (PIE) are supported.
This is due to the fact that Android L linker checks if PIE is enabled on the executable when it is loaded into the memory.
It would be great if you would implement the support of PIE for ECL on Android. I am using ecl on android to build Maxima on Android.
Great job getting ECL working on not only Android, but iOS as well. How about Windows Phone?
Can we move these patches upstream so that ECL coders get Android support out of the box?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.