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