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