1 # Copyright (C) 1999-2015 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
)
121 linknamespace-symlists-base
:= $(foreach std
,$(conformtest-standards
),\
123 linknamespace-symlists-tests
:= $(addprefix $(objpfx
),\
124 $(linknamespace-symlists-base
))
125 tests-special
+= $(linknamespace-symlists-tests
)
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
))
133 tests-special
+= $(linknamespace-symlist-stdlibs-tests
)
135 linknamespace-header-base
:= $(foreach std
,\
136 $(conformtest-standards
),\
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
)
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)" > $@
; \
153 # GCC 4.6 and earlier lack features required by these tests.
154 test-xfail-ISO11
/complex.h
/conform
= yes
155 test-xfail-ISO11
/stdalign.h
/conform
= yes
156 test-xfail-ISO11
/stdnoreturn.h
/conform
= yes
158 # Pre-standard C feature no longer supported by GCC (obsoleted in
159 # newer POSIX standards).
160 test-xfail-XPG3
/varargs.h
/conform
= yes
161 test-xfail-XPG4
/varargs.h
/conform
= yes
162 test-xfail-UNIX98
/varargs.h
/conform
= yes
164 # Header not provided by glibc.
165 test-xfail-XPG4
/ndbm.h
/conform
= yes
166 test-xfail-UNIX98
/ndbm.h
/conform
= yes
167 test-xfail-XOPEN2K
/ndbm.h
/conform
= yes
168 test-xfail-XOPEN2K8
/ndbm.h
/conform
= yes
170 # Unsorted expected failures.
171 test-xfail-XPG3
/fcntl.h
/conform
= yes
172 test-xfail-XPG3
/ftw.h
/conform
= yes
173 test-xfail-XPG3
/langinfo.h
/conform
= yes
174 test-xfail-XPG3
/limits.h
/conform
= yes
175 test-xfail-XPG3
/pwd.h
/conform
= yes
176 test-xfail-XPG3
/search.h
/conform
= yes
177 test-xfail-XPG3
/signal.h
/conform
= yes
178 test-xfail-XPG3
/stdio.h
/conform
= yes
179 test-xfail-XPG3
/stdlib.h
/conform
= yes
180 test-xfail-XPG3
/string.h
/conform
= yes
181 test-xfail-XPG3
/sys
/stat.h
/conform
= yes
182 test-xfail-XPG3
/sys
/types.h
/conform
= yes
183 test-xfail-XPG3
/sys
/wait.h
/conform
= yes
184 test-xfail-XPG3
/termios.h
/conform
= yes
185 test-xfail-XPG3
/time.h
/conform
= yes
186 test-xfail-XPG3
/unistd.h
/conform
= yes
187 test-xfail-XPG4
/arpa
/inet.h
/conform
= yes
188 test-xfail-XPG4
/fcntl.h
/conform
= yes
189 test-xfail-XPG4
/langinfo.h
/conform
= yes
190 test-xfail-XPG4
/netdb.h
/conform
= yes
191 test-xfail-XPG4
/netinet
/in.h
/conform
= yes
192 test-xfail-XPG4
/signal.h
/conform
= yes
193 test-xfail-XPG4
/stdio.h
/conform
= yes
194 test-xfail-XPG4
/stdlib.h
/conform
= yes
195 test-xfail-XPG4
/sys
/stat.h
/conform
= yes
196 test-xfail-XPG4
/sys
/time.h
/conform
= yes
197 test-xfail-XPG4
/sys
/types.h
/conform
= yes
198 test-xfail-XPG4
/sys
/wait.h
/conform
= yes
199 test-xfail-XPG4
/termios.h
/conform
= yes
200 test-xfail-XPG4
/ucontext.h
/conform
= yes
201 test-xfail-XPG4
/unistd.h
/conform
= yes
202 test-xfail-XPG4
/utmpx.h
/conform
= yes
203 test-xfail-POSIX
/sys
/wait.h
/conform
= yes
204 test-xfail-UNIX98
/arpa
/inet.h
/conform
= yes
205 test-xfail-UNIX98
/fcntl.h
/conform
= yes
206 test-xfail-UNIX98
/langinfo.h
/conform
= yes
207 test-xfail-UNIX98
/netdb.h
/conform
= yes
208 test-xfail-UNIX98
/netinet
/in.h
/conform
= yes
209 test-xfail-UNIX98
/signal.h
/conform
= yes
210 test-xfail-UNIX98
/stdio.h
/conform
= yes
211 test-xfail-UNIX98
/stdlib.h
/conform
= yes
212 test-xfail-UNIX98
/sys
/time.h
/conform
= yes
213 test-xfail-UNIX98
/sys
/wait.h
/conform
= yes
214 test-xfail-UNIX98
/ucontext.h
/conform
= yes
215 test-xfail-UNIX98
/unistd.h
/conform
= yes
216 test-xfail-UNIX98
/utmpx.h
/conform
= yes
217 test-xfail-XOPEN2K
/aio.h
/conform
= yes
218 test-xfail-XOPEN2K
/fcntl.h
/conform
= yes
219 test-xfail-XOPEN2K
/langinfo.h
/conform
= yes
220 test-xfail-XOPEN2K
/math.h
/conform
= yes
221 test-xfail-XOPEN2K
/mqueue.h
/conform
= yes
222 test-xfail-XOPEN2K
/semaphore.h
/conform
= yes
223 test-xfail-XOPEN2K
/signal.h
/conform
= yes
224 test-xfail-XOPEN2K
/stdarg.h
/conform
= yes
225 test-xfail-XOPEN2K
/stdio.h
/conform
= yes
226 test-xfail-XOPEN2K
/sys
/wait.h
/conform
= yes
227 test-xfail-XOPEN2K
/termios.h
/conform
= yes
228 test-xfail-XOPEN2K
/tgmath.h
/conform
= yes
229 test-xfail-XOPEN2K
/ucontext.h
/conform
= yes
230 test-xfail-POSIX2008
/arpa
/inet.h
/conform
= yes
231 test-xfail-POSIX2008
/netdb.h
/conform
= yes
232 test-xfail-POSIX2008
/netinet
/in.h
/conform
= yes
233 test-xfail-POSIX2008
/signal.h
/conform
= yes
234 test-xfail-POSIX2008
/sys
/socket.h
/conform
= yes
235 test-xfail-POSIX2008
/sys
/wait.h
/conform
= yes
236 test-xfail-XOPEN2K8
/limits.h
/conform
= yes
237 test-xfail-XOPEN2K8
/math.h
/conform
= yes
238 test-xfail-XOPEN2K8
/signal.h
/conform
= yes
239 test-xfail-XOPEN2K8
/stdio.h
/conform
= yes
240 test-xfail-XOPEN2K8
/sys
/wait.h
/conform
= yes
241 test-xfail-XOPEN2K8
/termios.h
/conform
= yes
242 test-xfail-XOPEN2K8
/tgmath.h
/conform
= yes
244 conformtest-cc-flags
= -I..
/include $(+sysdep-includes
) $(sysincludes
) -I..
245 $(conformtest-header-tests
): $(objpfx
)%/conform.out
: \
246 conformtest.pl
$(conformtest-headers-data
)
247 (set
-e
; std_hdr
=$*; std
=$${std_hdr
%%/*}; hdr
=$${std_hdr
#*/}; \
248 mkdir
-p
$(@D
)/scratch
; \
249 $(PERL
) conformtest.pl
--tmpdir
=$(@D
)/scratch
--cc='$(CC)' \
250 --flags
='$(conformtest-cc-flags)' --standard
=$$std \
251 --headers
=$$hdr > $@
); \
254 $(linknamespace-symlists-tests
): $(objpfx
)symlist-
%: list-header-symbols.pl
255 $(PERL
) -w
$< --tmpdir
=$(objpfx
) --cc='$(CC)' \
256 --flags
='$(conformtest-cc-flags)' --standard
=$* \
257 --headers
="$(strip $(conformtest-headers-$*))" \
261 linknamespace-libs-isoc
= $(common-objpfx
)libc.a
$(common-objpfx
)math
/libm.a
262 linknamespace-libs
= $(linknamespace-libs-isoc
) \
263 $(common-objpfx
)rt
/librt.a
$(static-thread-library
)
264 linknamespace-libs-ISO
= $(linknamespace-libs-isoc
)
265 linknamespace-libs-ISO99
= $(linknamespace-libs-isoc
)
266 linknamespace-libs-ISO11
= $(linknamespace-libs-isoc
)
267 linknamespace-libs-XPG3
= $(linknamespace-libs-isoc
)
268 linknamespace-libs-XPG4
= $(linknamespace-libs-isoc
)
269 linknamespace-libs-POSIX
= $(linknamespace-libs
)
270 linknamespace-libs-UNIX98
= $(linknamespace-libs
)
271 linknamespace-libs-XOPEN2K
= $(linknamespace-libs
)
272 linknamespace-libs-POSIX2008
= $(linknamespace-libs
)
273 linknamespace-libs-XOPEN2K8
= $(linknamespace-libs
)
275 $(linknamespace-symlist-stdlibs-tests
): $(objpfx
)symlist-stdlibs-
%: \
276 $(linknamespace-libs
)
277 LC_ALL
=C
$(READELF
) -W
-s
$(linknamespace-libs-
$*) > $@
; \
280 $(linknamespace-header-tests
): $(objpfx
)%/linknamespace.out
: \
282 $(linknamespace-symlist-stdlibs-tests
)
283 (set
-e
; std_hdr
=$*; std
=$${std_hdr
%%/*}; hdr
=$${std_hdr
#*/}; \
284 mkdir
-p
$(@D
)/scratch
; \
285 $(PERL
) -w
$< --tmpdir
=$(@D
)/scratch
--cc='$(CC)' \
286 --flags
='$(conformtest-cc-flags)' --standard
=$$std \
287 --stdsyms
=$(objpfx
)symlist-
$$std --header
=$$hdr \
288 --libsyms
=$(objpfx
)symlist-stdlibs-
$$std \
289 --readelf
='$(READELF)' \
293 # Pre-standard C feature no longer supported by GCC (obsoleted in
294 # newer POSIX standards).
295 test-xfail-XPG3
/varargs.h
/linknamespace
= yes
296 test-xfail-XPG4
/varargs.h
/linknamespace
= yes
297 test-xfail-UNIX98
/varargs.h
/linknamespace
= yes
299 # Header not provided by glibc.
300 test-xfail-XPG4
/ndbm.h
/linknamespace
= yes
301 test-xfail-UNIX98
/ndbm.h
/linknamespace
= yes
302 test-xfail-XOPEN2K
/ndbm.h
/linknamespace
= yes
303 test-xfail-XOPEN2K8
/ndbm.h
/linknamespace
= yes