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 "//foundation/graphic/graphic_2d/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 97if (use_clang_android) { 98 ohos_source_set("image_native") { 99 public_configs = [ ":image_external_config" ] 100 defines = image_decode_android_defines 101 cflags = image_native_android_cflags 102 sources = image_native_android_sources 103 include_dirs = image_native_android_include_dirs 104 deps = image_native_android_deps 105 subsystem_name = "multimedia" 106 part_name = "image_framework" 107 } 108} else if (use_clang_ios) { 109 ohos_source_set("image_native") { 110 public_configs = [ ":image_external_config" ] 111 defines = image_decode_ios_defines 112 cflags = image_native_ios_cflags 113 include_dirs = image_native_ios_include_dirs 114 sources = image_native_ios_sources 115 deps = image_native_ios_deps 116 external_deps = image_native_ios_external_deps 117 subsystem_name = "multimedia" 118 part_name = "image_framework" 119 } 120} else { 121 ohos_shared_library("image_native") { 122 if (!use_clang_android) { 123 sanitize = { 124 cfi = true 125 cfi_cross_dso = true 126 debug = false 127 } 128 } 129 public_configs = [ ":image_external_config" ] 130 131 cflags = [ 132 "-DIMAGE_DEBUG_FLAG", 133 "-DIMAGE_COLORSPACE_FLAG", 134 ] 135 136 sources = [ 137 "${image_subsystem}/frameworks/innerkitsimpl/common/src/memory_manager.cpp", 138 "${image_subsystem}/frameworks/innerkitsimpl/common/src/native_image.cpp", 139 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer.cpp", 140 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer_ex.cpp", 141 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_source.cpp", 142 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/common/src/incremental_pixel_map.cpp", 143 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/common/src/pixel_map.cpp", 144 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/common/src/pixel_map_parcel.cpp", 145 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/basic_transformer.cpp", 146 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/matrix.cpp", 147 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/pixel_convert.cpp", 148 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/post_proc.cpp", 149 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/scan_line_filter.cpp", 150 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/src/image_creator.cpp", 151 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/src/image_creator_manager.cpp", 152 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/src/image_receiver.cpp", 153 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/src/image_receiver_manager.cpp", 154 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/buffer_packer_stream.cpp", 155 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/buffer_source_stream.cpp", 156 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/file_packer_stream.cpp", 157 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/file_source_stream.cpp", 158 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/incremental_source_stream.cpp", 159 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/istream_source_stream.cpp", 160 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/ostream_packer_stream.cpp", 161 ] 162 163 if (use_mingw_win) { 164 defines = image_decode_windows_defines 165 sources -= [ 166 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer.cpp", 167 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer_ex.cpp", 168 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/buffer_packer_stream.cpp", 169 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/file_packer_stream.cpp", 170 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/ostream_packer_stream.cpp", 171 ] 172 deps = [ 173 "//foundation/graphic/graphic_2d:libsurface", 174 "//foundation/graphic/graphic_2d/utils/color_manager:color_manager", 175 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter_static", 176 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils_static", 177 "//foundation/multimedia/image_framework/mock/native:log_mock_static", 178 "//foundation/multimedia/image_framework/plugins/manager:pluginmanager_static", 179 ] 180 } else if (use_clang_mac) { 181 defines = image_decode_mac_defines 182 sources -= [ 183 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer.cpp", 184 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer_ex.cpp", 185 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/buffer_packer_stream.cpp", 186 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/file_packer_stream.cpp", 187 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/ostream_packer_stream.cpp", 188 ] 189 deps = [ 190 "//foundation/graphic/graphic_2d:libsurface", 191 "//foundation/graphic/graphic_2d/utils/color_manager:color_manager", 192 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter_static", 193 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils_static", 194 "//foundation/multimedia/image_framework/mock/native:log_mock_static", 195 "//foundation/multimedia/image_framework/plugins/manager:pluginmanager_static", 196 "//third_party/bounds_checking_function:libsec_statics", 197 ] 198 } else { 199 defines = [ "DUAL_ADAPTER" ] 200 DUAL_ADAPTER = true 201 202 deps = [ 203 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter", 204 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils", 205 "//foundation/multimedia/image_framework/plugins/manager:pluginmanager", 206 ] 207 deps += skia_platform 208 209 if (DUAL_ADAPTER) { 210 } else { 211 deps += [ "//third_party/libpng:libpng" ] 212 } 213 external_deps = [ 214 "c_utils:utils", 215 "graphic_2d:color_manager", 216 "graphic_2d:surface", 217 "hitrace:hitrace_meter", 218 "ipc:ipc_core", 219 "napi:ace_napi", 220 ] 221 } 222 223 if (purgeable_ashmem_enable) { 224 defines += [ "IMAGE_PURGEABLE_PIXELMAP" ] 225 external_deps += [ "memory_utils:libpurgeablemem" ] 226 } 227 228 # relative_install_dir = "module/multimedia" 229 subsystem_name = "multimedia" 230 innerapi_tags = [ "platformsdk" ] 231 part_name = "image_framework" 232 version_script = "libimage_native.versionscript" 233 } 234} 235 236ohos_static_library("image_static") { 237 public_configs = [ ":image_external_config" ] 238 239 sources = [ 240 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer.cpp", 241 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer_ex.cpp", 242 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_source.cpp", 243 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/common/src/incremental_pixel_map.cpp", 244 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/common/src/pixel_map.cpp", 245 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/basic_transformer.cpp", 246 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/matrix.cpp", 247 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/pixel_convert.cpp", 248 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/post_proc.cpp", 249 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/converter/src/scan_line_filter.cpp", 250 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/src/image_creator.cpp", 251 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/src/image_creator_manager.cpp", 252 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/src/image_receiver.cpp", 253 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/src/image_receiver_manager.cpp", 254 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/buffer_packer_stream.cpp", 255 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/buffer_source_stream.cpp", 256 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/file_packer_stream.cpp", 257 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/file_source_stream.cpp", 258 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/incremental_source_stream.cpp", 259 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/istream_source_stream.cpp", 260 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/ostream_packer_stream.cpp", 261 ] 262 263 if (use_mingw_win) { 264 defines = image_decode_windows_defines 265 sources -= [ 266 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer.cpp", 267 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer_ex.cpp", 268 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/buffer_packer_stream.cpp", 269 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/file_packer_stream.cpp", 270 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/ostream_packer_stream.cpp", 271 ] 272 deps = [ 273 "//foundation/graphic/graphic_2d:libsurface", 274 "//foundation/graphic/graphic_2d/utils/color_manager:color_manager", 275 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter_static", 276 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils_static", 277 "//foundation/multimedia/image_framework/mock/native:log_mock_static", 278 "//foundation/multimedia/image_framework/plugins/manager:pluginmanager_static", 279 ] 280 } else if (use_clang_mac) { 281 defines = image_decode_mac_defines 282 sources -= [ 283 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer.cpp", 284 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/codec/src/image_packer_ex.cpp", 285 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/buffer_packer_stream.cpp", 286 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/file_packer_stream.cpp", 287 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/stream/src/ostream_packer_stream.cpp", 288 ] 289 290 deps = [ 291 "//foundation/graphic/graphic_2d:libsurface", 292 "//foundation/graphic/graphic_2d/utils/color_manager:color_manager", 293 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter_static", 294 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils_static", 295 "//foundation/multimedia/image_framework/mock/native:log_mock_static", 296 "//foundation/multimedia/image_framework/plugins/manager:pluginmanager_static", 297 "//third_party/bounds_checking_function:libsec_static", 298 ] 299 } else if (use_clang_ios) { 300 defines = image_decode_ios_defines 301 sources -= [ 302 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/src/image_creator.cpp", 303 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/src/image_creator_manager.cpp", 304 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/src/image_receiver.cpp", 305 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/src/image_receiver_manager.cpp", 306 ] 307 deps = [ 308 "$image_subsystem/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter_static", 309 "//foundation/arkui/napi:ace_napi", 310 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils", 311 "//foundation/multimedia/image_framework/mock/native:log_mock_static", 312 "//foundation/multimedia/image_framework/plugins/manager:pluginmanager", 313 ] 314 } else if (use_clang_android) { 315 defines = image_decode_android_defines 316 sources -= [ 317 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/src/image_creator.cpp", 318 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/creator/src/image_creator_manager.cpp", 319 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/src/image_receiver.cpp", 320 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/receiver/src/image_receiver_manager.cpp", 321 ] 322 deps = [ 323 "$image_subsystem/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter_static", 324 "//commonlibrary/c_utils/base:utils", 325 "//foundation/arkui/napi:ace_napi", 326 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils", 327 "//foundation/multimedia/image_framework/plugins/manager:pluginmanager", 328 ] 329 } else { 330 defines = [ "DUAL_ADAPTER" ] 331 DUAL_ADAPTER = true 332 333 deps = [ 334 "$image_subsystem/frameworks/innerkitsimpl/pixelconverter:pixelconvertadapter_static", 335 "//foundation/arkui/napi:ace_napi", 336 "//foundation/graphic/graphic_2d:libsurface", 337 "//foundation/multimedia/image_framework/frameworks/innerkitsimpl/utils:image_utils", 338 "//foundation/multimedia/image_framework/plugins/manager:pluginmanager", 339 ] 340 341 if (DUAL_ADAPTER) { 342 } else { 343 deps += [ "//third_party/libpng:libpng" ] 344 } 345 external_deps = [ 346 "c_utils:utils", 347 "graphic_2d:color_manager", 348 ] 349 } 350 subsystem_name = "multimedia" 351 part_name = "image_framework" 352} 353