qt5-core - Detecting and Compiling AES Support on Build System

Bryan Erickson bryan at xorcara.com
Sun Feb 17 23:57:26 GMT 2019


Hello Team;

I have a build system leveraging a tool similar to Poudriere(Synth) which builds ports for multiple clients. However, one of the systems does not have AES support which results in the following error:

Incompatible processor. This Qt build requires the following features: aes

The CPU is classified as SandyBridge and doesn't in fact have AES support:

$ sysctl hw.model hw.machine hw.ncpu
hw.model: Intel(R) Core(TM) i3-2330M CPU @ 2.20GHz
hw.machine: amd64
hw.ncpu: 4

https://ark.intel.com/products/53434/Intel-Core-i3-2330M-Processor-3M-Cache-2-20-GHz-

I have modified the make.conf of the build system to include the following:

CPUTYPE?=sandybridge
CFLAGS= -mno-aes

However, neither of the changes seem to impact the resulting error message.

Looking at the build logs, I can see the issue:

This is the Qt Open Source Edition.
You have already accepted the terms of the Open Source license.
Running configuration tests...
Checking for valid makespec... yes
Checking for target architecture... x86_64
Checking for SSE2 instructions... yes
Checking for AES new instructions... yes

Configure summary:
Build type: freebsd-clang (x86_64, CPU features: mmx sse sse2)
Compiler: clang 6.0.1
Configuration: sse2 aesni sse3 ssse3 sse4_1 sse4_2 avx avx2 avx512f avx512bw avx512cd avx512dq avx512er avx512ifma avx512pf avx512vbmi avx512vl compile_examples f16c la
Build options:
  Mode ................................... release
  Optimize release build for size ........ no
  Building shared libraries .............. yes
  Using C standard ....................... C11
  Using C++ standard ..................... C++1z
  Using ccache ........................... no
  Using gold linker ...................... no
  Using precompiled headers .............. no
  Using LTCG ............................. no
  Target compiler supports:
    SSE .................................. SSE2 SSE3 SSSE3 SSE4.1 SSE4.2
    AVX .................................. AVX AVX2
    AVX512 ............................... F ER CD PF DQ BW VL IFMA VBMI
    Other x86 ............................ AES F16C RDRAND SHA

But it does see my custom CFLAGS and CPUType:

===>  Building for qt5-core-5.12.1
/bin/mkdir -p /construction/xports/devel/qt5-core/work/qtbase-everywhere-src-5.12.1/src/tools/bootstrap
cd /construction/xports/devel/qt5-core/work/qtbase-everywhere-src-5.12.1/src/tools/bootstrap &&  /usr/bin/env QT_SELECT=qt5 QMAKEMODULES="/construction/xports/devel/qt5
--- .obj/qlatincodec.o ---
--- .obj/qtextcodec.o ---
--- .obj/qutfcodec.o ---
--- .obj/qendian.o ---
--- .obj/qlatincodec.o ---
c++ -c -mno-aes -march=sandybridge -fstack-protector -fno-strict-aliasing -fPIC -std=c++1z -fvisibility=hidden -fvisibility-inlines-hidden -ffunction-sections -fdata-se

Would you have any advice on how to proceed? 

Is there an additional modification that I need to my make.conf or is there some method for the build process to override the checks if the CFLAGS state no AES or the CPUTYPE is of a processor which doesn't have AES support?

Have a good day,

-- 
Bryan Erickson <bryan at xorcara.com>


More information about the kde-freebsd mailing list