Ninja: Fix support for MSVC with non-English output
With MSVC the Ninja generator extracts the
cl -showIncludes prefix.
When MSVC is configured to have non-English output, e.g. via
VSLANG=2052 in the environment, then
cl prints the prefix encoded
for the current code page, which is not necessarily UTF-8 encoding.
Currently we fail to convert the prefix to our internal UTF-8 encoding,
but assume it is UTF-8 later.
rules.ninja, the Ninja generator converts our internal
UTF-8 encoding to the current code page. The
msvc_deps_prefix = line
needs to be encoded as the current code page so that
ninja can match
in the output from
cl -showIncludes during the build.
Prior to !891 (merged), the non-UTF-8 prefix extracted above was
written without noticing its incorrect internal encoding. The
rules.ninja file was successfully written, but possibly with a mangled
msvc_deps_prefix. Since that commit the output stream correctly
rejects the non-UTF-8 byte sequence and writing
Fix this by correctly converting the
cl -showIncludes output from the
current code page to our internal UTF-8 encoding.
Fixes: #17191 (closed)