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 | | );
   | |__^
```
This commit is contained in:
Michael Sproul
2021-06-30 04:56:22 +00:00
parent 9461ac2d50
commit 379664a648
5 changed files with 36 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
[package]
name = "target_check"
version = "0.1.0"
authors = ["Michael Sproul <michael@sigmaprime.io>"]
edition = "2018"
[dependencies]
static_assertions = "1.1.0"

View File

@@ -0,0 +1,11 @@
//! 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",
);