To build dependencies for the current arch+OS:
make
To build for another arch/OS:
make HOST=host-platform-triplet
For example:
make HOST=x86_64-w64-mingw32 -j4
When configuring Limenka, CMake by default will ignore the depends output. In
order for it to pick up libraries, tools, and settings from the depends build,
you must specify the toolchain file.
In the above example, a file named depends/x86_64-w64-mingw32/toolchain.cmake will be
created. To use it during configuring Limenka:
cmake -B build --toolchain depends/x86_64-w64-mingw32/toolchain.cmake
Common host-platform-triplets for cross compilation are:
i686-pc-linux-gnu for Linux x86 32 bitx86_64-pc-linux-gnu for Linux x86 64 bitx86_64-w64-mingw32 for Win64x86_64-apple-darwin for macOSarm64-apple-darwin for ARM macOSarm-linux-gnueabihf for Linux ARM 32 bitaarch64-linux-gnu for Linux ARM 64 bitpowerpc64-linux-gnu for Linux POWER 64 bit (big endian)powerpc64le-linux-gnu for Linux POWER 64 bit (little endian)riscv32-linux-gnu for Linux RISC-V 32 bitriscv64-linux-gnu for Linux RISC-V 64 bits390x-linux-gnu for Linux S390XThe paths are automatically configured and no other options are needed.
apt install cmake curl make patch
Skip the following packages if you don't intend to use the GUI and will build with `NO_QT=1`:
apt install bison g++ pkgconf python3 xz-utils
apt install clang lld llvm zip
Clang 18 or later is required. You must also obtain the macOS SDK before
proceeding with a cross-compile. Under the depends directory, create a
subdirectory named SDKs. Then, place the extracted SDK under this new directory.
For more information, see SDK Extraction.
apt install g++-mingw-w64-x86-64-posix
Common linux dependencies:
sudo apt-get install g++-multilib binutils
For linux ARM cross compilation:
sudo apt-get install g++-arm-linux-gnueabihf binutils-arm-linux-gnueabihf
For linux AARCH64 cross compilation:
sudo apt-get install g++-aarch64-linux-gnu binutils-aarch64-linux-gnu
For linux POWER 64-bit cross compilation (there are no packages for 32-bit):
sudo apt-get install g++-powerpc64-linux-gnu binutils-powerpc64-linux-gnu g++-powerpc64le-linux-gnu binutils-powerpc64le-linux-gnu
For linux RISC-V 64-bit cross compilation (there are no packages for 32-bit):
sudo apt-get install g++-riscv64-linux-gnu binutils-riscv64-linux-gnu
For linux S390X cross compilation:
sudo apt-get install g++-s390x-linux-gnu binutils-s390x-linux-gnu
pkg install bash cmake curl gmake
pkgin install bash cmake curl gmake perl
pkg_add bash cmake curl gmake gtar
The following can be set when running make: make FOO=bar
SOURCES_PATH: Downloaded sources will be placed hereBASE_CACHE: Built packages will be placed hereSDK_PATH: Path where SDKs can be found (used by macOS)FALLBACK_DOWNLOAD_PATH: If a source file can't be fetched, try here before giving upC_STANDARD: Set the C standard version used. Defaults to c11.CXX_STANDARD: Set the C++ standard version used. Defaults to c++20.NO_BOOST: Don't download/build/cache BoostNO_LIBEVENT: Don't download/build/cache LibeventNO_QT: Don't download/build/cache Qt and its dependenciesNO_QR: Don't download/build/cache packages needed for enabling qrencodeNO_ZMQ: Don't download/build/cache packages needed for enabling ZeroMQNO_WALLET: Don't download/build/cache libs needed to enable the walletNO_BDB: Don't download/build/cache BerkeleyDBNO_SQLITE: Don't download/build/cache SQLiteNO_UPNP: Don't download/build/cache packages needed for enabling UPnPNO_USDT: Don't download/build/cache packages needed for enabling USDT tracepointsMULTIPROCESS: Build libmultiprocess (experimental)DEBUG: Disable some optimizations and enable more runtime checkingHOST_ID_SALT: Optional salt to use when generating host package idsBUILD_ID_SALT: Optional salt to use when generating build package idsLOG: Use file-based logging for individual packages. During a package build its log file resides in the depends directory, and the log file is printed out automatically in case
of build error. After successful build log files are moved along with package archives
LTO: Enable options needed for LTO. Does not add -flto related options to *FLAGS.NO_HARDEN=1: Don't use hardening options when building packagesIf some packages are not built, for example make NO_WALLET=1, the appropriate CMake cache
variables will be set when generating the Limenka buildsystem. In this case, -DENABLE_WALLET=OFF.
download: run 'make download' to fetch all sources without building them download-osx: run 'make download-osx' to fetch all sources needed for macOS builds download-win: run 'make download-win' to fetch all sources needed for win builds download-linux: run 'make download-linux' to fetch all sources needed for linux builds