diff --git a/Cargo.toml b/Cargo.toml index 8249c6551b814581c340e0d4df93cb69befdfa19..3471063fd44c91b3b21aaf20fb89e259d47849f4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -23,9 +23,6 @@ lto = true panic = "abort" debug = true -[build-dependencies] -cc = "1.0" - [dependencies] vm-fdt = { git = "https://github.com/OhmR/vm-fdt" } fdt = { path = "libfdt-binding" } diff --git a/Makefile b/Makefile index a73529d99f88dfc27052aca733c4a3f9ae8dec3c..a3c2bad47e247635b59b775d6dca97f3687f2607 100644 --- a/Makefile +++ b/Makefile @@ -72,7 +72,7 @@ debug: qemu -s -S gdb: - ${GDB} -x gdb/aarch64.gdb + ${GDB} -x gdb/${ARCH}.gdb clean: cargo clean diff --git a/build.rs b/build.rs index 09ed177587e9185e3eca4cc2fa800f85ed8fbcb0..d85a58007151d3181936199f7adea0472b209712 100644 --- a/build.rs +++ b/build.rs @@ -9,25 +9,9 @@ // See the Mulan PSL v2 for more details. use std::process::Command; -use std::fs; use std::env::var; fn main() { - let files = fs::read_dir("libfdt-binding").unwrap().into_iter().filter_map(|f| { - let f = f.as_ref().unwrap(); - if f.file_type().unwrap().is_file() && matches!(f.path().extension(), Some(ext) if ext == "c") { - Some(f.path()) - } else { - None - } - }); - cc::Build::new() - .compiler("aarch64-none-elf-gcc") - .include("libfdt-binding") - .files(files) - .flag("-w") - .compile("fdt-binding"); - let arch = var("CARGO_CFG_TARGET_ARCH").unwrap(); let text_start = if cfg!(feature = "tx2") { if cfg!(feature = "update") { diff --git a/libfdt-binding/Cargo.toml b/libfdt-binding/Cargo.toml index 0d2d370ab671bca17037d5ccde6b24489c956ef5..e97f07316548769e3d3dd1d67a477e8adb0b9e89 100644 --- a/libfdt-binding/Cargo.toml +++ b/libfdt-binding/Cargo.toml @@ -6,3 +6,4 @@ build = "build.rs" [build-dependencies] bindgen = "0.59.1" +cc = "1.0" diff --git a/libfdt-binding/build.rs b/libfdt-binding/build.rs index 9d8991ffb1a6ea088b16bf64c422c24381a5b296..7caea0cd15ee58f0bfa129f0c8415eb19be5fad6 100644 --- a/libfdt-binding/build.rs +++ b/libfdt-binding/build.rs @@ -14,7 +14,28 @@ use std::env; use std::path::PathBuf; fn main() { - println!("cargo:rerun-if-changed=./"); + println!("cargo:rerun-if-changed=wrapper.h"); + println!("cargo:rerun-if-changed=./libfdt"); + println!("cargo:rerun-if-changed=build.rs"); + + // compile libfdt-bingding + let fdt_dirs = ["./", "./libfdt"]; + let c_files = fdt_dirs.iter().flat_map(|path| { + std::fs::read_dir(path).unwrap().filter_map(|f| { + let f = f.unwrap(); + if f.file_type().unwrap().is_file() && matches!(f.path().extension(), Some(ext) if ext == "c") { + Some(f.path()) + } else { + None + } + }) + }); + cc::Build::new() + .compiler("aarch64-none-elf-gcc") + .includes(fdt_dirs) + .files(c_files) + .flag("-w") + .compile("fdt-binding"); let bindings = bindgen::Builder::default() .use_core() diff --git a/libfdt-binding/fdt.c b/libfdt-binding/libfdt/fdt.c similarity index 100% rename from libfdt-binding/fdt.c rename to libfdt-binding/libfdt/fdt.c diff --git a/libfdt-binding/fdt.h b/libfdt-binding/libfdt/fdt.h similarity index 100% rename from libfdt-binding/fdt.h rename to libfdt-binding/libfdt/fdt.h diff --git a/libfdt-binding/fdt_addresses.c b/libfdt-binding/libfdt/fdt_addresses.c similarity index 100% rename from libfdt-binding/fdt_addresses.c rename to libfdt-binding/libfdt/fdt_addresses.c diff --git a/libfdt-binding/fdt_check.c b/libfdt-binding/libfdt/fdt_check.c similarity index 100% rename from libfdt-binding/fdt_check.c rename to libfdt-binding/libfdt/fdt_check.c diff --git a/libfdt-binding/fdt_empty_tree.c b/libfdt-binding/libfdt/fdt_empty_tree.c similarity index 100% rename from libfdt-binding/fdt_empty_tree.c rename to libfdt-binding/libfdt/fdt_empty_tree.c diff --git a/libfdt-binding/fdt_overlay.c b/libfdt-binding/libfdt/fdt_overlay.c similarity index 100% rename from libfdt-binding/fdt_overlay.c rename to libfdt-binding/libfdt/fdt_overlay.c diff --git a/libfdt-binding/fdt_ro.c b/libfdt-binding/libfdt/fdt_ro.c similarity index 100% rename from libfdt-binding/fdt_ro.c rename to libfdt-binding/libfdt/fdt_ro.c diff --git a/libfdt-binding/fdt_rw.c b/libfdt-binding/libfdt/fdt_rw.c similarity index 100% rename from libfdt-binding/fdt_rw.c rename to libfdt-binding/libfdt/fdt_rw.c diff --git a/libfdt-binding/fdt_strerror.c b/libfdt-binding/libfdt/fdt_strerror.c similarity index 100% rename from libfdt-binding/fdt_strerror.c rename to libfdt-binding/libfdt/fdt_strerror.c diff --git a/libfdt-binding/fdt_sw.c b/libfdt-binding/libfdt/fdt_sw.c similarity index 100% rename from libfdt-binding/fdt_sw.c rename to libfdt-binding/libfdt/fdt_sw.c diff --git a/libfdt-binding/fdt_wip.c b/libfdt-binding/libfdt/fdt_wip.c similarity index 100% rename from libfdt-binding/fdt_wip.c rename to libfdt-binding/libfdt/fdt_wip.c diff --git a/libfdt-binding/libfdt.h b/libfdt-binding/libfdt/libfdt.h similarity index 100% rename from libfdt-binding/libfdt.h rename to libfdt-binding/libfdt/libfdt.h diff --git a/libfdt-binding/libfdt_env.h b/libfdt-binding/libfdt/libfdt_env.h similarity index 100% rename from libfdt-binding/libfdt_env.h rename to libfdt-binding/libfdt/libfdt_env.h diff --git a/libfdt-binding/libfdt_internal.h b/libfdt-binding/libfdt/libfdt_internal.h similarity index 100% rename from libfdt-binding/libfdt_internal.h rename to libfdt-binding/libfdt/libfdt_internal.h diff --git a/libfdt-binding/mystr.c b/libfdt-binding/libfdt/mystr.c similarity index 100% rename from libfdt-binding/mystr.c rename to libfdt-binding/libfdt/mystr.c diff --git a/libfdt-binding/wrapper.c b/libfdt-binding/libfdt/wrapper.c similarity index 100% rename from libfdt-binding/wrapper.c rename to libfdt-binding/libfdt/wrapper.c