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