jvm/gen_classpath.py

41 lines
1.3 KiB
Python

import sys
from itertools import chain
buf = sys.stdin.read()
def removesuffix(filename):
if filename.endswith('.java'):
filename = filename.removesuffix('.java')
if filename.endswith('.class'):
filename = filename.removesuffix('.class')
return filename
java_files = buf.strip().split('\n')
nosuffix_files = [removesuffix(f) for f in java_files]
class_files = [f + '.class' for f in nosuffix_files]
class_h_files = [f + '.class.h' for f in nosuffix_files]
class_o_files = [f + '.class.o' for f in nosuffix_files]
with open('class_headers.sh', 'w') as f:
filenames = ' '.join(class_files)
f.write(' '.join(["make", filenames, '\n']))
filenames = ' '.join(chain(class_h_files, class_o_files))
f.write(' '.join(["make", "-f", "Makefile.dreamcast.mk", filenames, '\n']))
with open('c/main_classpath.inc.c', 'w') as f:
for filename in class_files:
name = filename.replace('/', '_').replace('.', '_')
f.write(f" (const uint8_t *)&_binary_{name}_start,\n")
with open('c/main_classpath.h', 'w') as f:
for filename in class_h_files:
f.write(f'#include "{filename}"\n')
with open('classpath.mk', 'w') as f:
f.write("CLASS_PATH = \\\n")
for filename in class_o_files[:-2]:
f.write(f"\t{filename} \\\n")
filename = class_o_files[-1]
f.write(f"\t{filename}\n")