Requirements¶
| Requirement | Version |
|---|---|
| LLVM | 17 – 22 (tested on 17, 18, 19, 21, 22) |
| CMake | 3.20+ |
| C++ | C++17 |
Platform notes¶
-
Windows — Clang-CL only, and
-fpass-pluginis not available: the MSVC-targeted LLVM ships withLLVM_ENABLE_PLUGINS=OFF, so neitherclang -fpass-pluginnoropt --load-pass-plugincan load kagura. The passes build into a static library (KaguraObfuscator.lib) and are run throughkagura-optinstead, which links them in. See the Windows (Clang-CL) tab of Build from Source for the workflow. -
WebAssembly — five passes bail out on a Wasm triple, because Wasm requires structured control flow, has no native debugger surface, no ptrace, no loadable image list, and no way to take the address of code:
kagura-fla,kagura-anti-debug,kagura-pac,kagura-tamperandkagura-vm.-kagura-autoselectalso stops proposingflathere. Everything else — the string, constant, global and data passes — works normally. -
iOS / Android — see Integration for build-system wiring (Xcode, Gradle / NDK).