]> git.ipfire.org Git - thirdparty/make.git/commit
Add a UTF-8 resource when building for Windows
authorCostas Argyris <costas.argyris@gmail.com>
Mon, 19 Jun 2023 13:51:13 +0000 (09:51 -0400)
committerPaul Smith <psmith@gnu.org>
Mon, 19 Jun 2023 17:29:52 +0000 (13:29 -0400)
commitb2bf660abc4611677670b01fcbb0dc94ce2c35f7
treef09254bb6eb45e670eb5756b4f0d1741fd5ed59c
parent04f4c2b8d95e895270b612b5ea3841ee4d3dcc26
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.
.gitignore
Basic.mk.template
Makefile.am
README.git
build_w32.bat
configure.ac
mk/Windows32.mk
src/main.c
src/w32/utf8.manifest [new file with mode: 0644]
src/w32/utf8.rc [new file with mode: 0644]