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