usage: mach build [-h] [-c] [--tests] [--test] [--benchmarks] [--benchmark] [--no-openssl]
[--libtomcrypt] [-r] [-a ALGORITHMS] [-p TARGET] [-d DISABLE] [-s SANITIZER]
[--ndk NDK] [--msvc] [-e EDITION] [-l LANGUAGE] [-v] [-m32] [--no-build]
[--coverage]
Main entry point for building HACL
For convenience it is possible to run tests right after building using --test.
Supported cross compilation targets:
- x86_64-apple-darwin (macOS aarch64 only)
- s390x-linux-gnu
- aarch64-apple-ios (macOS only)
- aarch64-apple-darwin (macOS x64 only)
- aarch64-linux-android
Features that can be disabled:
- vec128 (avx/neon)
- vec256 (avx2)
- vale (x64 assembly)
Supported sanitizers:
- asan
- ubsan
Use an edition if you want a different build. Note that this build will
use the MSVC version by default on Windows.
Supported editions:
- c89
HACL can be built for another language than C.
Note that bindings will always require the full C library such that the
algorithm flag will be ignored.
- rust
- ocaml
- wasm (TBD)
! Windows builds are limited. The following arguments are not supported:
- algorithms
- sanitizer
- edition
- disable
- coverage
options:
-h, --help show this help message and exit
-c, --clean Clean before building.
--tests Build tests.
--test Build and run tests.
--benchmarks Build benchmarks.
--benchmark Build and run benchmarks.
--no-openssl Don't build and run OpenSSL benchmarks.
--libtomcrypt Build and run LibTomCrypt benchmarks.
-r, --release Build in release mode.
-a ALGORITHMS, --algorithms ALGORITHMS
A list of algorithms to enable. Defaults to all.
-p TARGET, --target TARGET
Define compile target for cross compilation.
-d DISABLE, --disable DISABLE
Disable (hardware) features even if available.
-s SANITIZER, --sanitizer SANITIZER
Enable sanitizers.
--ndk NDK Path to the Android NDK.
--msvc Use MSVC on Windows (default is clang-cl).
-e EDITION, --edition EDITION
Choose a different HACL* edition.
-l LANGUAGE, --language LANGUAGE
Build language bindings for the given language.
-v, --verbose Make builds verbose.
-m32 Build for 32-bit (even when on 64-bit).
--no-build Don't actually build (don't run ninja).
--coverage Build with coverage instrumentation.