Cross-compilation support
Detail:
- GNUmakefile: add translation of Makefile to GNU make / cross-compilation requirements (this component is too non-standard to make much use of the shared makefiles)
- Makefile: comment out rules for objects that aren't used for any targets, for clarity; auto-create empty directories and don't clean files that are never created
- Various: change to using OS-agnostic filename path syntax
- Various: ensure case matches for filename paths (don't assume host filing system is case-agnostic)
- Remove empty directories and have the Makefiles create them
- Consolidate and complete .gitignore
- Enable GitLab CI, and address the warnings generated (apart from any relating to cppcheck)
- Enable GitLab CD for stubs (used implicitly when linker is invoked by cc)
All phases are now supported for cross-compilation, but it has not yet been tested end-to-end in a ROM build. However, many of the build tools rely on data structures defined in kernel.h
in their internal OS abstraction, so this MR is required in order to build their cross-compilation variants. Perversely, this makes this a high priority component! Fortunately, since it uses a separate GNUmakefile, it's very low risk to native builds.