Hi Helge,

I checked what happened in MSYS2 and this looks like a bug in the widl tool.

I looked into the widl source code and think that it detects the default
include path incorrectly.

During build of widl tool the corresponding variable receive incorrect
value:
`BIN_TO_INCLUDEDIR = ../x86_64-w64-mingw32/include` but should be
`BIN_TO_INCLUDEDIR = ../include`. Looks like a package mismatch,
because the `/ming64/x86_64-w64-mingw32` directory exist
but contains only few libs and no any include files.

So I agreed with Marc-André. I think this bug should be fixed in MSYS2.
I think you can report this issue there
https://github.com/msys2/MINGW-packages/issues

When I checked the build using cross-compilation from Linux,
the widl tool uses proper BIN_TO_INCLUDEDIR.

We should add the rule that qga_vss depends on gen_tlb to get this error
more visible.

Marc-André, what do you think?

Best Regards,
Konstantin Kostiuk.


On Mon, Apr 18, 2022 at 11:15 AM Marc-André Lureau <
[email protected]> wrote:

> Hi Helge
>
> On Sun, Apr 17, 2022 at 6:51 PM Helge Konetzka <[email protected]> wrote:
>
>> Generation with widl needs to be triggered explicitly and requires
>> library and include directories containing referenced *.idl and *.tlb
>> as parameters.
>>
>
> Ok, that's different issues, it would help to split the patch.
>
>
>>
>> Signed-off-by: Helge Konetzka <[email protected]>
>> ---
>>
>> For tested Msys2 build all referenced resources reside in /<usr>/include.
>> Msys2 provides its flavours in different /<usr> bases.
>>
>> This patch derives the missing include directory path from widl path.
>> Assuming the given widl path is /<usr>/bin/widl, it determines /<usr>
>> as base and appends /<usr>/include as include and library directories
>> to widl command. This way the directory is correct for any Msys2
>> flavour.
>> It makes sure, only existing directories are appended as parameter.
>>
>
> I would file a bug to msys2 instead for widl to use the default include
> directory. Otherwise, every widl user out there needs to be adjusted.
> (I think it would need a special --with-widl-includedir=DIR, given how
> msys2 remaps directory)
>
>
>> ---
>>   qga/vss-win32/meson.build | 11 +++++++++--
>>   1 file changed, 9 insertions(+), 2 deletions(-)
>>
>> diff --git a/qga/vss-win32/meson.build b/qga/vss-win32/meson.build
>> index 71c50d0866..51539a582c 100644
>> --- a/qga/vss-win32/meson.build
>> +++ b/qga/vss-win32/meson.build
>> @@ -30,9 +30,16 @@ if midl.found()
>>                             input: 'qga-vss.idl',
>>                             output: 'qga-vss.tlb',
>>                             command: [midl, '@INPUT@', '/tlb', '@OUTPUT@
>> '])
>> -else
>> +elif widl.found()
>> +  widl_cmd = [widl, '-t', '@INPUT@', '-o', '@OUTPUT@']
>> +  usr_include = fs.parent(fs.parent(widl.full_path()))/'include'
>> +  if fs.is_dir(usr_include)
>> +    widl_cmd += ['-L', usr_include]
>> +    widl_cmd += ['-I', usr_include]
>> +  endif
>>     gen_tlb = custom_target('gen-tlb',
>>                             input: 'qga-vss.idl',
>>                             output: 'qga-vss.tlb',
>> -                          command: [widl, '-t', '@INPUT@', '-o',
>> '@OUTPUT@'])
>> +                          build_by_default: true,
>>
>
> I would make qga_vss depend on gen_tlb instead (so the tlb is always built
> with the dll)
>
> thanks
>
> --
> Marc-André Lureau
>

Reply via email to