Re: [PATCH 4/4] scripts: allow building USB loader tools for target as well
From: Ahmad Fatoum <a.fatoum@pengutronix.de>
Date: 2021-09-15 10:25:41
On 15.09.21 11:38, Trent Piepho wrote:
On Wed, Sep 15, 2021 at 1:50 AM Ahmad Fatoum [off-list ref] wrote:quoted
On 14.09.21 21:11, Trent Piepho wrote:quoted
On Tue, Sep 14, 2021 at 6:21 AM Ahmad Fatoum [off-list ref] wrote:quoted
Users can override it as necessary, for example, with Yocto, pkg-config will be for the cross environment, so target tools can now be built with:I just added support to Buildroot for building imx-usb-loader from Barebox, since it's nicer than the standalone version of the program. Since pkgconfig was only used for host tools, I didn't need to make both host and target pkgconfig work. But of course that will no longer be true after this patch.It still wouldn't break your workflow, imx-usb-loader wasn't built for target so far.But it wouldn't work for anyone who wanted both the host and target versions.
You have two options:
- provide ${CROSS_COMPILE}pkg-config that calls your wrapper that has
the necessary options set
- export CROSS_PKG_CONFIG="YOUR_ENV_VARS pkg-config"
quoted
quoted
There is a problem with only supplying CROSS_PKG_CONFIG. To get both host and target pkgconfig to work, I also need to supply the env variables used by pkgconfig, PKG_CONFIG_SYSROOT and PKG_CONFIG_LIBDIR.You can set these on the environment before starting barebox build. If you have a $(CROSS_COMPILE)pkg-config that doesn't need any further configuration, you can use that.The problem is they need different values for the target and for the host version of the package config. The way you have done this it is only possible for there to be one value that is used both when the host version is called and the same values when the cross pkg-config is called.
The example in the commit message is one way to do it with Yocto. You could still build both host and target tools in the same go.
quoted
quoted
The former makes the paths returned by pkgconfig correct and the latter controls which set, target or host, of .pc files will be used. Maybe something like this in the Makefile: CROSS_PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config CROSS_PKG_CONFIG_SYSROOT ?= $(PKG_CONFIG_SYSROOT) CROSS_PKG_CONFIG_LIBDIR ?= $(PKG_CONFIG_LIBDIR) CROSS_PKG_CONFIG_ENV := \ PKG_CONFIG_LIBDIR=$(CROSS_PKG_CONFIG_LIBDIR) \ PKG_CONFIG_SYSROOT=$(CROSS_PKG_CONFIG_SYSROOT) HOST_LIBUSB_CFLAGS := $(shell $(PKG_CONFIG) --cflags) CROSS_LIBUSB_CFLAGS := $(shell $(CROSS_PKG_CONFIG_ENV) $(CROSS_PKG_CONFIG) --cflags) Then use those everywhere someone wants the libusb cflags. Repeat for LDFLAGS.I am not really sold on this. Linux doesn't mess with PKG_CONFIG_ variables either. For perf the assume $(CROSS_COMPILE)pkg-config to be available. I think it's a suitbale default for us too. The lines above can go into a shell script wrapper.Linux allows you to build the tools individually, e.g. for tmon we have this: make -C $(LINUX_DIR)/tools CC=$(TARGET_CC) PKG_CONFIG_PATH=$(STAGING_DIR)/usr/lib/pkgconfig tmon Can Barebox build do this? This way there are multiple make calls, with different options, to build a kernel for the target, dtc for the host, tmon for the target, and so on.
I don't need this flexibility. I am fine with changing the config if only specific applications sohuld be built.
So Linux build may not be an ideal pattern to copy. It can not build a tool for both host and target in one build.
And barebox can do this now. So all good?
quoted
quoted
You'll get fewer repeated invocations of pkg-config this way too.Ye, I thought about that as well, but we do it like this for the host tools, so I left it for now. It's not much overhead and it makes it a bit easier to follow what is used.It looks like Linux build assigns pkg-config output to a variable in every instance but dtc's build. I think the existing Barebox makefiles are just a bit sloppy in how they call pkg-config.
Send patches? Cheers, Ahmad -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox