Skip to main content

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}