path: root/mk
diff options
authorThomas Monjalon <>2015-07-02 23:03:40 +0200
committerThomas Monjalon <>2015-07-09 00:56:40 +0200
commit506f51cc0da7e057ac31e15048ba3b8015112226 (patch)
tree1857c8cccddab956d3018c1c61dcff8d1ae3f511 /mk
parente7c6d6fc2233782322ac6d0156f1b3dde3a19d6f (diff)
mk: enable next abi preview
When a change makes really hard to keep ABI compatibility, instead of waiting next release to break the ABI, it is smoother to introduce the new code as a preview and disable it when packaging. The flag RTE_NEXT_ABI must be used to "ifdef" the new code. When the release is out, a dynamically linked application can use the new shared libraries with the old ABI while developpers can prepare their application for the next ABI by reading the deprecation notice and easily testing the new code. When starting the next release cycle, the "ifdefs" will be removed and the ABI break will be marked by incrementing LIBABIVER. The map files will also be updated. The default value is enabled to be developer compliant. The packagers must disable it as done in pkg/dpdk.spec. When enabled, all shared library numbers are incremented by appending a minor .1 to the old ABI number. In the next release, only impacted libraries will have a major +1 increment. The impacted libraries must provide an alternative map file to use with this option. The ABI policy is updated. Signed-off-by: Thomas Monjalon <> Acked-by: Neil Horman <>
Diffstat (limited to 'mk')
1 files changed, 5 insertions, 4 deletions
diff --git a/mk/ b/mk/
index fff62a7..f15de9b 100644
--- a/mk/
+++ b/mk/
@@ -37,11 +37,13 @@ include $(RTE_SDK)/mk/internal/
# VPATH contains at least SRCDIR
LIB := $(patsubst %.a,$(LIBABIVER),$(LIB))
+ifeq ($(CONFIG_RTE_NEXT_ABI),y)
+LIB := $(LIB).1
CPU_LDFLAGS += --version-script=$(SRCDIR)/$(EXPORT_MAP)
@@ -167,12 +169,11 @@ endif
# install lib in $(RTE_OUTPUT)/lib
$(RTE_OUTPUT)/lib/$(LIB): $(LIB)
- $(eval LIBSONAME := $(basename $(LIB)))
@echo " INSTALL-LIB $(LIB)"
@[ -d $(RTE_OUTPUT)/lib ] || mkdir -p $(RTE_OUTPUT)/lib
$(Q)cp -f $(LIB) $(RTE_OUTPUT)/lib
- $(Q)ln -s -f $< $(RTE_OUTPUT)/lib/$(LIBSONAME)
+ $(Q)ln -s -f $< $(basename $(basename $@))