1 # -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
3 # This file is part of the LibreOffice project.
5 # This Source Code Form is subject to the terms of the Mozilla Public
6 # License, v. 2.0. If a copy of the MPL was not distributed with this
7 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
10 # AllLangPackage class
12 # Handles creation of a bunch of packages with content dependent on
13 # language. The package files are placed into $(INSTROOT).
15 gb_AllLangPackage_LANGS
:= $(if
$(strip $(gb_WITH_LANG
)),$(gb_WITH_LANG
),en-US
)
17 $(dir $(call gb_AllLangPackage_get_target
,%)).
dir :
18 $(if
$(wildcard $(dir $@
)),,mkdir
-p
$(dir $@
))
20 $(call gb_AllLangPackage_get_target
,%) :
21 $(call gb_Output_announce
,$*,$(true
),ALP
,3)
22 $(call gb_Trace_MakeMark
,$*,ALP
)
25 .PHONY
: $(call gb_AllLangPackage_get_clean_target
,%)
26 $(call gb_AllLangPackage_get_clean_target
,%) :
27 $(call gb_Output_announce
,$*,$(false
),ALP
,3)
28 rm -f
$(call gb_AllLangPackage_get_target
,$*)
30 # Define a new package group.
32 # gb_AllLangPackage_AllLangPackage group srcdir
33 define gb_AllLangPackage_AllLangPackage
34 $(foreach lang
,$(gb_AllLangPackage_LANGS
),$(call gb_AllLangPackage__AllLangPackage_onelang
,$(1),$(1)_
$(lang
),$(2)))
36 $(call gb_AllLangPackage_get_target
,$(1)) :|
$(dir $(call gb_AllLangPackage_get_target
,$(1))).
dir
38 $$(eval
$$(call gb_Module_register_target
,$(call gb_AllLangPackage_get_target
,$(1)),$(call gb_AllLangPackage_get_clean_target
,$(1))))
39 $(call gb_Helper_make_userfriendly_targets
,$(1),AllLangPackage
)
43 # Define a package for one lang.
45 # gb_AllLangPackage__AllLangPackage_lang group package srcdir
46 define gb_AllLangPackage__AllLangPackage_onelang
47 $(call gb_Package_Package_internal
,$(2),$(3))
48 $(call gb_AllLangPackage_get_target
,$(1)) : $(call gb_Package_get_target
,$(2))
49 $(call gb_AllLangPackage_get_clean_target
,$(1)) : $(call gb_Package_get_clean_target
,$(2))
53 # gb_AllLangPackage__add_to_package target package destination source
54 define gb_AllLangPackage__add_to_package
55 $(call gb_Package_add_file
,$(2),$(3),$(4))
59 # gb_AllLangPackage__add_file target destination source lang
60 define gb_AllLangPackage__add_file
61 $(if
$(filter $(4),$(gb_AllLangPackage_LANGS
)),$(call gb_AllLangPackage__add_to_package
,$(1),$(1)_
$(4),$(2),$(3)))
65 # Add a file to one of the child packages.
67 # If 'lang' is empty, the language is taken from the first component of the 'source' file name. The
68 # file is only added if there is a package defined for the language
69 # (i.e., if we are building with the language).
71 # gb_AllLangPackage_add_file target destination source lang
72 gb_AllLangPackage_ALLDIRS
:=
73 define gb_AllLangPackage_add_file
74 gb_AllLangPackage_ALLDIRS
:= $(sort $(gb_AllLangPackage_ALLDIRS
) $(patsubst %$(3),%,$(2)))
75 $(call gb_AllLangPackage__add_file
,$(1),$(2),$(3),$(or
$(4),$(firstword $(subst /, ,$(3)))))
79 # Add several files to the child packages at once.
81 # gb_AllLangPackage_add_files target destination-dir file(s)
82 define gb_AllLangPackage_add_files
83 $(if
$(strip $(2)),,$(call gb_Output_error
,gb_AllLangPackage_add_files
: destination
dir cannot be empty
))
84 $(foreach file
,$(3),$(call gb_AllLangPackage_add_file
,$(1),$(2)/$(file
),$(file
)))
88 # gb_AllLangPackage_add_files_for_lang target lang destination-dir file(s)
89 define gb_AllLangPackage_add_files_for_lang
90 $(if
$(strip $(3)),,$(call gb_Output_error
,gb_AllLangPackage_add_files
: destination
dir cannot be empty
))
91 $(foreach file
,$(4),$(call gb_AllLangPackage_add_file
,$(1),$(3)/$(file
),$(file
),$(2)))
95 # Add several files to the child packages at once.
97 # The files are placed into subdir under the language-dependent path.
100 # $(eval $(call # gb_AllLangPackage_add_files_with_subdir,foo,destdir,subdir,cs/file.ext))
101 # # -> destdir/cs/subdir/file.ext
103 # gb_AllLangPackage_add_files_with_subdir target destination-dir subdir file(s)
104 define gb_AllLangPackage_add_files_with_subdir
105 $(if
$(strip $(2)),,$(call gb_Output_error
,gb_AllLangPackage_add_files_with_subdir
: destination
dir cannot be empty
))
106 $(if
$(strip $(3)),,$(call gb_Output_error
,gb_AllLangPackage_add_files_with_subdir
: there is no subdir
, just use gb_AllLangPackage_add_files
))
107 $(foreach file
,$(4),$(call gb_AllLangPackage_add_file
,$(1),$(2)/$(dir $(file
))$(3)/$(notdir $(file
)),$(file
)))
111 # Use unpacked tarball.
113 # gb_AllLangPackage_add_dependency target unpacked
114 define gb_AllLangPackage_use_unpacked
115 $(foreach lang
,$(gb_AllLangPackage_LANGS
),$(call gb_Package_use_unpacked
,$(1)_
$(lang
),$(2)))
119 define gb_AllLangPackage_use_customtarget
120 $(foreach lang
,$(gb_AllLangPackage_LANGS
),$(call gb_Package_use_customtarget
,$(1)_
$(lang
),$(2)))
124 # vim: set noet sw=4 ts=4: