1b1994897Sopenharmony_ci# Copyright (c) 2021-2022 Huawei Device Co., Ltd.
2b1994897Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
3b1994897Sopenharmony_ci# you may not use this file except in compliance with the License.
4b1994897Sopenharmony_ci# You may obtain a copy of the License at
5b1994897Sopenharmony_ci#
6b1994897Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0
7b1994897Sopenharmony_ci#
8b1994897Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
9b1994897Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
10b1994897Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11b1994897Sopenharmony_ci# See the License for the specific language governing permissions and
12b1994897Sopenharmony_ci# limitations under the License.
13b1994897Sopenharmony_ci
14b1994897Sopenharmony_ciimport("//arkcompiler/runtime_core/ark_config.gni")
15b1994897Sopenharmony_ci
16b1994897Sopenharmony_ciconfig("arkbase_public_config") {
17b1994897Sopenharmony_ci  include_dirs = [
18b1994897Sopenharmony_ci    "$ark_root",
19b1994897Sopenharmony_ci    "$ark_root/libpandabase",
20b1994897Sopenharmony_ci    "$target_gen_dir/include",
21b1994897Sopenharmony_ci    "$target_gen_dir",
22b1994897Sopenharmony_ci  ]
23b1994897Sopenharmony_ci
24b1994897Sopenharmony_ci  if (enable_hilog) {
25b1994897Sopenharmony_ci    include_dirs += [ "$hilog_root/include" ]
26b1994897Sopenharmony_ci  }
27b1994897Sopenharmony_ci
28b1994897Sopenharmony_ci  include_dirs += platform_include_dirs
29b1994897Sopenharmony_ci}
30b1994897Sopenharmony_ci
31b1994897Sopenharmony_ciconfig("arkbase_fuzz_config") {
32b1994897Sopenharmony_ci  configs = [ "$build_root/config/compiler:exceptions" ]
33b1994897Sopenharmony_ci  defines = [ "SUPPORT_KNOWN_EXCEPTION" ]
34b1994897Sopenharmony_ci}
35b1994897Sopenharmony_ci
36b1994897Sopenharmony_ciark_gen_file("events_gen") {
37b1994897Sopenharmony_ci  template_file = "events/events_gen.h.erb"
38b1994897Sopenharmony_ci  data_file = "events/events.yaml"
39b1994897Sopenharmony_ci  requires = [ "events/events.rb" ]
40b1994897Sopenharmony_ci  output_file = "$target_gen_dir/events_gen.h"
41b1994897Sopenharmony_ci}
42b1994897Sopenharmony_ci
43b1994897Sopenharmony_ciark_gen_file("base_options_h") {
44b1994897Sopenharmony_ci  template_file = "../templates/options/options.h.erb"
45b1994897Sopenharmony_ci  data_file = "options.yaml"
46b1994897Sopenharmony_ci  requires = [ "../templates/common.rb" ]
47b1994897Sopenharmony_ci  output_file = "$target_gen_dir/generated/base_options.h"
48b1994897Sopenharmony_ci}
49b1994897Sopenharmony_ci
50b1994897Sopenharmony_ciaction("generate_version_file") {
51b1994897Sopenharmony_ci  script = "$ark_root/gn/build/cmake_configure_file.py"
52b1994897Sopenharmony_ci
53b1994897Sopenharmony_ci  sources = [ "$ark_root/libpandabase/templates/ark_version.h.in" ]
54b1994897Sopenharmony_ci  outputs = [ "$root_gen_dir/libpandabase/ark_version.h" ]
55b1994897Sopenharmony_ci
56b1994897Sopenharmony_ci  hash = exec_script("$ark_root/gn/build/find_git.sh",
57b1994897Sopenharmony_ci                     [ rebase_path("${ark_root}", "$root_build_dir") ],
58b1994897Sopenharmony_ci                     "trim string")
59b1994897Sopenharmony_ci
60b1994897Sopenharmony_ci  if (hash == "") {
61b1994897Sopenharmony_ci    args = [
62b1994897Sopenharmony_ci      rebase_path(sources[0], "$root_build_dir"),
63b1994897Sopenharmony_ci      rebase_path(outputs[0], "$root_build_dir"),
64b1994897Sopenharmony_ci    ]
65b1994897Sopenharmony_ci  } else {
66b1994897Sopenharmony_ci    args = [
67b1994897Sopenharmony_ci      rebase_path(sources[0], "$root_build_dir"),
68b1994897Sopenharmony_ci      rebase_path(outputs[0], "$root_build_dir"),
69b1994897Sopenharmony_ci      "ARK_VERSION_GIT_HASH=${hash}",
70b1994897Sopenharmony_ci    ]
71b1994897Sopenharmony_ci  }
72b1994897Sopenharmony_ci}
73b1994897Sopenharmony_ci
74b1994897Sopenharmony_ciif (is_mingw) {
75b1994897Sopenharmony_ci  libarkbase_sources = [
76b1994897Sopenharmony_ci    "$ark_root/libpandabase/mem/arena_allocator.cpp",
77b1994897Sopenharmony_ci    "$ark_root/libpandabase/mem/base_mem_stats.cpp",
78b1994897Sopenharmony_ci    "$ark_root/libpandabase/mem/code_allocator.cpp",
79b1994897Sopenharmony_ci    "$ark_root/libpandabase/mem/mem_config.cpp",
80b1994897Sopenharmony_ci    "$ark_root/libpandabase/mem/pool_manager.cpp",
81b1994897Sopenharmony_ci    "$ark_root/libpandabase/mem/pool_map.cpp",
82b1994897Sopenharmony_ci    "$ark_root/libpandabase/os/filesystem.cpp",
83b1994897Sopenharmony_ci    "$ark_root/libpandabase/os/mutex.cpp",
84b1994897Sopenharmony_ci    "$ark_root/libpandabase/os/native_stack.cpp",
85b1994897Sopenharmony_ci    "$ark_root/libpandabase/os/stacktrace_stub.cpp",
86b1994897Sopenharmony_ci    "$ark_root/libpandabase/os/time.cpp",
87b1994897Sopenharmony_ci    "$ark_root/libpandabase/utils/json_builder.cpp",
88b1994897Sopenharmony_ci    "$ark_root/libpandabase/utils/json_parser.cpp",
89b1994897Sopenharmony_ci    "$ark_root/libpandabase/utils/logger.cpp",
90b1994897Sopenharmony_ci    "$ark_root/libpandabase/utils/time.cpp",
91b1994897Sopenharmony_ci    "$ark_root/libpandabase/utils/timers.cpp",
92b1994897Sopenharmony_ci    "$ark_root/libpandabase/utils/type_converter.cpp",
93b1994897Sopenharmony_ci    "$ark_root/libpandabase/utils/utf.cpp",
94b1994897Sopenharmony_ci    "$ark_root/platforms/windows/libpandabase/error.cpp",
95b1994897Sopenharmony_ci    "$ark_root/platforms/windows/libpandabase/file.cpp",
96b1994897Sopenharmony_ci    "$ark_root/platforms/windows/libpandabase/filesystem.cpp",
97b1994897Sopenharmony_ci    "$ark_root/platforms/windows/libpandabase/library_loader.cpp",
98b1994897Sopenharmony_ci    "$ark_root/platforms/windows/libpandabase/mem.cpp",
99b1994897Sopenharmony_ci    "$ark_root/platforms/windows/libpandabase/thread.cpp",
100b1994897Sopenharmony_ci    "$ark_root/platforms/windows/libpandabase/trace.cpp",
101b1994897Sopenharmony_ci  ]
102b1994897Sopenharmony_ci} else {
103b1994897Sopenharmony_ci  libarkbase_sources = [
104b1994897Sopenharmony_ci    "$ark_root/libpandabase/mem/arena_allocator.cpp",
105b1994897Sopenharmony_ci    "$ark_root/libpandabase/mem/base_mem_stats.cpp",
106b1994897Sopenharmony_ci    "$ark_root/libpandabase/mem/code_allocator.cpp",
107b1994897Sopenharmony_ci    "$ark_root/libpandabase/mem/mem_config.cpp",
108b1994897Sopenharmony_ci    "$ark_root/libpandabase/mem/pool_manager.cpp",
109b1994897Sopenharmony_ci    "$ark_root/libpandabase/mem/pool_map.cpp",
110b1994897Sopenharmony_ci    "$ark_root/libpandabase/os/native_stack.cpp",
111b1994897Sopenharmony_ci    "$ark_root/libpandabase/os/property.cpp",
112b1994897Sopenharmony_ci
113b1994897Sopenharmony_ci    # product build
114b1994897Sopenharmony_ci    "$ark_root/libpandabase/os/stacktrace_stub.cpp",
115b1994897Sopenharmony_ci    "$ark_root/libpandabase/os/time.cpp",
116b1994897Sopenharmony_ci    "$ark_root/libpandabase/trace/trace.cpp",
117b1994897Sopenharmony_ci    "$ark_root/libpandabase/utils/json_builder.cpp",
118b1994897Sopenharmony_ci    "$ark_root/libpandabase/utils/json_parser.cpp",
119b1994897Sopenharmony_ci    "$ark_root/libpandabase/utils/logger.cpp",
120b1994897Sopenharmony_ci    "$ark_root/libpandabase/utils/time.cpp",
121b1994897Sopenharmony_ci    "$ark_root/libpandabase/utils/timers.cpp",
122b1994897Sopenharmony_ci    "$ark_root/libpandabase/utils/type_converter.cpp",
123b1994897Sopenharmony_ci    "$ark_root/libpandabase/utils/utf.cpp",
124b1994897Sopenharmony_ci    "$ark_root/platforms/unix/libpandabase/error.cpp",
125b1994897Sopenharmony_ci    "$ark_root/platforms/unix/libpandabase/file.cpp",
126b1994897Sopenharmony_ci    "$ark_root/platforms/unix/libpandabase/filesystem.cpp",
127b1994897Sopenharmony_ci    "$ark_root/platforms/unix/libpandabase/library_loader_resolve_symbol.cpp",
128b1994897Sopenharmony_ci    "$ark_root/platforms/unix/libpandabase/mem.cpp",
129b1994897Sopenharmony_ci    "$ark_root/platforms/unix/libpandabase/native_stack.cpp",
130b1994897Sopenharmony_ci    "$ark_root/platforms/unix/libpandabase/property.cpp",
131b1994897Sopenharmony_ci    "$ark_root/platforms/unix/libpandabase/thread.cpp",
132b1994897Sopenharmony_ci    "$ark_root/platforms/unix/libpandabase/trace.cpp",
133b1994897Sopenharmony_ci  ]
134b1994897Sopenharmony_ci
135b1994897Sopenharmony_ci  if (!is_mob || is_linux || current_os == "android" || target_os == "ios") {
136b1994897Sopenharmony_ci    libarkbase_sources +=
137b1994897Sopenharmony_ci        [ "$ark_root/platforms/unix/libpandabase/library_loader_load.cpp" ]
138b1994897Sopenharmony_ci  }
139b1994897Sopenharmony_ci
140b1994897Sopenharmony_ci  if (!is_mac && target_os != "ios") {
141b1994897Sopenharmony_ci    libarkbase_sources += [
142b1994897Sopenharmony_ci      "$ark_root/libpandabase/os/filesystem.cpp",
143b1994897Sopenharmony_ci      "$ark_root/platforms/unix/libpandabase/exec.cpp",
144b1994897Sopenharmony_ci      "$ark_root/platforms/unix/libpandabase/futex/fmutex.cpp",
145b1994897Sopenharmony_ci      "$ark_root/platforms/unix/libpandabase/futex/mutex.cpp",
146b1994897Sopenharmony_ci    ]
147b1994897Sopenharmony_ci  } else {
148b1994897Sopenharmony_ci    libarkbase_sources += [ "$ark_root/libpandabase/os/mutex.cpp" ]
149b1994897Sopenharmony_ci  }
150b1994897Sopenharmony_ci
151b1994897Sopenharmony_ci  if (is_mac && !is_arkui_x) {
152b1994897Sopenharmony_ci    libarkbase_sources += [ "$ark_root/libpandabase/os/filesystem.cpp" ]
153b1994897Sopenharmony_ci  }
154b1994897Sopenharmony_ci}
155b1994897Sopenharmony_ci
156b1994897Sopenharmony_ciif (is_debug) {
157b1994897Sopenharmony_ci  libarkbase_sources += [ "$ark_root/libpandabase/utils/debug.cpp" ]
158b1994897Sopenharmony_ci}
159b1994897Sopenharmony_ci
160b1994897Sopenharmony_ciif (current_cpu == "arm64" && !is_mac && target_os != "ios") {
161b1994897Sopenharmony_ci  libarkbase_sources +=
162b1994897Sopenharmony_ci      [ "$ark_root/libpandabase/arch/aarch64/cpu_features.cpp" ]
163b1994897Sopenharmony_ci} else {
164b1994897Sopenharmony_ci  libarkbase_sources +=
165b1994897Sopenharmony_ci      [ "$ark_root/libpandabase/arch/default/cpu_features.cpp" ]
166b1994897Sopenharmony_ci}
167b1994897Sopenharmony_ci
168b1994897Sopenharmony_cilibarkbase_configs = [
169b1994897Sopenharmony_ci  ":arkbase_public_config",
170b1994897Sopenharmony_ci  "$ark_root:ark_config",
171b1994897Sopenharmony_ci]
172b1994897Sopenharmony_ci
173b1994897Sopenharmony_cigroup("arkbase_header_deps") {
174b1994897Sopenharmony_ci  deps = [
175b1994897Sopenharmony_ci    ":base_options_h",
176b1994897Sopenharmony_ci    ":events_gen",
177b1994897Sopenharmony_ci    ":generate_version_file",
178b1994897Sopenharmony_ci    ":logger_enum_gen_h",
179b1994897Sopenharmony_ci    ":logger_impl_gen_h",
180b1994897Sopenharmony_ci  ]
181b1994897Sopenharmony_ci}
182b1994897Sopenharmony_ci
183b1994897Sopenharmony_cilibarkbase_deps = [ ":arkbase_header_deps" ]
184b1994897Sopenharmony_ci
185b1994897Sopenharmony_ciohos_source_set("libarkbase_static_fuzz") {
186b1994897Sopenharmony_ci  sources = libarkbase_sources
187b1994897Sopenharmony_ci
188b1994897Sopenharmony_ci  public_configs = libarkbase_configs
189b1994897Sopenharmony_ci  public_configs += [ ":arkbase_fuzz_config" ]
190b1994897Sopenharmony_ci
191b1994897Sopenharmony_ci  deps = libarkbase_deps
192b1994897Sopenharmony_ci
193b1994897Sopenharmony_ci  external_deps = [ sdk_libc_secshared_dep ]
194b1994897Sopenharmony_ci
195b1994897Sopenharmony_ci  part_name = "runtime_core"
196b1994897Sopenharmony_ci  subsystem_name = "arkcompiler"
197b1994897Sopenharmony_ci}
198b1994897Sopenharmony_ci
199b1994897Sopenharmony_ciohos_static_library("libarkbase_static") {
200b1994897Sopenharmony_ci  sources = libarkbase_sources
201b1994897Sopenharmony_ci
202b1994897Sopenharmony_ci  public_configs = libarkbase_configs
203b1994897Sopenharmony_ci
204b1994897Sopenharmony_ci  deps = libarkbase_deps
205b1994897Sopenharmony_ci
206b1994897Sopenharmony_ci  if (is_arkui_x) {
207b1994897Sopenharmony_ci    deps += [ "$ark_third_party_root/bounds_checking_function:libsec_static" ]
208b1994897Sopenharmony_ci  } else if (ark_standalone_build) {
209b1994897Sopenharmony_ci    external_deps = [ sdk_libc_secshared_dep ]
210b1994897Sopenharmony_ci  } else {
211b1994897Sopenharmony_ci    public_external_deps = [ sdk_libc_secshared_dep ]
212b1994897Sopenharmony_ci  }
213b1994897Sopenharmony_ci
214b1994897Sopenharmony_ci  if (enable_hilog) {
215b1994897Sopenharmony_ci    public_external_deps += [ "hilog:libhilog" ]
216b1994897Sopenharmony_ci  }
217b1994897Sopenharmony_ci  part_name = "runtime_core"
218b1994897Sopenharmony_ci  subsystem_name = "arkcompiler"
219b1994897Sopenharmony_ci}
220b1994897Sopenharmony_ci
221b1994897Sopenharmony_ciohos_shared_library("libarkbase") {
222b1994897Sopenharmony_ci  stack_protector_ret = false
223b1994897Sopenharmony_ci  deps = [ ":libarkbase_static" ]
224b1994897Sopenharmony_ci  external_deps = [ sdk_libc_secshared_dep ]
225b1994897Sopenharmony_ci  if (!is_mingw && !is_mac) {
226b1994897Sopenharmony_ci    output_extension = "so"
227b1994897Sopenharmony_ci  }
228b1994897Sopenharmony_ci  if (!is_standard_system) {
229b1994897Sopenharmony_ci    relative_install_dir = "ark"
230b1994897Sopenharmony_ci  }
231b1994897Sopenharmony_ci  part_name = "runtime_core"
232b1994897Sopenharmony_ci  subsystem_name = "arkcompiler"
233b1994897Sopenharmony_ci}
234b1994897Sopenharmony_ci
235b1994897Sopenharmony_ciohos_source_set("libarkbase_frontend_set_static") {
236b1994897Sopenharmony_ci  sources = libarkbase_sources
237b1994897Sopenharmony_ci
238b1994897Sopenharmony_ci  public_configs = libarkbase_configs
239b1994897Sopenharmony_ci
240b1994897Sopenharmony_ci  deps = libarkbase_deps
241b1994897Sopenharmony_ci
242b1994897Sopenharmony_ci  if (is_arkui_x) {
243b1994897Sopenharmony_ci    deps += [ "$ark_third_party_root/bounds_checking_function:libsec_static" ]
244b1994897Sopenharmony_ci  } else {
245b1994897Sopenharmony_ci    external_deps = [ sdk_libc_secshared_dep ]
246b1994897Sopenharmony_ci  }
247b1994897Sopenharmony_ci
248b1994897Sopenharmony_ci  part_name = "runtime_core"
249b1994897Sopenharmony_ci  subsystem_name = "arkcompiler"
250b1994897Sopenharmony_ci}
251b1994897Sopenharmony_ci
252b1994897Sopenharmony_ciohos_static_library("libarkbase_frontend_static") {
253b1994897Sopenharmony_ci  stack_protector_ret = false
254b1994897Sopenharmony_ci  deps = [ ":libarkbase_frontend_set_static" ]
255b1994897Sopenharmony_ci
256b1994897Sopenharmony_ci  part_name = "runtime_core"
257b1994897Sopenharmony_ci  subsystem_name = "arkcompiler"
258b1994897Sopenharmony_ci}
259b1994897Sopenharmony_ci
260b1994897Sopenharmony_ciaction("logger_yaml_gen") {
261b1994897Sopenharmony_ci  script = "$ark_root/libpandabase/templates/logger_gen.rb"
262b1994897Sopenharmony_ci  inputs = [ "$ark_root/libpandabase/templates/logger.yaml" ]
263b1994897Sopenharmony_ci  outputs = [ "$root_gen_dir/libpandabase/logger.yaml" ]
264b1994897Sopenharmony_ci  args = [
265b1994897Sopenharmony_ci    "-p",
266b1994897Sopenharmony_ci    rebase_path("$target_gen_dir/../plugin_options.yaml", root_build_dir),
267b1994897Sopenharmony_ci    "-d",
268b1994897Sopenharmony_ci    rebase_path(inputs[0], root_build_dir),
269b1994897Sopenharmony_ci    "-o",
270b1994897Sopenharmony_ci    rebase_path(outputs[0], root_build_dir),
271b1994897Sopenharmony_ci  ]
272b1994897Sopenharmony_ci  deps = [ "$ark_root:concat_plugins_yamls" ]
273b1994897Sopenharmony_ci}
274b1994897Sopenharmony_ci
275b1994897Sopenharmony_ciark_gen_file("logger_enum_gen_h") {
276b1994897Sopenharmony_ci  extra_dependencies = [ ":logger_yaml_gen" ]
277b1994897Sopenharmony_ci  template_file = "templates/logger_enum_gen.h.erb"
278b1994897Sopenharmony_ci  data_file = "$root_gen_dir/libpandabase/logger.yaml"
279b1994897Sopenharmony_ci  requires = [ "$ark_root/libpandabase/templates/logger.rb" ]
280b1994897Sopenharmony_ci  output_file = "$target_gen_dir/include/logger_enum_gen.h"
281b1994897Sopenharmony_ci}
282b1994897Sopenharmony_ci
283b1994897Sopenharmony_ciark_gen_file("logger_impl_gen_h") {
284b1994897Sopenharmony_ci  extra_dependencies = [ ":logger_yaml_gen" ]
285b1994897Sopenharmony_ci  template_file = "templates/logger_impl_gen.inc.erb"
286b1994897Sopenharmony_ci  data_file = "$root_gen_dir/libpandabase/logger.yaml"
287b1994897Sopenharmony_ci  requires = [ "$ark_root/libpandabase/templates/logger.rb" ]
288b1994897Sopenharmony_ci  output_file = "$target_gen_dir/include/logger_impl_gen.inc"
289b1994897Sopenharmony_ci}
290