project init
This commit is contained in:
17
semestralka/.cargo/config.toml
Normal file
17
semestralka/.cargo/config.toml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
[target.xtensa-esp32-none-elf]
|
||||||
|
runner = "espflash flash --monitor --chip esp32"
|
||||||
|
|
||||||
|
[env]
|
||||||
|
ESP_LOG="info"
|
||||||
|
|
||||||
|
[build]
|
||||||
|
rustflags = [
|
||||||
|
"-C", "link-arg=-nostartfiles",
|
||||||
|
"-C", "link-arg=-Tdefmt.x",
|
||||||
|
"-Z", "stack-protector=all",
|
||||||
|
]
|
||||||
|
|
||||||
|
target = "xtensa-esp32-none-elf"
|
||||||
|
|
||||||
|
[unstable]
|
||||||
|
build-std = ["alloc", "core"]
|
||||||
1
semestralka/.gitignore
vendored
Normal file
1
semestralka/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
target/
|
||||||
7
semestralka/Cargo.lock
generated
Normal file
7
semestralka/Cargo.lock
generated
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "semestralka"
|
||||||
|
version = "0.1.0"
|
||||||
6
semestralka/Cargo.toml
Normal file
6
semestralka/Cargo.toml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "semestralka"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
79
semestralka/build.rs
Normal file
79
semestralka/build.rs
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
fn main() {
|
||||||
|
// Explicitly load .env from the project root, even when called from other dirs
|
||||||
|
let project_root = std::env::var("CARGO_MANIFEST_DIR").unwrap();
|
||||||
|
let dotenv_path = std::path::Path::new(&project_root).join(".env");
|
||||||
|
if dotenvy::from_path(dotenv_path.clone()).is_ok() {
|
||||||
|
println!("cargo:rerun-if-changed={}", dotenv_path.display());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pass WIFI credentials into firmware
|
||||||
|
if let Ok(ssid) = std::env::var("SSID") {
|
||||||
|
println!("cargo:rustc-env=SSID={}", ssid);
|
||||||
|
}
|
||||||
|
if let Ok(password) = std::env::var("PASSWORD") {
|
||||||
|
println!("cargo:rustc-env=PASSWORD={}", password);
|
||||||
|
}
|
||||||
|
if let Ok(ip) = std::env::var("BROKER_IP") {
|
||||||
|
println!("cargo:rustc-env=BROKER_IP={}", ip);
|
||||||
|
}
|
||||||
|
if let Ok(port) = std::env::var("BROKER_PORT") {
|
||||||
|
println!("cargo:rustc-env=BROKER_PORT={}", port);
|
||||||
|
}
|
||||||
|
|
||||||
|
linker_be_nice();
|
||||||
|
|
||||||
|
println!("cargo:rustc-link-arg=-Tlinkall.x");
|
||||||
|
}
|
||||||
|
|
||||||
|
fn linker_be_nice() {
|
||||||
|
let args: Vec<String> = std::env::args().collect();
|
||||||
|
if args.len() > 1 {
|
||||||
|
let kind = &args[1];
|
||||||
|
let what = &args[2];
|
||||||
|
|
||||||
|
match kind.as_str() {
|
||||||
|
"undefined-symbol" => match what.as_str() {
|
||||||
|
"_defmt_timestamp" => {
|
||||||
|
eprintln!();
|
||||||
|
eprintln!(
|
||||||
|
"💡 `defmt` not found - make sure `defmt.x` is added as a linker script and you have included `use defmt_rtt as _;`"
|
||||||
|
);
|
||||||
|
eprintln!();
|
||||||
|
}
|
||||||
|
"_stack_start" => {
|
||||||
|
eprintln!();
|
||||||
|
eprintln!("💡 Is the linker script `linkall.x` missing?");
|
||||||
|
eprintln!();
|
||||||
|
}
|
||||||
|
"esp_wifi_preempt_enable"
|
||||||
|
| "esp_wifi_preempt_yield_task"
|
||||||
|
| "esp_wifi_preempt_task_create" => {
|
||||||
|
eprintln!();
|
||||||
|
eprintln!(
|
||||||
|
"💡 `esp-wifi` has no scheduler enabled. Make sure you have the `builtin-scheduler` feature enabled, or that you provide an external scheduler."
|
||||||
|
);
|
||||||
|
eprintln!();
|
||||||
|
}
|
||||||
|
"embedded_test_linker_file_not_added_to_rustflags" => {
|
||||||
|
eprintln!();
|
||||||
|
eprintln!(
|
||||||
|
"💡 `embedded-test` not found - make sure `embedded-test.x` is added as a linker script for tests"
|
||||||
|
);
|
||||||
|
eprintln!();
|
||||||
|
}
|
||||||
|
_ => (),
|
||||||
|
},
|
||||||
|
// we don't have anything helpful for "missing-lib" yet
|
||||||
|
_ => {
|
||||||
|
std::process::exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::process::exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
println!(
|
||||||
|
"cargo:rustc-link-arg=-Wl,--error-handling-script={}",
|
||||||
|
std::env::current_exe().unwrap().display()
|
||||||
|
);
|
||||||
|
}
|
||||||
3
semestralka/src/main.rs
Normal file
3
semestralka/src/main.rs
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
fn main() {
|
||||||
|
println!("Hello, world!");
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user