7 unexport LANG LC_ALL LC_CTYPE LC_COLLATE LC_TIME LC_NUMERIC LC_MESSAGES
9 # architecture dependent variables
10 DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
11 DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH)
12 DEB_HOST_ARCH_OS := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
13 DEB_HOST_GNU_CPU := $(shell dpkg-architecture -qDEB_HOST_GNU_CPU)
14 DEB_HOST_GNU_SYSTEM := $(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM)
15 DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
18 #PKGVERSION := $(shell dpkg-parsechangelog \
19 # | sed -n '/Version:/s/\(.* \)\(.*\)-2\(.*\)/\2\3/p')
21 #dpkg_ctrl_args := -v$(PKGVERSION) -VBinary-Version=$(PKGVERSION)
31 IX = install -o 0 -g 0
32 ID = install -o 0 -g 0 -m 644
34 # built with installed libreadline?
35 with_installed_rl = no
41 p_bins = bash-builtins
46 d_stat = debian/$(p_stat)
47 d_bins = debian/$(p_bins)
48 d_doc = debian/$(p_doc)
49 d_bdb = debian/$(p_bdb)
55 --infodir=/usr/share/info \
56 --mandir=/usr/share/man
57 ifeq ($(with_installed_rl),yes)
58 conf_args += --with-installed-readline
61 ifeq ($(distribution),SLP)
62 conf_args += --without-bash-malloc
65 static_conf_args := $(conf_args) \
66 --enable-static-link \
67 --without-bash-malloc \
68 --host=$(DEB_HOST_GNU_TYPE)
70 conf_args += --host=$(DEB_HOST_GNU_TYPE)
72 ifeq ($(distribution),SLP)
73 build: before-build bash-build
75 #build: bash-build static-build preinst-build all-bashdb-build check
76 build: before-build bash-build static-build preinst-build check
80 : # see #327477, needed to have HAVE_DEV_STDIN defined
81 (test -d /dev/fd && test -r /dev/stdin < /dev/null) \
82 || (test -d /proc/self/fd && test -r /dev/stdin < /dev/null)
83 ifneq (,$(findstring $(DEB_HOST_ARCH_OS), linux freebsd))
84 $(CC) $(CFLAGS) -o clear_console debian/clear_console.c -lncurses
87 # ---------------------------------------------------------------------------
91 $(MAKE) -f debian/rules do-build-bash \
93 bash_patches="$(debian_patches)" \
95 configure_args="$(conf_args)"
97 $(MAKE) -f debian/rules do-configure-bash \
99 bash_patches="$(debian_patches)" \
101 configure_args="$(conf_args)"
103 # ---------------------------------------------------------------------------
107 $(MAKE) -f debian/rules do-build-static \
109 bash_patches="$(debian_patches)" \
111 configure_args="$(static_conf_args)"
113 $(MAKE) -f debian/rules do-configure-static \
115 bash_patches="$(debian_patches)" \
117 configure_args="$(static_conf_args)"
119 # ---------------------------------------------------------------------------
120 # build standard bash
122 all-bashdb-build: bashdb-build #bashdb-doc-build
125 DEBUGGER_START_FILE=/usr/share/bashdb/dbg-main.inc \
126 $(MAKE) -f debian/rules do-build-bashdb \
128 bash_patches="$(bashdb_patches)" \
130 configure_args="$(conf_args)"
132 DEBUGGER_START_FILE=/usr/share/bashdb/dbg-main.inc \
133 $(MAKE) -f debian/rules do-configure-bashdb \
135 bash_patches="$(bashdb_patches)" \
137 configure_args="$(conf_args)"
139 bashdb-doc-build: stamps/stamp-build-bashdb-doc
140 stamps/stamp-build-bashdb-doc:
141 cp -p build-bashdb/doc/version.texi bashdb/doc/
142 cp -p build-bashdb/debugger/doc/version.texi bashdb/debugger/doc/
143 # $(MAKE) -C build-bashdb doc
144 $(MAKE) -C build-bashdb/debugger/doc
145 touch stamps/stamp-build-bashdb-doc
147 # ---------------------------------------------------------------------------
149 bash-doc-build: stamps/stamp-build-bash-doc
150 stamps/stamp-build-bash-doc:
151 ifeq ($(with_gfdl),yes)
152 rm -f bash/doc/bashref.info
153 $(MAKE) -C build-bash/doc bashref.info bashref.pdf
155 $(MAKE) -C build-bash/doc bash.html bash.pdf
156 touch stamps/stamp-build-bash-doc
158 # ---------------------------------------------------------------------------
160 check: stamps/stamp-check
161 stamps/stamp-check: bash-build
163 ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
164 ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
165 -sh debian/locale-gen
166 LOCPATH=$(CURDIR)/locales \
167 time $(MAKE) -C build-bash test 2>&1 | tee build-bash/test-protocol
170 @echo Suppress 'make' test, because this is cross build
173 touch stamps/stamp-check
175 # ---------------------------------------------------------------------------
180 rm -rf stamps build-* bash bashdb
181 ifeq ($(distribution),SLP)
184 rm -f debian/bash.preinst debian/*.o
186 rm -f debian/README.Debian
191 preinst-build: debian/bash.preinst
192 debian/bash.preinst: debian/bash.preinst.c debian/md5.c debian/md5.h
193 $(CC) -O2 -c -Idebian -o debian/md5.o debian/md5.c
194 $(CC) -O2 -c -Idebian -o debian/bash.preinst.o debian/bash.preinst.c
195 $(CC) -O2 -s -o debian/bash.preinst debian/md5.o debian/bash.preinst.o
197 # ---------------------------------------------------------------------------
200 install: bash-install #bashdb-install
202 bash-install: bash-build stamps/stamp-install-bash
203 stamps/stamp-install-bash: stamps/stamp-build-bash
206 dh_clean -k -p$(p) -p$(p_doc) -p$(p_bins)
207 dh_installdirs -p$(p) \
211 dh_installdirs -p$(p_doc) \
213 dh_installdirs -p$(p_bins) \
214 usr/share/doc/$(p)/examples/loadables \
215 usr/include/bash/{builtins,lib/{glob,tilde}}
217 ifeq ($(with_gfdl),yes)
219 cp -p build-bash/doc/*.info bash/doc/
223 $(MAKE) -C build-bash install \
227 DESTDIR=$(CURDIR)/$(d)
228 mv $(d)/usr/bin/bash $(d)/bin/.
229 chmod 755 $(d)/usr/bin/bashbug
230 $(ID) debian/bashbug.1 $(d)/usr/share/man/man1/
231 ifneq ($(with_gfdl),yes)
232 mkdir -p $(d)/usr/share/man/man1
233 cp -p bash/doc/bash.1 $(d)/usr/share/man/man1/bash.1
237 ln -sf bash $(d)/bin/rbash
238 # : # now shipped by dash
239 ifneq ($(distribution),SLP)
240 ln -sf bash $(d)/bin/sh
241 ln -sf bash.1 $(d)/usr/share/man/man1/sh.1
245 $(ID) debian/etc.bash.bashrc $(d)/etc/bash.bashrc
246 $(ID) debian/skel.bashrc $(d)/etc/skel/.bashrc
247 $(ID) debian/skel.profile $(d)/etc/skel/.profile
248 $(ID) debian/skel.bash_logout $(d)/etc/skel/.bash_logout
251 ifneq (,$(findstring $(DEB_HOST_ARCH_OS), linux freebsd))
252 $(IX) clear_console $(d)/usr/bin/
253 $(ID) debian/clear_console.1 $(d)/usr/share/man/man1/
257 : # install bash-completion
258 mkdir -p $(d)/etc/bash_completion.d
259 $(ID) debian/bash_completion/bash_completion $(d)/etc/.
260 cp -a debian/bash_completion/contrib \
261 $(d)/usr/share/doc/$(p)/completion-contrib
262 chmod 755 $(d)/usr/share/doc/$(p)/completion-contrib
263 chmod 644 $(d)/usr/share/doc/$(p)/completion-contrib/*
264 $(ID) debian/bash_completion/Changelog \
265 $(d)/usr/share/doc/$(p)/changelog.bash_completion
266 $(ID) debian/README.bash_completion $(d)/usr/share/doc/$(p)/
267 cat debian/bash_completion/README \
268 >> $(d)/usr/share/doc/$(p)/README.bash_completion
269 $(ID) debian/bash_completion/BUGS \
270 $(d)/usr/share/doc/bash/BUGS.bash_completion
273 ifeq ($(with_gfdl),yes)
274 : # files for the bash-doc package
275 mv $(d)/usr/share/info/bash.info $(d)/usr/share/info/bashref.info
276 ln -sf bashref.info $(d)/usr/share/info/bash.info
277 mv $(d)/usr/share/info $(d_doc)/usr/share/
279 rmdir $(d)/usr/share/info
282 dh_installexamples -p$(p_doc) bash/examples/*
283 mv $(d_doc)/usr/share/doc/$(p_doc)/examples \
284 $(d_doc)/usr/share/doc/$(p)/examples
285 rm -rf $(d_doc)/usr/share/doc/$(p)/examples/loadables
286 ln -sf ../$(p)/examples $(d_doc)/usr/share/doc/$(p_doc)/examples
288 cd $(d_doc)/usr/share/doc/$(p)/examples && chmod 644 \
289 *bashdb/PERMISSION complete/complete.gnu-longopt
290 cd $(d_doc)/usr/share/doc/$(p)/examples && chmod 755 \
291 misc/aliasconv.*sh misc/cshtobash
293 cd $(d_doc)/usr/share/doc/$(p)/examples && chmod 644 \
294 scripts/shprompt scripts/precedence \
295 scripts/bcsh.sh scripts/krand.bash
297 : # files for the bash-builtins package
298 $(ID) bash/include/*.h bash/*.h $(d_bins)/usr/include/bash/
299 $(ID) build-bash/*.h $(d_bins)/usr/include/bash/
300 rm -f $(d_bins)/usr/include/bash/y.tab.h
301 $(ID) bash/builtins/*.h $(d_bins)/usr/include/bash/builtins/
302 $(ID) bash/lib/glob/*.h $(d_bins)/usr/include/bash/lib/glob/
303 $(ID) bash/lib/tilde/*.h $(d_bins)/usr/include/bash/lib/tilde/
304 $(ID) bash/examples/loadables/{README,*.c} \
305 $(d_bins)/usr/share/doc/$(p)/examples/loadables
306 $(ID) build-bash/examples/loadables/Makefile \
307 $(d_bins)/usr/share/doc/$(p)/examples/loadables
308 ln -sf bash $(d_bins)/usr/share/doc/$(p_bins)
310 cat debian/README stamps/stamp-patch-bash > debian/README.Debian
312 touch stamps/stamp-install-bash
314 bashdb-install: stamps/stamp-install-bashdb
315 stamps/stamp-install-bashdb: stamps/stamp-build-bashdb
318 dh_clean -k -p$(p_bdb)
319 dh_installdirs -p$(p_bdb) \
320 usr/share/doc/$(p_bdb) \
321 usr/share/emacs/site-lisp/$(p_bdb)
324 $(MAKE) -C build-bashdb install \
328 DESTDIR=$(CURDIR)/$(d_bdb)
329 rm -f $(d_bdb)/usr/bin/bashbug
330 rm -f $(d_bdb)/usr/share/man/man1/bashbug.1
331 rm -f $(d_bdb)/usr/share/info/*
333 mv $(d_bdb)/usr/share/man/man1/bash.1 \
334 $(d_bdb)/usr/share/man/man1/bash+dbg.1
336 $(MAKE) -C build-bashdb/debugger/doc install \
337 DESTDIR=$(CURDIR)/$(d_bdb)
338 cp -p build-bashdb/debugger/doc/bashdb.html \
339 $(d_bdb)/usr/share/doc/$(p_bdb)/.
340 cp -p build-bashdb/debugger/doc/bashdb.1 \
341 $(d_bdb)/usr/share/man/man1/.
344 mv $(d_bdb)/usr/bin/bash $(d_bdb)/usr/bin/bash+dbg
345 sed -e 's,/usr/bin/bash,/usr/bin/bash+dbg,g' \
346 -e 's,/lib/bashdb,/share/bashdb,g' \
347 $(d_bdb)/usr/bin/bashdb > $(d_bdb)/usr/bin/bashdb.new
348 mv -f $(d_bdb)/usr/bin/bashdb.new $(d_bdb)/usr/bin/bashdb
349 chmod 755 $(d_bdb)/usr/bin/bashdb
350 cp -p bashdb/debugger/emacs/*.el \
351 $(d_bdb)/usr/share/emacs/site-lisp/$(p_bdb)/
353 touch stamps/stamp-install-bashdb
355 binary-doc: bash-install bash-doc-build
358 mkdir -p $(d_doc)/usr/share/doc/$(p)
359 dh_installdocs -p$(p_doc)
360 ifeq ($(with_gfdl),yes)
361 cp -p build-bash/doc/bashref.pdf $(d_doc)/usr/share/doc/$(p)/.
363 /usr/share/doc/$(p)/bashref.pdf /usr/share/doc/$(p_doc)/bashref.pdf
365 rm -f $(d_doc)/usr/share/doc-base/bashref
367 cp -p build-bash/doc/bash.html build-bash/doc/bash.pdf \
368 $(d_doc)/usr/share/doc/$(p)/
370 /usr/share/doc/$(p)/bash.html /usr/share/doc/$(p_doc)/bash.html \
371 /usr/share/doc/$(p)/bash.pdf /usr/share/doc/$(p_doc)/bash.pdf
372 dh_installchangelogs -p$(p_doc) bash/CWRU/changelog
373 dh_compress -p$(p_doc) -Xexamples -X.pdf
374 dh_fixperms -p$(p_doc)
375 dh_installdeb -p$(p_doc)
376 dh_gencontrol -p$(p_doc)
377 dh_md5sums -p$(p_doc)
378 dh_builddeb -p$(p_doc)
380 ifeq ($(distribution),SLP)
381 binary-bash: bash-install
383 binary-bash: bash-install debian/bash.preinst
387 dh_installchangelogs -p$(p)
388 dh_installdocs -p$(p) \
389 bash/{CHANGES,NEWS,COMPAT,doc/INTRO,POSIX} \
390 debian/{README.Debian,README.abs-guide,README.commands} \
391 debian/inputrc.arrows
392 ifeq ($(with_gfdl),yes)
393 cp -p bash/doc/FAQ $(d)/usr/share/doc/$(p)/.
395 cp -p debian/FAQ $(d)/usr/share/doc/$(p)/.
396 dh_installman -p$(p) bash/doc/rbash.1 debian/bash-builtins.7
397 dh_installmenu -p$(p)
401 dh_shlibdeps -p$(p) -- -dPre-Depends $(d)/bin/bash debian/bash.preinst
407 # Even though it contains only headers and example files,
408 # bash-builtins is NOT arch-independent because the config.h* files
409 # differ on different archs.
410 binary-builtins: bash-install
413 dh_compress -p$(p_bins) -Xexamples
414 dh_fixperms -p$(p_bins)
415 dh_installdeb -p$(p_bins)
416 dh_gencontrol -p$(p_bins)
417 dh_md5sums -p$(p_bins)
418 dh_builddeb -p$(p_bins)
420 binary-static: static-build
423 dh_clean -k -p$(p_stat)
424 dh_installdirs -p$(p_stat) \
427 cp -p build-static/bash $(d_stat)/bin/bash-static
428 cp -p bash/doc/bash.1 $(d_stat)/usr/share/man/man1/bash-static.1
429 dh_installdocs -p$(p_stat)
430 dh_installchangelogs -p$(p_stat)
432 dh_compress -p$(p_stat)
433 dh_fixperms -p$(p_stat)
434 dh_installdeb -p$(p_stat)
435 dh_gencontrol -p$(p_stat)
436 dh_md5sums -p$(p_stat)
437 dh_builddeb -p$(p_stat)
439 binary-bashdb: bashdb-install
442 dh_installdocs -p$(p_bdb) \
443 bashdb/{CHANGES,NEWS,README}
444 cp -p debian/README.bashdb $(d_bdb)/usr/share/doc/$(p_bdb)/README.Debian
445 for i in AUTHORS CHANGES NEWS README THANKS TODO; do \
446 cp -p bashdb/debugger/$$i \
447 $(d_bdb)/usr/share/doc/$(p_bdb)/$$i.bashdb; \
449 dh_installdocs -p$(p_bdb)
450 dh_installchangelogs -p$(p_bdb) bashdb/debugger/ChangeLog
451 dh_installemacsen -p$(p_bdb)
453 dh_compress -p$(p_bdb)
454 dh_fixperms -p$(p_bdb)
455 dh_installdeb -p$(p_bdb)
456 dh_gencontrol -p$(p_bdb)
457 dh_md5sums -p$(p_bdb)
458 dh_builddeb -p$(p_bdb)
460 ifeq ($(distribution),SLP)
462 binary-arch: binary-bash
464 binary-indep: binary-doc
465 binary-arch: binary-bash binary-builtins binary-static #binary-bashdb
467 binary: binary-indep binary-arch
469 # ---------------------------------------------------------------------------
470 # common rules for all bash build variations
472 do-build-$(build): stamps/stamp-build-$(build)
473 stamps/stamp-build-$(build): stamps/stamp-configure-$(build)
475 ifneq (,$(profiled_build))
476 $(MAKE) -C build-$(build) \
478 CFLAGS='$(CFLAGS) -fprofile-generate' \
480 deb_builddir=build-$(build)/ \
482 -sh debian/locale-gen
483 cp debian/run-my-gprof bash/tests/
484 LOCPATH=$(CURDIR)/locales \
485 time $(MAKE) -C build-$(build) TESTSCRIPT=run-my-gprof test 2>&1 \
486 | tee build-bash/profile-protocol
487 $(MAKE) -C build-$(build) clean
488 rm -f build-$(build)/lib/malloc/malloc*.gc??
489 $(MAKE) -C build-$(build) \
491 CFLAGS='$(CFLAGS) -fprofile-use' \
493 deb_builddir=build-$(build)/ \
496 $(MAKE) -C build-$(build) \
500 deb_builddir=build-$(build)/ \
503 ifeq ($(with_gfdl),yes)
504 $(MAKE) -C build-$(build)/doc \
507 touch stamps/stamp-build-$(build)
509 do-configure-$(build): stamps/stamp-configure-$(build)
510 stamps/stamp-configure-$(build): stamps/stamp-patch-$(bash_src)
512 rm -rf build-$(build)
514 cd build-$(build) && \
515 CC="$(CC)" CFLAGS="$(CFLAGS)" YACC="$(YACC)" \
516 ../$(bash_src)/configure $(configure_args)
517 if ! grep -q '#define HAVE_DEV_STDIN 1' build-$(build)/config.h; then \
518 echo "HAVE_DEV_STDIN not defined, abortig build"; \
521 touch stamps/stamp-configure-$(build)
523 patchdir = debian/patches
543 bash-default-editor \
544 bash-subst-param-length \
547 exec-redirections-man \
548 bash-aliases-repeat \
549 builtins-declare-fix \
551 ifeq ($(with_gfdl),yes)
553 man-substring-exp-doc \
555 exec-redirections-texi \
559 # all debian_patches, without bash205b-*
560 # patches integrated in bashdb: builtins-shift, execute-cmd, man-arithmetic,
561 # man-builtin, man-fignore, random, rbash-manpage, report-155436,
562 # rl-8bit-init, s390-build
577 # these are applied in bashdb cvs as well
585 patch-$(bash_src): stamps/stamp-patch-$(bash_src)
586 stamps/stamp-patch-$(bash_src): stamps/stamp-unpack-$(bash_src) \
587 $(foreach p,$(bash_patches),stamps/stamp-patch-$(bash_src)-$(p))
588 echo -e "\nPatches applied in this version:" > pxxx
589 for i in $(bash_patches); do \
590 echo -e "\n$$i:" >> pxxx; \
591 sed -n 's/^# *DP: */ /p' $(patchdir)/$$i.dpatch >> pxxx; \
595 stamps/stamp-patch-$(bash_src)-%: $(patchdir)/%.dpatch
597 echo "$* patches already applied."; exit 1; \
599 sh -e $< -patch -d $(bash_src)
600 echo "$* patches applied." > $@
602 unpack-$(bash_src): stamps/stamp-unpack-$(bash_src)
603 stamps/stamp-unpack-$(bash_src):
605 rm -rf bash-$(VERSION) $(bash_src)
606 rm -f stamps/stamp-patch-$(bash_src){,-*}
607 tar xf bash-$(VERSION)*.tar.xz
608 mv bash-$(VERSION) $(bash_src)
610 cp -p /usr/share/misc/config.* $(bash_src)/.
611 cp -p /usr/share/misc/config.* $(bash_src)/support/.
612 touch stamps/stamp-unpack-$(bash_src)
614 .PHONY: unpack patch binary binary-arch binary-indep clean \
615 build bash-build static-build preinst-build \
616 all-bashdb-build bashdb-build bashdb-doc-build \
618 bash-configure static-configure bashdb-configure \
619 binary-doc binary-bash binary-builtins binary-static binary-bashdb \
620 install bash-install bashdb-install