mirror of
https://github.com/zeldaret/oot.git
synced 2025-07-05 23:44:53 +00:00
Enable more IDO warnings and apply fixes (#1264)
* Update asm-processor and fix includes with EARLY * Enable more IDO warnings and disable unwanted warning 516 * Fix most new and remaining warnings * Improve skelanime comment * Improve asmproc pragma comment Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com> * Add suggested comment for a wrong prototype * Update asm-processor with the latest fix Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com>
This commit is contained in:
parent
4cb1c3345f
commit
feadb0d9ee
30 changed files with 269 additions and 148 deletions
|
@ -1,64 +1,114 @@
|
|||
#!/usr/bin/env python3
|
||||
import sys
|
||||
import os
|
||||
from pathlib import Path
|
||||
import shlex
|
||||
import subprocess
|
||||
import tempfile
|
||||
import uuid
|
||||
import asm_processor
|
||||
|
||||
dir_path = os.path.dirname(os.path.realpath(__file__))
|
||||
prelude = os.path.join(dir_path, "prelude.inc")
|
||||
# Boolean for debugging purposes
|
||||
# Preprocessed files are temporary, set to True to keep a copy
|
||||
keep_preprocessed_files = False
|
||||
|
||||
dir_path = Path(__file__).resolve().parent
|
||||
asm_prelude_path = dir_path / "prelude.inc"
|
||||
|
||||
all_args = sys.argv[1:]
|
||||
sep1 = all_args.index('--')
|
||||
sep2 = all_args.index('--', sep1+1)
|
||||
sep0 = next(index for index, arg in enumerate(all_args) if not arg.startswith("-"))
|
||||
sep1 = all_args.index("--")
|
||||
sep2 = all_args.index("--", sep1 + 1)
|
||||
|
||||
compiler = all_args[:sep1]
|
||||
asmproc_flags = all_args[:sep0]
|
||||
compiler = all_args[sep0:sep1]
|
||||
|
||||
assembler = all_args[sep1+1:sep2]
|
||||
assembler_sh = ' '.join(shlex.quote(x) for x in assembler)
|
||||
assembler_args = all_args[sep1 + 1 : sep2]
|
||||
assembler_sh = " ".join(shlex.quote(x) for x in assembler_args)
|
||||
|
||||
compile_args = all_args[sep2+1:]
|
||||
in_file = compile_args[-1]
|
||||
out_ind = compile_args.index('-o')
|
||||
out_file = compile_args[out_ind + 1]
|
||||
|
||||
compile_args = all_args[sep2 + 1 :]
|
||||
|
||||
in_file = Path(compile_args[-1])
|
||||
del compile_args[-1]
|
||||
|
||||
out_ind = compile_args.index("-o")
|
||||
out_file = Path(compile_args[out_ind + 1])
|
||||
del compile_args[out_ind + 1]
|
||||
del compile_args[out_ind]
|
||||
|
||||
in_dir = os.path.split(os.path.realpath(in_file))[0]
|
||||
opt_flags = [x for x in compile_args if x in ['-g3', '-g', '-O1', '-O2', '-framepointer']]
|
||||
|
||||
preprocessed_file = tempfile.NamedTemporaryFile(prefix='preprocessed', suffix='.c', delete=False)
|
||||
in_dir = in_file.resolve().parent
|
||||
opt_flags = [
|
||||
x for x in compile_args if x in {"-g3", "-g", "-O0", "-O1", "-O2", "-framepointer"}
|
||||
]
|
||||
if "-mips2" not in compile_args:
|
||||
opt_flags.append("-mips1")
|
||||
|
||||
try:
|
||||
asmproc_flags = opt_flags + [in_file, '--input-enc', 'utf-8', '--output-enc', 'euc-jp']
|
||||
compile_cmdline = compiler + compile_args + ['-I', in_dir, '-o', out_file, preprocessed_file.name]
|
||||
asmproc_flags += opt_flags + [str(in_file)]
|
||||
|
||||
# Drop .mdebug and .gptab sections from resulting binaries. This makes
|
||||
# resulting .o files much smaller and speeds up builds, but loses line
|
||||
# number debug data.
|
||||
# asmproc_flags += ["--drop-mdebug-gptab"]
|
||||
|
||||
# Convert encoding before compiling.
|
||||
asmproc_flags += ["--input-enc", "utf-8", "--output-enc", "euc-jp"]
|
||||
|
||||
with tempfile.TemporaryDirectory(prefix="asm_processor") as tmpdirname:
|
||||
tmpdir_path = Path(tmpdirname)
|
||||
preprocessed_filename = "preprocessed_" + uuid.uuid4().hex + ".c"
|
||||
preprocessed_path = tmpdir_path / preprocessed_filename
|
||||
|
||||
with preprocessed_path.open("wb") as f:
|
||||
functions, deps = asm_processor.run(asmproc_flags, outfile=f)
|
||||
|
||||
if keep_preprocessed_files:
|
||||
import shutil
|
||||
|
||||
keep_output_dir = Path("./asm_processor_preprocessed")
|
||||
keep_output_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
shutil.copy(
|
||||
preprocessed_path,
|
||||
keep_output_dir / (in_file.stem + "_" + preprocessed_filename),
|
||||
)
|
||||
|
||||
compile_cmdline = (
|
||||
compiler
|
||||
+ compile_args
|
||||
+ ["-I", str(in_dir), "-o", str(out_file), str(preprocessed_path)]
|
||||
)
|
||||
|
||||
functions, deps = asm_processor.run(asmproc_flags, outfile=preprocessed_file)
|
||||
try:
|
||||
subprocess.check_call(compile_cmdline)
|
||||
except subprocess.CalledProcessError as e:
|
||||
print("Failed to compile file " + in_file + ". Command line:")
|
||||
print("Failed to compile file " + str(in_file) + ". Command line:")
|
||||
print()
|
||||
print(' '.join(shlex.quote(x) for x in compile_cmdline))
|
||||
print(" ".join(shlex.quote(x) for x in compile_cmdline))
|
||||
print()
|
||||
sys.exit(55)
|
||||
# To keep the preprocessed file:
|
||||
# os._exit(1)
|
||||
|
||||
asm_processor.run(asmproc_flags + ['--post-process', out_file, '--assembler', assembler_sh, '--asm-prelude', prelude], functions=functions)
|
||||
asm_processor.run(
|
||||
asmproc_flags
|
||||
+ [
|
||||
"--post-process",
|
||||
str(out_file),
|
||||
"--assembler",
|
||||
assembler_sh,
|
||||
"--asm-prelude",
|
||||
str(asm_prelude_path),
|
||||
],
|
||||
functions=functions,
|
||||
)
|
||||
|
||||
deps_file = out_file[:-2] + ".asmproc.d"
|
||||
deps_file = out_file.with_suffix(".asmproc.d")
|
||||
if deps:
|
||||
with open(deps_file, "w") as f:
|
||||
f.write(out_file + ": " + " \\\n ".join(deps) + "\n")
|
||||
with deps_file.open("w") as f:
|
||||
f.write(str(out_file) + ": " + " \\\n ".join(deps) + "\n")
|
||||
for dep in deps:
|
||||
f.write("\n" + dep + ":\n")
|
||||
else:
|
||||
try:
|
||||
os.remove(deps_file)
|
||||
deps_file.unlink()
|
||||
except OSError:
|
||||
pass
|
||||
finally:
|
||||
os.remove(preprocessed_file.name)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue