lighthouse/common/target_check/src/lib.rs
Michael Sproul 379664a648 Improve compilation error on 32-bit (#2424)
## Issue Addressed

Closes #1661

## Proposed Changes

Add a dummy package called `target_check` which gets compiled early in the build and fails if the target is 32-bit

## Additional Info

You can test the efficacy of this check with:

```
cross build --release --manifest-path lighthouse/Cargo.toml --target i686-unknown-linux-gnu
```

In which case this compilation error is shown:

```
error: Lighthouse requires a 64-bit CPU and operating system
  --> common/target_check/src/lib.rs:8:1
   |
8  | / assert_cfg!(
9  | |     target_pointer_width = "64",
10 | |     "Lighthouse requires a 64-bit CPU and operating system",
11 | | );
   | |__^
```
2021-06-30 04:56:22 +00:00

12 lines
522 B
Rust

//! This crate checks properties of the target architecture to ensure that it's compatible with
//! Lighthouse.
use static_assertions::assert_cfg;
// In many places we assume `usize` and `u64` have the same in-memory representation.
// We also use memory-mapped files extensively which are only really viable with 64-bit addressing.
// It's unlikely we will want to support 128-bit architectures any time soon.
assert_cfg!(
target_pointer_width = "64",
"Lighthouse requires a 64-bit CPU and operating system",
);