aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2019-03-29 22:57:21 +0800
committercrupest <crupest@outlook.com>2019-03-29 22:57:21 +0800
commita366f49ffe20261dfbf78ebf4ea53f22fd251091 (patch)
tree76f642648ed8b4e3008f861e164bb20e19202e68 /tools
parent7082d19ecf0b5f06af3c01dae0cba86f4cfac02b (diff)
downloadcru-a366f49ffe20261dfbf78ebf4ea53f22fd251091.tar.gz
cru-a366f49ffe20261dfbf78ebf4ea53f22fd251091.tar.bz2
cru-a366f49ffe20261dfbf78ebf4ea53f22fd251091.zip
Add build script for skia.
Diffstat (limited to 'tools')
-rw-r--r--tools/build.py79
1 files changed, 70 insertions, 9 deletions
diff --git a/tools/build.py b/tools/build.py
index 009b3aad..676959da 100644
--- a/tools/build.py
+++ b/tools/build.py
@@ -9,21 +9,82 @@ parser.add_argument('-a', '--arch', choices=['x86', 'x64'],
required=True, help='specify target cpu architecture')
parser.add_argument('-c', '--config', choices=['Debug', 'Release'],
required=True, help='specify build configuration')
+parser.add_argument('--clang-build-skia', action='store_true',
+ help='whether use clang to build skia')
args = parser.parse_args()
+class ConflictArgumentError(Exception):
+ def __init__(self, message):
+ self.message = message
+
+if args.arch == 'x86' and args.clang_build_skia:
+ raise ConflictArgumentError('clang does not support to build skia in x86')
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
os.chdir(project_root)
-os.environ['PreferredToolArchitecture'] = 'x64' # use x64 toolchain
+def detect_ninja():
+ try:
+ subprocess.check_call('ninja --version')
+ except:
+ print('No ninja, install ninja.')
+ subprocess.check_call('choco install ninja', stdout=sys.stdout, stderr=sys.stderr)
+
+detect_ninja()
+
+def build_skia():
+ subprocess.check_call('py -2 .\\skia\\tools\\git-sync-deps', stdout=sys.stdout, stderr=sys.stderr)
+
+ gn_args = '''
+ is_debug = {debug}
+
+ skia_enable_ccpr = false
+ skia_enable_discrete_gpu = false
+ skia_enable_gpu = false
+ skia_enable_nvpr = false
+ skia_enable_particles = false
+ skia_enable_pdf = false
+ skia_enable_skottie = false
+ skia_use_dng_sdk = false
+ skia_use_lua = false
+ skia_use_sfntly = false
+ skia_use_xps = false
+ '''.format(debug = 'true' if args.config == 'Debug' else 'false' )
+
+ if args.arch == 'x86':
+ gn_args += 'target_cpu="x86"\n'
+
+ if args.clang_build_skia:
+ gn_args += 'clang_win = "C:/Program Files/LLVM"\n'
+
+ out_dir = '{}_{}'.format(args.config, args.arch)
+ if args.clang_build_skia:
+ out_dir += '_clang'
+
+ os.makedirs("skia/out/{}".format(out_dir), exist_ok=True)
+ gn_arg_file_path = os.path.join(project_root, 'skia/out', out_dir, 'args.gn')
+
+ with open(gn_arg_file_path, 'w+') as f:
+ f.write(gn_args)
+
+ os.chdir('./skia')
+ subprocess.check_call('.\\bin\\gn.exe gen .\\out\\{}\\'.format(out_dir), stdout=sys.stdout, stderr=sys.stderr)
+ subprocess.check_call('ninja -C .\\out\\{} skia'.format(out_dir))
+
+build_skia()
+
+def build_cru_ui():
+ os.environ['PreferredToolArchitecture'] = 'x64' # use vs x64 toolchain
+
+ generater_vs_arch_map = {
+ 'x86': 'Win32',
+ 'x64': 'x64'
+ }
-generater_vs_arch_map = {
- 'x86': 'Win32',
- 'x64': 'x64'
-}
+ subprocess.run('cmake -S . -B build -G "Visual Studio 15 2017" -A {arch}'.format(arch=generater_vs_arch_map[args.arch]),
+ stdout=sys.stdout, stderr=sys.stderr)
-subprocess.run('cmake -S . -B build -G "Visual Studio 15 2017" -A {arch}'.format(arch=generater_vs_arch_map[args.arch]),
- stdout=sys.stdout, stderr=sys.stderr)
+ subprocess.run('cmake --build build --target ALL_BUILD --config {config}'.format(config=args.config),
+ stdout=sys.stdout, stderr=sys.stderr)
-subprocess.run('cmake --build build --target ALL_BUILD --config {config}'.format(config=args.config),
- stdout=sys.stdout, stderr=sys.stderr)
+build_cru_ui()