• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2021-2024 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.
13
14import("//build/ohos.gni")
15import("//build/ohos/ace/ace.gni")
16import("./../../../../multimedia_camera_framework.gni")
17
18js_declaration("camera_js") {
19  part_name = "camera_framework"
20  sources = [ "./@ohos.multimedia.camera.d.ts" ]
21}
22
23ohos_copy("camera_declaration") {
24  sources = [ "./@ohos.multimedia.camera.d.ts" ]
25  outputs = [ target_out_dir + "/$target_name/" ]
26  module_source_dir = target_out_dir + "/$target_name"
27  module_install_name = ""
28}
29
30config("camera_napi_public_config") {
31  visibility = [ ":*" ]
32  include_dirs = [ "${multimedia_camera_framework_path}/interfaces/kits/js/camera_napi/include" ]
33}
34
35ohos_shared_library("camera_napi") {
36  branch_protector_ret = "pac_ret"
37
38  public_configs = [ ":camera_napi_public_config" ]
39  sources = [
40    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/native_module_ohos_camera.cpp",
41  ]
42
43  deps = [
44    ":camera_napi_base",
45    "${multimedia_camera_framework_path}/common:camera_utils",
46    "${multimedia_camera_framework_path}/frameworks/native/camera/base:camera_framework",
47    "${multimedia_camera_framework_path}/frameworks/native/camera/extension:camera_framework_ex",
48  ]
49  external_deps = [
50    "c_utils:utils",
51    "data_share:datashare_common",
52    "data_share:datashare_consumer",
53    "drivers_interface_camera:libbuffer_handle_sequenceable_1.0",
54    "drivers_interface_camera:libcamera_proxy_1.0",
55    "drivers_interface_camera:libcamera_proxy_1.1",
56    "drivers_interface_camera:libmap_data_sequenceable_1.0",
57    "drivers_interface_camera:metadata",
58    "drivers_interface_display:libdisplay_commontype_proxy_1.0",
59    "graphic_2d:color_manager",
60    "graphic_surface:surface",
61    "hilog:libhilog",
62    "hisysevent:libhisysevent",
63    "hitrace:hitrace_meter",
64    "image_framework:image",
65    "image_framework:image_native",
66    "ipc:ipc_core",
67    "media_library:medialibrary_nutils",
68    "napi:ace_napi",
69    "qos_manager:qos",
70    "samgr:samgr_proxy",
71  ]
72
73  defines = []
74
75  if (hicollie_enable) {
76    external_deps += [ "hicollie:libhicollie" ]
77    defines += [ "HICOLLIE_ENABLE" ]
78  }
79
80  sanitize = {
81    cfi = true
82    cfi_cross_dso = true
83    debug = false
84  }
85  cflags = [
86    "-fPIC",
87    "-DIMAGE_COLORSPACE_FLAG",
88    "-Os",
89    "-fno-merge-all-constants",
90    "-flto",
91    "-ffunction-sections"
92  ]
93
94  ldflags = [
95    "-Wl,--gc-sections",
96    "-fPIE",
97  ]
98
99  version_script = "libcamera_napi.map"
100
101  if (build_variant == "user") {
102    cflags += [ "-DIS_RELEASE_VERSION" ]
103  }
104  cflags_cc = cflags
105  relative_install_dir = "module/multimedia"
106  part_name = "camera_framework"
107  subsystem_name = "multimedia"
108}
109
110if (gen_camera_picker) {
111  js_declaration("camerapicker_js") {
112    part_name = "camera_framework"
113    sources = [ "./@ohos.multimedia.cameraPicker.d.ts" ]
114  }
115
116  ohos_copy("camerapicker_declaration") {
117    sources = [ "./@ohos.multimedia.cameraPicker.d.ts" ]
118    outputs = [ target_out_dir + "/$target_name/" ]
119    module_source_dir = target_out_dir + "/$target_name"
120    module_install_name = ""
121    part_name = "camera_framework"
122    subsystem_name = "multimedia"
123  }
124
125  ohos_shared_library("camerapicker_napi") {
126    branch_protector_ret = "pac_ret"
127    include_dirs = [ "${multimedia_camera_framework_path}/interfaces/kits/js/camera_napi/include" ]
128    sources = [
129      "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/camera_napi_utils.cpp",
130      "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/napi_ref_manager.cpp",
131      "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/native_module_ohos_camerapicker.cpp",
132      "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/picker/camera_picker_napi.cpp",
133    ]
134    deps = [
135      ":camera_napi_base",
136      "${multimedia_camera_framework_path}/frameworks/native/camera/base:camera_framework",
137    ]
138
139    # configuration.h <-- context.h <-- ability_context.h
140    # pixel_map.h <-- iability_callback.h <-- ability_context.h
141    external_deps = [
142      "ability_base:base",
143      "ability_base:configuration",  # configuration.h
144      "ability_base:want",
145      "ability_runtime:ability_context_native",  # ability_context.h
146      "ability_runtime:ability_manager",  # pixel_map.h
147      "ability_runtime:napi_base_context",  # napi_base_context.h
148      "ability_runtime:ui_extension",  # ui_extension_context.h
149      "ace_engine:ace_uicontent",
150      "c_utils:utils",
151      "drivers_interface_camera:libbuffer_handle_sequenceable_1.0",
152      "drivers_interface_camera:libmap_data_sequenceable_1.0",
153      "drivers_interface_camera:metadata",
154      "hilog:libhilog",
155      "hisysevent:libhisysevent",
156      "hitrace:hitrace_meter",
157      "napi:ace_napi",  # native_reference <-- camera_napi_utils.h
158      "samgr:samgr_proxy",
159    ]
160    sanitize = {
161      cfi = true
162      cfi_cross_dso = true
163      debug = false
164    }
165    cflags = [
166      "-fPIC",
167      "-Os",
168    ]
169    version_script = "libcamera_napi.map"
170
171    if (build_variant == "user") {
172      cflags += [ "-DIS_RELEASE_VERSION" ]
173    }
174    cflags_cc = cflags
175    relative_install_dir = "module/multimedia"
176    part_name = "camera_framework"
177    subsystem_name = "multimedia"
178  }
179}
180
181ohos_shared_library("camera_napi_base") {
182  branch_protector_ret = "pac_ret"
183
184  public_configs = [ ":camera_napi_public_config" ]
185  include_dirs = [
186    "${multimedia_camera_framework_path}/interfaces/kits/js/camera_napi/include/dynamic_loader",
187    "${multimedia_camera_framework_path}/interfaces/kits/js/camera_napi/include/input",
188    "${multimedia_camera_framework_path}/interfaces/kits/js/camera_napi/include/mode",
189    "${multimedia_camera_framework_path}/interfaces/kits/js/camera_napi/include/output",
190    "${multimedia_camera_framework_path}/interfaces/kits/js/camera_napi/include/session",
191  ]
192
193  sources = [
194    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/camera_napi_metadata_utils.cpp",
195    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/camera_napi_object_types.cpp",
196    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/camera_napi_security_utils.cpp",
197    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/camera_napi_utils.cpp",
198    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/camera_napi_worker_queue_keeper.cpp",
199    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/common/qos_utils.cpp",
200    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/dynamic_loader/camera_napi_ex_manager.cpp",
201    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/dynamic_loader/camera_napi_ex_proxy.cpp",
202    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/listener_base.cpp",
203    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/input/camera_input_napi.cpp",
204    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/input/camera_manager_napi.cpp",
205    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/input/camera_napi.cpp",
206    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/mode/photo_session_napi.cpp",
207    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/mode/secure_camera_session_napi.cpp",
208    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/mode/video_session_napi.cpp",
209    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/napi_ref_manager.cpp",
210    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/output/metadata_output_napi.cpp",
211    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/output/photo_napi.cpp",
212    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/output/photo_output_napi.cpp",
213    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/output/preview_output_napi.cpp",
214    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/output/video_output_napi.cpp",
215    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/session/camera_session_napi.cpp",
216    "${multimedia_camera_framework_path}/frameworks/js/camera_napi/src/session/control_center_session_napi.cpp",
217  ]
218
219  deps = [
220    "${multimedia_camera_framework_path}/common:camera_utils",
221    "${multimedia_camera_framework_path}/frameworks/native/camera/base:camera_framework",
222  ]
223  external_deps = [
224    "c_utils:utils",
225    "data_share:datashare_common",
226    "data_share:datashare_consumer",
227    "drivers_interface_camera:libbuffer_handle_sequenceable_1.0",
228    "drivers_interface_camera:libcamera_proxy_1.0",
229    "drivers_interface_camera:libcamera_proxy_1.1",
230    "drivers_interface_camera:libmap_data_sequenceable_1.0",
231    "drivers_interface_camera:metadata",
232    "drivers_interface_display:libdisplay_commontype_proxy_1.0",
233    "graphic_2d:color_manager",
234    "graphic_surface:surface",
235    "hilog:libhilog",
236    "hisysevent:libhisysevent",
237    "hitrace:hitrace_meter",
238    "image_framework:image",
239    "image_framework:image_native",
240    "ipc:ipc_core",
241    "media_library:medialibrary_nutils",
242    "napi:ace_napi",
243    "qos_manager:qos",
244    "samgr:samgr_proxy",
245  ]
246
247  defines = []
248
249  if (hicollie_enable) {
250    external_deps += [ "hicollie:libhicollie" ]
251    defines += [ "HICOLLIE_ENABLE" ]
252  }
253
254  sanitize = {
255    cfi = true
256    cfi_cross_dso = true
257    debug = false
258  }
259  cflags = [
260    "-fPIC",
261    "-DIMAGE_COLORSPACE_FLAG",
262    "-Os",
263    "-fno-merge-all-constants",
264    "-flto",
265    "-ffunction-sections"
266  ]
267
268  ldflags = [
269    "-Wl,--gc-sections",
270    "-fPIE",
271  ]
272
273  version_script = "libcamera_napi_base.map"
274
275  if (build_variant == "user") {
276    cflags += [ "-DIS_RELEASE_VERSION" ]
277  }
278  cflags_cc = cflags
279  part_name = "camera_framework"
280  subsystem_name = "multimedia"
281}