summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--tools/vccenv.nim67
-rw-r--r--tools/vccenv/vccenv.nim58
-rw-r--r--tools/vccenv/vccexe.nim (renamed from tools/vccexe.nim)7
-rw-r--r--tools/vccenv/vcclinkerexe.nim (renamed from tools/vcclinkerexe.nim)8
4 files changed, 65 insertions, 75 deletions
diff --git a/tools/vccenv.nim b/tools/vccenv.nim
deleted file mode 100644
index 4017368a0..000000000
--- a/tools/vccenv.nim
+++ /dev/null
@@ -1,67 +0,0 @@
-import strtabs, os, osproc, streams, strutils
-
-const
-  comSpecEnvKey = "ComSpec"
-  vsComnToolsEnvKeys = [
-    "VS140COMNTOOLS",
-    "VS130COMNTOOLS",
-    "VS120COMNTOOLS",
-    "VS110COMNTOOLS",
-    "VS100COMNTOOLS",
-    "VS90COMNTOOLS"
-  ]
-  vcvarsallRelativePath = joinPath("..", "..", "VC", "vcvarsall")
-
-proc getVsComnToolsPath*(): TaintedString =
-  for vsComnToolsEnvKey in vsComnToolsEnvKeys:
-    if existsEnv vsComnToolsEnvKey:
-      let vsComnToolsEnvVal = getEnv vsComnToolsEnvKey
-      if (not vsComnToolsEnvVal.isNil) and (vsComnToolsEnvVal.len > 0):
-        return vsComnToolsEnvVal
-  return nil    
-
-proc getVccEnv*(platform: string, windowsStoreSdk: bool = false, sdkVersion: string = nil): StringTableRef =
-  var comSpecCommandString: TaintedString
-  if existsEnv comSpecEnvKey:
-    comSpecCommandString = getEnv comSpecEnvKey
-  else:
-    comSpecCommandString = "cmd"
-  
-  let vsComnToolsPath = getVsComnToolsPath()
-  if (isNil vsComnToolsPath) or (vsComnToolsPath.len < 1):
-    return nil
-  let vcvarsallPath = expandFilename joinPath(vsComnToolsPath, vcvarsallRelativePath)
-
-  var vcvarsallArgs: seq[string] = @[]
-  if (not isNil platform) and (platform.len > 0):
-    vcvarsallArgs.add(platform)
-  if windowsStoreSdk:
-    vcvarsallArgs.add("store")
-  if (not isNil sdkVersion) and (sdkVersion.len > 0):
-    vcvarsallArgs.add(sdkVersion)
-  var vcvarsallArgString: string
-  if vcvarsallArgs.len > 0:
-    vcvarsallArgString = vcvarsallArgs.join(" ")
-  else:
-    vcvarsallArgString = nil
-
-  var vcvarsallCommandString: string
-  if (not isNil vcvarsallArgString) and (vcvarsallArgString.len > 0):
-    vcvarsallCommandString = "\"$1\" $2" % [ vcvarsallPath, vcvarsallArgString ]
-  else:
-    vcvarsallCommandString = vcvarsallPath
-
-  let vcvarsallExecCommand = "\"$1\" /C \"$2 && SET\"" % [ comSpecCommandString, vcvarsallCommandString ]
-  when defined(release):
-    let vccvarsallOptions = { poEvalCommand, poDemon }
-  else:
-    let vccvarsallOptions = { poEchoCmd, poEvalCommand, poDemon }
-  let vcvarsallStdOut = execProcess(vcvarsallExecCommand, options = vccvarsallOptions)
-  let vcvarsallEnv = newStringTable(modeCaseInsensitive)   
-  for vcvarsallEnvLine in vcvarsallStdOut.splitLines:
-    let vcvarsallEqualsIndex = vcvarsallEnvLine.find('=')
-    if vcvarsallEqualsIndex > 0:
-      let vcvarsallEnvKey = vcvarsallEnvLine[0..(vcvarsallEqualsIndex - 1)]
-      let vcvarsallEnvVal = vcvarsallEnvLine[(vcvarsallEqualsIndex + 1)..(vcvarsallEnvLine.len - 1)]
-      vcvarsallEnv[vcvarsallEnvKey] = vcvarsallEnvVal
-  return vcvarsallEnv
diff --git a/tools/vccenv/vccenv.nim b/tools/vccenv/vccenv.nim
new file mode 100644
index 000000000..a335efd10
--- /dev/null
+++ b/tools/vccenv/vccenv.nim
@@ -0,0 +1,58 @@
+import strtabs, os, osproc, streams, strutils
+
+const
+  comSpecEnvKey = "ComSpec"
+  vsComnToolsEnvKeys = [
+    "VS140COMNTOOLS",
+    "VS130COMNTOOLS",
+    "VS120COMNTOOLS",
+    "VS110COMNTOOLS",
+    "VS100COMNTOOLS",
+    "VS90COMNTOOLS"
+  ]
+  vcvarsallRelativePath = joinPath("..", "..", "VC", "vcvarsall")
+
+proc getVsComnToolsPath*(): TaintedString =
+  for vsComnToolsEnvKey in vsComnToolsEnvKeys:
+    let vsComnToolsEnvVal = getEnv vsComnToolsEnvKey
+    if vsComnToolsEnvVal.len > 0:
+      return vsComnToolsEnvVal
+
+proc getVccEnv*(platform: string, windowsStoreSdk: bool = false,
+                sdkVersion: string = nil): StringTableRef =
+  var comSpecCommandString = getEnv comSpecEnvKey
+  if comSpecCommandString.len == 0:
+    comSpecCommandString = "cmd"
+
+  let vsComnToolsPath = getVsComnToolsPath()
+  if vsComnToolsPath.len < 1:
+    return nil
+  let vcvarsallPath = expandFilename joinPath(vsComnToolsPath, vcvarsallRelativePath)
+
+  var vcvarsallArgs: seq[string] = @[]
+  if platform.len > 0:
+    vcvarsallArgs.add(platform)
+  if windowsStoreSdk:
+    vcvarsallArgs.add("store")
+  if sdkVersion.len > 0:
+    vcvarsallArgs.add(sdkVersion)
+  let vcvarsallArgString = vcvarsallArgs.join(" ")
+
+  var vcvarsallCommandString: string
+  if vcvarsallArgString.len > 0:
+    vcvarsallCommandString = "\"$1\" $2" % [vcvarsallPath, vcvarsallArgString]
+  else:
+    vcvarsallCommandString = vcvarsallPath
+
+  let vcvarsallExecCommand = "\"$1\" /C \"$2 && SET\"" %
+                             [comSpecCommandString, vcvarsallCommandString]
+  when defined(release):
+    let vccvarsallOptions = {poEvalCommand, poDemon}
+  else:
+    let vccvarsallOptions = {poEchoCmd, poEvalCommand, poDemon}
+  let vcvarsallStdOut = execProcess(vcvarsallExecCommand, options = vccvarsallOptions)
+  result = newStringTable(modeCaseInsensitive)
+  for line in vcvarsallStdOut.splitLines:
+    let idx = line.find('=')
+    if idx > 0:
+      result[line[0..(idx - 1)]] = line[(idx + 1)..(line.len - 1)]
diff --git a/tools/vccexe.nim b/tools/vccenv/vccexe.nim
index a62def77c..48ae8c8da 100644
--- a/tools/vccexe.nim
+++ b/tools/vccenv/vccexe.nim
@@ -1,9 +1,9 @@
 import strtabs, os, osproc, vccenv
 
 when defined(release):
-  let vccOptions = { poParentStreams }
+  let vccOptions = {poParentStreams}
 else:
-  let vccOptions = { poEchoCmd, poParentStreams }
+  let vccOptions = {poEchoCmd, poParentStreams}
 
 when isMainModule:
   var vccEnvStrTab: StringTableRef = nil
@@ -17,9 +17,8 @@ when isMainModule:
     for vccEnvKey, vccEnvVal in vccEnvStrTab:
       putEnv(vccEnvKey, vccEnvVal)
   let vccProcess = startProcess(
-      "cl".addFileExt(ExeExt), 
+      "cl.exe",
       args = commandLineParams(),
       options = vccOptions
     )
   quit vccProcess.waitForExit()
-    
\ No newline at end of file
diff --git a/tools/vcclinkerexe.nim b/tools/vccenv/vcclinkerexe.nim
index 2598d6312..51c778f38 100644
--- a/tools/vcclinkerexe.nim
+++ b/tools/vccenv/vcclinkerexe.nim
@@ -1,9 +1,9 @@
 import strtabs, os, osproc, vccenv
 
 when defined(release):
-  let vccOptions = { poParentStreams }
+  let vccOptions = {poParentStreams}
 else:
-  let vccOptions = { poEchoCmd, poParentStreams }
+  let vccOptions = {poEchoCmd, poParentStreams}
 
 when isMainModule:
   var vccEnvStrTab: StringTableRef = nil
@@ -17,9 +17,9 @@ when isMainModule:
     for vccEnvKey, vccEnvVal in vccEnvStrTab:
       putEnv(vccEnvKey, vccEnvVal)
   let vccProcess = startProcess(
-      "link".addFileExt(ExeExt), 
+      "link.exe",
       args = commandLineParams(),
       options = vccOptions
     )
   quit vccProcess.waitForExit()
-    
+