"""Embed binary files in a C source: embed_file.py out.c symbol=path [symbol=path ...]""" import sys from pathlib import Path out, pairs = Path(sys.argv[1]), [arg.split('=', 1) for arg in sys.argv[2:]] lines = ['/* Generated by tools/embed_file.py; do not edit. */', '#include '] for symbol, path in pairs: data = Path(path).read_bytes() lines.append(f'/* {Path(path).name} */') lines.append(f'__attribute__((aligned(4))) const unsigned char {symbol}[] = {{') for i in range(0, len(data), 24): lines.append(''.join(f'{b},' for b in data[i:i + 24])) lines.append('};') lines.append(f'const size_t {symbol}Size = {len(data)};') out.write_text('\n'.join(lines) + '\n')