diff options
| author | Simon Glass <[email protected]> | 2026-04-13 07:15:37 -0600 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2026-04-21 15:56:54 -0600 |
| commit | 24b99d293344d92d902cbc184e8d9665e6a437b2 (patch) | |
| tree | 82dcd344df676613011eab0712c07f8dccfb7347 /scripts/Makefile.lib-u-boot | |
| parent | 86122451b5b987a41a149e385f09d8335348bebe (diff) | |
kbuild: Move U-Boot .incbin rules to Makefile.lib-u-boot
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 <[email protected]>
Signed-off-by: Simon Glass <[email protected]>
Acked-by: Ilias Apalodimas <[email protected]>
Reviewed-by: Rasmus Villemoes <[email protected]>
Diffstat (limited to 'scripts/Makefile.lib-u-boot')
| -rw-r--r-- | scripts/Makefile.lib-u-boot | 96 |
1 files changed, 96 insertions, 0 deletions
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) |
