rustc_target/spec/targets/
xtensa_esp32s3_espidf.rs

1use rustc_abi::Endian;
2
3use crate::spec::base::xtensa;
4use crate::spec::{Target, TargetOptions, cvs};
5
6pub(crate) fn target() -> Target {
7    Target {
8        llvm_target: "xtensa-none-elf".into(),
9        pointer_width: 32,
10        data_layout: "e-m:e-p:32:32-v1:8:8-i64:64-i128:128-n32".into(),
11        arch: "xtensa".into(),
12        metadata: crate::spec::TargetMetadata {
13            description: None,
14            tier: None,
15            host_tools: None,
16            std: None,
17        },
18
19        options: TargetOptions {
20            endian: Endian::Little,
21            c_int_width: "32".into(),
22            families: cvs!["unix"],
23            os: "espidf".into(),
24            env: "newlib".into(),
25            vendor: "espressif".into(),
26
27            executables: true,
28            cpu: "esp32-s3".into(),
29            linker: Some("xtensa-esp32s3-elf-gcc".into()),
30
31            // The esp32s3 only supports native 32bit atomics.
32            max_atomic_width: Some(32),
33            atomic_cas: true,
34
35            ..xtensa::opts()
36        },
37    }
38}