about summary refs log tree commit diff
path: root/REORG.TODO/conform/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'REORG.TODO/conform/Makefile')
-rw-r--r--REORG.TODO/conform/Makefile259
1 files changed, 259 insertions, 0 deletions
diff --git a/REORG.TODO/conform/Makefile b/REORG.TODO/conform/Makefile
new file mode 100644
index 0000000000..63556b5bdb
--- /dev/null
+++ b/REORG.TODO/conform/Makefile
@@ -0,0 +1,259 @@
+# Copyright (C) 1999-2017 Free Software Foundation, Inc.
+# This file is part of the GNU C Library.
+
+# The GNU C Library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+
+#
+#	Sub-makefile for conform portion of the library.
+#
+subdir	:= conform
+
+include ../Makeconfig
+
+conformtest-headers-data := $(wildcard data/*.h-data) \
+			    $(wildcard data/*/*.h-data)
+
+conformtest-standards := ISO ISO99 ISO11 POSIX XPG4 XPG42 UNIX98 XOPEN2K \
+			 POSIX2008 XOPEN2K8
+
+conformtest-headers-ISO := assert.h ctype.h errno.h float.h limits.h locale.h \
+			   math.h setjmp.h signal.h stdarg.h stddef.h stdio.h \
+			   stdlib.h string.h time.h
+conformtest-headers-ISO99 := $(conformtest-headers-ISO) complex.h fenv.h \
+			     inttypes.h iso646.h stdbool.h stdint.h tgmath.h \
+			     wchar.h wctype.h
+# Missing ISO11 expectations for: stdatomic.h threads.h.
+conformtest-headers-ISO11 := $(conformtest-headers-ISO99) stdalign.h \
+			     stdnoreturn.h uchar.h
+conformtest-headers-POSIX := $(conformtest-headers-ISO) aio.h dirent.h \
+			     fcntl.h fnmatch.h glob.h grp.h mqueue.h \
+			     pthread.h pwd.h regex.h sched.h semaphore.h \
+			     sys/mman.h sys/stat.h sys/times.h sys/types.h \
+			     sys/utsname.h sys/wait.h tar.h termios.h \
+			     unistd.h utime.h wordexp.h
+# Missing XPG4 expectations for: regexp.h wchar.h.
+conformtest-headers-XPG4 := $(conformtest-headers-ISO) cpio.h dirent.h \
+			    fcntl.h fnmatch.h ftw.h glob.h grp.h iconv.h \
+			    langinfo.h monetary.h nl_types.h pwd.h regex.h \
+			    search.h sys/ipc.h sys/msg.h sys/sem.h sys/shm.h \
+			    sys/stat.h sys/times.h sys/types.h sys/utsname.h \
+			    sys/wait.h tar.h termios.h ulimit.h unistd.h \
+			    utime.h varargs.h wordexp.h
+# Missing XPG42 expectations for: re_comp.h regexp.h wchar.h.
+# XPG42 includes XTI, but xti.h is outside the scope of these tests.
+conformtest-headers-XPG42 := $(conformtest-headers-XPG4) arpa/inet.h fmtmsg.h \
+			    libgen.h ndbm.h netdb.h netinet/in.h poll.h \
+			    strings.h stropts.h sys/mman.h sys/resource.h \
+			    sys/socket.h sys/statvfs.h sys/time.h sys/timeb.h \
+			    sys/uio.h sys/un.h syslog.h ucontext.h utmpx.h
+# Missing UNIX98 expectations for: inttypes.h re_comp.h regexp.h.
+# The online UNIX98 includes XCURSES, but curses.h, term.h and
+# unctrl.h are outside the scope of these tests.  It also includes
+# XTI, but xti.h is outside the scope of these tests.
+conformtest-headers-UNIX98 := $(conformtest-headers-POSIX) arpa/inet.h cpio.h \
+			      dlfcn.h fmtmsg.h ftw.h iconv.h iso646.h \
+			      langinfo.h libgen.h monetary.h ndbm.h netdb.h \
+			      netinet/in.h nl_types.h poll.h search.h \
+			      strings.h stropts.h sys/ipc.h sys/msg.h \
+			      sys/resource.h sys/sem.h sys/shm.h sys/socket.h \
+			      sys/statvfs.h sys/time.h sys/timeb.h sys/uio.h \
+			      sys/un.h syslog.h ucontext.h ulimit.h utmpx.h \
+			      varargs.h wchar.h wctype.h
+# Missing XOPEN2K expectations for: trace.h.
+conformtest-headers-XOPEN2K := $(conformtest-headers-POSIX) arpa/inet.h \
+			       complex.h cpio.h dlfcn.h fenv.h fmtmsg.h ftw.h \
+			       iconv.h inttypes.h iso646.h langinfo.h \
+			       libgen.h monetary.h ndbm.h net/if.h netdb.h \
+			       netinet/in.h netinet/tcp.h nl_types.h poll.h \
+			       search.h spawn.h stdbool.h stdint.h strings.h \
+			       stropts.h sys/ipc.h sys/msg.h sys/resource.h \
+			       sys/select.h sys/sem.h sys/shm.h sys/socket.h \
+			       sys/statvfs.h sys/time.h sys/timeb.h sys/uio.h \
+			       sys/un.h syslog.h tgmath.h ucontext.h ulimit.h \
+			       utmpx.h wchar.h wctype.h
+# Missing POSIX2008 expectations for: trace.h.
+conformtest-headers-POSIX2008 := $(conformtest-headers-POSIX) arpa/inet.h \
+				 complex.h cpio.h dlfcn.h fenv.h iconv.h \
+				 inttypes.h iso646.h langinfo.h monetary.h \
+				 net/if.h netdb.h netinet/in.h netinet/tcp.h \
+				 nl_types.h poll.h spawn.h stdbool.h stdint.h \
+				 strings.h stropts.h sys/select.h \
+				 sys/socket.h sys/statvfs.h sys/un.h tgmath.h \
+				 wchar.h wctype.h
+# Missing XOPEN2K8 expectations for: trace.h.
+conformtest-headers-XOPEN2K8 := $(conformtest-headers-POSIX2008) fmtmsg.h \
+				ftw.h libgen.h ndbm.h search.h sys/ipc.h \
+				sys/msg.h sys/resource.h sys/sem.h sys/shm.h \
+				sys/time.h sys/uio.h syslog.h ulimit.h utmpx.h
+
+conformtest-header-list-base := $(foreach std,$(conformtest-standards),\
+					      header-list-$(std).out)
+conformtest-header-list-tests := $(addprefix $(objpfx),\
+					     $(conformtest-header-list-base))
+tests-special += $(conformtest-header-list-tests)
+generated += $(conformtest-header-list-base)
+
+conformtest-header-base := $(foreach std,\
+				     $(conformtest-standards),\
+				     $(foreach h,\
+					       $(conformtest-headers-$(std)),\
+					       $(std)/$(h)/conform.out))
+conformtest-header-tests := $(addprefix $(objpfx),$(conformtest-header-base))
+ifneq (yes,$(fast-check))
+tests-special += $(conformtest-header-tests)
+generated += $(conformtest-header-base)
+endif
+
+linknamespace-symlists-base := $(foreach std,$(conformtest-standards),\
+					     symlist-$(std))
+linknamespace-symlists-tests := $(addprefix $(objpfx),\
+					    $(linknamespace-symlists-base))
+tests-special += $(linknamespace-symlists-tests)
+
+linknamespace-symlist-stdlibs-base := $(foreach std,$(conformtest-standards),\
+						    symlist-stdlibs-$(std))
+linknamespace-symlist-stdlibs-tests := \
+	$(addprefix $(objpfx),\
+		    $(linknamespace-symlist-stdlibs-base))
+
+tests-special += $(linknamespace-symlist-stdlibs-tests)
+
+linknamespace-header-base := $(foreach std,\
+				       $(conformtest-standards),\
+				       $(foreach h,\
+						 $(conformtest-headers-$(std)),\
+						 $(std)/$(h)/linknamespace.out))
+linknamespace-header-tests := $(addprefix $(objpfx),\
+					  $(linknamespace-header-base))
+tests-special += $(linknamespace-header-tests)
+
+include ../Rules
+
+$(conformtest-header-list-tests): $(objpfx)header-list-%.out: \
+				  check-header-lists.sh \
+				  $(conformtest-headers-data)
+	$(SHELL) $< "$*" "$(CC)" "$(strip $(conformtest-headers-$*))" \
+		 "$(conformtest-headers-data)" > $@; \
+	$(evaluate-test)
+
+# Pre-standard C feature no longer supported by GCC (obsoleted in
+# newer POSIX standards).
+test-xfail-XPG4/varargs.h/conform = yes
+test-xfail-XPG42/varargs.h/conform = yes
+test-xfail-UNIX98/varargs.h/conform = yes
+
+# Header not provided by glibc.
+test-xfail-XPG42/ndbm.h/conform = yes
+test-xfail-UNIX98/ndbm.h/conform = yes
+test-xfail-XOPEN2K/ndbm.h/conform = yes
+test-xfail-XOPEN2K8/ndbm.h/conform = yes
+
+# Unsorted expected failures.
+test-xfail-XPG4/signal.h/conform = yes
+test-xfail-XPG4/sys/wait.h/conform = yes
+test-xfail-XPG42/signal.h/conform = yes
+test-xfail-XPG42/sys/wait.h/conform = yes
+test-xfail-XPG42/ucontext.h/conform = yes
+test-xfail-POSIX/sys/wait.h/conform = yes
+test-xfail-UNIX98/signal.h/conform = yes
+test-xfail-UNIX98/sys/wait.h/conform = yes
+test-xfail-UNIX98/ucontext.h/conform = yes
+test-xfail-XOPEN2K/signal.h/conform = yes
+test-xfail-XOPEN2K/sys/wait.h/conform = yes
+test-xfail-XOPEN2K/ucontext.h/conform = yes
+test-xfail-POSIX2008/signal.h/conform = yes
+test-xfail-POSIX2008/sys/wait.h/conform = yes
+test-xfail-XOPEN2K8/signal.h/conform = yes
+test-xfail-XOPEN2K8/sys/wait.h/conform = yes
+
+conformtest-cc-flags = -I../include $(+sysdep-includes) $(sysincludes) -I..
+# conformtest-xfail-conds may be set by a sysdeps Makefile fragment to
+# a list of conditions that are considered to be true when encountered
+# in xfail[cond]- lines in test expectations.
+conformtest-xfail = $(if $(conformtest-xfail-conds),\
+			 --xfail='$(conformtest-xfail-conds)')
+ifeq (no,$(cross-compiling))
+conformtest-cross =
+else
+conformtest-cross = --cross
+endif
+$(conformtest-header-tests): $(objpfx)%/conform.out: \
+			     conformtest.pl $(conformtest-headers-data)
+	(set -e; std_hdr=$*; std=$${std_hdr%%/*}; hdr=$${std_hdr#*/}; \
+	 mkdir -p $(@D)/scratch; \
+	 $(PERL) -I. conformtest.pl --tmpdir=$(@D)/scratch --cc='$(CC)' \
+		 --flags='$(conformtest-cc-flags)' --standard=$$std \
+		 --headers=$$hdr $(conformtest-xfail) $(conformtest-cross) \
+		 > $@); \
+	$(evaluate-test)
+
+$(linknamespace-symlists-tests): $(objpfx)symlist-%: list-header-symbols.pl
+	$(PERL) -I. -w $< --tmpdir=$(objpfx) --cc='$(CC)' \
+		--flags='$(conformtest-cc-flags)' --standard=$* \
+		--headers="$(strip $(conformtest-headers-$*))" \
+		> $@ 2> $@.err; \
+	$(evaluate-test)
+
+linknamespace-libs-isoc = $(common-objpfx)libc.a $(common-objpfx)math/libm.a
+linknamespace-libs-thr = $(linknamespace-libs-isoc) \
+			 $(common-objpfx)rt/librt.a $(static-thread-library)
+linknamespace-libs-posix = $(linknamespace-libs-thr) \
+			   $(common-objpfx)dlfcn/libdl.a
+linknamespace-libs-xsi = $(linknamespace-libs-posix) \
+			 $(common-objpfx)crypt/libcrypt.a
+linknamespace-libs-ISO = $(linknamespace-libs-isoc)
+linknamespace-libs-ISO99 = $(linknamespace-libs-isoc)
+linknamespace-libs-ISO11 = $(linknamespace-libs-isoc)
+linknamespace-libs-XPG4 = $(linknamespace-libs-isoc) \
+			  $(common-objpfx)crypt/libcrypt.a
+linknamespace-libs-XPG42 = $(linknamespace-libs-XPG4)
+linknamespace-libs-POSIX = $(linknamespace-libs-thr)
+linknamespace-libs-UNIX98 = $(linknamespace-libs-xsi)
+linknamespace-libs-XOPEN2K = $(linknamespace-libs-xsi)
+linknamespace-libs-POSIX2008 = $(linknamespace-libs-posix)
+linknamespace-libs-XOPEN2K8 = $(linknamespace-libs-xsi)
+linknamespace-libs = $(foreach std,$(conformtest-standards),\
+				   $(linknamespace-libs-$(std)))
+
+$(linknamespace-symlist-stdlibs-tests): $(objpfx)symlist-stdlibs-%: \
+					$(linknamespace-libs)
+	LC_ALL=C $(READELF) -W -s $(linknamespace-libs-$*) > $@; \
+	$(evaluate-test)
+
+$(linknamespace-header-tests): $(objpfx)%/linknamespace.out: \
+			       linknamespace.pl \
+			       $(linknamespace-symlists-tests) \
+			       $(linknamespace-symlist-stdlibs-tests)
+	(set -e; std_hdr=$*; std=$${std_hdr%%/*}; hdr=$${std_hdr#*/}; \
+	 mkdir -p $(@D)/scratch; \
+	 $(PERL) -I. -w $< --tmpdir=$(@D)/scratch --cc='$(CC)' \
+		 --flags='$(conformtest-cc-flags)' --standard=$$std \
+		 --stdsyms=$(objpfx)symlist-$$std --header=$$hdr \
+		 --libsyms=$(objpfx)symlist-stdlibs-$$std \
+		 --readelf='$(READELF)' \
+		 > $@ 2>&1); \
+	$(evaluate-test)
+
+# Pre-standard C feature no longer supported by GCC (obsoleted in
+# newer POSIX standards).
+test-xfail-XPG4/varargs.h/linknamespace = yes
+test-xfail-XPG42/varargs.h/linknamespace = yes
+test-xfail-UNIX98/varargs.h/linknamespace = yes
+
+# Header not provided by glibc.
+test-xfail-XPG42/ndbm.h/linknamespace = yes
+test-xfail-UNIX98/ndbm.h/linknamespace = yes
+test-xfail-XOPEN2K/ndbm.h/linknamespace = yes
+test-xfail-XOPEN2K8/ndbm.h/linknamespace = yes