| xf.li | bdd93d5 | 2023-05-12 07:10:14 -0700 | [diff] [blame] | 1 | # Copyright (C) 1999-2016 Free Software Foundation, Inc. | 
 | 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 | 
 | 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. | 
 | 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 | 
 | 12 | # Lesser General Public License for more details. | 
 | 13 |  | 
 | 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/>. | 
 | 17 |  | 
 | 18 | # | 
 | 19 | #	Sub-makefile for conform portion of the library. | 
 | 20 | # | 
 | 21 | subdir	:= conform | 
 | 22 |  | 
 | 23 | include ../Makeconfig | 
 | 24 |  | 
 | 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)) | 
 | 114 | ifneq (yes,$(fast-check)) | 
 | 115 | ifeq (no,$(cross-compiling)) | 
 | 116 | tests-special += $(conformtest-header-tests) | 
 | 117 | generated += $(conformtest-header-base) | 
 | 118 | endif | 
 | 119 | endif | 
 | 120 |  | 
 | 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 |  | 
 | 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) | 
 | 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 |  | 
 | 144 | include ../Rules | 
 | 145 |  | 
 | 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)" > $@; \ | 
 | 151 | 	$(evaluate-test) | 
 | 152 |  | 
 | 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 | 
 | 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 | 
 | 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 | 
 | 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 | 
 | 198 | test-xfail-POSIX/sys/wait.h/conform = yes | 
 | 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 | 
 | 204 | test-xfail-UNIX98/signal.h/conform = yes | 
 | 205 | test-xfail-UNIX98/stdio.h/conform = yes | 
 | 206 | test-xfail-UNIX98/stdlib.h/conform = yes | 
 | 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 | 
 | 213 | test-xfail-XOPEN2K/fcntl.h/conform = yes | 
 | 214 | test-xfail-XOPEN2K/langinfo.h/conform = yes | 
 | 215 | test-xfail-XOPEN2K/mqueue.h/conform = yes | 
 | 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 | 
 | 220 | test-xfail-XOPEN2K/sys/wait.h/conform = yes | 
 | 221 | test-xfail-XOPEN2K/termios.h/conform = yes | 
 | 222 | test-xfail-XOPEN2K/ucontext.h/conform = yes | 
 | 223 | test-xfail-POSIX2008/arpa/inet.h/conform = yes | 
 | 224 | test-xfail-POSIX2008/netdb.h/conform = yes | 
 | 225 | test-xfail-POSIX2008/netinet/in.h/conform = yes | 
 | 226 | test-xfail-POSIX2008/signal.h/conform = yes | 
 | 227 | test-xfail-POSIX2008/sys/socket.h/conform = yes | 
 | 228 | test-xfail-POSIX2008/sys/wait.h/conform = yes | 
 | 229 | test-xfail-XOPEN2K8/limits.h/conform = yes | 
 | 230 | test-xfail-XOPEN2K8/signal.h/conform = yes | 
 | 231 | test-xfail-XOPEN2K8/stdio.h/conform = yes | 
 | 232 | test-xfail-XOPEN2K8/sys/wait.h/conform = yes | 
 | 233 | test-xfail-XOPEN2K8/termios.h/conform = yes | 
 | 234 |  | 
 | 235 | conformtest-cc-flags = -I../include $(+sysdep-includes) $(sysincludes) -I.. | 
 | 236 | $(conformtest-header-tests): $(objpfx)%/conform.out: \ | 
 | 237 | 			     conformtest.pl $(conformtest-headers-data) | 
 | 238 | 	(set -e; std_hdr=$*; std=$${std_hdr%%/*}; hdr=$${std_hdr#*/}; \ | 
 | 239 | 	 mkdir -p $(@D)/scratch; \ | 
 | 240 | 	 $(PERL) conformtest.pl --tmpdir=$(@D)/scratch --cc='$(CC)' \ | 
 | 241 | 		 --flags='$(conformtest-cc-flags)' --standard=$$std \ | 
 | 242 | 		 --headers=$$hdr > $@); \ | 
 | 243 | 	$(evaluate-test) | 
 | 244 |  | 
 | 245 | $(linknamespace-symlists-tests): $(objpfx)symlist-%: list-header-symbols.pl | 
 | 246 | 	$(PERL) -w $< --tmpdir=$(objpfx) --cc='$(CC)' \ | 
 | 247 | 		--flags='$(conformtest-cc-flags)' --standard=$* \ | 
 | 248 | 		--headers="$(strip $(conformtest-headers-$*))" \ | 
 | 249 | 		> $@ 2> $@.err; \ | 
 | 250 | 	$(evaluate-test) | 
 | 251 |  | 
 | 252 | linknamespace-libs-isoc = $(common-objpfx)libc.a $(common-objpfx)math/libm.a | 
 | 253 | linknamespace-libs = $(linknamespace-libs-isoc) \ | 
 | 254 | 		     $(common-objpfx)rt/librt.a $(static-thread-library) | 
 | 255 | linknamespace-libs-ISO = $(linknamespace-libs-isoc) | 
 | 256 | linknamespace-libs-ISO99 = $(linknamespace-libs-isoc) | 
 | 257 | linknamespace-libs-ISO11 = $(linknamespace-libs-isoc) | 
 | 258 | linknamespace-libs-XPG3 = $(linknamespace-libs-isoc) | 
 | 259 | linknamespace-libs-XPG4 = $(linknamespace-libs-isoc) | 
 | 260 | linknamespace-libs-POSIX = $(linknamespace-libs) | 
 | 261 | linknamespace-libs-UNIX98 = $(linknamespace-libs) | 
 | 262 | linknamespace-libs-XOPEN2K = $(linknamespace-libs) | 
 | 263 | linknamespace-libs-POSIX2008 = $(linknamespace-libs) | 
 | 264 | linknamespace-libs-XOPEN2K8 = $(linknamespace-libs) | 
 | 265 |  | 
 | 266 | $(linknamespace-symlist-stdlibs-tests): $(objpfx)symlist-stdlibs-%: \ | 
 | 267 | 					$(linknamespace-libs) | 
 | 268 | 	LC_ALL=C $(READELF) -W -s $(linknamespace-libs-$*) > $@; \ | 
 | 269 | 	$(evaluate-test) | 
 | 270 |  | 
 | 271 | $(linknamespace-header-tests): $(objpfx)%/linknamespace.out: \ | 
 | 272 | 			       linknamespace.pl \ | 
 | 273 | 			       $(linknamespace-symlist-stdlibs-tests) | 
 | 274 | 	(set -e; std_hdr=$*; std=$${std_hdr%%/*}; hdr=$${std_hdr#*/}; \ | 
 | 275 | 	 mkdir -p $(@D)/scratch; \ | 
 | 276 | 	 $(PERL) -w $< --tmpdir=$(@D)/scratch --cc='$(CC)' \ | 
 | 277 | 		 --flags='$(conformtest-cc-flags)' --standard=$$std \ | 
 | 278 | 		 --stdsyms=$(objpfx)symlist-$$std --header=$$hdr \ | 
 | 279 | 		 --libsyms=$(objpfx)symlist-stdlibs-$$std \ | 
 | 280 | 		 --readelf='$(READELF)' \ | 
 | 281 | 		 > $@ 2>&1); \ | 
 | 282 | 	$(evaluate-test) | 
 | 283 |  | 
 | 284 | # Pre-standard C feature no longer supported by GCC (obsoleted in | 
 | 285 | # newer POSIX standards). | 
 | 286 | test-xfail-XPG3/varargs.h/linknamespace = yes | 
 | 287 | test-xfail-XPG4/varargs.h/linknamespace = yes | 
 | 288 | test-xfail-UNIX98/varargs.h/linknamespace = yes | 
 | 289 |  | 
 | 290 | # Header not provided by glibc. | 
 | 291 | test-xfail-XPG4/ndbm.h/linknamespace = yes | 
 | 292 | test-xfail-UNIX98/ndbm.h/linknamespace = yes | 
 | 293 | test-xfail-XOPEN2K/ndbm.h/linknamespace = yes | 
 | 294 | test-xfail-XOPEN2K8/ndbm.h/linknamespace = yes |