]> git.ipfire.org Git - thirdparty/glibc.git/blobdiff - stdio-common/Makefile
Prefer https to http for gnu.org and fsf.org URLs
[thirdparty/glibc.git] / stdio-common / Makefile
index 006f546893e969a41edb8472a0674c018a80f9ff..2715a95a0974c59edc5f464442b0f2ecec9adc68 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 1991-2009, 2011 Free Software Foundation, Inc.
+# Copyright (C) 1991-2019 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
 # 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, write to the Free
-# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-# 02111-1307 USA.
+# License along with the GNU C Library; if not, see
+# <https://www.gnu.org/licenses/>.
 
 #
 #      Specific makefile for stdio-common.
 #
 subdir := stdio-common
 
-headers        := stdio_ext.h printf.h bits/printf-ldbl.h
+include ../Makeconfig
+
+headers        := stdio_ext.h printf.h bits/printf-ldbl.h bits/stdio_lim.h
 
 routines       :=                                                            \
        ctermid cuserid                                                       \
@@ -34,19 +35,15 @@ routines    :=                                                            \
        perror psignal                                                        \
        tmpfile tmpfile64 tmpnam tmpnam_r tempnam tempname                    \
        getline getw putw                                                     \
-       remove rename renameat                                                \
+       remove rename renameat renameat2                                      \
        flockfile ftrylockfile funlockfile                                    \
        isoc99_scanf isoc99_vscanf isoc99_fscanf isoc99_vfscanf isoc99_sscanf \
        isoc99_vsscanf                                                        \
-       psiginfo
-
-install-others = $(inst_includedir)/bits/stdio_lim.h
-
-include ../Makeconfig
+       psiginfo gentempfd                                                    \
+       vfscanf-internal vfwscanf-internal iovfscanf iovfwscanf               \
+       vfprintf-internal vfwprintf-internal
 
 aux    := errlist siglist printf-parsemb printf-parsewc fxprintf
-distribute := _itoa.h _itowa.h _i18n_number.h \
-             printf-parse.h stdio_lim.h.in tst-unbputc.sh tst-printf.sh
 
 tests := tstscanf test_rdwr test-popen tstgetln test-fseek \
         temptest tst-fileno test-fwrite tst-ungetc tst-ferror \
@@ -56,84 +53,130 @@ tests := tstscanf test_rdwr test-popen tstgetln test-fseek \
         scanf1 scanf2 scanf3 scanf4 scanf5 scanf7 scanf8 scanf9 scanf10 \
         scanf11 scanf12 tst-tmpnam tst-cookie tst-obprintf tst-sscanf \
         tst-swprintf tst-fseek tst-fmemopen test-vfprintf tst-gets \
-        tst-perror tst-sprintf tst-rndseek tst-fdopen tst-fphex bug14 bug15 \
+        tst-perror tst-sprintf tst-rndseek tst-fdopen tst-fphex bug14 \
         tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \
         tst-fwrite bug16 bug17 tst-swscanf tst-sprintf2 bug18 bug18a \
         bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \
-        scanf16 scanf17 tst-setvbuf1 tst-grouping bug23 bug24
-
-test-srcs = tst-unbputc tst-printf
+        scanf16 scanf17 tst-setvbuf1 tst-grouping bug23 bug24 \
+        bug-vfprintf-nargs tst-long-dbl-fphex tst-fphex-wide tst-sprintf3 \
+        bug25 tst-printf-round bug23-2 bug23-3 bug23-4 bug26 tst-fmemopen3 \
+        tst-printf-bz18872 tst-vfprintf-width-prec tst-fmemopen4 \
+        tst-vfprintf-user-type \
+        tst-vfprintf-mbs-prec \
+        tst-scanf-round \
+        tst-renameat2 tst-bz11319 tst-bz11319-fortify2 \
+        scanf14a scanf16a \
+
+
+test-srcs = tst-unbputc tst-printf tst-printfsz-islongdouble
+
+ifeq ($(run-built-tests),yes)
+tests-special += $(objpfx)tst-unbputc.out $(objpfx)tst-printf.out \
+                $(objpfx)tst-printf-bz18872-mem.out \
+                $(objpfx)tst-setvbuf1-cmp.out \
+                $(objpfx)tst-vfprintf-width-prec-mem.out \
+                $(objpfx)tst-printfsz-islongdouble.out
+generated += tst-printf-bz18872.c tst-printf-bz18872.mtrace \
+            tst-printf-bz18872-mem.out \
+            tst-vfprintf-width-prec.mtrace tst-vfprintf-width-prec-mem.out
+endif
 
 include ../Rules
 
-$(inst_includedir)/bits/stdio_lim.h: $(common-objpfx)bits/stdio_lim.h $(+force)
-       $(do-install)
-
-ifeq ($(cross-compiling),no)
-.PHONY: do-tst-unbputc do-tst-printf
-tests: do-tst-unbputc do-tst-printf
-
-do-tst-unbputc: $(objpfx)tst-unbputc.out
-$(objpfx)tst-unbputc.out: $(objpfx)tst-unbputc tst-unbputc.sh
-       $(SHELL) -e tst-unbputc.sh $(common-objpfx) '$(run-program-prefix)'
-
-do-tst-printf: $(objpfx)tst-printf.out
-$(objpfx)tst-printf.out: $(objpfx)tst-printf tst-printf.sh
-       $(SHELL) -e tst-printf.sh $(common-objpfx) '$(run-program-prefix)'
-endif
-
-CFLAGS-vfprintf.c = -Wno-uninitialized
-CFLAGS-vfwprintf.c = -Wno-uninitialized
-CFLAGS-tst-printf.c = -Wno-format
-CFLAGS-tstdiomisc.c = -Wno-format
-CFLAGS-scanf4.c = -Wno-format
-CFLAGS-scanf7.c = -Wno-format
-CFLAGS-tst-printfsz.c = -Wno-format
-
-CFLAGS-tmpfile.c = -fexceptions
-CFLAGS-tmpfile64.c = -fexceptions
-CFLAGS-tempname.c = -fexceptions
-CFLAGS-psignal.c = -fexceptions
-CFLAGS-vprintf.c = -fexceptions
-CFLAGS-cuserid.c = -fexceptions
-
-CFLAGS-vfprintf.c += $(exceptions)
-CFLAGS-fprintf.c += $(exceptions)
-CFLAGS-printf.c += $(exceptions)
-CFLAGS-vfwprintf.c += $(exceptions)
-CFLAGS-vfscanf.c += $(exceptions)
-CFLAGS-vfwscanf.c += $(exceptions)
-CFLAGS-fscanf.c += $(exceptions)
-CFLAGS-scanf.c += $(exceptions)
-CFLAGS-isoc99_vfscanf.c += $(exceptions)
-CFLAGS-isoc99_vscanf.c += $(exceptions)
-CFLAGS-isoc99_fscanf.c += $(exceptions)
-CFLAGS-isoc99_scanf.c += $(exceptions)
-CFLAGS-errlist.c = $(fno-unit-at-a-time)
-CFLAGS-siglist.c = $(fno-unit-at-a-time)
-
-# The following is a hack since we must compile scanf1{5,7}.c without any
-# GNU extension.  The latter are needed, though, when internal headers
-# are used.  So made sure we see the installed headers first.
-CFLAGS-scanf15.c = -I../libio -I../stdlib -I../wcsmbs -I../time -I../string \
-                  -I../wctype
-CFLAGS-scanf17.c = -I../libio -I../stdlib -I../wcsmbs -I../time -I../string \
-                  -I../wctype
-
-# We know the test has a format string problem.
-CFLAGS-tst-sprintf.c = -Wno-format
-tst-sscanf-ENV = LOCPATH=$(common-objpfx)localedata
-tst-swprintf-ENV = LOCPATH=$(common-objpfx)localedata
-test-vfprintf-ENV = LOCPATH=$(common-objpfx)localedata
-scanf13-ENV = LOCPATH=$(common-objpfx)localedata
-bug14-ENV = LOCPATH=$(common-objpfx)localedata
-bug15-ENV = LOCPATH=$(common-objpfx)localedata
-tst-grouping-ENV = LOCPATH=$(common-objpfx)localedata
-
-ifneq (,$(filter %REENTRANT, $(defines)))
-CPPFLAGS += -D_IO_MTSAFE_IO
+ifeq ($(run-built-tests),yes)
+LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ISO-8859-1 ja_JP.EUC-JP
+include ../gen-locales.mk
+
+$(objpfx)bug14.out: $(gen-locales)
+$(objpfx)scanf13.out: $(gen-locales)
+$(objpfx)test-vfprintf.out: $(gen-locales)
+$(objpfx)tst-grouping.out: $(gen-locales)
+$(objpfx)tst-sprintf.out: $(gen-locales)
+$(objpfx)tst-sscanf.out: $(gen-locales)
+$(objpfx)tst-swprintf.out: $(gen-locales)
+$(objpfx)tst-vfprintf-mbs-prec.out: $(gen-locales)
 endif
 
-$(objpfx)tst-setvbuf1.out: tst-setvbuf1.expect $(objpfx)tst-setvbuf1
-       $(built-program-cmd) > $@ 2>&1
-       cmp tst-setvbuf1.expect $@
+tst-printf-bz18872-ENV = MALLOC_TRACE=$(objpfx)tst-printf-bz18872.mtrace
+tst-vfprintf-width-prec-ENV = \
+  MALLOC_TRACE=$(objpfx)tst-vfprintf-width-prec.mtrace
+
+$(objpfx)tst-unbputc.out: tst-unbputc.sh $(objpfx)tst-unbputc
+       $(SHELL) $< $(common-objpfx) '$(test-program-prefix)' > $@; \
+       $(evaluate-test)
+
+$(objpfx)tst-printf.out: tst-printf.sh $(objpfx)tst-printf
+       $(SHELL) $< $(common-objpfx) '$(test-program-prefix)' > $@; \
+       $(evaluate-test)
+
+$(objpfx)tst-printfsz-islongdouble.out: \
+  tst-printfsz-islongdouble.sh $(objpfx)tst-printfsz-islongdouble
+       $(SHELL) $^ '$(test-program-prefix)' $@; \
+       $(evaluate-test)
+
+# We generate this source because it requires a printf invocation with
+# 10K arguments.
+$(objpfx)tst-printf-bz18872.c: tst-printf-bz18872.sh
+       rm -f $@ && $(BASH) $^ > $@.new && mv $@.new $@
+
+$(objpfx)tst-%-mem.out: $(objpfx)tst-%.out
+       $(common-objpfx)malloc/mtrace $(objpfx)tst-$*.mtrace > $@; \
+       $(evaluate-test)
+
+CFLAGS-vfprintf.c += -Wno-uninitialized
+CFLAGS-vfwprintf.c += -Wno-uninitialized
+
+CFLAGS-tmpfile.c += -fexceptions
+CFLAGS-tmpfile64.c += -fexceptions
+CFLAGS-tempname.c += -fexceptions
+CFLAGS-psignal.c += -fexceptions
+CFLAGS-vprintf.c += -fexceptions
+CFLAGS-cuserid.c += -fexceptions
+
+CFLAGS-vfprintf.c += -fexceptions
+CFLAGS-fprintf.c += -fexceptions
+CFLAGS-printf.c += -fexceptions
+CFLAGS-vfwprintf.c += -fexceptions
+CFLAGS-vfscanf.c += -fexceptions
+CFLAGS-vfwscanf.c += -fexceptions
+CFLAGS-fscanf.c += -fexceptions
+CFLAGS-scanf.c += -fexceptions
+CFLAGS-isoc99_vfscanf.c += -fexceptions
+CFLAGS-isoc99_vscanf.c += -fexceptions
+CFLAGS-isoc99_fscanf.c += -fexceptions
+CFLAGS-isoc99_scanf.c += -fexceptions
+CFLAGS-errlist.c += $(fno-unit-at-a-time)
+CFLAGS-siglist.c += $(fno-unit-at-a-time)
+
+# scanf14a.c and scanf16a.c test a deprecated extension which is no
+# longer visible under most conformance levels; see the source files
+# for more detail.
+CFLAGS-scanf14a.c += -std=gnu89
+CFLAGS-scanf16a.c += -std=gnu89
+
+CFLAGS-bug3.c += -DOBJPFX=\"$(objpfx)\"
+CFLAGS-bug4.c += -DOBJPFX=\"$(objpfx)\"
+CFLAGS-bug5.c += -DOBJPFX=\"$(objpfx)\"
+CFLAGS-test-fseek.c += -DOBJPFX=\"$(objpfx)\"
+CFLAGS-test-popen.c += -DOBJPFX=\"$(objpfx)\"
+CFLAGS-test_rdwr.c += -DOBJPFX=\"$(objpfx)\"
+
+# tst-gets.c tests a deprecated function.
+CFLAGS-tst-gets.c += -Wno-deprecated-declarations
+
+# BZ #11319 was first fixed for regular vdprintf, then reopened because
+# the fortified version had the same bug.
+CFLAGS-tst-bz11319-fortify2.c += -D_FORTIFY_SOURCE=2
+
+CPPFLAGS += $(libio-mtsafe)
+
+$(objpfx)tst-setvbuf1.out: /dev/null $(objpfx)tst-setvbuf1
+       $(test-program-cmd) > $@ 2>&1; \
+       $(evaluate-test)
+
+$(objpfx)tst-setvbuf1-cmp.out: tst-setvbuf1.expect $(objpfx)tst-setvbuf1.out
+       cmp $^ > $@; \
+       $(evaluate-test)
+
+$(objpfx)tst-printf-round: $(libm)
+$(objpfx)tst-scanf-round: $(libm)