• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2022-2025 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.
13
14import("//build/ohos.gni")
15import("../../av_session_ohos_sources.gni")
16import("../../bluetooth_part.gni")
17import("../../castplus_cast_engine_part.gni")
18import("../../config.gni")
19import("../../efficiency_manager_part.gni")
20
21group("avsession_server") {
22  deps = [
23    ":avsession_dynamic_insight",
24    ":avsession_item",
25    ":avsession_service",
26    "../../sa_profile:avsession_sa_profile",
27    "../etc:avsession_service.rc",
28    "../etc:ohos.para.dac",
29  ]
30}
31
32group("avsession_server_static") {
33  deps = [
34    ":avsession_dynamic_insight",
35    ":avsession_item_static",
36    ":avsession_service_static",
37    "../../sa_profile:avsession_sa_profile",
38    "../etc:avsession_service.rc",
39    "../etc:ohos.para.dac",
40  ]
41}
42
43av_session_ohos_library("avsession_service") {
44  stack_protector_ret = true
45  install_enable = true
46  sanitize = {
47    boundary_sanitize = true
48    cfi = true
49    cfi_cross_dso = true
50    debug = false
51    integer_overflow = true
52    ubsan = true
53  }
54  ipc_sources = [
55    "ipc/proxy/session_listener_proxy.cpp",
56    "ipc/stub/avsession_callback_stub.cpp",
57    "ipc/stub/avsession_service_stub.cpp",
58  ]
59
60  service_sources = [
61    "server/audio_device_manager.cpp",
62    "server/avsession_dumper.cpp",
63    "server/avsession_service.cpp",
64    "server/avsession_service_ext.cpp",
65    "server/avsession_users_manager.cpp",
66    "server/background_audio_controller.cpp",
67    "server/focus_session_strategy.cpp",
68    "server/migrate/migrate_avsession_manager.cpp",
69    "server/migrate/migrate_avsession_proxy.cpp",
70    "server/migrate/migrate_avsession_server.cpp",
71    "server/migrate/migrate_avsession_server_for_next.cpp",
72    "server/session_stack.cpp",
73    "server/softbus/softbus_distributed_data_manager.cpp",
74    "server/softbus/softbus_session.cpp",
75    "server/softbus/softbus_session_manager.cpp",
76    "server/softbus/softbus_session_proxy.cpp",
77    "server/softbus/softbus_session_server.cpp",
78  ]
79
80  adapter_sources = [
81    "adapter/ability_connect_helper.cpp",
82    "adapter/ability_manager_adapter.cpp",
83    "adapter/account_manager_adapter.cpp",
84    "adapter/app_manager_adapter.cpp",
85    "adapter/audio_adapter.cpp",
86    "adapter/bundle_status_adapter.cpp",
87    "adapter/collaboration_manager.cpp",
88    "adapter/key_event_adapter.cpp",
89    "adapter/params_config_operator.cpp",
90    "adapter/session_xcollie.cpp",
91  ]
92
93  sources = ipc_sources + adapter_sources + service_sources
94
95  include_dirs = [
96    "ipc/base",
97    "ipc/proxy",
98    "ipc/stub",
99    "adapter",
100    "server",
101    "server/migrate",
102    "server/softbus",
103    "server/remote",
104    "../../frameworks/native/session/include",
105    "../../interfaces/inner_api/native/session/include",
106  ]
107
108  cflags = [
109    "-fPIC",
110    "-fdata-sections",
111    "-ffunction-sections",
112    "-fstack-protector-strong",
113    "-fno-asynchronous-unwind-tables",
114    "-fno-unwind-tables",
115    "-Os",
116  ]
117
118  if (multimedia_av_session_enable_background_audio_control) {
119    cflags += [ "-DENABLE_BACKGROUND_AUDIO_CONTROL" ]
120  }
121
122  if (!use_libfuzzer) {
123    cflags += [ "-flto" ]
124    ldflags = [
125      "-flto",
126      "-Wl,--gc-sections",
127    ]
128  }
129  cflags_cc = cflags
130  cflags_cc += [ "-fvisibility-inlines-hidden" ]
131
132  defines = []
133  if (target_cpu == "arm64" || is_emulator) {
134    system_lib_path = "\"/system/lib64/\""
135  } else {
136    system_lib_path = "\"/system/lib/\""
137  }
138  defines += [ "SYSTEM_LIB_PATH = ${system_lib_path}" ]
139
140  deps = [
141    "./../../frameworks/common:avsession_common",
142    "./../../utils:avsession_utils",
143    "./../session:avsession_item",
144  ]
145
146  external_deps = [
147    "ability_base:base",
148    "ability_base:zuri",
149    "ability_runtime:app_manager",
150    "ability_runtime:wantagent_innerkits",
151    "access_token:libaccesstoken_sdk",
152    "access_token:libtokenid_sdk",
153    "access_token:libtokensetproc_shared",
154    "audio_framework:audio_client",
155    "audio_framework:audio_foundation",
156    "background_task_mgr:bgtaskmgr_innerkits",
157    "bundle_framework:appexecfwk_base",
158    "bundle_framework:appexecfwk_core",
159    "c_utils:utils",
160    "device_manager:devicemanagersdk",
161    "distributed_notification_service:ans_innerkits",
162    "dsoftbus:softbus_client",
163    "hilog:libhilog",
164    "image_framework:image_native",
165    "init:libbegetutil",
166    "input:libmmi-client",
167    "ipc:ipc_single",
168    "safwk:system_ability_fwk",
169    "samgr:samgr_proxy",
170    "window_manager:libdm_lite",
171  ]
172
173  if (castplus_cast_engine_enable) {
174    cflags += [ "-DCASTPLUS_CAST_ENGINE_ENABLE" ]
175    external_deps += [ "cast_engine:cast_engine_client" ]
176    deps += [
177      "../../frameworks/native/session:avsession_cast_client",
178      "./../session:avsession_cast_item",
179      "./../session:avsession_router",
180    ]
181  }
182
183  if (bluetooth_part_enable) {
184    cflags += [ "-DBLUETOOTH_ENABLE" ]
185    external_deps += [ "bluetooth:btframework" ]
186  }
187
188  if (efficiency_manager_enable_in_avsession) {
189    cflags += [ "-DEFFICIENCY_MANAGER_ENABLE" ]
190  }
191
192  if (multimedia_av_session_enable_trace_control) {
193    cflags += [ "-DENBABLE_AVSESSION_TRACE_CONTROL" ]
194    external_deps += [ "hitrace:hitrace_meter" ]
195  }
196
197  if (multimedia_av_session_enable_sysevent_control) {
198    cflags += [ "-DENABLE_AVSESSION_SYSEVENT_CONTROL" ]
199    external_deps += [ "hisysevent:libhisysevent" ]
200  }
201
202  if (multimedia_av_session_enable_hicollie) {
203    external_deps += [ "hicollie:libhicollie" ]
204    defines += [ "HICOLLIE_ENABLE" ]
205  }
206
207  if (av_session_enable_start_stop_on_demand) {
208    defines += [ "START_STOP_ON_DEMAND_ENABLE" ]
209  }
210
211  if (use_libfuzzer || use_clang_coverage) {
212    defines += [ "TEST_COVERAGE" ]
213  }
214
215  public_external_deps = [
216    "data_object:distributeddataobject_impl",
217    "jsoncpp:jsoncpp",
218    "openssl:libcrypto_shared",
219    "relational_store:native_rdb",
220  ]
221
222  subsystem_name = "multimedia"
223  part_name = "av_session"
224  version_script = "avsession_service.versionscript"
225}
226
227if (castplus_cast_engine_enable) {
228  av_session_ohos_library("avsession_router") {
229    install_enable = true
230    sanitize = {
231      boundary_sanitize = true
232      cfi = true
233      cfi_cross_dso = true
234      debug = false
235      integer_overflow = true
236      ubsan = true
237    }
238    ipc_sources = []
239
240    service_sources = [
241      "server/avcast_provider_manager.cpp",
242      "server/avrouter.cpp",
243      "server/avrouter_impl.cpp",
244      "server/hw_cast_data_source_descriptor.cpp",
245      "server/hw_cast_provider.cpp",
246      "server/hw_cast_provider_session.cpp",
247      "server/hw_cast_stream_player.cpp",
248    ]
249
250    adapter_sources = []
251
252    sources = ipc_sources + adapter_sources + service_sources
253
254    include_dirs = [
255      "./../../frameworks/native/session/include",
256      "./../../interfaces/inner_api/native/session/include",
257      "./adapter",
258      "./server",
259      "./ipc/stub",
260    ]
261
262    cflags = [
263      "-fPIC",
264      "-fdata-sections",
265      "-ffunction-sections",
266      "-fstack-protector-strong",
267      "-fno-asynchronous-unwind-tables",
268      "-fno-unwind-tables",
269      "-Os",
270    ]
271
272    if (multimedia_av_session_enable_background_audio_control) {
273      cflags += [ "-DENABLE_BACKGROUND_AUDIO_CONTROL" ]
274    }
275
276    if (!use_libfuzzer) {
277      cflags += [ "-flto" ]
278      ldflags = [
279        "-flto",
280        "-Wl,--gc-sections",
281      ]
282    }
283    cflags_cc = cflags
284    cflags_cc += [ "-fvisibility-inlines-hidden" ]
285
286    defines = []
287    if (target_cpu == "arm64" || is_emulator) {
288      system_lib_path = "\"/system/lib64/\""
289    } else {
290      system_lib_path = "\"/system/lib/\""
291    }
292    defines += [ "SYSTEM_LIB_PATH = ${system_lib_path}" ]
293
294    deps = [
295      "../../frameworks/common:avsession_common",
296      "../../utils:avsession_utils",
297    ]
298
299    external_deps = [
300      "ability_base:base",
301      "ability_base:want",
302      "ability_runtime:app_manager",
303      "ability_runtime:wantagent_innerkits",
304      "access_token:libaccesstoken_sdk",
305      "access_token:libtokenid_sdk",
306      "audio_framework:audio_client",
307      "bundle_framework:appexecfwk_base",
308      "bundle_framework:appexecfwk_core",
309      "c_utils:utils",
310      "data_object:distributeddataobject_impl",
311      "device_manager:devicemanagersdk",
312      "graphic_surface:surface",
313      "hilog:libhilog",
314      "image_framework:image_native",
315      "input:libmmi-client",
316      "ipc:ipc_single",
317      "safwk:system_ability_fwk",
318      "samgr:samgr_proxy",
319    ]
320
321    if (castplus_cast_engine_enable) {
322      cflags += [ "-DCASTPLUS_CAST_ENGINE_ENABLE" ]
323      external_deps += [ "cast_engine:cast_engine_client" ]
324      service_sources += [ "" ]
325    }
326
327    if (multimedia_av_session_enable_trace_control) {
328      cflags += [ "-DENBABLE_AVSESSION_TRACE_CONTROL" ]
329      external_deps += [ "hitrace:hitrace_meter" ]
330    }
331    if (multimedia_av_session_enable_sysevent_control) {
332      cflags += [ "-DENABLE_AVSESSION_SYSEVENT_CONTROL" ]
333      external_deps += [ "hisysevent:libhisysevent" ]
334    }
335
336    subsystem_name = "multimedia"
337    part_name = "av_session"
338    version_script = "avsession_router.versionscript"
339  }
340}
341
342ohos_shared_library("avsession_dynamic_insight") {
343  install_enable = true
344  sanitize = {
345    boundary_sanitize = true
346    cfi = true
347    cfi_cross_dso = true
348    debug = false
349    integer_overflow = true
350    ubsan = true
351  }
352
353  sources = [ "adapter/avsession_dynamic_insight.cpp" ]
354
355  include_dirs = [
356    "./../../frameworks/native/session/include",
357    "./../../interfaces/inner_api/native/session/include",
358    "./adapter",
359    "ipc/base",
360  ]
361
362  cflags = [
363    "-fPIC",
364    "-fdata-sections",
365    "-ffunction-sections",
366    "-fstack-protector-strong",
367    "-fno-asynchronous-unwind-tables",
368    "-fno-unwind-tables",
369  ]
370
371  if (!use_libfuzzer) {
372    cflags += [ "-flto" ]
373    ldflags = [
374      "-flto",
375      "-Wl,--gc-sections",
376    ]
377  }
378  cflags_cc = cflags
379  cflags_cc += [ "-fvisibility-inlines-hidden" ]
380
381  deps = [
382    "../../frameworks/common:avsession_common",
383    "../../utils:avsession_utils",
384  ]
385
386  external_deps = [
387    "ability_base:base",
388    "ability_base:want",
389    "ability_runtime:ability_manager",
390    "bundle_framework:appexecfwk_base",
391    "bundle_framework:appexecfwk_core",
392    "c_utils:utils",
393    "hilog:libhilog",
394    "ipc:ipc_single",
395    "samgr:samgr_proxy",
396  ]
397
398  subsystem_name = "multimedia"
399  part_name = "av_session"
400}
401
402av_session_ohos_library("avsession_item") {
403  install_enable = true
404  sanitize = {
405    boundary_sanitize = true
406    cfi = true
407    cfi_cross_dso = true
408    debug = false
409    integer_overflow = true
410    ubsan = true
411  }
412  ipc_sources = [
413    "ipc/proxy/avcontroller_callback_proxy.cpp",
414    "ipc/proxy/avsession_callback_proxy.cpp",
415    "ipc/stub/avsession_controller_stub.cpp",
416    "ipc/stub/avsession_stub.cpp",
417  ]
418
419  service_sources = [
420    "server/avcontroller_item.cpp",
421    "server/avsession_item.cpp",
422    "server/hw_cast_display_listener.cpp",
423    "server/remote/json_utils.cpp",
424    "server/remote/remote_session_command_process.cpp",
425    "server/remote/remote_session_sink_proxy.cpp",
426    "server/remote/remote_session_source_proxy.cpp",
427  ]
428
429  adapter_sources = [
430    "adapter/bundle_status_adapter.cpp",
431    "adapter/collaboration_manager.cpp",
432    "adapter/command_send_limit.cpp",
433    "adapter/plugin_lib.cpp",
434    "adapter/session_xcollie.cpp",
435  ]
436
437  sources = ipc_sources + adapter_sources + service_sources
438
439  include_dirs = [
440    "./../../frameworks/native/session/include",
441    "./../../interfaces/inner_api/native/session/include",
442    "./ipc/base",
443    "./ipc/proxy",
444    "./ipc/stub",
445    "./adapter",
446    "./server",
447    "./server/remote",
448  ]
449
450  cflags = [
451    "-fPIC",
452    "-fdata-sections",
453    "-ffunction-sections",
454    "-fstack-protector-strong",
455    "-fno-asynchronous-unwind-tables",
456    "-fno-unwind-tables",
457    "-Os",
458  ]
459
460  if (multimedia_av_session_enable_background_audio_control) {
461    cflags += [ "-DENABLE_BACKGROUND_AUDIO_CONTROL" ]
462  }
463
464  if (!use_libfuzzer) {
465    cflags += [ "-flto" ]
466    ldflags = [
467      "-flto",
468      "-Wl,--gc-sections",
469    ]
470  }
471  cflags_cc = cflags
472  cflags_cc += [ "-fvisibility-inlines-hidden" ]
473
474  defines = []
475  if (target_cpu == "arm64" || is_emulator) {
476    system_lib_path = "\"/system/lib64/\""
477  } else {
478    system_lib_path = "\"/system/lib/\""
479  }
480  defines += [ "SYSTEM_LIB_PATH = ${system_lib_path}" ]
481
482  deps = [
483    "../../frameworks/common:avsession_common",
484    "../../frameworks/native/session:avsession_client",
485    "../../utils:avsession_utils",
486  ]
487
488  external_deps = [
489    "ability_base:base",
490    "ability_base:want",
491    "ability_runtime:app_manager",
492    "ability_runtime:wantagent_innerkits",
493    "access_token:libaccesstoken_sdk",
494    "access_token:libtokenid_sdk",
495    "access_token:libtokensetproc_shared",
496    "audio_framework:audio_client",
497    "background_task_mgr:bgtaskmgr_innerkits",
498    "bundle_framework:appexecfwk_base",
499    "bundle_framework:appexecfwk_core",
500    "c_utils:utils",
501    "device_manager:devicemanagersdk",
502    "graphic_surface:surface",
503    "hilog:libhilog",
504    "input:libmmi-client",
505    "ipc:ipc_single",
506    "safwk:system_ability_fwk",
507    "samgr:samgr_proxy",
508    "window_manager:libdm_lite",
509  ]
510
511  if (castplus_cast_engine_enable) {
512    cflags += [ "-DCASTPLUS_CAST_ENGINE_ENABLE" ]
513    external_deps += [ "cast_engine:cast_engine_client" ]
514    deps += [
515      "../../frameworks/native/session:avsession_cast_client",
516      "./../session:avsession_cast_item",
517      "./../session:avsession_router",
518    ]
519  }
520
521  if (bluetooth_part_enable) {
522    cflags += [ "-DBLUETOOTH_ENABLE" ]
523    external_deps += [ "bluetooth:btframework" ]
524  }
525
526  if (multimedia_av_session_enable_trace_control) {
527    cflags += [ "-DENBABLE_AVSESSION_TRACE_CONTROL" ]
528    external_deps += [ "hitrace:hitrace_meter" ]
529  }
530  if (multimedia_av_session_enable_sysevent_control) {
531    cflags += [ "-DENABLE_AVSESSION_SYSEVENT_CONTROL" ]
532    external_deps += [ "hisysevent:libhisysevent" ]
533  }
534
535  if (multimedia_av_session_enable_hicollie) {
536    external_deps += [ "hicollie:libhicollie" ]
537    defines += [ "HICOLLIE_ENABLE" ]
538  }
539
540  if (efficiency_manager_enable_in_avsession) {
541    cflags += [ "-DEFFICIENCY_MANAGER_ENABLE" ]
542  }
543
544  if (use_libfuzzer || use_clang_coverage) {
545    defines += [ "TEST_COVERAGE" ]
546  }
547
548  public_external_deps = [
549    "data_object:distributeddataobject_impl",
550    "jsoncpp:jsoncpp",
551    "openssl:libcrypto_shared",
552    "relational_store:native_rdb",
553  ]
554
555  subsystem_name = "multimedia"
556  part_name = "av_session"
557  version_script = "avsession_item.versionscript"
558}
559
560av_session_ohos_library("avsession_cast_item") {
561  install_enable = true
562  sanitize = {
563    boundary_sanitize = true
564    cfi = true
565    cfi_cross_dso = true
566    debug = false
567    integer_overflow = true
568    ubsan = true
569  }
570  ipc_sources = [
571    "ipc/proxy/avcast_controller_callback_proxy.cpp",
572    "ipc/stub/avcast_controller_stub.cpp",
573  ]
574
575  service_sources = [ "server/avcast_controller_item.cpp" ]
576
577  adapter_sources = [
578    "adapter/bundle_status_adapter.cpp",
579    "adapter/session_xcollie.cpp",
580  ]
581
582  sources = ipc_sources + adapter_sources + service_sources
583
584  include_dirs = [
585    "./../../frameworks/native/session/include",
586    "./../../interfaces/inner_api/native/session/include",
587    "./ipc/base",
588    "./ipc/proxy",
589    "./ipc/stub",
590    "./adapter",
591    "./server",
592    "./server/remote",
593  ]
594
595  cflags = [
596    "-fPIC",
597    "-fdata-sections",
598    "-ffunction-sections",
599    "-fstack-protector-strong",
600    "-fno-asynchronous-unwind-tables",
601    "-fno-unwind-tables",
602    "-Os",
603  ]
604
605  if (multimedia_av_session_enable_background_audio_control) {
606    cflags += [ "-DENABLE_BACKGROUND_AUDIO_CONTROL" ]
607  }
608
609  if (!use_libfuzzer) {
610    cflags += [ "-flto" ]
611    ldflags = [
612      "-flto",
613      "-Wl,--gc-sections",
614    ]
615  }
616  cflags_cc = cflags
617  cflags_cc += [ "-fvisibility-inlines-hidden" ]
618
619  defines = []
620  if (target_cpu == "arm64" || is_emulator) {
621    system_lib_path = "\"/system/lib64/\""
622  } else {
623    system_lib_path = "\"/system/lib/\""
624  }
625  defines += [ "SYSTEM_LIB_PATH = ${system_lib_path}" ]
626
627  deps = [
628    "../../frameworks/common:avsession_common",
629    "../../utils:avsession_utils",
630  ]
631
632  external_deps = [
633    "ability_base:base",
634    "ability_base:want",
635    "ability_runtime:app_manager",
636    "ability_runtime:wantagent_innerkits",
637    "access_token:libaccesstoken_sdk",
638    "access_token:libtokenid_sdk",
639    "audio_framework:audio_client",
640    "bundle_framework:appexecfwk_base",
641    "bundle_framework:appexecfwk_core",
642    "c_utils:utils",
643    "data_object:distributeddataobject_impl",
644    "device_manager:devicemanagersdk",
645    "graphic_surface:surface",
646    "hilog:libhilog",
647    "input:libmmi-client",
648    "ipc:ipc_single",
649    "safwk:system_ability_fwk",
650    "samgr:samgr_proxy",
651  ]
652
653  if (castplus_cast_engine_enable) {
654    cflags += [ "-DCASTPLUS_CAST_ENGINE_ENABLE" ]
655    external_deps += [ "cast_engine:cast_engine_client" ]
656    deps += [ "./../session:avsession_router" ]
657  }
658
659  if (multimedia_av_session_enable_trace_control) {
660    cflags += [ "-DENBABLE_AVSESSION_TRACE_CONTROL" ]
661    external_deps += [ "hitrace:hitrace_meter" ]
662  }
663  if (multimedia_av_session_enable_sysevent_control) {
664    cflags += [ "-DENABLE_AVSESSION_SYSEVENT_CONTROL" ]
665    external_deps += [ "hisysevent:libhisysevent" ]
666  }
667
668  if (multimedia_av_session_enable_hicollie) {
669    external_deps += [ "hicollie:libhicollie" ]
670    defines += [ "HICOLLIE_ENABLE" ]
671  }
672
673  public_external_deps = [
674    "jsoncpp:jsoncpp",
675    "openssl:libcrypto_shared",
676  ]
677
678  subsystem_name = "multimedia"
679  part_name = "av_session"
680  version_script = "avsession_cast_item.versionscript"
681}
682