1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python
import shutil
from pathlib import Path
class Recipe(recipe.Recipe):
# https://www.nuget.org/packages/ANGLE.WindowsStore.Servo/
# Building: https://github.com/servo/servo/wiki/Publishing-a-new-ANGLE-NuGet-version
name = 'angle-uwp'
version = '2.1.20'
licenses = [{License.BSD_like: ['LICENSE']}]
btype = BuildType.CUSTOM
stype = SourceType.TARBALL
url = 'https://www.nuget.org/api/v2/package/ANGLE.WindowsStore.Servo/%(version)s'
tarball_name = '%(name)s-%(version)s.zip'
tarball_is_bomb = True
tarball_checksum = '5f4635195aa1ee37f9bbf17fce23ca5a957890860bb8f237e3fa5aee4b197349'
files_libs = ['libEGL', 'libGLESv2']
files_headers = ['include/EGL', 'include/GLES', 'include/GLES2', 'include/GLES3', 'include/KHR']
can_msvc = True
def prepare(self):
if not self.config.variants.uwp:
raise InvalidRecipeError(self, "ANGLE recipe currently only supports UWP")
if not self.config.target_arch in (Architecture.ARM64, Architecture.X86_64, Architecture.X86):
raise InvalidRecipeError(self, "ANGLE recipe currently only supports ARM64, x86, x86_64")
if self.config.variants.vscrt == 'mdd':
self.url += '-debug'
self.tarball_name = '{}-{}-debug.zip'.format(self.name, self.version)
self.tarball_checksum = 'a5e1c26ec8a242e9c2ca118e73c77da67447c4151f9992c7779e1b07709ce165'
def install(self):
bindir = Path(self.config.prefix) / 'bin'
bdir = Path(self.build_dir)
if self.config.target_arch == Architecture.ARM64:
dlldir = bdir / 'bin/UAP/ARM64'
elif self.config.target_arch == Architecture.X86_64:
dlldir = bdir / 'bin/UAP/x64'
elif self.config.target_arch == Architecture.X86:
dlldir = bdir / 'bin/UAP/x86'
else:
raise AssertionError
# Copy libraries
if not bindir.is_dir():
bindir.mkdir(parents=True, exist_ok=True)
for f in self.files_libs:
impname = f[3:] + '.lib'
shutil.copy2(str(dlldir / (f + '.dll')), bindir)
shutil.copy2(str(dlldir / (f + '.dll.pdb')), bindir)
# Copy import library and change the name from libfoo.lib to foo.lib
shutil.copy2(str(dlldir / (f + '.lib')),
os.path.join(self.config.libdir, impname))
# Copy headers
for d in self.files_headers:
dst = Path(self.config.prefix) / d
if dst.exists():
shutil.rmtree(str(dst))
shutil.copytree(str(bdir / d), str(dst))
|