diff options
Diffstat (limited to 'solenv/gbuild/Package.mk')
-rw-r--r-- | solenv/gbuild/Package.mk | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/solenv/gbuild/Package.mk b/solenv/gbuild/Package.mk index c8fd57521f00..611373d81e6f 100644 --- a/solenv/gbuild/Package.mk +++ b/solenv/gbuild/Package.mk @@ -29,14 +29,23 @@ # PackagePart class -$(foreach destination,$(call gb_PackagePart_get_destinations), $(destination)/%/) : - mkdir -p $@ +# a pattern rule with multiple targets is actually executed only once for each +# match, so define only pattern rules with one target here +# the .dir is for make 3.81, which ignores trailing / +define gb_PackagePart__rule +$(1)/.dir : + $$(if $$(realpath $$(dir $$@)),,mkdir -p $$(dir $$@)) +$(1)/%/.dir : + $$(if $$(realpath $$(dir $$@)),,mkdir -p $$(dir $$@)) +$(1)/% : + $$(call gb_Deliver_deliver,$$<,$$@) +endef -$(foreach destination,$(call gb_PackagePart_get_destinations), $(destination)/%) : - $(call gb_Deliver_deliver,$<,$@) +$(foreach destination,$(call gb_PackagePart_get_destinations),$(eval \ + $(call gb_PackagePart__rule,$(destination)))) define gb_PackagePart_PackagePart -$(OUTDIR)/$(1) : $(2) | $(dir $(OUTDIR)/$(1)) +$(OUTDIR)/$(1) : $(2) | $(dir $(OUTDIR)/$(1)).dir $(2) :| $(3) $(call gb_Deliver_add_deliverable,$(OUTDIR)/$(1),$(2),$(3)) endef |