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