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