# Copyright (c) 2021-2022 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import("//arkcompiler/runtime_core/static_core/ark_config.gni") import("//arkcompiler/runtime_core/static_vm_config.gni") import("//build/ohos.gni") group("libarktsbase_package") { deps = [] if (enable_static_vm) { deps += [ ":libarktsbase_frontend_static" ] } } config("arkbase_public_config") { configs = [ sdk_libc_secshared_config ] include_dirs = [ "$ark_root_gen_dir/libpandabase", "$ark_root/libpandabase", "$target_gen_dir/generated", "$target_gen_dir/include", "$target_gen_dir/generated", "$target_gen_dir", ] include_dirs += platform_include_dirs if (ark_standalone_build) { ldflags = [ "-ldl" ] } } ark_gen_file("events_gen") { template_file = "events/events_gen.h.erb" data_file = "events/events.yaml" requires = [ "events/events.rb" ] output_file = "$target_gen_dir/events_gen.h" } ark_gen_file("base_options_h") { template_file = "../templates/options/options.h.erb" data_file = "options.yaml" requires = [ "../templates/common.rb" ] output_file = "$target_gen_dir/generated/base_options.h" } action("generate_version_file") { script = "$ark_root/gn/build/make_version_file.sh" sources = [ "$ark_root/libpandabase/templates/ark_version.h.in" ] outputs = [ "$ark_root_gen_dir/libpandabase/ark_version.h" ] args = [ rebase_path("${ark_root}", "$root_build_dir"), rebase_path(sources[0], "$root_build_dir"), rebase_path(outputs[0], "$root_build_dir"), ] } if (is_mingw) { libarkbase_sources = [ "$ark_root/libpandabase/mem/arena_allocator.cpp", "$ark_root/libpandabase/mem/base_mem_stats.cpp", "$ark_root/libpandabase/mem/code_allocator.cpp", "$ark_root/libpandabase/mem/mem_config.cpp", "$ark_root/libpandabase/mem/pool_manager.cpp", "$ark_root/libpandabase/mem/pool_map.cpp", "$ark_root/libpandabase/os/dfx_option.cpp", "$ark_root/libpandabase/os/filesystem.cpp", "$ark_root/libpandabase/os/mutex.cpp", "$ark_root/libpandabase/os/native_stack.cpp", "$ark_root/libpandabase/os/stacktrace_stub.cpp", "$ark_root/libpandabase/os/time.cpp", "$ark_root/libpandabase/taskmanager/task.cpp", "$ark_root/libpandabase/taskmanager/task_scheduler.cpp", "$ark_root/libpandabase/taskmanager/task_statistics/fine_grained_task_statistics_impl.cpp", "$ark_root/libpandabase/taskmanager/task_statistics/lock_free_task_statistics_impl.cpp", "$ark_root/libpandabase/taskmanager/task_statistics/simple_task_statistics_impl.cpp", "$ark_root/libpandabase/taskmanager/task_statistics/task_statistics.cpp", "$ark_root/libpandabase/taskmanager/worker_thread.cpp", "$ark_root/libpandabase/utils/dfx.cpp", "$ark_root/libpandabase/utils/json_builder.cpp", "$ark_root/libpandabase/utils/json_parser.cpp", "$ark_root/libpandabase/utils/logger.cpp", "$ark_root/libpandabase/utils/time.cpp", "$ark_root/libpandabase/utils/type_converter.cpp", "$ark_root/libpandabase/utils/utf.cpp", "$ark_root/libpandabase/utils/utils.cpp", "$ark_root/platforms/windows/libpandabase/error.cpp", "$ark_root/platforms/windows/libpandabase/file.cpp", "$ark_root/platforms/windows/libpandabase/filesystem.cpp", "$ark_root/platforms/windows/libpandabase/library_loader.cpp", "$ark_root/platforms/windows/libpandabase/mem.cpp", "$ark_root/platforms/windows/libpandabase/mem_hooks.cpp", "$ark_root/platforms/windows/libpandabase/thread.cpp", "$ark_root/platforms/windows/libpandabase/trace.cpp", "$ark_root/platforms/windowslibpandabase/cpu_affinity.cpp", ] } else { libarkbase_sources = [ "$ark_root/libpandabase/mem/arena_allocator.cpp", "$ark_root/libpandabase/mem/base_mem_stats.cpp", "$ark_root/libpandabase/mem/code_allocator.cpp", "$ark_root/libpandabase/mem/mem_config.cpp", "$ark_root/libpandabase/mem/pool_manager.cpp", "$ark_root/libpandabase/mem/pool_map.cpp", "$ark_root/libpandabase/os/dfx_option.cpp", "$ark_root/libpandabase/os/filesystem.cpp", "$ark_root/libpandabase/os/native_stack.cpp", "$ark_root/libpandabase/os/property.cpp", "$ark_root/libpandabase/taskmanager/task.cpp", "$ark_root/libpandabase/taskmanager/task_scheduler.cpp", "$ark_root/libpandabase/taskmanager/task_statistics/fine_grained_task_statistics_impl.cpp", "$ark_root/libpandabase/taskmanager/task_statistics/lock_free_task_statistics_impl.cpp", "$ark_root/libpandabase/taskmanager/task_statistics/simple_task_statistics_impl.cpp", "$ark_root/libpandabase/taskmanager/task_statistics/task_statistics.cpp", "$ark_root/libpandabase/taskmanager/worker_thread.cpp", # product build "$ark_root/libpandabase/os/stacktrace_stub.cpp", "$ark_root/libpandabase/os/time.cpp", "$ark_root/libpandabase/trace/trace.cpp", "$ark_root/libpandabase/utils/dfx.cpp", "$ark_root/libpandabase/utils/json_builder.cpp", "$ark_root/libpandabase/utils/json_parser.cpp", "$ark_root/libpandabase/utils/logger.cpp", "$ark_root/libpandabase/utils/terminate.cpp", "$ark_root/libpandabase/utils/time.cpp", "$ark_root/libpandabase/utils/type_converter.cpp", "$ark_root/libpandabase/utils/utf.cpp", "$ark_root/libpandabase/utils/utils.cpp", "$ark_root/platforms/unix/libpandabase/cpu_affinity.cpp", "$ark_root/platforms/unix/libpandabase/error.cpp", "$ark_root/platforms/unix/libpandabase/file.cpp", "$ark_root/platforms/unix/libpandabase/filesystem.cpp", "$ark_root/platforms/unix/libpandabase/library_loader_resolve_symbol.cpp", "$ark_root/platforms/unix/libpandabase/mem.cpp", "$ark_root/platforms/unix/libpandabase/native_stack.cpp", "$ark_root/platforms/unix/libpandabase/property.cpp", "$ark_root/platforms/unix/libpandabase/thread.cpp", "$ark_root/platforms/unix/libpandabase/trace.cpp", ] if (is_mob) { libarkbase_sources += [ "$ark_root/platforms/mobile/libpandabase/library_loader_load.cpp" ] } else { libarkbase_sources += [ "$ark_root/platforms/unix/libpandabase/library_loader_load.cpp" ] } if (!is_mac) { libarkbase_sources += [ "$ark_root/platforms/unix/libpandabase/exec.cpp", "$ark_root/platforms/unix/libpandabase/mem_hooks.cpp", "$ark_root/platforms/unix/libpandabase/pipe.cpp", "$ark_root/platforms/unix/libpandabase/sighook.cpp", ] if (is_asan) { # Futexes are not supported with ASAN libarkbase_sources += [ "$ark_root/libpandabase/os/mutex.cpp" ] } else { libarkbase_sources += [ "$ark_root/platforms/unix/libpandabase/futex/fmutex.cpp", "$ark_root/platforms/unix/libpandabase/futex/mutex.cpp", ] } } else { libarkbase_sources += [ "$ark_root/libpandabase/os/mutex.cpp" ] } if (is_debug) { libarkbase_sources += [ "$ark_root/libpandabase/utils/debug.cpp" ] } } if (current_cpu == "arm64") { libarkbase_sources += [ "$ark_root/libpandabase/arch/aarch64/cpu_features.cpp" ] } else { libarkbase_sources += [ "$ark_root/libpandabase/arch/default/cpu_features.cpp" ] } if (is_mob) { copy("coherency_line_size_h") { sources = [ "$ark_root/platforms/mobile/libpandabase/coherency_line_size.h" ] outputs = [ "$target_gen_dir/generated/coherency_line_size.h" ] } } else { copy("coherency_line_size_h") { sources = [ "$ark_root/platforms/common/libpandabase/coherency_line_size.h" ] outputs = [ "$target_gen_dir/generated/coherency_line_size.h" ] } } libarkbase_configs = [ sdk_libc_secshared_config, ":arkbase_public_config", "$ark_root:ark_config", ] libarkbase_deps = [ ":base_options_h", ":coherency_line_size_h", ":events_gen", ":generate_version_file", ":logger_enum_gen_h", ":logger_impl_gen_h", ":plugins_regmasks_gen", ":source_language_gen", sdk_libc_secshared_dep, ] source_set("libarkbase_static") { sources = libarkbase_sources cflags_cc = [ "-fvisibility=hidden", "-fvisibility-inlines-hidden", ] public_configs = libarkbase_configs deps = libarkbase_deps } ohos_shared_library("libarktsbase") { deps = [ ":libarkbase_static" ] if (!is_mingw && !is_mac) { output_extension = "so" } part_name = ark_part_name subsystem_name = "$ark_subsystem_name" } source_set("libarkbase_frontend_set_static") { sources = libarkbase_sources public_configs = libarkbase_configs deps = libarkbase_deps } ohos_source_set("libarktsbase_frontend_static") { deps = [ ":libarkbase_frontend_set_static" ] part_name = ark_part_name subsystem_name = ark_subsystem_name } action("logger_yaml_gen") { script = "$ark_root/libpandabase/templates/logger_gen.rb" inputs = [ "$ark_root/libpandabase/templates/logger.yaml" ] outputs = [ "$ark_root_gen_dir/libpandabase/logger.yaml" ] args = [ "-p", rebase_path("$ark_plugin_options_yaml", root_build_dir), "-d", rebase_path(inputs[0], root_build_dir), "-o", rebase_path(outputs[0], root_build_dir), ] deps = [ "$ark_root:concat_plugins_yamls" ] } ark_gen_file("logger_enum_gen_h") { extra_dependencies = [ ":logger_yaml_gen" ] template_file = "templates/logger_enum_gen.h.erb" data_file = "$ark_root_gen_dir/libpandabase/logger.yaml" requires = [ "$ark_root/libpandabase/templates/logger.rb" ] output_file = "$target_gen_dir/include/logger_enum_gen.h" } ark_gen_file("logger_impl_gen_h") { extra_dependencies = [ ":logger_yaml_gen" ] template_file = "templates/logger_impl_gen.inc.erb" data_file = "$ark_root_gen_dir/libpandabase/logger.yaml" requires = [ "$ark_root/libpandabase/templates/logger.rb" ] output_file = "$target_gen_dir/include/logger_impl_gen.inc" } ark_gen_file("source_language_gen") { extra_dependencies = [ "$ark_root:concat_plugins_yamls" ] template_file = "templates/source_language.h.erb" data_file = "$ark_plugin_options_yaml" requires = [ "$ark_root/templates/plugin_options.rb" ] output_file = "$target_gen_dir/generated/source_language.h" } ark_gen_file("plugins_regmasks_gen") { extra_dependencies = [ "$ark_root:concat_plugins_yamls" ] template_file = "templates/plugins_regmasks.inl.erb" data_file = ark_plugin_options_yaml requires = [ "$ark_root/templates/plugin_options.rb" ] output_file = "$target_gen_dir/generated/plugins_regmasks.inl" }