• 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}
252ohos_shared_library("glib") {
253  deps = [
254    ":glib_source",
255    "//third_party/glib:glibpcre",
256  ]
257  if (is_standard_system) {
258    deps += [ ":g_mem_dfx" ]
259  }
260  innerapi_tags = [ "platformsdk" ]
261  part_name = "glib"
262  subsystem_name = "thirdparty"
263}
264
265config("gmodule_config") {
266  visibility = [ ":*" ]
267  include_dirs = [
268    ".",
269    "gmodule",
270    "glib",
271  ]
272  cflags = [ "-DG_LOG_DOMAIN=\"GModule\"" ]
273}
274
275ohos_source_set("gmodule_source") {
276  sources = [ "gmodule/gmodule.c" ]
277
278  configs = [ ":gmodule_config" ]
279}
280ohos_shared_library("gmodule") {
281  deps = [
282    ":glib",
283    ":gmodule_source",
284  ]
285  part_name = "glib"
286  subsystem_name = "thirdparty"
287}
288
289config("gobject_config") {
290  visibility = [ ":*" ]
291  include_dirs = [
292    ".",
293    "gobject",
294    "glib",
295  ]
296  cflags = [
297    "-DG_LOG_DOMAIN=\"GObject\"",
298    "-DGOBJECT_COMPILATION",
299    "-Wno-sign-compare",
300    "-Wno-unused-function",
301    "-Wno-int-conversion",
302  ]
303}
304
305ohos_source_set("gobject_source") {
306  sources = [
307    "gobject/gatomicarray.c",
308    "gobject/gbinding.c",
309    "gobject/gboxed.c",
310    "gobject/gclosure.c",
311    "gobject/genums.c",
312    "gobject/gmarshal.c",
313    "gobject/gobject.c",
314    "gobject/gparam.c",
315    "gobject/gparamspecs.c",
316    "gobject/gsignal.c",
317    "gobject/gsourceclosure.c",
318    "gobject/gtype.c",
319    "gobject/gtypemodule.c",
320    "gobject/gtypeplugin.c",
321    "gobject/gvalue.c",
322    "gobject/gvaluearray.c",
323    "gobject/gvaluetransform.c",
324    "gobject/gvaluetypes.c",
325  ]
326
327  configs = [ ":gobject_config" ]
328
329  external_deps = [ "libffi:ffi" ]
330}
331
332ohos_shared_library("gobject") {
333  deps = [
334    ":glib",
335    ":gobject_source",
336  ]
337
338  external_deps = [ "libffi:ffi" ]
339  part_name = "glib"
340  subsystem_name = "thirdparty"
341}
342
343#############################################################################
344#############################################################################
345#############################################################################
346
347config("g_mem_dfx_config") {
348  include_dirs = [
349    "glibmemdfx",
350    "//commonlibrary/c_utils/base/include",
351    "//foundation/multimedia/media_standard/interfaces/inner_api/native",
352    "//base/hiviewdfx/hisysevent/interfaces/native/innerkits/hisysevent/include",
353  ]
354}
355
356ohos_shared_library("g_mem_dfx") {
357  sources = [ "glibmemdfx/gmemdfx.cpp" ]
358
359  include_dirs = [ "//commonlibrary/c_utils/base/include" ]
360
361  cflags = [
362    "-std=c++17",
363    "-fno-rtti",
364    "-fno-exceptions",
365    "-Wall",
366    "-fno-common",
367    "-fstack-protector-strong",
368    "-Wshadow",
369    "-FPIC",
370    "-FS",
371    "-O2",
372    "-D_FORTIFY_SOURCE=2",
373    "-fvisibility=hidden",
374    "-Wformat=2",
375    "-Wfloat-equal",
376    "-Wdate-time",
377  ]
378
379  configs = [ ":g_mem_dfx_config" ]
380
381  external_deps = [
382    "c_utils:utils",
383    "faultloggerd:libdfx_dumpcatcher",
384    "hilog:libhilog",
385    "hisysevent:libhisysevent",
386    "hitrace:hitrace_meter",
387    "init:libbegetutil",
388  ]
389
390  innerapi_tags = [ "platformsdk" ]
391  subsystem_name = "thirdparty"
392  part_name = "glib"
393}
394