1# Copyright (c) 2021 北京万里红科技有限公司 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15import("//build/ohos.gni") 16 17PCRE2_LIB_DIR = "//third_party/pcre2/pcre2" 18 19config("third_party_pcre2_config") { 20 include_dirs = [ "$PCRE2_LIB_DIR/src" ] 21} 22 23pcre2_sources = [ 24 "$PCRE2_LIB_DIR/src/pcre2_auto_possess.c", 25 "$PCRE2_LIB_DIR/src/pcre2_compile.c", 26 "$PCRE2_LIB_DIR/src/pcre2_config.c", 27 "$PCRE2_LIB_DIR/src/pcre2_context.c", 28 "$PCRE2_LIB_DIR/src/pcre2_convert.c", 29 "$PCRE2_LIB_DIR/src/pcre2_dfa_match.c", 30 "$PCRE2_LIB_DIR/src/pcre2_error.c", 31 "$PCRE2_LIB_DIR/src/pcre2_extuni.c", 32 "$PCRE2_LIB_DIR/src/pcre2_find_bracket.c", 33 "$PCRE2_LIB_DIR/src/pcre2_jit_compile.c", 34 "$PCRE2_LIB_DIR/src/pcre2_maketables.c", 35 "$PCRE2_LIB_DIR/src/pcre2_match.c", 36 "$PCRE2_LIB_DIR/src/pcre2_match_data.c", 37 "$PCRE2_LIB_DIR/src/pcre2_newline.c", 38 "$PCRE2_LIB_DIR/src/pcre2_ord2utf.c", 39 "$PCRE2_LIB_DIR/src/pcre2_pattern_info.c", 40 "$PCRE2_LIB_DIR/src/pcre2_script_run.c", 41 "$PCRE2_LIB_DIR/src/pcre2_serialize.c", 42 "$PCRE2_LIB_DIR/src/pcre2_string_utils.c", 43 "$PCRE2_LIB_DIR/src/pcre2_study.c", 44 "$PCRE2_LIB_DIR/src/pcre2_substitute.c", 45 "$PCRE2_LIB_DIR/src/pcre2_substring.c", 46 "$PCRE2_LIB_DIR/src/pcre2_tables.c", 47 "$PCRE2_LIB_DIR/src/pcre2_ucd.c", 48 "$PCRE2_LIB_DIR/src/pcre2_valid_utf.c", 49 "$PCRE2_LIB_DIR/src/pcre2_xclass.c", 50] 51 52ohos_shared_library("libpcre2") { 53 branch_protector_ret = "pac_ret" 54 55 md5_check_script = rebase_path("$PCRE2_LIB_DIR/check_md5.sh") 56 _arguments_config = [ 57 rebase_path("$PCRE2_LIB_DIR/src/config.h.generic"), 58 rebase_path("$PCRE2_LIB_DIR/src/config.h"), 59 ] 60 61 check_config_result = 62 exec_script(md5_check_script, _arguments_config, "string") 63 if (check_config_result == "") { 64 exec_script("/usr/bin/env", 65 [ 66 "cp", 67 "-f", 68 rebase_path("$PCRE2_LIB_DIR/src/config.h.generic"), 69 rebase_path("$PCRE2_LIB_DIR/src/config.h"), 70 ]) 71 } 72 73 _arguments_pcre2 = [ 74 rebase_path("$PCRE2_LIB_DIR/src/pcre2.h.generic"), 75 rebase_path("$PCRE2_LIB_DIR/src/pcre2.h"), 76 ] 77 78 check_pcre2_result = exec_script(md5_check_script, _arguments_pcre2, "string") 79 if (check_pcre2_result == "") { 80 exec_script("/usr/bin/env", 81 [ 82 "cp", 83 "-f", 84 rebase_path("$PCRE2_LIB_DIR/src/pcre2.h.generic"), 85 rebase_path("$PCRE2_LIB_DIR/src/pcre2.h"), 86 ]) 87 } 88 89 _arguments_pcre2_chartables = [ 90 rebase_path("$PCRE2_LIB_DIR/src/pcre2_chartables.c.dist"), 91 rebase_path("$PCRE2_LIB_DIR/src/pcre2_chartables.c"), 92 ] 93 94 check_pcre2_chartables_result = 95 exec_script(md5_check_script, _arguments_pcre2_chartables, "string") 96 if (check_pcre2_chartables_result == "") { 97 exec_script("/usr/bin/env", 98 [ 99 "cp", 100 "-f", 101 rebase_path("$PCRE2_LIB_DIR/src/pcre2_chartables.c.dist"), 102 rebase_path("$PCRE2_LIB_DIR/src/pcre2_chartables.c"), 103 ]) 104 } 105 106 output_name = "libpcre2" 107 sources = pcre2_sources 108 sources += [ "$PCRE2_LIB_DIR/src/pcre2_chartables.c" ] 109 include_dirs = [ "$PCRE2_LIB_DIR/src" ] 110 public_configs = [ ":third_party_pcre2_config" ] 111 cflags = [ 112 "-D_GNU_SOURCE", 113 "-DHAVE_CONFIG_H", 114 "-DSUPPORT_PCRE2_8=1", 115 "-DPCRE2_CODE_UNIT_WIDTH=8", 116 "-w", 117 ] 118 install_enable = true 119 install_images = [ 120 "system", 121 "ramdisk", 122 "updater", 123 ] 124 license_file = "$PCRE2_LIB_DIR/LICENCE" 125 innerapi_tags = [ 126 "platformsdk_indirect", 127 "chipsetsdk_indirect", 128 ] 129 part_name = "pcre2" 130 subsystem_name = "thirdparty" 131} 132 133ohos_static_library("libpcre2_static") { 134 exec_script("/usr/bin/env", 135 [ 136 "mkdir", 137 "-p", 138 rebase_path("$PCRE2_LIB_DIR/src_static"), 139 ]) 140 md5_check_script = rebase_path("$PCRE2_LIB_DIR/check_md5.sh") 141 _arguments_config = [ 142 rebase_path("$PCRE2_LIB_DIR/src/config.h.generic"), 143 rebase_path("$PCRE2_LIB_DIR/src_static/config.h"), 144 ] 145 146 check_config_result = 147 exec_script(md5_check_script, _arguments_config, "string") 148 if (check_config_result == "") { 149 exec_script("/usr/bin/env", 150 [ 151 "cp", 152 "-f", 153 rebase_path("$PCRE2_LIB_DIR/src/config.h.generic"), 154 rebase_path("$PCRE2_LIB_DIR/src_static/config.h"), 155 ]) 156 } 157 158 _arguments_pcre2 = [ 159 rebase_path("$PCRE2_LIB_DIR/src/pcre2.h.generic"), 160 rebase_path("$PCRE2_LIB_DIR/src_static/pcre2.h"), 161 ] 162 163 check_pcre2_result = exec_script(md5_check_script, _arguments_pcre2, "string") 164 if (check_pcre2_result == "") { 165 exec_script("/usr/bin/env", 166 [ 167 "cp", 168 "-f", 169 rebase_path("$PCRE2_LIB_DIR/src/pcre2.h.generic"), 170 rebase_path("$PCRE2_LIB_DIR/src_static/pcre2.h"), 171 ]) 172 } 173 174 _arguments_pcre2_chartables = [ 175 rebase_path("$PCRE2_LIB_DIR/src/pcre2_chartables.c.dist"), 176 rebase_path("$PCRE2_LIB_DIR/src_static/pcre2_chartables.c"), 177 ] 178 179 check_pcre2_chartables_result = 180 exec_script(md5_check_script, _arguments_pcre2_chartables, "string") 181 if (check_pcre2_chartables_result == "") { 182 exec_script("/usr/bin/env", 183 [ 184 "cp", 185 "-f", 186 rebase_path("$PCRE2_LIB_DIR/src/pcre2_chartables.c.dist"), 187 rebase_path("$PCRE2_LIB_DIR/src_static/pcre2_chartables.c"), 188 ]) 189 } 190 191 output_name = "libpcre2_static" 192 sources = pcre2_sources 193 sources += [ "$PCRE2_LIB_DIR/src_static/pcre2_chartables.c" ] 194 include_dirs = [ "$PCRE2_LIB_DIR/src" ] 195 include_dirs += [ "$PCRE2_LIB_DIR/src_static" ] 196 public_configs = [ ":third_party_pcre2_config" ] 197 cflags = [ 198 "-D_GNU_SOURCE", 199 "-DHAVE_CONFIG_H", 200 "-DSUPPORT_PCRE2_8=1", 201 "-DPCRE2_CODE_UNIT_WIDTH=8", 202 "-w", 203 ] 204 license_file = "$PCRE2_LIB_DIR/LICENCE" 205 part_name = "pcre2" 206 subsystem_name = "thirdparty" 207} 208