ACRN Build System - projectacrn/acrn-hypervisor GitHub Wiki
Introduction
ACRN uses a number of Makefile in order to build its various components, such as the hypervisor, devicemodel and the tools. While this does the job, this collection of Makefiles, how they are organized and inter-dependent is not optimal and it makes packaging ACRN more cumbersome than it should. The objective of this page is to describe a number of ideas or opinions on how it could all be improved.
Bin list of ideas and opinions
- Avoid recursive make (and use
includeinstead, see Recursive Make Considered Harmful) - Allow for each component to be built individually
- Remove the
devicemodeldependency ontools- The ACRN Device Model only needs a header file from the
acrn-manager, we do not need to build the entire set of tools for that. On a system where ACRN is packaged correctly, building the ACRNdevicemodelwould simply require theacrn-managerdevelopment package to be installed on the system.
- The ACRN Device Model only needs a header file from the
- Do not build
life_mngrby default: it's only used in a User VM. - Split the building of
life_mngrinto two components: one for Linux Guest OS and one for Windows Guest OS
There are also lost of good thoughts (and code) in this Github ticket: [RFC] Add Debian packaging for release_1.6, release_2.0 and master
Open questions
- Should we look for a more advanced build system? A few exist today such as
autotool,cmake,meson,ninja,westand others that I am missing.