1484543d1Sopenharmony_ci# Copyright (c) 2023 Huawei Device Co., Ltd. 2484543d1Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 3484543d1Sopenharmony_ci# you may not use this file except in compliance with the License. 4484543d1Sopenharmony_ci# You may obtain a copy of the License at 5484543d1Sopenharmony_ci# 6484543d1Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 7484543d1Sopenharmony_ci# 8484543d1Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software 9484543d1Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 10484543d1Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11484543d1Sopenharmony_ci# See the License for the specific language governing permissions and 12484543d1Sopenharmony_ci# limitations under the License. 13484543d1Sopenharmony_ciimport("//build/ohos.gni") 14484543d1Sopenharmony_ciimport("ffrt.gni") 15484543d1Sopenharmony_ci 16484543d1Sopenharmony_cidefines = [] 17484543d1Sopenharmony_ci 18484543d1Sopenharmony_ciconfig("ffrt_config") { 19484543d1Sopenharmony_ci visibility = [ ":*" ] 20484543d1Sopenharmony_ci include_dirs = [ 21484543d1Sopenharmony_ci "interfaces/kits", 22484543d1Sopenharmony_ci "interfaces/inner_api", 23484543d1Sopenharmony_ci ] 24484543d1Sopenharmony_ci 25484543d1Sopenharmony_ci ffrt_defaults_cflags = [ 26484543d1Sopenharmony_ci "-Wno-unused-variable", 27484543d1Sopenharmony_ci "-Wno-unused-function", 28484543d1Sopenharmony_ci "-Wno-unused-value", 29484543d1Sopenharmony_ci "-Wno-unused-private-field", 30484543d1Sopenharmony_ci "-Wno-tautological-constant-out-of-range-compare", 31484543d1Sopenharmony_ci "-Wno-shadow", 32484543d1Sopenharmony_ci "-Wno-float-equal", 33484543d1Sopenharmony_ci "-Wno-unused-parameter", 34484543d1Sopenharmony_ci "-fno-common", 35484543d1Sopenharmony_ci ] 36484543d1Sopenharmony_ci 37484543d1Sopenharmony_ci cflags = ffrt_defaults_cflags 38484543d1Sopenharmony_ci cflags_c = [ "-fno-common" ] 39484543d1Sopenharmony_ci cflags_cc = ffrt_defaults_cflags 40484543d1Sopenharmony_ci 41484543d1Sopenharmony_ci ffrt_debug_defines = [ 42484543d1Sopenharmony_ci "FFRT_LOG_LEVEL=3", 43484543d1Sopenharmony_ci "FFRT_BBOX_ENABLE", 44484543d1Sopenharmony_ci "FFRT_OH_EVENT_RECORD", 45484543d1Sopenharmony_ci "FFRT_CO_BACKTRACE_OH_ENABLE", 46484543d1Sopenharmony_ci "FFRT_OH_TRACE_ENABLE", 47484543d1Sopenharmony_ci "FFRT_TRACE_LEVEL=1", 48484543d1Sopenharmony_ci "FFRT_TRACE_RECORD_LEVEL=1", 49484543d1Sopenharmony_ci "FFRT_SEND_EVENT", 50484543d1Sopenharmony_ci "FFRT_ALLOCATOR_MMAP_SIZE=${ffrt_allocator_mmap_size}", 51484543d1Sopenharmony_ci "FFRT_STACK_SIZE=${ffrt_stack_size}", 52484543d1Sopenharmony_ci ] 53484543d1Sopenharmony_ci 54484543d1Sopenharmony_ci #ffrt_release_defines = [ 55484543d1Sopenharmony_ci # "FFRT_LOG_LEVEL=0", 56484543d1Sopenharmony_ci # "FFRT_RELEASE", 57484543d1Sopenharmony_ci #] 58484543d1Sopenharmony_ci 59484543d1Sopenharmony_ci defines += ffrt_debug_defines 60484543d1Sopenharmony_ci 61484543d1Sopenharmony_ci if (target_cpu == "arm") { 62484543d1Sopenharmony_ci defines += [ "APP_USE_ARM" ] 63484543d1Sopenharmony_ci } 64484543d1Sopenharmony_ci 65484543d1Sopenharmony_ci if (is_ohos && !ffrt_task_local_enable) { 66484543d1Sopenharmony_ci defines += [ "FFRT_TASK_LOCAL_ENABLE" ] 67484543d1Sopenharmony_ci } 68484543d1Sopenharmony_ci 69484543d1Sopenharmony_ci #build_variant is root/user, default user 70484543d1Sopenharmony_ci if (build_variant == "root") { 71484543d1Sopenharmony_ci defines += [ "FFRT_ENG_DEBUG" ] 72484543d1Sopenharmony_ci } 73484543d1Sopenharmony_ci 74484543d1Sopenharmony_ci #defines += ffrt_release_defines 75484543d1Sopenharmony_ci} 76484543d1Sopenharmony_ci 77484543d1Sopenharmony_ciconfig("ffrt_inner_config") { 78484543d1Sopenharmony_ci include_dirs = [ 79484543d1Sopenharmony_ci "src", 80484543d1Sopenharmony_ci "src/dfx/log", 81484543d1Sopenharmony_ci "src/dfx/trace", 82484543d1Sopenharmony_ci "src/dfx/trace_record", 83484543d1Sopenharmony_ci "src/sched", 84484543d1Sopenharmony_ci ] 85484543d1Sopenharmony_ci 86484543d1Sopenharmony_ci if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) { 87484543d1Sopenharmony_ci cflags = [ 88484543d1Sopenharmony_ci "-flto=thin", 89484543d1Sopenharmony_ci "-fsplit-lto-unit", 90484543d1Sopenharmony_ci ] 91484543d1Sopenharmony_ci } 92484543d1Sopenharmony_ci 93484543d1Sopenharmony_ci ffrt_inner_cflags = [ 94484543d1Sopenharmony_ci "-std=c++17", 95484543d1Sopenharmony_ci "-g", 96484543d1Sopenharmony_ci "-D_FORTIFY_SOURCE=2", 97484543d1Sopenharmony_ci "-O2", 98484543d1Sopenharmony_ci "-fPIC", 99484543d1Sopenharmony_ci "-DFFRT_PTHREAD_ENABLE", 100484543d1Sopenharmony_ci "-DFFRT_OH_WATCHDOG_ENABLE", 101484543d1Sopenharmony_ci "-DQOS_WORKER_FRAME_RTG", 102484543d1Sopenharmony_ci "-DUSE_OHOS_QOS", 103484543d1Sopenharmony_ci "-DOHOS_STANDARD_SYSTEM", 104484543d1Sopenharmony_ci "-DTASKSTAT_LOG_ENABLE=0", 105484543d1Sopenharmony_ci ] 106484543d1Sopenharmony_ci 107484543d1Sopenharmony_ci cflags_cc = ffrt_inner_cflags 108484543d1Sopenharmony_ci} 109484543d1Sopenharmony_ci 110484543d1Sopenharmony_ciohos_shared_library("libffrt") { 111484543d1Sopenharmony_ci if (ffrt_support_enable) { 112484543d1Sopenharmony_ci branch_protector_ret = "pac_ret" 113484543d1Sopenharmony_ci public_configs = [ ":ffrt_config" ] 114484543d1Sopenharmony_ci configs = [ ":ffrt_inner_config" ] 115484543d1Sopenharmony_ci ldflags = [ "-Wl,-z,nodelete" ] 116484543d1Sopenharmony_ci 117484543d1Sopenharmony_ci sources = [ 118484543d1Sopenharmony_ci "src/core/entity.cpp", 119484543d1Sopenharmony_ci "src/core/task.cpp", 120484543d1Sopenharmony_ci "src/core/task_io.cpp", 121484543d1Sopenharmony_ci "src/core/version_ctx.cpp", 122484543d1Sopenharmony_ci "src/dfx/bbox/bbox.cpp", 123484543d1Sopenharmony_ci "src/dfx/bbox/fault_logger_fd_manager.cpp", 124484543d1Sopenharmony_ci "src/dfx/dump/dump.cpp", 125484543d1Sopenharmony_ci "src/dfx/log/ffrt_log.cpp", 126484543d1Sopenharmony_ci "src/dfx/sysevent/sysevent.cpp", 127484543d1Sopenharmony_ci "src/dfx/trace/ffrt_trace.cpp", 128484543d1Sopenharmony_ci "src/dfx/trace_record/ffrt_trace_record.cpp", 129484543d1Sopenharmony_ci "src/dfx/watchdog/watchdog_util.cpp", 130484543d1Sopenharmony_ci "src/dm/dependence_manager.cpp", 131484543d1Sopenharmony_ci "src/dm/sdependence_manager.cpp", 132484543d1Sopenharmony_ci "src/eu/co2_context.c", 133484543d1Sopenharmony_ci "src/eu/co_routine.cpp", 134484543d1Sopenharmony_ci "src/eu/co_routine_factory.cpp", 135484543d1Sopenharmony_ci "src/eu/cpu_monitor.cpp", 136484543d1Sopenharmony_ci "src/eu/cpu_worker.cpp", 137484543d1Sopenharmony_ci "src/eu/cpuworker_manager.cpp", 138484543d1Sopenharmony_ci "src/eu/execute_unit.cpp", 139484543d1Sopenharmony_ci "src/eu/loop.cpp", 140484543d1Sopenharmony_ci "src/eu/loop_api.cpp", 141484543d1Sopenharmony_ci "src/eu/osattr_manager.cpp", 142484543d1Sopenharmony_ci "src/eu/qos_convert.cpp", 143484543d1Sopenharmony_ci "src/eu/qos_interface.cpp", 144484543d1Sopenharmony_ci "src/eu/rtg_ioctl.cpp", 145484543d1Sopenharmony_ci "src/eu/rtg_perf_ctrl.cpp", 146484543d1Sopenharmony_ci "src/eu/scpu_monitor.cpp", 147484543d1Sopenharmony_ci "src/eu/scpuworker_manager.cpp", 148484543d1Sopenharmony_ci "src/eu/sexecute_unit.cpp", 149484543d1Sopenharmony_ci "src/eu/worker_manager.cpp", 150484543d1Sopenharmony_ci "src/eu/worker_thread.cpp", 151484543d1Sopenharmony_ci "src/ipc/ipc.cpp", 152484543d1Sopenharmony_ci "src/queue/base_queue.cpp", 153484543d1Sopenharmony_ci "src/queue/concurrent_queue.cpp", 154484543d1Sopenharmony_ci "src/queue/eventhandler_adapter_queue.cpp", 155484543d1Sopenharmony_ci "src/queue/eventhandler_interactive_queue.cpp", 156484543d1Sopenharmony_ci "src/queue/queue_api.cpp", 157484543d1Sopenharmony_ci "src/queue/queue_handler.cpp", 158484543d1Sopenharmony_ci "src/queue/queue_monitor.cpp", 159484543d1Sopenharmony_ci "src/queue/serial_queue.cpp", 160484543d1Sopenharmony_ci "src/sched/deadline.cpp", 161484543d1Sopenharmony_ci "src/sched/execute_ctx.cpp", 162484543d1Sopenharmony_ci "src/sched/frame_interval.cpp", 163484543d1Sopenharmony_ci "src/sched/interval.cpp", 164484543d1Sopenharmony_ci "src/sched/load_tracking.cpp", 165484543d1Sopenharmony_ci "src/sched/multi_workgroup.cpp", 166484543d1Sopenharmony_ci "src/sched/qos.cpp", 167484543d1Sopenharmony_ci "src/sched/sched_deadline.cpp", 168484543d1Sopenharmony_ci "src/sched/scheduler.cpp", 169484543d1Sopenharmony_ci "src/sched/task_manager.cpp", 170484543d1Sopenharmony_ci "src/sched/task_state.cpp", 171484543d1Sopenharmony_ci "src/sync/condition_variable.cpp", 172484543d1Sopenharmony_ci "src/sync/delayed_worker.cpp", 173484543d1Sopenharmony_ci "src/sync/io_poller.cpp", 174484543d1Sopenharmony_ci "src/sync/mutex.cpp", 175484543d1Sopenharmony_ci "src/sync/perf_counter.cpp", 176484543d1Sopenharmony_ci "src/sync/poller.cpp", 177484543d1Sopenharmony_ci "src/sync/poller_api.cpp", 178484543d1Sopenharmony_ci "src/sync/record_mutex.cpp", 179484543d1Sopenharmony_ci "src/sync/shared_mutex.cpp", 180484543d1Sopenharmony_ci "src/sync/sleep.cpp", 181484543d1Sopenharmony_ci "src/sync/sync.cpp", 182484543d1Sopenharmony_ci "src/sync/thread.cpp", 183484543d1Sopenharmony_ci "src/sync/timer_api.cpp", 184484543d1Sopenharmony_ci "src/sync/wait_queue.cpp", 185484543d1Sopenharmony_ci "src/tm/cpu_task.cpp", 186484543d1Sopenharmony_ci "src/tm/queue_task.cpp", 187484543d1Sopenharmony_ci "src/tm/scpu_task.cpp", 188484543d1Sopenharmony_ci "src/tm/task_factory.cpp", 189484543d1Sopenharmony_ci "src/util/ffrt_cpu_boost.cpp", 190484543d1Sopenharmony_ci "src/util/ffrt_facade.cpp", 191484543d1Sopenharmony_ci "src/util/graph_check.cpp", 192484543d1Sopenharmony_ci "src/util/init.cpp", 193484543d1Sopenharmony_ci "src/util/spmc_queue.cpp", 194484543d1Sopenharmony_ci "src/util/worker_monitor.cpp", 195484543d1Sopenharmony_ci ] 196484543d1Sopenharmony_ci 197484543d1Sopenharmony_ci external_deps = [ 198484543d1Sopenharmony_ci "bounds_checking_function:libsec_shared", 199484543d1Sopenharmony_ci "c_utils:utils", 200484543d1Sopenharmony_ci "faultloggerd:libbacktrace_local", 201484543d1Sopenharmony_ci "faultloggerd:libdfx_dumpcatcher", 202484543d1Sopenharmony_ci "faultloggerd:libfaultloggerd", 203484543d1Sopenharmony_ci "faultloggerd:libunwinder", 204484543d1Sopenharmony_ci "hilog:libhilog", 205484543d1Sopenharmony_ci "hisysevent:libhisysevent", 206484543d1Sopenharmony_ci ] 207484543d1Sopenharmony_ci 208484543d1Sopenharmony_ci defines = [] 209484543d1Sopenharmony_ci 210484543d1Sopenharmony_ci if (ffrt_async_stack_enable) { 211484543d1Sopenharmony_ci defines += [ "ASYNC_STACKTRACE" ] 212484543d1Sopenharmony_ci sources += [ "src/dfx/async_stack/ffrt_async_stack.cpp" ] 213484543d1Sopenharmony_ci } 214484543d1Sopenharmony_ci 215484543d1Sopenharmony_ci output_extension = "so" 216484543d1Sopenharmony_ci symlink_target_name = [ "libffrt.z.so" ] 217484543d1Sopenharmony_ci part_name = "ffrt" 218484543d1Sopenharmony_ci subsystem_name = "resourceschedule" 219484543d1Sopenharmony_ci install_images = [ 220484543d1Sopenharmony_ci "system", 221484543d1Sopenharmony_ci "updater", 222484543d1Sopenharmony_ci ] 223484543d1Sopenharmony_ci innerapi_tags = [ 224484543d1Sopenharmony_ci "chipsetsdk", 225484543d1Sopenharmony_ci "ndk", 226484543d1Sopenharmony_ci "sasdk", 227484543d1Sopenharmony_ci ] 228484543d1Sopenharmony_ci } 229484543d1Sopenharmony_ci} 230484543d1Sopenharmony_ci 231484543d1Sopenharmony_ciohos_prebuilt_etc("blacklist_cfg") { 232484543d1Sopenharmony_ci relative_install_dir = "ffrt" 233484543d1Sopenharmony_ci source = "worker_monitor.conf" 234484543d1Sopenharmony_ci part_name = "ffrt" 235484543d1Sopenharmony_ci subsystem_name = "resourceschedule" 236484543d1Sopenharmony_ci install_enable = true 237484543d1Sopenharmony_ci install_images = [ 238484543d1Sopenharmony_ci "system", 239484543d1Sopenharmony_ci "updater", 240484543d1Sopenharmony_ci ] 241484543d1Sopenharmony_ci} 242484543d1Sopenharmony_ci 243484543d1Sopenharmony_cigroup("ffrt_ndk") { 244484543d1Sopenharmony_ci deps = [ 245484543d1Sopenharmony_ci ":blacklist_cfg", 246484543d1Sopenharmony_ci ":libffrt", 247484543d1Sopenharmony_ci ] 248484543d1Sopenharmony_ci} 249