xref: /dpdk/buildtools/gen-header.py (revision 50614ebc112e53d54193f8b14ff7d1b37b5be15b)
1*50614ebcSStephen Hemminger#! /usr/bin/env python3
2*50614ebcSStephen Hemminger# SPDX-License-Identifier: BSD-3-Clause
3*50614ebcSStephen Hemminger# Copyright (c) 2023 Stephen Hemminger <stephen@networkplumber.org>
4*50614ebcSStephen Hemminger
5*50614ebcSStephen Hemminger"""
6*50614ebcSStephen HemmingerScript to read a text file and convert it into a header file.
7*50614ebcSStephen Hemminger"""
8*50614ebcSStephen Hemmingerimport sys
9*50614ebcSStephen Hemmingerimport os
10*50614ebcSStephen Hemminger
11*50614ebcSStephen Hemminger
12*50614ebcSStephen Hemmingerdef main():
13*50614ebcSStephen Hemminger    '''program main function'''
14*50614ebcSStephen Hemminger    print(f'/* File autogenerated by {sys.argv[0]} */')
15*50614ebcSStephen Hemminger    for path in sys.argv[1:]:
16*50614ebcSStephen Hemminger        name = os.path.basename(path)
17*50614ebcSStephen Hemminger        print()
18*50614ebcSStephen Hemminger        print(f'/* generated from {name} */')
19*50614ebcSStephen Hemminger        with open(path, "r") as f:
20*50614ebcSStephen Hemminger            array = name.replace(".", "_")
21*50614ebcSStephen Hemminger            print(f'static const char {array}[] = ' + '{')
22*50614ebcSStephen Hemminger            line = f.readline()
23*50614ebcSStephen Hemminger
24*50614ebcSStephen Hemminger            # make sure empty string is null terminated
25*50614ebcSStephen Hemminger            if not line:
26*50614ebcSStephen Hemminger                print('    ""')
27*50614ebcSStephen Hemminger
28*50614ebcSStephen Hemminger            while line:
29*50614ebcSStephen Hemminger                s = repr(line)
30*50614ebcSStephen Hemminger                print('    {}'.format(s.replace("'", '"')))
31*50614ebcSStephen Hemminger                line = f.readline()
32*50614ebcSStephen Hemminger            print('};')
33*50614ebcSStephen Hemminger
34*50614ebcSStephen Hemminger
35*50614ebcSStephen Hemmingerif __name__ == "__main__":
36*50614ebcSStephen Hemminger    main()
37