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