diff options
author | crupest <crupest@outlook.com> | 2019-03-29 22:57:21 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2019-03-29 22:57:21 +0800 |
commit | a366f49ffe20261dfbf78ebf4ea53f22fd251091 (patch) | |
tree | 76f642648ed8b4e3008f861e164bb20e19202e68 /tools | |
parent | 7082d19ecf0b5f06af3c01dae0cba86f4cfac02b (diff) | |
download | cru-a366f49ffe20261dfbf78ebf4ea53f22fd251091.tar.gz cru-a366f49ffe20261dfbf78ebf4ea53f22fd251091.tar.bz2 cru-a366f49ffe20261dfbf78ebf4ea53f22fd251091.zip |
Add build script for skia.
Diffstat (limited to 'tools')
-rw-r--r-- | tools/build.py | 79 |
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() |