glibc/wcsmbs/Makefile
Florian Weimer 46f19b2342 Enhanced test coverage for strncmp, wcsncmp
Add string/test-strncmp-nonarray and
wcsmbs/test-wcsncmp-nonarray.

This is the test that uncovered bug 31934.  Test run time
is more than one minute on a fairly current system, so turn
these into xtests that do not run automatically.

Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
(cherry picked from commit 54252394c2)
2024-08-01 09:20:12 +02:00

306 lines
7.3 KiB
Makefile

# Copyright (C) 1995-2024 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
# <https://www.gnu.org/licenses/>.
#
# Sub-makefile for wcsmbs portion of the library.
#
subdir := wcsmbs
include ../Makeconfig
headers := \
bits/types/__mbstate_t.h \
bits/types/mbstate_t.h \
bits/types/wint_t.h \
bits/wchar-ldbl.h \
bits/wchar.h \
bits/wchar2-decl.h \
bits/wchar2.h \
uchar.h \
wchar.h \
# headers
routines := \
btowc \
c16rtomb \
c32rtomb \
c8rtomb \
isoc23_fwscanf \
isoc23_swscanf \
isoc23_vfwscanf \
isoc23_vswscanf \
isoc23_vwscanf \
isoc23_wscanf \
isoc99_fwscanf \
isoc99_swscanf \
isoc99_vfwscanf \
isoc99_vswscanf \
isoc99_vwscanf \
isoc99_wscanf \
mbrlen \
mbrtoc8 \
mbrtoc16 \
mbrtoc32 \
mbrtowc \
mbsinit \
mbsnrtowcs \
mbsrtowcs \
mbsrtowcs_l \
wcpcpy \
wcpncpy \
wcrtomb \
wcscasecmp \
wcscasecmp_l \
wcscat \
wcschr \
wcschrnul \
wcscmp \
wcscoll \
wcscoll_l \
wcscpy \
wcscspn \
wcsdup \
wcslcat \
wcslcpy \
wcslen \
wcsmbsload \
wcsncase \
wcsncase_l \
wcsncat \
wcsncmp \
wcsncpy \
wcsnlen \
wcsnrtombs \
wcspbrk \
wcsrchr \
wcsrtombs \
wcsspn \
wcsstr \
wcstod \
wcstod_l \
wcstod_nan \
wcstof \
wcstof_l \
wcstof_nan \
wcstok \
wcstol \
wcstol_l \
wcstold \
wcstold_l \
wcstold_nan \
wcstoll \
wcstoll_l \
wcstoul \
wcstoul_l \
wcstoull \
wcstoull_l \
wcswidth \
wcsxfrm \
wcsxfrm_l \
wctob \
wcwidth \
wmemchr \
wmemcmp \
wmemcpy \
wmemmove \
wmempcpy \
wmemset \
# routines
# Exclude fortified routines from being built with _FORTIFY_SOURCE
routines_no_fortify += \
mbsnrtowcs \
mbsrtowcs \
wcpcpy \
wcpncpy \
wcrtomb \
wcscat \
wcscpy \
wcslcat \
wcslcpy \
wcsncat \
wcsncpy \
wcsnrtombs \
wcsrtombs \
wmemcpy \
wmemmove \
wmempcpy \
wmemset \
# routines_no_fortify
tests := \
test-c8rtomb \
test-char-types \
test-mbrtoc8 \
test-wcpcpy \
test-wcpncpy \
test-wcscat \
test-wcschr \
test-wcschrnul \
test-wcscmp \
test-wcscpy \
test-wcscspn \
test-wcsdup \
test-wcslen \
test-wcsncat \
test-wcsncmp \
test-wcsncpy \
test-wcsnlen \
test-wcsnlen-nonarray \
test-wcspbrk \
test-wcsrchr \
test-wcsspn \
test-wcsstr \
test-wmemchr \
test-wmemcmp \
test-wmemset \
tst-btowc \
tst-c16-surrogate \
tst-c16c32-1 \
tst-c32-state \
tst-fgetwc-after-eof \
tst-mbrtowc \
tst-mbrtowc2 \
tst-mbsrtowcs \
tst-mbstowcs \
tst-wchar-h \
tst-wcpncpy \
tst-wcrtomb \
tst-wcslcat \
tst-wcslcat2 \
tst-wcslcpy \
tst-wcslcpy2 \
tst-wcsnlen \
tst-wcstod-nan-locale \
tst-wcstod-nan-sign \
tst-wcstod-round \
tst-wcstof \
tst-wcstol-binary-c11 \
tst-wcstol-binary-c23 \
tst-wcstol-binary-gnu11 \
tst-wcstol-binary-gnu23 \
tst-wcstol-locale \
tst-wprintf-binary \
tst-wprintf-intn \
tst-wscanf-binary-c11 \
tst-wscanf-binary-c23 \
tst-wscanf-binary-gnu11 \
tst-wscanf-binary-gnu89 \
tst-wscanf-intn \
tst-wscanf-to_inpunct \
wcsatcliff \
wcsmbs-tst1 \
# tests
# This test runs for a long time.
xtests += test-wcsncmp-nonarray
include ../Rules
ifeq ($(run-built-tests),yes)
LOCALES := \
de_DE.ISO-8859-1 \
de_DE.UTF-8 \
en_US.ANSI_X3.4-1968 \
fa_IR.UTF-8 \
hr_HR.ISO-8859-2 \
ja_JP.EUC-JP \
tr_TR.ISO-8859-9 \
tr_TR.UTF-8 \
zh_HK.BIG5-HKSCS \
zh_TW.EUC-TW \
# LOCALES
include ../gen-locales.mk
$(objpfx)tst-btowc.out: $(gen-locales)
$(objpfx)tst-c16c32-1.out: $(gen-locales)
$(objpfx)tst-mbrtowc.out: $(gen-locales)
$(objpfx)tst-mbrtowc2.out: $(gen-locales)
$(objpfx)tst-wcrtomb.out: $(gen-locales)
$(objpfx)wcsmbs-tst1.out: $(gen-locales)
$(objpfx)tst-wcstol-locale.out: $(gen-locales)
$(objpfx)tst-wcstod-nan-locale.out: $(gen-locales)
$(objpfx)tst-c16-surrogate.out: $(gen-locales)
$(objpfx)tst-c32-state.out: $(gen-locales)
$(objpfx)test-c8rtomb.out: $(gen-locales)
$(objpfx)test-mbrtoc8.out: $(gen-locales)
$(objpfx)tst-wscanf-to_inpunct.out: $(gen-locales)
endif
$(objpfx)tst-wcstod-round: $(libm)
CFLAGS-wcwidth.c += -I../wctype
CFLAGS-wcswidth.c += -I../wctype
strtox-CFLAGS = -I../include
CFLAGS-wcstol.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
CFLAGS-wcstoul.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
CFLAGS-wcstoll.c += $(strtox-CFLAGS)
CFLAGS-wcstoull.c += $(strtox-CFLAGS)
CFLAGS-wcstod.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
CFLAGS-wcstold.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
CFLAGS-wcstof128.c += $(strtox-CFLAGS)
CFLAGS-wcstof.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
CFLAGS-wcstol_l.c += $(strtox-CFLAGS)
CFLAGS-wcstoul_l.c += $(strtox-CFLAGS)
CFLAGS-wcstoll_l.c += $(strtox-CFLAGS)
CFLAGS-wcstoull_l.c += $(strtox-CFLAGS)
CFLAGS-wcstod_l.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
CFLAGS-wcstold_l.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
CFLAGS-wcstof128_l.c += $(strtox-CFLAGS)
CFLAGS-wcstof_l.c += $(strtox-CFLAGS) $(config-cflags-wno-ignored-attributes)
CPPFLAGS-tst-wchar-h.c += $(no-fortify-source),-D_FORTIFY_SOURCE=2
CFLAGS-wcschr.c += $(config-cflags-wno-ignored-attributes)
CFLAGS-wmemchr.c += $(config-cflags-wno-ignored-attributes)
CFLAGS-wmemset.c += $(config-cflags-wno-ignored-attributes)
CFLAGS-mbrtowc.c += $(config-cflags-wno-ignored-attributes)
CFLAGS-wcrtomb.c += $(config-cflags-wno-ignored-attributes)
CFLAGS-wcstoll.c += $(config-cflags-wno-ignored-attributes)
CFLAGS-wcstoull.c += $(config-cflags-wno-ignored-attributes)
CFLAGS-isoc99_wscanf.c += -fexceptions
CFLAGS-isoc99_fwscanf.c += -fexceptions
CFLAGS-isoc99_vwscanf.c += -fexceptions
CFLAGS-isoc99_vfwscanf.c += -fexceptions
CFLAGS-isoc23_wscanf.c += -fexceptions
CFLAGS-isoc23_fwscanf.c += -fexceptions
CFLAGS-isoc23_vwscanf.c += -fexceptions
CFLAGS-isoc23_vfwscanf.c += -fexceptions
CPPFLAGS += $(libio-mtsafe)
# We need to find the default version of strtold_l in stdlib.
CPPFLAGS-wcstold_l.c += -I../stdlib
$(objpfx)tst-wcstod-nan-locale: $(libm)
$(objpfx)tst-wcstod-nan-sign: $(libm)
# Some versions of GCC supported for building glibc do not support -std=c23
# or -std=gnu23 (added in GCC 14), or the older names -std=c2x or -std=gnu2x
# (added in GCC 9), so the tests for those versions use -std=c11 and -std=gnu11
# and then _ISOC23_SOURCE is defined in the test as needed.
CFLAGS-tst-wcstol-binary-c11.c += -std=c11
CFLAGS-tst-wcstol-binary-c23.c += -std=c11
CFLAGS-tst-wcstol-binary-gnu11.c += -std=gnu11
CFLAGS-tst-wcstol-binary-gnu23.c += -std=gnu11
CFLAGS-tst-wscanf-binary-c11.c += -std=c11 -DOBJPFX=\"$(objpfx)\"
CFLAGS-tst-wscanf-binary-c23.c += -std=c11 -DOBJPFX=\"$(objpfx)\"
CFLAGS-tst-wscanf-binary-gnu11.c += -std=gnu11 -DOBJPFX=\"$(objpfx)\"
CFLAGS-tst-wscanf-binary-gnu89.c += -std=gnu89 -DOBJPFX=\"$(objpfx)\"