emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MS-DOS port broken again


From: Eli Zaretskii
Subject: Re: MS-DOS port broken again
Date: Fri, 11 Feb 2022 09:47:59 +0200

> From: Po Lu <luangruo@yahoo.com>
> Date: Fri, 11 Feb 2022 10:24:59 +0800
> 
> After setting up a system to build the MS-DOS port automatically every
> two months (which I'm quite proud of), it's broken again:
> 
> ../lib/libgnu.a(regex.o): In function `build_wcs_buffer':
> c:/djgpp/emacs-29.0.50/lib/regex_internal.c:238: undefined reference to 
> `_mbrtowc'
> ../lib/libgnu.a(regex.o): In function `build_wcs_upper_buffer':
> c:/djgpp/emacs-29.0.50/lib/regex_internal.c:382: undefined reference to 
> `_mbrtowc'
> c:/djgpp/emacs-29.0.50/lib/regex_internal.c:385: undefined reference to 
> `_towupper'
> c:/djgpp/emacs-29.0.50/lib/regex_internal.c:390: undefined reference to 
> `_wcrtomb'
> c:/djgpp/emacs-29.0.50/lib/regex_internal.c:382: undefined reference to 
> `_mbrtowc'
> c:/djgpp/emacs-29.0.50/lib/regex_internal.c:296: undefined reference to 
> `_mbsinit'
> c:/djgpp/emacs-29.0.50/lib/regex_internal.c:312: undefined reference to 
> `_mbrtowc'
> c:/djgpp/emacs-29.0.50/lib/regex_internal.c:300: undefined reference to 
> `_towupper'
> c:/djgpp/emacs-29.0.50/lib/regex_internal.c:317: undefined reference to 
> `_towupper'
> c:/djgpp/emacs-29.0.50/lib/regex_internal.c:322: undefined reference to 
> `_wcrtomb'
> ../lib/libgnu.a(regex.o): In function `re_string_context_at':
> c:/djgpp/emacs-29.0.50/lib/regex_internal.c:916: undefined reference to 
> `_iswalnum'
> ../lib/libgnu.a(regex.o): In function `re_string_reconstruct':
> c:/djgpp/emacs-29.0.50/lib/regex_internal.c:735: undefined reference to 
> `_mbrtowc'
> ../lib/libgnu.a(regex.o): In function `re_string_skip_chars':
> c:/djgpp/emacs-29.0.50/lib/regex_internal.c:503: undefined reference to 
> `_mbrtowc'
> ../lib/libgnu.a(regex.o): In function `re_string_reconstruct':
> c:/djgpp/emacs-29.0.50/lib/regex_internal.c:755: undefined reference to 
> `_iswalnum'
> ../lib/libgnu.a(regex.o): In function `re_compile_fastmap_iter':
> c:/djgpp/emacs-29.0.50/lib/regcomp.c:309: undefined reference to `_mbrtowc'
> c:/djgpp/emacs-29.0.50/lib/regcomp.c:367: undefined reference to `_mbrtowc'
> c:/djgpp/emacs-29.0.50/lib/regcomp.c:381: undefined reference to `_wcrtomb'
> c:/djgpp/emacs-29.0.50/lib/regcomp.c:385: undefined reference to `_towlower'
> c:/djgpp/emacs-29.0.50/lib/regcomp.c:385: undefined reference to `_wcrtomb'
> c:/djgpp/emacs-29.0.50/lib/regcomp.c:309: undefined reference to `_towlower'
> c:/djgpp/emacs-29.0.50/lib/regcomp.c:309: undefined reference to `_wcrtomb'
> ../lib/libgnu.a(regex.o): In function `peek_token':
> c:/djgpp/emacs-29.0.50/lib/regcomp.c:1892: undefined reference to `_iswalnum'
> c:/djgpp/emacs-29.0.50/lib/regcomp.c:1781: undefined reference to `_iswalnum'
> ../lib/libgnu.a(regex.o): In function `parse_byte':
> c:/djgpp/emacs-29.0.50/lib/regcomp.c:2627: undefined reference to `_btowc'
> ../lib/libgnu.a(regex.o): In function `build_charclass':
> c:/djgpp/emacs-29.0.50/lib/regcomp.c:3481: undefined reference to `_wctype'
> ../lib/libgnu.a(regex.o): In function `re_compile_internal':
> c:/djgpp/emacs-29.0.50/lib/regcomp.c:873: undefined reference to `_btowc'
> ../lib/libgnu.a(regex.o): In function `check_node_accept_bytes':
> c:/djgpp/emacs-29.0.50/lib/regexec.c:3713: undefined reference to `_iswctype'
> 
> It seems as if gnulib gained a hard dependency on mbrtowc, towupper, and
> other related functions.

AFAIR, Gnulib tossed support for DJGPP long ago.

> The rest of these functions can be defined as macros, but I have no idea
> what to do with mbrtowc, nor can I find any documentation on the format
> of shift state accepted by DJGPP.

DJGPP doesn't support multibyte characters, so you should be able to
write a trivial macro to use mbtowc instead of mbrtowc, and similarly
for other "stateful" conversion functions.  IOW, the mbstate argument
to any of these functions has no meaning in DJGPP, and can be freely
ignored (which is why you didn't find any documentation of its
internal format).  The mbstate structure is declared in the DJGPP
headers, but that's just a formality (and nice to have to compile
sources which reference it).

As to where to put these macros: since Gnulib includes src/config.h,
and src/config.h includes src/conf_post.h, I would place these macros
in the MSDOS section of conf_post.h.

Thanks.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]