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