
Wolfgang Denk skrev:
Dear Ulf Samuelsson,
In message 4A843392.4020800@atmel.com you wrote:
Many packages support installing the resulting binary in another location, but U-Boot does not.
When you use buildsystems like buildroot and openembedded, you want to collect the end result in a target directory, and while you can use internal knowledge about u-boot to do so, it seems cleaner to me, to do a "make DESTDIR install".
Did you consider using out-of-tree builds for that?
This still means that the external buildsystem need to know the internals of u-boot.
It must know that the binary is called u-boot.bin and where it is located (topdir).
Since you may want to put the binaries for several boards in the same directory (like /tftpboot)
There is nothing to stop me calling u-boot with
make DESTDIR=/tftpboot/$(MACHINE) TARGET=$(MACHINE)-u-boot-$(U_BOOT_VERSION)-$(REVISION).bin install
In my experience this is not exactly a lucky choice; if youu have to maintain more than just a few boards, you definitely want to have a subdirectory per board in /tftpboot.
it is not always good to call the binary simply u-boot.bin.
...which then is not problem any more.
If you maintain just a couple of boards, then it is inconvenient to have a subdirectory. If the tftp command in u-boot would fetch from that subdirectory automatically, then it would be less of a pain.
I guess "make DESTDIR=<destination> TARGET=<name> install" would work
Alternatively, we collect the final binary from several variables,
One question remains: what is "the final binary"? for example, for the "kilauea" board it may be "u-boot.bin" (when booting from NOR flash), but it might also be "u-boot-nand.bin" (when booting from NOR flash). Oh, and board "foo" uses not the binary image, but the S-Record file in their factory installer, so we use "u-boot.srec". Another board requires am Intel hex image, so they build "u-boot.hex". For the Marvell processors, we will use a special image format, so it's "u-boot.kwb". BlackFin uses some similar mechanism, but a different name, IIRC.
I am happy with u-boot.bin as a default, but there is nothing stopping you from adding more parameters like FORMAT=srec or FORMAT=hex.
If we come to use Kconfig, there will likely be board specific things which can be used.
ifeq ($(CONFIG_BOARD_KILAUEA),y) ifeq ($(CONFIG_BOARD_KILAUEA_NAND),y) INSTALL_TARGETS += u-boot-nand.bin else INSTALL_TARGETS += u-boot.bin end endif
I think there are plenty of different solutions to this.
And no, we definitlely do not always want to build (and install) all these images. That would be just a waste of resources.
You build what you currently build, and the make install will copy that to another place. I see no harm in copying both u-boot.bin and u-boot.srec, since it is easier to delete what you see you do not need than to get what you are not even aware is existing.
With the current method,assuming u-boot.bin is what you always wanted in the past, u-boot.kwb would certainly NOT have been copied.
Best regards,
Wolfgang Denk
BR Ulf Samuelsson