1#!/usr/bin/env python 2 3"""A script to generate MSVC Module-Definition files from version-script 4files (which are maintained manually).""" 5 6import re 7import sys 8import pathlib 9 10 11def symbols_from_map(path): 12 return re.findall(r'^\s+(r?xkb_.*);', path.read_text('utf-8'), re.MULTILINE) 13 14 15if 2 > len(sys.argv) > 3: 16 raise SystemExit("Usage: {} file.map [file.def]".format(sys.argv[0])) 17 18 19map_file = pathlib.Path(sys.argv[1]) 20map_symbols = set(symbols_from_map(map_file)) 21 22if len(sys.argv) == 3: 23 def_file = open(sys.argv[2], "w", encoding="utf-8") 24else: 25 def_file = sys.stdout 26 27def_file.write("LIBRARY {}\n".format(map_file.stem)) 28def_file.write("EXPORTS\n") 29for symbol in sorted(map_symbols): 30 def_file.write("\t{}\n".format(symbol)) 31