• 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.
13import("//build/config/components/ets_frontend/es2abc_config.gni")
14import("//build/config/components/memory_utils/purgeable_mem_config.gni")
15import("//build/ohos.gni")
16import("//build/ohos/ace/ace.gni")
17import("//build/templates/abc/ohos_abc.gni")
18import("//foundation/multimedia/media_library/media_library.gni")
19
20js_declaration("medialibrary_js") {
21  part_name = "media_library"
22  sources = [ "./@ohos.multimedia.mediaLibrary.d.ts" ]
23}
24
25# compile .js to .abc.
26
27
28es2abc_gen_abc("gen_medialibraryinf_abc") {
29  src_js = rebase_path("${MEDIALIB_JS_PATH}/src/medialibraryinf.js")
30  dst_file = rebase_path(target_out_dir + "/medialibraryinf.abc")
31  in_puts = [ "${MEDIALIB_JS_PATH}/src/medialibraryinf.js" ]
32  out_puts = [ target_out_dir + "/medialibraryinf.abc" ]
33  extra_args = [ "--module" ]
34}
35
36base_output_path = get_label_info(":medialibraryinf_js", "target_out_dir")
37medialibraryinf_obj_path = base_output_path + "/medialibraryinf.o"
38gen_js_obj("medialibraryinf_js") {
39  input = "${MEDIALIB_JS_PATH}/src/medialibraryinf.js"
40  output = medialibraryinf_obj_path
41  dep = ":gen_medialibraryinf_abc"
42}
43
44abc_output_path = get_label_info(":medialibraryinf_abc", "target_out_dir")
45medialibraryinf_abc_obj_path = abc_output_path + "/medialibraryinf_abc.o"
46gen_js_obj("medialibraryinf_abc") {
47  input = "$target_out_dir/medialibraryinf.abc"
48  output = medialibraryinf_abc_obj_path
49  dep = ":gen_medialibraryinf_abc"
50}
51
52config("napi_config") {
53  include_dirs = [
54    "${MEDIALIB_ACCURATE_REFRESH_PATH}/include",
55    "${MEDIALIB_NEW_SERVICES_PATH}/media_notification/include/accurate_refresh",
56    "${MEDIALIB_NEW_SERVICES_PATH}/media_notification/include/data",
57    "${MEDIALIB_NEW_SERVICES_PATH}/media_notification/include/utils",
58    "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include",
59    "${MEDIALIB_INNERKITS_PATH}/media_library_helper/include",
60    "${MEDIALIB_SERVICES_PATH}/media_dfx/include",
61    "${MEDIALIB_SERVICES_PATH}/media_scanner/include/callback",
62    "${MEDIALIB_SERVICES_PATH}/media_thumbnail/include",
63    "${MEDIALIB_SERVICES_PATH}/media_analysis_extension/include",
64    "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/include",
65    "${MEDIALIB_SERVICES_PATH}/media_async_worker/include",
66    "${MEDIALIB_UTILS_PATH}/include",
67    "${MEDIALIB_INTERFACES_PATH}/inner_api/media_library_helper/include",
68    "${MEDIALIB_INTERFACES_PATH}/kits/js/include",
69    "${MEDIALIB_INTERFACES_PATH}/innerkits/native/include",
70    "${MEDIALIB_UTILS_PATH}/include",
71    "${MEDIALIB_SERVICES_PATH}/media_library/include",
72    "${MEDIALIB_SERVICES_PATH}/media_cloud_sync/include/media_cloud_asset_download",
73    "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include/ipc",
74    "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include/ipc/util",
75    "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include/ipc/vo",
76    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/include/vo",
77    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/include/vo",
78  ]
79
80  if (media_library_feature_mtp) {
81    include_dirs += [ "${MEDIALIB_MTP_PATH}/include" ]
82  }
83
84  if (defined(global_parts_info) &&
85      defined(
86          global_parts_info.device_cloud_gateway_media_cloud_enhance_service)) {
87    include_dirs += [ "${MEDIALIB_CLOUD_ENHANCEMENT_SERVICE_PATH}/interfaces/inner_api/include/c_api" ]
88  }
89
90  ldflags = [ "-Wl,--gc-sections" ]
91
92  cflags = [
93    "-fvisibility=hidden",
94    "-fdata-sections",
95    "-ffunction-sections",
96    "-Os",
97  ]
98
99  cflags_cc = [
100    "-fvisibility-inlines-hidden",
101    "-Os",
102  ]
103}
104
105config("napi_config_photoaccesshelpernative") {
106  include_dirs = [
107    "${MEDIALIB_ACCURATE_REFRESH_PATH}/include",
108    "${MEDIALIB_NEW_SERVICES_PATH}/media_notification/include/data",
109    "${MEDIALIB_NEW_SERVICES_PATH}/media_notification/include/utils",
110    "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include",
111    "${MEDIALIB_INNERKITS_PATH}/media_library_helper/include",
112    "${MEDIALIB_SERVICES_PATH}/media_dfx/include",
113    "${MEDIALIB_SERVICES_PATH}/media_scanner/include/callback",
114    "${MEDIALIB_SERVICES_PATH}/media_thumbnail/include",
115    "${MEDIALIB_SERVICES_PATH}/media_analysis_extension/include",
116    "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/include",
117    "${MEDIALIB_SERVICES_PATH}/media_async_worker/include",
118    "${MEDIALIB_UTILS_PATH}/include",
119    "${MEDIALIB_INTERFACES_PATH}/inner_api/media_library_helper/include",
120    "${MEDIALIB_INTERFACES_PATH}/kits/js/include",
121    "${MEDIALIB_INTERFACES_PATH}/innerkits/native/include",
122    "${MEDIALIB_UTILS_PATH}/include",
123    "${MEDIALIB_SERVICES_PATH}/media_library/include",
124    "${MEDIALIB_SERVICES_PATH}/media_cloud_sync/include/media_cloud_asset_download",
125  ]
126
127  if (media_library_feature_mtp) {
128    include_dirs += [ "${MEDIALIB_MTP_PATH}/include" ]
129  }
130
131  ldflags = [ "-Wl,--gc-sections" ]
132
133  cflags = [
134    "-fvisibility=hidden",
135    "-fdata-sections",
136    "-ffunction-sections",
137    "-Os",
138  ]
139
140  cflags_cc = [
141    "-fvisibility-inlines-hidden",
142    "-Os",
143  ]
144}
145
146config("public_napi_config") {
147  include_dirs = [
148    "${MEDIALIB_INTERFACES_PATH}/kits/js/include",
149    "${MEDIALIB_INTERFACES_PATH}/kits/js/include/napi",
150  ]
151}
152
153ohos_shared_library("medialibrary_nutils") {
154  public_configs = [ ":public_napi_config" ]
155  configs = [ ":napi_config" ]
156  sources = [
157    "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/src/ipc/util/user_define_ipc_client.cpp",
158    "${MEDIALIB_JS_PATH}/src/album_napi.cpp",
159    "${MEDIALIB_JS_PATH}/src/album_order_napi.cpp",
160    "${MEDIALIB_JS_PATH}/src/result_set_napi.cpp",
161    "${MEDIALIB_JS_PATH}/src/cloud_enhancement_napi.cpp",
162    "${MEDIALIB_JS_PATH}/src/cloud_enhancement_task_state_napi.cpp",
163    "${MEDIALIB_JS_PATH}/src/cloud_media_asset_manager_napi.cpp",
164    "${MEDIALIB_JS_PATH}/src/cloud_media_asset_status_napi.cpp",
165    "${MEDIALIB_JS_PATH}/src/confirm_callback.cpp",
166    "${MEDIALIB_JS_PATH}/src/default_album_name_callback.cpp",
167    "${MEDIALIB_JS_PATH}/src/delete_callback.cpp",
168    "${MEDIALIB_JS_PATH}/src/fetch_file_result_napi.cpp",
169    "${MEDIALIB_JS_PATH}/src/file_asset_napi.cpp",
170    "${MEDIALIB_JS_PATH}/src/highlight_album_napi.cpp",
171    "${MEDIALIB_JS_PATH}/src/media_album_change_request_napi.cpp",
172    "${MEDIALIB_JS_PATH}/src/media_asset_change_request_napi.cpp",
173    "${MEDIALIB_JS_PATH}/src/media_asset_data_handler.cpp",
174    "${MEDIALIB_JS_PATH}/src/media_asset_edit_data_napi.cpp",
175    "${MEDIALIB_JS_PATH}/src/media_asset_manager_napi.cpp",
176    "${MEDIALIB_JS_PATH}/src/media_assets_change_request_napi.cpp",
177    "${MEDIALIB_JS_PATH}/src/media_call_transcode.cpp",
178    "${MEDIALIB_JS_PATH}/src/media_change_request_napi.cpp",
179    "${MEDIALIB_JS_PATH}/src/media_library_comm_napi.cpp",
180    "${MEDIALIB_JS_PATH}/src/media_library_napi.cpp",
181    "${MEDIALIB_JS_PATH}/src/media_scanner_napi.cpp",
182    "${MEDIALIB_JS_PATH}/src/medialibrary_napi_utils.cpp",
183    "${MEDIALIB_JS_PATH}/src/medialibrary_notify_new_observer.cpp",
184    "${MEDIALIB_JS_PATH}/src/medialibrary_notify_utils.cpp",
185    "${MEDIALIB_JS_PATH}/src/modal_ui_callback.cpp",
186    "${MEDIALIB_JS_PATH}/src/moving_photo_call_transcoder.cpp",
187    "${MEDIALIB_JS_PATH}/src/moving_photo_napi.cpp",
188    "${MEDIALIB_JS_PATH}/src/napi_error.cpp",
189    "${MEDIALIB_JS_PATH}/src/photo_album_napi.cpp",
190    "${MEDIALIB_JS_PATH}/src/photo_asset_custom_record_manager_napi.cpp",
191    "${MEDIALIB_JS_PATH}/src/photo_asset_custom_record_napi.cpp",
192    "${MEDIALIB_JS_PATH}/src/photo_proxy_napi.cpp",
193    "${MEDIALIB_JS_PATH}/src/picture_handle_client.cpp",
194    "${MEDIALIB_JS_PATH}/src/request_photo_uris_read_permission_callback.cpp",
195    "${MEDIALIB_JS_PATH}/src/short_term_callback.cpp",
196    "${MEDIALIB_JS_PATH}/src/smart_album_napi.cpp",
197    "${MEDIALIB_JS_PATH}/src/thumbnail_manager.cpp",
198    "${MEDIALIB_JS_PATH}/src/userfile_client.cpp",
199    "${MEDIALIB_NEW_SERVICES_PATH}/media_notification/src//utils/media_notification_utils.cpp",
200    "${MEDIALIB_UTILS_PATH}/src/media_itypes_utils.cpp",
201  ]
202
203  media_asset_service_vo_source = [
204    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/commit_edited_asset_vo.cpp",
205    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/form_info_vo.cpp",
206    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/create_asset_vo.cpp",
207    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/clone_asset_vo.cpp",
208    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/convert_format_vo.cpp",
209    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/delete_photos_vo.cpp",
210    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/delete_photos_completed_vo.cpp",
211    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/asset_change_vo.cpp",
212    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/submit_cache_vo.cpp",
213    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/add_image_vo.cpp",
214    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/save_camera_photo_vo.cpp",
215    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/trash_photos_vo.cpp",
216    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/get_assets_vo.cpp",
217    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/get_index_construct_progress_vo.cpp",
218    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/revert_to_original_vo.cpp",
219    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/cloud_enhancement_vo.cpp",
220    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/modify_assets_vo.cpp",
221    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/retain_cloud_media_asset_vo.cpp",
222    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/start_download_cloud_media_vo.cpp",
223    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/grant_photo_uri_permission_vo.cpp",
224    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/grant_photo_uris_permission_vo.cpp",
225    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/cancel_photo_uri_permission_vo.cpp",
226    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/start_thumbnail_creation_task_vo.cpp",
227    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/stop_thumbnail_creation_task_vo.cpp",
228    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/get_asset_analysis_data_vo.cpp",
229    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/is_edited_vo.cpp",
230    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/request_edit_data_vo.cpp",
231    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/get_edit_data_vo.cpp",
232    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/start_asset_analysis_vo.cpp",
233    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/get_cloudmedia_asset_status_vo.cpp",
234    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/request_content_vo.cpp",
235    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/get_cloud_enhancement_pair_vo.cpp",
236    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/query_cloud_enhancement_task_state_vo.cpp",
237    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/query_photo_vo.cpp",
238    "${MEDIALIB_BUSINESS_PATH}/media_assets_manager/src/vo/adapted_vo.cpp",
239  ]
240
241  media_album_service_vo_source = [
242    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/create_album_vo.cpp",
243    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/delete_albums_vo.cpp",
244    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/delete_highlight_albums_vo.cpp",
245    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_set_album_name_vo.cpp",
246    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_set_cover_uri_vo.cpp",
247    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_dismiss_vo.cpp",
248    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_set_display_level_vo.cpp",
249    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_set_is_me_vo.cpp",
250    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/set_highlight_user_action_data_vo.cpp",
251    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/set_subtitle_vo.cpp",
252    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_add_assets_vo.cpp",
253    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_remove_assets_vo.cpp",
254    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_move_assets_vo.cpp",
255    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_recover_assets_vo.cpp",
256    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_delete_assets_vo.cpp",
257    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_dismiss_assets_vo.cpp",
258    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_merge_album_vo.cpp",
259    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_place_before_vo.cpp",
260    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/change_request_set_order_position_vo.cpp",
261    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/album_commit_modify_vo.cpp",
262    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/album_add_assets_vo.cpp",
263    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/album_remove_assets_vo.cpp",
264    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/album_recover_assets_vo.cpp",
265    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/album_photo_query_vo.cpp",
266    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/album_get_assets_vo.cpp",
267    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/query_albums_vo.cpp",
268    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/get_albums_by_ids_vo.cpp",
269    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/get_order_position_vo.cpp",
270    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/get_face_id_vo.cpp",
271    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/get_analysis_process_vo.cpp",
272    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/get_highlight_album_info_vo.cpp",
273    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/get_photo_index_vo.cpp",
274    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/query_result_vo.cpp",
275    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/get_photo_album_object_vo.cpp",
276    "${MEDIALIB_BUSINESS_PATH}/media_albums_manager/src/vo/set_photo_album_order_vo.cpp",
277  ]
278
279  sources += media_asset_service_vo_source
280  sources += media_album_service_vo_source
281
282  deps = [ "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library" ]
283
284  external_deps = [
285    "ability_base:want",
286    "ability_base:zuri",
287    "ability_runtime:ability_context_native",
288    "ability_runtime:ability_manager",
289    "ability_runtime:abilitykit_native",
290    "ability_runtime:app_context",
291    "ability_runtime:dataobs_manager",
292    "ability_runtime:extensionkit_native",
293    "ability_runtime:napi_base_context",
294    "ability_runtime:napi_common",
295    "ability_runtime:runtime",
296    "ability_runtime:service_extension",
297    "ability_runtime:ui_extension",
298    "access_token:libaccesstoken_sdk",
299    "access_token:libprivacy_sdk",
300    "access_token:libtokenid_sdk",
301    "app_file_service:fileuri_native",
302    "bundle_framework:appexecfwk_core",
303    "c_utils:utils",
304    "common_event_service:cesfwk_innerkits",
305    "data_share:datashare_common",
306    "data_share:datashare_consumer",
307    "e2fsprogs:libext2_uuid",
308    "hilog:libhilog",
309    "hitrace:hitrace_meter",
310    "i18n:intl_util",
311    "image_framework:image",
312    "image_framework:image_native",
313    "init:libbegetutil",
314    "ipc:ipc_core",
315    "ipc:ipc_single",
316    "ipc:rpc",
317    "ipc:ipc_napi",
318    "kv_store:distributeddata_inner",
319    "libexif:libexif",
320    "napi:ace_napi",
321    "player_framework:media_client",
322    "relational_store:native_rdb",
323    "relational_store:rdb_data_share_adapter",
324    "samgr:samgr_proxy",
325    "window_manager:libwm",
326    "e2fsprogs:libext2_uuid",
327  ]
328
329  defines = []
330  defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ]
331  if (media_library_feature_mtp) {
332    defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ]
333  }
334  if (!media_library_link_opt) {
335    sanitize = {
336      cfi = true
337      cfi_cross_dso = true
338      debug = false
339      integer_overflow = true
340      ubsan = true
341      boundary_sanitize = true
342      stack_protector_ret = true
343    }
344  }
345
346  if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) &&
347      defined(global_parts_info.resourceschedule_memmgr_override)) {
348    defines += [ "IMAGE_PURGEABLE_PIXELMAP" ]
349    external_deps += [
350      "ffrt:libffrt",
351      "memmgr_override:libpurgeablemem_plugin",
352      "memmgr_override:purgeable_pixelmap_builder",
353    ]
354  }
355
356  if (defined(global_parts_info) &&
357      defined(
358          global_parts_info.device_cloud_gateway_media_cloud_enhance_service) &&
359      !factory) {
360    defines += [ "ABILITY_CLOUD_ENHANCEMENT_SUPPORT" ]
361  }
362
363  if (defined(global_parts_info) &&
364      defined(global_parts_info.multimedia_video_processing_engine)) {
365    defines += [ "USE_VIDEO_PROCESSING_ENGINE" ]
366  }
367
368  if (defined(global_parts_info) &&
369      defined(global_parts_info.multimedia_video_processing_engine_ext)) {
370    defines += [ "USE_VIDEO_PROCESSING_ENGINE_EXT" ]
371  }
372
373  if (ability_runtime_graphics) {
374    external_deps += [
375      "ace_engine:ace_uicontent",
376      "image_framework:image_native",
377    ]
378    cflags_cc = [ "-DHAS_ACE_ENGINE_PART" ]
379  }
380
381  if (media_library_device_manager_enabled) {
382    defines += [ "DM_DEVICE_INFO_ENABLE" ]
383    external_deps += [ "device_manager:devicemanagersdk" ]
384  }
385
386  innerapi_tags = [ "platformsdk" ]
387  subsystem_name = "multimedia"
388  part_name = "media_library"
389}
390
391ohos_shared_library("medialibrary") {
392  configs = [
393    ":public_napi_config",
394    ":napi_config",
395  ]
396
397  version_script = "libmedialibrary.map"
398
399  sources = [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_medialibrary.cpp" ]
400
401  deps = [
402    ":medialibrary_nutils",
403    ":medialibraryinf_abc",
404    ":medialibraryinf_js",
405    "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library",
406  ]
407
408  external_deps = [
409    "ability_base:want",
410    "ability_base:zuri",
411    "ability_runtime:ability_manager",
412    "ability_runtime:abilitykit_native",
413    "ability_runtime:napi_base_context",
414    "c_utils:utils",
415    "data_share:datashare_consumer",
416    "device_manager:devicemanagersdk",
417    "hilog:libhilog",
418    "i18n:intl_util",
419    "ipc:ipc_napi",
420    "ipc:ipc_single",
421    "napi:ace_napi",
422    "e2fsprogs:libext2_uuid",
423  ]
424
425  defines = []
426  defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ]
427  if (media_library_feature_mtp) {
428    defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ]
429  }
430  if (defined(global_parts_info) &&
431      defined(global_parts_info.open_source_libyuv)) {
432    defines += [ "EXT_PIXEL" ]
433  }
434  if (!media_library_link_opt) {
435    sanitize = {
436      cfi = true
437      cfi_cross_dso = true
438      debug = false
439      integer_overflow = true
440      ubsan = true
441      boundary_sanitize = true
442      stack_protector_ret = true
443    }
444  }
445
446  if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) &&
447      defined(global_parts_info.resourceschedule_memmgr_override)) {
448    defines += [ "IMAGE_PURGEABLE_PIXELMAP" ]
449    external_deps += [
450      "memmgr_override:libpurgeablemem_plugin",
451      "memmgr_override:purgeable_pixelmap_builder",
452    ]
453  }
454
455  if (ability_runtime_graphics) {
456    external_deps += [ "image_framework:image_native" ]
457  }
458
459  relative_install_dir = "module/multimedia"
460  subsystem_name = "multimedia"
461  part_name = "media_library"
462}
463
464ohos_shared_library("userfilemanager") {
465  configs = [
466    ":public_napi_config",
467    ":napi_config",
468  ]
469
470  sources =
471      [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_userfile_manager.cpp" ]
472
473  deps = [
474    ":medialibrary_nutils",
475    "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library",
476  ]
477
478  external_deps = [
479    "ability_base:want",
480    "ability_base:zuri",
481    "ability_runtime:ability_manager",
482    "ability_runtime:abilitykit_native",
483    "ability_runtime:napi_base_context",
484    "c_utils:utils",
485    "data_share:datashare_consumer",
486    "device_manager:devicemanagersdk",
487    "hilog:libhilog",
488    "i18n:intl_util",
489    "ipc:ipc_napi",
490    "ipc:ipc_single",
491    "napi:ace_napi",
492    "e2fsprogs:libext2_uuid",
493  ]
494
495  defines = []
496  defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ]
497  if (media_library_feature_mtp) {
498    defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ]
499  }
500  if (!media_library_link_opt) {
501    sanitize = {
502      cfi = true
503      cfi_cross_dso = true
504      debug = false
505      integer_overflow = true
506      ubsan = true
507      boundary_sanitize = true
508      stack_protector_ret = true
509    }
510  }
511
512  if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) &&
513      defined(global_parts_info.resourceschedule_memmgr_override)) {
514    defines += [ "IMAGE_PURGEABLE_PIXELMAP" ]
515    external_deps += [
516      "memmgr_override:libpurgeablemem_plugin",
517      "memmgr_override:purgeable_pixelmap_builder",
518    ]
519  }
520
521  if (ability_runtime_graphics) {
522    external_deps += [ "image_framework:image_native" ]
523  }
524
525  relative_install_dir = "module/filemanagement"
526  subsystem_name = "multimedia"
527  part_name = "media_library"
528}
529
530ohos_abc("photoaccesshelper") {
531  sources = [ "${MEDIALIB_JS_PATH}/src/photoaccesshelperinf.js" ]
532  output_name = "photoaccesshelper"
533  install_images = [ "system" ]
534  module_install_dir = "etc/abc/file"
535  subsystem_name = "multimedia"
536  part_name = "media_library"
537}
538
539ohos_shared_library("photoaccesshelpernative") {
540  configs = [
541    ":public_napi_config",
542    ":napi_config_photoaccesshelpernative",
543  ]
544
545  sources =
546      [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_photoaccess_helper.cpp" ]
547
548  deps = [
549    ":medialibrary_nutils",
550    "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library",
551  ]
552
553  external_deps = [
554    "ability_base:want",
555    "ability_base:zuri",
556    "ability_runtime:ability_manager",
557    "ability_runtime:abilitykit_native",
558    "ability_runtime:napi_base_context",
559    "c_utils:utils",
560    "data_share:datashare_common",
561    "data_share:datashare_consumer",
562    "e2fsprogs:libext2_blkid",
563    "hilog:libhilog",
564    "i18n:intl_util",
565    "ipc:ipc_napi",
566    "napi:ace_napi",
567    "player_framework:media_client",
568  ]
569
570  defines = []
571  defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ]
572  if (media_library_feature_mtp) {
573    defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ]
574  }
575  if (!media_library_link_opt) {
576    sanitize = {
577      cfi = true
578      cfi_cross_dso = true
579      debug = false
580      integer_overflow = true
581      ubsan = true
582      boundary_sanitize = true
583      stack_protector_ret = true
584    }
585  }
586
587  if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) &&
588      defined(global_parts_info.resourceschedule_memmgr_override)) {
589    defines += [ "IMAGE_PURGEABLE_PIXELMAP" ]
590    external_deps += [
591      "memmgr_override:libpurgeablemem_plugin",
592      "memmgr_override:purgeable_pixelmap_builder",
593    ]
594  }
595
596  if (ability_runtime_graphics) {
597    external_deps += [ "image_framework:image_native" ]
598  }
599
600  relative_install_dir = "module/file"
601  subsystem_name = "multimedia"
602  part_name = "media_library"
603}
604
605js_declaration("photopickercomponent_js") {
606  part_name = "media_library"
607  sources = [ "./@ohos.file.PhotoPickerComponent.d.ets" ]
608}
609
610# compile .js to .abc.
611es2abc_gen_abc("gen_photopickercomponent_abc") {
612  src_js = rebase_path("${MEDIALIB_JS_PATH}/src/photopickercomponent.js")
613  dst_file = rebase_path(target_out_dir + "/photopickercomponent.abc")
614  in_puts = [ "${MEDIALIB_JS_PATH}/src/photopickercomponent.js" ]
615  out_puts = [ target_out_dir + "/photopickercomponent.abc" ]
616  extra_args = [ "--module" ]
617}
618
619abc_output_path = get_label_info(":photopickercomponent_abc", "target_out_dir")
620photopickercomponent_abc_obj_path =
621    abc_output_path + "/photopickercomponent_abc.o"
622gen_js_obj("photopickercomponent_abc") {
623  input = "$target_out_dir/photopickercomponent.abc"
624  output = photopickercomponent_abc_obj_path
625  dep = ":gen_photopickercomponent_abc"
626}
627
628ohos_shared_library("photopickercomponent") {
629  sources = [ "${MEDIALIB_JS_PATH}/src/photopickercomponent.cpp" ]
630
631  deps = [ ":photopickercomponent_abc" ]
632
633  external_deps = [
634    "hilog:libhilog",
635    "napi:ace_napi",
636  ]
637
638  if (!media_library_link_opt) {
639    sanitize = {
640      cfi = true
641      cfi_cross_dso = true
642      debug = false
643      integer_overflow = true
644      ubsan = true
645      boundary_sanitize = true
646      stack_protector_ret = true
647    }
648  }
649
650  relative_install_dir = "module/file"
651  subsystem_name = "multimedia"
652  part_name = "media_library"
653}
654
655js_declaration("albumpickercomponent_js") {
656  part_name = "media_library"
657  sources = [ "./@ohos.file.AlbumPickerComponent.d.ets" ]
658}
659
660# compile .js to .abc.
661es2abc_gen_abc("gen_albumpickercomponent_abc") {
662  src_js = rebase_path("${MEDIALIB_JS_PATH}/src/albumpickercomponent.js")
663  dst_file = rebase_path(target_out_dir + "/albumpickercomponent.abc")
664  in_puts = [ "${MEDIALIB_JS_PATH}/src/albumpickercomponent.js" ]
665  out_puts = [ target_out_dir + "/albumpickercomponent.abc" ]
666  extra_args = [ "--module" ]
667}
668
669abc_output_path = get_label_info(":albumpickercomponent_abc", "target_out_dir")
670albumpickercomponent_abc_obj_path =
671    abc_output_path + "/albumpickercomponent_abc.o"
672gen_js_obj("albumpickercomponent_abc") {
673  input = "$target_out_dir/albumpickercomponent.abc"
674  output = albumpickercomponent_abc_obj_path
675  dep = ":gen_albumpickercomponent_abc"
676}
677
678ohos_shared_library("albumpickercomponent") {
679  sources = [ "${MEDIALIB_JS_PATH}/src/albumpickercomponent.cpp" ]
680
681  deps = [ ":albumpickercomponent_abc" ]
682
683  external_deps = [
684    "hilog:libhilog",
685    "napi:ace_napi",
686  ]
687
688  if (!media_library_link_opt) {
689    sanitize = {
690      cfi = true
691      cfi_cross_dso = true
692      debug = false
693      integer_overflow = true
694      ubsan = true
695      boundary_sanitize = true
696      stack_protector_ret = true
697    }
698  }
699
700  relative_install_dir = "module/file"
701  subsystem_name = "multimedia"
702  part_name = "media_library"
703}
704
705js_declaration("recentphotocomponent_js") {
706  part_name = "media_library"
707  sources = [ "./@ohos.file.RecentPhotoComponent.d.ets" ]
708}
709
710# compile .js to .abc.
711es2abc_gen_abc("gen_recentphotocomponent_abc") {
712  src_js = rebase_path("${MEDIALIB_JS_PATH}/src/recentphotocomponent.js")
713  dst_file = rebase_path(target_out_dir + "/recentphotocomponent.abc")
714  in_puts = [ "${MEDIALIB_JS_PATH}/src/recentphotocomponent.js" ]
715  out_puts = [ target_out_dir + "/recentphotocomponent.abc" ]
716  extra_args = [ "--module" ]
717}
718
719abc_output_path = get_label_info(":recentphotocomponent_abc", "target_out_dir")
720recentphotocomponent_abc_obj_path =
721    abc_output_path + "/recentphotocomponent_abc.o"
722gen_js_obj("recentphotocomponent_abc") {
723  input = "$target_out_dir/recentphotocomponent.abc"
724  output = recentphotocomponent_abc_obj_path
725  dep = ":gen_recentphotocomponent_abc"
726}
727
728ohos_shared_library("recentphotocomponent") {
729  sources = [ "${MEDIALIB_JS_PATH}/src/recentphotocomponent.cpp" ]
730
731  deps = [ ":recentphotocomponent_abc" ]
732
733  external_deps = [
734    "hilog:libhilog",
735    "napi:ace_napi",
736  ]
737
738  if (!media_library_link_opt) {
739    sanitize = {
740      cfi = true
741      cfi_cross_dso = true
742      debug = false
743      integer_overflow = true
744      ubsan = true
745      boundary_sanitize = true
746      stack_protector_ret = true
747    }
748  }
749
750  relative_install_dir = "module/file"
751  subsystem_name = "multimedia"
752  part_name = "media_library"
753}
754
755ohos_shared_library("sendablephotoaccesshelper") {
756  include_dirs = [
757    "${MEDIALIB_ACCURATE_REFRESH_PATH}/include",
758    "${MEDIALIB_NEW_SERVICES_PATH}/media_notification/include/data",
759    "${MEDIALIB_NEW_SERVICES_PATH}/media_notification/include/utils",
760    "${MEDIALIB_INTERFACES_PATH}/kits/js/include",
761    "${MEDIALIB_INTERFACES_PATH}/kits/js/include/sendable",
762    "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include",
763    "${MEDIALIB_INNERKITS_PATH}/media_library_helper/include",
764    "${MEDIALIB_SERVICES_PATH}/media_dfx/include",
765    "${MEDIALIB_SERVICES_PATH}/media_scanner/include/callback",
766    "${MEDIALIB_SERVICES_PATH}/media_thumbnail/include",
767    "${MEDIALIB_SERVICES_PATH}/media_analysis_extension/include",
768    "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/include",
769    "${MEDIALIB_SERVICES_PATH}/media_async_worker/include",
770    "${MEDIALIB_UTILS_PATH}/include",
771    "${MEDIALIB_INTERFACES_PATH}/inner_api/media_library_helper/include",
772    "${MEDIALIB_INTERFACES_PATH}/kits/js/include",
773    "${MEDIALIB_INTERFACES_PATH}/innerkits/native/include",
774    "${MEDIALIB_UTILS_PATH}/include",
775    "${MEDIALIB_SERVICES_PATH}/media_library/include",
776  ]
777
778  sources = [
779    "${MEDIALIB_JS_PATH}/src/sendable/native_module_ohos_photoaccess_helper_sendable.cpp",
780    "${MEDIALIB_JS_PATH}/src/sendable/sendable_fetch_file_result_napi.cpp",
781    "${MEDIALIB_JS_PATH}/src/sendable/sendable_file_asset_napi.cpp",
782    "${MEDIALIB_JS_PATH}/src/sendable/sendable_medialibrary_napi_utils.cpp",
783    "${MEDIALIB_JS_PATH}/src/sendable/sendable_photo_access_helper_napi.cpp",
784    "${MEDIALIB_JS_PATH}/src/sendable/sendable_photo_album_napi.cpp",
785  ]
786
787  deps = [
788    ":medialibrary_nutils",
789    "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library",
790  ]
791
792  external_deps = [
793    "ability_base:zuri",
794    "ability_runtime:ability_manager",
795    "ability_runtime:abilitykit_native",
796    "ability_runtime:dataobs_manager",
797    "ability_runtime:extensionkit_native",
798    "ability_runtime:napi_base_context",
799    "ability_runtime:napi_common",
800    "access_token:libaccesstoken_sdk",
801    "access_token:libprivacy_sdk",
802    "access_token:libtokenid_sdk",
803    "app_file_service:fileuri_native",
804    "bundle_framework:appexecfwk_core",
805    "c_utils:utils",
806    "common_event_service:cesfwk_innerkits",
807    "data_share:datashare_common",
808    "data_share:datashare_consumer",
809    "hilog:libhilog",
810    "hitrace:hitrace_meter",
811    "i18n:intl_util",
812    "image_framework:image",
813    "image_framework:image_native",
814    "init:libbegetutil",
815    "ipc:ipc_core",
816    "ipc:ipc_single",
817    "ipc:rpc",
818    "ipc:ipc_napi",
819    "napi:ace_napi",
820    "player_framework:media_client",
821    "relational_store:native_rdb",
822  ]
823
824  defines = []
825  defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ]
826  if (media_library_feature_mtp) {
827    defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ]
828  }
829  if (!media_library_link_opt) {
830    sanitize = {
831      cfi = true
832      cfi_cross_dso = true
833      debug = false
834      integer_overflow = true
835      ubsan = true
836      boundary_sanitize = true
837      stack_protector_ret = true
838    }
839  }
840
841  if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) &&
842      defined(global_parts_info.resourceschedule_memmgr_override)) {
843    defines += [ "IMAGE_PURGEABLE_PIXELMAP" ]
844    external_deps += [
845      "memmgr_override:libpurgeablemem_plugin",
846      "memmgr_override:purgeable_pixelmap_builder",
847    ]
848  }
849
850  if (ability_runtime_graphics) {
851    cflags_cc = [ "-DHAS_ACE_ENGINE_PART" ]
852  }
853
854  output_name = "libsendablephotoaccesshelper"
855  relative_install_dir = "module/file"
856  subsystem_name = "multimedia"
857  part_name = "media_library"
858}
859