forked from andreaspeters/opencache-manager
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile.include
152 lines (124 loc) · 8.62 KB
/
Makefile.include
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
VALID_CULTURES = ar bg ca zh-CHS cs da de el en es fi fr he hu is it ja ko nl no pl pt ro ru hr sk sq sv th tr id uk be sl et lv lt fa vi hy eu mk af fo hi sw gu ta te kn mr gl kok ar-SA bg-BG ca-ES zh-TW cs-CZ da-DK de-DE el-GR en-US fi-FI fr-FR he-IL hu-HU is-IS it-IT ja-JP ko-KR nl-NL nb-NO pl-PL pt-BR ro-RO ru-RU hr-HR sk-SK sq-AL sv-SE th-TH tr-TR id-ID uk-UA be-BY sl-SI et-EE lv-LV lt-LT fa-IR vi-VN hy-AM eu-ES mk-MK af-ZA fo-FO hi-IN sw-KE gu-IN ta-IN te-IN kn-IN mr-IN gl-ES kok-IN ar-IQ zh-CN de-CH en-GB es-MX fr-BE it-CH nl-BE nn-NO pt-PT sv-FI ar-EG zh-HK de-AT en-AU es-ES fr-CA ar-LY zh-SG de-LU en-CA es-GT fr-CH ar-DZ zh-MO en-NZ es-CR fr-LU ar-MA en-IE es-PA ar-TN en-ZA es-DO ar-OM es-VE ar-YE es-CO ar-SY es-PE ar-JO es-AR ar-LB en-ZW es-EC ar-KW en-PH es-CL ar-AE es-UY ar-BH es-PY ar-QA es-BO es-SV es-HN es-NI es-PR zh-CHT
s2q=$(subst \ ,?,$1)
q2s=$(subst ?,\ ,$1)
# use this when result will be quoted
unesc2=$(subst ?, ,$1)
build_sources = $(FILES) $(GENERATED_FILES)
build_sources_esc= $(call s2q,$(build_sources))
# use unesc2, as build_sources_embed is quoted
build_sources_embed= $(call unesc2,$(build_sources_esc:%='$(srcdir)/%'))
comma__=,
get_resource_name = $(firstword $(subst $(comma__), ,$1))
get_culture = $(lastword $(subst ., ,$(basename $1)))
is_cultured_resource = $(and $(word 3,$(subst ., ,$1)), $(filter $(VALID_CULTURES),$(lastword $(subst ., ,$(basename $1)))))
RESOURCES_ESC=$(call s2q,$(RESOURCES))
build_resx_list = $(foreach res, $(RESOURCES_ESC), $(if $(filter %.resx, $(call get_resource_name,$(res))),$(res),))
build_non_culture_resx_list = $(foreach res, $(build_resx_list),$(if $(call is_cultured_resource,$(call get_resource_name,$(res))),,$(res)))
build_non_culture_others_list = $(foreach res, $(filter-out $(build_resx_list),$(RESOURCES_ESC)),$(if $(call is_cultured_resource,$(call get_resource_name,$(res))),,$(res)))
build_others_list = $(build_non_culture_others_list)
build_xamlg_list = $(filter %.xaml.g.cs, $(FILES))
# resgen all .resx resources
build_resx_files = $(foreach res, $(build_resx_list), $(call get_resource_name,$(res)))
build_resx_resources_esc = $(build_resx_files:.resx=.resources)
build_resx_resources = $(call q2s,$(build_resx_resources_esc))
# embed resources for the main assembly
build_resx_resources_hack = $(subst .resx,.resources, $(build_non_culture_resx_list))
# use unesc2, as build_resx_resources_embed is quoted
build_resx_resources_embed = $(call unesc2,$(build_resx_resources_hack:%='-resource:%'))
build_others_files = $(call q2s,$(foreach res, $(build_others_list),$(call get_resource_name,$(res))))
build_others_resources = $(build_others_files)
# use unesc2, as build_others_resources_embed is quoted
build_others_resources_embed = $(call unesc2,$(build_others_list:%='-resource:$(srcdir)/%'))
build_resources = $(build_resx_resources) $(build_others_resources)
build_resources_embed = $(build_resx_resources_embed) $(build_others_resources_embed)
# -usesourcepath is available only for resgen2
emit_resgen_target_1=$(call q2s,$1) : $(call q2s,$(subst .resources,.resx,$1)); cd '$$(shell dirname '$$<')' && MONO_IOMAP=drive $$(RESGEN) '$$(shell basename '$$<')' '$$(shell basename '$$@')'
emit_resgen_target_2=$(call q2s,$1) : $(call q2s,$(subst .resources,.resx,$1)); MONO_IOMAP=drive $$(RESGEN) -usesourcepath '$$<' '$$@'
emit_resgen_target=$(if $(filter resgen2,$(RESGEN)),$(emit_resgen_target_2),$(emit_resgen_target_1))
emit_resgen_targets=$(foreach res,$(build_resx_resources_esc),$(eval $(call emit_resgen_target,$(res))))
build_references_ref = $(call q2s,$(foreach ref, $(call s2q,$(REFERENCES)), $(if $(filter -pkg:%, $(ref)), $(ref), $(if $(filter -r:%, $(ref)), $(ref), -r:$(ref)))))
build_references_ref += $(call q2s,$(foreach ref, $(call s2q,$(DLL_REFERENCES)), -r:$(ref)))
build_references_ref += $(call q2s,$(foreach ref, $(call s2q,$(PROJECT_REFERENCES)), -r:$(ref)))
s2q2s=$(call unesc2,$(call s2q,$1))
cp_actual=test -z $1 || cp $1 $2
cp=$(call cp_actual,'$(call s2q2s,$1)','$(call s2q2s,$2)')
rm_actual=test -z '$1' || rm -f '$2'
rm=$(call rm_actual,$(call s2q2s,$1),$(call s2q2s,$2)/$(shell basename '$(call s2q2s,$1)'))
EXTRA_DIST += $(build_sources) $(build_resx_files) $(build_others_files) $(ASSEMBLY_WRAPPER_IN) $(EXTRAS) $(DATA_FILES) $(build_culture_res_files)
CLEANFILES += $(ASSEMBLY) $(ASSEMBLY).mdb $(BINARIES) $(build_resx_resources) $(build_satellite_assembly_list)
DISTCLEANFILES = $(GENERATED_FILES) $(pc_files) $(BUILD_DIR)/*
pkglib_SCRIPTS = $(ASSEMBLY)
bin_SCRIPTS = $(BINARIES)
linuxpkgconfigdir = @libdir@/pkgconfig
linuxpkgconfig_DATA = $(LINUX_PKGCONFIG)
programfilesicons24x24dir = @libdir@/@PACKAGE@/icons/24x24
programfilesicons24x24_DATA = $(PROGRAMFILES_ICONS_24X24)
programfilesiconsscalabledir = @libdir@/@PACKAGE@/icons/scalable
programfilesiconsscalable_DATA = $(PROGRAMFILES_ICONS_SCALABLE)
programfilesmapsdir = @libdir@/@PACKAGE@/maps
programfilesmaps_DATA = $(PROGRAMFILES_MAPS)
commonapplicationdatarootmimepackagesdir = @datadir@/mime/packages
commonapplicationdatarootmimepackages_DATA = $(COMMONAPPLICATIONDATAROOT_MIME_PACKAGES)
programfileswebthemedefaultdir = @libdir@/@PACKAGE@/web/theme/default
programfileswebthemedefault_DATA = $(PROGRAMFILES_WEB_THEME_DEFAULT)
programfileswebthemedefaultimgdir = @libdir@/@PACKAGE@/web/theme/default/img
programfileswebthemedefaultimg_DATA = $(PROGRAMFILES_WEB_THEME_DEFAULT_IMG)
programfilesdocsdir = @libdir@/@PACKAGE@/docs
programfilesdocs_DATA = $(PROGRAMFILES_DOCS)
programfilesdir = @libdir@/@PACKAGE@
programfiles_DATA = $(PROGRAMFILES)
programfilesicons48x48dir = @libdir@/@PACKAGE@/icons/48x48
programfilesicons48x48_DATA = $(PROGRAMFILES_ICONS_48X48)
linuxdesktopapplicationsdir = @datadir@/applications
linuxdesktopapplications_DATA = $(LINUX_DESKTOPAPPLICATIONS)
programfilesiconssplashdir = @libdir@/@PACKAGE@/icons/splash
programfilesiconssplash_DATA = $(PROGRAMFILES_ICONS_SPLASH)
programfileslicencedir = @libdir@/@PACKAGE@/licence
programfileslicence_DATA = $(PROGRAMFILES_LICENCE)
programfilesiconssplashchristmasdir = @libdir@/@PACKAGE@/icons/splash/christmas
programfilesiconssplashchristmas_DATA = $(PROGRAMFILES_ICONS_SPLASH_CHRISTMAS)
programfilesiconsscalableattributesdir = @libdir@/@PACKAGE@/icons/scalable/attributes
programfilesiconsscalableattributes_DATA = $(PROGRAMFILES_ICONS_SCALABLE_ATTRIBUTES)
programfilesversiondir = @libdir@/@PACKAGE@/version
programfilesversion_DATA = $(PROGRAMFILES_VERSION)
programfileswebimgdir = @libdir@/@PACKAGE@/web/img
programfileswebimg_DATA = $(PROGRAMFILES_WEB_IMG)
programfileswebdir = @libdir@/@PACKAGE@/web
programfilesweb_DATA = $(PROGRAMFILES_WEB)
programfilesicons32x32dir = @libdir@/@PACKAGE@/icons/32x32
programfilesicons32x32_DATA = $(PROGRAMFILES_ICONS_32X32)
# macros
# $(call emit-deploy-target,deploy-variable-name)
define emit-deploy-target
$($1): $($1_SOURCE)
mkdir -p '$$(shell dirname '$$@')'
cp '$$<' '$$@'
endef
# $(call emit-deploy-wrapper,wrapper-variable-name,wrapper-sourcefile,x)
# assumes that for a wrapper foo.pc its source template is foo.pc.in
# if $3 is non-empty then wrapper is marked exec
define emit-deploy-wrapper
$($1): $2
mkdir -p '$$(shell dirname '$$@')'
cp '$$<' '$$@'
$(if $3,chmod +x '$$@')
endef
# generating satellite assemblies
culture_resources = $(foreach res, $(RESOURCES_ESC), $(if $(call is_cultured_resource,$(call get_resource_name, $(res))),$(res)))
cultures = $(sort $(foreach res, $(culture_resources), $(call get_culture,$(call get_resource_name,$(res)))))
culture_resource_dependencies = $(call q2s,$(BUILD_DIR)/$1/$(SATELLITE_ASSEMBLY_NAME): $(subst .resx,.resources,$2))
culture_resource_commandlines = $(call unesc2,cmd_line_satellite_$1 += '/embed:$(subst .resx,.resources,$2)')
build_satellite_assembly_list = $(call q2s,$(cultures:%=$(BUILD_DIR)/%/$(SATELLITE_ASSEMBLY_NAME)))
build_culture_res_files = $(call q2s,$(foreach res, $(culture_resources),$(call get_resource_name,$(res))))
install_satellite_assembly_list = $(subst $(BUILD_DIR),$(DESTDIR)$(libdir)/$(PACKAGE),$(build_satellite_assembly_list))
$(eval $(foreach res, $(culture_resources), $(eval $(call culture_resource_dependencies,$(call get_culture,$(call get_resource_name,$(res))),$(call get_resource_name,$(res))))))
$(eval $(foreach res, $(culture_resources), $(eval $(call culture_resource_commandlines,$(call get_culture,$(call get_resource_name,$(res))),$(res)))))
$(build_satellite_assembly_list): $(BUILD_DIR)/%/$(SATELLITE_ASSEMBLY_NAME):
mkdir -p '$(@D)'
$(AL) -out:'$@' -culture:$* -t:lib $(cmd_line_satellite_$*)
$(install_satellite_assembly_list):
mkdir -p '$(@D)'
cp $(subst $(DESTDIR)$(libdir)/$(PACKAGE), $(BUILD_DIR), $@) $@
install-satellite-assemblies: $(install_satellite_assembly_list)
uninstall-satellite-assemblies:
rm -rf $(install_satellite_assembly_list)