Always build c files

This commit is contained in:
Mc-muffin
2026-08-20 21:13:22 -05:00
committed by Timothy O'Barr
parent b4da41ff04
commit 65f4cee3fb
2 changed files with 34 additions and 7 deletions
+26 -6
View File
@@ -178,10 +178,15 @@ def build_stuff(
object_strs = [str(obj) for obj in object_paths] object_strs = [str(obj) for obj in object_paths]
expected_strs = [] expected_strs = []
transit_strs = []
for obj in object_paths: for obj in object_paths:
if obj.name.endswith(".c.o"): if obj.name.endswith(".c.o"):
obj = obj.with_name(obj.name.removesuffix(".c.o") + ".o") obj = obj.with_name(obj.name.removesuffix(".c.o") + ".o")
elif obj.name.endswith(".s.o"): elif obj.name.endswith(".s.o"):
tr = obj.with_name(obj.name.removesuffix(".s.o") + ".c.o")
if tr.parts[:2] == ("build", "asm"):
tr = Path("build/src") / tr.relative_to("build/asm")
transit_strs.append(str(tr))
obj = obj.with_name(obj.name.removesuffix(".s.o") + ".o") obj = obj.with_name(obj.name.removesuffix(".s.o") + ".o")
if obj.parts[:2] == ("build", "asm"): if obj.parts[:2] == ("build", "asm"):
@@ -190,6 +195,7 @@ def build_stuff(
p = obj.relative_to("build/src") p = obj.relative_to("build/src")
else: else:
p = obj p = obj
expected_strs.append(str(Path("build/expected") / p)) expected_strs.append(str(Path("build/expected") / p))
for object_path in object_paths: for object_path in object_paths:
@@ -207,6 +213,14 @@ def build_stuff(
implicit_outputs=implicit_outputs, implicit_outputs=implicit_outputs,
) )
if transit_strs:
ninja.build(
outputs=transit_strs,
rule="cc",
inputs=[str((Path("../src") / s.relative_to("asm")).with_suffix(".c")) for s in src_paths],
variables=variables,
)
ninja.build( ninja.build(
outputs=expected_strs, outputs=expected_strs,
rule="as", rule="as",
@@ -341,6 +355,8 @@ def build_stuff(
implicit=[elf_path], implicit=[elf_path],
) )
ninja.default(elf_path + ".ok")
def generate_objdiff_configuration(config_path: Path, config: dict[str, Any], language: str): def generate_objdiff_configuration(config_path: Path, config: dict[str, Any], language: str):
""" """
Generate `objdiff.json` configuration from splat YAML config. Generate `objdiff.json` configuration from splat YAML config.
@@ -405,20 +421,24 @@ def generate_objdiff_configuration(config_path: Path, config: dict[str, Any], la
# "c" type implies that the TU is complete # "c" type implies that the TU is complete
is_complete = tu_type == "c" is_complete = tu_type == "c"
if is_complete:
# compose the build path as "build/src/path/of/tu.c.o"
base_path = Path("build", "src", tu_name).with_suffix(".c.o") base_path = Path("build", "src", tu_name).with_suffix(".c.o")
else: # if is_complete:
# leave unset if the TU is not yet decompiled # # compose the build path as "build/src/path/of/tu.c.o"
base_path = None # else:
# # leave unset if the TU is not yet decompiled
# base_path = None
fn_order = not tu_name.startswith("sdk/")
unit: dict[str, Any] = { unit: dict[str, Any] = {
"name": tu_name, "name": tu_name,
"target_path": str(target_path), "target_path": str(target_path),
"base_path": str(base_path) if base_path else None, "base_path": str(base_path) if base_path else None,
"metadata": { "metadata": {
"complete": is_complete,
"reverse_fn_order": fn_order,
"source_path": str(Path("..", "src", tu_name).with_suffix(".c")), "source_path": str(Path("..", "src", tu_name).with_suffix(".c")),
"progress_categories": [language] "progress_categories": [language],
}, },
} }
+7
View File
@@ -25,4 +25,11 @@ f32 atan2f(f32, f32);
#define BSS __attribute__ ((section (".bss"))) #define BSS __attribute__ ((section (".bss")))
#ifndef INCLUDE_ASM
#define INCLUDE_ASM(FOLDER, NAME)
#endif
#ifndef INCLUDE_RODATA
#define INCLUDE_RODATA(FOLDER, NAME)
#endif
#endif /* COMMON_H */ #endif /* COMMON_H */