[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH v4 8/8] build: Add *.ld files as source to library
Instead of adding the linker to special linker variable, we add the linker script as a source to library and the necessary variables are automatically populated. This is an extension on the scheme used for linker script source file. Signed-off-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx> Reviewed-by: Felipe Huici <felipe.huici@xxxxxxxxx> --- doc/guides/developers-app.rst | 7 +------ lib/ukdebug/Makefile.uk | 2 +- lib/vfscore/Makefile.uk | 2 +- support/build/Makefile.rules | 18 +++++++++++++++++- 4 files changed, 20 insertions(+), 9 deletions(-) diff --git a/doc/guides/developers-app.rst b/doc/guides/developers-app.rst index 8e1698b..29db81d 100644 --- a/doc/guides/developers-app.rst +++ b/doc/guides/developers-app.rst @@ -302,12 +302,7 @@ extra.ld If your library/application needs a section in the final elf, edit your Makefile.uk to add :: - EXTRA_LD_SCRIPT-$(CONFIG_LIBYOURAPPNAME) += $(LIBYOURAPPNAME_BASE)/extra.ld - -If your library is specific to a platform, edit your Makefile.uk to add :: - - [PLATFORM]_LD_SCRIPT-$(CONFIG_LIBYOURAPPNAME) += $(LIBYOURAPPNAME_BASE)/extra.ld - + LIBYOURAPPNAME_SRCS-$(CONFIG_LIBYOURAPPNAME) += $(LIBYOURAPPNAME_BASE)/extra.ld An example context of extra.ld: :: diff --git a/lib/ukdebug/Makefile.uk b/lib/ukdebug/Makefile.uk index 663ac6d..d82caca 100644 --- a/lib/ukdebug/Makefile.uk +++ b/lib/ukdebug/Makefile.uk @@ -9,6 +9,6 @@ LIBUKDEBUG_CXXFLAGS-y += -D__IN_LIBUKDEBUG__ LIBUKDEBUG_SRCS-y += $(LIBUKDEBUG_BASE)/print.c LIBUKDEBUG_SRCS-y += $(LIBUKDEBUG_BASE)/hexdump.c LIBUKDEBUG_SRCS-$(CONFIG_LIBUKDEBUG_TRACEPOINTS) += $(LIBUKDEBUG_BASE)/trace.c +LIBUKDEBUG_SRCS-$(CONFIG_LIBVFSCORE) += $(LIBUKDEBUG_BASE)/extra.ld -EXTRA_LD_SCRIPT-$(CONFIG_LIBVFSCORE) += $(LIBUKDEBUG_BASE)/extra.ld STRIP_SECTIONS_FLAGS-$(CONFIG_LIBUKDEBUG_TRACEPOINTS) += -R .uk_tracepoints_list -R .uk_trace_keyvals diff --git a/lib/vfscore/Makefile.uk b/lib/vfscore/Makefile.uk index 0166e61..79878f2 100644 --- a/lib/vfscore/Makefile.uk +++ b/lib/vfscore/Makefile.uk @@ -14,7 +14,7 @@ LIBVFSCORE_SRCS-y += $(LIBVFSCORE_BASE)/task.c LIBVFSCORE_SRCS-y += $(LIBVFSCORE_BASE)/lookup.c LIBVFSCORE_SRCS-y += $(LIBVFSCORE_BASE)/fops.c LIBVFSCORE_SRCS-y += $(LIBVFSCORE_BASE)/subr_uio.c +LIBVFSCORE_SRCS-y += $(LIBVFSCORE_BASE)/extra.ld -EXTRA_LD_SCRIPT-$(CONFIG_LIBVFSCORE) += $(LIBVFSCORE_BASE)/extra.ld UK_PROVIDED_SYSCALLS-$(CONFIG_LIBVFSCORE) += writev-3 diff --git a/support/build/Makefile.rules b/support/build/Makefile.rules index 235b109..361390b 100644 --- a/support/build/Makefile.rules +++ b/support/build/Makefile.rules @@ -450,12 +450,28 @@ $(if $(strip $($(call uc,$(1))_PLATS)),\ ) endef +## Add the linker file to the common variable used for linker script +define buildrule_ld = +$(2): | prepare + +$(eval $(call vprefix_lib,$(1),LDS-y) += $(2)) + +$(if $(strip $($(call uc,$(1))_PLATS)),\ + $(foreach p,$($(call uc,$(1))_PLATS),\ + $(if $(filter $(UK_PLAT_$(p)_DEF_LDS),$(2)),\ + $(eval UK_PLAT_$(p)_DEF_LDS := $(2)),\ + $(call add_lds_to_plat,$(2),$(p)))),\ + $(call add_lds_to_lib,$(2))\ + ) +endef + # wrapper for buildrule_*, # selects appropriate buildrule depending on file extension # # buildrule $libname,$source,$target,$extraflags(optional) define buildrule = $(if $(filter %.lds.S,$(2)),$(call buildrule_lds,$(1),$(2),$(3),$(4)),\ +$(if $(filter %.ld ,$(2)),$(call buildrule_ld ,$(1),$(2),$(3),$(4)),\ $(if $(filter %.S, $(2)),$(call buildrule_S ,$(1),$(2),$(3),$(4)),\ $(if $(filter %.sx, $(2)),$(call buildrule_S ,$(1),$(2),$(3),$(4)),\ $(if $(filter %.s, $(2)),$(call buildrule_s ,$(1),$(2),$(3),$(4)),\ @@ -468,7 +484,7 @@ $(if $(filter %.CPP, $(2)),$(call buildrule_cc ,$(1),$(2),$(3),$(4)),\ $(if $(filter %.c++, $(2)),$(call buildrule_cc ,$(1),$(2),$(3),$(4)),\ $(if $(filter %.C, $(2)),$(call buildrule_cc ,$(1),$(2),$(3),$(4)),\ $(error $(3): missing build rule for source type $(suffix $(2))) \ -)))))))))))) +))))))))))))) endef -- 2.7.4 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |