ulib: Support building U-Boot as a shared library
Provide a rule which creates a libu-boot.so file which can be used to provide some of U-Boot's functionality to another program. Move the RISCV up a line so it is clear that it relates to the u-boot target. For now this is not very useful, as everything is bound together, and U-Boot will just start normally when the library is used (including waiting for the user to type commands!). Further work will improve this over time. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
17
Makefile
17
Makefile
@@ -1043,6 +1043,8 @@ INPUTS-$(CONFIG_X86) += u-boot-x86-start16.bin u-boot-x86-reset16.bin \
|
||||
$(if $(CONFIG_SPL_X86_16BIT_INIT),spl/u-boot-spl.bin) \
|
||||
$(if $(CONFIG_TPL_X86_16BIT_INIT),tpl/u-boot-tpl.bin)
|
||||
|
||||
INPUTS-$(CONFIG_ULIB) += libu-boot.so
|
||||
|
||||
LDFLAGS_u-boot += $(LDFLAGS_FINAL)
|
||||
|
||||
# Avoid 'Not enough room for program headers' error on binutils 2.28 onwards.
|
||||
@@ -1843,11 +1845,24 @@ ifeq ($(CONFIG_KALLSYMS),y)
|
||||
$(call cmd,u-boot__) common/system_map.o
|
||||
endif
|
||||
$(call cmd,llcheck,u-boot)
|
||||
|
||||
ifeq ($(CONFIG_RISCV),y)
|
||||
@tools/prelink-riscv $@
|
||||
endif
|
||||
|
||||
# Build U-Boot as a shared library
|
||||
quiet_cmd_libu-boot.so = LD $@
|
||||
cmd_libu-boot.so = $(CC) -shared -o $@ -Wl,--build-id=none \
|
||||
$(u-boot-init) \
|
||||
$(KBUILD_LDFLAGS:%=-Wl,%) $(SANITIZERS) $(LTO_FINAL_LDFLAGS) \
|
||||
-Wl,--whole-archive \
|
||||
$(filter-out %/main.o,$(u-boot-main)) \
|
||||
$(u-boot-keep-syms-lto) \
|
||||
-Wl,--no-whole-archive \
|
||||
$(PLATFORM_LIBS) -Wl,-Map -Wl,libu-boot.map
|
||||
|
||||
libu-boot.so: $(u-boot-init) $(u-boot-main) $(u-boot-keep-syms-lto) FORCE
|
||||
$(call if_changed,libu-boot.so)
|
||||
|
||||
quiet_cmd_sym ?= SYM $@
|
||||
cmd_sym ?= $(OBJDUMP) -t $< > $@
|
||||
u-boot.sym: u-boot FORCE
|
||||
|
||||
Reference in New Issue
Block a user