- AC_MSG_CHECKING([whether $CXX supports c++11/AVX/AVX2])
- AVX_CXXFLAGS="-march=core-avx-i"
- AVX2_CXXFLAGS="-march=core-avx2"
-
- AC_LANG_PUSH([C++])
- save_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS="-std=c++11 $CXXFLAGS"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],[],
- [AC_MSG_ERROR([c++11 compiler support not detected])])
- CXXFLAGS="$save_CXXFLAGS"
-
- save_CXXFLAGS="$CXXFLAGS"
- CXXFLAGS="$AVX_CXXFLAGS $CXXFLAGS"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],[],
- [AC_MSG_ERROR([AVX compiler support not detected])])
- CXXFLAGS="$save_CXXFLAGS"
-
- save_CFLAGS="$CXXFLAGS"
- CXXFLAGS="$AVX2_CXXFLAGS $CXXFLAGS"
- AC_COMPILE_IFELSE([AC_LANG_PROGRAM()],[],
- [AC_MSG_ERROR([AVX2 compiler support not detected])])
- CXXFLAGS="$save_CXXFLAGS"
- AC_LANG_POP([C++])
+ swr_require_cxx_feature_flags "C++11" "__cplusplus >= 201103L" \
+ ",-std=c++11" \
+ SWR_CXX11_CXXFLAGS
+ AC_SUBST([SWR_CXX11_CXXFLAGS])
+
+ swr_require_cxx_feature_flags "AVX" "defined(__AVX__)" \
+ ",-mavx,-march=core-avx" \
+ SWR_AVX_CXXFLAGS
+ AC_SUBST([SWR_AVX_CXXFLAGS])
+
+ swr_require_cxx_feature_flags "AVX2" "defined(__AVX2__)" \
+ ",-mavx2 -mfma -mbmi2 -mf16c,-march=core-avx2" \
+ SWR_AVX2_CXXFLAGS
+ AC_SUBST([SWR_AVX2_CXXFLAGS])