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

383 Commits   1 Branch   1 Tag
Index: Makefile
===================================================================
--- Makefile	(nonexistent)
+++ Makefile	(revision 5)
@@ -0,0 +1,13 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+SOURCE_REQUIRES += ALL_DIRS
+
+
+include ../../build-system/core.mk
+
+
+download_clean:
+	@true
+
+.PHONY: download_clean
Index: core/Makefile
===================================================================
--- core/Makefile	(nonexistent)
+++ core/Makefile	(revision 5)
@@ -0,0 +1,13 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+SOURCE_REQUIRES += ALL_DIRS
+
+
+include ../../../build-system/core.mk
+
+
+download_clean:
+	@true
+
+.PHONY: download_clean
Index: core/NetworkManager/Makefile
===================================================================
--- core/NetworkManager/Makefile	(nonexistent)
+++ core/NetworkManager/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/NetworkManager
+
+versions    = 1.31.3
+pkgname     = NetworkManager
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+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
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: core/NetworkManager
===================================================================
--- core/NetworkManager	(nonexistent)
+++ core/NetworkManager	(revision 5)

Property changes on: core/NetworkManager
___________________________________________________________________
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: core/adwaita-icon-theme/Makefile
===================================================================
--- core/adwaita-icon-theme/Makefile	(nonexistent)
+++ core/adwaita-icon-theme/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/adwaita-icon-theme
+
+versions    = 43
+pkgname     = adwaita-icon-theme
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+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
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: core/adwaita-icon-theme
===================================================================
--- core/adwaita-icon-theme	(nonexistent)
+++ core/adwaita-icon-theme	(revision 5)

Property changes on: core/adwaita-icon-theme
___________________________________________________________________
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: core/at-spi2-core/Makefile
===================================================================
--- core/at-spi2-core/Makefile	(nonexistent)
+++ core/at-spi2-core/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/at-spi2-core
+
+versions    = 2.47.1
+pkgname     = at-spi2-core
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+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
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: core/at-spi2-core
===================================================================
--- core/at-spi2-core	(nonexistent)
+++ core/at-spi2-core	(revision 5)

Property changes on: core/at-spi2-core
___________________________________________________________________
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: core/dconf/Makefile
===================================================================
--- core/dconf/Makefile	(nonexistent)
+++ core/dconf/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/dconf
+
+versions    = 0.40.0
+pkgname     = dconf
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+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
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: core/dconf
===================================================================
--- core/dconf	(nonexistent)
+++ core/dconf	(revision 5)

Property changes on: core/dconf
___________________________________________________________________
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: core/esound/Makefile
===================================================================
--- core/esound/Makefile	(nonexistent)
+++ core/esound/Makefile	(revision 5)
@@ -0,0 +1,56 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/esound
+
+versions    = 0.2.41
+pkgname     = esound
+suffix      = tar.bz2
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+patches     = $(CURDIR)/patches/esound-0.2.41-book1.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-0.2.41-book1-patch ; ./create.patch.sh ) ; \
+	 echo -e "\n"
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s) $(patches)
Index: core/esound/create-0.2.41-book1-patch/create.patch.sh
===================================================================
--- core/esound/create-0.2.41-book1-patch/create.patch.sh	(nonexistent)
+++ core/esound/create-0.2.41-book1-patch/create.patch.sh	(revision 5)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=0.2.41
+
+tar --files-from=file.list -xjvf ../esound-$VERSION.tar.bz2
+mv esound-$VERSION esound-$VERSION-orig
+
+cp -rf ./esound-$VERSION-new ./esound-$VERSION
+
+diff --unified -Nr  esound-$VERSION-orig  esound-$VERSION > esound-$VERSION-book1.patch
+
+mv esound-$VERSION-book1.patch ../patches
+
+rm -rf ./esound-$VERSION
+rm -rf ./esound-$VERSION-orig

Property changes on: core/esound/create-0.2.41-book1-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: core/esound/create-0.2.41-book1-patch/esound-0.2.41-new/docs/Makefile.am
===================================================================
--- core/esound/create-0.2.41-book1-patch/esound-0.2.41-new/docs/Makefile.am	(nonexistent)
+++ core/esound/create-0.2.41-book1-patch/esound-0.2.41-new/docs/Makefile.am	(revision 5)
@@ -0,0 +1,48 @@
+if BUILD_ESDDSP
+ESDDSP_MAN = esddsp.1
+endif
+
+man_MANS = \
+	esd.1 esdcat.1 esd-config.1 esdctl.1 $(ESDDSP_MAN) \
+	esdfilt.1 esdloop.1 esdmon.1 esdplay.1 esdrec.1 esdsample.1 
+
+EXTRA_DIST = \
+	esd.1.in esdcat.1.in esd-config.1.in esdctl.1.in \
+	esddsp.1.in esdfilt.1.in esdloop.1.in esdmon.1.in \
+	esdplay.1.in esdrec.1.in esdsample.1.in \
+	esound.sgml
+
+CLEANFILES = esound.dvi esound.ps esound.tex esound.aux esound.log
+
+if HAVE_JW
+noinst_DATA = html/book1.html
+else
+noinst_DATA = 
+endif
+
+clean-local:
+	rm -rf html
+
+if HAVE_JW
+html/book1.html: esound.sgml
+	$(JW) -f docbook -b html -o html $(srcdir)/esound.sgml
+
+install-data-local:
+	$(mkinstalldirs) $(DESTDIR)$(htmldir)
+	files=`cd html && echo *.html`; \
+	test "$$files" && for f in $$files; do \
+	  cp -p html/$$f $(DESTDIR)$(htmldir)/$$f; \
+	done
+
+uninstall-local:
+	files=`cd html && echo *.html`; \
+	test "$$files" && for f in $$files; do \
+	  rm -rf $(DESTDIR)$(htmldir)/$$f; \
+	done
+	if test -d $(DESTDIR)$(htmldir); then rmdir $(DESTDIR)$(htmldir); fi
+else
+install-data-local:
+uninstall-local:
+endif
+
+
Index: core/esound/create-0.2.41-book1-patch/esound-0.2.41-new/docs/Makefile.in
===================================================================
--- core/esound/create-0.2.41-book1-patch/esound-0.2.41-new/docs/Makefile.in	(nonexistent)
+++ core/esound/create-0.2.41-book1-patch/esound-0.2.41-new/docs/Makefile.in	(revision 5)
@@ -0,0 +1,477 @@
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# This Makefile.in 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.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = docs
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/esd-config.1.in $(srcdir)/esd.1.in \
+	$(srcdir)/esdcat.1.in $(srcdir)/esdctl.1.in \
+	$(srcdir)/esddsp.1.in $(srcdir)/esdfilt.1.in \
+	$(srcdir)/esdloop.1.in $(srcdir)/esdmon.1.in \
+	$(srcdir)/esdplay.1.in $(srcdir)/esdrec.1.in \
+	$(srcdir)/esdsample.1.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/as-arts.m4 \
+	$(top_srcdir)/m4/as-compiler-flag.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES = esd.1 esdcat.1 esd-config.1 esdctl.1 esddsp.1 \
+	esdfilt.1 esdloop.1 esdmon.1 esdplay.1 esdrec.1 esdsample.1
+SOURCES =
+DIST_SOURCES =
+man1dir = $(mandir)/man1
+am__installdirs = "$(DESTDIR)$(man1dir)"
+NROFF = nroff
+MANS = $(man_MANS)
+DATA = $(noinst_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+AMTAR = @AMTAR@
+AR = @AR@
+ARTS_CONFIG = @ARTS_CONFIG@
+ARTS_CXXFLAGS = @ARTS_CXXFLAGS@
+ARTS_LIBS = @ARTS_LIBS@
+AS = @AS@
+AUDIOFILE_CFLAGS = @AUDIOFILE_CFLAGS@
+AUDIOFILE_LIBS = @AUDIOFILE_LIBS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DISTDOCS = @DISTDOCS@
+DLLTOOL = @DLLTOOL@
+DL_LIB = @DL_LIB@
+DOCS = @DOCS@
+DSYMUTIL = @DSYMUTIL@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+ESD_DIR = @ESD_DIR@
+ESD_MAJOR_VERSION = @ESD_MAJOR_VERSION@
+ESD_MICRO_VERSION = @ESD_MICRO_VERSION@
+ESD_MINOR_VERSION = @ESD_MINOR_VERSION@
+ESD_PC_DIR = @ESD_PC_DIR@
+ESD_VERSION = @ESD_VERSION@
+ESD_VERSION_INFO = @ESD_VERSION_INFO@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JW = @JW@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SOUND_LIBS = @SOUND_LIBS@
+STRIP = @STRIP@
+VERSION = @VERSION@
+WRAP_LIB = @WRAP_LIB@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@BUILD_ESDDSP_TRUE@ESDDSP_MAN = esddsp.1
+man_MANS = \
+	esd.1 esdcat.1 esd-config.1 esdctl.1 $(ESDDSP_MAN) \
+	esdfilt.1 esdloop.1 esdmon.1 esdplay.1 esdrec.1 esdsample.1 
+
+EXTRA_DIST = \
+	esd.1.in esdcat.1.in esd-config.1.in esdctl.1.in \
+	esddsp.1.in esdfilt.1.in esdloop.1.in esdmon.1.in \
+	esdplay.1.in esdrec.1.in esdsample.1.in \
+	esound.sgml
+
+CLEANFILES = esound.dvi esound.ps esound.tex esound.aux esound.log
+@HAVE_JW_FALSE@noinst_DATA = 
+@HAVE_JW_TRUE@noinst_DATA = html/book1.html
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  docs/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --gnu  docs/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+esd.1: $(top_builddir)/config.status $(srcdir)/esd.1.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+esdcat.1: $(top_builddir)/config.status $(srcdir)/esdcat.1.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+esd-config.1: $(top_builddir)/config.status $(srcdir)/esd-config.1.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+esdctl.1: $(top_builddir)/config.status $(srcdir)/esdctl.1.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+esddsp.1: $(top_builddir)/config.status $(srcdir)/esddsp.1.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+esdfilt.1: $(top_builddir)/config.status $(srcdir)/esdfilt.1.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+esdloop.1: $(top_builddir)/config.status $(srcdir)/esdloop.1.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+esdmon.1: $(top_builddir)/config.status $(srcdir)/esdmon.1.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+esdplay.1: $(top_builddir)/config.status $(srcdir)/esdplay.1.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+esdrec.1: $(top_builddir)/config.status $(srcdir)/esdrec.1.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+esdsample.1: $(top_builddir)/config.status $(srcdir)/esdsample.1.in
+	cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+install-man1: $(man1_MANS) $(man_MANS)
+	@$(NORMAL_INSTALL)
+	test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)"
+	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+	for i in $$l2; do \
+	  case "$$i" in \
+	    *.1*) list="$$list $$i" ;; \
+	  esac; \
+	done; \
+	for i in $$list; do \
+	  if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+	  else file=$$i; fi; \
+	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+	  case "$$ext" in \
+	    1*) ;; \
+	    *) ext='1' ;; \
+	  esac; \
+	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
+	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+	  echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
+	  $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \
+	done
+uninstall-man1:
+	@$(NORMAL_UNINSTALL)
+	@list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \
+	l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+	for i in $$l2; do \
+	  case "$$i" in \
+	    *.1*) list="$$list $$i" ;; \
+	  esac; \
+	done; \
+	for i in $$list; do \
+	  ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+	  case "$$ext" in \
+	    1*) ;; \
+	    *) ext='1' ;; \
+	  esac; \
+	  inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+	  inst=`echo $$inst | sed -e 's/^.*\///'`; \
+	  inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+	  echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \
+	  rm -f "$(DESTDIR)$(man1dir)/$$inst"; \
+	done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+	list='$(DISTFILES)'; \
+	  dist_files=`for file in $$list; do echo $$file; done | \
+	  sed -e "s|^$$srcdirstrip/||;t" \
+	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+	case $$dist_files in \
+	  */*) $(MKDIR_P) `echo "$$dist_files" | \
+			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+			   sort -u` ;; \
+	esac; \
+	for file in $$dist_files; do \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  if test -d $$d/$$file; then \
+	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile $(MANS) $(DATA)
+installdirs:
+	for dir in "$(DESTDIR)$(man1dir)"; do \
+	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+	done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool clean-local mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-data-local install-man
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man: install-man1
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-local uninstall-man
+
+uninstall-man: uninstall-man1
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+	clean-local distclean distclean-generic distclean-libtool \
+	distdir dvi dvi-am html html-am info info-am install \
+	install-am install-data install-data-am install-data-local \
+	install-dvi install-dvi-am install-exec install-exec-am \
+	install-html install-html-am install-info install-info-am \
+	install-man install-man1 install-pdf install-pdf-am install-ps \
+	install-ps-am install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+	ps ps-am uninstall uninstall-am uninstall-local uninstall-man \
+	uninstall-man1
+
+
+clean-local:
+	rm -rf html
+
+@HAVE_JW_TRUE@html/book1.html: esound.sgml
+@HAVE_JW_TRUE@	$(JW) -f docbook -b html -o html $(srcdir)/esound.sgml
+
+@HAVE_JW_TRUE@install-data-local:
+@HAVE_JW_TRUE@	$(mkinstalldirs) $(DESTDIR)$(htmldir)
+@HAVE_JW_TRUE@	files=`cd html && echo *.html`; \
+@HAVE_JW_TRUE@	test "$$files" && for f in $$files; do \
+@HAVE_JW_TRUE@	  cp -p html/$$f $(DESTDIR)$(htmldir)/$$f; \
+@HAVE_JW_TRUE@	done
+
+@HAVE_JW_TRUE@uninstall-local:
+@HAVE_JW_TRUE@	files=`cd html && echo *.html`; \
+@HAVE_JW_TRUE@	test "$$files" && for f in $$files; do \
+@HAVE_JW_TRUE@	  rm -rf $(DESTDIR)$(htmldir)/$$f; \
+@HAVE_JW_TRUE@	done
+@HAVE_JW_TRUE@	if test -d $(DESTDIR)$(htmldir); then rmdir $(DESTDIR)$(htmldir); fi
+@HAVE_JW_FALSE@install-data-local:
+@HAVE_JW_FALSE@uninstall-local:
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
Index: core/esound/create-0.2.41-book1-patch/esound-0.2.41-new/docs
===================================================================
--- core/esound/create-0.2.41-book1-patch/esound-0.2.41-new/docs	(nonexistent)
+++ core/esound/create-0.2.41-book1-patch/esound-0.2.41-new/docs	(revision 5)

Property changes on: core/esound/create-0.2.41-book1-patch/esound-0.2.41-new/docs
___________________________________________________________________
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: core/esound/create-0.2.41-book1-patch/esound-0.2.41-new
===================================================================
--- core/esound/create-0.2.41-book1-patch/esound-0.2.41-new	(nonexistent)
+++ core/esound/create-0.2.41-book1-patch/esound-0.2.41-new	(revision 5)

Property changes on: core/esound/create-0.2.41-book1-patch/esound-0.2.41-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: core/esound/create-0.2.41-book1-patch/file.list
===================================================================
--- core/esound/create-0.2.41-book1-patch/file.list	(nonexistent)
+++ core/esound/create-0.2.41-book1-patch/file.list	(revision 5)
@@ -0,0 +1,2 @@
+esound-0.2.41/docs/Makefile.am
+esound-0.2.41/docs/Makefile.in
Index: core/esound/create-0.2.41-book1-patch
===================================================================
--- core/esound/create-0.2.41-book1-patch	(nonexistent)
+++ core/esound/create-0.2.41-book1-patch	(revision 5)

Property changes on: core/esound/create-0.2.41-book1-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: core/esound/patches/README
===================================================================
--- core/esound/patches/README	(nonexistent)
+++ core/esound/patches/README	(revision 5)
@@ -0,0 +1,6 @@
+
+/* begin *
+
+   TODO: Leave some comment here.
+
+ * end */
Index: core/esound/patches
===================================================================
--- core/esound/patches	(nonexistent)
+++ core/esound/patches	(revision 5)

Property changes on: core/esound/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: core/esound
===================================================================
--- core/esound	(nonexistent)
+++ core/esound	(revision 5)

Property changes on: core/esound
___________________________________________________________________
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: core/gdk-pixbuf/Makefile
===================================================================
--- core/gdk-pixbuf/Makefile	(nonexistent)
+++ core/gdk-pixbuf/Makefile	(revision 5)
@@ -0,0 +1,56 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/gdk-pixbuf
+
+versions    = 2.42.9
+pkgname     = gdk-pixbuf
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+patches     = $(CURDIR)/patches/gdk-pixbuf-2.42.9-dirname.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.42.9-dirname-patch ; ./create.patch.sh ) ; \
+	 echo -e "\n"
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s) $(patches)
Index: core/gdk-pixbuf/create-2.42.9-dirname-patch/create.patch.sh
===================================================================
--- core/gdk-pixbuf/create-2.42.9-dirname-patch/create.patch.sh	(nonexistent)
+++ core/gdk-pixbuf/create-2.42.9-dirname-patch/create.patch.sh	(revision 5)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=2.42.9
+
+tar --files-from=file.list -xJvf ../gdk-pixbuf-$VERSION.tar.xz
+mv gdk-pixbuf-$VERSION gdk-pixbuf-$VERSION-orig
+
+cp -rf ./gdk-pixbuf-$VERSION-new ./gdk-pixbuf-$VERSION
+
+diff -b --unified -Nr  gdk-pixbuf-$VERSION-orig  gdk-pixbuf-$VERSION > gdk-pixbuf-$VERSION-dirname.patch
+
+mv gdk-pixbuf-$VERSION-dirname.patch ../patches
+
+rm -rf ./gdk-pixbuf-$VERSION
+rm -rf ./gdk-pixbuf-$VERSION-orig

Property changes on: core/gdk-pixbuf/create-2.42.9-dirname-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: core/gdk-pixbuf/create-2.42.9-dirname-patch/file.list
===================================================================
--- core/gdk-pixbuf/create-2.42.9-dirname-patch/file.list	(nonexistent)
+++ core/gdk-pixbuf/create-2.42.9-dirname-patch/file.list	(revision 5)
@@ -0,0 +1,2 @@
+gdk-pixbuf-2.42.9/gdk-pixbuf/gdk-pixbuf-io.c
+gdk-pixbuf-2.42.9/gdk-pixbuf/queryloaders.c
Index: core/gdk-pixbuf/create-2.42.9-dirname-patch/gdk-pixbuf-2.42.9-new/gdk-pixbuf/gdk-pixbuf-io.c
===================================================================
--- core/gdk-pixbuf/create-2.42.9-dirname-patch/gdk-pixbuf-2.42.9-new/gdk-pixbuf/gdk-pixbuf-io.c	(nonexistent)
+++ core/gdk-pixbuf/create-2.42.9-dirname-patch/gdk-pixbuf-2.42.9-new/gdk-pixbuf/gdk-pixbuf-io.c	(revision 5)
@@ -0,0 +1,3526 @@
+/* GdkPixbuf library - Main loading interface.
+ *
+ * Copyright (C) 1999 The Free Software Foundation
+ *
+ * Authors: Miguel de Icaza <miguel@gnu.org>
+ *          Federico Mena-Quintero <federico@gimp.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <glib.h>
+#include <gio/gio.h>
+
+#include "gdk-pixbuf-private.h"
+#include "gdk-pixbuf-loader.h"
+#include "gdk-pixdata.h"
+
+#include <glib/gstdio.h>
+
+#ifdef G_OS_WIN32
+#define STRICT
+#include <windows.h>
+#undef STRICT
+#endif
+#ifdef OS_DARWIN
+#include <mach-o/dyld.h>
+#endif
+
+/**
+ * GdkPixbufModule:
+ * @module_name: the name of the module, usually the same as the
+ *  usual file extension for images of this type, eg. "xpm", "jpeg" or "png".
+ * @module_path: the path from which the module is loaded.
+ * @module: the loaded `GModule`.
+ * @info: a `GdkPixbufFormat` holding information about the module.
+ * @load: loads an image from a file.
+ * @load_xpm_data: loads an image from data in memory.
+ * @begin_load: begins an incremental load.
+ * @stop_load: stops an incremental load.
+ * @load_increment: continues an incremental load.
+ * @load_animation: loads an animation from a file.
+ * @save: saves a `GdkPixbuf` to a file.
+ * @save_to_callback: saves a `GdkPixbuf` by calling the given `GdkPixbufSaveFunc`.
+ * @is_save_option_supported: returns whether a save option key is supported by the module
+ * 
+ * A `GdkPixbufModule` contains the necessary functions to load and save
+ * images in a certain file format.
+ * 
+ * If `GdkPixbuf` has been compiled with `GModule` support, it can be extended
+ * by modules which can load (and perhaps also save) new image and animation
+ * formats.
+ *
+ * ## Implementing modules
+ * 
+ * The `GdkPixbuf` interfaces needed for implementing modules are contained in
+ * `gdk-pixbuf-io.h` (and `gdk-pixbuf-animation.h` if the module supports
+ * animations). They are not covered by the same stability guarantees as the
+ * regular GdkPixbuf API. To underline this fact, they are protected by the
+ * `GDK_PIXBUF_ENABLE_BACKEND` pre-processor symbol.
+ *
+ * Each loadable module must contain a `GdkPixbufModuleFillVtableFunc` function
+ * named `fill_vtable`, which will get called when the module
+ * is loaded and must set the function pointers of the `GdkPixbufModule`.
+ * 
+ * In order to make format-checking work before actually loading the modules
+ * (which may require calling `dlopen` to load image libraries), modules export
+ * their signatures (and other information) via the `fill_info` function. An
+ * external utility, `gdk-pixbuf-query-loaders`, uses this to create a text
+ * file containing a list of all available loaders and  their signatures.
+ * This file is then read at runtime by `GdkPixbuf` to obtain the list of
+ * available loaders and their signatures. 
+ * 
+ * Modules may only implement a subset of the functionality available via
+ * `GdkPixbufModule`. If a particular functionality is not implemented, the
+ * `fill_vtable` function will simply not set the corresponding
+ * function pointers of the `GdkPixbufModule` structure. If a module supports
+ * incremental loading (i.e. provides `begin_load`, `stop_load` and
+ * `load_increment`), it doesn't have to implement `load`, since `GdkPixbuf`
+ * can supply a generic `load` implementation wrapping the incremental loading.
+ *
+ * ## Installing modules
+ * 
+ * Installing a module is a two-step process:
+ *
+ *  - copy the module file(s) to the loader directory (normally
+ *    `$libdir/gdk-pixbuf-2.0/$version/loaders`, unless overridden by the
+ *    environment variable `GDK_PIXBUF_MODULEDIR`)
+ *  - call `gdk-pixbuf-query-loaders` to update the module file (normally
+ *    `$libdir/gdk-pixbuf-2.0/$version/loaders.cache`, unless overridden
+ *    by the environment variable `GDK_PIXBUF_MODULE_FILE`)
+ */
+
+static gint 
+format_check (GdkPixbufModule *module, guchar *buffer, int size)
+{
+        int i, j;
+        gchar m;
+        GdkPixbufModulePattern *pattern;
+        gboolean anchored;
+        guchar *prefix;
+        gchar *mask;
+
+        for (pattern = module->info->signature; pattern->prefix; pattern++) {
+                if (pattern->mask && pattern->mask[0] == '*') {
+                        prefix = (guchar *)pattern->prefix + 1;
+                        mask = pattern->mask + 1;
+                        anchored = FALSE;
+                }
+                else {
+                        prefix = (guchar *)pattern->prefix;
+                        mask = pattern->mask;
+                        anchored = TRUE;
+                }
+                for (i = 0; i < size; i++) {
+                        for (j = 0; i + j < size && prefix[j] != 0; j++) {
+                                m = mask ? mask[j] : ' ';
+                                if (m == ' ') {
+                                        if (buffer[i + j] != prefix[j])
+                                                break;
+                                }
+                                else if (m == '!') {
+                                        if (buffer[i + j] == prefix[j])
+                                                break;
+                                }
+                                else if (m == 'z') {
+                                        if (buffer[i + j] != 0)
+                                                break;
+                                }
+                                else if (m == 'n') {
+                                        if (buffer[i + j] == 0)
+                                                break;
+                                }
+                        } 
+
+                        if (prefix[j] == 0) 
+                                return pattern->relevance;
+
+                        if (anchored)
+                                break;
+                }
+        }
+        return 0;
+}
+
+G_LOCK_DEFINE_STATIC (init_lock);
+
+static gboolean file_formats_inited;
+static GSList *file_formats = NULL;
+
+static gboolean gdk_pixbuf_io_init (void);
+
+static GSList *
+get_file_formats (void)
+{
+        G_LOCK (init_lock);
+        if (file_formats == NULL ||
+            !file_formats_inited)
+                file_formats_inited = gdk_pixbuf_io_init ();
+        G_UNLOCK (init_lock);
+        
+        return file_formats;
+}
+
+#ifdef GDK_PIXBUF_RELOCATABLE // implies that gdk-pixbuf is built as a dll on windows
+
+#ifdef G_OS_WIN32
+
+/* DllMain function needed to tuck away the gdk-pixbuf DLL handle */
+
+static HMODULE gdk_pixbuf_dll;
+
+BOOL WINAPI
+DllMain (HINSTANCE hinstDLL,
+         DWORD     fdwReason,
+         LPVOID    lpvReserved)
+{
+        switch (fdwReason) {
+        case DLL_PROCESS_ATTACH:
+                gdk_pixbuf_dll = (HMODULE) hinstDLL;
+                break;
+        }
+
+  return TRUE;
+}
+#endif
+
+gchar *
+gdk_pixbuf_get_toplevel (void)
+{
+  static gchar *toplevel = NULL;
+
+  if (toplevel == NULL) {
+#if defined(G_OS_WIN32)
+    toplevel = g_win32_get_package_installation_directory_of_module (gdk_pixbuf_dll);
+#elif defined(OS_DARWIN)
+    char pathbuf[PATH_MAX + 1];
+    uint32_t  bufsize = sizeof(pathbuf);
+    gchar *bin_dir;
+
+    _NSGetExecutablePath(pathbuf, &bufsize);
+    bin_dir = g_path_get_dirname(pathbuf);
+    toplevel = g_build_path (G_DIR_SEPARATOR_S, bin_dir, "..", NULL);
+    g_free (bin_dir);
+#elif defined (OS_LINUX)
+    gchar *exe_path, *bin_dir;
+
+    exe_path = g_file_read_link ("/proc/self/exe", NULL);
+    bin_dir = g_path_get_dirname(exe_path);
+    toplevel = g_build_path (G_DIR_SEPARATOR_S, bin_dir, "..", NULL);
+    g_free (exe_path);
+    g_free (bin_dir);
+#else
+#error "Relocations not supported for this platform"
+#endif
+  }
+  return toplevel;
+}
+
+#endif  /* GDK_PIXBUF_RELOCATABLE */
+
+
+#ifdef USE_GMODULE 
+
+static gboolean
+scan_string (const char **pos, GString *out)
+{
+        const char *p = *pos, *q = *pos;
+        char *tmp, *tmp2;
+        gboolean quoted;
+        
+        while (g_ascii_isspace (*p))
+                p++;
+        
+        if (!*p)
+                return FALSE;
+        else if (*p == '"') {
+                p++;
+                quoted = FALSE;
+                for (q = p; (*q != '"') || quoted; q++) {
+                        if (!*q)
+                                return FALSE;
+                        quoted = (*q == '\\') && !quoted;
+                }
+                
+                tmp = g_strndup (p, q - p);
+                tmp2 = g_strcompress (tmp);
+                g_string_truncate (out, 0);
+                g_string_append (out, tmp2);
+                g_free (tmp);
+                g_free (tmp2);
+        }
+        
+        q++;
+        *pos = q;
+        
+        return TRUE;
+}
+
+static gboolean
+scan_int (const char **pos, int *out)
+{
+        int i = 0;
+        char buf[32];
+        const char *p = *pos;
+        
+        while (g_ascii_isspace (*p))
+                p++;
+        
+        if (*p < '0' || *p > '9')
+                return FALSE;
+        
+        while ((*p >= '0') && (*p <= '9') && i < sizeof (buf)) {
+                buf[i] = *p;
+                i++;
+                p++;
+        }
+        
+        if (i == sizeof (buf))
+                return FALSE;
+        else
+                buf[i] = '\0';
+        
+        *out = atoi (buf);
+        
+        *pos = p;
+
+        return TRUE;
+}
+
+static gboolean
+skip_space (const char **pos)
+{
+        const char *p = *pos;
+        
+        while (g_ascii_isspace (*p))
+                p++;
+  
+        *pos = p;
+        
+        return !(*p == '\0');
+}
+
+#ifdef GDK_PIXBUF_RELOCATABLE
+
+static char *
+get_libdir (void)
+{
+  static char *libdir = NULL;
+
+  if (libdir == NULL)
+          libdir = g_build_filename (gdk_pixbuf_get_toplevel (), "lib", NULL);
+
+  return libdir;
+}
+
+#undef GDK_PIXBUF_LIBDIR
+#define GDK_PIXBUF_LIBDIR get_libdir()
+
+#endif  /* GDK_PIXBUF_RELOCATABLE */
+
+/* In case we have a relative module path in the loaders cache
+ * prepend the toplevel dir */
+static gchar *
+build_module_path (const gchar *path)
+{
+#ifdef GDK_PIXBUF_RELOCATABLE
+        if (g_path_is_absolute (path)) {
+                return g_strdup (path);
+        } else {
+                return g_build_filename (gdk_pixbuf_get_toplevel (), path, NULL);
+        }
+#else
+        return g_strdup (path);
+#endif
+}
+
+static gchar *
+gdk_pixbuf_get_module_file (void)
+{
+  gchar *result = g_strdup (g_getenv ("GDK_PIXBUF_MODULE_FILE"));
+
+  if (!result)
+          result = g_build_filename (GDK_PIXBUF_LIBDIR, "gdk-pixbuf-2.0", GDK_PIXBUF_BINARY_VERSION, "loaders.cache", NULL);
+
+  return result;
+}
+
+#endif  /* USE_GMODULE */
+
+
+static gboolean
+gdk_pixbuf_load_module_unlocked (GdkPixbufModule *image_module,
+                                 GError         **error);
+
+static gboolean
+gdk_pixbuf_io_init_modules (const char  *filename,
+                            GError     **error)
+{
+#ifdef USE_GMODULE
+        GIOChannel *channel;
+        gchar *line_buf;
+        gsize term;
+        GString *tmp_buf = g_string_new (NULL);
+        gboolean have_error = FALSE;
+        GdkPixbufModule *module = NULL;
+        int flags = 0;
+        int n_patterns = 0;
+        GdkPixbufModulePattern *pattern;
+        GError *local_error = NULL;
+        guint num_formats;
+
+        channel = g_io_channel_new_file (filename, "r",  &local_error);
+        if (!channel) {
+                char *filename_utf8 = g_filename_display_name (filename);
+                g_set_error (error,
+                             G_IO_ERROR,
+                             G_IO_ERROR_INVALID_ARGUMENT,
+                             "Cannot open pixbuf loader module file '%s': %s\n\n"
+                             "This likely means that your installation is broken.\n"
+                             "Try running the command\n"
+                             "  gdk-pixbuf-query-loaders > %s\n"
+                             "to make things work again for the time being.",
+                             filename_utf8, local_error->message, filename_utf8);
+                g_clear_error (&local_error);
+                g_string_free (tmp_buf, TRUE);
+                g_free (filename_utf8);
+                return FALSE;
+        }
+
+        num_formats = g_slist_length (file_formats);
+        
+        while (!have_error && g_io_channel_read_line (channel, &line_buf, NULL, &term, NULL) == G_IO_STATUS_NORMAL) {
+                const char *p;
+                
+                p = line_buf;
+
+                line_buf[term] = 0;
+
+                if (!skip_space (&p)) {
+                        /* Blank line marking the end of a module */
+                        if (module && *p != '#') {
+                                file_formats = g_slist_prepend (file_formats, module);
+                                module = NULL;
+                        }
+                        
+                        goto next_line;
+                }
+
+                if (*p == '#') 
+                        goto next_line;
+                
+                if (!module) {
+                        /* Read a module location */
+                        module = g_new0 (GdkPixbufModule, 1);
+                        n_patterns = 0;
+                        
+                        if (!scan_string (&p, tmp_buf)) {
+                                g_warning ("Error parsing loader info in '%s'\n  %s", 
+                                           filename, line_buf);
+                                have_error = TRUE;
+                        }
+                        module->module_path = build_module_path (tmp_buf->str);
+                }
+                else if (!module->module_name) {
+                        module->info = g_new0 (GdkPixbufFormat, 1);
+                        if (!scan_string (&p, tmp_buf)) {
+                                g_warning ("Error parsing loader info in '%s'\n  %s", 
+                                           filename, line_buf);
+                                have_error = TRUE;
+                        }
+                        module->info->name =  g_strdup (tmp_buf->str);
+                        module->module_name = module->info->name;
+
+                        flags = 0;
+                        if (!scan_int (&p, &flags)) {
+                                g_warning ("Error parsing loader info in '%s'\n  %s", 
+                                           filename, line_buf);
+                                have_error = TRUE;
+                        }
+                        module->info->flags = flags;
+                        
+                        if (!scan_string (&p, tmp_buf)) {
+                                g_warning ("Error parsing loader info in '%s'\n  %s", 
+                                           filename, line_buf);
+                                have_error = TRUE;
+                        }                       
+                        if (tmp_buf->str[0] != 0)
+                                module->info->domain = g_strdup (tmp_buf->str);
+
+                        if (!scan_string (&p, tmp_buf)) {
+                                g_warning ("Error parsing loader info in '%s'\n  %s", 
+                                           filename, line_buf);
+                                have_error = TRUE;
+                        }                       
+                        module->info->description = g_strdup (tmp_buf->str);
+
+                        if (scan_string (&p, tmp_buf)) {
+                                module->info->license = g_strdup (tmp_buf->str);
+                        }
+                }
+                else if (!module->info->mime_types) {
+                        int n = 1;
+                        module->info->mime_types = g_new0 (gchar*, 1);
+                        while (scan_string (&p, tmp_buf)) {
+                                if (tmp_buf->str[0] != 0) {
+                                        module->info->mime_types =
+                                                g_realloc (module->info->mime_types, (n + 1) * sizeof (gchar*));
+                                        module->info->mime_types[n - 1] = g_strdup (tmp_buf->str);
+                                        module->info->mime_types[n] = NULL;
+                                        n++;
+                                }
+                        }
+                }
+                else if (!module->info->extensions) {
+                        int n = 1;
+                        module->info->extensions = g_new0 (gchar*, 1);
+                        while (scan_string (&p, tmp_buf)) {
+                                if (tmp_buf->str[0] != 0) {
+                                        module->info->extensions =
+                                                g_realloc (module->info->extensions, (n + 1) * sizeof (gchar*));
+                                        module->info->extensions[n - 1] = g_strdup (tmp_buf->str);
+                                        module->info->extensions[n] = NULL;
+                                        n++;
+                                }
+                        }
+                }
+                else {
+                        n_patterns++;
+                        module->info->signature = (GdkPixbufModulePattern *)
+                                g_realloc (module->info->signature, (n_patterns + 1) * sizeof (GdkPixbufModulePattern));
+                        pattern = module->info->signature + n_patterns;
+                        pattern->prefix = NULL;
+                        pattern->mask = NULL;
+                        pattern->relevance = 0;
+                        pattern--;
+                        if (!scan_string (&p, tmp_buf))
+                                goto context_error;
+                        pattern->prefix = g_strdup (tmp_buf->str);
+                        
+                        if (!scan_string (&p, tmp_buf))
+                                goto context_error;
+                        if (*tmp_buf->str)
+                                pattern->mask = g_strdup (tmp_buf->str);
+                        else
+                                pattern->mask = NULL;
+                        
+                        if (!scan_int (&p, &pattern->relevance))
+                                goto context_error;
+                        
+                        goto next_line;
+
+                context_error:
+                        g_free (pattern->prefix);
+                        g_free (pattern->mask);
+                        g_free (pattern);
+                        g_warning ("Error parsing loader info in '%s'\n  %s", 
+                                   filename, line_buf);
+                        have_error = TRUE;
+                }
+        next_line:
+                g_free (line_buf);
+        }
+        g_string_free (tmp_buf, TRUE);
+        g_io_channel_unref (channel);
+
+        if (g_slist_length (file_formats) <= num_formats) {
+                char *filename_utf8 = g_filename_display_name (filename);
+                g_set_error (error,
+                             G_IO_ERROR,
+                             G_IO_ERROR_NOT_INITIALIZED,
+                             "No new GdkPixbufModule loaded from '%s'",
+                             filename_utf8);
+                g_free (filename_utf8);
+                return FALSE;
+        }
+#endif
+        return TRUE;
+}
+
+/**
+ * gdk_pixbuf_init_modules:
+ * @path: Path to directory where the `loaders.cache` is installed
+ * @error: return location for a `GError`
+ *
+ * Initalizes the gdk-pixbuf loader modules referenced by the `loaders.cache`
+ * file present inside that directory.
+ *
+ * This is to be used by applications that want to ship certain loaders
+ * in a different location from the system ones.
+ *
+ * This is needed when the OS or runtime ships a minimal number of loaders
+ * so as to reduce the potential attack surface of carefully crafted image
+ * files, especially for uncommon file types. Applications that require
+ * broader image file types coverage, such as image viewers, would be
+ * expected to ship the gdk-pixbuf modules in a separate location, bundled
+ * with the application in a separate directory from the OS or runtime-
+ * provided modules.
+ *
+ * Since: 2.40
+ */
+gboolean
+gdk_pixbuf_init_modules (const char  *path,
+			 GError     **error)
+{
+	char *filename;
+	gboolean ret;
+
+	g_return_val_if_fail (path != NULL, FALSE);
+	filename = g_build_filename (path, "loaders.cache", NULL);
+	ret = gdk_pixbuf_io_init_modules (filename, error);
+	g_free (filename);
+	return ret;
+}
+
+static void
+gdk_pixbuf_io_init_builtin (void)
+{
+#define load_one_builtin_module(format)                                 G_STMT_START { \
+        GdkPixbufModule *__builtin_module = g_new0 (GdkPixbufModule, 1);               \
+        __builtin_module->module_name = #format;                                       \
+        if (gdk_pixbuf_load_module_unlocked (__builtin_module, NULL))                  \
+                file_formats = g_slist_prepend (file_formats, __builtin_module);       \
+        else                                                                           \
+                g_free (__builtin_module);                              } G_STMT_END
+
+#ifdef INCLUDE_ani
+        load_one_builtin_module (ani);
+#endif
+#ifdef INCLUDE_png
+        load_one_builtin_module (png);
+#endif
+#ifdef INCLUDE_bmp
+        load_one_builtin_module (bmp);
+#endif
+#ifdef INCLUDE_gif
+        load_one_builtin_module (gif);
+#endif
+#ifdef INCLUDE_ico
+        load_one_builtin_module (ico);
+#endif
+#ifdef INCLUDE_jpeg
+        load_one_builtin_module (jpeg);
+#endif
+#ifdef INCLUDE_pnm
+        load_one_builtin_module (pnm);
+#endif
+#ifdef INCLUDE_tiff
+        load_one_builtin_module (tiff);
+#endif
+#ifdef INCLUDE_xpm
+        load_one_builtin_module (xpm);
+#endif
+#ifdef INCLUDE_xbm
+        load_one_builtin_module (xbm);
+#endif
+#ifdef INCLUDE_tga
+        load_one_builtin_module (tga);
+#endif
+#ifdef INCLUDE_icns
+        load_one_builtin_module (icns);
+#endif
+#ifdef INCLUDE_qtif
+        load_one_builtin_module (qtif);
+#endif
+#ifdef INCLUDE_gdiplus
+        /* We don't bother having the GDI+ loaders individually selectable
+         * for building in or not.
+         */
+        load_one_builtin_module (ico);
+        load_one_builtin_module (wmf);
+        load_one_builtin_module (emf);
+        load_one_builtin_module (bmp);
+        load_one_builtin_module (gif);
+        load_one_builtin_module (jpeg);
+        load_one_builtin_module (tiff);
+#endif
+#ifdef INCLUDE_gdip_png
+        /* Except the gdip-png loader which normally isn't built at all even */
+        load_one_builtin_module (png);
+#endif
+
+#undef load_one_builtin_module
+}
+
+static gboolean
+gdk_pixbuf_io_init (void)
+{
+	char *module_file;
+	gboolean ret;
+
+	gdk_pixbuf_io_init_builtin ();
+#ifdef USE_GMODULE
+	module_file = gdk_pixbuf_get_module_file ();
+#endif
+	ret = gdk_pixbuf_io_init_modules (module_file, NULL);
+	g_free (module_file);
+	return ret;
+}
+
+#define module(type) \
+  extern void _gdk_pixbuf__##type##_fill_info   (GdkPixbufFormat *info);   \
+  extern void _gdk_pixbuf__##type##_fill_vtable (GdkPixbufModule *module)
+
+module (png);
+module (jpeg);
+module (gif);
+module (ico);
+module (ani);
+module (xpm);
+module (tiff);
+module (pnm);
+module (bmp);
+module (xbm);
+module (tga);
+module (icns);
+module (qtif);
+module (gdip_ico);
+module (gdip_wmf);
+module (gdip_emf);
+module (gdip_bmp);
+module (gdip_gif);
+module (gdip_jpeg);
+module (gdip_png);
+module (gdip_tiff);
+
+#undef module
+
+/* actually load the image handler - gdk_pixbuf_get_module only get a */
+/* reference to the module to load, it doesn't actually load it       */
+/* perhaps these actions should be combined in one function           */
+static gboolean
+gdk_pixbuf_load_module_unlocked (GdkPixbufModule *image_module,
+                                 GError         **error)
+{
+        GdkPixbufModuleFillInfoFunc fill_info = NULL;
+        GdkPixbufModuleFillVtableFunc fill_vtable = NULL;
+                
+        if (image_module->module != NULL)
+               return TRUE;
+
+#define try_module(format,id)                                           \
+        if (fill_info == NULL &&                                        \
+            strcmp (image_module->module_name, #format) == 0) {         \
+                fill_info = _gdk_pixbuf__##id##_fill_info;              \
+                fill_vtable = _gdk_pixbuf__##id##_fill_vtable;  \
+        }
+
+#ifdef INCLUDE_gdiplus
+        try_module (ico,gdip_ico);
+        try_module (wmf,gdip_wmf);
+        try_module (emf,gdip_emf);
+        try_module (bmp,gdip_bmp);
+        try_module (gif,gdip_gif);
+        try_module (jpeg,gdip_jpeg);
+        try_module (tiff,gdip_tiff);
+#endif
+#ifdef INCLUDE_gdip_png
+        try_module (png,gdip_png);
+#endif
+#ifdef INCLUDE_png
+        try_module (png,png);
+#endif
+#ifdef INCLUDE_bmp
+        try_module (bmp,bmp);
+#endif
+#ifdef INCLUDE_gif
+        try_module (gif,gif);
+#endif
+#ifdef INCLUDE_ico
+        try_module (ico,ico);
+#endif
+#ifdef INCLUDE_ani
+        try_module (ani,ani);
+#endif
+#ifdef INCLUDE_jpeg
+        try_module (jpeg,jpeg);
+#endif
+#ifdef INCLUDE_pnm
+        try_module (pnm,pnm);
+#endif
+#ifdef INCLUDE_tiff
+        try_module (tiff,tiff);
+#endif
+#ifdef INCLUDE_xpm
+        try_module (xpm,xpm);
+#endif
+#ifdef INCLUDE_xbm
+        try_module (xbm,xbm);
+#endif
+#ifdef INCLUDE_tga
+        try_module (tga,tga);
+#endif
+#ifdef INCLUDE_icns
+        try_module (icns,icns);
+#endif
+#ifdef INCLUDE_qtif
+        try_module (qtif,qtif);
+#endif
+
+#undef try_module
+        
+        if (fill_vtable) {
+                image_module->module = (void *) 1;
+                (* fill_vtable) (image_module);
+                if (image_module->info == NULL) {
+                        image_module->info = g_new0 (GdkPixbufFormat, 1);
+                        (* fill_info) (image_module->info);
+                }
+                return TRUE;
+        }
+        else 
+#ifdef USE_GMODULE
+        {
+                char *path;
+                GModule *module;
+                gpointer sym;
+
+                path = image_module->module_path;
+                module = g_module_open (path, G_MODULE_BIND_LAZY | G_MODULE_BIND_LOCAL);
+
+                if (!module) {
+                        char *path_utf8 = g_filename_display_name (path);
+                        g_set_error (error,
+                                     GDK_PIXBUF_ERROR,
+                                     GDK_PIXBUF_ERROR_FAILED,
+                                     _("Unable to load image-loading module: %s: %s"),
+                                     path_utf8, g_module_error ());
+                        g_free (path_utf8);
+                        return FALSE;
+                }
+
+                image_module->module = module;        
+        
+                if (g_module_symbol (module, "fill_vtable", &sym)) {
+                        fill_vtable = (GdkPixbufModuleFillVtableFunc) sym;
+                        (* fill_vtable) (image_module);
+                        return TRUE;
+                } else {
+                        char *path_utf8 = g_filename_display_name (path);
+                        g_set_error (error,
+                                     GDK_PIXBUF_ERROR,
+                                     GDK_PIXBUF_ERROR_FAILED,
+                                     _("Image-loading module %s does not export the proper interface; perhaps it’s from a different gdk-pixbuf version?"),
+                                     path_utf8);
+                        g_free (path_utf8);
+                        return FALSE;
+                }
+        }
+#else
+        g_set_error (error,
+                     GDK_PIXBUF_ERROR,
+                     GDK_PIXBUF_ERROR_UNKNOWN_TYPE,
+                     _("Image type “%s” is not supported"),
+                     image_module->module_name);
+        return FALSE;
+#endif  /* !USE_GMODULE */
+}
+
+
+gboolean
+_gdk_pixbuf_load_module (GdkPixbufModule *image_module,
+                         GError         **error)
+{
+        gboolean ret;
+
+        G_LOCK (init_lock);
+
+        ret = gdk_pixbuf_load_module_unlocked (image_module, error);
+
+        G_UNLOCK (init_lock);
+
+        return ret;
+}
+
+
+
+GdkPixbufModule *
+_gdk_pixbuf_get_named_module (const char *name,
+                              GError **error)
+{
+        GSList *modules;
+
+        for (modules = get_file_formats (); modules; modules = g_slist_next (modules)) {
+                GdkPixbufModule *module = (GdkPixbufModule *)modules->data;
+
+                if (module->info->disabled)
+                        continue;
+
+                if (!strcmp (name, module->module_name))
+                        return module;
+        }
+
+        g_set_error (error,
+                     GDK_PIXBUF_ERROR,
+                     GDK_PIXBUF_ERROR_UNKNOWN_TYPE,
+                     _("Image type “%s” is not supported"),
+                     name);
+        
+        return NULL;
+}
+
+GdkPixbufModule *
+_gdk_pixbuf_get_module (guchar *buffer, guint size,
+                        const gchar *filename,
+                        GError **error)
+{
+        GSList *modules;
+
+        GdkPixbufModule *selected = NULL;
+        gchar *display_name = NULL;
+#ifdef GDK_PIXBUF_USE_GIO_MIME
+        gchar *mime_type;
+        gchar **mimes;
+        gchar *type;
+        gint j;
+        gboolean uncertain;
+
+        mime_type = g_content_type_guess (NULL, buffer, size, &uncertain);
+        if ((uncertain || g_str_equal (mime_type, "text/plain") || g_str_equal (mime_type, "application/gzip")) && filename != NULL) {
+                g_free (mime_type);
+                mime_type = g_content_type_guess (filename, buffer, size, NULL);
+        }
+
+        for (modules = get_file_formats (); modules; modules = g_slist_next (modules)) {
+                GdkPixbufModule *module = (GdkPixbufModule *)modules->data;
+                GdkPixbufFormat *info = module->info;
+
+                if (info->disabled)
+                        continue;
+
+                mimes = info->mime_types;
+                for (j = 0; mimes[j] != NULL; j++) {
+                        type = g_content_type_from_mime_type (mimes[j]);
+                        if (g_content_type_equals (type, mime_type)) {
+                                g_free (type);
+                                selected = module;
+                                break;
+                        }
+                        g_free (type);
+                }
+
+                if (selected != NULL)
+                        break;
+
+		/* Make sure the builtin GdkPixdata support works even without mime sniffing */
+		if (strcmp (info->name, "GdkPixdata") == 0 &&
+		    format_check (module, buffer, size) == 100) {
+			selected = module;
+			break;
+		}
+        }
+        g_free (mime_type);
+#else
+        gint score, best = 0;
+
+        for (modules = get_file_formats (); modules; modules = g_slist_next (modules)) {
+                GdkPixbufModule *module = (GdkPixbufModule *)modules->data;
+
+                if (module->info->disabled)
+                        continue;
+
+                score = format_check (module, buffer, size);
+                if (score > best) {
+                        best = score; 
+                        selected = module;
+                }
+                if (score >= 100) 
+                        break;
+        }
+#endif
+
+        if (selected != NULL)
+                return selected;
+
+        if (filename)
+        {
+                display_name = g_filename_display_name (filename);
+                g_set_error (error,
+                             GDK_PIXBUF_ERROR,
+                             GDK_PIXBUF_ERROR_UNKNOWN_TYPE,
+                             _("Couldn’t recognize the image file format for file “%s”"),
+                             display_name);
+                g_free (display_name);
+        }
+        else
+                g_set_error_literal (error,
+                                     GDK_PIXBUF_ERROR,
+                                     GDK_PIXBUF_ERROR_UNKNOWN_TYPE,
+                                     _("Unrecognized image file format"));
+
+
+        return NULL;
+}
+
+static
+GdkPixbufModule *
+_gdk_pixbuf_get_module_for_file (FILE *f, const gchar *filename, GError **error)
+{
+        guchar buffer[SNIFF_BUFFER_SIZE];
+        int size;
+
+        size = fread (&buffer, 1, sizeof (buffer), f);
+        if (size == 0) {
+		gchar *display_name;
+        	display_name = g_filename_display_name (filename);      
+                g_set_error (error,
+                             GDK_PIXBUF_ERROR,
+                             GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
+                             _("Image file “%s” contains no data"),
+                             display_name);
+                g_free (display_name);
+                return NULL;
+        }
+
+	return _gdk_pixbuf_get_module (buffer, size, filename, error);
+}
+
+static void
+noop_size_notify (gint     *width,
+		  gint     *height,
+		  gpointer  data)
+{
+}
+
+static void
+prepared_notify (GdkPixbuf *pixbuf, 
+                 GdkPixbufAnimation *anim, 
+                 gpointer user_data)
+{
+        if (pixbuf != NULL)
+                g_object_ref (pixbuf);
+        *((GdkPixbuf **)user_data) = pixbuf;
+}
+
+static void
+noop_updated_notify (GdkPixbuf *pixbuf,
+		     int        x,
+		     int        y,
+		     int        width,
+		     int        height,
+		     gpointer   user_data)
+{
+}
+
+static GdkPixbuf *
+generic_load_incrementally (GdkPixbufModule *module, FILE *f, GError **error)
+{
+        GdkPixbuf *pixbuf = NULL;
+	gpointer context;
+
+	context = module->begin_load (noop_size_notify, prepared_notify, noop_updated_notify, &pixbuf, error);
+        
+	if (!context)
+		goto out;
+                
+	while (!feof (f) && !ferror (f)) {
+		guchar buffer[LOAD_BUFFER_SIZE];
+		size_t length;
+
+		length = fread (buffer, 1, sizeof (buffer), f);
+		if (length > 0) {
+			if (!module->load_increment (context, buffer, length, error)) {
+				module->stop_load (context, NULL);
+				if (pixbuf != NULL) {
+					g_object_unref (pixbuf);
+					pixbuf = NULL;
+				}
+				goto out;
+			}
+		}
+	}
+
+	if (!module->stop_load (context, error)) {
+		if (pixbuf != NULL) {
+			g_object_unref (pixbuf);
+			pixbuf = NULL;
+		}
+	}
+
+out:
+	return pixbuf;
+}
+
+GdkPixbuf *
+_gdk_pixbuf_generic_image_load (GdkPixbufModule *module, FILE *f, GError **error)
+{
+        GdkPixbuf *pixbuf = NULL;
+
+        if (module->load != NULL) {
+                pixbuf = (* module->load) (f, error);
+        } else if (module->begin_load != NULL) {
+        	pixbuf = generic_load_incrementally (module, f, error);
+        } else if (module->load_animation != NULL) {
+		GdkPixbufAnimation *animation;
+
+                animation = (* module->load_animation) (f, error);
+                if (animation != NULL) {
+                        pixbuf = gdk_pixbuf_animation_get_static_image (animation);
+
+                        g_object_ref (pixbuf);
+                        g_object_unref (animation);
+                }
+        }
+
+        return pixbuf;
+}
+
+/**
+ * gdk_pixbuf_new_from_file: (constructor)
+ * @filename: (type filename): Name of file to load, in the GLib file
+ *   name encoding
+ * @error: (out): Return location for an error
+ *
+ * Creates a new pixbuf by loading an image from a file.
+ *
+ * The file format is detected automatically.
+ *
+ * If `NULL` is returned, then @error will be set. Possible errors are:
+ *
+ *  - the file could not be opened
+ *  - there is no loader for the file's format
+ *  - there is not enough memory to allocate the image buffer
+ *  - the image buffer contains invalid data
+ *
+ * The error domains are `GDK_PIXBUF_ERROR` and `G_FILE_ERROR`.
+ *
+ * Return value: (transfer full) (nullable): A newly-created pixbuf
+ */
+GdkPixbuf *
+gdk_pixbuf_new_from_file (const char *filename,
+                          GError    **error)
+{
+        GdkPixbuf *pixbuf;
+        FILE *f;
+        GdkPixbufModule *image_module;
+
+        g_return_val_if_fail (filename != NULL, NULL);
+        g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+        
+        f = g_fopen (filename, "rb");
+        if (!f) {
+                gint save_errno = errno;
+		gchar *display_name;
+        	display_name = g_filename_display_name (filename);      
+                g_set_error (error,
+                             G_FILE_ERROR,
+                             g_file_error_from_errno (save_errno),
+                             _("Failed to open file “%s”: %s"),
+                             display_name,
+                             g_strerror (save_errno));
+                g_free (display_name);
+                return NULL;
+        }
+
+        image_module = _gdk_pixbuf_get_module_for_file (f, filename, error);
+        if (image_module == NULL) {
+                fclose (f);
+                return NULL;
+        }
+
+        if (!_gdk_pixbuf_load_module (image_module, error)) {
+                fclose (f);
+                return NULL;
+        }
+
+        fseek (f, 0, SEEK_SET);
+        pixbuf = _gdk_pixbuf_generic_image_load (image_module, f, error);
+        fclose (f);
+
+        if (pixbuf == NULL && error != NULL && *error == NULL) {
+
+                /* I don't trust these crufty longjmp()'ing image libs
+                 * to maintain proper error invariants, and I don't
+                 * want user code to segfault as a result. We need to maintain
+                 * the invariant that error gets set if NULL is returned.
+                 */
+
+		gchar *display_name;
+        	display_name = g_filename_display_name (filename);      
+                g_warning ("Bug! gdk-pixbuf loader '%s' didn't set an error on failure.", image_module->module_name);
+                g_set_error (error,
+                             GDK_PIXBUF_ERROR,
+                             GDK_PIXBUF_ERROR_FAILED,
+                             _("Failed to load image “%s”: reason not known, probably a corrupt image file"),
+                             display_name);
+		g_free (display_name);
+        } else if (error != NULL && *error != NULL) {
+		/* Add the filename to the error message */
+		GError *e = *error;
+		gchar  *old;
+		gchar *display_name;
+
+        	display_name = g_filename_display_name (filename);      
+		old = e->message;
+		e->message = g_strdup_printf (_("Failed to load image “%s”: %s"),
+					      display_name,
+					      old);
+		g_free (old);
+		g_free (display_name);
+        }
+
+        return pixbuf;
+}
+
+#ifdef G_OS_WIN32
+
+/**
+ * gdk_pixbuf_new_from_file_utf8:
+ * @filename: (type filename): Name of file to load, in the GLib file name encoding
+ * @error: Return location for an error
+ *
+ * Same as gdk_pixbuf_new_from_file()
+ *
+ * Return value: A newly-created pixbuf with a reference count of 1, or `NULL` if
+ * any of several error conditions occurred:  the file could not be opened,
+ * there was no loader for the file's format, there was not enough memory to
+ * allocate the image buffer, or the image file contained invalid data.
+ **/
+GdkPixbuf *
+gdk_pixbuf_new_from_file_utf8 (const char *filename,
+                                GError    **error)
+{
+    return gdk_pixbuf_new_from_file (filename, error);
+}
+
+#endif
+
+
+/**
+ * gdk_pixbuf_new_from_file_at_size: (constructor)
+ * @filename: (type filename): Name of file to load, in the GLib file
+ *     name encoding
+ * @width: The width the image should have or -1 to not constrain the width
+ * @height: The height the image should have or -1 to not constrain the height
+ * @error: (out): Return location for an error
+ *
+ * Creates a new pixbuf by loading an image from a file.
+ *
+ * The file format is detected automatically.
+ *
+ * If `NULL` is returned, then @error will be set. Possible errors are:
+ *
+ *  - the file could not be opened
+ *  - there is no loader for the file's format
+ *  - there is not enough memory to allocate the image buffer
+ *  - the image buffer contains invalid data
+ *
+ * The error domains are `GDK_PIXBUF_ERROR` and `G_FILE_ERROR`.
+ *
+ * The image will be scaled to fit in the requested size, preserving
+ * the image's aspect ratio. Note that the returned pixbuf may be smaller
+ * than `width` x `height`, if the aspect ratio requires it. To load
+ * and image at the requested size, regardless of aspect ratio, use
+ * [ctor@GdkPixbuf.Pixbuf.new_from_file_at_scale].
+ *
+ * Return value: (transfer full) (nullable): A newly-created pixbuf
+ *
+ * Since: 2.4
+ **/
+GdkPixbuf *
+gdk_pixbuf_new_from_file_at_size (const char *filename,
+                                  int         width, 
+                                  int         height,
+                                  GError    **error)
+{
+        return gdk_pixbuf_new_from_file_at_scale (filename, 
+                                                  width, height, 
+                                                  TRUE, error);
+}
+
+#ifdef G_OS_WIN32
+
+/**
+ * gdk_pixbuf_new_from_file_at_size_utf8:
+ * @filename: (type filename): Name of file to load, in the GLib file name encoding
+ * @width: The width the image should have or -1 to not constrain the width
+ * @height: The height the image should have or -1 to not constrain the height
+ * @error: Return location for an error
+ *
+ * Same as gdk_pixbuf_new_from_file_at_size()
+ *
+ * Return value: A newly-created pixbuf with a reference count of 1, or
+ * `NULL` if any of several error conditions occurred:  the file could not
+ * be opened, there was no loader for the file's format, there was not
+ * enough memory to allocate the image buffer, or the image file contained
+ * invalid data.
+ *
+ * Since: 2.4
+ **/
+GdkPixbuf *
+gdk_pixbuf_new_from_file_at_size_utf8 (const char *filename,
+                                       int         width,
+                                       int         height,
+                                       GError    **error)
+{
+    return gdk_pixbuf_new_from_file_at_size (filename, width, height, error);
+}
+
+#endif
+
+typedef struct {
+        gint width;
+        gint height;
+        gboolean preserve_aspect_ratio;
+} AtScaleData; 
+
+static void
+at_scale_data_async_data_free (AtScaleData *data)
+{
+	g_slice_free (AtScaleData, data);
+}
+
+static void
+at_scale_size_prepared_cb (GdkPixbufLoader *loader, 
+                           int              width,
+                           int              height,
+                           gpointer         data)
+{
+        AtScaleData *info = data;
+
+        g_return_if_fail (width > 0 && height > 0);
+
+        if (info->preserve_aspect_ratio && 
+            (info->width > 0 || info->height > 0)) {
+                if (info->width < 0)
+                {
+                        width = width * (double)info->height/(double)height;
+                        height = info->height;
+                }
+                else if (info->height < 0)
+                {
+                        height = height * (double)info->width/(double)width;
+                        width = info->width;
+                }
+                else if ((double)height * (double)info->width >
+                         (double)width * (double)info->height) {
+                        width = 0.5 + (double)width * (double)info->height / (double)height;
+                        height = info->height;
+                } else {
+                        height = 0.5 + (double)height * (double)info->width / (double)width;
+                        width = info->width;
+                }
+        } else {
+                if (info->width > 0)
+                        width = info->width;
+                if (info->height > 0)
+                        height = info->height;
+        }
+        
+        width = MAX (width, 1);
+        height = MAX (height, 1);
+
+        gdk_pixbuf_loader_set_size (loader, width, height);
+}
+
+/**
+ * gdk_pixbuf_new_from_file_at_scale: (constructor)
+ * @filename: (type filename): Name of file to load, in the GLib file
+ *     name encoding
+ * @width: The width the image should have or -1 to not constrain the width
+ * @height: The height the image should have or -1 to not constrain the height
+ * @preserve_aspect_ratio: `TRUE` to preserve the image's aspect ratio
+ * @error: Return location for an error
+ *
+ * Creates a new pixbuf by loading an image from a file.
+ *
+ * The file format is detected automatically.
+ *
+ * If `NULL` is returned, then @error will be set. Possible errors are:
+ *
+ *  - the file could not be opened
+ *  - there is no loader for the file's format
+ *  - there is not enough memory to allocate the image buffer
+ *  - the image buffer contains invalid data
+ *
+ * The error domains are `GDK_PIXBUF_ERROR` and `G_FILE_ERROR`.
+ *
+ * The image will be scaled to fit in the requested size, optionally preserving
+ * the image's aspect ratio. 
+ *
+ * When preserving the aspect ratio, a `width` of -1 will cause the image
+ * to be scaled to the exact given height, and a `height` of -1 will cause
+ * the image to be scaled to the exact given width. When not preserving
+ * aspect ratio, a `width` or `height` of -1 means to not scale the image
+ * at all in that dimension. Negative values for `width` and `height` are
+ * allowed since 2.8.
+ *
+ * Return value: (transfer full) (nullable): A newly-created pixbuf
+ *
+ * Since: 2.6
+ **/
+GdkPixbuf *
+gdk_pixbuf_new_from_file_at_scale (const char *filename,
+                                   int         width, 
+                                   int         height,
+                                   gboolean    preserve_aspect_ratio,
+                                   GError    **error)
+{
+
+        GdkPixbufLoader *loader;
+        GdkPixbuf       *pixbuf;
+        guchar buffer[LOAD_BUFFER_SIZE];
+        int length;
+        FILE *f;
+        AtScaleData info;
+        GdkPixbufAnimation *animation;
+        GdkPixbufAnimationIter *iter;
+        gboolean has_frame;
+
+        g_return_val_if_fail (filename != NULL, NULL);
+        g_return_val_if_fail (width > 0 || width == -1, NULL);
+        g_return_val_if_fail (height > 0 || height == -1, NULL);
+
+        f = g_fopen (filename, "rb");
+        if (!f) {
+                gint save_errno = errno;
+                gchar *display_name = g_filename_display_name (filename);
+                g_set_error (error,
+                             G_FILE_ERROR,
+                             g_file_error_from_errno (save_errno),
+                             _("Failed to open file “%s”: %s"),
+                             display_name,
+                             g_strerror (save_errno));
+                g_free (display_name);
+                return NULL;
+        }
+
+        loader = _gdk_pixbuf_loader_new_with_filename (filename);
+
+        info.width = width;
+        info.height = height;
+        info.preserve_aspect_ratio = preserve_aspect_ratio;
+
+        g_signal_connect (loader, "size-prepared", 
+                          G_CALLBACK (at_scale_size_prepared_cb), &info);
+
+        has_frame = FALSE;
+        while (!has_frame && !feof (f) && !ferror (f)) {
+                length = fread (buffer, 1, sizeof (buffer), f);
+                if (length > 0)
+                        if (!gdk_pixbuf_loader_write (loader, buffer, length, error)) {
+                                gdk_pixbuf_loader_close (loader, NULL);
+                                fclose (f);
+                                g_object_unref (loader);
+                                return NULL;
+                        }
+                
+                animation = gdk_pixbuf_loader_get_animation (loader);
+                if (animation) {
+                        iter = gdk_pixbuf_animation_get_iter (animation, NULL);
+                        if (!gdk_pixbuf_animation_iter_on_currently_loading_frame (iter)) {
+                                has_frame = TRUE;
+                        }
+                        g_object_unref (iter);
+                }
+        }
+
+        fclose (f);
+
+        if (!gdk_pixbuf_loader_close (loader, error) && !has_frame) {
+                g_object_unref (loader);
+                return NULL;
+        }
+
+        pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
+
+        if (!pixbuf) {
+                gchar *display_name = g_filename_display_name (filename);
+                g_object_unref (loader);
+                g_set_error (error,
+                             GDK_PIXBUF_ERROR,
+                             GDK_PIXBUF_ERROR_FAILED,
+                             _("Failed to load image “%s”: reason not known, probably a corrupt image file"),
+                             display_name);
+                g_free (display_name);
+                return NULL;
+        }
+
+        g_object_ref (pixbuf);
+
+        g_object_unref (loader);
+
+        return pixbuf;
+}
+
+#ifdef G_OS_WIN32
+
+/**
+ * gdk_pixbuf_new_from_file_at_scale_utf8:
+ * @filename: (type filename): Name of file to load, in the GLib file name encoding
+ * @width: The width the image should have or -1 to not constrain the width
+ * @height: The height the image should have or -1 to not constrain the height
+ * @preserve_aspect_ratio: `TRUE` to preserve the image's aspect ratio
+ * @error: Return location for an error
+ *
+ * Same as gdk_pixbuf_new_from_file_at_scale().
+ *
+ * Return value: A newly-created pixbuf with a reference count of 1, or `NULL`
+ * if any of several error conditions occurred:  the file could not be opened,
+ * there was no loader for the file's format, there was not enough memory to
+ * allocate the image buffer, or the image file contained invalid data.
+ *
+ * Since: 2.6
+ **/
+GdkPixbuf *
+gdk_pixbuf_new_from_file_at_scale_utf8 (const char *filename,
+                                        int         width,
+                                        int         height,
+                                        gboolean    preserve_aspect_ratio,
+                                        GError    **error)
+{
+    return gdk_pixbuf_new_from_file_at_scale (filename, width, height,
+                                              preserve_aspect_ratio, error);
+}
+#endif
+
+
+static GdkPixbuf *
+load_from_stream (GdkPixbufLoader  *loader,
+                  GInputStream     *stream,
+                  GCancellable     *cancellable,
+                  GError          **error)
+{
+        GdkPixbuf *pixbuf;
+        gssize n_read;
+        guchar buffer[LOAD_BUFFER_SIZE];
+
+        while (1) { 
+                n_read = g_input_stream_read (stream, 
+                                              buffer, 
+                                              sizeof (buffer), 
+                                              cancellable, 
+                                              error);
+                if (n_read < 0) {
+                        gdk_pixbuf_loader_close (loader, NULL);
+                        return NULL;
+                }
+
+                if (n_read == 0)
+                        break;
+
+                if (!gdk_pixbuf_loader_write (loader, 
+                                              buffer, 
+                                              n_read, 
+                                              error)) {
+                        gdk_pixbuf_loader_close (loader, NULL);
+                        return NULL;
+                }
+        }
+
+        if (!gdk_pixbuf_loader_close (loader, error))
+                return NULL;
+
+        pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
+        if (pixbuf == NULL)
+                return NULL;
+
+        return g_object_ref (pixbuf);
+}
+
+
+/**
+ * gdk_pixbuf_new_from_stream_at_scale: (constructor)
+ * @stream:  a `GInputStream` to load the pixbuf from
+ * @width: The width the image should have or -1 to not constrain the width
+ * @height: The height the image should have or -1 to not constrain the height
+ * @preserve_aspect_ratio: `TRUE` to preserve the image's aspect ratio
+ * @cancellable: (allow-none): optional `GCancellable` object, `NULL` to ignore
+ * @error: Return location for an error
+ *
+ * Creates a new pixbuf by loading an image from an input stream.  
+ *
+ * The file format is detected automatically. If `NULL` is returned, then
+ * @error will be set. The @cancellable can be used to abort the operation
+ * from another thread. If the operation was cancelled, the error 
+ * `G_IO_ERROR_CANCELLED` will be returned. Other possible errors are in
+ * the `GDK_PIXBUF_ERROR` and `G_IO_ERROR` domains.
+ *
+ * The image will be scaled to fit in the requested size, optionally 
+ * preserving the image's aspect ratio.
+ *
+ * When preserving the aspect ratio, a `width` of -1 will cause the image to be
+ * scaled to the exact given height, and a `height` of -1 will cause the image
+ * to be scaled to the exact given width. If both `width` and `height` are
+ * given, this function will behave as if the smaller of the two values
+ * is passed as -1.
+ *
+ * When not preserving aspect ratio, a `width` or `height` of -1 means to not
+ * scale the image at all in that dimension.
+ *
+ * The stream is not closed.
+ *
+ * Return value: (transfer full) (nullable): A newly-created pixbuf
+ *
+ * Since: 2.14
+ */
+GdkPixbuf *
+gdk_pixbuf_new_from_stream_at_scale (GInputStream  *stream,
+                                     gint           width,
+                                     gint           height,
+                                     gboolean       preserve_aspect_ratio,
+                                     GCancellable  *cancellable,
+                                     GError       **error)
+{
+        GdkPixbufLoader *loader;
+        GdkPixbuf *pixbuf;
+        AtScaleData info;
+
+        loader = gdk_pixbuf_loader_new ();
+        info.width = width;
+        info.height = height;
+        info.preserve_aspect_ratio = preserve_aspect_ratio;
+
+        g_signal_connect (loader, "size-prepared", 
+                          G_CALLBACK (at_scale_size_prepared_cb), &info);
+
+        pixbuf = load_from_stream (loader, stream, cancellable, error);
+        g_object_unref (loader);
+
+        return pixbuf;
+}
+
+
+static void
+load_from_stream_async_cb (GObject      *stream,
+                           GAsyncResult *res,
+                           gpointer      data)
+{
+        GTask *task = data;
+        GdkPixbufLoader *loader;
+        GdkPixbuf *pixbuf;
+        GError *error = NULL;
+        GBytes *bytes = NULL;
+
+        loader = g_task_get_task_data (task);
+
+        bytes = g_input_stream_read_bytes_finish (G_INPUT_STREAM (stream), res, &error);
+
+        if (bytes == NULL) {
+                gdk_pixbuf_loader_close (loader, NULL);
+                g_task_return_error (task, error);
+        } else if (g_bytes_get_size (bytes) > 0) {
+                if (!gdk_pixbuf_loader_write (loader, 
+                                              g_bytes_get_data (bytes, NULL),
+                                              g_bytes_get_size (bytes),
+                                              &error)) {
+                        gdk_pixbuf_loader_close (loader, NULL);
+                        g_task_return_error (task, error);
+                        goto out;
+                }
+                g_input_stream_read_bytes_async (G_INPUT_STREAM (stream),
+                                                 LOAD_BUFFER_SIZE, 
+                                                 G_PRIORITY_DEFAULT,
+                                                 g_task_get_cancellable (task),
+                                                 load_from_stream_async_cb,
+                                                 g_object_ref (task));
+
+        } else {
+                if (!gdk_pixbuf_loader_close (loader, &error)) {
+                        g_task_return_error (task, error);
+                        goto out;
+                }
+
+                pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
+                g_task_return_pointer (task, g_object_ref (pixbuf), g_object_unref);
+        }
+
+out:
+        g_bytes_unref (bytes);
+        g_object_unref (task);
+}
+
+
+/**
+ * gdk_pixbuf_new_from_stream_at_scale_async:
+ * @stream: a `GInputStream` from which to load the pixbuf
+ * @width: the width the image should have or -1 to not constrain the width
+ * @height: the height the image should have or -1 to not constrain the height
+ * @preserve_aspect_ratio: `TRUE` to preserve the image's aspect ratio
+ * @cancellable: (allow-none): optional `GCancellable` object, `NULL` to ignore
+ * @callback: a `GAsyncReadyCallback` to call when the pixbuf is loaded
+ * @user_data: the data to pass to the callback function
+ *
+ * Creates a new pixbuf by asynchronously loading an image from an input stream.
+ *
+ * For more details see gdk_pixbuf_new_from_stream_at_scale(), which is the synchronous
+ * version of this function.
+ *
+ * When the operation is finished, @callback will be called in the main thread.
+ * You can then call gdk_pixbuf_new_from_stream_finish() to get the result of the operation.
+ *
+ * Since: 2.24
+ **/
+void
+gdk_pixbuf_new_from_stream_at_scale_async (GInputStream        *stream,
+					   gint                 width,
+					   gint                 height,
+					   gboolean             preserve_aspect_ratio,
+					   GCancellable        *cancellable,
+					   GAsyncReadyCallback  callback,
+					   gpointer             user_data)
+{
+	GTask *task;
+	AtScaleData *data;
+        GdkPixbufLoader *loader;
+
+	g_return_if_fail (G_IS_INPUT_STREAM (stream));
+	g_return_if_fail (callback != NULL);
+	g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
+
+	data = g_slice_new (AtScaleData);
+	data->width = width;
+	data->height = height;
+	data->preserve_aspect_ratio = preserve_aspect_ratio;
+
+        loader = gdk_pixbuf_loader_new ();
+        g_signal_connect (loader, "size-prepared", 
+                          G_CALLBACK (at_scale_size_prepared_cb), data);
+        g_object_set_data_full (G_OBJECT (loader),
+                                "gdk-pixbuf-please-kill-me-later", 
+                                data,
+                                (GDestroyNotify) at_scale_data_async_data_free);
+
+	task = g_task_new (stream, cancellable, callback, user_data);
+	g_task_set_source_tag (task, gdk_pixbuf_new_from_stream_at_scale_async);
+	g_task_set_task_data (task, loader, g_object_unref);
+
+        g_input_stream_read_bytes_async (stream,
+                                         LOAD_BUFFER_SIZE, 
+                                         G_PRIORITY_DEFAULT,
+                                         cancellable,
+                                         load_from_stream_async_cb,
+                                         task);
+}
+
+/**
+ * gdk_pixbuf_new_from_stream: (constructor)
+ * @stream:  a `GInputStream` to load the pixbuf from
+ * @cancellable: (allow-none): optional `GCancellable` object, `NULL` to ignore
+ * @error: Return location for an error
+ *
+ * Creates a new pixbuf by loading an image from an input stream.  
+ *
+ * The file format is detected automatically.
+ *
+ * If `NULL` is returned, then `error` will be set.
+ *
+ * The `cancellable` can be used to abort the operation from another thread.
+ * If the operation was cancelled, the error `G_IO_ERROR_CANCELLED` will be
+ * returned. Other possible errors are in the `GDK_PIXBUF_ERROR` and
+ * `G_IO_ERROR` domains.
+ *
+ * The stream is not closed.
+ *
+ * Return value: (transfer full) (nullable): A newly-created pixbuf
+ *
+ * Since: 2.14
+ **/
+GdkPixbuf *
+gdk_pixbuf_new_from_stream (GInputStream  *stream,
+                            GCancellable  *cancellable,
+                            GError       **error)
+{
+        GdkPixbuf *pixbuf;
+        GdkPixbufLoader *loader;
+
+        loader = gdk_pixbuf_loader_new ();
+        pixbuf = load_from_stream (loader, stream, cancellable, error);
+        g_object_unref (loader);
+
+        return pixbuf;
+}
+
+GdkPixbuf *
+_gdk_pixbuf_new_from_resource_try_pixdata (const char *resource_path)
+{
+	gsize data_size;
+	GBytes *bytes;
+
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+	/* We specialize GdkPixdata files, making these a reference to the
+	 * compiled-in resource data, whether uncompressed and mmap'ed, or
+	 * compressed, and uncompressed on-the-fly.
+         */
+	if (g_resources_get_info  (resource_path, 0, &data_size, NULL, NULL) &&
+	    data_size > sizeof(guint32) &&
+	    (bytes = g_resources_lookup_data (resource_path, 0, NULL)) != NULL) {
+		GdkPixbuf*pixbuf = NULL;
+		const guint8 *stream = g_bytes_get_data (bytes, NULL);
+		GdkPixdata pixdata;
+		guint32 magic;
+
+		magic = (stream[0] << 24) + (stream[1] << 16) + (stream[2] << 8) + stream[3];
+		if (magic == GDK_PIXBUF_MAGIC_NUMBER &&
+		    gdk_pixdata_deserialize (&pixdata, data_size, stream, NULL)) {
+			pixbuf = gdk_pixbuf_from_pixdata (&pixdata, FALSE, NULL);
+		}
+
+		if (pixbuf) {
+			/* Free the GBytes with the pixbuf */
+			g_object_set_data_full (G_OBJECT (pixbuf), "gdk-pixbuf-resource-bytes", bytes, (GDestroyNotify) g_bytes_unref);
+			return pixbuf;
+		} else {
+			g_bytes_unref (bytes);
+		}
+	}
+G_GNUC_END_IGNORE_DEPRECATIONS
+
+        return NULL;
+}
+
+/**
+ * gdk_pixbuf_new_from_resource: (constructor)
+ * @resource_path: the path of the resource file
+ * @error: Return location for an error
+ *
+ * Creates a new pixbuf by loading an image from an resource.
+ *
+ * The file format is detected automatically. If `NULL` is returned, then
+ * @error will be set.
+ *
+ * Return value: (transfer full) (nullable): A newly-created pixbuf
+ *
+ * Since: 2.26
+ **/
+GdkPixbuf *
+gdk_pixbuf_new_from_resource (const gchar  *resource_path,
+			      GError      **error)
+{
+	GInputStream *stream;
+	GdkPixbuf *pixbuf;
+
+        pixbuf = _gdk_pixbuf_new_from_resource_try_pixdata (resource_path);
+        if (pixbuf)
+                return pixbuf;
+
+	stream = g_resources_open_stream (resource_path, 0, error);
+	if (stream == NULL)
+		return NULL;
+
+	pixbuf = gdk_pixbuf_new_from_stream (stream, NULL, error);
+	g_object_unref (stream);
+	return pixbuf;
+}
+
+/**
+ * gdk_pixbuf_new_from_resource_at_scale: (constructor)
+ * @resource_path: the path of the resource file
+ * @width: The width the image should have or -1 to not constrain the width
+ * @height: The height the image should have or -1 to not constrain the height
+ * @preserve_aspect_ratio: `TRUE` to preserve the image's aspect ratio
+ * @error: Return location for an error
+ *
+ * Creates a new pixbuf by loading an image from an resource.
+ *
+ * The file format is detected automatically. If `NULL` is returned, then
+ * @error will be set.
+ *
+ * The image will be scaled to fit in the requested size, optionally
+ * preserving the image's aspect ratio. When preserving the aspect ratio,
+ * a @width of -1 will cause the image to be scaled to the exact given
+ * height, and a @height of -1 will cause the image to be scaled to the
+ * exact given width. When not preserving aspect ratio, a @width or
+ * @height of -1 means to not scale the image at all in that dimension.
+ *
+ * The stream is not closed.
+ *
+ * Return value: (transfer full) (nullable): A newly-created pixbuf
+ *
+ * Since: 2.26
+ */
+GdkPixbuf *
+gdk_pixbuf_new_from_resource_at_scale (const char *resource_path,
+				       int         width,
+				       int         height,
+				       gboolean    preserve_aspect_ratio,
+				       GError    **error)
+{
+	GInputStream *stream;
+	GdkPixbuf *pixbuf;
+
+	stream = g_resources_open_stream (resource_path, 0, error);
+	if (stream == NULL)
+		return NULL;
+
+	pixbuf = gdk_pixbuf_new_from_stream_at_scale (stream, width, height, preserve_aspect_ratio, NULL, error);
+	g_object_unref (stream);
+	return pixbuf;
+}
+
+/**
+ * gdk_pixbuf_new_from_stream_async:
+ * @stream: a `GInputStream` from which to load the pixbuf
+ * @cancellable: (allow-none): optional `GCancellable` object, `NULL` to ignore
+ * @callback: a `GAsyncReadyCallback` to call when the pixbuf is loaded
+ * @user_data: the data to pass to the callback function
+ *
+ * Creates a new pixbuf by asynchronously loading an image from an input stream.
+ *
+ * For more details see gdk_pixbuf_new_from_stream(), which is the synchronous
+ * version of this function.
+ *
+ * When the operation is finished, @callback will be called in the main thread.
+ * You can then call gdk_pixbuf_new_from_stream_finish() to get the result of
+ * the operation.
+ *
+ * Since: 2.24
+ **/
+void
+gdk_pixbuf_new_from_stream_async (GInputStream        *stream,
+				  GCancellable        *cancellable,
+				  GAsyncReadyCallback  callback,
+				  gpointer             user_data)
+{
+	GTask *task;
+
+	g_return_if_fail (G_IS_INPUT_STREAM (stream));
+	g_return_if_fail (callback != NULL);
+	g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
+
+	task = g_task_new (stream, cancellable, callback, user_data);
+	g_task_set_source_tag (task, gdk_pixbuf_new_from_stream_async);
+        g_task_set_task_data (task, gdk_pixbuf_loader_new (), g_object_unref);
+
+        g_input_stream_read_bytes_async (stream,
+                                         LOAD_BUFFER_SIZE, 
+                                         G_PRIORITY_DEFAULT,
+                                         cancellable,
+                                         load_from_stream_async_cb,
+                                         task);
+}
+
+/**
+ * gdk_pixbuf_new_from_stream_finish:
+ * @async_result: a `GAsyncResult`
+ * @error: a `GError`, or `NULL`
+ *
+ * Finishes an asynchronous pixbuf creation operation started with
+ * gdk_pixbuf_new_from_stream_async().
+ *
+ * Return value: (transfer full) (nullable): the newly created pixbuf
+ *
+ * Since: 2.24
+ **/
+GdkPixbuf *
+gdk_pixbuf_new_from_stream_finish (GAsyncResult  *async_result,
+				   GError       **error)
+{
+	GTask *task;
+
+	g_return_val_if_fail (G_IS_TASK (async_result), NULL);
+	g_return_val_if_fail (!error || (error && !*error), NULL);
+
+	task = G_TASK (async_result);
+
+	g_warn_if_fail (g_task_get_source_tag (task) == gdk_pixbuf_new_from_stream_async ||
+			g_task_get_source_tag (task) == gdk_pixbuf_new_from_stream_at_scale_async);
+
+	return g_task_propagate_pointer (task, error);
+}
+
+static void
+info_cb (GdkPixbufLoader *loader, 
+         int              width,
+         int              height,
+         gpointer         data)
+{
+        struct {
+                GdkPixbufFormat *format;
+                int width;
+                int height;
+        } *info = data;
+
+        g_return_if_fail (width > 0 && height > 0);
+
+        info->format = gdk_pixbuf_loader_get_format (loader);
+        info->width = width;
+        info->height = height;
+
+        gdk_pixbuf_loader_set_size (loader, 0, 0);
+}
+
+/**
+ * gdk_pixbuf_get_file_info:
+ * @filename: (type filename): The name of the file to identify.
+ * @width: (optional) (out): Return location for the width of the image
+ * @height: (optional) (out): Return location for the height of the image
+ * 
+ * Parses an image file far enough to determine its format and size.
+ * 
+ * Returns: (nullable) (transfer none): A `GdkPixbufFormat` describing
+ *   the image format of the file
+ *
+ * Since: 2.4
+ **/
+GdkPixbufFormat *
+gdk_pixbuf_get_file_info (const gchar  *filename,
+                          gint         *width, 
+                          gint         *height)
+{
+        GdkPixbufLoader *loader;
+        guchar buffer[SNIFF_BUFFER_SIZE];
+        int length;
+        FILE *f;
+        struct {
+                GdkPixbufFormat *format;
+                gint width;
+                gint height;
+        } info;
+
+        g_return_val_if_fail (filename != NULL, NULL);
+
+        f = g_fopen (filename, "rb");
+        if (!f)
+                return NULL;
+
+        loader = _gdk_pixbuf_loader_new_with_filename (filename);
+
+        info.format = NULL;
+        info.width = -1;
+        info.height = -1;
+                
+        g_signal_connect (loader, "size-prepared", G_CALLBACK (info_cb), &info);
+
+        while (!feof (f) && !ferror (f)) {
+                length = fread (buffer, 1, sizeof (buffer), f);
+                if (length > 0) {
+                        if (!gdk_pixbuf_loader_write (loader, buffer, length, NULL))
+                                break;
+                }
+                if (info.format != NULL)
+                        break;
+        }
+
+        fclose (f);
+        gdk_pixbuf_loader_close (loader, NULL);
+        g_object_unref (loader);
+
+        if (width) 
+                *width = info.width;
+        if (height) 
+                *height = info.height;
+
+        return info.format;
+}
+
+typedef struct {
+        gchar *filename;
+        gint width;
+        gint height;
+} GetFileInfoAsyncData;
+
+static void
+get_file_info_async_data_free (GetFileInfoAsyncData *data)
+{
+        g_free (data->filename);
+        g_slice_free (GetFileInfoAsyncData, data);
+}
+
+static void
+get_file_info_thread (GTask                *task,
+                      gpointer              source_object,
+                      GetFileInfoAsyncData *data,
+                      GCancellable         *cancellable)
+{
+        GdkPixbufFormat *format;
+
+        format = gdk_pixbuf_get_file_info (data->filename, &data->width, &data->height);
+        if (format == NULL) {
+                g_task_return_new_error (task,
+                                         GDK_PIXBUF_ERROR,
+                                         GDK_PIXBUF_ERROR_UNKNOWN_TYPE,
+                                         "Failed to recognize image format");
+        } else {
+                g_task_return_pointer (task,
+                                       gdk_pixbuf_format_copy (format),
+                                       (GDestroyNotify) gdk_pixbuf_format_free);
+        }
+}
+
+/**
+ * gdk_pixbuf_get_file_info_async:
+ * @filename: (type filename): The name of the file to identify
+ * @cancellable: (allow-none): optional `GCancellable` object, `NULL` to ignore
+ * @callback: a `GAsyncReadyCallback` to call when the file info is available
+ * @user_data: the data to pass to the callback function
+ *
+ * Asynchronously parses an image file far enough to determine its
+ * format and size.
+ *
+ * For more details see gdk_pixbuf_get_file_info(), which is the synchronous
+ * version of this function.
+ *
+ * When the operation is finished, @callback will be called in the
+ * main thread. You can then call gdk_pixbuf_get_file_info_finish() to
+ * get the result of the operation.
+ *
+ * Since: 2.32
+ **/
+void
+gdk_pixbuf_get_file_info_async  (const gchar          *filename,
+                                 GCancellable         *cancellable,
+                                 GAsyncReadyCallback   callback,
+                                 gpointer              user_data)
+{
+        GetFileInfoAsyncData *data;
+        GTask *task;
+
+        g_return_if_fail (filename != NULL);
+        g_return_if_fail (callback != NULL);
+        g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
+
+        data = g_slice_new0 (GetFileInfoAsyncData);
+        data->filename = g_strdup (filename);
+
+        task = g_task_new (NULL, cancellable, callback, user_data);
+        g_task_set_return_on_cancel (task, TRUE);
+        g_task_set_source_tag (task, gdk_pixbuf_get_file_info_async);
+        g_task_set_task_data (task, data, (GDestroyNotify) get_file_info_async_data_free);
+        g_task_run_in_thread (task, (GTaskThreadFunc) get_file_info_thread);
+        g_object_unref (task);
+}
+
+/**
+ * gdk_pixbuf_get_file_info_finish:
+ * @async_result: a `GAsyncResult`
+ * @width: (out): Return location for the width of the image, or `NULL`
+ * @height: (out): Return location for the height of the image, or `NULL`
+ * @error: a `GError`, or `NULL`
+ *
+ * Finishes an asynchronous pixbuf parsing operation started with
+ * gdk_pixbuf_get_file_info_async().
+ *
+ * Returns: (transfer none) (nullable): A `GdkPixbufFormat` describing the
+ *   image format of the file
+ *
+ * Since: 2.32
+ **/
+GdkPixbufFormat *
+gdk_pixbuf_get_file_info_finish (GAsyncResult         *async_result,
+                                 gint                 *width,
+                                 gint                 *height,
+                                 GError              **error)
+{
+        GetFileInfoAsyncData *data;
+        GTask *task;
+
+        g_return_val_if_fail (g_task_is_valid (async_result, NULL), NULL);
+
+        task = G_TASK (async_result);
+
+        g_return_val_if_fail (!error || (error && !*error), NULL);
+        g_warn_if_fail (g_task_get_source_tag (task) == gdk_pixbuf_get_file_info_async);
+
+        data = g_task_get_task_data (task);
+
+        if (!g_task_had_error (task)) {
+                if (width)
+                        *width = data->width;
+                if (height)
+                        *height = data->height;
+        }
+
+        return g_task_propagate_pointer (task, error);
+}
+
+/**
+ * gdk_pixbuf_new_from_xpm_data:
+ * @data: (array zero-terminated=1): Pointer to inline XPM data.
+ *
+ * Creates a new pixbuf by parsing XPM data in memory.
+ *
+ * This data is commonly the result of including an XPM file into a
+ * program's C source.
+ *
+ * Return value: A newly-created pixbuf
+ **/
+GdkPixbuf *
+gdk_pixbuf_new_from_xpm_data (const char **data)
+{
+        GdkPixbuf *(* load_xpm_data) (const char **data);
+        GdkPixbuf *pixbuf;
+        GError *error = NULL;
+        GdkPixbufModule *xpm_module;
+
+        g_return_val_if_fail (data != NULL, NULL);
+
+        xpm_module = _gdk_pixbuf_get_named_module ("xpm", &error);
+        if (xpm_module == NULL) {
+                g_warning ("Error loading XPM image loader: %s", error->message);
+                g_error_free (error);
+                return NULL;
+        }
+
+        if (!_gdk_pixbuf_load_module (xpm_module, &error)) {
+                g_warning ("Error loading XPM image loader: %s", error->message);
+                g_error_free (error);
+                return NULL;
+        }
+
+        if (xpm_module->load_xpm_data == NULL) {
+                g_warning ("gdk-pixbuf XPM module lacks XPM data capability");
+                pixbuf = NULL;
+        } else {
+                load_xpm_data = xpm_module->load_xpm_data;
+                pixbuf = (* load_xpm_data) (data);
+        }
+
+        return pixbuf;
+}
+
+static void
+collect_save_options (va_list   opts,
+                      gchar  ***keys,
+                      gchar  ***vals)
+{
+  gchar *key;
+  gchar *val;
+  gchar *next;
+  gint count;
+
+  count = 0;
+  *keys = NULL;
+  *vals = NULL;
+  
+  next = va_arg (opts, gchar*);
+  while (next)
+    {
+      key = next;
+      val = va_arg (opts, gchar*);
+
+      ++count;
+
+      /* woo, slow */
+      *keys = g_realloc (*keys, sizeof(gchar*) * (count + 1));
+      *vals = g_realloc (*vals, sizeof(gchar*) * (count + 1));
+      
+      (*keys)[count-1] = g_strdup (key);
+      (*vals)[count-1] = g_strdup (val);
+
+      (*keys)[count] = NULL;
+      (*vals)[count] = NULL;
+      
+      next = va_arg (opts, gchar*);
+    }
+}
+
+static gboolean
+save_to_file_callback (const gchar *buf,
+                       gsize        count,
+                       GError     **error,
+                       gpointer     data)
+{
+        FILE *filehandle = data;
+        gsize n;
+
+        n = fwrite (buf, 1, count, filehandle);
+        if (n != count) {
+                gint save_errno = errno;
+                g_set_error (error,
+                             G_FILE_ERROR,
+                             g_file_error_from_errno (save_errno),
+                             _("Error writing to image file: %s"),
+                             g_strerror (save_errno));
+                return FALSE;
+        }
+        return TRUE;
+}
+
+static gboolean
+gdk_pixbuf_real_save (GdkPixbuf     *pixbuf, 
+                      FILE          *filehandle, 
+                      const char    *type, 
+                      gchar        **keys,
+                      gchar        **values,
+                      GError       **error)
+{
+        gboolean ret;
+        GdkPixbufModule *image_module = NULL;       
+
+        image_module = _gdk_pixbuf_get_named_module (type, error);
+
+        if (image_module == NULL)
+                return FALSE;
+       
+        if (!_gdk_pixbuf_load_module (image_module, error))
+                return FALSE;
+
+        if (image_module->save) {
+                /* save normally */
+                ret = (* image_module->save) (filehandle, pixbuf,
+                                              keys, values,
+                                              error);
+        } else if (image_module->save_to_callback) {
+                /* save with simple callback */
+                ret = (* image_module->save_to_callback) (save_to_file_callback,
+                                                          filehandle, pixbuf,
+                                                          keys, values,
+                                                          error);
+        } else {
+                /* can't save */
+                g_set_error (error,
+                             GDK_PIXBUF_ERROR,
+                             GDK_PIXBUF_ERROR_UNSUPPORTED_OPERATION,
+                             _("This build of gdk-pixbuf does not support saving the image format: %s"),
+                             type);
+                ret = FALSE;
+        }
+
+        return ret;
+}
+
+#define TMP_FILE_BUF_SIZE 4096
+
+static gboolean
+save_to_callback_with_tmp_file (GdkPixbufModule   *image_module,
+                                GdkPixbuf         *pixbuf,
+                                GdkPixbufSaveFunc  save_func,
+                                gpointer           user_data,
+                                gchar            **keys,
+                                gchar            **values,
+                                GError           **error)
+{
+        int fd;
+        FILE *f = NULL;
+        gboolean retval = FALSE;
+        gchar *buf = NULL;
+        gsize n;
+        gchar *filename = NULL;
+
+        buf = g_try_malloc (TMP_FILE_BUF_SIZE);
+        if (buf == NULL) {
+                g_set_error_literal (error,
+                                     GDK_PIXBUF_ERROR,
+                                     GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY,
+                                     _("Insufficient memory to save image to callback"));
+                goto end;
+        }
+
+        fd = g_file_open_tmp ("gdkpixbuf-save-tmp.XXXXXX", &filename, error);
+        if (fd == -1)
+                goto end;
+        f = fdopen (fd, "wb+");
+        if (f == NULL) {
+                gint save_errno = errno;
+                g_set_error_literal (error,
+                                     G_FILE_ERROR,
+                                     g_file_error_from_errno (save_errno),
+                                     _("Failed to open temporary file"));
+                goto end;
+        }
+
+        retval = (image_module->save) (f, pixbuf, keys, values, error);
+        if (!retval)
+                goto end;
+
+        rewind (f);
+        for (;;) {
+                n = fread (buf, 1, TMP_FILE_BUF_SIZE, f);
+                if (n > 0) {
+                        if (!save_func (buf, n, error, user_data))
+                                goto end;
+                }
+                if (n != TMP_FILE_BUF_SIZE) 
+                        break;
+        }
+        if (ferror (f)) {
+                gint save_errno = errno;
+                g_set_error_literal (error,
+                                     G_FILE_ERROR,
+                                     g_file_error_from_errno (save_errno),
+                                     _("Failed to read from temporary file"));
+                goto end;
+        }
+        retval = TRUE;
+
+ end:
+        /* cleanup and return retval */
+        if (f)
+                fclose (f);
+        if (filename) {
+                g_unlink (filename);
+                g_free (filename);
+        }
+        g_free (buf);
+
+        return retval;
+}
+
+static gboolean
+gdk_pixbuf_real_save_to_callback (GdkPixbuf         *pixbuf,
+                                  GdkPixbufSaveFunc  save_func,
+                                  gpointer           user_data,
+                                  const char        *type, 
+                                  gchar            **keys,
+                                  gchar            **values,
+                                  GError           **error)
+{
+        gboolean ret;
+        GdkPixbufModule *image_module = NULL;       
+
+        image_module = _gdk_pixbuf_get_named_module (type, error);
+
+        if (image_module == NULL)
+                return FALSE;
+       
+        if (!_gdk_pixbuf_load_module (image_module, error))
+                return FALSE;
+
+        if (image_module->save_to_callback) {
+                /* save normally */
+                ret = (* image_module->save_to_callback) (save_func, user_data, 
+                                                          pixbuf, keys, values,
+                                                          error);
+        } else if (image_module->save) {
+                /* use a temporary file */
+                ret = save_to_callback_with_tmp_file (image_module, pixbuf,
+                                                      save_func, user_data, 
+                                                      keys, values,
+                                                      error);
+        } else {
+                /* can't save */
+                g_set_error (error,
+                             GDK_PIXBUF_ERROR,
+                             GDK_PIXBUF_ERROR_UNSUPPORTED_OPERATION,
+                             _("This build of gdk-pixbuf does not support saving the image format: %s"),
+                             type);
+                ret = FALSE;
+        }
+
+        return ret;
+}
+
+ 
+/**
+ * gdk_pixbuf_save:
+ * @pixbuf: a `GdkPixbuf`.
+ * @filename: (type filename): name of file to save.
+ * @type: name of file format.
+ * @error: (nullable): return location for error
+ * @...: list of key-value save options, followed by `NULL`
+ *
+ * Saves pixbuf to a file in format @type. By default, "jpeg", "png", "ico" 
+ * and "bmp" are possible file formats to save in, but more formats may be
+ * installed. The list of all writable formats can be determined in the 
+ * following way:
+ *
+ * ```c
+ * void add_if_writable (GdkPixbufFormat *data, GSList **list)
+ * {
+ *   if (gdk_pixbuf_format_is_writable (data))
+ *     *list = g_slist_prepend (*list, data);
+ * }
+ * 
+ * GSList *formats = gdk_pixbuf_get_formats ();
+ * GSList *writable_formats = NULL;
+ * g_slist_foreach (formats, add_if_writable, &writable_formats);
+ * g_slist_free (formats);
+ * ```
+ *
+ * If `error` is set, `FALSE` will be returned. Possible errors include
+ * those in the `GDK_PIXBUF_ERROR` domain and those in the `G_FILE_ERROR`
+ * domain.
+ *
+ * The variable argument list should be `NULL`-terminated; if not empty,
+ * it should contain pairs of strings that modify the save
+ * parameters. For example:
+ *
+ * ```c
+ * gdk_pixbuf_save (pixbuf, handle, "jpeg", &error, "quality", "100", NULL);
+ * ```
+ *
+ * Currently only few parameters exist.
+ *
+ * JPEG images can be saved with a "quality" parameter; its value should be
+ * in the range `[0, 100]`. JPEG and PNG density can be set by setting the
+ * "x-dpi" and "y-dpi" parameters to the appropriate values in dots per inch.
+ *
+ * Text chunks can be attached to PNG images by specifying parameters of
+ * the form "tEXt::key", where key is an ASCII string of length 1-79.
+ * The values are UTF-8 encoded strings. The PNG compression level can
+ * be specified using the "compression" parameter; it's value is in an
+ * integer in the range of `[0, 9]`.
+ *
+ * ICC color profiles can also be embedded into PNG, JPEG and TIFF images.
+ * The "icc-profile" value should be the complete ICC profile encoded
+ * into base64.
+ *
+ * ```c
+ * char *contents;
+ * gsize length;
+ *
+ * // icm_path is set elsewhere
+ * g_file_get_contents (icm_path, &contents, &length, NULL);
+ *
+ * char *contents_encode = g_base64_encode ((const guchar *) contents, length);
+ *
+ * gdk_pixbuf_save (pixbuf, handle, "png", &error, "icc-profile", contents_encode, NULL);
+ * ```
+ *
+ * TIFF images recognize:
+ *
+ *  1. a "bits-per-sample" option (integer) which can be either 1 for saving
+ *     bi-level CCITTFAX4 images, or 8 for saving 8-bits per sample
+ *  2. a "compression" option (integer) which can be 1 for no compression,
+ *     2 for Huffman, 5 for LZW, 7 for JPEG and 8 for DEFLATE (see the libtiff
+ *     documentation and tiff.h for all supported codec values)
+ *  3. an "icc-profile" option (zero-terminated string) containing a base64
+ *     encoded ICC color profile.
+ *
+ * ICO images can be saved in depth 16, 24, or 32, by using the "depth"
+ * parameter. When the ICO saver is given "x_hot" and "y_hot" parameters,
+ * it produces a CUR instead of an ICO.
+ *
+ * Return value: `TRUE` on success, and `FALSE` otherwise
+ **/
+gboolean
+gdk_pixbuf_save (GdkPixbuf  *pixbuf, 
+                 const char *filename, 
+                 const char *type, 
+                 GError    **error,
+                 ...)
+{
+        gchar **keys = NULL;
+        gchar **values = NULL;
+        va_list args;
+        gboolean result;
+
+        g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+        
+        va_start (args, error);
+        
+        collect_save_options (args, &keys, &values);
+        
+        va_end (args);
+
+        result = gdk_pixbuf_savev (pixbuf, filename, type,
+                                   keys, values,
+                                   error);
+
+        g_strfreev (keys);
+        g_strfreev (values);
+
+        return result;
+}
+
+/**
+ * gdk_pixbuf_savev:
+ * @pixbuf: a `GdkPixbuf`.
+ * @filename: (type filename): name of file to save.
+ * @type: name of file format.
+ * @option_keys: (array zero-terminated=1) (element-type utf8) (nullable): name of options to set
+ * @option_values: (array zero-terminated=1) (element-type utf8) (nullable): values for named options
+ * @error: (allow-none): return location for error, or `NULL`
+ *
+ * Vector version of `gdk_pixbuf_save()`.
+ *
+ * Saves pixbuf to a file in `type`, which is currently "jpeg", "png", "tiff", "ico" or "bmp".
+ *
+ * If @error is set, `FALSE` will be returned.
+ *
+ * See [method@GdkPixbuf.Pixbuf.save] for more details.
+ *
+ * Return value: whether an error was set
+ **/
+
+gboolean
+gdk_pixbuf_savev (GdkPixbuf  *pixbuf, 
+                  const char *filename, 
+                  const char *type,
+                  char      **option_keys,
+                  char      **option_values,
+                  GError    **error)
+{
+        FILE *f = NULL;
+        gboolean result;
+       
+        g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), FALSE);
+        g_return_val_if_fail (gdk_pixbuf_get_width (pixbuf) >= 0, FALSE);
+        g_return_val_if_fail (gdk_pixbuf_get_height (pixbuf) >= 0, FALSE);
+        g_return_val_if_fail (gdk_pixbuf_get_n_channels (pixbuf) >= 0, FALSE);
+        g_return_val_if_fail (filename != NULL, FALSE);
+        g_return_val_if_fail (type != NULL, FALSE);
+        g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+       
+        f = g_fopen (filename, "wb");
+        
+        if (f == NULL) {
+                gint save_errno = errno;
+                gchar *display_name = g_filename_display_name (filename);
+                g_set_error (error,
+                             G_FILE_ERROR,
+                             g_file_error_from_errno (save_errno),
+                             _("Failed to open “%s” for writing: %s"),
+                             display_name,
+                             g_strerror (save_errno));
+                g_free (display_name);
+                return FALSE;
+        }
+
+       
+       result = gdk_pixbuf_real_save (pixbuf, f, type,
+                                      option_keys, option_values,
+                                      error);
+       
+       
+       if (!result) {
+               g_return_val_if_fail (error == NULL || *error != NULL, FALSE);
+               fclose (f);
+               g_unlink (filename);
+               return FALSE;
+       }
+
+       if (fclose (f) < 0) {
+               gint save_errno = errno;
+               gchar *display_name = g_filename_display_name (filename);
+               g_set_error (error,
+                            G_FILE_ERROR,
+                            g_file_error_from_errno (save_errno),
+                            _("Failed to close “%s” while writing image, all data may not have been saved: %s"),
+                            display_name,
+                            g_strerror (save_errno));
+               g_free (display_name);
+               return FALSE;
+       }
+       
+       return TRUE;
+}
+
+#ifdef G_OS_WIN32
+
+/**
+ * gdk_pixbuf_savev_utf8:
+ * @pixbuf: a `GdkPixbuf`.
+ * @filename: name of file to save.
+ * @type: name of file format.
+ * @option_keys: (array zero-terminated=1) (element-type utf8) (nullable): name of options to set
+ * @option_values: (array zero-terminated=1) (element-type utf8) (nullable): values for named options
+ * @error: (allow-none): return location for error, or `NULL`
+ *
+ * Same as gdk_pixbuf_savev()
+ *
+ * Return value: whether an error was set
+ **/
+gboolean
+gdk_pixbuf_savev_utf8 (GdkPixbuf  *pixbuf,
+                       const char *filename,
+                       const char *type,
+                       char      **option_keys,
+                       char      **option_values,
+                       GError    **error)
+{
+    return gdk_pixbuf_savev (pixbuf, filename, type, option_keys,
+                             option_values, error);
+}
+
+#endif
+
+/**
+ * gdk_pixbuf_save_to_callback:
+ * @pixbuf: a `GdkPixbuf`.
+ * @save_func: (scope call): a function that is called to save each block of data that
+ *   the save routine generates.
+ * @user_data: user data to pass to the save function.
+ * @type: name of file format.
+ * @error: (allow-none): return location for error, or `NULL`
+ * @...: list of key-value save options
+ *
+ * Saves pixbuf in format `type` by feeding the produced data to a
+ * callback.
+ *
+ * This function can be used when you want to store the image to something
+ * other than a file, such as an in-memory buffer or a socket.
+ *
+ * If @error is set, `FALSE` will be returned. Possible errors
+ * include those in the `GDK_PIXBUF_ERROR` domain and whatever the save
+ * function generates.
+ *
+ * See [method@GdkPixbuf.Pixbuf.save] for more details.
+ *
+ * Return value: whether an error was set
+ *
+ * Since: 2.4
+ **/
+gboolean
+gdk_pixbuf_save_to_callback    (GdkPixbuf  *pixbuf,
+                                GdkPixbufSaveFunc save_func,
+                                gpointer user_data,
+                                const char *type, 
+                                GError    **error,
+                                ...)
+{
+        gchar **keys = NULL;
+        gchar **values = NULL;
+        va_list args;
+        gboolean result;
+        
+        g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+        
+        va_start (args, error);
+        
+        collect_save_options (args, &keys, &values);
+        
+        va_end (args);
+
+        result = gdk_pixbuf_save_to_callbackv (pixbuf, save_func, user_data,
+                                               type, keys, values,
+                                               error);
+
+        g_strfreev (keys);
+        g_strfreev (values);
+
+        return result;
+}
+
+/**
+ * gdk_pixbuf_save_to_callbackv:
+ * @pixbuf: a `GdkPixbuf`.
+ * @save_func: (scope call): a function that is called to save each block of data that
+ *   the save routine generates.
+ * @user_data: (closure): user data to pass to the save function.
+ * @type: name of file format.
+ * @option_keys: (array zero-terminated=1) (element-type utf8) (nullable): name of options to set
+ * @option_values: (array zero-terminated=1) (element-type utf8) (nullable): values for named options
+ * @error: (allow-none): return location for error, or `NULL`
+ *
+ * Vector version of `gdk_pixbuf_save_to_callback()`.
+ *
+ * Saves pixbuf to a callback in format @type, which is currently "jpeg",
+ * "png", "tiff", "ico" or "bmp".
+ *
+ * If @error is set, `FALSE` will be returned.
+ *
+ * See [method@GdkPixbuf.Pixbuf.save_to_callback] for more details.
+ *
+ * Return value: whether an error was set
+ *
+ * Since: 2.4
+ **/
+gboolean
+gdk_pixbuf_save_to_callbackv   (GdkPixbuf  *pixbuf, 
+                                GdkPixbufSaveFunc save_func,
+                                gpointer user_data,
+                                const char *type,
+                                char      **option_keys,
+                                char      **option_values,
+                                GError    **error)
+{
+        gboolean result;
+        
+        g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), FALSE);
+        g_return_val_if_fail (gdk_pixbuf_get_width (pixbuf) >= 0, FALSE);
+        g_return_val_if_fail (gdk_pixbuf_get_height (pixbuf) >= 0, FALSE);
+        g_return_val_if_fail (gdk_pixbuf_get_n_channels (pixbuf) >= 0, FALSE);
+        g_return_val_if_fail (save_func != NULL, FALSE);
+        g_return_val_if_fail (type != NULL, FALSE);
+        g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+       
+       result = gdk_pixbuf_real_save_to_callback (pixbuf,
+                                                  save_func, user_data, type,
+                                                  option_keys, option_values,
+                                                  error);
+       
+       if (!result) {
+               g_return_val_if_fail (error == NULL || *error != NULL, FALSE);
+               return FALSE;
+       }
+
+       return TRUE;
+}
+
+/**
+ * gdk_pixbuf_save_to_buffer:
+ * @pixbuf: a `GdkPixbuf`.
+ * @buffer: (array length=buffer_size) (out) (element-type guint8): location to receive a pointer
+ *   to the new buffer.
+ * @buffer_size: location to receive the size of the new buffer.
+ * @type: name of file format.
+ * @error: (allow-none): return location for error, or `NULL`
+ * @...: list of key-value save options
+ *
+ * Saves pixbuf to a new buffer in format `type`, which is currently "jpeg",
+ * "png", "tiff", "ico" or "bmp".
+ *
+ * This is a convenience function that uses `gdk_pixbuf_save_to_callback()`
+ * to do the real work.
+ *
+ * Note that the buffer is not `NUL`-terminated and may contain embedded `NUL`
+ * characters.
+ *
+ * If @error is set, `FALSE` will be returned and @buffer will be set to
+ * `NULL`. Possible errors include those in the `GDK_PIXBUF_ERROR`
+ * domain.
+ *
+ * See `gdk_pixbuf_save()` for more details.
+ *
+ * Return value: whether an error was set
+ *
+ * Since: 2.4
+ **/
+gboolean
+gdk_pixbuf_save_to_buffer      (GdkPixbuf  *pixbuf,
+                                gchar     **buffer,
+                                gsize      *buffer_size,
+                                const char *type, 
+                                GError    **error,
+                                ...)
+{
+        gchar **keys = NULL;
+        gchar **values = NULL;
+        va_list args;
+        gboolean result;
+        
+        g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+        
+        va_start (args, error);
+        
+        collect_save_options (args, &keys, &values);
+        
+        va_end (args);
+
+        result = gdk_pixbuf_save_to_bufferv (pixbuf, buffer, buffer_size,
+                                             type, keys, values,
+                                             error);
+
+        g_strfreev (keys);
+        g_strfreev (values);
+
+        return result;
+}
+
+struct SaveToBufferData {
+        gchar *buffer;
+        gsize len, max;
+};
+
+static gboolean
+save_to_buffer_callback (const gchar *data,
+                         gsize count,
+                         GError **error,
+                         gpointer user_data)
+{
+        struct SaveToBufferData *sdata = user_data;
+        gchar *new_buffer;
+        gsize new_max;
+
+        if (sdata->len + count > sdata->max) {
+                new_max = MAX (sdata->max*2, sdata->len + count);
+                new_buffer = g_try_realloc (sdata->buffer, new_max);
+                if (!new_buffer) {
+                        g_set_error_literal (error,
+                                             GDK_PIXBUF_ERROR,
+                                             GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY,
+                                             _("Insufficient memory to save image into a buffer"));
+                        return FALSE;
+                }
+                sdata->buffer = new_buffer;
+                sdata->max = new_max;
+        }
+        memcpy (sdata->buffer + sdata->len, data, count);
+        sdata->len += count;
+        return TRUE;
+}
+
+/**
+ * gdk_pixbuf_save_to_bufferv:
+ * @pixbuf: a `GdkPixbuf`.
+ * @buffer: (array length=buffer_size) (out) (element-type guint8):
+ *   location to receive a pointer to the new buffer.
+ * @buffer_size: location to receive the size of the new buffer.
+ * @type: name of file format.
+ * @option_keys: (array zero-terminated=1) (element-type utf8) (nullable): name of options to set
+ * @option_values: (array zero-terminated=1) (element-type utf8) (nullable): values for named options
+ * @error: (allow-none): return location for error, or `NULL`
+ *
+ * Vector version of `gdk_pixbuf_save_to_buffer()`.
+ *
+ * Saves pixbuf to a new buffer in format @type, which is currently "jpeg",
+ * "tiff", "png", "ico" or "bmp".
+ *
+ * See [method@GdkPixbuf.Pixbuf.save_to_buffer] for more details.
+ *
+ * Return value: whether an error was set
+ *
+ * Since: 2.4
+ **/
+gboolean
+gdk_pixbuf_save_to_bufferv     (GdkPixbuf  *pixbuf,
+                                gchar     **buffer,
+                                gsize      *buffer_size,
+                                const char *type, 
+                                char      **option_keys,
+                                char      **option_values,
+                                GError    **error)
+{
+        static const gint initial_max = 1024;
+        struct SaveToBufferData sdata;
+
+        *buffer = NULL;
+        *buffer_size = 0;
+
+        sdata.buffer = g_try_malloc (initial_max);
+        sdata.max = initial_max;
+        sdata.len = 0;
+        if (!sdata.buffer) {
+                g_set_error_literal (error,
+                                     GDK_PIXBUF_ERROR,
+                                     GDK_PIXBUF_ERROR_INSUFFICIENT_MEMORY,
+                                     _("Insufficient memory to save image into a buffer"));
+                return FALSE;
+        }
+
+        if (!gdk_pixbuf_save_to_callbackv (pixbuf,
+                                           save_to_buffer_callback, &sdata,
+                                           type, option_keys, option_values,
+                                           error)) {
+                g_free (sdata.buffer);
+                return FALSE;
+        }
+
+        *buffer = sdata.buffer;
+        *buffer_size = sdata.len;
+        return TRUE;
+}
+
+typedef struct {
+        GOutputStream *stream;
+        GCancellable  *cancellable;
+} SaveToStreamData;
+
+static gboolean
+save_to_stream (const gchar  *buffer,
+                gsize         count,
+                GError      **error,
+                gpointer      data)
+{
+        SaveToStreamData *sdata = (SaveToStreamData *)data;
+        gsize remaining;
+        gssize written;
+        GError *my_error = NULL;
+
+        remaining = count;
+        written = 0;
+        while (remaining > 0) {
+                buffer += written;
+                remaining -= written;
+                written = g_output_stream_write (sdata->stream, 
+                                                 buffer, remaining, 
+                                                 sdata->cancellable, 
+                                                 &my_error);
+                if (written < 0) {
+                        if (!my_error) {
+                                g_set_error_literal (error,
+                                                     G_IO_ERROR, 0,
+                                                     _("Error writing to image stream"));
+                        }
+                        else {
+                                g_propagate_error (error, my_error);
+                        }
+                        return FALSE;
+                }
+        }
+
+        return TRUE;
+}
+
+/**
+ * gdk_pixbuf_save_to_streamv:
+ * @pixbuf: a `GdkPixbuf`
+ * @stream: a `GOutputStream` to save the pixbuf to
+ * @type: name of file format
+ * @option_keys: (array zero-terminated=1) (element-type utf8) (nullable): name of options to set
+ * @option_values: (array zero-terminated=1) (element-type utf8) (nullable): values for named options
+ * @cancellable: (nullable): optional `GCancellable` object, `NULL` to ignore
+ * @error: return location for error
+ *
+ * Saves `pixbuf` to an output stream.
+ *
+ * Supported file formats are currently "jpeg", "tiff", "png", "ico" or
+ * "bmp".
+ *
+ * See [method@GdkPixbuf.Pixbuf.save_to_stream] for more details.
+ *
+ * Returns: `TRUE` if the pixbuf was saved successfully, `FALSE` if an
+ *   error was set.
+ *
+ * Since: 2.36
+ */
+gboolean
+gdk_pixbuf_save_to_streamv (GdkPixbuf      *pixbuf,
+                            GOutputStream  *stream,
+                            const char     *type,
+                            char          **option_keys,
+                            char          **option_values,
+                            GCancellable   *cancellable,
+                            GError        **error)
+{
+        SaveToStreamData data;
+
+        data.stream = stream;
+        data.cancellable = cancellable;
+
+        return gdk_pixbuf_save_to_callbackv (pixbuf, save_to_stream,
+                                             &data, type,
+                                             option_keys, option_values,
+                                             error);
+}
+
+/**
+ * gdk_pixbuf_save_to_stream:
+ * @pixbuf: a `GdkPixbuf`
+ * @stream: a `GOutputStream` to save the pixbuf to
+ * @type: name of file format
+ * @cancellable: (allow-none): optional `GCancellable` object, `NULL` to ignore
+ * @error: (allow-none): return location for error, or `NULL`
+ * @...: list of key-value save options
+ *
+ * Saves `pixbuf` to an output stream.
+ *
+ * Supported file formats are currently "jpeg", "tiff", "png", "ico" or 
+ * "bmp". See `gdk_pixbuf_save_to_buffer()` for more details.
+ *
+ * The `cancellable` can be used to abort the operation from another
+ * thread. If the operation was cancelled, the error `G_IO_ERROR_CANCELLED`
+ * will be returned. Other possible errors are in the `GDK_PIXBUF_ERROR`
+ * and `G_IO_ERROR` domains.
+ *
+ * The stream is not closed at the end of this call.
+ *
+ * Returns: `TRUE` if the pixbuf was saved successfully, `FALSE` if an
+ *   error was set.
+ *
+ * Since: 2.14
+ */
+gboolean
+gdk_pixbuf_save_to_stream (GdkPixbuf      *pixbuf,
+                           GOutputStream  *stream,
+                           const char     *type,
+                           GCancellable   *cancellable,
+                           GError        **error,
+                           ...)
+{
+        gboolean res;
+        gchar **keys = NULL;
+        gchar **values = NULL;
+        va_list args;
+
+        va_start (args, error);
+        collect_save_options (args, &keys, &values);
+        va_end (args);
+
+        res = gdk_pixbuf_save_to_streamv (pixbuf, stream, type,
+                                          keys, values,
+                                          cancellable, error);
+
+        g_strfreev (keys);
+        g_strfreev (values);
+
+        return res;
+}
+
+typedef struct {
+	GOutputStream *stream;
+	gchar *type;
+	gchar **keys;
+	gchar **values;
+} SaveToStreamAsyncData;
+
+static void
+save_to_stream_async_data_free (SaveToStreamAsyncData *data)
+{
+	if (data->stream)
+		g_object_unref (data->stream);
+	g_strfreev (data->keys);
+	g_strfreev (data->values);
+	g_free (data->type);
+	g_slice_free (SaveToStreamAsyncData, data);
+}
+
+static void
+save_to_stream_thread (GTask                 *task,
+		       GdkPixbuf             *pixbuf,
+		       SaveToStreamAsyncData *data,
+		       GCancellable          *cancellable)
+{
+	SaveToStreamData sync_data;
+	gboolean retval;
+	GError *error = NULL;
+
+	sync_data.stream = data->stream;
+	sync_data.cancellable = cancellable;
+
+	retval = gdk_pixbuf_save_to_callbackv (pixbuf, save_to_stream,
+					       &sync_data, data->type,
+					       data->keys, data->values,
+					       &error);
+
+	if (retval == FALSE) {
+		g_task_return_error (task, error);
+	} else {
+		g_task_return_boolean (task, TRUE);
+	}
+}
+
+/**
+ * gdk_pixbuf_save_to_streamv_async:
+ * @pixbuf: a `GdkPixbuf`
+ * @stream: a `GOutputStream` to which to save the pixbuf
+ * @type: name of file format
+ * @option_keys: (array zero-terminated=1) (element-type utf8) (nullable): name of options to set
+ * @option_values: (array zero-terminated=1) (element-type utf8) (nullable): values for named options
+ * @cancellable: (allow-none): optional `GCancellable` object, `NULL` to ignore
+ * @callback: a `GAsyncReadyCallback` to call when the pixbuf is saved
+ * @user_data: the data to pass to the callback function
+ *
+ * Saves `pixbuf` to an output stream asynchronously.
+ *
+ * For more details see gdk_pixbuf_save_to_streamv(), which is the synchronous
+ * version of this function.
+ *
+ * When the operation is finished, `callback` will be called in the main thread.
+ *
+ * You can then call gdk_pixbuf_save_to_stream_finish() to get the result of
+ * the operation.
+ *
+ * Since: 2.36
+ **/
+void
+gdk_pixbuf_save_to_streamv_async (GdkPixbuf           *pixbuf,
+                                  GOutputStream       *stream,
+                                  const gchar         *type,
+                                  gchar              **option_keys,
+                                  gchar              **option_values,
+                                  GCancellable        *cancellable,
+                                  GAsyncReadyCallback  callback,
+                                  gpointer             user_data)
+{
+        GTask *task;
+        SaveToStreamAsyncData *data;
+
+        g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
+        g_return_if_fail (gdk_pixbuf_get_width (pixbuf) >= 0);
+        g_return_if_fail (gdk_pixbuf_get_height (pixbuf) >= 0);
+        g_return_if_fail (gdk_pixbuf_get_n_channels (pixbuf) >= 0);
+        g_return_if_fail (G_IS_OUTPUT_STREAM (stream));
+        g_return_if_fail (type != NULL);
+        g_return_if_fail (callback != NULL);
+        g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
+
+        data = g_slice_new (SaveToStreamAsyncData);
+        data->stream = g_object_ref (stream);
+        data->type = g_strdup (type);
+        data->keys = g_strdupv (option_keys);
+        data->values = g_strdupv (option_values);
+
+        task = g_task_new (pixbuf, cancellable, callback, user_data);
+        g_task_set_source_tag (task, gdk_pixbuf_save_to_streamv_async);
+        g_task_set_task_data (task, data, (GDestroyNotify) save_to_stream_async_data_free);
+        g_task_run_in_thread (task, (GTaskThreadFunc) save_to_stream_thread);
+        g_object_unref (task);
+}
+
+/**
+ * gdk_pixbuf_save_to_stream_async:
+ * @pixbuf: a `GdkPixbuf`
+ * @stream: a `GOutputStream` to which to save the pixbuf
+ * @type: name of file format
+ * @cancellable: (allow-none): optional `GCancellable` object, `NULL` to ignore
+ * @callback: a `GAsyncReadyCallback` to call when the pixbuf is saved
+ * @user_data: the data to pass to the callback function
+ * @...: list of key-value save options
+ *
+ * Saves `pixbuf` to an output stream asynchronously.
+ *
+ * For more details see gdk_pixbuf_save_to_stream(), which is the synchronous
+ * version of this function.
+ *
+ * When the operation is finished, `callback` will be called in the main thread.
+ *
+ * You can then call gdk_pixbuf_save_to_stream_finish() to get the result of
+ * the operation.
+ *
+ * Since: 2.24
+ **/
+void
+gdk_pixbuf_save_to_stream_async (GdkPixbuf           *pixbuf,
+				 GOutputStream       *stream,
+				 const gchar         *type,
+				 GCancellable        *cancellable,
+				 GAsyncReadyCallback  callback,
+				 gpointer             user_data,
+				 ...)
+{
+        gchar **keys = NULL;
+        gchar **values = NULL;
+        va_list args;
+
+        g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
+        g_return_if_fail (gdk_pixbuf_get_width (pixbuf) >= 0);
+        g_return_if_fail (gdk_pixbuf_get_height (pixbuf) >= 0);
+        g_return_if_fail (gdk_pixbuf_get_n_channels (pixbuf) >= 0);
+        g_return_if_fail (G_IS_OUTPUT_STREAM (stream));
+        g_return_if_fail (type != NULL);
+        g_return_if_fail (callback != NULL);
+        g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable));
+
+        va_start (args, user_data);
+        collect_save_options (args, &keys, &values);
+        va_end (args);
+
+        gdk_pixbuf_save_to_streamv_async (pixbuf, stream, type,
+                                          keys, values,
+                                          cancellable, callback, user_data);
+        g_strfreev (keys);
+        g_strfreev (values);
+}
+
+/**
+ * gdk_pixbuf_save_to_stream_finish:
+ * @async_result: a `GAsyncResult`
+ * @error: a `GError`, or `NULL`
+ *
+ * Finishes an asynchronous pixbuf save operation started with
+ * gdk_pixbuf_save_to_stream_async().
+ *
+ * Return value: `TRUE` if the pixbuf was saved successfully, `FALSE` if an error was set.
+ *
+ * Since: 2.24
+ **/
+gboolean
+gdk_pixbuf_save_to_stream_finish (GAsyncResult  *async_result,
+				  GError       **error)
+{
+	GTask *task;
+
+	/* Can not use g_task_is_valid because our GTask has a
+	 * source_object which is not available to us anymore.
+	 */
+	g_return_val_if_fail (G_IS_TASK (async_result), FALSE);
+
+	task = G_TASK (async_result);
+
+	g_return_val_if_fail (!error || (error && !*error), FALSE);
+	g_warn_if_fail (g_task_get_source_tag (task) == gdk_pixbuf_save_to_stream_async ||
+			g_task_get_source_tag (task) == gdk_pixbuf_save_to_streamv_async);
+
+	return g_task_propagate_boolean (task, error);
+}
+
+/**
+ * gdk_pixbuf_format_get_name:
+ * @format: a `GdkPixbufFormat`
+ *
+ * Returns the name of the format.
+ * 
+ * Return value: the name of the format. 
+ *
+ * Since: 2.2
+ */
+gchar *
+gdk_pixbuf_format_get_name (GdkPixbufFormat *format)
+{
+        g_return_val_if_fail (format != NULL, NULL);
+
+        return g_strdup (format->name);
+}
+
+/**
+ * gdk_pixbuf_format_get_description:
+ * @format: a `GdkPixbufFormat`
+ *
+ * Returns a description of the format.
+ * 
+ * Return value: a description of the format.
+ *
+ * Since: 2.2
+ */
+gchar *
+gdk_pixbuf_format_get_description (GdkPixbufFormat *format)
+{
+        gchar *domain;
+        const gchar *description;
+        g_return_val_if_fail (format != NULL, NULL);
+
+        if (format->domain != NULL) 
+                domain = format->domain;
+        else 
+                domain = GETTEXT_PACKAGE;
+        description = g_dgettext (domain, format->description);
+
+        return g_strdup (description);
+}
+
+/**
+ * gdk_pixbuf_format_get_mime_types:
+ * @format: a `GdkPixbufFormat`
+ *
+ * Returns the mime types supported by the format.
+ * 
+ * Return value: (transfer full) (array zero-terminated=1): an array of mime types
+ *
+ * Since: 2.2
+ */
+gchar **
+gdk_pixbuf_format_get_mime_types (GdkPixbufFormat *format)
+{
+        g_return_val_if_fail (format != NULL, NULL);
+
+        return g_strdupv (format->mime_types);
+}
+
+/**
+ * gdk_pixbuf_format_get_extensions:
+ * @format: a `GdkPixbufFormat`
+ *
+ * Returns the filename extensions typically used for files in the 
+ * given format.
+ * 
+ * Return value: (transfer full) (array zero-terminated=1): an array of
+ *   filename extensions
+ *
+ * Since: 2.2
+ */
+gchar **
+gdk_pixbuf_format_get_extensions (GdkPixbufFormat *format)
+{
+        g_return_val_if_fail (format != NULL, NULL);
+
+        return g_strdupv (format->extensions);
+}
+
+/**
+ * gdk_pixbuf_format_is_writable:
+ * @format: a `GdkPixbufFormat`
+ *
+ * Returns whether pixbufs can be saved in the given format.
+ * 
+ * Return value: whether pixbufs can be saved in the given format.
+ *
+ * Since: 2.2
+ */
+gboolean
+gdk_pixbuf_format_is_writable (GdkPixbufFormat *format)
+{
+        g_return_val_if_fail (format != NULL, FALSE);
+
+        return (format->flags & GDK_PIXBUF_FORMAT_WRITABLE) != 0;
+}
+
+/**
+ * gdk_pixbuf_format_is_scalable:
+ * @format: a `GdkPixbufFormat`
+ *
+ * Returns whether this image format is scalable.
+ *
+ * If a file is in a scalable format, it is preferable to load it at
+ * the desired size, rather than loading it at the default size and
+ * scaling the resulting pixbuf to the desired size.
+ * 
+ * Return value: whether this image format is scalable.
+ *
+ * Since: 2.6
+ */
+gboolean
+gdk_pixbuf_format_is_scalable (GdkPixbufFormat *format)
+{
+        g_return_val_if_fail (format != NULL, FALSE);
+
+        return (format->flags & GDK_PIXBUF_FORMAT_SCALABLE) != 0;
+}
+
+/**
+ * gdk_pixbuf_format_is_disabled:
+ * @format: a `GdkPixbufFormat`
+ *
+ * Returns whether this image format is disabled.
+ *
+ * See gdk_pixbuf_format_set_disabled().
+ * 
+ * Return value: whether this image format is disabled.
+ *
+ * Since: 2.6
+ */
+gboolean   
+gdk_pixbuf_format_is_disabled (GdkPixbufFormat *format)
+{
+        g_return_val_if_fail (format != NULL, FALSE);
+
+        return format->disabled;        
+}
+
+/**
+ * gdk_pixbuf_format_set_disabled:
+ * @format: a `GdkPixbufFormat`
+ * @disabled: `TRUE` to disable the format @format
+ *
+ * Disables or enables an image format.
+ *
+ * If a format is disabled, GdkPixbuf won't use the image loader for
+ * this format to load images.
+ *
+ * Applications can use this to avoid using image loaders with an
+ * inappropriate license, see gdk_pixbuf_format_get_license().
+ *
+ * Since: 2.6
+ */
+void 
+gdk_pixbuf_format_set_disabled (GdkPixbufFormat *format,
+                                gboolean         disabled)
+{
+        g_return_if_fail (format != NULL);
+        
+        format->disabled = disabled != FALSE;
+}
+
+/**
+ * gdk_pixbuf_format_get_license:
+ * @format: a pixbuf format
+ *
+ * Returns information about the license of the image loader for the format.
+ *
+ * The returned string should be a shorthand for a well known license, e.g.
+ * "LGPL", "GPL", "QPL", "GPL/QPL", or "other" to indicate some other license.
+ *
+ * Returns: (transfer full): a string describing the license of the pixbuf format
+ *
+ * Since: 2.6
+ */
+gchar*
+gdk_pixbuf_format_get_license (GdkPixbufFormat *format)
+{
+        g_return_val_if_fail (format != NULL, NULL);
+
+        return g_strdup (format->license);
+}
+
+GdkPixbufFormat *
+_gdk_pixbuf_get_format (GdkPixbufModule *module)
+{
+        g_return_val_if_fail (module != NULL, NULL);
+
+        return module->info;
+}
+
+/**
+ * gdk_pixbuf_get_formats:
+ *
+ * Obtains the available information about the image formats supported
+ * by GdkPixbuf.
+ *
+ * Returns: (transfer container) (element-type GdkPixbufFormat): A list of
+ *   support image formats.
+ *
+ * Since: 2.2
+ */
+GSList *
+gdk_pixbuf_get_formats (void)
+{
+        GSList *result = NULL;
+        GSList *modules;
+
+        for (modules = get_file_formats (); modules; modules = g_slist_next (modules)) {
+                GdkPixbufModule *module = (GdkPixbufModule *)modules->data;
+                GdkPixbufFormat *info = _gdk_pixbuf_get_format (module);
+                result = g_slist_prepend (result, info);
+        }
+
+        return result;
+}
+
+/**
+ * gdk_pixbuf_format_copy:
+ * @format: a pixbuf format
+ *
+ * Creates a copy of `format`.
+ *
+ * Return value: the newly allocated copy of a `GdkPixbufFormat`. Use
+ *   gdk_pixbuf_format_free() to free the resources when done
+ *
+ * Since: 2.22
+ */
+GdkPixbufFormat *
+gdk_pixbuf_format_copy (const GdkPixbufFormat *format)
+{
+        if (G_LIKELY (format != NULL))
+                return g_slice_dup (GdkPixbufFormat, format);
+
+        return NULL;
+}
+
+/**
+ * gdk_pixbuf_format_free:
+ * @format: a pixbuf format
+ *
+ * Frees the resources allocated when copying a `GdkPixbufFormat`
+ * using gdk_pixbuf_format_copy()
+ *
+ * Since: 2.22
+ */
+void
+gdk_pixbuf_format_free (GdkPixbufFormat *format)
+{
+        if (G_LIKELY (format != NULL))
+                g_slice_free (GdkPixbufFormat, format);
+}
+
+/**
+ * gdk_pixbuf_format_is_save_option_supported:
+ * @format: a pixbuf format
+ * @option_key: the name of an option
+ *
+ * Returns `TRUE` if the save option specified by @option_key is supported when
+ * saving a pixbuf using the module implementing @format.
+ *
+ * See gdk_pixbuf_save() for more information about option keys.
+ *
+ * Returns: `TRUE` if the specified option is supported
+ *
+ * Since: 2.36
+ */
+gboolean
+gdk_pixbuf_format_is_save_option_supported (GdkPixbufFormat *format,
+                                            const gchar *option_key)
+{
+        GdkPixbufModule *module;
+
+        g_return_val_if_fail (format != NULL, FALSE);
+        g_return_val_if_fail (option_key != NULL, FALSE);
+
+        module = _gdk_pixbuf_get_named_module (format->name, NULL);
+        if (!module)
+                return FALSE;
+
+        if (!_gdk_pixbuf_load_module (module, NULL))
+                return FALSE;
+
+        if (!module->is_save_option_supported)
+                return FALSE;
+
+        return (* module->is_save_option_supported) (option_key);
+}
+
+G_DEFINE_BOXED_TYPE (GdkPixbufFormat, gdk_pixbuf_format,
+		     gdk_pixbuf_format_copy,
+		     gdk_pixbuf_format_free)
Index: core/gdk-pixbuf/create-2.42.9-dirname-patch/gdk-pixbuf-2.42.9-new/gdk-pixbuf/queryloaders.c
===================================================================
--- core/gdk-pixbuf/create-2.42.9-dirname-patch/gdk-pixbuf-2.42.9-new/gdk-pixbuf/queryloaders.c	(nonexistent)
+++ core/gdk-pixbuf/create-2.42.9-dirname-patch/gdk-pixbuf-2.42.9-new/gdk-pixbuf/queryloaders.c	(revision 5)
@@ -0,0 +1,494 @@
+/* -*- mode: C; c-file-style: "linux" -*- */
+/* GdkPixbuf library
+ * queryloaders.c:
+ *
+ * Copyright (C) 2002 The Free Software Foundation
+ *
+ * Author: Matthias Clasen <maclas@gmx.de>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include <glib.h>
+#include <glib/gprintf.h>
+#include <gmodule.h>
+
+#include <errno.h>
+#include <string.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include "gdk-pixbuf/gdk-pixbuf.h"
+#include "gdk-pixbuf/gdk-pixbuf-private.h"
+
+#ifdef USE_LA_MODULES
+#define SOEXT ".la"
+#else
+#define SOEXT ("." G_MODULE_SUFFIX)
+#endif
+#define SOEXT_LEN (strlen (SOEXT))
+
+#ifdef G_OS_WIN32
+#include <windows.h>
+#endif
+
+#ifdef OS_DARWIN
+#include <mach-o/dyld.h>
+#endif
+
+static void
+print_escaped (GString *contents, const char *str)
+{
+        gchar *tmp = g_strescape (str, "");
+        g_string_append_printf (contents, "\"%s\" ", tmp);
+        g_free (tmp);
+}
+
+static int
+loader_sanity_check (const char *path, GdkPixbufFormat *info, GdkPixbufModule *vtable)
+{
+        const GdkPixbufModulePattern *pattern;
+        const char *error = "";
+
+        for (pattern = info->signature; pattern->prefix; pattern++)
+        {
+                int prefix_len = strlen (pattern->prefix);
+                if (prefix_len == 0)
+                {
+                        error = "empty pattern";
+
+                        goto error;
+                }
+                if (pattern->mask)
+                {
+                        int mask_len = strlen (pattern->mask);
+                        if (mask_len != prefix_len)
+                        {
+                                error = "mask length mismatch";
+
+                                goto error;
+                        }
+                        if (strspn (pattern->mask, " !xzn*") < mask_len)
+                        {
+                                error = "bad char in mask";
+
+                                goto error;
+                        }
+                }
+        }
+
+        if (!vtable->load && !vtable->begin_load && !vtable->load_animation)
+        {
+                error = "no load method implemented";
+
+                goto error;
+        }
+
+        if (vtable->begin_load && (!vtable->stop_load || !vtable->load_increment))
+        {
+                error = "incremental loading support incomplete";
+
+                goto error;
+        }
+
+        if ((info->flags & GDK_PIXBUF_FORMAT_WRITABLE) && !(vtable->save || vtable->save_to_callback))
+        {
+                error = "loader claims to support saving but doesn't implement save";
+                goto error;
+        }
+
+        return 1;
+
+ error:
+        g_fprintf (stderr, "Loader sanity check failed for %s: %s\n",
+                   path, error);
+
+        return 0;
+}
+
+#ifdef GDK_PIXBUF_RELOCATABLE
+
+/* Based on gdk_pixbuf_get_toplevel () */
+static gchar *
+get_toplevel (void)
+{
+        static gchar *toplevel = NULL;
+
+        if (toplevel == NULL) {
+#if defined (G_OS_WIN32)
+                toplevel = g_win32_get_package_installation_directory_of_module (NULL);
+#elif defined(OS_DARWIN)
+                char pathbuf[PATH_MAX + 1];
+                uint32_t bufsize = sizeof (pathbuf);
+                gchar *bin_dir;
+
+                _NSGetExecutablePath (pathbuf, &bufsize);
+                bin_dir = g_path_get_dirname (pathbuf);
+                toplevel = g_build_path (G_DIR_SEPARATOR_S, bin_dir, "..", NULL);
+                g_free (bin_dir);
+#elif defined (OS_LINUX) || defined (__MINGW32__)
+                gchar *exe_path, *bin_dir;
+
+                exe_path = g_file_read_link ("/proc/self/exe", NULL);
+                bin_dir = g_path_get_dirname (exe_path);
+                toplevel = g_build_path (G_DIR_SEPARATOR_S, bin_dir, "..", NULL);
+                g_free (exe_path);
+                g_free (bin_dir);
+#else
+#error "Relocations not supported for this platform"
+#endif
+        }
+        return toplevel;
+}
+
+/* Returns the relative path or NULL; transfer full */
+static gchar *
+get_relative_path (const gchar *parent, const gchar *descendant)
+{
+        GFile *parent_file, *descendant_file;
+        char *relative_path;
+
+        parent_file = g_file_new_for_path (parent);
+        descendant_file = g_file_new_for_path (descendant);
+        relative_path = g_file_get_relative_path (parent_file, descendant_file);
+        g_object_unref (parent_file);
+        g_object_unref (descendant_file);
+
+        return relative_path;
+}
+
+#endif  /* GDK_PIXBUF_RELOCATABLE */
+
+static void
+write_loader_info (GString *contents, const char *path, GdkPixbufFormat *info)
+{
+        const GdkPixbufModulePattern *pattern;
+        char **mime;
+        char **ext;
+        gchar *module_path = NULL, *escaped_path;
+
+#ifdef GDK_PIXBUF_RELOCATABLE
+        module_path = get_relative_path (get_toplevel (), path);
+#endif
+
+        if (module_path == NULL) {
+                module_path = g_strdup (path);
+        }
+
+        escaped_path = g_strescape (module_path, "");
+        g_string_append_printf (contents, "\"%s\"\n", escaped_path);
+        g_free (module_path);
+        g_free (escaped_path);
+
+        g_string_append_printf (contents, "\"%s\" %u \"%s\" \"%s\" \"%s\"\n",
+                  info->name,
+                  info->flags,
+                  info->domain ? info->domain : GETTEXT_PACKAGE,
+                  info->description,
+                  info->license ? info->license : "");
+        for (mime = info->mime_types; *mime; mime++) {
+                g_string_append_printf (contents, "\"%s\" ", *mime);
+        }
+        g_string_append (contents, "\"\"\n");
+        for (ext = info->extensions; *ext; ext++) {
+                g_string_append_printf (contents, "\"%s\" ", *ext);
+        }
+        g_string_append (contents, "\"\"\n");
+        for (pattern = info->signature; pattern->prefix; pattern++) {
+                print_escaped (contents, pattern->prefix);
+                print_escaped (contents, pattern->mask ? (const char *)pattern->mask : "");
+                g_string_append_printf (contents, "%d\n", pattern->relevance);
+        }
+        g_string_append_c (contents, '\n');
+}
+
+static void
+query_module (GString *contents, const char *dir, const char *file)
+{
+        char *path;
+        GModule *module;
+        void                    (*fill_info)     (GdkPixbufFormat *info);
+        void                    (*fill_vtable)   (GdkPixbufModule *module);
+        gpointer fill_info_ptr;
+        gpointer fill_vtable_ptr;
+
+        if (g_path_is_absolute (file))
+                path = g_strdup (file);
+        else
+                path = g_build_filename (dir, file, NULL);
+
+        module = g_module_open (path, 0);
+        if (module &&
+            g_module_symbol (module, "fill_info", &fill_info_ptr) &&
+            g_module_symbol (module, "fill_vtable", &fill_vtable_ptr)) {
+                GdkPixbufFormat *info;
+                GdkPixbufModule *vtable;
+
+#ifdef G_OS_WIN32
+                /* Replace backslashes in path with forward slashes, so that
+                 * it reads in without problems.
+                 */
+                {
+                        char *p = path;
+                        while (*p) {
+                                if (*p == '\\')
+                                        *p = '/';
+                                p++;
+                        }
+                }
+#endif
+                info = g_new0 (GdkPixbufFormat, 1);
+                vtable = g_new0 (GdkPixbufModule, 1);
+
+                vtable->module = module;
+
+                fill_info = fill_info_ptr;
+                fill_vtable = fill_vtable_ptr;
+
+                (*fill_info) (info);
+                (*fill_vtable) (vtable);
+
+                if (loader_sanity_check (path, info, vtable))
+                        write_loader_info (contents, path, info);
+
+                g_free (info);
+                g_free (vtable);
+        }
+        else {
+                if (module == NULL)
+                        g_fprintf (stderr, "g_module_open() failed for %s: %s\n", path,
+                                   g_module_error());
+                else
+                        g_fprintf (stderr, "Cannot load loader %s\n", path);
+        }
+        if (module)
+                g_module_close (module);
+        g_free (path);
+}
+
+#if defined(G_OS_WIN32) && defined(GDK_PIXBUF_RELOCATABLE)
+
+static char *
+get_libdir (void)
+{
+  static char *libdir = NULL;
+
+  if (libdir == NULL)
+          libdir = g_build_filename (get_toplevel (), "lib", NULL);
+
+  return libdir;
+}
+
+#undef GDK_PIXBUF_LIBDIR
+#define GDK_PIXBUF_LIBDIR get_libdir()
+
+#endif
+
+static gchar *
+gdk_pixbuf_get_module_file (void)
+{
+        gchar *result = g_strdup (g_getenv ("GDK_PIXBUF_MODULE_FILE"));
+
+        if (!result)
+                result = g_build_filename (GDK_PIXBUF_LIBDIR, "gdk-pixbuf-2.0", GDK_PIXBUF_BINARY_VERSION, "loaders.cache", NULL);
+
+        return result;
+}
+
+int main (int argc, char **argv)
+{
+        gint i;
+        const gchar *prgname;
+        GString *contents;
+        gchar *cache_file = NULL;
+        gint first_file = 1;
+        GFile *pixbuf_libdir_file;
+        gchar *pixbuf_libdir;
+
+#ifdef G_OS_WIN32
+        gchar *libdir;
+        GFile *pixbuf_prefix_file;
+        gchar *pixbuf_prefix;
+#endif
+
+        /* An intermediate GFile here will convert all the path separators
+         * to the right one used by the platform
+         */
+        pixbuf_libdir_file = g_file_new_for_path (PIXBUF_LIBDIR);
+        pixbuf_libdir = g_file_get_path (pixbuf_libdir_file);
+        g_object_unref (pixbuf_libdir_file);
+
+#ifdef G_OS_WIN32
+        pixbuf_prefix_file = g_file_new_for_path (GDK_PIXBUF_PREFIX);
+        pixbuf_prefix = g_file_get_path (pixbuf_prefix_file);
+        g_object_unref (pixbuf_prefix_file);
+
+        if (g_ascii_strncasecmp (pixbuf_libdir, pixbuf_prefix, strlen (pixbuf_prefix)) == 0 &&
+            G_IS_DIR_SEPARATOR (pixbuf_libdir[strlen (pixbuf_prefix)])) {
+                gchar *runtime_prefix;
+                gchar *slash;
+
+                /* pixbuf_prefix is a prefix of pixbuf_libdir, as it
+                 * normally is. Replace that prefix in pixbuf_libdir
+                 * with the installation directory on this machine.
+                 * We assume this invokation of
+                 * gdk-pixbuf-query-loaders is run from either a "bin"
+                 * subdirectory of the installation directory, or in
+                 * the installation directory itself.
+                 */
+                wchar_t fn[1000];
+                GetModuleFileNameW (NULL, fn, G_N_ELEMENTS (fn));
+                runtime_prefix = g_utf16_to_utf8 (fn, -1, NULL, NULL, NULL);
+                slash = strrchr (runtime_prefix, '\\');
+                *slash = '\0';
+                slash = strrchr (runtime_prefix, '\\');
+                /* If running from some weird location, or from the
+                 * build directory (either in the .libs folder where
+                 * libtool places the real executable when using a
+                 * wrapper, or directly from the gdk-pixbuf folder),
+                 * use the compile-time libdir.
+                 */
+                if (slash == NULL ||
+                    g_ascii_strcasecmp (slash + 1, ".libs") == 0 ||
+                    g_ascii_strcasecmp (slash + 1, "gdk-pixbuf") == 0) {
+                        libdir = NULL;
+                }
+                else {
+                        if (slash != NULL && g_ascii_strcasecmp (slash + 1, "bin") == 0) {
+                                *slash = '\0';
+                        }
+
+                        libdir = g_build_filename (runtime_prefix,
+                                                   pixbuf_libdir + strlen (pixbuf_prefix) + 1,
+                                                   NULL);
+                }
+        }
+        else {
+                libdir = NULL;
+        }
+
+        g_free (pixbuf_prefix);
+
+        if (libdir != NULL) {
+                g_free (pixbuf_libdir);
+                pixbuf_libdir = libdir;
+        }
+#endif
+
+	/* This call is necessary to ensure we actually link against libgobject;
+	 * otherwise it may be stripped if -Wl,--as-needed is in use.
+	 * 
+	 * The reason we need to link against libgobject is because it now has
+	 * a global constructor.  If the dynamically loaded modules happen
+	 * to dlclose() libgobject, then reopen it again, we're in for trouble.
+	 *
+	 * See: https://bugzilla.gnome.org/show_bug.cgi?id=686822
+	 */
+	g_type_ensure (G_TYPE_OBJECT);
+
+        if (argc > 1 && strcmp (argv[1], "--update-cache") == 0) {
+                cache_file = gdk_pixbuf_get_module_file ();
+                first_file = 2;
+        }
+
+        contents = g_string_new ("");
+
+        prgname = g_get_prgname ();
+        g_string_append_printf (contents,
+                                "# GdkPixbuf Image Loader Modules file\n"
+                                "# Automatically generated file, do not edit\n"
+                                "# Created by %s from gdk-pixbuf-%s\n"
+                                "#\n",
+                                (prgname ? prgname : "gdk-pixbuf-query-loaders"),
+                                GDK_PIXBUF_VERSION);
+
+        if (argc == first_file) {
+#ifdef USE_GMODULE
+                char *moduledir;
+                GDir *dir;
+                GList *l, *modules;
+
+                moduledir = g_strdup (g_getenv ("GDK_PIXBUF_MODULEDIR"));
+#ifdef G_OS_WIN32
+                if (moduledir != NULL && *moduledir != '\0') {
+                        gchar *path;
+
+                        path = g_locale_to_utf8 (moduledir, -1, NULL, NULL, NULL);
+                        g_free (moduledir);
+                        moduledir = path;
+                }
+#endif
+                if (moduledir == NULL || *moduledir == '\0') {
+                        g_free (moduledir);
+                        moduledir = g_strdup (pixbuf_libdir);
+                }
+
+                g_string_append_printf (contents, "# LoaderDir = %s\n#\n", moduledir);
+
+                modules = NULL;
+                dir = g_dir_open (moduledir, 0, NULL);
+                if (dir) {
+                        const char *dent;
+
+                        while ((dent = g_dir_read_name (dir))) {
+                                gint len = strlen (dent);
+                                if (len > SOEXT_LEN &&
+                                    strcmp (dent + len - SOEXT_LEN, SOEXT) == 0) {
+                                        modules = g_list_prepend (modules,
+                                                                  g_strdup (dent));
+                                }
+                        }
+                        g_dir_close (dir);
+                }
+                modules = g_list_sort (modules, (GCompareFunc)strcmp);
+                for (l = modules; l != NULL; l = l->next)
+                        query_module (contents, moduledir, l->data);
+                g_list_free_full (modules, g_free);
+                g_free (moduledir);
+#else
+                g_string_append_printf (contents, "# dynamic loading of modules not supported\n");
+#endif
+        }
+        else {
+                char *cwd = g_get_current_dir ();
+
+                for (i = first_file; i < argc; i++) {
+                        char *infilename = argv[i];
+#ifdef G_OS_WIN32
+                        infilename = g_locale_to_utf8 (infilename,
+                                                       -1, NULL, NULL, NULL);
+#endif
+                        query_module (contents, cwd, infilename);
+                }
+                g_free (cwd);
+        }
+
+        if (cache_file) {
+                GError *err;
+
+                err = NULL;
+                if (!g_file_set_contents (cache_file, contents->str, -1, &err)) {
+                        g_fprintf (stderr, "%s\n", err->message);
+                }
+        }
+        else
+                g_print ("%s\n", contents->str);
+
+        g_free (pixbuf_libdir);
+
+        return 0;
+}
Index: core/gdk-pixbuf/create-2.42.9-dirname-patch/gdk-pixbuf-2.42.9-new/gdk-pixbuf
===================================================================
--- core/gdk-pixbuf/create-2.42.9-dirname-patch/gdk-pixbuf-2.42.9-new/gdk-pixbuf	(nonexistent)
+++ core/gdk-pixbuf/create-2.42.9-dirname-patch/gdk-pixbuf-2.42.9-new/gdk-pixbuf	(revision 5)

Property changes on: core/gdk-pixbuf/create-2.42.9-dirname-patch/gdk-pixbuf-2.42.9-new/gdk-pixbuf
___________________________________________________________________
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: core/gdk-pixbuf/create-2.42.9-dirname-patch/gdk-pixbuf-2.42.9-new
===================================================================
--- core/gdk-pixbuf/create-2.42.9-dirname-patch/gdk-pixbuf-2.42.9-new	(nonexistent)
+++ core/gdk-pixbuf/create-2.42.9-dirname-patch/gdk-pixbuf-2.42.9-new	(revision 5)

Property changes on: core/gdk-pixbuf/create-2.42.9-dirname-patch/gdk-pixbuf-2.42.9-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: core/gdk-pixbuf/create-2.42.9-dirname-patch
===================================================================
--- core/gdk-pixbuf/create-2.42.9-dirname-patch	(nonexistent)
+++ core/gdk-pixbuf/create-2.42.9-dirname-patch	(revision 5)

Property changes on: core/gdk-pixbuf/create-2.42.9-dirname-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: core/gdk-pixbuf/patches/README
===================================================================
--- core/gdk-pixbuf/patches/README	(nonexistent)
+++ core/gdk-pixbuf/patches/README	(revision 5)
@@ -0,0 +1,6 @@
+
+/* begin *
+
+   TODO: Leave some comment here.
+
+ * end */
Index: core/gdk-pixbuf/patches
===================================================================
--- core/gdk-pixbuf/patches	(nonexistent)
+++ core/gdk-pixbuf/patches	(revision 5)

Property changes on: core/gdk-pixbuf/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: core/gdk-pixbuf
===================================================================
--- core/gdk-pixbuf	(nonexistent)
+++ core/gdk-pixbuf	(revision 5)

Property changes on: core/gdk-pixbuf
___________________________________________________________________
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: core/gdk-pixbuf-xlib/Makefile
===================================================================
--- core/gdk-pixbuf-xlib/Makefile	(nonexistent)
+++ core/gdk-pixbuf-xlib/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/gdk-pixbuf-xlib
+
+versions    = 2.40.2
+pkgname     = gdk-pixbuf-xlib
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+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
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: core/gdk-pixbuf-xlib
===================================================================
--- core/gdk-pixbuf-xlib	(nonexistent)
+++ core/gdk-pixbuf-xlib	(revision 5)

Property changes on: core/gdk-pixbuf-xlib
___________________________________________________________________
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: core/glib2/Makefile
===================================================================
--- core/glib2/Makefile	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/create.patch.sh
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/create.patch.sh	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: core/glib2/create-2.76.0-force-cross-patch/file.list
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/file.list	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/gio/meson.build
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/gio/meson.build	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/gio
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/gio	(nonexistent)
+++ core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/gio	(revision 5)

Property changes on: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0/meson.build
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0/meson.build	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0	(nonexistent)
+++ core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0	(revision 5)

Property changes on: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works/meson.build
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works/meson.build	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works	(nonexistent)
+++ core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works	(revision 5)

Property changes on: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works/meson.build
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works/meson.build	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works	(nonexistent)
+++ core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works	(revision 5)

Property changes on: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works/meson.build
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works/meson.build	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works	(nonexistent)
+++ core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works	(revision 5)

Property changes on: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a/meson.build
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a/meson.build	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a	(nonexistent)
+++ core/glib2/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: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f/meson.build
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f/meson.build	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f	(nonexistent)
+++ core/glib2/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: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls/meson.build
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls/meson.build	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls	(nonexistent)
+++ core/glib2/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: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem/meson.build
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem/meson.build	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem	(nonexistent)
+++ core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem	(revision 5)

Property changes on: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping/meson.build
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping/meson.build	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping	(nonexistent)
+++ core/glib2/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: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust/meson.build
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust/meson.build	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust	(nonexistent)
+++ core/glib2/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: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero/meson.build
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero/meson.build	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero	(nonexistent)
+++ core/glib2/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: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite/meson.build
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite/meson.build	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite	(nonexistent)
+++ core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite	(revision 5)

Property changes on: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double/meson.build
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double/meson.build	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double	(nonexistent)
+++ core/glib2/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: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double/meson.build
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double/meson.build	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double	(nonexistent)
+++ core/glib2/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: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision/meson.build
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision/meson.build	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision	(nonexistent)
+++ core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision	(revision 5)

Property changes on: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib	(nonexistent)
+++ core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib	(revision 5)

Property changes on: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib	(nonexistent)
+++ core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/glib	(revision 5)

Property changes on: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/meson.build
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new/meson.build	(nonexistent)
+++ core/glib2/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: core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new	(nonexistent)
+++ core/glib2/create-2.76.0-force-cross-patch/glib-2.76.0-new	(revision 5)

Property changes on: core/glib2/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: core/glib2/create-2.76.0-force-cross-patch
===================================================================
--- core/glib2/create-2.76.0-force-cross-patch	(nonexistent)
+++ core/glib2/create-2.76.0-force-cross-patch	(revision 5)

Property changes on: core/glib2/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: core/glib2/patches/README
===================================================================
--- core/glib2/patches/README	(nonexistent)
+++ core/glib2/patches/README	(revision 5)
@@ -0,0 +1,6 @@
+
+/* begin *
+
+   TODO: Leave some comment here.
+
+ * end */
Index: core/glib2/patches
===================================================================
--- core/glib2/patches	(nonexistent)
+++ core/glib2/patches	(revision 5)

Property changes on: core/glib2/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: core/glib2
===================================================================
--- core/glib2	(nonexistent)
+++ core/glib2	(revision 5)

Property changes on: core/glib2
___________________________________________________________________
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: core/gsettings-desktop-schemas/Makefile
===================================================================
--- core/gsettings-desktop-schemas/Makefile	(nonexistent)
+++ core/gsettings-desktop-schemas/Makefile	(revision 5)
@@ -0,0 +1,56 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/gsettings-desktop-schemas
+
+versions    = 44.0
+pkgname     = gsettings-desktop-schemas
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+patches     = $(CURDIR)/patches/gsettings-desktop-schemas-44.0-font-defaults.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-44.0-font-defaults-patch ; ./create.patch.sh ) ; \
+	 echo -e "\n"
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s) $(patches)
Index: core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/create.patch.sh
===================================================================
--- core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/create.patch.sh	(nonexistent)
+++ core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/create.patch.sh	(revision 5)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=44.0
+
+tar --files-from=file.list -xJvf ../gsettings-desktop-schemas-$VERSION.tar.xz
+mv gsettings-desktop-schemas-$VERSION gsettings-desktop-schemas-$VERSION-orig
+
+cp -rf ./gsettings-desktop-schemas-$VERSION-new ./gsettings-desktop-schemas-$VERSION
+
+diff --unified -Nr  gsettings-desktop-schemas-$VERSION-orig  gsettings-desktop-schemas-$VERSION > gsettings-desktop-schemas-$VERSION-font-defaults.patch
+
+mv gsettings-desktop-schemas-$VERSION-font-defaults.patch ../patches
+
+rm -rf ./gsettings-desktop-schemas-$VERSION
+rm -rf ./gsettings-desktop-schemas-$VERSION-orig

Property changes on: core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/file.list
===================================================================
--- core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/file.list	(nonexistent)
+++ core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/file.list	(revision 5)
@@ -0,0 +1 @@
+gsettings-desktop-schemas-44.0/schemas/org.gnome.desktop.interface.gschema.xml.in
Index: core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/gsettings-desktop-schemas-44.0-new/schemas/org.gnome.desktop.interface.gschema.xml.in
===================================================================
--- core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/gsettings-desktop-schemas-44.0-new/schemas/org.gnome.desktop.interface.gschema.xml.in	(nonexistent)
+++ core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/gsettings-desktop-schemas-44.0-new/schemas/org.gnome.desktop.interface.gschema.xml.in	(revision 5)
@@ -0,0 +1,305 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schemalist gettext-domain="gsettings-desktop-schemas">
+  <schema id="org.gnome.desktop.interface" path="/org/gnome/desktop/interface/">
+    <key name="toolkit-accessibility" type="b">
+      <default>false</default>
+      <summary>Enable Toolkit Accessibility</summary>
+      <description>
+        Whether toolkits should load accessibility related modules.
+      </description>
+    </key>
+    <key name="enable-animations" type="b">
+      <default>true</default>
+      <summary>Enable Animations</summary>
+      <description>
+        Whether animations should be displayed. Note: This is a global key,
+        it changes the behaviour of the window manager, the panel etc.
+      </description>
+    </key>
+    <key name="menus-have-tearoff" type="b">
+      <default>false</default>
+      <summary>Menus Have Tearoff</summary>
+      <description>
+        Whether menus should have a tearoff.
+      </description>
+    </key>
+    <key name="can-change-accels" type="b">
+      <default>false</default>
+      <summary>Can Change Accels</summary>
+      <description>
+        Whether the user can dynamically type a new accelerator when
+        positioned over an active menuitem.
+      </description>
+    </key>
+    <key name="toolbar-style" enum="org.gnome.desktop.GDesktopToolbarStyle">
+      <default>'both-horiz'</default>
+      <summary>Toolbar Style</summary>
+      <description>
+        Toolbar Style. Valid values are “both”, “both-horiz”, “icons”,
+        and “text”.
+      </description>
+    </key>
+    <key name="menubar-detachable" type="b">
+      <default>false</default>
+      <summary>Menubar Detachable</summary>
+      <description>
+        Whether the user can detach menubars and move them around.
+      </description>
+    </key>
+    <key name="toolbar-detachable" type="b">
+      <default>false</default>
+      <summary>Toolbar Detachable</summary>
+      <description>
+        Whether the user can detach toolbars and move them around.
+      </description>
+    </key>
+    <key name="toolbar-icons-size" enum="org.gnome.desktop.GDesktopToolbarIconSize">
+      <default>'large'</default>
+      <summary>Toolbar Icon Size</summary>
+      <description>
+        Size of icons in toolbars, either “small” or “large”.
+      </description>
+    </key>
+    <key name="cursor-blink" type="b">
+      <default>true</default>
+      <summary>Cursor Blink</summary>
+      <description>
+        Whether the cursor should blink.
+      </description>
+    </key>
+    <key name="cursor-blink-time" type="i">
+      <range min="100" max="2500"/>
+      <default>1200</default>
+      <summary>Cursor Blink Time</summary>
+      <description>
+        Length of the cursor blink cycle, in milliseconds.
+      </description>
+    </key>
+    <key name="cursor-blink-timeout" type="i">
+      <range min="1" max="2147483647"/>
+      <default>10</default>
+      <summary>Cursor Blink Timeout</summary>
+      <description>
+        Time after which the cursor stops blinking, in seconds.
+      </description>
+    </key>
+    <key name="icon-theme" type="s">
+      <default>'Adwaita'</default>
+      <summary>Icon Theme</summary>
+      <description>
+        Icon theme to use for the panel, nautilus etc.
+      </description>
+    </key>
+    <key name="gtk-theme" type="s">
+      <default>'Adwaita'</default>
+      <summary>Gtk+ Theme</summary>
+      <description>
+        Basename of the default theme used by gtk+.
+      </description>
+    </key>
+    <key name="gtk-key-theme" type="s">
+      <default>'Default'</default>
+      <summary>Gtk+ Keybinding Theme</summary>
+      <description>
+        Basename of the default keybinding theme used by gtk+.
+      </description>
+    </key>
+    <key name="font-name" type="s">
+      <default>'Sans 11'</default>
+      <summary>Default font</summary>
+      <description>
+        Name of the default font used by gtk+.
+      </description>
+    </key>
+    <key name="avatar-directories" type="as">
+      <default>[]</default>
+      <summary>Directories with avatar faces</summary>
+      <description>
+        Directories to override the default avatar faces installed by gnome-control-center.
+      </description>
+    </key>
+    <key name="text-scaling-factor" type="d">
+      <range min="0.5" max="3.0"/>
+      <default>1.0</default>
+      <summary>Text scaling factor</summary>
+      <description>
+        Factor used to enlarge or reduce text display, without changing font size.
+      </description>
+    </key>
+    <key name="scaling-factor" type="u">
+      <default>0</default>
+      <summary>Window scaling factor</summary>
+      <description>
+        Integer factor used to scale windows by. For use on high-dpi screens.
+        0 means pick automatically based on monitor.
+      </description>
+    </key>
+    <key name="gtk-im-preedit-style" type="s">
+      <default>'callback'</default>
+      <summary>GTK IM Preedit Style</summary>
+      <description>
+        Name of the GTK+ input method Preedit Style used by gtk+.
+      </description>
+    </key>
+    <key name="gtk-im-status-style" type="s">
+      <default>'callback'</default>
+      <summary>GTK IM Status Style</summary>
+      <description>
+        Name of the GTK+ input method Status Style used by gtk+.
+      </description>
+    </key>
+    <key name="gtk-im-module" type="s">
+      <default>''</default>
+      <summary>GTK IM Module</summary>
+      <description>
+        Name of the input method module used by GTK+.
+      </description>
+    </key>
+    <key name="document-font-name" type="s">
+      <default>'Sans 11'</default>
+      <summary>Document font</summary>
+      <description>
+        Name of the default font used for reading documents.
+      </description>
+    </key>
+    <key name="monospace-font-name" type="s">
+      <default>'Monospace 11'</default>
+      <summary>Monospace font</summary>
+      <description>
+        Name of a monospaced (fixed-width) font for use in locations like
+        terminals.
+      </description>
+    </key>
+    <key name="menubar-accel" type="s">
+      <default>'F10'</default>
+      <summary>Menubar accelerator</summary>
+      <description>
+        Keyboard shortcut to open the menu bars.
+      </description>
+    </key>
+    <key name="cursor-theme" type="s">
+      <default>'Adwaita'</default>
+      <summary>Cursor theme</summary>
+      <description>Cursor theme name. Used only by Xservers that support the Xcursor extension.</description>
+    </key>
+    <key name="cursor-size" type="i">
+      <default>24</default>
+      <summary>Cursor size</summary>
+      <description>Size of the cursor used as cursor theme.</description>
+    </key>
+    <key name="gtk-timeout-initial" type="i">
+      <default>200</default>
+      <summary>Timeout before click repeat</summary>
+      <description>Timeout in milliseconds before a click starts repeating (on spinner buttons for example).</description>
+    </key>
+    <key name="gtk-timeout-repeat" type="i">
+      <default>20</default>
+      <summary>Timeout between click repeats</summary>
+      <description>Timeout in milliseconds between repeated clicks when a button is left pressed.</description>
+    </key>
+    <key name="gtk-color-palette" type="s">
+      <default>'black:white:gray50:red:purple:blue:light blue:green:yellow:orange:lavender:brown:goldenrod4:dodger blue:pink:light green:gray10:gray30:gray75:gray90'</default>
+      <summary>Palette used in the color selector</summary>
+      <description>Palette used in the color selector as defined by the “gtk-color-palette” setting</description>
+    </key>
+    <key name="gtk-color-scheme" type="s">
+      <default>''</default>
+      <summary>List of symbolic names and color equivalents</summary>
+      <description>A “\n” separated list of “name:color” as defined by the “gtk-color-scheme” setting</description>
+    </key>
+    <key name="clock-format" enum="org.gnome.desktop.GDesktopClockFormat">
+      <default>'24h'</default>
+      <summary>Whether the clock displays in 24h or 12h format</summary>
+      <description>
+        Whether the clock displays in 24h or 12h format
+      </description>
+    </key>
+    <key name="clock-show-seconds" type="b">
+      <default>false</default>
+      <summary>Whether the clock shows seconds</summary>
+      <description>
+	If true, display seconds in the clock.
+      </description>
+    </key>
+    <key name="clock-show-date" type="b">
+      <default>true</default>
+      <summary>Show date in clock</summary>
+      <description>
+        If true, display date in the clock, in addition to time.
+      </description>
+    </key>
+    <key name="clock-show-weekday" type="b">
+      <default>false</default>
+      <summary>Show weekday in clock</summary>
+      <description>
+        If true, display weekday in the clock, in addition to time.
+      </description>
+    </key>
+    <key name="enable-hot-corners" type="b">
+      <default>true</default>
+      <summary>Enable hot corners</summary>
+      <description>
+        If true, the activities overview can be accessed by moving the
+        mouse to the top-left corner.
+      </description>
+    </key>
+    <key name="show-battery-percentage" type="b">
+      <default>false</default>
+      <summary>Show battery percentage</summary>
+      <description>
+        If true, display battery percentage in the status menu, in addition to the icon.
+      </description>
+    </key>
+    <key name="gtk-enable-primary-paste" type="b">
+      <default>true</default>
+      <summary>Enable the primary paste selection</summary>
+      <description>
+        If true, gtk+ uses the primary paste selection, usually triggered by a middle mouse button click.
+      </description>
+    </key>
+    <key name="overlay-scrolling" type="b">
+      <default>true</default>
+      <summary>Allow overlay scrolling</summary>
+      <description>
+        Whether scrollbars should be overlayed as indicators. Depending
+        on input devices in use, permanent scrollbars may still be
+        displayed.
+      </description>
+    </key>
+    <key name="locate-pointer" type="b">
+      <default>false</default>
+      <summary>Highlights the current location of the pointer.</summary>
+      <description>
+        If true, pressing a key will highlight the current pointer location on screen.
+      </description>
+    </key>
+    <key name="font-antialiasing" enum="org.gnome.desktop.GDesktopFontAntialiasingMode">
+      <default>'grayscale'</default>
+      <summary>Antialiasing</summary>
+      <description>
+        The type of antialiasing to use when rendering fonts. Possible values are: “none” for no antialiasing, “grayscale” for standard grayscale antialiasing, and “rgba” for subpixel antialiasing (LCD screens only).
+      </description>
+    </key>
+    <key name="font-hinting" enum="org.gnome.desktop.GDesktopFontHinting">
+      <default>'slight'</default>
+      <summary>Hinting</summary>
+      <description>
+	The type of hinting to use when rendering fonts. Possible values are: “none” for no hinting and “slight” for fitting only to the Y-axis like Microsoft’s ClearType, DirectWrite and Adobe’s proprietary font rendering engine. Ignores native hinting within the font, generates hints algorithmically. Used on Ubuntu by default. Recommended. The meaning of “medium” and “full” depends on the font format (.ttf, .otf, .pfa/.pfb) and the installed version of FreeType. They usually try to fit glyphs to both the X and the Y axis (except for .otf: Y-only). This can lead to distortion and/or inconsistent rendering depending on the quality of the font, the font format and the state of FreeType’s font engines.
+      </description>
+    </key>
+    <key name="font-rgba-order" enum="org.gnome.desktop.GDesktopFontRgbaOrder">
+      <default>'rgb'</default>
+      <summary>RGBA order</summary>
+      <description>
+	The order of subpixel elements on an LCD screen; only used when antialiasing is set to “rgba”. Possible values are: “rgb” for red on left (most common), “bgr” for blue on left, “vrgb” for red on top, “vbgr” for red on bottom.
+      </description>
+    </key>
+    <key name="color-scheme" enum="org.gnome.desktop.GDesktopColorScheme">
+      <default>'default'</default>
+      <summary>Color scheme</summary>
+      <description>
+        The preferred color scheme for the user interface. Valid values are “default”, “prefer-dark”, “prefer-light”.
+      </description>
+    </key>
+  </schema>
+</schemalist>
Index: core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/gsettings-desktop-schemas-44.0-new/schemas
===================================================================
--- core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/gsettings-desktop-schemas-44.0-new/schemas	(nonexistent)
+++ core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/gsettings-desktop-schemas-44.0-new/schemas	(revision 5)

Property changes on: core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/gsettings-desktop-schemas-44.0-new/schemas
___________________________________________________________________
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: core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/gsettings-desktop-schemas-44.0-new
===================================================================
--- core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/gsettings-desktop-schemas-44.0-new	(nonexistent)
+++ core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/gsettings-desktop-schemas-44.0-new	(revision 5)

Property changes on: core/gsettings-desktop-schemas/create-44.0-font-defaults-patch/gsettings-desktop-schemas-44.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: core/gsettings-desktop-schemas/create-44.0-font-defaults-patch
===================================================================
--- core/gsettings-desktop-schemas/create-44.0-font-defaults-patch	(nonexistent)
+++ core/gsettings-desktop-schemas/create-44.0-font-defaults-patch	(revision 5)

Property changes on: core/gsettings-desktop-schemas/create-44.0-font-defaults-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: core/gsettings-desktop-schemas/patches/README
===================================================================
--- core/gsettings-desktop-schemas/patches/README	(nonexistent)
+++ core/gsettings-desktop-schemas/patches/README	(revision 5)
@@ -0,0 +1,6 @@
+
+/* begin *
+
+   TODO: Leave some comment here.
+
+ * end */
Index: core/gsettings-desktop-schemas/patches
===================================================================
--- core/gsettings-desktop-schemas/patches	(nonexistent)
+++ core/gsettings-desktop-schemas/patches	(revision 5)

Property changes on: core/gsettings-desktop-schemas/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: core/gsettings-desktop-schemas
===================================================================
--- core/gsettings-desktop-schemas	(nonexistent)
+++ core/gsettings-desktop-schemas	(revision 5)

Property changes on: core/gsettings-desktop-schemas
___________________________________________________________________
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: core/gtk+3/Makefile
===================================================================
--- core/gtk+3/Makefile	(nonexistent)
+++ core/gtk+3/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/gtk+3
+
+versions    = 3.24.37
+pkgname     = gtk+
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+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
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: core/gtk+3
===================================================================
--- core/gtk+3	(nonexistent)
+++ core/gtk+3	(revision 5)

Property changes on: core/gtk+3
___________________________________________________________________
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: core/libcroco/Makefile
===================================================================
--- core/libcroco/Makefile	(nonexistent)
+++ core/libcroco/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/libcroco
+
+versions    = 0.6.13
+pkgname     = libcroco
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+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
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: core/libcroco
===================================================================
--- core/libcroco	(nonexistent)
+++ core/libcroco	(revision 5)

Property changes on: core/libcroco
___________________________________________________________________
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: core/libgudev/Makefile
===================================================================
--- core/libgudev/Makefile	(nonexistent)
+++ core/libgudev/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/libgudev
+
+versions    = 236
+pkgname     = libgudev
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+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
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: core/libgudev
===================================================================
--- core/libgudev	(nonexistent)
+++ core/libgudev	(revision 5)

Property changes on: core/libgudev
___________________________________________________________________
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: core/libnma/Makefile
===================================================================
--- core/libnma/Makefile	(nonexistent)
+++ core/libnma/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/libnma
+
+versions    = 1.10.6
+pkgname     = libnma
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+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
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: core/libnma
===================================================================
--- core/libnma	(nonexistent)
+++ core/libnma	(revision 5)

Property changes on: core/libnma
___________________________________________________________________
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: core/librsvg/Makefile
===================================================================
--- core/librsvg/Makefile	(nonexistent)
+++ core/librsvg/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/librsvg
+
+versions    = 2.55.1
+pkgname     = librsvg
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+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
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: core/librsvg
===================================================================
--- core/librsvg	(nonexistent)
+++ core/librsvg	(revision 5)

Property changes on: core/librsvg
___________________________________________________________________
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: core/libsecret/Makefile
===================================================================
--- core/libsecret/Makefile	(nonexistent)
+++ core/libsecret/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/libsecret
+
+versions    = 0.20.4
+pkgname     = libsecret
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+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
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: core/libsecret
===================================================================
--- core/libsecret	(nonexistent)
+++ core/libsecret	(revision 5)

Property changes on: core/libsecret
___________________________________________________________________
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: core/mobile-broadband-provider-info/Makefile
===================================================================
--- core/mobile-broadband-provider-info/Makefile	(nonexistent)
+++ core/mobile-broadband-provider-info/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/mobile-broadband-provider-info
+
+versions    = 20221107
+pkgname     = mobile-broadband-provider-info
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+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
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: core/mobile-broadband-provider-info
===================================================================
--- core/mobile-broadband-provider-info	(nonexistent)
+++ core/mobile-broadband-provider-info	(revision 5)

Property changes on: core/mobile-broadband-provider-info
___________________________________________________________________
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: core/network-manager-applet/Makefile
===================================================================
--- core/network-manager-applet/Makefile	(nonexistent)
+++ core/network-manager-applet/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/network-manager-applet
+
+versions    = 1.30.0
+pkgname     = network-manager-applet
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+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
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: core/network-manager-applet
===================================================================
--- core/network-manager-applet	(nonexistent)
+++ core/network-manager-applet	(revision 5)

Property changes on: core/network-manager-applet
___________________________________________________________________
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: core/notification-daemon/Makefile
===================================================================
--- core/notification-daemon/Makefile	(nonexistent)
+++ core/notification-daemon/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/notification-daemon
+
+versions    = 3.20.0
+pkgname     = notification-daemon
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+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
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: core/notification-daemon
===================================================================
--- core/notification-daemon	(nonexistent)
+++ core/notification-daemon	(revision 5)

Property changes on: core/notification-daemon
___________________________________________________________________
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: core/pango/Makefile
===================================================================
--- core/pango/Makefile	(nonexistent)
+++ core/pango/Makefile	(revision 5)
@@ -0,0 +1,47 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url         = $(DOWNLOAD_SERVER)/sources/GNOME/core/pango
+
+versions    = 1.50.12
+pkgname     = pango
+suffix      = tar.xz
+
+tarballs    = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s       = $(addsuffix .sha1sum, $(tarballs))
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s)
+
+
+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
+
+download_clean:
+	@rm -f $(tarballs) $(sha1s)
Index: core/pango
===================================================================
--- core/pango	(nonexistent)
+++ core/pango	(revision 5)

Property changes on: core/pango
___________________________________________________________________
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: core
===================================================================
--- core	(nonexistent)
+++ core	(revision 5)

Property changes on: core
___________________________________________________________________
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
+*~