Complete build systems revised
Following #61 (closed), #69 (closed), internal discussions, DI/OT developers meeting #1 and the previous MR !89 (merged), in this MR I present notable improvements to the remaining build infrastructure of the DI/OT System Board boot image repository.
General:
- All build systems are now granular and incremental
- For consistency with !89 (merged), the build systems now contain the cleaning rules:
clean
,mrproper
anddistclean
. - Removed reference to absolute paths (variable
OUTPUT_DIR
) in favor of relative pathsPRJ_BUILD_DIR
andBUILD_DIR
- All build systems now build to a self-titled subfolder inside the build directory (behavior already present on the gateware subproject)
- All build systems track the output artifacts, opposed to relying on phony targets
- Extensive use of sentinel files to track repository cloning and several stages of project compilation
- Removed BASH_CMD variable
- General cleanup and improvement of the make systems
ATF:
- Use of sentinels to track the cloning of Xillinx ATF repository
- Proper tracking of output artifact
EmbeddedSW:
- Proper tracking of incoming XSA artifact and output FSBL and PMUFW artifacts
- Use of sentinels to track the cloning of Xilinx EmbeddedSW repository
- When XSA is not present, it now triggers gateware generation
- Tracking of FSBL/PMUFW source files for out-of-date compilation detection
- 'Smart' analysis of patch files for both FSBL and PMUFW to resolve files to be patched
- Use of sentinels to track whether sources are in need of patching
- Use of git to reset source files for repatching, if needed
U-boot:
- Proper tracking of source files and DIOT-specific configurations
- Use of sentinels to track the cloning of Xilinx U-boot repository
- 'Smart' analysis of patch files to resolve files to be patched
- Use of sentinels to track whether sources are in need of patching
- Use of git to reset source files for repatching, if needed
- Interface with the internal U-boot build system rules using the top level rules
uboot-*
- Slightly modified duplicate copy of the Xillinx device-tree
Makefile
was converted into adiff
patch
Bootbin:
- Proper tracking of incoming artifacts and their dependability on the output artifact
- Capable of calling build system of non-existing incoming artifacts
- Capable of being prompted to call all build system (
FORCE
flag), even if targets exist (useful for checking if any source of any incoming target was updated) - All artifacts and targets now reside inside a project build folder
Devicetree:
- Proper tracking of incoming XSA artifact and output device tree artifacts
- When XSA is not present, it now triggers gateware generation
- Use of sentinels on cloning Xilinx device tree repository
- Use of sentinels to track the creation of output device tree artifacts
- All the sources from Xilinx repository and DIOT specifics files are now tracked
CI:
- Bootbin target paths were properly changed to accommodate the change of bootbin target folder
Edited by Andre Pinho