6 unexport LANG LC_ALL LC_CTYPE LC_COLLATE LC_TIME LC_NUMERIC LC_MESSAGES
8 # architecture dependent variables
9 DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
10 DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH)
11 DEB_HOST_ARCH_OS := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
12 DEB_HOST_GNU_CPU := $(shell dpkg-architecture -qDEB_HOST_GNU_CPU)
13 DEB_HOST_GNU_SYSTEM := $(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM)
14 DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
17 #PKGVERSION := $(shell dpkg-parsechangelog \
18 # | sed -n '/Version:/s/\(.* \)\(.*\)-2\(.*\)/\2\3/p')
20 #dpkg_ctrl_args := -v$(PKGVERSION) -VBinary-Version=$(PKGVERSION)
30 IX = install -o 0 -g 0
31 ID = install -o 0 -g 0 -m 644
33 # built with installed libreadline?
34 with_installed_rl = no
40 p_bins = bash-builtins
45 d_stat = debian/$(p_stat)
46 d_bins = debian/$(p_bins)
47 d_doc = debian/$(p_doc)
48 d_bdb = debian/$(p_bdb)
54 --infodir=/usr/share/info \
55 --mandir=/usr/share/man
56 ifeq ($(with_installed_rl),yes)
57 conf_args += --with-installed-readline
60 static_conf_args := $(conf_args) \
61 --enable-static-link \
62 --without-bash-malloc \
63 --host=$(DEB_HOST_GNU_TYPE)
65 conf_args += --host=$(DEB_HOST_GNU_TYPE)
67 #build: bash-build static-build preinst-build all-bashdb-build check
68 build: before-build bash-build static-build preinst-build check
71 : # see #327477, needed to have HAVE_DEV_STDIN defined
72 (test -d /dev/fd && test -r /dev/stdin < /dev/null) \
73 || (test -d /proc/self/fd && test -r /dev/stdin < /dev/null)
74 ifneq (,$(findstring $(DEB_HOST_ARCH_OS), linux freebsd))
75 $(CC) $(CFLAGS) -o clear_console debian/clear_console.c -lncurses
78 # ---------------------------------------------------------------------------
82 $(MAKE) -f debian/rules do-build-bash \
84 bash_patches="$(debian_patches)" \
86 configure_args="$(conf_args)"
88 $(MAKE) -f debian/rules do-configure-bash \
90 bash_patches="$(debian_patches)" \
92 configure_args="$(conf_args)"
94 # ---------------------------------------------------------------------------
98 $(MAKE) -f debian/rules do-build-static \
100 bash_patches="$(debian_patches)" \
102 configure_args="$(static_conf_args)"
104 $(MAKE) -f debian/rules do-configure-static \
106 bash_patches="$(debian_patches)" \
108 configure_args="$(static_conf_args)"
110 # ---------------------------------------------------------------------------
111 # build standard bash
113 all-bashdb-build: bashdb-build #bashdb-doc-build
116 DEBUGGER_START_FILE=/usr/share/bashdb/dbg-main.inc \
117 $(MAKE) -f debian/rules do-build-bashdb \
119 bash_patches="$(bashdb_patches)" \
121 configure_args="$(conf_args)"
123 DEBUGGER_START_FILE=/usr/share/bashdb/dbg-main.inc \
124 $(MAKE) -f debian/rules do-configure-bashdb \
126 bash_patches="$(bashdb_patches)" \
128 configure_args="$(conf_args)"
130 bashdb-doc-build: stamps/stamp-build-bashdb-doc
131 stamps/stamp-build-bashdb-doc:
132 cp -p build-bashdb/doc/version.texi bashdb/doc/
133 cp -p build-bashdb/debugger/doc/version.texi bashdb/debugger/doc/
134 # $(MAKE) -C build-bashdb doc
135 $(MAKE) -C build-bashdb/debugger/doc
136 touch stamps/stamp-build-bashdb-doc
138 # ---------------------------------------------------------------------------
140 bash-doc-build: stamps/stamp-build-bash-doc
141 stamps/stamp-build-bash-doc:
142 ifeq ($(with_gfdl),yes)
143 rm -f bash/doc/bashref.info
144 $(MAKE) -C build-bash/doc bashref.info bashref.pdf
146 $(MAKE) -C build-bash/doc bash.html bash.pdf
147 touch stamps/stamp-build-bash-doc
149 # ---------------------------------------------------------------------------
151 check: stamps/stamp-check
152 stamps/stamp-check: bash-build
154 ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
155 ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
156 -sh debian/locale-gen
157 LOCPATH=$(CURDIR)/locales \
158 time $(MAKE) -C build-bash test 2>&1 | tee build-bash/test-protocol
161 @echo Suppress 'make' test, because this is cross build
164 touch stamps/stamp-check
166 # ---------------------------------------------------------------------------
171 rm -rf stamps build-* bash bashdb
172 rm -f debian/bash.preinst debian/*.o
173 rm -f debian/README.Debian
178 preinst-build: debian/bash.preinst
179 debian/bash.preinst: debian/bash.preinst.c debian/md5.c debian/md5.h
180 $(CC) -O2 -c -Idebian -o debian/md5.o debian/md5.c
181 $(CC) -O2 -c -Idebian -o debian/bash.preinst.o debian/bash.preinst.c
182 $(CC) -O2 -s -o debian/bash.preinst debian/md5.o debian/bash.preinst.o
184 # ---------------------------------------------------------------------------
187 install: bash-install #bashdb-install
189 bash-install: bash-build stamps/stamp-install-bash
190 stamps/stamp-install-bash: stamps/stamp-build-bash
193 dh_clean -k -p$(p) -p$(p_doc) -p$(p_bins)
194 dh_installdirs -p$(p) \
198 dh_installdirs -p$(p_doc) \
200 dh_installdirs -p$(p_bins) \
201 usr/share/doc/$(p)/examples/loadables \
202 usr/include/bash/{builtins,lib/{glob,tilde}}
204 ifeq ($(with_gfdl),yes)
206 cp -p build-bash/doc/*.info bash/doc/
210 $(MAKE) -C build-bash install \
214 DESTDIR=$(CURDIR)/$(d)
215 mv $(d)/usr/bin/bash $(d)/bin/.
216 chmod 755 $(d)/usr/bin/bashbug
217 $(ID) debian/bashbug.1 $(d)/usr/share/man/man1/
218 ifneq ($(with_gfdl),yes)
219 mkdir -p $(d)/usr/share/man/man1
220 cp -p bash/doc/bash.1 $(d)/usr/share/man/man1/bash.1
224 ln -sf bash $(d)/bin/rbash
225 # : # now shipped by dash
226 ln -sf bash $(d)/bin/sh
227 ln -sf bash.1 $(d)/usr/share/man/man1/sh.1
230 $(ID) debian/etc.bash.bashrc $(d)/etc/bash.bashrc
231 $(ID) debian/skel.bashrc $(d)/etc/skel/.bashrc
232 $(ID) debian/skel.profile $(d)/etc/skel/.profile
233 $(ID) debian/skel.bash_logout $(d)/etc/skel/.bash_logout
236 ifneq (,$(findstring $(DEB_HOST_ARCH_OS), linux freebsd))
237 $(IX) clear_console $(d)/usr/bin/
238 $(ID) debian/clear_console.1 $(d)/usr/share/man/man1/
242 : # install bash-completion
243 mkdir -p $(d)/etc/bash_completion.d
244 $(ID) debian/bash_completion/bash_completion $(d)/etc/.
245 cp -a debian/bash_completion/contrib \
246 $(d)/usr/share/doc/$(p)/completion-contrib
247 chmod 755 $(d)/usr/share/doc/$(p)/completion-contrib
248 chmod 644 $(d)/usr/share/doc/$(p)/completion-contrib/*
249 $(ID) debian/bash_completion/Changelog \
250 $(d)/usr/share/doc/$(p)/changelog.bash_completion
251 $(ID) debian/README.bash_completion $(d)/usr/share/doc/$(p)/
252 cat debian/bash_completion/README \
253 >> $(d)/usr/share/doc/$(p)/README.bash_completion
254 $(ID) debian/bash_completion/BUGS \
255 $(d)/usr/share/doc/bash/BUGS.bash_completion
258 ifeq ($(with_gfdl),yes)
259 : # files for the bash-doc package
260 mv $(d)/usr/share/info/bash.info $(d)/usr/share/info/bashref.info
261 ln -sf bashref.info $(d)/usr/share/info/bash.info
262 mv $(d)/usr/share/info $(d_doc)/usr/share/
264 rmdir $(d)/usr/share/info
267 dh_installexamples -p$(p_doc) bash/examples/*
268 mv $(d_doc)/usr/share/doc/$(p_doc)/examples \
269 $(d_doc)/usr/share/doc/$(p)/examples
270 rm -rf $(d_doc)/usr/share/doc/$(p)/examples/loadables
271 ln -sf ../$(p)/examples $(d_doc)/usr/share/doc/$(p_doc)/examples
273 cd $(d_doc)/usr/share/doc/$(p)/examples && chmod 644 \
274 *bashdb/PERMISSION complete/complete.gnu-longopt
275 cd $(d_doc)/usr/share/doc/$(p)/examples && chmod 755 \
276 misc/aliasconv.*sh misc/cshtobash
278 cd $(d_doc)/usr/share/doc/$(p)/examples && chmod 644 \
279 scripts/shprompt scripts/precedence \
280 scripts/bcsh.sh scripts/krand.bash
282 : # files for the bash-builtins package
283 $(ID) bash/include/*.h bash/*.h $(d_bins)/usr/include/bash/
284 $(ID) build-bash/*.h $(d_bins)/usr/include/bash/
285 rm -f $(d_bins)/usr/include/bash/y.tab.h
286 $(ID) bash/builtins/*.h $(d_bins)/usr/include/bash/builtins/
287 $(ID) bash/lib/glob/*.h $(d_bins)/usr/include/bash/lib/glob/
288 $(ID) bash/lib/tilde/*.h $(d_bins)/usr/include/bash/lib/tilde/
289 $(ID) bash/examples/loadables/{README,*.c} \
290 $(d_bins)/usr/share/doc/$(p)/examples/loadables
291 $(ID) build-bash/examples/loadables/Makefile \
292 $(d_bins)/usr/share/doc/$(p)/examples/loadables
293 ln -sf bash $(d_bins)/usr/share/doc/$(p_bins)
295 cat debian/README stamps/stamp-patch-bash > debian/README.Debian
297 touch stamps/stamp-install-bash
299 bashdb-install: stamps/stamp-install-bashdb
300 stamps/stamp-install-bashdb: stamps/stamp-build-bashdb
303 dh_clean -k -p$(p_bdb)
304 dh_installdirs -p$(p_bdb) \
305 usr/share/doc/$(p_bdb) \
306 usr/share/emacs/site-lisp/$(p_bdb)
309 $(MAKE) -C build-bashdb install \
313 DESTDIR=$(CURDIR)/$(d_bdb)
314 rm -f $(d_bdb)/usr/bin/bashbug
315 rm -f $(d_bdb)/usr/share/man/man1/bashbug.1
316 rm -f $(d_bdb)/usr/share/info/*
318 mv $(d_bdb)/usr/share/man/man1/bash.1 \
319 $(d_bdb)/usr/share/man/man1/bash+dbg.1
321 $(MAKE) -C build-bashdb/debugger/doc install \
322 DESTDIR=$(CURDIR)/$(d_bdb)
323 cp -p build-bashdb/debugger/doc/bashdb.html \
324 $(d_bdb)/usr/share/doc/$(p_bdb)/.
325 cp -p build-bashdb/debugger/doc/bashdb.1 \
326 $(d_bdb)/usr/share/man/man1/.
329 mv $(d_bdb)/usr/bin/bash $(d_bdb)/usr/bin/bash+dbg
330 sed -e 's,/usr/bin/bash,/usr/bin/bash+dbg,g' \
331 -e 's,/lib/bashdb,/share/bashdb,g' \
332 $(d_bdb)/usr/bin/bashdb > $(d_bdb)/usr/bin/bashdb.new
333 mv -f $(d_bdb)/usr/bin/bashdb.new $(d_bdb)/usr/bin/bashdb
334 chmod 755 $(d_bdb)/usr/bin/bashdb
335 cp -p bashdb/debugger/emacs/*.el \
336 $(d_bdb)/usr/share/emacs/site-lisp/$(p_bdb)/
338 touch stamps/stamp-install-bashdb
340 binary-doc: bash-install bash-doc-build
343 mkdir -p $(d_doc)/usr/share/doc/$(p)
344 dh_installdocs -p$(p_doc)
345 ifeq ($(with_gfdl),yes)
346 cp -p build-bash/doc/bashref.pdf $(d_doc)/usr/share/doc/$(p)/.
348 /usr/share/doc/$(p)/bashref.pdf /usr/share/doc/$(p_doc)/bashref.pdf
350 rm -f $(d_doc)/usr/share/doc-base/bashref
352 cp -p build-bash/doc/bash.html build-bash/doc/bash.pdf \
353 $(d_doc)/usr/share/doc/$(p)/
355 /usr/share/doc/$(p)/bash.html /usr/share/doc/$(p_doc)/bash.html \
356 /usr/share/doc/$(p)/bash.pdf /usr/share/doc/$(p_doc)/bash.pdf
357 dh_installchangelogs -p$(p_doc) bash/CWRU/changelog
358 dh_compress -p$(p_doc) -Xexamples -X.pdf
359 dh_fixperms -p$(p_doc)
360 dh_installdeb -p$(p_doc)
361 dh_gencontrol -p$(p_doc)
362 dh_md5sums -p$(p_doc)
363 dh_builddeb -p$(p_doc)
365 binary-bash: bash-install debian/bash.preinst
368 dh_installchangelogs -p$(p)
369 dh_installdocs -p$(p) \
370 bash/{CHANGES,NEWS,COMPAT,doc/INTRO,POSIX} \
371 debian/{README.Debian,README.abs-guide,README.commands} \
372 debian/inputrc.arrows
373 ifeq ($(with_gfdl),yes)
374 cp -p bash/doc/FAQ $(d)/usr/share/doc/$(p)/.
376 cp -p debian/FAQ $(d)/usr/share/doc/$(p)/.
377 dh_installman -p$(p) bash/doc/rbash.1 debian/bash-builtins.7
378 dh_installmenu -p$(p)
382 dh_shlibdeps -p$(p) -- -dPre-Depends $(d)/bin/bash debian/bash.preinst
388 # Even though it contains only headers and example files,
389 # bash-builtins is NOT arch-independent because the config.h* files
390 # differ on different archs.
391 binary-builtins: bash-install
394 dh_compress -p$(p_bins) -Xexamples
395 dh_fixperms -p$(p_bins)
396 dh_installdeb -p$(p_bins)
397 dh_gencontrol -p$(p_bins)
398 dh_md5sums -p$(p_bins)
399 dh_builddeb -p$(p_bins)
401 binary-static: static-build
404 dh_clean -k -p$(p_stat)
405 dh_installdirs -p$(p_stat) \
408 cp -p build-static/bash $(d_stat)/bin/bash-static
409 cp -p bash/doc/bash.1 $(d_stat)/usr/share/man/man1/bash-static.1
410 dh_installdocs -p$(p_stat)
411 dh_installchangelogs -p$(p_stat)
413 dh_compress -p$(p_stat)
414 dh_fixperms -p$(p_stat)
415 dh_installdeb -p$(p_stat)
416 dh_gencontrol -p$(p_stat)
417 dh_md5sums -p$(p_stat)
418 dh_builddeb -p$(p_stat)
420 binary-bashdb: bashdb-install
423 dh_installdocs -p$(p_bdb) \
424 bashdb/{CHANGES,NEWS,README}
425 cp -p debian/README.bashdb $(d_bdb)/usr/share/doc/$(p_bdb)/README.Debian
426 for i in AUTHORS CHANGES NEWS README THANKS TODO; do \
427 cp -p bashdb/debugger/$$i \
428 $(d_bdb)/usr/share/doc/$(p_bdb)/$$i.bashdb; \
430 dh_installdocs -p$(p_bdb)
431 dh_installchangelogs -p$(p_bdb) bashdb/debugger/ChangeLog
432 dh_installemacsen -p$(p_bdb)
434 dh_compress -p$(p_bdb)
435 dh_fixperms -p$(p_bdb)
436 dh_installdeb -p$(p_bdb)
437 dh_gencontrol -p$(p_bdb)
438 dh_md5sums -p$(p_bdb)
439 dh_builddeb -p$(p_bdb)
441 binary-indep: binary-doc
442 binary-arch: binary-bash binary-builtins binary-static #binary-bashdb
443 binary: binary-indep binary-arch
445 # ---------------------------------------------------------------------------
446 # common rules for all bash build variations
448 do-build-$(build): stamps/stamp-build-$(build)
449 stamps/stamp-build-$(build): stamps/stamp-configure-$(build)
451 ifneq (,$(profiled_build))
452 $(MAKE) -C build-$(build) \
454 CFLAGS='$(CFLAGS) -fprofile-generate' \
456 deb_builddir=build-$(build)/ \
458 -sh debian/locale-gen
459 cp debian/run-my-gprof bash/tests/
460 LOCPATH=$(CURDIR)/locales \
461 time $(MAKE) -C build-$(build) TESTSCRIPT=run-my-gprof test 2>&1 \
462 | tee build-bash/profile-protocol
463 $(MAKE) -C build-$(build) clean
464 rm -f build-$(build)/lib/malloc/malloc*.gc??
465 $(MAKE) -C build-$(build) \
467 CFLAGS='$(CFLAGS) -fprofile-use' \
469 deb_builddir=build-$(build)/ \
472 $(MAKE) -C build-$(build) \
476 deb_builddir=build-$(build)/ \
479 ifeq ($(with_gfdl),yes)
480 $(MAKE) -C build-$(build)/doc \
483 touch stamps/stamp-build-$(build)
485 do-configure-$(build): stamps/stamp-configure-$(build)
486 stamps/stamp-configure-$(build): stamps/stamp-patch-$(bash_src)
488 rm -rf build-$(build)
490 cd build-$(build) && \
491 CC="$(CC)" CFLAGS="$(CFLAGS)" YACC="$(YACC)" \
492 ../$(bash_src)/configure $(configure_args)
493 if ! grep -q '#define HAVE_DEV_STDIN 1' build-$(build)/config.h; then \
494 echo "HAVE_DEV_STDIN not defined, abortig build"; \
497 touch stamps/stamp-configure-$(build)
499 patchdir = debian/patches
519 bash-default-editor \
520 bash-subst-param-length \
523 exec-redirections-man \
524 bash-aliases-repeat \
525 builtins-declare-fix \
526 0001-Disable-all-exported-shell-functions \
528 ifeq ($(with_gfdl),yes)
530 man-substring-exp-doc \
532 exec-redirections-texi \
536 # all debian_patches, without bash205b-*
537 # patches integrated in bashdb: builtins-shift, execute-cmd, man-arithmetic,
538 # man-builtin, man-fignore, random, rbash-manpage, report-155436,
539 # rl-8bit-init, s390-build
554 # these are applied in bashdb cvs as well
562 patch-$(bash_src): stamps/stamp-patch-$(bash_src)
563 stamps/stamp-patch-$(bash_src): stamps/stamp-unpack-$(bash_src) \
564 $(foreach p,$(bash_patches),stamps/stamp-patch-$(bash_src)-$(p))
565 echo -e "\nPatches applied in this version:" > pxxx
566 for i in $(bash_patches); do \
567 echo -e "\n$$i:" >> pxxx; \
568 sed -n 's/^# *DP: */ /p' $(patchdir)/$$i.dpatch >> pxxx; \
572 stamps/stamp-patch-$(bash_src)-%: $(patchdir)/%.dpatch
574 echo "$* patches already applied."; exit 1; \
576 sh -e $< -patch -d $(bash_src)
577 echo "$* patches applied." > $@
579 unpack-$(bash_src): stamps/stamp-unpack-$(bash_src)
580 stamps/stamp-unpack-$(bash_src):
582 rm -rf bash-$(VERSION) $(bash_src)
583 rm -f stamps/stamp-patch-$(bash_src){,-*}
584 tar xf bash-$(VERSION)*.tar.xz
585 mv bash-$(VERSION) $(bash_src)
587 cp -p /usr/share/misc/config.* $(bash_src)/.
588 cp -p /usr/share/misc/config.* $(bash_src)/support/.
589 touch stamps/stamp-unpack-$(bash_src)
591 .PHONY: unpack patch binary binary-arch binary-indep clean \
592 build bash-build static-build preinst-build \
593 all-bashdb-build bashdb-build bashdb-doc-build \
595 bash-configure static-configure bashdb-configure \
596 binary-doc binary-bash binary-builtins binary-static binary-bashdb \
597 install bash-install bashdb-install