Deprecated or at least untested for years. Noticed due to <https://github.com/koreader/koreader/discussions/10972#discussion-5701647>
3.5 KiB
Building targets
KOReader is available for multiple platforms. Here are instructions to build installable packages for all these platforms.
These instructions are intended for a Linux OS. MacOS and Windows users are suggested to develop in a Linux VM.
Prerequisites
This instructions asume that you have a development environment ready to run KOReader. If not then please install common prerequisites first.
A toolchain for your target.
Each target has its own architecture and you'll need to setup a proper cross-compile toolchain. Your GCC should be at least version 4.9.
for Android
A compatible version of the Android NDK and SDK will be downloaded automatically by ./kodev release android
if no NDK or SDK is provided in environment variables. For that purpose you can use:
NDK=/ndk/location SDK=/sdk/location ./kodev release android
If you want to use your own installed tools please make sure that you have the NDKr15c and the SDK for Android 9 (API level 28) already installed.
for embedded linux devices
Cross compile toolchains are available for Ubuntu users through these commands:
e-Ink devices (e.g., Kindle, Kobo, Cervantes, reMarkable, PocketBook)
NOTE: While, for some targets (specifically, Cervantes, Kindle & Kobo), we make some effort to support Linaro/Ubuntu TCs,
they do not exactly target the proper devices. While your build may go fine, this will probably lead to runtime failure.
As time goes by, and/or the more bleeding-edge your distro is, the greater the risk for mismatch gets.
Which means, that, unless you are very sure you know what you're doing, you'll want to use the exact same TCs we do, ones that target their respective platforms properly.
We have a distribution-agnostic solution to make that mostly painless: koxtoolchain!
This will allow you to build the exact same TCs used to build the nightlies, thanks to the magic of crosstool-ng. These are also included precompiled in the Docker images for the respective targets.
Additional packages
Some platforms will require additional packages:
for Android
Building for Android requires openjdk-8-jdk
and p7zip-full
.
For both Ubuntu and Debian, install the packages:
sudo apt-get install openjdk-8-jdk p7zip-full
for Debian
Building a debian package requires the dpkg-deb
tool. It should be already installed if you're on a Debian/Ubuntu based distribution.
Building
You can check out our nightlybuild script to see how to build a package from scratch.
Android
./kodev release android
Android (x86)
ANDROID_ARCH=x86 ./kodev release android
Desktop Linux
Emulator
See Building.
AppImage (x86_64)
./kodev release appimage
Debian (x86_64)
./kodev release debian
Debian (armel)
./kodev release debian-armel
Debian (armhf)
./kodev release debian-armhf
Desktop macOS
./kodev release macos
e-Ink devices
Cervantes
./kodev release cervantes
Kindle
./kodev release kindle
Kobo
./kodev release kobo
Pocketbook
./kodev release pocketbook
reMarkable
./kodev release remarkable
Porting to a new target.
See Porting.md