revmc_build/lib.rs
1#![doc = include_str!("../README.md")]
2#![cfg_attr(not(test), warn(unused_extern_crates))]
3#![cfg_attr(docsrs, feature(doc_cfg))]
4
5// Must be kept in sync with `remvc-builtins`.
6const MANGLE_PREFIX: &str = "__revmc_builtin_";
7
8/// Emits the linker flag to export all the necessary symbols.
9pub fn emit() {
10 let target_vendor = std::env::var("CARGO_CFG_TARGET_VENDOR").unwrap();
11 if target_vendor == "apple" {
12 // Mach-O C symbols have a leading `_`, so `__revmc_builtin_*` becomes `___revmc_builtin_*`.
13 println!("cargo:rustc-link-arg=-Wl,-exported_symbol,_{MANGLE_PREFIX}*");
14 } else {
15 println!("cargo:rustc-link-arg=-Wl,--export-dynamic-symbol,{MANGLE_PREFIX}*");
16 }
17}