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