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