diff options
author | Fredrik Høisæther Rasch <fredrik.rasch@gmail.com> | 2017-03-21 01:26:44 +0100 |
---|---|---|
committer | Fredrik Høisæther Rasch <fredrik.h.rasch@uit.no> | 2017-03-21 12:18:32 +0100 |
commit | 05faad30a456d772bc24f3e7d1197bf6bb0e6387 (patch) | |
tree | dd728965c8e3218618cfba4d883a8499a198f6c7 | |
parent | aa14ee1856ccb5f32cd71ca272620482f3964f1d (diff) | |
download | Nim-05faad30a456d772bc24f3e7d1197bf6bb0e6387.tar.gz |
vccexe tool can use vccdiscover utility
Used when vcvarsall path is not specified, or if only a vccversion is specified
-rw-r--r-- | tools/vccexe/vccexe.nim | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/tools/vccexe/vccexe.nim b/tools/vccexe/vccexe.nim index d5ed143a5..6d0908c3b 100644 --- a/tools/vccexe/vccexe.nim +++ b/tools/vccexe/vccexe.nim @@ -1,4 +1,4 @@ -import strutils, strtabs, os, osproc, vcvarsall +import strutils, strtabs, os, osproc, vcvarsall, vccdiscover when defined(release): let vccOptions = {poParentStreams} @@ -6,12 +6,14 @@ else: let vccOptions = {poEchoCmd, poParentStreams} const + vccversionPrefix = "--vccversion" vcvarsallPrefix = "--vcvarsall" commandPrefix = "--command" platformPrefix = "--platform" sdktypePrefix = "--sdktype" sdkversionPrefix = "--sdkversion" + vccversionSepIdx = vccversionPrefix.len vcvarsallSepIdx = vcvarsallPrefix.len commandSepIdx = commandPrefix.len platformSepIdx = platformPrefix.len @@ -27,6 +29,9 @@ const Usage: vccexe [options] [compileroptions] Options: + --vccversion:<v> Optionally specify the VCC version to discover + <v>: 0, 90, 100, 110, 120, 140 + Argument value is passed on to vccdiscover utility --vcvarsall:<path> Path to the Developer Command Prompt utility vcvarsall.bat that selects the appropiate devlopment settings. Usual path for Visual Studio 2015 and below: @@ -54,6 +59,7 @@ command was specified """ when isMainModule: + var vccversionArg: seq[string] = @[] var vcvarsallArg: string = nil var commandArg: string = nil var platformArg: VccArch @@ -65,7 +71,9 @@ when isMainModule: var wrapperArgs = commandLineParams() for wargv in wrapperArgs: # Check whether the current argument contains -- prefix - if wargv.startsWith(vcvarsallPrefix): # Check for vcvarsall + if wargv.startsWith(vccversionPrefix): # Check for vccversion + vccversionArg.add(wargv.substr(vccversionSepIdx + 1)) + elif wargv.startsWith(vcvarsallPrefix): # Check for vcvarsall vcvarsallArg = wargv.substr(vcvarsallSepIdx + 1) elif wargv.startsWith(commandPrefix): # Check for command commandArg = wargv.substr(commandSepIdx + 1) @@ -80,6 +88,18 @@ when isMainModule: echo HelpText clArgs.add(wargv) + for vccversionItem in vccversionArg: + var vccversionValue: VccVersion + try: + vccversionValue = cast[VccVersion](parseInt(vccversionItem)) + except ValueError: + continue + vcvarsallArg = discoverVccVcVarsAllPath(vccversionValue) + if vcvarsallArg.len > 0: + break + if vcvarsallArg.len < 1 and vccversionArg.len < 1: + vcvarsallArg = discoverVccVcVarsAllPath() + var vcvars = vccVarsAll(vcvarsallArg, platformArg, sdkTypeArg, sdkVersionArg) if vcvars != nil: for vccEnvKey, vccEnvVal in vcvars: |