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