diff options
author | Michael Stahl <mstahl@redhat.com> | 2012-03-08 09:55:50 +0100 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2012-03-08 10:01:48 +0100 |
commit | 294b86e3dbbdb9b136cb17a51687f4e2762711cf (patch) | |
tree | 510d4355bdc4825d4b7e6ea5a1a102bdbd410fc3 /solenv/gbuild/Configuration.mk | |
parent | sdext: Configuration: use nodeliver mode (diff) | |
download | core-294b86e3dbbdb9b136cb17a51687f4e2762711cf.tar.gz core-294b86e3dbbdb9b136cb17a51687f4e2762711cf.zip |
gbuild: fix mkdir optimization with make 3.81
The problem is that make 3.81 does not match pattern rules whose target
ends with '/' against directories.
(regression from 408822b54724f8170a1296ddd67e50d8291c8ee1,
90491a073c5b5faee782ad5eab63276fda2342e6)
So use a fake file ".dir" in the respective directory, and try not to
spawn unnecessary mkdir processes by checking for existence via realpath.
This is all quite ugly and should be reverted once support for make 3.81
is dropped.
Also, fix a pre-existing problem of pattern rules with multiple targets
that used to work by accident in Package.mk.
Diffstat (limited to 'solenv/gbuild/Configuration.mk')
-rw-r--r-- | solenv/gbuild/Configuration.mk | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/solenv/gbuild/Configuration.mk b/solenv/gbuild/Configuration.mk index c16bc1306d5e..ffced850a4e6 100644 --- a/solenv/gbuild/Configuration.mk +++ b/solenv/gbuild/Configuration.mk @@ -101,8 +101,11 @@ $(call gb_XcsTarget_get_clean_target,%) : rm -f $(call gb_XcsTarget_get_target,$*) \ $(call gb_XcsTarget_get_outdir_target,$(XCSFILE))) -$(call gb_XcsTarget_get_outdir_target,%/) : - mkdir -p $@ +# the .dir is for make 3.81, which ignores trailing / +$(dir $(call gb_XcsTarget_get_outdir_target,%))%/.dir : + $(if $(realpath $(dir $@)),,mkdir -p $(dir $@)) +$(dir $(call gb_XcsTarget_get_outdir_target,%)).dir : + $(if $(realpath $(dir $@)),,mkdir -p $(dir $@)) $(call gb_XcsTarget_get_outdir_target,%) : $(call gb_Helper_abbreviate_dirs,\ @@ -145,8 +148,11 @@ $(call gb_XcuDataTarget_get_clean_target,%) : rm -f $(call gb_XcuDataTarget_get_target,$*) \ $(call gb_XcuDataTarget_get_outdir_target,$(XCUFILE))) -$(call gb_XcuDataTarget_get_outdir_target,%/) : - mkdir -p $@ +# the .dir is for make 3.81, which ignores trailing / +$(dir $(call gb_XcuDataTarget_get_outdir_target,))%/.dir : + $(if $(realpath $(dir $@)),,mkdir -p $(dir $@)) +$(dir $(call gb_XcuDataTarget_get_outdir_target,)).dir : + $(if $(realpath $(dir $@)),,mkdir -p $(dir $@)) $(call gb_XcuDataTarget_get_outdir_target,%) : $(call gb_Helper_abbreviate_dirs,\ @@ -185,8 +191,9 @@ $(call gb_XcuModuleTarget_get_clean_target,%) : rm -f $(call gb_XcuModuleTarget_get_target,$*) \ $(call gb_XcuModuleTarget_get_outdir_target,$(XCUFILE))) -$(call gb_XcuModuleTarget_get_outdir_target,%/) : - mkdir -p $@ +# the .dir is for make 3.81, which ignores trailing / +$(dir $(call gb_XcuModuleTarget_get_outdir_target,))%/.dir : + $(if $(realpath $(dir $@)),,mkdir -p $(dir $@)) $(call gb_XcuModuleTarget_get_outdir_target,%) : $(call gb_Helper_abbreviate_dirs,\ @@ -223,8 +230,11 @@ $(call gb_XcuLangpackTarget_get_clean_target,%) : $(call gb_XcuLangpackTarget__get_target_with_lang,$*,$(lang)) \ $(call gb_XcuLangpackTarget__get_outdir_target_with_lang,$(XCUFILE),$(lang)))) -$(call gb_XcuLangpackTarget_get_outdir_target,%/) : - mkdir -p $@ +# the .dir is for make 3.81, which ignores trailing / +$(dir $(call gb_XcuLangpackTarget_get_outdir_target,))%/.dir : + $(if $(realpath $(dir $@)),,mkdir -p $(dir $@)) +$(dir $(call gb_XcuLangpackTarget_get_outdir_target,)).dir : + $(if $(realpath $(dir $@)),,mkdir -p $(dir $@)) $(call gb_XcuLangpackTarget_get_outdir_target,%) : $(call gb_Helper_abbreviate_dirs,\ @@ -356,7 +366,7 @@ $(call gb_Configuration_get_target,$(1)) : \ $(call gb_XcsTarget_get_outdir_target,$(3)) $(call gb_XcsTarget_get_outdir_target,$(3)) : \ $(call gb_XcsTarget_get_target,$(2)/$(3)) \ - | $(dir $(call gb_XcsTarget_get_outdir_target,$(3))) + | $(dir $(call gb_XcsTarget_get_outdir_target,$(3))).dir $(call gb_Deliver_add_deliverable,$(call gb_XcsTarget_get_outdir_target,$(3)),\ $(call gb_XcsTarget_get_target,$(2)/$(3)),$(2)/$(3)) @@ -382,7 +392,7 @@ $(call gb_Configuration_get_target,$(1)) : \ $(call gb_XcuDataTarget_get_outdir_target,$(3)) $(call gb_XcuDataTarget_get_outdir_target,$(3)) : \ $(call gb_XcuDataTarget_get_target,$(2)/$(3)) \ - | $(dir $(call gb_XcuDataTarget_get_outdir_target,$(3))) + | $(dir $(call gb_XcuDataTarget_get_outdir_target,$(3))).dir $(call gb_Deliver_add_deliverable,\ $(call gb_XcuDataTarget_get_outdir_target,$(3)),\ $(call gb_XcuDataTarget_get_target,$(2)/$(3)),\ @@ -413,7 +423,7 @@ $(call gb_Configuration_get_target,$(1)) : \ $(call gb_XcuModuleTarget_get_outdir_target,$(3)) $(call gb_XcuModuleTarget_get_outdir_target,$(3)) : \ $(call gb_XcuModuleTarget_get_target,$(2)/$(3)) \ - | $(dir $(call gb_XcuModuleTarget_get_outdir_target,$(3))) + | $(dir $(call gb_XcuModuleTarget_get_outdir_target,$(3))).dir $(call gb_Deliver_add_deliverable,\ $(call gb_XcuModuleTarget_get_outdir_target,$(3)),\ $(call gb_XcuModuleTarget_get_target,$(2)/$(3)),\ @@ -444,7 +454,7 @@ $(call gb_XcuLangpackTarget_get_clean_target,$(2)/$(3)) : XCUFILE := $(3) $(call gb_XcuLangpackTarget__get_target_with_lang,$(2)/$(3),$(4)) : LANG := $(4) $(call gb_XcuLangpackTarget__get_outdir_target_with_lang,$(3),$(4)) : \ $(call gb_XcuLangpackTarget__get_target_with_lang,$(2)/$(3),$(4)) \ - | $(dir $(call gb_XcuLangpackTarget__get_outdir_target_with_lang,$(3),$(4))) + | $(dir $(call gb_XcuLangpackTarget__get_outdir_target_with_lang,$(3),$(4))).dir $(call gb_Deliver_add_deliverable,\ $(call gb_XcuLangpackTarget__get_outdir_target_with_lang,$(3),$(4)),\ $(call gb_XcuLangpackTarget__get_target_with_lang,$(2)/$(3),$(4)),\ |