On Fri, Apr 28, 2023 at 02:22:40PM +0200, Florian Weimer wrote:
Looking at
Information for RPM mingw64-zlib-1.2.13-2.fc38.noarch.rpm
<
https://koji.fedoraproject.org/koji/rpminfo?rpmID=33118048>
sysroot paths look like this:
/usr/x86_64-w64-mingw32/sys-root/mingw/bin/zlib1.dll
/usr/x86_64-w64-mingw32/sys-root/mingw/include/zconf.h
/usr/x86_64-w64-mingw32/sys-root/mingw/include/zlib.h
/usr/x86_64-w64-mingw32/sys-root/mingw/lib/libz.dll.a
/usr/x86_64-w64-mingw32/sys-root/mingw/lib/pkgconfig/zlib.pc
Is the /mingw/ part of the sysroot path, or is it within the sysroot?
Would I use --sysroot=/usr/x86_64-w64-mingw32/sys-root or
--sysroot=/usr/x86_64-w64-mingw32/sys-root/mingw to build against the
sysroot?
I assumed the latter, but now I wonder if /mingw in the sysroot is the
analogue of /usr in GNU/Linux sysroots.
FWIW:
$ x86_64-w64-mingw32-gcc -print-sysroot
/usr/x86_64-w64-mingw32/sys-root
which would indicate that you are correct that /mingw is somehow
"inside" the sysroot.
However I have no idea about what the correct sysroot should be, just
that what we have now works and changing it would be a massive PITA so
I wouldn't want us to do it without very good reasons.
Rich.
Eventually, we want to produce some GNU/Linux sysroots. I picked
/usr/%{_arch}-redhat-linux/sys-root/fc%{fedora}
or (depending on the operating system)
/usr/%{_arch}-redhat-linux/sys-root/el%{rhel}
or (as the fallback)
/usr/%{_arch}-redhat-linux/sys-root/root
and we have /usr inside the sysroot, e.g. <stdio.h> is
/usr/x86_64-redhat-linux/sys-root/fc35/usr/include/stdio.h
in a Fedora 35 sysroot on x86-64 (although the Fedora 35 update with
this never actually went out). We essentially use the /mingw/ part as
an OS ABI version indicator, to make the different versions
co-installable.
I want to pick this up again and would like to solicit comments if that
OS ABI variant thing is the right approach, or if we should drop it.
Sysroot packages are by nature relocatable, and do not have to be
installed in /, so it's perhaps not a great loss if their version
variants are not co-installable.
We need something like this before we can drop i686 on ELN; it's only
way to enable -m32 in GCC in a sustainable fashion. But we don't need
OS ABI variants for that.
Thanks,
Florian
--
Richard Jones, Virtualization Group, Red Hat
http://people.redhat.com/~rjones
Read my programming and virtualization blog:
http://rwmj.wordpress.com
virt-builder quickly builds VMs from scratch
http://libguestfs.org/virt-builder.1.html