intel / intel/hyperscan

CMake parsing of CPU architecture fails with non-English locale

Open
#217 6 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
5.5k
Forks
816
Avg merge
4d 21h
Merged PRs (30d)
2

Description

I had problems compile hyperscan 5.2.1 on Gentoo Linux. The configuration fails with

```
-- gcc version 9.2.0
CMake Error at CMakeLists.txt:202 (message):
Something went wrong determining gcc tune: -mtune=«: not valid
```

My system has `LC_ALL="de_DE.utf8"` set and the output of `gcc -c -Q --help=target -march=native -mtune=native` looks like this:
```
Die folgenden Optionen sind zielspezifisch:
-m128bit-long-double [eingeschaltet]
-m16 [ausgeschaltet]
-m32 [ausgeschaltet]
-m3dnow [ausgeschaltet]
-m3dnowa [ausgeschaltet]
-m64 [eingeschaltet]
-m80387 [eingeschaltet]
-m8bit-idiv [ausgeschaltet]
-m96bit-long-double [ausgeschaltet]
-mabi= sysv
-mabm [eingeschaltet]
-maccumulate-outgoing-args [ausgeschaltet]
-maddress-mode= long
-madx [ausgeschaltet]
-maes [eingeschaltet]
-malign-data= compat
-malign-double [ausgeschaltet]
-malign-functions= 0
-malign-jumps= 0
-malign-loops= 0
-malign-stringops [eingeschaltet]
-mandroid [ausgeschaltet]
-march= haswell
-masm= att
-mavx [eingeschaltet]
-mavx2 [eingeschaltet]
-mavx256-split-unaligned-load [ausgeschaltet]
-mavx256-split-unaligned-store [ausgeschaltet]
-mavx5124fmaps [ausgeschaltet]
-mavx5124vnniw [ausgeschaltet]
-mavx512bitalg [ausgeschaltet]
-mavx512bw [ausgeschaltet]
-mavx512cd [ausgeschaltet]
-mavx512dq [ausgeschaltet]
-mavx512er [ausgeschaltet]
-mavx512f [ausgeschaltet]
-mavx512ifma [ausgeschaltet]
-mavx512pf [ausgeschaltet]
-mavx512vbmi [ausgeschaltet]
-mavx512vbmi2 [ausgeschaltet]
-mavx512vl [ausgeschaltet]
-mavx512vnni [ausgeschaltet]
-mavx512vpopcntdq [ausgeschaltet]
-mbionic [ausgeschaltet]
-mbmi [eingeschaltet]
-mbmi2 [eingeschaltet]
-mbranch-cost=<0,5> 3
-mcall-ms2sysv-xlogues [ausgeschaltet]
-mcet-switch [ausgeschaltet]
-mcld [ausgeschaltet]
-mcldemote [ausgeschaltet]
-mclflushopt [ausgeschaltet]
-mclwb [ausgeschaltet]
-mclzero [ausgeschaltet]
-mcmodel= [Standard]
-mcpu=
-mcrc32 [ausgeschaltet]
-mcx16 [eingeschaltet]
-mdispatch-scheduler [ausgeschaltet]
-mdump-tune-features [ausgeschaltet]
-mf16c [eingeschaltet]
-mfancy-math-387 [eingeschaltet]
-mfentry [ausgeschaltet]
-mfentry-name=
-mfentry-section=
-mfma [eingeschaltet]
-mfma4 [ausgeschaltet]
-mforce-drap [ausgeschaltet]
-mforce-indirect-call [ausgeschaltet]
-mfp-ret-in-387 [eingeschaltet]
-mfpmath= sse
-mfsgsbase [eingeschaltet]
-mfunction-return= keep
-mfused-madd
-mfxsr [eingeschaltet]
-mgeneral-regs-only [ausgeschaltet]
-mgfni [ausgeschaltet]
-mglibc [eingeschaltet]
-mhard-float [eingeschaltet]
-mhle [eingeschaltet]
-miamcu [ausgeschaltet]
-mieee-fp [eingeschaltet]
-mincoming-stack-boundary= 0
-mindirect-branch-register [ausgeschaltet]
-mindirect-branch= keep
-minline-all-stringops [ausgeschaltet]
-minline-stringops-dynamically [ausgeschaltet]
-minstrument-return= none
-mintel-syntax
-mlarge-data-threshold= 65536
-mlong-double-128 [ausgeschaltet]
-mlong-double-64 [ausgeschaltet]
-mlong-double-80 [eingeschaltet]
-mlwp [ausgeschaltet]
-mlzcnt [eingeschaltet]
-mmanual-endbr [ausgeschaltet]
-mmemcpy-strategy=
-mmemset-strategy=
-mmitigate-rop [ausgeschaltet]
-mmmx [eingeschaltet]
-mmovbe [eingeschaltet]
-mmovdir64b [ausgeschaltet]
-mmovdiri [ausgeschaltet]
-mmpx [ausgeschaltet]
-mms-bitfields [ausgeschaltet]
-mmusl [ausgeschaltet]
-mmwaitx [ausgeschaltet]
-mno-align-stringops [ausgeschaltet]
-mno-default [ausgeschaltet]
-mno-fancy-math-387 [ausgeschaltet]
-mno-push-args [ausgeschaltet]
-mno-red-zone [ausgeschaltet]
-mno-sse4 [ausgeschaltet]
-mnop-mcount [ausgeschaltet]
-momit-leaf-frame-pointer [ausgeschaltet]
-mpc32 [ausgeschaltet]
-mpc64 [ausgeschaltet]
-mpc80 [ausgeschaltet]
-mpclmul [eingeschaltet]
-mpcommit [ausgeschaltet]
-mpconfig [ausgeschaltet]
-mpku [ausgeschaltet]
-mpopcnt [eingeschaltet]
-mprefer-avx128
-mprefer-vector-width= none
-mpreferred-stack-boundary= 0
-mprefetchwt1 [ausgeschaltet]
-mprfchw [ausgeschaltet]
-mptwrite [ausgeschaltet]
-mpush-args [eingeschaltet]
-mrdpid [ausgeschaltet]
-mrdrnd [eingeschaltet]
-mrdseed [ausgeschaltet]
-mrecip [ausgeschaltet]
-mrecip=
-mrecord-mcount [ausgeschaltet]
-mrecord-return [ausgeschaltet]
-mred-zone [eingeschaltet]
-mregparm= 6
-mrtd [ausgeschaltet]
-mrtm [ausgeschaltet]
-msahf [eingeschaltet]
-msgx [ausgeschaltet]
-msha [ausgeschaltet]
-mshstk [ausgeschaltet]
-mskip-rax-setup [ausgeschaltet]
-msoft-float [ausgeschaltet]
-msse [eingeschaltet]
-msse2 [eingeschaltet]
-msse2avx [ausgeschaltet]
-msse3 [eingeschaltet]
-msse4 [eingeschaltet]
-msse4.1 [eingeschaltet]
-msse4.2 [eingeschaltet]
-msse4a [ausgeschaltet]
-msse5
-msseregparm [ausgeschaltet]
-mssse3 [eingeschaltet]
-mstack-arg-probe [ausgeschaltet]
-mstack-protector-guard-offset=
-mstack-protector-guard-reg=
-mstack-protector-guard-symbol=
-mstack-protector-guard= tls
-mstackrealign [ausgeschaltet]
-mstringop-strategy= [Standard]
-mstv [eingeschaltet]
-mtbm [ausgeschaltet]
-mtls-dialect= gnu
-mtls-direct-seg-refs [eingeschaltet]
-mtune-ctrl=
-mtune= haswell
-muclibc [ausgeschaltet]
-mvaes [ausgeschaltet]
-mveclibabi= [Standard]
-mvect8-ret-in-mem [ausgeschaltet]
-mvpclmulqdq [ausgeschaltet]
-mvzeroupper [eingeschaltet]
-mwaitpkg [ausgeschaltet]
-mwbnoinvd [ausgeschaltet]
-mx32 [ausgeschaltet]
-mxop [ausgeschaltet]
-mxsave [eingeschaltet]
-mxsavec [ausgeschaltet]
-mxsaveopt [eingeschaltet]
-mxsaves [ausgeschaltet]

Bekannte Assemblerdialekte (für Verwendung mit Option »-masm=«):
att intel

Bekannte ABIs (für Verwendung mit Option -mabi=):
ms sysv

Bekannte Codemodelle (für Verwendung mit Option -mcmodel=):
32 kernel large medium small

Gültige Argumente für -mfpmath=:
387 387+sse 387,sse both sse sse+387 sse,387

Bekannte indirekte Sprungauswahlen (für Verwendung mit den Optionen -mindirect-branch=/-mfunction-return=):
keep thunk thunk-extern thunk-inline

Bekannte Werte für Rückkehr-Instrumentierung mit -minstrument-return=:
call none nop5

Bekannte Datenausrichtungen (für Verwendung mit Option -malign-data=):
abi cacheline compat

Bekannte ABIs für Vektorisierungs-Bibliothek (für Verwendung mit Schalter -mveclibabi=):
acml svml

Bekannter Adressmodus (für Verwendung mit Option -maddress-mode=):
long short

Bekannte bevorzugte Länge von Registervektoren (für Verwendung mit der Option -mprefer-vector-width=):
128 256 512 none

Bekannte Stapelschutz-Wächter (für Verwendung mit Option -mstack-protector-guard=):
global tls

Gültige Arguments für -mstringop-strategy=:
byte_loop libcall loop rep_4byte rep_8byte rep_byte unrolled_loop vector_loop

Bekannte TLS-Dialekte (für Verwendung mit Option -mtls-dialect=):
gnu gnu2

Bekannte gültige Argumente für Option »-march=«:
i386 i486 i586 pentium lakemont pentium-mmx winchip-c6 winchip2 c3 samuel-2 c3-2 nehemiah c7 esther i686 pentiumpro pentium2 pentium3 pentium3m pentium-m pentium4 pentium4m prescott nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 cannonlake icelake-client icelake-server cascadelake bonnell atom silvermont slm goldmont goldmont-plus tremont knl knm intel geode k6 k6-2 k6-3 athlon athlon-tbird athlon-4 athlon-xp athlon-mp x86-64 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2 btver1 btver2 generic native

Bekannte gültige Argumente für Option »-mtune=«:
generic i386 i486 pentium lakemont pentiumpro pentium4 nocona core2 nehalem sandybridge haswell bonnell silvermont goldmont goldmont-plus tremont knl knm skylake skylake-avx512 cannonlake icelake-client icelake-server cascadelake intel geode k6 athlon k8 amdfam10 bdver1 bdver2 bdver3 bdver4 btver1 btver2 znver1 znver2
```

I could solve the installation problemby using `LC_ALL=C`. So, my guess is that the CMake parsing code relies on certain locale settings.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.