building i686 wine rpm's on fedora revisted, bug found, etc

Esme Povirk (she/they) esme at codeweavers.com
Wed Jun 29 11:01:49 CDT 2022


windowscodecs doesn't have a unixlib anymore, it's all PE.

On Tue, Jun 28, 2022 at 12:51 PM Hin-Tak Leung
<htl10 at users.sourceforge.net> wrote:
>
> Hi,
>
> I posted a a few weeks ago about "Having problems (re-)building i686 wine staging rpm's on fedora" on 7.10. Since 7.11 is out, so I gave it a proper go again with all of fedora's shipping mingw32 packages. Long story short, I think I found the problems, so here they are, mainly two issues:
>
> *- In wine's code, there are two directories, "dlls/gphoto2.ds/" and "dlls/windowscodecs/" which tries to build both unix-y bits and PE-y bits. And they have {TIFF,JPEG,...}_PE_CFLAGS feeding to both the unix-y and PE-y bits. I think this is a wine code bug - *_PE_CFLAGS should only be passed to the cross-compiler.
>
> - first part of my work-around is simply to delete those lines from "dlls/gphoto2.ds/Makefile.in" "dlls/windowscodecs/Makefile.in" . Since fedora's mingw libjpeg, libtiff, etc are all found normally under its cross-compiler's mingw root without needing special flags.
>
> *- "mingw32-pkg-config --cflags libjpeg " etc reports wrong settings at "-I/usr/include" (instead of mingw32 root) on fedora.
>
> - 2nd part of my work-around is to explicitly set these (since ming32-pkg-config report wrong):
>
> PNG_PE_CFLAGS=-I/usr/i686-w64-mingw32/sys-root/mingw/include/
> LCMS2_PE_CFLAGS=-I/usr/i686-w64-mingw32/sys-root/mingw/include/
> ZLIB_PE_CFLAGS=-I/usr/i686-w64-mingw32/sys-root/mingw/include/
> JPEG_PE_CFLAGS=-I/usr/i686-w64-mingw32/sys-root/mingw/include/
> TIFF_PE_CFLAGS=-I/usr/i686-w64-mingw32/sys-root/mingw/include/
> XML2_PE_CFLAGS=-I/usr/i686-w64-mingw32/sys-root/mingw/include/libxml2/
> XSLT_PE_CFLAGS=-I/usr/i686-w64-mingw32/sys-root/mingw/include/libxml2/
>
>
> The combination of the two issues causes mingw msvcrt headers being used with the native compiler (straight-forward failure), and native glibc headers being used via *_PE_FLAGS="-I/usr/include" when cross-compiling, and have funny issues about time64 being the wrong type during configure, type of "boolean" conflicting, etc in a few places.
>
>
>
> Anyway,
>
> "dlls/gphoto2.ds/Makefile.in" "dlls/windowscodecs/Makefile.in" in wine should be updated to split unix-y and PE-y parts and only feed *_FE_CFLAGS to building the PE-y parts. This is a wine code bug needed fixing, I think.
>
>
> Thanks for everybody working on wine all these years.
>
> Regards,
> Hin-Tak
>



More information about the wine-devel mailing list