diff --git a/winbuild/build_prepare.py b/winbuild/build_prepare.py
index 8d0ad9b80..454d80f41 100644
--- a/winbuild/build_prepare.py
+++ b/winbuild/build_prepare.py
@@ -51,7 +51,6 @@ header = [
cmd_set("INCLIB", "{lib_dir}"),
cmd_set("LIB", "{lib_dir}"),
cmd_append("PATH", "{bin_dir}"),
- "@echo on",
]
# dependencies
@@ -124,14 +123,14 @@ deps = {
"name": "freetype",
"url": "https://download.savannah.gnu.org/releases/freetype/freetype-2.10.1.tar.gz", # noqa: E501
"filename": "freetype-2.10.1.tar.gz",
+ "patch": {
+ r"builds\windows\vc2010\freetype.vcxproj": {
+ # freetype setting is /MD for .dll and /MT for .lib, we need /MD
+ "MultiThreaded": "MultiThreadedDLL",
+ },
+ },
"build": [
cmd_rmdir("objs"),
- # freetype setting is /MD for .dll and /MT for .lib, we need /MD
- cmd_patch_replace(
- r"builds\windows\vc2010\freetype.vcxproj",
- "MultiThreaded<",
- "MultiThreadedDLL<"
- ),
cmd_msbuild(r"builds\windows\vc2010\freetype.sln", "Release Static", "Clean"), # TODO failing on GHA # noqa: E501
cmd_msbuild(r"builds\windows\vc2010\freetype.sln", "Release Static", "Build"),
cmd_xcopy("include", "{inc_dir}"),
@@ -141,15 +140,21 @@ deps = {
},
"lcms2-2.9": {
"name": "lcms2",
- "url": SF_MIRROR + "/project/lcms/lcms/2.8/lcms2-2.9.tar.gz",
+ "url": SF_MIRROR + "/project/lcms/lcms/2.9/lcms2-2.9.tar.gz",
"filename": "lcms2-2.9.tar.gz",
+ "patch": {
+ r"Projects\VC2017\lcms2_static\lcms2_static.vcxproj": {
+ # lcms2-2.8\VC2015 setting is /MD for x86 and /MT for x64, we need /MD always
+ "MultiThreaded": "MultiThreadedDLL",
+ # retarget to default msvc
+ "v141": "$(DefaultPlatformToolset)",
+ # retarget to latest SDK 10.0
+ "8.1": "10.0",
+ },
+ },
"build": [
cmd_rmdir("Lib"),
cmd_rmdir(r"Projects\VC{vs_ver}\Release"),
- # lcms2-2.8\VC2015 setting is /MD for x86 and /MT for x64, we need /MD always
- cmd_patch_replace(
- r"Projects\VC2017\lcms2.sln", "MultiThreaded<", "MultiThreadedDLL<"
- ),
cmd_msbuild(r"Projects\VC{vs_ver}\lcms2.sln", "Release", "Clean"),
cmd_msbuild(r"Projects\VC{vs_ver}\lcms2.sln", "Release", "lcms2_static"),
cmd_xcopy("include", "{inc_dir}"),
@@ -337,8 +342,17 @@ def build_dep(name):
extract_dep(dep["url"], dep["filename"])
+ for patch_file, patch_list in dep.get("patch", {}).items():
+ patch_file = os.path.join(build_dir, name, patch_file)
+ with open(patch_file, "r") as f:
+ text = f.read()
+ for patch_from, patch_to in patch_list.items():
+ text = text.replace(patch_from, patch_to)
+ with open(patch_file, "w") as f:
+ f.write(text)
+
lines = [
- "echo Building {name} ({dir})...".format(name=dep["name"], dir=name),
+ "@echo Building {name} ({dir})...".format(name=dep["name"], dir=name),
"cd /D %s" % os.path.join(build_dir, name),
*prefs["header"],
*dep.get("build", []),
@@ -444,7 +458,7 @@ if __name__ == "__main__":
dicts = [vs2017, arch_prefs, python_prefs, config]
for x in dicts:
prefs.update(x)
- prefs["header"] = sum((x.get("header", []) for x in dicts), header)
+ prefs["header"] = sum((x.get("header", []) for x in dicts), header) + ["@echo on"]
del prefs["name"]
build_dep_all()
diff --git a/winbuild/commands.py b/winbuild/commands.py
index 2fbbc9b1a..f78a596f1 100644
--- a/winbuild/commands.py
+++ b/winbuild/commands.py
@@ -94,18 +94,3 @@ def cmd_msbuild(
"/m",
]
).format(**locals())
-
-
-# patch tools
-
-
-def cmd_patch_replace(file, src, dst):
- return " ".join(
- [
- "echo",
- "(Get-Content '{file}')",
- '-replace "{src}", "{dst}"',
- "^| Out-File -encoding ASCII '{file}'",
- "> temp.ps1\r\npowershell .\\temp.ps1",
- ]
- ).format(**locals())