1# Copyright (C) 2024 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. 13 14import("//build/ohos.gni") 15import("//build/ohos/ace/ace.gni") 16import("//foundation/multimedia/media_library/media_library.gni") 17 18config("ffi_config") { 19 include_dirs = [ 20 "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include", 21 "${MEDIALIB_INNERKITS_PATH}/media_library_helper/include", 22 "${MEDIALIB_SERVICES_PATH}/media_dfx/include", 23 "${MEDIALIB_SERVICES_PATH}/media_scanner/include/callback", 24 "${MEDIALIB_SERVICES_PATH}/media_analysis_extension/include", 25 "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/include", 26 "${MEDIALIB_SERVICES_PATH}/media_async_worker/include", 27 "${MEDIALIB_UTILS_PATH}/include", 28 "${MEDIALIB_INTERFACES_PATH}/inner_api/media_library_helper/include", 29 "${MEDIALIB_INTERFACES_PATH}/innerkits/native/include", 30 "${MEDIALIB_SERVICES_PATH}/media_library/include", 31 "include", 32 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/include", 33 ] 34 35 if (media_library_feature_mtp) { 36 include_dirs += [ "${MEDIALIB_MTP_PATH}/include" ] 37 } 38 39 ldflags = [ "-Wl,--gc-sections" ] 40 41 cflags = [ 42 "-fvisibility=hidden", 43 "-fdata-sections", 44 "-ffunction-sections", 45 "-Os", 46 ] 47 48 cflags_cc = [ "-fvisibility-inlines-hidden" ] 49} 50 51ohos_shared_library("cj_photoaccesshelper_ffi") { 52 public_configs = [ ":ffi_config" ] 53 54 include_dirs = [ 55 "include", 56 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/include", 57 ] 58 59 version_script = "libcj_photoaccesshelper_ffi.map" 60 61 sources = [ 62 "src/confirm_callback.cpp", 63 "src/delete_callback.cpp", 64 "src/fetch_result_impl.cpp", 65 "src/media_album_change_request_impl.cpp", 66 "src/media_asset_change_request_impl.cpp", 67 "src/media_asset_manager_ffi.cpp", 68 "src/media_change_request_impl.cpp", 69 "src/modal_ui_callback.cpp", 70 "src/moving_photo_impl.cpp", 71 "src/photo_accesshelper_ffi.cpp", 72 "src/photo_accesshelper_impl.cpp", 73 "src/photo_accesshelper_utils.cpp", 74 "src/photo_album_impl.cpp", 75 "src/photo_asset_impl.cpp", 76 "src/userfile_client.cpp", 77 ] 78 79 deps = [ 80 "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", 81 "${MEDIALIB_INTERFACES_PATH}/kits/js:medialibrary_nutils", 82 ] 83 84 external_deps = [ 85 "ability_base:want", 86 "ability_base:zuri", 87 "ability_runtime:ability_manager", 88 "ability_runtime:abilitykit_native", 89 "ability_runtime:dataobs_manager", 90 "ability_runtime:napi_base_context", 91 "ability_runtime:service_extension", 92 "ability_runtime:ui_extension", 93 "access_token:libaccesstoken_sdk", 94 "access_token:libprivacy_sdk", 95 "access_token:libtokenid_sdk", 96 "app_file_service:fileuri_native", 97 "c_utils:utils", 98 "data_share:cj_data_share_predicates_ffi", 99 "data_share:datashare_common", 100 "data_share:datashare_consumer", 101 "e2fsprogs:libext2_uuid", 102 "hilog:libhilog", 103 "image_framework:cj_image_ffi", 104 "image_framework:image", 105 "image_framework:image_native", 106 "init:libbegetutil", 107 "ipc:ipc_core", 108 "ipc:ipc_single", 109 "ipc:rpc", 110 "kv_store:distributeddata_inner", 111 "napi:ace_napi", 112 "napi:cj_bind_ffi", 113 "napi:cj_bind_native", 114 "player_framework:media_client", 115 "relational_store:native_rdb", 116 "relational_store:rdb_data_share_adapter", 117 "window_manager:libwm", 118 ] 119 120 defines = [] 121 defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] 122 if (media_library_feature_mtp) { 123 defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] 124 } 125 if (!media_library_link_opt) { 126 sanitize = { 127 cfi = true 128 cfi_cross_dso = true 129 debug = false 130 integer_overflow = true 131 ubsan = true 132 boundary_sanitize = true 133 stack_protector_ret = true 134 } 135 } 136 137 if (ability_runtime_graphics) { 138 external_deps += [ 139 "ace_engine:ace_uicontent", 140 "image_framework:image_native", 141 ] 142 cflags_cc = [ "-DHAS_ACE_ENGINE_PART" ] 143 } 144 145 innerapi_tags = [ "platformsdk" ] 146 147 subsystem_name = "multimedia" 148 part_name = "media_library" 149} 150