summaryrefslogtreecommitdiff
path: root/debian/rules
blob: 95782a0167bb2fd2a5de9f061db686dba4a13d89 (plain)
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
#!/usr/bin/make -f
#
# Do we make rt.a into an ELF library?
# Do we make iconx link with xpm.so?

DEB_HOST_ARCH_OS := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS 2>/dev/null)
DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU 2>/dev/null)

# Take account of old dpkg-architecture output.

ifeq ($(DEB_HOST_ARCH_CPU),)
  DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_GNU_CPU)
  ifeq ($(DEB_HOST_ARCH_CPU),x86_64)
    DEB_HOST_ARCH_CPU := amd64
  endif
endif
ifeq ($(DEB_HOST_ARCH_OS),)
  DEB_HOST_ARCH_OS := $(subst -gnu,,$(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM))
  ifeq ($(DEB_HOST_ARCH_OS),gnu)
    DEB_HOST_ARCH_OS := hurd
  endif
endif

CFLAGS_OPT = -O2

ifneq (, $(filter $(DEB_HOST_ARCH_CPU), alpha hppa ia64 mips mipsel \
                                        powerpc s390 sparc amd64 i386 \
										arm armel armeb ppc64 ))
    CFLAGS_OPT = -O0
endif    

ifneq (, $(filter $(DEB_HOST_ARCH_OS), linux kfreebsd knetbsd))
    system = linux
else
    ifeq ($(DEB_HOST_ARCH_OS),hurd)
        system = gnu
    else
        system = $(DEB_HOST_ARCH_OS)
    endif
endif

ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS_OPT = -O0
endif

CFLAGS = -Wall -g $(CFLAGS_OPT)

configure:
	$(checkdir)
	$(MAKE) X-Configure name=$(system)
	sed "s/CFLAGS = .*/CFLAGS = $(CFLAGS)/" Makedefs > Makedefs.tmp
	mv Makedefs.tmp Makedefs
	touch configure

build-icont: configure
	$(checkdir)
	$(MAKE) Icont
	touch build-icont

build-iconc: configure
	$(checkdir)
	$(MAKE) Iconc
	(cd src/common && make patchstr && cp patchstr ../../bin)
	touch build-iconc

build-ipl: configure
	$(checkdir)
	$(MAKE) Ilib

clean:
	$(checkdir)
	-rm -f configure build-icont build-iconc build-ipl
	-rm -rf debian/tmp-iconx debian/tmp-icont debian/tmp-iconc debian/tmp-ipl debian/files debian/*~ 
	-rm -f bin/* debian/substvars
	$(MAKE) Pure

binary-icont: checkroot build-icont test-icont
	$(checkdir)
	-rm -rf debian/tmp-icont
# Create the directory hierarchy.
	install -d debian/tmp-icont/usr/bin
	install -d debian/tmp-icont/DEBIAN
	install -d debian/tmp-icont/usr/share/man/man1
	install -d debian/tmp-icont/usr/share/doc/icont
# Copy the executables and documentation...
	install -s -m 755 bin/icont debian/tmp-icont/usr/bin
	install -m 644 debian/icon.1 debian/tmp-icont/usr/share/man/man1/icont.1
	sed -e 's/icon-dir/icont/g' debian/copyright \
		>debian/tmp-icont/usr/share/doc/icont/copyright
	install -m 644 debian/changelog \
		debian/tmp-icont/usr/share/doc/icont/changelog.Debian
# Patch icont...
#	bin/patchstr debian/tmp-icont/usr/bin/icont /usr/bin/iconx
# Wrap icont to provide default for IPATH and LPATH
#	mv debian/tmp-icont/usr/bin/icont debian/tmp-icont/usr/bin/icont.real
#	install -o root -g root -m 755 debian/icont-wrapper debian/tmp-icont/usr/bin/icont
# Compress documentation...
	test -f debian/tmp-icont/usr/share/doc/icont/changelog.Debian.gz || \
		gzip -9 debian/tmp-icont/usr/share/doc/icont/changelog.Debian
	-gzip -9rq debian/tmp-icont/usr/share/man
#	(cd debian/tmp-icont/usr/share/man/man1 && ln -sf icont.1.gz icont.real.1.gz)
# Fix permissions...
	chmod -R u=rwX,go=rX debian/tmp-icont
	chown -R root.root debian/tmp-icont
# Make the debian control area.
	dpkg-shlibdeps -pshlibs-icont debian/tmp-icont/usr/bin/*
	dpkg-gencontrol -isp -picont -Pdebian/tmp-icont
# And finally, build the Debian package!
	dpkg --build debian/tmp-icont ..

binary-iconx: checkroot build-icont
	$(checkdir)
	-rm -rf debian/tmp-iconx
# Create the directory hierarchy.
	install -d debian/tmp-iconx/usr/bin
	install -d debian/tmp-iconx/DEBIAN
	install -d debian/tmp-iconx/usr/share/man/man1
	install -d debian/tmp-iconx/usr/share/doc/iconx
# Copy the executables and documentation...
	install -s -m 755 bin/iconx debian/tmp-iconx/usr/bin
	install -m 644 debian/icon.1 debian/tmp-iconx/usr/share/man/man1/iconx.1
	sed -e 's/icon-dir/iconx/g' debian/copyright \
		>debian/tmp-iconx/usr/share/doc/iconx/copyright
	install -m 644 debian/changelog \
		debian/tmp-iconx/usr/share/doc/iconx/changelog.Debian
# Compress documentation...
	test -f debian/tmp-iconx/usr/share/doc/iconx/changelog.Debian.gz || \
		gzip -9 debian/tmp-iconx/usr/share/doc/iconx/changelog.Debian
	-gzip -9rq debian/tmp-iconx/usr/share/man
# Fix permissions...
	chmod -R u=rwX,go=rX debian/tmp-iconx
	chown -R root.root debian/tmp-iconx
# Make the debian control area.
	dpkg-shlibdeps -pshlibs-iconx debian/tmp-iconx/usr/bin/*
	dpkg-gencontrol -isp -piconx -Pdebian/tmp-iconx
# And finally, build the Debian package!
	dpkg --build debian/tmp-iconx ..

binary-iconc: checkroot build-iconc
	$(checkdir)
	-rm -rf debian/tmp-iconc
# Create the directory hierarchy.
	install -d debian/tmp-iconc/usr/bin
	install -d debian/tmp-iconc/DEBIAN
	install -d debian/tmp-iconc/usr/share/man/man1
	install -d debian/tmp-iconc/usr/share/doc/iconc
	install -d debian/tmp-iconc/usr/lib/iconc
# Copy the executables and library files...
	install -s -m 755 bin/iconc debian/tmp-iconc/usr/bin
	install -m 644 bin/dlrgint.o bin/rt.* bin/libIgpx.a debian/tmp-iconc/usr/lib/iconc
# Patch iconc...
	bin/patchstr debian/tmp-iconc/usr/bin/iconc /usr/lib/iconc/
# Copy documentation...
	install -m 644 debian/icon.1 debian/tmp-iconc/usr/share/man/man1/iconc.1
	sed -e 's/icon-dir/iconc/g' debian/copyright \
		>debian/tmp-iconc/usr/share/doc/iconc/copyright
	install -m 644 debian/changelog \
		debian/tmp-iconc/usr/share/doc/iconc/changelog.Debian
# Compress documentation...
	test -f debian/tmp-iconc/usr/share/doc/iconc/changelog.Debian.gz || \
		gzip -9 debian/tmp-iconc/usr/share/doc/iconc/changelog.Debian
	-gzip -9rq debian/tmp-iconc/usr/share/man
# Fix permissions...
	chmod -R u=rwX,go=rX debian/tmp-iconc
	chown -R root.root debian/tmp-iconc
# Make the debian control area.
	dpkg-shlibdeps -pshlibs-iconc debian/tmp-iconc/usr/bin/*
	dpkg-gencontrol -isp -piconc -Pdebian/tmp-iconc
# And finally, build the Debian package!
	dpkg --build debian/tmp-iconc ..

binary-ipl: checkroot build-ipl
	$(checkdir)
	-rm -rf debian/tmp-ipl
# Create the directory hierarchy.
	install -d debian/tmp-ipl/DEBIAN
	install -d debian/tmp-ipl/usr/share/doc/icon-ipl
	install -d debian/tmp-ipl/usr/lib/icon-ipl
# Copy Icon program library...
	cp -r lib/* ipl/procs/*.icn ipl/gprocs/*.icn debian/tmp-ipl/usr/lib/icon-ipl
# Copy copyright information.
	sed -e 's/icon-dir/icon-ipl/g' debian/copyright \
		>debian/tmp-ipl/usr/share/doc/icon-ipl/copyright
	install -m 644 debian/changelog \
		debian/tmp-ipl/usr/share/doc/icon-ipl/changelog.Debian
# Compress documentation...
	find debian/tmp-ipl/usr/share/doc/icon-ipl -type f -size +6k -print | \
		xargs --no-run-if-empty gzip -9
	test -f debian/tmp-ipl/usr/share/doc/icon-ipl/changelog.Debian.gz || \
		gzip -9 debian/tmp-ipl/usr/share/doc/icon-ipl/changelog.Debian
# Fix permissions...
	chmod -R u=rwX,go=rX debian/tmp-ipl
	chown -R root.root debian/tmp-ipl
# Make the debian control area.
	dpkg-gencontrol -isp -picon-ipl -Pdebian/tmp-ipl
# And finally, build the Debian package!
	dpkg --build debian/tmp-ipl ..

test-icont: build-icont
	$(checkdir)
	@echo Tests for the Icon interpreter.
	@echo First some simple tests to be sure Icon works.
	$(MAKE) Samples-icont
	@echo More exhaustive tests of various features of Icon and larger programs.
	@echo  1. Basic tests. Should show only insignificant differences.
	$(MAKE) Test-icont

test-iconc: build-iconc
	$(checkdir)
	@echo Tests for the Icon compiler.
	@echo First some simple tests to be sure Icon works.
	$(MAKE) Samples-iconc
	@echo More exhaustive tests of various features of Icon and larger programs.
	@echo  1. Basic tests. Should show only insignificant differences.
	$(MAKE) Test-iconc Test-opt Test-noopt

benchmark-icont: build-icont
	$(checkdir)
	$(MAKE) Benchmark-icont	

benchmark-iconc: build-iconc
	$(checkdir)
	$(MAKE) Benchmark-icont	

build-iconx: build-icont
build: build-icont build-ipl

binary-arch: binary-icont binary-iconx

binary-indep: binary-ipl
	$(checkroot)

binary: binary-indep binary-arch

test: test-icont

benchmark: benchmark-icont

define checkdir
	test -f src/icont/tmem.c -a -f debian/rules
endef

source diff:
	@echo >&2 'source and diff are obsolete - use dpkg-source -b'; false

checkroot:
	$(checkdir)
	test "`whoami`" = root

.PHONY: binary binary-arch binary-indep clean checkroot