From 71f0ab1849b4fc3ca928deb566df12ca725ed150 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Mon, 23 Feb 2015 16:53:56 +0200 Subject: [PATCH] mk: rework gcc version detection to permit versions newer than 4.x Separately comparing major and minor versions becomes seriously clumsy when with major version changes, convert the entire version string into a numeric value (ie 4.6.0 becomes 460 and 5.0.0 becomes 500) and use that for comparisons, eliminate unnecessary negations while at it. This makes the comparisons simpler, more obvious and makes gcc 5.0 naturally recognized at least as capable as newest 4.x. This three-digit scheme would run into trouble if gcc ever went to two-digit version segments, but that hasn't happened in the last 10+ years so it seems like a safe assumption. Signed-off-by: Panu Matilainen Acked-by: Thomas Monjalon --- lib/librte_pmd_fm10k/Makefile | 2 +- lib/librte_pmd_i40e/Makefile | 2 +- lib/librte_pmd_ixgbe/Makefile | 6 +++--- lib/librte_pmd_vmxnet3/Makefile | 2 +- mk/toolchain/gcc/rte.toolchain-compat.mk | 22 ++++++++++------------ 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/lib/librte_pmd_fm10k/Makefile b/lib/librte_pmd_fm10k/Makefile index 26663ae0ed..2730b8150e 100644 --- a/lib/librte_pmd_fm10k/Makefile +++ b/lib/librte_pmd_fm10k/Makefile @@ -62,7 +62,7 @@ else # # CFLAGS for gcc # -ifneq ($(shell test $(GCC_MAJOR_VERSION) -le 4 -a $(GCC_MINOR_VERSION) -le 3 && echo 1), 1) +ifeq ($(shell test $(GCC_VERSION) -ge 440 && echo 1), 1) CFLAGS += -Wno-deprecated endif CFLAGS_BASE_DRIVER = -Wno-unused-parameter -Wno-unused-value diff --git a/lib/librte_pmd_i40e/Makefile b/lib/librte_pmd_i40e/Makefile index 9a0eec8808..484379af21 100644 --- a/lib/librte_pmd_i40e/Makefile +++ b/lib/librte_pmd_i40e/Makefile @@ -69,7 +69,7 @@ CFLAGS_BASE_DRIVER += -Wno-pointer-to-int-cast CFLAGS_BASE_DRIVER += -Wno-format-nonliteral CFLAGS_BASE_DRIVER += -Wno-format-security -ifeq ($(shell test $(GCC_MAJOR_VERSION) -ge 4 -a $(GCC_MINOR_VERSION) -ge 4 && echo 1), 1) +ifeq ($(shell test $(GCC_VERSION) -ge 440 && echo 1), 1) CFLAGS_BASE_DRIVER += -Wno-unused-but-set-variable endif diff --git a/lib/librte_pmd_ixgbe/Makefile b/lib/librte_pmd_ixgbe/Makefile index 0279f8cb5a..ab56cbfcd2 100644 --- a/lib/librte_pmd_ixgbe/Makefile +++ b/lib/librte_pmd_ixgbe/Makefile @@ -60,18 +60,18 @@ else # # CFLAGS for gcc # -ifneq ($(shell test $(GCC_MAJOR_VERSION) -le 4 -a $(GCC_MINOR_VERSION) -le 3 && echo 1), 1) +ifeq ($(shell test $(GCC_VERSION) -ge 440 && echo 1), 1) CFLAGS += -Wno-deprecated endif CFLAGS_BASE_DRIVER = -Wno-unused-parameter -Wno-unused-value CFLAGS_BASE_DRIVER += -Wno-strict-aliasing -Wno-format-extra-args -ifeq ($(shell test $(GCC_MAJOR_VERSION) -ge 4 -a $(GCC_MINOR_VERSION) -ge 6 && echo 1), 1) +ifeq ($(shell test $(GCC_VERSION) -ge 460 && echo 1), 1) CFLAGS_ixgbe_common.o += -Wno-unused-but-set-variable CFLAGS_ixgbe_x550.o += -Wno-unused-but-set-variable -Wno-maybe-uninitialized endif -ifeq ($(shell test $(GCC_MAJOR_VERSION) -le 4 -a $(GCC_MINOR_VERSION) -le 6 && echo 1), 1) +ifeq ($(shell test $(GCC_VERSION) -le 460 && echo 1), 1) CFLAGS_ixgbe_x550.o += -Wno-uninitialized CFLAGS_ixgbe_phy.o += -Wno-uninitialized endif diff --git a/lib/librte_pmd_vmxnet3/Makefile b/lib/librte_pmd_vmxnet3/Makefile index 93e55801d9..9dda0a78b4 100644 --- a/lib/librte_pmd_vmxnet3/Makefile +++ b/lib/librte_pmd_vmxnet3/Makefile @@ -56,7 +56,7 @@ else # # CFLAGS for gcc # -ifneq ($(shell test $(GCC_MAJOR_VERSION) -le 4 -a $(GCC_MINOR_VERSION) -le 3 && echo 1), 1) +ifeq ($(shell test $(GCC_VERSION) -ge 440 && echo 1), 1) CFLAGS += -Wno-deprecated endif CFLAGS_BASE_DRIVER = -Wno-unused-parameter -Wno-unused-value diff --git a/mk/toolchain/gcc/rte.toolchain-compat.mk b/mk/toolchain/gcc/rte.toolchain-compat.mk index e40e103ba9..a8675594ac 100644 --- a/mk/toolchain/gcc/rte.toolchain-compat.mk +++ b/mk/toolchain/gcc/rte.toolchain-compat.mk @@ -38,17 +38,15 @@ #find out GCC version -GCC_MAJOR_VERSION = $(shell $(CC) -dumpversion | cut -f1 -d.) +GCC_VERSION = $(subst .,,$(shell $(CC) -dumpversion)) -# if GCC is not 4.x -ifneq ($(GCC_MAJOR_VERSION),4) +# if GCC is older than 4.x +ifeq ($(shell test $(GCC_VERSION) -lt 400 && echo 1), 1) MACHINE_CFLAGS = -$(warning You are not using GCC 4.x. This is neither supported, nor tested.) +$(warning You are using GCC < 4.x. This is neither supported, nor tested.) else - GCC_MINOR_VERSION = $(shell $(CC) -dumpversion | cut -f2 -d.) - # GCC graceful degradation # GCC 4.2.x - added support for generic target # GCC 4.3.x - added support for core2, ssse3, sse4.1, sse4.2 @@ -57,18 +55,18 @@ else # GCC 4.6.x - added support for corei7, corei7-avx # GCC 4.7.x - added support for fsgsbase, rdrnd, f16c, core-avx-i, core-avx2 - ifeq ($(shell test $(GCC_MINOR_VERSION) -le 7 && echo 1), 1) + ifeq ($(shell test $(GCC_VERSION) -le 470 && echo 1), 1) MACHINE_CFLAGS := $(patsubst -march=core-avx-i,-march=corei7-avx,$(MACHINE_CFLAGS)) MACHINE_CFLAGS := $(patsubst -march=core-avx2,-march=core-avx2,$(MACHINE_CFLAGS)) endif - ifeq ($(shell test $(GCC_MINOR_VERSION) -lt 6 && echo 1), 1) + ifeq ($(shell test $(GCC_VERSION) -lt 460 && echo 1), 1) MACHINE_CFLAGS := $(patsubst -march=corei7-avx,-march=core2 -maes -mpclmul -mavx,$(MACHINE_CFLAGS)) MACHINE_CFLAGS := $(patsubst -march=corei7,-march=core2 -maes -mpclmul,$(MACHINE_CFLAGS)) endif - ifeq ($(shell test $(GCC_MINOR_VERSION) -lt 5 && echo 1), 1) + ifeq ($(shell test $(GCC_VERSION) -lt 450 && echo 1), 1) MACHINE_CFLAGS := $(patsubst -march=atom,-march=core2 -mssse3,$(MACHINE_CFLAGS)) endif - ifeq ($(shell test $(GCC_MINOR_VERSION) -lt 4 && echo 1), 1) + ifeq ($(shell test $(GCC_VERSION) -lt 440 && echo 1), 1) MACHINE_CFLAGS := $(filter-out -mavx -mpclmul -maes,$(MACHINE_CFLAGS)) ifneq ($(findstring SSE4_2, $(CPUFLAGS)),) MACHINE_CFLAGS += -msse4.2 @@ -77,12 +75,12 @@ else MACHINE_CFLAGS += -msse4.1 endif endif - ifeq ($(shell test $(GCC_MINOR_VERSION) -lt 3 && echo 1), 1) + ifeq ($(shell test $(GCC_VERSION) -lt 430 && echo 1), 1) MACHINE_CFLAGS := $(filter-out -msse% -mssse%,$(MACHINE_CFLAGS)) MACHINE_CFLAGS := $(patsubst -march=core2,-march=generic,$(MACHINE_CFLAGS)) MACHINE_CFLAGS += -msse3 endif - ifeq ($(shell test $(GCC_MINOR_VERSION) -lt 2 && echo 1), 1) + ifeq ($(shell test $(GCC_VERSION) -lt 420 && echo 1), 1) MACHINE_CFLAGS := $(filter-out -march% -mtune% -msse%,$(MACHINE_CFLAGS)) endif endif -- 2.20.1