• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2024 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14import("//arkcompiler/runtime_core/libabckit/abckit_config.gni")
15import("//arkcompiler/runtime_core/static_core/ark_config.gni")
16import("//arkcompiler/runtime_core/static_vm_config.gni")
17
18ark_gen("abckit_ark_gen") {
19  data = [
20    "../abckit_compiler_intrinsics.yaml",
21    "$isa_gen_dir/isa.yaml",
22  ]
23  template_files = [
24    "insn_selection_static.h.erb",
25    "insn_selection_static.cpp.erb",
26  ]
27  sources = "templates"
28  api = [
29    "$ark_root_static/compiler/optimizer/templates/intrinsics/compiler_intrinsics.rb",
30    "$ark_root_static/isa/isapi.rb",
31  ]
32  extra_dependencies = [
33    "$ark_root_static/isa:isa_combine",
34    "$ark_root_static/runtime:arkruntime_gen_intrinsics_yaml",
35  ]
36  requires = [
37    "$ark_root_static/libpandabase/utils.rb",
38    "codegen_static_isapi.rb",
39    "$ark_root_static/assembler/asm_isapi.rb",
40  ]
41  destination = "$target_gen_dir/generated"
42}
43
44ark_gen_file("codegen_visitors_static_inc") {
45  extra_dependencies = [ "$ark_root_static:concat_plugins_yamls" ]
46  template_file = "templates/codegen_visitors_static.inc.erb"
47  data = [
48    ark_plugin_options_yaml,
49    "../abckit_compiler_intrinsics.yaml",
50  ]
51  api = [
52    "$ark_root_static/templates/plugin_options.rb",
53    "$ark_root_static/compiler/optimizer/templates/intrinsics/compiler_intrinsics.rb",
54  ]
55  output_file = "$target_gen_dir/generated/tmp/codegen_visitors_static.inc"
56}
57
58runtime_intrinsics_gen_dir =
59    get_label_info("$ark_root_static/runtime:arkruntime_gen_intrinsics_yaml",
60                   "target_gen_dir")
61ark_gen("abckit_ark_gen") {
62  data = [
63    "$runtime_intrinsics_gen_dir/abckit_intrinsics.yaml",
64    ark_plugin_options_yaml,
65  ]
66  template_files = [ "codegen_intrinsics_static.cpp.erb" ]
67  sources = "templates"
68  api = [
69    "$ark_root_static/compiler/optimizer/templates/intrinsics/compiler_intrinsics.rb",
70    "$ark_root_static/templates/plugin_options.rb",
71  ]
72  extra_dependencies = [
73    "$ark_root_static:concat_plugins_yamls",
74    "$abckit_root/src:abckit_concat_intrinsics_yaml",
75  ]
76  requires = [ "$ark_root_static/libpandabase/utils.rb" ]
77  destination = "$target_gen_dir/generated/tmp"
78}
79
80ets_codegen_visitors_dir =
81    "$ark_root_static/plugins/ets/bytecode_optimizer/visitors"
82copy("ets_codegen_intrinsics_inc_copy") {
83  sources = [ "$ets_codegen_visitors_dir/ets_codegen_intrinsics.inc" ]
84  outputs = [ "$target_gen_dir/generated/tmp/ets_codegen_intrinsics.inc" ]
85}
86copy("ets_codegen_visitors_inc_copy") {
87  sources = [ "$ets_codegen_visitors_dir/codegen_visitors.inc" ]
88  outputs = [ "$target_gen_dir/generated/tmp/codegen_visitors.inc" ]
89}
90ets_codegen_intrinsics_gen_target = "$ark_root_static/plugins/ets:isa_gen_ets_bytecodeopt_ets_codegen_intrinsics_gen_inc"
91ets_codegen_gen_dir =
92    get_label_info("$ets_codegen_intrinsics_gen_target", "target_gen_dir")
93copy("ets_codegen_intrinsics_gen_copy") {
94  deps = [ "$ets_codegen_intrinsics_gen_target" ]
95  sources = [ "$ets_codegen_gen_dir/ets_codegen_intrinsics_gen.inc" ]
96  outputs = [ "$target_gen_dir/generated/tmp/ets_codegen_intrinsics_gen.inc" ]
97}
98
99action("fix_static_codegen_plugin_files") {
100  deps = [
101    ":abckit_ark_gen_codegen_intrinsics_static_cpp",
102    ":codegen_visitors_static_inc",
103    ":ets_codegen_intrinsics_gen_copy",
104    ":ets_codegen_intrinsics_inc_copy",
105    ":ets_codegen_visitors_inc_copy",
106  ]
107  script = "./../../scripts/fix_static_codegen_plugin_files.sh"
108  args = [
109    rebase_path("$target_gen_dir/generated"),
110    rebase_path("$target_gen_dir/generated/tmp/codegen_intrinsics_static.cpp"),
111    rebase_path("$target_gen_dir/generated/tmp/codegen_visitors_static.inc"),
112    rebase_path("$target_gen_dir/generated/tmp/ets_codegen_intrinsics.inc"),
113    rebase_path("$target_gen_dir/generated/tmp/codegen_visitors.inc"),
114    rebase_path("$target_gen_dir/generated/tmp/ets_codegen_intrinsics_gen.inc"),
115  ]
116  outputs = [
117    "$target_gen_dir/generated/codegen_intrinsics_static.cpp",
118    "$target_gen_dir/generated/codegen_visitors_static.inc",
119    "$target_gen_dir/generated/ets_codegen_intrinsics.inc",
120    "$target_gen_dir/generated/codegen_visitors.inc",
121    "$target_gen_dir/generated/ets_codegen_intrinsics_gen.inc",
122  ]
123}
124
125ark_gen_file("codegen_call_intrinsics_static_inc") {
126  extra_dependencies = [
127    "$ark_root_static/runtime:arkruntime_gen_intrinsics_yaml",
128    "$ark_root_static:concat_plugins_yamls",
129    "$abckit_root/src:abckit_concat_intrinsics_yaml",
130  ]
131  template_file = "templates/codegen_call_intrinsics_static.inc.erb"
132  data = [
133    "$runtime_intrinsics_gen_dir/abckit_intrinsics.yaml",
134    ark_plugin_options_yaml,
135  ]
136  api = [
137    "$ark_root_static/runtime/templates/intrinsics.rb",
138    "$ark_root_static/templates/plugin_options.rb",
139  ]
140  output_file = "$target_gen_dir/generated/codegen_call_intrinsics_static.inc"
141}
142
143group("abckit_codegen_static_source_set_header_deps") {
144  deps = [
145    ":abckit_ark_gen_insn_selection_static_h",
146    ":codegen_call_intrinsics_static_inc",
147    ":fix_static_codegen_plugin_files",
148  ]
149}
150
151ohos_source_set("abckit_codegen_static_source_set") {
152  sources = [ "codegen_static.cpp" ]
153
154  bco_gen_dir =
155      get_label_info("$ark_root_static/bytecode_optimizer:libarktsbytecodeopt",
156                     "target_gen_dir")
157  ins_create_wrapper_dyn_dir =
158      get_label_info(
159          "$abckit_root/src/wrappers:abckit_isa_gen_ins_create_wrapper_api_inc",
160          "target_gen_dir")
161  include_dirs = [
162    "$target_gen_dir",
163    "$ins_create_wrapper_dyn_dir",
164    "$ark_root_static",  # this target should not include headers from dynamic
165
166    # runtime,
167
168    # so static_core must be listed first
169    "$ark_root_static/..",
170    "$bco_gen_dir",
171  ]
172
173  part_name = "runtime_core"
174  subsystem_name = "arkcompiler"
175
176  configs = [
177    "$ark_root_static/:ark_config",
178    "$ark_root_static/assembler:arkassembler_public_config",
179    "$ark_root_static/compiler:arkcompiler_public_config",
180    "$ark_root_static/bytecode_optimizer:bytecodeopt_public_config",
181    "$ark_root_static/libpandafile:arkfile_public_config",
182    "$ark_root_static/libpandabase:arkbase_public_config",
183    "$ark_root_static/runtime:arkruntime_public_config",
184    "$abckit_root:abckit_config",
185  ]
186
187  deps = [
188    ":abckit_ark_gen_codegen_intrinsics_static_cpp",
189    ":abckit_ark_gen_insn_selection_static_cpp",
190    ":abckit_codegen_static_source_set_header_deps",
191    "$ark_root_static/compiler:libarktscompiler",
192    "$ark_root_static/libpandabase:libarktsbase",
193    "$ark_root_static/libpandafile:libarktsfile",
194  ]
195}
196
197group("abckit_codegen_dynamic_source_set_header_deps") {
198  deps = [
199    "../templates/abckit_intrinsics:abckit_ark_gen_abckit_intrinsics_inl",
200    "../templates/dyn_intrinsics:abckit_isa_gen_dyn_intrinsics_enum_inc",
201    "../templates/dyn_intrinsics:abckit_isa_gen_dyn_intrinsics_flags_inc",
202    "../templates/dyn_intrinsics:abckit_isa_gen_get_dyn_intrinsics_names_inc",
203    "templates_dynamic:abckit_isa_gen_check_width_dynamic_h",
204    "templates_dynamic:abckit_isa_gen_generate_ecma_inl",
205    "templates_dynamic:abckit_isa_gen_ic_info_h",
206    "templates_dynamic:abckit_isa_gen_insn_info_h",
207    "templates_dynamic:abckit_isa_gen_insn_selection_dynamic_h",
208    "templates_dynamic:codegen_visitors_dyn_inc",
209  ]
210}
211
212ohos_source_set("abckit_codegen_dynamic_source_set") {
213  sources = [
214    "codegen_dynamic.cpp",
215    "ic_slot_allocator.cpp",
216  ]
217
218  intrinsics_gen_dir = get_label_info(
219          "$abckit_root/src/templates/dyn_intrinsics:abckit_isa_gen_dyn_intrinsics_enum_inl",
220          "target_gen_dir")
221  insn_selection_dyn_dir = get_label_info(
222          "$abckit_root/src/codegen/templates_dynamic:abckit_isa_gen_insn_selection_dynamic_h",
223          "target_gen_dir")
224  ins_create_wrapper_dyn_dir =
225      get_label_info(
226          "$abckit_root/src/wrappers:abckit_isa_gen_ins_create_wrapper_api_inc",
227          "target_gen_dir")
228  intrinsics_compiler_gen_dir = get_label_info(
229          "$ark_root_static/compiler:libarkcompiler_intrinsics_gen_inl_get_intrinsics_names_inl",
230          "target_gen_dir")
231  include_dirs = [
232    "$ark_root_static/compiler",
233    "$ark_root_static/runtime",
234    "$target_gen_dir",
235    "$intrinsics_gen_dir/../generated",
236    "$insn_selection_dyn_dir/..",
237    "$ins_create_wrapper_dyn_dir",
238    "$intrinsics_compiler_gen_dir/generated",
239    "$ark_root_static",
240    "$ark_root_static/..",
241  ]
242
243  part_name = "runtime_core"
244  subsystem_name = "arkcompiler"
245
246  configs = [
247    "$ark_root_static/:ark_config",
248    "$ark_root_static/runtime:arkruntime_public_config",
249    "$ark_root_static/compiler:arkcompiler_public_config",
250    "$ark_root_static/libpandabase:arkbase_public_config",
251    "$ark_root_static/libpandafile:arkfile_public_config",
252    "$abckit_root:abckit_config",
253  ]
254
255  deps = [
256    ":abckit_codegen_dynamic_source_set_header_deps",
257    "$ark_root_static/compiler:libarktscompiler",
258    "templates_dynamic:abckit_isa_gen_check_width_dynamic_cpp",
259    "templates_dynamic:abckit_isa_gen_insn_selection_dynamic_cpp",
260  ]
261}
262