[dpdk-dev] [PATCH 3/6] mk: Ensure correct detection of SSE4.2 on FreeBSD

Bruce Richardson bruce.richardson at intel.com
Tue Jul 8 01:36:56 CEST 2014


Add a special case to the native target makefile, where we check if
-march=native shows SSE4.2 support. If it does not, then not everything may
build, so we check if the hardware supports SSE4.2, and use a corei7 target
explicitly to get the SSE4.2 support.

Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
---
 mk/machine/native/rte.vars.mk | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/mk/machine/native/rte.vars.mk b/mk/machine/native/rte.vars.mk
index da9aa71..f495973 100644
--- a/mk/machine/native/rte.vars.mk
+++ b/mk/machine/native/rte.vars.mk
@@ -56,3 +56,15 @@
 # CPU_ASFLAGS =
 
 MACHINE_CFLAGS = -march=native
+
+# on FreeBSD systems, sometimes the correct cputype is not picked up.
+# To get everything to compile, we need SSE4.2 support, so check if that is
+# reported by compiler. If not, check if the CPU actually supports it, and if
+# so, set the compilation target to be a corei7, minimum target with SSE4.2
+SSE42_SUPPORT=$(shell $(CC) -march=native -dM -E - < /dev/null | grep SSE4_2)
+ifeq ($(SSE42_SUPPORT),)
+  CPU_SSE42_SUPPORT=$(shell if [ -f /var/run/dmesg.boot ] ; then grep SSE4\.2 /var/run/dmesg.boot ; fi)
+  ifneq ($(CPU_SSE42_SUPPORT),)
+    MACHINE_CFLAGS= -march=corei7
+  endif
+endif
-- 
1.9.3



More information about the dev mailing list