From: Rasmus Villemoes <ravi@prevas.dk>
To: Simon Glass <sjg@chromium.org>
Cc: <u-boot@lists.denx.de>,
Anatolij Gustschin <ag.dev.uboot@gmail.com>,
Dario Binacchi <dario.binacchi@amarulasolutions.com>,
"Heinrich Schuchardt" <xypron.glpk@gmx.de>,
Ion Agorria <ion@agorria.com>,
"Miquel Raynal" <miquel.raynal@bootlin.com>,
Patrice Chotard <patrice.chotard@foss.st.com>,
Svyatoslav Ryhel <clamor95@gmail.com>,
Tom Rini <trini@konsulko.com>
Subject: Re: [PATCH v2 2/2] kbuild: Use relative paths in generated .incbin directives
Date: Fri, 27 Mar 2026 11:27:23 +0100 [thread overview]
Message-ID: <875x6hlg8k.fsf@prevas.dk> (raw)
In-Reply-To: <87cy0plmh8.fsf@prevas.dk> (Rasmus Villemoes's message of "Fri, 27 Mar 2026 09:12:35 +0100")
On Fri, Mar 27 2026, Rasmus Villemoes <ravi@prevas.dk> wrote:
> On Thu, Mar 26 2026, Simon Glass <sjg@chromium.org> wrote:
>
>> The generated .S files for fonts and splash screens use .incbin with the
>> full prerequisite path. When building with O= this bakes an absolute
>> path into the .S file. If the build directory is later used on a
>> different machine (e.g. in a container), the assembler cannot find the
>> source file.
>
> I must be missing something, because I can't see how this can be a
> problem, while all the other absolute paths to the source dir that go
> into files generated in the build directory is not. For example, there's
> a top-level "source -> /path/to/u-boot" symlink created, and as far as I
> can tell, all the .foo.o.cmd files end up full of such references as
> well, e.g. $BUILD/lib/.vsprintf.o.cmd contains
>
> source_lib/vsprintf.o := /path/to/u-boot/lib/vsprintf.c
OK, I can sort-of reproduce, though I don't know if what I did is
representable for your use case. No containers involved, just moved the
source directory.
# original source dir
$ cd /tmp/u-boot
$ make O=/tmp/build sandbox_defconfig
$ make O=/tmp/build -j7
$ cd /tmp ; mv u-boot u-boot-new ; cd u-boot-new
$ make O=/tmp/build -j7
This breaks as you describe, but most files simply get rebuilt due to
their .cmd files containing stale references to /tmp/u-boot/. Which
suggests that the bug is really the lack of a .S.cmd file describing how
the .S file was created in the first place.
This seems to be a better fix, which also causes the .S files to be
generated anew if one does some actual change to the rule:
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 7386353e0cc..b2441080e7e 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -526,8 +526,8 @@ cmd_S_ttf= \
echo '.balign 16'; \
) > $@
-$(obj)/%.S: $(src)/%.ttf
- $(call cmd,S_ttf)
+$(obj)/%.S: $(src)/%.ttf FORCE
+ $(call if_changed,S_ttf)
# Splash logos
# ---------------------------------------------------------------------------
@@ -547,8 +547,8 @@ cmd_S_splash= \
echo '.balign 16'; \
) > $@
-$(obj)/%.S: $(src)/%.bmp
- $(call cmd,S_splash)
+$(obj)/%.S: $(src)/%.bmp FORCE
+ $(call if_changed,S_splash)
# EFI applications
# A Makefile target *.efi is built as EFI application.
See e.g. kernel commit a7f9241909 which did essentially the same change
to the .dtb -> .S rule back in 2018.
It still makes sense to put these rules in a u-boot specific makefile,
but this should avoid the need for each font .o file to need those
AFLAGS changes.
Rasmus
next prev parent reply other threads:[~2026-03-27 10:27 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-26 11:54 [PATCH v2 1/2] kbuild: Move U-Boot .incbin rules to Makefile.lib-u-boot Simon Glass
2026-03-26 11:54 ` [PATCH v2 2/2] kbuild: Use relative paths in generated .incbin directives Simon Glass
2026-03-27 8:12 ` Rasmus Villemoes
2026-03-27 10:27 ` Rasmus Villemoes [this message]
2026-03-27 12:44 ` Simon Glass
2026-03-27 14:46 ` Rasmus Villemoes
2026-03-26 11:57 ` [PATCH v2 1/2] kbuild: Move U-Boot .incbin rules to Makefile.lib-u-boot Ilias Apalodimas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=875x6hlg8k.fsf@prevas.dk \
--to=ravi@prevas.dk \
--cc=ag.dev.uboot@gmail.com \
--cc=clamor95@gmail.com \
--cc=dario.binacchi@amarulasolutions.com \
--cc=ion@agorria.com \
--cc=miquel.raynal@bootlin.com \
--cc=patrice.chotard@foss.st.com \
--cc=sjg@chromium.org \
--cc=trini@konsulko.com \
--cc=u-boot@lists.denx.de \
--cc=xypron.glpk@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.