• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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