File: rules

package info (click to toggle)
wine 1.4.1-4
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 156,772 kB
  • sloc: ansic: 2,124,295; perl: 17,673; yacc: 12,202; makefile: 7,447; sh: 3,981; lex: 3,913; cpp: 812; awk: 69; xml: 21; sed: 3
file content (444 lines) | stat: -rwxr-xr-x 12,398 bytes parent folder | download
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
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
#!/usr/bin/make -f
# Sample debian/rules that uses debhelper.
# GNU copyright 1997 to 1999 by Joey Hess.
export SHELL=bash

# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1

ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
MAKEFLAGS += -j$(NUMJOBS)
endif

CFLAGS=$(shell dpkg-buildflags --get CFLAGS)
LDFLAGS=$(shell dpkg-buildflags --get LDFLAGS)
CPPFLAGS=$(shell dpkg-buildflags --get CPPFLAGS)

CONFIGOPTS = --with-x --disable-tests

DEB_HOST_GNU_CPU	?= $(shell dpkg-architecture -qDEB_HOST_GNU_CPU)
DEB_HOST_MULTIARCH	?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

DEBIAN_VERSION := $(shell cat /etc/debian_version)
VERSION := $(lastword $(shell dpkg-parsechangelog|grep "^Version: "))

VERSUFFIX=

# Maybe make this conditional on debian version compiled for, for backports
# Can be set to:
#  "n": Install into traditional paths, /usr/lib and /usr/lib32
#  "p": Install into multiarch paths, /usr/lib/x86_64-linux-gnu and /usr/lib/i486-linux-gnu
#  "y": Full multiarch, build natively only
MULTIARCH=y

CC=gcc
LIBDIR=usr/lib/$(DEB_HOST_MULTIARCH)
LIBDIRS=$(LIBDIR)

IA32_CC := $(CC)
IA32_CFLAGS := $(CFLAGS)
IA32_LDFLAGS := $(LDFLAGS)
IA32_CPPFLAGS := $(CPPFLAGS)
IA32_LIBDIR := $(LIBDIR)

# Win64 version requires gcc >= 4.4
AMD64_CC := $(CC)
AMD64_CFLAGS := $(CFLAGS)
AMD64_LDFLAGS := $(LDFLAGS)
AMD64_CPPFLAGS := $(CPPFLAGS)
AMD64_LIBDIR := $(LIBDIR)

ifeq ($(DEB_HOST_GNU_CPU),x86_64)

IA32_LIBS := /emul/ia32-linux
IA32_LDFLAGS += -L$(CURDIR)/lib32
ifneq (n,$(MULTIARCH))
IA32_LIBDIR := usr/lib/$(DEB_HOST_MULTIARCH)
else
IA32_LIBDIR := usr/lib32
IA32_LIBDIR_LINK := $(shell readlink /$(IA32_LIBDIR))
ifneq (,$(IA32_LIBDIR_LINK))
IA32_LIBDIR := $(patsubst /%,%,$(IA32_LIBDIR_LINK))
endif
endif

ifeq (y,$(MULTIARCH))
# full multiarch, cannot build 32-bit Wine on amd64
BUILDS =
LIBDIRS =
#TRANSPREFIX = ia32-
#TRANSSUFFIX = $(VERSUFFIX)
else
BUILDS = build32
LIBDIRS = $(IA32_LIBDIR)
ifeq (usr/lib/i486-linux-gnu,$(IA32_LIBDIR))
# need ld.so support for multiarch path
LIBWINE_DEPS = libc6-i386 (>= 2.9-24)
endif
endif

else # !x86_64

BUILDS = build32

endif # x86_64

IA32_WINEDIR = $(IA32_LIBDIR)/wine$(VERSUFFIX)
IA32_OVERRIDES = LIBSUFFIX="$(VERSUFFIX)" DATASUFFIX="$(VERSUFFIX)" dlldir="/$(IA32_WINEDIR)"
AMD64_WINEDIR = $(AMD64_LIBDIR)/wine$(VERSUFFIX)
AMD64_OVERRIDES = LIBSUFFIX="$(VERSUFFIX)" DATASUFFIX="$(VERSUFFIX)" dlldir="/$(AMD64_WINEDIR)"

LOADERS = wine-kthread wine-pthread wine-preloader

empty:=
space:=$(empty) $(empty)

SHLIBS_OPTS = -Llibwine$(VERSUFFIX) -l$(subst $(space),:,$(patsubst %,$(CURDIR)/debian/libwine$(VERSUFFIX)/%,$(LIBDIRS)))

ifeq (,$(VERSUFFIX))
# Stable builds get priority 100 (plus 25 for 64-bit)
ALTPRIO32 := 100
ALTPRIO64 := 125
else
# Unstable builds get priority 50 (plus 25 for 64-bit)
ALTPRIO32 := 50
ALTPRIO64 := 75
endif

control-stamp: debian/control.in
ifneq (,$(BUILDS))
	bash debian/prep-control.sh "$(VERSUFFIX)"
else
	bash debian/prep-control-transit.sh "$(VERSUFFIX)" "$(TRANSPREFIX)" "$(TRANSSUFFIX)"
endif
	touch control-stamp

configure-ia32: configure-ia32-stamp
configure-ia32-stamp: control-stamp
	dh_testdir
ifneq (,$(IA32_LIBS))
	mkdir lib32 || true
	bash debian/ia32.sh $(IA32_LIBS) lib32
endif
	touch configure-ia32-stamp

configure-arch32: configure-arch32-stamp
configure-arch32-stamp: configure-ia32-stamp control-stamp
	dh_testdir
ifeq (,$(DEB_SAVEBUILD))
	mkdir build32 || true
	cd build32 && \
	CC="$(IA32_CC)" \
	CFLAGS="$(IA32_CFLAGS)" \
	CPPFLAGS="$(IA32_CPPFLAGS)" \
	LDFLAGS="$(IA32_LDFLAGS)" \
	../configure --disable-win64 $(CONFIGOPTS) \
	--prefix=/usr \
	--sysconfdir=/etc \
	--bindir=/usr/bin \
	--libdir=/$(IA32_LIBDIR) \
	--mandir=/usr/share/man \
	--infodir=/usr/share/info
else
	mv /tmp/build32 .
endif

	touch configure-arch32-stamp

configure-arch64: configure-arch64-stamp
configure-arch64-stamp: configure-ia32-stamp control-stamp
	dh_testdir
ifeq (,$(DEB_SAVEBUILD))
	mkdir build64 || true
	cd build64 && \
	CC="$(AMD64_CC)" \
	CFLAGS="$(AMD64_CFLAGS)" \
	CPPFLAGS="$(AMD64_CPPFLAGS)" \
	LDFLAGS="$(AMD64_LDFLAGS)" \
	../configure --enable-win64 $(CONFIGOPTS) \
	--prefix=/usr \
	--sysconfdir=/etc \
	--bindir=/usr/bin \
	--libdir=/$(AMD64_LIBDIR) \
	--mandir=/usr/share/man \
	--infodir=/usr/share/info
else
	mv /tmp/build64 .
endif

	touch configure-arch64-stamp

build-indep: build-indep-stamp
build-indep-stamp: control-stamp
	dh_testdir

	touch build-indep-stamp

build-arch32: build-arch32-stamp
build-arch32-stamp: configure-arch32-stamp
	dh_testdir

ifeq (,$(DEB_SAVEBUILD))
	$(MAKE) -C build32 $(IA32_OVERRIDES) depend
	# build wine & tools
	$(MAKE) -C build32 $(IA32_OVERRIDES) $(BUILDOPTS)
endif

	touch build-arch32-stamp

build-arch64: build-arch64-stamp
build-arch64-stamp: configure-arch64-stamp
	dh_testdir

ifeq (,$(DEB_SAVEBUILD))
	$(MAKE) -C build64 $(AMD64_OVERRIDES) depend
	# build wine & tools
	$(MAKE) -C build64 $(AMD64_OVERRIDES) $(BUILDOPTS)
endif

	touch build-arch64-stamp

build-arch: $(patsubst build%,build-arch%,$(BUILDS))
build: build-indep build-arch

clean-arch32: control-stamp
	dh_testdir
	rm -f install-arch32-stamp build-arch32-stamp configure-arch32-stamp
#	-$(MAKE) -C build32 distclean
ifeq (,$(DEB_SAVEBUILD))
	rm -rf build32
else
	mv build32 /tmp || true
endif

clean-arch64: control-stamp
	dh_testdir
	rm -f install-arch64-stamp build-arch64-stamp configure-arch64-stamp
#	-$(MAKE) -C build64 distclean
ifeq (,$(DEB_SAVEBUILD))
	rm -rf build64
else
	mv build64 /tmp || true
endif

clean: clean-arch32 clean-arch64
	dh_testdir
	dh_testroot
	bash debian/clean-install.sh "$(VERSUFFIX)"
	rm -f install-arch-stamp build-indep-stamp configure-ia32-stamp control-stamp
	rm -rf lib32 debian/libwine
	dh_clean
	# can't rm debian/control here because it'd break dpkg-buildpackage.

install-indep: build-indep
	dh_testdir
	dh_testroot
	dh_installdirs -i

install-arch32: install-arch32-stamp
install-arch32-stamp: build-arch32-stamp
	dh_testdir
	dh_testroot

	# install wine, libwine, fonts, and tools
	$(MAKE) -C build32 install $(IA32_OVERRIDES) DESTDIR=$(CURDIR)/debian/tmp
	# move the real binaries into /$(IA32_WINEDIR)
	mv debian/tmp/usr/bin/wine debian/tmp/$(IA32_WINEDIR)/wine.bin
	for ldr in $(LOADERS); do \
	 [ ! -f debian/tmp/usr/bin/$$ldr ] || \
	 mv debian/tmp/usr/bin/$$ldr debian/tmp/$(IA32_WINEDIR); \
	done
	mv debian/tmp/usr/bin/wineserver debian/tmp/$(IA32_WINEDIR)/wineserver
	# install manpages
	$(MAKE) -C build32/documentation install-man DESTDIR=$(CURDIR)/debian/tmp
	mv debian/tmp/usr/share/man/man3w debian/tmp/usr/share/man/man3
	install build32/tools/fnt2bdf debian/tmp/usr/bin
	rm -f debian/tmp/usr/bin/winelauncher
	sed "s,usr/lib/wine,$(IA32_WINEDIR)," debian/winelauncher > debian/tmp/usr/bin/wine
	# install tools
	cp tools/font_convert.sh debian/tmp/usr/bin/wine-font-convert

	bash debian/gen-alternatives.sh "$(VERSUFFIX)" 32 $(ALTPRIO32)

	touch install-arch32-stamp

# If building both 32-bit and 64-bit into the same packages, this will overwrite any 32-bit stuff
# outside /usr/lib with their 64-bit equivalents. This is intentional.
install-arch64: install-arch64-stamp
install-arch64-stamp: build-arch64-stamp $(patsubst build%,install-arch%-stamp,$(filter build32,$(BUILDS)))
	dh_testdir
	dh_testroot

	# install wine, libwine, fonts, and tools
	$(MAKE) -C build64 install $(AMD64_OVERRIDES) DESTDIR=$(CURDIR)/debian/tmp
	# move the real binaries into /$(AMD64_WINEDIR)
	mv debian/tmp/usr/bin/wine debian/tmp/$(AMD64_WINEDIR)/wine.bin
	mv debian/tmp/usr/bin/wineserver debian/tmp/$(AMD64_WINEDIR)/wineserver
	# install manpages
	$(MAKE) -C build64/documentation install-man DESTDIR=$(CURDIR)/debian/tmp
	mv debian/tmp/usr/share/man/man3w debian/tmp/usr/share/man/man3
	install build64/tools/fnt2bdf debian/tmp/usr/bin
	rm -f debian/tmp/usr/bin/winelauncher
	sed "s,usr/lib/wine,$(AMD64_WINEDIR)," debian/winelauncher > debian/tmp/usr/bin/wine
	# install tools
	cp tools/font_convert.sh debian/tmp/usr/bin/wine-font-convert

	bash debian/gen-alternatives.sh "$(VERSUFFIX)" 64 $(ALTPRIO64)

	touch install-arch64-stamp

install-arch: install-arch-stamp
install-arch-stamp: $(patsubst build%,install-arch%-stamp,$(BUILDS))
	dh_testdir
	dh_testroot

	# MIME and binfmt databases
	mkdir -p debian/tmp/usr/share/{mime-info,binfmts}
	cp debian/mime-info.mime	debian/tmp/usr/share/mime-info/wine.mime
	cp debian/mime-info.keys	debian/tmp/usr/share/mime-info/wine.keys
	cp debian/wine.binfmt		debian/tmp/usr/share/binfmts/wine
	# other documentation
	mkdir -p debian/tmp/usr/share/doc/wine
	cp tools/winedump/README	debian/tmp/usr/share/doc/wine/README.winedump

	touch install-arch-stamp

install: install-arch

# Build architecture-independent files here.
binary-indep: build-indep install-indep
	dh_testdir
	dh_testroot

	dh_installdocs -i
	dh_installchangelogs -i
	dh_compress -i
	dh_fixperms -i
	dh_installdeb -i
	dh_gencontrol -i
	dh_md5sums -i
	dh_builddeb -i

# Build architecture-dependent files here.
ifneq (,$(BUILDS))
binary-arch: install-arch-stamp
	dh_testdir
	dh_testroot
	# create installation directories
	dh_installdirs -s

	# create usr/share/doc symlinks
	bash debian/doclink.sh libwine$(VERSUFFIX)

	# prepare <packagename>.install files
	bash debian/prep-install.sh "$(VERSUFFIX)" "$(LIBDIRS)"

	# distribute files into debian/<packagename>
	# according to the <packagename>.install files
	dh_install -s --list-missing

	# patch marlett.ttf due to fontforge bug #458234
	#mensis -script debian/marlett.mensis debian/libwine$(VERSUFFIX)/usr/share/wine/fonts/marlett.ttf
	#rm -f debian/libwine$(VERSUFFIX)/usr/share/wine/fonts/marlett.ttf~

	# split up libwine
	bash debian/split.sh "$(VERSUFFIX)" libwine $(patsubst %,%/wine$(VERSUFFIX),$(LIBDIRS))

	# install wine documentation and changelog
	rm -f debian/wine/usr/share/doc/wine
	dh_installdocs -pwine
	dh_installchangelogs -pwine

	dh_installdocs -plibwine$(VERSUFFIX)
	dh_installchangelogs -plibwine$(VERSUFFIX)

	dh_installman -s
#	dh_installmenu -s
	dh_installdebconf -s
	dh_installmime -s

	dh_link -s

	# Wine uses many "interesting" linker options,
	# so objcopy barfs on several Wine binaries.
	# I'll just have to exclude them here, I guess.
	# (They're pretty small ones anyway...)
	dh_strip -s --dbg-package=libwine-dbg$(VERSUFFIX) \
	 -Xwine-kthread -Xwine-pthread -Xwine-preloader -Xwine.bin

	# We don't need symbols for the build tools...
	rm -rf debian/libwine-dbg$(VERSUFFIX)/usr/lib/debug/usr/bin

	# install reportbug control files
	for fn in debian/*.bugcontrol; do \
	 sfn="`basename "$$fn" .bugcontrol`"; \
	 install -D -m 644 "$$fn" "debian/$$sfn/usr/share/bug/$$sfn/control"; \
	done

	dh_desktop -s

	dh_compress -s
	dh_fixperms -s

	echo "wine:Depends=$(LIBWINE_DEPS)" >> debian/libwine$(VERSUFFIX).substvars

	# tight libwine dependencies for packages built here
	dh_makeshlibs -plibwine$(VERSUFFIX) -n -V "libwine$(VERSUFFIX) (= $(VERSION))"

	# forcing extra dependencies
	bash debian/gendeps.sh "$(VERSUFFIX)" $(patsubst build%,%,$(BUILDS))
	dh_shlibdeps -s $(SHLIBS_OPTS) -Xextrarecs
	bash debian/recs.sh "$(VERSUFFIX)"
	bash debian/cleandeps.sh "$(VERSUFFIX)"

	# relaxed libwine dependencies for everyone else
	dh_makeshlibs -s

	dh_installdeb -s

	dh_gencontrol -s
	dh_md5sums -s
	dh_builddeb -s
else
binary-arch: control-stamp
	# Create dummy (transition) packages. The control-stamp rule
	# will make them depend on the desired packages.
	dh_testdir
	dh_testroot
	# create installation directories
	dh_installdirs -s

	# install wine64.sh helper script
	mkdir -p debian/wine64-bin/usr/bin
	cp debian/wine64.sh debian/wine64-bin/usr/bin/wine
	chmod +x debian/wine64-bin/usr/bin/wine

	bash debian/doclink.sh libwine$(VERSUFFIX)

	# install wine, wine64-bin documentation and changelog
	rm -f debian/wine64-bin/usr/share/doc/wine64-bin
	rm -f debian/wine/usr/share/doc/wine
	dh_installdocs -pwine64-bin -pwine
	dh_installchangelogs -pwine64-bin -pwine

	dh_installdocs -plibwine$(VERSUFFIX)
	dh_installchangelogs -plibwine$(VERSUFFIX)

	dh_compress -s
	dh_fixperms -s

	dh_installdeb -s

	dh_gencontrol -s
	dh_md5sums -s
	dh_builddeb -s
endif

binary: binary-arch binary-indep

.PHONY: configure-arch32 configure-arch64 \
	build-indep build-arch32 build-arch64 build-arch build \
	clean-arch32 clean-arch64 clean \
	install-indep install-arch32 install-arch64 install-arch install \
	binary-indep binary-arch binary