Hash :
5cd76a8d
Author :
Date :
2021-04-26T17:38:48
Windows: Pass list of symbols to export to MSVC Arrange for passing .def files with the lists of symbols to export from DLLs when building on Windows with MSVC. Without this no symbols were being exported at all. The .def files are generated from the .map files at build time using scripts/map-to-def, which avoids needing to maintain two different sets of files.
#!/usr/bin/env python
"""A script to generate MSVC Module-Definition files from version-script
files (which are maintained manually)."""
import re
import sys
import pathlib
def symbols_from_map(path):
return re.findall(r'^\s+(r?xkb_.*);', path.read_text('utf-8'), re.MULTILINE)
if 2 > len(sys.argv) > 3:
raise SystemExit("Usage: {} file.map [file.def]".format(sys.argv[0]))
map_file = pathlib.Path(sys.argv[1])
map_symbols = set(symbols_from_map(map_file))
if len(sys.argv) == 3:
def_file = open(sys.argv[2], "w", encoding="utf-8")
else:
def_file = sys.stdout
def_file.write("LIBRARY {}\n".format(map_file.stem))
def_file.write("EXPORTS\n")
for symbol in sorted(map_symbols):
def_file.write("\t{}\n".format(symbol))