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