1e5c4badcSopenharmony_ci# Copyright (C) 2022-2023 Huawei Device Co., Ltd.
2e5c4badcSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
3e5c4badcSopenharmony_ci# you may not use this file except in compliance with the License.
4e5c4badcSopenharmony_ci# You may obtain a copy of the License at
5e5c4badcSopenharmony_ci#
6e5c4badcSopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
7e5c4badcSopenharmony_ci#
8e5c4badcSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
9e5c4badcSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
10e5c4badcSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11e5c4badcSopenharmony_ci# See the License for the specific language governing permissions and
12e5c4badcSopenharmony_ci# limitations under the License.
13e5c4badcSopenharmony_ci
14e5c4badcSopenharmony_ciimport("//build/ohos.gni")
15e5c4badcSopenharmony_ciimport("//foundation/multimedia/image_framework/ide/image_decode_config.gni")
16e5c4badcSopenharmony_ci
17e5c4badcSopenharmony_ciconfig("ffi_image_native_config") {
18e5c4badcSopenharmony_ci  include_dirs = [ "include" ]
19e5c4badcSopenharmony_ci  cflags_cc = [ "-std=c++17" ]
20e5c4badcSopenharmony_ci}
21e5c4badcSopenharmony_ci
22e5c4badcSopenharmony_ciohos_shared_library("cj_image_ffi") {
23e5c4badcSopenharmony_ci  public_configs = [ ":ffi_image_native_config" ]
24e5c4badcSopenharmony_ci
25e5c4badcSopenharmony_ci  include_dirs = [
26e5c4badcSopenharmony_ci    "$image_subsystem/interfaces/innerkits/include",
27e5c4badcSopenharmony_ci    "$image_subsystem/image_framework/frameworks/innerkitsimpl/utils/include",
28e5c4badcSopenharmony_ci  ]
29e5c4badcSopenharmony_ci
30e5c4badcSopenharmony_ci  if (!use_clang_android && !use_clang_ios) {
31e5c4badcSopenharmony_ci    sanitize = {
32e5c4badcSopenharmony_ci      cfi = true
33e5c4badcSopenharmony_ci      cfi_cross_dso = true
34e5c4badcSopenharmony_ci      cfi_vcall_icall_only = true
35e5c4badcSopenharmony_ci      debug = false
36e5c4badcSopenharmony_ci    }
37e5c4badcSopenharmony_ci  }
38e5c4badcSopenharmony_ci
39e5c4badcSopenharmony_ci  cflags = [
40e5c4badcSopenharmony_ci    "-DIMAGE_DEBUG_FLAG",
41e5c4badcSopenharmony_ci    "-DIMAGE_COLORSPACE_FLAG",
42e5c4badcSopenharmony_ci  ]
43e5c4badcSopenharmony_ci
44e5c4badcSopenharmony_ci  if (!defined(defines)) {
45e5c4badcSopenharmony_ci    defines = []
46e5c4badcSopenharmony_ci  }
47e5c4badcSopenharmony_ci
48e5c4badcSopenharmony_ci  if (!ohos_indep_compiler_enable && !build_ohos_sdk &&
49e5c4badcSopenharmony_ci      product_name != "qemu-arm-linux-min" &&
50e5c4badcSopenharmony_ci      product_name != "rk3568_mini_system") {
51e5c4badcSopenharmony_ci    deps = [
52e5c4badcSopenharmony_ci      "$image_subsystem/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter",
53e5c4badcSopenharmony_ci      "$image_subsystem/frameworks/innerkitsimpl/utils:image_utils",
54e5c4badcSopenharmony_ci      "$image_subsystem/interfaces/innerkits:image_native",
55e5c4badcSopenharmony_ci    ]
56e5c4badcSopenharmony_ci    external_deps = [
57e5c4badcSopenharmony_ci      "c_utils:utils",
58e5c4badcSopenharmony_ci      "graphic_2d:cj_color_manager_ffi",
59e5c4badcSopenharmony_ci      "hilog:libhilog",
60e5c4badcSopenharmony_ci      "hitrace:hitrace_meter",
61e5c4badcSopenharmony_ci      "ipc:ipc_napi",
62e5c4badcSopenharmony_ci      "napi:ace_napi",
63e5c4badcSopenharmony_ci      "napi:cj_bind_ffi",
64e5c4badcSopenharmony_ci      "napi:cj_bind_native",
65e5c4badcSopenharmony_ci    ]
66e5c4badcSopenharmony_ci    sources = [
67e5c4badcSopenharmony_ci      "src/image_creator_impl.cpp",
68e5c4badcSopenharmony_ci      "src/image_ffi.cpp",
69e5c4badcSopenharmony_ci      "src/image_impl.cpp",
70e5c4badcSopenharmony_ci      "src/image_packer_impl.cpp",
71e5c4badcSopenharmony_ci      "src/image_receiver_impl.cpp",
72e5c4badcSopenharmony_ci      "src/image_source_impl.cpp",
73e5c4badcSopenharmony_ci      "src/pixel_map_impl.cpp",
74e5c4badcSopenharmony_ci    ]
75e5c4badcSopenharmony_ci  } else {
76e5c4badcSopenharmony_ci    defines += [ "PREVIEWER" ]
77e5c4badcSopenharmony_ci    sources = [ "src/cj_image_mock.cpp" ]
78e5c4badcSopenharmony_ci  }
79e5c4badcSopenharmony_ci
80e5c4badcSopenharmony_ci  if (is_ohos) {
81e5c4badcSopenharmony_ci    defines += [ "OHOS_PLATFORM" ]
82e5c4badcSopenharmony_ci  }
83e5c4badcSopenharmony_ci
84e5c4badcSopenharmony_ci  if (is_mingw) {
85e5c4badcSopenharmony_ci    defines += [ "WINDOWS_PLATFORM" ]
86e5c4badcSopenharmony_ci  }
87e5c4badcSopenharmony_ci
88e5c4badcSopenharmony_ci  innerapi_tags = [ "platformsdk" ]
89e5c4badcSopenharmony_ci
90e5c4badcSopenharmony_ci  subsystem_name = "multimedia"
91e5c4badcSopenharmony_ci  part_name = "image_framework"
92e5c4badcSopenharmony_ci}
93