#!/usr/bin/python3 # Complete file list producer v0.7 # Written by ProjectRevoTPP import os from glob import glob from itertools import chain import sys def holecount(file): with open(file, 'r', encoding = 'utf-8') as infile: contents = infile.readlines() asm_count = 0 for i, line in enumerate(contents): if(line.count("GLOBAL_ASM") > 0 and (i + 1 == len(contents) or contents[i+1].count("#endif") == 0)): asm_count += 1 return asm_count def noncount(file): with open(file, 'r', encoding = 'utf-8') as infile: contents = infile.readlines() noncount = 0 for i, line in enumerate(contents): if(line.count("NON_") > 0): noncount += 1 return noncount def holecount_all(src): for subdir, dirs, files in os.walk(src): for filename in files: filepath = subdir + os.sep + filename if(not filename.endswith('.c')): continue holes = holecount(filepath) nonmatches = noncount(filepath) if(holes > 0 and nonmatches > 0): print(filename, holes, nonmatches) return 1 paths = ('src', 'libultra') # get file encoding type def get_encoding_type(file): with open(file, 'rb') as f: rawdata = f.read() return detect(rawdata)['encoding'] outfile = open(sys.argv[1], "w") outfile.write("# This file is auto-generated. DO NOT MODIFY!\n\n") outfile.write("GCC_SAFE_FILES := \\\n") for directory in chain.from_iterable(os.walk(path) for path in paths): for filename in glob(os.path.join(directory[0], "*.c")): infile = open(filename, "r", encoding="ascii", errors="surrogateescape") # Open content. contents = infile.read() # Set the counts. nonm_count = contents.count("NON_MATCHING") noneq_count = contents.count("NON_EQUIVALENT") global_asm_count = contents.count("GLOBAL_ASM") if nonm_count > 0: print(filename + ": " + str(nonm_count)) if noneq_count > 0: print(filename + ": " + str(noneq_count)) if global_asm_count > 0: print(filename + ": " + str(global_asm_count)) # NOTE: As of now there is no distinction between unattempted files and unfinished ones. if (nonm_count + noneq_count + global_asm_count) == 0 : outfile.write(" $(BUILD_DIR)/") outfile.write(os.path.splitext(filename)[0]) outfile.write(".c.o \\\n") infile.close() outfile.close()