Better dependency management and healthiness
Our build process are broken :worried:
Not quite :sweat_smile:, but we need to talk about two points:
- Dependency management;
- Healthiness.
1. Dependency management
Today TotalCross VM contains many library sources integrated into the compile process, that greatly increases the time spend and prevents the usage of embedded/local sources. They are:
- minizip;
- zlib;
- axTLS;
- libpng;
- libjpeg;
- SQLite3;
- Skia;
- dlmalloc;
- Litebase.
and more. This can mean a dramatic quality gain, it will be increases:
- Reusability: we realized with #23 that SDL2 can be optimized for the target hardware and we don't want to be a problem for this type of system;
- Modularity: once we make available: version, necessary flags, build scripts for each dependency we will allow a wider range of optimizations;
- Maintainability: we will know all the borders of TotalCross.
2. Healthiness
We are receiving a lot of feedback and tips about our code, we want to make TC the best platform for devs, because that we gonna do this soon as we can:
- Rewrite a bunch of duplicated code;
- Make a bullet proof build system;
- Bytecode with VM version signature;
- Define a unique names to our supported platforms (remember: flag
-linux_arm, build dir gcc-linux-arm, C defineHEADLESSor__arm__, launcher source inside ../raspbian folder.. whaaaaaat)
We need you
We are open to all suggestions on how we can do this as the-state-of-the-art :art:
Issue #71 will be resolved firstly for two reasons:
- It will be simpler to test each lib removal with a new build system;
- We have to figure it out the easiest way to install dependencies to run TotalCross (for makers).
We have news about the build system :smile:
I believe the dependency handling tool will vary across platforms.
For convenience, we might explore using a Docker for this.
I agree and updated the news.
@acmlira, maybe update this issue and break it down into several others so we can add as small steps in our planning.