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