#!/usr/bin/env python3 import fileinput import fnmatch import glob import inspect import os import os.path import platform import subprocess import sys PropertyGroupGlobals = '' ImportGlobalsProps = ' ' PlatformToolset = 'PlatformToolset' UpgradeFromVC71 = 'UpgradeFromVC71.props' CopyIcuData = 'copy "$(U_ICUDATA_NAME).dll" "$(DLL_OUTPUT)"' MakeDllOutDir = ' @if not exist "$(DLL_OUTPUT)" mkdir "$(DLL_OUTPUT)"' def GetScriptDirectory(): if hasattr(GetScriptDirectory, "dir"): return GetScriptDirectory.dir module_path = "" if len(sys.argv) > 0 and len(sys.argv[0]) > 0 and os.path.isabs(sys.argv[0]): module_path = sys.argv[0] else: module_path = os.path.abspath(inspect.getfile(GetScriptDirectory)) if not os.path.exists(module_path): # If cx_freeze is used the value of the module_path variable at this point is in the following format. # {PathToExeFile}\{NameOfPythonSourceFile}. This makes it necessary to strip off the file name to get the correct # path. module_path = os.path.dirname(module_path) GetScriptDirectory.dir = os.path.dirname(module_path) return GetScriptDirectory.dir def find_files(directory, pattern): for root, dirs, files in os.walk(directory): for basename in files: if fnmatch.fnmatch(basename, pattern): filename = os.path.join(root, basename) yield filename def ProcessProjectFile(projectFile): for line in fileinput.input(projectFile, inplace=1): if line.find(PropertyGroupGlobals) != -1: print(ImportGlobalsProps) print(line, end='') elif line.find(PlatformToolset) != -1: pass elif line.find(UpgradeFromVC71) != -1: pass elif line.isspace(): pass else: print(line, end='') def ProcessMakeFile(makeFile): for line in fileinput.input(makeFile, inplace=1): if line.find(CopyIcuData) != -1: print(MakeDllOutDir) print(line, end='') else: print(line, end='') def main(argv): for projectFile in find_files(GetScriptDirectory(), '*.vcxproj'): ProcessProjectFile(projectFile) for makeFile in find_files(GetScriptDirectory(), 'makedata.mak'): ProcessMakeFile(makeFile) sys.exit(main(sys.argv))