1# Copyright (c) 2021-2023 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# http://www.apache.org/licenses/LICENSE-2.0 6# Unless required by applicable law or agreed to in writing, software 7# distributed under the License is distributed on an "AS IS" BASIS, 8# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 9# See the License for the specific language governing permissions and 10# limitations under the License. 11 12import("//arkcompiler/runtime_core/static_core/ark_config.gni") 13import("//arkcompiler/runtime_core/static_vm_config.gni") 14import("//build/ohos.gni") 15import("$ark_root/plugins/plugins.gni") 16 17group("libarktsassembler_package") { 18 deps = [] 19 if (enable_static_vm) { 20 deps += [ ":libarktsassembler_frontend_static" ] 21 } 22} 23 24config("arkassembler_public_config") { 25 include_dirs = [ 26 "$ark_root/assembler", 27 "$target_gen_dir", 28 "$target_gen_dir/include", 29 "$ark_root_gen_dir", 30 "$ark_root", 31 ] 32 33 configs = [ "$ark_root/runtime:profiling_gen_public_config" ] 34} 35 36libarkassembler_sources = [ 37 "$target_gen_dir/ins_to_string.cpp", 38 "annotation.cpp", 39 "assembly-emitter.cpp", 40 "assembly-ins.cpp", 41 "assembly-parser.cpp", 42 "assembly-program.cpp", 43 "assembly-type.cpp", 44 "context.cpp", 45 "extensions/extensions.cpp", 46 "lexer.cpp", 47 "meta.cpp", 48] 49libarkassembler_sources += plugin_libarkassembler_sources 50 51libarkassembler_configs = [ 52 sdk_libc_secshared_config, 53 "$ark_root:ark_config", 54 ":arkassembler_public_config", 55 "$ark_root/runtime:arkruntime_public_config", 56 "$ark_root/libpandabase:arkbase_public_config", 57 "$ark_root/libpandafile:arkfile_public_config", 58 "$ark_root/compiler:arkcompiler_public_config", 59] 60libarkassembler_configs += plugin_libarkassembler_configs 61 62source_set("libarkassembler_static") { 63 sources = libarkassembler_sources 64 65 public_configs = libarkassembler_configs 66 67 deps = [ 68 ":ark_asm_meta_gen_h", 69 ":ark_asm_register_extensions_h", 70 ":isa_gen_libarkassembler_ins_create_api_h", 71 ":isa_gen_libarkassembler_ins_emit_h", 72 ":isa_gen_libarkassembler_ins_to_string_cpp", 73 ":isa_gen_libarkassembler_isa_h", 74 ":isa_gen_libarkassembler_opcode_parsing_h", 75 ":isa_gen_libarkassembler_operand_types_print_h", 76 "$ark_root/compiler:libarktscompiler", 77 "$ark_root/libpandabase:libarktsbase", 78 "$ark_root/libpandafile:libarktsfile", 79 "$ark_root/runtime:profiling_gen_profiling_gen_h", 80 sdk_libc_secshared_dep, 81 ] 82 83 deps += plugin_assembler_deps 84} 85 86ohos_shared_library("libarktsassembler") { 87 deps = [ ":libarkassembler_static" ] 88 89 output_extension = "so" 90 if (is_mingw) { 91 output_extension = "dll" 92 } 93 part_name = ark_part_name 94 subsystem_name = "$ark_subsystem_name" 95} 96 97source_set("libarkassembler_frontend_set_static") { 98 sources = libarkassembler_sources 99 100 public_configs = libarkassembler_configs 101 102 deps = [ 103 ":ark_asm_meta_gen_h", 104 ":ark_asm_register_extensions_h", 105 ":isa_gen_libarkassembler_ins_create_api_h", 106 ":isa_gen_libarkassembler_ins_emit_h", 107 ":isa_gen_libarkassembler_ins_to_string_cpp", 108 ":isa_gen_libarkassembler_isa_h", 109 ":isa_gen_libarkassembler_opcode_parsing_h", 110 ":isa_gen_libarkassembler_operand_types_print_h", 111 "$ark_root/libpandafile:libarktsfile_frontend_static", 112 "$ark_root/runtime:profiling_gen_profiling_gen_h", 113 sdk_libc_secshared_dep, 114 ] 115 116 deps += plugin_assembler_deps 117} 118 119ohos_static_library("libarktsassembler_frontend_static") { 120 deps = [ ":libarkassembler_frontend_set_static" ] 121 part_name = ark_part_name 122 subsystem_name = "$ark_subsystem_name" 123} 124 125source_set("ark_asm_static") { 126 sources = [ "pandasm.cpp" ] 127 128 include_dirs = [ "$target_gen_dir" ] 129 130 public_configs = [ 131 sdk_libc_secshared_config, 132 ":arkassembler_public_config", 133 "$ark_root:ark_config", 134 "$ark_root/libpandabase:arkbase_public_config", 135 "$ark_root/libpandafile:arkfile_public_config", 136 "$ark_root/compiler:arkcompiler_public_config", 137 "$ark_root/runtime:arkruntime_public_config", 138 ] 139 140 deps = [ 141 ":libarktsassembler_frontend_static", 142 "$ark_root/bytecode_optimizer:libarktsbytecodeopt_frontend_static", 143 "$ark_root/libpandabase:libarktsbase_frontend_static", 144 "$ark_root/libpandafile:libarktsfile_frontend_static", 145 ] 146} 147 148ohos_executable("arkts_asm") { 149 deps = [ ":ark_asm_static" ] 150 151 libs = platform_libs 152 ldflags = platform_ldflags 153 154 install_enable = true 155 part_name = ark_part_name 156 subsystem_name = "$ark_subsystem_name" 157} 158 159ark_isa_gen("isa_gen_libarkassembler") { 160 template_files = [ 161 "isa.h.erb", 162 "ins_emit.h.erb", 163 "ins_to_string.cpp.erb", 164 "ins_create_api.h.erb", 165 "opcode_parsing.h.erb", 166 "operand_types_print.h.erb", 167 ] 168 sources = "templates" 169 destination = "$target_gen_dir" 170 requires = [ 171 "asm_isapi.rb", 172 "../libpandafile/pandafile_isapi.rb", 173 ] 174} 175 176ark_gen_file("ark_asm_meta_gen_h") { 177 template_file = "templates/meta_gen.cpp.erb" 178 data_file = "metadata.yaml" 179 requires = [ "asm_metadata.rb" ] 180 output_file = "$target_gen_dir/meta_gen.h" 181} 182 183ark_gen_file("ark_asm_register_extensions_h") { 184 extra_dependencies = [ "$ark_root:concat_plugins_yamls" ] 185 template_file = "extensions/register_extensions.h.erb" 186 data_file = "$ark_plugin_options_yaml" 187 requires = [ "$ark_root/templates/plugin_options.rb" ] 188 output_file = "$target_gen_dir/register_extensions.h" 189} 190