[dpdk-dev] mk: Work around Debian/Ubuntu-specific 'gcc -dumpversion' output
Commit Message
Commit 71f0ab1849b4fc3ca928deb566df12ca725ed150 broke compilation
on some versions of Debian and Ubuntu where gcc has been modified
to only emit MAJOR.MINOR part of the version from 'gcc -dumpversion'.
Drop the micro-version from gcc version comparisons to work around
this, it wasn't being used for anything anyway.
Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
---
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 | 16 ++++++++--------
5 files changed, 14 insertions(+), 14 deletions(-)
Comments
Panu,
ack (and works with my debian gcc).
Hi Panu, David,
On 02/24/2015 11:59 AM, David Marchand wrote:
>> >Commit 71f0ab1849b4fc3ca928deb566df12ca725ed150 broke compilation
>> >on some versions of Debian and Ubuntu where gcc has been modified
>> >to only emit MAJOR.MINOR part of the version from 'gcc -dumpversion'.
>> >Drop the micro-version from gcc version comparisons to work around
>> >this, it wasn't being used for anything anyway.
>> >
>> >Signed-off-by: Panu Matilainen<pmatilai@redhat.com>
>
> ack (and works with my debian gcc).
>
One question: will it work with a version like with 2 digits
for major or minor like 4.10.0 or 10.0.0?
(or maybe it cannot happen with gcc naming conventions?)
Thanks,
Olivier
On 02/24/2015 01:14 PM, Olivier MATZ wrote:
> Hi Panu, David,
>
> On 02/24/2015 11:59 AM, David Marchand wrote:
>>> >Commit 71f0ab1849b4fc3ca928deb566df12ca725ed150 broke compilation
>>> >on some versions of Debian and Ubuntu where gcc has been modified
>>> >to only emit MAJOR.MINOR part of the version from 'gcc -dumpversion'.
>>> >Drop the micro-version from gcc version comparisons to work around
>>> >this, it wasn't being used for anything anyway.
>>> >
>>> >Signed-off-by: Panu Matilainen<pmatilai@redhat.com>
>>
>> ack (and works with my debian gcc).
>>
>
> One question: will it work with a version like with 2 digits
> for major or minor like 4.10.0 or 10.0.0?
> (or maybe it cannot happen with gcc naming conventions?)
The original change mentions this:
This [...] 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.
...but that's not entirely accurate, 4.10.0 would be a problem but
10.0.0 not.
- Panu -
2015-02-24 11:59, David Marchand:
> Panu,
>
> ack (and works with my debian gcc).
>
> > Commit 71f0ab1849b4fc3ca928deb566df12ca725ed150 broke compilation
> > on some versions of Debian and Ubuntu where gcc has been modified
> > to only emit MAJOR.MINOR part of the version from 'gcc -dumpversion'.
> > Drop the micro-version from gcc version comparisons to work around
> > this, it wasn't being used for anything anyway.
> >
> > Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
Applied, thanks
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Panu Matilainen
> Sent: Tuesday, February 24, 2015 10:47 AM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH] mk: Work around Debian/Ubuntu-specific 'gcc -
> dumpversion' output
>
> Commit 71f0ab1849b4fc3ca928deb566df12ca725ed150 broke compilation on some
> versions of Debian and Ubuntu where gcc has been modified to only emit
> MAJOR.MINOR part of the version from 'gcc -dumpversion'.
> Drop the micro-version from gcc version comparisons to work around this,
> it wasn't being used for anything anyway.
>
> -ifeq ($(shell test $(GCC_VERSION) -ge 440 && echo 1), 1)
> +ifeq ($(shell test $(GCC_VERSION) -ge 44 && echo 1), 1)
Hi,
I see this has been applied already but to me this version is less clear than the previous patch version.
And are we sure we won't need the micro-version. If we do, to account for something broken in a point release of gcc, we will have to redo this patch again.
John
On 02/24/2015 03:34 PM, Mcnamara, John wrote:
>> -----Original Message-----
>> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Panu Matilainen
>> Sent: Tuesday, February 24, 2015 10:47 AM
>> To: dev@dpdk.org
>> Subject: [dpdk-dev] [PATCH] mk: Work around Debian/Ubuntu-specific 'gcc -
>> dumpversion' output
>>
>> Commit 71f0ab1849b4fc3ca928deb566df12ca725ed150 broke compilation on some
>> versions of Debian and Ubuntu where gcc has been modified to only emit
>> MAJOR.MINOR part of the version from 'gcc -dumpversion'.
>> Drop the micro-version from gcc version comparisons to work around this,
>> it wasn't being used for anything anyway.
>>
>> -ifeq ($(shell test $(GCC_VERSION) -ge 440 && echo 1), 1)
>> +ifeq ($(shell test $(GCC_VERSION) -ge 44 && echo 1), 1)
>
> Hi,
>
> I see this has been applied already but to me this version is less clear than the previous patch version.
>
> And are we sure we won't need the micro-version. If we do, to account for something broken in a point release of gcc, we will have to redo this patch again.
Sure? I'm not enough of a fool to say yes to a question like that. I
just know it hasn't been needed before, and it seems unlikely it will be
needed later on either, gcc micro-version updates tend to be conservative.
My only interest here was to fix the version comparisons in a way that
makes gcc 5 naturally supported, and I dont really give a damn whether
there's a micro-version involved or not :) If you feel strongly about
it, send a patch. I'm not going to object.
- Panu -
@@ -62,7 +62,7 @@ else
#
# CFLAGS for gcc
#
-ifeq ($(shell test $(GCC_VERSION) -ge 440 && echo 1), 1)
+ifeq ($(shell test $(GCC_VERSION) -ge 44 && echo 1), 1)
CFLAGS += -Wno-deprecated
endif
CFLAGS_BASE_DRIVER = -Wno-unused-parameter -Wno-unused-value
@@ -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_VERSION) -ge 440 && echo 1), 1)
+ifeq ($(shell test $(GCC_VERSION) -ge 44 && echo 1), 1)
CFLAGS_BASE_DRIVER += -Wno-unused-but-set-variable
endif
@@ -60,18 +60,18 @@ else
#
# CFLAGS for gcc
#
-ifeq ($(shell test $(GCC_VERSION) -ge 440 && echo 1), 1)
+ifeq ($(shell test $(GCC_VERSION) -ge 44 && 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_VERSION) -ge 460 && echo 1), 1)
+ifeq ($(shell test $(GCC_VERSION) -ge 46 && 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_VERSION) -le 460 && echo 1), 1)
+ifeq ($(shell test $(GCC_VERSION) -le 46 && echo 1), 1)
CFLAGS_ixgbe_x550.o += -Wno-uninitialized
CFLAGS_ixgbe_phy.o += -Wno-uninitialized
endif
@@ -56,7 +56,7 @@ else
#
# CFLAGS for gcc
#
-ifeq ($(shell test $(GCC_VERSION) -ge 440 && echo 1), 1)
+ifeq ($(shell test $(GCC_VERSION) -ge 44 && echo 1), 1)
CFLAGS += -Wno-deprecated
endif
CFLAGS_BASE_DRIVER = -Wno-unused-parameter -Wno-unused-value
@@ -38,10 +38,10 @@
#find out GCC version
-GCC_VERSION = $(subst .,,$(shell $(CC) -dumpversion))
+GCC_VERSION = $(subst .,,$(shell $(CC) -dumpversion | cut -f1-2 -d.))
# if GCC is older than 4.x
-ifeq ($(shell test $(GCC_VERSION) -lt 400 && echo 1), 1)
+ifeq ($(shell test $(GCC_VERSION) -lt 40 && echo 1), 1)
MACHINE_CFLAGS =
$(warning You are using GCC < 4.x. This is neither supported, nor tested.)
@@ -55,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_VERSION) -le 470 && echo 1), 1)
+ ifeq ($(shell test $(GCC_VERSION) -le 47 && 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_VERSION) -lt 460 && echo 1), 1)
+ ifeq ($(shell test $(GCC_VERSION) -lt 46 && 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_VERSION) -lt 450 && echo 1), 1)
+ ifeq ($(shell test $(GCC_VERSION) -lt 45 && echo 1), 1)
MACHINE_CFLAGS := $(patsubst -march=atom,-march=core2 -mssse3,$(MACHINE_CFLAGS))
endif
- ifeq ($(shell test $(GCC_VERSION) -lt 440 && echo 1), 1)
+ ifeq ($(shell test $(GCC_VERSION) -lt 44 && echo 1), 1)
MACHINE_CFLAGS := $(filter-out -mavx -mpclmul -maes,$(MACHINE_CFLAGS))
ifneq ($(findstring SSE4_2, $(CPUFLAGS)),)
MACHINE_CFLAGS += -msse4.2
@@ -75,12 +75,12 @@ else
MACHINE_CFLAGS += -msse4.1
endif
endif
- ifeq ($(shell test $(GCC_VERSION) -lt 430 && echo 1), 1)
+ ifeq ($(shell test $(GCC_VERSION) -lt 43 && 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_VERSION) -lt 420 && echo 1), 1)
+ ifeq ($(shell test $(GCC_VERSION) -lt 42 && echo 1), 1)
MACHINE_CFLAGS := $(filter-out -march% -mtune% -msse%,$(MACHINE_CFLAGS))
endif
endif