]> ncurses.scripts.mit.edu Git - ncurses.git/blob - package/debian/rules
ncurses 6.5 - patch 20240608
[ncurses.git] / package / debian / rules
1 #!/usr/bin/make -f
2 # $Id: rules,v 1.57 2024/06/08 17:51:52 tom Exp $
3
4 # Uncomment this to turn on verbose mode.
5 #export DH_VERBOSE=1
6
7 SHELL = /bin/bash
8 DPKG_EXPORT_BUILDFLAGS = 1
9
10 export DEB_BUILD_MAINT_OPTIONS = hardening=+all
11
12 include /usr/share/dpkg/buildflags.mk
13
14 # packages
15 PACKAGES.indep = ncurses6td-doc ncurses6td-doc-html
16 PACKAGES.arch  = ncurses6td ncursest6td
17
18 # These are used for cross-compiling and for saving the configure script
19 # from having to guess our platform (since we know it already)
20 DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
21 DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
22 DEB_HOST_MULTIARCH  ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
23
24 CC_NORMAL = -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion
25 CC_STRICT = $(CC_NORMAL) -W -Wbad-function-cast -Wcast-align -Wcast-qual -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wwrite-strings -ansi -pedantic
26
27 MY_ABI=6
28 MY_DIR=/usr
29 BINDIR=$(MY_DIR)/bin
30 LIBDIR=$(MY_DIR)/lib/$(DEB_HOST_MULTIARCH)
31 MYDATA=/usr/local/ncurses/share/terminfo
32 NORMAL_DIR=$(CURDIR)/debian/ncurses$(MY_ABI)
33 THREAD_DIR=$(CURDIR)/debian/ncursest$(MY_ABI)
34
35 CFLAGS   += $(CC_NORMAL)
36
37 ifneq ($(MY_DIR),/usr)
38         RPATH_ENV = RPATH_LIST=../lib:$(LIBDIR)
39         RPATH_OPT = --enable-rpath
40 else
41         RPATH_ENV =
42         RPATH_OPT = --disable-rpath --disable-rpath-hack
43 endif
44
45 ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
46         CFLAGS += -O0
47 else
48         CFLAGS += -O2
49 endif
50 ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
51         INSTALL_PROGRAM += -s
52 endif
53
54 verbose = # -v
55
56 configure = \
57         $(RPATH_ENV) \
58         CFLAGS="$(CFLAGS)" \
59         CPPFLAGS="$(CPPFLAGS)" \
60         LDFLAGS="$(LDFLAGS)" ../../configure $(RPATH_OPT) \
61                 --host=$(DEB_HOST_GNU_TYPE) \
62                 --build=$(DEB_BUILD_GNU_TYPE) \
63                 --prefix=$(MY_DIR) \
64                 --libdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) \
65                 --disable-echo \
66                 --disable-getcap \
67                 --disable-leaks \
68                 --disable-macros  \
69                 --disable-overwrite  \
70                 --disable-relink \
71                 --disable-root-access \
72                 --disable-root-environ \
73                 --disable-termcap \
74                 --enable-check-size \
75                 --enable-hard-tabs \
76                 --enable-opaque-curses \
77                 --enable-opaque-form \
78                 --enable-opaque-menu \
79                 --enable-opaque-panel \
80                 --enable-pc-files \
81                 --enable-stdnoreturn \
82                 --enable-warnings \
83                 --enable-wgetch-events \
84                 --enable-widec \
85                 --enable-xmc-glitch \
86                 --program-suffix=$(MY_ABI) \
87                 --verbose \
88                 --with-abi-version=$(MY_ABI) \
89                 --with-config-suffix=td \
90                 --with-pc-suffix=td \
91                 --with-cxx-shared \
92                 --with-default-terminfo-dir=$(MYDATA) \
93                 --with-develop \
94                 --with-extra-suffix=$(MY_ABI) \
95                 --with-shared \
96                 --with-terminfo-dirs=$(MYDATA):/lib/terminfo:/usr/share/terminfo \
97                 --with-termlib \
98                 --with-ticlib \
99                 --with-trace \
100                 --with-versioned-syms \
101                 --with-xterm-kbs=DEL \
102                 --without-ada \
103                 --without-debug \
104                 --with-manpage-aliases \
105                 --with-manpage-symlinks \
106                 --without-normal
107
108 NCURSES6_DIR = $(CURDIR)/debian/ncurses6td
109 NCURSEST6_DIR = $(CURDIR)/debian/ncursest6td
110
111 .PHONY: all config build install binary clean config-indep config-arch \
112     build-indep build-arch install-indep install-arch binary-indep \
113     binary-arch
114
115 all: build
116
117 config: config-indep config-arch
118 build: build-indep build-arch
119 install: install-indep install-arch
120 binary: binary-indep binary-arch
121 clean:
122         pwd; ls -l
123         dh_testdir
124         dh_testroot
125         dh_clean $(verbose)
126         rm -rf t
127
128 config-indep: $(PACKAGES.indep:%=config-%-stamp)
129 config-arch: $(PACKAGES.arch:%=config-%-stamp)
130
131 build-indep: $(PACKAGES.indep:%=build-%-stamp)
132 build-arch: $(PACKAGES.arch:%=build-%-stamp)
133
134 install-indep: $(PACKAGES.indep:%=install-%-stamp)
135 install-arch: $(PACKAGES.arch:%=install-%-stamp)
136
137 # make the doc-package installable by renaming everything to avoid clashing
138 patch-ncurses6td-stamp:
139         dh_testdir
140         sed -i.bak \
141                 -e 's/-config\.1$$/dev-config.1/;t' \
142                 -e 's/\.3ncurses$$/.3ncurses6/' \
143                 -e 's/\.3curses$$/.3curses6/' \
144                 -e 's/\.3form$$/.3form6/' \
145                 -e 's/\.3menu$$/.3menu6/' \
146                 -e 's/\.3panel$$/.3panel6/' \
147                 -e 's/\.\([157]\)$$/6.\1/' \
148                 man/man_db.renames.in
149         diff -u man/man_db.renames.in.bak man/man_db.renames.in || true
150         touch $@
151
152 config-ncurses6td-stamp: patch-ncurses6td-stamp
153         dh_testdir
154         rm -rf t/ncurses6td
155         mkdir -p t/ncurses6td
156         cd t/ncurses6td; $(configure)
157         touch $@
158
159 config-ncursest6td-stamp: patch-ncurses6td-stamp
160         dh_testdir
161         rm -rf t/ncursest6td
162         mkdir -p t/ncursest6td
163         cd t/ncursest6td; $(configure) \
164                 --enable-interop \
165                 --enable-sp-funcs \
166                 --program-suffix=t$(MY_ABI) \
167                 --with-pthread
168         touch $@
169
170 config-ncurses6td-doc-stamp \
171 config-ncurses6td-doc-html-stamp: config-ncurses6td-stamp
172         touch $@
173
174 build-ncurses6td-stamp: config-ncurses6td-stamp
175         dh_testdir
176
177         $(MAKE) -C t/ncurses6td
178
179         touch $@
180
181 build-ncursest6td-stamp: config-ncursest6td-stamp
182         dh_testdir
183
184         $(MAKE) -C t/ncursest6td
185
186         touch $@
187
188 build-ncurses6td-doc-stamp \
189 build-ncurses6td-doc-html-stamp: build-ncurses6td-stamp
190         touch $@
191
192 install-ncurses6td-stamp: build-ncurses6td-stamp
193         dh_testdir
194         dh_testroot
195         dh_installdirs $(verbose)
196         dh_prep        $(verbose) -pncurses6td
197
198         $(MAKE) -C t/ncurses6td install.libs install.progs DESTDIR=$(NCURSES6_DIR)
199         $(MAKE) -C t/ncurses6td/test ncurses LOCAL_LIBDIR=$(LIBDIR)
200
201         mv t/ncurses6td/test/ncurses $(NCURSES6_DIR)$(BINDIR)/ncurses$(MY_ABI)
202
203         touch $@
204
205 install-ncursest6td-stamp: build-ncursest6td-stamp
206         dh_testdir
207         dh_testroot
208         dh_installdirs $(verbose)
209         dh_prep        $(verbose) -pncursest6td
210
211         $(MAKE) -C t/ncursest6td install.libs install.progs DESTDIR=$(NCURSEST6_DIR)
212         $(MAKE) -C t/ncursest6td/test ncurses LOCAL_LIBDIR=$(LIBDIR)
213
214         mv t/ncursest6td/test/ncurses $(NCURSEST6_DIR)$(BINDIR)/ncursest$(MY_ABI)
215
216         touch $@
217
218 install-ncurses6td-doc-stamp: build-ncurses6td-stamp
219         dh_testdir
220         dh_testroot
221         dh_installdirs $(verbose)
222         dh_prep        $(verbose) -pncurses6td-doc
223
224         $(MAKE) -C t/ncurses6td install.man DESTDIR=$(NCURSES6_DIR)-doc
225         find $(NCURSES6_DIR)-doc -name 'ncursesw6-config.*' -print -delete
226
227         cd $(NCURSES6_DIR)-doc/usr/share/man/man1 && ln -sf tset6.1.gz reset6.1.gz
228
229         touch $@
230
231 HTML_DESTDIR=$(NCURSES6_DIR)-doc-html/usr/share/doc/ncurses6td-doc-html
232 install-ncurses6td-doc-html-stamp: build-ncurses6td-stamp
233         dh_testdir
234         dh_testroot
235         dh_installdirs $(verbose)
236         dh_prep        $(verbose) -pncurses6td-doc-html
237
238         cd doc/html && find * -type d | sort | xargs -I{} mkdir -p -v $(HTML_DESTDIR)/{}
239         cd doc/html && find * -type f -name '*.html' | sort | xargs -I{} install -m 644 -p -v -T {} $(HTML_DESTDIR)/{}
240         find $(HTML_DESTDIR) -type d -empty -delete -print
241         find $(HTML_DESTDIR) -type d -empty -delete -print
242
243         touch $@
244
245 # Build architecture-independent files here.
246 binary-indep: install-indep
247 ifneq ($(PACKAGES.indep),)
248         rm -f $(PACKAGES.indep:%=install-%-stamp)
249         dh_testdir
250         dh_testroot
251         dh_lintian           $(verbose) $(PACKAGES.arch:%=-p%)
252         dh_installdocs       $(verbose) $(PACKAGES.indep:%=-p%)
253         dh_installman        $(verbose) $(PACKAGES.indep:%=-p%)
254         dh_installexamples   $(verbose) $(PACKAGES.indep:%=-p%)
255         dh_installchangelogs $(verbose) $(PACKAGES.indep:%=-p%) NEWS
256         dh_compress          $(verbose) $(PACKAGES.indep:%=-p%)
257         dh_fixperms          $(verbose) $(PACKAGES.indep:%=-p%)
258         dh_installdeb        $(verbose) $(PACKAGES.indep:%=-p%)
259         dh_gencontrol        $(verbose) $(PACKAGES.indep:%=-p%)
260         dh_md5sums           $(verbose) $(PACKAGES.indep:%=-p%)
261         dh_builddeb          $(verbose) $(PACKAGES.indep:%=-p%)
262 endif
263
264 # Build architecture-dependent files here.
265 binary-arch: install-arch
266 ifneq ($(PACKAGES.arch),)
267         rm -f $(PACKAGES.arch:%=install-%-stamp)
268         dh_testdir
269         dh_testroot
270
271         version=`set -x; awk 'BEGIN{major=minor=0} /^NCURSES_MAJOR/{major=$$3} /^NCURSES_MINOR/{minor=$$3} END{print major "." minor}' < dist.mk`; \
272         sed -i \
273                 -e "s, usr/lib, usr/lib/$(DEB_HOST_MULTIARCH)," \
274                 -e "s,6\.1,$${version}," \
275                 debian/*.lintian-overrides
276
277         dh_lintian           $(verbose) $(PACKAGES.arch:%=-p%)
278         dh_installdocs       $(verbose) $(PACKAGES.arch:%=-p%)
279         dh_installchangelogs $(verbose) $(PACKAGES.arch:%=-p%)  NEWS
280         dh_strip             $(verbose) $(PACKAGES.arch:%=-p%)
281         dh_compress          $(verbose) $(PACKAGES.arch:%=-p%)
282         dh_fixperms          $(verbose) $(PACKAGES.arch:%=-p%)
283         dh_installdeb        $(verbose) $(PACKAGES.arch:%=-p%)
284         dh_makeshlibs        $(verbose) $(PACKAGES.arch:%=-p%)
285         dh_shlibdeps         $(verbose) $(PACKAGES.arch:%=-p%)
286         dh_gencontrol        $(verbose) $(PACKAGES.arch:%=-p%)
287         dh_md5sums           $(verbose) $(PACKAGES.arch:%=-p%)
288         dh_builddeb          $(verbose) $(PACKAGES.arch:%=-p%)
289 endif