[Buildroot] [RFC, PATCH] Separate target-building make targets from image-building make targets
Jeremy Kerr
jk at ozlabs.org
Thu Jul 3 03:56:54 UTC 2014
Currently, it's not possible to have dependencies from an image-building
target to a rootfs-building target.
For example, the boot-wrapper-aarch64 package uses the kernel build as
an input file. It supplies a dependency on 'linux', but this will break
if we're using BR2_TARGET_ROOTFS_INITRAMFS - the wrapper will include
the first kernel build, not the rebuild (which contains the embedded
initramfs).
This means we'd need to express a dependency from the target build to
the image build. However, if we do something like:
-BOOT_WRAPPER_AARCH64_DEPENDENCIES = linux
+BOOT_WRAPPER_AARCH64_DEPENDENCIES = linux26-rebuild-with-initramfs
- then we get a circular dependency, because boot-wrapper-aarch64 is in
the TARGETS list, which linux26-rebuild-with-initramfs depends on.
This change splits the possible targets into two separate lists,
TARGET_TARGETS (dependencies for building the target dir) and
IMAGE_TARGETS (dependencies for building images). We keep TARGETS as a
list of everything, and use TARGET_TARGETS for the rootfs-finalize
target.
Signed-off-by: Jeremy Kerr <jk at ozlabs.org>
---
Makefile | 6 ++++--
package/pkg-generic.mk | 8 ++++++++
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 0bf709f..708ab19 100644
--- a/Makefile
+++ b/Makefile
@@ -294,6 +294,8 @@ unexport TERMINFO
GNU_HOST_NAME := $(shell support/gnuconfig/config.guess)
TARGETS :=
+TARGET_TARGETS :=
+IMAGE_TARGETS :=
# silent mode requested?
QUIET := $(if $(findstring s,$(MAKEFLAGS)),-q)
@@ -531,7 +533,7 @@ endif
$(TARGETS_ROOTFS): target-finalize
-target-finalize: $(TARGETS)
+target-finalize: $(TARGET_TARGETS)
@$(call MESSAGE,"Finalizing target directory")
$(TARGET_PURGE_LOCALES)
rm -rf $(TARGET_DIR)/usr/include $(TARGET_DIR)/usr/share/aclocal \
@@ -624,7 +626,7 @@ target-generatelocales: host-localedef toolchain
done
endif
-target-post-image: $(TARGETS_ROOTFS) target-finalize
+target-post-image: $(TARGETS_ROOTFS) $(IMAGE_TARGETS) target-finalize
@$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT)), \
$(call MESSAGE,"Executing post-image script $(s)"); \
$(EXTRA_ENV) $(s) $(BINARIES_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep))
diff --git a/package/pkg-generic.mk b/package/pkg-generic.mk
index 32a9457..ede1656 100644
--- a/package/pkg-generic.mk
+++ b/package/pkg-generic.mk
@@ -681,6 +681,14 @@ endif
TARGETS += $(1)
+ifneq ($$($(2)_INSTALL_STAGING)$$($(2)_INSTALL_TARGET),NONO)
+TARGET_TARGETS += $(1)
+endif
+
+ifeq ($$($(2)_INSTALL_IMAGES),YES)
+IMAGE_TARGETS += $(1)
+endif
+
ifneq ($$($(2)_PERMISSIONS),)
PACKAGES_PERMISSIONS_TABLE += $$($(2)_PERMISSIONS)$$(sep)
endif
More information about the buildroot
mailing list