Path: blob/main/sys/contrib/libsodium/regen-msvc/regen-msvc.py
48255 views
#! /usr/bin/env python312import fileinput3import glob4import os5import uuid67dirs = set()89tlv1 = ""10for file in glob.iglob("src/libsodium/**/*.c", recursive=True):11file = file.replace("/", "\\")12tlv1 = tlv1 + " <ClCompile Include=\"{}\" />\r\n".format(file)1314tlv2 = ""15for file in glob.iglob("src/libsodium/**/*.h", recursive=True):16file = file.replace("/", "\\")17tlv2 = tlv2 + " <ClInclude Include=\"{}\" />\r\n".format(file)1819tlf1 = ""20for file in glob.iglob("src/libsodium/**/*.c", recursive=True):21file = file.replace("/", "\\")22tlf1 = tlf1 + " <ClCompile Include=\"{}\">\r\n".format(file)23tlf1 = tlf1 + " <Filter>Source Files</Filter>\r\n"24tlf1 = tlf1 + " </ClCompile>\r\n"2526tlf2 = ""27for file in glob.iglob("src/libsodium/**/*.h", recursive=True):28file = file.replace("/", "\\")29tlf2 = tlf2 + " <ClInclude Include=\"{}\">\r\n".format(file)30tlf2 = tlf2 + " <Filter>Header Files</Filter>\r\n"31tlf2 = tlf2 + " </ClInclude>\r\n"3233v1 = ""34for file in glob.iglob("src/libsodium/**/*.c", recursive=True):35file = file.replace("/", "\\")36v1 = v1 + \37" <ClCompile Include=\"..\\..\\..\\..\\{}\" />\r\n".format(file)3839v2 = ""40for file in glob.iglob("src/libsodium/**/*.h", recursive=True):41file = file.replace("/", "\\")42v2 = v2 + \43" <ClInclude Include=\"..\\..\\..\\..\\{}\" />\r\n".format(file)4445f1 = ""46for file in glob.iglob("src/libsodium/**/*.c", recursive=True):47basedir = os.path.dirname(file).replace("src/libsodium/", "")48t = basedir49while t != '':50dirs.add(t)51t = os.path.dirname(t)52basedir = basedir.replace("/", "\\")53file = file.replace("/", "\\")54f1 = f1 + " <ClCompile Include=\"..\\..\\..\\..\\{}\">\r\n".format(file)55f1 = f1 + " <Filter>{}</Filter>\r\n".format(basedir)56f1 = f1 + " </ClCompile>\r\n"5758f2 = ""59for file in glob.iglob("src/libsodium/**/*.h", recursive=True):60basedir = os.path.dirname(file).replace("src/libsodium/", "")61t = basedir62while t != '':63dirs.add(t)64t = os.path.dirname(t)65basedir = basedir.replace("/", "\\")66file = file.replace("/", "\\")67f2 = f2 + " <ClInclude Include=\"..\\..\\..\\..\\{}\">\r\n".format(file)68f2 = f2 + " <Filter>{}</Filter>\r\n".format(basedir)69f2 = f2 + " </ClInclude>\r\n"7071fd = ""72dirs = list(dirs)73dirs.sort()74for dir in dirs:75dir = dir.replace("/", "\\")76uid = uuid.uuid3(uuid.UUID(bytes=b'LibSodiumMSVCUID'), dir)77fd = fd + " <Filter Include=\"{}\">\r\n".format(dir)78fd = fd + \79" <UniqueIdentifier>{{{}}}</UniqueIdentifier>\r\n".format(uid)80fd = fd + " </Filter>\r\n"818283def apply_template(tplfile, outfile, sbox):84tpl = ""85with open(tplfile, 'rb') as fd:86tpl = fd.read()87for s in sbox.keys():88tpl = tpl.replace(str.encode(89"{{" + s + "}}", "utf8"), str.encode(str.strip(sbox[s]), "utf8"))9091with open(outfile, 'wb') as fd:92fd.write(tpl)9394sbox = {"tlv1": tlv1, "tlv2": tlv2, "tlf1": tlf1, "tlf2": tlf2, "v1": v1,95"v2": v2, "f1": f1, "f2": f2, "fd": fd}9697sd = os.path.dirname(os.path.realpath(__file__))9899apply_template(sd + "/tl_libsodium.vcxproj.filters.tpl",100"libsodium.vcxproj.filters", sbox)101102sbox.update({"platform": "v140"})103apply_template(sd + "/tl_libsodium.vcxproj.tpl",104"libsodium.vcxproj", sbox)105106apply_template(sd + "/libsodium.vcxproj.filters.tpl",107"builds/msvc/vs2017/libsodium/libsodium.vcxproj.filters", sbox)108apply_template(sd + "/libsodium.vcxproj.filters.tpl",109"builds/msvc/vs2015/libsodium/libsodium.vcxproj.filters", sbox)110apply_template(sd + "/libsodium.vcxproj.filters.tpl",111"builds/msvc/vs2013/libsodium/libsodium.vcxproj.filters", sbox)112apply_template(sd + "/libsodium.vcxproj.filters.tpl",113"builds/msvc/vs2012/libsodium/libsodium.vcxproj.filters", sbox)114apply_template(sd + "/libsodium.vcxproj.filters.tpl",115"builds/msvc/vs2010/libsodium/libsodium.vcxproj.filters", sbox)116117sbox.update({"platform": "v141"})118apply_template(sd + "/libsodium.vcxproj.tpl",119"builds/msvc/vs2017/libsodium/libsodium.vcxproj", sbox)120121sbox.update({"platform": "v140"})122apply_template(sd + "/libsodium.vcxproj.tpl",123"builds/msvc/vs2015/libsodium/libsodium.vcxproj", sbox)124125sbox.update({"platform": "v120"})126apply_template(sd + "/libsodium.vcxproj.tpl",127"builds/msvc/vs2013/libsodium/libsodium.vcxproj", sbox)128129sbox.update({"platform": "v110"})130apply_template(sd + "/libsodium.vcxproj.tpl",131"builds/msvc/vs2012/libsodium/libsodium.vcxproj", sbox)132133sbox.update({"platform": "v100"})134apply_template(sd + "/libsodium.vcxproj.tpl",135"builds/msvc/vs2010/libsodium/libsodium.vcxproj", sbox)136137138