From: Simon Glass <sjg@chromium.org>
The generated .S files for fonts, images, splash screens, signer
binaries and EFI apps 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.
Use $(src)/$(notdir $<) instead of $< so the .incbin directive contains
a source-relative path like drivers/video/images/u_boot.bmp rather than
an absolute one. Add -Wa,-I$(srctree) to the assembler flags so the
assembler can resolve these paths.
The DTB and DTBO rules are left unchanged since their prerequisites are
generated files in the build directory.
Signed-off-by: Simon Glass <sjg@chromium.org>
---
scripts/Makefile.lib | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
@@ -174,6 +174,7 @@ c_flags = -Wp,-MD,$(depfile) $(nostdinc) $(ubootinclude) \
$(basename_flags) $(modname_flags)
a_flags = -Wp,-MD,$(depfile) $(nostdinc) $(ubootinclude) \
+ -Wa,-I$(srctree) \
$(__a_flags) $(modkern_aflags)
cpp_flags = -Wp,-MD,$(depfile) $(nostdinc) $(ubootinclude) \
@@ -494,7 +495,7 @@ cmd_S_ttf= \
echo '.balign 16'; \
echo '.global __ttf_$(*F)_begin'; \
echo '__ttf_$(*F)_begin:'; \
- echo '.incbin "$<" '; \
+ echo '.incbin "$(src)/$(notdir $<)" '; \
echo '__ttf_$(*F)_end:'; \
echo '.global __ttf_$(*F)_end'; \
echo '.balign 16'; \
@@ -514,7 +515,7 @@ cmd_S_signer= \
echo '.balign 16'; \
echo '.global __signer_$(subst .,_,$(*F))_begin'; \
echo '__signer_$(subst .,_,$(*F))_begin:'; \
- echo '.incbin "$<" '; \
+ echo '.incbin "$(src)/$(notdir $<)" '; \
echo '__signer_$(subst .,_,$(*F))_end:'; \
echo '.global __signer_$(subst .,_,$(*F))_end'; \
echo '.balign 16'; \
@@ -535,7 +536,7 @@ cmd_S_splash= \
echo '.balign 16'; \
echo '.global __splash_$(*F)_logo_begin'; \
echo '__splash_$(*F)_logo_begin:'; \
- echo '.incbin "$<" '; \
+ echo '.incbin "$(src)/$(notdir $<)" '; \
echo '__splash_$(*F)_logo_end:'; \
echo '.global __splash_$(*F)_logo_end'; \
echo '.balign 16'; \
@@ -554,7 +555,7 @@ cmd_S_image= \
echo '.balign 16'; \
echo '.global __image_$(*F)_begin'; \
echo '__image_$(*F)_begin:'; \
- echo '.incbin "$<" '; \
+ echo '.incbin "$(src)/$(notdir $<)" '; \
echo '__image_$(*F)_end:'; \
echo '.global __image_$(*F)_end'; \
echo '.balign 16'; \
@@ -594,7 +595,7 @@ cmd_S_efi= \
echo '.balign 16'; \
echo '.global __efi_$*_begin'; \
echo '__efi_$*_begin:'; \
- echo '.incbin "$<" '; \
+ echo '.incbin "$(src)/$(notdir $<)" '; \
echo '__efi_$*_end:'; \
echo '.global __efi_$*_end'; \
echo '.balign 16'; \