xref: /netbsd-src/external/gpl3/gdb/dist/gnulib/import/m4/string_h.m4 (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1# Configure a GNU-like replacement for <string.h>.
2
3# Copyright (C) 2007-2022 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 34
9
10# Written by Paul Eggert.
11
12AC_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.
35AC_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.
47AC_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  dnl Make sure the shell variable for GNULIB_FREE_POSIX is initialized.
97  gl_STDLIB_H_REQUIRE_DEFAULTS
98  AC_REQUIRE([gl_STRING_H_DEFAULTS])
99])
100
101AC_DEFUN([gl_STRING_H_DEFAULTS],
102[
103  HAVE_MBSLEN=0;             AC_SUBST([HAVE_MBSLEN])
104  dnl Assume proper GNU behavior unless another module says otherwise.
105  HAVE_EXPLICIT_BZERO=1;        AC_SUBST([HAVE_EXPLICIT_BZERO])
106  HAVE_FFSL=1;                  AC_SUBST([HAVE_FFSL])
107  HAVE_FFSLL=1;                 AC_SUBST([HAVE_FFSLL])
108  HAVE_DECL_MEMMEM=1;           AC_SUBST([HAVE_DECL_MEMMEM])
109  HAVE_MEMPCPY=1;               AC_SUBST([HAVE_MEMPCPY])
110  HAVE_DECL_MEMRCHR=1;          AC_SUBST([HAVE_DECL_MEMRCHR])
111  HAVE_RAWMEMCHR=1;             AC_SUBST([HAVE_RAWMEMCHR])
112  HAVE_STPCPY=1;                AC_SUBST([HAVE_STPCPY])
113  HAVE_STPNCPY=1;               AC_SUBST([HAVE_STPNCPY])
114  HAVE_STRCHRNUL=1;             AC_SUBST([HAVE_STRCHRNUL])
115  HAVE_DECL_STRDUP=1;           AC_SUBST([HAVE_DECL_STRDUP])
116  HAVE_DECL_STRNDUP=1;          AC_SUBST([HAVE_DECL_STRNDUP])
117  HAVE_DECL_STRNLEN=1;          AC_SUBST([HAVE_DECL_STRNLEN])
118  HAVE_STRPBRK=1;               AC_SUBST([HAVE_STRPBRK])
119  HAVE_STRSEP=1;                AC_SUBST([HAVE_STRSEP])
120  HAVE_STRCASESTR=1;            AC_SUBST([HAVE_STRCASESTR])
121  HAVE_DECL_STRTOK_R=1;         AC_SUBST([HAVE_DECL_STRTOK_R])
122  HAVE_DECL_STRERROR_R=1;       AC_SUBST([HAVE_DECL_STRERROR_R])
123  HAVE_STRERRORNAME_NP=1;       AC_SUBST([HAVE_STRERRORNAME_NP])
124  HAVE_SIGABBREV_NP=1;          AC_SUBST([HAVE_SIGABBREV_NP])
125  HAVE_SIGDESCR_NP=1;           AC_SUBST([HAVE_SIGDESCR_NP])
126  HAVE_DECL_STRSIGNAL=1;        AC_SUBST([HAVE_DECL_STRSIGNAL])
127  HAVE_STRVERSCMP=1;            AC_SUBST([HAVE_STRVERSCMP])
128  REPLACE_FFSLL=0;              AC_SUBST([REPLACE_FFSLL])
129  REPLACE_MEMCHR=0;             AC_SUBST([REPLACE_MEMCHR])
130  REPLACE_MEMMEM=0;             AC_SUBST([REPLACE_MEMMEM])
131  REPLACE_STPNCPY=0;            AC_SUBST([REPLACE_STPNCPY])
132  REPLACE_STRCHRNUL=0;          AC_SUBST([REPLACE_STRCHRNUL])
133  REPLACE_STRDUP=0;             AC_SUBST([REPLACE_STRDUP])
134  REPLACE_STRNCAT=0;            AC_SUBST([REPLACE_STRNCAT])
135  REPLACE_STRNDUP=0;            AC_SUBST([REPLACE_STRNDUP])
136  REPLACE_STRNLEN=0;            AC_SUBST([REPLACE_STRNLEN])
137  REPLACE_STRSTR=0;             AC_SUBST([REPLACE_STRSTR])
138  REPLACE_STRCASESTR=0;         AC_SUBST([REPLACE_STRCASESTR])
139  REPLACE_STRTOK_R=0;           AC_SUBST([REPLACE_STRTOK_R])
140  REPLACE_STRERROR=0;           AC_SUBST([REPLACE_STRERROR])
141  REPLACE_STRERROR_R=0;         AC_SUBST([REPLACE_STRERROR_R])
142  REPLACE_STRERRORNAME_NP=0;    AC_SUBST([REPLACE_STRERRORNAME_NP])
143  REPLACE_STRSIGNAL=0;          AC_SUBST([REPLACE_STRSIGNAL])
144  UNDEFINE_STRTOK_R=0;          AC_SUBST([UNDEFINE_STRTOK_R])
145])
146