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