summary refs log tree commit diff
path: root/debian/rules
blob: 603ffc9a67a00bb85edcb855285978fcfac6c549 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
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