aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorMark Lobodzinski <mark@lunarg.com>2016-11-18 14:12:01 -0700
committerMark Lobodzinski <mark@lunarg.com>2016-11-21 12:06:12 -0700
commit9d545a2b2871a004f0b4b7ad624aadf72a1c1c61 (patch)
tree0a489aa77e25913af554986986c027c19aeed34e /scripts
parent92d20e9c602e6cbb968989d82e8bc677daa1d61c (diff)
downloadusermoji-9d545a2b2871a004f0b4b7ad624aadf72a1c1c61.tar.xz
scripts: Move determine_vs_version into scripts dir
- Moved determine_vs_version.py into scripts dir - Updated build_windows_targets.bat - Updated update_external_sources.bat Change-Id: I951a05763a7004f2ba641dad72ae3c109ce0aa5c
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/determine_vs_version.py115
1 files changed, 115 insertions, 0 deletions
diff --git a/scripts/determine_vs_version.py b/scripts/determine_vs_version.py
new file mode 100755
index 00000000..9dec7223
--- /dev/null
+++ b/scripts/determine_vs_version.py
@@ -0,0 +1,115 @@
+#!/usr/bin/env python3
+#
+# Copyright (c) 2016 The Khronos Group Inc.
+# Copyright (c) 2016 Valve Corporation
+# Copyright (c) 2016 LunarG, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# Author: Mark Young <marky@lunarg.com>
+
+import sys
+import os
+
+# Following function code snippet was found on StackOverflow (with a change to lower
+# camel-case on the variable names):
+# http://stackoverflow.com/questions/377017/test-if-executable-exists-in-python
+def find_executable(program):
+ def is_exe(fPath):
+ return os.path.isfile(fPath) and os.access(fPath, os.X_OK)
+
+ fPath, fName = os.path.split(program)
+ if fPath:
+ if is_exe(program):
+ return program
+ else:
+ for path in os.environ["PATH"].split(os.pathsep):
+ path = path.strip('"')
+ exe_file = os.path.join(path, program)
+ if is_exe(exe_file):
+ return exe_file
+
+ return None
+
+def determine_year(version):
+ if version == 8:
+ return 2005
+ elif version == 9:
+ return 2008
+ elif version == 10:
+ return 2010
+ elif version == 11:
+ return 2012
+ elif version == 12:
+ return 2013
+ elif version == 14:
+ return 2015
+ else:
+ return 0000
+
+# Determine if msbuild is in the path, then call it to determine the version and parse
+# it into a format we can use, which is "<version_num> <version_year>".
+if __name__ == '__main__':
+ exeName = 'msbuild.exe'
+ versionCall = exeName + ' /ver'
+
+ # Determine if the executable exists in the path, this is critical.
+ #
+ foundExeName = find_executable(exeName)
+
+ # If not found, return an invalid number but in the appropriate format so it will
+ # fail if the program above tries to use it.
+ if foundExeName == None:
+ print('00 0000')
+ print('Executable ' + exeName + ' not found in PATH!')
+ else:
+ sysCallOut = os.popen(versionCall).read()
+
+ version = None
+
+ # Split around any spaces first
+ spaceList = sysCallOut.split(' ')
+ for spaceString in spaceList:
+
+ # If we've already found it, bail.
+ if version != None:
+ break
+
+ # Now split around line feeds
+ lineList = spaceString.split('\n')
+ for curLine in lineList:
+
+ # If we've already found it, bail.
+ if version != None:
+ break
+
+ # We only want to continue if there's a period in the list
+ if '.' not in curLine:
+ continue
+
+ # Get the first element and determine if it is a number, if so, we've
+ # got our number.
+ splitAroundPeriod = curLine.split('.')
+ if splitAroundPeriod[0].isdigit():
+ version = int (splitAroundPeriod[0])
+ break
+
+ # Failsafe to return a number in the proper format, but one that will fail.
+ if version == None:
+ version = 00
+
+ # Determine the year associated with that version
+ year = determine_year(version)
+
+ # Output the string we need for Cmake to properly build for this version
+ print(str(version) + ' ' + str(year))