mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 13:54:21 +00:00
When determining the type of RC compiler, meson passes `/?` or `--version` and then reads from `stdout` looking for particular string(s) anywhere in the output. So, by adding the string "Microsoft Resource Compiler" to the `/?` output, meson will recognize `zig rc` as rc.exe and give it the correct options, which works fine since `zig rc` is drop-in CLI compatible with rc.exe. This allows using `zig rc` with meson for (cross-)compiling, by either: - Setting WINDRES="zig rc" or putting windres = ['zig', 'rc'] in the cross-file + This will work like rc.exe, so it will output .res files. This will only link successfully if you are using a linker that can do .res -> .obj conversion (so something like zig cc, MSVC, lld) - Setting WINDRES="zig rc /:output-format coff" or putting windres = ['zig', 'rc', '/:output-format', 'coff'] in the cross-file + This will make meson pass flags as if it were rc.exe, but it will cause the resulting .res file to actually be a COFF object file, meaning it will work with any linker that handles COFF object files Example cross file that uses `zig cc` (which can link `.res` files, so `/:output-format coff` is not necessary) and `zig rc`: ``` [binaries] c = ['zig', 'cc', '--target=x86_64-windows-gnu'] windres = ['zig', 'rc'] [target_machine] system = 'windows' cpu_family = 'x86_64' cpu = 'x86_64' endian = 'little' ``` |
||
|---|---|---|
| .. | ||
| ani.zig | ||
| ast.zig | ||
| bmp.zig | ||
| cli.zig | ||
| code_pages.zig | ||
| comments.zig | ||
| compile.zig | ||
| cvtres.zig | ||
| disjoint_code_page.zig | ||
| errors.zig | ||
| ico.zig | ||
| lang.zig | ||
| lex.zig | ||
| literals.zig | ||
| main.zig | ||
| parse.zig | ||
| preprocess.zig | ||
| rc.zig | ||
| res.zig | ||
| source_mapping.zig | ||
| utils.zig | ||
| windows1252.zig | ||