Skip to content

Build Overview

HLXEasy edited this page Feb 7, 2021 · 3 revisions

Overview of the whole Alias build

How it was and why we changed it

As mostly all other projects even Alias used the build scripts/steps/tools from it's predecessors. So there are more or less different approaches used throughout the different target systems. One could imagine that it is difficult to maintain. To keep the output of all these different build ways in sync took a lot of time, which could better be used at other things.

To solve this issue we decided to generalize the build in such a way, that it is as most generic as possible. It's of course impossible, to build with exactly the same tools on a/o for the different operating systems. But there is even another tool available, which can handle or better said "orchestrate" the final build steps in a generic way: CMake

The new way

The whole build is now based on CMake. CMake uses some special files, called CMakeLists.txt which define all required things like build targets, dependencies, versions etc. So from a high level point of view, the build as usual consists of two steps:

  • Configure the build
  • Perform the build
# cmake
# cmake build

These steps need to be parameterized according to the used operating system a/o target system. To make these parameterization as easy as possible, we developed helper scripts for different environments. These helper scripts perform the following tasks:

  • Check requirements
  • Download and build dependencies
  • Build Alias wallet daemon and UI

The main ideas of the helper scripts are to make the build itself as easy and as fast as possible. So the source archvies of the dependencies will be downloaded only once and then used on subsequent builds. These downloads will be stored on ~/Archives/.... For further speed improvements each dependency will be built only once on a dedicated folder inside the main build folder. So during a subsequent build of the Alias wallet, the build script will check if the required binaries are already build and just use them.

Afterwards the main wallet build is parameterized in such a way, that these prebuild binaries are used and included onto the resulting binary. That means for all supported Linux flavours, that there are mostly no other dependencies at runtime anymore. So the resulting binary can be put onto a fresh and clean new system and it is working. "Mostly" in that sense means, that there are only two exceptions: Tor and Qt. So the only separate packages to install are Tor and if you're using the wallet with the graphical user interface, Qt. Tor is used "as-is" and static build of Qt is not supported.

Windows and Mac are slightly different regarding their build requirements, build behaviour and build output but this is handled by the scripts too.

For any further details, just have a look at the corresponding document according to your operating system:

After the build comes the installation. For this, see here:

Clone this wiki locally