diff options
author | Bjoern Michaelsen <b_michaelsen@openoffice.org> | 2011-01-24 19:04:41 +0100 |
---|---|---|
committer | Bjoern Michaelsen <b_michaelsen@openoffice.org> | 2011-01-24 19:04:41 +0100 |
commit | e911af3d260cf34f746955476973d74552288ce7 (patch) | |
tree | cabc35af1b5ce2c4dfcffa735d8f95865bcd4475 /solenv | |
parent | a8461122535beb4e074c6fe4057aaaeee899b7de (diff) |
gnumake3: adding experimental support for CustomTargets
Diffstat (limited to 'solenv')
-rw-r--r-- | solenv/gbuild/CustomTarget.mk | 79 | ||||
-rw-r--r-- | solenv/gbuild/Package.mk | 20 | ||||
-rw-r--r-- | solenv/gbuild/TargetLocations.mk | 10 | ||||
-rw-r--r-- | solenv/gbuild/gbuild.mk | 3 |
4 files changed, 105 insertions, 7 deletions
diff --git a/solenv/gbuild/CustomTarget.mk b/solenv/gbuild/CustomTarget.mk new file mode 100644 index 000000000000..ca161d5e5f9f --- /dev/null +++ b/solenv/gbuild/CustomTarget.mk @@ -0,0 +1,79 @@ +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2000, 2010 Oracle and/or its affiliates. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# This file is part of OpenOffice.org. +# +# OpenOffice.org is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# only, as published by the Free Software Foundation. +# +# OpenOffice.org is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License version 3 for more details +# (a copy is included in the LICENSE file that accompanied this code). +# +# You should have received a copy of the GNU Lesser General Public License +# version 3 along with OpenOffice.org. If not, see +# <http://www.openoffice.org/license.html> +# for a copy of the LGPLv3 License. +# +#************************************************************************* + +gb_CustomTarget_REPOSITORYNAMES := $(gb_Helper_REPOSITORYNAMES) + +define gb_CustomTarget__command +$(call gb_Helper_abbreviate_dirs,\ + mkdir -p $(dir $(1)) && \ + $(MAKE) -C $(dir $(1)) -f $< && \ + touch $(1)) + +endef + +define gb_CustomTarget__rules +$$(call gb_CustomTarget_get_repo_target,$(1),%) : + $$(call gb_Output_announce,$$*,$$(true),MAK,3) + $$(call gb_CustomTarget__command,$$@) + +$$(call gb_CustomTarget_get_target,%) : $$(call gb_CustomTarget_get_repo_target,$(1),%) + $$(call gb_Helper_abbreviate_dirs,\ + touch $$@) + +endef + +$(call gb_CustomTarget_get_clean_target,%) : + $(call gb_Output_announce,$*,$(false),MAK,3) + $(call gb_Helper_abbreviate_dirs,\ + rm -rf $(dir $(call gb_CustomTarget_get_target,$*))) + + +$(foreach reponame,$(gb_CustomTarget_REPOSITORYNAMES),$(eval $(call gb_CustomTarget__rules,$(reponame)))) + +define gb_CustomTarget__get_makefile +$(1)/$(2)/Makefile +endef + +define gb_CustomTarget_CustomTarget +$(foreach reponame,$(gb_CustomTarget_REPOSITORYNAMES),\ + $(eval $(call gb_CustomTarget_get_repo_target,$(reponame),$(1)) : $(call gb_CustomTarget__get_makefile,$($(reponame)),$(1)))) + +endef + + +define gb_CustomTarget_add_dependency +$(foreach reponame,$(gb_CustomTarget_REPOSITORYNAMES),\ + $(eval $(call gb_CustomTarget_get_repo_target,$(reponame),$(1)) : $($(reponame))/$(2))) + +endef + +define gb_CustomTarget_add_dependencies +$(foreach dependency,$(2),$(call gb_CustomTarget_add_dependency,$(1),$(dependency))) + +endef + +# vim: set noet sw=4 ts=4: diff --git a/solenv/gbuild/Package.mk b/solenv/gbuild/Package.mk index 7ed91db48a06..2f5ac6f9fcba 100644 --- a/solenv/gbuild/Package.mk +++ b/solenv/gbuild/Package.mk @@ -32,7 +32,7 @@ $(foreach destination,$(call gb_PackagePart_get_destinations), $(destination)/%) $(call gb_Deliver_deliver,$<,$@) define gb_PackagePart_PackagePart -$(OUTDIR)/$(1) : $(2) +$(OUTDIR)/$(1) : $(2) $(3) $(call gb_Deliver_add_deliverable,$(OUTDIR)/$(1),$(2)) endef @@ -46,22 +46,34 @@ $(call gb_Package_get_clean_target,%) : -$(call gb_Helper_abbreviate_dirs,\ rm -f $(FILES)) +$(call gb_Package_get_preparation_target,%) : + $(call gb_Output_announce,$*,$(true),PKG,2) + mkdir -p $(dir $@) && touch $@ + $(call gb_Package_get_target,%) : $(call gb_Output_announce,$*,$(true),PKG,2) mkdir -p $(dir $@) && touch $@ + define gb_Package_Package gb_Package_SOURCEDIR_$(1) := $(2) -$(call gb_Package_get_clean_target,$(1)) : FILES := $(call gb_Package_get_target,$(1)) +$(call gb_Package_get_clean_target,$(1)) : FILES := $(call gb_Package_get_target,$(1)) $(call gb_Package_get_preparation_target,$(1)) $$(eval $$(call gb_Module_register_target,$(call gb_Package_get_target,$(1)),$(call gb_Package_get_clean_target,$(1)))) +$(call gb_Package_get_target,$(1)) : $(call gb_Package_get_preparation_target,$(1)) endef define gb_Package_add_file $(call gb_Package_get_target,$(1)) : $(OUTDIR)/$(2) $(call gb_Package_get_clean_target,$(1)) : FILES += $(OUTDIR)/$(2) -$(call gb_PackagePart_PackagePart,$(2),$$(gb_Package_SOURCEDIR_$(1))/$(3)) -$(OUTDIR)/$(2) : $$(gb_Package_SOURCEDIR_$(1))/$(3) +$(call gb_PackagePart_PackagePart,$(2),$$(gb_Package_SOURCEDIR_$(1))/$(3),$(call gb_Package_get_preparation_target,$(1))) + +endef + +define gb_Package_add_customtarget +$(call gb_Package_get_preparation_target,$(1)) : $(call gb_CustomTarget_get_target,$(2)) +$(call gb_Package_get_clean_target,$(1)) : $(call gb_CustomTarget_get_clean_target,$(2)) + endef # vim: set noet sw=4 ts=4: diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk index a661c3f68ba5..a38122ca1dce 100644 --- a/solenv/gbuild/TargetLocations.mk +++ b/solenv/gbuild/TargetLocations.mk @@ -48,15 +48,19 @@ endef gb_AllLangResTarget_get_target = $(WORKDIR)/AllLangRes/$(1) gb_CObject_get_target = $(WORKDIR)/CObject/$(1).o gb_ComponentTarget_get_target = $(WORKDIR)/ComponentTarget/$(1).component +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 +gb_CustomTarget_get_workdir = $(WORKDIR)/CustomTarget/$(1) gb_CxxObject_get_target = $(WORKDIR)/CxxObject/$(1).o gb_Executable_get_external_headers_target = $(WORKDIR)/ExternalHeaders/Executable/$(1) gb_Executable_get_headers_target = $(WORKDIR)/Headers/Executable/$(1) +gb_JavaClassSet_get_classdir = $(WORKDIR)/JavaClassSet/$(1) gb_JavaClassSet_get_repo_target = $(WORKDIR)/JavaClassSet/$(2)/$(1).done gb_JavaClassSet_get_target = $(WORKDIR)/JavaClassSet/$(1)/done -gb_JavaClassSet_get_classdir = $(WORKDIR)/JavaClassSet/$(1) +gb_JunitTest_get_classsetname = JunitTest/$(1) gb_JunitTest_get_target = $(WORKDIR)/JunitTest/$(1)/done gb_JunitTest_get_userdir = $(WORKDIR)/JunitTest/$(1)/user -gb_JunitTest_get_classsetname = JunitTest/$(1) gb_LinkTarget_get_external_headers_target = $(WORKDIR)/ExternalHeaders/$(1) gb_LinkTarget_get_headers_target = $(WORKDIR)/Headers/$(1) gb_LinkTarget_get_target = $(WORKDIR)/LinkTarget/$(1) @@ -66,6 +70,7 @@ gb_Module_get_target = $(WORKDIR)/Module/$(1) gb_NoexPrecompiledHeader_get_dep_target = $(WORKDIR)/Dep/NoexPrecompiledHeader/$(gb_NoexPrecompiledHeader_DEBUGDIR)/$(1).hxx.pch.d gb_NoexPrecompiledHeader_get_target = $(WORKDIR)/NoexPrecompiledHeader/$(gb_NoexPrecompiledHeader_DEBUGDIR)/$(1).hxx.pch gb_ObjCxxObject_get_target = $(WORKDIR)/ObjCxxObject/$(1).o +gb_Package_get_preparation_target = $(WORKDIR)/Package/prepared/$(1) gb_Package_get_target = $(WORKDIR)/Package/$(1) gb_PrecompiledHeader_get_dep_target = $(WORKDIR)/Dep/PrecompiledHeader/$(gb_PrecompiledHeader_DEBUGDIR)/$(1).hxx.pch.d gb_PrecompiledHeader_get_target = $(WORKDIR)/PrecompiledHeader/$(gb_PrecompiledHeader_DEBUGDIR)/$(1).hxx.pch @@ -75,7 +80,6 @@ gb_SdiTarget_get_target = $(WORKDIR)/SdiTarget/$(1) gb_SrsPartMergeTarget_get_target = $(WORKDIR)/SrsPartMergeTarget/$(1) gb_SrsPartTarget_get_target = $(WORKDIR)/SrsPartTarget/$(1) gb_SrsTarget_get_target = $(WORKDIR)/SrsTarget/$(1).srs -gb_CppunitTest_get_target = $(WORKDIR)/CppunitTest/$(1).test define gb_Library_get_external_headers_target $(patsubst $(1):%,$(WORKDIR)/ExternalHeaders/Library/%,$(filter $(1):%,$(gb_Library_FILENAMES))) diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk index 4c4f938ffa08..d38b39a99ab4 100644 --- a/solenv/gbuild/gbuild.mk +++ b/solenv/gbuild/gbuild.mk @@ -221,6 +221,7 @@ include $(foreach class, \ Executable \ SdiTarget \ Package \ + CustomTarget \ PrecompiledHeaders \ CppunitTest \ JavaClassSet \ @@ -233,4 +234,6 @@ ifneq ($(wildcard $(GBUILDDIR)/extensions/post_*.mk),) include $(wildcard $(GBUILDDIR)/extensions/post_*.mk) endif +export gb_AWK + # vim: set noet sw=4 ts=4: |