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 on tools
    • 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 ACRN devicemodel would simply require the acrn-manager development package to be installed on the system.
  • 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.

References and Articles

Existing tickets