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. 13 14import("//build/ohos.gni") 15import("//foundation/multimedia/media_library/media_library.gni") 16 17ohos_prebuilt_etc("userfilemanager_mimetypes.json") { 18 module_install_dir = "etc/userfilemanager" 19 20 source = "${MEDIALIB_UTILS_PATH}/configs/userfilemanager_mimetypes.json" 21 22 subsystem_name = "multimedia" 23 part_name = "media_library" 24} 25 26config("media_data_extension_public_config") { 27 include_fileext = [ "${MEDIALIB_SERVICES_PATH}/media_file_extension/include" ] 28 include_distributed = [ 29 "${MEDIALIB_SERVICES_PATH}/media_distributed/include/database_manage", 30 "${MEDIALIB_SERVICES_PATH}/media_distributed/include/device_manage", 31 "${MEDIALIB_SERVICES_PATH}/media_distributed/include/devices_info_interact", 32 ] 33 include_scanner = [ 34 "${MEDIALIB_SERVICES_PATH}/media_scanner/include/callback", 35 "${MEDIALIB_SERVICES_PATH}/media_scanner/include/scanner", 36 ] 37 38 include_multistages_capture = [ 39 "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/include", 40 "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/include/deferred_processing", 41 "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/include/dfx", 42 "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/include/utils", 43 ] 44 45 include_dirs = [ 46 "${MEDIALIB_INTERFACES_PATH}/innerkits/native/include", 47 "${MEDIALIB_INTERFACES_PATH}/inner_api/media_library_helper/include", 48 "${MEDIALIB_INNERKITS_PATH}/media_library_helper/include", 49 "${MEDIALIB_UTILS_PATH}/include", 50 "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include", 51 "${MEDIALIB_SERVICES_PATH}/media_async_worker/include", 52 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/include", 53 54 "../../../../../bundlemanager/bundle_framework/interfaces/kits/js/common", 55 ] 56 include_dirs += include_fileext 57 include_dirs += include_distributed 58 include_dirs += include_scanner 59 include_dirs += include_multistages_capture 60 61 ldflags = [ "-Wl,--gc-sections" ] 62 63 cflags = [ 64 "-fvisibility=hidden", 65 "-fdata-sections", 66 "-ffunction-sections", 67 "-Os", 68 ] 69 70 cflags_cc = [ 71 "-fvisibility-inlines-hidden", 72 "-Os", 73 ] 74 75 if (target_cpu == "arm") { 76 cflags += [ "-DBINDER_IPC_32BIT" ] 77 } 78} 79 80ohos_hap("medialibrary_ext_hap") { 81 hap_profile = "MediaLibraryExt/entry/src/main/module.json" 82 deps = [ 83 ":MediaLibStage_js_assets", 84 ":MediaLibStage_resources", 85 ] 86 shared_libraries = [ "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension:medialibrary_data_extension" ] 87 certificate_profile = "${MEDIALIB_INNERKITS_PATH}/signature/medialib.p7b" 88 hap_name = "Media_Library_Ext" 89 part_name = "prebuilt_hap" 90 subsystem_name = "applications" 91 module_install_dir = "app/com.ohos.medialibrary.MediaLibraryData" 92 if (defined(sign_hap_py_path)) { 93 certificate_profile = 94 "${MEDIALIB_INNERKITS_PATH}/signature/medialib_new.p7b" 95 key_alias = "medialibrarydata" 96 private_key_path = "medialibrarydata" 97 compatible_version = "9" 98 } 99} 100 101ohos_js_assets("MediaLibStage_js_assets") { 102 hap_profile = "MediaLibraryExt/entry/src/main/module.json" 103 ets2abc = true 104 source_dir = "MediaLibraryExt/entry/src/main/ets" 105} 106 107ohos_app_scope("MediaLibStage_app_profile") { 108 app_profile = "MediaLibraryExt/AppScope/app.json" 109 sources = [ "MediaLibraryExt/AppScope/resources" ] 110} 111 112ohos_resources("MediaLibStage_resources") { 113 sources = [ "MediaLibraryExt/entry/src/main/resources" ] 114 deps = [ ":MediaLibStage_app_profile" ] 115 hap_profile = "MediaLibraryExt/entry/src/main/module.json" 116} 117 118ohos_shared_library("medialibrary_data_extension") { 119 install_enable = true 120 121 media_scan_source = [ 122 "${MEDIALIB_SERVICES_PATH}/media_scanner/src/scanner/media_scan_executor.cpp", 123 "${MEDIALIB_SERVICES_PATH}/media_scanner/src/scanner/media_scanner.cpp", 124 "${MEDIALIB_SERVICES_PATH}/media_scanner/src/scanner/media_scanner_manager.cpp", 125 "${MEDIALIB_SERVICES_PATH}/media_scanner/src/scanner/media_scanner_db.cpp", 126 "${MEDIALIB_SERVICES_PATH}/media_scanner/src/scanner/metadata.cpp", 127 "${MEDIALIB_SERVICES_PATH}/media_scanner/src/scanner/metadata_extractor.cpp", 128 "${MEDIALIB_SERVICES_PATH}/media_scanner/src/scanner/scanner_utils.cpp", 129 ] 130 131 media_thumbnail_source = [ 132 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/cloud_thumbnail_observer.cpp", 133 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/default_thumbnail_helper.cpp", 134 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/ithumbnail_helper.cpp", 135 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/lcd_thumbnail_helper.cpp", 136 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/thumbnail_aging_helper.cpp", 137 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/thumbnail_generate_helper.cpp", 138 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/thumbnail_helper_factory.cpp", 139 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/thumbnail_service.cpp", 140 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/thumbnail_uri_utils.cpp", 141 "${MEDIALIB_SERVICES_PATH}/media_thumbnail/src/thumbnail_utils.cpp", 142 ] 143 144 media_cloud_sync_source = 145 [ "${MEDIALIB_CLOUD_SYNC_PATH}/src/cloud_sync_helper.cpp" ] 146 147 media_rdb_utils_source = [ 148 "src/medialibrary_rdb_utils.cpp", 149 "src/medialibrary_rdb_transaction.cpp", 150 ] 151 152 media_multistages_capture_source = [ 153 "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/deferred_processing/deferred_processing_adapter.cpp", 154 "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/dfx/multistages_capture_dfx_first_visit.cpp", 155 "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/dfx/multistages_capture_dfx_request_policy.cpp", 156 "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/dfx/multistages_capture_dfx_result.cpp", 157 "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/dfx/multistages_capture_dfx_total_time.cpp", 158 "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/dfx/multistages_capture_dfx_trigger_ratio.cpp", 159 "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/utils/database_adapter.cpp", 160 "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/utils/exif_utils.cpp", 161 "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/utils/file_utils.cpp", 162 "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/multistages_capture_manager.cpp", 163 ] 164 165 sources = [ 166 "${MEDIALIB_UTILS_PATH}/src/media_privacy_manager.cpp", 167 "src/media_datashare_ext_ability.cpp", 168 "src/media_datashare_stub_impl.cpp", 169 "src/medialibrary_album_operations.cpp", 170 "src/medialibrary_asset_operations.cpp", 171 "src/medialibrary_audio_operations.cpp", 172 "src/medialibrary_bundle_manager.cpp", 173 "src/medialibrary_command.cpp", 174 "src/medialibrary_data_manager.cpp", 175 "src/medialibrary_data_manager_utils.cpp", 176 "src/medialibrary_dir_operations.cpp", 177 "src/medialibrary_file_operations.cpp", 178 "src/medialibrary_formmap_operations.cpp", 179 "src/medialibrary_inotify.cpp", 180 "src/medialibrary_location_operations.cpp", 181 "src/medialibrary_notify.cpp", 182 "src/medialibrary_object_utils.cpp", 183 "src/medialibrary_photo_operations.cpp", 184 "src/medialibrary_rdbstore.cpp", 185 "src/medialibrary_search_operations.cpp", 186 "src/medialibrary_smartalbum_map_operations.cpp", 187 "src/medialibrary_smartalbum_operations.cpp", 188 "src/medialibrary_subscriber.cpp", 189 "src/medialibrary_uripermission_operations.cpp", 190 "src/medialibrary_vision_operations.cpp", 191 "src/photo_map_operations.cpp", 192 "src/trash_async_worker.cpp", 193 ] 194 sources += media_scan_source 195 sources += media_thumbnail_source 196 sources += media_cloud_sync_source 197 sources += media_rdb_utils_source 198 sources += media_multistages_capture_source 199 200 public_configs = [ ":media_data_extension_public_config" ] 201 202 deps = [ 203 "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library", 204 "${MEDIALIB_SERVICES_PATH}/media_async_worker:medialibrary_async_worker", 205 "${MEDIALIB_UTILS_PATH}:medialibrary_common_utils", 206 "${MEDIALIB_UTILS_PATH}:permission_utils", 207 "${MEDIALIB_UTILS_PATH}:post_event_utils", 208 ] 209 210 include_dirs = [ 211 "${MEDIALIB_CLOUD_SYNC_PATH}/include", 212 "${MEDIALIB_SERVICES_PATH}/media_async_worker/include", 213 ] 214 215 external_deps = [ 216 "ability_base:want", 217 "ability_base:zuri", 218 "ability_runtime:ability_manager", 219 "ability_runtime:app_context", 220 "ability_runtime:app_manager", 221 "ability_runtime:dataobs_manager", 222 "ability_runtime:extensionkit_native", 223 "ability_runtime:runtime", 224 "ability_runtime:uri_permission_mgr", 225 "access_token:libaccesstoken_sdk", 226 "app_file_service:sandbox_helper_native", 227 "background_task_mgr:bgtaskmgr_innerkits", 228 "bundle_framework:appexecfwk_core", 229 "c_utils:utils", 230 "common_event_service:cesfwk_innerkits", 231 "data_share:datashare_common", 232 "data_share:datashare_consumer", 233 "data_share:datashare_provider", 234 "dfs_service:cloudsync_kit_inner", 235 "eventhandler:libeventhandler", 236 "file_api:filemgmt_libn", 237 "hilog:libhilog", 238 "hitrace:hitrace_meter", 239 "image_framework:image_native", 240 "init:libbegetutil", 241 "ipc:ipc_core", 242 "kv_store:distributeddata_inner", 243 "napi:ace_napi", 244 "player_framework:media_client", 245 "relational_store:native_rdb", 246 "relational_store:rdb_data_share_adapter", 247 "safwk:system_ability_fwk", 248 "samgr:samgr_proxy", 249 "window_manager:libdm", 250 ] 251 252 defines = [] 253 defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ] 254 if (defined(medialibrary_mtp_enable)) { 255 defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ] 256 } 257 258 if (!defined(global_parts_info) || 259 defined(global_parts_info.security_security_component_manager)) { 260 defines += [ "MEDIALIBRARY_SECURITY_OPEN=1" ] 261 external_deps += [ "security_component_manager:libsecurity_component_sdk" ] 262 } 263 264 if (defined(global_parts_info) && 265 defined(global_parts_info.multimedia_camera_framework) && 266 global_parts_info.multimedia_camera_framework) { 267 defines += [ "ABILITY_CAMERA_SUPPORT" ] 268 external_deps += [ "camera_framework:camera_framework" ] 269 sources += [ "${MEDIALIB_SERVICES_PATH}/media_multistages_capture/src/deferred_processing/multistages_capture_deferred_proc_session_callback.cpp" ] 270 } 271 272 if (!link_opt) { 273 sanitize = { 274 cfi = true 275 cfi_cross_dso = true 276 debug = false 277 blocklist = "./extension_blocklist.txt" 278 integer_overflow = true 279 ubsan = true 280 boundary_sanitize = true 281 stack_protector_ret = true 282 } 283 } 284 if (build_variant == "root") { 285 defines += [ "MEDIALIBRARY_MEDIATOOL_ENABLE=1" ] 286 } 287 288 cflags_cc = [ 289 "-fvisibility-inlines-hidden", 290 "-Os", 291 ] 292 293 if (defined(global_parts_info) && 294 defined(global_parts_info.powermgr_battery_manager)) { 295 external_deps += [ "battery_manager:batterysrv_client" ] 296 cflags_cc += [ "-DHAS_BATTERY_MANAGER_PART" ] 297 } 298 299 if (defined(global_parts_info) && 300 defined(global_parts_info.powermgr_power_manager)) { 301 external_deps += [ "power_manager:powermgr_client" ] 302 cflags_cc += [ "-DHAS_POWER_MANAGER_PART" ] 303 } 304 305 subsystem_name = "multimedia" 306 part_name = "media_library" 307} 308