67 lines
2.4 KiB
Python
Executable File
67 lines
2.4 KiB
Python
Executable File
#!/usr/bin/env python
|
|
#
|
|
# Copyright 2020 Google LLC
|
|
#
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
sksl_minify = sys.argv[1]
|
|
targetDir = sys.argv[2]
|
|
modules = sys.argv[3:]
|
|
|
|
# sksl-minify uses the dependency list to ensure that minified names are unique at global scope.
|
|
dependencies = {
|
|
'sksl_compute': ['sksl_gpu', 'sksl_shared'],
|
|
'sksl_gpu': ['sksl_shared'],
|
|
'sksl_frag': ['sksl_gpu', 'sksl_shared'],
|
|
'sksl_vert': ['sksl_gpu', 'sksl_shared'],
|
|
'sksl_graphite_frag': ['sksl_frag', 'sksl_gpu', 'sksl_shared'],
|
|
'sksl_graphite_vert': ['sksl_vert', 'sksl_gpu', 'sksl_shared'],
|
|
'sksl_public': ['sksl_shared'],
|
|
'sksl_rt_shader': ['sksl_public', 'sksl_shared'],
|
|
'sksl_shared': [],
|
|
}
|
|
|
|
for module in modules:
|
|
try:
|
|
moduleDir, moduleName = os.path.split(os.path.splitext(module)[0])
|
|
if not os.path.isdir(targetDir):
|
|
os.mkdir(targetDir)
|
|
target = os.path.join(targetDir, moduleName)
|
|
|
|
# Determine the program kind based on the module name.
|
|
if "_compute" in module:
|
|
programKind = "--compute"
|
|
elif "_vert" in module:
|
|
programKind = "--vert"
|
|
else:
|
|
programKind = "--frag"
|
|
|
|
# Assemble the module dependency list and call sksl-minify to recreate the module in its
|
|
# minified form.
|
|
moduleList = [module]
|
|
if moduleName not in dependencies:
|
|
print("### Error compiling " + moduleName + ": dependency list must be specified")
|
|
exit(1)
|
|
for dependent in dependencies[moduleName]:
|
|
moduleList.append(os.path.join(moduleDir, dependent) + ".sksl")
|
|
|
|
# Generate fully-optimized and minified module data (for release/optimize-for-size builds).
|
|
destPath = target + ".minified.sksl"
|
|
args = [sksl_minify, programKind, "--stringify", destPath] + moduleList
|
|
subprocess.check_output(args).decode('utf-8')
|
|
|
|
# Generate unoptimized module data (used in debug, for improved readability).
|
|
destPath = target + ".unoptimized.sksl"
|
|
args = [sksl_minify, programKind, "--unoptimized", "--stringify", destPath] + moduleList
|
|
subprocess.check_output(args).decode('utf-8')
|
|
|
|
except subprocess.CalledProcessError as err:
|
|
print("### Error compiling " + module + ":")
|
|
print(err.output)
|
|
exit(1)
|