On 12/11/25 1:52 AM, Peter Damianov wrote:
This patch adds support for compiling Windows resource files
(.rc) and pre-compiled resource files (.res) directly through the
GCC driver on PECOFF targets.

Previously, users had to manually invoke windres to compile resource
files before linking:

     windres -o resource.o resource.rc
     gcc main.c resource.o -o program.exe

With this patch, GCC can handle resource files automatically:

     gcc main.c resource.rc -o program.exe
     gcc main.c resource.res -o program.exe

Now, for an explanation of each line of the spec:

If any of -E -M or -MM were passed, do nothing. No object files are output.
     "%{!E:%{!M:%{!MM:windres

Add -J so that windres does not perform autodetection of input type
Add -O so that the output type is always COFF
      -J rc -O coff \

For multilib configurations, tell windres to write out the correct COFF format.
- If -m32 is specified, use pe-i386 format
- If -m64 is specified, use pe-x86_64 format
- If neither are specified, use the correct default for the target

This is defined in WINDRES_FORMAT_SPEC which expands to:
   For 64-bit: "%{m32:-F pe-i386;m64|!m32:-F pe-x86-64}"
   For 32-bit: "%{m64:-F pe-x86-64;m32|!m64:-F pe-i386}"

Pass through -I -D -U on to windres, because it supports them.
     %{I*:-I%*} %{D*:-D%*} %{U*:-U%*} \

If -c is passed, pass through -o to windres, if it was specified. Otherwise,
  output to the input basename with .o suffix. Else, output to a
  temp file that will be deleted after linking.
     %{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O} %i}}}",

gcc/ChangeLog:

         PR driver/108866
         * gcc.cc (default_compilers): Add EXTRA_DEFAULT_COMPILERS so the config
         of a target can add an extra compiler spec to default_compilers.
         * config/i386/cygming.h (WINDRES_FORMAT_SPEC): New macro to handle
         PE format selection based on TARGET_64BIT_DEFAULT and -m32/-m64 flags.
         (EXTRA_DEFAULT_COMPILERS): Add spec for windres.
         * config/aarch64/cygming.h (EXTRA_DEFAULT_COMPILERS): Likewise.

Signed-off-by: Peter Damianov <[email protected]>

Thanks, pushed to master branch.

Reply via email to