# Copyright (C) 2021-2023 Huawei Device Co., Ltd. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. import("//build/ohos.gni") import("//build/ohos/ace/ace.gni") import("//commonlibrary/memory_utils/purgeable_mem_config.gni") import("//foundation/ability/ability_runtime/ability_runtime.gni") import("//foundation/multimedia/media_library/media_library.gni") import("../../../../../../arkcompiler/ets_frontend/es2panda/es2abc_config.gni") import("../../../../../../foundation/arkui/ace_engine/ace_config.gni") js_declaration("medialibrary_js") { part_name = "media_library" sources = [ "./@ohos.multimedia.mediaLibrary.d.ts" ] } # compile .js to .abc. action("gen_medialibraryinf_abc") { visibility = [ ":*" ] script = "../../../../../../arkcompiler/ets_frontend/es2panda/scripts/generate_js_bytecode.py" args = [ "--src-js", rebase_path("${MEDIALIB_JS_PATH}/src/medialibraryinf.js"), "--dst-file", rebase_path(target_out_dir + "/medialibraryinf.abc"), "--frontend-tool-path", rebase_path("${es2abc_build_path}"), "--module", ] deps = [ "../../../../../../arkcompiler/ets_frontend/es2panda:es2panda_build" ] inputs = [ "${MEDIALIB_JS_PATH}/src/medialibraryinf.js" ] outputs = [ target_out_dir + "/medialibraryinf.abc" ] } base_output_path = get_label_info(":medialibraryinf_js", "target_out_dir") medialibraryinf_obj_path = base_output_path + "/medialibraryinf.o" gen_js_obj("medialibraryinf_js") { input = "${MEDIALIB_JS_PATH}/src/medialibraryinf.js" output = medialibraryinf_obj_path dep = ":gen_medialibraryinf_abc" } abc_output_path = get_label_info(":medialibraryinf_abc", "target_out_dir") medialibraryinf_abc_obj_path = abc_output_path + "/medialibraryinf_abc.o" gen_js_obj("medialibraryinf_abc") { input = "$target_out_dir/medialibraryinf.abc" output = medialibraryinf_abc_obj_path dep = ":gen_medialibraryinf_abc" } config("napi_config") { include_dirs = [ "${MEDIALIB_GLOBAL_PATH}/i18n/frameworks/intl/include", "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include", "${MEDIALIB_INNERKITS_PATH}/media_library_helper/include", "${MEDIALIB_SERVICES_PATH}/media_dfx/include", "${MEDIALIB_SERVICES_PATH}/media_scanner/include/callback", "${MEDIALIB_SERVICES_PATH}/media_thumbnail/include", "${MEDIALIB_SERVICES_PATH}/media_analysis_extension/include", "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/include", "${MEDIALIB_SERVICES_PATH}/media_async_worker/include", "${MEDIALIB_UTILS_PATH}/include", "${MEDIALIB_INTERFACES_PATH}/inner_api/media_library_helper/include", "${MEDIALIB_INTERFACES_PATH}/innerkits/native/include", "${MEDIALIB_UTILS_PATH}/include", "${MEDIALIB_SERVICES_PATH}/media_library/include", "../../../../../distributedhardware/device_manager/interfaces/inner_kits/native_cpp/include", "//third_party/e2fsprogs/e2fsprogs/lib", "${MEDIALIB_SERVICES_PATH}/media_cloud_sync/include/media_cloud_asset_download", ] if (defined(medialibrary_mtp_enable)) { include_dirs += [ "${MEDIALIB_MTP_PATH}/include" ] } if (defined(global_parts_info) && defined( global_parts_info.device_cloud_gateway_media_cloud_enhance_service)) { include_dirs += [ "${MEDIALIB_CLOUD_ENHANCEMENT_SERVICE_PATH}/interfaces/inner_api/include/c_api" ] } ldflags = [ "-Wl,--gc-sections" ] cflags = [ "-fvisibility=hidden", "-fdata-sections", "-ffunction-sections", "-Os", ] cflags_cc = [ "-fvisibility-inlines-hidden", "-Os", ] } config("public_napi_config") { include_dirs = [ "${MEDIALIB_INTERFACES_PATH}/kits/js/include" ] } ohos_shared_library("medialibrary_nutils") { public_configs = [ ":public_napi_config" ] configs = [ ":napi_config" ] sources = [ "${MEDIALIB_JS_PATH}/src/album_napi.cpp", "${MEDIALIB_JS_PATH}/src/cloud_enhancement_napi.cpp", "${MEDIALIB_JS_PATH}/src/cloud_enhancement_task_state_napi.cpp", "${MEDIALIB_JS_PATH}/src/cloud_media_asset_manager_napi.cpp", "${MEDIALIB_JS_PATH}/src/cloud_media_asset_status_napi.cpp", "${MEDIALIB_JS_PATH}/src/confirm_callback.cpp", "${MEDIALIB_JS_PATH}/src/delete_callback.cpp", "${MEDIALIB_JS_PATH}/src/fetch_file_result_napi.cpp", "${MEDIALIB_JS_PATH}/src/file_asset_napi.cpp", "${MEDIALIB_JS_PATH}/src/highlight_album_napi.cpp", "${MEDIALIB_JS_PATH}/src/media_album_change_request_napi.cpp", "${MEDIALIB_JS_PATH}/src/media_asset_change_request_napi.cpp", "${MEDIALIB_JS_PATH}/src/media_asset_data_handler.cpp", "${MEDIALIB_JS_PATH}/src/media_asset_edit_data_napi.cpp", "${MEDIALIB_JS_PATH}/src/media_asset_manager_napi.cpp", "${MEDIALIB_JS_PATH}/src/media_assets_change_request_napi.cpp", "${MEDIALIB_JS_PATH}/src/media_change_request_napi.cpp", "${MEDIALIB_JS_PATH}/src/media_library_comm_napi.cpp", "${MEDIALIB_JS_PATH}/src/media_library_napi.cpp", "${MEDIALIB_JS_PATH}/src/media_scanner_napi.cpp", "${MEDIALIB_JS_PATH}/src/medialibrary_napi_utils.cpp", "${MEDIALIB_JS_PATH}/src/modal_ui_callback.cpp", "${MEDIALIB_JS_PATH}/src/moving_photo_napi.cpp", "${MEDIALIB_JS_PATH}/src/napi_error.cpp", "${MEDIALIB_JS_PATH}/src/photo_album_napi.cpp", "${MEDIALIB_JS_PATH}/src/photo_proxy_napi.cpp", "${MEDIALIB_JS_PATH}/src/picture_handle_client.cpp", "${MEDIALIB_JS_PATH}/src/request_photo_uris_read_permission_callback.cpp", "${MEDIALIB_JS_PATH}/src/short_term_callback.cpp", "${MEDIALIB_JS_PATH}/src/smart_album_napi.cpp", "${MEDIALIB_JS_PATH}/src/thumbnail_manager.cpp", "${MEDIALIB_JS_PATH}/src/userfile_client.cpp", ] deps = [ "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", "//third_party/e2fsprogs:libext2_uuid", ] external_deps = [ "ability_base:want", "ability_base:zuri", "ability_runtime:ability_context_native", "ability_runtime:ability_manager", "ability_runtime:abilitykit_native", "ability_runtime:app_context", "ability_runtime:dataobs_manager", "ability_runtime:napi_base_context", "ability_runtime:runtime", "ability_runtime:service_extension", "ability_runtime:ui_extension", "access_token:libaccesstoken_sdk", "access_token:libprivacy_sdk", "access_token:libtokenid_sdk", "ace_engine:ace_uicontent", "app_file_service:fileuri_native", "bundle_framework:appexecfwk_core", "c_utils:utils", "common_event_service:cesfwk_innerkits", "data_share:datashare_common", "data_share:datashare_consumer", "hilog:libhilog", "hitrace:hitrace_meter", "i18n:intl_util", "image_framework:image", "image_framework:image_native", "init:libbegetutil", "ipc:ipc_core", "ipc:rpc", "kv_store:distributeddata_inner", "libexif:libexif", "napi:ace_napi", "player_framework:media_client", "relational_store:native_rdb", "relational_store:rdb_data_share_adapter", "window_manager:libwm", ] defines = [] defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] if (defined(medialibrary_mtp_enable)) { defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] } if (!media_library_link_opt) { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true ubsan = true boundary_sanitize = true stack_protector_ret = true } } if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) && defined(global_parts_info.resourceschedule_memmgr_override)) { defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] external_deps += [ "memmgr:libpurgeablemem_plugin", "memmgr:purgeable_pixelmap_builder", ] } if (defined(global_parts_info) && defined( global_parts_info.device_cloud_gateway_media_cloud_enhance_service)) { defines += [ "ABILITY_CLOUD_ENHANCEMENT_SUPPORT" ] } if (ability_runtime_graphics) { external_deps += [ "image_framework:image_native" ] } subsystem_name = "multimedia" part_name = "media_library" } ohos_shared_library("medialibrary") { configs = [ ":public_napi_config", ":napi_config", ] version_script = "libmedialibrary.map" sources = [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_medialibrary.cpp" ] deps = [ ":medialibrary_nutils", ":medialibraryinf_abc", ":medialibraryinf_js", "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", ] external_deps = [ "ability_base:want", "ability_base:zuri", "ability_runtime:ability_manager", "ability_runtime:abilitykit_native", "ability_runtime:napi_base_context", "c_utils:utils", "data_share:datashare_consumer", "hilog:libhilog", "napi:ace_napi", ] defines = [] defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] if (defined(medialibrary_mtp_enable)) { defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] } if (defined(global_parts_info) && defined(global_parts_info.open_source_libyuv)) { defines += [ "EXT_PIXEL" ] } if (!media_library_link_opt) { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true ubsan = true boundary_sanitize = true stack_protector_ret = true } } if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) && defined(global_parts_info.resourceschedule_memmgr_override)) { defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] external_deps += [ "memmgr:libpurgeablemem_plugin", "memmgr:purgeable_pixelmap_builder", ] } if (ability_runtime_graphics) { external_deps += [ "image_framework:image_native" ] } relative_install_dir = "module/multimedia" subsystem_name = "multimedia" part_name = "media_library" } ohos_shared_library("userfilemanager") { configs = [ ":public_napi_config", ":napi_config", ] sources = [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_userfile_manager.cpp" ] deps = [ ":medialibrary_nutils", "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", ] external_deps = [ "ability_base:want", "ability_base:zuri", "ability_runtime:ability_manager", "ability_runtime:abilitykit_native", "ability_runtime:napi_base_context", "c_utils:utils", "data_share:datashare_consumer", "hilog:libhilog", "napi:ace_napi", ] defines = [] defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] if (defined(medialibrary_mtp_enable)) { defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] } if (!media_library_link_opt) { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true ubsan = true boundary_sanitize = true stack_protector_ret = true } } if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) && defined(global_parts_info.resourceschedule_memmgr_override)) { defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] external_deps += [ "memmgr:libpurgeablemem_plugin", "memmgr:purgeable_pixelmap_builder", ] } if (ability_runtime_graphics) { external_deps += [ "image_framework:image_native" ] } relative_install_dir = "module/filemanagement" subsystem_name = "multimedia" part_name = "media_library" } js_declaration("photoaccesshelper_js") { part_name = "media_library" sources = [ "./@ohos.file.photoAccessHelper.d.ts" ] } # compile .js to .abc. action("gen_photoaccesshelperinf_abc") { visibility = [ ":*" ] script = "../../../../../../arkcompiler/ets_frontend/es2panda/scripts/generate_js_bytecode.py" args = [ "--src-js", rebase_path("${MEDIALIB_JS_PATH}/src/photoaccesshelperinf.js"), "--dst-file", rebase_path(target_out_dir + "/photoaccesshelperinf.abc"), "--frontend-tool-path", rebase_path("${es2abc_build_path}"), "--module", ] deps = [ "../../../../../../arkcompiler/ets_frontend/es2panda:es2panda_build" ] inputs = [ "${MEDIALIB_JS_PATH}/src/photoaccesshelperinf.js" ] outputs = [ target_out_dir + "/photoaccesshelperinf.abc" ] } base_output_path = get_label_info(":photoaccesshelperinf_js", "target_out_dir") photoaccesshelperinf_obj_path = base_output_path + "/photoaccesshelperinf.o" gen_js_obj("photoaccesshelperinf_js") { input = "${MEDIALIB_JS_PATH}/src/photoaccesshelperinf.js" output = photoaccesshelperinf_obj_path dep = ":gen_photoaccesshelperinf_abc" } abc_output_path = get_label_info(":photoaccesshelperinf_abc", "target_out_dir") photoaccesshelperinf_abc_obj_path = abc_output_path + "/photoaccesshelperinf_abc.o" gen_js_obj("photoaccesshelperinf_abc") { input = "$target_out_dir/photoaccesshelperinf.abc" output = photoaccesshelperinf_abc_obj_path dep = ":gen_photoaccesshelperinf_abc" } ohos_shared_library("photoaccesshelper") { configs = [ ":public_napi_config", ":napi_config", ] sources = [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_photoaccess_helper.cpp" ] deps = [ ":medialibrary_nutils", ":photoaccesshelperinf_abc", ":photoaccesshelperinf_js", "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", ] external_deps = [ "ability_base:want", "ability_base:zuri", "ability_runtime:ability_manager", "ability_runtime:abilitykit_native", "ability_runtime:napi_base_context", "c_utils:utils", "data_share:datashare_common", "data_share:datashare_consumer", "hilog:libhilog", "napi:ace_napi", "player_framework:media_client", ] defines = [] defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] if (defined(medialibrary_mtp_enable)) { defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] } if (!media_library_link_opt) { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true ubsan = true boundary_sanitize = true stack_protector_ret = true } } if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) && defined(global_parts_info.resourceschedule_memmgr_override)) { defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] external_deps += [ "memmgr:libpurgeablemem_plugin", "memmgr:purgeable_pixelmap_builder", ] } if (ability_runtime_graphics) { external_deps += [ "image_framework:image_native" ] } relative_install_dir = "module/file" subsystem_name = "multimedia" part_name = "media_library" } js_declaration("photopickercomponent_js") { part_name = "media_library" sources = [ "./@ohos.file.PhotoPickerComponent.d.ets" ] } # compile .js to .abc. es2abc_gen_abc("gen_photopickercomponent_abc") { src_js = rebase_path("${MEDIALIB_JS_PATH}/src/photopickercomponent.js") dst_file = rebase_path(target_out_dir + "/photopickercomponent.abc") in_puts = [ "${MEDIALIB_JS_PATH}/src/photopickercomponent.js" ] out_puts = [ target_out_dir + "/photopickercomponent.abc" ] extra_args = [ "--module" ] } abc_output_path = get_label_info(":photopickercomponent_abc", "target_out_dir") photopickercomponent_abc_obj_path = abc_output_path + "/photopickercomponent_abc.o" gen_js_obj("photopickercomponent_abc") { input = "$target_out_dir/photopickercomponent.abc" output = photopickercomponent_abc_obj_path dep = ":gen_photopickercomponent_abc" } ohos_shared_library("photopickercomponent") { sources = [ "${MEDIALIB_JS_PATH}/src/photopickercomponent.cpp" ] deps = [ ":photopickercomponent_abc" ] external_deps = [ "hilog:libhilog", "napi:ace_napi", ] if (!media_library_link_opt) { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true ubsan = true boundary_sanitize = true stack_protector_ret = true } } relative_install_dir = "module/file" subsystem_name = "multimedia" part_name = "media_library" } js_declaration("albumpickercomponent_js") { part_name = "media_library" sources = [ "./@ohos.file.AlbumPickerComponent.d.ets" ] } # compile .js to .abc. es2abc_gen_abc("gen_albumpickercomponent_abc") { src_js = rebase_path("${MEDIALIB_JS_PATH}/src/albumpickercomponent.js") dst_file = rebase_path(target_out_dir + "/albumpickercomponent.abc") in_puts = [ "${MEDIALIB_JS_PATH}/src/albumpickercomponent.js" ] out_puts = [ target_out_dir + "/albumpickercomponent.abc" ] extra_args = [ "--module" ] } abc_output_path = get_label_info(":albumpickercomponent_abc", "target_out_dir") albumpickercomponent_abc_obj_path = abc_output_path + "/albumpickercomponent_abc.o" gen_js_obj("albumpickercomponent_abc") { input = "$target_out_dir/albumpickercomponent.abc" output = albumpickercomponent_abc_obj_path dep = ":gen_albumpickercomponent_abc" } ohos_shared_library("albumpickercomponent") { sources = [ "${MEDIALIB_JS_PATH}/src/albumpickercomponent.cpp" ] deps = [ ":albumpickercomponent_abc" ] external_deps = [ "hilog:libhilog", "napi:ace_napi", ] if (!media_library_link_opt) { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true ubsan = true boundary_sanitize = true stack_protector_ret = true } } relative_install_dir = "module/file" subsystem_name = "multimedia" part_name = "media_library" } js_declaration("recentphotocomponent_js") { part_name = "media_library" sources = [ "./@ohos.file.RecentPhotoComponent.d.ets" ] } # compile .js to .abc. es2abc_gen_abc("gen_recentphotocomponent_abc") { src_js = rebase_path("${MEDIALIB_JS_PATH}/src/recentphotocomponent.js") dst_file = rebase_path(target_out_dir + "/recentphotocomponent.abc") in_puts = [ "${MEDIALIB_JS_PATH}/src/recentphotocomponent.js" ] out_puts = [ target_out_dir + "/recentphotocomponent.abc" ] extra_args = [ "--module" ] } abc_output_path = get_label_info(":recentphotocomponent_abc", "target_out_dir") recentphotocomponent_abc_obj_path = abc_output_path + "/recentphotocomponent_abc.o" gen_js_obj("recentphotocomponent_abc") { input = "$target_out_dir/recentphotocomponent.abc" output = recentphotocomponent_abc_obj_path dep = ":gen_recentphotocomponent_abc" } ohos_shared_library("recentphotocomponent") { sources = [ "${MEDIALIB_JS_PATH}/src/recentphotocomponent.cpp" ] deps = [ ":recentphotocomponent_abc" ] external_deps = [ "hilog:libhilog", "napi:ace_napi", ] if (!media_library_link_opt) { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true ubsan = true boundary_sanitize = true stack_protector_ret = true } } relative_install_dir = "module/file" subsystem_name = "multimedia" part_name = "media_library" } ohos_shared_library("sendablephotoaccesshelper") { include_dirs = [ "${MEDIALIB_INTERFACES_PATH}/kits/js/include", "${MEDIALIB_INTERFACES_PATH}/kits/js/include/sendable", "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include", "${MEDIALIB_INNERKITS_PATH}/media_library_helper/include", "${MEDIALIB_SERVICES_PATH}/media_dfx/include", "${MEDIALIB_SERVICES_PATH}/media_scanner/include/callback", "${MEDIALIB_SERVICES_PATH}/media_thumbnail/include", "${MEDIALIB_SERVICES_PATH}/media_analysis_extension/include", "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/include", "${MEDIALIB_SERVICES_PATH}/media_async_worker/include", "${MEDIALIB_UTILS_PATH}/include", "${MEDIALIB_INTERFACES_PATH}/inner_api/media_library_helper/include", "${MEDIALIB_INTERFACES_PATH}/kits/js/include", "${MEDIALIB_INTERFACES_PATH}/innerkits/native/include", "${MEDIALIB_UTILS_PATH}/include", "${MEDIALIB_SERVICES_PATH}/media_library/include", ] sources = [ "${MEDIALIB_JS_PATH}/src/sendable/native_module_ohos_photoaccess_helper_sendable.cpp", "${MEDIALIB_JS_PATH}/src/sendable/sendable_fetch_file_result_napi.cpp", "${MEDIALIB_JS_PATH}/src/sendable/sendable_file_asset_napi.cpp", "${MEDIALIB_JS_PATH}/src/sendable/sendable_medialibrary_napi_utils.cpp", "${MEDIALIB_JS_PATH}/src/sendable/sendable_photo_access_helper_napi.cpp", "${MEDIALIB_JS_PATH}/src/sendable/sendable_photo_album_napi.cpp", ] deps = [ ":medialibrary_nutils", "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", ] external_deps = [ "ability_base:zuri", "ability_runtime:ability_manager", "ability_runtime:abilitykit_native", "ability_runtime:dataobs_manager", "ability_runtime:extensionkit_native", "ability_runtime:napi_base_context", "ability_runtime:napi_common", "access_token:libaccesstoken_sdk", "access_token:libprivacy_sdk", "access_token:libtokenid_sdk", "app_file_service:fileuri_native", "bundle_framework:appexecfwk_core", "c_utils:utils", "common_event_service:cesfwk_innerkits", "data_share:datashare_common", "data_share:datashare_consumer", "hilog:libhilog", "hitrace:hitrace_meter", "i18n:intl_util", "image_framework:image", "image_framework:image_native", "init:libbegetutil", "ipc:ipc_core", "ipc:ipc_single", "ipc:rpc", "napi:ace_napi", "player_framework:media_client", "relational_store:native_rdb", ] defines = [] defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] if (defined(medialibrary_mtp_enable)) { defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] } if (!media_library_link_opt) { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true ubsan = true boundary_sanitize = true stack_protector_ret = true } } if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) && defined(global_parts_info.resourceschedule_memmgr_override)) { defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] external_deps += [ "memmgr:libpurgeablemem_plugin", "memmgr:purgeable_pixelmap_builder", ] } if (ability_runtime_graphics) { cflags_cc = [ "-DHAS_ACE_ENGINE_PART" ] } output_name = "libsendablephotoaccesshelper" relative_install_dir = "module/file" subsystem_name = "multimedia" part_name = "media_library" }