• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2023 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.
13import("//build/ohos.gni")
14import("//foundation/resourceschedule/ffrt/ffrt_io_task_scheuduler.gni")
15
16defines = []
17
18if (ffrt_io_task_scheuduler) {
19  defines += [ "FFRT_IO_TASK_SCHEDULER" ]
20}
21
22config("ffrt_config") {
23  visibility = [ ":*" ]
24  include_dirs = [
25    "interfaces",
26    "interfaces/kits",
27    "interfaces/inner_api",
28  ]
29
30  ffrt_defaults_cflags = [
31    "-g",
32    "-D_FORTIFY_SOURCE=2",
33    "-O2",
34    "-fPIC",
35    "-Wno-unused-variable",
36    "-Wno-unused-function",
37    "-Wno-unused-value",
38    "-Wno-unused-private-field",
39    "-Wno-shadow",
40    "-Wno-float-equal",
41    "-Wno-unused-parameter",
42    "-DOHOS_STANDARD_SYSTEM",
43    "-DTASKSTAT_LOG_ENABLE=0",
44    "-DIDLE_WORKER_DESTRUCT",
45    "-DOHOS_THREAD_STACK_DUMP",
46    "-DUSE_OHOS_QOS",
47    "-DFFRT_IO_TASK_SCHEDULER",
48    "-DFFRT_PTHREAD_ENABLE",
49  ]
50
51  cflags = ffrt_defaults_cflags
52  cflags_cc = ffrt_defaults_cflags
53  cflags_cc += [ "-std=c++17" ]
54
55  ffrt_debug_defines = [
56    "FFRT_LOG_LEVEL=3",
57    "FFRT_BBOX_ENABLE",
58    "FFRT_OH_EVENT_RECORD",
59    "FFRT_CO_BACKTRACE_OH_ENABLE",
60    "FFRT_OH_TRACE_ENABLE",
61    "FFRT_TRACE_LEVEL=1",
62  ]
63
64  #ffrt_release_defines = [
65  #  "FFRT_LOG_LEVEL=0",
66  #  "FFRT_RELEASE",
67  #]
68
69  defines += ffrt_debug_defines
70
71  if (is_asan) {
72    defines += [ "ASAN_MODE" ]
73  }
74
75  if (target_cpu == "arm") {
76    defines += [ "APP_USE_ARM" ]
77  }
78
79  #defines += ffrt_release_defines
80}
81
82config("ffrt_inner_config") {
83  include_dirs = [
84    "src",
85    "src/dfx/log",
86    "src/dfx/trace",
87    "src/sched",
88    "//third_party/jsoncpp/include",
89    "//third_party/libunwind/include",
90  ]
91
92  if (is_ohos && is_clang && (target_cpu == "arm" || target_cpu == "arm64")) {
93    cflags = [
94      "-flto=thin",
95      "-fsplit-lto-unit",
96    ]
97  }
98}
99
100ohos_shared_library("libffrt") {
101  public_configs = [ ":ffrt_config" ]
102  configs = [ ":ffrt_inner_config" ]
103
104  sources = [
105    "src/core/entity.cpp",
106    "src/core/task.cpp",
107    "src/core/task_io.cpp",
108    "src/core/version_ctx.cpp",
109    "src/dfx/bbox/bbox.cpp",
110    "src/dfx/log/ffrt_log.cpp",
111    "src/dfx/log/hmos/log_base.cpp",
112    "src/dfx/trace/ffrt_trace.cpp",
113    "src/dfx/watchdog/watchdog.cpp",
114    "src/dm/dependence_manager.cpp",
115    "src/dm/sdependence_manager.cpp",
116    "src/eu/co2_context.c",
117    "src/eu/co_routine.cpp",
118    "src/eu/co_routine_factory.cpp",
119    "src/eu/cpu_monitor.cpp",
120    "src/eu/cpu_worker.cpp",
121    "src/eu/cpuworker_manager.cpp",
122    "src/eu/execute_unit.cpp",
123    "src/eu/osattr_manager.cpp",
124    "src/eu/qos_convert.cpp",
125    "src/eu/qos_interface.cpp",
126    "src/eu/rtg_ioctl.cpp",
127    "src/eu/rtg_perf_ctrl.c",
128    "src/eu/scpu_monitor.cpp",
129    "src/eu/scpuworker_manager.cpp",
130    "src/eu/sexecute_unit.cpp",
131    "src/eu/worker_manager.cpp",
132    "src/eu/worker_thread.cpp",
133    "src/ipc/ipc.cpp",
134    "src/queue/queue_monitor.cpp",
135    "src/queue/serial_handler.cpp",
136    "src/queue/serial_looper.cpp",
137    "src/queue/serial_queue.cpp",
138    "src/queue/serial_queue_api.cpp",
139    "src/queue/serial_task.cpp",
140    "src/sched/deadline.cpp",
141    "src/sched/execute_ctx.cpp",
142    "src/sched/frame_interval.cpp",
143    "src/sched/interval.cpp",
144    "src/sched/load_tracking.cpp",
145    "src/sched/multi_workgroup.cpp",
146    "src/sched/sched_deadline.cpp",
147    "src/sched/scheduler.cpp",
148    "src/sched/task_manager.cpp",
149    "src/sched/task_state.cpp",
150    "src/sync/condition_variable.cpp",
151    "src/sync/delayed_worker.cpp",
152    "src/sync/io_poller.cpp",
153    "src/sync/mutex.cpp",
154    "src/sync/perf_counter.cpp",
155    "src/sync/poller.cpp",
156    "src/sync/sleep.cpp",
157    "src/sync/sync.cpp",
158    "src/sync/thread.cpp",
159    "src/sync/wait_queue.cpp",
160    "src/tm/cpu_task.cpp",
161    "src/tm/scpu_task.cpp",
162    "src/tm/task_factory.cpp",
163    "src/util/graph_check.cpp",
164    "src/util/init.cpp",
165    "src/util/spmc_queue.cpp",
166    "src/util/worker_monitor.cpp",
167  ]
168
169  external_deps = [
170    "faultloggerd:libbacktrace_local",
171    "faultloggerd:libdfx_dumpcatcher",
172    "hilog:libhilog",
173    "hisysevent:libhisysevent",
174  ]
175
176  deps = [
177    "//third_party/bounds_checking_function:libsec_shared",
178    "//third_party/libunwind:libunwind",
179  ]
180
181  output_extension = "so"
182  part_name = "ffrt"
183  install_images = [
184    "system",
185    "updater",
186  ]
187  innerapi_tags = [
188    "chipsetsdk",
189    "sasdk",
190  ]
191}
192
193ohos_shared_library("ffrt_ndk") {
194  output_name = "ffrt"
195  configs = [
196    ":ffrt_config",
197    ":ffrt_inner_config",
198  ]
199
200  sources = [
201    "src/core/entity.cpp",
202    "src/core/task.cpp",
203    "src/core/task_io.cpp",
204    "src/core/version_ctx.cpp",
205    "src/dfx/bbox/bbox.cpp",
206    "src/dfx/log/ffrt_log.cpp",
207    "src/dfx/log/hmos/log_base.cpp",
208    "src/dfx/trace/ffrt_trace.cpp",
209    "src/dfx/watchdog/watchdog.cpp",
210    "src/dm/dependence_manager.cpp",
211    "src/dm/sdependence_manager.cpp",
212    "src/eu/co2_context.c",
213    "src/eu/co_routine.cpp",
214    "src/eu/co_routine_factory.cpp",
215    "src/eu/cpu_monitor.cpp",
216    "src/eu/cpu_worker.cpp",
217    "src/eu/cpuworker_manager.cpp",
218    "src/eu/execute_unit.cpp",
219    "src/eu/osattr_manager.cpp",
220    "src/eu/qos_convert.cpp",
221    "src/eu/qos_interface.cpp",
222    "src/eu/rtg_ioctl.cpp",
223    "src/eu/rtg_perf_ctrl.c",
224    "src/eu/scpu_monitor.cpp",
225    "src/eu/scpuworker_manager.cpp",
226    "src/eu/sexecute_unit.cpp",
227    "src/eu/worker_manager.cpp",
228    "src/eu/worker_thread.cpp",
229    "src/queue/queue_monitor.cpp",
230    "src/queue/serial_handler.cpp",
231    "src/queue/serial_looper.cpp",
232    "src/queue/serial_queue.cpp",
233    "src/queue/serial_queue_api.cpp",
234    "src/queue/serial_task.cpp",
235    "src/sched/deadline.cpp",
236    "src/sched/execute_ctx.cpp",
237    "src/sched/frame_interval.cpp",
238    "src/sched/interval.cpp",
239    "src/sched/load_tracking.cpp",
240    "src/sched/multi_workgroup.cpp",
241    "src/sched/sched_deadline.cpp",
242    "src/sched/scheduler.cpp",
243    "src/sched/task_manager.cpp",
244    "src/sched/task_state.cpp",
245    "src/sync/condition_variable.cpp",
246    "src/sync/delayed_worker.cpp",
247    "src/sync/io_poller.cpp",
248    "src/sync/mutex.cpp",
249    "src/sync/perf_counter.cpp",
250    "src/sync/poller.cpp",
251    "src/sync/sleep.cpp",
252    "src/sync/sync.cpp",
253    "src/sync/thread.cpp",
254    "src/sync/wait_queue.cpp",
255    "src/tm/cpu_task.cpp",
256    "src/tm/scpu_task.cpp",
257    "src/tm/task_factory.cpp",
258    "src/util/graph_check.cpp",
259    "src/util/init.cpp",
260    "src/util/spmc_queue.cpp",
261    "src/util/worker_monitor.cpp",
262  ]
263
264  external_deps = [
265    "faultloggerd:libbacktrace_local",
266    "faultloggerd:libdfx_dumpcatcher",
267    "hilog:libhilog",
268    "hisysevent:libhisysevent",
269  ]
270
271  deps = [
272    "//third_party/bounds_checking_function:libsec_shared",
273    "//third_party/libunwind:libunwind",
274  ]
275
276  part_name = "ffrt"
277  subsystem_name = "resourceschedule"
278  innerapi_tags = [ "ndk" ]
279}
280