[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [UNIKRAFT PATCH 3/3] build: Option to set sources, object, alibs, and symbol localization for each library
This commit introduces another special build system variables which can be used to set options for each `.o`-library (UK_OLIBS): - Source files: EACHOLIB_SRCS and EACHOLIB_SRCS-y List of source files to be compiled for and linked into each `.o`-library. Be aware of duplicate symbol definitions. It may make sense to use this option together with `EACHOLIB_LOCALS(-y)`. - Object files: EACHOLIB_OBJS and EACHOLIB_OBJS-y List of object files to be linked into each `.o`-library. Be aware of duplicate symbol definitions. It may make sense to use this option together with `EACHOLIB_LOCALS(-y)`. - Static libraries: EACHOLIB_ALIBS and EACHOLIB_ALIBS-y List of static libraries linked into each `.o`-library. Be aware of duplicate symbol definitions. It may make sense to use this option together with `EACHOLIB_LOCALS(-y)`. - Localize symbols file: EACHOLIB_LOCALS and EACHOLIB_LOCALS-y Localizing symbols for each `.o`-library. Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx> --- Makefile | 28 ++++++++++++++++++++-------- support/build/Makefile.build | 12 ++++++++---- support/build/Makefile.rules | 10 ++++++++++ 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index f6ace2b6..be8fa8ce 100644 --- a/Makefile +++ b/Makefile @@ -321,6 +321,14 @@ LDFLAGS := LDFLAGS-y := IMAGE_LDFLAGS := IMAGE_LDFLAGS-y := +EACHOLIB_SRCS := +EACHOLIB_SRCS-y := +EACHOLIB_OBJS := +EACHOLIB_OBJS-y := +EACHOLIB_ALIBS := +EACHOLIB_ALIBS-y := +EACHOLIB_LOCALS := +EACHOLIB_LOCALS-y := # Pull in the user's configuration file ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),) @@ -914,12 +922,14 @@ print-objs: $(foreach P,$(UK_PLATS) $(UK_PLATS-y),\ $(if $(call qstrip,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y)),\ $(foreach L,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y), \ - $(if $(call qstrip,$($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y))), \ - '$(L):\n $($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y))\n'\ + $(if $(call qstrip,$($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y)) \ + $(EACHOLIB_OBJS) $(EACHOLIB_OBJS-y)), \ + '$(L):\n $($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y)) $(EACHOLIB_OBJS) $(EACHOLIB_OBJS-y)\n'\ ))))\ $(foreach L,$(UK_LIBS) $(UK_LIBS-y),\ - $(if $(call qstrip,$($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y))),\ - '$(L):\n $($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y))\n'\ + $(if $(call qstrip,$($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y)) \ + $(EACHOLIB_OBJS) $(EACHOLIB_OBJS-y)), \ + '$(L):\n $($(call vprefix_lib,$(L),OBJS)) $($(call vprefix_lib,$(L),OBJS-y)) $(EACHOLIB_OBJS) $(EACHOLIB_OBJS-y)\n'\ )) print-srcs: @@ -927,12 +937,14 @@ print-srcs: $(foreach P,$(UK_PLATS) $(UK_PLATS-y),\ $(if $(call qstrip,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y)),\ $(foreach L,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y), \ - $(if $(call qstrip,$($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y))), \ - '$(L):\n $($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y))\n'\ + $(if $(call qstrip,$($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y)) \ + $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)), \ + '$(L):\n $($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y)) $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)\n'\ ))))\ $(foreach L,$(UK_LIBS) $(UK_LIBS-y),\ - $(if $(call qstrip,$($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y))),\ - '$(L):\n $($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y))\n'\ + $(if $(call qstrip,$($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y)) \ + $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)), \ + '$(L):\n $($(call vprefix_lib,$(L),SRCS)) $($(call vprefix_lib,$(L),SRCS-y)) $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)\n'\ )) else print-libs: diff --git a/support/build/Makefile.build b/support/build/Makefile.build index 5679741d..c597a382 100644 --- a/support/build/Makefile.build +++ b/support/build/Makefile.build @@ -25,8 +25,10 @@ ifneq ($(call qstrip,$(UK_LIBS) $(UK_LIBS-y)),) $(foreach L,$(UK_LIBS) $(UK_LIBS-y), \ -$(if $(call qstrip,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y)), \ -$(foreach S,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y), \ +$(if $(call qstrip,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y) \ + $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)), \ +$(foreach S,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y) \ + $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y), \ $(eval $(call buildrule_libobj_multitarget,$(L),$(S))) \ ); \ $(eval $(call buildrule_olib,$(L))); \ @@ -46,8 +48,10 @@ ifneq ($(call qstrip,$(UK_PLATS) $(UK_PLATS-y)),) $(foreach P,$(UK_PLATS) $(UK_PLATS-y), \ $(if $(call qstrip,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y)), \ $(foreach L,$($(call uc,$(P))_LIBS) $($(call uc,$(P))_LIBS-y), \ -$(if $(call qstrip,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y)), \ -$(foreach S,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y), \ +$(if $(call qstrip,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y) \ + $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y)), \ +$(foreach S,$($(call uc,$(L))_SRCS) $($(call uc,$(L))_SRCS-y) \ + $(EACHOLIB_SRCS) $(EACHOLIB_SRCS-y), \ $(eval $(call buildrule_libobj_multitarget,$(L),$(S))) \ ); \ $(eval $(call buildrule_olib,$(L))); \ diff --git a/support/build/Makefile.rules b/support/build/Makefile.rules index 251efef8..8c096fa5 100644 --- a/support/build/Makefile.rules +++ b/support/build/Makefile.rules @@ -722,8 +722,12 @@ endef define buildrule_olib = $(call libname2preolib,$(1)): $($(call vprefix_lib,$(1),OBJS)) \ $($(call vprefix_lib,$(1),OBJS-y)) \ + $(EACHOLIB_OBJS) \ + $(EACHOLIB_OBJS-y) \ $($(call vprefix_lib,$(1),ALIBS)) \ $($(call vprefix_lib,$(1),ALIBS-y)) \ + $(EACHOLIB_ALIBS) \ + $(EACHOLIB_ALIBS-y) \ $($(call vprefix_lib,$(1),LDS)) \ $($(call vprefix_lib,$(1),LDS-y)) \ $($(call vprefix_lib,$(1),DTB)) \ @@ -734,18 +738,24 @@ $(call libname2preolib,$(1)): $($(call vprefix_lib,$(1),OBJS)) \ $($(call vprefix_lib,$(1),LDFLAGS-y)) \ $($(call vprefix_lib,$(1),OBJS)) \ $($(call vprefix_lib,$(1),OBJS-y)) \ + $(EACHOLIB_OBJS) \ + $(EACHOLIB_OBJS-y) \ -Wl$(comma)--start-group \ $($(call vprefix_lib,$(1),ALIBS)) \ $($(call vprefix_lib,$(1),ALIBS-y)) \ + $(EACHOLIB_ALIBS) \ + $(EACHOLIB_ALIBS-y) \ -Wl$(comma)--end-group \ -o $(call libname2preolib,$(1))) $(call libname2olib,$(1)): $(call libname2preolib,$(1)) \ $($(call vprefix_lib,$(1),EXPORTS)) $($(call vprefix_lib,$(1),EXPORTS-y)) \ $($(call vprefix_lib,$(1),LOCALS)) $($(call vprefix_lib,$(1),LOCALS-y)) \ + $(EACHOLIB_LOCALS) $(EACHOLIB_LOCALS-y) $(call build_cmd,OBJCOPY,,$(call libname2olib,$(1)),\ $(OBJCOPY) $(addprefix --keep-global-symbols=,$($(call vprefix_lib,$(1),EXPORTS)) $($(call vprefix_lib,$(1),EXPORTS-y))) \ $(addprefix --localize-symbols=,$($(call vprefix_lib,$(1),LOCALS)) $($(call vprefix_lib,$(1),LOCALS-y))) \ + $(addprefix --localize-symbols=,$(EACHOLIB_LOCALS) $(EACHOLIB_LOCALS-y)) \ $(OBJCFLAGS) $(OBJCFLAGS-y) \ $($(call vprefix_lib,$(1),OBJCFLAGS)) $($(call vprefix_lib,$(1),OBJCFLAGS-y)) \ $(call libname2preolib,$(1)) $(call libname2olib,$(1))) -- 2.20.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |