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