1 # Copyright (C) 1999-2017 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 XPG4 XPG42 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 XPG4 expectations for: regexp.h wchar.h.
47 conformtest-headers-XPG4
:= $(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 XPG42 expectations for: re_comp.h regexp.h wchar.h.
55 # XPG42 includes XTI, but xti.h is outside the scope of these tests.
56 conformtest-headers-XPG42
:= $(conformtest-headers-XPG4
) 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 tests-special
+= $(conformtest-header-tests
)
116 generated
+= $(conformtest-header-base
)
119 linknamespace-symlists-base
:= $(foreach std
,$(conformtest-standards
),\
121 linknamespace-symlists-tests
:= $(addprefix $(objpfx
),\
122 $(linknamespace-symlists-base
))
123 tests-special
+= $(linknamespace-symlists-tests
)
125 linknamespace-symlist-stdlibs-base
:= $(foreach std
,$(conformtest-standards
),\
126 symlist-stdlibs-
$(std
))
127 linknamespace-symlist-stdlibs-tests
:= \
128 $(addprefix $(objpfx
),\
129 $(linknamespace-symlist-stdlibs-base
))
131 tests-special
+= $(linknamespace-symlist-stdlibs-tests
)
133 linknamespace-header-base
:= $(foreach std
,\
134 $(conformtest-standards
),\
136 $(conformtest-headers-
$(std
)),\
137 $(std
)/$(h
)/linknamespace.out
))
138 linknamespace-header-tests
:= $(addprefix $(objpfx
),\
139 $(linknamespace-header-base
))
140 tests-special
+= $(linknamespace-header-tests
)
144 $(conformtest-header-list-tests
): $(objpfx
)header-list-
%.out
: \
145 check-header-lists.sh \
146 $(conformtest-headers-data
)
147 $(SHELL
) $< "$*" "$(CC)" "$(strip $(conformtest-headers-$*))" \
148 "$(conformtest-headers-data)" > $@
; \
151 # Pre-standard C feature no longer supported by GCC (obsoleted in
152 # newer POSIX standards).
153 test-xfail-XPG4
/varargs.h
/conform
= yes
154 test-xfail-XPG42
/varargs.h
/conform
= yes
155 test-xfail-UNIX98
/varargs.h
/conform
= yes
157 # Header not provided by glibc.
158 test-xfail-XPG42
/ndbm.h
/conform
= yes
159 test-xfail-UNIX98
/ndbm.h
/conform
= yes
160 test-xfail-XOPEN2K
/ndbm.h
/conform
= yes
161 test-xfail-XOPEN2K8
/ndbm.h
/conform
= yes
163 conformtest-cc-flags
= -I..
/include $(+sysdep-includes
) $(sysincludes
) -I..
164 # conformtest-xfail-conds may be set by a sysdeps Makefile fragment to
165 # a list of conditions that are considered to be true when encountered
166 # in xfail[cond]- lines in test expectations.
167 conformtest-xfail
= $(if
$(conformtest-xfail-conds
),\
168 --xfail
='$(conformtest-xfail-conds)')
169 ifeq (no
,$(cross-compiling
))
172 conformtest-cross
= --cross
174 $(conformtest-header-tests
): $(objpfx
)%/conform.out
: \
175 conformtest.pl
$(conformtest-headers-data
)
176 (set
-e
; std_hdr
=$*; std
=$${std_hdr
%%/*}; hdr
=$${std_hdr
#*/}; \
177 mkdir
-p
$(@D
)/scratch
; \
178 $(PERL
) -I. conformtest.pl
--tmpdir
=$(@D
)/scratch
--cc='$(CC)' \
179 --flags
='$(conformtest-cc-flags)' --standard
=$$std \
180 --headers
=$$hdr $(conformtest-xfail
) $(conformtest-cross
) \
184 $(linknamespace-symlists-tests
): $(objpfx
)symlist-
%: list-header-symbols.pl
185 $(PERL
) -I.
-w
$< --tmpdir
=$(objpfx
) --cc='$(CC)' \
186 --flags
='$(conformtest-cc-flags)' --standard
=$* \
187 --headers
="$(strip $(conformtest-headers-$*))" \
191 linknamespace-libs-isoc
= $(common-objpfx
)libc.a
$(common-objpfx
)math
/libm.a
192 linknamespace-libs-thr
= $(linknamespace-libs-isoc
) \
193 $(common-objpfx
)rt
/librt.a
$(static-thread-library
)
194 linknamespace-libs-posix
= $(linknamespace-libs-thr
) \
195 $(common-objpfx
)dlfcn
/libdl.a
196 linknamespace-libs-xsi
= $(linknamespace-libs-posix
) \
197 $(common-objpfx
)crypt
/libcrypt.a
198 linknamespace-libs-ISO
= $(linknamespace-libs-isoc
)
199 linknamespace-libs-ISO99
= $(linknamespace-libs-isoc
)
200 linknamespace-libs-ISO11
= $(linknamespace-libs-isoc
)
201 linknamespace-libs-XPG4
= $(linknamespace-libs-isoc
) \
202 $(common-objpfx
)crypt
/libcrypt.a
203 linknamespace-libs-XPG42
= $(linknamespace-libs-XPG4
)
204 linknamespace-libs-POSIX
= $(linknamespace-libs-thr
)
205 linknamespace-libs-UNIX98
= $(linknamespace-libs-xsi
)
206 linknamespace-libs-XOPEN2K
= $(linknamespace-libs-xsi
)
207 linknamespace-libs-POSIX2008
= $(linknamespace-libs-posix
)
208 linknamespace-libs-XOPEN2K8
= $(linknamespace-libs-xsi
)
209 linknamespace-libs
= $(foreach std
,$(conformtest-standards
),\
210 $(linknamespace-libs-
$(std
)))
212 $(linknamespace-symlist-stdlibs-tests
): $(objpfx
)symlist-stdlibs-
%: \
213 $(linknamespace-libs
)
214 LC_ALL
=C
$(READELF
) -W
-s
$(linknamespace-libs-
$*) > $@
; \
217 $(linknamespace-header-tests
): $(objpfx
)%/linknamespace.out
: \
219 $(linknamespace-symlists-tests
) \
220 $(linknamespace-symlist-stdlibs-tests
)
221 (set
-e
; std_hdr
=$*; std
=$${std_hdr
%%/*}; hdr
=$${std_hdr
#*/}; \
222 mkdir
-p
$(@D
)/scratch
; \
223 $(PERL
) -I.
-w
$< --tmpdir
=$(@D
)/scratch
--cc='$(CC)' \
224 --flags
='$(conformtest-cc-flags)' --standard
=$$std \
225 --stdsyms
=$(objpfx
)symlist-
$$std --header
=$$hdr \
226 --libsyms
=$(objpfx
)symlist-stdlibs-
$$std \
227 --readelf
='$(READELF)' \
231 # Pre-standard C feature no longer supported by GCC (obsoleted in
232 # newer POSIX standards).
233 test-xfail-XPG4
/varargs.h
/linknamespace
= yes
234 test-xfail-XPG42
/varargs.h
/linknamespace
= yes
235 test-xfail-UNIX98
/varargs.h
/linknamespace
= yes
237 # Header not provided by glibc.
238 test-xfail-XPG42
/ndbm.h
/linknamespace
= yes
239 test-xfail-UNIX98
/ndbm.h
/linknamespace
= yes
240 test-xfail-XOPEN2K
/ndbm.h
/linknamespace
= yes
241 test-xfail-XOPEN2K8
/ndbm.h
/linknamespace
= yes