]> git.ipfire.org Git - thirdparty/glibc.git/blame - conform/Makefile
Fix limits.h NL_NMAX namespace (bug 19929).
[thirdparty/glibc.git] / conform / Makefile
CommitLineData
f7a9f785 1# Copyright (C) 1999-2016 Free Software Foundation, Inc.
da1067a9
UD
2# This file is part of the GNU C Library.
3
4# The GNU C Library is free software; you can redistribute it and/or
41bdb6e2
AJ
5# modify it under the terms of the GNU Lesser General Public
6# License as published by the Free Software Foundation; either
7# version 2.1 of the License, or (at your option) any later version.
da1067a9
UD
8
9# The GNU C Library is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41bdb6e2 12# Lesser General Public License for more details.
da1067a9 13
41bdb6e2 14# You should have received a copy of the GNU Lesser General Public
59ba27a6
PE
15# License along with the GNU C Library; if not, see
16# <http://www.gnu.org/licenses/>.
da1067a9
UD
17
18#
19# Sub-makefile for conform portion of the library.
20#
21subdir := conform
22
a5f891ac
JM
23include ../Makeconfig
24
54ee292d
JM
25conformtest-headers-data := $(wildcard data/*.h-data) \
26 $(wildcard data/*/*.h-data)
27
28conformtest-standards := ISO ISO99 ISO11 POSIX XPG3 XPG4 UNIX98 XOPEN2K \
29 POSIX2008 XOPEN2K8
30
31conformtest-headers-ISO := assert.h ctype.h errno.h float.h limits.h locale.h \
32 math.h setjmp.h signal.h stdarg.h stddef.h stdio.h \
33 stdlib.h string.h time.h
34conformtest-headers-ISO99 := $(conformtest-headers-ISO) complex.h fenv.h \
35 inttypes.h iso646.h stdbool.h stdint.h tgmath.h \
36 wchar.h wctype.h
37# Missing ISO11 expectations for: stdatomic.h threads.h.
38conformtest-headers-ISO11 := $(conformtest-headers-ISO99) stdalign.h \
39 stdnoreturn.h uchar.h
40conformtest-headers-POSIX := $(conformtest-headers-ISO) aio.h dirent.h \
41 fcntl.h fnmatch.h glob.h grp.h mqueue.h \
42 pthread.h pwd.h regex.h sched.h semaphore.h \
43 sys/mman.h sys/stat.h sys/times.h sys/types.h \
44 sys/utsname.h sys/wait.h tar.h termios.h \
45 unistd.h utime.h wordexp.h
46# Missing XPG3 expectations for: regexp.h wchar.h.
47conformtest-headers-XPG3 := $(conformtest-headers-ISO) cpio.h dirent.h \
48 fcntl.h fnmatch.h ftw.h glob.h grp.h iconv.h \
49 langinfo.h monetary.h nl_types.h pwd.h regex.h \
50 search.h sys/ipc.h sys/msg.h sys/sem.h sys/shm.h \
51 sys/stat.h sys/times.h sys/types.h sys/utsname.h \
52 sys/wait.h tar.h termios.h ulimit.h unistd.h \
53 utime.h varargs.h wordexp.h
54# Missing XPG4 expectations for: re_comp.h regexp.h wchar.h.
55# XPG4 includes XTI, but xti.h is outside the scope of these tests.
56conformtest-headers-XPG4 := $(conformtest-headers-XPG3) arpa/inet.h fmtmsg.h \
57 libgen.h ndbm.h netdb.h netinet/in.h poll.h \
58 strings.h stropts.h sys/mman.h sys/resource.h \
59 sys/socket.h sys/statvfs.h sys/time.h sys/timeb.h \
60 sys/uio.h sys/un.h syslog.h ucontext.h utmpx.h
61# Missing UNIX98 expectations for: inttypes.h re_comp.h regexp.h.
62# The online UNIX98 includes XCURSES, but curses.h, term.h and
63# unctrl.h are outside the scope of these tests. It also includes
64# XTI, but xti.h is outside the scope of these tests.
65conformtest-headers-UNIX98 := $(conformtest-headers-POSIX) arpa/inet.h cpio.h \
66 dlfcn.h fmtmsg.h ftw.h iconv.h iso646.h \
67 langinfo.h libgen.h monetary.h ndbm.h netdb.h \
68 netinet/in.h nl_types.h poll.h search.h \
69 strings.h stropts.h sys/ipc.h sys/msg.h \
70 sys/resource.h sys/sem.h sys/shm.h sys/socket.h \
71 sys/statvfs.h sys/time.h sys/timeb.h sys/uio.h \
72 sys/un.h syslog.h ucontext.h ulimit.h utmpx.h \
73 varargs.h wchar.h wctype.h
74# Missing XOPEN2K expectations for: trace.h.
75conformtest-headers-XOPEN2K := $(conformtest-headers-POSIX) arpa/inet.h \
76 complex.h cpio.h dlfcn.h fenv.h fmtmsg.h ftw.h \
77 iconv.h inttypes.h iso646.h langinfo.h \
78 libgen.h monetary.h ndbm.h net/if.h netdb.h \
79 netinet/in.h netinet/tcp.h nl_types.h poll.h \
80 search.h spawn.h stdbool.h stdint.h strings.h \
81 stropts.h sys/ipc.h sys/msg.h sys/resource.h \
82 sys/select.h sys/sem.h sys/shm.h sys/socket.h \
83 sys/statvfs.h sys/time.h sys/timeb.h sys/uio.h \
84 sys/un.h syslog.h tgmath.h ucontext.h ulimit.h \
85 utmpx.h wchar.h wctype.h
86# Missing POSIX2008 expectations for: trace.h.
87conformtest-headers-POSIX2008 := $(conformtest-headers-POSIX) arpa/inet.h \
88 complex.h cpio.h dlfcn.h fenv.h iconv.h \
89 inttypes.h iso646.h langinfo.h monetary.h \
90 net/if.h netdb.h netinet/in.h netinet/tcp.h \
91 nl_types.h poll.h spawn.h stdbool.h stdint.h \
92 strings.h stropts.h sys/select.h \
93 sys/socket.h sys/statvfs.h sys/un.h tgmath.h \
94 wchar.h wctype.h
95# Missing XOPEN2K8 expectations for: trace.h.
96conformtest-headers-XOPEN2K8 := $(conformtest-headers-POSIX2008) fmtmsg.h \
97 ftw.h libgen.h ndbm.h search.h sys/ipc.h \
98 sys/msg.h sys/resource.h sys/sem.h sys/shm.h \
99 sys/time.h sys/uio.h syslog.h ulimit.h utmpx.h
100
101conformtest-header-list-base := $(foreach std,$(conformtest-standards),\
102 header-list-$(std).out)
103conformtest-header-list-tests := $(addprefix $(objpfx),\
104 $(conformtest-header-list-base))
105tests-special += $(conformtest-header-list-tests)
106generated += $(conformtest-header-list-base)
107
108conformtest-header-base := $(foreach std,\
109 $(conformtest-standards),\
110 $(foreach h,\
111 $(conformtest-headers-$(std)),\
112 $(std)/$(h)/conform.out))
113conformtest-header-tests := $(addprefix $(objpfx),$(conformtest-header-base))
ba63ba08
UD
114ifneq (yes,$(fast-check))
115ifeq (no,$(cross-compiling))
54ee292d
JM
116tests-special += $(conformtest-header-tests)
117generated += $(conformtest-header-base)
ba63ba08
UD
118endif
119endif
31341567 120
24f4f825
JM
121linknamespace-symlists-base := $(foreach std,$(conformtest-standards),\
122 symlist-$(std))
123linknamespace-symlists-tests := $(addprefix $(objpfx),\
124 $(linknamespace-symlists-base))
125tests-special += $(linknamespace-symlists-tests)
126
0e7e69ba
JM
127linknamespace-symlist-stdlibs-base := $(foreach std,$(conformtest-standards),\
128 symlist-stdlibs-$(std))
129linknamespace-symlist-stdlibs-tests := \
130 $(addprefix $(objpfx),\
131 $(linknamespace-symlist-stdlibs-base))
132
133tests-special += $(linknamespace-symlist-stdlibs-tests)
24f4f825
JM
134
135linknamespace-header-base := $(foreach std,\
136 $(conformtest-standards),\
137 $(foreach h,\
138 $(conformtest-headers-$(std)),\
139 $(std)/$(h)/linknamespace.out))
140linknamespace-header-tests := $(addprefix $(objpfx),\
141 $(linknamespace-header-base))
142tests-special += $(linknamespace-header-tests)
143
f214606a
JM
144include ../Rules
145
54ee292d
JM
146$(conformtest-header-list-tests): $(objpfx)header-list-%.out: \
147 check-header-lists.sh \
148 $(conformtest-headers-data)
149 $(SHELL) $< "$*" "$(CC)" "$(strip $(conformtest-headers-$*))" \
150 "$(conformtest-headers-data)" > $@; \
f0881698 151 $(evaluate-test)
31341567 152
54ee292d
JM
153# Pre-standard C feature no longer supported by GCC (obsoleted in
154# newer POSIX standards).
155test-xfail-XPG3/varargs.h/conform = yes
156test-xfail-XPG4/varargs.h/conform = yes
157test-xfail-UNIX98/varargs.h/conform = yes
158
159# Header not provided by glibc.
160test-xfail-XPG4/ndbm.h/conform = yes
161test-xfail-UNIX98/ndbm.h/conform = yes
162test-xfail-XOPEN2K/ndbm.h/conform = yes
163test-xfail-XOPEN2K8/ndbm.h/conform = yes
164
165# Unsorted expected failures.
166test-xfail-XPG3/fcntl.h/conform = yes
167test-xfail-XPG3/ftw.h/conform = yes
54ee292d
JM
168test-xfail-XPG3/langinfo.h/conform = yes
169test-xfail-XPG3/limits.h/conform = yes
170test-xfail-XPG3/pwd.h/conform = yes
171test-xfail-XPG3/search.h/conform = yes
172test-xfail-XPG3/signal.h/conform = yes
173test-xfail-XPG3/stdio.h/conform = yes
174test-xfail-XPG3/stdlib.h/conform = yes
175test-xfail-XPG3/string.h/conform = yes
54ee292d
JM
176test-xfail-XPG3/sys/stat.h/conform = yes
177test-xfail-XPG3/sys/types.h/conform = yes
178test-xfail-XPG3/sys/wait.h/conform = yes
179test-xfail-XPG3/termios.h/conform = yes
180test-xfail-XPG3/time.h/conform = yes
181test-xfail-XPG3/unistd.h/conform = yes
182test-xfail-XPG4/arpa/inet.h/conform = yes
183test-xfail-XPG4/fcntl.h/conform = yes
184test-xfail-XPG4/langinfo.h/conform = yes
185test-xfail-XPG4/netdb.h/conform = yes
186test-xfail-XPG4/netinet/in.h/conform = yes
187test-xfail-XPG4/signal.h/conform = yes
188test-xfail-XPG4/stdio.h/conform = yes
189test-xfail-XPG4/stdlib.h/conform = yes
54ee292d
JM
190test-xfail-XPG4/sys/stat.h/conform = yes
191test-xfail-XPG4/sys/time.h/conform = yes
192test-xfail-XPG4/sys/types.h/conform = yes
193test-xfail-XPG4/sys/wait.h/conform = yes
194test-xfail-XPG4/termios.h/conform = yes
195test-xfail-XPG4/ucontext.h/conform = yes
196test-xfail-XPG4/unistd.h/conform = yes
197test-xfail-XPG4/utmpx.h/conform = yes
a75d3b02 198test-xfail-POSIX/sys/wait.h/conform = yes
54ee292d
JM
199test-xfail-UNIX98/arpa/inet.h/conform = yes
200test-xfail-UNIX98/fcntl.h/conform = yes
201test-xfail-UNIX98/langinfo.h/conform = yes
202test-xfail-UNIX98/netdb.h/conform = yes
203test-xfail-UNIX98/netinet/in.h/conform = yes
54ee292d
JM
204test-xfail-UNIX98/signal.h/conform = yes
205test-xfail-UNIX98/stdio.h/conform = yes
206test-xfail-UNIX98/stdlib.h/conform = yes
54ee292d
JM
207test-xfail-UNIX98/sys/time.h/conform = yes
208test-xfail-UNIX98/sys/wait.h/conform = yes
209test-xfail-UNIX98/ucontext.h/conform = yes
210test-xfail-UNIX98/unistd.h/conform = yes
211test-xfail-UNIX98/utmpx.h/conform = yes
212test-xfail-XOPEN2K/aio.h/conform = yes
54ee292d
JM
213test-xfail-XOPEN2K/fcntl.h/conform = yes
214test-xfail-XOPEN2K/langinfo.h/conform = yes
54ee292d 215test-xfail-XOPEN2K/mqueue.h/conform = yes
54ee292d
JM
216test-xfail-XOPEN2K/semaphore.h/conform = yes
217test-xfail-XOPEN2K/signal.h/conform = yes
218test-xfail-XOPEN2K/stdarg.h/conform = yes
219test-xfail-XOPEN2K/stdio.h/conform = yes
54ee292d 220test-xfail-XOPEN2K/sys/wait.h/conform = yes
54ee292d 221test-xfail-XOPEN2K/ucontext.h/conform = yes
54ee292d 222test-xfail-POSIX2008/arpa/inet.h/conform = yes
54ee292d
JM
223test-xfail-POSIX2008/netdb.h/conform = yes
224test-xfail-POSIX2008/netinet/in.h/conform = yes
225test-xfail-POSIX2008/signal.h/conform = yes
54ee292d
JM
226test-xfail-POSIX2008/sys/socket.h/conform = yes
227test-xfail-POSIX2008/sys/wait.h/conform = yes
54ee292d
JM
228test-xfail-XOPEN2K8/signal.h/conform = yes
229test-xfail-XOPEN2K8/stdio.h/conform = yes
54ee292d 230test-xfail-XOPEN2K8/sys/wait.h/conform = yes
54ee292d
JM
231
232conformtest-cc-flags = -I../include $(+sysdep-includes) $(sysincludes) -I..
233$(conformtest-header-tests): $(objpfx)%/conform.out: \
234 conformtest.pl $(conformtest-headers-data)
235 (set -e; std_hdr=$*; std=$${std_hdr%%/*}; hdr=$${std_hdr#*/}; \
236 mkdir -p $(@D)/scratch; \
237 $(PERL) conformtest.pl --tmpdir=$(@D)/scratch --cc='$(CC)' \
238 --flags='$(conformtest-cc-flags)' --standard=$$std \
239 --headers=$$hdr > $@); \
240 $(evaluate-test)
24f4f825
JM
241
242$(linknamespace-symlists-tests): $(objpfx)symlist-%: list-header-symbols.pl
243 $(PERL) -w $< --tmpdir=$(objpfx) --cc='$(CC)' \
244 --flags='$(conformtest-cc-flags)' --standard=$* \
245 --headers="$(strip $(conformtest-headers-$*))" \
246 > $@ 2> $@.err; \
247 $(evaluate-test)
248
0e7e69ba
JM
249linknamespace-libs-isoc = $(common-objpfx)libc.a $(common-objpfx)math/libm.a
250linknamespace-libs = $(linknamespace-libs-isoc) \
24f4f825 251 $(common-objpfx)rt/librt.a $(static-thread-library)
0e7e69ba
JM
252linknamespace-libs-ISO = $(linknamespace-libs-isoc)
253linknamespace-libs-ISO99 = $(linknamespace-libs-isoc)
254linknamespace-libs-ISO11 = $(linknamespace-libs-isoc)
255linknamespace-libs-XPG3 = $(linknamespace-libs-isoc)
256linknamespace-libs-XPG4 = $(linknamespace-libs-isoc)
257linknamespace-libs-POSIX = $(linknamespace-libs)
258linknamespace-libs-UNIX98 = $(linknamespace-libs)
259linknamespace-libs-XOPEN2K = $(linknamespace-libs)
260linknamespace-libs-POSIX2008 = $(linknamespace-libs)
261linknamespace-libs-XOPEN2K8 = $(linknamespace-libs)
24f4f825 262
0e7e69ba
JM
263$(linknamespace-symlist-stdlibs-tests): $(objpfx)symlist-stdlibs-%: \
264 $(linknamespace-libs)
265 LC_ALL=C $(READELF) -W -s $(linknamespace-libs-$*) > $@; \
24f4f825
JM
266 $(evaluate-test)
267
268$(linknamespace-header-tests): $(objpfx)%/linknamespace.out: \
0e7e69ba
JM
269 linknamespace.pl \
270 $(linknamespace-symlist-stdlibs-tests)
24f4f825
JM
271 (set -e; std_hdr=$*; std=$${std_hdr%%/*}; hdr=$${std_hdr#*/}; \
272 mkdir -p $(@D)/scratch; \
273 $(PERL) -w $< --tmpdir=$(@D)/scratch --cc='$(CC)' \
274 --flags='$(conformtest-cc-flags)' --standard=$$std \
275 --stdsyms=$(objpfx)symlist-$$std --header=$$hdr \
0e7e69ba
JM
276 --libsyms=$(objpfx)symlist-stdlibs-$$std \
277 --readelf='$(READELF)' \
24f4f825
JM
278 > $@ 2>&1); \
279 $(evaluate-test)
280
281# Pre-standard C feature no longer supported by GCC (obsoleted in
282# newer POSIX standards).
283test-xfail-XPG3/varargs.h/linknamespace = yes
284test-xfail-XPG4/varargs.h/linknamespace = yes
285test-xfail-UNIX98/varargs.h/linknamespace = yes
286
287# Header not provided by glibc.
288test-xfail-XPG4/ndbm.h/linknamespace = yes
289test-xfail-UNIX98/ndbm.h/linknamespace = yes
290test-xfail-XOPEN2K/ndbm.h/linknamespace = yes
291test-xfail-XOPEN2K8/ndbm.h/linknamespace = yes