Files
acrn-hypervisor/Makefile
Geoffroy Van Cutsem 975484a304 Fix the logic that sets the top-level build directory
The 'ROOT_OUT' variable does not allow to set the folder in
which all output files (objects, binaries, etc.) are built
and placed.

Overriding it from the command-line leads to 'build' folders
of the name set that are created in the tree eventually leading
to a failure during the build. This patch changes how the
output directory is constructed so that *all* output files
are put in there. It introduces a new variable called
'BUILD_DIR' to that effect.

It also incidentally fix the fact that 'make clean' only removes
that output directory which means it does not properly clean up
the tree if one overrides the 'ROOT_OUT' variable manually today.

To change where the build artefacts are placed, set 'BUILD_DIR'
to whatever you want, e.g.:
   $ make BUILD_DIR=build-test
Will create a top-level folder called 'build-test' where everything
will be put. 'make clean' will remove it (if called with the same
argument)

Signed-off-by: Geoffroy Van Cutsem <geoffroy.vancutsem@intel.com>
2018-05-22 16:42:05 +08:00

48 lines
1.3 KiB
Makefile

# global helper variables
T := $(CURDIR)
PLATFORM ?= uefi
RELEASE ?= 0
BUILD_DIR := build
ROOT_OUT := $(T)/$(BUILD_DIR)
HV_OUT := $(ROOT_OUT)/hypervisor
DM_OUT := $(ROOT_OUT)/devicemodel
TOOLS_OUT := $(ROOT_OUT)/tools
.PHONY: all hypervisor devicemodel tools
all: hypervisor devicemodel tools
hypervisor:
make -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT) PLATFORM=$(PLATFORM) RELEASE=$(RELEASE) clean
make -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT) PLATFORM=$(PLATFORM) RELEASE=$(RELEASE)
devicemodel:
make -C $(T)/devicemodel DM_OBJDIR=$(DM_OUT) clean
make -C $(T)/devicemodel DM_OBJDIR=$(DM_OUT)
tools:
mkdir -p $(TOOLS_OUT)
make -C $(T)/tools/acrnlog OUT_DIR=$(TOOLS_OUT)
make -C $(T)/tools/acrn-manager OUT_DIR=$(TOOLS_OUT)
make -C $(T)/tools/acrntrace OUT_DIR=$(TOOLS_OUT)
.PHONY: clean
clean:
rm -rf $(ROOT_OUT)
.PHONY: install
install: hypervisor-install devicemodel-install tools-install
hypervisor-install:
make -C $(T)/hypervisor HV_OBJDIR=$(HV_OUT) PLATFORM=$(PLATFORM) RELEASE=$(RELEASE) install
devicemodel-install:
make -C $(T)/devicemodel DM_OBJDIR=$(DM_OUT) install
tools-install:
make -C $(T)/tools/acrnlog OUT_DIR=$(TOOLS_OUT) install
make -C $(T)/tools/acrn-manager OUT_DIR=$(TOOLS_OUT) install
make -C $(T)/tools/acrntrace OUT_DIR=$(TOOLS_OUT) install