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/ohos.gni") 14import("//build/ohos/ace/ace.gni") 15import("//commonlibrary/memory_utils/purgeable_mem_config.gni") 16import("//foundation/ability/ability_runtime/ability_runtime.gni") 17import("//foundation/multimedia/media_library/media_library.gni") 18import("../../../../../../arkcompiler/ets_frontend/es2panda/es2abc_config.gni") 19import("../../../../../../foundation/arkui/ace_engine/ace_config.gni") 20 21js_declaration("medialibrary_js") { 22 part_name = "media_library" 23 sources = [ "./@ohos.multimedia.mediaLibrary.d.ts" ] 24} 25 26# compile .js to .abc. 27action("gen_medialibraryinf_abc") { 28 visibility = [ ":*" ] 29 script = "../../../../../../arkcompiler/ets_frontend/es2panda/scripts/generate_js_bytecode.py" 30 31 args = [ 32 "--src-js", 33 rebase_path("${MEDIALIB_JS_PATH}/src/medialibraryinf.js"), 34 "--dst-file", 35 rebase_path(target_out_dir + "/medialibraryinf.abc"), 36 "--frontend-tool-path", 37 rebase_path("${es2abc_build_path}"), 38 "--module", 39 ] 40 deps = 41 [ "../../../../../../arkcompiler/ets_frontend/es2panda:es2panda_build" ] 42 43 inputs = [ "${MEDIALIB_JS_PATH}/src/medialibraryinf.js" ] 44 outputs = [ target_out_dir + "/medialibraryinf.abc" ] 45} 46 47base_output_path = get_label_info(":medialibraryinf_js", "target_out_dir") 48medialibraryinf_obj_path = base_output_path + "/medialibraryinf.o" 49gen_js_obj("medialibraryinf_js") { 50 input = "${MEDIALIB_JS_PATH}/src/medialibraryinf.js" 51 output = medialibraryinf_obj_path 52 dep = ":gen_medialibraryinf_abc" 53} 54 55abc_output_path = get_label_info(":medialibraryinf_abc", "target_out_dir") 56medialibraryinf_abc_obj_path = abc_output_path + "/medialibraryinf_abc.o" 57gen_js_obj("medialibraryinf_abc") { 58 input = "$target_out_dir/medialibraryinf.abc" 59 output = medialibraryinf_abc_obj_path 60 dep = ":gen_medialibraryinf_abc" 61} 62 63config("napi_config") { 64 include_dirs = [ 65 "${MEDIALIB_GLOBAL_PATH}/i18n/frameworks/intl/include", 66 "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include", 67 "${MEDIALIB_INNERKITS_PATH}/media_library_helper/include", 68 "${MEDIALIB_SERVICES_PATH}/media_scanner/include/callback", 69 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/include", 70 "${MEDIALIB_SERVICES_PATH}/media_analysis_extension/include", 71 "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/include", 72 "${MEDIALIB_SERVICES_PATH}/media_async_worker/include", 73 "${MEDIALIB_UTILS_PATH}/include", 74 "${MEDIALIB_INTERFACES_PATH}/inner_api/media_library_helper/include", 75 "${MEDIALIB_INTERFACES_PATH}/innerkits/native/include", 76 "${MEDIALIB_UTILS_PATH}/include", 77 "${MEDIALIB_SERVICES_PATH}/media_library/include", 78 "../../../../../distributedhardware/device_manager/interfaces/inner_kits/native_cpp/include", 79 "//third_party/e2fsprogs/e2fsprogs/lib", 80 ] 81 82 if (defined(medialibrary_mtp_enable)) { 83 include_dirs += [ "${MEDIALIB_MTP_PATH}/include" ] 84 } 85 86 if (defined(global_parts_info) && 87 defined( 88 global_parts_info.device_cloud_gateway_media_cloud_enhance_service)) { 89 include_dirs += [ "${MEDIALIB_CLOUD_ENHANCEMENT_SERVICE_PATH}/interfaces/inner_api/include/c_api" ] 90 } 91 92 ldflags = [ "-Wl,--gc-sections" ] 93 94 cflags = [ 95 "-fvisibility=hidden", 96 "-fdata-sections", 97 "-ffunction-sections", 98 "-Os", 99 ] 100 101 cflags_cc = [ 102 "-fvisibility-inlines-hidden", 103 "-Os", 104 ] 105} 106 107config("public_napi_config") { 108 include_dirs = [ "${MEDIALIB_INTERFACES_PATH}/kits/js/include" ] 109} 110 111ohos_shared_library("medialibrary_nutils") { 112 public_configs = [ ":public_napi_config" ] 113 configs = [ ":napi_config" ] 114 sources = [ 115 "${MEDIALIB_JS_PATH}/src/album_napi.cpp", 116 "${MEDIALIB_JS_PATH}/src/cloud_enhancement_napi.cpp", 117 "${MEDIALIB_JS_PATH}/src/cloud_enhancement_task_state_napi.cpp", 118 "${MEDIALIB_JS_PATH}/src/confirm_callback.cpp", 119 "${MEDIALIB_JS_PATH}/src/delete_callback.cpp", 120 "${MEDIALIB_JS_PATH}/src/fetch_file_result_napi.cpp", 121 "${MEDIALIB_JS_PATH}/src/file_asset_napi.cpp", 122 "${MEDIALIB_JS_PATH}/src/highlight_album_napi.cpp", 123 "${MEDIALIB_JS_PATH}/src/media_album_change_request_napi.cpp", 124 "${MEDIALIB_JS_PATH}/src/media_asset_change_request_napi.cpp", 125 "${MEDIALIB_JS_PATH}/src/media_asset_data_handler.cpp", 126 "${MEDIALIB_JS_PATH}/src/media_asset_edit_data_napi.cpp", 127 "${MEDIALIB_JS_PATH}/src/media_asset_manager_napi.cpp", 128 "${MEDIALIB_JS_PATH}/src/media_assets_change_request_napi.cpp", 129 "${MEDIALIB_JS_PATH}/src/media_change_request_napi.cpp", 130 "${MEDIALIB_JS_PATH}/src/media_library_comm_napi.cpp", 131 "${MEDIALIB_JS_PATH}/src/media_library_napi.cpp", 132 "${MEDIALIB_JS_PATH}/src/media_scanner_napi.cpp", 133 "${MEDIALIB_JS_PATH}/src/medialibrary_napi_utils.cpp", 134 "${MEDIALIB_JS_PATH}/src/modal_ui_callback.cpp", 135 "${MEDIALIB_JS_PATH}/src/moving_photo_napi.cpp", 136 "${MEDIALIB_JS_PATH}/src/napi_error.cpp", 137 "${MEDIALIB_JS_PATH}/src/photo_album_napi.cpp", 138 "${MEDIALIB_JS_PATH}/src/photo_proxy_napi.cpp", 139 "${MEDIALIB_JS_PATH}/src/picture_handle_client.cpp", 140 "${MEDIALIB_JS_PATH}/src/short_term_callback.cpp", 141 "${MEDIALIB_JS_PATH}/src/smart_album_napi.cpp", 142 "${MEDIALIB_JS_PATH}/src/thumbnail_manager.cpp", 143 "${MEDIALIB_JS_PATH}/src/userfile_client.cpp", 144 ] 145 146 deps = [ 147 "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", 148 "//third_party/e2fsprogs:libext2_uuid", 149 ] 150 151 external_deps = [ 152 "ability_base:want", 153 "ability_base:zuri", 154 "ability_runtime:ability_context_native", 155 "ability_runtime:ability_manager", 156 "ability_runtime:abilitykit_native", 157 "ability_runtime:app_context", 158 "ability_runtime:dataobs_manager", 159 "ability_runtime:napi_base_context", 160 "ability_runtime:runtime", 161 "ability_runtime:service_extension", 162 "ability_runtime:ui_extension", 163 "access_token:libaccesstoken_sdk", 164 "access_token:libprivacy_sdk", 165 "access_token:libtokenid_sdk", 166 "ace_engine:ace_uicontent", 167 "app_file_service:fileuri_native", 168 "bundle_framework:appexecfwk_core", 169 "c_utils:utils", 170 "common_event_service:cesfwk_innerkits", 171 "data_share:datashare_common", 172 "data_share:datashare_consumer", 173 "hilog:libhilog", 174 "hitrace:hitrace_meter", 175 "i18n:intl_util", 176 "image_framework:image", 177 "image_framework:image_native", 178 "init:libbegetutil", 179 "ipc:ipc_core", 180 "ipc:rpc", 181 "kv_store:distributeddata_inner", 182 "libexif:libexif", 183 "napi:ace_napi", 184 "player_framework:media_client", 185 "relational_store:native_rdb", 186 "relational_store:rdb_data_share_adapter", 187 "window_manager:libwm", 188 ] 189 190 defines = [] 191 defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] 192 if (defined(medialibrary_mtp_enable)) { 193 defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] 194 } 195 if (!media_library_link_opt) { 196 sanitize = { 197 cfi = true 198 cfi_cross_dso = true 199 debug = false 200 integer_overflow = true 201 ubsan = true 202 boundary_sanitize = true 203 stack_protector_ret = true 204 } 205 } 206 207 if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) && 208 defined(global_parts_info.resourceschedule_memmgr_override)) { 209 defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] 210 external_deps += [ 211 "memmgr:libpurgeablemem_plugin", 212 "memmgr:purgeable_pixelmap_builder", 213 ] 214 } 215 216 if (defined(global_parts_info) && 217 defined( 218 global_parts_info.device_cloud_gateway_media_cloud_enhance_service)) { 219 defines += [ "ABILITY_CLOUD_ENHANCEMENT_SUPPORT" ] 220 } 221 222 if (ability_runtime_graphics) { 223 external_deps += [ "image_framework:image_native" ] 224 } 225 226 subsystem_name = "multimedia" 227 part_name = "media_library" 228} 229 230ohos_shared_library("medialibrary") { 231 configs = [ 232 ":public_napi_config", 233 ":napi_config", 234 ] 235 236 version_script = "libmedialibrary.map" 237 238 sources = [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_medialibrary.cpp" ] 239 240 deps = [ 241 ":medialibrary_nutils", 242 ":medialibraryinf_abc", 243 ":medialibraryinf_js", 244 "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", 245 ] 246 247 external_deps = [ 248 "ability_base:want", 249 "ability_base:zuri", 250 "ability_runtime:ability_manager", 251 "ability_runtime:abilitykit_native", 252 "ability_runtime:napi_base_context", 253 "c_utils:utils", 254 "data_share:datashare_consumer", 255 "hilog:libhilog", 256 "napi:ace_napi", 257 ] 258 259 defines = [] 260 defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] 261 if (defined(medialibrary_mtp_enable)) { 262 defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] 263 } 264 if (defined(global_parts_info) && 265 defined(global_parts_info.open_source_libyuv)) { 266 defines += [ "EXT_PIXEL" ] 267 } 268 if (!media_library_link_opt) { 269 sanitize = { 270 cfi = true 271 cfi_cross_dso = true 272 debug = false 273 integer_overflow = true 274 ubsan = true 275 boundary_sanitize = true 276 stack_protector_ret = true 277 } 278 } 279 280 if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) && 281 defined(global_parts_info.resourceschedule_memmgr_override)) { 282 defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] 283 external_deps += [ 284 "memmgr:libpurgeablemem_plugin", 285 "memmgr:purgeable_pixelmap_builder", 286 ] 287 } 288 289 if (ability_runtime_graphics) { 290 external_deps += [ "image_framework:image_native" ] 291 } 292 293 relative_install_dir = "module/multimedia" 294 subsystem_name = "multimedia" 295 part_name = "media_library" 296} 297 298ohos_shared_library("userfilemanager") { 299 configs = [ 300 ":public_napi_config", 301 ":napi_config", 302 ] 303 304 sources = 305 [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_userfile_manager.cpp" ] 306 307 deps = [ 308 ":medialibrary_nutils", 309 "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", 310 ] 311 312 external_deps = [ 313 "ability_base:want", 314 "ability_base:zuri", 315 "ability_runtime:ability_manager", 316 "ability_runtime:abilitykit_native", 317 "ability_runtime:napi_base_context", 318 "c_utils:utils", 319 "data_share:datashare_consumer", 320 "hilog:libhilog", 321 "napi:ace_napi", 322 ] 323 324 defines = [] 325 defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] 326 if (defined(medialibrary_mtp_enable)) { 327 defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] 328 } 329 if (!media_library_link_opt) { 330 sanitize = { 331 cfi = true 332 cfi_cross_dso = true 333 debug = false 334 integer_overflow = true 335 ubsan = true 336 boundary_sanitize = true 337 stack_protector_ret = true 338 } 339 } 340 341 if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) && 342 defined(global_parts_info.resourceschedule_memmgr_override)) { 343 defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] 344 external_deps += [ 345 "memmgr:libpurgeablemem_plugin", 346 "memmgr:purgeable_pixelmap_builder", 347 ] 348 } 349 350 if (ability_runtime_graphics) { 351 external_deps += [ "image_framework:image_native" ] 352 } 353 354 relative_install_dir = "module/filemanagement" 355 subsystem_name = "multimedia" 356 part_name = "media_library" 357} 358 359js_declaration("photoaccesshelper_js") { 360 part_name = "media_library" 361 sources = [ "./@ohos.file.photoAccessHelper.d.ts" ] 362} 363 364# compile .js to .abc. 365action("gen_photoaccesshelperinf_abc") { 366 visibility = [ ":*" ] 367 script = "../../../../../../arkcompiler/ets_frontend/es2panda/scripts/generate_js_bytecode.py" 368 369 args = [ 370 "--src-js", 371 rebase_path("${MEDIALIB_JS_PATH}/src/photoaccesshelperinf.js"), 372 "--dst-file", 373 rebase_path(target_out_dir + "/photoaccesshelperinf.abc"), 374 "--frontend-tool-path", 375 rebase_path("${es2abc_build_path}"), 376 "--module", 377 ] 378 deps = 379 [ "../../../../../../arkcompiler/ets_frontend/es2panda:es2panda_build" ] 380 381 inputs = [ "${MEDIALIB_JS_PATH}/src/photoaccesshelperinf.js" ] 382 outputs = [ target_out_dir + "/photoaccesshelperinf.abc" ] 383} 384 385base_output_path = get_label_info(":photoaccesshelperinf_js", "target_out_dir") 386photoaccesshelperinf_obj_path = base_output_path + "/photoaccesshelperinf.o" 387gen_js_obj("photoaccesshelperinf_js") { 388 input = "${MEDIALIB_JS_PATH}/src/photoaccesshelperinf.js" 389 output = photoaccesshelperinf_obj_path 390 dep = ":gen_photoaccesshelperinf_abc" 391} 392 393abc_output_path = get_label_info(":photoaccesshelperinf_abc", "target_out_dir") 394photoaccesshelperinf_abc_obj_path = 395 abc_output_path + "/photoaccesshelperinf_abc.o" 396gen_js_obj("photoaccesshelperinf_abc") { 397 input = "$target_out_dir/photoaccesshelperinf.abc" 398 output = photoaccesshelperinf_abc_obj_path 399 dep = ":gen_photoaccesshelperinf_abc" 400} 401 402ohos_shared_library("photoaccesshelper") { 403 configs = [ 404 ":public_napi_config", 405 ":napi_config", 406 ] 407 408 sources = 409 [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_photoaccess_helper.cpp" ] 410 411 deps = [ 412 ":medialibrary_nutils", 413 ":photoaccesshelperinf_abc", 414 ":photoaccesshelperinf_js", 415 "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", 416 ] 417 418 external_deps = [ 419 "ability_base:want", 420 "ability_base:zuri", 421 "ability_runtime:ability_manager", 422 "ability_runtime:abilitykit_native", 423 "ability_runtime:napi_base_context", 424 "c_utils:utils", 425 "data_share:datashare_common", 426 "data_share:datashare_consumer", 427 "hilog:libhilog", 428 "napi:ace_napi", 429 "player_framework:media_client", 430 ] 431 432 defines = [] 433 defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] 434 if (defined(medialibrary_mtp_enable)) { 435 defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] 436 } 437 if (!media_library_link_opt) { 438 sanitize = { 439 cfi = true 440 cfi_cross_dso = true 441 debug = false 442 integer_overflow = true 443 ubsan = true 444 boundary_sanitize = true 445 stack_protector_ret = true 446 } 447 } 448 449 if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) && 450 defined(global_parts_info.resourceschedule_memmgr_override)) { 451 defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] 452 external_deps += [ 453 "memmgr:libpurgeablemem_plugin", 454 "memmgr:purgeable_pixelmap_builder", 455 ] 456 } 457 458 if (ability_runtime_graphics) { 459 external_deps += [ "image_framework:image_native" ] 460 } 461 462 relative_install_dir = "module/file" 463 subsystem_name = "multimedia" 464 part_name = "media_library" 465} 466 467js_declaration("photopickercomponent_js") { 468 part_name = "media_library" 469 sources = [ "./@ohos.file.PhotoPickerComponent.d.ets" ] 470} 471 472# compile .js to .abc. 473es2abc_gen_abc("gen_photopickercomponent_abc") { 474 src_js = rebase_path("${MEDIALIB_JS_PATH}/src/photopickercomponent.js") 475 dst_file = rebase_path(target_out_dir + "/photopickercomponent.abc") 476 in_puts = [ "${MEDIALIB_JS_PATH}/src/photopickercomponent.js" ] 477 out_puts = [ target_out_dir + "/photopickercomponent.abc" ] 478 extra_args = [ "--module" ] 479} 480 481abc_output_path = get_label_info(":photopickercomponent_abc", "target_out_dir") 482photopickercomponent_abc_obj_path = 483 abc_output_path + "/photopickercomponent_abc.o" 484gen_js_obj("photopickercomponent_abc") { 485 input = "$target_out_dir/photopickercomponent.abc" 486 output = photopickercomponent_abc_obj_path 487 dep = ":gen_photopickercomponent_abc" 488} 489 490ohos_shared_library("photopickercomponent") { 491 sources = [ "${MEDIALIB_JS_PATH}/src/photopickercomponent.cpp" ] 492 493 deps = [ ":photopickercomponent_abc" ] 494 495 external_deps = [ 496 "hilog:libhilog", 497 "napi:ace_napi", 498 ] 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 relative_install_dir = "module/file" 513 subsystem_name = "multimedia" 514 part_name = "media_library" 515} 516 517js_declaration("albumpickercomponent_js") { 518 part_name = "media_library" 519 sources = [ "./@ohos.file.AlbumPickerComponent.d.ets" ] 520} 521 522# compile .js to .abc. 523es2abc_gen_abc("gen_albumpickercomponent_abc") { 524 src_js = rebase_path("${MEDIALIB_JS_PATH}/src/albumpickercomponent.js") 525 dst_file = rebase_path(target_out_dir + "/albumpickercomponent.abc") 526 in_puts = [ "${MEDIALIB_JS_PATH}/src/albumpickercomponent.js" ] 527 out_puts = [ target_out_dir + "/albumpickercomponent.abc" ] 528 extra_args = [ "--module" ] 529} 530 531abc_output_path = get_label_info(":albumpickercomponent_abc", "target_out_dir") 532albumpickercomponent_abc_obj_path = 533 abc_output_path + "/albumpickercomponent_abc.o" 534gen_js_obj("albumpickercomponent_abc") { 535 input = "$target_out_dir/albumpickercomponent.abc" 536 output = albumpickercomponent_abc_obj_path 537 dep = ":gen_albumpickercomponent_abc" 538} 539 540ohos_shared_library("albumpickercomponent") { 541 sources = [ "${MEDIALIB_JS_PATH}/src/albumpickercomponent.cpp" ] 542 543 deps = [ ":albumpickercomponent_abc" ] 544 545 external_deps = [ 546 "hilog:libhilog", 547 "napi:ace_napi", 548 ] 549 550 if (!media_library_link_opt) { 551 sanitize = { 552 cfi = true 553 cfi_cross_dso = true 554 debug = false 555 integer_overflow = true 556 ubsan = true 557 boundary_sanitize = true 558 stack_protector_ret = true 559 } 560 } 561 562 relative_install_dir = "module/file" 563 subsystem_name = "multimedia" 564 part_name = "media_library" 565} 566 567js_declaration("recentphotocomponent_js") { 568 part_name = "media_library" 569 sources = [ "./@ohos.file.RecentPhotoComponent.d.ets" ] 570} 571 572# compile .js to .abc. 573es2abc_gen_abc("gen_recentphotocomponent_abc") { 574 src_js = rebase_path("${MEDIALIB_JS_PATH}/src/recentphotocomponent.js") 575 dst_file = rebase_path(target_out_dir + "/recentphotocomponent.abc") 576 in_puts = [ "${MEDIALIB_JS_PATH}/src/recentphotocomponent.js" ] 577 out_puts = [ target_out_dir + "/recentphotocomponent.abc" ] 578 extra_args = [ "--module" ] 579} 580 581abc_output_path = get_label_info(":recentphotocomponent_abc", "target_out_dir") 582recentphotocomponent_abc_obj_path = 583 abc_output_path + "/recentphotocomponent_abc.o" 584gen_js_obj("recentphotocomponent_abc") { 585 input = "$target_out_dir/recentphotocomponent.abc" 586 output = recentphotocomponent_abc_obj_path 587 dep = ":gen_recentphotocomponent_abc" 588} 589 590ohos_shared_library("recentphotocomponent") { 591 sources = [ "${MEDIALIB_JS_PATH}/src/recentphotocomponent.cpp" ] 592 593 deps = [ ":recentphotocomponent_abc" ] 594 595 external_deps = [ 596 "hilog:libhilog", 597 "napi:ace_napi", 598 ] 599 600 if (!media_library_link_opt) { 601 sanitize = { 602 cfi = true 603 cfi_cross_dso = true 604 debug = false 605 integer_overflow = true 606 ubsan = true 607 boundary_sanitize = true 608 stack_protector_ret = true 609 } 610 } 611 612 relative_install_dir = "module/file" 613 subsystem_name = "multimedia" 614 part_name = "media_library" 615} 616 617ohos_shared_library("sendablephotoaccesshelper") { 618 include_dirs = [ 619 "${MEDIALIB_INTERFACES_PATH}/kits/js/include", 620 "${MEDIALIB_INTERFACES_PATH}/kits/js/include/sendable", 621 "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include", 622 "${MEDIALIB_INNERKITS_PATH}/media_library_helper/include", 623 "${MEDIALIB_SERVICES_PATH}/media_scanner/include/callback", 624 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/include", 625 "${MEDIALIB_SERVICES_PATH}/media_analysis_extension/include", 626 "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/include", 627 "${MEDIALIB_SERVICES_PATH}/media_async_worker/include", 628 "${MEDIALIB_UTILS_PATH}/include", 629 "${MEDIALIB_INTERFACES_PATH}/inner_api/media_library_helper/include", 630 "${MEDIALIB_INTERFACES_PATH}/kits/js/include", 631 "${MEDIALIB_INTERFACES_PATH}/innerkits/native/include", 632 "${MEDIALIB_UTILS_PATH}/include", 633 "${MEDIALIB_SERVICES_PATH}/media_library/include", 634 ] 635 636 sources = [ 637 "${MEDIALIB_JS_PATH}/src/sendable/native_module_ohos_photoaccess_helper_sendable.cpp", 638 "${MEDIALIB_JS_PATH}/src/sendable/sendable_fetch_file_result_napi.cpp", 639 "${MEDIALIB_JS_PATH}/src/sendable/sendable_file_asset_napi.cpp", 640 "${MEDIALIB_JS_PATH}/src/sendable/sendable_medialibrary_napi_utils.cpp", 641 "${MEDIALIB_JS_PATH}/src/sendable/sendable_photo_access_helper_napi.cpp", 642 "${MEDIALIB_JS_PATH}/src/sendable/sendable_photo_album_napi.cpp", 643 ] 644 645 deps = [ 646 ":medialibrary_nutils", 647 "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", 648 ] 649 650 external_deps = [ 651 "ability_base:zuri", 652 "ability_runtime:ability_manager", 653 "ability_runtime:abilitykit_native", 654 "ability_runtime:dataobs_manager", 655 "ability_runtime:extensionkit_native", 656 "ability_runtime:napi_base_context", 657 "ability_runtime:napi_common", 658 "access_token:libaccesstoken_sdk", 659 "access_token:libprivacy_sdk", 660 "access_token:libtokenid_sdk", 661 "app_file_service:fileuri_native", 662 "bundle_framework:appexecfwk_core", 663 "c_utils:utils", 664 "common_event_service:cesfwk_innerkits", 665 "data_share:datashare_common", 666 "data_share:datashare_consumer", 667 "hilog:libhilog", 668 "hitrace:hitrace_meter", 669 "i18n:intl_util", 670 "image_framework:image", 671 "image_framework:image_native", 672 "init:libbegetutil", 673 "ipc:ipc_core", 674 "ipc:ipc_single", 675 "ipc:rpc", 676 "napi:ace_napi", 677 "player_framework:media_client", 678 "relational_store:native_rdb", 679 ] 680 681 defines = [] 682 defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] 683 if (defined(medialibrary_mtp_enable)) { 684 defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] 685 } 686 if (!media_library_link_opt) { 687 sanitize = { 688 cfi = true 689 cfi_cross_dso = true 690 debug = false 691 integer_overflow = true 692 ubsan = true 693 boundary_sanitize = true 694 stack_protector_ret = true 695 } 696 } 697 698 if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) && 699 defined(global_parts_info.resourceschedule_memmgr_override)) { 700 defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] 701 external_deps += [ 702 "memmgr:libpurgeablemem_plugin", 703 "memmgr:purgeable_pixelmap_builder", 704 ] 705 } 706 707 if (ability_runtime_graphics) { 708 cflags_cc = [ "-DHAS_ACE_ENGINE_PART" ] 709 } 710 711 output_name = "libsendablephotoaccesshelper" 712 relative_install_dir = "module/file" 713 subsystem_name = "multimedia" 714 part_name = "media_library" 715} 716