How to build Maxima on Android

Source code of entire Maxima on Android, available now.

I have made the Maxiam on Android entirely open sourced. Please visit Github site.

Source code of ECL and Maxima, modified for Maxima on Android

Here you can also obtain the source code of ECL and Maxima that are used in "Maxima on Android". There are small changes to both ECL and Maxima. In the case of ECL, the changes are merely for the setting files, and my versions of the settings are provided here. You can obtain the entire source code of ECL on Android from the original distribution site.

In the case of Maxima, the changes are distributed across the source lisp files. So, the source tree with my changes are provided as a tarball below, already patched for compilation for ECL on Android.

For those who want to build ECL and Maxima binaries by yourself, here goes the instructions.

Ubuntu 12.04 LTS (32bit)

The followings are tested in this environment. Although this may not be a must, I strongly recommend to use this environment.

Android NDK r5c

This is the NDK that is used by the original author of the ECL on Android. I tried the latest NDK, but failed. I strongly recommend to use this as for your cross compile environment.

Here is a link to the NDK r5c from Google.

Below I assume the the downloaded file is unzipped in your home directory.

ECL on Android

This is the first tricky part of the build process. There are two Github sites which are hosted by ageneau (the principal developer of ECL on Android). They are here and there. Note that there is a very good document found in the former site, but the source code you need to use is only available from the latter site.

Here is how to download the source code. Visit there. You see the following buttons:

 You should click "ZIP" button, then the download of a file will start, whose name is:

Please unzip this file, then cd to ageneau-ecl-mirror-be89a8d directory. 

Then visit here and read the file INSTALL.

In the directory ageneau-ecl-mirror-be89a8d, you see scripts.conf . This is the file that first you need to edit. Here is an example of scripts.conf file:

# configure here the installation path of the GMP library and ECL GMP_INSTALL_ROOT_DIR=/opt/gmp ECL_INSTALL_ROOT_DIR=/opt/ecl # path to Android NDK, if you plan to build for Android ANDROID_NDK_ROOT=~/android-ndk-r5c TOOLCHAIN=$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86 #TOOLCHAIN=$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86 SYSROOT=$ANDROID_NDK_ROOT/platforms/android-8/arch-arm

Then there is actually one more file which you need to modify. That is ageneau-ecl-mirror-be89a8d/platforms/android/ . An example file can be found below.

Then you can just follow the instructions written in INSTALL mentioned above.


The maxima source code that can be compiled using the above ECL can be obtained from below. As you follow all the instructions above, you will have a install of ECL under /opt/ecl where ecl binary which runs on Android as well as the one which runs on the host Linux are created. Using the latter ecl which runs on host Linux, you can cross compile all the maxima source code which will then be linked to the former ecl which runs on target Android.

To do so, please download the maxima-5.27.0.tar.gz below which can be extracted using the command:
% tar xvfz maxima-5.27.0

Then follow the script below:
% cd maxima-5.27.0/src
% ecl
ECL (Embeddable Common-Lisp) 11.1.1 (git:UNKNOWN)
Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya
Copyright (C) 1993 Giuseppe Attardi
Copyright (C) 2000 Juan J. Garcia-Ripoll
ECL is free software, and you are welcome to redistribute it
under certain conditions; see file 'Copyright' for details.
Type :h for Help.  
Top level in: #<process TOP-LEVEL>.
> (load "../compile-moa.lisp")

After every compilation is finished, you will have a cross compiled maxima arm binary in the src directory.

MathJax 2.0

MathJax 2.0 is governed by the Apache 2.0 License. The entire source code (without any modification) is included in the APK as well as the source code so that you can easily extract it from there. I only deleted PNG based image fonts.

Sep 17, 2012, 12:29 AM
Aug 24, 2012, 10:18 PM
Aug 25, 2012, 9:35 AM