1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
5 # Provides various information needed for GYP and GN to generate and build
11 from declaration
import Declaration
17 def GetImportDependencies(declaration
):
18 return set(child
.build_target
for child
in declaration
.children
.itervalues())
20 parser
= util
.CreateArgumentParser()
21 parser
.add_argument('--output',
22 choices
=['view_cc', 'view_h', 'model_cc', 'model_h',
23 'export_h', 'dirname', 'target_name', 'imports',
24 'impl_macro', 'import_dependencies',
27 help='Type of output')
28 parser
.add_argument('--gn', action
='store_true',
29 help='Is called by GN')
30 args
= parser
.parse_args()
31 declaration_path
= os
.path
.relpath(args
.declaration
, args
.root
)
34 declaration
= Declaration(declaration_path
)
35 except Exception as e
:
36 print >> sys
.stderr
, e
.message
39 if args
.output
== 'view_cc':
40 print declaration
.webui_view_cc_name
41 elif args
.output
== 'view_h':
42 print declaration
.webui_view_h_name
43 elif args
.output
== 'model_cc':
44 print declaration
.view_model_cc_name
45 elif args
.output
== 'model_h':
46 print declaration
.view_model_h_name
47 elif args
.output
== 'export_h':
48 print declaration
.export_h_name
49 elif args
.output
== 'dirname':
50 print os
.path
.dirname(declaration_path
)
51 elif args
.output
== 'target_name':
52 print declaration
.build_target
53 elif args
.output
== 'imports':
54 for i
in declaration
.imports
:
56 elif args
.output
== 'import_dependencies':
57 for d
in GetImportDependencies(declaration
):
58 print (':' if args
.gn
else '') + d
59 elif args
.output
== 'list_outputs':
60 outputs
= web_ui_view
.ListOutputs(declaration
, args
.destination
) + \
61 view_model
.ListOutputs(declaration
, args
.destination
) + \
62 export_h
.ListOutputs(declaration
, args
.destination
)
63 for output
in outputs
:
65 elif args
.output
== 'impl_macro':
66 print declaration
.component_impl_macro