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