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