diff options
author | Michael Stahl <mstahl@redhat.com> | 2012-05-16 19:55:09 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2012-05-16 23:58:44 +0200 |
commit | 236055746ffe92ce3b2a7a9316b1083da046deb9 (patch) | |
tree | 03413d6b3b2f553ec67cbaeb5a8c4854b599fb53 /solenv | |
parent | 6cdc3b9ceb13954f82026d851ab4ca88a706cb84 (diff) |
further spurious dep-file rebuild fixes:
With the way dep-file generation was changed for LinkTargets in
8b5a984d45005d3df1c89eae897d6e04612625d8, it is necessary to change all
other dep-file generation the same way, because the LinkTarget dep-files
are outdated wrt. the object dep-files after an initial make run, and
hence if any other dep-file depends in any way (even build-order) on a
generated Executable, say by depending on the corresponding target file,
then the PHONY entries in the outdated LinkTarget dep-files for the
executable and its linked libraries cause all these objects to be
recompiled.
It is not a problem that there is a rule with the dep-file as target,
and another rule for the corresponding actual target that writes the
dep-file as a side-effect, without dependecy between the targets:
because make does processing in 2 phases, first building all included
makefiles, second all other targets, it is guaranteed that the 2
commands don't race to overwrite the dep-file because (when there is no
dependency between them) they will not be executed in the same phase.
The only problem here is that this will probably make IDL processing a
lot slower on Windows, writing all those dummy dep-files.
Diffstat (limited to 'solenv')
-rw-r--r-- | solenv/gbuild/AllLangResTarget.mk | 10 | ||||
-rw-r--r-- | solenv/gbuild/LinkTarget.mk | 5 | ||||
-rw-r--r-- | solenv/gbuild/SdiTarget.mk | 3 | ||||
-rw-r--r-- | solenv/gbuild/UnoApiTarget.mk | 4 | ||||
-rw-r--r-- | solenv/gbuild/WinResTarget.mk | 7 |
5 files changed, 6 insertions, 23 deletions
diff --git a/solenv/gbuild/AllLangResTarget.mk b/solenv/gbuild/AllLangResTarget.mk index 10a4bcbb85af..fbbcea56f1a1 100644 --- a/solenv/gbuild/AllLangResTarget.mk +++ b/solenv/gbuild/AllLangResTarget.mk @@ -100,9 +100,6 @@ $(call gb_SrsPartTarget_get_dep_target,%) : $(SRCDIR)/% $(gb_Helper_MISCDUMMY) $(call gb_Helper_abbreviate_dirs,\ mkdir -p $(dir $@) && \ echo '$(call gb_SrsPartTarget_get_target,$*) : $(gb_Helper_PHONY)' > $@) - -$(call gb_SrsPartTarget_get_dep_target,%) : - $(eval $(call gb_Output_error,Unable to find resource definition file $* in repositories: $(gb_SrsPartTarget_REPOS))) endif @@ -237,7 +234,6 @@ $(call gb_SrsTarget_get_external_headers_target,%) : mkdir -p $(dir $@) && touch $@) $(call gb_SrsTarget_get_target,%) : - $(call gb_SrsTarget__command_dep,$(call gb_SrsTarget_get_dep_target,$*),$*,$(foreach part,$(PARTS),$(call gb_SrsPartTarget_get_dep_target,$(part)))) $(call gb_Output_announce,$*,$(true),SRS,1) $(call gb_Helper_abbreviate_dirs,\ mkdir -p $(dir $@) && \ @@ -257,11 +253,7 @@ $(call gb_SrsTarget_get_target,$(1)) : PARTS := $(call gb_SrsTarget_get_target,$(1)) : $(call gb_SrsTemplateTarget_get_target,$(1)) $(call gb_SrsTarget_get_clean_target,$(1)) : $(call gb_SrsTemplateTarget_get_clean_target,$(1)) ifeq ($(gb_FULLDEPS),$(true)) -ifneq ($(wildcard $(call gb_SrsTarget_get_dep_target,$(1))),) -include $(call gb_SrsTarget_get_dep_target,$(1)) -else -$(firstword $(MAKEFILE_LIST)) : $(call gb_SrsTarget_get_dep_target,$(1)) -endif +-include $(call gb_SrsTarget_get_dep_target,$(1)) endif endef diff --git a/solenv/gbuild/LinkTarget.mk b/solenv/gbuild/LinkTarget.mk index 05b947ebecf6..1854aa4eb506 100644 --- a/solenv/gbuild/LinkTarget.mk +++ b/solenv/gbuild/LinkTarget.mk @@ -253,7 +253,7 @@ $(call gb_ObjCxxObject_get_target,%) : $(call gb_ObjCxxObject_get_source,$(SRCDI $(call gb_ObjCxxObject__command,$@,$*,$<,$(call gb_ObjCxxObject_get_dep_target,$*)) ifeq ($(gb_FULLDEPS),$(true)) -$(call gb_ObjCxxObject_get_dep_target,%) : $(call gb_ObjCxxObject_get_target,%) +$(call gb_ObjCxxObject_get_dep_target,%) : $(if $(wildcard $@),touch $@,\ $(call gb_Object__command_dep,$@,$(call gb_ObjCxxObject_get_target,$*))) @@ -271,7 +271,7 @@ $(call gb_ObjCObject_get_target,%) : $(call gb_ObjCObject_get_source,$(SRCDIR),% $(call gb_ObjCObject__command,$@,$*,$<,$(call gb_ObjCObject_get_dep_target,$*)) ifeq ($(gb_FULLDEPS),$(true)) -$(call gb_ObjCObject_get_dep_target,%) : $(call gb_ObjCObject_get_target,%) +$(call gb_ObjCObject_get_dep_target,%) : $(if $(wildcard $@),touch $@,\ $(call gb_Object__command_dep,$@,$(call gb_ObjCObject_get_target,$*))) @@ -374,7 +374,6 @@ $(call gb_LinkTarget_get_target,%) : $(call gb_LinkTarget_get_headers_target,%) $(call gb_LinkTarget__command_objectlist,$@,$*) ifeq ($(gb_FULLDEPS),$(true)) -$(call gb_LinkTarget_get_target,%) : | $(call gb_LinkTarget_get_dep_target,%) $(call gb_LinkTarget_get_dep_target,%) : $(call gb_LinkTarget__command_dep,$@,$*,$(COBJECTS),$(CXXOBJECTS),$(OBJCOBJECTS),$(OBJCXXOBJECTS),$(ASMOBJECTS),$(GENCOBJECTS),$(GENCXXOBJECTS)) endif diff --git a/solenv/gbuild/SdiTarget.mk b/solenv/gbuild/SdiTarget.mk index 7f414363eacb..c71c2d6ecfe3 100644 --- a/solenv/gbuild/SdiTarget.mk +++ b/solenv/gbuild/SdiTarget.mk @@ -53,10 +53,9 @@ $(call gb_SdiTarget_get_target,%) : $(SRCDIR)/%.sdi | $(gb_SdiTarget_SVIDLTARGET $<) ifeq ($(gb_FULLDEPS),$(true)) -$(call gb_SdiTarget_get_dep_target,%) : $(call gb_SdiTarget_get_target,%) +$(call gb_SdiTarget_get_dep_target,%) : $(if $(wildcard $@),touch $@,\ $(call gb_Object__command_dep,$@,$(call gb_SdiTarget_get_target,$*))) - endif .PHONY : $(call gb_SdiTarget_get_clean_target,%) diff --git a/solenv/gbuild/UnoApiTarget.mk b/solenv/gbuild/UnoApiTarget.mk index 5742f94058cb..03f350cd71d5 100644 --- a/solenv/gbuild/UnoApiTarget.mk +++ b/solenv/gbuild/UnoApiTarget.mk @@ -160,7 +160,7 @@ endef ifeq ($(gb_FULLDEPS),$(true)) -$(call gb_UnoApiTarget_get_dep_target,%) : $(call gb_UnoApiTarget_get_target,%) +$(call gb_UnoApiTarget_get_dep_target,%) : $(call gb_UnoApiTarget__command_dep,$@,$*,$(UNOAPI_IDLFILES)) endif @@ -197,8 +197,6 @@ ifeq ($(gb_FULLDEPS),$(true)) $(call gb_UnoApiTarget_get_dep_target,$(1)) : UNOAPI_IDLFILES += $(2)/$(3).idl $(call gb_UnoApiTarget_get_dep_target,$(1)) : \ $(call gb_UnoApiPartTarget_get_dep_target,$(2)/$(3)) -$(call gb_UnoApiPartTarget_get_dep_target,$(2)/$(3)) : \ - $(call gb_UnoApiPartTarget_get_target,$(2)/idl.done) endif endef diff --git a/solenv/gbuild/WinResTarget.mk b/solenv/gbuild/WinResTarget.mk index 563a74f5bb77..b3c5b68126bc 100644 --- a/solenv/gbuild/WinResTarget.mk +++ b/solenv/gbuild/WinResTarget.mk @@ -16,12 +16,7 @@ $(call gb_WinResTarget_get_target,$(1)) : INCLUDE := $(SOLARINC) $(call gb_WinResTarget_get_clean_target,$(1)) : RCFILE := $(call gb_WinResTarget_get_target,$(1)) : RCFILE := ifeq ($(gb_FULLDEPS),$(true)) -$(call gb_WinResTarget_get_target,$(1)) : $(call gb_WinResTarget_get_dep_target,$(1)) -ifneq ($(wildcard $(call gb_WinResTarget_get_dep_target,$(1))),) -include $(call gb_WinResTarget_get_dep_target,$(1)) -else -$(firstword $(MAKEFILE_LIST)) : $(call gb_WinResTarget_get_dep_target,$(1)) -endif +-include $(call gb_WinResTarget_get_dep_target,$(1)) $(call gb_WinResTarget_get_dep_target,$(1)) : DEFS := $$(gb_WinResTarget_DEFAULTDEFS) $(call gb_WinResTarget_get_dep_target,$(1)) : INCLUDE := $$(gb_WinResTarget_INCLUDE) $(call gb_WinResTarget_get_dep_target,$(1)) : RCFILE := |