Commit | Line | Data |
---|---|---|
7217e0ca ML |
1 | #!/usr/bin/make -f |
2 | # debian/rules for the Debian xorg-server package. | |
3 | # Copyright © 2004 Scott James Remnant <scott@netsplit.com> | |
4 | # Copyright © 2005 Daniel Stone <daniel@fooishbar.org> | |
5 | # Copyright © 2005 David Nusinow <dnusinow@debian.org> | |
6 | ||
7 | # Uncomment this to turn on verbose mode. | |
8 | #export DH_VERBOSE=1 | |
9 | ||
10 | # Set up the $(STAMP_DIR) directory, and use it for quilt' stamp: | |
11 | STAMP_DIR := stampdir | |
12 | QUILT_STAMPFN := $(STAMP_DIR)/patch | |
13 | $(STAMP_DIR)/stampdir: | |
14 | mkdir $(STAMP_DIR) | |
15 | >$@ | |
16 | ||
17 | include /usr/share/quilt/quilt.make | |
18 | ||
19 | ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) | |
20 | NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) | |
21 | MAKEFLAGS += -j$(NUMJOBS) | |
22 | endif | |
23 | ||
24 | DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) | |
25 | DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH) | |
26 | DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) | |
27 | DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) | |
28 | DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) | |
29 | ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) | |
30 | confflags += --build=$(DEB_HOST_GNU_TYPE) | |
31 | else | |
32 | confflags += --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) | |
33 | endif | |
34 | ||
35 | # udeb is arch-dependent... | |
36 | ifneq (, $(filter %-udeb, $(shell dh_listpackages -s))) | |
37 | udeb = yes | |
38 | endif | |
39 | ||
40 | # ...but let's support disabling it to speed up debug builds: | |
41 | ifneq (,$(filter noudeb,$(DEB_BUILD_OPTIONS))) | |
42 | udeb = | |
43 | DH_INSTALL_OPTIONS = -Nxserver-xorg-core-udeb | |
44 | endif | |
45 | ||
46 | ||
47 | ifeq ($(DEB_HOST_ARCH_OS), linux) | |
48 | selinux = --enable-xselinux | |
49 | build_xmir = --enable-xmir | |
50 | else | |
51 | selinux = --disable-xselinux | |
52 | endif | |
53 | ||
54 | # Mir isn't built on PPC | |
55 | ifneq (,$(filter $(DEB_HOST_ARCH), arm64 powerpc ppc64el)) | |
56 | build_xmir = --disable-xmir | |
57 | endif | |
58 | ||
59 | ifeq ($(DEB_HOST_ARCH_OS), hurd) | |
60 | dri = --disable-dri --disable-dri2 --disable-dri3 | |
61 | else | |
62 | dri = --enable-dri --enable-dri2 | |
63 | ifeq ($(DEB_HOST_ARCH_OS), linux) | |
64 | dri += --enable-dri3 | |
65 | else | |
66 | # disable dri3 on kbsd until xtrans fd passing is enabled | |
67 | dri += --disable-dri3 | |
68 | endif | |
69 | endif | |
70 | ||
71 | config_backend = --disable-config-dbus --disable-config-hal | |
72 | ifeq ($(DEB_HOST_ARCH_OS), linux) | |
73 | config_backend += --enable-config-udev | |
74 | else ifeq ($(DEB_HOST_ARCH_OS), kfreebsd) | |
75 | config_backend += --disable-config-udev --enable-config-devd | |
76 | libs = $(shell pkg-config --libs libbsd-overlay) | |
77 | cppflags = $(shell pkg-config --cflags libbsd-overlay) | |
78 | else # hurd | |
79 | config_backend += --disable-config-udev | |
80 | endif | |
81 | ||
82 | vars = $(shell DEB_BUILD_MAINT_OPTIONS="hardening=+pie" DEB_LDFLAGS_MAINT_APPEND="-Wl,-Bsymbolic" DEB_CPPFLAGS_MAINT_APPEND="-DPRE_RELEASE=0 $(cppflags)" dpkg-buildflags --export=configure) LIBS="$(libs)" | |
83 | ||
84 | ifneq (,$(filter nocheck, $(DEB_BUILD_OPTIONS))) | |
85 | config_tests = --disable-unit-tests | |
86 | else | |
87 | config_tests = --enable-unit-tests | |
88 | endif | |
89 | ||
90 | INSTALL=/usr/bin/install | |
91 | ||
92 | VENDOR = $(shell lsb_release -i -s) | |
93 | SUPPORT = For technical support please see http://www.ubuntu.com/support | |
94 | ||
95 | SOURCE_NAME := xorg-server | |
96 | SOURCE_VERSION := $(shell dpkg-parsechangelog | awk -F': ' '/^Version: / {print $$2}') | |
97 | ||
98 | # Add a workaround for LP: #1266492 | |
99 | confflags += lt_cv_prog_compiler_static_works=no | |
100 | ||
101 | # Add a workaround for LP: #1266492 | |
102 | confflags += lt_cv_prog_compiler_static_works=no | |
103 | ||
104 | # disable-static is so we don't get libfoo.a for modules. now if only we could | |
105 | # kill the .las. | |
106 | confflags += \ | |
107 | --disable-silent-rules \ | |
108 | --disable-static \ | |
109 | --without-dtrace \ | |
110 | --disable-strict-compilation \ | |
111 | --disable-debug \ | |
112 | $(config_tests) \ | |
113 | --with-int10=x86emu \ | |
114 | --with-extra-module-dir="/usr/lib/${DEB_HOST_MULTIARCH}/xorg/extra-modules,/usr/lib/xorg/extra-modules" \ | |
115 | --with-os-vendor="$(VENDOR)" \ | |
116 | --with-builderstring="$(SOURCE_NAME) $(SOURCE_VERSION) ($(SUPPORT))" \ | |
117 | --with-xkb-path=/usr/share/X11/xkb \ | |
118 | --with-xkb-output=/var/lib/xkb \ | |
119 | --disable-install-libxf86config \ | |
120 | --enable-mitshm \ | |
121 | --enable-xres \ | |
122 | --disable-xcsecurity \ | |
123 | --disable-tslib \ | |
124 | --enable-dbe \ | |
125 | --disable-xf86bigfont \ | |
126 | --enable-dpms \ | |
127 | $(config_backend) \ | |
128 | --enable-xorg \ | |
129 | --disable-linux-acpi \ | |
130 | --disable-linux-apm \ | |
131 | --disable-xquartz \ | |
132 | --disable-xwin \ | |
133 | --disable-xfake \ | |
134 | --disable-xfbdev \ | |
135 | --disable-install-setuid | |
136 | ||
137 | confflags_main = \ | |
138 | --with-default-font-path="/usr/share/fonts/X11/misc,/usr/share/fonts/X11/cyrillic,/usr/share/fonts/X11/100dpi/:unscaled,/usr/share/fonts/X11/75dpi/:unscaled,/usr/share/fonts/X11/Type1,/usr/share/fonts/X11/100dpi,/usr/share/fonts/X11/75dpi,built-ins" \ | |
139 | --enable-aiglx \ | |
140 | --enable-glx-tls \ | |
141 | --enable-registry \ | |
142 | --enable-composite \ | |
143 | --enable-record \ | |
144 | --enable-xv \ | |
145 | --enable-xvmc \ | |
146 | --enable-dga \ | |
147 | --enable-screensaver \ | |
148 | --enable-xdmcp \ | |
149 | --enable-xdm-auth-1 \ | |
150 | --enable-glx \ | |
151 | $(dri) \ | |
152 | --enable-present \ | |
153 | --enable-xinerama \ | |
154 | --enable-xf86vidmode \ | |
155 | --enable-xace \ | |
156 | $(selinux) \ | |
157 | --enable-xfree86-utils \ | |
158 | --enable-dmx \ | |
159 | --enable-xvfb \ | |
160 | --enable-xnest \ | |
161 | --enable-kdrive \ | |
162 | --enable-xephyr \ | |
163 | $(build_xfbdev) \ | |
164 | $(build_xmir) \ | |
165 | --with-sha1=libgcrypt \ | |
166 | --enable-xcsecurity \ | |
167 | $(config_backend_main) \ | |
168 | $(void) | |
169 | ||
170 | confflags_udeb = \ | |
171 | --with-default-font-path="built-ins" \ | |
172 | --disable-aiglx \ | |
173 | --disable-glx-tls \ | |
174 | --disable-registry \ | |
175 | --disable-composite \ | |
176 | --disable-record \ | |
177 | --disable-xv \ | |
178 | --disable-xvmc \ | |
179 | --enable-dga \ | |
180 | --disable-screensaver \ | |
181 | --disable-xdmcp \ | |
182 | --disable-xdm-auth-1 \ | |
183 | --disable-glx \ | |
184 | --disable-dri \ | |
185 | --disable-dri2 \ | |
186 | --disable-xinerama \ | |
187 | --disable-xf86vidmode \ | |
188 | --disable-xace \ | |
189 | --disable-xselinux \ | |
190 | --disable-xfree86-utils \ | |
191 | --disable-dmx \ | |
192 | --disable-xvfb \ | |
193 | --disable-xnest \ | |
194 | --disable-kdrive \ | |
195 | --disable-xephyr \ | |
196 | --disable-xfbdev \ | |
197 | --disable-xmir \ | |
198 | --with-sha1=libnettle \ | |
199 | $(config_backend_udeb) \ | |
200 | $(void) | |
201 | ||
202 | $(QUILT_STAMPFN): $(STAMP_DIR)/stampdir | |
203 | ||
204 | $(STAMP_DIR)/autoreconf: $(STAMP_DIR)/stampdir $(QUILT_STAMPFN) | |
205 | dh_testdir | |
206 | autoreconf -vfi | |
207 | >$@ | |
208 | ||
209 | $(STAMP_DIR)/build-source: $(STAMP_DIR)/autoreconf | |
210 | mkdir -p build-source | |
211 | tar \ | |
212 | --owner=0 --group=0 \ | |
213 | --transform 's,^,xorg-server/,' \ | |
214 | --exclude=stampdir --exclude=debian \ | |
215 | --exclude=build-* --exclude=autom4te.cache \ | |
216 | -cf - * | xz > build-source/xorg-server.tar.xz | |
217 | >$@ | |
218 | ||
219 | $(STAMP_DIR)/configure-%: $(STAMP_DIR)/autoreconf | |
220 | dh_testdir | |
221 | mkdir -p build-$* | |
222 | cd build-$* && \ | |
223 | ../configure \ | |
224 | --prefix=/usr \ | |
225 | --mandir=\$${prefix}/share/man \ | |
226 | --infodir=\$${prefix}/share/info \ | |
227 | --sysconfdir=/etc \ | |
228 | --localstatedir=/var \ | |
229 | $(confflags) \ | |
230 | $(confflags_$*) \ | |
231 | $(vars) | |
232 | >$@ | |
233 | ||
234 | $(STAMP_DIR)/build-%: $(STAMP_DIR)/configure-% | |
235 | dh_testdir | |
236 | cd build-$* && $(MAKE) | |
237 | >$@ | |
238 | ||
239 | $(STAMP_DIR)/tests-%: $(STAMP_DIR)/build-% | |
240 | cd build-$* && $(MAKE) check VERBOSE=1 | |
241 | >$@ | |
242 | ||
243 | build: abibumpcheck | |
244 | build: $(STAMP_DIR)/build-main | |
245 | build: $(STAMP_DIR)/tests-main | |
246 | ifeq ($(udeb), yes) | |
247 | build: $(STAMP_DIR)/build-udeb | |
248 | build: $(STAMP_DIR)/tests-udeb | |
249 | endif | |
250 | build-arch: build | |
251 | build-indep: $(STAMP_DIR)/build-source build | |
252 | ||
253 | clean: unpatch | |
254 | dh_testdir | |
255 | rm -rf $(STAMP_DIR) | |
256 | rm -f config.cache config.log config.status | |
257 | rm -f */config.cache */config.log */config.status | |
258 | rm -f conftest* */conftest* | |
259 | rm -rf autom4te.cache */autom4te.cache | |
260 | rm -rf build-* | |
261 | rm -f compile config.guess config.sub configure depcomp install-sh | |
262 | rm -f ltmain.sh missing INSTALL aclocal.m4 ylwrap | |
263 | rm -f include/do-not-use-config.h.in | |
264 | rm -f m4/lt*.m4 m4/libtool.m4 | |
265 | find -name Makefile.in -delete | |
266 | rm -f test-driver | |
267 | dh_clean | |
268 | ||
269 | install: build | |
270 | dh_testdir | |
271 | dh_testroot | |
272 | dh_prep | |
273 | dh_installdirs | |
274 | ||
275 | cd build-main && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp/main install | |
276 | ifeq ($(udeb), yes) | |
277 | cd build-udeb && $(MAKE) DESTDIR=$(CURDIR)/debian/tmp/udeb install | |
278 | endif | |
279 | ||
280 | # oh, yuck. | |
281 | find debian/tmp/*/usr/lib/xorg -type f -name '*.la' | \ | |
282 | xargs rm -f | |
283 | ||
284 | # remove modules not needed in d-i | |
285 | rm -rf debian/tmp/udeb/usr/lib/xorg/modules/multimedia | |
286 | rm -f debian/tmp/udeb/usr/lib/xorg/modules/libxaa.so | |
287 | rm -f debian/tmp/udeb/usr/lib/xorg/modules/libexa.so | |
288 | rm -f debian/tmp/udeb/usr/lib/xorg/modules/libwfb.so | |
289 | rm -f debian/tmp/udeb/usr/lib/xorg/modules/libxf8_16bpp.so | |
290 | ||
291 | # we don't ship these from the udeb build, reduce noise from dh_install | |
292 | # --list-missing | |
293 | rm -rf debian/tmp/udeb/usr/include | |
294 | rm -rf debian/tmp/udeb/usr/share/aclocal | |
295 | rm -rf debian/tmp/udeb/usr/share/man | |
296 | rm -rf debian/tmp/udeb/usr/lib/pkgconfig | |
297 | ||
298 | install -m 755 debian/local/xvfb-run debian/tmp/main/usr/bin | |
299 | # Make sure Xvfb at least starts up | |
300 | PATH=debian/tmp/main/usr/bin/:/bin:/usr/bin \ | |
301 | debian/tmp/main/usr/bin/xvfb-run -s "-screen 0 1280x1024x24 -nolisten tcp -noreset" true | |
302 | ||
303 | install debian/local/xvfb-run.1 debian/tmp/main/usr/share/man/man1 | |
304 | ifneq ($(DEB_HOST_ARCH_OS), linux) | |
305 | install -d debian/tmp/main/usr/share/X11/xorg.conf.d | |
306 | install -m 644 debian/local/10-*.conf debian/tmp/main/usr/share/X11/xorg.conf.d | |
307 | ifeq ($(udeb), yes) | |
308 | install -d debian/tmp/udeb/usr/share/X11/xorg.conf.d | |
309 | install -m 644 debian/local/10-*.conf debian/tmp/udeb/usr/share/X11/xorg.conf.d | |
310 | endif | |
311 | endif | |
312 | ||
313 | # stub to start building deb files, used by binary-indep and binary-arch | |
314 | binary-initial: | |
315 | dh_testdir | |
316 | dh_testroot | |
317 | ||
318 | # stub to build deb files, used by binary-indep and binary-arch | |
319 | binary-deb: | |
320 | dh_lintian | |
321 | dh_compress | |
322 | dh_fixperms | |
323 | dh_installdeb | |
324 | dh_shlibdeps | |
325 | dh_gencontrol | |
326 | dh_md5sums | |
327 | dh_builddeb | |
328 | ||
329 | # Only read the first line, the rest of the file is used to determine | |
330 | # when the minimal version as to be bumped: | |
331 | SERVERMINVER = debian/serverminver | |
332 | serverminver = $(shell head -1 $(SERVERMINVER)) | |
333 | ||
334 | .PHONY: abibumpcheck | |
335 | abibumpcheck: debian/serverminver $(QUILT_STAMPFN) | |
336 | @echo Checking for the need of an ABI bump | |
337 | # Build an updated version of the file: | |
338 | head -1 $(SERVERMINVER) > $(SERVERMINVER).new | |
339 | perl -ne 'print "$$1:$$2.$$3\n" if /^#define\s+(ABI_(?:VIDEODRV|XINPUT)_VERSION)\s+SET_ABI_VERSION\(\s*(\d+)\s*,\s*(\d+)\s*\)/' hw/xfree86/common/xf86Module.h|sort >> $(SERVERMINVER).new | |
340 | # Compare both files: | |
341 | @if ! cmp --quiet $(SERVERMINVER) $(SERVERMINVER).new; then \ | |
342 | echo "serverminver bump required, ABI changed!";\ | |
343 | echo "When bumping major or minor, always bump required xorg-server minimum";\ | |
344 | echo "version too, the newly built drivers are not backwards compatible!";\ | |
345 | diff -u $(SERVERMINVER) $(SERVERMINVER).new; \ | |
346 | exit 1; \ | |
347 | else \ | |
348 | echo "ABI unchanged"; \ | |
349 | rm -f $(SERVERMINVER).new; \ | |
350 | fi | |
351 | ||
352 | # Build architecture-dependent files here. | |
353 | binary-arch: build install | |
354 | $(MAKE) -f debian/rules DH_OPTIONS=-s binary-initial | |
355 | ||
356 | dh_installdocs -s | |
357 | dh_installchangelogs -s | |
358 | dh_install $(DH_INSTALL_OPTIONS) -s --list-missing | |
359 | $(INSTALL) -d $(CURDIR)/debian/xserver-xorg-dev/usr/share/xserver-xorg | |
360 | # Extract only the major ABI version: | |
361 | abi_videodrv=`PKG_CONFIG_PATH=debian/tmp/main/usr/lib/pkgconfig pkg-config --variable=abi_videodrv xorg-server|cut -d . -f 1`; \ | |
362 | echo videoabi=xorg-video-abi-$$abi_videodrv > debian/xserver-xorg-core.substvars && \ | |
363 | echo "xorg-video-abi-$$abi_videodrv, xserver-xorg-core (>= $(serverminver))" > debian/xserver-xorg-dev/usr/share/xserver-xorg/videodrvdep | |
364 | abi_xinput=`PKG_CONFIG_PATH=debian/tmp/main/usr/lib/pkgconfig pkg-config --variable=abi_xinput xorg-server|cut -d . -f 1`; \ | |
365 | echo inputabi=xorg-input-abi-$$abi_xinput >> debian/xserver-xorg-core.substvars && \ | |
366 | echo "xorg-input-abi-$$abi_xinput, xserver-xorg-core (>= $(serverminver))" > debian/xserver-xorg-dev/usr/share/xserver-xorg/xinputdep | |
367 | ||
368 | # The udeb uses the same substvars: | |
369 | cp debian/xserver-xorg-core.substvars debian/xserver-xorg-core-udeb.substvars | |
370 | ||
371 | $(INSTALL) -m 755 -d debian/xserver-xorg-core/usr/share/bug/xserver-xorg-core | |
372 | $(INSTALL) -m 755 debian/xserver-xorg-core.bug.script debian/xserver-xorg-core/usr/share/bug/xserver-xorg-core/script | |
373 | ifeq ($(DEB_HOST_ARCH_OS), linux) | |
374 | install -d debian/xserver-xorg-core/lib/udev/rules.d | |
375 | install -m 644 debian/local/64-xorg-xkb.rules debian/xserver-xorg-core/lib/udev/rules.d | |
376 | ifeq ($(udeb), yes) | |
377 | install -d debian/xserver-xorg-core-udeb/lib/udev/rules.d | |
378 | install -m 644 debian/local/64-xorg-xkb.rules debian/xserver-xorg-core-udeb/lib/udev/rules.d | |
379 | endif | |
380 | endif | |
381 | dh_installdebconf -s | |
382 | dh_installman -s | |
383 | dh_link -s | |
384 | dh_strip -pxserver-xorg-xmir -pxserver-xorg-core --dbg-package=xserver-xorg-core-dbg | |
385 | dh_strip -s -Nxserver-xorg-core -Nxserver-xorg-core-dbg | |
386 | $(MAKE) -f debian/rules DH_OPTIONS=-s binary-deb | |
387 | ||
388 | ||
389 | # Build architecture-independent files here | |
390 | binary-indep: build-indep install check | |
391 | $(MAKE) -f debian/rules DH_OPTIONS=-i binary-initial | |
392 | dh_install -i | |
393 | dh_installdocs -i | |
394 | dh_installchangelogs -i ChangeLog | |
395 | ||
396 | $(MAKE) -f debian/rules DH_OPTIONS=-i binary-deb | |
397 | ||
398 | check: | |
399 | dh_testdir | |
400 | ||
401 | binary: binary-indep binary-arch | |
402 | .PHONY: build clean binary-indep binary-arch binary install |