1 # Copyright (C) 1999-2014 Free Software Foundation, Inc.
2 # This file is part of the GNU C Library.
4 # The GNU C Library is free software; you can redistribute it and/or
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.
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
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with the GNU C Library; if not, see
16 # <http://www.gnu.org/licenses/>.
19 # Sub-makefile for conform portion of the library.
25 conformtest-headers-data
:= $(wildcard data
/*.h-data
) \
26 $(wildcard data
/*/*.h-data
)
28 conformtest-standards
:= ISO ISO99 ISO11 POSIX XPG3 XPG4 UNIX98 XOPEN2K \
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 \
37 # Missing ISO11 expectations for: stdatomic.h threads.h.
38 conformtest-headers-ISO11
:= $(conformtest-headers-ISO99
) stdalign.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 \
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
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
)
108 conformtest-header-base
:= $(foreach std
,\
109 $(conformtest-standards
),\
111 $(conformtest-headers-
$(std
)),\
112 $(std
)/$(h
)/conform.out
))
113 conformtest-header-tests
:= $(addprefix $(objpfx
),$(conformtest-header-base
))
114 ifneq (yes
,$(fast-check
))
115 ifeq (no
,$(cross-compiling
))
116 tests-special
+= $(conformtest-header-tests
)
117 generated
+= $(conformtest-header-base
)
123 $(conformtest-header-list-tests
): $(objpfx
)header-list-
%.out
: \
124 check-header-lists.sh \
125 $(conformtest-headers-data
)
126 $(SHELL
) $< "$*" "$(CC)" "$(strip $(conformtest-headers-$*))" \
127 "$(conformtest-headers-data)" > $@
; \
130 # GCC 4.6 and earlier lack features required by these tests.
131 test-xfail-ISO11
/complex.h
/conform
= yes
132 test-xfail-ISO11
/stdalign.h
/conform
= yes
133 test-xfail-ISO11
/stdnoreturn.h
/conform
= yes
135 # Pre-standard C feature no longer supported by GCC (obsoleted in
136 # newer POSIX standards).
137 test-xfail-XPG3
/varargs.h
/conform
= yes
138 test-xfail-XPG4
/varargs.h
/conform
= yes
139 test-xfail-UNIX98
/varargs.h
/conform
= yes
141 # Header not provided by glibc.
142 test-xfail-XPG4
/ndbm.h
/conform
= yes
143 test-xfail-UNIX98
/ndbm.h
/conform
= yes
144 test-xfail-XOPEN2K
/ndbm.h
/conform
= yes
145 test-xfail-XOPEN2K8
/ndbm.h
/conform
= yes
147 # Unsorted expected failures.
148 test-xfail-XPG3
/fcntl.h
/conform
= yes
149 test-xfail-XPG3
/ftw.h
/conform
= yes
150 test-xfail-XPG3
/grp.h
/conform
= yes
151 test-xfail-XPG3
/langinfo.h
/conform
= yes
152 test-xfail-XPG3
/limits.h
/conform
= yes
153 test-xfail-XPG3
/pwd.h
/conform
= yes
154 test-xfail-XPG3
/search.h
/conform
= yes
155 test-xfail-XPG3
/signal.h
/conform
= yes
156 test-xfail-XPG3
/stdio.h
/conform
= yes
157 test-xfail-XPG3
/stdlib.h
/conform
= yes
158 test-xfail-XPG3
/string.h
/conform
= yes
159 test-xfail-XPG3
/sys
/ipc.h
/conform
= yes
160 test-xfail-XPG3
/sys
/msg.h
/conform
= yes
161 test-xfail-XPG3
/sys
/sem.h
/conform
= yes
162 test-xfail-XPG3
/sys
/shm.h
/conform
= yes
163 test-xfail-XPG3
/sys
/stat.h
/conform
= yes
164 test-xfail-XPG3
/sys
/types.h
/conform
= yes
165 test-xfail-XPG3
/sys
/wait.h
/conform
= yes
166 test-xfail-XPG3
/termios.h
/conform
= yes
167 test-xfail-XPG3
/time.h
/conform
= yes
168 test-xfail-XPG3
/unistd.h
/conform
= yes
169 test-xfail-XPG4
/arpa
/inet.h
/conform
= yes
170 test-xfail-XPG4
/fcntl.h
/conform
= yes
171 test-xfail-XPG4
/langinfo.h
/conform
= yes
172 test-xfail-XPG4
/netdb.h
/conform
= yes
173 test-xfail-XPG4
/netinet
/in.h
/conform
= yes
174 test-xfail-XPG4
/signal.h
/conform
= yes
175 test-xfail-XPG4
/stdio.h
/conform
= yes
176 test-xfail-XPG4
/stdlib.h
/conform
= yes
177 test-xfail-XPG4
/stropts.h
/conform
= yes
178 test-xfail-XPG4
/sys
/ipc.h
/conform
= yes
179 test-xfail-XPG4
/sys
/msg.h
/conform
= yes
180 test-xfail-XPG4
/sys
/sem.h
/conform
= yes
181 test-xfail-XPG4
/sys
/shm.h
/conform
= yes
182 test-xfail-XPG4
/sys
/socket.h
/conform
= yes
183 test-xfail-XPG4
/sys
/stat.h
/conform
= yes
184 test-xfail-XPG4
/sys
/time.h
/conform
= yes
185 test-xfail-XPG4
/sys
/types.h
/conform
= yes
186 test-xfail-XPG4
/sys
/wait.h
/conform
= yes
187 test-xfail-XPG4
/termios.h
/conform
= yes
188 test-xfail-XPG4
/ucontext.h
/conform
= yes
189 test-xfail-XPG4
/unistd.h
/conform
= yes
190 test-xfail-XPG4
/utmpx.h
/conform
= yes
191 test-xfail-UNIX98
/arpa
/inet.h
/conform
= yes
192 test-xfail-UNIX98
/fcntl.h
/conform
= yes
193 test-xfail-UNIX98
/langinfo.h
/conform
= yes
194 test-xfail-UNIX98
/netdb.h
/conform
= yes
195 test-xfail-UNIX98
/netinet
/in.h
/conform
= yes
196 test-xfail-UNIX98
/signal.h
/conform
= yes
197 test-xfail-UNIX98
/stdio.h
/conform
= yes
198 test-xfail-UNIX98
/stdlib.h
/conform
= yes
199 test-xfail-UNIX98
/stropts.h
/conform
= yes
200 test-xfail-UNIX98
/sys
/ipc.h
/conform
= yes
201 test-xfail-UNIX98
/sys
/msg.h
/conform
= yes
202 test-xfail-UNIX98
/sys
/sem.h
/conform
= yes
203 test-xfail-UNIX98
/sys
/shm.h
/conform
= yes
204 test-xfail-UNIX98
/sys
/socket.h
/conform
= yes
205 test-xfail-UNIX98
/sys
/time.h
/conform
= yes
206 test-xfail-UNIX98
/sys
/wait.h
/conform
= yes
207 test-xfail-UNIX98
/ucontext.h
/conform
= yes
208 test-xfail-UNIX98
/unistd.h
/conform
= yes
209 test-xfail-UNIX98
/utmpx.h
/conform
= yes
210 test-xfail-XOPEN2K
/aio.h
/conform
= yes
211 test-xfail-XOPEN2K
/arpa
/inet.h
/conform
= yes
212 test-xfail-XOPEN2K
/fcntl.h
/conform
= yes
213 test-xfail-XOPEN2K
/langinfo.h
/conform
= yes
214 test-xfail-XOPEN2K
/math.h
/conform
= yes
215 test-xfail-XOPEN2K
/mqueue.h
/conform
= yes
216 test-xfail-XOPEN2K
/netdb.h
/conform
= yes
217 test-xfail-XOPEN2K
/netinet
/in.h
/conform
= yes
218 test-xfail-XOPEN2K
/semaphore.h
/conform
= yes
219 test-xfail-XOPEN2K
/signal.h
/conform
= yes
220 test-xfail-XOPEN2K
/stdarg.h
/conform
= yes
221 test-xfail-XOPEN2K
/stdio.h
/conform
= yes
222 test-xfail-XOPEN2K
/stropts.h
/conform
= yes
223 test-xfail-XOPEN2K
/sys
/ipc.h
/conform
= yes
224 test-xfail-XOPEN2K
/sys
/msg.h
/conform
= yes
225 test-xfail-XOPEN2K
/sys
/sem.h
/conform
= yes
226 test-xfail-XOPEN2K
/sys
/shm.h
/conform
= yes
227 test-xfail-XOPEN2K
/sys
/socket.h
/conform
= yes
228 test-xfail-XOPEN2K
/sys
/wait.h
/conform
= yes
229 test-xfail-XOPEN2K
/termios.h
/conform
= yes
230 test-xfail-XOPEN2K
/tgmath.h
/conform
= yes
231 test-xfail-XOPEN2K
/ucontext.h
/conform
= yes
232 test-xfail-XOPEN2K
/utmpx.h
/conform
= yes
233 test-xfail-POSIX2008
/arpa
/inet.h
/conform
= yes
234 test-xfail-POSIX2008
/fcntl.h
/conform
= yes
235 test-xfail-POSIX2008
/netdb.h
/conform
= yes
236 test-xfail-POSIX2008
/netinet
/in.h
/conform
= yes
237 test-xfail-POSIX2008
/signal.h
/conform
= yes
238 test-xfail-POSIX2008
/stropts.h
/conform
= yes
239 test-xfail-POSIX2008
/sys
/socket.h
/conform
= yes
240 test-xfail-POSIX2008
/sys
/wait.h
/conform
= yes
241 test-xfail-XOPEN2K8
/arpa
/inet.h
/conform
= yes
242 test-xfail-XOPEN2K8
/fcntl.h
/conform
= yes
243 test-xfail-XOPEN2K8
/limits.h
/conform
= yes
244 test-xfail-XOPEN2K8
/math.h
/conform
= yes
245 test-xfail-XOPEN2K8
/netdb.h
/conform
= yes
246 test-xfail-XOPEN2K8
/netinet
/in.h
/conform
= yes
247 test-xfail-XOPEN2K8
/signal.h
/conform
= yes
248 test-xfail-XOPEN2K8
/stdio.h
/conform
= yes
249 test-xfail-XOPEN2K8
/stropts.h
/conform
= yes
250 test-xfail-XOPEN2K8
/sys
/ipc.h
/conform
= yes
251 test-xfail-XOPEN2K8
/sys
/msg.h
/conform
= yes
252 test-xfail-XOPEN2K8
/sys
/select.h
/conform
= yes
253 test-xfail-XOPEN2K8
/sys
/sem.h
/conform
= yes
254 test-xfail-XOPEN2K8
/sys
/shm.h
/conform
= yes
255 test-xfail-XOPEN2K8
/sys
/socket.h
/conform
= yes
256 test-xfail-XOPEN2K8
/sys
/time.h
/conform
= yes
257 test-xfail-XOPEN2K8
/sys
/wait.h
/conform
= yes
258 test-xfail-XOPEN2K8
/termios.h
/conform
= yes
259 test-xfail-XOPEN2K8
/tgmath.h
/conform
= yes
260 test-xfail-XOPEN2K8
/utmpx.h
/conform
= yes
262 conformtest-cc-flags
= -I..
/include $(+sysdep-includes
) $(sysincludes
) -I..
263 $(conformtest-header-tests
): $(objpfx
)%/conform.out
: \
264 conformtest.pl
$(conformtest-headers-data
)
265 (set
-e
; std_hdr
=$*; std
=$${std_hdr
%%/*}; hdr
=$${std_hdr
#*/}; \
266 mkdir
-p
$(@D
)/scratch
; \
267 $(PERL
) conformtest.pl
--tmpdir
=$(@D
)/scratch
--cc='$(CC)' \
268 --flags
='$(conformtest-cc-flags)' --standard
=$$std \
269 --headers
=$$hdr > $@
); \