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_INNERKITS_PATH}/medialibrary_data_extension/include", 66 "${MEDIALIB_INNERKITS_PATH}/media_library_helper/include", 67 "${MEDIALIB_SERVICES_PATH}/media_scanner/include/callback", 68 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/include", 69 "${MEDIALIB_UTILS_PATH}/include", 70 "${MEDIALIB_INTERFACES_PATH}/inner_api/media_library_helper/include", 71 "${MEDIALIB_INTERFACES_PATH}/kits/js/include", 72 "${MEDIALIB_MTP_PATH}/include", 73 "${MEDIALIB_INTERFACES_PATH}/innerkits/native/include", 74 "${MEDIALIB_UTILS_PATH}/include", 75 "${MEDIALIB_SERVICES_PATH}/media_library/include", 76 "../../../../../distributedhardware/device_manager/interfaces/inner_kits/native_cpp/include", 77 ] 78 79 ldflags = [ "-Wl" ] 80} 81 82ohos_shared_library("medialibrary") { 83 configs = [ ":napi_config" ] 84 85 version_script = "libmedialibrary.map" 86 87 sources = [ 88 "${MEDIALIB_INNERKITS_PATH}/media_library_helper/src/media_thumbnail_helper.cpp", 89 "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/src/medialibrary_data_manager_utils.cpp", 90 "${MEDIALIB_JS_PATH}/src/album_napi.cpp", 91 "${MEDIALIB_JS_PATH}/src/fetch_file_result_napi.cpp", 92 "${MEDIALIB_JS_PATH}/src/file_asset_napi.cpp", 93 "${MEDIALIB_JS_PATH}/src/media_library_napi.cpp", 94 "${MEDIALIB_JS_PATH}/src/media_scanner_napi.cpp", 95 "${MEDIALIB_JS_PATH}/src/medialibrary_napi_utils.cpp", 96 "${MEDIALIB_JS_PATH}/src/napi_error.cpp", 97 "${MEDIALIB_JS_PATH}/src/native_module_ohos_medialibrary.cpp", 98 "${MEDIALIB_JS_PATH}/src/photo_album_napi.cpp", 99 "${MEDIALIB_JS_PATH}/src/smart_album_napi.cpp", 100 "${MEDIALIB_JS_PATH}/src/userfile_client.cpp", 101 ] 102 103 deps = [ 104 ":medialibraryinf_abc", 105 ":medialibraryinf_js", 106 "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", 107 "${MEDIALIB_UTILS_PATH}:permission_utils", 108 ] 109 110 external_deps = [ 111 "ability_base:want", 112 "ability_base:zuri", 113 "ability_runtime:ability_manager", 114 "ability_runtime:abilitykit_native", 115 "ability_runtime:dataobs_manager", 116 "ability_runtime:napi_base_context", 117 "access_token:libtokenid_sdk", 118 "c_utils:utils", 119 "common_event_service:cesfwk_innerkits", 120 "data_share:datashare_common", 121 "data_share:datashare_consumer", 122 "hilog:libhilog", 123 "hitrace:hitrace_meter", 124 "image_framework:image", 125 "ipc:ipc_core", 126 "ipc_js:rpc", 127 "kv_store:distributeddata_inner", 128 "napi:ace_napi", 129 "player_framework:media_client", 130 "relational_store:native_rdb", 131 ] 132 133 defines = [] 134 defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] 135 136 sanitize = { 137 cfi = true 138 cfi_cross_dso = true 139 debug = false 140 } 141 142 if (purgeable_ashmem_enable) { 143 defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] 144 external_deps += [ 145 "memory_utils:libpurgeablemem", 146 "memory_utils:pixelmap_builder", 147 ] 148 } 149 150 if (ability_runtime_graphics) { 151 external_deps += [ "image_framework:image_native" ] 152 } 153 154 relative_install_dir = "module/multimedia" 155 subsystem_name = "multimedia" 156 part_name = "media_library" 157} 158 159ohos_shared_library("userfilemanager") { 160 configs = [ ":napi_config" ] 161 162 sources = [ 163 "${MEDIALIB_INNERKITS_PATH}/media_library_helper/src/media_thumbnail_helper.cpp", 164 "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/src/medialibrary_data_manager_utils.cpp", 165 "${MEDIALIB_JS_PATH}/src/album_napi.cpp", 166 "${MEDIALIB_JS_PATH}/src/fetch_file_result_napi.cpp", 167 "${MEDIALIB_JS_PATH}/src/file_asset_napi.cpp", 168 "${MEDIALIB_JS_PATH}/src/media_library_napi.cpp", 169 "${MEDIALIB_JS_PATH}/src/media_scanner_napi.cpp", 170 "${MEDIALIB_JS_PATH}/src/medialibrary_napi_utils.cpp", 171 "${MEDIALIB_JS_PATH}/src/napi_error.cpp", 172 "${MEDIALIB_JS_PATH}/src/native_module_ohos_userfile_manager.cpp", 173 "${MEDIALIB_JS_PATH}/src/photo_album_napi.cpp", 174 "${MEDIALIB_JS_PATH}/src/smart_album_napi.cpp", 175 "${MEDIALIB_JS_PATH}/src/userfile_client.cpp", 176 ] 177 178 deps = [ 179 "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", 180 "${MEDIALIB_UTILS_PATH}:permission_utils", 181 ] 182 183 external_deps = [ 184 "ability_base:want", 185 "ability_base:zuri", 186 "ability_runtime:ability_manager", 187 "ability_runtime:abilitykit_native", 188 "ability_runtime:dataobs_manager", 189 "ability_runtime:napi_base_context", 190 "access_token:libtokenid_sdk", 191 "c_utils:utils", 192 "common_event_service:cesfwk_innerkits", 193 "data_share:datashare_common", 194 "data_share:datashare_consumer", 195 "hilog:libhilog", 196 "hitrace:hitrace_meter", 197 "image_framework:image", 198 "ipc:ipc_core", 199 "ipc_js:rpc", 200 "kv_store:distributeddata_inner", 201 "napi:ace_napi", 202 "player_framework:media_client", 203 "relational_store:native_dataability", 204 "relational_store:native_rdb", 205 ] 206 207 defines = [] 208 defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] 209 210 sanitize = { 211 cfi = true 212 cfi_cross_dso = true 213 debug = false 214 } 215 216 if (purgeable_ashmem_enable) { 217 defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] 218 external_deps += [ 219 "memory_utils:libpurgeablemem", 220 "memory_utils:pixelmap_builder", 221 ] 222 } 223 224 if (ability_runtime_graphics) { 225 external_deps += [ "image_framework:image_native" ] 226 } 227 228 relative_install_dir = "module/filemanagement" 229 subsystem_name = "multimedia" 230 part_name = "media_library" 231} 232 233js_declaration("photoaccesshelper_js") { 234 part_name = "media_library" 235 sources = [ "./@ohos.file.photoAccessHelper.d.ts" ] 236} 237 238# compile .js to .abc. 239action("gen_photoaccesshelperinf_abc") { 240 visibility = [ ":*" ] 241 script = "../../../../../../arkcompiler/ets_frontend/es2panda/scripts/generate_js_bytecode.py" 242 243 args = [ 244 "--src-js", 245 rebase_path("${MEDIALIB_JS_PATH}/src/photoaccesshelperinf.js"), 246 "--dst-file", 247 rebase_path(target_out_dir + "/photoaccesshelperinf.abc"), 248 "--frontend-tool-path", 249 rebase_path("${es2abc_build_path}"), 250 "--module", 251 ] 252 deps = 253 [ "../../../../../../arkcompiler/ets_frontend/es2panda:es2panda_build" ] 254 255 inputs = [ "${MEDIALIB_JS_PATH}/src/photoaccesshelperinf.js" ] 256 outputs = [ target_out_dir + "/photoaccesshelperinf.abc" ] 257} 258 259base_output_path = get_label_info(":photoaccesshelperinf_js", "target_out_dir") 260photoaccesshelperinf_obj_path = base_output_path + "/photoaccesshelperinf.o" 261gen_js_obj("photoaccesshelperinf_js") { 262 input = "${MEDIALIB_JS_PATH}/src/photoaccesshelperinf.js" 263 output = photoaccesshelperinf_obj_path 264 dep = ":gen_photoaccesshelperinf_abc" 265} 266 267abc_output_path = get_label_info(":photoaccesshelperinf_abc", "target_out_dir") 268photoaccesshelperinf_abc_obj_path = 269 abc_output_path + "/photoaccesshelperinf_abc.o" 270gen_js_obj("photoaccesshelperinf_abc") { 271 input = "$target_out_dir/photoaccesshelperinf.abc" 272 output = photoaccesshelperinf_abc_obj_path 273 dep = ":gen_photoaccesshelperinf_abc" 274} 275 276ohos_shared_library("photoaccesshelper") { 277 configs = [ ":napi_config" ] 278 279 sources = [ 280 "${MEDIALIB_INNERKITS_PATH}/media_library_helper/src/media_thumbnail_helper.cpp", 281 "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/src/medialibrary_data_manager_utils.cpp", 282 "${MEDIALIB_JS_PATH}/src/album_napi.cpp", 283 "${MEDIALIB_JS_PATH}/src/fetch_file_result_napi.cpp", 284 "${MEDIALIB_JS_PATH}/src/file_asset_napi.cpp", 285 "${MEDIALIB_JS_PATH}/src/media_library_napi.cpp", 286 "${MEDIALIB_JS_PATH}/src/media_scanner_napi.cpp", 287 "${MEDIALIB_JS_PATH}/src/medialibrary_napi_utils.cpp", 288 "${MEDIALIB_JS_PATH}/src/napi_error.cpp", 289 "${MEDIALIB_JS_PATH}/src/native_module_ohos_photoaccess_helper.cpp", 290 "${MEDIALIB_JS_PATH}/src/photo_album_napi.cpp", 291 "${MEDIALIB_JS_PATH}/src/smart_album_napi.cpp", 292 "${MEDIALIB_JS_PATH}/src/userfile_client.cpp", 293 ] 294 295 deps = [ 296 ":photoaccesshelperinf_abc", 297 ":photoaccesshelperinf_js", 298 "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", 299 "${MEDIALIB_UTILS_PATH}:permission_utils", 300 ] 301 302 external_deps = [ 303 "ability_base:want", 304 "ability_base:zuri", 305 "ability_runtime:ability_manager", 306 "ability_runtime:abilitykit_native", 307 "ability_runtime:dataobs_manager", 308 "ability_runtime:napi_base_context", 309 "access_token:libtokenid_sdk", 310 "c_utils:utils", 311 "common_event_service:cesfwk_innerkits", 312 "data_share:datashare_common", 313 "data_share:datashare_consumer", 314 "hilog:libhilog", 315 "hitrace:hitrace_meter", 316 "image_framework:image", 317 "ipc:ipc_core", 318 "ipc_js:rpc", 319 "kv_store:distributeddata_inner", 320 "napi:ace_napi", 321 "player_framework:media_client", 322 "relational_store:native_dataability", 323 "relational_store:native_rdb", 324 ] 325 326 defines = [] 327 defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] 328 329 sanitize = { 330 cfi = true 331 cfi_cross_dso = true 332 debug = false 333 } 334 335 if (purgeable_ashmem_enable) { 336 defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] 337 external_deps += [ 338 "memory_utils:libpurgeablemem", 339 "memory_utils:pixelmap_builder", 340 ] 341 } 342 343 if (ability_runtime_graphics) { 344 external_deps += [ "image_framework:image_native" ] 345 } 346 347 relative_install_dir = "module/file" 348 subsystem_name = "multimedia" 349 part_name = "media_library" 350} 351