[PATCH 3/4] winegcc: Search additional arch subdir to lib dirs when cross compiling to PE targtes.
Jacek Caban
jacek at codeweavers.com
Tue Apr 6 09:58:49 CDT 2021
On 4/6/21 1:58 PM, Alexandre Julliard wrote:
> Jacek Caban <jacek at codeweavers.com> writes:
>
>> @@ -635,6 +635,21 @@ static const char *get_multiarch_dir( enum target_cpu cpu )
>> }
>> }
>>
>> +static const char *get_pe_arch_dir( enum target_cpu cpu )
>> +{
>> + switch(cpu)
>> + {
>> + case CPU_x86: return "/i386";
>> + case CPU_x86_64: return "/x86_64";
>> + case CPU_ARM: return "/arm";
>> + case CPU_ARM64: return "/aarch64";
>> + case CPU_POWERPC: return "/powerpc";
>> + default:
>> + assert(0);
>> + return NULL;
>> + }
>> +}
>
> I'm wondering if we shouldn't put everything into arch-specific subdirs,
> for generic cross-compilation support, and for 32on64 where we can't
> rely on the host multi-arch support.
>
> Maybe something like /i686-linux-gnu for .so and .def files, and
> /i686-w64-mingw32 for PE dlls and import libs?
I was mostly concerned about PE side of things and my understanding is
that for 32on64 it would be enough to move PE files to /i*86*. For PE
files, only CPU arch really matters so I thought it's better to just
skip the rest. For example, we currently use i686-windows for clang msvc
target and I think that it should use the same location for PE files as
mingw target. (Sharing importlibs and static libs between PE targets is
more tricky, but I think that it should work for what we need - or at
least it's worth a try to allow that).
For generic cross compilation, moving non-PE parts to something like
/i686-linux-gnu sounds good to me. Maybe we could just uniform all PE
targets to something generic like /i686-pe?
Thanks,
Jacek
More information about the wine-devel
mailing list