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