fn main() {
    // 1. Instancia o compilador C++
    let mut build = cc::Build::new();

    // 2. Adiciona o arquivo fonte C++
    // CERTIFIQUE-SE que o arquivo "rsr_gemm.cpp" está na mesma pasta que o Cargo.toml
    build.file("rsr_gemm.cpp");

    // Indica que é C++
    build.cpp(true);

    // 3. Configura Flags baseadas no Sistema Operacional
    let target_os = std::env::var("CARGO_CFG_TARGET_OS").unwrap_or_default();

    if target_os == "windows" {
        // --- Configuração WINDOWS (MSVC) ---
        build.flag("/O2");       // Otimização máxima
        build.flag("/EHsc");     // Tratamento de exceções padrão
        // build.flag("/openmp"); // Descomente se seu C++ usar OpenMP (#include <omp.h>)
    } else {
        // --- Configuração LINUX/MAC ---
        build.flag("-O3");
        build.flag("-march=native");
        build.flag("-fopenmp");

        // Só linka essas libs se NÃO for Windows
        println!("cargo:rustc-link-lib=gomp");
        println!("cargo:rustc-link-lib=stdc++");
    }

    // 4. Compila a biblioteca estática "trme_core"
    // Isso gera o arquivo .lib que o linker estava reclamando que não existia
    build.compile("trme_core");

    // 5. Avisa o Cargo para recompilar se o C++ mudar
    println!("cargo:rerun-if-changed=rsr_gemm.cpp");

    // Avisa onde procurar a lib (na pasta de build atual)
    println!("cargo:rustc-link-search=native=.");
}