var rename + added newline
This commit is contained in:
parent
c7e5ba1c55
commit
cdbb2e15a2
1 changed files with 15 additions and 5 deletions
20
src/main.rs
20
src/main.rs
|
@ -43,6 +43,7 @@ fn target_generator(name: &str, config_table: &Table) -> String {
|
||||||
|
|
||||||
let clang = Value::String(String::from("clang"));
|
let clang = Value::String(String::from("clang"));
|
||||||
let blank = Value::String(String::from(""));
|
let blank = Value::String(String::from(""));
|
||||||
|
let aout = Value::String(String::from("a.out"));
|
||||||
|
|
||||||
let compiler = match config_table.get("compiler").unwrap_or(&clang) {
|
let compiler = match config_table.get("compiler").unwrap_or(&clang) {
|
||||||
Value::String(s) => s,
|
Value::String(s) => s,
|
||||||
|
@ -60,6 +61,10 @@ fn target_generator(name: &str, config_table: &Table) -> String {
|
||||||
Value::String(s) => s,
|
Value::String(s) => s,
|
||||||
_ => panic!("fatal: {name}.linker_libs: invalid type (must be string)"),
|
_ => panic!("fatal: {name}.linker_libs: invalid type (must be string)"),
|
||||||
};
|
};
|
||||||
|
let filename = match config_table.get("filename").unwrap_or(&aout) {
|
||||||
|
Value::String(s) => s,
|
||||||
|
_ => panic!("fatal: {name}.filename: invalid type (must be string)"),
|
||||||
|
};
|
||||||
let compiler_linker = Value::String(compiler.to_string());
|
let compiler_linker = Value::String(compiler.to_string());
|
||||||
let linker = match config_table.get("linker").unwrap_or(&compiler_linker) {
|
let linker = match config_table.get("linker").unwrap_or(&compiler_linker) {
|
||||||
Value::String(s) => s,
|
Value::String(s) => s,
|
||||||
|
@ -79,13 +84,14 @@ rule link_{name}
|
||||||
|
|
||||||
build $builddir/{name}/obj: mkdir
|
build $builddir/{name}/obj: mkdir
|
||||||
build $builddir/{name}/dep: mkdir
|
build $builddir/{name}/dep: mkdir
|
||||||
|
|
||||||
"#
|
"#
|
||||||
));
|
));
|
||||||
let sources = config_table
|
let sources = config_table
|
||||||
.get("sources")
|
.get("sources")
|
||||||
.unwrap_or_else(|| panic!("fatal: must provide sources"));
|
.unwrap_or_else(|| panic!("fatal: must provide sources"));
|
||||||
|
|
||||||
let mut source_list: Vec<String> = Vec::new();
|
let mut object_list: Vec<String> = Vec::new();
|
||||||
|
|
||||||
match sources {
|
match sources {
|
||||||
Value::Array(a) => {
|
Value::Array(a) => {
|
||||||
|
@ -98,7 +104,7 @@ build $builddir/{name}/dep: mkdir
|
||||||
ret.push_str(&format!(
|
ret.push_str(&format!(
|
||||||
"build {obj_name}: cc_{name} {s} | build.ninja || $builddir/{name}/obj $builddir/{name}/dep\n dep = {dep_name}\n"
|
"build {obj_name}: cc_{name} {s} | build.ninja || $builddir/{name}/obj $builddir/{name}/dep\n dep = {dep_name}\n"
|
||||||
));
|
));
|
||||||
source_list.push(obj_name);
|
object_list.push(obj_name);
|
||||||
}
|
}
|
||||||
_ => panic!(
|
_ => panic!(
|
||||||
"fatal: element in {name}.sources: invalid source type (must be a string)"
|
"fatal: element in {name}.sources: invalid source type (must be a string)"
|
||||||
|
@ -109,9 +115,13 @@ build $builddir/{name}/dep: mkdir
|
||||||
_ => panic!("fatal: {name}.sources: invalid sources type (must be a list of strings)"),
|
_ => panic!("fatal: {name}.sources: invalid sources type (must be a list of strings)"),
|
||||||
};
|
};
|
||||||
|
|
||||||
ret.push_str(&format!("\nbuild $builddir/{name}/{name}: link_{name} "));
|
ret.push_str(&format!(
|
||||||
ret.push_str(&source_list.join(" "));
|
"\nbuild $builddir/{name}/{filename}: link_{name} "
|
||||||
ret.push_str(&format!(" \nbuild {name}: phony $builddir/{name}/{name}\n"));
|
));
|
||||||
|
ret.push_str(&object_list.join(" "));
|
||||||
|
ret.push_str(&format!(
|
||||||
|
" \nbuild {name}: phony $builddir/{name}/{filename}\n"
|
||||||
|
));
|
||||||
ret.push_str(&format!("# END TARGET {name}\n"));
|
ret.push_str(&format!("# END TARGET {name}\n"));
|
||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
Loading…
Reference in a new issue