summaryrefslogtreecommitdiffstats
path: root/debian/_base/core/tde-i18n/debian/rules
blob: 0daf98a6d52d81351f4294408c3cdc4225b1b53a (plain)
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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#!/usr/bin/make -f

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

I18N_DIR_PREFIX := tde-i18n
I18N_DEST_PREFIX := $(I18N_DIR_PREFIX)
I18N_DIR_PAT := $(I18N_DIR_PREFIX)-%
I18N_DIRS := $(wildcard $(I18N_DIR_PREFIX)-*)

# Stamps and support variables
cur_lang = $(word 2,$(subst __, ,$@))
cur_lang_target = $(subst @,_,$(cur_lang))
cur_lang_dir = $(patsubst %,$(I18N_DIR_PREFIX)-%,$(cur_lang))
cur_pkg_lang = $(subst _,,$(subst @,,$(subst @latn,latin,$(shell echo $(cur_lang) | tr '[:upper:]' '[:lower:]'))))
cur_pkg = $(I18N_DEST_PREFIX)-$(cur_pkg_lang)-trinity

STAMP_BUILD := $(patsubst $(I18N_DIR_PAT),debian/stamp__%__build,$(I18N_DIRS))
I18N_INSTALL := $(patsubst $(I18N_DIR_PAT),install__%,$(I18N_DIRS))
I18N_CLEAN := $(patsubst $(I18N_DIR_PAT),clean__%,$(I18N_DIRS))

DEB_BUILD_PARALLEL ?= true

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
	DEB_PARALLEL_JOBS ?= $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
endif
DEB_MAKE_PARALLEL ?= $(and $(DEB_BUILD_PARALLEL),$(DEB_PARALLEL_JOBS),-j$(DEB_PARALLEL_JOBS))

ifneq "$(wildcard /usr/bin/ninja)" ""
MAKE = ninja -v
DEB_MAKE_ENVVARS += DESTDIR=$(DEB_DESTDIR)
DEB_MAKE_INSTALL_TARGET = install
DEB_CMAKE_NORMAL_ARGS += -GNinja
endif

# The default gzip compressor has been changed in dpkg >= 1.17.0.
deb_default_compress = $(shell LANG=C dpkg-deb --version | head -n1 | \
                         sed -e "s|.*version ||" -e "s| .*||" | \
                         xargs -r dpkg --compare-versions 1.17.0 lt \
                         && echo xz || echo gzip)
ifeq ($(deb_default_compress),gzip)
DEB_DH_BUILDDEB_ARGS += -- -Z$(shell dpkg-deb --help | grep -q ":.* xz[,.]" \
                               && echo xz || echo bzip2)
endif

DEB_CMAKE_EXTRA_FLAGS := \
 -DCMAKE_EXPORT_COMPILE_COMMANDS="ON" \
 -DCMAKE_INSTALL_PREFIX="/opt/trinity" \
 -DCONFIG_INSTALL_DIR="/etc/trinity" \
 -DSYSCONF_INSTALL_DIR="/etc/trinity" \
 -DXDG_MENU_INSTALL_DIR="/etc/xdg/menus" \
 -DCMAKE_VERBOSE_MAKEFILE="ON" \
 -DBUILD_ALL="ON"


build::
	dh_testdir
	dh_prep

ifneq "$(wildcard /usr/bin/ninja)" ""

build:: debian/stamp__build

debian/stamp__build:
	[ -d build ] || \
	mkdir build
	cd build && \
	cmake .. $(DEB_CMAKE_NORMAL_ARGS) $(DEB_CMAKE_EXTRA_FLAGS) && \
	$(MAKE) $(DEB_MAKE_PARALLEL)
	touch $@

else

build:: $(STAMP_BUILD)

$(STAMP_BUILD):
	# Building the '$(cur_lang)' language ...
	[ -d $(cur_lang_dir)/build ] || \
	mkdir $(cur_lang_dir)/build
	[ -e $(cur_lang_dir)/CMakeLists.txt ] || \
	ln -s ../template/commonCMakeLists.txt $(cur_lang_dir)/CMakeLists.txt
	cd $(cur_lang_dir)/build && \
	cmake .. $(DEB_CMAKE_NORMAL_ARGS) $(DEB_CMAKE_EXTRA_FLAGS) && \
	$(MAKE) $(DEB_MAKE_PARALLEL)
	touch $@

endif

install::
	dh_testdir
	dh_testroot

install:: $(I18N_INSTALL)
	dh_testdir
	cat debian/control-source > debian/control
	find debian -name "control-lang-*" | LANG=C sort | xargs -r cat >> debian/control

$(I18N_INSTALL): build
ifneq "$(wildcard /usr/bin/ninja)" ""
	[ ! -e $(cur_lang_dir)/CMakeLists.txt ] || \
	DESTDIR=$(CURDIR)/debian/$(cur_pkg) $(MAKE) -C build install-$(cur_lang_target)
else
	cd $(cur_lang_dir)/build && \
	DESTDIR=$(CURDIR)/debian/$(cur_pkg) $(MAKE) install $(DEB_MAKE_PARALLEL)
endif
	if [ -e $(cur_lang_dir)/messages/entry.desktop ]; then \
	    lang_desc=$$(sed -n "s|^Name=||p" $(cur_lang_dir)/messages/entry.desktop); \
	    sed -e "s|@lang@|$(cur_lang)|g" \
	        -e "s|@pkg_lang@|$(cur_pkg_lang)|g" \
	        -e "s|@lang_desc@|$$lang_desc|" \
	        < debian/control-lang > debian/control-lang-$(cur_pkg_lang); \
	fi

ifneq "$(wildcard /usr/bin/ninja)" ""

clean: debian-clean

else

clean: $(I18N_CLEAN) debian-clean

$(I18N_CLEAN):
	dh_testdir
	rm -rf $(cur_lang_dir)/build

endif

debian-clean:
	dh_testdir
	rm -rf build
	rm -rf debian/$(I18N_DEST_PREFIX)-*
	rm -f debian/stamp__*
	rm -f debian/control-lang-*
	cat debian/control-source > debian/control
	sed -e "s|@lang@|all|g" \
	    -e "s|-@pkg_lang@||g" \
	    -e "s|@lang_desc@|All languages|" \
	    < debian/control-lang >> debian/control
	dh_clean


binary-arch: build
	dh_testroot
	dh_testdir


binary-indep: build install
	dh_testroot
	dh_testdir
	dh_installdocs
	dh_installmenu
	dh_installchangelogs
	dh_strip
	$(if $(wildcard /usr/bin/dh_strip_nondeterminism),\
	dh_strip_nondeterminism)
	dh_compress -X.docbook -X.css -X-license -X.dcl -X.bz2
	dh_fixperms
	dh_installdeb
	dh_shlibdeps
	dh_gencontrol
	dh_md5sums
	dh_builddeb $(DEB_DH_BUILDDEB_ARGS)


# Below here is fairly generic really
binary: binary-indep binary-arch

.PHONY: binary binary-arch binary-indep clean build install $(I18N_INSTALL)