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