Bump to m4 1.4.19
[platform/upstream/m4.git] / m4 / string_h.m4
1 # Configure a GNU-like replacement for <string.h>.
2
3 # Copyright (C) 2007-2021 Free Software Foundation, Inc.
4 # This file is free software; the Free Software Foundation
5 # gives unlimited permission to copy and/or distribute it,
6 # with or without modifications, as long as this notice is preserved.
7
8 # serial 32
9
10 # Written by Paul Eggert.
11
12 AC_DEFUN_ONCE([gl_STRING_H],
13 [
14   dnl Ensure to expand the default settings once only, before all statements
15   dnl that occur in other macros.
16   AC_REQUIRE([gl_STRING_H_DEFAULTS])
17   gl_NEXT_HEADERS([string.h])
18
19   dnl Check for declarations of anything we want to poison if the
20   dnl corresponding gnulib module is not in use, and which is not
21   dnl guaranteed by C89.
22   gl_WARN_ON_USE_PREPARE([[#include <string.h>
23     ]],
24     [ffsl ffsll memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul
25      strdup strncat strndup strnlen strpbrk strsep strcasestr strtok_r
26      strerror_r strerrorname_np sigabbrev_np sigdescr_np strsignal strverscmp])
27
28   AC_REQUIRE([AC_C_RESTRICT])
29 ])
30
31 # gl_STRING_MODULE_INDICATOR([modulename])
32 # sets the shell variable that indicates the presence of the given module
33 # to a C preprocessor expression that will evaluate to 1.
34 # This macro invocation must not occur in macros that are AC_REQUIREd.
35 AC_DEFUN([gl_STRING_MODULE_INDICATOR],
36 [
37   dnl Ensure to expand the default settings once only.
38   gl_STRING_H_REQUIRE_DEFAULTS
39   gl_MODULE_INDICATOR_SET_VARIABLE([$1])
40   dnl Define it also as a C macro, for the benefit of the unit tests.
41   gl_MODULE_INDICATOR_FOR_TESTS([$1])
42 ])
43
44 # Initializes the default values for AC_SUBSTed shell variables.
45 # This macro must not be AC_REQUIREd.  It must only be invoked, and only
46 # outside of macros or in macros that are not AC_REQUIREd.
47 AC_DEFUN([gl_STRING_H_REQUIRE_DEFAULTS],
48 [
49   m4_defun(GL_MODULE_INDICATOR_PREFIX[_STRING_H_MODULE_INDICATOR_DEFAULTS], [
50     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPLICIT_BZERO])
51     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFSL])
52     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FFSLL])
53     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMCHR])
54     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMMEM])
55     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMPCPY])
56     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMRCHR])
57     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RAWMEMCHR])
58     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STPCPY])
59     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STPNCPY])
60     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRCHRNUL])
61     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRDUP])
62     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRNCAT])
63     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRNDUP])
64     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRNLEN])
65     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRPBRK])
66     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRSEP])
67     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRSTR])
68     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRCASESTR])
69     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRTOK_R])
70     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSLEN])
71     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSNLEN])
72     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCHR])
73     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSRCHR])
74     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSSTR])
75     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCASECMP])
76     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSNCASECMP])
77     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSPCASECMP])
78     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCASESTR])
79     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSCSPN])
80     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSPBRK])
81     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSSPN])
82     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSSEP])
83     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSTOK_R])
84     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRERROR])
85     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRERROR_R])
86     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRERRORNAME_NP])
87     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGABBREV_NP])
88     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGDESCR_NP])
89     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRSIGNAL])
90     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRVERSCMP])
91     dnl Support Microsoft deprecated alias function names by default.
92     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_MEMCCPY], [1])
93     gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_STRDUP], [1])
94   ])
95   m4_require(GL_MODULE_INDICATOR_PREFIX[_STRING_H_MODULE_INDICATOR_DEFAULTS])
96   AC_REQUIRE([gl_STRING_H_DEFAULTS])
97 ])
98
99 AC_DEFUN([gl_STRING_H_DEFAULTS],
100 [
101   HAVE_MBSLEN=0;             AC_SUBST([HAVE_MBSLEN])
102   dnl Assume proper GNU behavior unless another module says otherwise.
103   HAVE_EXPLICIT_BZERO=1;        AC_SUBST([HAVE_EXPLICIT_BZERO])
104   HAVE_FFSL=1;                  AC_SUBST([HAVE_FFSL])
105   HAVE_FFSLL=1;                 AC_SUBST([HAVE_FFSLL])
106   HAVE_DECL_MEMMEM=1;           AC_SUBST([HAVE_DECL_MEMMEM])
107   HAVE_MEMPCPY=1;               AC_SUBST([HAVE_MEMPCPY])
108   HAVE_DECL_MEMRCHR=1;          AC_SUBST([HAVE_DECL_MEMRCHR])
109   HAVE_RAWMEMCHR=1;             AC_SUBST([HAVE_RAWMEMCHR])
110   HAVE_STPCPY=1;                AC_SUBST([HAVE_STPCPY])
111   HAVE_STPNCPY=1;               AC_SUBST([HAVE_STPNCPY])
112   HAVE_STRCHRNUL=1;             AC_SUBST([HAVE_STRCHRNUL])
113   HAVE_DECL_STRDUP=1;           AC_SUBST([HAVE_DECL_STRDUP])
114   HAVE_DECL_STRNDUP=1;          AC_SUBST([HAVE_DECL_STRNDUP])
115   HAVE_DECL_STRNLEN=1;          AC_SUBST([HAVE_DECL_STRNLEN])
116   HAVE_STRPBRK=1;               AC_SUBST([HAVE_STRPBRK])
117   HAVE_STRSEP=1;                AC_SUBST([HAVE_STRSEP])
118   HAVE_STRCASESTR=1;            AC_SUBST([HAVE_STRCASESTR])
119   HAVE_DECL_STRTOK_R=1;         AC_SUBST([HAVE_DECL_STRTOK_R])
120   HAVE_DECL_STRERROR_R=1;       AC_SUBST([HAVE_DECL_STRERROR_R])
121   HAVE_STRERRORNAME_NP=1;       AC_SUBST([HAVE_STRERRORNAME_NP])
122   HAVE_SIGABBREV_NP=1;          AC_SUBST([HAVE_SIGABBREV_NP])
123   HAVE_SIGDESCR_NP=1;           AC_SUBST([HAVE_SIGDESCR_NP])
124   HAVE_DECL_STRSIGNAL=1;        AC_SUBST([HAVE_DECL_STRSIGNAL])
125   HAVE_STRVERSCMP=1;            AC_SUBST([HAVE_STRVERSCMP])
126   REPLACE_FFSLL=0;              AC_SUBST([REPLACE_FFSLL])
127   REPLACE_MEMCHR=0;             AC_SUBST([REPLACE_MEMCHR])
128   REPLACE_MEMMEM=0;             AC_SUBST([REPLACE_MEMMEM])
129   REPLACE_STPNCPY=0;            AC_SUBST([REPLACE_STPNCPY])
130   REPLACE_STRCHRNUL=0;          AC_SUBST([REPLACE_STRCHRNUL])
131   REPLACE_STRDUP=0;             AC_SUBST([REPLACE_STRDUP])
132   REPLACE_STRNCAT=0;            AC_SUBST([REPLACE_STRNCAT])
133   REPLACE_STRNDUP=0;            AC_SUBST([REPLACE_STRNDUP])
134   REPLACE_STRNLEN=0;            AC_SUBST([REPLACE_STRNLEN])
135   REPLACE_STRSTR=0;             AC_SUBST([REPLACE_STRSTR])
136   REPLACE_STRCASESTR=0;         AC_SUBST([REPLACE_STRCASESTR])
137   REPLACE_STRTOK_R=0;           AC_SUBST([REPLACE_STRTOK_R])
138   REPLACE_STRERROR=0;           AC_SUBST([REPLACE_STRERROR])
139   REPLACE_STRERROR_R=0;         AC_SUBST([REPLACE_STRERROR_R])
140   REPLACE_STRERRORNAME_NP=0;    AC_SUBST([REPLACE_STRERRORNAME_NP])
141   REPLACE_STRSIGNAL=0;          AC_SUBST([REPLACE_STRSIGNAL])
142   UNDEFINE_STRTOK_R=0;          AC_SUBST([UNDEFINE_STRTOK_R])
143 ])