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