This is the big change !!!!
Instead of handling target as primary object and prepare/build targets,
we are handling build steps.
A build step may be a source (preparation) or a build (of the source).
Actualy, a step is a tuple (context, Builder or Source).
The context define the context of the step. It can be :
- 'source', for a Source step
- 'neutral' or the name of a platform for Build step.
Target becomes a "Class only" class.
Sometime the root_path is dependent of the target platform and sometime
not. But sometime dependent of the build arch :/
[TODO] We should move the cross_file generation to the PlatformInfo class.
Introduce also a "NeutralEnv", a build environment independent of the
targeted platform. All `Source` now build using the neutralEnv.
Most of toolchains are also using neutralEnv except android_ndk who is
specific to a platform.
As toolchain are neutral, platform specific environment variables are now
set by the platformInfo directly instead of the toolchain.
Those dependencies are used for bittorent and metalink.
For now, we don't support those features (we should in the future).
However, it seems that if development package are installed on the system,
libaria will try to link with libsqlite3 and libxml3 anyway.
We have to investigate this, but it breaks static build of kiwix-tools.
As we are not using those feature for now, let's just explicitly
compile libaria2 without sqlite3 and libxml2.
libaria2 use xz to configure its source.
If we compile the xz tool, libaria2 will use the compiled binary.
However, on cross compilation, xz will be compiled for the target platform
and run on the host platform. And so, it will fails.
As we do not use those tools at all, lets not compile them.
Make kiwix-build installable using pip.
Module is now called `kiwixbuild` because `kiwix-build` is not a valid
python identifier.
Also split toolchains in separated directory.