Message ID | 1315756545-25630-1-git-send-email-weil@mail.berlios.de |
---|---|
State | Superseded |
Headers | show |
On 11 September 2011 16:55, Stefan Weil <weil@mail.berlios.de> wrote: > --- /dev/null > +++ b/scripts/cross-pkg-config > @@ -0,0 +1,22 @@ > +#!/bin/sh Missing "-e" > + > +# This script provides a cross pkg-config for QEMU cross compilations. > +# It will use the standard pkg-config with special options for the > +# cross environment which is assumed to be in /usr/{cross-prefix}. Missing copyright and license. > +basename=`basename $0` Insufficient quoting (gives wrong answer if the script is in a path with a space in and is executed via $PATH or an absolute path). > +prefix=/usr/`echo $basename|sed s/-pkg-config//` You can do this with shell substring manipulation. > +PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig Missing quoting. > +export PKG_CONFIG_LIBDIR Posix allows export name=value so you can combine this with the above. > +exec pkg-config --define-variable=prefix=$prefix $@ Missing quoting. Try: basename="$(basename "$0")" prefix="/usr/${basename%-pkg-config}" export PKG_CONFIG_LIBDIR="$prefix/lib/pkgconfig" exec pkg-config --define-variable=prefix="$prefix" "$@" -- PMM
On 09/11/2011 05:55 PM, Stefan Weil wrote: > This script can be used for cross compilations. > I use it on Debian / Ubuntu to provide a cross pkg-config > for MinGW (32 and 64 bit), ARM, MIPS and PowerPC. I think the lack of such script is a bug in your distro. Fedora provides /usr/bin/i686-pc-mingw32-pkg-config. You should report a bug with Debian. Paolo
Am 11.09.2011 20:25, schrieb Paolo Bonzini: > On 09/11/2011 05:55 PM, Stefan Weil wrote: >> This script can be used for cross compilations. >> I use it on Debian / Ubuntu to provide a cross pkg-config >> for MinGW (32 and 64 bit), ARM, MIPS and PowerPC. > > I think the lack of such script is a bug in your distro. Fedora > provides /usr/bin/i686-pc-mingw32-pkg-config. You should report a bug > with Debian. > > Paolo Well, Redhat has a large interest in QEMU, so I assume that Fedora is better prepared for cross compilations than most other distributions. Does it also provide cross glib-2.0, sdl, zlib, ...? How does it implement cross pkg-config? As a binary compiled from source, or as a script using native pkg-config? Debian has only very limited cross development support. Most cross packages I use come from Emdebian. I doubt that they have the manpower to do more than they already do. As far as I know, they don't provide any cross package which needs a cross pkg-config, so the missing cross pkg-config is not really a bug... How about other distributions? Are there others beside Fedora with good cross dev support? Some large embedded projects still build their own cross toolchain instead of using precompiled binaries. For all those which don't have a cross pkg-config, the script saves the time and memory needed for building it. Stefan
On 09/11/2011 08:47 PM, Stefan Weil wrote: > Well, Redhat has a large interest in QEMU, so I assume that Fedora > is better prepared for cross compilations than most other distributions. Why are the two related? :) Fedora's cross compilation machinery is indeed used by Red Hat for some virt-related stuff, but not for QEMU even though I used it successfully for it. In fact, Fedora-mingw32 started as a special interest group entirely outside Red Hat. > Does it also provide cross glib-2.0, sdl, zlib, ...? Yes. > How does it implement cross pkg-config? As a binary compiled from source, > or as a script using native pkg-config? It's a script doing basically PKG_CONFIG_LIBDIR="/usr/i686-pc-mingw32/sys-root/mingw/lib/pkgconfig:/usr/i686-pc-mingw32/sys-root/mingw/share/pkgconfig" pkg-config "$@" > How about other distributions? Are there others beside Fedora > with good cross dev support? Some large embedded projects still build > their own cross toolchain instead of using precompiled binaries. > For all those which don't have a cross pkg-config, the script > saves the time and memory needed for building it. Yes, I agree. However, I still think it's better to prepare documentation about how to cross compile (including fetching dependencies etc.), and embed the script in the document. Paolo
diff --git a/scripts/cross-pkg-config b/scripts/cross-pkg-config new file mode 100755 index 0000000..a5f839b --- /dev/null +++ b/scripts/cross-pkg-config @@ -0,0 +1,22 @@ +#!/bin/sh + +# This script provides a cross pkg-config for QEMU cross compilations. +# It will use the standard pkg-config with special options for the +# cross environment which is assumed to be in /usr/{cross-prefix}. + +# Installation (Debian and similar distributions): +# Simply copy or link it to /usr/bin/{cross-prefix}-pkg-config. + +# Examples (Debian, Ubuntu): +# /usr/bin/amd64-mingw32msvc-pkg-config +# /usr/bin/i586-mingw32msvc-pkg-config +# /usr/bin/arm-linux-gnueabi-pkg-config +# /usr/bin/mipsel-linux-gnu-pkg-config + +basename=`basename $0` +prefix=/usr/`echo $basename|sed s/-pkg-config//` +PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig +export PKG_CONFIG_LIBDIR +exec pkg-config --define-variable=prefix=$prefix $@ + +# end
This script can be used for cross compilations. I use it on Debian / Ubuntu to provide a cross pkg-config for MinGW (32 and 64 bit), ARM, MIPS and PowerPC. Signed-off-by: Stefan Weil <weil@mail.berlios.de> --- scripts/cross-pkg-config | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-) create mode 100755 scripts/cross-pkg-config