44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
import sys
|
|
import os
|
|
|
|
if __name__ == '__main__':
|
|
if len(sys.argv) < 3:
|
|
print('Usage: headerize.py [lib names ...] [header dir]')
|
|
exit(1)
|
|
|
|
lib_names = []
|
|
hdr_dir = os.path.abspath(sys.argv[-1])
|
|
|
|
for libarg in sys.argv[1:-1]:
|
|
if os.path.isdir(libarg):
|
|
lib_folder = os.path.abspath(libarg)
|
|
for lib_fname in os.listdir(lib_folder):
|
|
lib_names.append(lib_folder + '/' + lib_fname)
|
|
else:
|
|
lib_names.append(os.path.abspath(libarg))
|
|
|
|
header_lines = ['#ifndef CHECKM8_TOOL_LIBPAYLOAD_H\n',
|
|
'#define CHECKM8_TOOL_LIBPAYLOAD_H\n',
|
|
'\n']
|
|
|
|
name_lines = []
|
|
size_lines = []
|
|
|
|
for n in lib_names:
|
|
with open(n, 'r') as f:
|
|
line = f.readline() # looks like "const unsigned char PAYLOAD_NAME[PAYLOAD_SIZE] = "
|
|
name = line.split(' ')[3].split('[')[0]
|
|
size = line.split(' ')[3].split('[')[1][:-1]
|
|
|
|
name_lines.append('extern const unsigned char %s[%s_SZ];\n' % (name, name.upper()))
|
|
size_lines.append('#define %s_SZ %s\n' % (name.upper(), size))
|
|
|
|
header_lines.extend(size_lines)
|
|
header_lines.append('\n')
|
|
header_lines.extend(name_lines)
|
|
|
|
header_lines.append('\n')
|
|
header_lines.append('#endif //CHECKM8_TOOL_LIBPAYLOAD_H\n')
|
|
|
|
with open(hdr_dir + '/libpayload.h', 'w+') as f:
|
|
f.writelines(header_lines) |