1# Copyright (c) 2024 Huawei Device Co., Ltd.. All rights reserved. 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("//foundation/graphic/graphic_2d/ace_platforms.gni") 16import("//foundation/graphic/graphic_2d/graphic_config.gni") 17import("$graphic_2d_root/rosen/modules/2d_engine/rosen_text/config.gni") 18 19drawing_root = "$rosen_root/modules/2d_graphics" 20drawing_ndk_include_dir = "$rosen_root/modules/2d_graphics/drawing_ndk/include" 21drawing_ndk_src_dir = "$rosen_root/modules/2d_graphics/drawing_ndk/src" 22drawing_utils_root = "$rosen_root/modules/2d_graphics/drawing_ndk/drawing_utils" 23 24config("export_config") { 25 include_dirs = [ "$drawing_ndk_include_dir" ] 26} 27 28if (enable_text_gine) { 29 defines = [ "USE_GRAPHIC_TEXT_GINE" ] 30} 31 32template("drawing_ndk_source_set") { 33 forward_variables_from(invoker, "*") 34 35 ohos_source_set(target_name) { 36 defines += invoker.defines 37 cflags_cc += invoker.cflags_cc 38 if (use_texgine) { 39 defines += [ "USE_TEXGINE" ] 40 } else if (use_skia_txt) { 41 defines += [ "USE_SKIA_TXT" ] 42 } 43 44 sanitize = { 45 cfi = true 46 cfi_cross_dso = true 47 cfi_vcall_icall_only = true 48 debug = false 49 blocklist = "./drawingndk_blocklist.txt" 50 } 51 52 public_deps = [ 53 "$drawing_root:2d_graphics", 54 "$graphic_2d_root/rosen/modules/render_service_base:librender_service_base", 55 ] 56 public_external_deps = [ "jsoncpp:jsoncpp" ] 57 external_deps = [ "napi:ace_napi" ] 58 configs = [ ":export_config" ] 59 sources = [ 60 "$drawing_ndk_src_dir/drawing_bitmap.cpp", 61 "$drawing_ndk_src_dir/drawing_brush.cpp", 62 "$drawing_ndk_src_dir/drawing_canvas.cpp", 63 "$drawing_ndk_src_dir/drawing_color.cpp", 64 "$drawing_ndk_src_dir/drawing_color_filter.cpp", 65 "$drawing_ndk_src_dir/drawing_color_space.cpp", 66 "$drawing_ndk_src_dir/drawing_error_code.cpp", 67 "$drawing_ndk_src_dir/drawing_filter.cpp", 68 "$drawing_ndk_src_dir/drawing_font.cpp", 69 "$drawing_ndk_src_dir/drawing_font_collection.cpp", 70 "$drawing_ndk_src_dir/drawing_font_mgr.cpp", 71 "$drawing_ndk_src_dir/drawing_gpu_context.cpp", 72 "$drawing_ndk_src_dir/drawing_image.cpp", 73 "$drawing_ndk_src_dir/drawing_image_filter.cpp", 74 "$drawing_ndk_src_dir/drawing_mask_filter.cpp", 75 "$drawing_ndk_src_dir/drawing_matrix.cpp", 76 "$drawing_ndk_src_dir/drawing_memory_stream.cpp", 77 "$drawing_ndk_src_dir/drawing_path.cpp", 78 "$drawing_ndk_src_dir/drawing_path_effect.cpp", 79 "$drawing_ndk_src_dir/drawing_pen.cpp", 80 "$drawing_ndk_src_dir/drawing_pixel_map.cpp", 81 "$drawing_ndk_src_dir/drawing_point.cpp", 82 "$drawing_ndk_src_dir/drawing_record_cmd.cpp", 83 "$drawing_ndk_src_dir/drawing_rect.cpp", 84 "$drawing_ndk_src_dir/drawing_region.cpp", 85 "$drawing_ndk_src_dir/drawing_register_font.cpp", 86 "$drawing_ndk_src_dir/drawing_round_rect.cpp", 87 "$drawing_ndk_src_dir/drawing_sampling_options.cpp", 88 "$drawing_ndk_src_dir/drawing_shader_effect.cpp", 89 "$drawing_ndk_src_dir/drawing_shadow_layer.cpp", 90 "$drawing_ndk_src_dir/drawing_surface.cpp", 91 "$drawing_ndk_src_dir/drawing_text_blob.cpp", 92 "$drawing_ndk_src_dir/drawing_text_font_descriptor.cpp", 93 "$drawing_ndk_src_dir/drawing_text_line.cpp", 94 "$drawing_ndk_src_dir/drawing_text_lineTypography.cpp", 95 "$drawing_ndk_src_dir/drawing_text_run.cpp", 96 "$drawing_ndk_src_dir/drawing_text_typography.cpp", 97 "$drawing_ndk_src_dir/drawing_typeface.cpp", 98 "$drawing_utils_root/drawing_canvas_utils.cpp", 99 "$drawing_utils_root/native_pixel_map_manager.cpp", 100 ] 101 102 if (is_arkui_x) { 103 defines += [ "CROSS_PLATFORM" ] 104 } 105 if (rs_enable_gpu) { 106 defines += [ "RS_ENABLE_GPU" ] 107 } 108 if (is_emulator) { 109 defines += [ "ROSEN_EMULATOR" ] 110 } 111 112 include_dirs = [ 113 "$drawing_utils_root", 114 "$graphic_2d_root/rosen/modules/render_service_base/include", 115 "$rosen_root/modules/texgine/src", 116 ] 117 118 if (enable_text_gine) { 119 defines += [ "USE_GRAPHIC_TEXT_GINE" ] 120 if (use_texgine) { 121 defines += [ "USE_TEXGINE" ] 122 } 123 include_dirs += [ 124 "$rosen_root/modules/2d_engine/rosen_text", 125 "$rosen_root/modules/2d_engine/rosen_text/adapter", 126 "$rosen_root/modules/2d_engine/rosen_text/export", 127 ] 128 } else { 129 include_dirs += [ 130 "$ace_napi_frameworks/frameworks", 131 "$rosen_2d_engine_root", 132 ] 133 } 134 135 if (platform == "ohos" || platform == "ohos_ng") { 136 defines += [ "OHOS_PLATFORM" ] 137 external_deps += [ 138 "bounds_checking_function:libsec_static", 139 "hilog:libhilog", 140 "image_framework:image_native", 141 "image_framework:pixelmap", 142 "image_framework:pixelmap_ndk", 143 ] 144 145 deps = [ "$graphic_2d_root/rosen/build/icu:rosen_libicu_$platform" ] 146 147 remove_configs = [ "//build/config/compiler:default_include_dirs" ] 148 } else { 149 deps = [] 150 cflags = [ "-std=c++17" ] 151 152 if (!is_arkui_x) { 153 deps += [ "$rosen_root/modules/platform:hilog" ] 154 } 155 156 external_deps += [ "bounds_checking_function:libsec_static" ] 157 defines += [ "MODULE_DRAWING" ] 158 159 defines += [ "USE_GRAPHIC_TEXT_GINE" ] 160 } 161 if (enable_text_gine) { 162 deps += [ "$rosen_root/modules/2d_engine/rosen_text:rosen_text_inner" ] 163 defines += [ "USE_GRAPHIC_TEXT_GINE" ] 164 if (use_skia_txt) { 165 include_dirs += 166 [ "$graphic_2d_root/rosen/modules/2d_engine/rosen_text/skia_txt" ] 167 } 168 } 169 if (rosen_is_ohos) { 170 include_dirs += [ "$graphic_2d_root/interfaces/inner_api/surface" ] 171 external_deps += [ "c_utils:utils" ] 172 } 173 174 part_name = "graphic_2d" 175 subsystem_name = "graphic" 176 } 177} 178 179foreach(item, ace_platforms) { 180 drawing_ndk_source_set("drawing_ndk_source_" + item.name) { 181 platform = item.name 182 defines = [] 183 184 if (defined(item.config)) { 185 config = item.config 186 } else { 187 config = { 188 } 189 } 190 191 if (defined(config.defines)) { 192 defines += config.defines 193 } 194 195 if (defined(config.cflags_cc)) { 196 cflags_cc = config.cflags_cc 197 } else { 198 cflags_cc = [] 199 } 200 } 201} 202 203if (!is_arkui_x) { 204 ## Build native_drawing_ndk.so 205 ohos_shared_library("native_drawing_ndk") { 206 sanitize = { 207 cfi = true 208 cfi_cross_dso = true 209 cfi_vcall_icall_only = true 210 debug = false 211 } 212 platform = current_os 213 if (platform == "mingw") { 214 platform = "windows" 215 } 216 public_configs = [ ":export_config" ] 217 deps = [ "$drawing_root/drawing_ndk:drawing_ndk_source_$platform" ] 218 public_external_deps = [ "skia:skia_canvaskit" ] 219 220 if (platform == "ohos") { 221 version_script = "$drawing_root/2d_graphics.versionscript" 222 symlink_target_name = [ "libnative_drawing.so" ] 223 innerapi_tags = [ "platformsdk_indirect" ] 224 } 225 226 part_name = "graphic_2d" 227 subsystem_name = "graphic" 228 } 229} 230