]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/contrib/libsodium/regen-msvc/regen-msvc.py
Update OpenSSL to 1.1.1.
[FreeBSD/FreeBSD.git] / sys / contrib / libsodium / regen-msvc / regen-msvc.py
1 #! /usr/bin/env python3
2
3 import fileinput
4 import glob
5 import os
6 import uuid
7
8 dirs = set()
9
10 tlv1 = ""
11 for file in glob.iglob("src/libsodium/**/*.c", recursive=True):
12     file = file.replace("/", "\\")
13     tlv1 = tlv1 + "    <ClCompile Include=\"{}\" />\r\n".format(file)
14
15 tlv2 = ""
16 for file in glob.iglob("src/libsodium/**/*.h", recursive=True):
17     file = file.replace("/", "\\")
18     tlv2 = tlv2 + "    <ClInclude Include=\"{}\" />\r\n".format(file)
19
20 tlf1 = ""
21 for file in glob.iglob("src/libsodium/**/*.c", recursive=True):
22     file = file.replace("/", "\\")
23     tlf1 = tlf1 + "    <ClCompile Include=\"{}\">\r\n".format(file)
24     tlf1 = tlf1 + "      <Filter>Source Files</Filter>\r\n"
25     tlf1 = tlf1 + "    </ClCompile>\r\n"
26
27 tlf2 = ""
28 for file in glob.iglob("src/libsodium/**/*.h", recursive=True):
29     file = file.replace("/", "\\")
30     tlf2 = tlf2 + "    <ClInclude Include=\"{}\">\r\n".format(file)
31     tlf2 = tlf2 + "      <Filter>Header Files</Filter>\r\n"
32     tlf2 = tlf2 + "    </ClInclude>\r\n"
33
34 v1 = ""
35 for file in glob.iglob("src/libsodium/**/*.c", recursive=True):
36     file = file.replace("/", "\\")
37     v1 = v1 + \
38         "    <ClCompile Include=\"..\\..\\..\\..\\{}\" />\r\n".format(file)
39
40 v2 = ""
41 for file in glob.iglob("src/libsodium/**/*.h", recursive=True):
42     file = file.replace("/", "\\")
43     v2 = v2 + \
44         "    <ClInclude Include=\"..\\..\\..\\..\\{}\" />\r\n".format(file)
45
46 f1 = ""
47 for file in glob.iglob("src/libsodium/**/*.c", recursive=True):
48     basedir = os.path.dirname(file).replace("src/libsodium/", "")
49     t = basedir
50     while t != '':
51         dirs.add(t)
52         t = os.path.dirname(t)
53     basedir = basedir.replace("/", "\\")
54     file = file.replace("/", "\\")
55     f1 = f1 + "    <ClCompile Include=\"..\\..\\..\\..\\{}\">\r\n".format(file)
56     f1 = f1 + "      <Filter>{}</Filter>\r\n".format(basedir)
57     f1 = f1 + "    </ClCompile>\r\n"
58
59 f2 = ""
60 for file in glob.iglob("src/libsodium/**/*.h", recursive=True):
61     basedir = os.path.dirname(file).replace("src/libsodium/", "")
62     t = basedir
63     while t != '':
64         dirs.add(t)
65         t = os.path.dirname(t)
66     basedir = basedir.replace("/", "\\")
67     file = file.replace("/", "\\")
68     f2 = f2 + "    <ClInclude Include=\"..\\..\\..\\..\\{}\">\r\n".format(file)
69     f2 = f2 + "      <Filter>{}</Filter>\r\n".format(basedir)
70     f2 = f2 + "    </ClInclude>\r\n"
71
72 fd = ""
73 dirs = list(dirs)
74 dirs.sort()
75 for dir in dirs:
76     dir = dir.replace("/", "\\")
77     uid = uuid.uuid3(uuid.UUID(bytes=b'LibSodiumMSVCUID'), dir)
78     fd = fd + "    <Filter Include=\"{}\">\r\n".format(dir)
79     fd = fd + \
80         "      <UniqueIdentifier>{{{}}}</UniqueIdentifier>\r\n".format(uid)
81     fd = fd + "    </Filter>\r\n"
82
83
84 def apply_template(tplfile, outfile, sbox):
85     tpl = ""
86     with open(tplfile, 'rb') as fd:
87         tpl = fd.read()
88     for s in sbox.keys():
89         tpl = tpl.replace(str.encode(
90             "{{" + s + "}}", "utf8"), str.encode(str.strip(sbox[s]), "utf8"))
91
92     with open(outfile, 'wb') as fd:
93         fd.write(tpl)
94
95 sbox = {"tlv1": tlv1, "tlv2": tlv2, "tlf1": tlf1, "tlf2": tlf2, "v1": v1,
96         "v2": v2, "f1": f1, "f2": f2, "fd": fd}
97
98 sd = os.path.dirname(os.path.realpath(__file__))
99
100 apply_template(sd + "/tl_libsodium.vcxproj.filters.tpl",
101                "libsodium.vcxproj.filters", sbox)
102
103 sbox.update({"platform": "v140"})
104 apply_template(sd + "/tl_libsodium.vcxproj.tpl",
105                "libsodium.vcxproj", sbox)
106
107 apply_template(sd + "/libsodium.vcxproj.filters.tpl",
108                "builds/msvc/vs2017/libsodium/libsodium.vcxproj.filters", sbox)
109 apply_template(sd + "/libsodium.vcxproj.filters.tpl",
110                "builds/msvc/vs2015/libsodium/libsodium.vcxproj.filters", sbox)
111 apply_template(sd + "/libsodium.vcxproj.filters.tpl",
112                "builds/msvc/vs2013/libsodium/libsodium.vcxproj.filters", sbox)
113 apply_template(sd + "/libsodium.vcxproj.filters.tpl",
114                "builds/msvc/vs2012/libsodium/libsodium.vcxproj.filters", sbox)
115 apply_template(sd + "/libsodium.vcxproj.filters.tpl",
116                "builds/msvc/vs2010/libsodium/libsodium.vcxproj.filters", sbox)
117
118 sbox.update({"platform": "v141"})
119 apply_template(sd + "/libsodium.vcxproj.tpl",
120                "builds/msvc/vs2017/libsodium/libsodium.vcxproj", sbox)
121
122 sbox.update({"platform": "v140"})
123 apply_template(sd + "/libsodium.vcxproj.tpl",
124                "builds/msvc/vs2015/libsodium/libsodium.vcxproj", sbox)
125
126 sbox.update({"platform": "v120"})
127 apply_template(sd + "/libsodium.vcxproj.tpl",
128                "builds/msvc/vs2013/libsodium/libsodium.vcxproj", sbox)
129
130 sbox.update({"platform": "v110"})
131 apply_template(sd + "/libsodium.vcxproj.tpl",
132                "builds/msvc/vs2012/libsodium/libsodium.vcxproj", sbox)
133
134 sbox.update({"platform": "v100"})
135 apply_template(sd + "/libsodium.vcxproj.tpl",
136                "builds/msvc/vs2010/libsodium/libsodium.vcxproj", sbox)