• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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