• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-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/static_core/ark_config.gni")
15import("//arkcompiler/runtime_core/static_vm_config.gni")
16
17if (ark_standalone_build) {
18  import("$build_root/ark.gni")
19} else {
20  import("//build/ohos.gni")
21}
22
23ohos_static_library("libarktsbase_package") {
24  deps = []
25  if (enable_static_vm) {
26    deps += [ ":libarktsbase_frontend_static" ]
27  }
28
29  part_name = ark_part_name
30  subsystem_name = "$ark_subsystem_name"
31}
32
33ark_gen_file("events_gen") {
34  template_file = "events/events_gen.h.erb"
35  data = [ "events/events.yaml" ]
36  api = [ "events/events.rb" ]
37  output_file = "$target_gen_dir/events_gen.h"
38}
39
40ark_gen_file("base_options_h") {
41  template_file = "../templates/options/options.h.erb"
42  data = [ "options.yaml" ]
43  api = [ "../templates/common.rb" ]
44  output_file = "$target_gen_dir/generated/base_options.h"
45}
46
47action("generate_version_file") {
48  script = "$ark_root/gn/build/make_version_file.sh"
49  sources = [ "$ark_root/libpandabase/templates/ark_version.h.in" ]
50  outputs = [ "$ark_root_gen_dir/libpandabase/ark_version.h" ]
51  args = [
52    rebase_path("${ark_root}", "$root_build_dir"),
53    rebase_path(sources[0], "$root_build_dir"),
54    rebase_path(outputs[0], "$root_build_dir"),
55  ]
56}
57
58libarkbase_sources = [
59  "$ark_root/libpandabase/mem/arena_allocator.cpp",
60  "$ark_root/libpandabase/mem/base_mem_stats.cpp",
61  "$ark_root/libpandabase/mem/code_allocator.cpp",
62  "$ark_root/libpandabase/mem/mem_config.cpp",
63  "$ark_root/libpandabase/mem/pool_manager.cpp",
64  "$ark_root/libpandabase/mem/pool_map.cpp",
65  "$ark_root/libpandabase/os/dfx_option.cpp",
66  "$ark_root/libpandabase/os/filesystem.cpp",
67  "$ark_root/libpandabase/os/native_stack.cpp",
68  "$ark_root/libpandabase/os/time.cpp",
69  "$ark_root/libpandabase/taskmanager/task.cpp",
70  "$ark_root/libpandabase/taskmanager/task_manager.cpp",
71  "$ark_root/libpandabase/taskmanager/task_queue_set.cpp",
72  "$ark_root/libpandabase/taskmanager/task_scheduler.cpp",
73  "$ark_root/libpandabase/taskmanager/utils/task_time_stats.cpp",
74  "$ark_root/libpandabase/taskmanager/worker_thread.cpp",
75  "$ark_root/libpandabase/utils/dfx.cpp",
76  "$ark_root/libpandabase/utils/json_builder.cpp",
77  "$ark_root/libpandabase/utils/json_parser.cpp",
78  "$ark_root/libpandabase/utils/logger.cpp",
79  "$ark_root/libpandabase/utils/time.cpp",
80  "$ark_root/libpandabase/utils/type_converter.cpp",
81  "$ark_root/libpandabase/utils/utf.cpp",
82  "$ark_root/libpandabase/utils/utils.cpp",
83]
84
85if (is_mingw) {
86  libarkbase_sources += [
87    "$ark_root/libpandabase/os/mutex.cpp",
88    "$ark_root/platforms/windows/libpandabase/cpu_affinity.cpp",
89    "$ark_root/platforms/windows/libpandabase/error.cpp",
90    "$ark_root/platforms/windows/libpandabase/file.cpp",
91    "$ark_root/platforms/windows/libpandabase/filesystem.cpp",
92    "$ark_root/platforms/windows/libpandabase/kill.cpp",
93    "$ark_root/platforms/windows/libpandabase/library_loader.cpp",
94    "$ark_root/platforms/windows/libpandabase/mem.cpp",
95    "$ark_root/platforms/windows/libpandabase/mem_hooks.cpp",
96    "$ark_root/platforms/windows/libpandabase/system_environment.cpp",
97    "$ark_root/platforms/windows/libpandabase/thread.cpp",
98    "$ark_root/platforms/windows/libpandabase/trace.cpp",
99  ]
100} else {
101  libarkbase_sources += [
102    "$ark_root/libpandabase/trace/trace.cpp",
103    "$ark_root/libpandabase/utils/terminate.cpp",
104    "$ark_root/platforms/unix/libpandabase/cpu_affinity.cpp",
105    "$ark_root/platforms/unix/libpandabase/error.cpp",
106    "$ark_root/platforms/unix/libpandabase/file.cpp",
107    "$ark_root/platforms/unix/libpandabase/filesystem.cpp",
108    "$ark_root/platforms/unix/libpandabase/kill.cpp",
109    "$ark_root/platforms/unix/libpandabase/library_loader_resolve_symbol.cpp",
110    "$ark_root/platforms/unix/libpandabase/mem.cpp",
111    "$ark_root/platforms/unix/libpandabase/native_stack.cpp",
112    "$ark_root/platforms/unix/libpandabase/property.cpp",
113    "$ark_root/platforms/unix/libpandabase/system_environment.cpp",
114    "$ark_root/platforms/unix/libpandabase/thread.cpp",
115    "$ark_root/platforms/unix/libpandabase/trace.cpp",
116  ]
117
118  if (is_mob) {
119    libarkbase_sources +=
120        [ "$ark_root/platforms/mobile/libpandabase/library_loader_load.cpp" ]
121  } else {
122    libarkbase_sources +=
123        [ "$ark_root/platforms/unix/libpandabase/library_loader_load.cpp" ]
124  }
125
126  if (!is_mac) {
127    libarkbase_sources += [
128      "$ark_root/platforms/unix/libpandabase/exec.cpp",
129      "$ark_root/platforms/unix/libpandabase/mem_hooks.cpp",
130      "$ark_root/platforms/unix/libpandabase/pipe.cpp",
131      "$ark_root/platforms/unix/libpandabase/sighook.cpp",
132    ]
133    if (is_asan) {
134      # Futexes are not supported with ASAN
135      libarkbase_sources += [ "$ark_root/libpandabase/os/mutex.cpp" ]
136    } else {
137      libarkbase_sources += [
138        "$ark_root/platforms/unix/libpandabase/futex/fmutex.cpp",
139        "$ark_root/platforms/unix/libpandabase/futex/mutex.cpp",
140      ]
141    }
142  } else {
143    libarkbase_sources += [ "$ark_root/libpandabase/os/mutex.cpp" ]
144  }
145}
146libarkbase_libs = []
147if (is_linux && ark_static_standalone_build) {
148  libarkbase_sources += [
149    "os/debug_info.cpp",
150    "os/stacktrace.cpp",
151  ]
152  libarkbase_libs += [
153    "dwarf",
154    "z",
155  ]
156} else {
157  libarkbase_sources += [ "os/stacktrace_stub.cpp" ]
158}
159if (is_debug) {
160  libarkbase_sources += [ "$ark_root/libpandabase/utils/debug.cpp" ]
161}
162
163if (current_cpu == "arm64" && !is_mac && target_os != "ios") {
164  libarkbase_sources +=
165      [ "$ark_root/libpandabase/arch/aarch64/cpu_features.cpp" ]
166} else {
167  libarkbase_sources +=
168      [ "$ark_root/libpandabase/arch/default/cpu_features.cpp" ]
169}
170
171if (is_mob) {
172  copy("coherency_line_size_h") {
173    sources =
174        [ "$ark_root/platforms/mobile/libpandabase/coherency_line_size.h" ]
175    outputs = [ "$target_gen_dir/generated/coherency_line_size.h" ]
176  }
177} else {
178  copy("coherency_line_size_h") {
179    sources =
180        [ "$ark_root/platforms/common/libpandabase/coherency_line_size.h" ]
181    outputs = [ "$target_gen_dir/generated/coherency_line_size.h" ]
182  }
183}
184
185config("arkbase_public_config") {
186  include_dirs = [
187    "$ark_root_gen_dir/libpandabase",
188    "$ark_root/libpandabase",
189    "$target_gen_dir/generated",
190    "$target_gen_dir/include",
191    "$target_gen_dir",
192  ]
193
194  include_dirs += platform_include_dirs
195
196  libs = libarkbase_libs
197  if (ark_static_standalone_build) {
198    ldflags = [ "-ldl" ]
199  }
200}
201
202if (!ark_static_standalone_build) {
203  ohos_shared_headers("libpandabase_headers") {
204    include_dirs = [
205      "$ark_root_gen_dir/libpandabase",
206      "$ark_root/libpandabase",
207      "$target_gen_dir/generated",
208      "$target_gen_dir/include",
209      "$target_gen_dir",
210    ]
211    include_dirs += platform_include_dirs
212    part_name = ark_part_name
213    subsystem_name = "$ark_subsystem_name"
214  }
215}
216
217libarkbase_configs = [
218  ":arkbase_public_config",
219  "$ark_root:ark_config",
220]
221
222group("arktsbase_header_deps") {
223  deps = [
224    ":base_options_h",
225    ":coherency_line_size_h",
226    ":events_gen",
227    ":generate_version_file",
228    ":logger_enum_gen_h",
229    ":logger_impl_gen_h",
230    ":plugins_regmasks_gen",
231    ":source_language_gen",
232  ]
233}
234
235ohos_source_set("libarktsbase_static") {
236  sources = libarkbase_sources
237
238  cflags_cc = [
239    "-fvisibility=hidden",
240    "-fvisibility-inlines-hidden",
241  ]
242
243  public_configs = libarkbase_configs
244
245  deps = [ ":arktsbase_header_deps" ]
246
247  if (ark_static_standalone_build) {
248    deps += [ sdk_libc_secshared_dep ]
249  }
250
251  external_deps = [ sdk_libc_secshared_dep ]
252
253  part_name = ark_part_name
254  subsystem_name = "$ark_subsystem_name"
255}
256
257ohos_shared_library("libarktsbase") {
258  deps = [ ":libarktsbase_static" ]
259  if (is_mingw || is_win) {
260    output_extension = "dll"
261  } else {
262    output_extension = "so"
263  }
264  part_name = "$ark_part_name"
265  subsystem_name = "$ark_subsystem_name"
266}
267
268ohos_source_set("libarktsbase_frontend_set_static") {
269  sources = libarkbase_sources
270
271  public_configs = libarkbase_configs
272
273  deps = [ ":arktsbase_header_deps" ]
274
275  external_deps = [ sdk_libc_secshared_dep ]
276
277  part_name = ark_part_name
278  subsystem_name = "$ark_subsystem_name"
279}
280
281ohos_source_set("libarktsbase_frontend_static") {
282  deps = [ ":libarktsbase_frontend_set_static" ]
283  part_name = ark_part_name
284  subsystem_name = ark_subsystem_name
285}
286
287action("logger_yaml_gen") {
288  script = "$ark_root/libpandabase/templates/logger_gen.rb"
289  inputs = [ "$ark_root/libpandabase/templates/logger.yaml" ]
290  outputs = [ "$ark_root_gen_dir/libpandabase/logger.yaml" ]
291  args = [
292    "-p",
293    rebase_path(ark_plugin_options_yaml, root_build_dir),
294    "-d",
295    rebase_path(inputs[0], root_build_dir),
296    "-o",
297    rebase_path(outputs[0], root_build_dir),
298  ]
299  deps = [ "$ark_root:concat_plugins_yamls" ]
300}
301
302ark_gen_file("logger_enum_gen_h") {
303  extra_dependencies = [ ":logger_yaml_gen" ]
304  template_file = "templates/logger_enum_gen.h.erb"
305  data = [ "$ark_root_gen_dir/libpandabase/logger.yaml" ]
306  api = [ "$ark_root/libpandabase/templates/logger.rb" ]
307  output_file = "$target_gen_dir/include/logger_enum_gen.h"
308}
309
310ark_gen_file("logger_impl_gen_h") {
311  extra_dependencies = [ ":logger_yaml_gen" ]
312  template_file = "templates/logger_impl_gen.inc.erb"
313  data = [ "$ark_root_gen_dir/libpandabase/logger.yaml" ]
314  api = [ "$ark_root/libpandabase/templates/logger.rb" ]
315  output_file = "$target_gen_dir/include/logger_impl_gen.inc"
316}
317
318ark_gen_file("source_language_gen") {
319  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
320  template_file = "templates/source_language.h.erb"
321  data = [ ark_plugin_options_yaml ]
322  api = [ "$ark_root/templates/plugin_options.rb" ]
323  output_file = "$target_gen_dir/generated/source_language.h"
324}
325
326ark_gen_file("plugins_regmasks_gen") {
327  extra_dependencies = [ "$ark_root:concat_plugins_yamls" ]
328  template_file = "templates/plugins_regmasks.inl.erb"
329  data = [ ark_plugin_options_yaml ]
330  api = [ "$ark_root/templates/plugin_options.rb" ]
331  output_file = "$target_gen_dir/generated/plugins_regmasks.inl"
332}
333