1# Copyright (C) 2022 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("//foundation/multimedia/image_framework/ide/image_decode_config.gni")
17
18config("image_external_config") {
19  include_dirs = [
20    "include",
21    "${image_subsystem}/frameworks/kits/js/common/ndk/include",
22    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/include",
23    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/include",
24    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/pixelconverter/include",
25    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/include",
26    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/include",
27    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/common/include",
28    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/include",
29    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils/include",
30    "${image_subsystem}/frameworks/innerkitsimpl/accessor/include",
31    "//foundation/multimedia/image_framework/frameworks/kits/js/common/include",
32    "//foundation/multimedia/image_framework/interfaces/kits/js/common/include",
33    "//foundation/multimedia/image_framework/plugins/common/libs/image/libjpegplugin",
34    "//foundation/multimedia/image_framework/plugins/manager/include",
35    "//foundation/multimedia/image_framework/plugins/manager/include/image",
36    "//foundation/multimedia/image_framework/interfaces/innerkits/include",
37    "//foundation/multimedia/image_framework/interfaces/kits/native/include",
38    "${image_subsystem}/interfaces/kits/js/common/include/sendable",
39    "${image_subsystem}/interfaces/kits/native/include/image",
40  ]
41
42  include_dirs += [
43    "//foundation/multimedia/image_framework/plugins/manager/include/pluginbase",
44    "//foundation/multimedia/image_framework/plugins/common/libs/image/libjpegplugin/include",
45    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils/include",
46    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/include",
47  ]
48
49  if (use_mingw_win) {
50    include_dirs +=
51        [ "//foundation/multimedia/image_framework/mock/native/include" ]
52  } else if (use_clang_mac) {
53    include_dirs += [
54      "//foundation/multimedia/image_framework/mock/native/include",
55      "//third_party/bounds_checking_function/include",
56      "//commonlibrary/c_utils/base/include",
57      "//base/hiviewdfx/hilog/interfaces/native/innerkits/include",
58    ]
59  } else if (use_clang_ios) {
60    include_dirs += [
61      "$image_subsystem/mock/native/include/log",
62      "//foundation/multimedia/image_framework/mock/native/include/secure",
63    ]
64    include_dirs -= [
65      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/include",
66      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/include",
67    ]
68  } else if (use_clang_android) {
69    include_dirs += [
70      "//commonlibrary/c_utils/base/include",
71      "$image_subsystem/mock/native/include/log",
72    ]
73
74    include_dirs -= [
75      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/include",
76      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/include",
77    ]
78  }
79}
80
81js_declaration("image_js") {
82  part_name = "image_framework"
83  sources = [ "//foundation/multimedia/image_framework/interfaces/kits/js/@ohos.multimedia.image.d.ts" ]
84}
85
86ohos_copy("image_declaration") {
87  sources = [ "//foundation/multimedia/image_framework/interfaces/kits/js/@ohos.multimedia.image.d.ts" ]
88  outputs = [ target_out_dir + "/$target_name/" ]
89  module_source_dir = target_out_dir + "/$target_name"
90  module_install_name = ""
91}
92
93if (use_clang_ios) {
94  ohos_source_set("image") {
95    public_configs = [ ":image_external_config" ]
96    sources = [
97      "$image_subsystem/frameworks/kits/js/common/image_pixel_map_napi_kits.cpp",
98      "${image_subsystem}/frameworks/kits/js/common/auxiliary_picture_napi.cpp",
99      "${image_subsystem}/frameworks/kits/js/common/metadata_napi.cpp",
100      "${image_subsystem}/frameworks/kits/js/common/picture_napi.cpp",
101      "//foundation/multimedia/image_framework/frameworks/kits/js/common/image_napi_utils.cpp",
102      "//foundation/multimedia/image_framework/frameworks/kits/js/common/image_packer_napi.cpp",
103      "//foundation/multimedia/image_framework/frameworks/kits/js/common/image_source_napi.cpp",
104      "//foundation/multimedia/image_framework/frameworks/kits/js/common/native_module_ohos_image.cpp",
105      "//foundation/multimedia/image_framework/frameworks/kits/js/common/pixel_map_napi.cpp",
106    ]
107
108    cflags = [ "-DIMAGE_DEBUG_FLAG" ]
109
110    defines = image_decode_ios_defines
111    deps = [
112      "//foundation/arkui/napi:ace_napi",
113      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter",
114      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils",
115      "//foundation/multimedia/image_framework/interfaces/innerkits:image_native",
116      "//foundation/multimedia/image_framework/mock/native:log_mock_static",
117      "//foundation/multimedia/image_framework/plugins/manager:pluginmanager",
118    ]
119
120    #relative_install_dir = "module/multimedia"
121    subsystem_name = "multimedia"
122    part_name = "image_framework"
123  }
124} else {
125  ohos_shared_library("image_napi") {
126    if (!use_clang_android && !use_clang_ios) {
127      branch_protector_ret = "pac_ret"
128      sanitize = {
129        cfi = true
130        cfi_cross_dso = true
131        cfi_vcall_icall_only = true
132        debug = false
133      }
134    }
135    sources = [
136      "$image_subsystem/frameworks/kits/js/common/native_module_ohos_image.cpp",
137    ]
138
139    cflags = [
140      "-DIMAGE_DEBUG_FLAG",
141      "-DIMAGE_COLORSPACE_FLAG",
142    ]
143
144    deps = [
145      ":image",
146      "$image_subsystem/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter",
147    ]
148
149    external_deps = [
150      "c_utils:utils",
151      "drivers_peripheral_display:hdi_gralloc_client",
152      "graphic_2d:color_manager",
153      "graphic_surface:surface",
154      "hilog:libhilog",
155      "ipc:ipc_single",
156      "napi:ace_napi",
157    ]
158
159    output_name = "libimage"
160    relative_install_dir = "module/multimedia"
161    subsystem_name = "multimedia"
162    part_name = "image_framework"
163  }
164
165  ohos_shared_library("sendableimage") {
166    if (!use_clang_android && !use_clang_ios) {
167      sanitize = {
168        cfi = true
169        cfi_cross_dso = true
170        cfi_vcall_icall_only = true
171        debug = false
172      }
173    }
174    sources = [ "$image_subsystem/frameworks/kits/js/common/sendable/native_module_image_sendable.cpp" ]
175
176    cflags = [
177      "-DIMAGE_DEBUG_FLAG",
178      "-DIMAGE_COLORSPACE_FLAG",
179    ]
180
181    deps = [
182      ":image",
183      "$image_subsystem/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter",
184    ]
185
186    external_deps = [
187      "c_utils:utils",
188      "drivers_peripheral_display:hdi_gralloc_client",
189      "graphic_2d:color_manager",
190      "graphic_surface:surface",
191      "hilog:libhilog",
192      "ipc:ipc_single",
193      "napi:ace_napi",
194    ]
195
196    output_name = "libsendableimage"
197    relative_install_dir = "module/multimedia"
198    subsystem_name = "multimedia"
199    part_name = "image_framework"
200  }
201
202  ohos_shared_library("image") {
203    if (!use_clang_android && !use_clang_ios) {
204      branch_protector_ret = "pac_ret"
205      sanitize = {
206        cfi = true
207        cfi_cross_dso = true
208        cfi_vcall_icall_only = true
209        debug = false
210      }
211    }
212    public_configs = [ ":image_external_config" ]
213    sources = [
214      "$image_subsystem/frameworks/innerkitsimpl/accessor/src/buffer_metadata_stream.cpp",
215      "$image_subsystem/frameworks/innerkitsimpl/accessor/src/exif_metadata_formatter.cpp",
216      "$image_subsystem/frameworks/kits/js/common/image_format_convert_mdk_kits.cpp",
217      "$image_subsystem/frameworks/kits/js/common/image_mdk_kits.cpp",
218      "$image_subsystem/frameworks/kits/js/common/image_packer_mdk_kits.cpp",
219      "$image_subsystem/frameworks/kits/js/common/image_pixel_map_napi_kits.cpp",
220      "$image_subsystem/frameworks/kits/js/common/image_receiver_mdk_kits.cpp",
221      "$image_subsystem/frameworks/kits/js/common/image_source_mdk_kits.cpp",
222      "${image_subsystem}/frameworks/kits/js/common/auxiliary_picture_napi.cpp",
223      "${image_subsystem}/frameworks/kits/js/common/metadata_napi.cpp",
224      "${image_subsystem}/frameworks/kits/js/common/picture_napi.cpp",
225      "${image_subsystem}/frameworks/kits/js/common/sendable/sendable_image_napi.cpp",
226      "${image_subsystem}/frameworks/kits/js/common/sendable/sendable_image_receiver_napi.cpp",
227      "${image_subsystem}/frameworks/kits/js/common/sendable/sendable_image_source_napi.cpp",
228      "${image_subsystem}/frameworks/kits/js/common/sendable/sendable_pixel_map_napi.cpp",
229      "//foundation/multimedia/image_framework/frameworks/kits/js/common/image_creator_napi.cpp",
230      "//foundation/multimedia/image_framework/frameworks/kits/js/common/image_napi.cpp",
231      "//foundation/multimedia/image_framework/frameworks/kits/js/common/image_napi_utils.cpp",
232      "//foundation/multimedia/image_framework/frameworks/kits/js/common/image_packer_napi.cpp",
233      "//foundation/multimedia/image_framework/frameworks/kits/js/common/image_receiver_napi.cpp",
234      "//foundation/multimedia/image_framework/frameworks/kits/js/common/image_source_napi.cpp",
235      "//foundation/multimedia/image_framework/frameworks/kits/js/common/pixel_map_napi.cpp",
236    ]
237
238    cflags = [
239      "-DIMAGE_DEBUG_FLAG",
240      "-DIMAGE_COLORSPACE_FLAG",
241    ]
242    external_deps = []
243
244    if (use_clang_android) {
245      defines = image_decode_android_defines
246      cflags -= [ "-DIMAGE_COLORSPACE_FLAG" ]
247      sources -= [
248        "$image_subsystem/frameworks/kits/js/common/image_mdk_kits.cpp",
249        "$image_subsystem/frameworks/kits/js/common/image_receiver_mdk_kits.cpp",
250        "//foundation/multimedia/image_framework/frameworks/kits/js/common/image_creator_napi.cpp",
251        "//foundation/multimedia/image_framework/frameworks/kits/js/common/image_napi.cpp",
252        "//foundation/multimedia/image_framework/frameworks/kits/js/common/image_receiver_napi.cpp",
253      ]
254      deps = [
255        "//commonlibrary/c_utils/base:utils",
256        "//foundation/arkui/napi:ace_napi",
257        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter",
258        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils",
259        "//foundation/multimedia/image_framework/interfaces/innerkits:image_native",
260        "//foundation/multimedia/image_framework/mock/native:log_mock_static",
261        "//foundation/multimedia/image_framework/plugins/manager:pluginmanager",
262      ]
263    } else {
264      defines = []
265      deps = [
266        "$image_subsystem/frameworks/innerkitsimpl/egl_image:egl_image",
267        "$image_subsystem/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter",
268        "$image_subsystem/frameworks/innerkitsimpl/utils:image_utils",
269        "$image_subsystem/interfaces/innerkits:image_native",
270      ]
271      external_deps += [ "hilog:libhilog" ]
272    }
273
274    external_deps += [
275      "ability_runtime:runtime",
276      "c_utils:utils",
277      "drivers_interface_display:display_commontype_idl_headers",
278      "ets_runtime:libark_jsruntime",
279      "eventhandler:libeventhandler",
280      "graphic_2d:2d_graphics",
281      "graphic_2d:EGL",
282      "graphic_2d:GLESv3",
283      "graphic_2d:color_manager",
284      "graphic_2d:color_space_object_convertor",
285      "graphic_2d:libcomposer",
286      "graphic_2d:librender_service_base",
287      "graphic_2d:librender_service_client",
288      "graphic_surface:surface",
289      "graphic_surface:sync_fence",
290      "hitrace:hitrace_meter",
291      "ipc:ipc_napi",
292      "ipc:ipc_single",
293      "napi:ace_napi",
294      "resource_management:librawfile",
295    ]
296
297    public_external_deps = [ "graphic_2d:color_manager" ]
298
299    if (defined(global_parts_info) &&
300        defined(global_parts_info.hiviewdfx_hichecker)) {
301      external_deps += [ "hichecker:libhichecker" ]
302      defines += [ "HICHECKER_ENABLE" ]
303    }
304
305    output_name = "libimage_napi"
306    subsystem_name = "multimedia"
307    innerapi_tags = [ "platformsdk" ]
308    part_name = "image_framework"
309  }
310
311  if (use_clang_android) {
312    ohos_shared_library("multimedia_image") {
313      public_configs = [ ":image_external_config" ]
314      sources = [
315        "$image_subsystem/frameworks/kits/js/common/auxiliary_picture_napi.cpp",
316        "$image_subsystem/frameworks/kits/js/common/image_packer_napi.cpp",
317        "$image_subsystem/frameworks/kits/js/common/image_source_napi.cpp",
318        "$image_subsystem/frameworks/kits/js/common/metadata_napi.cpp",
319        "$image_subsystem/frameworks/kits/js/common/native_module_ohos_image.cpp",
320        "$image_subsystem/frameworks/kits/js/common/picture_napi.cpp",
321        "$image_subsystem/frameworks/kits/js/common/pixel_map_napi.cpp",
322        "$image_subsystem/kits/js/common/image_napi_utils.cpp",
323      ]
324
325      cflags = [ "-DIMAGE_DEBUG_FLAG" ]
326
327      defines = image_decode_android_defines
328      deps = [
329        "$commonlibrary_subsystem/base:utils",
330        "$image_subsystem/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter",
331        "$image_subsystem/frameworks/innerkitsimpl/utils:image_utils",
332        "$image_subsystem/interfaces/innerkits:image_native",
333        "$image_subsystem/mock/native:log_mock_static",
334        "$image_subsystem/plugins/manager:pluginmanager",
335        "$plugins_lib_root/napi:napi_android",
336      ]
337
338      external_deps = [
339        "c_utils:utils",
340        "hitrace:hitrace_meter",
341      ]
342
343      if (defined(global_parts_info) &&
344          defined(global_parts_info.hiviewdfx_hichecker)) {
345        external_deps += [ "hichecker:libhichecker" ]
346        defines += [ "HICHECKER_ENABLE" ]
347      }
348
349      relative_install_dir = "module/multimedia"
350      subsystem_name = "multimedia"
351      part_name = "image_framework"
352    }
353  }
354}
355