CMake parsing of CPU architecture fails with non-English locale
- 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
Assessment
This issue has not been assessed yet.