• 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_UTILS_PATH}/include",
71    "${MEDIALIB_INTERFACES_PATH}/inner_api/media_library_helper/include",
72    "${MEDIALIB_INTERFACES_PATH}/kits/js/include",
73    "${MEDIALIB_INTERFACES_PATH}/innerkits/native/include",
74    "${MEDIALIB_UTILS_PATH}/include",
75    "${MEDIALIB_SERVICES_PATH}/media_library/include",
76    "../../../../../distributedhardware/device_manager/interfaces/inner_kits/native_cpp/include",
77    "//third_party/e2fsprogs/e2fsprogs/lib",
78    "${MEDIALIB_CAMERA_FRAMEWORK_PATH}/interfaces/kits/js/camera_napi/include",
79    "${MEDIALIB_CAMERA_FRAMEWORK_PATH}/interfaces/inner_api/native/camera/include",
80  ]
81
82  if (defined(medialibrary_mtp_enable)) {
83    include_dirs += [ "${MEDIALIB_MTP_PATH}/include" ]
84  }
85
86  ldflags = [ "-Wl,--gc-sections" ]
87
88  cflags = [
89    "-fvisibility=hidden",
90    "-fdata-sections",
91    "-ffunction-sections",
92    "-Os",
93  ]
94
95  cflags_cc = [
96    "-fvisibility-inlines-hidden",
97    "-Os",
98  ]
99}
100
101ohos_shared_library("medialibrary_nutils") {
102  configs = [ ":napi_config" ]
103  sources = [
104    "${MEDIALIB_JS_PATH}/src/album_napi.cpp",
105    "${MEDIALIB_JS_PATH}/src/delete_callback.cpp",
106    "${MEDIALIB_JS_PATH}/src/fetch_file_result_napi.cpp",
107    "${MEDIALIB_JS_PATH}/src/file_asset_napi.cpp",
108    "${MEDIALIB_JS_PATH}/src/media_album_change_request_napi.cpp",
109    "${MEDIALIB_JS_PATH}/src/media_asset_change_request_napi.cpp",
110    "${MEDIALIB_JS_PATH}/src/media_asset_data_handler.cpp",
111    "${MEDIALIB_JS_PATH}/src/media_asset_edit_data_napi.cpp",
112    "${MEDIALIB_JS_PATH}/src/media_asset_manager_napi.cpp",
113    "${MEDIALIB_JS_PATH}/src/media_assets_change_request_napi.cpp",
114    "${MEDIALIB_JS_PATH}/src/media_change_request_napi.cpp",
115    "${MEDIALIB_JS_PATH}/src/media_library_napi.cpp",
116    "${MEDIALIB_JS_PATH}/src/media_scanner_napi.cpp",
117    "${MEDIALIB_JS_PATH}/src/medialibrary_napi_utils.cpp",
118    "${MEDIALIB_JS_PATH}/src/modal_ui_callback.cpp",
119    "${MEDIALIB_JS_PATH}/src/napi_error.cpp",
120    "${MEDIALIB_JS_PATH}/src/photo_album_napi.cpp",
121    "${MEDIALIB_JS_PATH}/src/smart_album_napi.cpp",
122    "${MEDIALIB_JS_PATH}/src/thumbnail_manager.cpp",
123    "${MEDIALIB_JS_PATH}/src/userfile_client.cpp",
124  ]
125
126  deps = [
127    "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library",
128    "//third_party/e2fsprogs:libext2_uuid",
129  ]
130
131  external_deps = [
132    "ability_base:want",
133    "ability_base:zuri",
134    "ability_runtime:ability_context_native",
135    "ability_runtime:ability_manager",
136    "ability_runtime:abilitykit_native",
137    "ability_runtime:app_context",
138    "ability_runtime:dataobs_manager",
139    "ability_runtime:napi_base_context",
140    "ability_runtime:runtime",
141    "ability_runtime:service_extension",
142    "ability_runtime:ui_extension",
143    "access_token:libaccesstoken_sdk",
144    "access_token:libtokenid_sdk",
145    "ace_engine:ace_uicontent",
146    "app_file_service:fileuri_native",
147    "bundle_framework:appexecfwk_core",
148    "c_utils:utils",
149    "common_event_service:cesfwk_innerkits",
150    "data_share:datashare_common",
151    "data_share:datashare_consumer",
152    "hilog:libhilog",
153    "hitrace:hitrace_meter",
154    "i18n:intl_util",
155    "image_framework:image",
156    "image_framework:image_native",
157    "ipc:ipc_core",
158    "ipc:ipc_js",
159    "kv_store:distributeddata_inner",
160    "napi:ace_napi",
161    "player_framework:media_client",
162    "relational_store:native_rdb",
163  ]
164
165  defines = []
166  defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ]
167  if (defined(medialibrary_mtp_enable)) {
168    defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ]
169  }
170  if (!link_opt) {
171    sanitize = {
172      cfi = true
173      cfi_cross_dso = true
174      debug = false
175      integer_overflow = true
176      ubsan = true
177      boundary_sanitize = true
178      stack_protector_ret = true
179    }
180  }
181
182  if (purgeable_ashmem_enable && defined(global_parts_info) &&
183      defined(global_parts_info.resourceschedule_memmgr_plugin)) {
184    defines += [ "IMAGE_PURGEABLE_PIXELMAP" ]
185    external_deps += [
186      "memmgr_plugin:libpurgeablemem_plugin",
187      "memmgr_plugin:purgeable_pixelmap_builder",
188    ]
189  }
190
191  if (defined(global_parts_info) &&
192      defined(global_parts_info.multimedia_camera_framework) &&
193      global_parts_info.multimedia_camera_framework) {
194    defines += [ "ABILITY_CAMERA_SUPPORT" ]
195    external_deps += [
196      "camera_framework:camera_framework",
197      "camera_framework:camera_napi",
198    ]
199  }
200
201  if (ability_runtime_graphics) {
202    external_deps += [ "image_framework:image_native" ]
203  }
204
205  subsystem_name = "multimedia"
206  part_name = "media_library"
207}
208
209ohos_shared_library("medialibrary") {
210  configs = [ ":napi_config" ]
211
212  version_script = "libmedialibrary.map"
213
214  sources = [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_medialibrary.cpp" ]
215
216  deps = [
217    ":medialibrary_nutils",
218    ":medialibraryinf_abc",
219    ":medialibraryinf_js",
220    "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library",
221  ]
222
223  external_deps = [
224    "ability_base:want",
225    "ability_base:zuri",
226    "ability_runtime:ability_manager",
227    "ability_runtime:abilitykit_native",
228    "ability_runtime:napi_base_context",
229    "c_utils:utils",
230    "data_share:datashare_consumer",
231    "hilog:libhilog",
232    "napi:ace_napi",
233  ]
234
235  defines = []
236  defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ]
237  if (defined(medialibrary_mtp_enable)) {
238    defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ]
239  }
240  if (!link_opt) {
241    sanitize = {
242      cfi = true
243      cfi_cross_dso = true
244      debug = false
245      integer_overflow = true
246      ubsan = true
247      boundary_sanitize = true
248      stack_protector_ret = true
249    }
250  }
251
252  if (purgeable_ashmem_enable && defined(global_parts_info) &&
253      defined(global_parts_info.resourceschedule_memmgr_plugin)) {
254    defines += [ "IMAGE_PURGEABLE_PIXELMAP" ]
255    external_deps += [
256      "memmgr_plugin:libpurgeablemem_plugin",
257      "memmgr_plugin:purgeable_pixelmap_builder",
258    ]
259  }
260
261  if (ability_runtime_graphics) {
262    external_deps += [ "image_framework:image_native" ]
263  }
264
265  relative_install_dir = "module/multimedia"
266  subsystem_name = "multimedia"
267  part_name = "media_library"
268}
269
270ohos_shared_library("userfilemanager") {
271  configs = [ ":napi_config" ]
272
273  sources =
274      [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_userfile_manager.cpp" ]
275
276  deps = [
277    ":medialibrary_nutils",
278    "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library",
279  ]
280
281  external_deps = [
282    "ability_base:want",
283    "ability_base:zuri",
284    "ability_runtime:ability_manager",
285    "ability_runtime:abilitykit_native",
286    "ability_runtime:napi_base_context",
287    "c_utils:utils",
288    "data_share:datashare_consumer",
289    "hilog:libhilog",
290    "napi:ace_napi",
291  ]
292
293  defines = []
294  defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ]
295  if (defined(medialibrary_mtp_enable)) {
296    defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ]
297  }
298  if (!link_opt) {
299    sanitize = {
300      cfi = true
301      cfi_cross_dso = true
302      debug = false
303      integer_overflow = true
304      ubsan = true
305      boundary_sanitize = true
306      stack_protector_ret = true
307    }
308  }
309
310  if (purgeable_ashmem_enable && defined(global_parts_info) &&
311      defined(global_parts_info.resourceschedule_memmgr_plugin)) {
312    defines += [ "IMAGE_PURGEABLE_PIXELMAP" ]
313    external_deps += [
314      "memmgr_plugin:libpurgeablemem_plugin",
315      "memmgr_plugin:purgeable_pixelmap_builder",
316    ]
317  }
318
319  if (ability_runtime_graphics) {
320    external_deps += [ "image_framework:image_native" ]
321  }
322
323  relative_install_dir = "module/filemanagement"
324  subsystem_name = "multimedia"
325  part_name = "media_library"
326}
327
328js_declaration("photoaccesshelper_js") {
329  part_name = "media_library"
330  sources = [ "./@ohos.file.photoAccessHelper.d.ts" ]
331}
332
333# compile .js to .abc.
334action("gen_photoaccesshelperinf_abc") {
335  visibility = [ ":*" ]
336  script = "../../../../../../arkcompiler/ets_frontend/es2panda/scripts/generate_js_bytecode.py"
337
338  args = [
339    "--src-js",
340    rebase_path("${MEDIALIB_JS_PATH}/src/photoaccesshelperinf.js"),
341    "--dst-file",
342    rebase_path(target_out_dir + "/photoaccesshelperinf.abc"),
343    "--frontend-tool-path",
344    rebase_path("${es2abc_build_path}"),
345    "--module",
346  ]
347  deps =
348      [ "../../../../../../arkcompiler/ets_frontend/es2panda:es2panda_build" ]
349
350  inputs = [ "${MEDIALIB_JS_PATH}/src/photoaccesshelperinf.js" ]
351  outputs = [ target_out_dir + "/photoaccesshelperinf.abc" ]
352}
353
354base_output_path = get_label_info(":photoaccesshelperinf_js", "target_out_dir")
355photoaccesshelperinf_obj_path = base_output_path + "/photoaccesshelperinf.o"
356gen_js_obj("photoaccesshelperinf_js") {
357  input = "${MEDIALIB_JS_PATH}/src/photoaccesshelperinf.js"
358  output = photoaccesshelperinf_obj_path
359  dep = ":gen_photoaccesshelperinf_abc"
360}
361
362abc_output_path = get_label_info(":photoaccesshelperinf_abc", "target_out_dir")
363photoaccesshelperinf_abc_obj_path =
364    abc_output_path + "/photoaccesshelperinf_abc.o"
365gen_js_obj("photoaccesshelperinf_abc") {
366  input = "$target_out_dir/photoaccesshelperinf.abc"
367  output = photoaccesshelperinf_abc_obj_path
368  dep = ":gen_photoaccesshelperinf_abc"
369}
370
371ohos_shared_library("photoaccesshelper") {
372  configs = [ ":napi_config" ]
373
374  sources =
375      [ "${MEDIALIB_JS_PATH}/src/native_module_ohos_photoaccess_helper.cpp" ]
376
377  deps = [
378    ":medialibrary_nutils",
379    ":photoaccesshelperinf_abc",
380    ":photoaccesshelperinf_js",
381    "${MEDIALIB_INNERKITS_PATH}/media_library_helper:media_library",
382  ]
383
384  external_deps = [
385    "ability_base:want",
386    "ability_base:zuri",
387    "ability_runtime:ability_manager",
388    "ability_runtime:abilitykit_native",
389    "ability_runtime:napi_base_context",
390    "c_utils:utils",
391    "data_share:datashare_common",
392    "data_share:datashare_consumer",
393    "hilog:libhilog",
394    "napi:ace_napi",
395  ]
396
397  defines = []
398  defines += [ "MEDIALIBRARY_COMPATIBILITY=1" ]
399  if (defined(medialibrary_mtp_enable)) {
400    defines += [ "MEDIALIBRARY_MTP_ENABLE=1" ]
401  }
402  if (!link_opt) {
403    sanitize = {
404      cfi = true
405      cfi_cross_dso = true
406      debug = false
407      integer_overflow = true
408      ubsan = true
409      boundary_sanitize = true
410      stack_protector_ret = true
411    }
412  }
413
414  if (purgeable_ashmem_enable && defined(global_parts_info) &&
415      defined(global_parts_info.resourceschedule_memmgr_plugin)) {
416    defines += [ "IMAGE_PURGEABLE_PIXELMAP" ]
417    external_deps += [
418      "memmgr_plugin:libpurgeablemem_plugin",
419      "memmgr_plugin:purgeable_pixelmap_builder",
420    ]
421  }
422
423  if (ability_runtime_graphics) {
424    external_deps += [ "image_framework:image_native" ]
425  }
426
427  relative_install_dir = "module/file"
428  subsystem_name = "multimedia"
429  part_name = "media_library"
430}
431