OILS / yaks / NINJA_subgraph.py View on Github | oils.pub

82 lines, 56 significant
1"""
2yaks/NINJA_subgraph.py
3"""
4from __future__ import print_function
5
6from build import ninja_lib
7from build.ninja_lib import log, mycpp_library, mycpp_binary, main_cc
8
9_ = log
10
11# TODO: should have dependencies with sh_binary
12RULES_PY = 'build/ninja-rules-py.sh'
13
14
15def NinjaGraph(ru):
16 n = ru.n
17
18 ru.comment('Generated by %s' % __name__)
19
20 ru.asdl_library('yaks/yaks.asdl')
21
22 ru.cc_binary('yaks/yaks_runtime_test.cc',
23 deps=['//mycpp/runtime'],
24 matrix=ninja_lib.COMPILERS_VARIANTS)
25
26 mycpp_library(
27 ru,
28 'yaks/yaks_main.py',
29 py_inputs=ninja_lib.TryDynamicDeps('yaks/yaks_main.py'),
30 deps=[
31 '//core/optview', # TODO: remove this dep
32 '//core/runtime.asdl',
33 '//core/value.asdl',
34 '//cpp/data_lang',
35 '//cpp/frontend_match',
36 '//data_lang/nil8.asdl',
37 '//frontend/consts',
38 '//frontend/syntax.asdl', # TODO: remove this, value.asdl dep
39 '//mycpp/runtime',
40 '//yaks/yaks.asdl',
41 ])
42
43 mycpp_binary(ru,
44 '//yaks/yaks_main.mycpp',
45 matrix=ninja_lib.COMPILERS_VARIANTS +
46 ninja_lib.GC_PERF_VARIANTS)
47
48 n.newline()
49
50 ### CUSTOM translation with the COMPILED yaks binary.
51 n.rule('yaks',
52 command='_bin/cxx-opt/yaks/yaks_main.mycpp cpp $in > $out',
53 description='yaks cpp $in > $out')
54 n.newline()
55
56 # Similar to mycpp_library()
57 bundle_cc = '_gen/yaks/examples/hello.yaks.cc'
58 n.build(
59 [bundle_cc],
60 'yaks',
61 ['yaks/examples/hello.yaks'],
62 implicit=['_bin/cxx-opt/yaks/yaks_main.mycpp'],
63 )
64 n.newline()
65
66 ru.cc_library(
67 '//yaks/examples/hello.yaks',
68 srcs=[bundle_cc],
69 deps=['//mycpp/runtime'],
70 )
71
72 # Similar to mycpp_binaryary()
73 main_cc(ru, '_gen/yaks/examples/hello.yaks-main.cc')
74
75 ru.cc_binary(
76 '_gen/yaks/examples/hello.yaks-main.cc',
77 matrix=ninja_lib.COMPILERS_VARIANTS + ninja_lib.GC_PERF_VARIANTS,
78 deps=['//yaks/examples/hello.yaks'],
79 )
80
81
82# vim: sw=4