• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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