aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/tensorflow-common/generate_static_link_cmd_windows.py
diff options
context:
space:
mode:
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.py45
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