diff --git a/libafl_qemu/Cargo.toml b/libafl_qemu/Cargo.toml index 126700cae4..a1b67a80d6 100644 --- a/libafl_qemu/Cargo.toml +++ b/libafl_qemu/Cargo.toml @@ -26,6 +26,8 @@ be = [] usermode = [] systemmode = [] +slirp = [ "systemmode" ] # build qemu with host libslirp (for user networking) + clippy = [] # special feature for clippy, don't use in normal projects§ [dependencies] diff --git a/libafl_qemu/build_linux.rs b/libafl_qemu/build_linux.rs index d62f2b217e..1eeb159180 100644 --- a/libafl_qemu/build_linux.rs +++ b/libafl_qemu/build_linux.rs @@ -44,8 +44,6 @@ pub fn build() { println!("cargo:rustc-cfg=emulation_mode=\"{emulation_mode}\""); println!("cargo:rerun-if-changed=build.rs"); - println!("cargo:rerun-if-changed=src/asan-giovese.c"); - println!("cargo:rerun-if-changed=src/asan-giovese.h"); println!("cargo:rerun-if-env-changed=CROSS_CC"); // Make sure we have at most one architecutre feature set @@ -215,7 +213,7 @@ pub fn build() { //.arg("--as-static-lib") .arg("--as-shared-lib") .arg(&format!("--target-list={cpu_target}-{target_suffix}")) - .arg("--enable-slirp=internal") + .arg(if cfg!(feature = "slirp") {"--enable-slirp"} else {"--disable-slirp"}) .arg("--enable-fdt=internal") .arg("--audio-drv-list=") .arg("--disable-alsa") @@ -422,7 +420,6 @@ pub fn build() { build_dir.display() )) .arg(format!("{}/libfdt.a", build_dir.display())) - .arg(format!("{}/libslirp.a", build_dir.display())) .arg(format!("{}/libmigration.fa", build_dir.display())) .arg(format!("{}/libhwcore.fa", build_dir.display())) .arg(format!("{}/libqom.fa", build_dir.display())) @@ -457,6 +454,8 @@ pub fn build() { println!("cargo:rustc-link-lib=glib-2.0"); println!("cargo:rustc-link-lib=stdc++"); println!("cargo:rustc-link-lib=z"); + #[cfg(all(feature = "slirp", feature = "systemmode"))] + println!("cargo:rustc-link-lib=slirp"); if emulation_mode == "systemmode" { println!("cargo:rustc-link-lib=pixman-1");