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.
New in V2: * Re-enable ACL library for FreeBSD using gcc, which requires SSE4.2 * Adjust SSE42 detection command based on feedback from Thomas Monjalon Signed-off-by: Bruce Richardson <bruce.richardson at intel.com> --- config/defconfig_x86_64-native-bsdapp-gcc | 5 ----- mk/machine/native/rte.vars.mk | 12 ++++++++++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/config/defconfig_x86_64-native-bsdapp-gcc b/config/defconfig_x86_64-native-bsdapp-gcc index 2234193..e91738b 100644 --- a/config/defconfig_x86_64-native-bsdapp-gcc +++ b/config/defconfig_x86_64-native-bsdapp-gcc @@ -69,8 +69,3 @@ CONFIG_RTE_ARCH_X86_64=y # CONFIG_RTE_TOOLCHAIN="gcc" CONFIG_RTE_TOOLCHAIN_GCC=y - -# -# GCC doesn't detect SSE4.x support correctly on BSD, so disable ACL lib -# -CONFIG_RTE_LIBRTE_ACL=n diff --git a/mk/machine/native/rte.vars.mk b/mk/machine/native/rte.vars.mk index da9aa71..baabb39 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 grep SSE4\.2 /var/run/dmesg.boot 2>/dev/null) + ifneq ($(CPU_SSE42_SUPPORT),) + MACHINE_CFLAGS= -march=corei7 + endif +endif -- 2.0.0