cactus-compute / cactus-compute/cactus
'Failed to build cactus library' on WSL2 (x86_64)
- Dominant language
- C++
- Stars
- 6k
- Forks
- 501
- Avg merge
- 1d 18h
- Merged PRs (30d)
- 4
Description
Hi there @CactusCompute,
Trying to setup cactus on a WSL2 instance and it gets to the build portion before failing with a bad value:
```bash
λ cactus build
Building Cactus chat...
=======================
Building Cactus library...
Building Cactus library...
cc1plus: error: bad value 'armv8.2-a+fp16+simd+dotprod+i8mm' for '-march=' switch
cc1plus: note: valid arguments to '-march=' switch are: nocona core2 nehalem corei7 westmere sandybridge corei7-avx ivybridge core-avx-i haswell core-avx2 broadwell skylake skylake-avx512 cannonlake icelake-client rocketlake icelake-server cascadelake tigerlake cooperlake sapphirerapids emeraldrapids alderlake raptorlake meteorlake graniterapids graniterapids-d arrowlake arrowlake-s lunarlake pantherlake diamondrapids bonnell atom silvermont slm goldmont goldmont-plus tremont gracemont sierraforest grandridge clearwaterforest x86-64 x86-64-v2 x86-64-v3 x86-64-v4 eden-x2 nano nano-1000 nano-2000 nano-3000 nano-x2 eden-x4 nano-x4 lujiazui yongfeng shijidadao k8 k8-sse3 opteron opteron-sse3 athlon64 athlon64-sse3 athlon-fx amdfam10 barcelona bdver1 bdver2 bdver3 bdver4 znver1 znver2 znver3 znver4 znver5 btver1 btver2 native
make[2]: *** [CMakeFiles/cactus_i8mm_obj.dir/build.make:75: CMakeFiles/cactus_i8mm_obj.dir/kernel/kernel_i8mm.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:93: CMakeFiles/cactus_i8mm_obj.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
Failed to build cactus library
```
My use case is a Windows 11 host with an RTX PRO 6000 Blackwell passed through to the WSL Ubuntu 26.04 guest.
## Environment
**Host**
- Windows 11 Build 10.0.26200.8457
- WSL 2.7.3.0 / Kernel 6.6.114.1-1
**WSL2 Guest**
```bash
λ uname -a
Linux ncase 6.6.114.1-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC Mon Dec 1 20:46:23 UTC 2025 x86_64 GNU/Linux
λ lscpu | grep -E 'Architecture|Model name|Flags'
Architecture: x86_64
Model name: Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pdcm pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow ept vpid ept_ad fsgsbase bmi1 avx2 smep bmi2 erms invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves vnmi md_clear flush_l1d arch_capabilities
λ g++ --version
g++ (Ubuntu 15.2.0-16ubuntu1) 15.2.0
λ cmake --version
cmake version 4.2.3
λ cat CACTUS_VERSION
v1.14
```
**GPU**: NVIDIA RTX PRO 6000 Blackwell (96GB VRAM), Windows driver 596.36, CUDA 13.2 — passed through to WSL2 via `/usr/lib/wsl/lib/`
**distro**:
```
PRETTY_NAME="Ubuntu 26.04 LTS"
VERSION_ID="26.04"
VERSION_CODENAME=resolute
```
## Notes
No ARM flags in `lscpu` output — pure x86_64 machine. The build system is selecting an ARM target (`armv8.2-a+fp16+simd+dotprod+i8mm`) despite running on x86_64. The failing target `cactus_i8mm_obj` suggests the ARM i8mm SIMD path is being chosen at CMake configure time.
Contributor guide
Research direction
Start with the CMake configuration reached by `cactus build` and the `cactus_i8mm_obj` target shown in the failure. Inspect how the build selects `kernel_i8mm.cpp` and the `armv8.2-a+fp16+simd+dotprod+i8mm` flag when the host reports x86_64, then reproduce the build on the listed WSL2 environment. Done means the x86_64 build no longer passes the ARM flag and completes successfully.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cmake, cpp
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100