#!/usr/bin/python3 import os import sys import xml.dom.minidom as XML import glob def Main(): # Read base configuration base = "" with open("iar_template.ipcf") as f: base = f.read() # Enumerate all device/host examples dir_1 = os.listdir("../examples") for dir_2 in dir_1: if os.path.isdir("../examples/{}".format(dir_2)): print(dir_2) examples = os.listdir("../examples/{}".format(dir_2)) for example in examples: if os.path.isdir("../examples/{}/{}".format(dir_2, example)): print("../examples/{}/{}".format(dir_2, example)) conf = XML.parseString(base) files = conf.getElementsByTagName("files")[0] inc = conf.getElementsByTagName("includePath")[0] # Add bsp inc path = conf.createElement('path') path_txt = conf.createTextNode("$TUSB_DIR$/hw") path.appendChild(path_txt) inc.appendChild(path) # Add board.c/.h grp = conf.createElement('group') grp.setAttribute("name", "bsp") path = conf.createElement('path') path_txt = conf.createTextNode("$TUSB_DIR$/hw/bsp/board.c") path.appendChild(path_txt) grp.appendChild(path) files.appendChild(grp) # Add example's .c/.h grp = conf.createElement('group') grp.setAttribute("name", "example") for file in os.listdir("../examples/{}/{}/src".format(dir_2, example)): if file.endswith(".c") or file.endswith(".h"): path = conf.createElement('path') path.setAttribute("copyTo", "$PROJ_DIR$/{}".format(file)) path_txt = conf.createTextNode("$TUSB_DIR$/examples/{0}/{1}/src/{2}".format(dir_2, example, file)) path.appendChild(path_txt) grp.appendChild(path) files.appendChild(grp) cfg_str = conf.toprettyxml() cfg_str = '\n'.join([s for s in cfg_str.splitlines() if s.strip()]) #print(cfg_str) with open("../examples/{0}/{1}/iar_{1}.ipcf".format(dir_2, example), 'w') as f: f.write(cfg_str) def ListPath(path, blacklist=[]): # Get all .c files files = glob.glob(f'../{path}/**/*.c', recursive=True) # Filter files = [x for x in files if all(y not in x for y in blacklist)] # Get common dir list dirs = [] for file in files: dir = os.path.dirname(file) if dir not in dirs: dirs.append(dir) # Print .c grouped by dir for dir in dirs: print('') for file in files: if os.path.dirname(file) == dir: print(' $TUSB_DIR$/' + file.replace('../','').replace('\\','/')+'') print('') def List(): ListPath('src', [ 'template.c', 'dcd_synopsys.c', 'dcd_esp32sx.c' ]) ListPath('lib/SEGGER_RTT') if __name__ == "__main__": if (len(sys.argv) > 1): if (sys.argv[1] == 'l'): List() else: Main()