diff --git a/Cargo.lock b/Cargo.lock index 4f480210..8ad2e8d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -988,7 +988,7 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fbuild-bench-fastled-examples" -version = "2.5.35" +version = "2.5.36" dependencies = [ "fbuild-core", "fbuild-library-select", @@ -1002,7 +1002,7 @@ dependencies = [ [[package]] name = "fbuild-build" -version = "2.5.35" +version = "2.5.36" dependencies = [ "async-trait", "blake3", @@ -1039,7 +1039,7 @@ dependencies = [ [[package]] name = "fbuild-build-arm" -version = "2.5.35" +version = "2.5.36" dependencies = [ "async-trait", "blake3", @@ -1073,7 +1073,7 @@ dependencies = [ [[package]] name = "fbuild-build-engine" -version = "2.5.35" +version = "2.5.36" dependencies = [ "async-trait", "blake3", @@ -1107,7 +1107,7 @@ dependencies = [ [[package]] name = "fbuild-build-esp" -version = "2.5.35" +version = "2.5.36" dependencies = [ "async-trait", "blake3", @@ -1142,7 +1142,7 @@ dependencies = [ [[package]] name = "fbuild-build-mcu" -version = "2.5.35" +version = "2.5.36" dependencies = [ "async-trait", "blake3", @@ -1176,7 +1176,7 @@ dependencies = [ [[package]] name = "fbuild-cli" -version = "2.5.35" +version = "2.5.36" dependencies = [ "blake3", "clap", @@ -1208,7 +1208,7 @@ dependencies = [ [[package]] name = "fbuild-config" -version = "2.5.35" +version = "2.5.36" dependencies = [ "fbuild-core", "fbuild-paths", @@ -1223,7 +1223,7 @@ dependencies = [ [[package]] name = "fbuild-core" -version = "2.5.35" +version = "2.5.36" dependencies = [ "async-trait", "fs2", @@ -1252,7 +1252,7 @@ dependencies = [ [[package]] name = "fbuild-daemon" -version = "2.5.35" +version = "2.5.36" dependencies = [ "async-trait", "axum 0.7.9", @@ -1291,7 +1291,7 @@ dependencies = [ [[package]] name = "fbuild-deploy" -version = "2.5.35" +version = "2.5.36" dependencies = [ "async-trait", "espflash", @@ -1319,7 +1319,7 @@ dependencies = [ [[package]] name = "fbuild-header-scan" -version = "2.5.35" +version = "2.5.36" dependencies = [ "criterion", "fbuild-paths", @@ -1330,7 +1330,7 @@ dependencies = [ [[package]] name = "fbuild-library" -version = "2.5.35" +version = "2.5.36" dependencies = [ "async-trait", "axum 0.7.9", @@ -1362,7 +1362,7 @@ dependencies = [ [[package]] name = "fbuild-library-select" -version = "2.5.35" +version = "2.5.36" dependencies = [ "bincode", "blake3", @@ -1383,7 +1383,7 @@ dependencies = [ [[package]] name = "fbuild-packages" -version = "2.5.35" +version = "2.5.36" dependencies = [ "async-trait", "axum 0.7.9", @@ -1415,7 +1415,7 @@ dependencies = [ [[package]] name = "fbuild-packages-fetch" -version = "2.5.35" +version = "2.5.36" dependencies = [ "async-trait", "axum 0.7.9", @@ -1444,7 +1444,7 @@ dependencies = [ [[package]] name = "fbuild-paths" -version = "2.5.35" +version = "2.5.36" dependencies = [ "blake3", "fbuild-core", @@ -1456,7 +1456,7 @@ dependencies = [ [[package]] name = "fbuild-python" -version = "2.5.35" +version = "2.5.36" dependencies = [ "base64", "fbuild-core", @@ -1480,7 +1480,7 @@ dependencies = [ [[package]] name = "fbuild-serial" -version = "2.5.35" +version = "2.5.36" dependencies = [ "async-trait", "base64", @@ -1503,7 +1503,7 @@ dependencies = [ [[package]] name = "fbuild-test-support" -version = "2.5.35" +version = "2.5.36" dependencies = [ "fbuild-config", "fbuild-core", @@ -1523,7 +1523,7 @@ dependencies = [ [[package]] name = "fbuild-toolchain" -version = "2.5.35" +version = "2.5.36" dependencies = [ "async-trait", "axum 0.7.9", diff --git a/Cargo.toml b/Cargo.toml index 936bdc9a..59d4c574 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -93,7 +93,7 @@ targets = [ ] [workspace.package] -version = "2.5.35" +version = "2.5.36" edition = "2021" rust-version = "1.95.0" license = "AGPL-3.0-only" diff --git a/crates/fbuild-library/src/library/esp32_framework/sdk_paths.rs b/crates/fbuild-library/src/library/esp32_framework/sdk_paths.rs index f2f8b4f0..1724312a 100644 --- a/crates/fbuild-library/src/library/esp32_framework/sdk_paths.rs +++ b/crates/fbuild-library/src/library/esp32_framework/sdk_paths.rs @@ -321,11 +321,19 @@ impl Esp32Framework { if lib_dir.exists() { flags.push(format!("-L{}", lib_dir.display())); } + // Arduino-ESP32 2.x keeps radio archives such as libphy.a and + // librtc.a beside its linker scripts. WiFi users need these archives + // even though the ordinary SDK libraries live under lib/. + let ld_dir = sdk_dir.join("ld"); + if ld_dir.exists() { + flags.push(format!("-L{}", ld_dir.display())); + } let mut libraries = variant_dir .as_ref() .map(|dir| collect_archive_files(dir)) .unwrap_or_default(); libraries.extend(collect_archive_files(&lib_dir)); + libraries.extend(collect_archive_files(&ld_dir)); let mut names = std::collections::BTreeSet::new(); for lib in libraries { if let Some(stem) = lib.file_stem() { diff --git a/crates/fbuild-library/src/library/esp32_framework/tests.rs b/crates/fbuild-library/src/library/esp32_framework/tests.rs index 8eaf6eef..f7bdb8b7 100644 --- a/crates/fbuild-library/src/library/esp32_framework/tests.rs +++ b/crates/fbuild-library/src/library/esp32_framework/tests.rs @@ -417,6 +417,35 @@ fn old_sdk_libraries_use_selected_variant_before_common_archives() { assert!(flags.contains(&"-lesp_system".to_string())); } +#[test] +fn old_sdk_radio_archives_are_linked_from_ld_directory() { + let tmp = tempfile::TempDir::new().unwrap(); + let sdk = tmp.path().join("tools").join("sdk").join("esp32"); + let common = sdk.join("lib"); + let ld = sdk.join("ld"); + std::fs::create_dir_all(&common).unwrap(); + std::fs::create_dir_all(&ld).unwrap(); + std::fs::write(common.join("libesp_phy.a"), "").unwrap(); + std::fs::write(ld.join("libphy.a"), "").unwrap(); + std::fs::write(ld.join("librtc.a"), "").unwrap(); + let fw = Esp32Framework { + base: PackageBase::new( + "test", + "1.0", + "http://example.com", + "http://example.com", + None, + CacheSubdir::Platforms, + tmp.path(), + ), + install_dir: Some(tmp.path().to_path_buf()), + }; + let flags = fw.get_sdk_lib_flags("esp32", None); + assert!(flags.contains(&format!("-L{}", ld.display()))); + assert!(flags.contains(&"-lphy".to_string())); + assert!(flags.contains(&"-lrtc".to_string())); +} + #[test] fn test_split_defines_preserves_escaped_quotes() { let content = diff --git a/pyproject.toml b/pyproject.toml index a2040594..9483d6e0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "fbuild" -version = "2.5.35" +version = "2.5.36" description = "PlatformIO-compatible embedded build tool (Rust implementation)" readme = "README.md" license = "AGPL-3.0-only"