X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=mk%2Ftoolchain%2Fgcc%2Frte.toolchain-compat.mk;h=01ac7e2325df550ecc2463a2161df7f035c92d97;hb=bb12152c9d5bacd984f5a0a783327b4e3cb65c70;hp=0465c43c058b9a4a3525e2741a3e2a0be52688e7;hpb=1c1d4d7a923d4804f1926fc5264f9ecdd8977b04;p=dpdk.git diff --git a/mk/toolchain/gcc/rte.toolchain-compat.mk b/mk/toolchain/gcc/rte.toolchain-compat.mk index 0465c43c05..01ac7e2325 100644 --- a/mk/toolchain/gcc/rte.toolchain-compat.mk +++ b/mk/toolchain/gcc/rte.toolchain-compat.mk @@ -1,12 +1,12 @@ # BSD LICENSE -# -# Copyright(c) 2010-2013 Intel Corporation. All rights reserved. +# +# Copyright(c) 2010-2014 Intel Corporation. All rights reserved. # All rights reserved. -# +# # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: -# +# # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright @@ -16,7 +16,7 @@ # * Neither the name of Intel Corporation nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. -# +# # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -38,17 +38,17 @@ #find out GCC version -GCC_MAJOR_VERSION = $(shell $(CC) -dumpversion | cut -f1 -d.) +GCC_MAJOR = $(shell echo __GNUC__ | $(CC) -E -x c - | tail -n 1) +GCC_MINOR = $(shell echo __GNUC_MINOR__ | $(CC) -E -x c - | tail -n 1) +GCC_VERSION = $(GCC_MAJOR)$(GCC_MINOR) -# if GCC is not 4.x -ifneq ($(GCC_MAJOR_VERSION),4) +# if GCC is older than 4.x +ifeq ($(shell test $(GCC_VERSION) -lt 40 && 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 @@ -56,19 +56,24 @@ else # GCC 4.5.x - added support for atom # 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) +# GCC 4.9.x - added support for armv8-a+crc +# + ifeq ($(shell test $(GCC_VERSION) -le 49 && echo 1), 1) + MACHINE_CFLAGS := $(patsubst -march=armv8-a+crc,-march=armv8-a+crc -D__ARM_FEATURE_CRC32=1,$(MACHINE_CFLAGS)) + MACHINE_CFLAGS := $(patsubst -march=armv8-a+crc+crypto,-march=armv8-a+crc+crypto -D__ARM_FEATURE_CRC32=1,$(MACHINE_CFLAGS)) + endif + 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=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 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_MINOR_VERSION) -lt 5 && 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_MINOR_VERSION) -lt 4 && 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 @@ -77,21 +82,17 @@ else MACHINE_CFLAGS += -msse4.1 endif endif - ifeq ($(shell test $(GCC_MINOR_VERSION) -lt 3 && 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_MINOR_VERSION) -lt 2 && echo 1), 1) + ifeq ($(shell test $(GCC_VERSION) -lt 42 && echo 1), 1) MACHINE_CFLAGS := $(filter-out -march% -mtune% -msse%,$(MACHINE_CFLAGS)) endif -endif -MACHINE_CFLAGS += $(addprefix -DRTE_MACHINE_CPUFLAG_,$(CPUFLAGS)) -# To strip whitespace -comma:= , -empty:= -space:= $(empty) $(empty) -CPUFLAGSTMP1 := $(addprefix RTE_CPUFLAG_,$(CPUFLAGS)) -CPUFLAGSTMP2 := $(subst $(space),$(comma),$(CPUFLAGSTMP1)) -MACHINE_CFLAGS += -DRTE_COMPILE_TIME_CPUFLAGS=$(CPUFLAGSTMP2) + # Disable thunderx PMD for gcc < 4.7 + ifeq ($(shell test $(GCC_VERSION) -lt 47 && echo 1), 1) + CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD=d + endif +endif