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