summaryrefslogtreecommitdiff
path: root/config/data/u-boot
AgeCommit message (Collapse)Author
32 hoursxbmk: make all projects multi-treeLeah Rowe
we currently distinguish, by virtue of logic, multi- and single-tree projects. this introduces a lot of complexity, so the following patch has removed this distinction. all single-tree projects are now multi tree, but with only one tree. other design changes: config/git removed. rev/tree now handled with mkhelper and target configs. this allows per-tree remote handling, so we could (for example) add the mrchromebox coreboot fork easily, for specific chromebook models. config/project is now config/module/project. this cleans up the main config/ directory. cfgname variable: .config no longer hardcoded when doing configs in projects. it is configurable with this variable. if unset, the previous .cfg is used noconfig variable: set this in target/mkhelper configs, and config/module/project/tree/config/ is unused; instead, make is called without config copying. a "noconfig" placeholder is used. this enables cleaner usage of previously single-tree projects in the new multi-tree-only structure. cfgvars: variables reinitialised in project config are cleaned more reliably. in particular, several variables e.g. autogenargs were not being reset between projects, although the autogenargs variable is currently unused. general cleanup has been conducted across the build system, as part of this redesign. several parts of the build system more over-engineered as a result of the previous design, and the new design enabled a severe reduction in sloccount (75 lines reduced in lbmk). yes, this change *adds features* but there are fewer lines of code than before. this is the best kind of change. way better than the 3-line-diff. yes. rev= and tree= are set more centrally in configs. the mkhelper config can be used to set url/url_bkup, but individual trees can override them. configs have been cleaned up, with several variables now much more heavily centralised. config/git/ was used before to first download the bare repository, and then the real clone was made with patches. this allows git repositories to be cached for future re-builds. with config/git/ gone, the download logic for projects is more centrally implemented. a separate call to ./mk -f is no longer performed, and in fact ./mk -f never needs to be used anymore as a result. ./mk -f now is basically the same thing as -b, just without any action performed. this change will allow rapid expansion of the libreboot project. i want to add hundreds of chromebooks to the project, using mrchromebox, but the previous design did not permit this. this change means that i can easily have unlimited upstreams per project. coreboot will, in some follow-up changes, have the following upstreams: coreboot/default: coreboot.org coreboot/fam15h: 15h.org fork coreboot/chromebook: mrchromebox fork this can now be done freely without massive changes to the build system. under the previous design, i worked on a now-abandoned patch to do N remotes per project, reading repo links from a file. this meant that i'd have coreboot.org first (main and backup), then mrchromebox. this meant that lbmk would failover through to mrchromebox, wasting time for the user. this new design is much cleaner, and will enable the project to be maintained much more easily. Signed-off-by: Leah Rowe <leah@libreboot.org>
7 daysmk: turn on git-clean by default, except corebootLeah Rowe
libreboot's policy is to thoroughly clean sources per build, because we cache builds out of tree and avoid re-builds if they exist; these and the sources are deleted if metadata in config/ changes per project, tree and/or target. the problem is that this change only affects lbmk.git it doesn't affect release archives, where project sources do not have git-init applied to them. this will be addressed. can't use it on coreboot, because it will delete xgcc tarballs in a way currently not handled, and handling it will mean adding a project-specific hack. the xgcc tarballs could be built out-of-tree, and this will have to be done, otherwise coreboot will have to be made gitclean="y" for now. everything else is fair game. Signed-off-by: Leah Rowe <leah@libreboot.org>
7 daysmk: remove u-boot-specific git-clean handlingLeah Rowe
yes, make it generalised. use a new variable in mkhelper.cfg, gitclean and gitcleanargs not enabled by default, but u-boot enables it. i'm considering whether to use this by default, as it is the general policy of lbmk to clean everything just after a build, as builds are cached out of tree. this way, we can do re-builds safely for each project. there are probably a lot of subtle bugs that might be fixed if we used this the problem is that this is currently only used on lbmk.git, but not on libreboot release archives which lack .git directories; the main one is initialised in lbmk, but not in upstream sources. we could just initialise those. in fact, that is probably what i'm going to do. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-12-02Revert "trees: Allow using a custom clean command"Leah Rowe
This reverts commit 5b4c9158e5a79f8d7e776c8c4ece69dda5aa8690.
2024-12-02trees: Allow using a custom clean commandLeah Rowe
On coreboot for example, as Mate has told me, if you're making Kconfig changes and re-compiling, sometimes the actual image that you build might still have the old one in it, due to how coreboot's build system works. To mitigate this, you can just always run distclean before doing the build, but lbmk was doing just clean. In practise, we did not find any issues, but this change should be harmless, and might prevent such issues in the future. It's even possible that we might have already encountered this before and not realised, and we were just lucky that no noticeable issues were caused. It's *also* possible that the reverse is true: an issue that was previously covered up, then that issue will now be exposed. However, if that turns out to be true, then that is good because we are exposing said bugs and then we will know to fix them! Anyway, the variable in target.cfg is: cleancmd="whatever_you_want" e.g. cleancmd="distclean" You may also specify this in global mkhelper.cfg files, per project; I've already done this for SeaBIOS, coreboot and U-Boot, since all of these use Kconfig files. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-11-03Experimental U-Boot payload (32-bit dtb, U-Boot)Leah Rowe
NOTE: Support added for xarch target x86_64-elf, but U-Boot failed to build with this error: OBJCOPY lib/efi_loader/helloworld.efi x86_64-elf-objcopy: lib/efi_loader/helloworld_efi.so: invalid bfd target make[2]: *** [scripts/Makefile.lib:476: lib/efi_loader/helloworld.efi] Error 1 Since I'm building U-Boot for x86_64 *on* an x86-64 host, and since that is currently the recommended type of machine to use for lbmk development, and since the other x86 payloads currently don't cross compile anyway, this is an acceptable compromise for now. This is because at present, I'm not making U-Boot the primary payload on x86, instead preferring to chain it from GRUB and SeaBIOS. The target.cfg file for x86 u-boot shows xarch/xtree commented. Uncomment these to compile on crossgcc instead of hostcc. I mention 64-bit because I initially did this first, but decided to do 32-bit first. I'll work on the 64-bit one next (SPL). It's only enabled in QEMU for now. Signed-off-by: Leah Rowe <leah@libreboot.org>
2024-06-06handle build.list from config/data/, not config/Leah Rowe
certain code checks for build.list, to skip it, for example in items() we already use config/data/grub to store grub config data that applied to all trees create these directories too: config/data/coreboot config/data/u-boot config/data/seabios move the respective build.list files in here, and also to config/data/grub now multi-tree projects contain, per directory, just the target.cfg file and the patches directory. this is much cleaner, because some of the logic can be simplified more Signed-off-by: Leah Rowe <leah@libreboot.org>