All of lore.kernel.org
 help / color / mirror / Atom feed
From: Neil Horman <nhorman@tuxdriver.com>
To: dev@dpdk.org
Cc: Neil Horman <nhorman@tuxdriver.com>,
	Thomas Monjalon <thomas@monjalon.net>,
	"Mcnamara, John" <john.mcnamara@intel.com>
Subject: [PATCH 4/4] Makefiles: Add experimental tag check and warnings to trigger on use
Date: Fri,  1 Dec 2017 13:56:28 -0500	[thread overview]
Message-ID: <20171201185628.16261-5-nhorman@tuxdriver.com> (raw)
In-Reply-To: <20171201185628.16261-1-nhorman@tuxdriver.com>

Add checks during build to ensure that all symbols in the EXPERIMENTAL
version map section have __experimental tags on their definitions, and
enable the warnings needed to announce their use.  Also add a
ALLOW_EXPERIMENTAL_FUNCTIONS variable check to allow for in-tree dpdk
libraries to override those checks.

Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
CC: Thomas Monjalon <thomas@monjalon.net>
CC: "Mcnamara, John" <john.mcnamara@intel.com>
---
 app/test-eventdev/Makefile                 |  2 ++
 app/test-pmd/Makefile                      |  2 ++
 drivers/event/sw/Makefile                  |  2 ++
 drivers/net/failsafe/Makefile              |  2 ++
 drivers/net/ixgbe/Makefile                 |  2 ++
 examples/eventdev_pipeline_sw_pmd/Makefile |  2 ++
 examples/flow_classify/Makefile            |  2 ++
 examples/ipsec-secgw/Makefile              |  2 ++
 examples/service_cores/Makefile            |  2 ++
 lib/librte_eal/linuxapp/Makefile           |  2 ++
 lib/librte_eal/linuxapp/eal/Makefile       |  4 ++++
 lib/librte_eventdev/Makefile               |  3 +++
 lib/librte_security/Makefile               |  3 +++
 mk/internal/rte.compile-pre.mk             | 14 ++++++++++++--
 mk/toolchain/clang/rte.vars.mk             |  2 +-
 mk/toolchain/gcc/rte.vars.mk               |  2 +-
 mk/toolchain/icc/rte.vars.mk               |  4 ++--
 17 files changed, 46 insertions(+), 6 deletions(-)

diff --git a/app/test-eventdev/Makefile b/app/test-eventdev/Makefile
index dcb2ac476..e68870828 100644
--- a/app/test-eventdev/Makefile
+++ b/app/test-eventdev/Makefile
@@ -32,6 +32,8 @@ include $(RTE_SDK)/mk/rte.vars.mk
 
 APP = dpdk-test-eventdev
 
+ALLOW_EXPERIMENTAL_FUNCTIONS := 1
+
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/app/test-pmd/Makefile b/app/test-pmd/Makefile
index d21308fcd..f0262a369 100644
--- a/app/test-pmd/Makefile
+++ b/app/test-pmd/Makefile
@@ -33,6 +33,8 @@ include $(RTE_SDK)/mk/rte.vars.mk
 
 ifeq ($(CONFIG_RTE_TEST_PMD),y)
 
+ALLOW_EXPERIMENTAL_FUNCTIONS := 1
+
 #
 # library name
 #
diff --git a/drivers/event/sw/Makefile b/drivers/event/sw/Makefile
index 2f2b67bac..0711ce46e 100644
--- a/drivers/event/sw/Makefile
+++ b/drivers/event/sw/Makefile
@@ -33,6 +33,8 @@ include $(RTE_SDK)/mk/rte.vars.mk
 # library name
 LIB = librte_pmd_sw_event.a
 
+ALLOW_EXPERIMENTAL_FUNCTIONS := 1
+
 # build flags
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
diff --git a/drivers/net/failsafe/Makefile b/drivers/net/failsafe/Makefile
index ea2a8fe46..795da9d56 100644
--- a/drivers/net/failsafe/Makefile
+++ b/drivers/net/failsafe/Makefile
@@ -36,6 +36,8 @@ LIB = librte_pmd_failsafe.a
 
 EXPORT_MAP := rte_pmd_failsafe_version.map
 
+ALLOW_EXPERIMENTAL_FUNCTIONS := 1
+
 LIBABIVER := 1
 
 # Sources are stored in SRCS-y
diff --git a/drivers/net/ixgbe/Makefile b/drivers/net/ixgbe/Makefile
index 511a64eb0..b8431600a 100644
--- a/drivers/net/ixgbe/Makefile
+++ b/drivers/net/ixgbe/Makefile
@@ -36,6 +36,8 @@ include $(RTE_SDK)/mk/rte.vars.mk
 #
 LIB = librte_pmd_ixgbe.a
 
+ALLOW_EXPERIMENTAL_FUNCTIONS := 1
+
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
 
diff --git a/examples/eventdev_pipeline_sw_pmd/Makefile b/examples/eventdev_pipeline_sw_pmd/Makefile
index de4e22c88..4272caf93 100644
--- a/examples/eventdev_pipeline_sw_pmd/Makefile
+++ b/examples/eventdev_pipeline_sw_pmd/Makefile
@@ -32,6 +32,8 @@ ifeq ($(RTE_SDK),)
 $(error "Please define RTE_SDK environment variable")
 endif
 
+ALLOW_EXPERIMENTAL_FUNCTIONS := 1
+
 # Default target, can be overridden by command line or environment
 RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
diff --git a/examples/flow_classify/Makefile b/examples/flow_classify/Makefile
index eecdde14c..b04747c40 100644
--- a/examples/flow_classify/Makefile
+++ b/examples/flow_classify/Makefile
@@ -33,6 +33,8 @@ ifeq ($(RTE_SDK),)
 $(error "Please define RTE_SDK environment variable")
 endif
 
+ALLOW_EXPERIMENTAL_FUNCTIONS := 1
+
 # Default target, can be overridden by command line or environment
 RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
diff --git a/examples/ipsec-secgw/Makefile b/examples/ipsec-secgw/Makefile
index 9fd33cb7f..90a4feca1 100644
--- a/examples/ipsec-secgw/Makefile
+++ b/examples/ipsec-secgw/Makefile
@@ -33,6 +33,8 @@ ifeq ($(RTE_SDK),)
 	$(error "Please define RTE_SDK environment variable")
 endif
 
+ALLOW_EXPERIMENTAL_FUNCTIONS := 1
+
 # Default target, can be overridden by command line or environment
 RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
diff --git a/examples/service_cores/Makefile b/examples/service_cores/Makefile
index bd4a345dc..ba731e259 100644
--- a/examples/service_cores/Makefile
+++ b/examples/service_cores/Makefile
@@ -32,6 +32,8 @@ ifeq ($(RTE_SDK),)
 $(error "Please define RTE_SDK environment variable")
 endif
 
+ALLOW_EXPERIMENTAL_FUNCTIONS := 1
+
 # Default target, can be overridden by command line or environment
 RTE_TARGET ?= x86_64-native-linuxapp-gcc
 
diff --git a/lib/librte_eal/linuxapp/Makefile b/lib/librte_eal/linuxapp/Makefile
index 2ebdf3139..11ee59e42 100644
--- a/lib/librte_eal/linuxapp/Makefile
+++ b/lib/librte_eal/linuxapp/Makefile
@@ -31,6 +31,8 @@
 
 include $(RTE_SDK)/mk/rte.vars.mk
 
+ALLOW_EXPERIMENTAL_FUNCTIONS := 2
+
 DIRS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += eal
 DIRS-$(CONFIG_RTE_EAL_IGB_UIO) += igb_uio
 DIRS-$(CONFIG_RTE_KNI_KMOD) += kni
diff --git a/lib/librte_eal/linuxapp/eal/Makefile b/lib/librte_eal/linuxapp/eal/Makefile
index 5a7b8b2ac..84f8edf39 100644
--- a/lib/librte_eal/linuxapp/eal/Makefile
+++ b/lib/librte_eal/linuxapp/eal/Makefile
@@ -34,6 +34,10 @@ include $(RTE_SDK)/mk/rte.vars.mk
 LIB = librte_eal.a
 
 ARCH_DIR ?= $(RTE_ARCH)
+
+#Allow the use of experimental functions without warning
+ALLOW_EXPERIMENTAL_FUNCTIONS := 1 
+
 EXPORT_MAP := ../../rte_eal_version.map
 VPATH += $(RTE_SDK)/lib/librte_eal/common/arch/$(ARCH_DIR)
 
diff --git a/lib/librte_eventdev/Makefile b/lib/librte_eventdev/Makefile
index 5ac22cde7..8ae9e16f3 100644
--- a/lib/librte_eventdev/Makefile
+++ b/lib/librte_eventdev/Makefile
@@ -36,6 +36,9 @@ LIB = librte_eventdev.a
 # library version
 LIBABIVER := 3
 
+# Allow the use of experimental functions 
+ALLOW_EXPERIMENTAL_FUNCTIONS := 1
+
 # build flags
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
diff --git a/lib/librte_security/Makefile b/lib/librte_security/Makefile
index bb93ec33d..c2815fab8 100644
--- a/lib/librte_security/Makefile
+++ b/lib/librte_security/Makefile
@@ -36,6 +36,9 @@ LIB = librte_security.a
 # library version
 LIBABIVER := 1
 
+# Allow the use of experimental functions without warnings
+ALLOW_EXPERIMENTAL_FUNCTIONS := 1
+
 # build flags
 CFLAGS += -O3
 CFLAGS += $(WERROR_FLAGS)
diff --git a/mk/internal/rte.compile-pre.mk b/mk/internal/rte.compile-pre.mk
index da8dda498..f67048d75 100644
--- a/mk/internal/rte.compile-pre.mk
+++ b/mk/internal/rte.compile-pre.mk
@@ -72,18 +72,27 @@ CMDS-all := $(CMDS-y) $(CMDS-n) $(CMDS-)
 
 -include $(DEPS-y) $(CMDS-y)
 
+ifdef ALLOW_EXPERIMENTAL_FUNCTIONS
+EXPERIMENTAL_CFLAGS := $(subst 1, -Wno-deprecated-declarations -Wno-deprecated -Wno-error=deprecated-declarations -Wno-error=deprecated, $(ALLOW_EXPERIMENTAL_FUNCTIONS))
+else
+EXPERIMENTAL_CFLAGS := 
+endif
+
 # command to compile a .c file to generate an object
 ifeq ($(USE_HOST),1)
 C_TO_O = $(HOSTCC) -Wp,-MD,$(call obj2dep,$(@)).tmp $(HOST_CPPFLAGS) $(HOST_CFLAGS) \
-	$(CFLAGS_$(@)) $(HOST_EXTRA_CPPFLAGS) $(HOST_EXTRA_CFLAGS) -o $@ -c $<
+	$(CFLAGS_$(@)) $(HOST_EXTRA_CPPFLAGS) $(HOST_EXTRA_CFLAGS) $(EXPERIMENTAL_CFLAGS) -o $@ -c $<
 C_TO_O_STR = $(subst ','\'',$(C_TO_O)) #'# fix syntax highlight
 C_TO_O_DISP = $(if $(V),"$(C_TO_O_STR)","  HOSTCC $(@)")
 else
 C_TO_O = $(CC) -Wp,-MD,$(call obj2dep,$(@)).tmp $(CPPFLAGS) $(CFLAGS) \
-	$(CFLAGS_$(@)) $(EXTRA_CPPFLAGS) $(EXTRA_CFLAGS) -o $@ -c $<
+	$(CFLAGS_$(@)) $(EXTRA_CPPFLAGS) $(EXTRA_CFLAGS) $(EXPERIMENTAL_CFLAGS) -o $@ -c $<
 C_TO_O_STR = $(subst ','\'',$(C_TO_O)) #'# fix syntax highlight
 C_TO_O_DISP = $(if $(V),"$(C_TO_O_STR)","  CC $(@)")
 endif
+EXPERIMENTAL_CHECK = $(RTE_SDK)/buildtools/experimentalsyms.sh
+CHECK_EXPERIMENTAL = $(EXPERIMENTAL_CHECK) $(SRCDIR)/$(EXPORT_MAP) $@
+
 PMDINFO_GEN = $(RTE_SDK_BIN)/app/dpdk-pmdinfogen $@ $@.pmd.c
 PMDINFO_CC = $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@.pmd.o $@.pmd.c
 PMDINFO_LD = $(CROSS)ld $(LDFLAGS) -r -o $@.o $@.pmd.o $@
@@ -100,6 +109,7 @@ C_TO_O_DO = @set -e; \
 	echo $(C_TO_O_DISP); \
 	$(C_TO_O) && \
 	$(PMDINFO_TO_O) && \
+	$(CHECK_EXPERIMENTAL) && \
 	echo $(C_TO_O_CMD) > $(call obj2cmd,$(@)) && \
 	sed 's,'$@':,dep_'$@' =,' $(call obj2dep,$(@)).tmp > $(call obj2dep,$(@)) && \
 	rm -f $(call obj2dep,$(@)).tmp
diff --git a/mk/toolchain/clang/rte.vars.mk b/mk/toolchain/clang/rte.vars.mk
index dde922d22..3cfe92545 100644
--- a/mk/toolchain/clang/rte.vars.mk
+++ b/mk/toolchain/clang/rte.vars.mk
@@ -67,7 +67,7 @@ WERROR_FLAGS := -W -Wall -Wstrict-prototypes -Wmissing-prototypes
 WERROR_FLAGS += -Wmissing-declarations -Wold-style-definition -Wpointer-arith
 WERROR_FLAGS += -Wnested-externs -Wcast-qual
 WERROR_FLAGS += -Wformat-nonliteral -Wformat-security
-WERROR_FLAGS += -Wundef -Wwrite-strings
+WERROR_FLAGS += -Wundef -Wwrite-strings -Wdeprecated
 
 ifeq ($(RTE_DEVEL_BUILD),y)
 WERROR_FLAGS += -Werror
diff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/rte.vars.mk
index 3b907e201..3356a37c8 100644
--- a/mk/toolchain/gcc/rte.vars.mk
+++ b/mk/toolchain/gcc/rte.vars.mk
@@ -75,7 +75,7 @@ WERROR_FLAGS := -W -Wall -Wstrict-prototypes -Wmissing-prototypes
 WERROR_FLAGS += -Wmissing-declarations -Wold-style-definition -Wpointer-arith
 WERROR_FLAGS += -Wcast-align -Wnested-externs -Wcast-qual
 WERROR_FLAGS += -Wformat-nonliteral -Wformat-security
-WERROR_FLAGS += -Wundef -Wwrite-strings
+WERROR_FLAGS += -Wundef -Wwrite-strings -Wdeprecated
 
 ifeq ($(RTE_DEVEL_BUILD),y)
 WERROR_FLAGS += -Werror
diff --git a/mk/toolchain/icc/rte.vars.mk b/mk/toolchain/icc/rte.vars.mk
index 33a8ba79e..b4b992e0e 100644
--- a/mk/toolchain/icc/rte.vars.mk
+++ b/mk/toolchain/icc/rte.vars.mk
@@ -70,10 +70,10 @@ TOOLCHAIN_ASFLAGS =
 #   error #15527: loop was not vectorized: function call to fprintf cannot be vectorize
 #                   was declared "deprecated"
 #   Warning #11074, 11076: to prevent "inline-max-size" warnings.
-WERROR_FLAGS := -Wall -w2 -diag-disable 271 -diag-warning 1478
+WERROR_FLAGS := -Wall -w2 -diag-disable 271 -diag-warning 1478 
 WERROR_FLAGS += -diag-disable 13368 -diag-disable 15527
 WERROR_FLAGS += -diag-disable 188
-WERROR_FLAGS += -diag-disable 11074 -diag-disable 11076
+WERROR_FLAGS += -diag-disable 11074 -diag-disable 11076 -Wdeprecated
 
 ifeq ($(RTE_DEVEL_BUILD),y)
 WERROR_FLAGS += -Werror-all
-- 
2.14.3

  parent reply	other threads:[~2017-12-01 18:57 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-12-01 18:56 [PATCH 0/4] dpdk: enhance EXPERIMENTAL api tagging Neil Horman
2017-12-01 18:56 ` [PATCH 1/4] buildtools: Add tool to check EXPERIMENTAL api exports Neil Horman
2017-12-01 18:56 ` [PATCH 2/4] compat: Add __experimental macro Neil Horman
2017-12-01 18:56 ` [PATCH 3/4] dpdk: add __experimental tag to appropriate api calls Neil Horman
2017-12-01 18:56 ` Neil Horman [this message]
2017-12-08 17:14 ` [PATCHv2 0/4] dpdk: enhance EXPERIMENTAL api tagging Neil Horman
2017-12-08 17:14   ` [PATCHv2 1/4] buildtools: Add tool to check EXPERIMENTAL api exports Neil Horman
2017-12-08 17:14   ` [PATCHv2 2/4] compat: Add __experimental macro Neil Horman
2017-12-08 17:14   ` [PATCHv2 3/4] Makefiles: Add experimental tag check and warnings to trigger on use Neil Horman
2017-12-11 11:35     ` Bruce Richardson
2017-12-11 12:40       ` Neil Horman
2017-12-11 12:45         ` Bruce Richardson
2017-12-11 18:44           ` Neil Horman
2017-12-08 17:14   ` [PATCHv2 4/4] dpdk: add __experimental tag to appropriate api calls Neil Horman
2017-12-11 19:36 ` [PATCHv3 0/4] dpdk: enhance EXPERIMENTAL api tagging Neil Horman
2017-12-11 19:36   ` [PATCHv3 1/4] buildtools: Add tool to check EXPERIMENTAL api exports Neil Horman
2017-12-11 19:36   ` [PATCHv3 2/4] compat: Add __experimental macro Neil Horman
2017-12-11 19:36   ` [PATCHv3 3/4] Makefiles: Add experimental tag check and warnings to trigger on use Neil Horman
2017-12-11 19:36   ` [PATCHv3 4/4] dpdk: add __experimental tag to appropriate api calls Neil Horman
2017-12-12 14:07   ` [PATCHv3 0/4] dpdk: enhance EXPERIMENTAL api tagging Bruce Richardson
2017-12-30 17:15     ` Neil Horman
2018-01-04 12:56       ` Neil Horman
2018-01-05 14:08         ` Thomas Monjalon
2018-01-05 16:00           ` Neil Horman
2018-01-09  1:32             ` [dpdk-ci] " Neil Horman
2018-01-09  9:20               ` Thomas Monjalon
2018-01-09 12:36                 ` Neil Horman
2018-01-19 15:44                 ` Neil Horman
2017-12-12 14:33   ` Mcnamara, John
2017-12-12 20:18     ` Neil Horman
2017-12-12 15:11   ` Wiles, Keith
2017-12-12 20:14     ` Neil Horman
2017-12-13 15:17 ` [PATCHv4 " Neil Horman
2017-12-13 15:17   ` [PATCHv4 1/5] buildtools: Add tool to check EXPERIMENTAL api exports Neil Horman
2018-01-21 18:31     ` Thomas Monjalon
2018-01-21 22:07       ` Neil Horman
2017-12-13 15:17   ` [PATCHv4 2/5] compat: Add __experimental macro Neil Horman
2018-01-21 18:37     ` Thomas Monjalon
2017-12-13 15:17   ` [PATCHv4 3/5] Makefiles: Add experimental tag check and warnings to trigger on use Neil Horman
2018-01-11 20:06     ` Ferruh Yigit
2018-01-11 20:50       ` Neil Horman
2018-01-12 11:49         ` Ferruh Yigit
2018-01-12 12:44           ` Neil Horman
2018-01-21 18:54             ` Thomas Monjalon
2018-01-22  1:34               ` Neil Horman
2018-01-22  1:37                 ` Thomas Monjalon
2018-01-21 18:50     ` Thomas Monjalon
2018-01-22  1:19       ` Neil Horman
2017-12-13 15:17   ` [PATCHv4 4/5] dpdk: add __experimental tag to appropriate api calls Neil Horman
2018-01-11 20:06     ` Ferruh Yigit
2018-01-11 21:24       ` Neil Horman
2018-01-12 11:50         ` Ferruh Yigit
2018-01-12 14:25           ` Neil Horman
2018-01-12 15:53             ` Ferruh Yigit
2017-12-13 15:17   ` [PATCHv4 5/5] doc: Add ABI __experimental tag documentation Neil Horman
2017-12-13 15:32     ` Bruce Richardson
2018-01-11 20:06     ` Ferruh Yigit
2018-01-11 21:29       ` Neil Horman
2018-01-12 11:50         ` Ferruh Yigit
2018-01-12 14:37           ` Neil Horman
2018-01-12 15:55             ` Ferruh Yigit
2018-01-13  0:28               ` Neil Horman
2018-01-13 15:56                 ` Thomas Monjalon
2018-01-14 14:36                   ` Neil Horman
2018-01-14 16:27                     ` Thomas Monjalon
2018-01-21 20:14     ` Thomas Monjalon
2017-12-13 15:32   ` [PATCHv4 0/4] dpdk: enhance EXPERIMENTAL api tagging Bruce Richardson
2017-12-21 14:21   ` Neil Horman
2017-12-30 19:20   ` Luca Boccassi
2017-12-31  1:57     ` Neil Horman
2018-01-22  1:48 ` [PATCH 0/5] " Neil Horman
2018-01-22  1:48   ` [[PATCH v5] 1/5] buildtools: Add tool to check EXPERIMENTAL api exports Neil Horman
2018-01-22  1:48   ` [[PATCH v5] 2/5] compat: Add __rte_experimental macro Neil Horman
2018-01-22  1:48   ` [[PATCH v5] 3/5] Makefiles: Add experimental tag check and warnings to trigger on use Neil Horman
2018-01-22  1:48   ` [[PATCH v5] 4/5] dpdk: add __rte_experimental tag to appropriate api calls Neil Horman
2018-01-22  1:48   ` [[PATCH v5] 5/5] doc: Add ABI __experimental tag documentation Neil Horman
2018-01-23 10:35     ` Mcnamara, John
2018-01-29 21:42       ` Thomas Monjalon
2018-01-29 21:46   ` [PATCH 0/5] dpdk: enhance EXPERIMENTAL api tagging Thomas Monjalon
2018-01-30 15:54     ` Neil Horman
2018-01-30 16:15       ` Thomas Monjalon
2018-01-31 12:18         ` Neil Horman
2018-01-31 12:36           ` Thomas Monjalon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171201185628.16261-5-nhorman@tuxdriver.com \
    --to=nhorman@tuxdriver.com \
    --cc=dev@dpdk.org \
    --cc=john.mcnamara@intel.com \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.