1# Copyright (c) 2020 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# http://www.apache.org/licenses/LICENSE-2.0 6# Unless required by applicable law or agreed to in writing, software 7# distributed under the License is distributed on an "AS IS" BASIS, 8# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 9# See the License for the specific language governing permissions and 10# limitations under the License. 11 12if (defined(ohos_lite)) { 13 import("//build/lite/config/component/lite_component.gni") 14} else { 15 import("//build/ohos.gni") 16} 17config("freetype_config") { 18 defines = [ "FT2_BUILD_LIBRARY" ] 19 include_dirs = [ "${target_gen_dir}/freetype/include" ] 20} 21 22action("freetype_action") { 23 script = "//third_party/freetype/install.py" 24 outputs = [ 25 "${target_gen_dir}/freetype/src/autofit/autofit.c", 26 "${target_gen_dir}/freetype/src/base/ftbase.c", 27 "${target_gen_dir}/freetype/src/base/ftbbox.c", 28 "${target_gen_dir}/freetype/src/base/ftbdf.c", 29 "${target_gen_dir}/freetype/src/base/ftbitmap.c", 30 "${target_gen_dir}/freetype/src/base/ftcid.c", 31 "${target_gen_dir}/freetype/src/base/ftdebug.c", 32 "${target_gen_dir}/freetype/src/base/ftfstype.c", 33 "${target_gen_dir}/freetype/src/base/ftgasp.c", 34 "${target_gen_dir}/freetype/src/base/ftglyph.c", 35 "${target_gen_dir}/freetype/src/base/ftgxval.c", 36 "${target_gen_dir}/freetype/src/base/ftinit.c", 37 "${target_gen_dir}/freetype/src/base/ftmm.c", 38 "${target_gen_dir}/freetype/src/base/ftotval.c", 39 "${target_gen_dir}/freetype/src/base/ftpatent.c", 40 "${target_gen_dir}/freetype/src/base/ftpfr.c", 41 "${target_gen_dir}/freetype/src/base/ftstroke.c", 42 "${target_gen_dir}/freetype/src/base/ftsynth.c", 43 "${target_gen_dir}/freetype/src/base/ftsystem.c", 44 "${target_gen_dir}/freetype/src/base/fttype1.c", 45 "${target_gen_dir}/freetype/src/base/ftwinfnt.c", 46 "${target_gen_dir}/freetype/src/bdf/bdf.c", 47 "${target_gen_dir}/freetype/src/cache/ftcache.c", 48 "${target_gen_dir}/freetype/src/cff/cff.c", 49 "${target_gen_dir}/freetype/src/cid/type1cid.c", 50 "${target_gen_dir}/freetype/src/gzip/ftgzip.c", 51 "${target_gen_dir}/freetype/src/lzw/ftlzw.c", 52 "${target_gen_dir}/freetype/src/pcf/pcf.c", 53 "${target_gen_dir}/freetype/src/pfr/pfr.c", 54 "${target_gen_dir}/freetype/src/psaux/psaux.c", 55 "${target_gen_dir}/freetype/src/pshinter/pshinter.c", 56 "${target_gen_dir}/freetype/src/psnames/psmodule.c", 57 "${target_gen_dir}/freetype/src/raster/raster.c", 58 "${target_gen_dir}/freetype/src/sdf/ftbsdf.c", 59 "${target_gen_dir}/freetype/src/sdf/ftsdf.c", 60 "${target_gen_dir}/freetype/src/sdf/ftsdfcommon.c", 61 "${target_gen_dir}/freetype/src/sdf/ftsdfrend.c", 62 "${target_gen_dir}/freetype/src/sfnt/sfnt.c", 63 "${target_gen_dir}/freetype/src/smooth/smooth.c", 64 "${target_gen_dir}/freetype/src/svg/ftsvg.c", 65 "${target_gen_dir}/freetype/src/truetype/truetype.c", 66 "${target_gen_dir}/freetype/src/type1/type1.c", 67 "${target_gen_dir}/freetype/src/type42/type42.c", 68 "${target_gen_dir}/freetype/src/winfonts/winfnt.c", 69 ] 70 71 inputs = [ "//third_party/freetype/freetype-2.13.3.tar.xz" ] 72 inputs += [ 73 "backport-freetype-2.10.0-internal-outline.patch", 74 "backport-freetype-2.10.1-debughook.patch", 75 "backport-freetype-2.12.1-enable-funcs.patch", 76 "backport-freetype-2.2.1-enable-valid.patch", 77 "backport-freetype-2.3.0-enable-spr.patch", 78 "backport-freetype-2.6.5-libtool.patch", 79 "backport-freetype-2.8-multilib.patch" 80 ] 81 freetype_path = rebase_path("${target_gen_dir}", root_build_dir) 82 freetype_source_path = rebase_path("//third_party/freetype", root_build_dir) 83 args = [ 84 "--gen-dir", 85 "$freetype_path", 86 "--source-dir", 87 "$freetype_source_path", 88 ] 89} 90 91if (defined(ohos_lite)) { 92 lite_library("freetype") { 93 if (ohos_kernel_type == "liteos_m") { 94 target_type = "static_library" 95 } else { 96 target_type = "shared_library" 97 } 98 99 freetype_sources = get_target_outputs(":freetype_action") 100 101 deps = [ "//third_party/libpng:libpng" ] 102 sources = freetype_sources 103 include_dirs = [ 104 "${target_gen_dir}/freetype/src/base", 105 "//third_party/libpng", 106 ] 107 108 public_configs = [ ":freetype_config" ] 109 defines = [ "FT_CONFIG_OPTION_USE_PNG" ] 110 111 if (target_type == "static_library") { 112 deps += [ "//build/lite/config/component/zlib:zlib_static" ] 113 defines += [ "FT_CONFIG_OPTION_SYSTEM_ZLIB" ] 114 } 115 deps += [ ":freetype_action" ] 116 if (defined(board_toolchain_type) && board_toolchain_type == "iccarm") { 117 cflags = [ 118 "--diag_suppress", 119 "Pa082,Pa084,Pa128,Pe128,Pa134,Pa137,Pe550", 120 ] 121 cflags_cc = cflags 122 } 123 } 124 125 lite_component("freetype_shared") { 126 features = [ ":freetype" ] 127 } 128} else { 129 ohos_static_library("freetype_static") { 130 sources = get_target_outputs(":freetype_action") 131 include_dirs = [ "${target_gen_dir}/freetype/src/base" ] 132 public_configs = [ ":freetype_config" ] 133 deps = [ ":freetype_action" ] 134 external_deps = [ "zlib:libz" ] 135 defines = [ "FT_CONFIG_OPTION_SYSTEM_ZLIB" ] 136 if (current_os == "ohos") { 137 external_deps += [ "libpng:libpng" ] 138 defines += [ "FT_CONFIG_OPTION_USE_PNG" ] 139 } 140 part_name = "freetype" 141 subsystem_name = "thirdparty" 142 } 143} 144