summary refs log tree commit diff
path: root/debian/rules
diff options
context:
space:
mode:
Diffstat (limited to 'debian/rules')
-rwxr-xr-xdebian/rules113
1 files changed, 113 insertions, 0 deletions
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..603ffc9
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,113 @@
+#!/usr/bin/make -f
+# $Id$
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+# This has to be exported to make some magic below work.
+export DH_OPTIONS
+
+check_gcc = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi)
+
+DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH)
+
+CDEF := \
+	-Wall -DBSD=1 -DSMALL -D_GNU_SOURCE -DHAVE_VASPRINTF=1 \
+	 -DGLOB_BROKEN -DFNMATCH_BROKEN -DIFS_BROKEN \
+	-D__COPYRIGHT\(x\)= -D__RCSID\(x\)= -D_DIAGASSERT\(x\)=
+
+OPT := -g -O2 -fstrict-aliasing
+OPTSM := -g -Os -fstrict-aliasing -fomit-frame-pointer -DREALLY_SMALL
+
+ifeq ($(DEB_HOST_ARCH),i386)
+OPTSM += \
+	$(call check_gcc,-falign-loops=1,-malign-loops=0) \
+	$(call check_gcc,-falign-jumps=1,-malign-jumps=0) \
+	$(call check_gcc,-falign-functions=1,-malign-functions=0) \
+	-mpreferred-stack-boundary=2 -DUSE_NORETURN
+endif
+
+build: setup-stamp
+	dh_testdir
+
+	pmake CFLAGS:='$(CDEF) $(OPT)' \
+		YACC:=bison
+	MAKEOBJDIR=obj-udeb pmake CFLAGS:='$(CDEF) $(OPTSM)' \
+		YACC:=bison
+
+setup: setup-stamp
+setup-stamp:
+	rm -rf obj obj-udeb
+	mkdir obj obj-udeb
+	chmod u+x debian/bsdyacc
+	touch setup-stamp
+
+predist:
+	po2debconf debian/dash.templates > debian/dash.templates.merged
+
+clean:
+	dh_testdir
+	dh_testroot
+	rm -f setup-stamp
+
+	rm -rf obj obj-udeb
+
+	dh_clean
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_installdirs
+
+	install obj/sh debian/dash/bin/dash
+	install -m 644 sh.1 debian/dash/usr/share/man/man1/dash.1
+	install obj-udeb/sh debian/dash-udeb/bin/dash
+	ln -s dash debian/dash-udeb/bin/sh
+	ln -s dash debian/ash/bin/ash
+	ln -s dash.1.gz debian/ash/usr/share/man/man1/ash.1.gz
+
+# This single target is used to build all the packages, all at once, or
+# one at a time. So keep in mind: any options passed to commands here will
+# affect _all_ packages. Anything you want to only affect one package
+# should be put in another target, such as the install target.
+binary-common: debian/dash.templates.merged
+	dh_testdir
+	dh_testroot
+	dh_installdebconf
+	if ! dh_testversion 4.1.16; then \
+		install -D debian/dash.templates.merged \
+			debian/dash/DEBIAN/templates; \
+	fi
+	dh_installdocs -Ndash-udeb
+	dh_installexamples
+	dh_installmenu
+	dh_installcron
+	dh_installchangelogs -Ndash-udeb
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+	dh_strip
+endif
+	dh_compress
+	dh_fixperms
+	dh_installdeb -Ndash-udeb
+	dh_shlibdeps
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+# Build architecture-independent files here.
+binary-indep: install
+	$(MAKE) -f debian/rules DH_OPTIONS=-i binary-common
+
+# Build architecture-dependent files here.
+binary-arch: install
+	$(MAKE) -f debian/rules DH_OPTIONS=-a binary-common
+
+	for i in ../dash-udeb_*.deb; do mv $$i $${i%deb}udeb; done
+	sed '/^[^ ]*\.udeb/d; s/^\(dash-udeb_[^ ]*\.\)deb/\1udeb/' \
+		debian/files > debian/files.new
+	mv debian/files.new debian/files
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary binary-common install \
+	setup predist