1# Copyright (C) 1995-2022 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# <https://www.gnu.org/licenses/>.
17
18#
19#	Sub-makefile for wcsmbs portion of the library.
20#
21subdir	:= wcsmbs
22
23include ../Makeconfig
24
25headers	:= wchar.h bits/wchar.h bits/wchar2.h bits/wchar-ldbl.h uchar.h \
26	   bits/types/__mbstate_t.h bits/types/mbstate_t.h bits/types/wint_t.h
27
28routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \
29	    wcsncmp wcsncpy wcspbrk wcsrchr wcsspn wcstok wcsstr wmemchr \
30	    wmemcmp wmemcpy wmemmove wmemset wcpcpy wcpncpy wmempcpy \
31	    btowc wctob mbsinit \
32	    mbrlen mbrtowc wcrtomb mbsrtowcs wcsrtombs \
33	    mbsnrtowcs wcsnrtombs wcsnlen wcschrnul \
34	    wcstol wcstoul wcstoll wcstoull wcstod wcstold wcstof \
35	    wcstol_l wcstoul_l wcstoll_l wcstoull_l \
36	    wcstod_l wcstold_l wcstof_l \
37	    wcstod_nan wcstold_nan wcstof_nan \
38	    wcscoll wcsxfrm \
39	    wcwidth wcswidth \
40	    wcscoll_l wcsxfrm_l \
41	    wcscasecmp wcsncase wcscasecmp_l wcsncase_l \
42	    wcsmbsload mbsrtowcs_l \
43	    isoc99_wscanf isoc99_vwscanf isoc99_fwscanf isoc99_vfwscanf \
44	    isoc99_swscanf isoc99_vswscanf \
45	    mbrtoc8 c8rtomb mbrtoc16 c16rtomb mbrtoc32 c32rtomb
46
47strop-tests :=  wcscmp wcsncmp wmemcmp wcslen wcschr wcsrchr wcscpy wcsnlen \
48		wcpcpy wcsncpy wcpncpy wcscat wcsncat wcschrnul wcsspn wcspbrk \
49		wcscspn wmemchr wmemset
50tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \
51	 tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \
52	 tst-c16c32-1 wcsatcliff tst-wcstol-locale tst-wcstod-nan-locale \
53	 tst-wcstod-round test-char-types tst-fgetwc-after-eof \
54	 tst-wcstod-nan-sign tst-c16-surrogate tst-c32-state \
55	 test-mbrtoc8 test-c8rtomb \
56	 $(addprefix test-,$(strop-tests)) tst-mbstowcs \
57	 tst-wprintf-binary
58
59include ../Rules
60
61ifeq ($(run-built-tests),yes)
62LOCALES := de_DE.ISO-8859-1 de_DE.UTF-8 en_US.ANSI_X3.4-1968 hr_HR.ISO-8859-2 \
63	   ja_JP.EUC-JP zh_TW.EUC-TW tr_TR.UTF-8 tr_TR.ISO-8859-9 zh_HK.BIG5-HKSCS
64include ../gen-locales.mk
65
66$(objpfx)tst-btowc.out: $(gen-locales)
67$(objpfx)tst-c16c32-1.out: $(gen-locales)
68$(objpfx)tst-mbrtowc.out: $(gen-locales)
69$(objpfx)tst-mbrtowc2.out: $(gen-locales)
70$(objpfx)tst-wcrtomb.out: $(gen-locales)
71$(objpfx)wcsmbs-tst1.out: $(gen-locales)
72$(objpfx)tst-wcstol-locale.out: $(gen-locales)
73$(objpfx)tst-wcstod-nan-locale.out: $(gen-locales)
74$(objpfx)tst-c16-surrogate.out: $(gen-locales)
75$(objpfx)tst-c32-state.out: $(gen-locales)
76endif
77
78$(objpfx)tst-wcstod-round: $(libm)
79
80CFLAGS-wcwidth.c += -I../wctype
81CFLAGS-wcswidth.c += -I../wctype
82
83strtox-CFLAGS = -I../include
84CFLAGS-wcstol.c += $(strtox-CFLAGS)
85CFLAGS-wcstoul.c += $(strtox-CFLAGS)
86CFLAGS-wcstoll.c += $(strtox-CFLAGS)
87CFLAGS-wcstoull.c += $(strtox-CFLAGS)
88CFLAGS-wcstod.c += $(strtox-CFLAGS)
89CFLAGS-wcstold.c += $(strtox-CFLAGS)
90CFLAGS-wcstof128.c += $(strtox-CFLAGS)
91CFLAGS-wcstof.c += $(strtox-CFLAGS)
92CFLAGS-wcstol_l.c += $(strtox-CFLAGS)
93CFLAGS-wcstoul_l.c += $(strtox-CFLAGS)
94CFLAGS-wcstoll_l.c += $(strtox-CFLAGS)
95CFLAGS-wcstoull_l.c += $(strtox-CFLAGS)
96CFLAGS-wcstod_l.c += $(strtox-CFLAGS)
97CFLAGS-wcstold_l.c += $(strtox-CFLAGS)
98CFLAGS-wcstof128_l.c += $(strtox-CFLAGS)
99CFLAGS-wcstof_l.c += $(strtox-CFLAGS)
100CPPFLAGS-tst-wchar-h.c += -D_FORTIFY_SOURCE=2
101
102CFLAGS-isoc99_wscanf.c += -fexceptions
103CFLAGS-isoc99_fwscanf.c += -fexceptions
104CFLAGS-isoc99_vwscanf.c += -fexceptions
105CFLAGS-isoc99_vfwscanf.c += -fexceptions
106
107CPPFLAGS += $(libio-mtsafe)
108
109# We need to find the default version of strtold_l in stdlib.
110CPPFLAGS-wcstold_l.c += -I../stdlib
111
112$(objpfx)tst-wcstod-nan-locale: $(libm)
113$(objpfx)tst-wcstod-nan-sign: $(libm)
114