17db96d56Sopenharmony_ciimport re 27db96d56Sopenharmony_ciimport sys 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci# Write the config.c file 57db96d56Sopenharmony_ci 67db96d56Sopenharmony_cinever = ['marshal', '_imp', '_ast', '__main__', 'builtins', 77db96d56Sopenharmony_ci 'sys', 'gc', '_warnings'] 87db96d56Sopenharmony_ci 97db96d56Sopenharmony_cidef makeconfig(infp, outfp, modules, with_ifdef=0): 107db96d56Sopenharmony_ci m1 = re.compile('-- ADDMODULE MARKER 1 --') 117db96d56Sopenharmony_ci m2 = re.compile('-- ADDMODULE MARKER 2 --') 127db96d56Sopenharmony_ci for line in infp: 137db96d56Sopenharmony_ci outfp.write(line) 147db96d56Sopenharmony_ci if m1 and m1.search(line): 157db96d56Sopenharmony_ci m1 = None 167db96d56Sopenharmony_ci for mod in modules: 177db96d56Sopenharmony_ci if mod in never: 187db96d56Sopenharmony_ci continue 197db96d56Sopenharmony_ci if with_ifdef: 207db96d56Sopenharmony_ci outfp.write("#ifndef PyInit_%s\n"%mod) 217db96d56Sopenharmony_ci outfp.write('extern PyObject* PyInit_%s(void);\n' % mod) 227db96d56Sopenharmony_ci if with_ifdef: 237db96d56Sopenharmony_ci outfp.write("#endif\n") 247db96d56Sopenharmony_ci elif m2 and m2.search(line): 257db96d56Sopenharmony_ci m2 = None 267db96d56Sopenharmony_ci for mod in modules: 277db96d56Sopenharmony_ci if mod in never: 287db96d56Sopenharmony_ci continue 297db96d56Sopenharmony_ci outfp.write('\t{"%s", PyInit_%s},\n' % 307db96d56Sopenharmony_ci (mod, mod)) 317db96d56Sopenharmony_ci if m1: 327db96d56Sopenharmony_ci sys.stderr.write('MARKER 1 never found\n') 337db96d56Sopenharmony_ci elif m2: 347db96d56Sopenharmony_ci sys.stderr.write('MARKER 2 never found\n') 357db96d56Sopenharmony_ci 367db96d56Sopenharmony_ci 377db96d56Sopenharmony_ci# Test program. 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_cidef test(): 407db96d56Sopenharmony_ci if not sys.argv[3:]: 417db96d56Sopenharmony_ci print('usage: python makeconfig.py config.c.in outputfile', end=' ') 427db96d56Sopenharmony_ci print('modulename ...') 437db96d56Sopenharmony_ci sys.exit(2) 447db96d56Sopenharmony_ci if sys.argv[1] == '-': 457db96d56Sopenharmony_ci infp = sys.stdin 467db96d56Sopenharmony_ci else: 477db96d56Sopenharmony_ci infp = open(sys.argv[1]) 487db96d56Sopenharmony_ci if sys.argv[2] == '-': 497db96d56Sopenharmony_ci outfp = sys.stdout 507db96d56Sopenharmony_ci else: 517db96d56Sopenharmony_ci outfp = open(sys.argv[2], 'w') 527db96d56Sopenharmony_ci makeconfig(infp, outfp, sys.argv[3:]) 537db96d56Sopenharmony_ci if outfp != sys.stdout: 547db96d56Sopenharmony_ci outfp.close() 557db96d56Sopenharmony_ci if infp != sys.stdin: 567db96d56Sopenharmony_ci infp.close() 577db96d56Sopenharmony_ci 587db96d56Sopenharmony_ciif __name__ == '__main__': 597db96d56Sopenharmony_ci test() 60