]> git.droids-corp.org - dpdk.git/commitdiff
mk: rework gcc version detection to permit versions newer than 4.x
authorPanu Matilainen <pmatilai@redhat.com>
Mon, 23 Feb 2015 14:53:56 +0000 (16:53 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Tue, 24 Feb 2015 02:47:29 +0000 (03:47 +0100)
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 <pmatilai@redhat.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
lib/librte_pmd_fm10k/Makefile
lib/librte_pmd_i40e/Makefile
lib/librte_pmd_ixgbe/Makefile
lib/librte_pmd_vmxnet3/Makefile
mk/toolchain/gcc/rte.toolchain-compat.mk

index 26663ae0ed4da117f9ece36e9e9710ab9216f5f4..2730b8150ef1259586fcb37669482e211dc83dee 100644 (file)
@@ -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
index 9a0eec8808db8c10f8e009a4b598934f821344e8..484379af2194b08515aa56990b2f2e796f221c77 100644 (file)
@@ -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
 
index 0279f8cb5a56c56a46bfb5e23ce376452c074fe9..ab56cbfcd28416e7b22ebcedb981b6bcc8d8c9c9 100644 (file)
@@ -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
index 93e55801d9998b678365b9e250e5a5d093065223..9dda0a78b4df2bbf2098618a5448b4fccc8700b4 100644 (file)
@@ -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
index e40e103ba9caa99b3c9def7d0b127fb3f72332fb..a8675594ace734e981de374d5c897f257121b8c1 100644 (file)
 
 #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