• 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_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