|
@@ -359,20 +359,22 @@ cmd_S_ttf= \
|
|
|
$(obj)/%.S: $(src)/%.ttf
|
|
|
$(call cmd,S_ttf)
|
|
|
|
|
|
-# EFI Hello World application
|
|
|
+# 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.efi.init,"a"'; \
|
|
|
- echo '.balign 16'; \
|
|
|
- echo '.global __efi_helloworld_begin'; \
|
|
|
- echo '__efi_helloworld_begin:'; \
|
|
|
- echo '.incbin "$<" '; \
|
|
|
- echo '__efi_helloworld_end:'; \
|
|
|
- echo '.global __efi_helloworld_end'; \
|
|
|
- echo '.balign 16'; \
|
|
|
+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
|
|
@@ -383,7 +385,7 @@ cmd_efi_objcopy = $(OBJCOPY) -j .header -j .text -j .sdata -j .data -j \
|
|
|
.dynamic -j .dynsym -j .rel* -j .rela* -j .reloc \
|
|
|
$(if $(EFI_TARGET),$(EFI_TARGET),-O binary) $^ $@
|
|
|
|
|
|
-$(obj)/%.efi: $(obj)/%.so
|
|
|
+$(obj)/%.efi: $(obj)/%_efi.so
|
|
|
$(call cmd,efi_objcopy)
|
|
|
|
|
|
quiet_cmd_efi_ld = LD $@
|
|
@@ -392,7 +394,7 @@ cmd_efi_ld = $(LD) -nostdlib -znocombreloc -T $(EFI_LDS_PATH) -shared \
|
|
|
|
|
|
EFI_LDS_PATH = $(srctree)/arch/$(ARCH)/lib/$(EFI_LDS)
|
|
|
|
|
|
-$(obj)/helloworld.so: $(obj)/helloworld.o arch/$(ARCH)/lib/$(EFI_CRT0) \
|
|
|
+$(obj)/%_efi.so: $(obj)/%.o arch/$(ARCH)/lib/$(EFI_CRT0) \
|
|
|
arch/$(ARCH)/lib/$(EFI_RELOC)
|
|
|
$(call cmd,efi_ld)
|
|
|
|