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_chkdint.c", 26 "$PCRE2_LIB_DIR/src/pcre2_compile.c", 27 "$PCRE2_LIB_DIR/src/pcre2_config.c", 28 "$PCRE2_LIB_DIR/src/pcre2_context.c", 29 "$PCRE2_LIB_DIR/src/pcre2_convert.c", 30 "$PCRE2_LIB_DIR/src/pcre2_dfa_match.c", 31 "$PCRE2_LIB_DIR/src/pcre2_error.c", 32 "$PCRE2_LIB_DIR/src/pcre2_extuni.c", 33 "$PCRE2_LIB_DIR/src/pcre2_find_bracket.c", 34 "$PCRE2_LIB_DIR/src/pcre2_jit_compile.c", 35 "$PCRE2_LIB_DIR/src/pcre2_maketables.c", 36 "$PCRE2_LIB_DIR/src/pcre2_match.c", 37 "$PCRE2_LIB_DIR/src/pcre2_match_data.c", 38 "$PCRE2_LIB_DIR/src/pcre2_newline.c", 39 "$PCRE2_LIB_DIR/src/pcre2_ord2utf.c", 40 "$PCRE2_LIB_DIR/src/pcre2_pattern_info.c", 41 "$PCRE2_LIB_DIR/src/pcre2_script_run.c", 42 "$PCRE2_LIB_DIR/src/pcre2_serialize.c", 43 "$PCRE2_LIB_DIR/src/pcre2_string_utils.c", 44 "$PCRE2_LIB_DIR/src/pcre2_study.c", 45 "$PCRE2_LIB_DIR/src/pcre2_substitute.c", 46 "$PCRE2_LIB_DIR/src/pcre2_substring.c", 47 "$PCRE2_LIB_DIR/src/pcre2_tables.c", 48 "$PCRE2_LIB_DIR/src/pcre2_ucd.c", 49 "$PCRE2_LIB_DIR/src/pcre2_valid_utf.c", 50 "$PCRE2_LIB_DIR/src/pcre2_xclass.c", 51] 52 53ohos_shared_library("libpcre2") { 54 branch_protector_ret = "pac_ret" 55 56 md5_check_script = rebase_path("$PCRE2_LIB_DIR/check_md5.sh") 57 _arguments_config = [ 58 rebase_path("$PCRE2_LIB_DIR/src/config.h.generic"), 59 rebase_path("$PCRE2_LIB_DIR/src/config.h"), 60 ] 61 62 check_config_result = 63 exec_script(md5_check_script, _arguments_config, "string") 64 if (check_config_result == "") { 65 exec_script("/usr/bin/env", 66 [ 67 "cp", 68 "-f", 69 rebase_path("$PCRE2_LIB_DIR/src/config.h.generic"), 70 rebase_path("$PCRE2_LIB_DIR/src/config.h"), 71 ]) 72 } 73 74 _arguments_pcre2 = [ 75 rebase_path("$PCRE2_LIB_DIR/src/pcre2.h.generic"), 76 rebase_path("$PCRE2_LIB_DIR/src/pcre2.h"), 77 ] 78 79 check_pcre2_result = exec_script(md5_check_script, _arguments_pcre2, "string") 80 if (check_pcre2_result == "") { 81 exec_script("/usr/bin/env", 82 [ 83 "cp", 84 "-f", 85 rebase_path("$PCRE2_LIB_DIR/src/pcre2.h.generic"), 86 rebase_path("$PCRE2_LIB_DIR/src/pcre2.h"), 87 ]) 88 } 89 90 _arguments_pcre2_chartables = [ 91 rebase_path("$PCRE2_LIB_DIR/src/pcre2_chartables.c.dist"), 92 rebase_path("$PCRE2_LIB_DIR/src/pcre2_chartables.c"), 93 ] 94 95 check_pcre2_chartables_result = 96 exec_script(md5_check_script, _arguments_pcre2_chartables, "string") 97 if (check_pcre2_chartables_result == "") { 98 exec_script("/usr/bin/env", 99 [ 100 "cp", 101 "-f", 102 rebase_path("$PCRE2_LIB_DIR/src/pcre2_chartables.c.dist"), 103 rebase_path("$PCRE2_LIB_DIR/src/pcre2_chartables.c"), 104 ]) 105 } 106 107 output_name = "libpcre2" 108 sources = pcre2_sources 109 sources += [ "$PCRE2_LIB_DIR/src/pcre2_chartables.c" ] 110 include_dirs = [ "$PCRE2_LIB_DIR/src" ] 111 public_configs = [ ":third_party_pcre2_config" ] 112 cflags = [ 113 "-D_GNU_SOURCE", 114 "-DHAVE_CONFIG_H", 115 "-DSUPPORT_PCRE2_8=1", 116 "-DPCRE2_CODE_UNIT_WIDTH=8", 117 "-w", 118 ] 119 install_enable = true 120 install_images = [ 121 "system", 122 "ramdisk", 123 "updater", 124 ] 125 license_file = "$PCRE2_LIB_DIR/LICENCE" 126 innerapi_tags = [ 127 "platformsdk_indirect", 128 "chipsetsdk_indirect", 129 ] 130 part_name = "pcre2" 131 subsystem_name = "thirdparty" 132} 133 134ohos_static_library("libpcre2_static") { 135 exec_script("/usr/bin/env", 136 [ 137 "mkdir", 138 "-p", 139 rebase_path("$PCRE2_LIB_DIR/src_static"), 140 ]) 141 md5_check_script = rebase_path("$PCRE2_LIB_DIR/check_md5.sh") 142 _arguments_config = [ 143 rebase_path("$PCRE2_LIB_DIR/src/config.h.generic"), 144 rebase_path("$PCRE2_LIB_DIR/src_static/config.h"), 145 ] 146 147 check_config_result = 148 exec_script(md5_check_script, _arguments_config, "string") 149 if (check_config_result == "") { 150 exec_script("/usr/bin/env", 151 [ 152 "cp", 153 "-f", 154 rebase_path("$PCRE2_LIB_DIR/src/config.h.generic"), 155 rebase_path("$PCRE2_LIB_DIR/src_static/config.h"), 156 ]) 157 } 158 159 _arguments_pcre2 = [ 160 rebase_path("$PCRE2_LIB_DIR/src/pcre2.h.generic"), 161 rebase_path("$PCRE2_LIB_DIR/src_static/pcre2.h"), 162 ] 163 164 check_pcre2_result = exec_script(md5_check_script, _arguments_pcre2, "string") 165 if (check_pcre2_result == "") { 166 exec_script("/usr/bin/env", 167 [ 168 "cp", 169 "-f", 170 rebase_path("$PCRE2_LIB_DIR/src/pcre2.h.generic"), 171 rebase_path("$PCRE2_LIB_DIR/src_static/pcre2.h"), 172 ]) 173 } 174 175 _arguments_pcre2_chartables = [ 176 rebase_path("$PCRE2_LIB_DIR/src/pcre2_chartables.c.dist"), 177 rebase_path("$PCRE2_LIB_DIR/src_static/pcre2_chartables.c"), 178 ] 179 180 check_pcre2_chartables_result = 181 exec_script(md5_check_script, _arguments_pcre2_chartables, "string") 182 if (check_pcre2_chartables_result == "") { 183 exec_script("/usr/bin/env", 184 [ 185 "cp", 186 "-f", 187 rebase_path("$PCRE2_LIB_DIR/src/pcre2_chartables.c.dist"), 188 rebase_path("$PCRE2_LIB_DIR/src_static/pcre2_chartables.c"), 189 ]) 190 } 191 192 output_name = "libpcre2_static" 193 sources = pcre2_sources 194 sources += [ "$PCRE2_LIB_DIR/src_static/pcre2_chartables.c" ] 195 include_dirs = [ "$PCRE2_LIB_DIR/src" ] 196 include_dirs += [ "$PCRE2_LIB_DIR/src_static" ] 197 public_configs = [ ":third_party_pcre2_config" ] 198 cflags = [ 199 "-D_GNU_SOURCE", 200 "-DHAVE_CONFIG_H", 201 "-DSUPPORT_PCRE2_8=1", 202 "-DPCRE2_CODE_UNIT_WIDTH=8", 203 "-w", 204 ] 205 license_file = "$PCRE2_LIB_DIR/LICENCE" 206 part_name = "pcre2" 207 subsystem_name = "thirdparty" 208} 209