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