#!/usr/bin/make -f INSTALL = install INSTALL_FILE = $(INSTALL) -p -o root -g root -m 644 INSTALL_PROGRAM = $(INSTALL) -p -o root -g root -m 755 INSTALL_SCRIPT = $(INSTALL) -p -o root -g root -m 755 INSTALL_DIR = $(INSTALL) -p -d -o root -g root -m 755 package=zsh ifeq (zsh-beta,$(package)) snapshot_date := $(shell dpkg-parsechangelog | sed -n '/^Version: [0-9.][0-9.]*.*+20[0-9][0-9]\([0-9][0-9][0-9][0-9]\)-[0-9][0-9]*$$/ {s//\1/;p}') endif -include /usr/share/dpkg/buildflags.mk export CFLAGS LDFLAGS CPPFLAGS H_LDFLAGS = $(LDFLAGS) CFLAGS += -Wall -g ifeq (zsh-beta,$(package)) CFLAGS += -W endif CONFIGFLAGS = --prefix=/usr --mandir=/usr/share/man --bindir=/bin LDFLAGS="-Wl,--as-needed -g $(H_LDFLAGS)" ifeq (zsh-beta,$(package)) CONFIGFLAGS += --program-suffix=-beta endif CONFIGFLAGS += --infodir=/usr/share/info --enable-maildir-support CONFIGFLAGS += --enable-max-jobtable-size=256 --enable-etcdir=/etc/$(package) CONFIGFLAGS += --enable-function-subdirs CONFIGFLAGS += --enable-site-fndir=/usr/local/share/$(package)/site-functions CONFIGFLAGS += --enable-fndir=/usr/share/$(package)/functions CONFIGFLAGS += --with-tcsetpgrp --with-term-lib="ncursesw tinfo" CONFIGFLAGS += --enable-cap --enable-pcre CONFIGFLAGS += --enable-readnullcmd=pager CONFIGFLAGS += --enable-custom-patchlevel=Debian CONFIGFLAGS += --enable-additional-fpath=/usr/share/zsh/vendor-functions,/usr/share/zsh/vendor-completions STATICFLAGS = --disable-dynamic --enable-ldflags=-static ifneq (zsh-beta,$(package)) STATICFLAGS += --disable-dynamic-nss endif ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) CONFIGFLAGS += --enable-zsh-debug --enable-zsh-mem-debug --enable-zsh-mem-warning --enable-zsh-secure-free --enable-zsh-hash-debug endif ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O0 else CFLAGS += -O2 endif ifeq (zsh-beta,$(package)) ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) INSTALL_PROGRAM += -s endif endif build: stamp-configure $(checkdir) ifeq (zsh-beta,$(package)) touch stamp-h.in endif cd obj && $(MAKE) -cd obj && HOME="$(CURDIR)/obj/testhome" $(MAKE) check ifeq (zsh,$(package)) cd obj && $(MAKE) pdf endif touch build build-static: stamp-configure-static $(checkdir) cd obj-static && $(MAKE) touch build-static build-debug: DEB_BUILD_OPTIONS+=debug build-debug: build stamp-configure: $(checkdir) touch stamp-h.in configure chmod 755 configure mkdir -p obj/testhome ifeq (zsh-beta,$(package)) test -f Config/version.mk.orig || cp Config/version.mk Config/version.mk.orig sed -i -e 's/^VERSION=\([^+]*\)$$/VERSION=\1-cvs$(snapshot_date)/' Config/version.mk endif cd obj && CFLAGS='$(CFLAGS)' ../configure $(CONFIGFLAGS) touch stamp-configure stamp-configure-static: $(checkdir) mkdir obj-static cd obj-static && CFLAGS='$(CFLAGS)' ../configure $(CONFIGFLAGS) $(STATICFLAGS) # cp debian/static.conf obj-static/Src/mymods.conf sed -i -e 's/files.mdd link=no/files.mdd link=static/;s/stat.mdd link=no/stat.mdd link=static/' obj-static/config.modules touch stamp-configure-static clean: $(checkdir) ifeq (zsh-beta,$(package)) test ! -f Config/version.mk.orig || mv Config/version.mk.orig Config/version.mk endif -rm -f build build-static if test -d obj && cd obj && test -f Makefile; then $(MAKE) distclean; fi if test -d obj-static && cd obj-static && test -f Makefile; then $(MAKE) distclean; fi ifneq (zsh-beta,$(package)) test ! -f Makefile || $(MAKE) distclean endif -rm -f `find . -name "*~"` \ debian/files* core debian/*ubstvars \ stamp-configure stamp-configure-static \ config.cache config.status config.status.lineno \ Doc/zsh.idx config.h.in~ -rm -rf debian/tmp debian/tmp-doc debian/tmp-static debian/tmp-dbg \ debian/tmp-dev config.cache obj obj-static \ autom4te.cache binary-indep: checkroot build $(checkdir) -rm -rf debian/tmp-doc $(INSTALL_DIR) debian/tmp-doc cd debian/tmp-doc && $(INSTALL_DIR) usr/share/doc-base \ usr/share/info \ usr/share/doc/$(package)-doc/html \ DEBIAN -cd obj && $(MAKE) install.info DESTDIR=$(CURDIR)/debian/tmp-doc rm -f debian/tmp-doc/usr/share/info/dir* gzip -9frq debian/tmp-doc/usr/share/info/* cd obj && $(MAKE) install.html DESTDIR=$(CURDIR)/debian/tmp-doc htmldir=/usr/share/doc/$(package)-doc/html # Work around texi2html unfriendliness sed -i -e 's///' debian/tmp-doc/usr/share/doc/$(package)-doc/html/*.html ifeq (zsh,$(package)) $(INSTALL_FILE) obj/Doc/zsh.pdf debian/tmp-doc/usr/share/doc/$(package)-doc/ endif $(INSTALL_FILE) debian/copyright debian/tmp-doc/usr/share/doc/$(package)-doc/copyright $(INSTALL_FILE) debian/changelog debian/tmp-doc/usr/share/doc/$(package)-doc/changelog.Debian gzip -9frq debian/tmp-doc/usr/share/doc/$(package)-doc/changelog.Debian $(INSTALL_FILE) debian/$(package).doc-base debian/tmp-doc/usr/share/doc-base/$(package) cd debian/tmp-doc && find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums dpkg-gencontrol -isp -p$(package)-doc -Pdebian/tmp-doc chown -R root.root debian/tmp-doc chmod -R go=rX debian/tmp-doc dpkg --build debian/tmp-doc .. ifneq (zsh-beta,$(package)) binary-arch: binary-arch-dynamic binary-arch-static binary-arch-dev else binary-arch: binary-arch-dynamic endif binary-arch-dynamic: checkroot build $(checkdir) -rm -rf debian/tmp debian/tmp-dbg $(INSTALL_DIR) debian/tmp debian/tmp-dbg/usr/lib/debug/bin debian/tmp-dbg/DEBIAN cd debian/tmp && $(INSTALL_DIR) etc/$(package) \ bin \ usr/lib/$(package) \ usr/share/menu \ usr/share/man \ usr/share/$(package)/help \ usr/share/doc/$(package)/examples/Functions \ usr/share/doc/$(package)/examples/Misc \ usr/share/doc/$(package)/examples/old \ DEBIAN cd obj && $(MAKE) install.man DESTDIR=$(CURDIR)/debian/tmp nroff -mandoc -Tascii Doc/zshbuiltins.1 | colcrt - | \ sed -e 's/±/{+|-}/' | ( cd debian/tmp/usr/share/$(package)/help && \ perl $(CURDIR)/Util/helpfiles ) ifeq (zsh-beta,$(package)) sed -r -i -e \ 's/zsh(all|builtins|compctl|compsys|compwid|contrib|expn|misc|modules|options|param|roadmap|tcpsys|zftpsys|zle|calsys)/$(package)\1/g' \ debian/tmp/usr/share/man/man1/*.1 endif # functions $(INSTALL_FILE) -m 644 Misc/* debian/tmp/usr/share/doc/$(package)/examples/Misc/. $(INSTALL_FILE) -m 644 Functions/Example/* debian/tmp/usr/share/doc/$(package)/examples/Functions/. sed -i -e '1!b;s:^#!.*[ /]zsh:#!/bin/$(package):;s#/usr/local/bin#/usr/bin#' \ debian/tmp/usr/share/doc/$(package)/examples/Misc/* $(INSTALL_FILE) StartupFiles/* debian/tmp/usr/share/doc/$(package)/examples/. $(INSTALL_FILE) Util/reporter debian/tmp/usr/share/doc/$(package)/examples/. $(INSTALL_FILE) debian/examples/ssh_completion \ debian/examples/ssh_completion2 \ debian/examples/carstenh.zshrc \ debian/tmp/usr/share/doc/$(package)/examples/. ifneq (zsh-beta,$(package)) $(INSTALL_FILE) debian/examples/compctl.dpkg debian/examples/jhm.zshrc debian/tmp/usr/share/doc/$(package)/examples/old/. endif cd obj && $(MAKE) install.bin DESTDIR=$(CURDIR)/debian/tmp INSTALL_PROGRAM='$(INSTALL_PROGRAM)' cd obj && $(MAKE) install.modules DESTDIR=$(CURDIR)/debian/tmp INSTALL_PROGRAM='$(INSTALL_PROGRAM)' cd obj && $(MAKE) install.fns DESTDIR=$(CURDIR)/debian/tmp rm -r debian/tmp/usr/local # move this to a non-root section; also drop it for cross-compiles awk '/^#define FPATH_DIR/ { head=$$3; gsub(/"/,"",head); }; /^#define FPATH_SUBDIRS/ { $$1=""; $$2=""; gsub(/[" ]/,""); tail=$$0; } END { printf "%s/%s\n", head, tail; };' obj/Src/zshpaths.h >obj/Src/zshpaths.temp debian/tmp/bin/$(package) -fc 'setopt extendedglob; for i in debian/tmp/'`cat obj/Src/zshpaths.temp`'; do zcompile -U -M $$i.zwc $$i/*~*.zwc(^/) ; chmod 644 $$i.zwc ; done' ifneq (zsh-beta,$(package)) mv debian/tmp/bin/zsh debian/tmp/bin/zsh5 rm debian/tmp/bin/zsh-5.[0-9]* ln -s zsh.1.gz debian/tmp/usr/share/man/man1/zsh5.1.gz for i in `find debian/tmp/usr/lib/zsh -type d | sed 's#^debian/tmp/##'`; \ do mkdir -p debian/tmp-dbg/usr/lib/debug/"$$i"; done objcopy --only-keep-debug debian/tmp/bin/zsh5 \ debian/tmp-dbg/usr/lib/debug/bin/zsh5.dbg strip --remove-section=.comment --remove-section=.note debian/tmp/bin/zsh5 objcopy --add-gnu-debuglink=debian/tmp-dbg/usr/lib/debug/bin/zsh5.dbg debian/tmp/bin/zsh5 for i in `find debian/tmp/usr/lib/zsh -name "*.so"`; \ do objcopy --only-keep-debug $$i debian/tmp-dbg/usr/lib/debug/`echo $$i | sed 's#^debian/tmp/##'`.debug; \ strip --remove-section=.comment --remove-section=.note \ --strip-unneeded $$i; \ objcopy --add-gnu-debuglink=debian/tmp-dbg/usr/lib/debug/`echo $$i | sed 's#^debian/tmp/##'`.debug $$i; \ done else rm debian/tmp/bin/zsh-beta-* ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) strip --remove-section=.comment --remove-section=.note debian/tmp/bin/zsh-beta strip --remove-section=.comment --remove-section=.note \ --strip-unneeded `find debian/tmp/usr/lib/zsh-beta -name "*.so"` endif endif $(INSTALL_DIR) debian/tmp-dbg/usr/share/doc ln -s zsh debian/tmp-dbg/usr/share/doc/$(package)-dbg $(INSTALL_FILE) debian/zlogin debian/zlogout debian/zprofile debian/zshenv debian/zshrc debian/newuser.zshrc.recommended debian/tmp/etc/$(package)/. sed -i -e 's,^local HELPDIR=.*,local HELPDIR=$${HELPDIR:-/usr/share/$(package)/help},;s,:-more,:-/usr/bin/pager,;' debian/tmp/usr/share/$(package)/functions/Misc/run-help sed -i -e '1!b;s:^#!.*[ /]zsh:#!/bin/$(package):;s#/usr/local/bin#/usr/bin#;' `find debian/tmp/usr/share/$(package)/functions -type f` chmod 755 debian/tmp/usr/share/$(package)/functions/Misc/checkmail \ debian/tmp/usr/share/$(package)/functions/Misc/harden \ debian/tmp/usr/share/$(package)/functions/Misc/run-help \ debian/tmp/usr/share/$(package)/functions/Misc/zkbd \ debian/tmp/usr/share/$(package)/functions/Misc/zcalc \ $(INSTALL_FILE) Etc/ChangeLog* README META-FAQ Doc/zsh.texi Etc/BUGS Etc/CONTRIBUTORS FEATURES \ Etc/FTP-README MACHINES NEWS Etc/TODO Etc/completion-style-guide Etc/zsh-development-guide Functions/README.zftp debian/tmp/usr/share/doc/$(package)/ $(INSTALL_FILE) ChangeLog debian/tmp/usr/share/doc/$(package)/changelog chmod -R u+rw,go=rX debian/tmp/usr/share/doc $(INSTALL_FILE) debian/copyright debian/tmp/usr/share/doc/$(package)/copyright $(INSTALL_FILE) debian/changelog debian/tmp/usr/share/doc/$(package)/changelog.Debian ifeq (zsh-beta,$(package)) $(INSTALL_FILE) debian/NEWS debian/tmp/usr/share/doc/$(package)/NEWS.Debian endif $(INSTALL_FILE) debian/README.Debian debian/tmp/usr/share/doc/$(package)/README.Debian $(INSTALL_FILE) debian/menu debian/tmp/usr/share/menu/$(package) chmod 644 `find debian/tmp/usr/share/man -type f` `find debian/tmp/usr/share/doc -type f` chmod 644 `find debian/tmp/usr/lib/$(package) -type f -name "*.so"` chmod 644 `find debian/tmp/usr/share/$(package) -type f -name "_*"` gzip -9f `find debian/tmp/usr/share/man -type f` `find debian/tmp/usr/share/doc -type f ! -name "copyright"` dpkg-shlibdeps -Tdebian/substvars -dDepends debian/tmp/bin/* -dRecommends debian/tmp/usr/lib/$(package)/*/zsh/*.so dpkg-gencontrol -ldebian/changelog -isp -p$(package) -Tdebian/substvars -Pdebian/tmp ifneq (zsh-beta,$(package)) cd debian/tmp-dbg && find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums dpkg-gencontrol -ldebian/changelog -isp -p$(package)-dbg -Tdebian/substvars -Pdebian/tmp-dbg endif $(INSTALL_SCRIPT) debian/postinst debian/tmp/DEBIAN/postinst $(INSTALL_SCRIPT) debian/postrm debian/tmp/DEBIAN/postrm $(INSTALL_SCRIPT) debian/prerm debian/tmp/DEBIAN/prerm $(INSTALL_FILE) debian/conffiles debian/tmp/DEBIAN/conffiles cd debian/tmp && find * -type f ! -path "etc/$(package)/zlogin" ! -path "etc/$(package)/zlogout" ! -path "etc/$(package)/zprofile" ! -path "etc/$(package)/zshenv" ! -path "etc/$(package)/zshrc" ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums ifneq (zsh-beta,$(package)) chown -R root:root debian/tmp debian/tmp-dbg chmod -R go=rX debian/tmp debian/tmp-dbg else chown -R root:root debian/tmp chmod -R go=rX debian/tmp endif dpkg --build debian/tmp .. ifneq (zsh-beta,$(package)) dpkg --build debian/tmp-dbg .. endif define checkdir test -f debian/rules endef binary-arch-static: checkroot build-static $(checkdir) -rm -rf debian/tmp-static $(INSTALL_DIR) debian/tmp-static/usr/share/man/man1/ cd debian/tmp-static && $(INSTALL_DIR) bin \ usr/share/doc/$(package)-static \ usr/share/lintian/overrides \ DEBIAN $(INSTALL_SCRIPT) debian/static.prerm debian/tmp-static/DEBIAN/prerm $(INSTALL_SCRIPT) debian/static.postinst debian/tmp-static/DEBIAN/postinst $(INSTALL_SCRIPT) debian/static.postrm debian/tmp-static/DEBIAN/postrm $(INSTALL_FILE) debian/changelog debian/tmp-static/usr/share/doc/$(package)-static/changelog.Debian $(INSTALL_FILE) debian/$(package)-static.lintian-overrides debian/tmp-static/usr/share/lintian/overrides/$(package)-static awk 'BEGIN { print "The following modules are statically-compiled into the static $(package) binary:\n"; } /link=static/ { printf "%s (%s %s)\n", substr($$1,6), $$4, $$5; }' obj-static/config.modules >debian/tmp-static/usr/share/doc/$(package)-static/README.Debian $(INSTALL_FILE) debian/copyright debian/tmp-static/usr/share/doc/$(package)-static/copyright $(INSTALL_PROGRAM) obj-static/Src/zsh debian/tmp-static/bin/zsh5-static strip --remove-section=.comment --remove-section=.note debian/tmp-static/bin/zsh5-static gzip -9f debian/tmp-static/usr/share/doc/$(package)-static/changelog.Debian cd debian/tmp-static && find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums ln -s $(package).1.gz debian/tmp-static/usr/share/man/man1/zsh5-static.1.gz ifneq (zsh-beta,$(package)) dpkg-shlibdeps -Tdebian/$(package)-static.substvars -dDepends debian/tmp-static/bin/* endif dpkg-gencontrol -ldebian/changelog -isp -p$(package)-static -Tdebian/$(package)-static.substvars -Pdebian/tmp-static chown -R root.root debian/tmp-static chmod -R go=rX debian/tmp-static dpkg --build debian/tmp-static .. binary-arch-dev: checkroot build $(INSTALL_DIR) debian/tmp-dev/usr/include/$(package) \ debian/tmp-dev/usr/share/$(package)-dev \ debian/tmp-dev/usr/share/doc/$(package)-dev \ debian/tmp-dev/usr/share/aclocal \ debian/tmp-dev/DEBIAN $(INSTALL_FILE) obj/Src/*.epro obj/Src/sigcount.h \ Src/hashtable.h Src/prototypes.h \ Src/signals.h Src/zsh_system.h Src/zsh.h Src/ztype.h \ debian/tmp-dev/usr/include/$(package) $(INSTALL_FILE) Src/makepro.awk debian/tmp-dev/usr/share/$(package)-dev $(INSTALL_FILE) Config/aczshoot.m4 debian/tmp-dev/usr/share/aclocal/$(package)oot.m4 $(INSTALL_FILE) debian/changelog debian/tmp-dev/usr/share/doc/$(package)-dev/changelog.Debian $(INSTALL_FILE) debian/copyright debian/tmp-dev/usr/share/doc/$(package)-dev/ gzip -9f debian/tmp-dev/usr/share/doc/$(package)-dev/changelog.Debian cd debian/tmp-dev && find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums dpkg-gencontrol -ldebian/changelog -isp -p$(package)-dev -Tdebian/$(package)-dev.substvars -Pdebian/tmp-dev chown -R root.root debian/tmp-dev chmod -R go=rX debian/tmp-dev dpkg --build debian/tmp-dev .. ifneq (zsh-beta,$(package)) binary: binary-indep binary-arch binary-arch-static binary-arch-dev else binary: binary-indep binary-arch endif prebuild: Util/preconfig ./configure make -C Doc make distclean rm -rf autom4te.cache checkroot: $(checkdir) test root = "`whoami`" .PHONY: binary binary-arch binary-indep clean checkroot binary-arch-dynamic binary-arch-static prebuild binary-arch-dev