use std::path::Path;

use run_make_support::{rfs, rustc};

fn emit_and_check(out_dir: &Path, out_file: &str, format: &str) {
    let out_file = out_dir.join(out_file);
    rustc().input("foo.rs").emit(format!("{format}={}", out_file.display())).run();
    assert!(out_file.is_file());
}

fn main() {
    let out_dir = Path::new("emit");

    rfs::create_dir(&out_dir);

    emit_and_check(&out_dir, "libfoo.s", "asm");
    emit_and_check(&out_dir, "libfoo.bc", "llvm-bc");
    emit_and_check(&out_dir, "libfoo.ll", "llvm-ir");
    emit_and_check(&out_dir, "libfoo.o", "obj");
    emit_and_check(&out_dir, "libfoo.rmeta", "metadata");
    emit_and_check(&out_dir, "libfoo.rlib", "link");
    emit_and_check(&out_dir, "libfoo.d", "dep-info");
    emit_and_check(&out_dir, "libfoo.mir", "mir");
}
