]>
Commit | Line | Data |
---|---|---|
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 | # | |
21 | subdir := conform | |
22 | ||
a5f891ac JM |
23 | include ../Makeconfig |
24 | ||
54ee292d JM |
25 | conformtest-headers-data := $(wildcard data/*.h-data) \ |
26 | $(wildcard data/*/*.h-data) | |
27 | ||
28 | conformtest-standards := ISO ISO99 ISO11 POSIX XPG3 XPG4 UNIX98 XOPEN2K \ | |
29 | POSIX2008 XOPEN2K8 | |
30 | ||
31 | conformtest-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 | |
34 | conformtest-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. | |
38 | conformtest-headers-ISO11 := $(conformtest-headers-ISO99) stdalign.h \ | |
39 | stdnoreturn.h uchar.h | |
40 | conformtest-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. | |
47 | conformtest-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. | |
56 | conformtest-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. | |
65 | conformtest-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. | |
75 | conformtest-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. | |
87 | conformtest-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. | |
96 | conformtest-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 | ||
101 | conformtest-header-list-base := $(foreach std,$(conformtest-standards),\ | |
102 | header-list-$(std).out) | |
103 | conformtest-header-list-tests := $(addprefix $(objpfx),\ | |
104 | $(conformtest-header-list-base)) | |
105 | tests-special += $(conformtest-header-list-tests) | |
106 | generated += $(conformtest-header-list-base) | |
107 | ||
108 | conformtest-header-base := $(foreach std,\ | |
109 | $(conformtest-standards),\ | |
110 | $(foreach h,\ | |
111 | $(conformtest-headers-$(std)),\ | |
112 | $(std)/$(h)/conform.out)) | |
113 | conformtest-header-tests := $(addprefix $(objpfx),$(conformtest-header-base)) | |
ba63ba08 UD |
114 | ifneq (yes,$(fast-check)) |
115 | ifeq (no,$(cross-compiling)) | |
54ee292d JM |
116 | tests-special += $(conformtest-header-tests) |
117 | generated += $(conformtest-header-base) | |
ba63ba08 UD |
118 | endif |
119 | endif | |
31341567 | 120 | |
24f4f825 JM |
121 | linknamespace-symlists-base := $(foreach std,$(conformtest-standards),\ |
122 | symlist-$(std)) | |
123 | linknamespace-symlists-tests := $(addprefix $(objpfx),\ | |
124 | $(linknamespace-symlists-base)) | |
125 | tests-special += $(linknamespace-symlists-tests) | |
126 | ||
0e7e69ba JM |
127 | linknamespace-symlist-stdlibs-base := $(foreach std,$(conformtest-standards),\ |
128 | symlist-stdlibs-$(std)) | |
129 | linknamespace-symlist-stdlibs-tests := \ | |
130 | $(addprefix $(objpfx),\ | |
131 | $(linknamespace-symlist-stdlibs-base)) | |
132 | ||
133 | tests-special += $(linknamespace-symlist-stdlibs-tests) | |
24f4f825 JM |
134 | |
135 | linknamespace-header-base := $(foreach std,\ | |
136 | $(conformtest-standards),\ | |
137 | $(foreach h,\ | |
138 | $(conformtest-headers-$(std)),\ | |
139 | $(std)/$(h)/linknamespace.out)) | |
140 | linknamespace-header-tests := $(addprefix $(objpfx),\ | |
141 | $(linknamespace-header-base)) | |
142 | tests-special += $(linknamespace-header-tests) | |
143 | ||
f214606a JM |
144 | include ../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). | |
155 | test-xfail-XPG3/varargs.h/conform = yes | |
156 | test-xfail-XPG4/varargs.h/conform = yes | |
157 | test-xfail-UNIX98/varargs.h/conform = yes | |
158 | ||
159 | # Header not provided by glibc. | |
160 | test-xfail-XPG4/ndbm.h/conform = yes | |
161 | test-xfail-UNIX98/ndbm.h/conform = yes | |
162 | test-xfail-XOPEN2K/ndbm.h/conform = yes | |
163 | test-xfail-XOPEN2K8/ndbm.h/conform = yes | |
164 | ||
165 | # Unsorted expected failures. | |
166 | test-xfail-XPG3/fcntl.h/conform = yes | |
167 | test-xfail-XPG3/ftw.h/conform = yes | |
54ee292d JM |
168 | test-xfail-XPG3/langinfo.h/conform = yes |
169 | test-xfail-XPG3/limits.h/conform = yes | |
170 | test-xfail-XPG3/pwd.h/conform = yes | |
171 | test-xfail-XPG3/search.h/conform = yes | |
172 | test-xfail-XPG3/signal.h/conform = yes | |
173 | test-xfail-XPG3/stdio.h/conform = yes | |
174 | test-xfail-XPG3/stdlib.h/conform = yes | |
175 | test-xfail-XPG3/string.h/conform = yes | |
54ee292d JM |
176 | test-xfail-XPG3/sys/stat.h/conform = yes |
177 | test-xfail-XPG3/sys/types.h/conform = yes | |
178 | test-xfail-XPG3/sys/wait.h/conform = yes | |
179 | test-xfail-XPG3/termios.h/conform = yes | |
180 | test-xfail-XPG3/time.h/conform = yes | |
181 | test-xfail-XPG3/unistd.h/conform = yes | |
182 | test-xfail-XPG4/arpa/inet.h/conform = yes | |
183 | test-xfail-XPG4/fcntl.h/conform = yes | |
184 | test-xfail-XPG4/langinfo.h/conform = yes | |
185 | test-xfail-XPG4/netdb.h/conform = yes | |
186 | test-xfail-XPG4/netinet/in.h/conform = yes | |
187 | test-xfail-XPG4/signal.h/conform = yes | |
188 | test-xfail-XPG4/stdio.h/conform = yes | |
189 | test-xfail-XPG4/stdlib.h/conform = yes | |
54ee292d JM |
190 | test-xfail-XPG4/sys/stat.h/conform = yes |
191 | test-xfail-XPG4/sys/time.h/conform = yes | |
192 | test-xfail-XPG4/sys/types.h/conform = yes | |
193 | test-xfail-XPG4/sys/wait.h/conform = yes | |
194 | test-xfail-XPG4/termios.h/conform = yes | |
195 | test-xfail-XPG4/ucontext.h/conform = yes | |
196 | test-xfail-XPG4/unistd.h/conform = yes | |
197 | test-xfail-XPG4/utmpx.h/conform = yes | |
a75d3b02 | 198 | test-xfail-POSIX/sys/wait.h/conform = yes |
54ee292d JM |
199 | test-xfail-UNIX98/arpa/inet.h/conform = yes |
200 | test-xfail-UNIX98/fcntl.h/conform = yes | |
201 | test-xfail-UNIX98/langinfo.h/conform = yes | |
202 | test-xfail-UNIX98/netdb.h/conform = yes | |
203 | test-xfail-UNIX98/netinet/in.h/conform = yes | |
54ee292d JM |
204 | test-xfail-UNIX98/signal.h/conform = yes |
205 | test-xfail-UNIX98/stdio.h/conform = yes | |
206 | test-xfail-UNIX98/stdlib.h/conform = yes | |
54ee292d JM |
207 | test-xfail-UNIX98/sys/time.h/conform = yes |
208 | test-xfail-UNIX98/sys/wait.h/conform = yes | |
209 | test-xfail-UNIX98/ucontext.h/conform = yes | |
210 | test-xfail-UNIX98/unistd.h/conform = yes | |
211 | test-xfail-UNIX98/utmpx.h/conform = yes | |
212 | test-xfail-XOPEN2K/aio.h/conform = yes | |
54ee292d JM |
213 | test-xfail-XOPEN2K/fcntl.h/conform = yes |
214 | test-xfail-XOPEN2K/langinfo.h/conform = yes | |
54ee292d | 215 | test-xfail-XOPEN2K/mqueue.h/conform = yes |
54ee292d JM |
216 | test-xfail-XOPEN2K/semaphore.h/conform = yes |
217 | test-xfail-XOPEN2K/signal.h/conform = yes | |
218 | test-xfail-XOPEN2K/stdarg.h/conform = yes | |
219 | test-xfail-XOPEN2K/stdio.h/conform = yes | |
54ee292d | 220 | test-xfail-XOPEN2K/sys/wait.h/conform = yes |
54ee292d | 221 | test-xfail-XOPEN2K/ucontext.h/conform = yes |
54ee292d | 222 | test-xfail-POSIX2008/arpa/inet.h/conform = yes |
54ee292d JM |
223 | test-xfail-POSIX2008/netdb.h/conform = yes |
224 | test-xfail-POSIX2008/netinet/in.h/conform = yes | |
225 | test-xfail-POSIX2008/signal.h/conform = yes | |
54ee292d JM |
226 | test-xfail-POSIX2008/sys/socket.h/conform = yes |
227 | test-xfail-POSIX2008/sys/wait.h/conform = yes | |
54ee292d JM |
228 | test-xfail-XOPEN2K8/signal.h/conform = yes |
229 | test-xfail-XOPEN2K8/stdio.h/conform = yes | |
54ee292d | 230 | test-xfail-XOPEN2K8/sys/wait.h/conform = yes |
54ee292d JM |
231 | |
232 | conformtest-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 |
249 | linknamespace-libs-isoc = $(common-objpfx)libc.a $(common-objpfx)math/libm.a |
250 | linknamespace-libs = $(linknamespace-libs-isoc) \ | |
24f4f825 | 251 | $(common-objpfx)rt/librt.a $(static-thread-library) |
0e7e69ba JM |
252 | linknamespace-libs-ISO = $(linknamespace-libs-isoc) |
253 | linknamespace-libs-ISO99 = $(linknamespace-libs-isoc) | |
254 | linknamespace-libs-ISO11 = $(linknamespace-libs-isoc) | |
255 | linknamespace-libs-XPG3 = $(linknamespace-libs-isoc) | |
256 | linknamespace-libs-XPG4 = $(linknamespace-libs-isoc) | |
257 | linknamespace-libs-POSIX = $(linknamespace-libs) | |
258 | linknamespace-libs-UNIX98 = $(linknamespace-libs) | |
259 | linknamespace-libs-XOPEN2K = $(linknamespace-libs) | |
260 | linknamespace-libs-POSIX2008 = $(linknamespace-libs) | |
261 | linknamespace-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). | |
283 | test-xfail-XPG3/varargs.h/linknamespace = yes | |
284 | test-xfail-XPG4/varargs.h/linknamespace = yes | |
285 | test-xfail-UNIX98/varargs.h/linknamespace = yes | |
286 | ||
287 | # Header not provided by glibc. | |
288 | test-xfail-XPG4/ndbm.h/linknamespace = yes | |
289 | test-xfail-UNIX98/ndbm.h/linknamespace = yes | |
290 | test-xfail-XOPEN2K/ndbm.h/linknamespace = yes | |
291 | test-xfail-XOPEN2K8/ndbm.h/linknamespace = yes |