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