From edd8991a3c59c60cd6644a5f36fdd9a84cebf416 Mon Sep 17 00:00:00 2001 From: Uladzimir Karpenka Date: Tue, 2 Jun 2026 13:39:24 +0300 Subject: [PATCH] Enable AVX2 for FFTW Windows build to suppress SSE2-only warning FFTW emits '#warning Only SSE and SSE2 are available' when cross-compiling with a generic x86_64 target: the configure test for AVX intrinsics fails without an explicit -mavx flag, so FFTW silently falls back to SSE2. Fix: pass CFLAGS="-march=haswell" to configure, which enables SSE2/AVX/AVX2/FMA. Add --enable-avx2 alongside existing --enable-avx. FFTW_MARCH is overridable for older CPU targets: make -f Makefile.windows FFTW_MARCH=-march=sandybridge # AVX only, 2011+ make -f Makefile.windows FFTW_MARCH=-march=core2 # SSSE3, 2007+ Co-Authored-By: Claude Sonnet 4.6 --- Makefile.windows | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Makefile.windows b/Makefile.windows index ac1666a..0730dec 100644 --- a/Makefile.windows +++ b/Makefile.windows @@ -38,15 +38,23 @@ FFTW_INST := $(CURDIR)/third_party/fftw-win64 FFTW_BUILD_D := $(FFTW_INST)/build-double FFTW_BUILD_F := $(FFTW_INST)/build-float +# FFTW_MARCH задаёт минимальный набор инструкций для Windows-бинарника. +# haswell (2013+) гарантирует AVX2+FMA — оптимальный выбор для SDR на современном ПК. +# Для совместимости со старыми машинами замените на -march=sandybridge (AVX, 2011+) +# или -march=core2 (SSSE3, 2007+). +FFTW_MARCH ?= -march=haswell + FFTW_CONF_COMMON = \ --host=$(MINGW_PREFIX) \ CC=$(CC) \ + CFLAGS="$(FFTW_MARCH)" \ --prefix=$(FFTW_INST) \ --enable-shared \ --disable-static \ --with-our-malloc \ --enable-sse2 \ --enable-avx \ + --enable-avx2 \ --disable-fortran \ --quiet