use std::iter;

use super::{LinkerFlavor, PanicStrategy, Target, TargetOptions};

pub fn target() -> Result<Target, String> {
    const PRE_LINK_ARGS: &[&str] = &[
        "-Wl,--as-needed",
        "-Wl,-z,noexecstack",
        "-m64",
        "-fuse-ld=gold",
        "-nostdlib",
        "-shared",
        "-Wl,-e,sgx_entry",
        "-Wl,-Bstatic",
        "-Wl,--gc-sections",
        "-Wl,-z,text",
        "-Wl,-z,norelro",
        "-Wl,--rosegment",
        "-Wl,--no-undefined",
        "-Wl,--error-unresolved-symbols",
        "-Wl,--no-undefined-version",
        "-Wl,-Bsymbolic",
        "-Wl,--export-dynamic",
        // The following symbols are needed by libunwind, which is linked after
        // libstd. Make sure they're included in the link.
        "-Wl,-u,__rust_abort",
        "-Wl,-u,__rust_c_alloc",
        "-Wl,-u,__rust_c_dealloc",
        "-Wl,-u,__rust_print_err",
        "-Wl,-u,__rust_rwlock_rdlock",
        "-Wl,-u,__rust_rwlock_unlock",
        "-Wl,-u,__rust_rwlock_wrlock",
    ];

    const EXPORT_SYMBOLS: &[&str] = &[
        "sgx_entry",
        "HEAP_BASE",
        "HEAP_SIZE",
        "RELA",
        "RELACOUNT",
        "ENCLAVE_SIZE",
        "CFGDATA_BASE",
        "DEBUG",
        "EH_FRM_HDR_BASE",
        "EH_FRM_HDR_SIZE",
        "TEXT_BASE",
        "TEXT_SIZE",
    ];
    let opts = TargetOptions {
        dynamic_linking: false,
        executables: true,
        linker_is_gnu: true,
        max_atomic_width: Some(64),
        panic_strategy: PanicStrategy::Unwind,
        cpu: "x86-64".into(),
        features: "+rdrnd,+rdseed".into(),
        position_independent_executables: true,
        pre_link_args: iter::once((
            LinkerFlavor::Gcc,
            PRE_LINK_ARGS.iter().cloned().map(String::from).collect(),
        ))
        .collect(),
        post_link_objects: vec!["libunwind.a".into()],
        override_export_symbols: Some(EXPORT_SYMBOLS.iter().cloned().map(String::from).collect()),
        ..Default::default()
    };
    Ok(Target {
        llvm_target: "x86_64-elf".into(),
        target_endian: "little".into(),
        target_pointer_width: "64".into(),
        target_c_int_width: "32".into(),
        target_os: "unknown".into(),
        target_env: "sgx".into(),
        target_vendor: "fortanix".into(),
        data_layout: "e-m:e-i64:64-f80:128-n8:16:32:64-S128".into(),
        arch: "x86_64".into(),
        linker_flavor: LinkerFlavor::Gcc,
        options: opts,
    })
}
