• 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/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_GLOBAL_PATH}/i18n/frameworks/intl/include",
66    "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include",
67    "${MEDIALIB_INNERKITS_PATH}/media_library_helper/include",
68    "${MEDIALIB_SERVICES_PATH}/media_dfx/include",
69    "${MEDIALIB_SERVICES_PATH}/media_scanner/include/callback",
70    "${MEDIALIB_SERVICES_PATH}/media_thumbnail/include",
71    "${MEDIALIB_SERVICES_PATH}/media_analysis_extension/include",
72    "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/include",
73    "${MEDIALIB_SERVICES_PATH}/media_async_worker/include",
74    "${MEDIALIB_UTILS_PATH}/include",
75    "${MEDIALIB_INTERFACES_PATH}/inner_api/media_library_helper/include",
76    "${MEDIALIB_INTERFACES_PATH}/innerkits/native/include",
77    "${MEDIALIB_UTILS_PATH}/include",
78    "${MEDIALIB_SERVICES_PATH}/media_library/include",
79    "../../../../../distributedhardware/device_manager/interfaces/inner_kits/native_cpp/include",
80    "//third_party/e2fsprogs/e2fsprogs/lib",
81    "${MEDIALIB_SERVICES_PATH}/media_cloud_sync/include/media_cloud_asset_download",
82  ]
83
84  if (defined(medialibrary_mtp_enable)) {
85    include_dirs += [ "${MEDIALIB_MTP_PATH}/include" ]
86  }
87
88  if (defined(global_parts_info) &&
89      defined(
90          global_parts_info.device_cloud_gateway_media_cloud_enhance_service)) {
91    include_dirs += [ "${MEDIALIB_CLOUD_ENHANCEMENT_SERVICE_PATH}/interfaces/inner_api/include/c_api" ]
92  }
93
94  ldflags = [ "-Wl,--gc-sections" ]
95
96  cflags = [
97    "-fvisibility=hidden",
98    "-fdata-sections",
99    "-ffunction-sections",
100    "-Os",
101  ]
102
103  cflags_cc = [
104    "-fvisibility-inlines-hidden",
105    "-Os",
106  ]
107}
108
109config("public_napi_config") {
110  include_dirs = [ "${MEDIALIB_INTERFACES_PATH}/kits/js/include" ]
111}
112
113ohos_shared_library("medialibrary_nutils") {
114  public_configs = [ ":public_napi_config" ]
115  configs = [ ":napi_config" ]
116  sources = [
117    "${MEDIALIB_JS_PATH}/src/album_napi.cpp",
118    "${MEDIALIB_JS_PATH}/src/cloud_enhancement_napi.cpp",
119    "${MEDIALIB_JS_PATH}/src/cloud_enhancement_task_state_napi.cpp",
120    "${MEDIALIB_JS_PATH}/src/cloud_media_asset_manager_napi.cpp",
121    "${MEDIALIB_JS_PATH}/src/cloud_media_asset_status_napi.cpp",
122    "${MEDIALIB_JS_PATH}/src/confirm_callback.cpp",
123    "${MEDIALIB_JS_PATH}/src/delete_callback.cpp",
124    "${MEDIALIB_JS_PATH}/src/fetch_file_result_napi.cpp",
125    "${MEDIALIB_JS_PATH}/src/file_asset_napi.cpp",
126    "${MEDIALIB_JS_PATH}/src/highlight_album_napi.cpp",
127    "${MEDIALIB_JS_PATH}/src/media_album_change_request_napi.cpp",
128    "${MEDIALIB_JS_PATH}/src/media_asset_change_request_napi.cpp",
129    "${MEDIALIB_JS_PATH}/src/media_asset_data_handler.cpp",
130    "${MEDIALIB_JS_PATH}/src/media_asset_edit_data_napi.cpp",
131    "${MEDIALIB_JS_PATH}/src/media_asset_manager_napi.cpp",
132    "${MEDIALIB_JS_PATH}/src/media_assets_change_request_napi.cpp",
133    "${MEDIALIB_JS_PATH}/src/media_call_transcode.cpp",
134    "${MEDIALIB_JS_PATH}/src/media_change_request_napi.cpp",
135    "${MEDIALIB_JS_PATH}/src/media_library_comm_napi.cpp",
136    "${MEDIALIB_JS_PATH}/src/media_library_napi.cpp",
137    "${MEDIALIB_JS_PATH}/src/media_scanner_napi.cpp",
138    "${MEDIALIB_JS_PATH}/src/medialibrary_napi_utils.cpp",
139    "${MEDIALIB_JS_PATH}/src/modal_ui_callback.cpp",
140    "${MEDIALIB_JS_PATH}/src/moving_photo_napi.cpp",
141    "${MEDIALIB_JS_PATH}/src/napi_error.cpp",
142    "${MEDIALIB_JS_PATH}/src/photo_album_napi.cpp",
143    "${MEDIALIB_JS_PATH}/src/photo_proxy_napi.cpp",
144    "${MEDIALIB_JS_PATH}/src/picture_handle_client.cpp",
145    "${MEDIALIB_JS_PATH}/src/request_photo_uris_read_permission_callback.cpp",
146    "${MEDIALIB_JS_PATH}/src/short_term_callback.cpp",
147    "${MEDIALIB_JS_PATH}/src/smart_album_napi.cpp",
148    "${MEDIALIB_JS_PATH}/src/thumbnail_manager.cpp",
149    "${MEDIALIB_JS_PATH}/src/userfile_client.cpp",
150  ]
151
152  deps = [
153    "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library",
154    "//third_party/e2fsprogs:libext2_uuid",
155  ]
156
157  external_deps = [
158    "ability_base:want",
159    "ability_base:zuri",
160    "ability_runtime:ability_context_native",
161    "ability_runtime:ability_manager",
162    "ability_runtime:abilitykit_native",
163    "ability_runtime:app_context",
164    "ability_runtime:dataobs_manager",
165    "ability_runtime:napi_base_context",
166    "ability_runtime:runtime",
167    "ability_runtime:service_extension",
168    "ability_runtime:ui_extension",
169    "access_token:libaccesstoken_sdk",
170    "access_token:libprivacy_sdk",
171    "access_token:libtokenid_sdk",
172    "ace_engine:ace_uicontent",
173    "app_file_service:fileuri_native",
174    "bundle_framework:appexecfwk_core",
175    "c_utils:utils",
176    "common_event_service:cesfwk_innerkits",
177    "data_share:datashare_common",
178    "data_share:datashare_consumer",
179    "hilog:libhilog",
180    "hitrace:hitrace_meter",
181    "i18n:intl_util",
182    "image_framework:image",
183    "image_framework:image_native",
184    "init:libbegetutil",
185    "ipc:ipc_core",
186    "ipc:rpc",
187    "kv_store:distributeddata_inner",
188    "libexif:libexif",
189    "napi:ace_napi",
190    "player_framework:media_client",
191    "relational_store:native_rdb",
192    "relational_store:rdb_data_share_adapter",
193    "window_manager:libwm",
194  ]
195
196  defines = []
197  defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ]
198  if (defined(medialibrary_mtp_enable)) {
199    defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ]
200  }
201  if (!media_library_link_opt) {
202    sanitize = {
203      cfi = true
204      cfi_cross_dso = true
205      debug = false
206      integer_overflow = true
207      ubsan = true
208      boundary_sanitize = true
209      stack_protector_ret = true
210    }
211  }
212
213  if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) &&
214      defined(global_parts_info.resourceschedule_memmgr_override)) {
215    defines += [ "IMAGE_PURGEABLE_PIXELMAP" ]
216    external_deps += [
217      "memmgr:libpurgeablemem_plugin",
218      "memmgr:purgeable_pixelmap_builder",
219    ]
220  }
221
222  if (defined(global_parts_info) &&
223      defined(
224          global_parts_info.device_cloud_gateway_media_cloud_enhance_service)) {
225    defines += [ "ABILITY_CLOUD_ENHANCEMENT_SUPPORT" ]
226  }
227
228  if (defined(global_parts_info) &&
229      defined(global_parts_info.multimedia_video_processing_engine)) {
230    defines += [ "USE_VIDEO_PROCESSING_ENGINE" ]
231  }
232
233  if (ability_runtime_graphics) {
234    external_deps += [ "image_framework:image_native" ]
235  }
236
237  subsystem_name = "multimedia"
238  part_name = "media_library"
239}
240
241ohos_shared_library("medialibrary") {
242  configs = [
243    ":public_napi_config",
244    ":napi_config",
245  ]
246
247  version_script = "libmedialibrary.map"
248
249  sources = [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_medialibrary.cpp" ]
250
251  deps = [
252    ":medialibrary_nutils",
253    ":medialibraryinf_abc",
254    ":medialibraryinf_js",
255    "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library",
256  ]
257
258  external_deps = [
259    "ability_base:want",
260    "ability_base:zuri",
261    "ability_runtime:ability_manager",
262    "ability_runtime:abilitykit_native",
263    "ability_runtime:napi_base_context",
264    "c_utils:utils",
265    "data_share:datashare_consumer",
266    "hilog:libhilog",
267    "napi:ace_napi",
268  ]
269
270  defines = []
271  defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ]
272  if (defined(medialibrary_mtp_enable)) {
273    defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ]
274  }
275  if (defined(global_parts_info) &&
276      defined(global_parts_info.open_source_libyuv)) {
277    defines += [ "EXT_PIXEL" ]
278  }
279  if (!media_library_link_opt) {
280    sanitize = {
281      cfi = true
282      cfi_cross_dso = true
283      debug = false
284      integer_overflow = true
285      ubsan = true
286      boundary_sanitize = true
287      stack_protector_ret = true
288    }
289  }
290
291  if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) &&
292      defined(global_parts_info.resourceschedule_memmgr_override)) {
293    defines += [ "IMAGE_PURGEABLE_PIXELMAP" ]
294    external_deps += [
295      "memmgr:libpurgeablemem_plugin",
296      "memmgr:purgeable_pixelmap_builder",
297    ]
298  }
299
300  if (ability_runtime_graphics) {
301    external_deps += [ "image_framework:image_native" ]
302  }
303
304  relative_install_dir = "module/multimedia"
305  subsystem_name = "multimedia"
306  part_name = "media_library"
307}
308
309ohos_shared_library("userfilemanager") {
310  configs = [
311    ":public_napi_config",
312    ":napi_config",
313  ]
314
315  sources =
316      [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_userfile_manager.cpp" ]
317
318  deps = [
319    ":medialibrary_nutils",
320    "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library",
321  ]
322
323  external_deps = [
324    "ability_base:want",
325    "ability_base:zuri",
326    "ability_runtime:ability_manager",
327    "ability_runtime:abilitykit_native",
328    "ability_runtime:napi_base_context",
329    "c_utils:utils",
330    "data_share:datashare_consumer",
331    "hilog:libhilog",
332    "napi:ace_napi",
333  ]
334
335  defines = []
336  defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ]
337  if (defined(medialibrary_mtp_enable)) {
338    defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ]
339  }
340  if (!media_library_link_opt) {
341    sanitize = {
342      cfi = true
343      cfi_cross_dso = true
344      debug = false
345      integer_overflow = true
346      ubsan = true
347      boundary_sanitize = true
348      stack_protector_ret = true
349    }
350  }
351
352  if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) &&
353      defined(global_parts_info.resourceschedule_memmgr_override)) {
354    defines += [ "IMAGE_PURGEABLE_PIXELMAP" ]
355    external_deps += [
356      "memmgr:libpurgeablemem_plugin",
357      "memmgr:purgeable_pixelmap_builder",
358    ]
359  }
360
361  if (ability_runtime_graphics) {
362    external_deps += [ "image_framework:image_native" ]
363  }
364
365  relative_install_dir = "module/filemanagement"
366  subsystem_name = "multimedia"
367  part_name = "media_library"
368}
369
370js_declaration("photoaccesshelper_js") {
371  part_name = "media_library"
372  sources = [ "./@ohos.file.photoAccessHelper.d.ts" ]
373}
374
375# compile .js to .abc.
376action("gen_photoaccesshelperinf_abc") {
377  visibility = [ ":*" ]
378  script = "../../../../../../arkcompiler/ets_frontend/es2panda/scripts/generate_js_bytecode.py"
379
380  args = [
381    "--src-js",
382    rebase_path("${MEDIALIB_JS_PATH}/src/photoaccesshelperinf.js"),
383    "--dst-file",
384    rebase_path(target_out_dir + "/photoaccesshelperinf.abc"),
385    "--frontend-tool-path",
386    rebase_path("${es2abc_build_path}"),
387    "--module",
388  ]
389  deps =
390      [ "../../../../../../arkcompiler/ets_frontend/es2panda:es2panda_build" ]
391
392  inputs = [ "${MEDIALIB_JS_PATH}/src/photoaccesshelperinf.js" ]
393  outputs = [ target_out_dir + "/photoaccesshelperinf.abc" ]
394}
395
396base_output_path = get_label_info(":photoaccesshelperinf_js", "target_out_dir")
397photoaccesshelperinf_obj_path = base_output_path + "/photoaccesshelperinf.o"
398gen_js_obj("photoaccesshelperinf_js") {
399  input = "${MEDIALIB_JS_PATH}/src/photoaccesshelperinf.js"
400  output = photoaccesshelperinf_obj_path
401  dep = ":gen_photoaccesshelperinf_abc"
402}
403
404abc_output_path = get_label_info(":photoaccesshelperinf_abc", "target_out_dir")
405photoaccesshelperinf_abc_obj_path =
406    abc_output_path + "/photoaccesshelperinf_abc.o"
407gen_js_obj("photoaccesshelperinf_abc") {
408  input = "$target_out_dir/photoaccesshelperinf.abc"
409  output = photoaccesshelperinf_abc_obj_path
410  dep = ":gen_photoaccesshelperinf_abc"
411}
412
413ohos_shared_library("photoaccesshelper") {
414  configs = [
415    ":public_napi_config",
416    ":napi_config",
417  ]
418
419  sources =
420      [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_photoaccess_helper.cpp" ]
421
422  deps = [
423    ":medialibrary_nutils",
424    ":photoaccesshelperinf_abc",
425    ":photoaccesshelperinf_js",
426    "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library",
427  ]
428
429  external_deps = [
430    "ability_base:want",
431    "ability_base:zuri",
432    "ability_runtime:ability_manager",
433    "ability_runtime:abilitykit_native",
434    "ability_runtime:napi_base_context",
435    "c_utils:utils",
436    "data_share:datashare_common",
437    "data_share:datashare_consumer",
438    "hilog:libhilog",
439    "napi:ace_napi",
440    "player_framework:media_client",
441  ]
442
443  defines = []
444  defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ]
445  if (defined(medialibrary_mtp_enable)) {
446    defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ]
447  }
448  if (!media_library_link_opt) {
449    sanitize = {
450      cfi = true
451      cfi_cross_dso = true
452      debug = false
453      integer_overflow = true
454      ubsan = true
455      boundary_sanitize = true
456      stack_protector_ret = true
457    }
458  }
459
460  if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) &&
461      defined(global_parts_info.resourceschedule_memmgr_override)) {
462    defines += [ "IMAGE_PURGEABLE_PIXELMAP" ]
463    external_deps += [
464      "memmgr:libpurgeablemem_plugin",
465      "memmgr:purgeable_pixelmap_builder",
466    ]
467  }
468
469  if (ability_runtime_graphics) {
470    external_deps += [ "image_framework:image_native" ]
471  }
472
473  relative_install_dir = "module/file"
474  subsystem_name = "multimedia"
475  part_name = "media_library"
476}
477
478js_declaration("photopickercomponent_js") {
479  part_name = "media_library"
480  sources = [ "./@ohos.file.PhotoPickerComponent.d.ets" ]
481}
482
483# compile .js to .abc.
484es2abc_gen_abc("gen_photopickercomponent_abc") {
485  src_js = rebase_path("${MEDIALIB_JS_PATH}/src/photopickercomponent.js")
486  dst_file = rebase_path(target_out_dir + "/photopickercomponent.abc")
487  in_puts = [ "${MEDIALIB_JS_PATH}/src/photopickercomponent.js" ]
488  out_puts = [ target_out_dir + "/photopickercomponent.abc" ]
489  extra_args = [ "--module" ]
490}
491
492abc_output_path = get_label_info(":photopickercomponent_abc", "target_out_dir")
493photopickercomponent_abc_obj_path =
494    abc_output_path + "/photopickercomponent_abc.o"
495gen_js_obj("photopickercomponent_abc") {
496  input = "$target_out_dir/photopickercomponent.abc"
497  output = photopickercomponent_abc_obj_path
498  dep = ":gen_photopickercomponent_abc"
499}
500
501ohos_shared_library("photopickercomponent") {
502  sources = [ "${MEDIALIB_JS_PATH}/src/photopickercomponent.cpp" ]
503
504  deps = [ ":photopickercomponent_abc" ]
505
506  external_deps = [
507    "hilog:libhilog",
508    "napi:ace_napi",
509  ]
510
511  if (!media_library_link_opt) {
512    sanitize = {
513      cfi = true
514      cfi_cross_dso = true
515      debug = false
516      integer_overflow = true
517      ubsan = true
518      boundary_sanitize = true
519      stack_protector_ret = true
520    }
521  }
522
523  relative_install_dir = "module/file"
524  subsystem_name = "multimedia"
525  part_name = "media_library"
526}
527
528js_declaration("albumpickercomponent_js") {
529  part_name = "media_library"
530  sources = [ "./@ohos.file.AlbumPickerComponent.d.ets" ]
531}
532
533# compile .js to .abc.
534es2abc_gen_abc("gen_albumpickercomponent_abc") {
535  src_js = rebase_path("${MEDIALIB_JS_PATH}/src/albumpickercomponent.js")
536  dst_file = rebase_path(target_out_dir + "/albumpickercomponent.abc")
537  in_puts = [ "${MEDIALIB_JS_PATH}/src/albumpickercomponent.js" ]
538  out_puts = [ target_out_dir + "/albumpickercomponent.abc" ]
539  extra_args = [ "--module" ]
540}
541
542abc_output_path = get_label_info(":albumpickercomponent_abc", "target_out_dir")
543albumpickercomponent_abc_obj_path =
544    abc_output_path + "/albumpickercomponent_abc.o"
545gen_js_obj("albumpickercomponent_abc") {
546  input = "$target_out_dir/albumpickercomponent.abc"
547  output = albumpickercomponent_abc_obj_path
548  dep = ":gen_albumpickercomponent_abc"
549}
550
551ohos_shared_library("albumpickercomponent") {
552  sources = [ "${MEDIALIB_JS_PATH}/src/albumpickercomponent.cpp" ]
553
554  deps = [ ":albumpickercomponent_abc" ]
555
556  external_deps = [
557    "hilog:libhilog",
558    "napi:ace_napi",
559  ]
560
561  if (!media_library_link_opt) {
562    sanitize = {
563      cfi = true
564      cfi_cross_dso = true
565      debug = false
566      integer_overflow = true
567      ubsan = true
568      boundary_sanitize = true
569      stack_protector_ret = true
570    }
571  }
572
573  relative_install_dir = "module/file"
574  subsystem_name = "multimedia"
575  part_name = "media_library"
576}
577
578js_declaration("recentphotocomponent_js") {
579  part_name = "media_library"
580  sources = [ "./@ohos.file.RecentPhotoComponent.d.ets" ]
581}
582
583# compile .js to .abc.
584es2abc_gen_abc("gen_recentphotocomponent_abc") {
585  src_js = rebase_path("${MEDIALIB_JS_PATH}/src/recentphotocomponent.js")
586  dst_file = rebase_path(target_out_dir + "/recentphotocomponent.abc")
587  in_puts = [ "${MEDIALIB_JS_PATH}/src/recentphotocomponent.js" ]
588  out_puts = [ target_out_dir + "/recentphotocomponent.abc" ]
589  extra_args = [ "--module" ]
590}
591
592abc_output_path = get_label_info(":recentphotocomponent_abc", "target_out_dir")
593recentphotocomponent_abc_obj_path =
594    abc_output_path + "/recentphotocomponent_abc.o"
595gen_js_obj("recentphotocomponent_abc") {
596  input = "$target_out_dir/recentphotocomponent.abc"
597  output = recentphotocomponent_abc_obj_path
598  dep = ":gen_recentphotocomponent_abc"
599}
600
601ohos_shared_library("recentphotocomponent") {
602  sources = [ "${MEDIALIB_JS_PATH}/src/recentphotocomponent.cpp" ]
603
604  deps = [ ":recentphotocomponent_abc" ]
605
606  external_deps = [
607    "hilog:libhilog",
608    "napi:ace_napi",
609  ]
610
611  if (!media_library_link_opt) {
612    sanitize = {
613      cfi = true
614      cfi_cross_dso = true
615      debug = false
616      integer_overflow = true
617      ubsan = true
618      boundary_sanitize = true
619      stack_protector_ret = true
620    }
621  }
622
623  relative_install_dir = "module/file"
624  subsystem_name = "multimedia"
625  part_name = "media_library"
626}
627
628ohos_shared_library("sendablephotoaccesshelper") {
629  include_dirs = [
630    "${MEDIALIB_INTERFACES_PATH}/kits/js/include",
631    "${MEDIALIB_INTERFACES_PATH}/kits/js/include/sendable",
632    "${MEDIALIB_INNERKITS_PATH}/medialibrary_data_extension/include",
633    "${MEDIALIB_INNERKITS_PATH}/media_library_helper/include",
634    "${MEDIALIB_SERVICES_PATH}/media_dfx/include",
635    "${MEDIALIB_SERVICES_PATH}/media_scanner/include/callback",
636    "${MEDIALIB_SERVICES_PATH}/media_thumbnail/include",
637    "${MEDIALIB_SERVICES_PATH}/media_analysis_extension/include",
638    "${MEDIALIB_SERVICES_PATH}/media_cloud_sync_notify_handle/include",
639    "${MEDIALIB_SERVICES_PATH}/media_async_worker/include",
640    "${MEDIALIB_UTILS_PATH}/include",
641    "${MEDIALIB_INTERFACES_PATH}/inner_api/media_library_helper/include",
642    "${MEDIALIB_INTERFACES_PATH}/kits/js/include",
643    "${MEDIALIB_INTERFACES_PATH}/innerkits/native/include",
644    "${MEDIALIB_UTILS_PATH}/include",
645    "${MEDIALIB_SERVICES_PATH}/media_library/include",
646  ]
647
648  sources = [
649    "${MEDIALIB_JS_PATH}/src/sendable/native_module_ohos_photoaccess_helper_sendable.cpp",
650    "${MEDIALIB_JS_PATH}/src/sendable/sendable_fetch_file_result_napi.cpp",
651    "${MEDIALIB_JS_PATH}/src/sendable/sendable_file_asset_napi.cpp",
652    "${MEDIALIB_JS_PATH}/src/sendable/sendable_medialibrary_napi_utils.cpp",
653    "${MEDIALIB_JS_PATH}/src/sendable/sendable_photo_access_helper_napi.cpp",
654    "${MEDIALIB_JS_PATH}/src/sendable/sendable_photo_album_napi.cpp",
655  ]
656
657  deps = [
658    ":medialibrary_nutils",
659    "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library",
660  ]
661
662  external_deps = [
663    "ability_base:zuri",
664    "ability_runtime:ability_manager",
665    "ability_runtime:abilitykit_native",
666    "ability_runtime:dataobs_manager",
667    "ability_runtime:extensionkit_native",
668    "ability_runtime:napi_base_context",
669    "ability_runtime:napi_common",
670    "access_token:libaccesstoken_sdk",
671    "access_token:libprivacy_sdk",
672    "access_token:libtokenid_sdk",
673    "app_file_service:fileuri_native",
674    "bundle_framework:appexecfwk_core",
675    "c_utils:utils",
676    "common_event_service:cesfwk_innerkits",
677    "data_share:datashare_common",
678    "data_share:datashare_consumer",
679    "hilog:libhilog",
680    "hitrace:hitrace_meter",
681    "i18n:intl_util",
682    "image_framework:image",
683    "image_framework:image_native",
684    "init:libbegetutil",
685    "ipc:ipc_core",
686    "ipc:ipc_single",
687    "ipc:rpc",
688    "napi:ace_napi",
689    "player_framework:media_client",
690    "relational_store:native_rdb",
691  ]
692
693  defines = []
694  defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ]
695  if (defined(medialibrary_mtp_enable)) {
696    defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ]
697  }
698  if (!media_library_link_opt) {
699    sanitize = {
700      cfi = true
701      cfi_cross_dso = true
702      debug = false
703      integer_overflow = true
704      ubsan = true
705      boundary_sanitize = true
706      stack_protector_ret = true
707    }
708  }
709
710  if (memory_utils_purgeable_ashmem_enable && defined(global_parts_info) &&
711      defined(global_parts_info.resourceschedule_memmgr_override)) {
712    defines += [ "IMAGE_PURGEABLE_PIXELMAP" ]
713    external_deps += [
714      "memmgr:libpurgeablemem_plugin",
715      "memmgr:purgeable_pixelmap_builder",
716    ]
717  }
718
719  if (ability_runtime_graphics) {
720    cflags_cc = [ "-DHAS_ACE_ENGINE_PART" ]
721  }
722
723  output_name = "libsendablephotoaccesshelper"
724  relative_install_dir = "module/file"
725  subsystem_name = "multimedia"
726  part_name = "media_library"
727}
728