Radix cross Linux

The main Radix cross Linux repository contains the build scripts of packages, which have the most complete and common functionality for desktop machines

452 Commits   2 Branches   1 Tag
Index: Makefile
===================================================================
--- Makefile	(nonexistent)
+++ Makefile	(revision 5)
@@ -0,0 +1,56 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/glib2
+
+versions    = 2.76.0
+pkgname     = glib
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+patches     = $(CURDIR)/patches/glib-2.76.0-force-cross.patch
+
+.NOTPARALLEL: $(patches)
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s) $(patches)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+	@echo -e "\n======= Downloading source tarballs =======" ; \
+	 for tarball in $(tarballs) ; do \
+	   echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+	 done ; wait
+
+$(sha1s): $(tarballs)
+	@for sha in $@ ; do \
+	   echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+	   echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+	   touch $$sha ; \
+	   echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+	   sha1sum --check $$sha ; ret="$$?" ; \
+	   if [ "$$ret" == "1" ]; then \
+	     echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+	     exit 1 ; \
+	   fi ; \
+	 done
+
+$(patches): $(sha1s)
+	@echo -e "\n======= Create Patches =======\n" ; \
+	 ( cd create-2.76.0-force-cross-patch ; ./create.patch.sh ) ; \
+	 echo -e "\n"
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s) $(patches)
Index: create-2.76.0-force-cross-patch/create.patch.sh
===================================================================
--- create-2.76.0-force-cross-patch/create.patch.sh	(nonexistent)
+++ create-2.76.0-force-cross-patch/create.patch.sh	(revision 5)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=2.76.0
+
+tar --files-from=file.list -xJvf ../glib-$VERSION.tar.xz
+mv glib-$VERSION glib-$VERSION-orig
+
+cp -rf ./glib-$VERSION-new ./glib-$VERSION
+
+diff --unified -Nr  glib-$VERSION-orig  glib-$VERSION > glib-$VERSION-force-cross.patch
+
+mv glib-$VERSION-force-cross.patch ../patches
+
+rm -rf ./glib-$VERSION
+rm -rf ./glib-$VERSION-orig

Property changes on: create-2.76.0-force-cross-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-2.76.0-force-cross-patch/file.list
===================================================================
--- create-2.76.0-force-cross-patch/file.list	(nonexistent)
+++ create-2.76.0-force-cross-patch/file.list	(revision 5)
@@ -0,0 +1,17 @@
+glib-2.76.0/gio/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_cc_double_expbit0/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_frexp_works/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_frexpl_works/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_ldexpl_works/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_directive_a/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_directive_f/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_directive_ls/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_enomem/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_flag_grouping/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_flag_leftadjust/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_flag_zero/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_infinite/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_infinite_long_double/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_long_double/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_precision/meson.build
+glib-2.76.0/meson.build
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/gio/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/gio/meson.build	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/gio/meson.build	(revision 5)
@@ -0,0 +1,1100 @@
+gio_c_args = [
+  '-DG_LOG_DOMAIN="GLib-GIO"',
+  '-DGIO_LAUNCH_DESKTOP="@0@"'.format(glib_prefix / multiarch_libexecdir / 'gio-launch-desktop'),
+  '-DGIO_MODULE_DIR="@0@"'.format(glib_giomodulesdir),
+  '-DLOCALSTATEDIR="@0@"'.format(glib_localstatedir),
+]
+
+gio_c_args_internal = [
+  '-DGIO_COMPILATION',
+]
+
+# Install empty glib_giomodulesdir
+install_emptydir(glib_giomodulesdir)
+
+gio_includedir = glib_includedir / 'gio'
+
+gnetworking_h_conf = configuration_data()
+
+gnetworking_h_nameser_compat_include = ''
+
+if host_system not in ['windows', 'android']
+  # Don't check for C_IN on Android since it does not define it in public
+  # headers, we define it ourselves wherever necessary
+  if not cc.compiles('''#include <sys/types.h>
+                        #include <arpa/nameser.h>
+                        int qclass = C_IN;''',
+                     name : 'C_IN in public headers (no arpa/nameser_compat.h needed)')
+    if cc.compiles('''#include <sys/types.h>
+                      #include <arpa/nameser.h>
+                      #include <arpa/nameser_compat.h>
+                      int qclass = C_IN;''',
+                   name : 'arpa/nameser_compat.h needed for C_IN')
+      gnetworking_h_nameser_compat_include = '#include <arpa/nameser_compat.h>'
+    else
+      error('Could not find required includes for ARPA C_IN')
+    endif
+  endif
+endif
+
+network_libs = [ ]
+network_args = [ ]
+if host_system != 'windows'
+  # res_query()
+  res_query_test = '''#include <resolv.h>
+                      int main (int argc, char ** argv) {
+                        return res_query("test", 0, 0, (void *)0, 0);
+                      }'''
+  res_query_test_full = '''#include <sys/types.h>
+                           #include <netinet/in.h>
+                           #include <arpa/nameser.h>
+                        ''' + res_query_test
+  if not cc.links(res_query_test_full, name : 'res_query()')
+    if cc.links(res_query_test_full, args : '-lresolv', name : 'res_query() in -lresolv')
+      network_libs += [ cc.find_library('resolv') ]
+      network_args += [ '-lresolv' ]
+    elif cc.links(res_query_test, args : '-lbind', name : 'res_query() in -lbind')
+      network_libs += [ cc.find_library('bind') ]
+      network_args += [ '-lbind' ]
+    elif cc.links(res_query_test, args : '-lsocket', name : 'res_query() in -lsocket')
+      network_libs += [ cc.find_library('socket') ]
+      network_args += [ '-lsocket' ]
+    else
+      error('Could not find res_query()')
+    endif
+  endif
+
+  # socket()
+  socket_test = '''#include <sys/types.h>
+                   #include <sys/socket.h>
+                   int main (int argc, char ** argv) {
+                     return socket(1, 2, 3);
+                   }'''
+  if not cc.links(socket_test, name : 'socket()')
+    if cc.links(socket_test, args : '-lsocket', name : 'socket() in -lsocket')
+      network_libs += [ cc.find_library('socket') ]
+      network_args += [ '-lsocket' ]
+    else
+      error('Could not find socket()')
+    endif
+  endif
+
+  # dn_comp()
+  if cc.links('''#include <resolv.h>
+                 int main (int argc, char ** argv) {
+                   return dn_comp(NULL, NULL, 0, NULL, NULL) == -1;
+                 } ''', args : network_args, name : 'dn_comp()')
+    glib_conf.set('HAVE_DN_COMP', 1)
+  endif
+
+  # res_nclose()
+  if cc.links('''#include <sys/types.h>
+                 #include <netinet/in.h>
+                 #include <arpa/nameser.h>
+                 #include <resolv.h>
+                 int main (int argc, char ** argv) {
+                   struct __res_state res;
+                   res_nclose(&res);
+                   return 0;
+                 }''', args : network_args, name : 'res_nclose()')
+    glib_conf.set('HAVE_RES_NCLOSE', 1)
+  endif
+
+  # res_ndestroy()
+  if cc.links('''#include <sys/types.h>
+                 #include <netinet/in.h>
+                 #include <arpa/nameser.h>
+                 #include <resolv.h>
+                 int main (int argc, char ** argv) {
+                   struct __res_state res;
+                   res_ndestroy(&res);
+                   return 0;
+                 }''', args : network_args, name : 'res_ndestroy()')
+    glib_conf.set('HAVE_RES_NDESTROY', 1)
+  endif
+
+  # res_ninit()
+  if cc.links('''#include <sys/types.h>
+                 #include <netinet/in.h>
+                 #include <arpa/nameser.h>
+                 #include <resolv.h>
+                 int main (int argc, char ** argv) {
+                   struct __res_state res;
+                   return res_ninit(&res);
+                 }''', args : network_args, name : 'res_ninit()')
+    glib_conf.set('HAVE_RES_NINIT', 1)
+  endif
+
+  # res_nquery()
+  if cc.links('''#include <sys/types.h>
+                 #include <netinet/in.h>
+                 #include <arpa/nameser.h>
+                 #include <resolv.h>
+                 int main (int argc, char ** argv) {
+                   struct __res_state res;
+                   return res_nquery(&res, "test", 0, 0, (void *)0, 0);
+                 }''', args : network_args, name : 'res_nquery()')
+    glib_conf.set('HAVE_RES_NQUERY', 1)
+  endif
+
+  if cc.has_type('struct ip_mreqn', prefix : '#include <netinet/in.h>')
+    glib_conf.set('HAVE_IP_MREQN', 1)
+  endif
+
+  if cc.compiles('''#include <sys/ioctl.h>
+                    #include <net/if.h>
+                    int main (int argc, char ** argv) {
+                      struct ifreq ifr;
+                      ioctl(0, SIOCGIFADDR, &ifr);
+                      return 0;
+                    }''',
+                 name : 'ioctl with request SIOCGIFADDR')
+    glib_conf.set('HAVE_SIOCGIFADDR', '/**/')
+  endif
+
+endif
+
+if host_system == 'android'
+  # struct ip_mreq_source definition is broken on Android NDK <= r16
+  # See https://bugzilla.gnome.org/show_bug.cgi?id=740791
+  if not cc.compiles('''#include <netinet/in.h>
+                        int main(int argc, char ** argv) {
+                          struct ip_mreq_source mc_req_src;
+                          mc_req_src.imr_interface.s_addr = 0;
+                          return 0;
+                        }''',
+                        name : 'ip_mreq_source.imr_interface has s_addr member')
+    glib_conf.set('BROKEN_IP_MREQ_SOURCE_STRUCT', 1)
+  endif
+endif
+
+gnetworking_h_conf.set('NAMESER_COMPAT_INCLUDE', gnetworking_h_nameser_compat_include)
+
+gnetworking_h = configure_file(input : 'gnetworking.h.in',
+                               output : 'gnetworking.h',
+                               install_dir : gio_includedir,
+                               configuration : gnetworking_h_conf)
+
+gdbus_headers = files(
+  'gdbusauthobserver.h',
+  'gcredentials.h',
+  'gdbusutils.h',
+  'gdbuserror.h',
+  'gdbusaddress.h',
+  'gdbusconnection.h',
+  'gdbusmessage.h',
+  'gdbusnameowning.h',
+  'gdbusnamewatching.h',
+  'gdbusproxy.h',
+  'gdbusintrospection.h',
+  'gdbusmethodinvocation.h',
+  'gdbusserver.h',
+  'gdbusinterface.h',
+  'gdbusinterfaceskeleton.h',
+  'gdbusobject.h',
+  'gdbusobjectskeleton.h',
+  'gdbusobjectproxy.h',
+  'gdbusobjectmanager.h',
+  'gdbusobjectmanagerclient.h',
+  'gdbusobjectmanagerserver.h',
+  'gtestdbus.h',
+)
+
+gdbus_sources = files(
+  'gdbusutils.c',
+  'gdbusaddress.c',
+  'gdbusauthobserver.c',
+  'gdbusauth.c',
+  'gdbusauthmechanism.c',
+  'gdbusauthmechanismanon.c',
+  'gdbusauthmechanismexternal.c',
+  'gdbusauthmechanismsha1.c',
+  'gdbuserror.c',
+  'gdbusconnection.c',
+  'gdbusmessage.c',
+  'gdbusnameowning.c',
+  'gdbusnamewatching.c',
+  'gdbusproxy.c',
+  'gdbusprivate.c',
+  'gdbusintrospection.c',
+  'gdbusmethodinvocation.c',
+  'gdbusserver.c',
+  'gdbusinterface.c',
+  'gdbusinterfaceskeleton.c',
+  'gdbusobject.c',
+  'gdbusobjectskeleton.c',
+  'gdbusobjectproxy.c',
+  'gdbusobjectmanager.c',
+  'gdbusobjectmanagerclient.c',
+  'gdbusobjectmanagerserver.c',
+  'gtestdbus.c',
+)
+
+# Generate gdbus-codegen
+subdir('gdbus-2.0/codegen')
+
+# Generate xdp-dbus.{c,h}
+xdp_dbus_generated = custom_target('xdp-dbus',
+    input : ['org.freedesktop.portal.Documents.xml',
+             'org.freedesktop.portal.OpenURI.xml',
+             'org.freedesktop.portal.ProxyResolver.xml',
+             'org.freedesktop.portal.Trash.xml'],
+    output : ['xdp-dbus.h', 'xdp-dbus.c'],
+    depend_files : gdbus_codegen_built_files,
+    command : [python, gdbus_codegen,
+               '--interface-prefix', 'org.freedesktop.portal.',
+               '--output-directory', '@OUTDIR@',
+               '--generate-c-code', 'xdp-dbus',
+               '--c-namespace', 'GXdp',
+               '@INPUT@'])
+
+# Generate gdbus-generated.{c,h}
+gdbus_daemon_generated = custom_target('gdbus-daemon-generated',
+    input : ['dbus-daemon.xml'],
+    output : ['gdbus-daemon-generated.h', 'gdbus-daemon-generated.c'],
+    depend_files : gdbus_codegen_built_files,
+    command : [python, gdbus_codegen,
+               '--interface-prefix', 'org.',
+               '--output-directory', '@OUTDIR@',
+               '--generate-c-code', 'gdbus-daemon-generated',
+               '--c-namespace', '_G', '@INPUT@'])
+
+settings_headers = files(
+  'gsettingsbackend.h',
+  'gsettingsschema.h',
+  'gsettings.h',
+)
+
+settings_sources = files(
+  'gdelayedsettingsbackend.c',
+  'gkeyfilesettingsbackend.c',
+  'gmemorysettingsbackend.c',
+  'gnullsettingsbackend.c',
+  'gsettingsbackend.c',
+  'gsettingsschema.c',
+  'gsettings-mapping.c',
+  'gsettings.c',
+)
+
+if host_system == 'windows'
+  settings_sources += files('gregistrysettingsbackend.c')
+endif
+
+application_headers = files(
+  'gapplication.h',
+  'gapplicationcommandline.h',
+
+  'gactiongroup.h',
+  'gactionmap.h',
+  'gsimpleactiongroup.h',
+  'gremoteactiongroup.h',
+  'gactiongroupexporter.h',
+  'gdbusactiongroup.h',
+  'gaction.h',
+  'gpropertyaction.h',
+  'gsimpleaction.h',
+
+  'gmenumodel.h',
+  'gmenu.h',
+  'gmenuexporter.h',
+  'gdbusmenumodel.h',
+  'gnotification.h',
+)
+
+application_sources = files(
+  'gapplication.c',
+  'gapplicationcommandline.c',
+  'gapplicationimpl-dbus.c',
+
+  'gactiongroup.c',
+  'gactionmap.c',
+  'gsimpleactiongroup.c',
+  'gremoteactiongroup.c',
+  'gactiongroupexporter.c',
+  'gdbusactiongroup.c',
+  'gaction.c',
+  'gpropertyaction.c',
+  'gsimpleaction.c',
+
+  'gmenumodel.c',
+  'gmenu.c',
+  'gmenuexporter.c',
+  'gdbusmenumodel.c',
+  'gnotification.c',
+  'gnotificationbackend.c',
+)
+
+local_sources = files(
+  'ghttpproxy.c',
+  'glocalfile.c',
+  'glocalfileenumerator.c',
+  'glocalfileinfo.c',
+  'glocalfileinputstream.c',
+  'glocalfilemonitor.c',
+  'glocalfileoutputstream.c',
+  'glocalfileiostream.c',
+  'glocalvfs.c',
+  'gsocks4proxy.c',
+  'gsocks4aproxy.c',
+  'gsocks5proxy.c',
+  'thumbnail-verify.c',
+)
+
+platform_deps = []
+internal_deps = []
+appinfo_sources = []
+contenttype_sources = []
+portal_sources = []
+unix_sources = []
+win32_sources = []
+
+# This is also used by tests/gdbus-daemon, so use files() to include the path
+gdbus_daemon_sources = [
+  files('gdbusdaemon.c'),
+  gdbus_daemon_generated,
+]
+
+if host_system != 'windows'
+  unix_sources = files(
+    'gfiledescriptorbased.c',
+    'giounix-private.c',
+    'gunixfdmessage.c',
+    'gunixmount.c',
+    'gunixmounts.c',
+    'gunixvolume.c',
+    'gunixvolumemonitor.c',
+    'gunixinputstream.c',
+    'gunixoutputstream.c',
+    'gfdonotificationbackend.c',
+    'ggtknotificationbackend.c',
+  )
+
+  portal_sources = [files(
+      'gdocumentportal.c',
+      'gopenuriportal.c',
+      'gmemorymonitorportal.c',
+      'gnetworkmonitorportal.c',
+      'gpowerprofilemonitorportal.c',
+      'gproxyresolverportal.c',
+      'gtrashportal.c',
+      'gportalsupport.c',
+      'gportalnotificationbackend.c',
+      'gsandbox.c',
+    ),
+    xdp_dbus_generated
+  ]
+
+  gio_unix_include_headers = files(
+    'gfiledescriptorbased.h',
+    'gunixmounts.h',
+    'gunixfdmessage.h',
+    'gunixinputstream.h',
+    'gunixoutputstream.h',
+  )
+
+  if glib_have_cocoa
+    settings_sources += files('gnextstepsettingsbackend.m')
+    contenttype_sources += files('gosxcontenttype.m')
+    appinfo_sources += files('gosxappinfo.m')
+    framework_dep = dependency('appleframeworks', modules : ['Foundation', 'CoreFoundation', 'AppKit'])
+    platform_deps += [framework_dep]
+    if glib_have_os_x_9_or_later
+      unix_sources += files('gcocoanotificationbackend.m')
+    endif
+    application_headers += files('gosxappinfo.h')
+  else
+    contenttype_sources += files('gcontenttype.c')
+    appinfo_sources += files('gdesktopappinfo.c')
+    gio_unix_include_headers += files('gdesktopappinfo.h')
+    launch_desktop_sources = files('gio-launch-desktop.c')
+
+    if host_system == 'linux'
+      launch_desktop_sources += files('../glib/gjournal-private.c')
+    endif
+
+    gio_launch_desktop = executable('gio-launch-desktop', launch_desktop_sources,
+      include_directories : glibinc,
+      install : true,
+      install_dir : multiarch_libexecdir,
+      install_tag : 'bin',
+      c_args : gio_c_args,
+      # intl.lib is not compatible with SAFESEH
+      link_args : noseh_link_args)
+  endif
+
+  subdir('xdgmime')
+  internal_deps += [xdgmime_lib]
+
+  install_headers(gio_unix_include_headers, subdir : 'gio-unix-2.0/gio')
+
+  if glib_conf.has('HAVE_NETLINK')
+    unix_sources += files(
+      'gnetworkmonitornetlink.c',
+      'gnetworkmonitornm.c',
+    )
+  endif
+else
+  appinfo_sources += files('gwin32appinfo.c')
+  contenttype_sources += files('gcontenttype-win32.c')
+  platform_deps += [cc.find_library('shlwapi'),
+                    cc.find_library('dnsapi'),
+                    iphlpapi_dep,
+                    winsock2]
+  platform_deps += uwp_gio_deps
+
+  win32_sources += files(
+    'gmemorymonitorwin32.c',
+    'gwin32registrykey.c',
+    'gwin32mount.c',
+    'gwin32volumemonitor.c',
+    'gwin32inputstream.c',
+    'gwin32outputstream.c',
+    'gwin32file-sync-stream.c',
+    'gwin32packageparser.c',
+    'gwin32networkmonitor.c',
+    'gwin32networkmonitor.h',
+    'gwin32notificationbackend.c',
+    'gwin32sid.c',
+    'gwin32sid.h',
+  )
+
+  gio_win_rc = configure_file(
+    input: 'gio.rc.in',
+    output: 'gio.rc',
+    configuration: glibconfig_conf,
+  )
+  gio_win_res = windows.compile_resources(gio_win_rc)
+  win32_sources += [gio_win_res]
+
+  gio_win32_include_headers = files(
+    'gwin32inputstream.h',
+    'gwin32outputstream.h',
+  )
+  install_headers(gio_win32_include_headers, subdir : 'gio-win32-2.0/gio')
+endif
+
+gio_sources = files(
+  'gappinfo.c',
+  'gasynchelper.c',
+  'gasyncinitable.c',
+  'gasyncresult.c',
+  'gbufferedinputstream.c',
+  'gbufferedoutputstream.c',
+  'gbytesicon.c',
+  'gcancellable.c',
+  'gcharsetconverter.c',
+  'gcontextspecificgroup.c',
+  'gconverter.c',
+  'gconverterinputstream.c',
+  'gconverteroutputstream.c',
+  'gcredentials.c',
+  'gdatagrambased.c',
+  'gdatainputstream.c',
+  'gdataoutputstream.c',
+  'gdebugcontroller.c',
+  'gdebugcontrollerdbus.c',
+  'gdrive.c',
+  'gdummyfile.c',
+  'gdummyproxyresolver.c',
+  'gdummytlsbackend.c',
+  'gemblem.c',
+  'gemblemedicon.c',
+  'gfile.c',
+  'gfileattribute.c',
+  'gfileenumerator.c',
+  'gfileicon.c',
+  'gfileinfo.c',
+  'gfileinputstream.c',
+  'gfilemonitor.c',
+  'gfilenamecompleter.c',
+  'gfileoutputstream.c',
+  'gfileiostream.c',
+  'gfilterinputstream.c',
+  'gfilteroutputstream.c',
+  'gicon.c',
+  'ginetaddress.c',
+  'ginetaddressmask.c',
+  'ginetsocketaddress.c',
+  'ginitable.c',
+  'ginputstream.c',
+  'gioerror.c',
+  'giomodule.c',
+  'giomodule-priv.c',
+  'gioscheduler.c',
+  'giostream.c',
+  'gloadableicon.c',
+  'gmarshal-internal.c',
+  'gmount.c',
+  'gmemorymonitor.c',
+  'gmemorymonitordbus.c',
+  'gmemoryinputstream.c',
+  'gmemoryoutputstream.c',
+  'gmountoperation.c',
+  'gnativesocketaddress.c',
+  'gnativevolumemonitor.c',
+  'gnetworkaddress.c',
+  'gnetworking.c',
+  'gnetworkmonitor.c',
+  'gnetworkmonitorbase.c',
+  'gnetworkservice.c',
+  'goutputstream.c',
+  'gpermission.c',
+  'gpollableinputstream.c',
+  'gpollableoutputstream.c',
+  'gpollableutils.c',
+  'gpollfilemonitor.c',
+  'gpowerprofilemonitor.c',
+  'gpowerprofilemonitordbus.c',
+  'gproxy.c',
+  'gproxyaddress.c',
+  'gproxyaddressenumerator.c',
+  'gproxyresolver.c',
+  'gresolver.c',
+  'gresource.c',
+  'gresourcefile.c',
+  'gseekable.c',
+  'gsimpleasyncresult.c',
+  'gsimpleiostream.c',
+  'gsimplepermission.c',
+  'gsimpleproxyresolver.c',
+  'gsocket.c',
+  'gsocketaddress.c',
+  'gsocketaddressenumerator.c',
+  'gsocketclient.c',
+  'gsocketconnectable.c',
+  'gsocketconnection.c',
+  'gsocketcontrolmessage.c',
+  'gsocketinputstream.c',
+  'gsocketlistener.c',
+  'gsocketoutputstream.c',
+  'gsocketservice.c',
+  'gsrvtarget.c',
+  'gsubprocesslauncher.c',
+  'gsubprocess.c',
+  'gtask.c',
+  'gtcpconnection.c',
+  'gtcpwrapperconnection.c',
+  'gthemedicon.c',
+  'gthreadedsocketservice.c',
+  'gthreadedresolver.c',
+  'gthreadedresolver.h',
+  'gtlsbackend.c',
+  'gtlscertificate.c',
+  'gtlsclientconnection.c',
+  'gtlsconnection.c',
+  'gtlsdatabase.c',
+  'gtlsfiledatabase.c',
+  'gtlsinteraction.c',
+  'gtlspassword.c',
+  'gtlsserverconnection.c',
+  'gdtlsconnection.c',
+  'gdtlsclientconnection.c',
+  'gdtlsserverconnection.c',
+  'gunionvolumemonitor.c',
+  'gunixconnection.c',
+  'gunixfdlist.c',
+  'gunixcredentialsmessage.c',
+  'gunixsocketaddress.c',
+  'gvfs.c',
+  'gvolume.c',
+  'gvolumemonitor.c',
+  'gzlibcompressor.c',
+  'gzlibdecompressor.c',
+  'glistmodel.c',
+  'gliststore.c',
+)
+
+if glib_build_shared
+  gio_sources += files ('../glib/gtrace.c')
+endif
+
+gio_sources += appinfo_sources
+gio_sources += contenttype_sources
+gio_sources += gdbus_daemon_sources
+gio_sources += unix_sources
+gio_sources += win32_sources
+gio_sources += application_sources
+gio_sources += settings_sources
+gio_sources += gdbus_sources
+gio_sources += portal_sources
+gio_sources += local_sources
+
+MISSING_STUFF = '''
+# This is read by gobject-introspection/misc/ and gtk-doc
+gio-public-headers.txt: Makefile
+  '$(AM_V_GEN) echo $(gioinclude_HEADERS) $(giowin32include_HEADERS) $(giounixinclude_HEADERS) > $@.tmp && mv $@.tmp $@
+
+gio.def: libgio-2.0.la
+  '$(AM_V_GEN) dumpbin.exe -exports .libs/libgio-2.0-0.dll | awk 'BEGIN { print "EXPORTS" } / +[[:digit:]]+ +[[:xdigit:]]+ +[[:xdigit:]]+/{ print $$4 }' > gio.def.tmp && mv gio.def.tmp gio.def
+
+gio-2.0.lib: libgio-2.0.la gio.def
+  '$(AM_V_GEN) lib.exe -machine:@LIB_EXE_MACHINE_FLAG@ -name:libgio-2.0-$(LT_CURRENT_MINUS_AGE).dll -def:$(builddir)/gio.def -out:$@
+'''
+
+gio_headers = files(
+  'gappinfo.h',
+  'gasyncinitable.h',
+  'gasyncresult.h',
+  'gbufferedinputstream.h',
+  'gbufferedoutputstream.h',
+  'gbytesicon.h',
+  'gcancellable.h',
+  'gcontenttype.h',
+  'gcharsetconverter.h',
+  'gconverter.h',
+  'gconverterinputstream.h',
+  'gconverteroutputstream.h',
+  'gdatagrambased.h',
+  'gdatainputstream.h',
+  'gdataoutputstream.h',
+  'gdebugcontroller.h',
+  'gdebugcontrollerdbus.h',
+  'gdrive.h',
+  'gemblem.h',
+  'gemblemedicon.h',
+  'gfile.h',
+  'gfileattribute.h',
+  'gfileenumerator.h',
+  'gfileicon.h',
+  'gfileinfo.h',
+  'gfileinputstream.h',
+  'gfilemonitor.h',
+  'gfilenamecompleter.h',
+  'gfileoutputstream.h',
+  'gfileiostream.h',
+  'gfilterinputstream.h',
+  'gfilteroutputstream.h',
+  'gicon.h',
+  'ginetaddress.h',
+  'ginetaddressmask.h',
+  'ginetsocketaddress.h',
+  'ginitable.h',
+  'ginputstream.h',
+  'gio.h',
+  'gio-autocleanups.h',
+  'gioenums.h',
+  'gioerror.h',
+  'giomodule.h',
+  'gioscheduler.h',
+  'giostream.h',
+  'giotypes.h',
+  'gloadableicon.h',
+  'gmount.h',
+  'gmemoryinputstream.h',
+  'gmemorymonitor.h',
+  'gmemoryoutputstream.h',
+  'gmountoperation.h',
+  'gnativesocketaddress.h',
+  'gnativevolumemonitor.h',
+  'gnetworkaddress.h',
+  'gnetworkmonitor.h',
+  'gnetworkservice.h',
+  'goutputstream.h',
+  'gpermission.h',
+  'gpollableinputstream.h',
+  'gpollableoutputstream.h',
+  'gpollableutils.h',
+  'gpowerprofilemonitor.h',
+  'gproxy.h',
+  'gproxyaddress.h',
+  'gproxyaddressenumerator.h',
+  'gproxyresolver.h',
+  'gresolver.h',
+  'gresource.h',
+  'gseekable.h',
+  'gsimpleasyncresult.h',
+  'gsimpleiostream.h',
+  'gsimplepermission.h',
+  'gsimpleproxyresolver.h',
+  'gsocket.h',
+  'gsocketaddress.h',
+  'gsocketaddressenumerator.h',
+  'gsocketclient.h',
+  'gsocketconnectable.h',
+  'gsocketconnection.h',
+  'gsocketcontrolmessage.h',
+  'gsocketlistener.h',
+  'gsocketservice.h',
+  'gsrvtarget.h',
+  'gsubprocess.h',
+  'gsubprocesslauncher.h',
+  'gtask.h',
+  'gtcpconnection.h',
+  'gtcpwrapperconnection.h',
+  'gthemedicon.h',
+  'gthreadedsocketservice.h',
+  'gtlsbackend.h',
+  'gtlscertificate.h',
+  'gtlsclientconnection.h',
+  'gtlsconnection.h',
+  'gtlsdatabase.h',
+  'gtlsfiledatabase.h',
+  'gtlsinteraction.h',
+  'gtlspassword.h',
+  'gtlsserverconnection.h',
+  'gdtlsconnection.h',
+  'gdtlsclientconnection.h',
+  'gdtlsserverconnection.h',
+  'gunixconnection.h',
+  'gunixcredentialsmessage.h',
+  'gunixfdlist.h',
+  'gunixsocketaddress.h',
+  'gvfs.h',
+  'gvolume.h',
+  'gvolumemonitor.h',
+  'gzlibcompressor.h',
+  'gzlibdecompressor.h',
+  'glistmodel.h',
+  'gliststore.h',
+)
+
+gio_visibility_h = custom_target(
+  output: 'gio-visibility.h',
+  command: [gen_visibility_macros, meson.project_version(), 'visibility-macros', 'GIO', '@OUTPUT@'],
+  install: true,
+  install_dir: gio_includedir,
+  # FIXME: Not needed with Meson >= 0.64.0
+  install_tag: 'devel',
+)
+gio_sources += gio_visibility_h
+
+gio_headers += application_headers
+gio_headers += settings_headers
+gio_headers += gdbus_headers
+install_headers(gio_headers, install_dir : gio_includedir)
+
+# We can't use gnome.mkenums() because the GNOME module looks for glib-mkenums
+# in PATH, which means you can't bootstrap glib with its own glib-mkenums.
+gioenumtypes_h = custom_target('gioenumtypes_h',
+  output : 'gioenumtypes.h',
+  capture : true,
+  input : gio_headers,
+  install : true,
+  install_dir : gio_includedir,
+  # FIXME: Not needed with Meson >= 0.64.0
+  install_tag: 'devel',
+  command : [python, glib_mkenums,
+             '--template', files('gioenumtypes.h.template'),
+             '@INPUT@', gnetworking_h])
+
+gioenumtypes_c = custom_target('gioenumtypes_c',
+  output : 'gioenumtypes.c',
+  capture : true,
+  input : gio_headers,
+  depends : [gioenumtypes_h],
+  command : [python, glib_mkenums,
+             '--template', files('gioenumtypes.c.template'),
+             '@INPUT@', gnetworking_h])
+
+gioenumtypes_dep = declare_dependency(sources : [gioenumtypes_h, glib_enumtypes_h, gio_visibility_h])
+
+# inotify
+if glib_conf.has('HAVE_SYS_INOTIFY_H') and have_func_inotify_init1
+  subdir('inotify')
+  internal_deps += [ inotify_lib ]
+endif
+
+# kevent
+if have_func_kqueue and have_func_kevent
+  subdir('kqueue')
+  internal_deps += [ kqueue_lib ]
+endif
+
+if host_system == 'windows'
+  subdir('win32')
+  internal_deps += [ giowin32_lib ]
+endif
+
+if have_bash
+  bash_comp_inst_dir = ''
+  if bash_comp_dep.found()
+    bash_comp_dir_override = bash_comp_dep.version().version_compare('>= 2.10') ? ['datadir', get_option('datadir')] : ['prefix', get_option('prefix')]
+    bash_comp_inst_dir = bash_comp_dep.get_variable('completionsdir', pkgconfig_define: bash_comp_dir_override)
+  endif
+
+  if bash_comp_inst_dir == ''
+    message('Found bash-completion but the .pc file did not set \'completionsdir\', fallback to a predefined path')
+    bash_comp_inst_dir = join_paths(get_option('datadir'), 'bash-completion/completions')
+  endif
+
+  install_data([
+      'completion/gapplication',
+      'completion/gdbus',
+      'completion/gio',
+      'completion/gsettings',
+      'completion/gresource'
+    ],
+    install_dir: bash_comp_inst_dir,
+    install_tag: 'bin',
+  )
+endif
+
+if enable_dtrace
+  gio_dtrace_obj = dtrace_obj_gen.process('gio_probes.d')
+  gio_dtrace_hdr = dtrace_hdr_gen.process('gio_probes.d')
+else
+  gio_dtrace_obj = []
+  gio_dtrace_hdr = []
+endif
+
+libgio = library('gio-2.0',
+  gioenumtypes_h, gioenumtypes_c, gnetworking_h, gio_sources,
+  gio_dtrace_hdr, gio_dtrace_obj,
+  version : library_version,
+  soversion : soversion,
+  darwin_versions : darwin_versions,
+  install : true,
+  include_directories : [configinc, gioinc],
+  #  '$(gio_win32_res_ldflag)',
+  link_with: internal_deps,
+  dependencies : [libz_dep, libdl_dep, libmount_dep, libglib_dep,
+                  libgobject_dep, libgmodule_dep, selinux_dep, xattr_dep,
+                  platform_deps, network_libs, libsysprof_capture_dep,
+                  gioenumtypes_dep, gvdb_dep],
+  c_args : [gio_c_args, gio_c_args_internal],
+  objc_args : [gio_c_args, gio_c_args_internal],
+  gnu_symbol_visibility : 'hidden',
+  # intl.lib is not compatible with SAFESEH
+  link_args : [noseh_link_args, glib_link_flags],
+)
+
+if get_option('gio_module_dir') != ''
+  pkgconfig_giomodulesdir = join_paths('${prefix}', get_option('gio_module_dir'))
+else
+  pkgconfig_giomodulesdir = join_paths('${libdir}', 'gio', 'modules')
+endif
+
+schemas_subdir = join_paths('glib-2.0', 'schemas')
+
+libgio_dep = declare_dependency(link_with : libgio,
+  dependencies : [libgmodule_dep, libgobject_dep, gioenumtypes_dep],
+  include_directories : [gioinc],
+  variables : [
+    'schemasdir=' + join_paths(glib_datadir, schemas_subdir),
+    'giomoduledir=' + glib_giomodulesdir,
+  ],
+)
+
+pkg.generate(libgio,
+  requires : ['glib-2.0', 'gobject-2.0'],
+  variables : ['datadir=' + join_paths('${prefix}', get_option('datadir')),
+               'schemasdir=' + join_paths('${datadir}', schemas_subdir),
+               'bindir=' + join_paths('${prefix}', get_option('bindir')),
+               'giomoduledir=' + pkgconfig_giomodulesdir,
+               'gio=' + join_paths('${bindir}', 'gio'),
+               'gio_querymodules=@0@'.format(pkgconfig_multiarch_bindir / 'gio-querymodules'),
+               'glib_compile_schemas=@0@'.format(pkgconfig_multiarch_bindir / 'glib-compile-schemas'),
+               'glib_compile_resources=' + join_paths('${bindir}', 'glib-compile-resources'),
+               'gdbus=' + join_paths('${bindir}', 'gdbus'),
+               'gdbus_codegen=' + join_paths('${bindir}', 'gdbus-codegen'),
+               'gresource=' + join_paths('${bindir}', 'gresource'),
+               'gsettings=' + join_paths('${bindir}', 'gsettings')],
+  version : glib_version,
+  install_dir : glib_pkgconfigreldir,
+  filebase : 'gio-2.0',
+  name : 'GIO',
+  description : 'glib I/O library',
+)
+meson.override_dependency('gio-2.0', libgio_dep)
+
+if host_system == 'windows'
+  pkg.generate(requires : ['gobject-2.0', 'gmodule-no-export-2.0', 'gio-2.0'],
+    subdirs : ['gio-win32-2.0'],
+    version : glib_version,
+    install_dir : glib_pkgconfigreldir,
+    filebase : 'gio-windows-2.0',
+    name : 'GIO Windows specific APIs',
+    description : 'Windows specific headers for glib I/O library',
+  )
+  meson.override_dependency('gio-windows-2.0', libgio_dep)
+else
+  pkg.generate(requires : ['gobject-2.0', 'gio-2.0'],
+    subdirs : ['gio-unix-2.0'],
+    version : glib_version,
+    install_dir : glib_pkgconfigreldir,
+    filebase : 'gio-unix-2.0',
+    name : 'GIO unix specific APIs',
+    description : 'unix specific headers for glib I/O library',
+  )
+  meson.override_dependency('gio-unix-2.0', libgio_dep)
+endif
+
+if host_system == 'windows'
+  # Hack till https://github.com/mesonbuild/meson/issues/2324 is fixed
+  libgiounix_dep = dependency('', required : false)
+  libgiowin32_dep = libgio_dep
+else
+  libgiowin32_dep = dependency('', required : false)
+  libgiounix_dep = libgio_dep
+endif
+
+# Dependencies used by executables below
+have_libelf = false
+libelf = dependency('libelf', version : '>= 0.8.12', required : get_option ('libelf'))
+if libelf.found()
+  have_libelf = true
+else
+  # This fallback is necessary on *BSD. elfutils isn't the only libelf
+  # implementation, and *BSD usually includes their own libelf as a system
+  # library which doesn't have a corresponding .pc file.
+  libelf = cc.find_library('elf', required : get_option ('libelf'))
+  have_libelf = libelf.found()
+  have_libelf = have_libelf and cc.has_function('elf_begin', dependencies : libelf)
+  have_libelf = have_libelf and cc.has_function('elf_getshdrstrndx', dependencies : libelf)
+  have_libelf = have_libelf and cc.has_function('elf_getshdrnum', dependencies : libelf)
+  have_libelf = have_libelf and cc.has_header('libelf.h')
+endif
+
+if have_libelf
+  glib_conf.set('HAVE_LIBELF', 1)
+else
+  libelf = []
+endif
+
+gconstructor_as_data_h = custom_target('gconstructor_as_data.h',
+    input : ['data-to-c.py', files('../glib/gconstructor.h')],
+    output : ['gconstructor_as_data.h'],
+    command : [python, '@INPUT0@', '@INPUT1@', 'gconstructor_code', '@OUTPUT@'])
+
+# Several installed executables
+gio_tool_sources = [
+  'gio-tool.c',
+  'gio-tool.h',
+  'gio-tool-cat.c',
+  'gio-tool-copy.c',
+  'gio-tool-info.c',
+  'gio-tool-launch.c',
+  'gio-tool-list.c',
+  'gio-tool-mime.c',
+  'gio-tool-mkdir.c',
+  'gio-tool-monitor.c',
+  'gio-tool-mount.c',
+  'gio-tool-move.c',
+  'gio-tool-open.c',
+  'gio-tool-rename.c',
+  'gio-tool-remove.c',
+  'gio-tool-save.c',
+  'gio-tool-set.c',
+  'gio-tool-trash.c',
+  'gio-tool-tree.c',
+]
+
+executable('gio', gio_tool_sources,
+  install : true,
+  install_tag : 'bin',
+  c_args : gio_c_args,
+  # intl.lib is not compatible with SAFESEH
+  link_args : noseh_link_args,
+  dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+
+executable('gresource', 'gresource-tool.c',
+  install : true,
+  install_tag : 'bin',
+  # intl.lib is not compatible with SAFESEH
+  link_args : noseh_link_args,
+  dependencies : [libelf, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+
+gio_querymodules = executable('gio-querymodules', 'gio-querymodules.c', 'giomodule-priv.c',
+  install : true,
+  install_dir : multiarch_bindir,
+  install_tag : 'bin',
+  c_args : gio_c_args,
+  # intl.lib is not compatible with SAFESEH
+  link_args : noseh_link_args,
+  dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+
+glib_compile_schemas = executable('glib-compile-schemas',
+  ['glib-compile-schemas.c'],
+  install : true,
+  install_dir : multiarch_bindir,
+  install_tag : 'bin',
+  # intl.lib is not compatible with SAFESEH
+  link_args : noseh_link_args,
+  dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep, gvdb_dep])
+
+glib_compile_resources = executable('glib-compile-resources',
+  [gconstructor_as_data_h, 'glib-compile-resources.c'],
+  install : true,
+  install_tag : 'bin-devel',
+  c_args : gio_c_args,
+  # intl.lib is not compatible with SAFESEH
+  link_args : noseh_link_args,
+  dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep, gvdb_dep])
+
+executable('gsettings', 'gsettings-tool.c',
+  install : true,
+  install_tag : 'bin',
+  c_args : gio_c_args,
+  # intl.lib is not compatible with SAFESEH
+  link_args : noseh_link_args,
+  dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+install_data('gschema.dtd',
+  install_dir : get_option('datadir') / schemas_subdir,
+  install_tag : 'devel',
+)
+
+install_data(['gschema.loc', 'gschema.its'],
+  install_dir : get_option('datadir') / 'gettext' / 'its',
+  install_tag : 'devel',
+)
+
+executable('gdbus', 'gdbus-tool.c',
+  install : true,
+  install_tag : 'bin',
+  c_args : gio_c_args,
+  # intl.lib is not compatible with SAFESEH
+  link_args : noseh_link_args,
+  dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+
+if host_system != 'windows' and not glib_have_cocoa
+  executable('gapplication', 'gapplication-tool.c',
+    install : true,
+    install_tag : 'bin',
+    c_args : gio_c_args,
+    # intl.lib is not compatible with SAFESEH
+    link_args : noseh_link_args,
+    dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+endif
+
+if enable_systemtap
+  gio_stp = configure_file(input : 'gio.stp.in',
+    output : '@0@.stp'.format(libgio.full_path().split('/').get(-1)),
+    configuration : stp_cdata,
+    install_dir : tapset_install_dir,
+    install_tag : 'systemtap',
+  )
+endif
+
+if multiarch_bindir != get_option('bindir')
+  foreach exe : ['gio-querymodules', 'glib-compile-schemas']
+    if meson.version().version_compare('>=0.61.0')
+      install_symlink(
+        exe,
+        install_dir : get_option('bindir'),
+        pointing_to : get_option('prefix') / multiarch_bindir / exe,
+      )
+    else
+      warning(
+        'Please use Meson >= 0.61.0 or create a symlink @1@ -> @2@ in packaging'.format(
+          get_option('prefix') / get_option('bindir') / exe,
+          get_option('prefix') / multiarch_bindir / exe,
+        )
+      )
+    endif
+  endforeach
+endif
+
+if build_tests
+    subdir('tests')
+endif
+
+# The following is an example for building internal marshallers that are used
+# by GIO. We cannot guarantee glib-genmarshal availability while building GLib
+# so they are pre-generated and placed into gmarshal-internal.[ch].
+#
+# gmarshal_internal = gnome.genmarshal('gmarshal-internal',
+#   sources: 'gmarshal-internal.list',
+#   prefix: '_g_cclosure_marshal',
+#   valist_marshallers: true,
+#   internal: true,
+# )
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/gio
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/gio	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/gio	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/gio
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0/meson.build	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0/meson.build	(revision 5)
@@ -0,0 +1,89 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+double_exponent_test = '''
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+  ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { double value; unsigned int word[NWORDS]; } memory_double;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (double x)
+{
+  memory_double m;
+  size_t i;
+  /* Clear it first, in case sizeof (double) < sizeof (memory_double).  */
+  memset (&m, 0, sizeof (memory_double));
+  m.value = x;
+  for (i = 0; i < NWORDS; i++)
+    {
+      ored_words[i] |= m.word[i];
+      anded_words[i] &= m.word[i];
+    }
+}
+int main ()
+{
+  size_t j;
+  FILE *fp = stdout;
+  if (fp == NULL)
+    return 1;
+  for (j = 0; j < NWORDS; j++)
+    anded_words[j] = ~ (unsigned int) 0;
+  add_to_ored_words (0.25);
+  add_to_ored_words (0.5);
+  add_to_ored_words (1.0);
+  add_to_ored_words (2.0);
+  add_to_ored_words (4.0);
+  /* Remove bits that are common (e.g. if representation of the first mantissa
+     bit is explicit).  */
+  for (j = 0; j < NWORDS; j++)
+    ored_words[j] &= ~anded_words[j];
+  /* Now find the nonzero word.  */
+  for (j = 0; j < NWORDS; j++)
+    if (ored_words[j] != 0)
+      break;
+  if (j < NWORDS)
+    {
+      size_t i;
+      for (i = j + 1; i < NWORDS; i++)
+        if (ored_words[i] != 0)
+          {
+            fprintf (fp, "-1/-1");
+            return (fclose (fp) != 0);
+          }
+      for (i = 0; ; i++)
+        if ((ored_words[j] >> i) & 1)
+          {
+            fprintf (fp, "%d/%d", (int) j, (int) i);
+            return (fclose (fp) != 0);
+          }
+    }
+  fprintf (fp, "-1/-1");
+  return (fclose (fp) != 0);
+}
+'''
+
+gl_cv_cc_double_expbit0_word = -1
+gl_cv_cc_double_expbit0_bit = -1
+
+# On ARM, there are two 'double' floating-point formats, used by
+# different sets of instructions: The older FPA instructions assume
+# that they are stored in big-endian word order, while the words
+# (like integer types) are stored in little-endian byte order.
+# The newer VFP instructions assume little-endian order
+# consistently.
+if (cc.get_define ('arm') == '' and
+    cc.get_define ('__arm') == '' and
+    cc.get_define ('__arm__') == '')
+  gl_cv_cc_double_expbit0_bit = 20
+  if host_machine.endian () == 'big'
+    gl_cv_cc_double_expbit0_word = 0
+  else
+    gl_cv_cc_double_expbit0_word = 1
+  endif
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works/meson.build	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works/meson.build	(revision 5)
@@ -0,0 +1,94 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+frexp_test = '''
+#define HAVE_DECL_ALARM 0
+#include <float.h>
+#include <math.h>
+#include <string.h>
+#if HAVE_DECL_ALARM
+# include <signal.h>
+# include <unistd.h>
+#endif
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
+   ICC 10.0 has a bug when optimizing the expression -zero.
+   The expression -DBL_MIN * DBL_MIN does not work when cross-compiling
+   to PowerPC on Mac OS X 10.5.  */
+#if defined __hpux || defined __sgi || defined __ICC
+static double
+compute_minus_zero (void)
+{
+  return -DBL_MIN * DBL_MIN;
+}
+# define minus_zero compute_minus_zero ()
+#else
+double minus_zero = -0.0;
+#endif
+int main()
+{
+  int result = 0;
+  int i;
+  volatile double x;
+  double zero = 0.0;
+#if HAVE_DECL_ALARM
+  /* NeXTstep 3.3 frexp() runs into an endless loop when called on an infinite
+     number.  Let the test fail in this case.  */
+  signal (SIGALRM, SIG_DFL);
+  alarm (5);
+#endif
+  /* Test on denormalized numbers.  */
+  for (i = 1, x = 1.0; i >= DBL_MIN_EXP; i--, x *= 0.5)
+    ;
+  if (x > 0.0)
+    {
+      int exp;
+      double y = frexp (x, &exp);
+      /* On machines with IEEE754 arithmetic: x = 1.11254e-308, exp = -1022.
+         On NetBSD: y = 0.75. Correct: y = 0.5.  */
+      if (y != 0.5)
+        result |= 1;
+    }
+  /* Test on infinite numbers.  */
+  x = 1.0 / zero;
+  {
+    int exp;
+    double y = frexp (x, &exp);
+    if (y != x)
+      result |= 2;
+  }
+  /* Test on negative zero.  */
+  x = minus_zero;
+  {
+    int exp;
+    double y = frexp (x, &exp);
+    if (memcmp (&y, &x, sizeof x))
+      result |= 4;
+  }
+  x = 0.0;
+  {
+    int exp;
+    double y = frexp (x, &exp);
+    if (memcmp (&y, &x, sizeof x))
+      result |= 8;
+  }
+  return result;
+}'''
+
+if (host_system.startswith ('netbsd') or
+    host_system.startswith ('irix'))
+  gl_cv_func_frexp_works = false
+  gl_cv_func_frexp_broken_beyond_repair = true
+elif host_system == 'windows'
+  if cc.get_id () == 'msvc' or cc.get_id() == 'clang-cl'
+    gl_cv_func_frexp_works = true
+    gl_cv_func_frexp_broken_beyond_repair = false
+  else
+    gl_cv_func_frexp_works = false
+    gl_cv_func_frexp_broken_beyond_repair = false
+  endif
+else
+  gl_cv_func_frexp_works = true
+  gl_cv_func_frexp_broken_beyond_repair = false
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works/meson.build	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works/meson.build	(revision 5)
@@ -0,0 +1,126 @@
+# Copyright (C) 2007-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+frexpl_test = '''
+#include <float.h>
+#include <math.h>
+/* Override the values of <float.h>, like done in float.in.h.  */
+#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP    (-16381)
+#endif
+#if defined __i386__ && (defined __FreeBSD__ || defined __DragonFly__)
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP    (-16381)
+#endif
+#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP DBL_MIN_EXP
+#endif
+#if defined __sgi && (LDBL_MANT_DIG >= 106)
+# if defined __GNUC__
+#  undef LDBL_MIN_EXP
+#  define LDBL_MIN_EXP DBL_MIN_EXP
+# endif
+#endif
+extern
+#ifdef __cplusplus
+"C"
+#endif
+
+#if !defined (_MSC_VER) || defined (TEST_FREXPL_DECL)
+long double frexpl (long double, int *);
+#endif
+
+int main()
+{
+  int result = 0;
+  volatile long double x;
+  /* Test on finite numbers that fails on AIX 5.1.  */
+  x = 16.0L;
+  {
+    int exp = -9999;
+    frexpl (x, &exp);
+    if (exp != 5)
+      result |= 1;
+  }
+  /* Test on finite numbers that fails on Mac OS X 10.4, because its frexpl
+     function returns an invalid (incorrectly normalized) value: it returns
+               y = { 0x3fe028f5, 0xc28f5c28, 0x3c9eb851, 0xeb851eb8 }
+     but the correct result is
+          0.505L = { 0x3fe028f5, 0xc28f5c29, 0xbc547ae1, 0x47ae1480 }  */
+  x = 1.01L;
+  {
+    int exp = -9999;
+    long double y = frexpl (x, &exp);
+    if (!(exp == 1 && y == 0.505L))
+      result |= 2;
+  }
+  /* Test on large finite numbers.  This fails on BeOS at i = 16322, while
+     LDBL_MAX_EXP = 16384.
+     In the loop end test, we test x against Infinity, rather than comparing
+     i with LDBL_MAX_EXP, because BeOS <float.h> has a wrong LDBL_MAX_EXP.  */
+  {
+    int i;
+    for (i = 1, x = 1.0L; x != x + x; i++, x *= 2.0L)
+      {
+        int exp = -9999;
+        frexpl (x, &exp);
+        if (exp != i)
+          {
+            result |= 4;
+            break;
+          }
+      }
+  }
+  /* Test on denormalized numbers.  */
+  {
+    int i;
+    for (i = 1, x = 1.0L; i >= LDBL_MIN_EXP; i--, x *= 0.5L)
+      ;
+    if (x > 0.0L)
+      {
+        int exp;
+        long double y = frexpl (x, &exp);
+        /* On machines with IEEE854 arithmetic: x = 1.68105e-4932,
+           exp = -16382, y = 0.5.  On Mac OS X 10.5: exp = -16384, y = 0.5.  */
+        if (exp != LDBL_MIN_EXP - 1)
+          result |= 8;
+      }
+  }
+  /* Test on infinite numbers.  */
+  /* The dance around 0.0L is an attempt to prevent MSVC from erroring out */
+  x = 0.0L;
+  x = 1.0L / x;
+  {
+    int exp;
+    long double y = frexpl (x, &exp);
+    if (y != x)
+      result |= 16;
+  }
+  return result;
+}
+'''
+
+if (host_system.startswith ('aix') or
+    host_system.startswith ('beos') or
+    host_system.startswith ('irix'))
+  gl_cv_func_frexpl_works = false
+  gl_cv_func_frexpl_broken_beyond_repair = true
+elif (host_system == 'windows')
+  gl_cv_func_frexpl_works = false
+  gl_cv_func_frexpl_broken_beyond_repair = false
+else
+  gl_cv_func_frexpl_works = true
+  gl_cv_func_frexpl_broken_beyond_repair = false
+endif
+
+frexpl_test_decl = '''
+#define TEST_FREXPL_DECL 1
+''' + frexpl_test
+
+build_result = cc.compiles(frexpl_test_decl,
+    name : 'frexpl prototype can be re-listed')
+gl_cv_func_frexpl_decl = build_result
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works/meson.build	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works/meson.build	(revision 5)
@@ -0,0 +1,50 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+ldexpl_test = '''
+#include <math.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+
+#if !defined (_MSC_VER) || defined (TEST_LDEXPL_DECL)
+long double ldexpl (long double, int);
+#endif
+
+int main()
+{
+  int result = 0;
+  {
+    volatile long double x = 1.0;
+    volatile long double y = ldexpl (x, -1);
+    if (y != 0.5L)
+      result |= 1;
+  }
+  {
+    volatile long double x = 1.73205L;
+    volatile long double y = ldexpl (x, 0);
+    if (y != x)
+      result |= 2;
+  }
+  return result;
+}
+'''
+
+if host_system.startswith ('aix')
+  gl_cv_func_ldexpl_works = false
+elif host_system == 'windows'
+  gl_cv_func_ldexpl_works = true
+else
+  gl_cv_func_ldexpl_works = true
+endif
+
+ldexpl_test_decl = '''
+#define TEST_LDEXPL_DECL 1
+''' + ldexpl_test
+
+build_result = cc.compiles(ldexpl_test_decl,
+    name : 'ldexpl prototype can be re-listed')
+gl_cv_func_ldexpl_decl = build_result
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a/meson.build	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a/meson.build	(revision 5)
@@ -0,0 +1,88 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports the 'a' and 'A'
+# conversion specifier for hexadecimal output of floating-point numbers.
+# (ISO C99, POSIX:2001)
+# Result is gl_cv_func_printf_directive_a.
+
+printf_directive_a_test = '''
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+static double zero = 0.0;
+int main ()
+{
+  int result = 0;
+  if (sprintf (buf, "%a %d", 3.1416015625, 33, 44, 55) < 0
+      || (strcmp (buf, "0x1.922p+1 33") != 0
+          && strcmp (buf, "0x3.244p+0 33") != 0
+          && strcmp (buf, "0x6.488p-1 33") != 0
+          && strcmp (buf, "0xc.91p-2 33") != 0))
+    result |= 1;
+  if (sprintf (buf, "%A %d", -3.1416015625, 33, 44, 55) < 0
+      || (strcmp (buf, "-0X1.922P+1 33") != 0
+          && strcmp (buf, "-0X3.244P+0 33") != 0
+          && strcmp (buf, "-0X6.488P-1 33") != 0
+          && strcmp (buf, "-0XC.91P-2 33") != 0))
+    result |= 2;
+  /* This catches a FreeBSD 6.1 bug: it doesn't round.  */
+  if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0
+      || (strcmp (buf, "0x1.83p+0 33") != 0
+          && strcmp (buf, "0x3.05p-1 33") != 0
+          && strcmp (buf, "0x6.0ap-2 33") != 0
+          && strcmp (buf, "0xc.14p-3 33") != 0))
+    result |= 4;
+  /* This catches a Mac OS X 10.12.4 (Darwin 16.5) bug: it doesn't round.  */
+  if (sprintf (buf, "%.0a %d", 1.51, 33, 44, 55) < 0
+      || (strcmp (buf, "0x2p+0 33") != 0
+          && strcmp (buf, "0x3p-1 33") != 0
+          && strcmp (buf, "0x6p-2 33") != 0
+          && strcmp (buf, "0xcp-3 33") != 0))
+    result |= 4;
+  /* This catches a FreeBSD 6.1 bug.  See
+     <https://lists.gnu.org/r/bug-gnulib/2007-04/msg00107.html> */
+  if (sprintf (buf, "%010a %d", 1.0 / zero, 33, 44, 55) < 0
+      || buf[0] == '0')
+    result |= 8;
+  /* This catches a Mac OS X 10.3.9 (Darwin 7.9) bug.  */
+  if (sprintf (buf, "%.1a", 1.999) < 0
+      || (strcmp (buf, "0x1.0p+1") != 0
+          && strcmp (buf, "0x2.0p+0") != 0
+          && strcmp (buf, "0x4.0p-1") != 0
+          && strcmp (buf, "0x8.0p-2") != 0))
+    result |= 16;
+  /* This catches the same Mac OS X 10.3.9 (Darwin 7.9) bug and also a
+     glibc 2.4 bug <https://sourceware.org/bugzilla/show_bug.cgi?id=2908>.  */
+  if (sprintf (buf, "%.1La", 1.999L) < 0
+      || (strcmp (buf, "0x1.0p+1") != 0
+          && strcmp (buf, "0x2.0p+0") != 0
+          && strcmp (buf, "0x4.0p-1") != 0
+          && strcmp (buf, "0x8.0p-2") != 0))
+    result |= 32;
+  return result;
+}
+'''
+
+glibc_printf_directive_a_test = '''
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 5) || (__GLIBC__ > 2)) && !defined __UCLIBC__
+ #else
+  #error Too old glibc
+ #endif
+#else
+ #error Not glibc
+#endif
+int main () { return 0; }
+'''
+
+if host_system == 'linux'
+  gl_cv_func_printf_directive_a = cc.compiles(glibc_printf_directive_a_test)
+elif host_system == 'windows'
+  gl_cv_func_printf_directive_a = false
+else
+  gl_cv_func_printf_directive_a = false
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f/meson.build	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f/meson.build	(revision 5)
@@ -0,0 +1,75 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports the %F format
+# directive. (ISO C99, POSIX:2001)
+# Result is gl_cv_func_printf_directive_f.
+
+printf_directive_f_test = '''
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+static double zero = 0.0;
+int main ()
+{
+  int result = 0;
+  if (sprintf (buf, "%F %d", 1234567.0, 33, 44, 55) < 0
+      || strcmp (buf, "1234567.000000 33") != 0)
+    result |= 1;
+  if (sprintf (buf, "%F", 1.0 / zero) < 0
+      || (strcmp (buf, "INF") != 0 && strcmp (buf, "INFINITY") != 0))
+    result |= 2;
+  /* This catches a Cygwin 1.5.x bug.  */
+  if (sprintf (buf, "%.F", 1234.0) < 0
+      || strcmp (buf, "1234") != 0)
+    result |= 4;
+  return result;
+}
+'''
+
+if host_system in ['linux', 'android']
+  gl_cv_func_printf_directive_f = true
+elif (host_system.startswith ('freebsd1') or
+      host_system.startswith ('freebsd2') or
+      host_system.startswith ('freebsd3') or
+      host_system.startswith ('freebsd4') or
+      host_system.startswith ('freebsd5'))
+  gl_cv_func_printf_directive_f = false
+elif (host_system.startswith ('freebsd') or
+      host_system.startswith ('kfreebsd'))
+  gl_cv_func_printf_directive_f = true
+elif (host_system.startswith ('darwin1') or
+      host_system.startswith ('darwin2') or
+      host_system.startswith ('darwin3') or
+      host_system.startswith ('darwin4') or
+      host_system.startswith ('darwin5') or
+      host_system.startswith ('darwin6'))
+  gl_cv_func_printf_directive_f = false
+elif host_system.startswith ('darwin')
+  gl_cv_func_printf_directive_f = true
+# Split the check from the main if statement, ensure that
+# some meson versions (old ones, presumable) won't try
+# to evaluate host_system[9] when it's shorter than that
+elif host_system.startswith ('solaris2.')
+  if (host_system[9] == '1' and
+      '0123456789'.contains (host_system[10])) or
+     ('23456789'.contains (host_system[9]) == '1' and
+      '0123456789'.contains (host_system[10]))
+    gl_cv_func_printf_directive_f = true
+  elif host_system.startswith ('solaris')
+    gl_cv_func_printf_directive_f = false
+  endif
+elif host_system.startswith ('solaris')
+  gl_cv_func_printf_directive_f = false
+elif host_system == 'windows'
+  # Guess yes on MSVC, no on mingw.
+  if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl'
+    gl_cv_func_printf_directive_f = true
+  else
+    gl_cv_func_printf_directive_f = false
+  endif
+else
+  gl_cv_func_printf_directive_f = false
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls/meson.build	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls/meson.build	(revision 5)
@@ -0,0 +1,76 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports the %ls format
+# directive and in particular, when a precision is specified, whether
+# the functions stop converting the wide string argument when the number
+# of bytes that have been produced by this conversion equals or exceeds
+# the precision.
+# Result is gl_cv_func_printf_directive_ls.
+
+printf_directive_ls_test = '''
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+   <wchar.h>.
+   BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+   included before <wchar.h>.  */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+#include <string.h>
+int main ()
+{
+  int result = 0;
+  char buf[100];
+  /* Test whether %ls works at all.
+     This test fails on OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Haiku, but not on
+     Cygwin 1.5.  */
+  {
+    static const wchar_t wstring[] = { 'a', 'b', 'c', 0 };
+    buf[0] = '\0';
+    if (sprintf (buf, "%ls", wstring) < 0
+        || strcmp (buf, "abc") != 0)
+      result |= 1;
+  }
+  /* This test fails on IRIX 6.5, Solaris 2.6, Cygwin 1.5, Haiku (with an
+     assertion failure inside libc), but not on OpenBSD 4.0.  */
+  {
+    static const wchar_t wstring[] = { 'a', 0 };
+    buf[0] = '\0';
+    if (sprintf (buf, "%ls", wstring) < 0
+        || strcmp (buf, "a") != 0)
+      result |= 2;
+  }
+  /* Test whether precisions in %ls are supported as specified in ISO C 99
+     section 7.19.6.1:
+       "If a precision is specified, no more than that many bytes are written
+        (including shift sequences, if any), and the array shall contain a
+        null wide character if, to equal the multibyte character sequence
+        length given by the precision, the function would need to access a
+        wide character one past the end of the array."
+     This test fails on Solaris 10.  */
+  {
+    static const wchar_t wstring[] = { 'a', 'b', (wchar_t) 0xfdfdfdfd, 0 };
+    buf[0] = '\0';
+    if (sprintf (buf, "%.2ls", wstring) < 0
+        || strcmp (buf, "ab") != 0)
+      result |= 8;
+  }
+  return result;
+}
+'''
+
+if (host_system.startswith ('openbsd') or
+      host_system.startswith ('irix') or
+      host_system.startswith ('solaris') or
+      host_system.startswith ('cygwin') or
+      host_system.startswith ('beos') or
+      host_system.startswith ('haiku'))
+  gl_cv_func_printf_directive_ls = false
+elif host_system == 'windows'
+  gl_cv_func_printf_directive_ls = true
+else
+  gl_cv_func_printf_directive_ls = true
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem/meson.build	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem/meson.build	(revision 5)
@@ -0,0 +1,67 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions recovers gracefully in case
+# of an out-of-memory condition, or whether it crashes the entire program.
+# Result is gl_cv_func_printf_enomem.
+
+printf_enomem_test = '''
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <errno.h>
+int main()
+{
+  struct rlimit limit;
+  int ret;
+  nocrash_init ();
+  /* Some printf implementations allocate temporary space with malloc.  */
+  /* On BSD systems, malloc() is limited by RLIMIT_DATA.  */
+#ifdef RLIMIT_DATA
+  if (getrlimit (RLIMIT_DATA, &limit) < 0)
+    return 77;
+  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+    limit.rlim_max = 5000000;
+  limit.rlim_cur = limit.rlim_max;
+  if (setrlimit (RLIMIT_DATA, &limit) < 0)
+    return 77;
+#endif
+  /* On Linux systems, malloc() is limited by RLIMIT_AS.  */
+#ifdef RLIMIT_AS
+  if (getrlimit (RLIMIT_AS, &limit) < 0)
+    return 77;
+  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+    limit.rlim_max = 5000000;
+  limit.rlim_cur = limit.rlim_max;
+  if (setrlimit (RLIMIT_AS, &limit) < 0)
+    return 77;
+#endif
+  /* Some printf implementations allocate temporary space on the stack.  */
+#ifdef RLIMIT_STACK
+  if (getrlimit (RLIMIT_STACK, &limit) < 0)
+    return 77;
+  if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+    limit.rlim_max = 5000000;
+  limit.rlim_cur = limit.rlim_max;
+  if (setrlimit (RLIMIT_STACK, &limit) < 0)
+    return 77;
+#endif
+  ret = printf ("%.5000000f", 1.0);
+  return !(ret == 5000002 || (ret < 0 && errno == ENOMEM));
+}
+'''
+
+# If we don't know, assume the worst.
+gl_cv_func_printf_enomem = false
+if (host_system == 'linux' or
+    host_system == 'solaris' or
+    host_system == 'sunos' or
+    host_system == 'aix' or 
+    host_system == 'irix' or 
+    host_system == 'beos' or 
+    host_system == 'haiku')
+  gl_cv_func_printf_enomem = true
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping/meson.build	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping/meson.build	(revision 5)
@@ -0,0 +1,31 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports the - flag correctly.
+# (ISO C99.) See
+# <https://lists.gnu.org/r/bug-coreutils/2008-02/msg00035.html>
+# Result is gl_cv_func_printf_flag_leftadjust.
+
+printf_flag_grouping_test = '''
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+  if (sprintf (buf, "%'d %d", 1234567, 99) < 0
+      || buf[strlen (buf) - 1] != '9')
+    return 1;
+  return 0;
+}'''
+
+if host_system.startswith ('cygwin')
+  gl_cv_func_printf_flag_grouping = false
+elif host_system.startswith ('netbsd')
+  gl_cv_func_printf_flag_grouping = false
+elif host_system == 'windows'
+  gl_cv_func_printf_flag_grouping = false
+else
+  gl_cv_func_printf_flag_grouping = true
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust/meson.build	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust/meson.build	(revision 5)
@@ -0,0 +1,33 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports the - flag correctly.
+# (ISO C99.) See
+# <https://lists.gnu.org/r/bug-coreutils/2008-02/msg00035.html>
+# Result is gl_cv_func_printf_flag_leftadjust.
+
+printf_flag_leftadjust_test = '''
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+  /* Check that a '-' flag is not annihilated by a negative width.  */
+  if (sprintf (buf, "a%-*sc", -3, "b") < 0
+      || strcmp (buf, "ab  c") != 0)
+    return 1;
+  return 0;
+}
+'''
+
+if host_system.startswith ('hpux11')
+  gl_cv_func_printf_flag_leftadjust = true
+elif host_system.startswith ('hpux')
+  gl_cv_func_printf_flag_leftadjust = false
+elif host_system == 'windows'
+  gl_cv_func_printf_flag_leftadjust = true
+else
+  gl_cv_func_printf_flag_leftadjust = true
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero/meson.build	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero/meson.build	(revision 5)
@@ -0,0 +1,34 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports padding of non-finite
+# values with the 0 flag correctly. (ISO C99 + TC1 + TC2.) See
+# <https://lists.gnu.org/r/bug-gnulib/2007-04/msg00107.html>
+# Result is gl_cv_func_printf_flag_zero.
+
+printf_flag_zero_test = '''
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+static double zero = 0.0;
+int main ()
+{
+  if (sprintf (buf, "%010f", 1.0 / zero, 33, 44, 55) < 0
+      || (strcmp (buf, "       inf") != 0
+          && strcmp (buf, "  infinity") != 0))
+    return 1;
+  return 0;
+}
+'''
+
+if host_system in ['linux', 'android']
+  gl_cv_func_printf_flag_zero = true
+elif host_system.startswith ('beos')
+  gl_cv_func_printf_flag_zero = true
+elif host_system == 'windows'
+  gl_cv_func_printf_flag_zero = false
+else
+  gl_cv_func_printf_flag_zero = false
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite/meson.build	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite/meson.build	(revision 5)
@@ -0,0 +1,129 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports infinite and NaN
+# 'double' arguments and negative zero arguments in the %f, %e, %g
+# directives. (ISO C99, POSIX:2001)
+# Result is gl_cv_func_printf_infinite.
+
+printf_infinite_double_test = '''
+#include <stdio.h>
+#include <string.h>
+static int
+strisnan (const char *string, size_t start_index, size_t end_index)
+{
+  if (start_index < end_index)
+    {
+      if (string[start_index] == '-')
+        start_index++;
+      if (start_index + 3 <= end_index
+          && memcmp (string + start_index, "nan", 3) == 0)
+        {
+          start_index += 3;
+          if (start_index == end_index
+              || (string[start_index] == '(' && string[end_index - 1] == ')'))
+            return 1;
+        }
+    }
+  return 0;
+}
+static int
+have_minus_zero ()
+{
+  static double plus_zero = 0.0;
+  double minus_zero = - plus_zero;
+  return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0;
+}
+static char buf[10000];
+static double zero = 0.0;
+int main ()
+{
+  int result = 0;
+  if (sprintf (buf, "%f", 1.0 / zero) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%f", -1.0 / zero) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%f", zero / zero) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 2;
+  if (sprintf (buf, "%e", 1.0 / zero) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 4;
+  if (sprintf (buf, "%e", -1.0 / zero) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 4;
+  if (sprintf (buf, "%e", zero / zero) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 8;
+  if (sprintf (buf, "%g", 1.0 / zero) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 16;
+  if (sprintf (buf, "%g", -1.0 / zero) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 16;
+  if (sprintf (buf, "%g", zero / zero) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 32;
+  /* This test fails on HP-UX 10.20.  */
+  if (have_minus_zero ())
+    if (sprintf (buf, "%g", - zero) < 0
+        || strcmp (buf, "-0") != 0)
+    result |= 64;
+  return result;
+}
+'''
+
+if host_system in ['linux', 'android']
+  gl_cv_func_printf_infinite = true
+elif (host_system.startswith ('freebsd1') or
+      host_system.startswith ('freebsd2') or
+      host_system.startswith ('freebsd3') or
+      host_system.startswith ('freebsd4') or
+      host_system.startswith ('freebsd5'))
+  gl_cv_func_printf_infinite = false
+elif (host_system.startswith ('freebsd') or
+      host_system.startswith ('kfreebsd'))
+  gl_cv_func_printf_infinite = true
+elif (host_system.startswith ('darwin1') or
+      host_system.startswith ('darwin2') or
+      host_system.startswith ('darwin3') or
+      host_system.startswith ('darwin4') or
+      host_system.startswith ('darwin5'))
+  gl_cv_func_printf_infinite = false
+elif host_system.startswith ('darwin')
+  gl_cv_func_printf_infinite = true
+elif (host_system.startswith ('hpux7') or
+      host_system.startswith ('hpux8') or
+      host_system.startswith ('hpux9') or
+      host_system.startswith ('hpux10'))
+  gl_cv_func_printf_infinite = false
+elif host_system.startswith ('hpux')
+  gl_cv_func_printf_infinite = true
+elif (host_system.startswith ('netbsd1') or
+      host_system.startswith ('netbsd2') or
+      host_system.startswith ('netbsdelf1') or
+      host_system.startswith ('netbsdelf2') or
+      host_system.startswith ('netbsdaout1') or
+      host_system.startswith ('netbsdaout2') or
+      host_system.startswith ('netbsdcoff1') or
+      host_system.startswith ('netbsdcoff2'))
+  gl_cv_func_printf_infinite = false
+elif host_system.startswith ('netbsd')
+  gl_cv_func_printf_infinite = true
+elif host_system.startswith ('beos')
+  gl_cv_func_printf_infinite = true
+elif host_system.startswith ('windows')
+  # Guess yes on MSVC, no on mingw.
+  if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl'
+    gl_cv_func_printf_infinite = true
+  else
+    gl_cv_func_printf_infinite = false
+  endif
+else
+  # If we dont know, assume the worst.
+  gl_cv_func_printf_infinite = false
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double/meson.build	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double/meson.build	(revision 5)
@@ -0,0 +1,202 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports infinite and NaN
+# 'long double' arguments in the %f, %e, %g directives. (ISO C99, POSIX:2001)
+# Result is gl_cv_func_printf_infinite_long_double.
+
+# The user can set or unset the variable gl_printf_safe to indicate
+# that he wishes a safe handling of non-IEEE-754 'long double' values.
+check_print_safe = ''
+if get_variable ('gl_printf_safe', false)
+  check_print_safe = '''
+#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+/* Representation of an 80-bit 'long double' as an initializer for a sequence
+   of 'unsigned int' words.  */
+# ifdef WORDS_BIGENDIAN
+#  define LDBL80_WORDS(exponent,manthi,mantlo) \
+     { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
+       ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16),   \
+       (unsigned int) (mantlo) << 16                                        \
+     }
+# else
+#  define LDBL80_WORDS(exponent,manthi,mantlo) \
+     { mantlo, manthi, exponent }
+# endif
+  { /* Quiet NaN.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+    if (sprintf (buf, "%Le", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+    if (sprintf (buf, "%Lg", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+  }
+  {
+    /* Signalling NaN.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+    if (sprintf (buf, "%Le", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+    if (sprintf (buf, "%Lg", x.value) < 0
+        || !strisnan (buf, 0, strlen (buf)))
+      result |= 2;
+  }
+  { /* Pseudo-NaN.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) <= 0)
+      result |= 4;
+    if (sprintf (buf, "%Le", x.value) <= 0)
+      result |= 4;
+    if (sprintf (buf, "%Lg", x.value) <= 0)
+      result |= 4;
+  }
+  { /* Pseudo-Infinity.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) <= 0)
+      result |= 8;
+    if (sprintf (buf, "%Le", x.value) <= 0)
+      result |= 8;
+    if (sprintf (buf, "%Lg", x.value) <= 0)
+      result |= 8;
+  }
+  { /* Pseudo-Zero.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) <= 0)
+      result |= 16;
+    if (sprintf (buf, "%Le", x.value) <= 0)
+      result |= 16;
+    if (sprintf (buf, "%Lg", x.value) <= 0)
+      result |= 16;
+  }
+  { /* Unnormalized number.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) <= 0)
+      result |= 32;
+    if (sprintf (buf, "%Le", x.value) <= 0)
+      result |= 32;
+    if (sprintf (buf, "%Lg", x.value) <= 0)
+      result |= 32;
+  }
+  { /* Pseudo-Denormal.  */
+    static union { unsigned int word[4]; long double value; } x =
+      { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
+    if (sprintf (buf, "%Lf", x.value) <= 0)
+      result |= 64;
+    if (sprintf (buf, "%Le", x.value) <= 0)
+      result |= 64;
+    if (sprintf (buf, "%Lg", x.value) <= 0)
+      result |= 64;
+  }
+#endif
+  '''
+endif
+
+printf_infinite_long_double_test = '''
+#include <float.h>
+#include <stdio.h>
+#include <string.h>
+static int
+strisnan (const char *string, size_t start_index, size_t end_index)
+{
+  if (start_index < end_index)
+    {
+      if (string[start_index] == '-')
+        start_index++;
+      if (start_index + 3 <= end_index
+          && memcmp (string + start_index, "nan", 3) == 0)
+        {
+          start_index += 3;
+          if (start_index == end_index
+              || (string[start_index] == '(' && string[end_index - 1] == ')'))
+            return 1;
+        }
+    }
+  return 0;
+}
+static char buf[10000];
+static long double zeroL = 0.0L;
+int main ()
+{
+  int result = 0;
+  nocrash_init();
+  if (sprintf (buf, "%Lf", 1.0L / zeroL) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Lf", -1.0L / zeroL) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Lf", zeroL / zeroL) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 1;
+  if (sprintf (buf, "%Le", 1.0L / zeroL) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Le", -1.0L / zeroL) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Le", zeroL / zeroL) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 1;
+  if (sprintf (buf, "%Lg", 1.0L / zeroL) < 0
+      || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Lg", -1.0L / zeroL) < 0
+      || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+    result |= 1;
+  if (sprintf (buf, "%Lg", zeroL / zeroL) < 0
+      || !strisnan (buf, 0, strlen (buf)))
+    result |= 1;
+''' + check_print_safe + '''
+  return result;
+}
+'''
+
+if gl_cv_func_printf_long_double
+  if host_machine.cpu_family() == 'x86_64'
+    gl_cv_func_printf_infinite_long_double = false
+  else
+    if host_system in ['linux', 'android']
+      gl_cv_func_printf_infinite_long_double = true
+    elif (host_system.startswith ('freebsd1') or
+          host_system.startswith ('freebsd2') or
+          host_system.startswith ('freebsd3') or
+          host_system.startswith ('freebsd4') or
+          host_system.startswith ('freebsd5'))
+      gl_cv_func_printf_infinite_long_double = false
+    elif (host_system.startswith ('freebsd') or
+          host_system.startswith ('kfreebsd'))
+      gl_cv_func_printf_infinite_long_double = true
+    elif (host_system.startswith ('hpux7') or
+          host_system.startswith ('hpux8') or
+          host_system.startswith ('hpux9') or
+          host_system.startswith ('hpux10'))
+      gl_cv_func_printf_infinite = false
+    elif host_system.startswith ('hpux')
+      gl_cv_func_printf_infinite_long_double = true
+    elif host_system == 'windows'
+      # Guess yes on MSVC, no on mingw.
+      if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl'
+        gl_cv_func_printf_infinite_long_double = true
+      else
+        gl_cv_func_printf_infinite_long_double = false
+      endif
+    else
+      gl_cv_func_printf_infinite_long_double = false
+    endif
+  endif
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double/meson.build	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double/meson.build	(revision 5)
@@ -0,0 +1,44 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports 'long double'
+# arguments together with the 'L' size specifier. (ISO C99, POSIX:2001)
+# Result is gl_cv_func_printf_long_double.
+
+printf_long_double_test = '''
+#include <stdio.h>
+#include <string.h>
+static char buf[10000];
+int main ()
+{
+  int result = 0;
+  buf[0] = '\0';
+  if (sprintf (buf, "%Lf %d", 1.75L, 33, 44, 55) < 0
+      || strcmp (buf, "1.750000 33") != 0)
+    result |= 1;
+  buf[0] = '\0';
+  if (sprintf (buf, "%Le %d", 1.75L, 33, 44, 55) < 0
+      || strcmp (buf, "1.750000e+00 33") != 0)
+    result |= 2;
+  buf[0] = '\0';
+  if (sprintf (buf, "%Lg %d", 1.75L, 33, 44, 55) < 0
+      || strcmp (buf, "1.75 33") != 0)
+    result |= 4;
+  return result;
+}
+'''
+
+if host_system.startswith ('beos')
+  gl_cv_func_printf_long_double = false
+elif host_system == 'windows'
+  # Guess yes on MSVC, no on mingw.
+  if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl'
+    gl_cv_func_printf_long_double = true
+  else
+    gl_cv_func_printf_long_double = false
+  endif
+else
+  gl_cv_func_printf_long_double = true
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision/meson.build	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision/meson.build	(revision 5)
@@ -0,0 +1,48 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports large precisions.
+# On mingw, precisions larger than 512 are treated like 512, in integer,
+# floating-point or pointer output. On Solaris 10/x86, precisions larger
+# than 510 in floating-point output crash the program. On Solaris 10/SPARC,
+# precisions larger than 510 in floating-point output yield wrong results.
+# On AIX 7.1, precisions larger than 998 in floating-point output yield
+# wrong results. On BeOS, precisions larger than 1044 crash the program.
+# Result is gl_cv_func_printf_precision.
+
+printf_precision_test = '''
+#include <stdio.h>
+#include <string.h>
+static char buf[5000];
+int main ()
+{
+  int result = 0;
+#ifdef __BEOS__
+  /* On BeOS, this would crash and show a dialog box.  Avoid the crash.  */
+  return 1;
+#endif
+  if (sprintf (buf, "%.4000d %d", 1, 33, 44) < 4000 + 3)
+    result |= 1;
+  if (sprintf (buf, "%.4000f %d", 1.0, 33, 44) < 4000 + 5)
+    result |= 2;
+  if (sprintf (buf, "%.511f %d", 1.0, 33, 44) < 511 + 5
+      || buf[0] != '1')
+    result |= 4;
+  if (sprintf (buf, "%.999f %d", 1.0, 33, 44) < 999 + 5
+      || buf[0] != '1')
+    result |= 4;
+  return result;
+}
+'''
+
+gl_cv_func_printf_precision = true
+# Guess no only on Solaris, native Windows, and BeOS systems.
+if (host_system == 'windows' or
+    host_system == 'beos' or
+    host_system == 'haiku' or
+    host_system == 'sunos' or 
+    host_system == 'solaris')
+  gl_cv_func_printf_precision = false
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/meson.build	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/meson.build	(revision 5)
@@ -0,0 +1,2513 @@
+project('glib', 'c',
+  version : '2.76.0',
+  # NOTE: See the policy in docs/meson-version.md before changing the Meson dependency
+  meson_version : '>= 0.60.0',
+  default_options : [
+    'buildtype=debugoptimized',
+    'warning_level=3',
+    'c_std=gnu99'
+  ]
+)
+
+cc = meson.get_compiler('c')
+c_standards = {}
+
+foreach std : ['90', '99', '11', '17']
+  arg = (cc.get_id() == 'msvc' ? '/std:' : '-std=') + 'c' + std
+  if cc.has_argument(arg)
+    c_standards += { std: arg }
+  endif
+endforeach
+
+have_cxx = add_languages('cpp', native: false, required: get_option('oss_fuzz').enabled())
+if have_cxx
+  cxx = meson.get_compiler('cpp')
+  cxx_standards = {}
+
+  foreach std : ['98', '03', '11', '14', '17', '20', '2b', 'latest']
+    arg = (cxx.get_id() == 'msvc' ? '/std:' : '-std=') + 'c++' + std
+    if cxx.has_argument(arg)
+      cxx_standards += { std: arg }
+    endif
+  endforeach
+endif
+
+cc_can_run = false
+
+if cc.get_argument_syntax() == 'msvc'
+  # Ignore several spurious warnings for things glib does very commonly
+  # (also for clang-cl)
+  add_project_arguments('/FImsvc_recommended_pragmas.h',language : 'c')
+endif
+
+if cc.get_id() == 'msvc'
+  # Set the input and exec encoding to utf-8, like is the default with GCC
+  add_project_arguments(cc.get_supported_arguments(['/utf-8']), language: 'c')
+  # Disable SAFESEH with MSVC for plugins and libs that use external deps that
+  # are built with MinGW
+  noseh_link_args = ['/SAFESEH:NO']
+else
+  noseh_link_args = []
+  # -mms-bitfields vs -fnative-struct ?
+endif
+
+host_system = host_machine.system()
+
+if host_system == 'darwin'
+  ios_test_code = '''#include <TargetConditionals.h>
+  #if ! TARGET_OS_IPHONE
+  #error "Not iOS/tvOS/watchOS/iPhoneSimulator"
+  #endif'''
+  if cc.compiles(ios_test_code, name : 'building for iOS')
+    host_system = 'ios'
+  endif
+endif
+
+glib_version = meson.project_version()
+glib_api_version = '2.0'
+version_arr = glib_version.split('.')
+major_version = version_arr[0].to_int()
+minor_version = version_arr[1].to_int()
+micro_version = version_arr[2].to_int()
+
+interface_age = minor_version.is_odd() ? 0 : micro_version
+binary_age = 100 * minor_version + micro_version
+
+soversion = 0
+# Maintain compatibility with previous libtool versioning
+# current = minor * 100 + micro
+current = binary_age - interface_age
+library_version = '@0@.@1@.@2@'.format(soversion, current, interface_age)
+darwin_versions = [current + 1, '@0@.@1@'.format(current + 1, interface_age)]
+
+configinc = include_directories('.')
+glibinc = include_directories('glib')
+gobjectinc = include_directories('gobject')
+gmoduleinc = include_directories('gmodule')
+gioinc = include_directories('gio')
+
+glib_prefix = get_option('prefix')
+glib_bindir = join_paths(glib_prefix, get_option('bindir'))
+glib_libdir = join_paths(glib_prefix, get_option('libdir'))
+glib_libexecdir = join_paths(glib_prefix, get_option('libexecdir'))
+glib_datadir = join_paths(glib_prefix, get_option('datadir'))
+glib_pkgdatadir = join_paths(glib_datadir, 'glib-2.0')
+glib_includedir = join_paths(glib_prefix, get_option('includedir'), 'glib-2.0')
+if get_option('gio_module_dir') != ''
+  glib_giomodulesdir = join_paths(glib_prefix, get_option('gio_module_dir'))
+else
+  glib_giomodulesdir = join_paths(glib_libdir, 'gio', 'modules')
+endif
+
+if get_option('multiarch')
+  # For multiarch/multilib distributions, install each architecture's
+  # build of executables used in packaging triggers (like gio-querymodules)
+  # to an architecture-dependent location, with a compatibility symlink
+  # in the PATH.
+  multiarch_bindir = get_option('libdir') / 'glib-2.0'
+  multiarch_libexecdir = multiarch_bindir
+  pkgconfig_multiarch_bindir = '${libdir}/glib-2.0'
+else
+  # For single-architecture distributions, just install them into the PATH
+  # as was traditionally done.
+  multiarch_bindir = get_option('bindir')
+  multiarch_libexecdir = get_option('libexecdir')
+  pkgconfig_multiarch_bindir = '${bindir}'
+endif
+
+glib_pkgconfigreldir = join_paths(glib_libdir, 'pkgconfig')
+
+if get_option('charsetalias_dir') != ''
+  glib_charsetaliasdir = join_paths(glib_prefix, get_option('charsetalias_dir'))
+else
+  glib_charsetaliasdir = glib_libdir
+endif
+
+glib_localstatedir = glib_prefix / get_option('localstatedir')
+
+if get_option('runtime_dir') != ''
+  glib_runstatedir = glib_prefix / get_option('runtime_dir')
+else
+  # While we’d normally prefix directories like this with, for example,
+  # glib_localstatedir, `/run` is a bit different in that it’s for runtime state
+  # rather than data files, so it’s typically functionally useless to use a
+  # prefixed version. No other processes will be using it. So we default to the
+  # unprefixed system `/run` directory.
+  glib_runstatedir = '/run'
+endif
+
+installed_tests_metadir = join_paths(glib_datadir, 'installed-tests', meson.project_name())
+installed_tests_execdir = join_paths(glib_libexecdir, 'installed-tests', meson.project_name())
+installed_tests_enabled = get_option('installed_tests')
+installed_tests_template = files('tests/template.test.in')
+installed_tests_template_tap = files('tests/template-tap.test.in')
+
+# Don’t build the tests unless we can run them (either natively, in an exe wrapper, or by installing them for later use)
+build_tests = get_option('tests') and (meson.can_run_host_binaries() or installed_tests_enabled)
+
+common_test_env = [
+  'G_DEBUG=gc-friendly',
+  'G_ENABLE_DIAGNOSTIC=1',
+  'MALLOC_CHECK_=2',
+]
+
+# Note: this may cause the tests output not to be printed when running in
+# verbose mode, see https://github.com/mesonbuild/meson/issues/11185
+# Can be changed it to 'exitcode' if required during development.
+test_protocol = 'tap'
+test_timeout = 30
+test_timeout_slow = 90
+
+add_test_setup('default',
+  is_default: true,
+  exclude_suites: ['flaky', 'failing'],
+  env: common_test_env,
+  timeout_multiplier: 2,
+)
+
+add_test_setup('unstable_tests',
+  env: common_test_env,
+  timeout_multiplier: 2,
+  # Empty test setup, used for having different results set for flaky tests
+  # Sadly we can't use (https://github.com/mesonbuild/meson/issues/10934):
+  #suites: ['flaky', 'unstable']
+)
+
+# Allow the tests to be easily run under valgrind using --setup=valgrind
+valgrind = find_program('valgrind', required: false)
+if valgrind.found()
+  suppression_file = files('tools' / 'glib.supp')
+
+  add_test_setup('valgrind',
+    exclude_suites: [ 'no-valgrind', 'flaky' ],
+    exe_wrapper: [
+      valgrind,
+      '--tool=memcheck',
+      '--error-exitcode=1',
+      '--track-origins=yes',
+      '--leak-check=full',
+      '--leak-resolution=high',
+      '--num-callers=50',
+      '--show-leak-kinds=definite,possible',
+      '--show-error-list=yes',
+      '--suppressions=@0@'.format(meson.project_source_root() /
+        '@0@'.format(suppression_file[0])),
+    ],
+    env: common_test_env,
+    timeout_multiplier: 20,
+  )
+endif
+
+add_project_arguments('-D_GNU_SOURCE', language: 'c')
+
+if host_system == 'qnx'
+  add_project_arguments('-D_QNX_SOURCE', language: 'c')
+endif
+
+# Disable strict aliasing;
+# see https://bugzilla.gnome.org/show_bug.cgi?id=791622
+if cc.has_argument('-fno-strict-aliasing')
+  add_project_arguments('-fno-strict-aliasing', language: 'c')
+endif
+
+# dummy/empty dependency() object to declare fallbacks and simpler dependencies
+not_found = dependency('', required: false)
+
+########################
+# Configuration begins #
+########################
+glib_conf = configuration_data()
+glibconfig_conf = configuration_data()
+
+# accumulated list of defines as we check for them, so we can easily
+# use them later in test programs (autoconf does this automatically)
+glib_conf_prefix = ''
+
+glib_conf.set('GLIB_MAJOR_VERSION', major_version)
+glib_conf.set('GLIB_MINOR_VERSION', minor_version)
+glib_conf.set('GLIB_MICRO_VERSION', micro_version)
+glib_conf.set('GLIB_INTERFACE_AGE', interface_age)
+glib_conf.set('GLIB_BINARY_AGE', binary_age)
+glib_conf.set_quoted('GETTEXT_PACKAGE', 'glib20')
+glib_conf.set_quoted('PACKAGE_BUGREPORT', 'https://gitlab.gnome.org/GNOME/glib/issues/new')
+glib_conf.set_quoted('PACKAGE_NAME', 'glib')
+glib_conf.set_quoted('PACKAGE_STRING', 'glib @0@'.format(meson.project_version()))
+glib_conf.set_quoted('PACKAGE_TARNAME', 'glib')
+glib_conf.set_quoted('PACKAGE_URL', '')
+glib_conf.set_quoted('PACKAGE_VERSION', meson.project_version())
+glib_conf.set('ENABLE_NLS', 1)
+
+# used by the .rc.in files
+glibconfig_conf.set('LT_CURRENT_MINUS_AGE', soversion)
+
+glib_conf.set('_GNU_SOURCE', 1)
+
+if host_system in ['windows', 'darwin']
+  # Poll doesn't work on devices on Windows, and macOS's poll() implementation is known to be broken
+  glib_conf.set('BROKEN_POLL', true)
+endif
+
+if host_system == 'windows' and cc.get_id() != 'msvc' and cc.get_id() != 'clang-cl'
+  # FIXME: Ideally we shouldn't depend on this on Windows and should use
+  # 64 bit capable Windows API that also works with MSVC.
+  # The autotools build did set this for mingw and while meson sets it
+  # for gcc/clang by default, it doesn't do so on Windows.
+  glib_conf.set('_FILE_OFFSET_BITS', 64)
+endif
+
+glib_build_shared = false
+glib_build_static = false
+if get_option('default_library') == 'both'
+  glib_build_static = true
+  glib_build_shared = true
+elif get_option('default_library') == 'static'
+  glib_build_static = true
+elif get_option('default_library') == 'shared'
+  glib_build_shared = true
+endif
+
+glib_build_both = glib_build_static and glib_build_shared
+glib_build_static_only = glib_build_static and not glib_build_shared
+glib_build_shared_only = glib_build_shared and not glib_build_static
+
+if glib_build_shared and glib_build_static and (
+  host_system == 'windows' or host_system == 'cygwin')
+  error('On Windows default_library must be "shared" or "static" but not "both"')
+endif
+
+if glib_build_static_only
+  glibconfig_conf.set('GLIB_STATIC_COMPILATION', '1')
+  glibconfig_conf.set('GOBJECT_STATIC_COMPILATION', '1')
+  glibconfig_conf.set('GIO_STATIC_COMPILATION', '1')
+  glibconfig_conf.set('GMODULE_STATIC_COMPILATION', '1')
+  glibconfig_conf.set('G_INTL_STATIC_COMPILATION', '1')
+  glibconfig_conf.set('FFI_STATIC_BUILD', '1')
+endif
+
+# Cygwin glib port maintainers made it clear
+# (via the patches they apply) that they want no
+# part of glib W32 code, therefore we do not define
+# G_PLATFORM_WIN32 for host_system == 'cygwin'.
+# This makes G_PLATFORM_WIN32 a synonym for
+# G_OS_WIN32.
+if host_system == 'windows'
+  glib_os = '''#define G_OS_WIN32
+#define G_PLATFORM_WIN32'''
+elif host_system == 'cygwin'
+  glib_os = '''#define G_OS_UNIX
+#define G_WITH_CYGWIN'''
+else
+  glib_os = '#define G_OS_UNIX'
+endif
+glibconfig_conf.set('glib_os', glib_os)
+
+# We need to know the CRT being used to determine what .lib files we need on
+# Visual Studio for dependencies that don't normally come with pkg-config files
+vs_crt = 'release'
+vs_crt_opt = get_option('b_vscrt')
+if vs_crt_opt in ['mdd', 'mtd']
+  vs_crt = 'debug'
+elif vs_crt_opt == 'from_buildtype'
+  if get_option('buildtype') == 'debug'
+    vs_crt = 'debug'
+  endif
+endif
+
+# Use debug/optimization flags to determine whether to enable debug or disable
+# cast checks. We have a non-production (debug) build if debug is true and if
+# optimization is 0 or g; otherwise, we have a production build.
+glib_debug_cflags = []
+glib_debug = get_option('glib_debug')
+if (glib_debug.enabled() or (
+    glib_debug.auto() and get_option('debug') and get_option('optimization') in [ '0', 'g' ]))
+  glib_debug_cflags += ['-DG_ENABLE_DEBUG']
+  message('Enabling various debug infrastructure')
+else
+  glib_debug_cflags += ['-DG_DISABLE_CAST_CHECKS']
+  message('Disabling cast checks')
+endif
+
+if not get_option('glib_assert')
+  glib_debug_cflags += ['-DG_DISABLE_ASSERT']
+  message('Disabling GLib asserts')
+endif
+
+if not get_option('glib_checks')
+  glib_debug_cflags += ['-DG_DISABLE_CHECKS']
+  message('Disabling GLib checks')
+endif
+
+add_project_arguments(glib_debug_cflags, language: 'c')
+
+# check for header files
+
+headers = [
+  'alloca.h',
+  'afunix.h',
+  'crt_externs.h',
+  'dirent.h', # MSC does not come with this by default
+  'float.h',
+  'fstab.h',
+  'grp.h',
+  'inttypes.h',
+  'limits.h',
+  'locale.h',
+  'mach/mach_time.h',
+  'memory.h',
+  'mntent.h',
+  'poll.h',
+  'pwd.h',
+  'sched.h',
+  'spawn.h',
+  'stdatomic.h',
+  'stdint.h',
+  'stdlib.h',
+  'string.h',
+  'strings.h',
+  'sys/auxv.h',
+  'sys/event.h',
+  'sys/filio.h',
+  'sys/inotify.h',
+  'sys/mkdev.h',
+  'sys/mntctl.h',
+  'sys/mnttab.h',
+  'sys/mount.h',
+  'sys/param.h',
+  'sys/resource.h',
+  'sys/select.h',
+  'sys/statfs.h',
+  'sys/stat.h',
+  'sys/statvfs.h',
+  'sys/sysctl.h',
+  'sys/time.h', # MSC does not come with this by default
+  'sys/times.h',
+  'sys/types.h',
+  'sys/uio.h',
+  'sys/vfs.h',
+  'sys/vfstab.h',
+  'sys/vmount.h',
+  'sys/wait.h',
+  'termios.h',
+  'unistd.h',
+  'values.h',
+  'wchar.h',
+  'xlocale.h',
+]
+
+foreach h : headers
+  if cc.has_header(h)
+    define = 'HAVE_' + h.underscorify().to_upper()
+    glib_conf.set(define, 1)
+    glib_conf_prefix = glib_conf_prefix + '#define @0@ 1\n'.format(define)
+  endif
+endforeach
+
+# FreeBSD includes a malloc.h which always throws compilation error, so we have
+# to use check_header() rather than has_header().
+if cc.check_header('malloc.h')
+  glib_conf.set('HAVE_MALLOC_H', 1)
+  glib_conf_prefix = glib_conf_prefix + '#define HAVE_MALLOC_H 1\n'
+endif
+
+if cc.has_header('linux/netlink.h')
+  glib_conf.set('HAVE_NETLINK', 1)
+endif
+
+# Is statx() supported? Android systems don’t reliably support it as of August 2020.
+statx_code = '''
+  #ifndef _GNU_SOURCE
+  #define _GNU_SOURCE
+  #endif
+  #include <sys/stat.h>
+  #include <fcntl.h>
+  int main (void)
+  {
+    struct statx stat_buf;
+    return statx (AT_FDCWD, "/", AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS | STATX_BTIME, &stat_buf);
+  }
+  '''
+if host_system != 'android' and cc.compiles(statx_code, name : 'statx() test')
+  glib_conf.set('HAVE_STATX', 1)
+endif
+
+if glib_conf.has('HAVE_LOCALE_H')
+  if cc.has_header_symbol('locale.h', 'LC_MESSAGES')
+    glib_conf.set('HAVE_LC_MESSAGES', 1)
+  endif
+endif
+
+struct_stat_blkprefix = '''
+#include <sys/types.h>
+#include <sys/stat.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+'''
+
+struct_members = [
+  [ 'stat', 'st_mtimensec' ],
+  [ 'stat', 'st_mtim.tv_nsec' ],
+  [ 'stat', 'st_atimensec' ],
+  [ 'stat', 'st_atim.tv_nsec' ],
+  [ 'stat', 'st_ctimensec' ],
+  [ 'stat', 'st_ctim.tv_nsec' ],
+  [ 'stat', 'st_birthtime' ],
+  [ 'stat', 'st_birthtimensec' ],
+  [ 'stat', 'st_birthtim' ],
+  [ 'stat', 'st_birthtim.tv_nsec' ],
+  [ 'stat', 'st_blksize', struct_stat_blkprefix ],
+  [ 'stat', 'st_blocks', struct_stat_blkprefix ],
+  [ 'statfs', 'f_fstypename', struct_stat_blkprefix ],
+  [ 'statfs', 'f_bavail', struct_stat_blkprefix ],
+  [ 'dirent', 'd_type', '''#include <sys/types.h>
+                           #include <dirent.h>''' ],
+  [ 'statvfs', 'f_basetype', '#include <sys/statvfs.h>' ],
+  [ 'statvfs', 'f_fstypename', '#include <sys/statvfs.h>' ],
+  [ 'tm', 'tm_gmtoff', '#include <time.h>' ],
+  [ 'tm', '__tm_gmtoff', '#include <time.h>' ],
+]
+
+foreach m : struct_members
+  header_check_prefix = glib_conf_prefix
+  if m.length() == 3
+    header_check_prefix = header_check_prefix + m[2]
+  else
+    header_check_prefix = header_check_prefix + '#include <sys/stat.h>'
+  endif
+  if cc.has_member('struct ' + m[0], m[1], prefix : header_check_prefix)
+    define = 'HAVE_STRUCT_@0@_@1@'.format(m[0].to_upper(), m[1].underscorify().to_upper())
+    glib_conf.set(define, 1)
+    glib_conf_prefix = glib_conf_prefix + '#define @0@ 1\n'.format(define)
+  else
+  endif
+endforeach
+
+# Compiler flags
+if cc.get_id() == 'gcc' or cc.get_id() == 'clang'
+  warning_common_args = [
+    '-Wduplicated-branches',
+    '-Wimplicit-fallthrough',
+    '-Wmisleading-indentation',
+    '-Wmissing-field-initializers',
+    '-Wnonnull',
+    '-Wunused',
+    # Due to maintained deprecated code, we do not want to see unused parameters
+    '-Wno-unused-parameter',
+    # Due to pervasive use of things like GPOINTER_TO_UINT(), we do not support
+    # building with -Wbad-function-cast.
+    '-Wno-cast-function-type',
+    # Due to function casts through (void*) we cannot support -Wpedantic:
+    # https://wiki.gnome.org/Projects/GLib/CompilerRequirements#Function_pointer_conversions.
+    '-Wno-pedantic',
+    # A zero-length format string shouldn't be considered an issue.
+    '-Wno-format-zero-length',
+    # We explicitly require variadic macros
+    '-Wno-variadic-macros',
+    '-Werror=format=2',
+    '-Werror=init-self',
+    '-Werror=missing-include-dirs',
+    '-Werror=pointer-arith',
+    '-Werror=unused-result',
+  ]
+
+  warning_c_args = warning_common_args + [
+    '-Wstrict-prototypes',
+    # Due to pervasive use of things like GPOINTER_TO_UINT(), we do not support
+    # building with -Wbad-function-cast.
+    '-Wno-bad-function-cast',
+    '-Werror=implicit-function-declaration',
+    '-Werror=missing-prototypes',
+    '-Werror=pointer-sign',
+    '-Wno-string-plus-int',
+  ]
+  warning_cxx_args = warning_common_args
+  warning_objc_args = warning_c_args
+  warning_c_link_args = [
+    '-Wl,-z,nodelete',
+  ]
+  if get_option('bsymbolic_functions')
+    warning_c_link_args += ['-Wl,-Bsymbolic-functions']
+  endif
+elif cc.get_id() == 'msvc'
+  warning_c_args = [
+    # If a warning is completely useless and spammy, use '/wdXXXX' to suppress it
+    # If a warning is harmless but hard to fix, use '/woXXXX' so it's shown once
+    # NOTE: Only add warnings here if you are sure they're spurious
+    '/wo4057', # 'operator': 'identifier1' differs in indirection to slightly different base types from 'identifier2'
+    '/wd4068', # unknown pragma
+    '/wo4090', # 'operation': different 'modifier' qualifiers
+    '/wd4100', # 'identifier': unreferenced formal parameter
+    '/wd4116', # unnamed type definition in parentheses
+    '/wo4125', # decimal digit terminates octal escape sequence
+    '/wd4127', # conditional expression is constant
+    '/wd4146', # unary minus operator applied to unsigned type, result still unsigned
+    '/wd4152', # nonstandard extension, function/data pointer conversion in expression
+    '/wd4201', # nonstandard extension used: nameless struct/union
+    '/wd4232', # nonstandard extension used: 'identifier': address of dllimport 'dllimport' is not static, identity not guaranteed
+    '/wo4245', # 'conversion_type': conversion from 'type1' to 'type2', signed/unsigned mismatch
+    '/wo4267', # 'variable': conversion from 'size_t' to 'type', possible loss of data
+    '/wd4334', # 'shift_operator': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
+    '/wo4389', # 'operator': signed/unsigned mismatch
+    '/wo4702', # unreachable code
+    '/wd4706', # assignment within conditional expression
+  ]
+
+  warning_cxx_args = []
+  warning_objc_args = []
+  warning_c_link_args = []
+else
+  warning_c_args = []
+  warning_cxx_args = []
+  warning_objc_args = []
+  warning_c_link_args = []
+endif
+
+add_project_arguments(cc.get_supported_arguments(warning_c_args), language: 'c')
+if have_cxx
+  add_project_arguments(cxx.get_supported_arguments(warning_cxx_args), language: 'cpp')
+endif
+
+# FIXME: We cannot build some of the GResource tests with -z nodelete, which
+# means we cannot use that flag in add_project_link_arguments(), and must add
+# it to the relevant targets manually. We do the same with -Bsymbolic-functions
+# because that is what the autotools build did.
+# See https://github.com/mesonbuild/meson/pull/3520 for a way to eventually
+# improve this.
+glib_link_flags = cc.get_supported_link_arguments(warning_c_link_args)
+
+# Windows SDK requirements and checks
+if host_system == 'windows'
+  # Check whether we're building for UWP apps
+  code = '''
+  #include <windows.h>
+  #if !(WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP))
+  #error "Not building for UWP"
+  #endif'''
+  if cc.compiles(code, name : 'building for UWP')
+    glib_conf.set('G_WINAPI_ONLY_APP', true)
+    # We require Windows 10+ on WinRT
+    glib_conf.set('_WIN32_WINNT', '0x0A00')
+    uwp_gio_deps = [cc.find_library('shcore'),
+                    cc.find_library('runtimeobject')]
+  else
+    # We require Windows 7+ on Win32
+    glib_conf.set('_WIN32_WINNT', '0x0601')
+    uwp_gio_deps = []
+  endif
+endif
+
+functions = [
+  'accept4',
+  'close_range',
+  'endmntent',
+  'endservent',
+  'epoll_create',
+  'fallocate',
+  'fchmod',
+  'fchown',
+  'fdwalk',
+  'free_aligned_sized',
+  'free_sized',
+  'fsync',
+  'getauxval',
+  'getc_unlocked',
+  'getfsstat',
+  'getgrgid_r',
+  'getmntent_r',
+  'getpwuid_r',
+  'getresuid',
+  'getvfsstat',
+  'gmtime_r',
+  'hasmntopt',
+  'inotify_init1',
+  'issetugid',
+  'kevent',
+  'kqueue',
+  'lchmod',
+  'lchown',
+  'link',
+  'localtime_r',
+  'lstat',
+  'mbrtowc',
+  'memalign',
+  'mmap',
+  'newlocale',
+  'pipe2',
+  'poll',
+  'prlimit',
+  'readlink',
+  'recvmmsg',
+  'sendmmsg',
+  'setenv',
+  'setmntent',
+  'strerror_r',
+  'strnlen',
+  'strsignal',
+  'strtod_l',
+  'strtoll_l',
+  'strtoull_l',
+  'symlink',
+  'timegm',
+  'unsetenv',
+  'uselocale',
+  'utimes',
+  'utimensat',
+  'valloc',
+  'vasprintf',
+  'vsnprintf',
+  'wcrtomb',
+  'wcslen',
+  'wcsnlen',
+  'sysctlbyname',
+]
+
+# _NSGetEnviron is available on iOS too, but its usage gets apps rejected from
+# the app store since it's considered 'private API'
+if host_system == 'darwin'
+  functions += ['_NSGetEnviron']
+endif
+
+if glib_conf.has('HAVE_SYS_STATVFS_H')
+  functions += ['statvfs']
+else
+  have_func_statvfs = false
+endif
+if glib_conf.has('HAVE_SYS_STATFS_H') or glib_conf.has('HAVE_SYS_MOUNT_H')
+  functions += ['statfs']
+else
+  have_func_statfs = false
+endif
+
+if host_system == 'windows'
+  iphlpapi_dep = cc.find_library('iphlpapi')
+  iphlpapi_funcs = ['if_nametoindex', 'if_indextoname']
+  foreach ifunc : iphlpapi_funcs
+    iphl_prefix =  '''#define _WIN32_WINNT @0@
+      #include <winsock2.h>
+      #include <iphlpapi.h>'''.format(glib_conf.get('_WIN32_WINNT'))
+    if cc.has_function(ifunc,
+                       prefix : iphl_prefix,
+                       dependencies : iphlpapi_dep)
+      idefine = 'HAVE_' + ifunc.underscorify().to_upper()
+      glib_conf.set(idefine, 1)
+      glib_conf_prefix = glib_conf_prefix + '#define @0@ 1\n'.format(idefine)
+      set_variable('have_func_' + ifunc, true)
+    else
+      set_variable('have_func_' + ifunc, false)
+    endif
+  endforeach
+else
+  functions += ['if_indextoname', 'if_nametoindex']
+endif
+
+# AIX splice is something else
+if host_system != 'aix'
+  functions += ['splice']
+endif
+
+foreach f : functions
+  if cc.has_function(f)
+    define = 'HAVE_' + f.underscorify().to_upper()
+    glib_conf.set(define, 1)
+    glib_conf_prefix = glib_conf_prefix + '#define @0@ 1\n'.format(define)
+    set_variable('have_func_' + f, true)
+  else
+    set_variable('have_func_' + f, false)
+  endif
+endforeach
+
+# Check that stpcpy() is usable; must use header.
+# See:
+# https://github.com/mesonbuild/meson/issues/5628.
+if cc.has_function('stpcpy', prefix : '#include <string.h>')
+  glib_conf.set('HAVE_STPCPY', 1)
+endif
+
+if cc.has_function('memalign', prefix: '#include <stdlib.h>\n#include <malloc.h>')
+  glib_conf.set('HAVE_MEMALIGN', 1)
+endif
+
+if cc.has_function('_aligned_malloc', prefix: '#include <malloc.h>')
+  glib_conf.set('HAVE__ALIGNED_MALLOC', 1)
+endif
+
+if host_system != 'windows' and cc.has_function('aligned_alloc', prefix: '#include <stdlib.h>')
+  glib_conf.set('HAVE_ALIGNED_ALLOC', 1)
+endif
+
+if host_system != 'windows' and cc.has_function('posix_memalign', prefix: '#include <stdlib.h>')
+  glib_conf.set('HAVE_POSIX_MEMALIGN', 1)
+endif
+
+# Check that posix_spawn() is usable; must use header
+if cc.has_function('posix_spawn', prefix : '#include <spawn.h>')
+  glib_conf.set('HAVE_POSIX_SPAWN', 1)
+endif
+
+# Check whether strerror_r returns char *
+if have_func_strerror_r
+  if cc.compiles('''#define _GNU_SOURCE
+                    #include <string.h>
+                    int func (void) {
+                      char error_string[256];
+                      char *ptr = strerror_r (-2, error_string, 256);
+                      char c = *strerror_r (-2, error_string, 256);
+                      return c != 0 && ptr != (void*) 0L;
+                    }
+                 ''',
+                 name : 'strerror_r() returns char *')
+    glib_conf.set('STRERROR_R_CHAR_P', 1,
+                  description: 'Defined if strerror_r returns char *')
+  endif
+endif
+
+# Special-case these functions that have alternative names on Windows/MSVC
+if cc.has_function('snprintf') or cc.has_header_symbol('stdio.h', 'snprintf')
+  glib_conf.set('HAVE_SNPRINTF', 1)
+  glib_conf_prefix = glib_conf_prefix + '#define HAVE_SNPRINTF 1\n'
+elif cc.has_function('_snprintf') or cc.has_header_symbol('stdio.h', '_snprintf')
+  hack_define = '1\n#define snprintf _snprintf'
+  glib_conf.set('HAVE_SNPRINTF', hack_define)
+  glib_conf_prefix = glib_conf_prefix + '#define HAVE_SNPRINTF ' + hack_define
+endif
+
+if cc.has_function('strcasecmp', prefix: '#include <strings.h>')
+  glib_conf.set('HAVE_STRCASECMP', 1)
+  glib_conf_prefix = glib_conf_prefix + '#define HAVE_STRCASECMP 1\n'
+elif cc.has_function('_stricmp')
+  hack_define = '1\n#define strcasecmp _stricmp'
+  glib_conf.set('HAVE_STRCASECMP', hack_define)
+  glib_conf_prefix = glib_conf_prefix + '#define HAVE_STRCASECMP ' + hack_define
+endif
+
+if cc.has_function('strncasecmp', prefix: '#include <strings.h>')
+  glib_conf.set('HAVE_STRNCASECMP', 1)
+  glib_conf_prefix = glib_conf_prefix + '#define HAVE_STRNCASECMP 1\n'
+elif cc.has_function('_strnicmp')
+  hack_define = '1\n#define strncasecmp _strnicmp'
+  glib_conf.set('HAVE_STRNCASECMP', hack_define)
+  glib_conf_prefix = glib_conf_prefix + '#define HAVE_STRNCASECMP ' + hack_define
+endif
+
+if cc.has_header_symbol('sys/sysmacros.h', 'major')
+  glib_conf.set('MAJOR_IN_SYSMACROS', 1)
+elif cc.has_header_symbol('sys/mkdev.h', 'major')
+  glib_conf.set('MAJOR_IN_MKDEV', 1)
+elif cc.has_header_symbol('sys/types.h', 'major')
+  glib_conf.set('MAJOR_IN_TYPES', 1)
+endif
+
+if cc.has_header_symbol('dlfcn.h', 'RTLD_LAZY')
+  glib_conf.set('HAVE_RTLD_LAZY', 1)
+endif
+
+if cc.has_header_symbol('dlfcn.h', 'RTLD_NOW')
+  glib_conf.set('HAVE_RTLD_NOW', 1)
+endif
+
+if cc.has_header_symbol('dlfcn.h', 'RTLD_GLOBAL')
+  glib_conf.set('HAVE_RTLD_GLOBAL', 1)
+endif
+
+have_rtld_next = false
+if cc.has_header_symbol('dlfcn.h', 'RTLD_NEXT', args: '-D_GNU_SOURCE')
+  have_rtld_next = true
+  glib_conf.set('HAVE_RTLD_NEXT', 1)
+endif
+
+# Check whether to use statfs or statvfs
+# Some systems have both statfs and statvfs, pick the most "native" for these
+if have_func_statfs and have_func_statvfs
+  # on solaris and irix, statfs doesn't even have the f_bavail field
+  if not glib_conf.has('HAVE_STRUCT_STATFS_F_BAVAIL')
+    have_func_statfs = false
+  else
+    # at least on linux, statfs is the actual syscall
+    have_func_statvfs = false
+  endif
+endif
+if have_func_statfs
+  glib_conf.set('USE_STATFS', 1)
+  stat_func_to_use = 'statfs'
+elif have_func_statvfs
+  glib_conf.set('USE_STATVFS', 1)
+  stat_func_to_use = 'statvfs'
+else
+  stat_func_to_use = 'neither'
+endif
+message('Checking whether to use statfs or statvfs .. ' + stat_func_to_use)
+
+if host_system == 'linux'
+  if cc.has_function('mkostemp',
+                     prefix: '''#define _GNU_SOURCE
+                                #include <stdlib.h>''')
+    glib_conf.set('HAVE_MKOSTEMP', 1)
+  endif
+endif
+
+glib_have_os_x_9_or_later = false
+glib_have_carbon = false
+glib_have_cocoa = false
+if host_system == 'darwin'
+  add_languages('objc', native: false, required: true)
+  objcc = meson.get_compiler('objc')
+
+  add_project_arguments(objcc.get_supported_arguments(warning_objc_args), language: 'objc')
+
+  # Mac OS X Carbon support
+  glib_have_carbon = objcc.compiles('''#include <Carbon/Carbon.h>
+                                       #include <CoreServices/CoreServices.h>''',
+                                    name : 'Mac OS X Carbon support')
+
+  if glib_have_carbon
+    glib_conf.set('HAVE_CARBON', true)
+    glib_have_os_x_9_or_later = objcc.compiles('''#include <AvailabilityMacros.h>
+                                                  #if MAC_OS_X_VERSION_MIN_REQUIRED < 1090
+                                                  #error Compiling for minimum OS X version before 10.9
+                                                  #endif''',
+                                               name : 'OS X 9 or later')
+  endif
+
+  # Mac OS X Cocoa support
+  glib_have_cocoa = objcc.compiles('''#include <Cocoa/Cocoa.h>
+                                      #ifdef GNUSTEP_BASE_VERSION
+                                      #error "Detected GNUstep, not Cocoa"
+                                      #endif''',
+                                   name : 'Mac OS X Cocoa support')
+
+  if glib_have_cocoa
+    glib_conf.set('HAVE_COCOA', true)
+  endif
+endif
+
+if host_system == 'qnx'
+  glib_conf.set('HAVE_QNX', 1)
+endif
+
+# Check for futex(2)
+if cc.compiles('''#include <linux/futex.h>
+               #include <sys/syscall.h>
+               #include <unistd.h>
+               int main (int argc, char ** argv) {
+                 syscall (__NR_futex, NULL, FUTEX_WAKE, FUTEX_WAIT);
+                 return 0;
+               }''', name : 'futex(2) system call')
+  glib_conf.set('HAVE_FUTEX', 1)
+endif
+if cc.compiles('''#include <linux/futex.h>
+               #include <sys/syscall.h>
+               #include <unistd.h>
+               int main (int argc, char ** argv) {
+                 syscall (__NR_futex_time64, NULL, FUTEX_WAKE, FUTEX_WAIT);
+                 return 0;
+               }''', name : 'futex(2) system call')
+  glib_conf.set('HAVE_FUTEX_TIME64', 1)
+endif
+
+# Check for eventfd(2)
+if cc.links('''#include <sys/eventfd.h>
+               #include <unistd.h>
+               int main (int argc, char ** argv) {
+                 eventfd (0, EFD_CLOEXEC);
+                 return 0;
+               }''', name : 'eventfd(2) system call')
+  glib_conf.set('HAVE_EVENTFD', 1)
+endif
+
+# Check for pidfd_open(2)
+if cc.links('''#include <sys/syscall.h>
+               #include <sys/wait.h>
+               #include <linux/wait.h>
+               #include <unistd.h>
+               int main (int argc, char ** argv) {
+                 siginfo_t child_info = { 0, };
+                 syscall (SYS_pidfd_open, 0, 0);
+                 waitid (P_PIDFD, 0, &child_info, WEXITED | WNOHANG);
+                 return 0;
+               }''', name : 'pidfd_open(2) system call')
+  glib_conf.set('HAVE_PIDFD', 1)
+endif
+
+# Check for __uint128_t (gcc) by checking for 128-bit division
+uint128_t_src = '''int main() {
+static __uint128_t v1 = 100;
+static __uint128_t v2 = 10;
+static __uint128_t u;
+u = v1 / v2;
+}'''
+if cc.compiles(uint128_t_src, name : '__uint128_t available')
+  glib_conf.set('HAVE_UINT128_T', 1)
+endif
+
+clock_gettime_test_code = '''
+  #include <time.h>
+  struct timespec t;
+  int main (int argc, char ** argv) {
+    return clock_gettime(CLOCK_REALTIME, &t);
+  }'''
+librt = []
+if cc.links(clock_gettime_test_code, name : 'clock_gettime')
+  glib_conf.set('HAVE_CLOCK_GETTIME', 1)
+elif cc.links(clock_gettime_test_code, args : '-lrt', name : 'clock_gettime in librt')
+  glib_conf.set('HAVE_CLOCK_GETTIME', 1)
+  librt = cc.find_library('rt')
+endif
+
+dlopen_dlsym_test_code = '''
+#include <dlfcn.h>
+#include <stdio.h>
+int r;
+int glib_underscore_test (void) { return 42; }
+int main (int argc, char ** argv) {
+  void *f1 = (void*)0, *f2 = (void*)0, *handle;
+  handle = dlopen ((void*)0, 0);
+  if (handle) {
+    f1 = dlsym (handle, "glib_underscore_test");
+    f2 = dlsym (handle, "_glib_underscore_test");
+  }
+  r = (!f2 || f1) ? puts ("1") : puts ("0");
+  return r > 0 ? 0 : r;
+}'''
+libdl_dep = []
+if cc.links(dlopen_dlsym_test_code, name : 'dlopen() and dlsym() in system libraries')
+  have_dlopen_dlsym = true
+elif cc.links(dlopen_dlsym_test_code, args : '-ldl', name : 'dlopen() and dlsym() in libdl')
+  have_dlopen_dlsym = true
+  libdl_dep = cc.find_library('dl')
+else
+  have_dlopen_dlsym = false
+endif
+
+# if statfs() takes 2 arguments (Posix) or 4 (Solaris)
+if have_func_statfs
+  if cc.compiles(glib_conf_prefix + '''
+                 #include <unistd.h>
+                        #ifdef HAVE_SYS_PARAM_H
+                        #include <sys/param.h>
+                        #endif
+                        #ifdef HAVE_SYS_VFS_H
+                        #include <sys/vfs.h>
+                        #endif
+                        #ifdef HAVE_SYS_MOUNT_H
+                        #include <sys/mount.h>
+                        #endif
+                        #ifdef HAVE_SYS_STATFS_H
+                        #include <sys/statfs.h>
+                        #endif
+                        void some_func (void) {
+                          struct statfs st;
+                          statfs("/", &st);
+                        }''', name : 'number of arguments to statfs() (n=2)')
+    glib_conf.set('STATFS_ARGS', 2)
+  elif cc.compiles(glib_conf_prefix + '''
+                   #include <unistd.h>
+                          #ifdef HAVE_SYS_PARAM_H
+                          #include <sys/param.h>
+                          #endif
+                          #ifdef HAVE_SYS_VFS_H
+                          #include <sys/vfs.h>
+                          #endif
+                          #ifdef HAVE_SYS_MOUNT_H
+                          #include <sys/mount.h>
+                          #endif
+                          #ifdef HAVE_SYS_STATFS_H
+                          #include <sys/statfs.h>
+                          #endif
+                          void some_func (void) {
+                            struct statfs st;
+                            statfs("/", &st, sizeof (st), 0);
+                          }''', name : 'number of arguments to statfs() (n=4)')
+    glib_conf.set('STATFS_ARGS', 4)
+  else
+    error('Unable to determine number of arguments to statfs()')
+  endif
+endif
+
+# open takes O_DIRECTORY as an option
+#AC_MSG_CHECKING([])
+if cc.compiles('''#include <fcntl.h>
+                  #include <sys/types.h>
+                  #include <sys/stat.h>
+                  void some_func (void) {
+                    open(0, O_DIRECTORY, 0);
+                  }''', name : 'open() option O_DIRECTORY')
+  glib_conf.set('HAVE_OPEN_O_DIRECTORY', 1)
+endif
+
+# fcntl takes F_FULLFSYNC as an option
+# See https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/fsync.2.html
+if cc.compiles('''#include <fcntl.h>
+                  #include <sys/types.h>
+                  #include <sys/stat.h>
+                  void some_func (void) {
+                    fcntl(0, F_FULLFSYNC, 0);
+                  }''', name : 'fcntl() option F_FULLFSYNC')
+  glib_conf.set('HAVE_FCNTL_F_FULLFSYNC', 1)
+endif
+
+# Check whether there is a vsnprintf() function with C99 semantics installed.
+# (similar tests to AC_FUNC_VSNPRINTF_C99)
+# Check whether there is a snprintf() function with C99 semantics installed.
+# (similar tests to AC_FUNC_SNPRINTF_C99)
+# Check whether there is a printf() function with Unix98 semantics installed.
+# (similar tests to AC_FUNC_PRINTF_UNIX98)
+have_good_vsnprintf = false
+have_good_snprintf = false
+have_good_printf = false
+
+if host_system == 'windows' and (cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl')
+  # Unfortunately the Visual Studio 2015+ implementations of C99-style
+  # snprintf and vsnprintf don't seem to be quite good enough.
+  # (Sorry, I don't know exactly what is the problem,
+  # but it is related to floating point formatting and decimal point vs. comma.)
+  # The simple tests in AC_FUNC_VSNPRINTF_C99 and AC_FUNC_SNPRINTF_C99 aren't
+  # rigorous enough to notice, though.
+  glib_conf.set('HAVE_C99_SNPRINTF', false)
+  glib_conf.set('HAVE_C99_VSNPRINTF', false)
+  glib_conf.set('HAVE_UNIX98_PRINTF', false)
+elif not cc_can_run and host_system in ['ios', 'darwin']
+  # All these are true when compiling natively on macOS, so we should use good
+  # defaults when building for iOS and tvOS.
+  glib_conf.set('HAVE_C99_SNPRINTF', true)
+  glib_conf.set('HAVE_C99_VSNPRINTF', true)
+  glib_conf.set('HAVE_UNIX98_PRINTF', true)
+  have_good_vsnprintf = true
+  have_good_snprintf = true
+  have_good_printf = true
+else
+  vsnprintf_c99_test_code = '''
+#include <stdio.h>
+#include <stdarg.h>
+#include <stdlib.h>
+
+int
+doit(char * s, ...)
+{
+  char buffer[32];
+  va_list args;
+  int r;
+
+  va_start(args, s);
+  r = vsnprintf(buffer, 5, s, args);
+  va_end(args);
+
+  if (r != 7)
+    exit(1);
+
+  /* AIX 5.1 and Solaris seems to have a half-baked vsnprintf()
+     implementation. The above will return 7 but if you replace
+     the size of the buffer with 0, it borks! */
+  va_start(args, s);
+  r = vsnprintf(buffer, 0, s, args);
+  va_end(args);
+
+  if (r != 7)
+    exit(1);
+
+  exit(0);
+}
+
+int
+main(void)
+{
+  doit("1234567");
+  exit(1);
+}'''
+
+  if cc_can_run
+    rres = cc.run(vsnprintf_c99_test_code, name : 'C99 vsnprintf')
+    if rres.compiled() and rres.returncode() == 0
+      glib_conf.set('HAVE_C99_VSNPRINTF', 1)
+      have_good_vsnprintf = true
+    endif
+  else
+      have_good_vsnprintf = meson.get_external_property('have_c99_vsnprintf', false)
+      glib_conf.set('HAVE_C99_VSNPRINTF', have_good_vsnprintf)
+  endif
+
+  snprintf_c99_test_code = '''
+#include <stdio.h>
+#include <stdarg.h>
+#include <stdlib.h>
+
+int
+doit()
+{
+  char buffer[32];
+  va_list args;
+  int r;
+
+  r = snprintf(buffer, 5, "1234567");
+
+  if (r != 7)
+    exit(1);
+
+  r = snprintf(buffer, 0, "1234567");
+
+  if (r != 7)
+    exit(1);
+
+  r = snprintf(NULL, 0, "1234567");
+
+  if (r != 7)
+    exit(1);
+
+  exit(0);
+}
+
+int
+main(void)
+{
+  doit();
+  exit(1);
+}'''
+
+  if cc_can_run
+    rres = cc.run(snprintf_c99_test_code, name : 'C99 snprintf')
+    if rres.compiled() and rres.returncode() == 0
+      glib_conf.set('HAVE_C99_SNPRINTF', 1)
+      have_good_snprintf = true
+    endif
+  else
+      have_good_snprintf = meson.get_external_property('have_c99_snprintf', false)
+      glib_conf.set('HAVE_C99_SNPRINTF', have_good_snprintf)
+  endif
+
+  printf_unix98_test_code = '''
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int
+main (void)
+{
+  char buffer[128];
+
+  sprintf (buffer, "%2\$d %3\$d %1\$d", 1, 2, 3);
+  if (strcmp ("2 3 1", buffer) == 0)
+    exit (0);
+  exit (1);
+}'''
+
+  if cc_can_run
+    rres = cc.run(printf_unix98_test_code, name : 'Unix98 printf positional parameters')
+    if rres.compiled() and rres.returncode() == 0
+      glib_conf.set('HAVE_UNIX98_PRINTF', 1)
+      have_good_printf = true
+    endif
+  else
+      have_good_printf = meson.get_external_property('have_unix98_printf', false)
+      glib_conf.set('HAVE_UNIX98_PRINTF', have_good_printf)
+  endif
+endif
+
+if host_system == 'windows'
+  glib_conf.set_quoted('EXEEXT', '.exe')
+else
+  glib_conf.set('EXEEXT', '')
+endif
+
+# Our printf is 'good' only if vsnpintf()/snprintf()/printf() supports C99 well enough
+use_system_printf = have_good_vsnprintf and have_good_snprintf and have_good_printf
+glib_conf.set('USE_SYSTEM_PRINTF', use_system_printf)
+glibconfig_conf.set('GLIB_USING_SYSTEM_PRINTF', use_system_printf)
+
+if not use_system_printf
+  # gnulib has vasprintf so override the previous check
+  glib_conf.set('HAVE_VASPRINTF', 1)
+endif
+
+# Check for nl_langinfo and CODESET
+if cc.links('''#include <langinfo.h>
+               int main (int argc, char ** argv) {
+                 char *codeset = nl_langinfo (CODESET);
+                 return 0;
+               }''', name : 'nl_langinfo and CODESET')
+  glib_conf.set('HAVE_LANGINFO_CODESET', 1)
+  glib_conf.set('HAVE_CODESET', 1)
+endif
+
+# Check for nl_langinfo and LC_TIME parts that are needed in gdatetime.c
+if cc.links('''#include <langinfo.h>
+               int main (int argc, char ** argv) {
+                 char *str;
+                 str = nl_langinfo (PM_STR);
+                 str = nl_langinfo (D_T_FMT);
+                 str = nl_langinfo (D_FMT);
+                 str = nl_langinfo (T_FMT);
+                 str = nl_langinfo (T_FMT_AMPM);
+                 str = nl_langinfo (MON_1);
+                 str = nl_langinfo (ABMON_12);
+                 str = nl_langinfo (DAY_1);
+                 str = nl_langinfo (ABDAY_7);
+                 return 0;
+               }''', name : 'nl_langinfo (PM_STR)')
+  glib_conf.set('HAVE_LANGINFO_TIME', 1)
+endif
+if cc.links('''#include <langinfo.h>
+               int main (int argc, char ** argv) {
+                 char *str;
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT0_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT1_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT2_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT3_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT4_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT5_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT6_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT7_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT8_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT9_MB);
+                 return 0;
+               }''', name : 'nl_langinfo (_NL_CTYPE_OUTDIGITn_MB)')
+  glib_conf.set('HAVE_LANGINFO_OUTDIGIT', 1)
+endif
+
+# Check for nl_langinfo and alternative month names
+if cc.links('''#ifndef _GNU_SOURCE
+              # define _GNU_SOURCE
+              #endif
+              #include <langinfo.h>
+               int main (int argc, char ** argv) {
+                 char *str;
+                 str = nl_langinfo (ALTMON_1);
+                 str = nl_langinfo (ALTMON_2);
+                 str = nl_langinfo (ALTMON_3);
+                 str = nl_langinfo (ALTMON_4);
+                 str = nl_langinfo (ALTMON_5);
+                 str = nl_langinfo (ALTMON_6);
+                 str = nl_langinfo (ALTMON_7);
+                 str = nl_langinfo (ALTMON_8);
+                 str = nl_langinfo (ALTMON_9);
+                 str = nl_langinfo (ALTMON_10);
+                 str = nl_langinfo (ALTMON_11);
+                 str = nl_langinfo (ALTMON_12);
+                 return 0;
+               }''', name : 'nl_langinfo (ALTMON_n)')
+  glib_conf.set('HAVE_LANGINFO_ALTMON', 1)
+endif
+
+# Check for nl_langinfo and abbreviated alternative month names
+if cc.links('''#ifndef _GNU_SOURCE
+              # define _GNU_SOURCE
+              #endif
+              #include <langinfo.h>
+               int main (int argc, char ** argv) {
+                 char *str;
+                 str = nl_langinfo (_NL_ABALTMON_1);
+                 str = nl_langinfo (_NL_ABALTMON_2);
+                 str = nl_langinfo (_NL_ABALTMON_3);
+                 str = nl_langinfo (_NL_ABALTMON_4);
+                 str = nl_langinfo (_NL_ABALTMON_5);
+                 str = nl_langinfo (_NL_ABALTMON_6);
+                 str = nl_langinfo (_NL_ABALTMON_7);
+                 str = nl_langinfo (_NL_ABALTMON_8);
+                 str = nl_langinfo (_NL_ABALTMON_9);
+                 str = nl_langinfo (_NL_ABALTMON_10);
+                 str = nl_langinfo (_NL_ABALTMON_11);
+                 str = nl_langinfo (_NL_ABALTMON_12);
+                 return 0;
+               }''', name : 'nl_langinfo (_NL_ABALTMON_n)')
+  glib_conf.set('HAVE_LANGINFO_ABALTMON', 1)
+endif
+
+# Check for nl_langinfo and _NL_TIME_CODESET
+if cc.links('''#include <langinfo.h>
+               int main (int argc, char ** argv) {
+                 char *codeset = nl_langinfo (_NL_TIME_CODESET);
+                 return 0;
+               }''', name : 'nl_langinfo and _NL_TIME_CODESET')
+  glib_conf.set('HAVE_LANGINFO_TIME_CODESET', 1)
+endif
+
+# Check if C compiler supports the 'signed' keyword
+if not cc.compiles('''signed char x;''', name : 'signed')
+  glib_conf.set('signed', '/* NOOP */')
+endif
+
+# Check if the ptrdiff_t type exists
+if cc.has_header_symbol('stddef.h', 'ptrdiff_t')
+  glib_conf.set('HAVE_PTRDIFF_T', 1)
+endif
+
+# Check for sig_atomic_t type
+if cc.links('''#include <signal.h>
+               #include <sys/types.h>
+               sig_atomic_t val = 42;
+               int main (int argc, char ** argv) {
+                 return val == 42 ? 0 : 1;
+               }''', name : 'sig_atomic_t')
+  glib_conf.set('HAVE_SIG_ATOMIC_T', 1)
+endif
+
+# Check if 'long long' works
+# jm_AC_TYPE_LONG_LONG
+if cc.compiles('''long long ll = 1LL;
+                  int i = 63;
+                  int some_func (void) {
+                    long long llmax = (long long) -1;
+                    return ll << i | ll >> i | llmax / ll | llmax % ll;
+                  }''', name : 'long long')
+  glib_conf.set('HAVE_LONG_LONG', 1)
+  have_long_long = true
+else
+  have_long_long = false
+endif
+
+# Test whether the compiler supports the 'long double' type.
+if cc.compiles('''/* The Stardent Vistra knows sizeof(long double), but does not support it.  */
+                  long double foo = 0.0;
+                  /* On Ultrix 4.3 cc, long double is 4 and double is 8.  */
+                  int array [2*(sizeof(long double) >= sizeof(double)) - 1];''',
+               name : 'long double')
+  glib_conf.set('HAVE_LONG_DOUBLE', 1)
+endif
+
+# Test whether <stddef.h> has the 'wchar_t' type.
+if cc.has_header_symbol('stddef.h', 'wchar_t')
+  glib_conf.set('HAVE_WCHAR_T', 1)
+endif
+
+# Test whether <wchar.h> has the 'wint_t' type.
+if cc.has_header_symbol('wchar.h', 'wint_t')
+  glib_conf.set('HAVE_WINT_T', 1)
+endif
+
+found_uintmax_t = false
+
+# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+# jm_AC_HEADER_INTTYPES_H
+if cc.compiles('''#include <sys/types.h>
+                  #include <inttypes.h>
+                  void some_func (void) {
+                    uintmax_t i = (uintmax_t) -1;
+                  }''', name : 'uintmax_t in inttypes.h')
+  glib_conf.set('HAVE_INTTYPES_H_WITH_UINTMAX', 1)
+  found_uintmax_t = true
+endif
+
+# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+# jm_AC_HEADER_STDINT_H
+if cc.compiles('''#include <sys/types.h>
+                  #include <stdint.h>
+                  void some_func (void) {
+                    uintmax_t i = (uintmax_t) -1;
+                  }''', name : 'uintmax_t in stdint.h')
+  glib_conf.set('HAVE_STDINT_H_WITH_UINTMAX', 1)
+  found_uintmax_t = true
+endif
+
+# Define intmax_t to 'long' or 'long long'
+# if it is not already defined in <stdint.h> or <inttypes.h>.
+# For simplicity, we assume that a header file defines 'intmax_t' if and
+# only if it defines 'uintmax_t'.
+if found_uintmax_t
+  glib_conf.set('HAVE_INTMAX_T', 1)
+elif have_long_long
+  glib_conf.set('intmax_t', 'long long')
+else
+  glib_conf.set('intmax_t', 'long')
+endif
+
+char_size = cc.sizeof('char')
+short_size = cc.sizeof('short')
+int_size = cc.sizeof('int')
+voidp_size = cc.sizeof('void*')
+long_size = cc.sizeof('long')
+if have_long_long
+  long_long_size = cc.sizeof('long long')
+else
+  long_long_size = 0
+endif
+sizet_size = cc.sizeof('size_t')
+if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl'
+  ssizet_size = cc.sizeof('SSIZE_T', prefix : '#include <BaseTsd.h>')
+else
+  ssizet_size = cc.sizeof('ssize_t', prefix : '#include <unistd.h>')
+endif
+
+# Some platforms (Apple) hard-code int64_t to long long instead of
+# using long on 64-bit architectures. This can cause type mismatch
+# warnings when trying to interface with code using the standard
+# library type. Test for the warnings and set gint64 to whichever
+# works.
+if long_long_size == long_size
+  if cc.compiles('''#if defined(_AIX) && !defined(__GNUC__)
+                    #pragma options langlvl=stdc99
+                    #endif
+                    #pragma GCC diagnostic error "-Wincompatible-pointer-types"
+                    #include <stdint.h>
+                    #include <stdio.h>
+                    int main () {
+                      int64_t i1 = 1;
+                      long *i2 = &i1;
+                      return 1;
+                    }''', name : 'int64_t is long')
+    int64_t_typedef = 'long'
+  elif cc.compiles('''#if defined(_AIX) && !defined(__GNUC__)
+                      #pragma options langlvl=stdc99
+                      #endif
+                      #pragma GCC diagnostic error "-Wincompatible-pointer-types"
+                      #include <stdint.h>
+                      #include <stdio.h>
+                      int main () {
+                        int64_t i1 = 1;
+                        long long *i2 = &i1;
+                        return 1;
+                      }''', name : 'int64_t is long long')
+    int64_t_typedef = 'long long'
+  endif
+endif
+
+int64_m = 'll'
+char_align = cc.alignment('char')
+short_align = cc.alignment('short')
+int_align = cc.alignment('int')
+voidp_align = cc.alignment('void*')
+long_align = cc.alignment('long')
+long_long_align = cc.alignment('long long')
+# NOTE: We don't check for size of __int64 because long long is guaranteed to
+# be 64-bit in C99, and it is available on all supported compilers
+sizet_align = cc.alignment('size_t')
+
+glib_conf.set('SIZEOF_CHAR', char_size)
+glib_conf.set('SIZEOF_INT', int_size)
+glib_conf.set('SIZEOF_SHORT', short_size)
+glib_conf.set('SIZEOF_LONG', long_size)
+glib_conf.set('SIZEOF_LONG_LONG', long_long_size)
+glib_conf.set('SIZEOF_SIZE_T', sizet_size)
+glib_conf.set('SIZEOF_SSIZE_T', ssizet_size)
+glib_conf.set('SIZEOF_VOID_P', voidp_size)
+glib_conf.set('SIZEOF_WCHAR_T', cc.sizeof('wchar_t', prefix: '#include <stddef.h>'))
+
+if short_size == 2
+  gint16 = 'short'
+  gint16_modifier='h'
+  gint16_format='hi'
+  guint16_format='hu'
+elif int_size == 2
+  gint16 = 'int'
+  gint16_modifier=''
+  gint16_format='i'
+  guint16_format='u'
+else
+  error('Compiler provides no native 16-bit integer type')
+endif
+glibconfig_conf.set('gint16', gint16)
+glibconfig_conf.set_quoted('gint16_modifier', gint16_modifier)
+glibconfig_conf.set_quoted('gint16_format', gint16_format)
+glibconfig_conf.set_quoted('guint16_format', guint16_format)
+
+if short_size == 4
+  gint32 = 'short'
+  gint32_modifier='h'
+  gint32_format='hi'
+  guint32_format='hu'
+  guint32_align = short_align
+elif int_size == 4
+  gint32 = 'int'
+  gint32_modifier=''
+  gint32_format='i'
+  guint32_format='u'
+  guint32_align = int_align
+elif long_size == 4
+  gint32 = 'long'
+  gint32_modifier='l'
+  gint32_format='li'
+  guint32_format='lu'
+  guint32_align = long_align
+else
+  error('Compiler provides no native 32-bit integer type')
+endif
+glibconfig_conf.set('gint32', gint32)
+glibconfig_conf.set_quoted('gint32_modifier', gint32_modifier)
+glibconfig_conf.set_quoted('gint32_format', gint32_format)
+glibconfig_conf.set_quoted('guint32_format', guint32_format)
+
+if int_size == 8
+  gint64 = 'int'
+  gint64_modifier=''
+  gint64_format='i'
+  guint64_format='u'
+  glib_extension=''
+  gint64_constant='(val)'
+  guint64_constant='(val)'
+  guint64_align = int_align
+elif long_size == 8 and (long_long_size != long_size or int64_t_typedef == 'long')
+  gint64 = 'long'
+  glib_extension=''
+  gint64_modifier='l'
+  gint64_format='li'
+  guint64_format='lu'
+  gint64_constant='(val##L)'
+  guint64_constant='(val##UL)'
+  guint64_align = long_align
+elif long_long_size == 8 and (long_long_size != long_size or int64_t_typedef == 'long long')
+  gint64 = 'long long'
+  glib_extension='G_GNUC_EXTENSION '
+  gint64_modifier=int64_m
+  gint64_format=int64_m + 'i'
+  guint64_format=int64_m + 'u'
+  gint64_constant='(G_GNUC_EXTENSION (val##LL))'
+  guint64_constant='(G_GNUC_EXTENSION (val##ULL))'
+  guint64_align = long_long_align
+else
+  error('Compiler provides no native 64-bit integer type')
+endif
+glibconfig_conf.set('glib_extension', glib_extension)
+glibconfig_conf.set('gint64', gint64)
+glibconfig_conf.set_quoted('gint64_modifier', gint64_modifier)
+glibconfig_conf.set_quoted('gint64_format', gint64_format)
+glibconfig_conf.set_quoted('guint64_format', guint64_format)
+glibconfig_conf.set('gint64_constant', gint64_constant)
+glibconfig_conf.set('guint64_constant', guint64_constant)
+
+if host_system == 'windows'
+  glibconfig_conf.set('g_pid_type', 'void*')
+  glibconfig_conf.set_quoted('g_pid_format', 'p')
+  if host_machine.cpu_family() == 'x86_64'
+    glibconfig_conf.set_quoted('g_pollfd_format', '%#' + int64_m + 'x')
+  else
+    glibconfig_conf.set_quoted('g_pollfd_format', '%#x')
+  endif
+  glibconfig_conf.set('g_dir_separator', '\\\\')
+  glibconfig_conf.set('g_searchpath_separator', ';')
+else
+  glibconfig_conf.set('g_pid_type', 'int')
+  glibconfig_conf.set_quoted('g_pid_format', 'i')
+  glibconfig_conf.set_quoted('g_pollfd_format', '%d')
+  glibconfig_conf.set('g_dir_separator', '/')
+  glibconfig_conf.set('g_searchpath_separator', ':')
+endif
+
+g_sizet_compatibility = {
+  'short': sizet_size == short_size,
+  'int': sizet_size == int_size,
+  'long': sizet_size == long_size,
+  'long long': sizet_size == long_long_size,
+}
+
+# Do separate checks for gcc/clang (and ignore other compilers for now), since
+# we need to explicitly pass -Werror to the compilers.
+# FIXME: https://github.com/mesonbuild/meson/issues/5399
+if cc.get_id() == 'gcc' or cc.get_id() == 'clang'
+  foreach type_name, size_compatibility : g_sizet_compatibility
+    g_sizet_compatibility += { type_name: size_compatibility and
+      cc.compiles(
+        '''#include <stddef.h>
+        size_t f (size_t *i) { return *i + 1; }
+        int main (void) {
+          unsigned ''' + type_name + ''' i = 0;
+          f (&i);
+          return 0;
+        }''',
+        args: ['-Werror'],
+        name : 'GCC size_t typedef is ' + type_name), }
+  endforeach
+endif
+
+if g_sizet_compatibility['short']
+  glibconfig_conf.set('glib_size_type_define', 'short')
+  glibconfig_conf.set_quoted('gsize_modifier', 'h')
+  glibconfig_conf.set_quoted('gssize_modifier', 'h')
+  glibconfig_conf.set_quoted('gsize_format', 'hu')
+  glibconfig_conf.set_quoted('gssize_format', 'hi')
+  glibconfig_conf.set('glib_msize_type', 'SHRT')
+elif g_sizet_compatibility['int']
+  glibconfig_conf.set('glib_size_type_define', 'int')
+  glibconfig_conf.set_quoted('gsize_modifier', '')
+  glibconfig_conf.set_quoted('gssize_modifier', '')
+  glibconfig_conf.set_quoted('gsize_format', 'u')
+  glibconfig_conf.set_quoted('gssize_format', 'i')
+  glibconfig_conf.set('glib_msize_type', 'INT')
+elif g_sizet_compatibility['long']
+  glibconfig_conf.set('glib_size_type_define', 'long')
+  glibconfig_conf.set_quoted('gsize_modifier', 'l')
+  glibconfig_conf.set_quoted('gssize_modifier', 'l')
+  glibconfig_conf.set_quoted('gsize_format', 'lu')
+  glibconfig_conf.set_quoted('gssize_format', 'li')
+  glibconfig_conf.set('glib_msize_type', 'LONG')
+elif g_sizet_compatibility['long long']
+  glibconfig_conf.set('glib_size_type_define', 'long long')
+  glibconfig_conf.set_quoted('gsize_modifier', int64_m)
+  glibconfig_conf.set_quoted('gssize_modifier', int64_m)
+  glibconfig_conf.set_quoted('gsize_format', int64_m + 'u')
+  glibconfig_conf.set_quoted('gssize_format', int64_m + 'i')
+  glibconfig_conf.set('glib_msize_type', 'INT64')
+else
+  error('Could not determine size of size_t.')
+endif
+
+if voidp_size == int_size
+  glibconfig_conf.set('glib_intptr_type_define', 'int')
+  glibconfig_conf.set_quoted('gintptr_modifier', '')
+  glibconfig_conf.set_quoted('gintptr_format', 'i')
+  glibconfig_conf.set_quoted('guintptr_format', 'u')
+  glibconfig_conf.set('glib_gpi_cast', '(gint)')
+  glibconfig_conf.set('glib_gpui_cast', '(guint)')
+elif voidp_size == long_size
+  glibconfig_conf.set('glib_intptr_type_define', 'long')
+  glibconfig_conf.set_quoted('gintptr_modifier', 'l')
+  glibconfig_conf.set_quoted('gintptr_format', 'li')
+  glibconfig_conf.set_quoted('guintptr_format', 'lu')
+  glibconfig_conf.set('glib_gpi_cast', '(glong)')
+  glibconfig_conf.set('glib_gpui_cast', '(gulong)')
+elif voidp_size == long_long_size
+  glibconfig_conf.set('glib_intptr_type_define', 'long long')
+  glibconfig_conf.set_quoted('gintptr_modifier', int64_m)
+  glibconfig_conf.set_quoted('gintptr_format', int64_m + 'i')
+  glibconfig_conf.set_quoted('guintptr_format', int64_m + 'u')
+  glibconfig_conf.set('glib_gpi_cast', '(gint64)')
+  glibconfig_conf.set('glib_gpui_cast', '(guint64)')
+else
+  error('Could not determine size of void *')
+endif
+
+if long_size != 8 and long_long_size != 8 and int_size != 8
+  error('GLib requires a 64-bit type. You might want to consider using the GNU C compiler.')
+endif
+
+glibconfig_conf.set('gintbits', int_size * 8)
+glibconfig_conf.set('glongbits', long_size * 8)
+glibconfig_conf.set('gsizebits', sizet_size * 8)
+glibconfig_conf.set('gssizebits', ssizet_size * 8)
+
+# XXX: https://gitlab.gnome.org/GNOME/glib/issues/1413
+if host_system == 'windows'
+  g_module_suffix = 'dll'
+else
+  g_module_suffix = 'so'
+endif
+glibconfig_conf.set('g_module_suffix', g_module_suffix)
+
+glibconfig_conf.set('GLIB_MAJOR_VERSION', major_version)
+glibconfig_conf.set('GLIB_MINOR_VERSION', minor_version)
+glibconfig_conf.set('GLIB_MICRO_VERSION', micro_version)
+glibconfig_conf.set('GLIB_VERSION', glib_version)
+
+glibconfig_conf.set('glib_void_p', voidp_size)
+glibconfig_conf.set('glib_long', long_size)
+glibconfig_conf.set('glib_size_t', sizet_size)
+glibconfig_conf.set('glib_ssize_t', ssizet_size)
+if host_machine.endian() == 'big'
+  glibconfig_conf.set('g_byte_order', 'G_BIG_ENDIAN')
+  glibconfig_conf.set('g_bs_native', 'BE')
+  glibconfig_conf.set('g_bs_alien', 'LE')
+else
+  glibconfig_conf.set('g_byte_order', 'G_LITTLE_ENDIAN')
+  glibconfig_conf.set('g_bs_native', 'LE')
+  glibconfig_conf.set('g_bs_alien', 'BE')
+endif
+
+# === va_copy checks ===
+
+glib_vacopy = ''
+
+# We check for G_VA_COPY_AS_ARRAY for historical reasons, but we no longer
+# use it: use Standard C va_copy() instead.
+
+va_list_val_copy_prog = '''
+  #include <stdarg.h>
+  #include <stdlib.h>
+  void f (int i, ...) {
+    va_list args1, args2;
+    va_start (args1, i);
+    args2 = args1;
+    if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
+      exit (1);
+    va_end (args1); va_end (args2);
+  }
+  int main() {
+    f (0, 42);
+    return 0;
+  }'''
+
+if cc_can_run
+  rres = cc.run(va_list_val_copy_prog, name : 'va_lists can be copied as values')
+  glib_va_val_copy = rres.compiled() and rres.returncode() == 0
+else
+  glib_va_val_copy = meson.get_external_property('va_val_copy', true)
+endif
+if not glib_va_val_copy
+  glib_vacopy = glib_vacopy + '\n#define G_VA_COPY_AS_ARRAY 1'
+  glib_conf.set('G_VA_COPY_AS_ARRAY', 1)
+endif
+glibconfig_conf.set('glib_vacopy', glib_vacopy)
+
+# check for flavours of varargs macros
+g_have_iso_c_varargs = cc.compiles('''
+  void some_func (void) {
+    int a(int p1, int p2, int p3);
+    #define call_a(...) a(1,__VA_ARGS__)
+    call_a(2,3);
+  }''', name : 'ISO C99 varargs macros in C')
+
+if not g_have_iso_c_varargs
+  error('GLib requires a C compiler with support for C99 __VA_ARG__ in macros.')
+endif
+
+if have_cxx
+  g_have_iso_cxx_varargs = cxx.compiles('''
+    void some_func (void) {
+      int a(int p1, int p2, int p3);
+      #define call_a(...) a(1,__VA_ARGS__)
+      call_a(2,3);
+    }''', name : 'ISO C99 varargs macros in C++')
+
+  if not g_have_iso_cxx_varargs
+    error('GLib requires a C++ compiler with support for C99 __VA_ARG__ in macros.')
+  endif
+endif
+
+g_have_gnuc_varargs = cc.compiles('''
+  void some_func (void) {
+    int a(int p1, int p2, int p3);
+    #define call_a(params...) a(1,params)
+    call_a(2,3);
+  }''', name : 'GNUC varargs macros')
+
+if cc.has_header('alloca.h')
+  glibconfig_conf.set('GLIB_HAVE_ALLOCA_H', true)
+endif
+has_syspoll = cc.has_header('sys/poll.h')
+has_systypes = cc.has_header('sys/types.h')
+if has_syspoll
+  glibconfig_conf.set('GLIB_HAVE_SYS_POLL_H', true)
+endif
+has_winsock2 = cc.has_header('winsock2.h')
+
+if has_syspoll and has_systypes
+  poll_includes = '''
+      #include<sys/poll.h>
+      #include<sys/types.h>'''
+elif has_winsock2
+  poll_includes = '''
+      #define _WIN32_WINNT @0@
+      #include <winsock2.h>'''.format(glib_conf.get('_WIN32_WINNT'))
+else
+  # FIXME?
+  error('FIX POLL* defines')
+endif
+
+poll_defines = [
+  [ 'POLLIN', 'g_pollin', 1 ],
+  [ 'POLLOUT', 'g_pollout', 4 ],
+  [ 'POLLPRI', 'g_pollpri', 2 ],
+  [ 'POLLERR', 'g_pollerr', 8 ],
+  [ 'POLLHUP', 'g_pollhup', 16 ],
+  [ 'POLLNVAL', 'g_pollnval', 32 ],
+]
+
+if has_syspoll and has_systypes
+  foreach d : poll_defines
+    val = cc.compute_int(d[0], prefix: poll_includes)
+    glibconfig_conf.set(d[1], val)
+  endforeach
+elif has_winsock2
+  # Due to a missed bug in configure.ac the poll test
+  # never succeeded on Windows and used some pre-defined
+  # values as a fallback. Keep using them to maintain
+  # ABI compatibility with autotools builds of glibs
+  # and with *any* glib-using code compiled against them,
+  # since these values end up in a public header glibconfig.h.
+  foreach d : poll_defines
+    glibconfig_conf.set(d[1], d[2])
+  endforeach
+endif
+
+# Internet address families
+# FIXME: what about Cygwin (G_WITH_CYGWIN)
+if host_system == 'windows'
+  inet_includes = '''
+      #include <winsock2.h>'''
+else
+  inet_includes = '''
+      #include <sys/types.h>
+      #include <sys/socket.h>'''
+endif
+
+inet_defines = [
+  [ 'AF_UNIX', 'g_af_unix' ],
+  [ 'AF_INET', 'g_af_inet' ],
+  [ 'AF_INET6', 'g_af_inet6' ],
+  [ 'MSG_OOB', 'g_msg_oob' ],
+  [ 'MSG_PEEK', 'g_msg_peek' ],
+  [ 'MSG_DONTROUTE', 'g_msg_dontroute' ],
+]
+foreach d : inet_defines
+  val = cc.compute_int(d[0], prefix: inet_includes)
+  glibconfig_conf.set(d[1], val)
+endforeach
+
+if host_system == 'windows'
+  have_ipv6 = true
+else
+  have_ipv6 = cc.has_type('struct in6_addr', prefix: '#include <netinet/in.h>')
+endif
+glib_conf.set('HAVE_IPV6', have_ipv6)
+
+# We need to decide at configure time if GLib will use real atomic
+# operations ("lock free") or emulated ones with a mutex.  This is
+# because we must put this information in glibconfig.h so we know if
+# it is safe or not to inline using compiler intrinsics directly from
+# the header.
+#
+# We also publish the information via G_ATOMIC_LOCK_FREE in case the
+# user is interested in knowing if they can use the atomic ops across
+# processes.
+#
+# We can currently support the atomic ops natively when building GLib
+# with recent versions of GCC or MSVC.
+#
+# Note that the atomic ops are only available with GCC on x86 when
+# using -march=i486 or higher.  If we detect that the atomic ops are
+# not available but would be available given the right flags, we want
+# to abort and advise the user to fix their CFLAGS.  It's better to do
+# that then to silently fall back on emulated atomic ops just because
+# the user had the wrong build environment.
+atomictest = '''int main() {
+  int atomic = 2;
+  __sync_bool_compare_and_swap (&atomic, 2, 3);
+  return 0;
+}
+'''
+
+atomicdefine = '''
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
+#error "compiler has atomic ops, but doesn't define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4"
+#endif
+'''
+
+# We know that we can always use real ("lock free") atomic operations with MSVC
+if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl' or cc.links(atomictest, name : 'atomic ops')
+  have_atomic_lock_free = true
+  if cc.get_id() == 'gcc' and not cc.compiles(atomicdefine, name : 'atomic ops define')
+    # Old gcc release may provide
+    # __sync_bool_compare_and_swap but doesn't define
+    # __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
+    glib_conf.set('__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4', true)
+  endif
+
+  if cc.get_id() == 'gcc' or cc.get_id() == 'clang'
+    sync_swap_test = '''
+      int main() {
+        int atomic = 2;
+        __sync_swap (&atomic, 2);
+        return 0;
+      }
+    '''
+
+    glib_conf.set('_GLIB_GCC_HAVE_SYNC_SWAP', cc.links(sync_swap_test, name : 'sync swap'))
+  endif
+else
+  have_atomic_lock_free = false
+  if host_machine.cpu_family() == 'x86' and cc.links(atomictest, args : '-march=i486')
+    error('GLib must be built with -march=i486 or later.')
+  endif
+endif
+glibconfig_conf.set('G_ATOMIC_LOCK_FREE', have_atomic_lock_free)
+
+# === Threads ===
+
+if get_option('force_posix_threads')
+  warning('DEPRECATION: Option \'force_posix_threads\' is deprecated and will be removed after GLib 2.72; please file an issue with your use case if you still require it')
+endif
+
+# Determination of thread implementation
+if host_system == 'windows' and not get_option('force_posix_threads')
+  thread_dep = []
+  threads_implementation = 'win32'
+  glibconfig_conf.set('g_threads_impl_def', 'WIN32')
+  glib_conf.set('THREADS_WIN32', 1)
+else
+  thread_dep = dependency('threads')
+  threads_implementation = 'posix'
+  pthread_prefix = '''
+      #ifndef _GNU_SOURCE
+      # define _GNU_SOURCE
+      #endif
+      #include <pthread.h>'''
+  glibconfig_conf.set('g_threads_impl_def', 'POSIX')
+  glib_conf.set('THREADS_POSIX', 1)
+  if cc.has_header_symbol('pthread.h', 'pthread_attr_setstacksize')
+    glib_conf.set('HAVE_PTHREAD_ATTR_SETSTACKSIZE', 1)
+  endif
+  if cc.has_header_symbol('pthread.h', 'pthread_attr_setinheritsched')
+    glib_conf.set('HAVE_PTHREAD_ATTR_SETINHERITSCHED', 1)
+  endif
+  if cc.has_header_symbol('pthread.h', 'pthread_condattr_setclock')
+    glib_conf.set('HAVE_PTHREAD_CONDATTR_SETCLOCK', 1)
+  endif
+  if cc.has_header_symbol('pthread.h', 'pthread_cond_timedwait_relative_np')
+    glib_conf.set('HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP', 1)
+  endif
+  if cc.has_header_symbol('pthread.h', 'pthread_getname_np', prefix : pthread_prefix)
+    glib_conf.set('HAVE_PTHREAD_GETNAME_NP', 1)
+  endif
+
+  # Assume that pthread_setname_np is available in some form; same as configure
+  if cc.links(pthread_prefix + '''
+              int main() {
+                pthread_setname_np("example");
+                return 0;
+              }''',
+              name : 'pthread_setname_np(const char*)',
+              dependencies : thread_dep)
+    # macOS and iOS
+    glib_conf.set('HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID', 1)
+  elif cc.links(pthread_prefix + '''
+                int main() {
+                  pthread_setname_np(pthread_self(), "example");
+                  return 0;
+                }''',
+                name : 'pthread_setname_np(pthread_t, const char*)',
+                dependencies : thread_dep)
+    # Linux, Solaris, etc.
+    glib_conf.set('HAVE_PTHREAD_SETNAME_NP_WITH_TID', 1)
+  elif cc.links(pthread_prefix + '''
+                int main() {
+                  pthread_setname_np(pthread_self(), "%s", "example");
+                  return 0;
+                }''',
+                name : 'pthread_setname_np(pthread_t, const char*, void*)',
+                dependencies : thread_dep)
+    # NetBSD
+    glib_conf.set('HAVE_PTHREAD_SETNAME_NP_WITH_TID_AND_ARG', 1)
+  elif cc.links(pthread_prefix + '''
+                #include <pthread_np.h>
+                int main() {
+                  pthread_set_name_np(pthread_self(), "example");
+                  return 0;
+                }''',
+                name : 'pthread_set_name_np(pthread_t, const char*)',
+                dependencies : thread_dep)
+    # FreeBSD, DragonFlyBSD, OpenBSD, etc.
+    glib_conf.set('HAVE_PTHREAD_SET_NAME_NP', 1)
+  endif
+endif
+
+# FIXME: we should make it print the result and always return 0, so that
+# the output in meson shows up as green
+# volatile is needed here to avoid optimisations in the test
+stack_grows_check_prog = '''
+  volatile int *a = 0, *b = 0;
+  void f (int i) {
+    volatile int x = 5;
+    if (i == 0)
+      b = &x;
+    else
+      f (i - 1);
+  }
+  int main () {
+    volatile int y = 7;
+    a = &y;
+    f (100);
+    return b > a ? 0 : 1;
+  }'''
+
+if cc_can_run
+  rres = cc.run(stack_grows_check_prog, name : 'stack grows check')
+  growing_stack = rres.compiled() and rres.returncode() == 0
+else
+  growing_stack = meson.get_external_property('growing_stack', false)
+endif
+
+glibconfig_conf.set10('G_HAVE_GROWING_STACK', growing_stack)
+
+# Tests for iconv
+#
+# We should never use the MinGW C library's iconv because it may not be
+# available in the actual runtime environment. On Windows, we always use
+# the built-in implementation
+if host_system == 'windows'
+  # We have a #include "win_iconv.c" in gconvert.c on Windows, so we don't need
+  # any external library for it
+  libiconv = []
+else
+  libiconv = dependency('iconv')
+endif
+
+pcre2_req = '>=10.32'
+pcre2 = dependency('libpcre2-8', version: pcre2_req, required: false, allow_fallback: false)
+if not pcre2.found()
+  if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl'
+  # MSVC: Search for the PCRE2 library by the configuration, which corresponds
+  # to the output of CMake builds of PCRE2.  Note that debugoptimized
+  # is really a Release build with .PDB files.
+    if vs_crt == 'debug'
+      pcre2 = cc.find_library('pcre2d-8', required : false)
+    else
+      pcre2 = cc.find_library('pcre2-8', required : false)
+    endif
+  endif
+endif
+
+# Try again with the fallback
+if not pcre2.found()
+  pcre2 = dependency('libpcre2-8', version: pcre2_req, allow_fallback: true)
+  assert(pcre2.type_name() == 'internal')
+  # static flags are automatically enabled by the subproject if it's built
+  # with default_library=static
+  use_pcre2_static_flag = false
+elif host_system == 'windows'
+  pcre2_static = cc.links('''#define PCRE2_STATIC
+                             #define PCRE2_CODE_UNIT_WIDTH 8
+                             #include <pcre2.h>
+                             int main() {
+                               void *p = NULL;
+                               pcre2_code_free(p);
+                               return 0;
+                             }''',
+                         dependencies: pcre2,
+                         name : 'Windows system PCRE2 is a static build')
+  use_pcre2_static_flag = pcre2_static
+else
+  use_pcre2_static_flag = false
+endif
+
+# Import the gvdb sources as a subproject to avoid having the copylib in-tree
+subproject('gvdb')
+gvdb_dep = dependency('gvdb')
+
+libm = cc.find_library('m', required : false)
+libffi_dep = dependency('libffi', version : '>= 3.0.0')
+
+libz_dep = dependency('zlib')
+
+# First check in libc, fallback to libintl, and as last chance build
+# proxy-libintl subproject.
+# FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible
+# implementations. This could be extended if issues are found in some platforms.
+libintl_deps = []
+libintl = dependency('intl', required: false, allow_fallback: false)
+if libintl.found()
+  # libintl supports different threading APIs, which may not
+  # require additional flags, but it defaults to using pthreads if
+  # found. Meson's "threads" dependency does not allow you to
+  # prefer pthreads. We may not be using pthreads for glib itself
+  # either so just link the library to satisfy libintl rather than
+  # also defining the macros with the -pthread flag.
+  #
+  # Meson's builtin dependency lookup as of 0.60.0 doesn't check for
+  # pthread, so we do this manually here.
+  if cc.has_function('ngettext', dependencies : libintl)
+    libintl_deps += [libintl]
+  else
+    libintl_pthread = cc.find_library('pthread', required : false)
+    if libintl_pthread.found() and cc.has_function('ngettext', dependencies : [libintl, libintl_pthread])
+      libintl_deps += [libintl, libintl_pthread]
+    else
+      libintl = disabler()
+    endif
+  endif
+endif
+
+if libintl.found()
+  have_bind_textdomain_codeset = cc.has_function('bind_textdomain_codeset', dependencies: libintl_deps)
+else
+  libintl = dependency('intl', allow_fallback: true)
+  assert(libintl.type_name() == 'internal')
+  libintl_deps = [libintl]
+  have_bind_textdomain_codeset = true  # proxy-libintl supports it
+endif
+
+glib_conf.set('HAVE_BIND_TEXTDOMAIN_CODESET', have_bind_textdomain_codeset)
+
+# We require gettext to always be present
+glib_conf.set('HAVE_DCGETTEXT', 1)
+glib_conf.set('HAVE_GETTEXT', 1)
+
+glib_conf.set_quoted('GLIB_LOCALE_DIR', join_paths(glib_datadir, 'locale'))
+
+glib_conf.set_quoted('GLIB_LOCALSTATEDIR', glib_localstatedir)
+glib_conf.set_quoted('GLIB_RUNSTATEDIR', glib_runstatedir)
+
+# libmount is only used by gio, but we need to fetch the libs to generate the
+# pkg-config file below
+libmount_dep = []
+if host_system == 'linux'
+  libmount_dep = dependency('mount', version : '>=2.23', required : get_option('libmount'))
+  glib_conf.set('HAVE_LIBMOUNT', libmount_dep.found())
+endif
+
+if host_system == 'windows'
+  winsock2 = cc.find_library('ws2_32')
+else
+  winsock2 = not_found
+endif
+
+selinux_dep = []
+if host_system == 'linux'
+  selinux_dep = dependency('libselinux', version: '>=2.2', required: get_option('selinux'))
+
+  glib_conf.set('HAVE_SELINUX', selinux_dep.found())
+endif
+
+xattr_dep = []
+if host_system != 'windows' and get_option('xattr')
+  # either glibc or libattr can provide xattr support
+  # for both of them, we check for getxattr being in
+  # the library and a valid xattr header.
+
+  # try glibc
+  if cc.has_function('getxattr') and cc.has_header('sys/xattr.h')
+    glib_conf.set('HAVE_SYS_XATTR_H', 1)
+    glib_conf_prefix = glib_conf_prefix + '#define @0@ 1\n'.format('HAVE_SYS_XATTR_H')
+  #failure. try libattr
+  elif cc.has_header_symbol('attr/xattr.h', 'getxattr')
+    glib_conf.set('HAVE_ATTR_XATTR_H', 1)
+    glib_conf_prefix = glib_conf_prefix + '#define @0@ 1\n'.format('HAVE_ATTR_XATTR_H')
+    xattr_dep = [cc.find_library('xattr')]
+  else
+    error('No getxattr implementation found in C library or libxattr')
+  endif
+
+  glib_conf.set('HAVE_XATTR', 1)
+  if cc.compiles(glib_conf_prefix + '''
+                 #include <stdio.h>
+                 #ifdef HAVE_SYS_TYPES_H
+                 #include <sys/types.h>
+                 #endif
+                 #ifdef HAVE_SYS_XATTR_H
+                 #include <sys/xattr.h>
+                 #elif HAVE_ATTR_XATTR_H
+                 #include <attr/xattr.h>
+                 #endif
+
+                 int main (void) {
+                   ssize_t len = getxattr("", "", NULL, 0, 0, XATTR_NOFOLLOW);
+                   return len;
+                 }''',
+                 name : 'XATTR_NOFOLLOW')
+    glib_conf.set('HAVE_XATTR_NOFOLLOW', 1)
+  endif
+endif
+
+# If strlcpy is present (BSD and similar), check that it conforms to the BSD
+# specification. Specifically Solaris 8's strlcpy() does not, see
+# https://bugzilla.gnome.org/show_bug.cgi?id=53933 for further context.
+if cc.has_function('strlcpy')
+  if cc_can_run
+    rres = cc.run('''#include <stdlib.h>
+                    #include <string.h>
+                    int main() {
+                      char p[10];
+                      (void) strlcpy (p, "hi", 10);
+                      if (strlcat (p, "bye", 0) != 3)
+                        return 1;
+                      return 0;
+                    }''',
+                  name : 'OpenBSD strlcpy/strlcat')
+    if rres.compiled() and rres.returncode() == 0
+      glib_conf.set('HAVE_STRLCPY', 1)
+    endif
+  elif meson.get_external_property('have_strlcpy', false)
+    glib_conf.set('HAVE_STRLCPY', 1)
+  endif
+endif
+
+cmdline_test_code = '''
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+static int
+__getcmdline (void)
+{
+/* This code is a dumbed-down version of g_file_get_contents() */
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+#define BUFSIZE 1024
+  char result[BUFSIZE];
+  struct stat stat_buf;
+
+  int fd = open ("/proc/self/cmdline", O_RDONLY|O_BINARY);
+  if (fd < 0)
+    exit (1);
+  if (fstat (fd, &stat_buf))
+    exit (1);
+
+  if (stat_buf.st_size > 0 && S_ISREG (stat_buf.st_mode))
+    {
+      if (read (fd, result, BUFSIZE) <= 0)
+        exit (1);
+    }
+  else
+    {
+      FILE *f = fdopen (fd, "r");
+      if (f == NULL)
+        exit (1);
+
+      if (fread (result, 1, BUFSIZE, f) <= 0)
+        exit (1);
+    }
+
+  return 0;
+}
+
+int
+main (void)
+{
+  exit (__getcmdline ());
+}'''
+
+if cc_can_run
+  rres = cc.run(cmdline_test_code, name : '/proc/self/cmdline')
+  have_proc_self_cmdline = rres.compiled() and rres.returncode() == 0
+else
+  have_proc_self_cmdline = meson.get_external_property('have_proc_self_cmdline', false)
+endif
+
+glib_conf.set('HAVE_PROC_SELF_CMDLINE', have_proc_self_cmdline)
+
+python = import('python').find_installation()
+# used for '#!/usr/bin/env <name>'
+python_name = 'python3'
+
+python_version = python.language_version()
+python_version_req = '>=3.5'
+if not python_version.version_compare(python_version_req)
+  error('Requires Python @0@, @1@ found.'.format(python_version_req, python_version))
+endif
+
+# Determine which user environment-dependent files that we want to install
+have_bash = find_program('bash', required : false).found() # For completion scripts
+bash_comp_dep = dependency('bash-completion', version: '>=2.0', required: false)
+have_sh = find_program('sh', required : false).found() # For glib-gettextize
+
+# Some installed tests require a custom environment
+env_program = find_program('env', required: installed_tests_enabled)
+
+# FIXME: How to detect Solaris? https://github.com/mesonbuild/meson/issues/1578
+if host_system == 'sunos'
+  glib_conf.set('_XOPEN_SOURCE_EXTENDED', 1)
+  glib_conf.set('_XOPEN_SOURCE', 2)
+  glib_conf.set('__EXTENSIONS__',1)
+endif
+
+# Sadly Meson does not expose this value:
+# https://github.com/mesonbuild/meson/pull/3460
+if host_system == 'windows'
+  # Autotools explicitly removed --Wl,--export-all-symbols from windows builds,
+  # with no explanation. Do the same here for now but this could be revisited if
+  # if causes issues.
+  export_dynamic_ldflags = []
+elif host_system == 'cygwin'
+  export_dynamic_ldflags = ['-Wl,--export-all-symbols']
+elif host_system in ['darwin', 'ios']
+  export_dynamic_ldflags = []
+elif host_system == 'sunos'
+  export_dynamic_ldflags = []
+else
+  export_dynamic_ldflags = ['-Wl,--export-dynamic']
+endif
+
+win32_cflags = []
+win32_ldflags = []
+if host_system == 'windows' and cc.get_id() != 'msvc' and cc.get_id() != 'clang-cl'
+  # Ensure MSVC-compatible struct packing convention is used when
+  # compiling for Win32 with gcc. It is used for the whole project and exposed
+  # in glib-2.0.pc.
+  win32_cflags = ['-mms-bitfields']
+  add_project_arguments(win32_cflags, language : 'c')
+
+  # Win32 API libs, used only by libglib and exposed in glib-2.0.pc
+  win32_ldflags = ['-lws2_32', '-lole32', '-lwinmm', '-lshlwapi', '-luuid']
+elif host_system == 'cygwin'
+  win32_ldflags = ['-luser32', '-lkernel32']
+endif
+
+# Tracing: dtrace
+want_dtrace = get_option('dtrace')
+enable_dtrace = false
+
+# Since dtrace support is opt-in we just error out if it was requested but
+# is not available. We don't bother with autodetection yet.
+if want_dtrace
+  if glib_have_carbon
+    error('GLib dtrace support not yet compatible with macOS dtrace')
+  endif
+  dtrace = find_program('dtrace', required : true) # error out if not found
+  if not cc.has_header('sys/sdt.h')
+    error('dtrace support needs sys/sdt.h header')
+  endif
+  # FIXME: autotools build also passes -fPIC -DPIC but is it needed in this case?
+  dtrace_obj_gen = generator(dtrace,
+    output : '@BASENAME@.o',
+    arguments : ['-G', '-s', '@INPUT@', '-o', '@OUTPUT@'])
+  dtrace_hdr_gen = generator(python,
+    output : '@BASENAME@.h',
+    arguments : ['-c', '''
+import subprocess, sys
+subprocess.run(sys.argv[1:], check=True)
+output = sys.argv[6]
+with open(output) as f:
+  contents = f.read()
+contents = contents.replace("define STAP_HAS_SEMAPHORES 1",
+  "undef STAP_HAS_SEMAPHORES")
+contents = contents.replace("define _SDT_HAS_SEMAPHORES 1",
+  "undef _SDT_HAS_SEMAPHORES")
+with open(output, "w") as f:
+  f.write(contents)
+''', dtrace.full_path(), '-h', '-s', '@INPUT@', '-o', '@OUTPUT@'])
+  glib_conf.set('HAVE_DTRACE', 1)
+  enable_dtrace = true
+endif
+
+# systemtap
+want_systemtap = get_option('systemtap')
+enable_systemtap = false
+
+if want_systemtap and enable_dtrace
+  tapset_install_dir = get_option('tapset_install_dir')
+  if tapset_install_dir == ''
+    tapset_install_dir = join_paths(get_option('datadir'), 'systemtap/tapset', host_machine.cpu_family())
+  endif
+  stp_cdata = configuration_data()
+  stp_cdata.set('ABS_GLIB_RUNTIME_LIBDIR', glib_libdir)
+  stp_cdata.set('LT_CURRENT', minor_version * 100)
+  stp_cdata.set('LT_REVISION', micro_version)
+  enable_systemtap = true
+endif
+
+pkg = import('pkgconfig')
+windows = import('windows')
+subdir('tools')
+subdir('glib')
+subdir('gobject')
+subdir('gthread')
+subdir('gmodule')
+subdir('gio')
+subdir('fuzzing')
+
+# xgettext is optional (on Windows for instance)
+if find_program('xgettext', required : get_option('nls')).found()
+  subdir('po')
+endif
+
+# Install m4 macros that other projects use
+install_data('m4macros/glib-2.0.m4', 'm4macros/glib-gettext.m4', 'm4macros/gsettings.m4',
+  install_dir : get_option('datadir') / 'aclocal',
+  install_tag : 'devel',
+)
+
+# Check whether we support overriding the invalid parameter handler on Windows for _get_osfhandle(),
+# g_fsync() (i.e. _commit()), etc
+if host_system == 'windows'
+  if cc.has_function('_set_thread_local_invalid_parameter_handler', prefix: '#include <stdlib.h>')
+    glib_conf.set('HAVE__SET_THREAD_LOCAL_INVALID_PARAMETER_HANDLER', 1)
+  endif
+  if cc.has_function('_set_invalid_parameter_handler', prefix: '#include <stdlib.h>')
+    glib_conf.set('HAVE__SET_INVALID_PARAMETER_HANDLER', 1)
+  endif
+  if cc.has_header_symbol('crtdbg.h', '_CrtSetReportMode')
+    glib_conf.set('HAVE__CRT_SET_REPORT_MODE', 1)
+  endif
+endif
+
+configure_file(output : 'config.h', configuration : glib_conf)
+
+if host_system == 'windows'
+  install_headers([ 'msvc_recommended_pragmas.h' ], install_dir : glib_includedir)
+endif
+
+if get_option('man')
+  xsltproc = find_program('xsltproc', required : true)
+  xsltproc_command = [
+    xsltproc,
+    '--nonet',
+    '--stringparam', 'man.output.quietly', '1',
+    '--stringparam', 'funcsynopsis.style', 'ansi',
+    '--stringparam', 'man.th.extra1.suppress', '1',
+    '--stringparam', 'man.authors.section.enabled', '0',
+    '--stringparam', 'man.copyright.section.enabled', '0',
+    '-o', '@OUTPUT@',
+    'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl',
+    '@INPUT@',
+  ]
+  man1_dir = join_paths(glib_prefix, get_option('mandir'), 'man1')
+endif
+
+gnome = import('gnome')
+subdir('docs/reference')
+
+summary({
+  'host cpu' : host_machine.cpu_family(),
+  'host endian' : host_machine.endian(),
+  'host system' : host_system,
+  'C Compiler' : cc.get_id(),
+  'C++ Compiler' : have_cxx ? cxx.get_id() : 'none',
+  'shared build' : glib_build_shared,
+  'static build' : glib_build_static,
+}, section: 'Build environment')
+
+if build_machine.system() != host_system
+  summary({
+    'build cpu' : build_machine.cpu_family(),
+    'build endian' : build_machine.endian(),
+    'build system' : build_machine.system(),
+  }, section: 'Build environment')
+endif
+
+summary({
+  'prefix' : glib_prefix,
+  'bindir' : glib_bindir,
+  'libexecdir' : glib_libexecdir,
+  'pkgdatadir' : glib_pkgdatadir,
+  'datadir' : glib_datadir,
+  'includedir' : glib_includedir,
+  'giomodulesdir' : glib_giomodulesdir,
+  'localstatedir' : glib_localstatedir,
+  'runstatedir' : glib_runstatedir,
+}, section: 'Directories')
+
+if get_option('multiarch')
+  summary({
+    'multiarch bindir' : glib_bindir,
+    'multiarch libexecdir' : glib_libexecdir,
+  }, section: 'Directories')
+endif
+
+if enable_systemtap
+  summary('tapset dir', get_option('tapset_install_dir'), section: 'Directories')
+endif
+
+if host_system == 'linux'
+  summary({
+    'selinux' : selinux_dep.found(),
+    'libmount' : libmount_dep.found(),
+  }, section: 'Options')
+endif
+
+summary({
+  'xattr' : xattr_dep.length() > 0,
+  'man' : get_option('man'),
+  'dtrace' : get_option('dtrace'),
+  'systemtap' : enable_systemtap,
+  'sysprof' : libsysprof_capture_dep.found(),
+  'gtk_doc' : get_option('gtk_doc'),
+  'bsymbolic_functions' : get_option('bsymbolic_functions'),
+  'force_posix_threads' : get_option('force_posix_threads'),
+  'tests' : get_option('tests'),
+  'installed_tests' : get_option('installed_tests'),
+  'nls' : get_option('nls'),
+  'oss_fuzz' : get_option('oss_fuzz'),
+  'glib_debug' : get_option('glib_debug'),
+  'glib_assert' : get_option('glib_assert'),
+  'glib_checks' : get_option('glib_checks'),
+  'libelf' : get_option('libelf'),
+  'multiarch' : get_option('multiarch'),
+}, section: 'Options')
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new	(nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new	(revision 5)

Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch
===================================================================
--- create-2.76.0-force-cross-patch	(nonexistent)
+++ create-2.76.0-force-cross-patch	(revision 5)

Property changes on: create-2.76.0-force-cross-patch
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: patches/README
===================================================================
--- patches/README	(nonexistent)
+++ patches/README	(revision 5)
@@ -0,0 +1,6 @@
+
+/* begin *
+
+   TODO: Leave some comment here.
+
+ * end */
Index: patches
===================================================================
--- patches	(nonexistent)
+++ patches	(revision 5)

Property changes on: patches
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: .
===================================================================
--- .	(nonexistent)
+++ .	(revision 5)

Property changes on: .
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~