forked from mia/Aegisub
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
import sys
|
||
|
import os
|
||
|
|
||
|
manifestfile, cppfile, hfile = sys.argv[1:]
|
||
|
|
||
|
with open(manifestfile, 'r') as manifest:
|
||
|
files = dict((x.strip(), None) for x in manifest.readlines() if x.strip() != '')
|
||
|
|
||
|
sourcepath = os.path.split(manifestfile)[0]
|
||
|
buildpath = os.path.split(cppfile)[0]
|
||
|
|
||
|
for k in files:
|
||
|
sf = os.path.join(sourcepath, k)
|
||
|
bf = os.path.join(buildpath, k)
|
||
|
|
||
|
if os.path.isfile(sf):
|
||
|
files[k] = sf
|
||
|
elif os.path.isfile(bf):
|
||
|
files[k] = bf
|
||
|
else:
|
||
|
print("{}: Failed to open '{}'".format(manifestfile, k))
|
||
|
sys.exit(1)
|
||
|
|
||
|
with open(cppfile, 'w') as cpp:
|
||
|
cpp.write('#include "libresrc.h"\n')
|
||
|
with open(hfile, 'w') as h:
|
||
|
|
||
|
for k in files:
|
||
|
with open(files[k], 'rb') as f:
|
||
|
data = [str(int(x)) for x in f.read()]
|
||
|
|
||
|
datastr = ','.join(data)
|
||
|
name = os.path.splitext(os.path.basename(k))[0]
|
||
|
cpp.write('const unsigned char {}[] = {{{}}};\n'.format(name, datastr))
|
||
|
h.write('extern const unsigned char {}[{}];\n'.format(name, len(data)))
|