• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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("//commonlibrary/memory_utils/purgeable_mem_config.gni")
17import("//foundation/multimedia/image_framework/ide/image_decode_config.gni")
18import("$image_subsystem/plugins/cross/image_native_android.gni")
19import("$image_subsystem/plugins/cross/image_native_ios.gni")
20
21config("image_external_config") {
22  include_dirs = [
23    "include",
24    "//utils/system/safwk/native/include",
25    "//foundation/ability/ability_runtime/interfaces/inner_api/runtime/include/",
26    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/include",
27    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/include",
28    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/pixelconverter/include",
29    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/include",
30    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/include",
31    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/common/include",
32    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/include",
33    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils/include",
34    "//foundation/multimedia/image_framework/frameworks/kits/js/common/include",
35    "//foundation/multimedia/image_framework/interfaces/kits/js/common/include",
36    "//foundation/multimedia/utils/include",
37    "//foundation/multimedia/image_framework/plugins/common/libs/image/libjpegplugin",
38    "//foundation/multimedia/image_framework/plugins/manager/include",
39    "//foundation/multimedia/image_framework/plugins/manager/include/image",
40    "//foundation/multimedia/image_framework/interfaces/innerkits/include",
41    "//foundation/multimedia/image_framework/interfaces/kits/native/include",
42    "//utils/jni/jnikit/include",
43    "//base/hiviewdfx/hilog/interfaces/native/innerkits/include",
44    "$graphic_surface_root/interfaces/inner_api/surface",
45    "//foundation/graphic/graphic_2d/interfaces/inner_api/common",
46    "//foundation/graphic/graphic_2d/interfaces/kits/napi/graphic/color_manager/color_space_object_convertor",
47    "//foundation/communication/ipc/interfaces/innerkits/ipc_core/include",
48    "//foundation/graphic/graphic_2d/utils/buffer_handle/export",
49    "//foundation/graphic/graphic_2d/utils/color_manager/export",
50    "//drivers/peripheral/display/interfaces/include",
51    "//drivers/peripheral/base",
52  ]
53
54  include_dirs += [
55    "//foundation/multimedia/image_framework/plugins/manager/include/pluginbase",
56    "//foundation/multimedia/image_framework/plugins/common/libs/image/libjpegplugin/include",
57    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils/include",
58    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/include",
59    "$skia_root/skia",
60    "$skia_root/skia/include/core",
61    "$skia_root/skia/include/codec",
62    "$skia_root/skia/third_party/externals/libjpeg-turbo",
63    "$skia_root/skia/third_party/skcms",
64    "//third_party/libexif",
65  ]
66
67  if (use_mingw_win) {
68    include_dirs +=
69        [ "//foundation/multimedia/image_framework/mock/native/include" ]
70  } else if (use_clang_mac) {
71    include_dirs += [
72      "//foundation/multimedia/image_framework/mock/native/include",
73      "//third_party/bounds_checking_function/include",
74      "//commonlibrary/c_utils/base/include",
75      "//base/hiviewdfx/hilog/interfaces/native/innerkits/include",
76    ]
77  } else {
78    include_dirs += [
79      "//commonlibrary/c_utils/base/include",
80      "//base/hiviewdfx/hilog/interfaces/native/innerkits/include",
81    ]
82  }
83}
84
85js_declaration("image_js") {
86  part_name = "image_framework"
87  sources = [ "//foundation/multimedia/image_framework/interfaces/kits/js/@ohos.multimedia.image.d.ts" ]
88}
89
90ohos_copy("image_declaration") {
91  sources = [ "//foundation/multimedia/image_framework/interfaces/kits/js/@ohos.multimedia.image.d.ts" ]
92  outputs = [ target_out_dir + "/$target_name/" ]
93  module_source_dir = target_out_dir + "/$target_name"
94  module_install_name = ""
95}
96
97config("image_postproc_config") {
98  include_dirs = [ "//third_party/ffmpeg" ]
99}
100
101if (use_clang_android) {
102  ohos_source_set("image_native") {
103    public_configs = [ ":image_external_config" ]
104    configs = [ ":image_postproc_config" ]
105    defines = image_decode_android_defines
106    cflags = image_native_android_cflags
107    sources = image_native_android_sources
108    include_dirs = image_native_android_include_dirs
109    deps = image_native_android_deps
110    subsystem_name = "multimedia"
111    part_name = "image_framework"
112  }
113} else if (use_clang_ios) {
114  ohos_source_set("image_native") {
115    public_configs = [ ":image_external_config" ]
116    configs = [ ":image_postproc_config" ]
117    defines = image_decode_ios_defines
118    cflags = image_native_ios_cflags
119    include_dirs = image_native_ios_include_dirs
120    sources = image_native_ios_sources
121    deps = image_native_ios_deps
122    external_deps = image_native_ios_external_deps
123    subsystem_name = "multimedia"
124    part_name = "image_framework"
125  }
126} else {
127  ohos_shared_library("image_native") {
128    if (!use_clang_android) {
129      sanitize = {
130        cfi = true
131        cfi_cross_dso = true
132        debug = false
133      }
134    }
135    public_configs = [ ":image_external_config" ]
136    configs = [ ":image_postproc_config" ]
137
138    cflags = [
139      "-DIMAGE_DEBUG_FLAG",
140      "-DIMAGE_COLORSPACE_FLAG",
141    ]
142
143    sources = [
144      "${image_subsystem}/frameworks/innerkitsimpl/common/src/memory_manager.cpp",
145      "${image_subsystem}/frameworks/innerkitsimpl/common/src/native_image.cpp",
146      "${image_subsystem}/frameworks/innerkitsimpl/common/src/pixel_astc.cpp",
147      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer.cpp",
148      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer_ex.cpp",
149      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_source.cpp",
150      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/common/src/incremental_pixel_map.cpp",
151      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/common/src/pixel_map.cpp",
152      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/common/src/pixel_map_parcel.cpp",
153      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/basic_transformer.cpp",
154      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/matrix.cpp",
155      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/pixel_convert.cpp",
156      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/post_proc.cpp",
157      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/scan_line_filter.cpp",
158      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/src/image_creator.cpp",
159      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/src/image_creator_manager.cpp",
160      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/src/image_receiver.cpp",
161      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/src/image_receiver_manager.cpp",
162      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/buffer_packer_stream.cpp",
163      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/buffer_source_stream.cpp",
164      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/file_packer_stream.cpp",
165      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/file_source_stream.cpp",
166      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/incremental_source_stream.cpp",
167      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/istream_source_stream.cpp",
168      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/ostream_packer_stream.cpp",
169    ]
170
171    if (use_mingw_win) {
172      defines = image_decode_windows_defines
173      sources -= [
174        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer.cpp",
175        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer_ex.cpp",
176        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/buffer_packer_stream.cpp",
177        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/file_packer_stream.cpp",
178        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/ostream_packer_stream.cpp",
179      ]
180      deps = [
181        "//foundation/graphic/graphic_2d/utils/color_manager:color_manager",
182        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter_static",
183        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils_static",
184        "//foundation/multimedia/image_framework/mock/native:log_mock_static",
185        "//foundation/multimedia/image_framework/plugins/manager:pluginmanager_static",
186      ]
187      external_deps = [ "graphic_surface:surface" ]
188    } else if (use_clang_mac) {
189      defines = image_decode_mac_defines
190      sources -= [
191        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer.cpp",
192        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer_ex.cpp",
193        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/buffer_packer_stream.cpp",
194        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/file_packer_stream.cpp",
195        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/ostream_packer_stream.cpp",
196      ]
197      deps = [
198        "//foundation/graphic/graphic_2d/utils/color_manager:color_manager",
199        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter_static",
200        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils_static",
201        "//foundation/multimedia/image_framework/mock/native:log_mock_static",
202        "//foundation/multimedia/image_framework/plugins/manager:pluginmanager_static",
203        "//third_party/bounds_checking_function:libsec_statics",
204      ]
205      external_deps = [ "graphic_surface:surface" ]
206    } else {
207      defines = [ "DUAL_ADAPTER" ]
208      DUAL_ADAPTER = true
209
210      deps = [
211        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter",
212        "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils",
213        "//foundation/multimedia/image_framework/plugins/manager:pluginmanager",
214      ]
215      deps += skia_platform
216
217      if (DUAL_ADAPTER) {
218      } else {
219        deps += [ "//third_party/libpng:libpng" ]
220      }
221      deps += [ "//third_party/ffmpeg:libohosffmpeg" ]
222      external_deps = [
223        "c_utils:utils",
224        "graphic_2d:color_manager",
225        "graphic_surface:surface",
226        "hilog:libhilog",
227        "hitrace:hitrace_meter",
228        "ipc:ipc_core",
229        "napi:ace_napi",
230      ]
231    }
232
233    if (purgeable_ashmem_enable && defined(global_parts_info) &&
234        defined(global_parts_info.resourceschedule_memmgr_plugin)) {
235      defines += [ "IMAGE_PURGEABLE_PIXELMAP" ]
236      external_deps += [ "memmgr_plugin:libpurgeablemem_plugin" ]
237    }
238
239    #  relative_install_dir = "module/multimedia"
240    subsystem_name = "multimedia"
241    innerapi_tags = [ "platformsdk" ]
242    part_name = "image_framework"
243    version_script = "libimage_native.versionscript"
244  }
245}
246
247ohos_static_library("image_static") {
248  public_configs = [ ":image_external_config" ]
249
250  sources = [
251    "${image_subsystem}/frameworks/innerkitsimpl/common/src/pixel_astc.cpp",
252    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer.cpp",
253    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer_ex.cpp",
254    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_source.cpp",
255    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/common/src/incremental_pixel_map.cpp",
256    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/common/src/pixel_map.cpp",
257    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/basic_transformer.cpp",
258    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/matrix.cpp",
259    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/pixel_convert.cpp",
260    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/post_proc.cpp",
261    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/scan_line_filter.cpp",
262    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/src/image_creator.cpp",
263    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/src/image_creator_manager.cpp",
264    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/src/image_receiver.cpp",
265    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/src/image_receiver_manager.cpp",
266    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/buffer_packer_stream.cpp",
267    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/buffer_source_stream.cpp",
268    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/file_packer_stream.cpp",
269    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/file_source_stream.cpp",
270    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/incremental_source_stream.cpp",
271    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/istream_source_stream.cpp",
272    "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/ostream_packer_stream.cpp",
273  ]
274
275  if (use_mingw_win) {
276    defines = image_decode_windows_defines
277    sources -= [
278      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer.cpp",
279      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer_ex.cpp",
280      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/buffer_packer_stream.cpp",
281      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/file_packer_stream.cpp",
282      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/ostream_packer_stream.cpp",
283    ]
284    deps = [
285      "//foundation/graphic/graphic_2d/utils/color_manager:color_manager",
286      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter_static",
287      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils_static",
288      "//foundation/multimedia/image_framework/mock/native:log_mock_static",
289      "//foundation/multimedia/image_framework/plugins/manager:pluginmanager_static",
290    ]
291    external_deps = [ "graphic_surface:surface" ]
292  } else if (use_clang_mac) {
293    defines = image_decode_mac_defines
294    sources -= [
295      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer.cpp",
296      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer_ex.cpp",
297      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/buffer_packer_stream.cpp",
298      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/file_packer_stream.cpp",
299      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/ostream_packer_stream.cpp",
300    ]
301
302    deps = [
303      "//foundation/graphic/graphic_2d/utils/color_manager:color_manager",
304      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter_static",
305      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils_static",
306      "//foundation/multimedia/image_framework/mock/native:log_mock_static",
307      "//foundation/multimedia/image_framework/plugins/manager:pluginmanager_static",
308      "//third_party/bounds_checking_function:libsec_static",
309    ]
310    external_deps = [ "graphic_surface:surface" ]
311  } else if (use_clang_ios) {
312    defines = image_decode_ios_defines
313    sources -= [
314      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/src/image_creator.cpp",
315      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/src/image_creator_manager.cpp",
316      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/src/image_receiver.cpp",
317      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/src/image_receiver_manager.cpp",
318    ]
319    deps = [
320      "$image_subsystem/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter_static",
321      "//foundation/arkui/napi:ace_napi",
322      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils",
323      "//foundation/multimedia/image_framework/mock/native:log_mock_static",
324      "//foundation/multimedia/image_framework/plugins/manager:pluginmanager",
325    ]
326  } else if (use_clang_android) {
327    defines = image_decode_android_defines
328    sources -= [
329      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/src/image_creator.cpp",
330      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/src/image_creator_manager.cpp",
331      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/src/image_receiver.cpp",
332      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/src/image_receiver_manager.cpp",
333    ]
334    deps = [
335      "$image_subsystem/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter_static",
336      "//commonlibrary/c_utils/base:utils",
337      "//foundation/arkui/napi:ace_napi",
338      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils",
339      "//foundation/multimedia/image_framework/plugins/manager:pluginmanager",
340    ]
341  } else {
342    defines = [ "DUAL_ADAPTER" ]
343    DUAL_ADAPTER = true
344
345    deps = [
346      "$image_subsystem/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter_static",
347      "//foundation/arkui/napi:ace_napi",
348      "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils",
349      "//foundation/multimedia/image_framework/plugins/manager:pluginmanager",
350    ]
351
352    if (DUAL_ADAPTER) {
353    } else {
354      deps += [ "//third_party/libpng:libpng" ]
355    }
356    external_deps = [
357      "c_utils:utils",
358      "graphic_2d:color_manager",
359      "graphic_surface:surface",
360      "hilog:libhilog",
361    ]
362  }
363  subsystem_name = "multimedia"
364  part_name = "image_framework"
365}
366