diff options
-rw-r--r-- | solenv/gbuild/ComponentsTarget.mk | 77 | ||||
-rw-r--r-- | solenv/gbuild/TargetLocations.mk | 2 | ||||
-rw-r--r-- | solenv/gbuild/gbuild.mk | 1 |
3 files changed, 80 insertions, 0 deletions
diff --git a/solenv/gbuild/ComponentsTarget.mk b/solenv/gbuild/ComponentsTarget.mk new file mode 100644 index 000000000000..686a7eea966c --- /dev/null +++ b/solenv/gbuild/ComponentsTarget.mk @@ -0,0 +1,77 @@ +# +# Version: MPL 1.1 / GPLv3+ / LGPLv3+ +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License or as specified alternatively below. You may obtain a copy of +# the License at http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# Major Contributor(s): +# [ Copyright (C) 2011 Stephan Bergmann, Red Hat <sbergman@redhat.com> (initial +# developer) ] +# +# All Rights Reserved. +# +# For minor contributions see the git repository. +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 3 or later (the "GPLv3+"), or +# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), +# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable +# instead of those above. +# + +# Create a .components file bundling multiple .component files: + +# $(1): ID of this components entity (a relative pathname without ".components" +# extension) +define gb_ComponentsTarget_ComponentsTarget +$(call gb_ComponentsTarget_get_target,$(1)): \ + $(call gb_ComponentsTarget_get_target,$(1)).input +$(call gb_ComponentsTarget_get_target,$(1)).input: COMPONENTFILES := +$(eval $(call gb_Module_register_target,$(call gb_ComponentsTarget_get_target,$(1)),$(call gb_ComponentsTarget_get_clean_target,$(1)))) + +endef + +# $(1): ID of this components entity +# $(2): absolute .component pathname (must be underneath $(WORKDIR) due to the +# --stringparam prefix approach of $(SOLARENV)/bin/packcomponents.xslt) +define gb_ComponentsTarget_add_componentfile +$(call gb_ComponentsTarget_get_target,$(1)): $(2) +$(call gb_ComponentsTarget_get_target,$(1)).input: COMPONENTFILES += $(2) + +endef + +$(call gb_ComponentsTarget_get_target,%): \ + $(call gb_ComponentsTarget_get_target,%).input + $(call gb_Output_announce,$*,$(true),CPS,1) + $(call gb_Helper_abbreviate_dirs_native, \ + mkdir -p $(dir $@)) + $(call gb_Helper_abbreviate_dirs_native, \ + $(gb_XSLTPROC) --nonet --stringparam prefix $(WORKDIR) -o $@ \ + $(SOLARENV)/bin/packcomponents.xslt $@.input) + +$(call gb_ComponentsTarget_get_clean_target,%): \ + $(call gb_ComponentsTarget_get_clean_target,%).input + $(call gb_Output_announce,$*,$(false),CPS,1) + $(call gb_Helper_abbreviate_dirs_native, \ + rm -f $(call gb_ComponentsTarget_get_target,$*)) + +$(call gb_ComponentsTarget_get_target,%).input: + $(call gb_Output_announce,$*,$(true),CPI,1) + $(call gb_Helper_abbreviate_dirs_native, \ + mkdir -p $(dir $@)) + $(call gb_Helper_abbreviate_dirs_native, \ + printf '<list>%s</list>' \ + "$(foreach i,$(COMPONENTFILES),<filename>$(subst $(WORKDIR),,$i)</filename>)" \ + > $@) + +$(call gb_ComponentsTarget_get_clean_target,%).input: + $(call gb_Output_announce,$*,$(false),CPI,1) + $(call gb_Helper_abbreviate_dirs_native, \ + rm -f $(call gb_ComponentsTarget_get_target,$*).input) diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk index 9205d444c868..fe907b170ce3 100644 --- a/solenv/gbuild/TargetLocations.mk +++ b/solenv/gbuild/TargetLocations.mk @@ -72,6 +72,7 @@ gb_CObject_get_target = $(WORKDIR)/CObject/$(1).o gb_GenCObject_get_target = $(WORKDIR)/GenCObject/$(1).o gb_ComponentTarget_get_target = $(WORKDIR)/ComponentTarget/$(1).component gb_ComponentTarget_get_inbuild_target = $(WORKDIR)/ComponentTarget/$(1).inbuild.component +gb_ComponentsTarget_get_target = $(WORKDIR)/ComponentsTarget/$(1).components gb_CppunitTest_get_target = $(WORKDIR)/CppunitTest/$(1).test gb_CustomTarget_get_repo_target = $(WORKDIR)/CustomTarget/$(2)_$(1).done gb_CustomTarget_get_target = $(WORKDIR)/CustomTarget/$(1).done @@ -155,6 +156,7 @@ endef $(eval $(call gb_Helper_make_clean_targets,\ AllLangResTarget \ ComponentTarget \ + ComponentsTarget \ Extension \ JavaClassSet \ Jar \ diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk index 7daaa918806b..530fd9f646d1 100644 --- a/solenv/gbuild/gbuild.mk +++ b/solenv/gbuild/gbuild.mk @@ -309,6 +309,7 @@ include $(SOLARENV)/inc/minor.mk include $(foreach class, \ ComponentTarget \ + ComponentsTarget \ AllLangResTarget \ WinResTarget \ LinkTarget \ |