blob: 8d680bfc0898d0f0ffbf705115ca11f9d8cc5e10 [file] [log] [blame]
# SPDX-License-Identifier: GPL-2.0+
# Copyright (c) 2022 Google, Inc
"""Script for generating C array for binary files
Usage: <script> output file1 file2 file3 ...
"""
import subprocess
import sys
from pathlib import Path
COPYRIGHT_HEADER = """/*
* Copyright (c) 2022 The Fuchsia Authors
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <stddef.h>
"""
def byte_array_declaration(data: bytes, name: str) -> str:
"""Generates a byte C array declaration for a byte array"""
type_name = 'const uint8_t'
byte_str = ''.join([f'0x{b:02x},' for b in data])
array_body = f'{{{byte_str}}}'
return f'{type_name} {name}[] = {array_body};'
def main() -> int:
if len(sys.argv) < 3:
print("not enough arguments")
return
with open(sys.argv[1], "w") as output_file:
output_file.write(COPYRIGHT_HEADER)
for file in sys.argv[2:]:
with open(file, "rb") as input_file:
# Best effort conversion to valid C variable name.
var_name = "arr_" + Path(file).name.replace(".", "_")
output_file.write(byte_array_declaration(input_file.read(), var_name))
output_file.write("\n")
subprocess.run([
"/usr/bin/clang-format",
"--style=file",
"-i",
sys.argv[1],
], check=True)
return 0
if __name__ == "__main__":
sys.exit(main())