use std::borrow::Cow;

use rustc_session::Session;

pub mod apple;
pub mod archive;
pub(crate) mod command;
pub mod link;
pub(crate) mod linker;
pub mod lto;
pub mod metadata;
pub mod rmeta_link;
pub(crate) mod rpath;
mod symbol_edit;
pub mod symbol_export;
pub mod write;

pub use symbol_export::{exported_non_generic_symbols_helper, reachable_non_generics_helper};

/// The target triple depends on the deployment target, and is required to
/// enable features such as cross-language LTO, and for picking the right
/// Mach-O commands.
///
/// Certain optimizations also depend on the deployment target.
pub fn versioned_llvm_target(sess: &Session) -> Cow<'_, str> {
    if sess.target.is_like_darwin {
        apple::add_version_to_llvm_target(&sess.target.llvm_target, sess.apple_deployment_target())
            .into()
    } else {
        // FIXME(madsmtm): Certain other targets also include a version,
        // we might want to move that here as well.
        Cow::Borrowed(&sess.target.llvm_target)
    }
}
