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