Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/angle
Path: blob/main_old/tools/glslang/update_glslang_binary.py
2576 views
1
#!/usr/bin/python2
2
#
3
# Copyright 2019 The ANGLE Project Authors. All rights reserved.
4
# Use of this source code is governed by a BSD-style license that can be
5
# found in the LICENSE file.
6
#
7
# update_glslang_binary.py:
8
# Helper script to update the version of glslang in cloud storage.
9
# This glslang is used to precompile Vulkan shaders. This script builds
10
# glslang and uploads it to the bucket for Windows or Linux. It
11
# currently only works on Windows and Linux. It also will update the
12
# hashes stored in the tree. For more info see README.md in this folder.
13
14
import os
15
import platform
16
import shutil
17
import subprocess
18
import sys
19
20
sys.path.append('tools/')
21
import angle_tools
22
23
gn_args = """is_clang = true
24
is_debug = false
25
angle_enable_vulkan = true"""
26
27
28
def main():
29
if not angle_tools.is_windows and not angle_tools.is_linux:
30
print('Script must be run on Linux or Windows.')
31
return 1
32
33
# Step 1: Generate an output directory
34
out_dir = os.path.join('out', 'glslang_release')
35
36
if not os.path.isdir(out_dir):
37
os.mkdir(out_dir)
38
39
args_gn = os.path.join(out_dir, 'args.gn')
40
if not os.path.isfile(args_gn):
41
with open(args_gn, 'w') as f:
42
f.write(gn_args)
43
f.close()
44
45
gn_exe = angle_tools.get_exe_name('gn', '.bat')
46
47
# Step 2: Generate the ninja build files in the output directory
48
if subprocess.call([gn_exe, 'gen', out_dir]) != 0:
49
print('Error calling gn')
50
return 2
51
52
# Step 3: Compile glslang_validator
53
if subprocess.call(['ninja', '-C', out_dir, 'glslang_validator']) != 0:
54
print('Error calling ninja')
55
return 3
56
57
# Step 4: Copy glslang_validator to the tools/glslang directory
58
glslang_exe = angle_tools.get_exe_name('glslang_validator', '.exe')
59
60
glslang_src = os.path.join(out_dir, glslang_exe)
61
glslang_dst = os.path.join(sys.path[0], glslang_exe)
62
63
shutil.copy(glslang_src, glslang_dst)
64
65
# Step 5: Delete the build directory
66
shutil.rmtree(out_dir)
67
68
# Step 6: Upload to cloud storage
69
if not angle_tools.upload_to_google_storage('angle-glslang-validator', [glslang_dst]):
70
print('Error upload to cloud storage')
71
return 4
72
73
# Step 7: Stage new SHA to git
74
if not angle_tools.stage_google_storage_sha1([glslang_dst]):
75
print('Error running git add')
76
return 5
77
78
print('')
79
print('The updated SHA has been staged for commit. Please commit and upload.')
80
print('Suggested commit message:')
81
print('----------------------------')
82
print('')
83
print('Update glslang_validator binary for %s.' % platform.system())
84
print('')
85
print('This binary was updated using %s.' % os.path.basename(__file__))
86
print('Please see instructions in tools/glslang/README.md.')
87
print('')
88
print('Bug: None')
89
90
return 0
91
92
93
if __name__ == '__main__':
94
sys.exit(main())
95
96