use crate::spec::{Cc, CfgAbi, LinkArgs, LinkerFlavor, Lld, TargetOptions, add_link_args, base};

pub(crate) fn opts() -> TargetOptions {
    let base = base::windows_gnu::opts();

    // FIXME: This should be updated for the exception machinery changes from #67502
    // and inherit from `windows_gnu_base`, at least partially.
    let mingw_libs = &[
        "-lwinstorecompat",
        "-lruntimeobject",
        "-lsynchronization",
        "-lvcruntime140_app",
        "-lucrt",
        "-lwindowsapp",
        "-lmingwex",
        "-lmingw32",
    ];
    let mut late_link_args =
        TargetOptions::link_args(LinkerFlavor::Gnu(Cc::No, Lld::No), mingw_libs);
    add_link_args(&mut late_link_args, LinkerFlavor::Gnu(Cc::Yes, Lld::No), mingw_libs);
    // Reset the flags back to empty until the FIXME above is addressed.
    let late_link_args_dynamic = LinkArgs::new();
    let late_link_args_static = LinkArgs::new();

    TargetOptions {
        cfg_abi: CfgAbi::Uwp,
        vendor: "uwp".into(),
        limit_rdylib_exports: false,
        late_link_args,
        late_link_args_dynamic,
        late_link_args_static,

        ..base
    }
}
