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