Files
RedBear-OS/local/recipes/tools/diffutils/source/m4/uchar_h.m4
T
vasilito 068a1ca63e bootloader: rebase onto upstream 1.0.0, sync firmware-loader version
Bootloader fork rebase:
- Base changed from 0.1.0 pre-patched archive to upstream 1.0.0 tag (c7eeb9f)
- Applied 0001-redbear-local-forks.patch (Cargo.toml crate path redirects)
- Applied fix-uefi-alloc-panic.patch equivalents (4 panic!() -> graceful
  error handling in src/main.rs)
- Applied P5-live-preload-cap-1gib.patch (1 GiB cap on live image preload)
- Skipped: P0 GPT partition scan (requires new module + integration),
  P1 timeout/default-resolution, P2 live preload guard (subsumed by
  panic fixes + cap), P3 live image safe read, P4 large ISO boot,
  redox.patch — to be applied in dedicated rebase session.

firmware-loader/Cargo.toml: version 0.1.0 -> 0.3.0 (sync with other
Red Bear custom crates which are at 0.3.0).

fork-upstream-map.toml: bootloader back from PENDING_REBASE to 1.0.0
since the partial rebase matches upstream 1.0.0 content.

fork-upstream-map.toml: base restored to 'main' tracked (was correctly
tracked by build-redbear.sh).
2026-07-11 09:47:59 +03:00

252 lines
9.0 KiB
Plaintext

# uchar_h.m4
# serial 31
dnl Copyright (C) 2019-2025 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl This file is offered as-is, without any warranty.
dnl From Bruno Haible.
dnl Prepare the overridden <uchar.h>.
AC_DEFUN_ONCE([gl_UCHAR_H],
[
AC_REQUIRE([gl_UCHAR_H_DEFAULTS])
gl_CHECK_NEXT_HEADERS([uchar.h])
if test $ac_cv_header_uchar_h = yes; then
HAVE_UCHAR_H=1
else
HAVE_UCHAR_H=0
fi
AC_SUBST([HAVE_UCHAR_H])
gl_TYPE_CHAR8_T
gl_TYPE_CHAR16_T
gl_TYPE_CHAR32_T
dnl In C++ mode, clang defines 'char16_t' and 'char32_t' as built-in types
dnl on some platforms (e.g. OpenBSD 6.7), and as types defined by many
dnl header files (<limits.h>, <stddef.h>, <stdint.h>, <stdio.h>, <stdlib.h>
dnl and others) on some platforms (e.g. Mac OS X 10.13).
dnl The same thing may also happen for 'char8_t'; so, be prepared for it.
m4_ifdef([gl_ANSI_CXX], [AC_REQUIRE([gl_ANSI_CXX])])
CXX_HAS_UCHAR_TYPES=0
if test $HAVE_UCHAR_H = 0; then
if test "$CXX" != no; then
AC_CACHE_CHECK([whether the C++ compiler predefines the <uchar.h> types],
[gl_cv_cxx_has_uchar_types],
[dnl We can't use AC_LANG_PUSH([C++]) and AC_LANG_POP([C++]) here, due to
dnl an autoconf bug <https://savannah.gnu.org/support/?110294>.
cat > conftest.cpp <<\EOF
#include <stddef.h>
char16_t a;
char32_t b;
EOF
gl_command="$CXX $CXXFLAGS $CPPFLAGS -c conftest.cpp"
if AC_TRY_EVAL([gl_command]); then
gl_cv_cxx_has_uchar_types=yes
else
gl_cv_cxx_has_uchar_types=no
fi
rm -fr conftest*
])
if test $gl_cv_cxx_has_uchar_types = yes; then
CXX_HAS_UCHAR_TYPES=1
fi
fi
fi
AC_SUBST([CXX_HAS_UCHAR_TYPES])
CXX_HAS_CHAR8_TYPE=0
if test $HAVE_UCHAR_H = 0; then
if test "$CXX" != no; then
AC_CACHE_CHECK([whether the C++ compiler predefines the char8_t types],
[gl_cv_cxx_has_char8_type],
[dnl We can't use AC_LANG_PUSH([C++]) and AC_LANG_POP([C++]) here, due to
dnl an autoconf bug <https://savannah.gnu.org/support/?110294>.
cat > conftest.cpp <<\EOF
#include <stddef.h>
char8_t a;
EOF
gl_command="$CXX $CXXFLAGS $CPPFLAGS -c conftest.cpp"
if AC_TRY_EVAL([gl_command]); then
gl_cv_cxx_has_char8_type=yes
else
gl_cv_cxx_has_char8_type=no
fi
rm -fr conftest*
])
if test $gl_cv_cxx_has_char8_type = yes; then
CXX_HAS_CHAR8_TYPE=1
fi
fi
fi
AC_SUBST([CXX_HAS_CHAR8_TYPE])
dnl Test whether a 'char32_t' can hold more characters than a 'wchar_t'.
gl_STDINT_BITSIZEOF([wchar_t], [gl_STDINT_INCLUDES])
if test $BITSIZEOF_WCHAR_T -lt 32; then
SMALL_WCHAR_T=1
else
SMALL_WCHAR_T=0
fi
dnl SMALL_WCHAR_T is expected to be 1 on 32-bit AIX, Cygwin, native Windows.
AC_SUBST([SMALL_WCHAR_T])
dnl Check for declarations of anything we want to poison if the
dnl corresponding gnulib module is not in use, and which is not
dnl guaranteed by C11.
gl_WARN_ON_USE_PREPARE([[
#ifdef __HAIKU__
#include <stdint.h>
#endif
#include <uchar.h>
]], [c32rtomb mbrtoc16 mbrtoc32])
])
AC_DEFUN_ONCE([gl_TYPE_CHAR8_T],
[
dnl Determine whether gnulib's <uchar.h> would, if present, override char8_t.
AC_CACHE_CHECK([whether char8_t is correctly defined],
[gl_cv_type_char8_t_works],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[
#ifdef __HAIKU__
#include <stdint.h>
#endif
#include <uchar.h>
int verify[(char8_t)(-1) >= 0 && sizeof (char8_t) == sizeof (unsigned char) ? 1 : -1];
]])
],
[gl_cv_type_char8_t_works=yes],
[gl_cv_type_char8_t_works=no])
])
if test $gl_cv_type_char8_t_works = no; then
GNULIBHEADERS_OVERRIDE_CHAR8_T=1
else
GNULIBHEADERS_OVERRIDE_CHAR8_T=0
fi
AC_SUBST([GNULIBHEADERS_OVERRIDE_CHAR8_T])
])
dnl On Haiku 2020, char16_t and char32_t are incorrectly defined.
dnl See <https://dev.haiku-os.org/ticket/15990>.
AC_DEFUN_ONCE([gl_TYPE_CHAR16_T],
[
dnl Determine whether gnulib's <uchar.h> would, if present, override char16_t.
AC_CACHE_CHECK([whether char16_t is correctly defined],
[gl_cv_type_char16_t_works],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[
#ifdef __HAIKU__
#include <stdint.h>
#endif
#include <uchar.h>
/* For simplicity, assume that uint16_least_t is equivalent to
'unsigned short'. */
int verify[(char16_t)(-1) >= 0 && sizeof (char16_t) == sizeof (unsigned short) ? 1 : -1];
]])
],
[gl_cv_type_char16_t_works=yes],
[gl_cv_type_char16_t_works=no])
])
if test $gl_cv_type_char16_t_works = no; then
GNULIBHEADERS_OVERRIDE_CHAR16_T=1
else
GNULIBHEADERS_OVERRIDE_CHAR16_T=0
fi
AC_SUBST([GNULIBHEADERS_OVERRIDE_CHAR16_T])
])
AC_DEFUN_ONCE([gl_TYPE_CHAR32_T],
[
dnl Determine whether gnulib's <uchar.h> would, if present, override char32_t.
AC_CACHE_CHECK([whether char32_t is correctly defined],
[gl_cv_type_char32_t_works],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM([[
#ifdef __HAIKU__
#include <stdint.h>
#endif
#include <uchar.h>
/* For simplicity, assume that uint32_least_t is equivalent to
'unsigned int'. */
int verify[(char32_t)(-1) >= 0 && sizeof (char32_t) == sizeof (unsigned int) ? 1 : -1];
]])
],
[gl_cv_type_char32_t_works=yes],
[gl_cv_type_char32_t_works=no])
])
if test $gl_cv_type_char32_t_works = no; then
GNULIBHEADERS_OVERRIDE_CHAR32_T=1
else
GNULIBHEADERS_OVERRIDE_CHAR32_T=0
fi
AC_SUBST([GNULIBHEADERS_OVERRIDE_CHAR32_T])
])
# gl_UCHAR_MODULE_INDICATOR([modulename])
# sets the shell variable that indicates the presence of the given module
# to a C preprocessor expression that will evaluate to 1.
# This macro invocation must not occur in macros that are AC_REQUIREd.
AC_DEFUN([gl_UCHAR_MODULE_INDICATOR],
[
dnl Ensure to expand the default settings once only.
gl_UCHAR_H_REQUIRE_DEFAULTS
gl_MODULE_INDICATOR_SET_VARIABLE([$1])
dnl Define it also as a C macro, for the benefit of the unit tests.
gl_MODULE_INDICATOR_FOR_TESTS([$1])
])
# Initializes the default values for AC_SUBSTed shell variables.
# This macro must not be AC_REQUIREd. It must only be invoked, and only
# outside of macros or in macros that are not AC_REQUIREd.
AC_DEFUN([gl_UCHAR_H_REQUIRE_DEFAULTS],
[
m4_defun(GL_MODULE_INDICATOR_PREFIX[_UCHAR_H_MODULE_INDICATOR_DEFAULTS], [
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_BTOC32])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISALNUM])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISALPHA])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISBLANK])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISCNTRL])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISDIGIT])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISGRAPH])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISLOWER])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISPRINT])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISPUNCT])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISSPACE])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISUPPER])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32ISXDIGIT])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32TOLOWER])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32TOUPPER])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32WIDTH])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32RTOMB])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32SNRTOMBS])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32SRTOMBS])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32STOMBS])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32SWIDTH])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32TOB])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32_APPLY_MAPPING])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32_APPLY_TYPE_TEST])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32_GET_MAPPING])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_C32_GET_TYPE_TEST])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBRTOC16])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBRTOC32])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSNRTOC32S])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSRTOC32S])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSTOC32S])
])
m4_require(GL_MODULE_INDICATOR_PREFIX[_UCHAR_H_MODULE_INDICATOR_DEFAULTS])
AC_REQUIRE([gl_UCHAR_H_DEFAULTS])
])
AC_DEFUN([gl_UCHAR_H_DEFAULTS],
[
dnl Assume proper GNU behavior unless another module says otherwise.
HAVE_C32RTOMB=1; AC_SUBST([HAVE_C32RTOMB])
HAVE_MBRTOC16=1; AC_SUBST([HAVE_MBRTOC16])
HAVE_MBRTOC32=1; AC_SUBST([HAVE_MBRTOC32])
REPLACE_C32RTOMB=0; AC_SUBST([REPLACE_C32RTOMB])
REPLACE_MBRTOC16=0; AC_SUBST([REPLACE_MBRTOC16])
REPLACE_MBRTOC32=0; AC_SUBST([REPLACE_MBRTOC32])
])