Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
godotengine
GitHub Repository: godotengine/godot
Path: blob/master/misc/scripts/install_angle.py
45997 views
1
#!/usr/bin/env python3
2
3
import os
4
import platform
5
import shutil
6
import sys
7
import urllib.request
8
9
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../"))
10
11
from misc.utility.color import Ansi, color_print
12
13
# Base Godot dependencies path
14
# If cross-compiling (no LOCALAPPDATA), we install in `bin`
15
deps_folder = os.getenv("LOCALAPPDATA")
16
if deps_folder:
17
deps_folder = os.path.join(deps_folder, "Godot", "build_deps")
18
else:
19
deps_folder = os.path.join("bin", "build_deps")
20
21
# ANGLE
22
# Check for latest version: https://github.com/godotengine/godot-angle-static/releases/latest
23
angle_version = "chromium/7219"
24
angle_folder = os.path.join(deps_folder, "angle")
25
26
# Create dependencies folder
27
if not os.path.exists(deps_folder):
28
os.makedirs(deps_folder)
29
30
# Mesa NIR
31
print(f"Downloading ANGLE {angle_version} ...")
32
archs = [
33
"arm64-llvm",
34
"x86_32-gcc",
35
"x86_32-llvm",
36
"x86_64-gcc",
37
"x86_64-llvm",
38
]
39
if platform.system() == "Windows":
40
# Only download MSVC libraries if we can build using it.
41
archs.append("arm64-msvc")
42
archs.append("x86_32-msvc")
43
archs.append("x86_64-msvc")
44
elif platform.system() == "Darwin":
45
# Only download macOS/iOS libraries if we can build for these platforms.
46
archs.append("arm64-ios")
47
archs.append("arm64-ios-sim")
48
archs.append("arm64-macos")
49
archs.append("x86_64-macos")
50
51
for arch in archs:
52
angle_filename = f"godot-angle-static-{arch}-release.zip"
53
angle_archive = os.path.join(deps_folder, angle_filename)
54
angle_folder = os.path.join(deps_folder, f"angle-{arch}")
55
56
if os.path.isfile(angle_archive):
57
os.remove(angle_archive)
58
print(f"Downloading ANGLE {angle_filename} ...")
59
urllib.request.urlretrieve(
60
f"https://github.com/godotengine/godot-angle-static/releases/download/{angle_version}/{angle_filename}",
61
angle_archive,
62
)
63
if os.path.exists(angle_folder):
64
print(f"Removing existing local ANGLE installation in {angle_folder} ...")
65
shutil.rmtree(angle_folder)
66
print(f"Extracting ANGLE {angle_filename} to {angle_folder} ...")
67
shutil.unpack_archive(angle_archive, angle_folder)
68
os.remove(angle_archive)
69
print("ANGLE installed successfully.\n")
70
71
# Complete message
72
color_print(f'{Ansi.GREEN}All ANGLE components were installed to "{deps_folder}" successfully!')
73
color_print(f'{Ansi.GREEN}You can now build Godot with statically linked ANGLE by running "scons angle=yes".')
74
75