41 lines
1.3 KiB
Python
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")
|