| 964 | return obj.src_obj_path |
| 965 | |
| 966 | def asm_build( |
| 967 | obj: Object, src_path: Path, obj_path: Optional[Path] |
| 968 | ) -> Optional[Path]: |
| 969 | if obj.options["asflags"] is None: |
| 970 | sys.exit("ProjectConfig.asflags missing") |
| 971 | asflags_str = make_flags_str(obj.options["asflags"]) |
| 972 | if len(obj.options["extra_asflags"]) > 0: |
| 973 | extra_asflags_str = make_flags_str(obj.options["extra_asflags"]) |
| 974 | asflags_str += " " + extra_asflags_str |
| 975 | |
| 976 | # Avoid creating duplicate build rules |
| 977 | if obj_path is None or obj_path in source_added: |
| 978 | return obj_path |
| 979 | source_added.add(obj_path) |
| 980 | |
| 981 | # Add assembler build rule |
| 982 | lib_name = obj.options["lib"] |
| 983 | n.comment(f"{obj.name}: {lib_name} (linked {obj.completed})") |
| 984 | n.build( |
| 985 | outputs=obj_path, |
| 986 | rule="as", |
| 987 | inputs=src_path, |
| 988 | variables={"asflags": asflags_str}, |
| 989 | implicit=gnu_as_implicit, |
| 990 | order_only="pre-compile", |
| 991 | ) |
| 992 | n.newline() |
| 993 | |
| 994 | if obj.options["add_to_all"]: |
| 995 | source_inputs.append(obj_path) |
| 996 | |
| 997 | return obj_path |
| 998 | |
| 999 | def add_unit(build_obj: BuildConfigUnit, link_step: LinkStep): |
| 1000 | obj_path, obj_name = build_obj["object"], build_obj["name"] |