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