diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/tensorflow-common/generate_static_link_cmd_windows.py | |
Diffstat (limited to 'vcpkg/ports/tensorflow-common/generate_static_link_cmd_windows.py')
| -rw-r--r-- | vcpkg/ports/tensorflow-common/generate_static_link_cmd_windows.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/vcpkg/ports/tensorflow-common/generate_static_link_cmd_windows.py b/vcpkg/ports/tensorflow-common/generate_static_link_cmd_windows.py new file mode 100644 index 0000000..b75bdba --- /dev/null +++ b/vcpkg/ports/tensorflow-common/generate_static_link_cmd_windows.py @@ -0,0 +1,45 @@ +import os.path
+import re
+import sys
+
+params_path = sys.argv[2]
+version = sys.argv[3]
+lib_suffix = "" if len(sys.argv) < 5 else sys.argv[4]
+
+with open(sys.argv[1], "r") as f_in:
+ with open("static_link.bat", "w") as f_out:
+ p_setenv = re.compile(r"^\s*(SET .+=.*)$")
+ p_linker = re.compile(fr".+link\.exe.+tensorflow{lib_suffix}\.dll-2\.params.*")
+ env = []
+ for line in f_in:
+ if line.startswith("cd"):
+ # new command, reset
+ env = []
+ else:
+ m = p_setenv.match(line)
+ if m:
+ env.append(m.group(1))
+ else:
+ m = p_linker.match(line)
+ if m:
+ for e in env:
+ f_out.write(e + "\n")
+ tokens = line.split()
+ line = "\""
+ params_file = None
+ for t in tokens:
+ if t.endswith("link.exe"):
+ t = t[:-len("link.exe")] + "lib.exe\""
+ elif t == "/DLL" or t.lower()[1:].startswith("defaultlib:") or t.lower()[1:].startswith("ignore") or t.startswith("/OPT:") or t.startswith("/DEF:") or t.startswith("/DEBUG:") or t.startswith("/INCREMENTAL:"):
+ continue
+ elif t[0] == '@' and t.endswith(f"tensorflow{lib_suffix}.dll-2.params"):
+ t = t[:-len("dll-2.params")] + "lib-2.params-part1"
+ params_file = t[1:-len("-part1")]
+ line += t + " "
+ f_out.write(line + "\n")
+ # check for more parts if library needs to be split
+ file_no = 2
+ while os.path.isfile(f"{params_file}-part{file_no}"):
+ f_out.write(line.replace("lib-2.params-part1", f"lib-2.params-part{file_no}") + "\n")
+ file_no += 1
+ break
|