• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) Huawei Technologies Co., Ltd. 2021. All rights reserved.
2
3import("//build/ohos.gni")
4import("config.gni")
5
6glib_path = rebase_path("//third_party/glib")
7exec_script("install.sh", [ "$glib_path" ])
8
9PCRE2_LIB_DIR = "//third_party/pcre2/pcre2"
10
11ohos_shared_library("glibpcre") {
12  branch_protector_ret = "pac_ret"
13  md5_check_script = rebase_path("$PCRE2_LIB_DIR/check_md5.sh")
14  _arguments_config = [
15    rebase_path("$PCRE2_LIB_DIR/src/config.h.generic"),
16    rebase_path("$PCRE2_LIB_DIR/src/config.h"),
17  ]
18
19  check_config_result =
20      exec_script(md5_check_script, _arguments_config, "string")
21  if (check_config_result == "") {
22    exec_script("/usr/bin/env",
23                [
24                  "cp",
25                  rebase_path("$PCRE2_LIB_DIR/src/config.h.generic"),
26                  rebase_path("$PCRE2_LIB_DIR/src/config.h"),
27                ])
28  }
29
30  _arguments_pcre2 = [
31    rebase_path("$PCRE2_LIB_DIR/src/pcre2.h.generic"),
32    rebase_path("$PCRE2_LIB_DIR/src/pcre2.h"),
33  ]
34
35  check_pcre2_result = exec_script(md5_check_script, _arguments_pcre2, "string")
36  if (check_pcre2_result == "") {
37    exec_script("/usr/bin/env",
38                [
39                  "cp",
40                  rebase_path("$PCRE2_LIB_DIR/src/pcre2.h.generic"),
41                  rebase_path("$PCRE2_LIB_DIR/src/pcre2.h"),
42                ])
43  }
44
45  _arguments_pcre2_chartables = [
46    rebase_path("$PCRE2_LIB_DIR/src/pcre2_chartables.c.dist"),
47    rebase_path("$PCRE2_LIB_DIR/src/pcre2_chartables.c"),
48  ]
49
50  check_pcre2_chartables_result =
51      exec_script(md5_check_script, _arguments_pcre2_chartables, "string")
52  if (check_pcre2_chartables_result == "") {
53    exec_script("/usr/bin/env",
54                [
55                  "cp",
56                  rebase_path("$PCRE2_LIB_DIR/src/pcre2_chartables.c.dist"),
57                  rebase_path("$PCRE2_LIB_DIR/src/pcre2_chartables.c"),
58                ])
59  }
60  sources = [
61    "$PCRE2_LIB_DIR/src/pcre2_auto_possess.c",
62    "$PCRE2_LIB_DIR/src/pcre2_chartables.c",
63    "$PCRE2_LIB_DIR/src/pcre2_chkdint.c",
64    "$PCRE2_LIB_DIR/src/pcre2_compile.c",
65    "$PCRE2_LIB_DIR/src/pcre2_config.c",
66    "$PCRE2_LIB_DIR/src/pcre2_context.c",
67    "$PCRE2_LIB_DIR/src/pcre2_convert.c",
68    "$PCRE2_LIB_DIR/src/pcre2_dfa_match.c",
69    "$PCRE2_LIB_DIR/src/pcre2_error.c",
70    "$PCRE2_LIB_DIR/src/pcre2_extuni.c",
71    "$PCRE2_LIB_DIR/src/pcre2_find_bracket.c",
72    "$PCRE2_LIB_DIR/src/pcre2_jit_compile.c",
73    "$PCRE2_LIB_DIR/src/pcre2_maketables.c",
74    "$PCRE2_LIB_DIR/src/pcre2_match.c",
75    "$PCRE2_LIB_DIR/src/pcre2_match_data.c",
76    "$PCRE2_LIB_DIR/src/pcre2_newline.c",
77    "$PCRE2_LIB_DIR/src/pcre2_ord2utf.c",
78    "$PCRE2_LIB_DIR/src/pcre2_pattern_info.c",
79    "$PCRE2_LIB_DIR/src/pcre2_script_run.c",
80    "$PCRE2_LIB_DIR/src/pcre2_serialize.c",
81    "$PCRE2_LIB_DIR/src/pcre2_string_utils.c",
82    "$PCRE2_LIB_DIR/src/pcre2_study.c",
83    "$PCRE2_LIB_DIR/src/pcre2_substitute.c",
84    "$PCRE2_LIB_DIR/src/pcre2_substring.c",
85    "$PCRE2_LIB_DIR/src/pcre2_tables.c",
86    "$PCRE2_LIB_DIR/src/pcre2_ucd.c",
87    "$PCRE2_LIB_DIR/src/pcre2_valid_utf.c",
88    "$PCRE2_LIB_DIR/src/pcre2_xclass.c",
89  ]
90  include_dirs = [ "$PCRE2_LIB_DIR/src" ]
91  cflags = [
92    "-D_GNU_SOURCE",
93    "-DHAVE_CONFIG_H",
94    "-DSUPPORT_PCRE2_8=1",
95    "-DSUPPORT_UNICODE=1",
96    "-DPCRE2_CODE_UNIT_WIDTH=8",
97    "-w",
98  ]
99  innerapi_tags = [ "platformsdk" ]
100  part_name = "glib"
101  subsystem_name = "thirdparty"
102}
103
104group("glib_packages") {
105  deps = [
106    ":glib",
107    ":gmodule",
108    ":gobject",
109  ]
110}
111
112config("glib_config") {
113  visibility = [ ":*" ]
114  include_dirs = [
115    ".",
116    "glib/libcharset",
117    "glib",
118    "glib/deprecated",
119    "//third_party/pcre2/pcre2/src",
120    "//foundation/multimedia/media_standard/services/utils",
121    "glibmemdfx",
122  ]
123  cflags = [
124    "-DG_LOG_DOMAIN=\"GLib\"",
125    "-DGLIB_CHARSETALIAS_DIR=\"system/lib64\"",
126    "-DHAVE_MEMMOVE",
127    "-DSUPPORT_UCP",
128    "-DSUPPORT_UTF",
129    "-DSUPPORT_UTF8",
130    "-DNEWLINE=-1",
131    "-DMATCH_LIMIT=10000000",
132    "-DMATCH_LIMIT_RECURSION=8192",
133    "-DMAX_NAME_SIZE=32",
134    "-DMAX_NAME_COUNT=10000",
135    "-DMAX_DUPLENGTH=30000",
136    "-DLINK_SIZE=2",
137    "-DPOSIX_MALLOC_THRESHOLD=10",
138    "-DOHOS_OPT_COMPAT",
139    "-UBSR_ANYCRLF",
140    "-UEBCDIC",
141    "-DGLIB_COMPILATION",
142    "-Wno-sign-compare",
143    "-Wno-unused-value",
144    "-Wno-unused-function",
145    "-Wno-int-conversion",
146  ]
147  if (is_standard_system) {
148    cflags += [
149      "-DG_MEM_DFX",
150      "-DOHOS_OPT_PERFORMANCE",
151    ]
152  }
153}
154
155ohos_source_set("glib_source") {
156  branch_protector_ret = "pac_ret"
157  sources = [
158    "glib/deprecated/gallocator.c",
159    "glib/deprecated/gcache.c",
160    "glib/deprecated/gcompletion.c",
161    "glib/deprecated/grel.c",
162    "glib/deprecated/gthread-deprecated.c",
163    "glib/garcbox.c",
164    "glib/garray.c",
165    "glib/gasyncqueue.c",
166    "glib/gatomic.c",
167    "glib/gbacktrace.c",
168    "glib/gbase64.c",
169    "glib/gbitlock.c",
170    "glib/gbookmarkfile.c",
171    "glib/gbytes.c",
172    "glib/gcharset.c",
173    "glib/gchecksum.c",
174    "glib/gconvert.c",
175    "glib/gdataset.c",
176    "glib/gdate.c",
177    "glib/gdatetime.c",
178    "glib/gdir.c",
179    "glib/genviron.c",
180    "glib/gerror.c",
181    "glib/gfileutils.c",
182    "glib/ggettext.c",
183    "glib/ghash.c",
184    "glib/ghmac.c",
185    "glib/ghook.c",
186    "glib/ghostutils.c",
187    "glib/giochannel.c",
188    "glib/giounix.c",
189    "glib/gkeyfile.c",
190    "glib/glib-init.c",
191    "glib/glib-private.c",
192    "glib/glib-unix.c",
193    "glib/glist.c",
194    "glib/gmain.c",
195    "glib/gmappedfile.c",
196    "glib/gmarkup.c",
197    "glib/gmem.c",
198    "glib/gmessages.c",
199    "glib/gnode.c",
200    "glib/goption.c",
201    "glib/gpattern.c",
202    "glib/gpoll.c",
203    "glib/gprimes.c",
204    "glib/gprintf.c",
205    "glib/gqsort.c",
206    "glib/gquark.c",
207    "glib/gqueue.c",
208    "glib/grand.c",
209    "glib/grcbox.c",
210    "glib/grefcount.c",
211    "glib/grefstring.c",
212    "glib/gregex.c",
213    "glib/gscanner.c",
214    "glib/gsequence.c",
215    "glib/gshell.c",
216    "glib/gslice.c",
217    "glib/gslist.c",
218    "glib/gspawn.c",
219    "glib/gstdio.c",
220    "glib/gstrfuncs.c",
221    "glib/gstring.c",
222    "glib/gstringchunk.c",
223    "glib/gtestutils.c",
224    "glib/gthread-posix.c",
225    "glib/gthread.c",
226    "glib/gthreadpool.c",
227    "glib/gtimer.c",
228    "glib/gtimezone.c",
229    "glib/gtrace.c",
230    "glib/gtranslit.c",
231    "glib/gtrashstack.c",
232    "glib/gtree.c",
233    "glib/gunibreak.c",
234    "glib/gunicollate.c",
235    "glib/gunidecomp.c",
236    "glib/guniprop.c",
237    "glib/guri.c",
238    "glib/gutf8.c",
239    "glib/gutils.c",
240    "glib/gutilsprivate.h",
241    "glib/guuid.c",
242    "glib/gvariant-core.c",
243    "glib/gvariant-parser.c",
244    "glib/gvariant-serialiser.c",
245    "glib/gvariant.c",
246    "glib/gvarianttype.c",
247    "glib/gvarianttypeinfo.c",
248    "glib/gversion.c",
249    "glib/gwakeup.c",
250    "glib/libcharset/localcharset.c",
251  ]
252
253  configs = [ ":glib_config" ]
254}
255
256config("public_header_config") {
257  include_dirs = [
258    ".",
259    "glib",
260  ]
261}
262
263ohos_shared_library("glib") {
264  branch_protector_ret = "pac_ret"
265  deps = [
266    ":glib_source",
267    "//third_party/glib:glibpcre",
268  ]
269  public_configs = [ ":public_header_config" ]
270  if (is_standard_system) {
271    deps += [ ":g_mem_dfx" ]
272  }
273  innerapi_tags = [ "platformsdk" ]
274  part_name = "glib"
275  subsystem_name = "thirdparty"
276}
277
278config("gmodule_config") {
279  visibility = [ ":*" ]
280  include_dirs = [
281    ".",
282    "gmodule",
283    "glib",
284  ]
285  cflags = [ "-DG_LOG_DOMAIN=\"GModule\"" ]
286}
287
288ohos_source_set("gmodule_source") {
289  sources = [ "gmodule/gmodule.c" ]
290
291  configs = [ ":gmodule_config" ]
292}
293ohos_shared_library("gmodule") {
294  deps = [
295    ":glib",
296    ":gmodule_source",
297  ]
298  part_name = "glib"
299  subsystem_name = "thirdparty"
300}
301
302config("gobject_config") {
303  visibility = [ ":*" ]
304  include_dirs = [
305    ".",
306    "gobject",
307    "glib",
308  ]
309  cflags = [
310    "-DG_LOG_DOMAIN=\"GObject\"",
311    "-DGOBJECT_COMPILATION",
312    "-Wno-sign-compare",
313    "-Wno-unused-function",
314    "-Wno-int-conversion",
315  ]
316}
317
318ohos_source_set("gobject_source") {
319  sources = [
320    "gobject/gatomicarray.c",
321    "gobject/gbinding.c",
322    "gobject/gboxed.c",
323    "gobject/gclosure.c",
324    "gobject/genums.c",
325    "gobject/gmarshal.c",
326    "gobject/gobject.c",
327    "gobject/gparam.c",
328    "gobject/gparamspecs.c",
329    "gobject/gsignal.c",
330    "gobject/gsourceclosure.c",
331    "gobject/gtype.c",
332    "gobject/gtypemodule.c",
333    "gobject/gtypeplugin.c",
334    "gobject/gvalue.c",
335    "gobject/gvaluearray.c",
336    "gobject/gvaluetransform.c",
337    "gobject/gvaluetypes.c",
338  ]
339
340  configs = [ ":gobject_config" ]
341
342  external_deps = [ "libffi:ffi" ]
343  part_name = "glib"
344  subsystem_name = "thirdparty"
345}
346
347ohos_shared_library("gobject") {
348  deps = [
349    ":glib",
350    ":gobject_source",
351  ]
352
353  external_deps = [ "libffi:ffi" ]
354  part_name = "glib"
355  subsystem_name = "thirdparty"
356}
357
358#############################################################################
359#############################################################################
360#############################################################################
361
362config("g_mem_dfx_config") {
363  include_dirs = [
364    "glibmemdfx",
365    "//foundation/multimedia/media_standard/interfaces/inner_api/native",
366    "//base/hiviewdfx/hisysevent/interfaces/native/innerkits/hisysevent/include",
367  ]
368}
369
370ohos_shared_library("g_mem_dfx") {
371  branch_protector_ret = "pac_ret"
372  sources = [ "glibmemdfx/gmemdfx.cpp" ]
373
374  cflags = [
375    "-std=c++17",
376    "-fno-rtti",
377    "-fno-exceptions",
378    "-Wall",
379    "-fno-common",
380    "-fstack-protector-strong",
381    "-Wshadow",
382    "-FPIC",
383    "-FS",
384    "-O2",
385    "-D_FORTIFY_SOURCE=2",
386    "-fvisibility=hidden",
387    "-Wformat=2",
388    "-Wfloat-equal",
389    "-Wdate-time",
390  ]
391
392  configs = [ ":g_mem_dfx_config" ]
393
394  external_deps = [
395    "c_utils:utils",
396    "faultloggerd:libdfx_dumpcatcher",
397    "hilog:libhilog",
398    "hisysevent:libhisysevent",
399    "hitrace:hitrace_meter",
400    "init:libbegetutil",
401  ]
402
403  innerapi_tags = [ "platformsdk" ]
404  subsystem_name = "thirdparty"
405  part_name = "glib"
406}
407