fn main() { //println!("cargo:rerun-if-env-changed=CARGO_CFG_TARGET_ENV"); #[cfg(feature = "occlum")] { let target = std::env::var("CARGO_CFG_TARGET_ENV").unwrap_or_default(); let dcap_lib_path = match target.as_str() { "musl" => "/opt/occlum/toolchains/dcap_lib/musl", _ => "/opt/occlum/toolchains/dcap_lib/glibc", // gnu, msvc, sgx... }; // Doesn't use standard C library, safe to compile with both musl and glibc println!("cargo:rustc-link-search=crate=/opt/intel/sgxsdk/lib64"); println!("cargo:rustc-link-search=crate={}", dcap_lib_path); // Cargo will look for `libocclum_dcap.a` and `libsgx_tservice.a` println!("cargo:rustc-link-lib=static:+whole-archive=occlum_dcap"); println!("cargo:rustc-link-lib=static:+whole-archive=sgx_tservice"); } #[cfg(feature = "tonic")] tonic_build::configure() .build_server(true) .compile_protos(&["examples/echo.proto"], &["examples"]) .unwrap_or_else(|e| panic!("Failed to compile protos {:?}", e)); }