]> xenbits.xensource.com Git - unikraft/unikraft.git/commitdiff
Introduce `EACHOLIB_EXPORTS`
authorSergiu Moga <sergiu@unikraft.io>
Thu, 6 Feb 2025 09:26:55 +0000 (11:26 +0200)
committerUnikraft Bot <monkey@unikraft.io>
Fri, 14 Feb 2025 09:38:45 +0000 (09:38 +0000)
Introduce the equivalent of `EACHOLIB_LOCALS`, but for exportsyms.uk.
Now, one is able to add custom defined/named exportsyms.uk, in addition
to an already existing exportsyms.uk. If no exportsyms.uk exists, then,
unlike `EACHOLIB_LOCALS` which is processed regardless of whether a
localsyms.uk exists or not, `EACHOLIB_EXPORTS` will be ignored.
However, its result files may still be built as per Makefile recipe
dependencies.

Checkpatch-Ignore: UNIKRAFT_SUBJECT_FORMAT
Signed-off-by: Sergiu Moga <sergiu@unikraft.io>
Reviewed-by: Michalis Pappas <michalis@unikraft.io>
Approved-by: Michalis Pappas <michalis@unikraft.io>
GitHub-Closes: #1577

Makefile
support/build/Makefile.rules

index e6e45e408d5545e02e88c858444ca7a60159074b..bf41e158351bbeea4da92b51d94bf644f4b628c5 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -378,6 +378,8 @@ EACHOLIB_ALIBS :=
 EACHOLIB_ALIBS-y :=
 EACHOLIB_LOCALS :=
 EACHOLIB_LOCALS-y :=
+EACHOLIB_EXPORTS :=
+EACHOLIB_EXPORTS-y :=
 
 # Pull in the user's configuration file
 ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
index 365fc1213fad3f7790ca29ce8150370b8979102f..d60617784b4541b43d57ee4856caf870a8b6ab84 100644 (file)
@@ -1021,10 +1021,15 @@ $(call libname2preolib,$(1)): $$($(call vprefix_lib,$(1),OBJS)) \
 
 $(call libname2olib,$(1)): $(call libname2preolib,$(1)) \
                           $$($(call vprefix_lib,$(1),EXPORTS)) $$($(call vprefix_lib,$(1),EXPORTS-y)) \
+                          $$(EACHOLIB_EXPORTS) $$(EACHOLIB_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))) \
+               $(OBJCOPY) \
+                          $$(addprefix --keep-global-symbols=,$$($(call vprefix_lib,$(1),EXPORTS)) $$($(call vprefix_lib,$(1),EXPORTS-y))) \
+                          $$(if \
+                               $$(and $$(strip $$($(call vprefix_lib,$(1),EXPORTS)) $$($(call vprefix_lib,$(1),EXPORTS-y))), $$(strip $$(EACHOLIB_EXPORTS) $$(EACHOLIB_EXPORTS-y))), \
+                               $$(addprefix --keep-global-symbols=,$$(EACHOLIB_EXPORTS) $$(EACHOLIB_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) \