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. 13import("//build/config/components/ets_frontend/es2abc_config.gni") 14import("//build/config/components/memory_utils/purgeable_mem_config.gni") 15import("//build/ohos.gni") 16import("//build/ohos/ace/ace.gni") 17import("//build/templates/abc/ohos_abc.gni") 18import("//foundation/multimedia/media_library/media_library.gni") 19 20js_declaration("medialibrary_js") { 21 part_name = "media_library" 22 sources = [ "./@ohos.multimedia.mediaLibrary.d.ts" ] 23} 24 25# compile .js to .abc. 26 27 28es2abc_gen_abc("gen_medialibraryinf_abc") { 29 src_js = rebase_path("${MEDIALIB_JS_PATH}/src/medialibraryinf.js") 30 dst_file = rebase_path(target_out_dir + "/medialibraryinf.abc") 31 in_puts = [ "${MEDIALIB_JS_PATH}/src/medialibraryinf.js" ] 32 out_puts = [ target_out_dir + "/medialibraryinf.abc" ] 33 extra_args = [ "--module" ] 34} 35 36base_output_path = get_label_info(":medialibraryinf_js", "target_out_dir") 37medialibraryinf_obj_path = base_output_path + "/medialibraryinf.o" 38gen_js_obj("medialibraryinf_js") { 39 input = "${MEDIALIB_JS_PATH}/src/medialibraryinf.js" 40 output = medialibraryinf_obj_path 41 dep = ":gen_medialibraryinf_abc" 42} 43 44abc_output_path = get_label_info(":medialibraryinf_abc", "target_out_dir") 45medialibraryinf_abc_obj_path = abc_output_path + "/medialibraryinf_abc.o" 46gen_js_obj("medialibraryinf_abc") { 47 input = "$target_out_dir/medialibraryinf.abc" 48 output = medialibraryinf_abc_obj_path 49 dep = ":gen_medialibraryinf_abc" 50} 51 52config("napi_config") { 53 include_dirs = [ 54 "${MEDIALIB_ACCURATE_REFRESH_PATH}/include", 55 "${MEDIALIB_NEW_SERVICES_PATH}/media_notification/include/accurate_refresh", 56 "${MEDIALIB_NEW_SERVICES_PATH}/media_notification/include/data", 57 "${MEDIALIB_NEW_SERVICES_PATH}/media_notification/include/utils", 58 "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include", 59 "${MEDIALIB_INNERKITS_PATH}/media_library_helper/include", 60 "${MEDIALIB_SERVICES_PATH}/media_dfx/include", 61 "${MEDIALIB_SERVICES_PATH}/media_scanner/include/callback", 62 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/include", 63 "${MEDIALIB_SERVICES_PATH}/media_analysis_extension/include", 64 "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/include", 65 "${MEDIALIB_SERVICES_PATH}/media_async_worker/include", 66 "${MEDIALIB_UTILS_PATH}/include", 67 "${MEDIALIB_INTERFACES_PATH}/inner_api/media_library_helper/include", 68 "${MEDIALIB_INTERFACES_PATH}/kits/js/include", 69 "${MEDIALIB_INTERFACES_PATH}/innerkits/native/include", 70 "${MEDIALIB_UTILS_PATH}/include", 71 "${MEDIALIB_SERVICES_PATH}/media_library/include", 72 "${MEDIALIB_SERVICES_PATH}/media_cloud_sync/include/media_cloud_asset_download", 73 "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include/ipc", 74 "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include/ipc/util", 75 "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include/ipc/vo", 76 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/include/vo", 77 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/include/vo", 78 ] 79 80 if (media_library_feature_mtp) { 81 include_dirs += [ "${MEDIALIB_MTP_PATH}/include" ] 82 } 83 84 if (defined(global_parts_info) && 85 defined( 86 global_parts_info.device_cloud_gateway_media_cloud_enhance_service)) { 87 include_dirs += [ "${MEDIALIB_CLOUD_ENHANCEMENT_SERVICE_PATH}/interfaces/inner_api/include/c_api" ] 88 } 89 90 ldflags = [ "-Wl,--gc-sections" ] 91 92 cflags = [ 93 "-fvisibility=hidden", 94 "-fdata-sections", 95 "-ffunction-sections", 96 "-Os", 97 ] 98 99 cflags_cc = [ 100 "-fvisibility-inlines-hidden", 101 "-Os", 102 ] 103} 104 105config("napi_config_photoaccesshelpernative") { 106 include_dirs = [ 107 "${MEDIALIB_ACCURATE_REFRESH_PATH}/include", 108 "${MEDIALIB_NEW_SERVICES_PATH}/media_notification/include/data", 109 "${MEDIALIB_NEW_SERVICES_PATH}/media_notification/include/utils", 110 "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include", 111 "${MEDIALIB_INNERKITS_PATH}/media_library_helper/include", 112 "${MEDIALIB_SERVICES_PATH}/media_dfx/include", 113 "${MEDIALIB_SERVICES_PATH}/media_scanner/include/callback", 114 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/include", 115 "${MEDIALIB_SERVICES_PATH}/media_analysis_extension/include", 116 "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/include", 117 "${MEDIALIB_SERVICES_PATH}/media_async_worker/include", 118 "${MEDIALIB_UTILS_PATH}/include", 119 "${MEDIALIB_INTERFACES_PATH}/inner_api/media_library_helper/include", 120 "${MEDIALIB_INTERFACES_PATH}/kits/js/include", 121 "${MEDIALIB_INTERFACES_PATH}/innerkits/native/include", 122 "${MEDIALIB_UTILS_PATH}/include", 123 "${MEDIALIB_SERVICES_PATH}/media_library/include", 124 "${MEDIALIB_SERVICES_PATH}/media_cloud_sync/include/media_cloud_asset_download", 125 ] 126 127 if (media_library_feature_mtp) { 128 include_dirs += [ "${MEDIALIB_MTP_PATH}/include" ] 129 } 130 131 ldflags = [ "-Wl,--gc-sections" ] 132 133 cflags = [ 134 "-fvisibility=hidden", 135 "-fdata-sections", 136 "-ffunction-sections", 137 "-Os", 138 ] 139 140 cflags_cc = [ 141 "-fvisibility-inlines-hidden", 142 "-Os", 143 ] 144} 145 146config("public_napi_config") { 147 include_dirs = [ 148 "${MEDIALIB_INTERFACES_PATH}/kits/js/include", 149 "${MEDIALIB_INTERFACES_PATH}/kits/js/include/napi", 150 ] 151} 152 153ohos_shared_library("medialibrary_nutils") { 154 public_configs = [ ":public_napi_config" ] 155 configs = [ ":napi_config" ] 156 sources = [ 157 "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/src/ipc/util/user_define_ipc_client.cpp", 158 "${MEDIALIB_JS_PATH}/src/album_napi.cpp", 159 "${MEDIALIB_JS_PATH}/src/album_order_napi.cpp", 160 "${MEDIALIB_JS_PATH}/src/result_set_napi.cpp", 161 "${MEDIALIB_JS_PATH}/src/cloud_enhancement_napi.cpp", 162 "${MEDIALIB_JS_PATH}/src/cloud_enhancement_task_state_napi.cpp", 163 "${MEDIALIB_JS_PATH}/src/cloud_media_asset_manager_napi.cpp", 164 "${MEDIALIB_JS_PATH}/src/cloud_media_asset_status_napi.cpp", 165 "${MEDIALIB_JS_PATH}/src/confirm_callback.cpp", 166 "${MEDIALIB_JS_PATH}/src/default_album_name_callback.cpp", 167 "${MEDIALIB_JS_PATH}/src/delete_callback.cpp", 168 "${MEDIALIB_JS_PATH}/src/fetch_file_result_napi.cpp", 169 "${MEDIALIB_JS_PATH}/src/file_asset_napi.cpp", 170 "${MEDIALIB_JS_PATH}/src/highlight_album_napi.cpp", 171 "${MEDIALIB_JS_PATH}/src/media_album_change_request_napi.cpp", 172 "${MEDIALIB_JS_PATH}/src/media_asset_change_request_napi.cpp", 173 "${MEDIALIB_JS_PATH}/src/media_asset_data_handler.cpp", 174 "${MEDIALIB_JS_PATH}/src/media_asset_edit_data_napi.cpp", 175 "${MEDIALIB_JS_PATH}/src/media_asset_manager_napi.cpp", 176 "${MEDIALIB_JS_PATH}/src/media_assets_change_request_napi.cpp", 177 "${MEDIALIB_JS_PATH}/src/media_call_transcode.cpp", 178 "${MEDIALIB_JS_PATH}/src/media_change_request_napi.cpp", 179 "${MEDIALIB_JS_PATH}/src/media_library_comm_napi.cpp", 180 "${MEDIALIB_JS_PATH}/src/media_library_napi.cpp", 181 "${MEDIALIB_JS_PATH}/src/media_scanner_napi.cpp", 182 "${MEDIALIB_JS_PATH}/src/medialibrary_napi_utils.cpp", 183 "${MEDIALIB_JS_PATH}/src/medialibrary_notify_new_observer.cpp", 184 "${MEDIALIB_JS_PATH}/src/medialibrary_notify_utils.cpp", 185 "${MEDIALIB_JS_PATH}/src/modal_ui_callback.cpp", 186 "${MEDIALIB_JS_PATH}/src/moving_photo_call_transcoder.cpp", 187 "${MEDIALIB_JS_PATH}/src/moving_photo_napi.cpp", 188 "${MEDIALIB_JS_PATH}/src/napi_error.cpp", 189 "${MEDIALIB_JS_PATH}/src/photo_album_napi.cpp", 190 "${MEDIALIB_JS_PATH}/src/photo_asset_custom_record_manager_napi.cpp", 191 "${MEDIALIB_JS_PATH}/src/photo_asset_custom_record_napi.cpp", 192 "${MEDIALIB_JS_PATH}/src/photo_proxy_napi.cpp", 193 "${MEDIALIB_JS_PATH}/src/picture_handle_client.cpp", 194 "${MEDIALIB_JS_PATH}/src/request_photo_uris_read_permission_callback.cpp", 195 "${MEDIALIB_JS_PATH}/src/short_term_callback.cpp", 196 "${MEDIALIB_JS_PATH}/src/smart_album_napi.cpp", 197 "${MEDIALIB_JS_PATH}/src/thumbnail_manager.cpp", 198 "${MEDIALIB_JS_PATH}/src/userfile_client.cpp", 199 "${MEDIALIB_NEW_SERVICES_PATH}/media_notification/src//utils/media_notification_utils.cpp", 200 "${MEDIALIB_UTILS_PATH}/src/media_itypes_utils.cpp", 201 ] 202 203 media_asset_service_vo_source = [ 204 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/commit_edited_asset_vo.cpp", 205 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/form_info_vo.cpp", 206 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/create_asset_vo.cpp", 207 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/clone_asset_vo.cpp", 208 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/convert_format_vo.cpp", 209 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/delete_photos_vo.cpp", 210 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/delete_photos_completed_vo.cpp", 211 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/asset_change_vo.cpp", 212 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/submit_cache_vo.cpp", 213 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/add_image_vo.cpp", 214 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/save_camera_photo_vo.cpp", 215 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/trash_photos_vo.cpp", 216 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/get_assets_vo.cpp", 217 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/get_index_construct_progress_vo.cpp", 218 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/revert_to_original_vo.cpp", 219 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/cloud_enhancement_vo.cpp", 220 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/modify_assets_vo.cpp", 221 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/retain_cloud_media_asset_vo.cpp", 222 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/start_download_cloud_media_vo.cpp", 223 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/grant_photo_uri_permission_vo.cpp", 224 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/grant_photo_uris_permission_vo.cpp", 225 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/cancel_photo_uri_permission_vo.cpp", 226 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/start_thumbnail_creation_task_vo.cpp", 227 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/stop_thumbnail_creation_task_vo.cpp", 228 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/get_asset_analysis_data_vo.cpp", 229 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/is_edited_vo.cpp", 230 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/request_edit_data_vo.cpp", 231 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/get_edit_data_vo.cpp", 232 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/start_asset_analysis_vo.cpp", 233 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/get_cloudmedia_asset_status_vo.cpp", 234 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/request_content_vo.cpp", 235 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/get_cloud_enhancement_pair_vo.cpp", 236 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/query_cloud_enhancement_task_state_vo.cpp", 237 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/query_photo_vo.cpp", 238 "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/adapted_vo.cpp", 239 ] 240 241 media_album_service_vo_source = [ 242 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/create_album_vo.cpp", 243 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/delete_albums_vo.cpp", 244 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/delete_highlight_albums_vo.cpp", 245 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_set_album_name_vo.cpp", 246 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_set_cover_uri_vo.cpp", 247 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_dismiss_vo.cpp", 248 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_set_display_level_vo.cpp", 249 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_set_is_me_vo.cpp", 250 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/set_highlight_user_action_data_vo.cpp", 251 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/set_subtitle_vo.cpp", 252 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_add_assets_vo.cpp", 253 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_remove_assets_vo.cpp", 254 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_move_assets_vo.cpp", 255 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_recover_assets_vo.cpp", 256 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_delete_assets_vo.cpp", 257 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_dismiss_assets_vo.cpp", 258 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_merge_album_vo.cpp", 259 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_place_before_vo.cpp", 260 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_set_order_position_vo.cpp", 261 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/album_commit_modify_vo.cpp", 262 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/album_add_assets_vo.cpp", 263 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/album_remove_assets_vo.cpp", 264 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/album_recover_assets_vo.cpp", 265 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/album_photo_query_vo.cpp", 266 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/album_get_assets_vo.cpp", 267 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/query_albums_vo.cpp", 268 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/get_albums_by_ids_vo.cpp", 269 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/get_order_position_vo.cpp", 270 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/get_face_id_vo.cpp", 271 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/get_analysis_process_vo.cpp", 272 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/get_highlight_album_info_vo.cpp", 273 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/get_photo_index_vo.cpp", 274 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/query_result_vo.cpp", 275 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/get_photo_album_object_vo.cpp", 276 "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/set_photo_album_order_vo.cpp", 277 ] 278 279 sources += media_asset_service_vo_source 280 sources += media_album_service_vo_source 281 282 deps = [ "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library" ] 283 284 external_deps = [ 285 "ability_base:want", 286 "ability_base:zuri", 287 "ability_runtime:ability_context_native", 288 "ability_runtime:ability_manager", 289 "ability_runtime:abilitykit_native", 290 "ability_runtime:app_context", 291 "ability_runtime:dataobs_manager", 292 "ability_runtime:extensionkit_native", 293 "ability_runtime:napi_base_context", 294 "ability_runtime:napi_common", 295 "ability_runtime:runtime", 296 "ability_runtime:service_extension", 297 "ability_runtime:ui_extension", 298 "access_token:libaccesstoken_sdk", 299 "access_token:libprivacy_sdk", 300 "access_token:libtokenid_sdk", 301 "app_file_service:fileuri_native", 302 "bundle_framework:appexecfwk_core", 303 "c_utils:utils", 304 "common_event_service:cesfwk_innerkits", 305 "data_share:datashare_common", 306 "data_share:datashare_consumer", 307 "e2fsprogs:libext2_uuid", 308 "hilog:libhilog", 309 "hitrace:hitrace_meter", 310 "i18n:intl_util", 311 "image_framework:image", 312 "image_framework:image_native", 313 "init:libbegetutil", 314 "ipc:ipc_core", 315 "ipc:ipc_single", 316 "ipc:rpc", 317 "ipc:ipc_napi", 318 "kv_store:distributeddata_inner", 319 "libexif:libexif", 320 "napi:ace_napi", 321 "player_framework:media_client", 322 "relational_store:native_rdb", 323 "relational_store:rdb_data_share_adapter", 324 "samgr:samgr_proxy", 325 "window_manager:libwm", 326 "e2fsprogs:libext2_uuid", 327 ] 328 329 defines = [] 330 defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] 331 if (media_library_feature_mtp) { 332 defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] 333 } 334 if (!media_library_link_opt) { 335 sanitize = { 336 cfi = true 337 cfi_cross_dso = true 338 debug = false 339 integer_overflow = true 340 ubsan = true 341 boundary_sanitize = true 342 stack_protector_ret = true 343 } 344 } 345 346 if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) && 347 defined(global_parts_info.resourceschedule_memmgr_override)) { 348 defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] 349 external_deps += [ 350 "ffrt:libffrt", 351 "memmgr_override:libpurgeablemem_plugin", 352 "memmgr_override:purgeable_pixelmap_builder", 353 ] 354 } 355 356 if (defined(global_parts_info) && 357 defined( 358 global_parts_info.device_cloud_gateway_media_cloud_enhance_service) && 359 !factory) { 360 defines += [ "ABILITY_CLOUD_ENHANCEMENT_SUPPORT" ] 361 } 362 363 if (defined(global_parts_info) && 364 defined(global_parts_info.multimedia_video_processing_engine)) { 365 defines += [ "USE_VIDEO_PROCESSING_ENGINE" ] 366 } 367 368 if (defined(global_parts_info) && 369 defined(global_parts_info.multimedia_video_processing_engine_ext)) { 370 defines += [ "USE_VIDEO_PROCESSING_ENGINE_EXT" ] 371 } 372 373 if (ability_runtime_graphics) { 374 external_deps += [ 375 "ace_engine:ace_uicontent", 376 "image_framework:image_native", 377 ] 378 cflags_cc = [ "-DHAS_ACE_ENGINE_PART" ] 379 } 380 381 if (media_library_device_manager_enabled) { 382 defines += [ "DM_DEVICE_INFO_ENABLE" ] 383 external_deps += [ "device_manager:devicemanagersdk" ] 384 } 385 386 innerapi_tags = [ "platformsdk" ] 387 subsystem_name = "multimedia" 388 part_name = "media_library" 389} 390 391ohos_shared_library("medialibrary") { 392 configs = [ 393 ":public_napi_config", 394 ":napi_config", 395 ] 396 397 version_script = "libmedialibrary.map" 398 399 sources = [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_medialibrary.cpp" ] 400 401 deps = [ 402 ":medialibrary_nutils", 403 ":medialibraryinf_abc", 404 ":medialibraryinf_js", 405 "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", 406 ] 407 408 external_deps = [ 409 "ability_base:want", 410 "ability_base:zuri", 411 "ability_runtime:ability_manager", 412 "ability_runtime:abilitykit_native", 413 "ability_runtime:napi_base_context", 414 "c_utils:utils", 415 "data_share:datashare_consumer", 416 "device_manager:devicemanagersdk", 417 "hilog:libhilog", 418 "i18n:intl_util", 419 "ipc:ipc_napi", 420 "ipc:ipc_single", 421 "napi:ace_napi", 422 "e2fsprogs:libext2_uuid", 423 ] 424 425 defines = [] 426 defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] 427 if (media_library_feature_mtp) { 428 defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] 429 } 430 if (defined(global_parts_info) && 431 defined(global_parts_info.open_source_libyuv)) { 432 defines += [ "EXT_PIXEL" ] 433 } 434 if (!media_library_link_opt) { 435 sanitize = { 436 cfi = true 437 cfi_cross_dso = true 438 debug = false 439 integer_overflow = true 440 ubsan = true 441 boundary_sanitize = true 442 stack_protector_ret = true 443 } 444 } 445 446 if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) && 447 defined(global_parts_info.resourceschedule_memmgr_override)) { 448 defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] 449 external_deps += [ 450 "memmgr_override:libpurgeablemem_plugin", 451 "memmgr_override:purgeable_pixelmap_builder", 452 ] 453 } 454 455 if (ability_runtime_graphics) { 456 external_deps += [ "image_framework:image_native" ] 457 } 458 459 relative_install_dir = "module/multimedia" 460 subsystem_name = "multimedia" 461 part_name = "media_library" 462} 463 464ohos_shared_library("userfilemanager") { 465 configs = [ 466 ":public_napi_config", 467 ":napi_config", 468 ] 469 470 sources = 471 [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_userfile_manager.cpp" ] 472 473 deps = [ 474 ":medialibrary_nutils", 475 "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", 476 ] 477 478 external_deps = [ 479 "ability_base:want", 480 "ability_base:zuri", 481 "ability_runtime:ability_manager", 482 "ability_runtime:abilitykit_native", 483 "ability_runtime:napi_base_context", 484 "c_utils:utils", 485 "data_share:datashare_consumer", 486 "device_manager:devicemanagersdk", 487 "hilog:libhilog", 488 "i18n:intl_util", 489 "ipc:ipc_napi", 490 "ipc:ipc_single", 491 "napi:ace_napi", 492 "e2fsprogs:libext2_uuid", 493 ] 494 495 defines = [] 496 defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] 497 if (media_library_feature_mtp) { 498 defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] 499 } 500 if (!media_library_link_opt) { 501 sanitize = { 502 cfi = true 503 cfi_cross_dso = true 504 debug = false 505 integer_overflow = true 506 ubsan = true 507 boundary_sanitize = true 508 stack_protector_ret = true 509 } 510 } 511 512 if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) && 513 defined(global_parts_info.resourceschedule_memmgr_override)) { 514 defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] 515 external_deps += [ 516 "memmgr_override:libpurgeablemem_plugin", 517 "memmgr_override:purgeable_pixelmap_builder", 518 ] 519 } 520 521 if (ability_runtime_graphics) { 522 external_deps += [ "image_framework:image_native" ] 523 } 524 525 relative_install_dir = "module/filemanagement" 526 subsystem_name = "multimedia" 527 part_name = "media_library" 528} 529 530ohos_abc("photoaccesshelper") { 531 sources = [ "${MEDIALIB_JS_PATH}/src/photoaccesshelperinf.js" ] 532 output_name = "photoaccesshelper" 533 install_images = [ "system" ] 534 module_install_dir = "etc/abc/file" 535 subsystem_name = "multimedia" 536 part_name = "media_library" 537} 538 539ohos_shared_library("photoaccesshelpernative") { 540 configs = [ 541 ":public_napi_config", 542 ":napi_config_photoaccesshelpernative", 543 ] 544 545 sources = 546 [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_photoaccess_helper.cpp" ] 547 548 deps = [ 549 ":medialibrary_nutils", 550 "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", 551 ] 552 553 external_deps = [ 554 "ability_base:want", 555 "ability_base:zuri", 556 "ability_runtime:ability_manager", 557 "ability_runtime:abilitykit_native", 558 "ability_runtime:napi_base_context", 559 "c_utils:utils", 560 "data_share:datashare_common", 561 "data_share:datashare_consumer", 562 "e2fsprogs:libext2_blkid", 563 "hilog:libhilog", 564 "i18n:intl_util", 565 "ipc:ipc_napi", 566 "napi:ace_napi", 567 "player_framework:media_client", 568 ] 569 570 defines = [] 571 defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] 572 if (media_library_feature_mtp) { 573 defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] 574 } 575 if (!media_library_link_opt) { 576 sanitize = { 577 cfi = true 578 cfi_cross_dso = true 579 debug = false 580 integer_overflow = true 581 ubsan = true 582 boundary_sanitize = true 583 stack_protector_ret = true 584 } 585 } 586 587 if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) && 588 defined(global_parts_info.resourceschedule_memmgr_override)) { 589 defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] 590 external_deps += [ 591 "memmgr_override:libpurgeablemem_plugin", 592 "memmgr_override:purgeable_pixelmap_builder", 593 ] 594 } 595 596 if (ability_runtime_graphics) { 597 external_deps += [ "image_framework:image_native" ] 598 } 599 600 relative_install_dir = "module/file" 601 subsystem_name = "multimedia" 602 part_name = "media_library" 603} 604 605js_declaration("photopickercomponent_js") { 606 part_name = "media_library" 607 sources = [ "./@ohos.file.PhotoPickerComponent.d.ets" ] 608} 609 610# compile .js to .abc. 611es2abc_gen_abc("gen_photopickercomponent_abc") { 612 src_js = rebase_path("${MEDIALIB_JS_PATH}/src/photopickercomponent.js") 613 dst_file = rebase_path(target_out_dir + "/photopickercomponent.abc") 614 in_puts = [ "${MEDIALIB_JS_PATH}/src/photopickercomponent.js" ] 615 out_puts = [ target_out_dir + "/photopickercomponent.abc" ] 616 extra_args = [ "--module" ] 617} 618 619abc_output_path = get_label_info(":photopickercomponent_abc", "target_out_dir") 620photopickercomponent_abc_obj_path = 621 abc_output_path + "/photopickercomponent_abc.o" 622gen_js_obj("photopickercomponent_abc") { 623 input = "$target_out_dir/photopickercomponent.abc" 624 output = photopickercomponent_abc_obj_path 625 dep = ":gen_photopickercomponent_abc" 626} 627 628ohos_shared_library("photopickercomponent") { 629 sources = [ "${MEDIALIB_JS_PATH}/src/photopickercomponent.cpp" ] 630 631 deps = [ ":photopickercomponent_abc" ] 632 633 external_deps = [ 634 "hilog:libhilog", 635 "napi:ace_napi", 636 ] 637 638 if (!media_library_link_opt) { 639 sanitize = { 640 cfi = true 641 cfi_cross_dso = true 642 debug = false 643 integer_overflow = true 644 ubsan = true 645 boundary_sanitize = true 646 stack_protector_ret = true 647 } 648 } 649 650 relative_install_dir = "module/file" 651 subsystem_name = "multimedia" 652 part_name = "media_library" 653} 654 655js_declaration("albumpickercomponent_js") { 656 part_name = "media_library" 657 sources = [ "./@ohos.file.AlbumPickerComponent.d.ets" ] 658} 659 660# compile .js to .abc. 661es2abc_gen_abc("gen_albumpickercomponent_abc") { 662 src_js = rebase_path("${MEDIALIB_JS_PATH}/src/albumpickercomponent.js") 663 dst_file = rebase_path(target_out_dir + "/albumpickercomponent.abc") 664 in_puts = [ "${MEDIALIB_JS_PATH}/src/albumpickercomponent.js" ] 665 out_puts = [ target_out_dir + "/albumpickercomponent.abc" ] 666 extra_args = [ "--module" ] 667} 668 669abc_output_path = get_label_info(":albumpickercomponent_abc", "target_out_dir") 670albumpickercomponent_abc_obj_path = 671 abc_output_path + "/albumpickercomponent_abc.o" 672gen_js_obj("albumpickercomponent_abc") { 673 input = "$target_out_dir/albumpickercomponent.abc" 674 output = albumpickercomponent_abc_obj_path 675 dep = ":gen_albumpickercomponent_abc" 676} 677 678ohos_shared_library("albumpickercomponent") { 679 sources = [ "${MEDIALIB_JS_PATH}/src/albumpickercomponent.cpp" ] 680 681 deps = [ ":albumpickercomponent_abc" ] 682 683 external_deps = [ 684 "hilog:libhilog", 685 "napi:ace_napi", 686 ] 687 688 if (!media_library_link_opt) { 689 sanitize = { 690 cfi = true 691 cfi_cross_dso = true 692 debug = false 693 integer_overflow = true 694 ubsan = true 695 boundary_sanitize = true 696 stack_protector_ret = true 697 } 698 } 699 700 relative_install_dir = "module/file" 701 subsystem_name = "multimedia" 702 part_name = "media_library" 703} 704 705js_declaration("recentphotocomponent_js") { 706 part_name = "media_library" 707 sources = [ "./@ohos.file.RecentPhotoComponent.d.ets" ] 708} 709 710# compile .js to .abc. 711es2abc_gen_abc("gen_recentphotocomponent_abc") { 712 src_js = rebase_path("${MEDIALIB_JS_PATH}/src/recentphotocomponent.js") 713 dst_file = rebase_path(target_out_dir + "/recentphotocomponent.abc") 714 in_puts = [ "${MEDIALIB_JS_PATH}/src/recentphotocomponent.js" ] 715 out_puts = [ target_out_dir + "/recentphotocomponent.abc" ] 716 extra_args = [ "--module" ] 717} 718 719abc_output_path = get_label_info(":recentphotocomponent_abc", "target_out_dir") 720recentphotocomponent_abc_obj_path = 721 abc_output_path + "/recentphotocomponent_abc.o" 722gen_js_obj("recentphotocomponent_abc") { 723 input = "$target_out_dir/recentphotocomponent.abc" 724 output = recentphotocomponent_abc_obj_path 725 dep = ":gen_recentphotocomponent_abc" 726} 727 728ohos_shared_library("recentphotocomponent") { 729 sources = [ "${MEDIALIB_JS_PATH}/src/recentphotocomponent.cpp" ] 730 731 deps = [ ":recentphotocomponent_abc" ] 732 733 external_deps = [ 734 "hilog:libhilog", 735 "napi:ace_napi", 736 ] 737 738 if (!media_library_link_opt) { 739 sanitize = { 740 cfi = true 741 cfi_cross_dso = true 742 debug = false 743 integer_overflow = true 744 ubsan = true 745 boundary_sanitize = true 746 stack_protector_ret = true 747 } 748 } 749 750 relative_install_dir = "module/file" 751 subsystem_name = "multimedia" 752 part_name = "media_library" 753} 754 755ohos_shared_library("sendablephotoaccesshelper") { 756 include_dirs = [ 757 "${MEDIALIB_ACCURATE_REFRESH_PATH}/include", 758 "${MEDIALIB_NEW_SERVICES_PATH}/media_notification/include/data", 759 "${MEDIALIB_NEW_SERVICES_PATH}/media_notification/include/utils", 760 "${MEDIALIB_INTERFACES_PATH}/kits/js/include", 761 "${MEDIALIB_INTERFACES_PATH}/kits/js/include/sendable", 762 "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include", 763 "${MEDIALIB_INNERKITS_PATH}/media_library_helper/include", 764 "${MEDIALIB_SERVICES_PATH}/media_dfx/include", 765 "${MEDIALIB_SERVICES_PATH}/media_scanner/include/callback", 766 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/include", 767 "${MEDIALIB_SERVICES_PATH}/media_analysis_extension/include", 768 "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/include", 769 "${MEDIALIB_SERVICES_PATH}/media_async_worker/include", 770 "${MEDIALIB_UTILS_PATH}/include", 771 "${MEDIALIB_INTERFACES_PATH}/inner_api/media_library_helper/include", 772 "${MEDIALIB_INTERFACES_PATH}/kits/js/include", 773 "${MEDIALIB_INTERFACES_PATH}/innerkits/native/include", 774 "${MEDIALIB_UTILS_PATH}/include", 775 "${MEDIALIB_SERVICES_PATH}/media_library/include", 776 ] 777 778 sources = [ 779 "${MEDIALIB_JS_PATH}/src/sendable/native_module_ohos_photoaccess_helper_sendable.cpp", 780 "${MEDIALIB_JS_PATH}/src/sendable/sendable_fetch_file_result_napi.cpp", 781 "${MEDIALIB_JS_PATH}/src/sendable/sendable_file_asset_napi.cpp", 782 "${MEDIALIB_JS_PATH}/src/sendable/sendable_medialibrary_napi_utils.cpp", 783 "${MEDIALIB_JS_PATH}/src/sendable/sendable_photo_access_helper_napi.cpp", 784 "${MEDIALIB_JS_PATH}/src/sendable/sendable_photo_album_napi.cpp", 785 ] 786 787 deps = [ 788 ":medialibrary_nutils", 789 "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", 790 ] 791 792 external_deps = [ 793 "ability_base:zuri", 794 "ability_runtime:ability_manager", 795 "ability_runtime:abilitykit_native", 796 "ability_runtime:dataobs_manager", 797 "ability_runtime:extensionkit_native", 798 "ability_runtime:napi_base_context", 799 "ability_runtime:napi_common", 800 "access_token:libaccesstoken_sdk", 801 "access_token:libprivacy_sdk", 802 "access_token:libtokenid_sdk", 803 "app_file_service:fileuri_native", 804 "bundle_framework:appexecfwk_core", 805 "c_utils:utils", 806 "common_event_service:cesfwk_innerkits", 807 "data_share:datashare_common", 808 "data_share:datashare_consumer", 809 "hilog:libhilog", 810 "hitrace:hitrace_meter", 811 "i18n:intl_util", 812 "image_framework:image", 813 "image_framework:image_native", 814 "init:libbegetutil", 815 "ipc:ipc_core", 816 "ipc:ipc_single", 817 "ipc:rpc", 818 "ipc:ipc_napi", 819 "napi:ace_napi", 820 "player_framework:media_client", 821 "relational_store:native_rdb", 822 ] 823 824 defines = [] 825 defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] 826 if (media_library_feature_mtp) { 827 defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] 828 } 829 if (!media_library_link_opt) { 830 sanitize = { 831 cfi = true 832 cfi_cross_dso = true 833 debug = false 834 integer_overflow = true 835 ubsan = true 836 boundary_sanitize = true 837 stack_protector_ret = true 838 } 839 } 840 841 if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) && 842 defined(global_parts_info.resourceschedule_memmgr_override)) { 843 defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] 844 external_deps += [ 845 "memmgr_override:libpurgeablemem_plugin", 846 "memmgr_override:purgeable_pixelmap_builder", 847 ] 848 } 849 850 if (ability_runtime_graphics) { 851 cflags_cc = [ "-DHAS_ACE_ENGINE_PART" ] 852 } 853 854 output_name = "libsendablephotoaccesshelper" 855 relative_install_dir = "module/file" 856 subsystem_name = "multimedia" 857 part_name = "media_library" 858} 859