[go: up one dir, main page]

File: rules

package info (click to toggle)
glibc 2.1.3-20
  • links: PTS
  • area: main
  • in suites: potato
  • size: 7,512 kB
  • ctags: 161
  • sloc: sh: 8,850; makefile: 288
file content (336 lines) | stat: -rwxr-xr-x 12,539 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
#! /usr/bin/make -f
# -*- makefile -*-
# debian/rules file for GNU libc.
# Copyright 1998, 1999 by Joel Klecker <espy@debian.org>
# This "program" is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.

SHELL=/bin/sh -e

DEB_HOST_GNU_CPU    := $(shell dpkg-architecture -qDEB_HOST_GNU_CPU)
DEB_HOST_GNU_TYPE   := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
DEB_HOST_GNU_SYSTEM := $(shell dpkg-architecture -qDEB_HOST_GNU_SYSTEM)
DEB_HOST_GNU_CPU64  := $(DEB_HOST_GNU_CPU)64
DEB_HOST_GNU_TYPE64   := $(DEB_HOST_GNU_CPU64)-$(DEB_HOST_GNU_SYSTEM)

DEB_BUILD_GNU_CPU    := $(shell dpkg-architecture -qDEB_BUILD_GNU_CPU)
DEB_BUILD_GNU_TYPE   := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
DEB_BUILD_GNU_SYSTEM := $(shell dpkg-architecture -qDEB_BUILD_GNU_SYSTEM)

DEBVERSION:=$(shell LC_ALL=C dpkg-parsechangelog | sed -ne 's/^Version: *\([^2]*\)/\1/p')

mkdir := debian/sysdeps

make_directory = mkdir --parents --mode=0755
INSTALL = install
INSTALL_DATA = $(INSTALL) --mode=0644
INSTALL_PROGRAM = $(INSTALL) --mode=0755
INSTALL_SCRIPT = $(INSTALL) --mode=0755
ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
STRIP = $(DEB_HOST_GNU_TYPE)-strip
else
STRIP = strip
endif

top_srcdir	= $(shell pwd)/
hostdir		= $(top_srcdir)$(DEB_HOST_GNU_TYPE)
hostdir64	= $(top_srcdir)$(DEB_HOST_GNU_TYPE64)
stampdir	= $(hostdir)
srcdir		= $(top_srcdir)glibc-$(TARDIR)
objdir		= $(hostdir)/obj
objdir64	= $(hostdir64)/obj
tmpdir		= $(hostdir)
install_root	= $(hostdir)/install_root
install_root64	= $(hostdir64)/install_root
package-rules	= $(top_srcdir)/debian/package-rules

stamp_unpack := unpacked-source
stamp_patch := patched-source
stamp_configure := $(stampdir)/configured-source
stamp_build := $(stampdir)/compiled-source
stamp_install := $(stampdir)/installed-binaries

log_build := $(top_srcdir)log-build-$(DEB_HOST_GNU_TYPE)
log_test  := $(top_srcdir)log-test-$(DEB_HOST_GNU_TYPE)
log_build64 := $(top_srcdir)log-build-$(DEB_HOST_GNU_TYPE64)
log_test64  := $(top_srcdir)log-test-$(DEB_HOST_GNU_TYPE64)

include $(mkdir)/sysdeps.mk

clean: debian/control setperms clean.sh
	$(SHELL) ./clean.sh
	rm -f debian/files debian/substvars log-*
	rm -f unpacked-source patched-source -r patched
	rm -f `find debian -name 'libc*' -type l`
	rm -f `find debian -name '*~' -o -name '#*#'`
	-test -d $(DEB_HOST_GNU_TYPE) && rm -rf $(DEB_HOST_GNU_TYPE)

define debian-clean
	rm -f `find debian/$@ -name '*~' -o -name '#*#'`
endef

build: $(stamp_build)
$(stamp_build): $(stamp_configure)
	@if [ -s $(log_build) ]; then savelog $(log_build); fi
	@if [ -s $(log_build64) ]; then savelog $(log_build64); fi
	@echo 'Building GNU C Library for a $(DEB_BUILD_GNU_TYPE) host.'
	$(MAKE) -C $(objdir) PARALLELMFLAGS="$(PARALLELMFLAGS)" > $(log_build) 2>&1
ifeq ($(WANT_LIB_64),yes)
	@echo 'Building 64-bit GNU C Library for a $(DEB_HOST_GNU_TYPE64) host.'
	$(MAKE) -C $(objdir64) PARALLELMFLAGS="$(PARALLELMFLAGS)" > $(log_build64) 2>&1
endif
	@echo 'Running GNU C Library test suite.'
	-$(MAKE) -f debian/rules check
	touch $@

check:
	@if [ -s $(log_test) ]; then savelog $(log_test); fi
	@if [ -s $(log_test64) ]; then savelog $(log_test64); fi
	$(warning Please check results before uploading in case of test failures.)
	$(MAKE) SHELL=/bin/bash -C $(objdir) check > $(log_test) 2>&1
ifeq ($(WANT_LIB_64),yes)
	$(MAKE) SHELL=/bin/bash -C $(objdir64) check > $(log_test64) 2>&1
endif

install: $(stamp_install)
$(stamp_install): $(stamp_build)
	$(make_directory) $(install_root)
	$(MAKE) -C $(objdir) install_root=$(install_root) install
ifeq ($(WANT_LIB_64),yes)
	$(make_directory) $(install_root64)
	$(MAKE) -C $(objdir64) install_root=$(install_root64) install
endif
	touch $@

configure: $(stamp_configure)
$(stamp_configure): $(stamp_unpack) $(stamp_patch)
	$(make_directory) $(objdir) $(stampdir)
	rm -f $(objdir)/configparms
	echo "CC = $(CC)"		  >> $(objdir)/configparms
	echo "BUILD_CC = $(BUILD_CC)"	  >> $(objdir)/configparms
	echo "CFLAGS = $(HOST_CFLAGS)"	  >> $(objdir)/configparms
	echo "BUILD_CFLAGS = -O2"	  >> $(objdir)/configparms
	echo "BASH := /bin/bash"	  >> $(objdir)/configparms
	echo "KSH := /bin/bash"		  >> $(objdir)/configparms
	echo "mandir = $(mandir)"	  >> $(objdir)/configparms
	echo "infodir = $(infodir)"	  >> $(objdir)/configparms
	echo "libexecdir = $(libexecdir)" >> $(objdir)/configparms
ifeq ($(DEB_HOST_GNU_SYSTEM),gnu)
	echo "slibdir = /lib"		  >> $(objdir)/configparms
	echo "rootsbindir = /sbin"	  >> $(objdir)/configparms
	echo "sysconfdir = /etc"	  >> $(objdir)/configparms
endif
ifeq ($(WANT_LIB_64),yes)
	cd $(objdir64) && \
	CFLAGS="" BUILD_CC="$(DEB_HOST_GNU_TYPE64)" \
	$(srcdir)/configure --prefix=/usr \
	--host=$(DEB_HOST_GNU_TYPE64) --build=$(DEB_BUILD_GNU_TYPE) 
	--enable-add- --without-cvs \
	--with-headers=$(LINUX_SOURCE64)/include
endif
	cd $(objdir) && $(srcdir)/configure --host=$(DEB_HOST_GNU_TYPE) \
	--build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --without-cvs \
	--enable-add- $(with_headers)
	touch $@

arch_packages  = $(libc) $(libc)-dev $(libc)-prof $(libc)-dbg $(libc)-pic locales
indep_packages = i18ndata $(glibc)-doc

ifeq ($(threads),yes)
# nscd requires pthreads
arch_packages += nscd
endif
ifeq ($(WANT_NSS1_COMPAT),yes)
arch_packages += libnss1-compat
endif
ifeq ($(WANT_LIB_64),yes)
arch_packages += libc6-64 libc6-64-dev
endif

print-config:
	@echo "Compiling with debugging symbols: $(DEB_BUILD_OPTION_DEBUG)."
	@echo "Stripping binaries: $(DEB_BUILD_OPTION_STRIP)."
	@echo "Using parallel make: $(DEB_BUILD_OPTION_PARALLEL)."
	@echo "Compiler: $(CC) (`$(CC) --version`)."

binary: binary-arch binary-indep
binary-indep: $(indep_packages)
binary-arch: $(arch_packages)

$(libc): $(stamp_install) debian/control $(mkdir)/sysdeps.mk debian/libc/DEBIAN/shlibs
	$(checkroot)
	$(debian-clean)
	-rm -rf $(tmpdir)/$@

	$(make_directory) $(tmpdir)/$@/lib
	$(INSTALL_PROGRAM) $(install_root)/lib/ld-$(VERSION).so $(tmpdir)/$@/lib/.
	$(INSTALL_DATA) $(install_root)/lib/lib*-$(VERSION).so $(tmpdir)/$@/lib/.
	$(INSTALL_PROGRAM) $(install_root)/lib/libc-$(VERSION).so $(tmpdir)/$@/lib/.
	$(INSTALL_DATA) $(install_root)/lib/libSegFault.so $(tmpdir)/$@/lib/.
	rm -f $(tmpdir)/$@/lib/libnss1_*.so
ifeq ($(threads),yes)
	$(INSTALL_DATA) $(install_root)/lib/libpthread-0.8.so $(tmpdir)/$@/lib/.
	$(INSTALL_DATA) $(install_root)/lib/libthread_db-1.0.so $(tmpdir)/$@/lib/.
endif
	@set -ex; cd $(install_root)/lib && \
	for l in `find . -type l -name '*.so.*' ! -name 'libnss*_*.so.1*'`; \
	do cp -df $(install_root)/lib/$$l $(tmpdir)/$@/lib/.; done
ifeq ($(DEB_HOST_GNU_SYSTEM),gnu)
# Why doesn't the glibc makefile install this?
	ln -sf ld.so.1 $(tmpdir)/$@/lib/ld.so
endif
	$(make_directory) $(tmpdir)/$@$(libdir)/gconv
	$(INSTALL_DATA) $(install_root)$(libdir)/gconv/* $(tmpdir)/$@$(libdir)/gconv/.

	$(make_directory) $(tmpdir)/$@$(datadir)
	$(make_directory) $(tmpdir)/$@$(bindir)
	$(INSTALL_PROGRAM) $(addprefix $(install_root)$(bindir)/, \
	getent iconv locale localedef) $(tmpdir)/$@$(bindir)/.
	$(INSTALL_SCRIPT) $(addprefix $(install_root)$(bindir)/, \
	catchsegv glibcbug tzselect) $(tmpdir)/$@$(bindir)/.
ifeq ($(WANT_LDD),yes)
	$(INSTALL_SCRIPT) $(install_root)$(bindir)/ldd $(tmpdir)/$@$(bindir)/.
endif
	$(INSTALL_PROGRAM) $(install_root)$(bindir)/getent $(tmpdir)/$@$(bindir)/.

	$(make_directory) $(tmpdir)/$@$(mandir)/man1

	$(INSTALL_PROGRAM) $(install_root)$(bindir)/makedb $(tmpdir)/$@$(bindir)/.
	$(INSTALL_PROGRAM) $(install_root)$(sbindir)/zdump $(tmpdir)/$@$(bindir)/.

	$(make_directory) $(tmpdir)/$@$(sbindir)
	$(INSTALL_PROGRAM) $(install_root)$(sbindir)/zic $(tmpdir)/$@$(sbindir)/.
	$(make_directory) $(tmpdir)/$@$(libexecdir)
	$(INSTALL) --mode=4755 $(install_root)$(libexecdir)/pt_chown $(tmpdir)/$@$(libexecdir)/.

	$(make_directory) $(tmpdir)/$@$(mandir)/man1
	$(INSTALL_DATA) $(addprefix debian/manpages/, \
	getent.1 iconv.1 locale.1 localedef.1 tzconfig.1 tzselect.1) $(tmpdir)/$@$(mandir)/man1/.
	-gzip -9fv $(tmpdir)/$@$(mandir)/man1/*
	$(INSTALL_DATA) debian/manpages/zdump.1 $(tmpdir)/$@$(mandir)/man1/.
	$(make_directory) $(tmpdir)/$@$(mandir)/man8
	$(INSTALL_DATA) debian/manpages/zic.8 $(tmpdir)/$@$(mandir)/man8/.
	-gzip -9f $(tmpdir)/$@$(mandir)/man?/*

# It is safe to strip the dynamic linker though _dl_debug_state must be kept
# in order for gdb to work.
ifeq ($(DEB_BUILD_OPTION_STRIP),yes)
  ifeq ($(DEB_HOST_GNU_CPU),i386)
	$(STRIP) -g -K _dl_debug_state -R .note -R .comment $(tmpdir)/$@/lib/ld-$(VERSION).so
  endif
	cd $(tmpdir)/$@ && \
	$(STRIP) --strip-unneeded -R .note -R .comment lib/libSegFault.so \
	lib/lib*-$(VERSION).so ./$(libexecdir)/pt_chown
	-$(STRIP) --strip-unneeded -R .note $(tmpdir)/$@$(bindir)/* $(tmpdir)/$@$(sbindir)/*
ifeq ($(threads),yes)
	$(STRIP) --strip-debug -R .note -R .comment $(tmpdir)/$@/lib/libpthread-0.8.so
	$(STRIP) --strip-unneeded -R .note -R .comment $(tmpdir)/$@/lib/libthread_db-1.0.so
endif
	$(STRIP) $(tmpdir)/$@$(libdir)/gconv/*.so
endif
	$(make_directory) $(tmpdir)/$@$(datadir)
ifeq ($(cross_compiling),yes)
	$(warning Copying zoneinfo from build system.)
	cp -a /usr/share/zoneinfo $(tmpdir)/$@$(datadir)/.
else
	cp -a $(install_root)$(datadir)/zoneinfo $(tmpdir)/$@$(datadir)/.
endif
ifeq ($(DEB_HOST_GNU_SYSTEM),linux)
	$(make_directory) $(tmpdir)/$@/var/lib/misc
	sed -e 's%/var/db%/var/lib/misc%' < $(srcdir)/nss/db-Makefile \
	> $(tmpdir)/$@/var/lib/misc/Makefile
	chmod 644 $(tmpdir)/$@/var/lib/misc/Makefile
else
	$(make_directory) $(tmpdir)/$@/var/db
	$(INSTALL_DATA) $(srcdir)/nss/db-Makefile $(tmpdir)/$@/var/db/Makefile
endif
	$(make_directory) $(tmpdir)/$@$(docdir)/$@
	$(INSTALL_DATA) $(addprefix $(srcdir)/,BUGS FAQ INSTALL INTERFACE \
	NEWS NOTES PROJECTS README hesiod/README.hesiod) \
	$(tmpdir)/$@$(docdir)/$@/.
	$(INSTALL_DATA) $(srcdir)/crypt/README $(tmpdir)/$@$(docdir)/$@/README.crypt
	$(INSTALL_DATA) $(srcdir)/db2/mutex/README $(tmpdir)/$@$(docdir)/$@/README.db2.mutex
ifeq ($(threads),yes)
	$(INSTALL_DATA) $(srcdir)/linuxthreads/ChangeLog \
		$(tmpdir)/$@$(docdir)/$@/ChangeLog.linuxthreads
	$(INSTALL_DATA) $(srcdir)/linuxthreads/README $(tmpdir)/$@$(docdir)/$@/README.linuxthreads
endif
	$(INSTALL_DATA) debian/FAQ $(tmpdir)/$@$(docdir)/$@/README.Debian
	$(INSTALL_DATA) $(srcdir)/ChangeLog $(tmpdir)/$@$(docdir)/$@/changelog
	$(INSTALL_DATA) debian/changelog $(tmpdir)/$@$(docdir)/$@/changelog.Debian
	-find $(tmpdir)/$@$(docdir)/$@ -type f | xargs -r gzip -9f
	$(INSTALL_DATA) debian/copyright $(tmpdir)/$@$(docdir)/$@/copyright

	cp -a debian/$@/* $(tmpdir)/$@
ifeq ($(DEB_HOST_GNU_SYSTEM),gnu)
# Fake ldconfig for HURD
	$(make_directory) $(tmpdir)/$@/sbin
	ln -sf /bin/true $(tmpdir)/$@/sbin/ldconfig
endif
	dpkg-gencontrol -isp -p$@ -P$(tmpdir)/$@ $(libc_control_flags)
	chown -R root.root $(tmpdir)/$@
	chmod -R go=rX $(tmpdir)/$@
	dpkg --build $(tmpdir)/$@ ..

include $(package-rules)/libc-dev.mk
include $(package-rules)/libc-dbg.mk
include $(package-rules)/libc-pic.mk
include $(package-rules)/libc-prof.mk
include $(package-rules)/nscd.mk
ifeq ($(WANT_NSS1_COMPAT),yes)
include $(package-rules)/libnss1-compat.mk
endif
ifeq ($(WANT_LIB_64),yes)
include $(package-rules)/libc-64.mk
include $(package-rules)/libc-64-dev.mk
endif

include $(package-rules)/locales.mk
include $(package-rules)/i18ndata.mk
include $(package-rules)/glibc-doc.mk

setperms: debian/perms
	@for dir in glibc-doc libc libc-* locales nscd libnss1-compat i18ndata; \
	do \
		chmod 0755 debian/$$dir; \
		find debian/$$dir -type f -name p\* | xargs chmod -v 0755; \
	done
	@while read file mode; do \
		case $$file in \#*) continue;; esac; \
		chmod -v $$mode debian/$$file; \
	done < $<

links:
	@if [ ! -L debian/$(libc) ]; then \
		echo "Linking debian/$(libc) -> libc."; \
		ln -sf libc debian/$(libc); \
	fi
	@for pkg in dev dbg prof pic; \
	do \
		if [ ! -L debian/$(libc)-$$pkg -a -d debian/libc-$$pkg ]; then \
			echo "Linking debian/$(libc)-$$pkg -> libc-$$pkg."; \
			ln -sf libc-$$pkg debian/$(libc)-$$pkg; \
		fi \
	done

$(DEB_HOST_GNU_TYPE):
	mkdir $@

unpack: $(stamp_unpack)
$(stamp_unpack): prep.sh version.mk
	$(SHELL) ./prep.sh
	$(MAKE) -f debian/rules links
	$(MAKE) -f debian/rules setperms
	touch $@

include debian/rules.d/shlibs.mk
include debian/rules.d/control.mk
include debian/rules.d/patch.mk

define checkroot
	@test root = "`whoami`" || (echo need root privileges; exit 1)
endef

.PHONY: binary binary-arch binary-indep clean print-config