Version 4.0.0.1, tag libreoffice-4.0.0.1
[LibreOffice.git] / solenv / gbuild / ComponentTarget.mk
blob866b07d3038c48efd54433e2925813d9efeb0bbd
1 # -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
2 #*************************************************************************
4 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 #
6 # Copyright 2000, 2010 Oracle and/or its affiliates.
8 # OpenOffice.org - a multi-platform office productivity suite
10 # This file is part of OpenOffice.org.
12 # OpenOffice.org is free software: you can redistribute it and/or modify
13 # it under the terms of the GNU Lesser General Public License version 3
14 # only, as published by the Free Software Foundation.
16 # OpenOffice.org is distributed in the hope that it will be useful,
17 # but WITHOUT ANY WARRANTY; without even the implied warranty of
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 # GNU Lesser General Public License version 3 for more details
20 # (a copy is included in the LICENSE file that accompanied this code).
22 # You should have received a copy of the GNU Lesser General Public License
23 # version 3 along with OpenOffice.org. If not, see
24 # <http://www.openoffice.org/license.html>
25 # for a copy of the LGPLv3 License.
27 #*************************************************************************
29 gb_ComponentTarget_XSLTCOMMANDFILE := $(SOLARENV)/bin/createcomponent.xslt
30 gb_ComponentTarget_get_source = $(SRCDIR)/$(1).component
32 # In the DISABLE_DYNLOADING case we don't need any COMPONENTPREFIX, we
33 # put just the static library filename into the uri parameter. For
34 # each statically linked app using some subset of LO components, there
35 # is a mapping from library filenames to direct pointers to the
36 # corresponding PREFIX_component_getFactory functions.
37 define gb_ComponentTarget__command
38 $(call gb_Output_announce,$(3),$(true),CMP,1)
39 $(if $(LIBFILENAME),,$(call gb_Output_error,No LIBFILENAME set at component target: $(1)))
40 $(call gb_Helper_abbreviate_dirs,\
41 mkdir -p $(dir $(1)) && \
42 $(call gb_ExternalExecutable_get_command,xsltproc) --nonet --stringparam uri \
43 '$(if $(filter TRUE,$(DISABLE_DYNLOADING)),,$(subst \d,$$,$(COMPONENTPREFIX)))$(LIBFILENAME)' -o $(1) \
44 $(gb_ComponentTarget_XSLTCOMMANDFILE) $(2))
45 endef
48 $(call gb_ComponentTarget_get_clean_target,%) :
49 $(call gb_Output_announce,$*,$(false),CMP,1)
50 rm -f $(call gb_ComponentTarget_get_outdir_target,$*) \
51 $(call gb_ComponentTarget_get_target,$*) \
54 $(call gb_ComponentTarget_get_target,%) : \
55 $(call gb_ComponentTarget_get_source,%) \
56 | $(call gb_ExternalExecutable_get_dependencies,xsltproc)
57 $(call gb_ComponentTarget__command,$@,$<,$*)
59 # the .dir is for make 3.81, which ignores trailing /
60 $(dir $(call gb_ComponentTarget_get_outdir_target,))%/.dir :
61 $(if $(wildcard $(dir $@)),,mkdir -p $(dir $@))
63 $(call gb_ComponentTarget_get_outdir_target,%) :
64 $(call gb_Deliver_deliver,$<,$@)
66 define gb_ComponentTarget_ComponentTarget
67 $(call gb_ComponentTarget_get_target,$(1)) : COMPONENTPREFIX := $(2)
68 $(call gb_ComponentTarget_get_target,$(1)) : LIBFILENAME := $(3)
69 $(call gb_ComponentTarget_get_outdir_target,$(1)) : \
70 $(call gb_ComponentTarget_get_target,$(1)) \
71 | $(dir $(call gb_ComponentTarget_get_outdir_target,$(1))).dir
72 $(call gb_Deliver_add_deliverable,$(call gb_ComponentTarget_get_outdir_target,$(1)),$(call gb_ComponentTarget_get_target,$(1)),$(1))
74 endef
76 # vim: set noet sw=4: