mirror of
https://github.com/mirror/make.git
synced 2026-09-05 22:25:00 +08:00
Add a UTF-8 resource when building for Windows
If a resource compiler is available, use it to add a UTF-8 resource to the GNU Make executable on Windows. As a result, GNU Make will use UTF-8 as its ANSI code page, enabling it to work with UTF-8 encoded Makefiles, understand UTF-8 paths passed to it, etc. These build process changes apply to all 3 ways that GNU Make can be built for Windows: 1) configure 2) Basic.mk 3) build_w32.bat When building with Visual Studio the resource compiler should always be available. When building with GCC or TCC, it depends on the availability of 'windres'. If a resource compiler is not available, don't fail the build but just proceed without the UTF-8 resource, effectively ignoring this feature. The UTF-8 resource only has an effect when GNU Make is running on a minimum target version of Windows Version 1903 (May 2019 Update). When the built GNU Make is running on an earlier version of Windows, the embedded UTF-8 resource has no effect. Code page information is added to --version output to tell users what code pages are being used by any combination of GNU Make build (with or without the UTF-8 resource) and Windows version that GNU Make is running on (earlier than 1903 or not). * README.git: Fix a typo. * configure.ac: Search for windres and set WINDRES / HAVE_WINDRES. * Makefile.am: Add manifest and resource files to EXTRA_DIST and add a windres invocation to build them. * build_w32.bat: Add support to build resource files. * src/main.c (print_version): Add codepage info to Windows output. * src/w32/utf8.manifest: Add a windres manifest file. * src/w32/utf8.rc: Add a windres resource file. * Basic.mk.template: Add support for building resource files. * mk/Windows32.mk: Support windres resource files. * .gitignore: Ignore TCC output directories.
This commit is contained in:
committed by
Paul Smith
parent
04f4c2b8d9
commit
b2bf660abc
@@ -3708,6 +3708,11 @@ print_version (void)
|
||||
printf (_("%sBuilt for %s (%s)\n"),
|
||||
precede, make_host, remote_description);
|
||||
|
||||
#if MK_OS_W32
|
||||
printf (_("%sANSI code page: %u\n"), precede, GetACP ());
|
||||
printf (_("%sConsole code page: %u\n"), precede, GetConsoleOutputCP ());
|
||||
#endif
|
||||
|
||||
/* Print this untranslated. The coding standards recommend translating the
|
||||
(C) to the copyright symbol, but this string is going to change every
|
||||
year, and none of the rest of it should be translated (including the
|
||||
|
||||
8
src/w32/utf8.manifest
Normal file
8
src/w32/utf8.manifest
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<application>
|
||||
<windowsSettings>
|
||||
<activeCodePage xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">UTF-8</activeCodePage>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
</assembly>
|
||||
3
src/w32/utf8.rc
Normal file
3
src/w32/utf8.rc
Normal file
@@ -0,0 +1,3 @@
|
||||
#include <winuser.h>
|
||||
|
||||
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "utf8.manifest"
|
||||
Reference in New Issue
Block a user