basic MacOS version
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
|
||||
fn main() {
|
||||
let target_os = "macos";
|
||||
//let target_arch = "arm64";
|
||||
|
||||
let libwebrtc_dir = std::path::PathBuf::from("./libwebrtc");
|
||||
|
||||
|
||||
// Just required for the bridge build to succeed.
|
||||
let includes = &[
|
||||
std::path::PathBuf::from("./include"),
|
||||
libwebrtc_dir.join("include/"),
|
||||
libwebrtc_dir.join("include/third_party/abseil-cpp/"),
|
||||
libwebrtc_dir.join("include/third_party/libc++/"),
|
||||
];
|
||||
|
||||
let mut builder = cxx_build::bridges(&["src/main.rs"]);
|
||||
builder.flag("-std=c++17"); // Not sure about this .. Shouldn't this be c++14 ?
|
||||
builder.file("src/peer_connection_factory.cpp");
|
||||
|
||||
for include in includes {
|
||||
builder.include(include);
|
||||
}
|
||||
|
||||
match target_os {
|
||||
"macos" => {
|
||||
println!("cargo:rustc-link-lib=dylib=c++");
|
||||
println!("cargo:rustc-link-lib=framework=Foundation");
|
||||
println!("cargo:rustc-link-lib=framework=AVFoundation");
|
||||
println!("cargo:rustc-link-lib=framework=CoreAudio");
|
||||
println!("cargo:rustc-link-lib=framework=AudioToolbox");
|
||||
println!("cargo:rustc-link-lib=framework=Appkit");
|
||||
println!("cargo:rustc-link-lib=framework=CoreMedia");
|
||||
println!("cargo:rustc-link-lib=framework=CoreGraphics");
|
||||
|
||||
builder.flag("-stdlib=libc++")
|
||||
.define("WEBRTC_ENABLE_OBJC_SYMBOL_EXPORT", None)
|
||||
.define("WEBRTC_POSIX", None)
|
||||
.define("WEBRTC_MAC", None);
|
||||
}
|
||||
_ => {
|
||||
eprintln!("Unsupported platform, {}", target_os);
|
||||
std::process::exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
builder.warnings(false).compile("lkwebrtc");
|
||||
|
||||
println!("cargo:rustc-link-search=native={}", libwebrtc_dir.canonicalize().unwrap().to_str().unwrap());
|
||||
println!("cargo:rustc-link-lib=static=webrtc");
|
||||
|
||||
for entry in glob::glob("./src/**/*.cpp").unwrap() {
|
||||
println!("cargo:rerun-if-changed={}", entry.unwrap().display().to_string());
|
||||
}
|
||||
|
||||
for entry in glob::glob("./include/**/*.h").unwrap() {
|
||||
println!("cargo:rerun-if-changed={}", entry.unwrap().display().to_string());
|
||||
}
|
||||
|
||||
println!("cargo:rerun-if-changed=src/main.rs");
|
||||
}
|
||||
Reference in New Issue
Block a user