1# Copyright (C) 2021-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.
13
14import("//build/ohos.gni")
15import("//foundation/multimedia/media_library/media_library.gni")
16
17ohos_prebuilt_etc("userfilemanager_mimetypes.json") {
18  module_install_dir = "etc/userfilemanager"
19
20  source = "${MEDIALIB_UTILS_PATH}/configs/userfilemanager_mimetypes.json"
21
22  subsystem_name = "multimedia"
23  part_name = "media_library"
24}
25
26config("media_data_extension_public_config") {
27  include_fileext = [ "${MEDIALIB_SERVICES_PATH}/media_file_extension/include" ]
28  include_distributed = [
29    "${MEDIALIB_SERVICES_PATH}/media_distributed/include/database_manage",
30    "${MEDIALIB_SERVICES_PATH}/media_distributed/include/device_manage",
31    "${MEDIALIB_SERVICES_PATH}/media_distributed/include/devices_info_interact",
32  ]
33  include_scanner = [
34    "${MEDIALIB_SERVICES_PATH}/media_scanner/include/callback",
35    "${MEDIALIB_SERVICES_PATH}/media_scanner/include/scanner",
36  ]
37
38  include_multistages_capture = [
39    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/include",
40    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/include/deferred_processing",
41    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/include/dfx",
42    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/include/utils",
43  ]
44
45  include_dfx = [ "${MEDIALIB_SERVICES_PATH}/media_dfx/include" ]
46
47  include_cloud_enhancement = [
48    "${MEDIALIB_SERVICES_PATH}/media_cloud_enhancement/include",
49    "${MEDIALIB_SERVICES_PATH}/media_cloud_enhancement/include/enhancement_service",
50    "${MEDIALIB_SERVICES_PATH}/media_cloud_enhancement/include/utils",
51    "${MEDIALIB_SERVICES_PATH}/media_cloud_enhancement/include/dfx",
52  ]
53
54  include_dirs = [
55    "${MEDIALIB_INTERFACES_PATH}/innerkits/native/include",
56    "${MEDIALIB_INTERFACES_PATH}/inner_api/media_library_helper/include",
57    "${MEDIALIB_INNERKITS_PATH}/media_library_helper/include",
58    "${MEDIALIB_UTILS_PATH}/include",
59    "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include/config",
60    "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include/event_handler",
61    "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include/operation",
62    "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include",
63    "${MEDIALIB_SERVICES_PATH}/media_analysis_extension/include",
64    "${MEDIALIB_SERVICES_PATH}/media_async_worker/include",
65    "${MEDIALIB_SERVICES_PATH}/media_thumbnail/include",
66    "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/include",
67    "${MEDIALIB_SERVICES_PATH}/media_permission/include",
68
69    "../../../../../bundlemanager/bundle_framework/interfaces/kits/js/common",
70  ]
71  include_dirs += include_fileext
72  include_dirs += include_distributed
73  include_dirs += include_scanner
74  include_dirs += include_multistages_capture
75  include_dirs += include_dfx
76  include_dirs += include_cloud_enhancement
77
78  if (defined(global_parts_info) &&
79      defined(
80          global_parts_info.device_cloud_gateway_media_cloud_enhance_service)) {
81    include_dirs += [ "${MEDIALIB_CLOUD_ENHANCEMENT_SERVICE_PATH}/interfaces/inner_api/include/c_api" ]
82  }
83
84  ldflags = [ "-Wl,--gc-sections" ]
85
86  cflags = [
87    "-fvisibility=hidden",
88    "-fdata-sections",
89    "-ffunction-sections",
90    "-Os",
91  ]
92
93  cflags_cc = [
94    "-fvisibility-inlines-hidden",
95    "-Os",
96  ]
97
98  if (target_cpu == "arm") {
99    cflags += [ "-DBINDER_IPC_32BIT" ]
100  }
101}
102
103ohos_hap("medialibrary_ext_hap") {
104  hap_profile = "MediaLibraryExt/entry/src/main/module.json"
105  deps = [
106    ":MediaLibStage_js_assets",
107    ":MediaLibStage_resources",
108  ]
109  shared_libraries = [ "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension:medialibrary_data_extension" ]
110  certificate_profile = "${MEDIALIB_INNERKITS_PATH}/signature/medialib.p7b"
111  hap_name = "Media_Library_Ext"
112  part_name = "prebuilt_hap"
113  subsystem_name = "applications"
114  module_install_dir = "app/com.ohos.medialibrary.MediaLibraryData"
115  publicity_file = "../../../publicity.xml"
116  if (defined(sign_hap_py_path)) {
117    certificate_profile =
118        "${MEDIALIB_INNERKITS_PATH}/signature/medialib_new.p7b"
119    key_alias = "medialibrarydata"
120    private_key_path = "medialibrarydata"
121    compatible_version = "9"
122  }
123}
124
125ohos_js_assets("MediaLibStage_js_assets") {
126  hap_profile = "MediaLibraryExt/entry/src/main/module.json"
127  ets2abc = true
128  source_dir = "MediaLibraryExt/entry/src/main/ets"
129}
130
131ohos_app_scope("MediaLibStage_app_profile") {
132  app_profile = "MediaLibraryExt/AppScope/app.json"
133  sources = [ "MediaLibraryExt/AppScope/resources" ]
134}
135
136ohos_resources("MediaLibStage_resources") {
137  sources = [ "MediaLibraryExt/entry/src/main/resources" ]
138  deps = [ ":MediaLibStage_app_profile" ]
139  hap_profile = "MediaLibraryExt/entry/src/main/module.json"
140}
141
142ohos_shared_library("medialibrary_data_extension") {
143  install_enable = true
144
145  media_scan_source = [
146    "${MEDIALIB_SERVICES_PATH}/media_scanner/src/scanner/media_scan_executor.cpp",
147    "${MEDIALIB_SERVICES_PATH}/media_scanner/src/scanner/media_scanner.cpp",
148    "${MEDIALIB_SERVICES_PATH}/media_scanner/src/scanner/media_scanner_manager.cpp",
149    "${MEDIALIB_SERVICES_PATH}/media_scanner/src/scanner/media_scanner_db.cpp",
150    "${MEDIALIB_SERVICES_PATH}/media_scanner/src/scanner/metadata.cpp",
151    "${MEDIALIB_SERVICES_PATH}/media_scanner/src/scanner/metadata_extractor.cpp",
152    "${MEDIALIB_SERVICES_PATH}/media_scanner/src/scanner/scanner_utils.cpp",
153  ]
154
155  media_thumbnail_source = [
156    "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/cloud_thumbnail_observer.cpp",
157    "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/ithumbnail_helper.cpp",
158    "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/thumbnail_aging_helper.cpp",
159    "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/thumbnail_generate_helper.cpp",
160    "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/thumbnail_generate_worker.cpp",
161    "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/thumbnail_generate_worker_manager.cpp",
162    "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/thumbnail_service.cpp",
163    "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/thumbnail_source_loading.cpp",
164    "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/thumbnail_uri_utils.cpp",
165    "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/thumbnail_utils.cpp",
166  ]
167
168  media_cloud_sync_source = [
169    "${MEDIALIB_CLOUD_SYNC_PATH}/src/cloud_sync_helper.cpp",
170    "${MEDIALIB_CLOUD_SYNC_PATH}/src/cloud_sync_switch_observer.cpp",
171  ]
172
173  media_rdb_utils_source = [
174    "src/medialibrary_rdb_utils.cpp",
175    "src/medialibrary_rdb_transaction.cpp",
176  ]
177
178  media_multistages_capture_source = [
179    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/deferred_processing/deferred_photo_proc_adapter.cpp",
180    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/deferred_processing/deferred_video_proc_adapter.cpp",
181    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/dfx/multistages_capture_dfx_first_visit.cpp",
182    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/dfx/multistages_capture_dfx_request_policy.cpp",
183    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/dfx/multistages_capture_dfx_result.cpp",
184    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/dfx/multistages_capture_dfx_total_time.cpp",
185    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/dfx/multistages_capture_dfx_trigger_ratio.cpp",
186    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/utils/database_adapter.cpp",
187    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/utils/exif_utils.cpp",
188    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/utils/file_utils.cpp",
189    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/utils/multistages_capture_request_task_manager.cpp",
190    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/multistages_capture_manager.cpp",
191    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/multistages_photo_capture_manager.cpp",
192    "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/multistages_video_capture_manager.cpp",
193  ]
194
195  media_dfx_source = [
196    "${MEDIALIB_SERVICES_PATH}/media_dfx/src/dfx_analyzer.cpp",
197    "${MEDIALIB_SERVICES_PATH}/media_dfx/src/dfx_collector.cpp",
198    "${MEDIALIB_SERVICES_PATH}/media_dfx/src/dfx_manager.cpp",
199    "${MEDIALIB_SERVICES_PATH}/media_dfx/src/dfx_reporter.cpp",
200    "${MEDIALIB_SERVICES_PATH}/media_dfx/src/dfx_timer.cpp",
201    "${MEDIALIB_SERVICES_PATH}/media_dfx/src/dfx_worker.cpp",
202    "${MEDIALIB_SERVICES_PATH}/media_dfx/src/dfx_utils.cpp",
203    "${MEDIALIB_SERVICES_PATH}/media_dfx/src/dfx_database_utils.cpp",
204  ]
205
206  media_cloud_sync_notify_handle_source = [
207    "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/src/analysis_handler.cpp",
208    "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/src/uri_convert_handler.cpp",
209    "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/src/notify_handler.cpp",
210    "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/src/cloud_sync_observer.cpp",
211    "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/src/cloud_sync_notify_handler.cpp",
212    "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/src/notify_responsibility_chain_factory.cpp",
213  ]
214
215  media_permission_source = [
216    "${MEDIALIB_SERVICES_PATH}/media_permission/src/abs_permission_handler.cpp",
217    "${MEDIALIB_SERVICES_PATH}/media_permission/src/db_permission_handler.cpp",
218    "${MEDIALIB_SERVICES_PATH}/media_permission/src/grant_permission_handler.cpp",
219    "${MEDIALIB_SERVICES_PATH}/media_permission/src/media_tool_permission_handler.cpp",
220    "${MEDIALIB_SERVICES_PATH}/media_permission/src/pemission_common.cpp",
221    "${MEDIALIB_SERVICES_PATH}/media_permission/src/read_write_permission_handler.cpp",
222  ]
223
224  media_cloud_enhancement_source = [
225    "${MEDIALIB_SERVICES_PATH}/media_cloud_enhancement/src/enhancement_service/enhancement_service_adapter.cpp",
226    "${MEDIALIB_SERVICES_PATH}/media_cloud_enhancement/src/utils/enhancement_database_operations.cpp",
227    "${MEDIALIB_SERVICES_PATH}/media_cloud_enhancement/src/utils/dynamic_loader.cpp",
228    "${MEDIALIB_SERVICES_PATH}/media_cloud_enhancement/src/utils/enhancement_thread_manager.cpp",
229    "${MEDIALIB_SERVICES_PATH}/media_cloud_enhancement/src/enhancement_task_manager.cpp",
230    "${MEDIALIB_SERVICES_PATH}/media_cloud_enhancement/src/enhancement_manager.cpp",
231    "${MEDIALIB_SERVICES_PATH}/media_cloud_enhancement/src/dfx/cloud_enhancement_dfx_get_count.cpp",
232  ]
233
234  sources = [
235    "${MEDIALIB_SERVICES_PATH}/media_analysis_extension/src/media_analysis_callback_stub.cpp",
236    "${MEDIALIB_SERVICES_PATH}/media_analysis_extension/src/media_analysis_helper.cpp",
237    "${MEDIALIB_SERVICES_PATH}/media_analysis_extension/src/media_analysis_proxy.cpp",
238    "${MEDIALIB_UTILS_PATH}/src/cpu_utils.cpp",
239    "${MEDIALIB_UTILS_PATH}/src/media_privacy_manager.cpp",
240    "src/background_cloud_file_processor.cpp",
241    "src/event_handler/album_plugin_table_event_handler.cpp",
242    "src/event_handler/tab_old_photos_table_event_handler.cpp",
243    "src/hi_audit.cpp",
244    "src/media_datashare_ext_ability.cpp",
245    "src/media_datashare_stub_impl.cpp",
246    "src/medialibrary_album_fusion_utils.cpp",
247    "src/medialibrary_album_operations.cpp",
248    "src/medialibrary_album_refresh.cpp",
249    "src/medialibrary_analysis_album_operations.cpp",
250    "src/medialibrary_app_uri_permission_operations.cpp",
251    "src/medialibrary_app_uri_sensitive_operations.cpp",
252    "src/medialibrary_appstate_observer.cpp",
253    "src/medialibrary_asset_operations.cpp",
254    "src/medialibrary_audio_operations.cpp",
255    "src/medialibrary_bundle_manager.cpp",
256    "src/medialibrary_command.cpp",
257    "src/medialibrary_data_manager.cpp",
258    "src/medialibrary_data_manager_utils.cpp",
259    "src/medialibrary_dir_operations.cpp",
260    "src/medialibrary_file_operations.cpp",
261    "src/medialibrary_formmap_operations.cpp",
262    "src/medialibrary_inotify.cpp",
263    "src/medialibrary_location_operations.cpp",
264    "src/medialibrary_meta_recovery.cpp",
265    "src/medialibrary_notify.cpp",
266    "src/medialibrary_object_utils.cpp",
267    "src/medialibrary_photo_operations.cpp",
268    "src/medialibrary_rdbstore.cpp",
269    "src/medialibrary_restore.cpp",
270    "src/medialibrary_search_operations.cpp",
271    "src/medialibrary_smartalbum_map_operations.cpp",
272    "src/medialibrary_smartalbum_operations.cpp",
273    "src/medialibrary_story_operations.cpp",
274    "src/medialibrary_subscriber.cpp",
275    "src/medialibrary_tab_old_photos_operations.cpp",
276    "src/medialibrary_uripermission_operations.cpp",
277    "src/medialibrary_urisensitive_operations.cpp",
278    "src/medialibrary_vision_operations.cpp",
279    "src/moving_photo_processor.cpp",
280    "src/operation/photo_burst_operation.cpp",
281    "src/operation/photo_file_operation.cpp",
282    "src/photo_map_operations.cpp",
283    "src/picture_data_operations.cpp",
284    "src/picture_handle_service.cpp",
285    "src/picture_manager_thread.cpp",
286    "src/trash_async_worker.cpp",
287    "src/zip_util.cpp",
288  ]
289  sources += media_scan_source
290  sources += media_thumbnail_source
291  sources += media_cloud_sync_source
292  sources += media_rdb_utils_source
293  sources += media_multistages_capture_source
294  sources += media_dfx_source
295  sources += media_cloud_sync_notify_handle_source
296  sources += media_permission_source
297  sources += media_cloud_enhancement_source
298
299  public_configs = [ ":media_data_extension_public_config" ]
300
301  deps = [
302    "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library",
303    "${MEDIALIB_SERVICES_PATH}/media_async_worker:medialibrary_async_worker",
304    "${MEDIALIB_UTILS_PATH}:medialibrary_common_utils",
305    "${MEDIALIB_UTILS_PATH}:permission_utils",
306    "${MEDIALIB_UTILS_PATH}:post_event_utils",
307  ]
308
309  include_dirs = [
310    "${MEDIALIB_CLOUD_SYNC_PATH}/include",
311    "${MEDIALIB_SERVICES_PATH}/media_async_worker/include",
312  ]
313
314  external_deps = [
315    "ability_base:want",
316    "ability_base:zuri",
317    "ability_runtime:ability_manager",
318    "ability_runtime:app_context",
319    "ability_runtime:app_manager",
320    "ability_runtime:dataobs_manager",
321    "ability_runtime:extensionkit_native",
322    "ability_runtime:runtime",
323    "ability_runtime:uri_permission_mgr",
324    "access_token:libaccesstoken_sdk",
325    "access_token:libprivacy_sdk",
326    "app_file_service:sandbox_helper_native",
327    "background_task_mgr:bgtaskmgr_innerkits",
328    "bundle_framework:appexecfwk_core",
329    "c_utils:utils",
330    "common_event_service:cesfwk_innerkits",
331    "data_share:datashare_common",
332    "data_share:datashare_consumer",
333    "data_share:datashare_provider",
334    "dfs_service:cloudsync_kit_inner",
335    "eventhandler:libeventhandler",
336    "ffrt:libffrt",
337    "file_api:filemgmt_libn",
338    "hilog:libhilog",
339    "hitrace:hitrace_meter",
340    "image_framework:image_native",
341    "init:libbegetutil",
342    "ipc:ipc_core",
343    "ipc:ipc_single",
344    "kv_store:distributeddata_inner",
345    "libexif:libexif",
346    "napi:ace_napi",
347    "os_account:os_account_innerkits",
348    "player_framework:media_client",
349    "preferences:native_preferences",
350    "relational_store:native_rdb",
351    "relational_store:rdb_data_share_adapter",
352    "safwk:system_ability_fwk",
353    "samgr:samgr_proxy",
354    "window_manager:libdm",
355    "zlib:shared_libz",
356  ]
357
358  public_external_deps = [ "e2fsprogs:libext2_uuid" ]
359
360  defines = []
361  if (defined(global_parts_info) &&
362      defined(global_parts_info.filemanagement_dfs_service)) {
363    defines += [ "CLOUD_SYNC_MANAGER" ]
364    external_deps += [ "dfs_service:cloudsync_kit_inner" ]
365  }
366  defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ]
367  if (defined(medialibrary_mtp_enable)) {
368    defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ]
369  }
370  defines += [ "META_RECOVERY_SUPPORT=1" ]
371
372  if (!defined(global_parts_info) ||
373      defined(global_parts_info.security_security_component_manager)) {
374    defines += [ "MEDIALIBRARY_SECURITY_OPEN=1" ]
375    external_deps += [ "security_component_manager:libsecurity_component_sdk" ]
376  }
377
378  if (defined(global_parts_info) &&
379      defined(
380          global_parts_info.device_cloud_gateway_media_cloud_enhance_service)) {
381    defines += [ "ABILITY_CLOUD_ENHANCEMENT_SUPPORT" ]
382    sources += [ "${MEDIALIB_SERVICES_PATH}/media_cloud_enhancement/src/enhancement_service/enhancement_service_callback.cpp" ]
383  }
384
385  if (defined(global_parts_info) &&
386      defined(global_parts_info.multimedia_camera_framework) &&
387      global_parts_info.multimedia_camera_framework) {
388    defines += [ "ABILITY_CAMERA_SUPPORT" ]
389    external_deps += [ "camera_framework:camera_framework" ]
390    sources += [
391      "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/deferred_processing/multistages_capture_deferred_photo_proc_session_callback.cpp",
392      "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/deferred_processing/multistages_capture_deferred_video_proc_session_callback.cpp",
393    ]
394  }
395
396  if (!media_library_link_opt) {
397    sanitize = {
398      cfi = true
399      cfi_cross_dso = true
400      debug = false
401      integer_overflow = true
402      ubsan = true
403      boundary_sanitize = true
404      stack_protector_ret = true
405    }
406  }
407
408  cflags_cc = [
409    "-fvisibility-inlines-hidden",
410    "-Os",
411  ]
412
413  if (defined(global_parts_info) &&
414      defined(global_parts_info.powermgr_battery_manager)) {
415    external_deps += [ "battery_manager:batterysrv_client" ]
416    cflags_cc += [ "-DHAS_BATTERY_MANAGER_PART" ]
417  }
418
419  if (defined(global_parts_info) &&
420      defined(global_parts_info.powermgr_power_manager)) {
421    external_deps += [ "power_manager:powermgr_client" ]
422    cflags_cc += [ "-DHAS_POWER_MANAGER_PART" ]
423  }
424
425  if (defined(global_parts_info) &&
426      defined(global_parts_info.powermgr_thermal_manager)) {
427    external_deps += [ "thermal_manager:thermalsrv_client" ]
428    cflags_cc += [ "-DHAS_THERMAL_MANAGER_PART" ]
429  }
430
431  if (defined(global_parts_info) &&
432      defined(global_parts_info.communication_wifi)) {
433    external_deps += [ "wifi:wifi_sdk" ]
434    cflags_cc += [ "-DHAS_WIFI_MANAGER_PART" ]
435  }
436
437  subsystem_name = "multimedia"
438  part_name = "media_library"
439}
440