Makefile: rework main directory creation logic
authorThomas Petazzoni <thomas.petazzoni@bootlin.com>
Fri, 23 Nov 2018 14:58:08 +0000 (15:58 +0100)
committerPeter Korsgaard <peter@korsgaard.com>
Mon, 26 Nov 2018 18:09:46 +0000 (19:09 +0100)
commitd0f4f95e390bcb1c953efa125f5277a8a235396e
tree74447f3951281bc5ee16d24eda7abe5b23cdf287
parenteeb6341410b5168f97d4ed747c9537244477ec42
Makefile: rework main directory creation logic

In the current code, the creation of the main output directories
(BUILD_DIR, STAGING_DIR, HOST_DIR, TARGET_DIR, etc.) is done by a
global "dirs" target. While this works fine in the current situation,
it doesn't work well in a context where per-package host and target
directories are used.

For example, with the current code and per-package host directories,
the output/staging symbolic link ends up being created as a link to
the per-package package sysroot directory of the first package being
built, instead of the global sysroot.

This commit reworks the creation of those directories by having the
package/pkg-generic.mk code ensure that the build directory, target
directory, host directory, staging directory and binaries directory
exist before they are needed.

Two new targets, host-finalize and staging-finalize are added in the
main Makefile to create the compatibility symlinks for host and
staging directories. They will be extended later with additional logic
for per-package directories.

Thanks to those changes, the global "dirs" target is entirely removed.

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Makefile
fs/common.mk
package/pkg-generic.mk