mirror of
https://gitee.com/openharmony/third_party_vulkan-loader
synced 2024-11-23 15:20:52 +00:00
9149ab813b
- Moved determine_vs_version.py into scripts dir - Updated build_windows_targets.bat - Updated update_external_sources.bat Change-Id: I951a05763a7004f2ba641dad72ae3c109ce0aa5c
116 lines
3.7 KiB
Python
Executable File
116 lines
3.7 KiB
Python
Executable File
#!/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))
|