diff --git a/include/overlay-feed/helpers.mk b/include/overlay-feed/helpers.mk new file mode 100644 index 0000000000..6f894f32d2 --- /dev/null +++ b/include/overlay-feed/helpers.mk @@ -0,0 +1,22 @@ +define rewrite +$(eval $(3) define $(1) +$(2) +endef) +endef + +define prepend +$(call rewrite,$(1),$(2)$(value $(1)),$(3)) +endef + +define append +$(call rewrite,$(1),$(value $(1))$(2),$(3)) +endef + +define remove +$(call rewrite,$(1),$(filter-out $(2),$(value $(1))),$(3)) +endef + +define newline + + +endef diff --git a/include/overlay-feed/package.mk b/include/overlay-feed/package.mk new file mode 100644 index 0000000000..8b1478609c --- /dev/null +++ b/include/overlay-feed/package.mk @@ -0,0 +1,27 @@ +include $(INCLUDE_DIR)/overlay-feed/helpers.mk + +# All patches which paths added into OVERLAY_PATCHES +# will be applied on package build dir after Prepare step +# of main package +OVERLAY_PATCHES ?= + +define Overlay/Prepare/Patch + $(foreach pf,$(filter %.patch,$(OVERLAY_PATCHES)), \ + patch -d "$(PKG_BUILD_DIR)" -p1 < $(pf) $$(newline) \ + ) +endef +Hooks/Prepare/Post += Overlay/Prepare/Patch + +OVERLAY_MAKEFILE_APPENDS := $(foreach feed,$(shell $(TOPDIR)/scripts/feeds list -n 2>/dev/null),$(shell find -L $(TOPDIR)/feeds/$(feed)/ -path '*/$(PKG_DIR_NAME)/Makefile.append' | sort)) +PKG_FILE_DEPENDS += $(foreach mk,$(OVERLAY_MAKEFILE_APPENDS), $(dir $(mk))) + +define Build/IncludeOverlay + # Clean out Build/IncludeOverlay to prevent recursive expansion + $(eval Build/IncludeOverlay=) + $(foreach mk,$(OVERLAY_MAKEFILE_APPENDS), \ + $(eval THISDIR := $(dir $(mk))) \ + $(eval -include $(mk)) \ + ) +endef + +$(call prepend,BuildPackage,$$(Build/IncludeOverlay)$(newline)) diff --git a/include/package.mk b/include/package.mk index 7fbecf98dc..c906d5523c 100644 --- a/include/package.mk +++ b/include/package.mk @@ -379,3 +379,5 @@ dist: distcheck: $(Build/DistCheck) + +include $(INCLUDE_DIR)/overlay-feed/package.mk