Works for Android NDKs with unified headers (see https://android.googlesource.com/platform/ndk/+/ndk-release-r16/docs/UnifiedHeaders.md). Separate step of configuring a standalone toolchain is recommended by the Android docs. Explicitely setting CC to clang is useful, since gcc in Android NDK is deprecated and outright broken in NDK version 18. Using the bfd linker is needed for bdwgc to work correctly (see also https://github.com/ivmai/bdwgc/issues/259).
67 lines
2.7 KiB
Text
67 lines
2.7 KiB
Text
You will find detailed installation instructions in the ECL manual
|
|
https://common-lisp.net/project/ecl/static/manual/pr01s06.html
|
|
If you do not have access to the online version, follow the following recipies.
|
|
|
|
* Unix and similar platforms.
|
|
1. Type
|
|
./configure --help
|
|
to get a list of the flags with which ECL can be configured.
|
|
2. Enter
|
|
./configure ...
|
|
where "..." is the set of flags you have chosen.
|
|
3. Use "make" followed by "make install" to build and install ECL.
|
|
|
|
* Windows with Visual Studio C++ 2008
|
|
1. Enter the msvc directory
|
|
2. Read the file Makefile to find the configuration options. They
|
|
typically have the form ECL_UNICODE=1, ECL_THREADS=1, etc
|
|
3. Enter
|
|
nmake ...
|
|
followed by zero or more of those options
|
|
4. Use "nmake install" to create a directory called "package" with ECL in it.
|
|
5. Move that directory wherever you need.
|
|
|
|
* Cross-compile for the android platform (from the UNIX machine)
|
|
1. Build the host ECL
|
|
#+BEGIN_SRC shell-script
|
|
./configure ABI=32 CFLAGS="-m32 -g -O2" LDFLAGS="-m32 -g -O2"\
|
|
--prefix=`pwd`/ecl-android-host --disable-longdouble
|
|
make -j9
|
|
make install
|
|
rm -r build
|
|
export ECL_TO_RUN=`pwd`/ecl-android-host/bin/ecl
|
|
#+END_SRC
|
|
2. Configure the toolchain (requires android-ndk version 15 or higher, known to work with version 17c)
|
|
and export the necessary paths:
|
|
#+BEGIN_SRC shell-script
|
|
export NDK_PATH=/opt/android-ndk
|
|
export ANDROID_API=23
|
|
export TOOLCHAIN_PATH=`pwd`/android-toolchain
|
|
${NDK_PATH}/build/tools/make_standalone_toolchain.py --arch arm --install-dir ${TOOLCHAIN_PATH} --api ${ANDROID_API}
|
|
export SYSROOT=${TOOLCHAIN_PATH}/sysroot
|
|
export PATH=${TOOLCHAIN_PATH}/bin:$PATH
|
|
#+END_SRC
|
|
3. Build and install the target library
|
|
#+BEGIN_SRC shell-script
|
|
# boehm GC is not compatible with ld.gold linker, force use of ld.bfd
|
|
export LDFLAGS="--sysroot=${SYSROOT} -D__ANDROID_API__=${ANDROID_API} -fuse-ld=bfd"
|
|
export CPPFLAGS="--sysroot=${SYSROOT} -D__ANDROID_API__=${ANDROID_API} -isystem ${SYSROOT}/usr/include/arm-linux-androideabi"
|
|
export CC=arm-linux-androideabi-clang
|
|
./configure --host=arm-linux-androideabi \
|
|
--prefix=`pwd`/ecl-android \
|
|
--with-cross-config=`pwd`/src/util/android-arm.cross_config
|
|
make -j9
|
|
make install
|
|
#+END_SRC
|
|
4. Library and assets in the ecl-android directory are ready to run on
|
|
the Android system.
|
|
|
|
** Building ecl-android on Darwin (OSX)
|
|
If your host platform is darwin, then the host compiler should be
|
|
built with the Apple's GCC (not the GCC from Macports). Using the
|
|
MacPort command:
|
|
#+BEGIN_SRC shell-script
|
|
sudo port select --set gcc none
|
|
#+END_SRC
|
|
|
|
Hint provided by Pascal J. Bourguignon.
|