[PATCH v2 1/2] kbuild: Move U-Boot .incbin rules to Makefile.lib-u-boot
Ilias Apalodimas
ilias.apalodimas at linaro.org
Thu Mar 26 12:57:33 CET 2026
On Thu, 26 Mar 2026 at 13:55, Simon Glass <sjg at chromium.org> wrote:
>
> The font, splash-screen and EFI .incbin wrapper rules are U-Boot
> additions that do not exist in the upstream Linux kbuild. Keeping them
> in scripts/Makefile.lib makes re-syncing with Linux harder than it needs
> to be, as every sync must manually preserve the U-Boot additions.
>
> Move these rules into a new scripts/Makefile.lib-u-boot and include it
> from Makefile.build and Makefile.xpl, right after the existing
> Makefile.lib include.
>
> This is a pure code-move with no functional change.
>
> Suggested-by: Tom Rini <trini at konsulko.com>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
Acked-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>
> Changes in v2:
> - Split out of the relative-path patch as requested by Tom Rini
>
> scripts/Makefile.build | 1 +
> scripts/Makefile.lib | 94 ------------------------------------
> scripts/Makefile.lib-u-boot | 96 +++++++++++++++++++++++++++++++++++++
> scripts/Makefile.xpl | 1 +
> 4 files changed, 98 insertions(+), 94 deletions(-)
> create mode 100644 scripts/Makefile.lib-u-boot
>
> diff --git a/scripts/Makefile.build b/scripts/Makefile.build
> index 8da9851d430..e625f99986e 100644
> --- a/scripts/Makefile.build
> +++ b/scripts/Makefile.build
> @@ -65,6 +65,7 @@ ccflags-y += $(PLATFORM_CPPFLAGS)
> cppflags-y += $(PLATFORM_CPPFLAGS)
>
> include $(srctree)/scripts/Makefile.lib
> +include $(srctree)/scripts/Makefile.lib-u-boot
>
> # Do not include hostprogs rules unless needed.
> # $(sort ...) is used here to remove duplicated words and excessive spaces.
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index 7386353e0cc..b8969b7de54 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -508,100 +508,6 @@ $(multi-dtb-y): FORCE
> $(call if_changed,fdtoverlay)
> $(call multi_depend, $(multi-dtb-y), .dtb, -dtbs)
>
> -# Fonts
> -# ---------------------------------------------------------------------------
> -
> -# Generate an assembly file to wrap the font data
> -quiet_cmd_S_ttf= TTF $@
> -# Modified for U-Boot
> -cmd_S_ttf= \
> -( \
> - echo '.section .rodata.ttf.init,"a"'; \
> - echo '.balign 16'; \
> - echo '.global __ttf_$(*F)_begin'; \
> - echo '__ttf_$(*F)_begin:'; \
> - echo '.incbin "$<" '; \
> - echo '__ttf_$(*F)_end:'; \
> - echo '.global __ttf_$(*F)_end'; \
> - echo '.balign 16'; \
> -) > $@
> -
> -$(obj)/%.S: $(src)/%.ttf
> - $(call cmd,S_ttf)
> -
> -# Splash logos
> -# ---------------------------------------------------------------------------
> -
> -# Generate an assembly file to wrap the splash data
> -quiet_cmd_S_splash= TTF $@
> -# Modified for U-Boot
> -cmd_S_splash= \
> -( \
> - echo '.section .rodata.splash.init,"a"'; \
> - echo '.balign 16'; \
> - echo '.global __splash_$(*F)_begin'; \
> - echo '__splash_$(*F)_begin:'; \
> - echo '.incbin "$<" '; \
> - echo '__splash_$(*F)_end:'; \
> - echo '.global __splash_$(*F)_end'; \
> - echo '.balign 16'; \
> -) > $@
> -
> -$(obj)/%.S: $(src)/%.bmp
> - $(call cmd,S_splash)
> -
> -# EFI applications
> -# A Makefile target *.efi is built as EFI application.
> -# A Makefile target *_efi.S wraps *.efi as built-in EFI application.
> -# ---------------------------------------------------------------------------
> -
> -# Generate an assembly file to wrap the EFI app
> -cmd_S_efi= \
> -( \
> - echo '.section .rodata.$*.init,"a"'; \
> - echo '.balign 16'; \
> - echo '.global __efi_$*_begin'; \
> - echo '__efi_$*_begin:'; \
> - echo '.incbin "$<" '; \
> - echo '__efi_$*_end:'; \
> - echo '.global __efi_$*_end'; \
> - echo '.balign 16'; \
> -) > $@
> -
> -$(obj)/%_efi.S: $(obj)/%.efi
> - $(call cmd,S_efi)
> -
> -quiet_cmd_efi_objcopy = OBJCOPY $@
> -cmd_efi_objcopy = $(OBJCOPY) -j .header -j .text -j .sdata -j .data \
> - -j .dynamic -j .dynstr -j .dynsym -j .rel* -j .reloc \
> - $(if $(EFI_TARGET),$(EFI_TARGET),-O binary) $^ $@
> -
> -$(obj)/%.efi: $(obj)/%_efi.so
> - $(call cmd,efi_objcopy)
> -
> -KBUILD_EFILDFLAGS = -nostdlib -zexecstack -znocombreloc -znorelro
> -KBUILD_EFILDFLAGS += $(call ld-option,--no-warn-rwx-segments)
> -quiet_cmd_efi_ld = LD $@
> -cmd_efi_ld = $(LD) $(KBUILD_EFILDFLAGS) -L $(srctree) -T $(EFI_LDS_PATH) \
> - -shared -Bsymbolic -s $^ $(PLATFORM_LIBGCC) -o $@
> -
> -EFI_LDS_PATH = arch/$(ARCH)/lib/$(EFI_LDS)
> -
> -$(obj)/efi_crt0.o: $(srctree)/arch/$(ARCH)/lib/$(EFI_CRT0:.o=.S) FORCE
> - $(call if_changed_dep,as_o_S)
> -
> -$(obj)/efi_reloc.o: $(srctree)/arch/$(ARCH)/lib/$(EFI_RELOC:.o=.c) $(recordmcount_source) FORCE
> - $(call cmd,force_checksrc)
> - $(call if_changed_rule,cc_o_c)
> -
> -$(obj)/%_efi.so: $(obj)/%.o $(obj)/efi_crt0.o $(obj)/efi_reloc.o $(obj)/efi_freestanding.o
> - $(call cmd,efi_ld)
> -
> -targets += $(obj)/efi_crt0.o $(obj)/efi_reloc.o $(obj)/efi_freestanding.o
> -
> -CFLAGS_REMOVE_efi_reloc.o := $(LTO_CFLAGS)
> -CFLAGS_REMOVE_efi_freestanding.o := $(LTO_CFLAGS)
> -
> # ACPI
> # ---------------------------------------------------------------------------
> #
> diff --git a/scripts/Makefile.lib-u-boot b/scripts/Makefile.lib-u-boot
> new file mode 100644
> index 00000000000..c55f8d8e0c3
> --- /dev/null
> +++ b/scripts/Makefile.lib-u-boot
> @@ -0,0 +1,96 @@
> +# SPDX-License-Identifier: GPL-2.0
> +#
> +# U-Boot-specific rules for embedding binary data via .incbin
> +# These are split out of Makefile.lib to simplify kbuild re-syncs.
> +
> +# Fonts
> +# ---------------------------------------------------------------------------
> +
> +# Generate an assembly file to wrap the font data
> +quiet_cmd_S_ttf= TTF $@
> +cmd_S_ttf= \
> +( \
> + echo '.section .rodata.ttf.init,"a"'; \
> + echo '.balign 16'; \
> + echo '.global __ttf_$(*F)_begin'; \
> + echo '__ttf_$(*F)_begin:'; \
> + echo '.incbin "$<" '; \
> + echo '__ttf_$(*F)_end:'; \
> + echo '.global __ttf_$(*F)_end'; \
> + echo '.balign 16'; \
> +) > $@
> +
> +$(obj)/%.S: $(src)/%.ttf
> + $(call cmd,S_ttf)
> +
> +# Splash logos
> +# ---------------------------------------------------------------------------
> +
> +# Generate an assembly file to wrap the splash data
> +quiet_cmd_S_splash= TTF $@
> +cmd_S_splash= \
> +( \
> + echo '.section .rodata.splash.init,"a"'; \
> + echo '.balign 16'; \
> + echo '.global __splash_$(*F)_begin'; \
> + echo '__splash_$(*F)_begin:'; \
> + echo '.incbin "$<" '; \
> + echo '__splash_$(*F)_end:'; \
> + echo '.global __splash_$(*F)_end'; \
> + echo '.balign 16'; \
> +) > $@
> +
> +$(obj)/%.S: $(src)/%.bmp
> + $(call cmd,S_splash)
> +
> +# EFI applications
> +# A Makefile target *.efi is built as EFI application.
> +# A Makefile target *_efi.S wraps *.efi as built-in EFI application.
> +# ---------------------------------------------------------------------------
> +
> +# Generate an assembly file to wrap the EFI app
> +cmd_S_efi= \
> +( \
> + echo '.section .rodata.$*.init,"a"'; \
> + echo '.balign 16'; \
> + echo '.global __efi_$*_begin'; \
> + echo '__efi_$*_begin:'; \
> + echo '.incbin "$<" '; \
> + echo '__efi_$*_end:'; \
> + echo '.global __efi_$*_end'; \
> + echo '.balign 16'; \
> +) > $@
> +
> +$(obj)/%_efi.S: $(obj)/%.efi
> + $(call cmd,S_efi)
> +
> +quiet_cmd_efi_objcopy = OBJCOPY $@
> +cmd_efi_objcopy = $(OBJCOPY) -j .header -j .text -j .sdata -j .data \
> + -j .dynamic -j .dynstr -j .dynsym -j .rel* -j .reloc \
> + $(if $(EFI_TARGET),$(EFI_TARGET),-O binary) $^ $@
> +
> +$(obj)/%.efi: $(obj)/%_efi.so
> + $(call cmd,efi_objcopy)
> +
> +KBUILD_EFILDFLAGS = -nostdlib -zexecstack -znocombreloc -znorelro
> +KBUILD_EFILDFLAGS += $(call ld-option,--no-warn-rwx-segments)
> +quiet_cmd_efi_ld = LD $@
> +cmd_efi_ld = $(LD) $(KBUILD_EFILDFLAGS) -L $(srctree) -T $(EFI_LDS_PATH) \
> + -shared -Bsymbolic -s $^ $(PLATFORM_LIBGCC) -o $@
> +
> +EFI_LDS_PATH = arch/$(ARCH)/lib/$(EFI_LDS)
> +
> +$(obj)/efi_crt0.o: $(srctree)/arch/$(ARCH)/lib/$(EFI_CRT0:.o=.S) FORCE
> + $(call if_changed_dep,as_o_S)
> +
> +$(obj)/efi_reloc.o: $(srctree)/arch/$(ARCH)/lib/$(EFI_RELOC:.o=.c) $(recordmcount_source) FORCE
> + $(call cmd,force_checksrc)
> + $(call if_changed_rule,cc_o_c)
> +
> +$(obj)/%_efi.so: $(obj)/%.o $(obj)/efi_crt0.o $(obj)/efi_reloc.o $(obj)/efi_freestanding.o
> + $(call cmd,efi_ld)
> +
> +targets += $(obj)/efi_crt0.o $(obj)/efi_reloc.o $(obj)/efi_freestanding.o
> +
> +CFLAGS_REMOVE_efi_reloc.o := $(LTO_CFLAGS)
> +CFLAGS_REMOVE_efi_freestanding.o := $(LTO_CFLAGS)
> diff --git a/scripts/Makefile.xpl b/scripts/Makefile.xpl
> index c5ddf64c73f..862a8e6f231 100644
> --- a/scripts/Makefile.xpl
> +++ b/scripts/Makefile.xpl
> @@ -88,6 +88,7 @@ include $(srctree)/config.mk
> include $(srctree)/arch/$(ARCH)/Makefile
>
> include $(srctree)/scripts/Makefile.lib
> +include $(srctree)/scripts/Makefile.lib-u-boot
>
> # Enable garbage collection of un-used sections for SPL
> KBUILD_CFLAGS += -ffunction-sections -fdata-sections
> --
> 2.43.0
>
> base-commit: 1ffc541eafc96d5eebcf837ab892dccec3b93568
> branch: font-us2
More information about the U-Boot
mailing list