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