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