Use Gnulib regex for lib-src
Emacs regular expressions forked from everyone else long ago.
This makes it official and should allow simplification later.
etags.c now uses the glibc regex API, falling back on a
Gnulib-supplied substitute lib/regex.c if necessary.
Emacs proper now uses its own regular expression module.
Although this patch may look dauntingly large, most of it
was generated automatically by admin/merge-gnulib
and contains an exact copy of the glibc regex source,
and the by-hand changes do not grow the Emacs source code.
* admin/merge-gnulib (GNULIB_MODULES): Add regex.
(AVOIDED_MODULES): Add btowc, langinfo, lock, mbrtowc, mbsinit,
nl_langinfo, wchar, wcrtomb, wctype-h.
* lib-src/Makefile.in (regex-emacs.o): Remove; Gnulib does it now.
(etags_deps, etags_libs): Remove regex-emacs.o.
* lib-src/etags.c: Go back to including regex.h.
(add_regex): Use unsigned char translation array,
since glibc regex requires that.
* lib/Makefile.in (not_emacs_OBJECTS, for_emacs_OBJECTS): New macros.
(libegnu_a_OBJECTS): Use them, to avoid building e-regex.o.
* lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
* lib/regcomp.c, lib/regex.c, lib/regex.h, lib/regex_internal.c:
* lib/regex_internal.h, lib/regexec.c, m4/builtin-expect.m4:
* m4/eealloc.m4, m4/glibc21.m4, m4/mbstate_t.m4, m4/regex.m4:
New files, copied from Gnulib.
* src/regex-emacs.h, src/conf_post.h:
(RE_TRANSLATE_TYPE, RE_TRANSLATE, RE_TRANSLATE_P):
Move from src/conf_post.h to src/regex-emacs.h,
so that they don’t interfere with compiling lib/regex.c.
2018-08-06 01:41:20 +00:00
|
|
|
dnl Check for __builtin_expect.
|
|
|
|
|
2020-01-01 00:19:43 +00:00
|
|
|
dnl Copyright 2016-2020 Free Software Foundation, Inc.
|
Use Gnulib regex for lib-src
Emacs regular expressions forked from everyone else long ago.
This makes it official and should allow simplification later.
etags.c now uses the glibc regex API, falling back on a
Gnulib-supplied substitute lib/regex.c if necessary.
Emacs proper now uses its own regular expression module.
Although this patch may look dauntingly large, most of it
was generated automatically by admin/merge-gnulib
and contains an exact copy of the glibc regex source,
and the by-hand changes do not grow the Emacs source code.
* admin/merge-gnulib (GNULIB_MODULES): Add regex.
(AVOIDED_MODULES): Add btowc, langinfo, lock, mbrtowc, mbsinit,
nl_langinfo, wchar, wcrtomb, wctype-h.
* lib-src/Makefile.in (regex-emacs.o): Remove; Gnulib does it now.
(etags_deps, etags_libs): Remove regex-emacs.o.
* lib-src/etags.c: Go back to including regex.h.
(add_regex): Use unsigned char translation array,
since glibc regex requires that.
* lib/Makefile.in (not_emacs_OBJECTS, for_emacs_OBJECTS): New macros.
(libegnu_a_OBJECTS): Use them, to avoid building e-regex.o.
* lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
* lib/regcomp.c, lib/regex.c, lib/regex.h, lib/regex_internal.c:
* lib/regex_internal.h, lib/regexec.c, m4/builtin-expect.m4:
* m4/eealloc.m4, m4/glibc21.m4, m4/mbstate_t.m4, m4/regex.m4:
New files, copied from Gnulib.
* src/regex-emacs.h, src/conf_post.h:
(RE_TRANSLATE_TYPE, RE_TRANSLATE, RE_TRANSLATE_P):
Move from src/conf_post.h to src/regex-emacs.h,
so that they don’t interfere with compiling lib/regex.c.
2018-08-06 01:41:20 +00:00
|
|
|
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 Written by Paul Eggert.
|
|
|
|
|
|
|
|
AC_DEFUN([gl___BUILTIN_EXPECT],
|
|
|
|
[
|
|
|
|
AC_CACHE_CHECK([for __builtin_expect],
|
|
|
|
[gl_cv___builtin_expect],
|
|
|
|
[AC_LINK_IFELSE(
|
|
|
|
[AC_LANG_SOURCE([[
|
|
|
|
int
|
|
|
|
main (int argc, char **argv)
|
|
|
|
{
|
|
|
|
argc = __builtin_expect (argc, 100);
|
|
|
|
return argv[argc != 100][0];
|
|
|
|
}]])],
|
|
|
|
[gl_cv___builtin_expect=yes],
|
|
|
|
[AC_LINK_IFELSE(
|
|
|
|
[AC_LANG_SOURCE([[
|
|
|
|
#include <builtins.h>
|
|
|
|
int
|
|
|
|
main (int argc, char **argv)
|
|
|
|
{
|
|
|
|
argc = __builtin_expect (argc, 100);
|
|
|
|
return argv[argc != 100][0];
|
|
|
|
}]])],
|
|
|
|
[gl_cv___builtin_expect="in <builtins.h>"],
|
|
|
|
[gl_cv___builtin_expect=no])])])
|
|
|
|
if test "$gl_cv___builtin_expect" = yes; then
|
|
|
|
AC_DEFINE([HAVE___BUILTIN_EXPECT], [1])
|
|
|
|
elif test "$gl_cv___builtin_expect" = "in <builtins.h>"; then
|
|
|
|
AC_DEFINE([HAVE___BUILTIN_EXPECT], [2])
|
|
|
|
fi
|
|
|
|
AH_VERBATIM([HAVE___BUILTIN_EXPECT],
|
|
|
|
[/* Define to 1 if the compiler supports __builtin_expect,
|
|
|
|
and to 2 if <builtins.h> does. */
|
|
|
|
#undef HAVE___BUILTIN_EXPECT
|
|
|
|
#ifndef HAVE___BUILTIN_EXPECT
|
|
|
|
# define __builtin_expect(e, c) (e)
|
|
|
|
#elif HAVE___BUILTIN_EXPECT == 2
|
|
|
|
# include <builtins.h>
|
|
|
|
#endif
|
|
|
|
])
|
|
|
|
])
|