| # Copyright 2017 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import re |
| |
| import default_flavor |
| |
| |
| """Flutter flavor utils, used for building Flutter with Skia.""" |
| |
| |
| class FlutterFlavorUtils(default_flavor.DefaultFlavorUtils): |
| |
| def compile(self, target): |
| """Build Flutter with Skia.""" |
| |
| flutter_dir = self.m.vars.checkout_root.join('src') |
| configuration = self.m.vars.builder_cfg.get('configuration').lower() |
| extra_config = self.m.vars.builder_cfg.get('extra_config', '') |
| out_dir = configuration |
| |
| with self.m.context(cwd=flutter_dir): |
| # Runhook to generate the gn binary in buildtools. |
| self.m.run( |
| self.m.step, |
| 'runhook', |
| cmd=['gclient', 'runhooks']) |
| |
| # Setup GN args. |
| gn_args = [ |
| '--runtime-mode=%s' % configuration, |
| ] |
| if 'Android' in extra_config: |
| gn_args.append('--android') |
| out_dir = 'android_' + out_dir |
| |
| # Delete out_dir so that we start from a clean slate. See skbug/6310. |
| self.m.run.rmtree(flutter_dir.join('out', out_dir)) |
| |
| # Run GN. |
| self.m.run( |
| self.m.step, |
| 'gn_gen', |
| cmd=['flutter/tools/gn'] + gn_args) |
| |
| # Build Flutter. |
| self.m.run( |
| self.m.step, |
| 'build_flutter', |
| cmd=['ninja', '-C', 'out/' + out_dir, '-j100']) |