• 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  part_name = "glib"
98  subsystem_name = "thirdparty"
99}
100
101group("glib_packages") {
102  deps = [
103    ":glib",
104    ":gmodule",
105    ":gobject",
106  ]
107}
108
109config("glib_config") {
110  visibility = [ ":*" ]
111  include_dirs = [
112    ".",
113    "glib/libcharset",
114    "glib",
115    "glib/deprecated",
116    "//third_party/pcre2/pcre2/src",
117    "//foundation/multimedia/media_standard/services/utils",
118    "glibmemdfx",
119  ]
120  cflags = [
121    "-DG_LOG_DOMAIN=\"GLib\"",
122    "-DGLIB_CHARSETALIAS_DIR=\"system/lib64\"",
123    "-DHAVE_MEMMOVE",
124    "-DSUPPORT_UCP",
125    "-DSUPPORT_UTF",
126    "-DSUPPORT_UTF8",
127    "-DNEWLINE=-1",
128    "-DMATCH_LIMIT=10000000",
129    "-DMATCH_LIMIT_RECURSION=8192",
130    "-DMAX_NAME_SIZE=32",
131    "-DMAX_NAME_COUNT=10000",
132    "-DMAX_DUPLENGTH=30000",
133    "-DLINK_SIZE=2",
134    "-DPOSIX_MALLOC_THRESHOLD=10",
135    "-DOHOS_OPT_COMPAT",
136    "-UBSR_ANYCRLF",
137    "-UEBCDIC",
138    "-DGLIB_COMPILATION",
139    "-Wno-sign-compare",
140    "-Wno-unused-value",
141    "-Wno-unused-function",
142    "-Wno-int-conversion",
143  ]
144  if (is_standard_system) {
145    cflags += [
146      "-DG_MEM_DFX",
147      "-DOHOS_OPT_PERFORMANCE",
148    ]
149  }
150}
151
152ohos_source_set("glib_source") {
153  sources = [
154    "glib/deprecated/gallocator.c",
155    "glib/deprecated/gcache.c",
156    "glib/deprecated/gcompletion.c",
157    "glib/deprecated/grel.c",
158    "glib/deprecated/gthread-deprecated.c",
159    "glib/garcbox.c",
160    "glib/garray.c",
161    "glib/gasyncqueue.c",
162    "glib/gatomic.c",
163    "glib/gbacktrace.c",
164    "glib/gbase64.c",
165    "glib/gbitlock.c",
166    "glib/gbookmarkfile.c",
167    "glib/gbytes.c",
168    "glib/gcharset.c",
169    "glib/gchecksum.c",
170    "glib/gconvert.c",
171    "glib/gdataset.c",
172    "glib/gdate.c",
173    "glib/gdatetime.c",
174    "glib/gdir.c",
175    "glib/genviron.c",
176    "glib/gerror.c",
177    "glib/gfileutils.c",
178    "glib/ggettext.c",
179    "glib/ghash.c",
180    "glib/ghmac.c",
181    "glib/ghook.c",
182    "glib/ghostutils.c",
183    "glib/giochannel.c",
184    "glib/giounix.c",
185    "glib/gkeyfile.c",
186    "glib/glib-init.c",
187    "glib/glib-private.c",
188    "glib/glib-unix.c",
189    "glib/glist.c",
190    "glib/gmain.c",
191    "glib/gmappedfile.c",
192    "glib/gmarkup.c",
193    "glib/gmem.c",
194    "glib/gmessages.c",
195    "glib/gnode.c",
196    "glib/goption.c",
197    "glib/gpattern.c",
198    "glib/gpoll.c",
199    "glib/gprimes.c",
200    "glib/gprintf.c",
201    "glib/gqsort.c",
202    "glib/gquark.c",
203    "glib/gqueue.c",
204    "glib/grand.c",
205    "glib/grcbox.c",
206    "glib/grefcount.c",
207    "glib/grefstring.c",
208    "glib/gregex.c",
209    "glib/gscanner.c",
210    "glib/gsequence.c",
211    "glib/gshell.c",
212    "glib/gslice.c",
213    "glib/gslist.c",
214    "glib/gspawn.c",
215    "glib/gstdio.c",
216    "glib/gstrfuncs.c",
217    "glib/gstring.c",
218    "glib/gstringchunk.c",
219    "glib/gtestutils.c",
220    "glib/gthread-posix.c",
221    "glib/gthread.c",
222    "glib/gthreadpool.c",
223    "glib/gtimer.c",
224    "glib/gtimezone.c",
225    "glib/gtrace.c",
226    "glib/gtranslit.c",
227    "glib/gtrashstack.c",
228    "glib/gtree.c",
229    "glib/gunibreak.c",
230    "glib/gunicollate.c",
231    "glib/gunidecomp.c",
232    "glib/guniprop.c",
233    "glib/guri.c",
234    "glib/gutf8.c",
235    "glib/gutils.c",
236    "glib/gutilsprivate.h",
237    "glib/guuid.c",
238    "glib/gvariant-core.c",
239    "glib/gvariant-parser.c",
240    "glib/gvariant-serialiser.c",
241    "glib/gvariant.c",
242    "glib/gvarianttype.c",
243    "glib/gvarianttypeinfo.c",
244    "glib/gversion.c",
245    "glib/gwakeup.c",
246    "glib/libcharset/localcharset.c",
247  ]
248
249  configs = [ ":glib_config" ]
250}
251ohos_shared_library("glib") {
252  deps = [
253    ":glib_source",
254    "//third_party/glib:glibpcre",
255  ]
256  if (is_standard_system) {
257    deps += [ ":g_mem_dfx" ]
258  }
259  part_name = "glib"
260  subsystem_name = "thirdparty"
261}
262
263config("gmodule_config") {
264  visibility = [ ":*" ]
265  include_dirs = [
266    ".",
267    "gmodule",
268    "glib",
269  ]
270  cflags = [ "-DG_LOG_DOMAIN=\"GModule\"" ]
271}
272
273ohos_source_set("gmodule_source") {
274  sources = [ "gmodule/gmodule.c" ]
275
276  configs = [ ":gmodule_config" ]
277}
278ohos_shared_library("gmodule") {
279  deps = [
280    ":glib",
281    ":gmodule_source",
282  ]
283  part_name = "glib"
284  subsystem_name = "thirdparty"
285}
286
287config("gobject_config") {
288  visibility = [ ":*" ]
289  include_dirs = [
290    ".",
291    "gobject",
292    "glib",
293    "//third_party/libffi/include",
294  ]
295  cflags = [
296    "-DG_LOG_DOMAIN=\"GObject\"",
297    "-DGOBJECT_COMPILATION",
298    "-Wno-sign-compare",
299    "-Wno-unused-function",
300    "-Wno-int-conversion",
301  ]
302}
303
304ohos_source_set("gobject_source") {
305  sources = [
306    "gobject/gatomicarray.c",
307    "gobject/gbinding.c",
308    "gobject/gboxed.c",
309    "gobject/gclosure.c",
310    "gobject/genums.c",
311    "gobject/gmarshal.c",
312    "gobject/gobject.c",
313    "gobject/gparam.c",
314    "gobject/gparamspecs.c",
315    "gobject/gsignal.c",
316    "gobject/gsourceclosure.c",
317    "gobject/gtype.c",
318    "gobject/gtypemodule.c",
319    "gobject/gtypeplugin.c",
320    "gobject/gvalue.c",
321    "gobject/gvaluearray.c",
322    "gobject/gvaluetransform.c",
323    "gobject/gvaluetypes.c",
324  ]
325
326  configs = [ ":gobject_config" ]
327}
328
329ohos_shared_library("gobject") {
330  deps = [
331    ":glib",
332    ":gobject_source",
333    "//third_party/libffi:ffi",
334  ]
335  part_name = "glib"
336  subsystem_name = "thirdparty"
337}
338
339#############################################################################
340#############################################################################
341#############################################################################
342
343config("g_mem_dfx_config") {
344  include_dirs = [
345    "glibmemdfx",
346    "//commonlibrary/c_utils/base/include",
347    "//foundation/multimedia/media_standard/interfaces/inner_api/native",
348    "//base/hiviewdfx/hisysevent/interfaces/native/innerkits/hisysevent/include",
349  ]
350}
351
352ohos_shared_library("g_mem_dfx") {
353  sources = [ "glibmemdfx/gmemdfx.cpp" ]
354
355  include_dirs = [ "//commonlibrary/c_utils/base/include" ]
356
357  cflags = [
358    "-std=c++17",
359    "-fno-rtti",
360    "-fno-exceptions",
361    "-Wall",
362    "-fno-common",
363    "-fstack-protector-strong",
364    "-Wshadow",
365    "-FPIC",
366    "-FS",
367    "-O2",
368    "-D_FORTIFY_SOURCE=2",
369    "-fvisibility=hidden",
370    "-Wformat=2",
371    "-Wfloat-equal",
372    "-Wdate-time",
373  ]
374
375  configs = [ ":g_mem_dfx_config" ]
376
377  external_deps = [
378    "c_utils:utils",
379    "faultloggerd:libdfx_dumpcatcher",
380    "hilog:libhilog",
381    "hisysevent:libhisysevent",
382    "hitrace:hitrace_meter",
383    "init:libbegetutil",
384  ]
385
386  subsystem_name = "thirdparty"
387  part_name = "glib"
388}
389