Flutter Engine
The Flutter Engine
minify_sksl.py
Go to the documentation of this file.
1#!/usr/bin/env python
2#
3# Copyright 2020 Google LLC
4#
5# Use of this source code is governed by a BSD-style license that can be
6# found in the LICENSE file.
7
8import os
9import subprocess
10import sys
11
12sksl_minify = sys.argv[1]
13targetDir = sys.argv[2]
14modules = sys.argv[3:]
15
16# sksl-minify uses the dependency list to ensure that minified names are unique at global scope.
17dependencies = {
18 'sksl_compute': ['sksl_gpu', 'sksl_shared'],
19 'sksl_gpu': ['sksl_shared'],
20 'sksl_frag': ['sksl_gpu', 'sksl_shared'],
21 'sksl_vert': ['sksl_gpu', 'sksl_shared'],
22 'sksl_graphite_frag': ['sksl_frag', 'sksl_gpu', 'sksl_shared'],
23 'sksl_graphite_frag_es2': ['sksl_frag', 'sksl_gpu', 'sksl_shared'],
24 'sksl_graphite_vert': ['sksl_vert', 'sksl_gpu', 'sksl_shared'],
25 'sksl_graphite_vert_es2': ['sksl_vert', 'sksl_gpu', 'sksl_shared'],
26 'sksl_public': ['sksl_shared'],
27 'sksl_rt_shader': ['sksl_public', 'sksl_shared'],
28 'sksl_shared': [],
29}
30
31for module in modules:
32 try:
33 moduleDir, moduleName = os.path.split(os.path.splitext(module)[0])
34 if not os.path.isdir(targetDir):
35 os.mkdir(targetDir)
36 target = os.path.join(targetDir, moduleName)
37
38 # Determine the program kind based on the module name.
39 if "_compute" in module:
40 programKind = "--compute"
41 elif "_vert" in module:
42 programKind = "--vert"
43 else:
44 programKind = "--frag"
45
46 # Assemble the module dependency list and call sksl-minify to recreate the module in its
47 # minified form.
48 moduleList = [module]
49 if moduleName not in dependencies:
50 print("### Error compiling " + moduleName + ": dependency list must be specified")
51 exit(1)
52 for dependent in dependencies[moduleName]:
53 moduleList.append(os.path.join(moduleDir, dependent) + ".sksl")
54
55 # Generate fully-optimized and minified module data (for release/optimize-for-size builds).
56 destPath = target + ".minified.sksl"
57 args = [sksl_minify, programKind, "--stringify", destPath] + moduleList
58 subprocess.check_output(args).decode('utf-8')
59
60 # Generate unoptimized module data (used in debug, for improved readability).
61 destPath = target + ".unoptimized.sksl"
62 args = [sksl_minify, programKind, "--unoptimized", "--stringify", destPath] + moduleList
63 subprocess.check_output(args).decode('utf-8')
64
65 except subprocess.CalledProcessError as err:
66 print("### Error compiling " + module + ":")
67 print(err.output)
68 exit(1)
exit(kErrorExitCode)
def print(*args, **kwargs)
Definition: run_tests.py:49
static DecodeResult decode(std::string path)
Definition: png_codec.cpp:124