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
include
instead, see Recursive Make Considered Harmful) - Allow for each component to be built individually
- Remove the
devicemodel
dependency 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 ACRNdevicemodel
would simply require theacrn-manager
development package to be installed on the system.
- The ACRN Device Model only needs a header file from the
- Do not build
life_mngr
by default: it's only used in a User VM. - Split the building of
life_mngr
into 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
,west
and others that I am missing.