# 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_scanner/include/callback", "${MEDIALIB_SERVICES_PATH}/media_thumbnail/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", "../../../../../distributedhardware/device_manager/interfaces/inner_kits/native_cpp/include", "//third_party/e2fsprogs/e2fsprogs/lib", "${MEDIALIB_CAMERA_FRAMEWORK_PATH}/interfaces/kits/js/camera_napi/include", "${MEDIALIB_CAMERA_FRAMEWORK_PATH}/interfaces/inner_api/native/camera/include", ] if (defined(medialibrary_mtp_enable)) { include_dirs += [ "${MEDIALIB_MTP_PATH}/include" ] } ldflags = [ "-Wl,--gc-sections" ] cflags = [ "-fvisibility=hidden", "-fdata-sections", "-ffunction-sections", "-Os", ] cflags_cc = [ "-fvisibility-inlines-hidden", "-Os", ] } ohos_shared_library("medialibrary_nutils") { configs = [ ":napi_config" ] sources = [ "${MEDIALIB_JS_PATH}/src/album_napi.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/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_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/napi_error.cpp", "${MEDIALIB_JS_PATH}/src/photo_album_napi.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: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", "ipc:ipc_core", "ipc:ipc_js", "kv_store:distributeddata_inner", "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 (!link_opt) { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true ubsan = true boundary_sanitize = true stack_protector_ret = true } } if (purgeable_ashmem_enable && defined(global_parts_info) && defined(global_parts_info.resourceschedule_memmgr_plugin)) { defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] external_deps += [ "memmgr_plugin:libpurgeablemem_plugin", "memmgr_plugin:purgeable_pixelmap_builder", ] } if (defined(global_parts_info) && defined(global_parts_info.multimedia_camera_framework) && global_parts_info.multimedia_camera_framework) { defines += [ "ABILITY_CAMERA_SUPPORT" ] external_deps += [ "camera_framework:camera_framework", "camera_framework:camera_napi", ] } if (ability_runtime_graphics) { external_deps += [ "image_framework:image_native" ] } subsystem_name = "multimedia" part_name = "media_library" } ohos_shared_library("medialibrary") { configs = [ ":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 (!link_opt) { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true ubsan = true boundary_sanitize = true stack_protector_ret = true } } if (purgeable_ashmem_enable && defined(global_parts_info) && defined(global_parts_info.resourceschedule_memmgr_plugin)) { defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] external_deps += [ "memmgr_plugin:libpurgeablemem_plugin", "memmgr_plugin: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 = [ ":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 (!link_opt) { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true ubsan = true boundary_sanitize = true stack_protector_ret = true } } if (purgeable_ashmem_enable && defined(global_parts_info) && defined(global_parts_info.resourceschedule_memmgr_plugin)) { defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] external_deps += [ "memmgr_plugin:libpurgeablemem_plugin", "memmgr_plugin: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 = [ ":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", ] defines = [] defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] if (defined(medialibrary_mtp_enable)) { defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] } if (!link_opt) { sanitize = { cfi = true cfi_cross_dso = true debug = false integer_overflow = true ubsan = true boundary_sanitize = true stack_protector_ret = true } } if (purgeable_ashmem_enable && defined(global_parts_info) && defined(global_parts_info.resourceschedule_memmgr_plugin)) { defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] external_deps += [ "memmgr_plugin:libpurgeablemem_plugin", "memmgr_plugin: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" }