merge NMUs, deliver NEWS, document move to salsa
[debian/gzip] / debian / rules
index 63585194c718e9f17393605e7c7a6f07505dde07..73f21873264793b418397b513ade2cde13942b3d 100755 (executable)
 #!/usr/bin/make -f
 #      Debian rules file for gzip, requires the debhelper package.
 #      Crafted by Bdale Garbee, bdale@gag.com, 5 November 2000
+#      Cleanup by Thorsten Glaser, tg@debian.org, 20 June 2012
+#      based on the rules file of the jupp package
 
 # Comment this to turn off debhelper verbose mode.
 export DH_VERBOSE=1
 
-DEB_BUILD_GNU_TYPE = $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
-DEB_HOST_GNU_TYPE = $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
-ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
-CONFARGS = --host=$(DEB_HOST_GNU_TYPE)
+shellescape='$(subst ','\'',$(1))'
+shellexport=$(1)=$(call shellescape,${$(1)})
+
+include /usr/share/dpkg/architecture.mk
+
+# Automatic ${CC} selection for cross-compiles
+
+# is ${CC} defined anywhere (other than implicit rules?)
+ifneq (,$(findstring $(origin CC),default undefined))
+# no - then default to gcc (or cross-gcc)
+ifneq (${DEB_BUILD_ARCH},${DEB_HOST_ARCH})
+CC=                    ${DEB_HOST_GNU_TYPE}-gcc
+else
+CC=                    gcc
+endif
+endif
+
+export DEFS=NO_ASM # Avoid TEXTRELs on i386
+EXTRA_CFLAGS=          -Wall
+EXTRA_CPPFLAGS=
+
+ifeq (${DEB_HOST_ARCH},amd64)
+EXTRA_CPPFLAGS+=       -DUNALIGNED_OK
 endif
 
-buildarch := $(shell dpkg-architecture -qDEB_BUILD_ARCH)
-ifeq ($(buildarch),amd64)
-CFLAGS=-g -O2 -Wall -DUNALIGNED_OK
+# Automatic dpkg-buildflags selection, backport-friendly
+
+ifneq (,$(wildcard /usr/share/dpkg/buildflags.mk))
+# dpkg-dev (>= 1.16.1~)
+DEB_CFLAGS_MAINT_APPEND=${EXTRA_CFLAGS}
+DEB_CPPFLAGS_MAINT_APPEND=${EXTRA_CPPFLAGS}
+# maybe turn this on later
+#DEB_BUILD_MAINT_OPTIONS=hardening=+all
+include /usr/share/dpkg/buildflags.mk
 else
-CFLAGS=-g -O2 -Wall
+# old-fashioned way to determine build flags
+CFLAGS=                        -O$(if $(findstring noopt,${DEB_BUILD_OPTIONS}),0,2) -g
+CFLAGS+=               ${EXTRA_CFLAGS}
+LDFLAGS+=              ${EXTRA_LDFLAGS}
 endif
 
-configure: configure-stamp
-configure-stamp:
-       dh_testdir
+# maybe turn this on later
+#ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+#NUMJOBS=              $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
+#MAKEFLAGS+=           -j${NUMJOBS}
+#endif
+
+# whitespace-safe path to source directory
+_topdir=$(call shellescape,$(shell pwd))
+
+CONFIGURE_ARGS=                --prefix=/usr \
+                       --bindir=/bin \
+                       --infodir=${_topdir}/debian/gzip/usr/share/info \
+                       --mandir=${_topdir}/debian/gzip/usr/share/man
+
+ifneq (${DEB_BUILD_ARCH},${DEB_HOST_ARCH})
+CONFIGURE_ARGS+=       --host=${DEB_HOST_GNU_TYPE}
+endif
+
+reconf-stamp:
        cp -f /usr/share/misc/config.sub build-aux/config.sub
        cp -f /usr/share/misc/config.guess build-aux/config.guess
        autoreconf -v
-       mkdir -p build
-       cd build && ../configure \
-               --prefix=/usr --bindir=/bin \
-               --infodir=`pwd`/debian/gzip/usr/share/info \
-               --mandir=`pwd`/debian/gzip/usr/share/man $(CONFARGS)
-       touch configure-stamp
-
-configure-win32: configure-win32-stamp
-configure-win32-stamp:
+       :>$@
+
+configure: configure-stamp
+configure-stamp: reconf-stamp
+       dh_testdir
+       mkdir -p builddir
+       cd builddir && env \
+           $(foreach i,CC CFLAGS CPPFLAGS LDFLAGS,$(call shellexport,$i)) \
+           CONFIG_SHELL=/bin/sh GREP=grep ../configure ${CONFIGURE_ARGS}
+       :>$@
+
+configure-indep: configure-indep-stamp
+configure-indep-stamp: reconf-stamp
        dh_testdir
-       mkdir -p build-win32
-       cd build-win32 && ../configure --host=i586-mingw32msvc
-       touch configure-win32-stamp
+       mkdir -p builddir-indep
+       cd builddir-indep && ../configure --host=i686-w64-mingw32
+       :>$@
+
+build: build-stamp build-indep-stamp
 
-build: build-stamp 
+build-arch: build-stamp
 build-stamp: configure-stamp
        dh_testdir
-       $(MAKE) -C build
-       touch build-stamp
+       ${MAKE} -C builddir
+ifeq (,$(filter nocheck,${DEB_BUILD_OPTIONS}))
+ifeq (${DEB_BUILD_ARCH},${DEB_HOST_ARCH})
+       ${MAKE} -C builddir check
+endif
+endif
+       :>$@
 
-build-win32: build-win32-stamp
-build-win32-stamp: configure-win32-stamp
+build-indep: build-indep-stamp
+build-indep-stamp: configure-indep-stamp
        dh_testdir
-       $(MAKE) -C build-win32
-       touch build-win32-stamp
+       ${MAKE} -C builddir-indep
+       :>$@
 
 clean:
        dh_testdir
        dh_testroot
-       -rm -f build-stamp build-win32-stamp configure-stamp configure-win32-stamp
-       -rm -rf build build-win32
+       -rm -f build-stamp build-indep-stamp configure-stamp configure-indep-stamp reconf-stamp
+       -rm -rf builddir builddir-indep
        dh_clean
 
-install: build
-       dh_testdir
-       dh_testroot
-       dh_clean -k
-       dh_installdirs
-       $(MAKE) -C build install prefix=`pwd`/debian/gzip/usr bindir=`pwd`/debian/gzip/bin 
+binary: binary-arch binary-indep
 
-install-win32: build-win32
+binary-indep: build-indep-stamp
        dh_testdir
        dh_testroot
-       dh_clean -k
+       dh_prep
        dh_installdirs
-       i586-mingw32msvc-strip build-win32/gzip.exe
-       install -m 0755 build-win32/gzip.exe debian/gzip-win32/usr/share/win32/
-
-binary-indep:  build-win32 install-win32
-       dh_testdir -i
-       dh_testroot -i
-       dh_installdocs -i README* TODO
+       i686-w64-mingw32-strip builddir-indep/gzip.exe
+       install -m 0755 builddir-indep/gzip.exe \
+           debian/gzip-win32/usr/share/win32/
+       dh_installdocs -i README* TODO NEWS
        dh_installchangelogs -i ChangeLog
        dh_lintian -i
        dh_compress -i
@@ -85,30 +134,35 @@ binary-indep:      build-win32 install-win32
        dh_md5sums -i
        dh_builddeb -i
 
-binary-arch:   build install
-       dh_testdir -s
-       dh_testroot -s
-       dh_installdocs -s README* TODO
+binary-arch: build-stamp
+       dh_testdir
+       dh_testroot
+       dh_prep
+       dh_installdirs
+       ${MAKE} -C builddir install \
+           prefix=${_topdir}/debian/gzip/usr \
+           bindir=${_topdir}/debian/gzip/bin
+       dh_testdir -a
+       dh_testroot -a
+       dh_installdocs -a README* TODO NEWS
        dh_installman *.1
-       dh_installinfo -s doc/gzip.info
-       dh_installchangelogs -s ChangeLog
-       dh_link -s
-       dh_lintian -s
-       dh_strip -s
-       dh_compress -s
+       dh_installinfo -a doc/gzip.info
+       dh_installchangelogs -a ChangeLog
+       dh_link -a
+       dh_lintian -a
+       dh_strip -a
+       dh_compress -a
        ln -s gunzip.1.gz debian/gzip/usr/share/man/man1/uncompress.1.gz
        ln -s zgrep.1.gz debian/gzip/usr/share/man/man1/zegrep.1.gz
        ln -s zgrep.1.gz debian/gzip/usr/share/man/man1/zfgrep.1.gz
-       dh_fixperms -s
-       # You may want to make some executables suid here.
-       dh_makeshlibs -s
-       dh_installdeb -s
-       dh_shlibdeps -s
-       dh_gencontrol -s
-       dh_md5sums -s
-       dh_builddeb -s
-
-binary: binary-indep binary-arch
-.PHONY: build clean binary-indep binary-arch binary install configure
-.PHONY: build-win32 install-win32 configure-win32
+       rm -f ${_topdir}/debian/gzip/usr/share/info/dir.gz
+       dh_fixperms -a
+       dh_makeshlibs -a
+       dh_installdeb -a
+       dh_shlibdeps -a
+       dh_gencontrol -a
+       dh_md5sums -a
+       dh_builddeb -a
 
+.PHONY: binary binary-arch binary-indep build build-arch build-indep clean
+.PHONY: configure configure-indep