Index: Makefile
===================================================================
--- Makefile (nonexistent)
+++ Makefile (revision 5)
@@ -0,0 +1,56 @@
+
+COMPONENT_TARGETS = $(HARDWARE_NOARCH)
+
+
+include ../../../../build-system/constants.mk
+
+
+url = $(DOWNLOAD_SERVER)/sources/GNOME/core/glib2
+
+versions = 2.76.0
+pkgname = glib
+suffix = tar.xz
+
+tarballs = $(addsuffix .$(suffix), $(addprefix $(pkgname)-, $(versions)))
+sha1s = $(addsuffix .sha1sum, $(tarballs))
+
+patches = $(CURDIR)/patches/glib-2.76.0-force-cross.patch
+
+.NOTPARALLEL: $(patches)
+
+
+BUILD_TARGETS = $(tarballs) $(sha1s) $(patches)
+
+
+include ../../../../build-system/core.mk
+
+
+.PHONY: download_clean
+
+
+$(tarballs):
+ @echo -e "\n======= Downloading source tarballs =======" ; \
+ for tarball in $(tarballs) ; do \
+ echo "$(url)/$$tarball" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & \
+ done ; wait
+
+$(sha1s): $(tarballs)
+ @for sha in $@ ; do \
+ echo -e "\n======= Downloading '$$sha' signature =======\n" ; \
+ echo "$(url)/$$sha" | xargs -n 1 -P 100 wget $(WGET_OPTIONS) - & wait %1 ; \
+ touch $$sha ; \
+ echo -e "\n======= Check the '$$sha' sha1sum =======\n" ; \
+ sha1sum --check $$sha ; ret="$$?" ; \
+ if [ "$$ret" == "1" ]; then \
+ echo -e "\n======= ERROR: Bad '$$sha' sha1sum =======\n" ; \
+ exit 1 ; \
+ fi ; \
+ done
+
+$(patches): $(sha1s)
+ @echo -e "\n======= Create Patches =======\n" ; \
+ ( cd create-2.76.0-force-cross-patch ; ./create.patch.sh ) ; \
+ echo -e "\n"
+
+download_clean:
+ @rm -f $(tarballs) $(sha1s) $(patches)
Index: create-2.76.0-force-cross-patch/create.patch.sh
===================================================================
--- create-2.76.0-force-cross-patch/create.patch.sh (nonexistent)
+++ create-2.76.0-force-cross-patch/create.patch.sh (revision 5)
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+VERSION=2.76.0
+
+tar --files-from=file.list -xJvf ../glib-$VERSION.tar.xz
+mv glib-$VERSION glib-$VERSION-orig
+
+cp -rf ./glib-$VERSION-new ./glib-$VERSION
+
+diff --unified -Nr glib-$VERSION-orig glib-$VERSION > glib-$VERSION-force-cross.patch
+
+mv glib-$VERSION-force-cross.patch ../patches
+
+rm -rf ./glib-$VERSION
+rm -rf ./glib-$VERSION-orig
Property changes on: create-2.76.0-force-cross-patch/create.patch.sh
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: create-2.76.0-force-cross-patch/file.list
===================================================================
--- create-2.76.0-force-cross-patch/file.list (nonexistent)
+++ create-2.76.0-force-cross-patch/file.list (revision 5)
@@ -0,0 +1,17 @@
+glib-2.76.0/gio/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_cc_double_expbit0/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_frexp_works/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_frexpl_works/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_ldexpl_works/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_directive_a/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_directive_f/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_directive_ls/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_enomem/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_flag_grouping/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_flag_leftadjust/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_flag_zero/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_infinite/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_infinite_long_double/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_long_double/meson.build
+glib-2.76.0/glib/gnulib/gl_cv_func_printf_precision/meson.build
+glib-2.76.0/meson.build
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/gio/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/gio/meson.build (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/gio/meson.build (revision 5)
@@ -0,0 +1,1100 @@
+gio_c_args = [
+ '-DG_LOG_DOMAIN="GLib-GIO"',
+ '-DGIO_LAUNCH_DESKTOP="@0@"'.format(glib_prefix / multiarch_libexecdir / 'gio-launch-desktop'),
+ '-DGIO_MODULE_DIR="@0@"'.format(glib_giomodulesdir),
+ '-DLOCALSTATEDIR="@0@"'.format(glib_localstatedir),
+]
+
+gio_c_args_internal = [
+ '-DGIO_COMPILATION',
+]
+
+# Install empty glib_giomodulesdir
+install_emptydir(glib_giomodulesdir)
+
+gio_includedir = glib_includedir / 'gio'
+
+gnetworking_h_conf = configuration_data()
+
+gnetworking_h_nameser_compat_include = ''
+
+if host_system not in ['windows', 'android']
+ # Don't check for C_IN on Android since it does not define it in public
+ # headers, we define it ourselves wherever necessary
+ if not cc.compiles('''#include <sys/types.h>
+ #include <arpa/nameser.h>
+ int qclass = C_IN;''',
+ name : 'C_IN in public headers (no arpa/nameser_compat.h needed)')
+ if cc.compiles('''#include <sys/types.h>
+ #include <arpa/nameser.h>
+ #include <arpa/nameser_compat.h>
+ int qclass = C_IN;''',
+ name : 'arpa/nameser_compat.h needed for C_IN')
+ gnetworking_h_nameser_compat_include = '#include <arpa/nameser_compat.h>'
+ else
+ error('Could not find required includes for ARPA C_IN')
+ endif
+ endif
+endif
+
+network_libs = [ ]
+network_args = [ ]
+if host_system != 'windows'
+ # res_query()
+ res_query_test = '''#include <resolv.h>
+ int main (int argc, char ** argv) {
+ return res_query("test", 0, 0, (void *)0, 0);
+ }'''
+ res_query_test_full = '''#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ ''' + res_query_test
+ if not cc.links(res_query_test_full, name : 'res_query()')
+ if cc.links(res_query_test_full, args : '-lresolv', name : 'res_query() in -lresolv')
+ network_libs += [ cc.find_library('resolv') ]
+ network_args += [ '-lresolv' ]
+ elif cc.links(res_query_test, args : '-lbind', name : 'res_query() in -lbind')
+ network_libs += [ cc.find_library('bind') ]
+ network_args += [ '-lbind' ]
+ elif cc.links(res_query_test, args : '-lsocket', name : 'res_query() in -lsocket')
+ network_libs += [ cc.find_library('socket') ]
+ network_args += [ '-lsocket' ]
+ else
+ error('Could not find res_query()')
+ endif
+ endif
+
+ # socket()
+ socket_test = '''#include <sys/types.h>
+ #include <sys/socket.h>
+ int main (int argc, char ** argv) {
+ return socket(1, 2, 3);
+ }'''
+ if not cc.links(socket_test, name : 'socket()')
+ if cc.links(socket_test, args : '-lsocket', name : 'socket() in -lsocket')
+ network_libs += [ cc.find_library('socket') ]
+ network_args += [ '-lsocket' ]
+ else
+ error('Could not find socket()')
+ endif
+ endif
+
+ # dn_comp()
+ if cc.links('''#include <resolv.h>
+ int main (int argc, char ** argv) {
+ return dn_comp(NULL, NULL, 0, NULL, NULL) == -1;
+ } ''', args : network_args, name : 'dn_comp()')
+ glib_conf.set('HAVE_DN_COMP', 1)
+ endif
+
+ # res_nclose()
+ if cc.links('''#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+ int main (int argc, char ** argv) {
+ struct __res_state res;
+ res_nclose(&res);
+ return 0;
+ }''', args : network_args, name : 'res_nclose()')
+ glib_conf.set('HAVE_RES_NCLOSE', 1)
+ endif
+
+ # res_ndestroy()
+ if cc.links('''#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+ int main (int argc, char ** argv) {
+ struct __res_state res;
+ res_ndestroy(&res);
+ return 0;
+ }''', args : network_args, name : 'res_ndestroy()')
+ glib_conf.set('HAVE_RES_NDESTROY', 1)
+ endif
+
+ # res_ninit()
+ if cc.links('''#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+ int main (int argc, char ** argv) {
+ struct __res_state res;
+ return res_ninit(&res);
+ }''', args : network_args, name : 'res_ninit()')
+ glib_conf.set('HAVE_RES_NINIT', 1)
+ endif
+
+ # res_nquery()
+ if cc.links('''#include <sys/types.h>
+ #include <netinet/in.h>
+ #include <arpa/nameser.h>
+ #include <resolv.h>
+ int main (int argc, char ** argv) {
+ struct __res_state res;
+ return res_nquery(&res, "test", 0, 0, (void *)0, 0);
+ }''', args : network_args, name : 'res_nquery()')
+ glib_conf.set('HAVE_RES_NQUERY', 1)
+ endif
+
+ if cc.has_type('struct ip_mreqn', prefix : '#include <netinet/in.h>')
+ glib_conf.set('HAVE_IP_MREQN', 1)
+ endif
+
+ if cc.compiles('''#include <sys/ioctl.h>
+ #include <net/if.h>
+ int main (int argc, char ** argv) {
+ struct ifreq ifr;
+ ioctl(0, SIOCGIFADDR, &ifr);
+ return 0;
+ }''',
+ name : 'ioctl with request SIOCGIFADDR')
+ glib_conf.set('HAVE_SIOCGIFADDR', '/**/')
+ endif
+
+endif
+
+if host_system == 'android'
+ # struct ip_mreq_source definition is broken on Android NDK <= r16
+ # See https://bugzilla.gnome.org/show_bug.cgi?id=740791
+ if not cc.compiles('''#include <netinet/in.h>
+ int main(int argc, char ** argv) {
+ struct ip_mreq_source mc_req_src;
+ mc_req_src.imr_interface.s_addr = 0;
+ return 0;
+ }''',
+ name : 'ip_mreq_source.imr_interface has s_addr member')
+ glib_conf.set('BROKEN_IP_MREQ_SOURCE_STRUCT', 1)
+ endif
+endif
+
+gnetworking_h_conf.set('NAMESER_COMPAT_INCLUDE', gnetworking_h_nameser_compat_include)
+
+gnetworking_h = configure_file(input : 'gnetworking.h.in',
+ output : 'gnetworking.h',
+ install_dir : gio_includedir,
+ configuration : gnetworking_h_conf)
+
+gdbus_headers = files(
+ 'gdbusauthobserver.h',
+ 'gcredentials.h',
+ 'gdbusutils.h',
+ 'gdbuserror.h',
+ 'gdbusaddress.h',
+ 'gdbusconnection.h',
+ 'gdbusmessage.h',
+ 'gdbusnameowning.h',
+ 'gdbusnamewatching.h',
+ 'gdbusproxy.h',
+ 'gdbusintrospection.h',
+ 'gdbusmethodinvocation.h',
+ 'gdbusserver.h',
+ 'gdbusinterface.h',
+ 'gdbusinterfaceskeleton.h',
+ 'gdbusobject.h',
+ 'gdbusobjectskeleton.h',
+ 'gdbusobjectproxy.h',
+ 'gdbusobjectmanager.h',
+ 'gdbusobjectmanagerclient.h',
+ 'gdbusobjectmanagerserver.h',
+ 'gtestdbus.h',
+)
+
+gdbus_sources = files(
+ 'gdbusutils.c',
+ 'gdbusaddress.c',
+ 'gdbusauthobserver.c',
+ 'gdbusauth.c',
+ 'gdbusauthmechanism.c',
+ 'gdbusauthmechanismanon.c',
+ 'gdbusauthmechanismexternal.c',
+ 'gdbusauthmechanismsha1.c',
+ 'gdbuserror.c',
+ 'gdbusconnection.c',
+ 'gdbusmessage.c',
+ 'gdbusnameowning.c',
+ 'gdbusnamewatching.c',
+ 'gdbusproxy.c',
+ 'gdbusprivate.c',
+ 'gdbusintrospection.c',
+ 'gdbusmethodinvocation.c',
+ 'gdbusserver.c',
+ 'gdbusinterface.c',
+ 'gdbusinterfaceskeleton.c',
+ 'gdbusobject.c',
+ 'gdbusobjectskeleton.c',
+ 'gdbusobjectproxy.c',
+ 'gdbusobjectmanager.c',
+ 'gdbusobjectmanagerclient.c',
+ 'gdbusobjectmanagerserver.c',
+ 'gtestdbus.c',
+)
+
+# Generate gdbus-codegen
+subdir('gdbus-2.0/codegen')
+
+# Generate xdp-dbus.{c,h}
+xdp_dbus_generated = custom_target('xdp-dbus',
+ input : ['org.freedesktop.portal.Documents.xml',
+ 'org.freedesktop.portal.OpenURI.xml',
+ 'org.freedesktop.portal.ProxyResolver.xml',
+ 'org.freedesktop.portal.Trash.xml'],
+ output : ['xdp-dbus.h', 'xdp-dbus.c'],
+ depend_files : gdbus_codegen_built_files,
+ command : [python, gdbus_codegen,
+ '--interface-prefix', 'org.freedesktop.portal.',
+ '--output-directory', '@OUTDIR@',
+ '--generate-c-code', 'xdp-dbus',
+ '--c-namespace', 'GXdp',
+ '@INPUT@'])
+
+# Generate gdbus-generated.{c,h}
+gdbus_daemon_generated = custom_target('gdbus-daemon-generated',
+ input : ['dbus-daemon.xml'],
+ output : ['gdbus-daemon-generated.h', 'gdbus-daemon-generated.c'],
+ depend_files : gdbus_codegen_built_files,
+ command : [python, gdbus_codegen,
+ '--interface-prefix', 'org.',
+ '--output-directory', '@OUTDIR@',
+ '--generate-c-code', 'gdbus-daemon-generated',
+ '--c-namespace', '_G', '@INPUT@'])
+
+settings_headers = files(
+ 'gsettingsbackend.h',
+ 'gsettingsschema.h',
+ 'gsettings.h',
+)
+
+settings_sources = files(
+ 'gdelayedsettingsbackend.c',
+ 'gkeyfilesettingsbackend.c',
+ 'gmemorysettingsbackend.c',
+ 'gnullsettingsbackend.c',
+ 'gsettingsbackend.c',
+ 'gsettingsschema.c',
+ 'gsettings-mapping.c',
+ 'gsettings.c',
+)
+
+if host_system == 'windows'
+ settings_sources += files('gregistrysettingsbackend.c')
+endif
+
+application_headers = files(
+ 'gapplication.h',
+ 'gapplicationcommandline.h',
+
+ 'gactiongroup.h',
+ 'gactionmap.h',
+ 'gsimpleactiongroup.h',
+ 'gremoteactiongroup.h',
+ 'gactiongroupexporter.h',
+ 'gdbusactiongroup.h',
+ 'gaction.h',
+ 'gpropertyaction.h',
+ 'gsimpleaction.h',
+
+ 'gmenumodel.h',
+ 'gmenu.h',
+ 'gmenuexporter.h',
+ 'gdbusmenumodel.h',
+ 'gnotification.h',
+)
+
+application_sources = files(
+ 'gapplication.c',
+ 'gapplicationcommandline.c',
+ 'gapplicationimpl-dbus.c',
+
+ 'gactiongroup.c',
+ 'gactionmap.c',
+ 'gsimpleactiongroup.c',
+ 'gremoteactiongroup.c',
+ 'gactiongroupexporter.c',
+ 'gdbusactiongroup.c',
+ 'gaction.c',
+ 'gpropertyaction.c',
+ 'gsimpleaction.c',
+
+ 'gmenumodel.c',
+ 'gmenu.c',
+ 'gmenuexporter.c',
+ 'gdbusmenumodel.c',
+ 'gnotification.c',
+ 'gnotificationbackend.c',
+)
+
+local_sources = files(
+ 'ghttpproxy.c',
+ 'glocalfile.c',
+ 'glocalfileenumerator.c',
+ 'glocalfileinfo.c',
+ 'glocalfileinputstream.c',
+ 'glocalfilemonitor.c',
+ 'glocalfileoutputstream.c',
+ 'glocalfileiostream.c',
+ 'glocalvfs.c',
+ 'gsocks4proxy.c',
+ 'gsocks4aproxy.c',
+ 'gsocks5proxy.c',
+ 'thumbnail-verify.c',
+)
+
+platform_deps = []
+internal_deps = []
+appinfo_sources = []
+contenttype_sources = []
+portal_sources = []
+unix_sources = []
+win32_sources = []
+
+# This is also used by tests/gdbus-daemon, so use files() to include the path
+gdbus_daemon_sources = [
+ files('gdbusdaemon.c'),
+ gdbus_daemon_generated,
+]
+
+if host_system != 'windows'
+ unix_sources = files(
+ 'gfiledescriptorbased.c',
+ 'giounix-private.c',
+ 'gunixfdmessage.c',
+ 'gunixmount.c',
+ 'gunixmounts.c',
+ 'gunixvolume.c',
+ 'gunixvolumemonitor.c',
+ 'gunixinputstream.c',
+ 'gunixoutputstream.c',
+ 'gfdonotificationbackend.c',
+ 'ggtknotificationbackend.c',
+ )
+
+ portal_sources = [files(
+ 'gdocumentportal.c',
+ 'gopenuriportal.c',
+ 'gmemorymonitorportal.c',
+ 'gnetworkmonitorportal.c',
+ 'gpowerprofilemonitorportal.c',
+ 'gproxyresolverportal.c',
+ 'gtrashportal.c',
+ 'gportalsupport.c',
+ 'gportalnotificationbackend.c',
+ 'gsandbox.c',
+ ),
+ xdp_dbus_generated
+ ]
+
+ gio_unix_include_headers = files(
+ 'gfiledescriptorbased.h',
+ 'gunixmounts.h',
+ 'gunixfdmessage.h',
+ 'gunixinputstream.h',
+ 'gunixoutputstream.h',
+ )
+
+ if glib_have_cocoa
+ settings_sources += files('gnextstepsettingsbackend.m')
+ contenttype_sources += files('gosxcontenttype.m')
+ appinfo_sources += files('gosxappinfo.m')
+ framework_dep = dependency('appleframeworks', modules : ['Foundation', 'CoreFoundation', 'AppKit'])
+ platform_deps += [framework_dep]
+ if glib_have_os_x_9_or_later
+ unix_sources += files('gcocoanotificationbackend.m')
+ endif
+ application_headers += files('gosxappinfo.h')
+ else
+ contenttype_sources += files('gcontenttype.c')
+ appinfo_sources += files('gdesktopappinfo.c')
+ gio_unix_include_headers += files('gdesktopappinfo.h')
+ launch_desktop_sources = files('gio-launch-desktop.c')
+
+ if host_system == 'linux'
+ launch_desktop_sources += files('../glib/gjournal-private.c')
+ endif
+
+ gio_launch_desktop = executable('gio-launch-desktop', launch_desktop_sources,
+ include_directories : glibinc,
+ install : true,
+ install_dir : multiarch_libexecdir,
+ install_tag : 'bin',
+ c_args : gio_c_args,
+ # intl.lib is not compatible with SAFESEH
+ link_args : noseh_link_args)
+ endif
+
+ subdir('xdgmime')
+ internal_deps += [xdgmime_lib]
+
+ install_headers(gio_unix_include_headers, subdir : 'gio-unix-2.0/gio')
+
+ if glib_conf.has('HAVE_NETLINK')
+ unix_sources += files(
+ 'gnetworkmonitornetlink.c',
+ 'gnetworkmonitornm.c',
+ )
+ endif
+else
+ appinfo_sources += files('gwin32appinfo.c')
+ contenttype_sources += files('gcontenttype-win32.c')
+ platform_deps += [cc.find_library('shlwapi'),
+ cc.find_library('dnsapi'),
+ iphlpapi_dep,
+ winsock2]
+ platform_deps += uwp_gio_deps
+
+ win32_sources += files(
+ 'gmemorymonitorwin32.c',
+ 'gwin32registrykey.c',
+ 'gwin32mount.c',
+ 'gwin32volumemonitor.c',
+ 'gwin32inputstream.c',
+ 'gwin32outputstream.c',
+ 'gwin32file-sync-stream.c',
+ 'gwin32packageparser.c',
+ 'gwin32networkmonitor.c',
+ 'gwin32networkmonitor.h',
+ 'gwin32notificationbackend.c',
+ 'gwin32sid.c',
+ 'gwin32sid.h',
+ )
+
+ gio_win_rc = configure_file(
+ input: 'gio.rc.in',
+ output: 'gio.rc',
+ configuration: glibconfig_conf,
+ )
+ gio_win_res = windows.compile_resources(gio_win_rc)
+ win32_sources += [gio_win_res]
+
+ gio_win32_include_headers = files(
+ 'gwin32inputstream.h',
+ 'gwin32outputstream.h',
+ )
+ install_headers(gio_win32_include_headers, subdir : 'gio-win32-2.0/gio')
+endif
+
+gio_sources = files(
+ 'gappinfo.c',
+ 'gasynchelper.c',
+ 'gasyncinitable.c',
+ 'gasyncresult.c',
+ 'gbufferedinputstream.c',
+ 'gbufferedoutputstream.c',
+ 'gbytesicon.c',
+ 'gcancellable.c',
+ 'gcharsetconverter.c',
+ 'gcontextspecificgroup.c',
+ 'gconverter.c',
+ 'gconverterinputstream.c',
+ 'gconverteroutputstream.c',
+ 'gcredentials.c',
+ 'gdatagrambased.c',
+ 'gdatainputstream.c',
+ 'gdataoutputstream.c',
+ 'gdebugcontroller.c',
+ 'gdebugcontrollerdbus.c',
+ 'gdrive.c',
+ 'gdummyfile.c',
+ 'gdummyproxyresolver.c',
+ 'gdummytlsbackend.c',
+ 'gemblem.c',
+ 'gemblemedicon.c',
+ 'gfile.c',
+ 'gfileattribute.c',
+ 'gfileenumerator.c',
+ 'gfileicon.c',
+ 'gfileinfo.c',
+ 'gfileinputstream.c',
+ 'gfilemonitor.c',
+ 'gfilenamecompleter.c',
+ 'gfileoutputstream.c',
+ 'gfileiostream.c',
+ 'gfilterinputstream.c',
+ 'gfilteroutputstream.c',
+ 'gicon.c',
+ 'ginetaddress.c',
+ 'ginetaddressmask.c',
+ 'ginetsocketaddress.c',
+ 'ginitable.c',
+ 'ginputstream.c',
+ 'gioerror.c',
+ 'giomodule.c',
+ 'giomodule-priv.c',
+ 'gioscheduler.c',
+ 'giostream.c',
+ 'gloadableicon.c',
+ 'gmarshal-internal.c',
+ 'gmount.c',
+ 'gmemorymonitor.c',
+ 'gmemorymonitordbus.c',
+ 'gmemoryinputstream.c',
+ 'gmemoryoutputstream.c',
+ 'gmountoperation.c',
+ 'gnativesocketaddress.c',
+ 'gnativevolumemonitor.c',
+ 'gnetworkaddress.c',
+ 'gnetworking.c',
+ 'gnetworkmonitor.c',
+ 'gnetworkmonitorbase.c',
+ 'gnetworkservice.c',
+ 'goutputstream.c',
+ 'gpermission.c',
+ 'gpollableinputstream.c',
+ 'gpollableoutputstream.c',
+ 'gpollableutils.c',
+ 'gpollfilemonitor.c',
+ 'gpowerprofilemonitor.c',
+ 'gpowerprofilemonitordbus.c',
+ 'gproxy.c',
+ 'gproxyaddress.c',
+ 'gproxyaddressenumerator.c',
+ 'gproxyresolver.c',
+ 'gresolver.c',
+ 'gresource.c',
+ 'gresourcefile.c',
+ 'gseekable.c',
+ 'gsimpleasyncresult.c',
+ 'gsimpleiostream.c',
+ 'gsimplepermission.c',
+ 'gsimpleproxyresolver.c',
+ 'gsocket.c',
+ 'gsocketaddress.c',
+ 'gsocketaddressenumerator.c',
+ 'gsocketclient.c',
+ 'gsocketconnectable.c',
+ 'gsocketconnection.c',
+ 'gsocketcontrolmessage.c',
+ 'gsocketinputstream.c',
+ 'gsocketlistener.c',
+ 'gsocketoutputstream.c',
+ 'gsocketservice.c',
+ 'gsrvtarget.c',
+ 'gsubprocesslauncher.c',
+ 'gsubprocess.c',
+ 'gtask.c',
+ 'gtcpconnection.c',
+ 'gtcpwrapperconnection.c',
+ 'gthemedicon.c',
+ 'gthreadedsocketservice.c',
+ 'gthreadedresolver.c',
+ 'gthreadedresolver.h',
+ 'gtlsbackend.c',
+ 'gtlscertificate.c',
+ 'gtlsclientconnection.c',
+ 'gtlsconnection.c',
+ 'gtlsdatabase.c',
+ 'gtlsfiledatabase.c',
+ 'gtlsinteraction.c',
+ 'gtlspassword.c',
+ 'gtlsserverconnection.c',
+ 'gdtlsconnection.c',
+ 'gdtlsclientconnection.c',
+ 'gdtlsserverconnection.c',
+ 'gunionvolumemonitor.c',
+ 'gunixconnection.c',
+ 'gunixfdlist.c',
+ 'gunixcredentialsmessage.c',
+ 'gunixsocketaddress.c',
+ 'gvfs.c',
+ 'gvolume.c',
+ 'gvolumemonitor.c',
+ 'gzlibcompressor.c',
+ 'gzlibdecompressor.c',
+ 'glistmodel.c',
+ 'gliststore.c',
+)
+
+if glib_build_shared
+ gio_sources += files ('../glib/gtrace.c')
+endif
+
+gio_sources += appinfo_sources
+gio_sources += contenttype_sources
+gio_sources += gdbus_daemon_sources
+gio_sources += unix_sources
+gio_sources += win32_sources
+gio_sources += application_sources
+gio_sources += settings_sources
+gio_sources += gdbus_sources
+gio_sources += portal_sources
+gio_sources += local_sources
+
+MISSING_STUFF = '''
+# This is read by gobject-introspection/misc/ and gtk-doc
+gio-public-headers.txt: Makefile
+ '$(AM_V_GEN) echo $(gioinclude_HEADERS) $(giowin32include_HEADERS) $(giounixinclude_HEADERS) > $@.tmp && mv $@.tmp $@
+
+gio.def: libgio-2.0.la
+ '$(AM_V_GEN) dumpbin.exe -exports .libs/libgio-2.0-0.dll | awk 'BEGIN { print "EXPORTS" } / +[[:digit:]]+ +[[:xdigit:]]+ +[[:xdigit:]]+/{ print $$4 }' > gio.def.tmp && mv gio.def.tmp gio.def
+
+gio-2.0.lib: libgio-2.0.la gio.def
+ '$(AM_V_GEN) lib.exe -machine:@LIB_EXE_MACHINE_FLAG@ -name:libgio-2.0-$(LT_CURRENT_MINUS_AGE).dll -def:$(builddir)/gio.def -out:$@
+'''
+
+gio_headers = files(
+ 'gappinfo.h',
+ 'gasyncinitable.h',
+ 'gasyncresult.h',
+ 'gbufferedinputstream.h',
+ 'gbufferedoutputstream.h',
+ 'gbytesicon.h',
+ 'gcancellable.h',
+ 'gcontenttype.h',
+ 'gcharsetconverter.h',
+ 'gconverter.h',
+ 'gconverterinputstream.h',
+ 'gconverteroutputstream.h',
+ 'gdatagrambased.h',
+ 'gdatainputstream.h',
+ 'gdataoutputstream.h',
+ 'gdebugcontroller.h',
+ 'gdebugcontrollerdbus.h',
+ 'gdrive.h',
+ 'gemblem.h',
+ 'gemblemedicon.h',
+ 'gfile.h',
+ 'gfileattribute.h',
+ 'gfileenumerator.h',
+ 'gfileicon.h',
+ 'gfileinfo.h',
+ 'gfileinputstream.h',
+ 'gfilemonitor.h',
+ 'gfilenamecompleter.h',
+ 'gfileoutputstream.h',
+ 'gfileiostream.h',
+ 'gfilterinputstream.h',
+ 'gfilteroutputstream.h',
+ 'gicon.h',
+ 'ginetaddress.h',
+ 'ginetaddressmask.h',
+ 'ginetsocketaddress.h',
+ 'ginitable.h',
+ 'ginputstream.h',
+ 'gio.h',
+ 'gio-autocleanups.h',
+ 'gioenums.h',
+ 'gioerror.h',
+ 'giomodule.h',
+ 'gioscheduler.h',
+ 'giostream.h',
+ 'giotypes.h',
+ 'gloadableicon.h',
+ 'gmount.h',
+ 'gmemoryinputstream.h',
+ 'gmemorymonitor.h',
+ 'gmemoryoutputstream.h',
+ 'gmountoperation.h',
+ 'gnativesocketaddress.h',
+ 'gnativevolumemonitor.h',
+ 'gnetworkaddress.h',
+ 'gnetworkmonitor.h',
+ 'gnetworkservice.h',
+ 'goutputstream.h',
+ 'gpermission.h',
+ 'gpollableinputstream.h',
+ 'gpollableoutputstream.h',
+ 'gpollableutils.h',
+ 'gpowerprofilemonitor.h',
+ 'gproxy.h',
+ 'gproxyaddress.h',
+ 'gproxyaddressenumerator.h',
+ 'gproxyresolver.h',
+ 'gresolver.h',
+ 'gresource.h',
+ 'gseekable.h',
+ 'gsimpleasyncresult.h',
+ 'gsimpleiostream.h',
+ 'gsimplepermission.h',
+ 'gsimpleproxyresolver.h',
+ 'gsocket.h',
+ 'gsocketaddress.h',
+ 'gsocketaddressenumerator.h',
+ 'gsocketclient.h',
+ 'gsocketconnectable.h',
+ 'gsocketconnection.h',
+ 'gsocketcontrolmessage.h',
+ 'gsocketlistener.h',
+ 'gsocketservice.h',
+ 'gsrvtarget.h',
+ 'gsubprocess.h',
+ 'gsubprocesslauncher.h',
+ 'gtask.h',
+ 'gtcpconnection.h',
+ 'gtcpwrapperconnection.h',
+ 'gthemedicon.h',
+ 'gthreadedsocketservice.h',
+ 'gtlsbackend.h',
+ 'gtlscertificate.h',
+ 'gtlsclientconnection.h',
+ 'gtlsconnection.h',
+ 'gtlsdatabase.h',
+ 'gtlsfiledatabase.h',
+ 'gtlsinteraction.h',
+ 'gtlspassword.h',
+ 'gtlsserverconnection.h',
+ 'gdtlsconnection.h',
+ 'gdtlsclientconnection.h',
+ 'gdtlsserverconnection.h',
+ 'gunixconnection.h',
+ 'gunixcredentialsmessage.h',
+ 'gunixfdlist.h',
+ 'gunixsocketaddress.h',
+ 'gvfs.h',
+ 'gvolume.h',
+ 'gvolumemonitor.h',
+ 'gzlibcompressor.h',
+ 'gzlibdecompressor.h',
+ 'glistmodel.h',
+ 'gliststore.h',
+)
+
+gio_visibility_h = custom_target(
+ output: 'gio-visibility.h',
+ command: [gen_visibility_macros, meson.project_version(), 'visibility-macros', 'GIO', '@OUTPUT@'],
+ install: true,
+ install_dir: gio_includedir,
+ # FIXME: Not needed with Meson >= 0.64.0
+ install_tag: 'devel',
+)
+gio_sources += gio_visibility_h
+
+gio_headers += application_headers
+gio_headers += settings_headers
+gio_headers += gdbus_headers
+install_headers(gio_headers, install_dir : gio_includedir)
+
+# We can't use gnome.mkenums() because the GNOME module looks for glib-mkenums
+# in PATH, which means you can't bootstrap glib with its own glib-mkenums.
+gioenumtypes_h = custom_target('gioenumtypes_h',
+ output : 'gioenumtypes.h',
+ capture : true,
+ input : gio_headers,
+ install : true,
+ install_dir : gio_includedir,
+ # FIXME: Not needed with Meson >= 0.64.0
+ install_tag: 'devel',
+ command : [python, glib_mkenums,
+ '--template', files('gioenumtypes.h.template'),
+ '@INPUT@', gnetworking_h])
+
+gioenumtypes_c = custom_target('gioenumtypes_c',
+ output : 'gioenumtypes.c',
+ capture : true,
+ input : gio_headers,
+ depends : [gioenumtypes_h],
+ command : [python, glib_mkenums,
+ '--template', files('gioenumtypes.c.template'),
+ '@INPUT@', gnetworking_h])
+
+gioenumtypes_dep = declare_dependency(sources : [gioenumtypes_h, glib_enumtypes_h, gio_visibility_h])
+
+# inotify
+if glib_conf.has('HAVE_SYS_INOTIFY_H') and have_func_inotify_init1
+ subdir('inotify')
+ internal_deps += [ inotify_lib ]
+endif
+
+# kevent
+if have_func_kqueue and have_func_kevent
+ subdir('kqueue')
+ internal_deps += [ kqueue_lib ]
+endif
+
+if host_system == 'windows'
+ subdir('win32')
+ internal_deps += [ giowin32_lib ]
+endif
+
+if have_bash
+ bash_comp_inst_dir = ''
+ if bash_comp_dep.found()
+ bash_comp_dir_override = bash_comp_dep.version().version_compare('>= 2.10') ? ['datadir', get_option('datadir')] : ['prefix', get_option('prefix')]
+ bash_comp_inst_dir = bash_comp_dep.get_variable('completionsdir', pkgconfig_define: bash_comp_dir_override)
+ endif
+
+ if bash_comp_inst_dir == ''
+ message('Found bash-completion but the .pc file did not set \'completionsdir\', fallback to a predefined path')
+ bash_comp_inst_dir = join_paths(get_option('datadir'), 'bash-completion/completions')
+ endif
+
+ install_data([
+ 'completion/gapplication',
+ 'completion/gdbus',
+ 'completion/gio',
+ 'completion/gsettings',
+ 'completion/gresource'
+ ],
+ install_dir: bash_comp_inst_dir,
+ install_tag: 'bin',
+ )
+endif
+
+if enable_dtrace
+ gio_dtrace_obj = dtrace_obj_gen.process('gio_probes.d')
+ gio_dtrace_hdr = dtrace_hdr_gen.process('gio_probes.d')
+else
+ gio_dtrace_obj = []
+ gio_dtrace_hdr = []
+endif
+
+libgio = library('gio-2.0',
+ gioenumtypes_h, gioenumtypes_c, gnetworking_h, gio_sources,
+ gio_dtrace_hdr, gio_dtrace_obj,
+ version : library_version,
+ soversion : soversion,
+ darwin_versions : darwin_versions,
+ install : true,
+ include_directories : [configinc, gioinc],
+ # '$(gio_win32_res_ldflag)',
+ link_with: internal_deps,
+ dependencies : [libz_dep, libdl_dep, libmount_dep, libglib_dep,
+ libgobject_dep, libgmodule_dep, selinux_dep, xattr_dep,
+ platform_deps, network_libs, libsysprof_capture_dep,
+ gioenumtypes_dep, gvdb_dep],
+ c_args : [gio_c_args, gio_c_args_internal],
+ objc_args : [gio_c_args, gio_c_args_internal],
+ gnu_symbol_visibility : 'hidden',
+ # intl.lib is not compatible with SAFESEH
+ link_args : [noseh_link_args, glib_link_flags],
+)
+
+if get_option('gio_module_dir') != ''
+ pkgconfig_giomodulesdir = join_paths('${prefix}', get_option('gio_module_dir'))
+else
+ pkgconfig_giomodulesdir = join_paths('${libdir}', 'gio', 'modules')
+endif
+
+schemas_subdir = join_paths('glib-2.0', 'schemas')
+
+libgio_dep = declare_dependency(link_with : libgio,
+ dependencies : [libgmodule_dep, libgobject_dep, gioenumtypes_dep],
+ include_directories : [gioinc],
+ variables : [
+ 'schemasdir=' + join_paths(glib_datadir, schemas_subdir),
+ 'giomoduledir=' + glib_giomodulesdir,
+ ],
+)
+
+pkg.generate(libgio,
+ requires : ['glib-2.0', 'gobject-2.0'],
+ variables : ['datadir=' + join_paths('${prefix}', get_option('datadir')),
+ 'schemasdir=' + join_paths('${datadir}', schemas_subdir),
+ 'bindir=' + join_paths('${prefix}', get_option('bindir')),
+ 'giomoduledir=' + pkgconfig_giomodulesdir,
+ 'gio=' + join_paths('${bindir}', 'gio'),
+ 'gio_querymodules=@0@'.format(pkgconfig_multiarch_bindir / 'gio-querymodules'),
+ 'glib_compile_schemas=@0@'.format(pkgconfig_multiarch_bindir / 'glib-compile-schemas'),
+ 'glib_compile_resources=' + join_paths('${bindir}', 'glib-compile-resources'),
+ 'gdbus=' + join_paths('${bindir}', 'gdbus'),
+ 'gdbus_codegen=' + join_paths('${bindir}', 'gdbus-codegen'),
+ 'gresource=' + join_paths('${bindir}', 'gresource'),
+ 'gsettings=' + join_paths('${bindir}', 'gsettings')],
+ version : glib_version,
+ install_dir : glib_pkgconfigreldir,
+ filebase : 'gio-2.0',
+ name : 'GIO',
+ description : 'glib I/O library',
+)
+meson.override_dependency('gio-2.0', libgio_dep)
+
+if host_system == 'windows'
+ pkg.generate(requires : ['gobject-2.0', 'gmodule-no-export-2.0', 'gio-2.0'],
+ subdirs : ['gio-win32-2.0'],
+ version : glib_version,
+ install_dir : glib_pkgconfigreldir,
+ filebase : 'gio-windows-2.0',
+ name : 'GIO Windows specific APIs',
+ description : 'Windows specific headers for glib I/O library',
+ )
+ meson.override_dependency('gio-windows-2.0', libgio_dep)
+else
+ pkg.generate(requires : ['gobject-2.0', 'gio-2.0'],
+ subdirs : ['gio-unix-2.0'],
+ version : glib_version,
+ install_dir : glib_pkgconfigreldir,
+ filebase : 'gio-unix-2.0',
+ name : 'GIO unix specific APIs',
+ description : 'unix specific headers for glib I/O library',
+ )
+ meson.override_dependency('gio-unix-2.0', libgio_dep)
+endif
+
+if host_system == 'windows'
+ # Hack till https://github.com/mesonbuild/meson/issues/2324 is fixed
+ libgiounix_dep = dependency('', required : false)
+ libgiowin32_dep = libgio_dep
+else
+ libgiowin32_dep = dependency('', required : false)
+ libgiounix_dep = libgio_dep
+endif
+
+# Dependencies used by executables below
+have_libelf = false
+libelf = dependency('libelf', version : '>= 0.8.12', required : get_option ('libelf'))
+if libelf.found()
+ have_libelf = true
+else
+ # This fallback is necessary on *BSD. elfutils isn't the only libelf
+ # implementation, and *BSD usually includes their own libelf as a system
+ # library which doesn't have a corresponding .pc file.
+ libelf = cc.find_library('elf', required : get_option ('libelf'))
+ have_libelf = libelf.found()
+ have_libelf = have_libelf and cc.has_function('elf_begin', dependencies : libelf)
+ have_libelf = have_libelf and cc.has_function('elf_getshdrstrndx', dependencies : libelf)
+ have_libelf = have_libelf and cc.has_function('elf_getshdrnum', dependencies : libelf)
+ have_libelf = have_libelf and cc.has_header('libelf.h')
+endif
+
+if have_libelf
+ glib_conf.set('HAVE_LIBELF', 1)
+else
+ libelf = []
+endif
+
+gconstructor_as_data_h = custom_target('gconstructor_as_data.h',
+ input : ['data-to-c.py', files('../glib/gconstructor.h')],
+ output : ['gconstructor_as_data.h'],
+ command : [python, '@INPUT0@', '@INPUT1@', 'gconstructor_code', '@OUTPUT@'])
+
+# Several installed executables
+gio_tool_sources = [
+ 'gio-tool.c',
+ 'gio-tool.h',
+ 'gio-tool-cat.c',
+ 'gio-tool-copy.c',
+ 'gio-tool-info.c',
+ 'gio-tool-launch.c',
+ 'gio-tool-list.c',
+ 'gio-tool-mime.c',
+ 'gio-tool-mkdir.c',
+ 'gio-tool-monitor.c',
+ 'gio-tool-mount.c',
+ 'gio-tool-move.c',
+ 'gio-tool-open.c',
+ 'gio-tool-rename.c',
+ 'gio-tool-remove.c',
+ 'gio-tool-save.c',
+ 'gio-tool-set.c',
+ 'gio-tool-trash.c',
+ 'gio-tool-tree.c',
+]
+
+executable('gio', gio_tool_sources,
+ install : true,
+ install_tag : 'bin',
+ c_args : gio_c_args,
+ # intl.lib is not compatible with SAFESEH
+ link_args : noseh_link_args,
+ dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+
+executable('gresource', 'gresource-tool.c',
+ install : true,
+ install_tag : 'bin',
+ # intl.lib is not compatible with SAFESEH
+ link_args : noseh_link_args,
+ dependencies : [libelf, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+
+gio_querymodules = executable('gio-querymodules', 'gio-querymodules.c', 'giomodule-priv.c',
+ install : true,
+ install_dir : multiarch_bindir,
+ install_tag : 'bin',
+ c_args : gio_c_args,
+ # intl.lib is not compatible with SAFESEH
+ link_args : noseh_link_args,
+ dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+
+glib_compile_schemas = executable('glib-compile-schemas',
+ ['glib-compile-schemas.c'],
+ install : true,
+ install_dir : multiarch_bindir,
+ install_tag : 'bin',
+ # intl.lib is not compatible with SAFESEH
+ link_args : noseh_link_args,
+ dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep, gvdb_dep])
+
+glib_compile_resources = executable('glib-compile-resources',
+ [gconstructor_as_data_h, 'glib-compile-resources.c'],
+ install : true,
+ install_tag : 'bin-devel',
+ c_args : gio_c_args,
+ # intl.lib is not compatible with SAFESEH
+ link_args : noseh_link_args,
+ dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep, gvdb_dep])
+
+executable('gsettings', 'gsettings-tool.c',
+ install : true,
+ install_tag : 'bin',
+ c_args : gio_c_args,
+ # intl.lib is not compatible with SAFESEH
+ link_args : noseh_link_args,
+ dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+install_data('gschema.dtd',
+ install_dir : get_option('datadir') / schemas_subdir,
+ install_tag : 'devel',
+)
+
+install_data(['gschema.loc', 'gschema.its'],
+ install_dir : get_option('datadir') / 'gettext' / 'its',
+ install_tag : 'devel',
+)
+
+executable('gdbus', 'gdbus-tool.c',
+ install : true,
+ install_tag : 'bin',
+ c_args : gio_c_args,
+ # intl.lib is not compatible with SAFESEH
+ link_args : noseh_link_args,
+ dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+
+if host_system != 'windows' and not glib_have_cocoa
+ executable('gapplication', 'gapplication-tool.c',
+ install : true,
+ install_tag : 'bin',
+ c_args : gio_c_args,
+ # intl.lib is not compatible with SAFESEH
+ link_args : noseh_link_args,
+ dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+endif
+
+if enable_systemtap
+ gio_stp = configure_file(input : 'gio.stp.in',
+ output : '@0@.stp'.format(libgio.full_path().split('/').get(-1)),
+ configuration : stp_cdata,
+ install_dir : tapset_install_dir,
+ install_tag : 'systemtap',
+ )
+endif
+
+if multiarch_bindir != get_option('bindir')
+ foreach exe : ['gio-querymodules', 'glib-compile-schemas']
+ if meson.version().version_compare('>=0.61.0')
+ install_symlink(
+ exe,
+ install_dir : get_option('bindir'),
+ pointing_to : get_option('prefix') / multiarch_bindir / exe,
+ )
+ else
+ warning(
+ 'Please use Meson >= 0.61.0 or create a symlink @1@ -> @2@ in packaging'.format(
+ get_option('prefix') / get_option('bindir') / exe,
+ get_option('prefix') / multiarch_bindir / exe,
+ )
+ )
+ endif
+ endforeach
+endif
+
+if build_tests
+ subdir('tests')
+endif
+
+# The following is an example for building internal marshallers that are used
+# by GIO. We cannot guarantee glib-genmarshal availability while building GLib
+# so they are pre-generated and placed into gmarshal-internal.[ch].
+#
+# gmarshal_internal = gnome.genmarshal('gmarshal-internal',
+# sources: 'gmarshal-internal.list',
+# prefix: '_g_cclosure_marshal',
+# valist_marshallers: true,
+# internal: true,
+# )
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/gio
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/gio (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/gio (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/gio
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0/meson.build (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0/meson.build (revision 5)
@@ -0,0 +1,89 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+double_exponent_test = '''
+#include <float.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#define NWORDS \
+ ((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
+typedef union { double value; unsigned int word[NWORDS]; } memory_double;
+static unsigned int ored_words[NWORDS];
+static unsigned int anded_words[NWORDS];
+static void add_to_ored_words (double x)
+{
+ memory_double m;
+ size_t i;
+ /* Clear it first, in case sizeof (double) < sizeof (memory_double). */
+ memset (&m, 0, sizeof (memory_double));
+ m.value = x;
+ for (i = 0; i < NWORDS; i++)
+ {
+ ored_words[i] |= m.word[i];
+ anded_words[i] &= m.word[i];
+ }
+}
+int main ()
+{
+ size_t j;
+ FILE *fp = stdout;
+ if (fp == NULL)
+ return 1;
+ for (j = 0; j < NWORDS; j++)
+ anded_words[j] = ~ (unsigned int) 0;
+ add_to_ored_words (0.25);
+ add_to_ored_words (0.5);
+ add_to_ored_words (1.0);
+ add_to_ored_words (2.0);
+ add_to_ored_words (4.0);
+ /* Remove bits that are common (e.g. if representation of the first mantissa
+ bit is explicit). */
+ for (j = 0; j < NWORDS; j++)
+ ored_words[j] &= ~anded_words[j];
+ /* Now find the nonzero word. */
+ for (j = 0; j < NWORDS; j++)
+ if (ored_words[j] != 0)
+ break;
+ if (j < NWORDS)
+ {
+ size_t i;
+ for (i = j + 1; i < NWORDS; i++)
+ if (ored_words[i] != 0)
+ {
+ fprintf (fp, "-1/-1");
+ return (fclose (fp) != 0);
+ }
+ for (i = 0; ; i++)
+ if ((ored_words[j] >> i) & 1)
+ {
+ fprintf (fp, "%d/%d", (int) j, (int) i);
+ return (fclose (fp) != 0);
+ }
+ }
+ fprintf (fp, "-1/-1");
+ return (fclose (fp) != 0);
+}
+'''
+
+gl_cv_cc_double_expbit0_word = -1
+gl_cv_cc_double_expbit0_bit = -1
+
+# On ARM, there are two 'double' floating-point formats, used by
+# different sets of instructions: The older FPA instructions assume
+# that they are stored in big-endian word order, while the words
+# (like integer types) are stored in little-endian byte order.
+# The newer VFP instructions assume little-endian order
+# consistently.
+if (cc.get_define ('arm') == '' and
+ cc.get_define ('__arm') == '' and
+ cc.get_define ('__arm__') == '')
+ gl_cv_cc_double_expbit0_bit = 20
+ if host_machine.endian () == 'big'
+ gl_cv_cc_double_expbit0_word = 0
+ else
+ gl_cv_cc_double_expbit0_word = 1
+ endif
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0 (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0 (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_cc_double_expbit0
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works/meson.build (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works/meson.build (revision 5)
@@ -0,0 +1,94 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+frexp_test = '''
+#define HAVE_DECL_ALARM 0
+#include <float.h>
+#include <math.h>
+#include <string.h>
+#if HAVE_DECL_ALARM
+# include <signal.h>
+# include <unistd.h>
+#endif
+/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
+ ICC 10.0 has a bug when optimizing the expression -zero.
+ The expression -DBL_MIN * DBL_MIN does not work when cross-compiling
+ to PowerPC on Mac OS X 10.5. */
+#if defined __hpux || defined __sgi || defined __ICC
+static double
+compute_minus_zero (void)
+{
+ return -DBL_MIN * DBL_MIN;
+}
+# define minus_zero compute_minus_zero ()
+#else
+double minus_zero = -0.0;
+#endif
+int main()
+{
+ int result = 0;
+ int i;
+ volatile double x;
+ double zero = 0.0;
+#if HAVE_DECL_ALARM
+ /* NeXTstep 3.3 frexp() runs into an endless loop when called on an infinite
+ number. Let the test fail in this case. */
+ signal (SIGALRM, SIG_DFL);
+ alarm (5);
+#endif
+ /* Test on denormalized numbers. */
+ for (i = 1, x = 1.0; i >= DBL_MIN_EXP; i--, x *= 0.5)
+ ;
+ if (x > 0.0)
+ {
+ int exp;
+ double y = frexp (x, &exp);
+ /* On machines with IEEE754 arithmetic: x = 1.11254e-308, exp = -1022.
+ On NetBSD: y = 0.75. Correct: y = 0.5. */
+ if (y != 0.5)
+ result |= 1;
+ }
+ /* Test on infinite numbers. */
+ x = 1.0 / zero;
+ {
+ int exp;
+ double y = frexp (x, &exp);
+ if (y != x)
+ result |= 2;
+ }
+ /* Test on negative zero. */
+ x = minus_zero;
+ {
+ int exp;
+ double y = frexp (x, &exp);
+ if (memcmp (&y, &x, sizeof x))
+ result |= 4;
+ }
+ x = 0.0;
+ {
+ int exp;
+ double y = frexp (x, &exp);
+ if (memcmp (&y, &x, sizeof x))
+ result |= 8;
+ }
+ return result;
+}'''
+
+if (host_system.startswith ('netbsd') or
+ host_system.startswith ('irix'))
+ gl_cv_func_frexp_works = false
+ gl_cv_func_frexp_broken_beyond_repair = true
+elif host_system == 'windows'
+ if cc.get_id () == 'msvc' or cc.get_id() == 'clang-cl'
+ gl_cv_func_frexp_works = true
+ gl_cv_func_frexp_broken_beyond_repair = false
+ else
+ gl_cv_func_frexp_works = false
+ gl_cv_func_frexp_broken_beyond_repair = false
+ endif
+else
+ gl_cv_func_frexp_works = true
+ gl_cv_func_frexp_broken_beyond_repair = false
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexp_works
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works/meson.build (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works/meson.build (revision 5)
@@ -0,0 +1,126 @@
+# Copyright (C) 2007-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+frexpl_test = '''
+#include <float.h>
+#include <math.h>
+/* Override the values of <float.h>, like done in float.in.h. */
+#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP (-16381)
+#endif
+#if defined __i386__ && (defined __FreeBSD__ || defined __DragonFly__)
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP (-16381)
+#endif
+#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP DBL_MIN_EXP
+#endif
+#if defined __sgi && (LDBL_MANT_DIG >= 106)
+# if defined __GNUC__
+# undef LDBL_MIN_EXP
+# define LDBL_MIN_EXP DBL_MIN_EXP
+# endif
+#endif
+extern
+#ifdef __cplusplus
+"C"
+#endif
+
+#if !defined (_MSC_VER) || defined (TEST_FREXPL_DECL)
+long double frexpl (long double, int *);
+#endif
+
+int main()
+{
+ int result = 0;
+ volatile long double x;
+ /* Test on finite numbers that fails on AIX 5.1. */
+ x = 16.0L;
+ {
+ int exp = -9999;
+ frexpl (x, &exp);
+ if (exp != 5)
+ result |= 1;
+ }
+ /* Test on finite numbers that fails on Mac OS X 10.4, because its frexpl
+ function returns an invalid (incorrectly normalized) value: it returns
+ y = { 0x3fe028f5, 0xc28f5c28, 0x3c9eb851, 0xeb851eb8 }
+ but the correct result is
+ 0.505L = { 0x3fe028f5, 0xc28f5c29, 0xbc547ae1, 0x47ae1480 } */
+ x = 1.01L;
+ {
+ int exp = -9999;
+ long double y = frexpl (x, &exp);
+ if (!(exp == 1 && y == 0.505L))
+ result |= 2;
+ }
+ /* Test on large finite numbers. This fails on BeOS at i = 16322, while
+ LDBL_MAX_EXP = 16384.
+ In the loop end test, we test x against Infinity, rather than comparing
+ i with LDBL_MAX_EXP, because BeOS <float.h> has a wrong LDBL_MAX_EXP. */
+ {
+ int i;
+ for (i = 1, x = 1.0L; x != x + x; i++, x *= 2.0L)
+ {
+ int exp = -9999;
+ frexpl (x, &exp);
+ if (exp != i)
+ {
+ result |= 4;
+ break;
+ }
+ }
+ }
+ /* Test on denormalized numbers. */
+ {
+ int i;
+ for (i = 1, x = 1.0L; i >= LDBL_MIN_EXP; i--, x *= 0.5L)
+ ;
+ if (x > 0.0L)
+ {
+ int exp;
+ long double y = frexpl (x, &exp);
+ /* On machines with IEEE854 arithmetic: x = 1.68105e-4932,
+ exp = -16382, y = 0.5. On Mac OS X 10.5: exp = -16384, y = 0.5. */
+ if (exp != LDBL_MIN_EXP - 1)
+ result |= 8;
+ }
+ }
+ /* Test on infinite numbers. */
+ /* The dance around 0.0L is an attempt to prevent MSVC from erroring out */
+ x = 0.0L;
+ x = 1.0L / x;
+ {
+ int exp;
+ long double y = frexpl (x, &exp);
+ if (y != x)
+ result |= 16;
+ }
+ return result;
+}
+'''
+
+if (host_system.startswith ('aix') or
+ host_system.startswith ('beos') or
+ host_system.startswith ('irix'))
+ gl_cv_func_frexpl_works = false
+ gl_cv_func_frexpl_broken_beyond_repair = true
+elif (host_system == 'windows')
+ gl_cv_func_frexpl_works = false
+ gl_cv_func_frexpl_broken_beyond_repair = false
+else
+ gl_cv_func_frexpl_works = true
+ gl_cv_func_frexpl_broken_beyond_repair = false
+endif
+
+frexpl_test_decl = '''
+#define TEST_FREXPL_DECL 1
+''' + frexpl_test
+
+build_result = cc.compiles(frexpl_test_decl,
+ name : 'frexpl prototype can be re-listed')
+gl_cv_func_frexpl_decl = build_result
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_frexpl_works
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works/meson.build (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works/meson.build (revision 5)
@@ -0,0 +1,50 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+ldexpl_test = '''
+#include <math.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+
+#if !defined (_MSC_VER) || defined (TEST_LDEXPL_DECL)
+long double ldexpl (long double, int);
+#endif
+
+int main()
+{
+ int result = 0;
+ {
+ volatile long double x = 1.0;
+ volatile long double y = ldexpl (x, -1);
+ if (y != 0.5L)
+ result |= 1;
+ }
+ {
+ volatile long double x = 1.73205L;
+ volatile long double y = ldexpl (x, 0);
+ if (y != x)
+ result |= 2;
+ }
+ return result;
+}
+'''
+
+if host_system.startswith ('aix')
+ gl_cv_func_ldexpl_works = false
+elif host_system == 'windows'
+ gl_cv_func_ldexpl_works = true
+else
+ gl_cv_func_ldexpl_works = true
+endif
+
+ldexpl_test_decl = '''
+#define TEST_LDEXPL_DECL 1
+''' + ldexpl_test
+
+build_result = cc.compiles(ldexpl_test_decl,
+ name : 'ldexpl prototype can be re-listed')
+gl_cv_func_ldexpl_decl = build_result
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_ldexpl_works
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a/meson.build (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a/meson.build (revision 5)
@@ -0,0 +1,88 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports the 'a' and 'A'
+# conversion specifier for hexadecimal output of floating-point numbers.
+# (ISO C99, POSIX:2001)
+# Result is gl_cv_func_printf_directive_a.
+
+printf_directive_a_test = '''
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+static double zero = 0.0;
+int main ()
+{
+ int result = 0;
+ if (sprintf (buf, "%a %d", 3.1416015625, 33, 44, 55) < 0
+ || (strcmp (buf, "0x1.922p+1 33") != 0
+ && strcmp (buf, "0x3.244p+0 33") != 0
+ && strcmp (buf, "0x6.488p-1 33") != 0
+ && strcmp (buf, "0xc.91p-2 33") != 0))
+ result |= 1;
+ if (sprintf (buf, "%A %d", -3.1416015625, 33, 44, 55) < 0
+ || (strcmp (buf, "-0X1.922P+1 33") != 0
+ && strcmp (buf, "-0X3.244P+0 33") != 0
+ && strcmp (buf, "-0X6.488P-1 33") != 0
+ && strcmp (buf, "-0XC.91P-2 33") != 0))
+ result |= 2;
+ /* This catches a FreeBSD 6.1 bug: it doesn't round. */
+ if (sprintf (buf, "%.2a %d", 1.51, 33, 44, 55) < 0
+ || (strcmp (buf, "0x1.83p+0 33") != 0
+ && strcmp (buf, "0x3.05p-1 33") != 0
+ && strcmp (buf, "0x6.0ap-2 33") != 0
+ && strcmp (buf, "0xc.14p-3 33") != 0))
+ result |= 4;
+ /* This catches a Mac OS X 10.12.4 (Darwin 16.5) bug: it doesn't round. */
+ if (sprintf (buf, "%.0a %d", 1.51, 33, 44, 55) < 0
+ || (strcmp (buf, "0x2p+0 33") != 0
+ && strcmp (buf, "0x3p-1 33") != 0
+ && strcmp (buf, "0x6p-2 33") != 0
+ && strcmp (buf, "0xcp-3 33") != 0))
+ result |= 4;
+ /* This catches a FreeBSD 6.1 bug. See
+ <https://lists.gnu.org/r/bug-gnulib/2007-04/msg00107.html> */
+ if (sprintf (buf, "%010a %d", 1.0 / zero, 33, 44, 55) < 0
+ || buf[0] == '0')
+ result |= 8;
+ /* This catches a Mac OS X 10.3.9 (Darwin 7.9) bug. */
+ if (sprintf (buf, "%.1a", 1.999) < 0
+ || (strcmp (buf, "0x1.0p+1") != 0
+ && strcmp (buf, "0x2.0p+0") != 0
+ && strcmp (buf, "0x4.0p-1") != 0
+ && strcmp (buf, "0x8.0p-2") != 0))
+ result |= 16;
+ /* This catches the same Mac OS X 10.3.9 (Darwin 7.9) bug and also a
+ glibc 2.4 bug <https://sourceware.org/bugzilla/show_bug.cgi?id=2908>. */
+ if (sprintf (buf, "%.1La", 1.999L) < 0
+ || (strcmp (buf, "0x1.0p+1") != 0
+ && strcmp (buf, "0x2.0p+0") != 0
+ && strcmp (buf, "0x4.0p-1") != 0
+ && strcmp (buf, "0x8.0p-2") != 0))
+ result |= 32;
+ return result;
+}
+'''
+
+glibc_printf_directive_a_test = '''
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 5) || (__GLIBC__ > 2)) && !defined __UCLIBC__
+ #else
+ #error Too old glibc
+ #endif
+#else
+ #error Not glibc
+#endif
+int main () { return 0; }
+'''
+
+if host_system == 'linux'
+ gl_cv_func_printf_directive_a = cc.compiles(glibc_printf_directive_a_test)
+elif host_system == 'windows'
+ gl_cv_func_printf_directive_a = false
+else
+ gl_cv_func_printf_directive_a = false
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_a
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f/meson.build (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f/meson.build (revision 5)
@@ -0,0 +1,75 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports the %F format
+# directive. (ISO C99, POSIX:2001)
+# Result is gl_cv_func_printf_directive_f.
+
+printf_directive_f_test = '''
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+static double zero = 0.0;
+int main ()
+{
+ int result = 0;
+ if (sprintf (buf, "%F %d", 1234567.0, 33, 44, 55) < 0
+ || strcmp (buf, "1234567.000000 33") != 0)
+ result |= 1;
+ if (sprintf (buf, "%F", 1.0 / zero) < 0
+ || (strcmp (buf, "INF") != 0 && strcmp (buf, "INFINITY") != 0))
+ result |= 2;
+ /* This catches a Cygwin 1.5.x bug. */
+ if (sprintf (buf, "%.F", 1234.0) < 0
+ || strcmp (buf, "1234") != 0)
+ result |= 4;
+ return result;
+}
+'''
+
+if host_system in ['linux', 'android']
+ gl_cv_func_printf_directive_f = true
+elif (host_system.startswith ('freebsd1') or
+ host_system.startswith ('freebsd2') or
+ host_system.startswith ('freebsd3') or
+ host_system.startswith ('freebsd4') or
+ host_system.startswith ('freebsd5'))
+ gl_cv_func_printf_directive_f = false
+elif (host_system.startswith ('freebsd') or
+ host_system.startswith ('kfreebsd'))
+ gl_cv_func_printf_directive_f = true
+elif (host_system.startswith ('darwin1') or
+ host_system.startswith ('darwin2') or
+ host_system.startswith ('darwin3') or
+ host_system.startswith ('darwin4') or
+ host_system.startswith ('darwin5') or
+ host_system.startswith ('darwin6'))
+ gl_cv_func_printf_directive_f = false
+elif host_system.startswith ('darwin')
+ gl_cv_func_printf_directive_f = true
+# Split the check from the main if statement, ensure that
+# some meson versions (old ones, presumable) won't try
+# to evaluate host_system[9] when it's shorter than that
+elif host_system.startswith ('solaris2.')
+ if (host_system[9] == '1' and
+ '0123456789'.contains (host_system[10])) or
+ ('23456789'.contains (host_system[9]) == '1' and
+ '0123456789'.contains (host_system[10]))
+ gl_cv_func_printf_directive_f = true
+ elif host_system.startswith ('solaris')
+ gl_cv_func_printf_directive_f = false
+ endif
+elif host_system.startswith ('solaris')
+ gl_cv_func_printf_directive_f = false
+elif host_system == 'windows'
+ # Guess yes on MSVC, no on mingw.
+ if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl'
+ gl_cv_func_printf_directive_f = true
+ else
+ gl_cv_func_printf_directive_f = false
+ endif
+else
+ gl_cv_func_printf_directive_f = false
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_f
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls/meson.build (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls/meson.build (revision 5)
@@ -0,0 +1,76 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports the %ls format
+# directive and in particular, when a precision is specified, whether
+# the functions stop converting the wide string argument when the number
+# of bytes that have been produced by this conversion equals or exceeds
+# the precision.
+# Result is gl_cv_func_printf_directive_ls.
+
+printf_directive_ls_test = '''
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+#include <string.h>
+int main ()
+{
+ int result = 0;
+ char buf[100];
+ /* Test whether %ls works at all.
+ This test fails on OpenBSD 4.0, IRIX 6.5, Solaris 2.6, Haiku, but not on
+ Cygwin 1.5. */
+ {
+ static const wchar_t wstring[] = { 'a', 'b', 'c', 0 };
+ buf[0] = '\0';
+ if (sprintf (buf, "%ls", wstring) < 0
+ || strcmp (buf, "abc") != 0)
+ result |= 1;
+ }
+ /* This test fails on IRIX 6.5, Solaris 2.6, Cygwin 1.5, Haiku (with an
+ assertion failure inside libc), but not on OpenBSD 4.0. */
+ {
+ static const wchar_t wstring[] = { 'a', 0 };
+ buf[0] = '\0';
+ if (sprintf (buf, "%ls", wstring) < 0
+ || strcmp (buf, "a") != 0)
+ result |= 2;
+ }
+ /* Test whether precisions in %ls are supported as specified in ISO C 99
+ section 7.19.6.1:
+ "If a precision is specified, no more than that many bytes are written
+ (including shift sequences, if any), and the array shall contain a
+ null wide character if, to equal the multibyte character sequence
+ length given by the precision, the function would need to access a
+ wide character one past the end of the array."
+ This test fails on Solaris 10. */
+ {
+ static const wchar_t wstring[] = { 'a', 'b', (wchar_t) 0xfdfdfdfd, 0 };
+ buf[0] = '\0';
+ if (sprintf (buf, "%.2ls", wstring) < 0
+ || strcmp (buf, "ab") != 0)
+ result |= 8;
+ }
+ return result;
+}
+'''
+
+if (host_system.startswith ('openbsd') or
+ host_system.startswith ('irix') or
+ host_system.startswith ('solaris') or
+ host_system.startswith ('cygwin') or
+ host_system.startswith ('beos') or
+ host_system.startswith ('haiku'))
+ gl_cv_func_printf_directive_ls = false
+elif host_system == 'windows'
+ gl_cv_func_printf_directive_ls = true
+else
+ gl_cv_func_printf_directive_ls = true
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_directive_ls
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem/meson.build (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem/meson.build (revision 5)
@@ -0,0 +1,67 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions recovers gracefully in case
+# of an out-of-memory condition, or whether it crashes the entire program.
+# Result is gl_cv_func_printf_enomem.
+
+printf_enomem_test = '''
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/time.h>
+#include <sys/resource.h>
+#include <errno.h>
+int main()
+{
+ struct rlimit limit;
+ int ret;
+ nocrash_init ();
+ /* Some printf implementations allocate temporary space with malloc. */
+ /* On BSD systems, malloc() is limited by RLIMIT_DATA. */
+#ifdef RLIMIT_DATA
+ if (getrlimit (RLIMIT_DATA, &limit) < 0)
+ return 77;
+ if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+ limit.rlim_max = 5000000;
+ limit.rlim_cur = limit.rlim_max;
+ if (setrlimit (RLIMIT_DATA, &limit) < 0)
+ return 77;
+#endif
+ /* On Linux systems, malloc() is limited by RLIMIT_AS. */
+#ifdef RLIMIT_AS
+ if (getrlimit (RLIMIT_AS, &limit) < 0)
+ return 77;
+ if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+ limit.rlim_max = 5000000;
+ limit.rlim_cur = limit.rlim_max;
+ if (setrlimit (RLIMIT_AS, &limit) < 0)
+ return 77;
+#endif
+ /* Some printf implementations allocate temporary space on the stack. */
+#ifdef RLIMIT_STACK
+ if (getrlimit (RLIMIT_STACK, &limit) < 0)
+ return 77;
+ if (limit.rlim_max == RLIM_INFINITY || limit.rlim_max > 5000000)
+ limit.rlim_max = 5000000;
+ limit.rlim_cur = limit.rlim_max;
+ if (setrlimit (RLIMIT_STACK, &limit) < 0)
+ return 77;
+#endif
+ ret = printf ("%.5000000f", 1.0);
+ return !(ret == 5000002 || (ret < 0 && errno == ENOMEM));
+}
+'''
+
+# If we don't know, assume the worst.
+gl_cv_func_printf_enomem = false
+if (host_system == 'linux' or
+ host_system == 'solaris' or
+ host_system == 'sunos' or
+ host_system == 'aix' or
+ host_system == 'irix' or
+ host_system == 'beos' or
+ host_system == 'haiku')
+ gl_cv_func_printf_enomem = true
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_enomem
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping/meson.build (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping/meson.build (revision 5)
@@ -0,0 +1,31 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports the - flag correctly.
+# (ISO C99.) See
+# <https://lists.gnu.org/r/bug-coreutils/2008-02/msg00035.html>
+# Result is gl_cv_func_printf_flag_leftadjust.
+
+printf_flag_grouping_test = '''
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+ if (sprintf (buf, "%'d %d", 1234567, 99) < 0
+ || buf[strlen (buf) - 1] != '9')
+ return 1;
+ return 0;
+}'''
+
+if host_system.startswith ('cygwin')
+ gl_cv_func_printf_flag_grouping = false
+elif host_system.startswith ('netbsd')
+ gl_cv_func_printf_flag_grouping = false
+elif host_system == 'windows'
+ gl_cv_func_printf_flag_grouping = false
+else
+ gl_cv_func_printf_flag_grouping = true
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_grouping
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust/meson.build (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust/meson.build (revision 5)
@@ -0,0 +1,33 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports the - flag correctly.
+# (ISO C99.) See
+# <https://lists.gnu.org/r/bug-coreutils/2008-02/msg00035.html>
+# Result is gl_cv_func_printf_flag_leftadjust.
+
+printf_flag_leftadjust_test = '''
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+int main ()
+{
+ /* Check that a '-' flag is not annihilated by a negative width. */
+ if (sprintf (buf, "a%-*sc", -3, "b") < 0
+ || strcmp (buf, "ab c") != 0)
+ return 1;
+ return 0;
+}
+'''
+
+if host_system.startswith ('hpux11')
+ gl_cv_func_printf_flag_leftadjust = true
+elif host_system.startswith ('hpux')
+ gl_cv_func_printf_flag_leftadjust = false
+elif host_system == 'windows'
+ gl_cv_func_printf_flag_leftadjust = true
+else
+ gl_cv_func_printf_flag_leftadjust = true
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_leftadjust
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero/meson.build (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero/meson.build (revision 5)
@@ -0,0 +1,34 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports padding of non-finite
+# values with the 0 flag correctly. (ISO C99 + TC1 + TC2.) See
+# <https://lists.gnu.org/r/bug-gnulib/2007-04/msg00107.html>
+# Result is gl_cv_func_printf_flag_zero.
+
+printf_flag_zero_test = '''
+#include <stdio.h>
+#include <string.h>
+static char buf[100];
+static double zero = 0.0;
+int main ()
+{
+ if (sprintf (buf, "%010f", 1.0 / zero, 33, 44, 55) < 0
+ || (strcmp (buf, " inf") != 0
+ && strcmp (buf, " infinity") != 0))
+ return 1;
+ return 0;
+}
+'''
+
+if host_system in ['linux', 'android']
+ gl_cv_func_printf_flag_zero = true
+elif host_system.startswith ('beos')
+ gl_cv_func_printf_flag_zero = true
+elif host_system == 'windows'
+ gl_cv_func_printf_flag_zero = false
+else
+ gl_cv_func_printf_flag_zero = false
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_flag_zero
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite/meson.build (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite/meson.build (revision 5)
@@ -0,0 +1,129 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports infinite and NaN
+# 'double' arguments and negative zero arguments in the %f, %e, %g
+# directives. (ISO C99, POSIX:2001)
+# Result is gl_cv_func_printf_infinite.
+
+printf_infinite_double_test = '''
+#include <stdio.h>
+#include <string.h>
+static int
+strisnan (const char *string, size_t start_index, size_t end_index)
+{
+ if (start_index < end_index)
+ {
+ if (string[start_index] == '-')
+ start_index++;
+ if (start_index + 3 <= end_index
+ && memcmp (string + start_index, "nan", 3) == 0)
+ {
+ start_index += 3;
+ if (start_index == end_index
+ || (string[start_index] == '(' && string[end_index - 1] == ')'))
+ return 1;
+ }
+ }
+ return 0;
+}
+static int
+have_minus_zero ()
+{
+ static double plus_zero = 0.0;
+ double minus_zero = - plus_zero;
+ return memcmp (&plus_zero, &minus_zero, sizeof (double)) != 0;
+}
+static char buf[10000];
+static double zero = 0.0;
+int main ()
+{
+ int result = 0;
+ if (sprintf (buf, "%f", 1.0 / zero) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ result |= 1;
+ if (sprintf (buf, "%f", -1.0 / zero) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ result |= 1;
+ if (sprintf (buf, "%f", zero / zero) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ result |= 2;
+ if (sprintf (buf, "%e", 1.0 / zero) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ result |= 4;
+ if (sprintf (buf, "%e", -1.0 / zero) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ result |= 4;
+ if (sprintf (buf, "%e", zero / zero) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ result |= 8;
+ if (sprintf (buf, "%g", 1.0 / zero) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ result |= 16;
+ if (sprintf (buf, "%g", -1.0 / zero) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ result |= 16;
+ if (sprintf (buf, "%g", zero / zero) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ result |= 32;
+ /* This test fails on HP-UX 10.20. */
+ if (have_minus_zero ())
+ if (sprintf (buf, "%g", - zero) < 0
+ || strcmp (buf, "-0") != 0)
+ result |= 64;
+ return result;
+}
+'''
+
+if host_system in ['linux', 'android']
+ gl_cv_func_printf_infinite = true
+elif (host_system.startswith ('freebsd1') or
+ host_system.startswith ('freebsd2') or
+ host_system.startswith ('freebsd3') or
+ host_system.startswith ('freebsd4') or
+ host_system.startswith ('freebsd5'))
+ gl_cv_func_printf_infinite = false
+elif (host_system.startswith ('freebsd') or
+ host_system.startswith ('kfreebsd'))
+ gl_cv_func_printf_infinite = true
+elif (host_system.startswith ('darwin1') or
+ host_system.startswith ('darwin2') or
+ host_system.startswith ('darwin3') or
+ host_system.startswith ('darwin4') or
+ host_system.startswith ('darwin5'))
+ gl_cv_func_printf_infinite = false
+elif host_system.startswith ('darwin')
+ gl_cv_func_printf_infinite = true
+elif (host_system.startswith ('hpux7') or
+ host_system.startswith ('hpux8') or
+ host_system.startswith ('hpux9') or
+ host_system.startswith ('hpux10'))
+ gl_cv_func_printf_infinite = false
+elif host_system.startswith ('hpux')
+ gl_cv_func_printf_infinite = true
+elif (host_system.startswith ('netbsd1') or
+ host_system.startswith ('netbsd2') or
+ host_system.startswith ('netbsdelf1') or
+ host_system.startswith ('netbsdelf2') or
+ host_system.startswith ('netbsdaout1') or
+ host_system.startswith ('netbsdaout2') or
+ host_system.startswith ('netbsdcoff1') or
+ host_system.startswith ('netbsdcoff2'))
+ gl_cv_func_printf_infinite = false
+elif host_system.startswith ('netbsd')
+ gl_cv_func_printf_infinite = true
+elif host_system.startswith ('beos')
+ gl_cv_func_printf_infinite = true
+elif host_system.startswith ('windows')
+ # Guess yes on MSVC, no on mingw.
+ if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl'
+ gl_cv_func_printf_infinite = true
+ else
+ gl_cv_func_printf_infinite = false
+ endif
+else
+ # If we dont know, assume the worst.
+ gl_cv_func_printf_infinite = false
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double/meson.build (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double/meson.build (revision 5)
@@ -0,0 +1,202 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports infinite and NaN
+# 'long double' arguments in the %f, %e, %g directives. (ISO C99, POSIX:2001)
+# Result is gl_cv_func_printf_infinite_long_double.
+
+# The user can set or unset the variable gl_printf_safe to indicate
+# that he wishes a safe handling of non-IEEE-754 'long double' values.
+check_print_safe = ''
+if get_variable ('gl_printf_safe', false)
+ check_print_safe = '''
+#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
+/* Representation of an 80-bit 'long double' as an initializer for a sequence
+ of 'unsigned int' words. */
+# ifdef WORDS_BIGENDIAN
+# define LDBL80_WORDS(exponent,manthi,mantlo) \
+ { ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
+ ((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16), \
+ (unsigned int) (mantlo) << 16 \
+ }
+# else
+# define LDBL80_WORDS(exponent,manthi,mantlo) \
+ { mantlo, manthi, exponent }
+# endif
+ { /* Quiet NaN. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ result |= 2;
+ if (sprintf (buf, "%Le", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ result |= 2;
+ if (sprintf (buf, "%Lg", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ result |= 2;
+ }
+ {
+ /* Signalling NaN. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ result |= 2;
+ if (sprintf (buf, "%Le", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ result |= 2;
+ if (sprintf (buf, "%Lg", x.value) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ result |= 2;
+ }
+ { /* Pseudo-NaN. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) <= 0)
+ result |= 4;
+ if (sprintf (buf, "%Le", x.value) <= 0)
+ result |= 4;
+ if (sprintf (buf, "%Lg", x.value) <= 0)
+ result |= 4;
+ }
+ { /* Pseudo-Infinity. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) <= 0)
+ result |= 8;
+ if (sprintf (buf, "%Le", x.value) <= 0)
+ result |= 8;
+ if (sprintf (buf, "%Lg", x.value) <= 0)
+ result |= 8;
+ }
+ { /* Pseudo-Zero. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) <= 0)
+ result |= 16;
+ if (sprintf (buf, "%Le", x.value) <= 0)
+ result |= 16;
+ if (sprintf (buf, "%Lg", x.value) <= 0)
+ result |= 16;
+ }
+ { /* Unnormalized number. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) <= 0)
+ result |= 32;
+ if (sprintf (buf, "%Le", x.value) <= 0)
+ result |= 32;
+ if (sprintf (buf, "%Lg", x.value) <= 0)
+ result |= 32;
+ }
+ { /* Pseudo-Denormal. */
+ static union { unsigned int word[4]; long double value; } x =
+ { LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
+ if (sprintf (buf, "%Lf", x.value) <= 0)
+ result |= 64;
+ if (sprintf (buf, "%Le", x.value) <= 0)
+ result |= 64;
+ if (sprintf (buf, "%Lg", x.value) <= 0)
+ result |= 64;
+ }
+#endif
+ '''
+endif
+
+printf_infinite_long_double_test = '''
+#include <float.h>
+#include <stdio.h>
+#include <string.h>
+static int
+strisnan (const char *string, size_t start_index, size_t end_index)
+{
+ if (start_index < end_index)
+ {
+ if (string[start_index] == '-')
+ start_index++;
+ if (start_index + 3 <= end_index
+ && memcmp (string + start_index, "nan", 3) == 0)
+ {
+ start_index += 3;
+ if (start_index == end_index
+ || (string[start_index] == '(' && string[end_index - 1] == ')'))
+ return 1;
+ }
+ }
+ return 0;
+}
+static char buf[10000];
+static long double zeroL = 0.0L;
+int main ()
+{
+ int result = 0;
+ nocrash_init();
+ if (sprintf (buf, "%Lf", 1.0L / zeroL) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ result |= 1;
+ if (sprintf (buf, "%Lf", -1.0L / zeroL) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ result |= 1;
+ if (sprintf (buf, "%Lf", zeroL / zeroL) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ result |= 1;
+ if (sprintf (buf, "%Le", 1.0L / zeroL) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ result |= 1;
+ if (sprintf (buf, "%Le", -1.0L / zeroL) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ result |= 1;
+ if (sprintf (buf, "%Le", zeroL / zeroL) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ result |= 1;
+ if (sprintf (buf, "%Lg", 1.0L / zeroL) < 0
+ || (strcmp (buf, "inf") != 0 && strcmp (buf, "infinity") != 0))
+ result |= 1;
+ if (sprintf (buf, "%Lg", -1.0L / zeroL) < 0
+ || (strcmp (buf, "-inf") != 0 && strcmp (buf, "-infinity") != 0))
+ result |= 1;
+ if (sprintf (buf, "%Lg", zeroL / zeroL) < 0
+ || !strisnan (buf, 0, strlen (buf)))
+ result |= 1;
+''' + check_print_safe + '''
+ return result;
+}
+'''
+
+if gl_cv_func_printf_long_double
+ if host_machine.cpu_family() == 'x86_64'
+ gl_cv_func_printf_infinite_long_double = false
+ else
+ if host_system in ['linux', 'android']
+ gl_cv_func_printf_infinite_long_double = true
+ elif (host_system.startswith ('freebsd1') or
+ host_system.startswith ('freebsd2') or
+ host_system.startswith ('freebsd3') or
+ host_system.startswith ('freebsd4') or
+ host_system.startswith ('freebsd5'))
+ gl_cv_func_printf_infinite_long_double = false
+ elif (host_system.startswith ('freebsd') or
+ host_system.startswith ('kfreebsd'))
+ gl_cv_func_printf_infinite_long_double = true
+ elif (host_system.startswith ('hpux7') or
+ host_system.startswith ('hpux8') or
+ host_system.startswith ('hpux9') or
+ host_system.startswith ('hpux10'))
+ gl_cv_func_printf_infinite = false
+ elif host_system.startswith ('hpux')
+ gl_cv_func_printf_infinite_long_double = true
+ elif host_system == 'windows'
+ # Guess yes on MSVC, no on mingw.
+ if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl'
+ gl_cv_func_printf_infinite_long_double = true
+ else
+ gl_cv_func_printf_infinite_long_double = false
+ endif
+ else
+ gl_cv_func_printf_infinite_long_double = false
+ endif
+ endif
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_infinite_long_double
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double/meson.build (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double/meson.build (revision 5)
@@ -0,0 +1,44 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports 'long double'
+# arguments together with the 'L' size specifier. (ISO C99, POSIX:2001)
+# Result is gl_cv_func_printf_long_double.
+
+printf_long_double_test = '''
+#include <stdio.h>
+#include <string.h>
+static char buf[10000];
+int main ()
+{
+ int result = 0;
+ buf[0] = '\0';
+ if (sprintf (buf, "%Lf %d", 1.75L, 33, 44, 55) < 0
+ || strcmp (buf, "1.750000 33") != 0)
+ result |= 1;
+ buf[0] = '\0';
+ if (sprintf (buf, "%Le %d", 1.75L, 33, 44, 55) < 0
+ || strcmp (buf, "1.750000e+00 33") != 0)
+ result |= 2;
+ buf[0] = '\0';
+ if (sprintf (buf, "%Lg %d", 1.75L, 33, 44, 55) < 0
+ || strcmp (buf, "1.75 33") != 0)
+ result |= 4;
+ return result;
+}
+'''
+
+if host_system.startswith ('beos')
+ gl_cv_func_printf_long_double = false
+elif host_system == 'windows'
+ # Guess yes on MSVC, no on mingw.
+ if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl'
+ gl_cv_func_printf_long_double = true
+ else
+ gl_cv_func_printf_long_double = false
+ endif
+else
+ gl_cv_func_printf_long_double = true
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_long_double
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision/meson.build (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision/meson.build (revision 5)
@@ -0,0 +1,48 @@
+# Copyright (C) 2002-2004, 2006-2018 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# Test whether the *printf family of functions supports large precisions.
+# On mingw, precisions larger than 512 are treated like 512, in integer,
+# floating-point or pointer output. On Solaris 10/x86, precisions larger
+# than 510 in floating-point output crash the program. On Solaris 10/SPARC,
+# precisions larger than 510 in floating-point output yield wrong results.
+# On AIX 7.1, precisions larger than 998 in floating-point output yield
+# wrong results. On BeOS, precisions larger than 1044 crash the program.
+# Result is gl_cv_func_printf_precision.
+
+printf_precision_test = '''
+#include <stdio.h>
+#include <string.h>
+static char buf[5000];
+int main ()
+{
+ int result = 0;
+#ifdef __BEOS__
+ /* On BeOS, this would crash and show a dialog box. Avoid the crash. */
+ return 1;
+#endif
+ if (sprintf (buf, "%.4000d %d", 1, 33, 44) < 4000 + 3)
+ result |= 1;
+ if (sprintf (buf, "%.4000f %d", 1.0, 33, 44) < 4000 + 5)
+ result |= 2;
+ if (sprintf (buf, "%.511f %d", 1.0, 33, 44) < 511 + 5
+ || buf[0] != '1')
+ result |= 4;
+ if (sprintf (buf, "%.999f %d", 1.0, 33, 44) < 999 + 5
+ || buf[0] != '1')
+ result |= 4;
+ return result;
+}
+'''
+
+gl_cv_func_printf_precision = true
+# Guess no only on Solaris, native Windows, and BeOS systems.
+if (host_system == 'windows' or
+ host_system == 'beos' or
+ host_system == 'haiku' or
+ host_system == 'sunos' or
+ host_system == 'solaris')
+ gl_cv_func_printf_precision = false
+endif
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib/gl_cv_func_printf_precision
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib/gnulib
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/glib (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/glib (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new/glib
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new/meson.build
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new/meson.build (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new/meson.build (revision 5)
@@ -0,0 +1,2513 @@
+project('glib', 'c',
+ version : '2.76.0',
+ # NOTE: See the policy in docs/meson-version.md before changing the Meson dependency
+ meson_version : '>= 0.60.0',
+ default_options : [
+ 'buildtype=debugoptimized',
+ 'warning_level=3',
+ 'c_std=gnu99'
+ ]
+)
+
+cc = meson.get_compiler('c')
+c_standards = {}
+
+foreach std : ['90', '99', '11', '17']
+ arg = (cc.get_id() == 'msvc' ? '/std:' : '-std=') + 'c' + std
+ if cc.has_argument(arg)
+ c_standards += { std: arg }
+ endif
+endforeach
+
+have_cxx = add_languages('cpp', native: false, required: get_option('oss_fuzz').enabled())
+if have_cxx
+ cxx = meson.get_compiler('cpp')
+ cxx_standards = {}
+
+ foreach std : ['98', '03', '11', '14', '17', '20', '2b', 'latest']
+ arg = (cxx.get_id() == 'msvc' ? '/std:' : '-std=') + 'c++' + std
+ if cxx.has_argument(arg)
+ cxx_standards += { std: arg }
+ endif
+ endforeach
+endif
+
+cc_can_run = false
+
+if cc.get_argument_syntax() == 'msvc'
+ # Ignore several spurious warnings for things glib does very commonly
+ # (also for clang-cl)
+ add_project_arguments('/FImsvc_recommended_pragmas.h',language : 'c')
+endif
+
+if cc.get_id() == 'msvc'
+ # Set the input and exec encoding to utf-8, like is the default with GCC
+ add_project_arguments(cc.get_supported_arguments(['/utf-8']), language: 'c')
+ # Disable SAFESEH with MSVC for plugins and libs that use external deps that
+ # are built with MinGW
+ noseh_link_args = ['/SAFESEH:NO']
+else
+ noseh_link_args = []
+ # -mms-bitfields vs -fnative-struct ?
+endif
+
+host_system = host_machine.system()
+
+if host_system == 'darwin'
+ ios_test_code = '''#include <TargetConditionals.h>
+ #if ! TARGET_OS_IPHONE
+ #error "Not iOS/tvOS/watchOS/iPhoneSimulator"
+ #endif'''
+ if cc.compiles(ios_test_code, name : 'building for iOS')
+ host_system = 'ios'
+ endif
+endif
+
+glib_version = meson.project_version()
+glib_api_version = '2.0'
+version_arr = glib_version.split('.')
+major_version = version_arr[0].to_int()
+minor_version = version_arr[1].to_int()
+micro_version = version_arr[2].to_int()
+
+interface_age = minor_version.is_odd() ? 0 : micro_version
+binary_age = 100 * minor_version + micro_version
+
+soversion = 0
+# Maintain compatibility with previous libtool versioning
+# current = minor * 100 + micro
+current = binary_age - interface_age
+library_version = '@0@.@1@.@2@'.format(soversion, current, interface_age)
+darwin_versions = [current + 1, '@0@.@1@'.format(current + 1, interface_age)]
+
+configinc = include_directories('.')
+glibinc = include_directories('glib')
+gobjectinc = include_directories('gobject')
+gmoduleinc = include_directories('gmodule')
+gioinc = include_directories('gio')
+
+glib_prefix = get_option('prefix')
+glib_bindir = join_paths(glib_prefix, get_option('bindir'))
+glib_libdir = join_paths(glib_prefix, get_option('libdir'))
+glib_libexecdir = join_paths(glib_prefix, get_option('libexecdir'))
+glib_datadir = join_paths(glib_prefix, get_option('datadir'))
+glib_pkgdatadir = join_paths(glib_datadir, 'glib-2.0')
+glib_includedir = join_paths(glib_prefix, get_option('includedir'), 'glib-2.0')
+if get_option('gio_module_dir') != ''
+ glib_giomodulesdir = join_paths(glib_prefix, get_option('gio_module_dir'))
+else
+ glib_giomodulesdir = join_paths(glib_libdir, 'gio', 'modules')
+endif
+
+if get_option('multiarch')
+ # For multiarch/multilib distributions, install each architecture's
+ # build of executables used in packaging triggers (like gio-querymodules)
+ # to an architecture-dependent location, with a compatibility symlink
+ # in the PATH.
+ multiarch_bindir = get_option('libdir') / 'glib-2.0'
+ multiarch_libexecdir = multiarch_bindir
+ pkgconfig_multiarch_bindir = '${libdir}/glib-2.0'
+else
+ # For single-architecture distributions, just install them into the PATH
+ # as was traditionally done.
+ multiarch_bindir = get_option('bindir')
+ multiarch_libexecdir = get_option('libexecdir')
+ pkgconfig_multiarch_bindir = '${bindir}'
+endif
+
+glib_pkgconfigreldir = join_paths(glib_libdir, 'pkgconfig')
+
+if get_option('charsetalias_dir') != ''
+ glib_charsetaliasdir = join_paths(glib_prefix, get_option('charsetalias_dir'))
+else
+ glib_charsetaliasdir = glib_libdir
+endif
+
+glib_localstatedir = glib_prefix / get_option('localstatedir')
+
+if get_option('runtime_dir') != ''
+ glib_runstatedir = glib_prefix / get_option('runtime_dir')
+else
+ # While we’d normally prefix directories like this with, for example,
+ # glib_localstatedir, `/run` is a bit different in that it’s for runtime state
+ # rather than data files, so it’s typically functionally useless to use a
+ # prefixed version. No other processes will be using it. So we default to the
+ # unprefixed system `/run` directory.
+ glib_runstatedir = '/run'
+endif
+
+installed_tests_metadir = join_paths(glib_datadir, 'installed-tests', meson.project_name())
+installed_tests_execdir = join_paths(glib_libexecdir, 'installed-tests', meson.project_name())
+installed_tests_enabled = get_option('installed_tests')
+installed_tests_template = files('tests/template.test.in')
+installed_tests_template_tap = files('tests/template-tap.test.in')
+
+# Don’t build the tests unless we can run them (either natively, in an exe wrapper, or by installing them for later use)
+build_tests = get_option('tests') and (meson.can_run_host_binaries() or installed_tests_enabled)
+
+common_test_env = [
+ 'G_DEBUG=gc-friendly',
+ 'G_ENABLE_DIAGNOSTIC=1',
+ 'MALLOC_CHECK_=2',
+]
+
+# Note: this may cause the tests output not to be printed when running in
+# verbose mode, see https://github.com/mesonbuild/meson/issues/11185
+# Can be changed it to 'exitcode' if required during development.
+test_protocol = 'tap'
+test_timeout = 30
+test_timeout_slow = 90
+
+add_test_setup('default',
+ is_default: true,
+ exclude_suites: ['flaky', 'failing'],
+ env: common_test_env,
+ timeout_multiplier: 2,
+)
+
+add_test_setup('unstable_tests',
+ env: common_test_env,
+ timeout_multiplier: 2,
+ # Empty test setup, used for having different results set for flaky tests
+ # Sadly we can't use (https://github.com/mesonbuild/meson/issues/10934):
+ #suites: ['flaky', 'unstable']
+)
+
+# Allow the tests to be easily run under valgrind using --setup=valgrind
+valgrind = find_program('valgrind', required: false)
+if valgrind.found()
+ suppression_file = files('tools' / 'glib.supp')
+
+ add_test_setup('valgrind',
+ exclude_suites: [ 'no-valgrind', 'flaky' ],
+ exe_wrapper: [
+ valgrind,
+ '--tool=memcheck',
+ '--error-exitcode=1',
+ '--track-origins=yes',
+ '--leak-check=full',
+ '--leak-resolution=high',
+ '--num-callers=50',
+ '--show-leak-kinds=definite,possible',
+ '--show-error-list=yes',
+ '--suppressions=@0@'.format(meson.project_source_root() /
+ '@0@'.format(suppression_file[0])),
+ ],
+ env: common_test_env,
+ timeout_multiplier: 20,
+ )
+endif
+
+add_project_arguments('-D_GNU_SOURCE', language: 'c')
+
+if host_system == 'qnx'
+ add_project_arguments('-D_QNX_SOURCE', language: 'c')
+endif
+
+# Disable strict aliasing;
+# see https://bugzilla.gnome.org/show_bug.cgi?id=791622
+if cc.has_argument('-fno-strict-aliasing')
+ add_project_arguments('-fno-strict-aliasing', language: 'c')
+endif
+
+# dummy/empty dependency() object to declare fallbacks and simpler dependencies
+not_found = dependency('', required: false)
+
+########################
+# Configuration begins #
+########################
+glib_conf = configuration_data()
+glibconfig_conf = configuration_data()
+
+# accumulated list of defines as we check for them, so we can easily
+# use them later in test programs (autoconf does this automatically)
+glib_conf_prefix = ''
+
+glib_conf.set('GLIB_MAJOR_VERSION', major_version)
+glib_conf.set('GLIB_MINOR_VERSION', minor_version)
+glib_conf.set('GLIB_MICRO_VERSION', micro_version)
+glib_conf.set('GLIB_INTERFACE_AGE', interface_age)
+glib_conf.set('GLIB_BINARY_AGE', binary_age)
+glib_conf.set_quoted('GETTEXT_PACKAGE', 'glib20')
+glib_conf.set_quoted('PACKAGE_BUGREPORT', 'https://gitlab.gnome.org/GNOME/glib/issues/new')
+glib_conf.set_quoted('PACKAGE_NAME', 'glib')
+glib_conf.set_quoted('PACKAGE_STRING', 'glib @0@'.format(meson.project_version()))
+glib_conf.set_quoted('PACKAGE_TARNAME', 'glib')
+glib_conf.set_quoted('PACKAGE_URL', '')
+glib_conf.set_quoted('PACKAGE_VERSION', meson.project_version())
+glib_conf.set('ENABLE_NLS', 1)
+
+# used by the .rc.in files
+glibconfig_conf.set('LT_CURRENT_MINUS_AGE', soversion)
+
+glib_conf.set('_GNU_SOURCE', 1)
+
+if host_system in ['windows', 'darwin']
+ # Poll doesn't work on devices on Windows, and macOS's poll() implementation is known to be broken
+ glib_conf.set('BROKEN_POLL', true)
+endif
+
+if host_system == 'windows' and cc.get_id() != 'msvc' and cc.get_id() != 'clang-cl'
+ # FIXME: Ideally we shouldn't depend on this on Windows and should use
+ # 64 bit capable Windows API that also works with MSVC.
+ # The autotools build did set this for mingw and while meson sets it
+ # for gcc/clang by default, it doesn't do so on Windows.
+ glib_conf.set('_FILE_OFFSET_BITS', 64)
+endif
+
+glib_build_shared = false
+glib_build_static = false
+if get_option('default_library') == 'both'
+ glib_build_static = true
+ glib_build_shared = true
+elif get_option('default_library') == 'static'
+ glib_build_static = true
+elif get_option('default_library') == 'shared'
+ glib_build_shared = true
+endif
+
+glib_build_both = glib_build_static and glib_build_shared
+glib_build_static_only = glib_build_static and not glib_build_shared
+glib_build_shared_only = glib_build_shared and not glib_build_static
+
+if glib_build_shared and glib_build_static and (
+ host_system == 'windows' or host_system == 'cygwin')
+ error('On Windows default_library must be "shared" or "static" but not "both"')
+endif
+
+if glib_build_static_only
+ glibconfig_conf.set('GLIB_STATIC_COMPILATION', '1')
+ glibconfig_conf.set('GOBJECT_STATIC_COMPILATION', '1')
+ glibconfig_conf.set('GIO_STATIC_COMPILATION', '1')
+ glibconfig_conf.set('GMODULE_STATIC_COMPILATION', '1')
+ glibconfig_conf.set('G_INTL_STATIC_COMPILATION', '1')
+ glibconfig_conf.set('FFI_STATIC_BUILD', '1')
+endif
+
+# Cygwin glib port maintainers made it clear
+# (via the patches they apply) that they want no
+# part of glib W32 code, therefore we do not define
+# G_PLATFORM_WIN32 for host_system == 'cygwin'.
+# This makes G_PLATFORM_WIN32 a synonym for
+# G_OS_WIN32.
+if host_system == 'windows'
+ glib_os = '''#define G_OS_WIN32
+#define G_PLATFORM_WIN32'''
+elif host_system == 'cygwin'
+ glib_os = '''#define G_OS_UNIX
+#define G_WITH_CYGWIN'''
+else
+ glib_os = '#define G_OS_UNIX'
+endif
+glibconfig_conf.set('glib_os', glib_os)
+
+# We need to know the CRT being used to determine what .lib files we need on
+# Visual Studio for dependencies that don't normally come with pkg-config files
+vs_crt = 'release'
+vs_crt_opt = get_option('b_vscrt')
+if vs_crt_opt in ['mdd', 'mtd']
+ vs_crt = 'debug'
+elif vs_crt_opt == 'from_buildtype'
+ if get_option('buildtype') == 'debug'
+ vs_crt = 'debug'
+ endif
+endif
+
+# Use debug/optimization flags to determine whether to enable debug or disable
+# cast checks. We have a non-production (debug) build if debug is true and if
+# optimization is 0 or g; otherwise, we have a production build.
+glib_debug_cflags = []
+glib_debug = get_option('glib_debug')
+if (glib_debug.enabled() or (
+ glib_debug.auto() and get_option('debug') and get_option('optimization') in [ '0', 'g' ]))
+ glib_debug_cflags += ['-DG_ENABLE_DEBUG']
+ message('Enabling various debug infrastructure')
+else
+ glib_debug_cflags += ['-DG_DISABLE_CAST_CHECKS']
+ message('Disabling cast checks')
+endif
+
+if not get_option('glib_assert')
+ glib_debug_cflags += ['-DG_DISABLE_ASSERT']
+ message('Disabling GLib asserts')
+endif
+
+if not get_option('glib_checks')
+ glib_debug_cflags += ['-DG_DISABLE_CHECKS']
+ message('Disabling GLib checks')
+endif
+
+add_project_arguments(glib_debug_cflags, language: 'c')
+
+# check for header files
+
+headers = [
+ 'alloca.h',
+ 'afunix.h',
+ 'crt_externs.h',
+ 'dirent.h', # MSC does not come with this by default
+ 'float.h',
+ 'fstab.h',
+ 'grp.h',
+ 'inttypes.h',
+ 'limits.h',
+ 'locale.h',
+ 'mach/mach_time.h',
+ 'memory.h',
+ 'mntent.h',
+ 'poll.h',
+ 'pwd.h',
+ 'sched.h',
+ 'spawn.h',
+ 'stdatomic.h',
+ 'stdint.h',
+ 'stdlib.h',
+ 'string.h',
+ 'strings.h',
+ 'sys/auxv.h',
+ 'sys/event.h',
+ 'sys/filio.h',
+ 'sys/inotify.h',
+ 'sys/mkdev.h',
+ 'sys/mntctl.h',
+ 'sys/mnttab.h',
+ 'sys/mount.h',
+ 'sys/param.h',
+ 'sys/resource.h',
+ 'sys/select.h',
+ 'sys/statfs.h',
+ 'sys/stat.h',
+ 'sys/statvfs.h',
+ 'sys/sysctl.h',
+ 'sys/time.h', # MSC does not come with this by default
+ 'sys/times.h',
+ 'sys/types.h',
+ 'sys/uio.h',
+ 'sys/vfs.h',
+ 'sys/vfstab.h',
+ 'sys/vmount.h',
+ 'sys/wait.h',
+ 'termios.h',
+ 'unistd.h',
+ 'values.h',
+ 'wchar.h',
+ 'xlocale.h',
+]
+
+foreach h : headers
+ if cc.has_header(h)
+ define = 'HAVE_' + h.underscorify().to_upper()
+ glib_conf.set(define, 1)
+ glib_conf_prefix = glib_conf_prefix + '#define @0@ 1\n'.format(define)
+ endif
+endforeach
+
+# FreeBSD includes a malloc.h which always throws compilation error, so we have
+# to use check_header() rather than has_header().
+if cc.check_header('malloc.h')
+ glib_conf.set('HAVE_MALLOC_H', 1)
+ glib_conf_prefix = glib_conf_prefix + '#define HAVE_MALLOC_H 1\n'
+endif
+
+if cc.has_header('linux/netlink.h')
+ glib_conf.set('HAVE_NETLINK', 1)
+endif
+
+# Is statx() supported? Android systems don’t reliably support it as of August 2020.
+statx_code = '''
+ #ifndef _GNU_SOURCE
+ #define _GNU_SOURCE
+ #endif
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ int main (void)
+ {
+ struct statx stat_buf;
+ return statx (AT_FDCWD, "/", AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS | STATX_BTIME, &stat_buf);
+ }
+ '''
+if host_system != 'android' and cc.compiles(statx_code, name : 'statx() test')
+ glib_conf.set('HAVE_STATX', 1)
+endif
+
+if glib_conf.has('HAVE_LOCALE_H')
+ if cc.has_header_symbol('locale.h', 'LC_MESSAGES')
+ glib_conf.set('HAVE_LC_MESSAGES', 1)
+ endif
+endif
+
+struct_stat_blkprefix = '''
+#include <sys/types.h>
+#include <sys/stat.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+'''
+
+struct_members = [
+ [ 'stat', 'st_mtimensec' ],
+ [ 'stat', 'st_mtim.tv_nsec' ],
+ [ 'stat', 'st_atimensec' ],
+ [ 'stat', 'st_atim.tv_nsec' ],
+ [ 'stat', 'st_ctimensec' ],
+ [ 'stat', 'st_ctim.tv_nsec' ],
+ [ 'stat', 'st_birthtime' ],
+ [ 'stat', 'st_birthtimensec' ],
+ [ 'stat', 'st_birthtim' ],
+ [ 'stat', 'st_birthtim.tv_nsec' ],
+ [ 'stat', 'st_blksize', struct_stat_blkprefix ],
+ [ 'stat', 'st_blocks', struct_stat_blkprefix ],
+ [ 'statfs', 'f_fstypename', struct_stat_blkprefix ],
+ [ 'statfs', 'f_bavail', struct_stat_blkprefix ],
+ [ 'dirent', 'd_type', '''#include <sys/types.h>
+ #include <dirent.h>''' ],
+ [ 'statvfs', 'f_basetype', '#include <sys/statvfs.h>' ],
+ [ 'statvfs', 'f_fstypename', '#include <sys/statvfs.h>' ],
+ [ 'tm', 'tm_gmtoff', '#include <time.h>' ],
+ [ 'tm', '__tm_gmtoff', '#include <time.h>' ],
+]
+
+foreach m : struct_members
+ header_check_prefix = glib_conf_prefix
+ if m.length() == 3
+ header_check_prefix = header_check_prefix + m[2]
+ else
+ header_check_prefix = header_check_prefix + '#include <sys/stat.h>'
+ endif
+ if cc.has_member('struct ' + m[0], m[1], prefix : header_check_prefix)
+ define = 'HAVE_STRUCT_@0@_@1@'.format(m[0].to_upper(), m[1].underscorify().to_upper())
+ glib_conf.set(define, 1)
+ glib_conf_prefix = glib_conf_prefix + '#define @0@ 1\n'.format(define)
+ else
+ endif
+endforeach
+
+# Compiler flags
+if cc.get_id() == 'gcc' or cc.get_id() == 'clang'
+ warning_common_args = [
+ '-Wduplicated-branches',
+ '-Wimplicit-fallthrough',
+ '-Wmisleading-indentation',
+ '-Wmissing-field-initializers',
+ '-Wnonnull',
+ '-Wunused',
+ # Due to maintained deprecated code, we do not want to see unused parameters
+ '-Wno-unused-parameter',
+ # Due to pervasive use of things like GPOINTER_TO_UINT(), we do not support
+ # building with -Wbad-function-cast.
+ '-Wno-cast-function-type',
+ # Due to function casts through (void*) we cannot support -Wpedantic:
+ # https://wiki.gnome.org/Projects/GLib/CompilerRequirements#Function_pointer_conversions.
+ '-Wno-pedantic',
+ # A zero-length format string shouldn't be considered an issue.
+ '-Wno-format-zero-length',
+ # We explicitly require variadic macros
+ '-Wno-variadic-macros',
+ '-Werror=format=2',
+ '-Werror=init-self',
+ '-Werror=missing-include-dirs',
+ '-Werror=pointer-arith',
+ '-Werror=unused-result',
+ ]
+
+ warning_c_args = warning_common_args + [
+ '-Wstrict-prototypes',
+ # Due to pervasive use of things like GPOINTER_TO_UINT(), we do not support
+ # building with -Wbad-function-cast.
+ '-Wno-bad-function-cast',
+ '-Werror=implicit-function-declaration',
+ '-Werror=missing-prototypes',
+ '-Werror=pointer-sign',
+ '-Wno-string-plus-int',
+ ]
+ warning_cxx_args = warning_common_args
+ warning_objc_args = warning_c_args
+ warning_c_link_args = [
+ '-Wl,-z,nodelete',
+ ]
+ if get_option('bsymbolic_functions')
+ warning_c_link_args += ['-Wl,-Bsymbolic-functions']
+ endif
+elif cc.get_id() == 'msvc'
+ warning_c_args = [
+ # If a warning is completely useless and spammy, use '/wdXXXX' to suppress it
+ # If a warning is harmless but hard to fix, use '/woXXXX' so it's shown once
+ # NOTE: Only add warnings here if you are sure they're spurious
+ '/wo4057', # 'operator': 'identifier1' differs in indirection to slightly different base types from 'identifier2'
+ '/wd4068', # unknown pragma
+ '/wo4090', # 'operation': different 'modifier' qualifiers
+ '/wd4100', # 'identifier': unreferenced formal parameter
+ '/wd4116', # unnamed type definition in parentheses
+ '/wo4125', # decimal digit terminates octal escape sequence
+ '/wd4127', # conditional expression is constant
+ '/wd4146', # unary minus operator applied to unsigned type, result still unsigned
+ '/wd4152', # nonstandard extension, function/data pointer conversion in expression
+ '/wd4201', # nonstandard extension used: nameless struct/union
+ '/wd4232', # nonstandard extension used: 'identifier': address of dllimport 'dllimport' is not static, identity not guaranteed
+ '/wo4245', # 'conversion_type': conversion from 'type1' to 'type2', signed/unsigned mismatch
+ '/wo4267', # 'variable': conversion from 'size_t' to 'type', possible loss of data
+ '/wd4334', # 'shift_operator': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
+ '/wo4389', # 'operator': signed/unsigned mismatch
+ '/wo4702', # unreachable code
+ '/wd4706', # assignment within conditional expression
+ ]
+
+ warning_cxx_args = []
+ warning_objc_args = []
+ warning_c_link_args = []
+else
+ warning_c_args = []
+ warning_cxx_args = []
+ warning_objc_args = []
+ warning_c_link_args = []
+endif
+
+add_project_arguments(cc.get_supported_arguments(warning_c_args), language: 'c')
+if have_cxx
+ add_project_arguments(cxx.get_supported_arguments(warning_cxx_args), language: 'cpp')
+endif
+
+# FIXME: We cannot build some of the GResource tests with -z nodelete, which
+# means we cannot use that flag in add_project_link_arguments(), and must add
+# it to the relevant targets manually. We do the same with -Bsymbolic-functions
+# because that is what the autotools build did.
+# See https://github.com/mesonbuild/meson/pull/3520 for a way to eventually
+# improve this.
+glib_link_flags = cc.get_supported_link_arguments(warning_c_link_args)
+
+# Windows SDK requirements and checks
+if host_system == 'windows'
+ # Check whether we're building for UWP apps
+ code = '''
+ #include <windows.h>
+ #if !(WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP))
+ #error "Not building for UWP"
+ #endif'''
+ if cc.compiles(code, name : 'building for UWP')
+ glib_conf.set('G_WINAPI_ONLY_APP', true)
+ # We require Windows 10+ on WinRT
+ glib_conf.set('_WIN32_WINNT', '0x0A00')
+ uwp_gio_deps = [cc.find_library('shcore'),
+ cc.find_library('runtimeobject')]
+ else
+ # We require Windows 7+ on Win32
+ glib_conf.set('_WIN32_WINNT', '0x0601')
+ uwp_gio_deps = []
+ endif
+endif
+
+functions = [
+ 'accept4',
+ 'close_range',
+ 'endmntent',
+ 'endservent',
+ 'epoll_create',
+ 'fallocate',
+ 'fchmod',
+ 'fchown',
+ 'fdwalk',
+ 'free_aligned_sized',
+ 'free_sized',
+ 'fsync',
+ 'getauxval',
+ 'getc_unlocked',
+ 'getfsstat',
+ 'getgrgid_r',
+ 'getmntent_r',
+ 'getpwuid_r',
+ 'getresuid',
+ 'getvfsstat',
+ 'gmtime_r',
+ 'hasmntopt',
+ 'inotify_init1',
+ 'issetugid',
+ 'kevent',
+ 'kqueue',
+ 'lchmod',
+ 'lchown',
+ 'link',
+ 'localtime_r',
+ 'lstat',
+ 'mbrtowc',
+ 'memalign',
+ 'mmap',
+ 'newlocale',
+ 'pipe2',
+ 'poll',
+ 'prlimit',
+ 'readlink',
+ 'recvmmsg',
+ 'sendmmsg',
+ 'setenv',
+ 'setmntent',
+ 'strerror_r',
+ 'strnlen',
+ 'strsignal',
+ 'strtod_l',
+ 'strtoll_l',
+ 'strtoull_l',
+ 'symlink',
+ 'timegm',
+ 'unsetenv',
+ 'uselocale',
+ 'utimes',
+ 'utimensat',
+ 'valloc',
+ 'vasprintf',
+ 'vsnprintf',
+ 'wcrtomb',
+ 'wcslen',
+ 'wcsnlen',
+ 'sysctlbyname',
+]
+
+# _NSGetEnviron is available on iOS too, but its usage gets apps rejected from
+# the app store since it's considered 'private API'
+if host_system == 'darwin'
+ functions += ['_NSGetEnviron']
+endif
+
+if glib_conf.has('HAVE_SYS_STATVFS_H')
+ functions += ['statvfs']
+else
+ have_func_statvfs = false
+endif
+if glib_conf.has('HAVE_SYS_STATFS_H') or glib_conf.has('HAVE_SYS_MOUNT_H')
+ functions += ['statfs']
+else
+ have_func_statfs = false
+endif
+
+if host_system == 'windows'
+ iphlpapi_dep = cc.find_library('iphlpapi')
+ iphlpapi_funcs = ['if_nametoindex', 'if_indextoname']
+ foreach ifunc : iphlpapi_funcs
+ iphl_prefix = '''#define _WIN32_WINNT @0@
+ #include <winsock2.h>
+ #include <iphlpapi.h>'''.format(glib_conf.get('_WIN32_WINNT'))
+ if cc.has_function(ifunc,
+ prefix : iphl_prefix,
+ dependencies : iphlpapi_dep)
+ idefine = 'HAVE_' + ifunc.underscorify().to_upper()
+ glib_conf.set(idefine, 1)
+ glib_conf_prefix = glib_conf_prefix + '#define @0@ 1\n'.format(idefine)
+ set_variable('have_func_' + ifunc, true)
+ else
+ set_variable('have_func_' + ifunc, false)
+ endif
+ endforeach
+else
+ functions += ['if_indextoname', 'if_nametoindex']
+endif
+
+# AIX splice is something else
+if host_system != 'aix'
+ functions += ['splice']
+endif
+
+foreach f : functions
+ if cc.has_function(f)
+ define = 'HAVE_' + f.underscorify().to_upper()
+ glib_conf.set(define, 1)
+ glib_conf_prefix = glib_conf_prefix + '#define @0@ 1\n'.format(define)
+ set_variable('have_func_' + f, true)
+ else
+ set_variable('have_func_' + f, false)
+ endif
+endforeach
+
+# Check that stpcpy() is usable; must use header.
+# See:
+# https://github.com/mesonbuild/meson/issues/5628.
+if cc.has_function('stpcpy', prefix : '#include <string.h>')
+ glib_conf.set('HAVE_STPCPY', 1)
+endif
+
+if cc.has_function('memalign', prefix: '#include <stdlib.h>\n#include <malloc.h>')
+ glib_conf.set('HAVE_MEMALIGN', 1)
+endif
+
+if cc.has_function('_aligned_malloc', prefix: '#include <malloc.h>')
+ glib_conf.set('HAVE__ALIGNED_MALLOC', 1)
+endif
+
+if host_system != 'windows' and cc.has_function('aligned_alloc', prefix: '#include <stdlib.h>')
+ glib_conf.set('HAVE_ALIGNED_ALLOC', 1)
+endif
+
+if host_system != 'windows' and cc.has_function('posix_memalign', prefix: '#include <stdlib.h>')
+ glib_conf.set('HAVE_POSIX_MEMALIGN', 1)
+endif
+
+# Check that posix_spawn() is usable; must use header
+if cc.has_function('posix_spawn', prefix : '#include <spawn.h>')
+ glib_conf.set('HAVE_POSIX_SPAWN', 1)
+endif
+
+# Check whether strerror_r returns char *
+if have_func_strerror_r
+ if cc.compiles('''#define _GNU_SOURCE
+ #include <string.h>
+ int func (void) {
+ char error_string[256];
+ char *ptr = strerror_r (-2, error_string, 256);
+ char c = *strerror_r (-2, error_string, 256);
+ return c != 0 && ptr != (void*) 0L;
+ }
+ ''',
+ name : 'strerror_r() returns char *')
+ glib_conf.set('STRERROR_R_CHAR_P', 1,
+ description: 'Defined if strerror_r returns char *')
+ endif
+endif
+
+# Special-case these functions that have alternative names on Windows/MSVC
+if cc.has_function('snprintf') or cc.has_header_symbol('stdio.h', 'snprintf')
+ glib_conf.set('HAVE_SNPRINTF', 1)
+ glib_conf_prefix = glib_conf_prefix + '#define HAVE_SNPRINTF 1\n'
+elif cc.has_function('_snprintf') or cc.has_header_symbol('stdio.h', '_snprintf')
+ hack_define = '1\n#define snprintf _snprintf'
+ glib_conf.set('HAVE_SNPRINTF', hack_define)
+ glib_conf_prefix = glib_conf_prefix + '#define HAVE_SNPRINTF ' + hack_define
+endif
+
+if cc.has_function('strcasecmp', prefix: '#include <strings.h>')
+ glib_conf.set('HAVE_STRCASECMP', 1)
+ glib_conf_prefix = glib_conf_prefix + '#define HAVE_STRCASECMP 1\n'
+elif cc.has_function('_stricmp')
+ hack_define = '1\n#define strcasecmp _stricmp'
+ glib_conf.set('HAVE_STRCASECMP', hack_define)
+ glib_conf_prefix = glib_conf_prefix + '#define HAVE_STRCASECMP ' + hack_define
+endif
+
+if cc.has_function('strncasecmp', prefix: '#include <strings.h>')
+ glib_conf.set('HAVE_STRNCASECMP', 1)
+ glib_conf_prefix = glib_conf_prefix + '#define HAVE_STRNCASECMP 1\n'
+elif cc.has_function('_strnicmp')
+ hack_define = '1\n#define strncasecmp _strnicmp'
+ glib_conf.set('HAVE_STRNCASECMP', hack_define)
+ glib_conf_prefix = glib_conf_prefix + '#define HAVE_STRNCASECMP ' + hack_define
+endif
+
+if cc.has_header_symbol('sys/sysmacros.h', 'major')
+ glib_conf.set('MAJOR_IN_SYSMACROS', 1)
+elif cc.has_header_symbol('sys/mkdev.h', 'major')
+ glib_conf.set('MAJOR_IN_MKDEV', 1)
+elif cc.has_header_symbol('sys/types.h', 'major')
+ glib_conf.set('MAJOR_IN_TYPES', 1)
+endif
+
+if cc.has_header_symbol('dlfcn.h', 'RTLD_LAZY')
+ glib_conf.set('HAVE_RTLD_LAZY', 1)
+endif
+
+if cc.has_header_symbol('dlfcn.h', 'RTLD_NOW')
+ glib_conf.set('HAVE_RTLD_NOW', 1)
+endif
+
+if cc.has_header_symbol('dlfcn.h', 'RTLD_GLOBAL')
+ glib_conf.set('HAVE_RTLD_GLOBAL', 1)
+endif
+
+have_rtld_next = false
+if cc.has_header_symbol('dlfcn.h', 'RTLD_NEXT', args: '-D_GNU_SOURCE')
+ have_rtld_next = true
+ glib_conf.set('HAVE_RTLD_NEXT', 1)
+endif
+
+# Check whether to use statfs or statvfs
+# Some systems have both statfs and statvfs, pick the most "native" for these
+if have_func_statfs and have_func_statvfs
+ # on solaris and irix, statfs doesn't even have the f_bavail field
+ if not glib_conf.has('HAVE_STRUCT_STATFS_F_BAVAIL')
+ have_func_statfs = false
+ else
+ # at least on linux, statfs is the actual syscall
+ have_func_statvfs = false
+ endif
+endif
+if have_func_statfs
+ glib_conf.set('USE_STATFS', 1)
+ stat_func_to_use = 'statfs'
+elif have_func_statvfs
+ glib_conf.set('USE_STATVFS', 1)
+ stat_func_to_use = 'statvfs'
+else
+ stat_func_to_use = 'neither'
+endif
+message('Checking whether to use statfs or statvfs .. ' + stat_func_to_use)
+
+if host_system == 'linux'
+ if cc.has_function('mkostemp',
+ prefix: '''#define _GNU_SOURCE
+ #include <stdlib.h>''')
+ glib_conf.set('HAVE_MKOSTEMP', 1)
+ endif
+endif
+
+glib_have_os_x_9_or_later = false
+glib_have_carbon = false
+glib_have_cocoa = false
+if host_system == 'darwin'
+ add_languages('objc', native: false, required: true)
+ objcc = meson.get_compiler('objc')
+
+ add_project_arguments(objcc.get_supported_arguments(warning_objc_args), language: 'objc')
+
+ # Mac OS X Carbon support
+ glib_have_carbon = objcc.compiles('''#include <Carbon/Carbon.h>
+ #include <CoreServices/CoreServices.h>''',
+ name : 'Mac OS X Carbon support')
+
+ if glib_have_carbon
+ glib_conf.set('HAVE_CARBON', true)
+ glib_have_os_x_9_or_later = objcc.compiles('''#include <AvailabilityMacros.h>
+ #if MAC_OS_X_VERSION_MIN_REQUIRED < 1090
+ #error Compiling for minimum OS X version before 10.9
+ #endif''',
+ name : 'OS X 9 or later')
+ endif
+
+ # Mac OS X Cocoa support
+ glib_have_cocoa = objcc.compiles('''#include <Cocoa/Cocoa.h>
+ #ifdef GNUSTEP_BASE_VERSION
+ #error "Detected GNUstep, not Cocoa"
+ #endif''',
+ name : 'Mac OS X Cocoa support')
+
+ if glib_have_cocoa
+ glib_conf.set('HAVE_COCOA', true)
+ endif
+endif
+
+if host_system == 'qnx'
+ glib_conf.set('HAVE_QNX', 1)
+endif
+
+# Check for futex(2)
+if cc.compiles('''#include <linux/futex.h>
+ #include <sys/syscall.h>
+ #include <unistd.h>
+ int main (int argc, char ** argv) {
+ syscall (__NR_futex, NULL, FUTEX_WAKE, FUTEX_WAIT);
+ return 0;
+ }''', name : 'futex(2) system call')
+ glib_conf.set('HAVE_FUTEX', 1)
+endif
+if cc.compiles('''#include <linux/futex.h>
+ #include <sys/syscall.h>
+ #include <unistd.h>
+ int main (int argc, char ** argv) {
+ syscall (__NR_futex_time64, NULL, FUTEX_WAKE, FUTEX_WAIT);
+ return 0;
+ }''', name : 'futex(2) system call')
+ glib_conf.set('HAVE_FUTEX_TIME64', 1)
+endif
+
+# Check for eventfd(2)
+if cc.links('''#include <sys/eventfd.h>
+ #include <unistd.h>
+ int main (int argc, char ** argv) {
+ eventfd (0, EFD_CLOEXEC);
+ return 0;
+ }''', name : 'eventfd(2) system call')
+ glib_conf.set('HAVE_EVENTFD', 1)
+endif
+
+# Check for pidfd_open(2)
+if cc.links('''#include <sys/syscall.h>
+ #include <sys/wait.h>
+ #include <linux/wait.h>
+ #include <unistd.h>
+ int main (int argc, char ** argv) {
+ siginfo_t child_info = { 0, };
+ syscall (SYS_pidfd_open, 0, 0);
+ waitid (P_PIDFD, 0, &child_info, WEXITED | WNOHANG);
+ return 0;
+ }''', name : 'pidfd_open(2) system call')
+ glib_conf.set('HAVE_PIDFD', 1)
+endif
+
+# Check for __uint128_t (gcc) by checking for 128-bit division
+uint128_t_src = '''int main() {
+static __uint128_t v1 = 100;
+static __uint128_t v2 = 10;
+static __uint128_t u;
+u = v1 / v2;
+}'''
+if cc.compiles(uint128_t_src, name : '__uint128_t available')
+ glib_conf.set('HAVE_UINT128_T', 1)
+endif
+
+clock_gettime_test_code = '''
+ #include <time.h>
+ struct timespec t;
+ int main (int argc, char ** argv) {
+ return clock_gettime(CLOCK_REALTIME, &t);
+ }'''
+librt = []
+if cc.links(clock_gettime_test_code, name : 'clock_gettime')
+ glib_conf.set('HAVE_CLOCK_GETTIME', 1)
+elif cc.links(clock_gettime_test_code, args : '-lrt', name : 'clock_gettime in librt')
+ glib_conf.set('HAVE_CLOCK_GETTIME', 1)
+ librt = cc.find_library('rt')
+endif
+
+dlopen_dlsym_test_code = '''
+#include <dlfcn.h>
+#include <stdio.h>
+int r;
+int glib_underscore_test (void) { return 42; }
+int main (int argc, char ** argv) {
+ void *f1 = (void*)0, *f2 = (void*)0, *handle;
+ handle = dlopen ((void*)0, 0);
+ if (handle) {
+ f1 = dlsym (handle, "glib_underscore_test");
+ f2 = dlsym (handle, "_glib_underscore_test");
+ }
+ r = (!f2 || f1) ? puts ("1") : puts ("0");
+ return r > 0 ? 0 : r;
+}'''
+libdl_dep = []
+if cc.links(dlopen_dlsym_test_code, name : 'dlopen() and dlsym() in system libraries')
+ have_dlopen_dlsym = true
+elif cc.links(dlopen_dlsym_test_code, args : '-ldl', name : 'dlopen() and dlsym() in libdl')
+ have_dlopen_dlsym = true
+ libdl_dep = cc.find_library('dl')
+else
+ have_dlopen_dlsym = false
+endif
+
+# if statfs() takes 2 arguments (Posix) or 4 (Solaris)
+if have_func_statfs
+ if cc.compiles(glib_conf_prefix + '''
+ #include <unistd.h>
+ #ifdef HAVE_SYS_PARAM_H
+ #include <sys/param.h>
+ #endif
+ #ifdef HAVE_SYS_VFS_H
+ #include <sys/vfs.h>
+ #endif
+ #ifdef HAVE_SYS_MOUNT_H
+ #include <sys/mount.h>
+ #endif
+ #ifdef HAVE_SYS_STATFS_H
+ #include <sys/statfs.h>
+ #endif
+ void some_func (void) {
+ struct statfs st;
+ statfs("/", &st);
+ }''', name : 'number of arguments to statfs() (n=2)')
+ glib_conf.set('STATFS_ARGS', 2)
+ elif cc.compiles(glib_conf_prefix + '''
+ #include <unistd.h>
+ #ifdef HAVE_SYS_PARAM_H
+ #include <sys/param.h>
+ #endif
+ #ifdef HAVE_SYS_VFS_H
+ #include <sys/vfs.h>
+ #endif
+ #ifdef HAVE_SYS_MOUNT_H
+ #include <sys/mount.h>
+ #endif
+ #ifdef HAVE_SYS_STATFS_H
+ #include <sys/statfs.h>
+ #endif
+ void some_func (void) {
+ struct statfs st;
+ statfs("/", &st, sizeof (st), 0);
+ }''', name : 'number of arguments to statfs() (n=4)')
+ glib_conf.set('STATFS_ARGS', 4)
+ else
+ error('Unable to determine number of arguments to statfs()')
+ endif
+endif
+
+# open takes O_DIRECTORY as an option
+#AC_MSG_CHECKING([])
+if cc.compiles('''#include <fcntl.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ void some_func (void) {
+ open(0, O_DIRECTORY, 0);
+ }''', name : 'open() option O_DIRECTORY')
+ glib_conf.set('HAVE_OPEN_O_DIRECTORY', 1)
+endif
+
+# fcntl takes F_FULLFSYNC as an option
+# See https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man2/fsync.2.html
+if cc.compiles('''#include <fcntl.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ void some_func (void) {
+ fcntl(0, F_FULLFSYNC, 0);
+ }''', name : 'fcntl() option F_FULLFSYNC')
+ glib_conf.set('HAVE_FCNTL_F_FULLFSYNC', 1)
+endif
+
+# Check whether there is a vsnprintf() function with C99 semantics installed.
+# (similar tests to AC_FUNC_VSNPRINTF_C99)
+# Check whether there is a snprintf() function with C99 semantics installed.
+# (similar tests to AC_FUNC_SNPRINTF_C99)
+# Check whether there is a printf() function with Unix98 semantics installed.
+# (similar tests to AC_FUNC_PRINTF_UNIX98)
+have_good_vsnprintf = false
+have_good_snprintf = false
+have_good_printf = false
+
+if host_system == 'windows' and (cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl')
+ # Unfortunately the Visual Studio 2015+ implementations of C99-style
+ # snprintf and vsnprintf don't seem to be quite good enough.
+ # (Sorry, I don't know exactly what is the problem,
+ # but it is related to floating point formatting and decimal point vs. comma.)
+ # The simple tests in AC_FUNC_VSNPRINTF_C99 and AC_FUNC_SNPRINTF_C99 aren't
+ # rigorous enough to notice, though.
+ glib_conf.set('HAVE_C99_SNPRINTF', false)
+ glib_conf.set('HAVE_C99_VSNPRINTF', false)
+ glib_conf.set('HAVE_UNIX98_PRINTF', false)
+elif not cc_can_run and host_system in ['ios', 'darwin']
+ # All these are true when compiling natively on macOS, so we should use good
+ # defaults when building for iOS and tvOS.
+ glib_conf.set('HAVE_C99_SNPRINTF', true)
+ glib_conf.set('HAVE_C99_VSNPRINTF', true)
+ glib_conf.set('HAVE_UNIX98_PRINTF', true)
+ have_good_vsnprintf = true
+ have_good_snprintf = true
+ have_good_printf = true
+else
+ vsnprintf_c99_test_code = '''
+#include <stdio.h>
+#include <stdarg.h>
+#include <stdlib.h>
+
+int
+doit(char * s, ...)
+{
+ char buffer[32];
+ va_list args;
+ int r;
+
+ va_start(args, s);
+ r = vsnprintf(buffer, 5, s, args);
+ va_end(args);
+
+ if (r != 7)
+ exit(1);
+
+ /* AIX 5.1 and Solaris seems to have a half-baked vsnprintf()
+ implementation. The above will return 7 but if you replace
+ the size of the buffer with 0, it borks! */
+ va_start(args, s);
+ r = vsnprintf(buffer, 0, s, args);
+ va_end(args);
+
+ if (r != 7)
+ exit(1);
+
+ exit(0);
+}
+
+int
+main(void)
+{
+ doit("1234567");
+ exit(1);
+}'''
+
+ if cc_can_run
+ rres = cc.run(vsnprintf_c99_test_code, name : 'C99 vsnprintf')
+ if rres.compiled() and rres.returncode() == 0
+ glib_conf.set('HAVE_C99_VSNPRINTF', 1)
+ have_good_vsnprintf = true
+ endif
+ else
+ have_good_vsnprintf = meson.get_external_property('have_c99_vsnprintf', false)
+ glib_conf.set('HAVE_C99_VSNPRINTF', have_good_vsnprintf)
+ endif
+
+ snprintf_c99_test_code = '''
+#include <stdio.h>
+#include <stdarg.h>
+#include <stdlib.h>
+
+int
+doit()
+{
+ char buffer[32];
+ va_list args;
+ int r;
+
+ r = snprintf(buffer, 5, "1234567");
+
+ if (r != 7)
+ exit(1);
+
+ r = snprintf(buffer, 0, "1234567");
+
+ if (r != 7)
+ exit(1);
+
+ r = snprintf(NULL, 0, "1234567");
+
+ if (r != 7)
+ exit(1);
+
+ exit(0);
+}
+
+int
+main(void)
+{
+ doit();
+ exit(1);
+}'''
+
+ if cc_can_run
+ rres = cc.run(snprintf_c99_test_code, name : 'C99 snprintf')
+ if rres.compiled() and rres.returncode() == 0
+ glib_conf.set('HAVE_C99_SNPRINTF', 1)
+ have_good_snprintf = true
+ endif
+ else
+ have_good_snprintf = meson.get_external_property('have_c99_snprintf', false)
+ glib_conf.set('HAVE_C99_SNPRINTF', have_good_snprintf)
+ endif
+
+ printf_unix98_test_code = '''
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int
+main (void)
+{
+ char buffer[128];
+
+ sprintf (buffer, "%2\$d %3\$d %1\$d", 1, 2, 3);
+ if (strcmp ("2 3 1", buffer) == 0)
+ exit (0);
+ exit (1);
+}'''
+
+ if cc_can_run
+ rres = cc.run(printf_unix98_test_code, name : 'Unix98 printf positional parameters')
+ if rres.compiled() and rres.returncode() == 0
+ glib_conf.set('HAVE_UNIX98_PRINTF', 1)
+ have_good_printf = true
+ endif
+ else
+ have_good_printf = meson.get_external_property('have_unix98_printf', false)
+ glib_conf.set('HAVE_UNIX98_PRINTF', have_good_printf)
+ endif
+endif
+
+if host_system == 'windows'
+ glib_conf.set_quoted('EXEEXT', '.exe')
+else
+ glib_conf.set('EXEEXT', '')
+endif
+
+# Our printf is 'good' only if vsnpintf()/snprintf()/printf() supports C99 well enough
+use_system_printf = have_good_vsnprintf and have_good_snprintf and have_good_printf
+glib_conf.set('USE_SYSTEM_PRINTF', use_system_printf)
+glibconfig_conf.set('GLIB_USING_SYSTEM_PRINTF', use_system_printf)
+
+if not use_system_printf
+ # gnulib has vasprintf so override the previous check
+ glib_conf.set('HAVE_VASPRINTF', 1)
+endif
+
+# Check for nl_langinfo and CODESET
+if cc.links('''#include <langinfo.h>
+ int main (int argc, char ** argv) {
+ char *codeset = nl_langinfo (CODESET);
+ return 0;
+ }''', name : 'nl_langinfo and CODESET')
+ glib_conf.set('HAVE_LANGINFO_CODESET', 1)
+ glib_conf.set('HAVE_CODESET', 1)
+endif
+
+# Check for nl_langinfo and LC_TIME parts that are needed in gdatetime.c
+if cc.links('''#include <langinfo.h>
+ int main (int argc, char ** argv) {
+ char *str;
+ str = nl_langinfo (PM_STR);
+ str = nl_langinfo (D_T_FMT);
+ str = nl_langinfo (D_FMT);
+ str = nl_langinfo (T_FMT);
+ str = nl_langinfo (T_FMT_AMPM);
+ str = nl_langinfo (MON_1);
+ str = nl_langinfo (ABMON_12);
+ str = nl_langinfo (DAY_1);
+ str = nl_langinfo (ABDAY_7);
+ return 0;
+ }''', name : 'nl_langinfo (PM_STR)')
+ glib_conf.set('HAVE_LANGINFO_TIME', 1)
+endif
+if cc.links('''#include <langinfo.h>
+ int main (int argc, char ** argv) {
+ char *str;
+ str = nl_langinfo (_NL_CTYPE_OUTDIGIT0_MB);
+ str = nl_langinfo (_NL_CTYPE_OUTDIGIT1_MB);
+ str = nl_langinfo (_NL_CTYPE_OUTDIGIT2_MB);
+ str = nl_langinfo (_NL_CTYPE_OUTDIGIT3_MB);
+ str = nl_langinfo (_NL_CTYPE_OUTDIGIT4_MB);
+ str = nl_langinfo (_NL_CTYPE_OUTDIGIT5_MB);
+ str = nl_langinfo (_NL_CTYPE_OUTDIGIT6_MB);
+ str = nl_langinfo (_NL_CTYPE_OUTDIGIT7_MB);
+ str = nl_langinfo (_NL_CTYPE_OUTDIGIT8_MB);
+ str = nl_langinfo (_NL_CTYPE_OUTDIGIT9_MB);
+ return 0;
+ }''', name : 'nl_langinfo (_NL_CTYPE_OUTDIGITn_MB)')
+ glib_conf.set('HAVE_LANGINFO_OUTDIGIT', 1)
+endif
+
+# Check for nl_langinfo and alternative month names
+if cc.links('''#ifndef _GNU_SOURCE
+ # define _GNU_SOURCE
+ #endif
+ #include <langinfo.h>
+ int main (int argc, char ** argv) {
+ char *str;
+ str = nl_langinfo (ALTMON_1);
+ str = nl_langinfo (ALTMON_2);
+ str = nl_langinfo (ALTMON_3);
+ str = nl_langinfo (ALTMON_4);
+ str = nl_langinfo (ALTMON_5);
+ str = nl_langinfo (ALTMON_6);
+ str = nl_langinfo (ALTMON_7);
+ str = nl_langinfo (ALTMON_8);
+ str = nl_langinfo (ALTMON_9);
+ str = nl_langinfo (ALTMON_10);
+ str = nl_langinfo (ALTMON_11);
+ str = nl_langinfo (ALTMON_12);
+ return 0;
+ }''', name : 'nl_langinfo (ALTMON_n)')
+ glib_conf.set('HAVE_LANGINFO_ALTMON', 1)
+endif
+
+# Check for nl_langinfo and abbreviated alternative month names
+if cc.links('''#ifndef _GNU_SOURCE
+ # define _GNU_SOURCE
+ #endif
+ #include <langinfo.h>
+ int main (int argc, char ** argv) {
+ char *str;
+ str = nl_langinfo (_NL_ABALTMON_1);
+ str = nl_langinfo (_NL_ABALTMON_2);
+ str = nl_langinfo (_NL_ABALTMON_3);
+ str = nl_langinfo (_NL_ABALTMON_4);
+ str = nl_langinfo (_NL_ABALTMON_5);
+ str = nl_langinfo (_NL_ABALTMON_6);
+ str = nl_langinfo (_NL_ABALTMON_7);
+ str = nl_langinfo (_NL_ABALTMON_8);
+ str = nl_langinfo (_NL_ABALTMON_9);
+ str = nl_langinfo (_NL_ABALTMON_10);
+ str = nl_langinfo (_NL_ABALTMON_11);
+ str = nl_langinfo (_NL_ABALTMON_12);
+ return 0;
+ }''', name : 'nl_langinfo (_NL_ABALTMON_n)')
+ glib_conf.set('HAVE_LANGINFO_ABALTMON', 1)
+endif
+
+# Check for nl_langinfo and _NL_TIME_CODESET
+if cc.links('''#include <langinfo.h>
+ int main (int argc, char ** argv) {
+ char *codeset = nl_langinfo (_NL_TIME_CODESET);
+ return 0;
+ }''', name : 'nl_langinfo and _NL_TIME_CODESET')
+ glib_conf.set('HAVE_LANGINFO_TIME_CODESET', 1)
+endif
+
+# Check if C compiler supports the 'signed' keyword
+if not cc.compiles('''signed char x;''', name : 'signed')
+ glib_conf.set('signed', '/* NOOP */')
+endif
+
+# Check if the ptrdiff_t type exists
+if cc.has_header_symbol('stddef.h', 'ptrdiff_t')
+ glib_conf.set('HAVE_PTRDIFF_T', 1)
+endif
+
+# Check for sig_atomic_t type
+if cc.links('''#include <signal.h>
+ #include <sys/types.h>
+ sig_atomic_t val = 42;
+ int main (int argc, char ** argv) {
+ return val == 42 ? 0 : 1;
+ }''', name : 'sig_atomic_t')
+ glib_conf.set('HAVE_SIG_ATOMIC_T', 1)
+endif
+
+# Check if 'long long' works
+# jm_AC_TYPE_LONG_LONG
+if cc.compiles('''long long ll = 1LL;
+ int i = 63;
+ int some_func (void) {
+ long long llmax = (long long) -1;
+ return ll << i | ll >> i | llmax / ll | llmax % ll;
+ }''', name : 'long long')
+ glib_conf.set('HAVE_LONG_LONG', 1)
+ have_long_long = true
+else
+ have_long_long = false
+endif
+
+# Test whether the compiler supports the 'long double' type.
+if cc.compiles('''/* The Stardent Vistra knows sizeof(long double), but does not support it. */
+ long double foo = 0.0;
+ /* On Ultrix 4.3 cc, long double is 4 and double is 8. */
+ int array [2*(sizeof(long double) >= sizeof(double)) - 1];''',
+ name : 'long double')
+ glib_conf.set('HAVE_LONG_DOUBLE', 1)
+endif
+
+# Test whether <stddef.h> has the 'wchar_t' type.
+if cc.has_header_symbol('stddef.h', 'wchar_t')
+ glib_conf.set('HAVE_WCHAR_T', 1)
+endif
+
+# Test whether <wchar.h> has the 'wint_t' type.
+if cc.has_header_symbol('wchar.h', 'wint_t')
+ glib_conf.set('HAVE_WINT_T', 1)
+endif
+
+found_uintmax_t = false
+
+# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+# jm_AC_HEADER_INTTYPES_H
+if cc.compiles('''#include <sys/types.h>
+ #include <inttypes.h>
+ void some_func (void) {
+ uintmax_t i = (uintmax_t) -1;
+ }''', name : 'uintmax_t in inttypes.h')
+ glib_conf.set('HAVE_INTTYPES_H_WITH_UINTMAX', 1)
+ found_uintmax_t = true
+endif
+
+# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+# jm_AC_HEADER_STDINT_H
+if cc.compiles('''#include <sys/types.h>
+ #include <stdint.h>
+ void some_func (void) {
+ uintmax_t i = (uintmax_t) -1;
+ }''', name : 'uintmax_t in stdint.h')
+ glib_conf.set('HAVE_STDINT_H_WITH_UINTMAX', 1)
+ found_uintmax_t = true
+endif
+
+# Define intmax_t to 'long' or 'long long'
+# if it is not already defined in <stdint.h> or <inttypes.h>.
+# For simplicity, we assume that a header file defines 'intmax_t' if and
+# only if it defines 'uintmax_t'.
+if found_uintmax_t
+ glib_conf.set('HAVE_INTMAX_T', 1)
+elif have_long_long
+ glib_conf.set('intmax_t', 'long long')
+else
+ glib_conf.set('intmax_t', 'long')
+endif
+
+char_size = cc.sizeof('char')
+short_size = cc.sizeof('short')
+int_size = cc.sizeof('int')
+voidp_size = cc.sizeof('void*')
+long_size = cc.sizeof('long')
+if have_long_long
+ long_long_size = cc.sizeof('long long')
+else
+ long_long_size = 0
+endif
+sizet_size = cc.sizeof('size_t')
+if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl'
+ ssizet_size = cc.sizeof('SSIZE_T', prefix : '#include <BaseTsd.h>')
+else
+ ssizet_size = cc.sizeof('ssize_t', prefix : '#include <unistd.h>')
+endif
+
+# Some platforms (Apple) hard-code int64_t to long long instead of
+# using long on 64-bit architectures. This can cause type mismatch
+# warnings when trying to interface with code using the standard
+# library type. Test for the warnings and set gint64 to whichever
+# works.
+if long_long_size == long_size
+ if cc.compiles('''#if defined(_AIX) && !defined(__GNUC__)
+ #pragma options langlvl=stdc99
+ #endif
+ #pragma GCC diagnostic error "-Wincompatible-pointer-types"
+ #include <stdint.h>
+ #include <stdio.h>
+ int main () {
+ int64_t i1 = 1;
+ long *i2 = &i1;
+ return 1;
+ }''', name : 'int64_t is long')
+ int64_t_typedef = 'long'
+ elif cc.compiles('''#if defined(_AIX) && !defined(__GNUC__)
+ #pragma options langlvl=stdc99
+ #endif
+ #pragma GCC diagnostic error "-Wincompatible-pointer-types"
+ #include <stdint.h>
+ #include <stdio.h>
+ int main () {
+ int64_t i1 = 1;
+ long long *i2 = &i1;
+ return 1;
+ }''', name : 'int64_t is long long')
+ int64_t_typedef = 'long long'
+ endif
+endif
+
+int64_m = 'll'
+char_align = cc.alignment('char')
+short_align = cc.alignment('short')
+int_align = cc.alignment('int')
+voidp_align = cc.alignment('void*')
+long_align = cc.alignment('long')
+long_long_align = cc.alignment('long long')
+# NOTE: We don't check for size of __int64 because long long is guaranteed to
+# be 64-bit in C99, and it is available on all supported compilers
+sizet_align = cc.alignment('size_t')
+
+glib_conf.set('SIZEOF_CHAR', char_size)
+glib_conf.set('SIZEOF_INT', int_size)
+glib_conf.set('SIZEOF_SHORT', short_size)
+glib_conf.set('SIZEOF_LONG', long_size)
+glib_conf.set('SIZEOF_LONG_LONG', long_long_size)
+glib_conf.set('SIZEOF_SIZE_T', sizet_size)
+glib_conf.set('SIZEOF_SSIZE_T', ssizet_size)
+glib_conf.set('SIZEOF_VOID_P', voidp_size)
+glib_conf.set('SIZEOF_WCHAR_T', cc.sizeof('wchar_t', prefix: '#include <stddef.h>'))
+
+if short_size == 2
+ gint16 = 'short'
+ gint16_modifier='h'
+ gint16_format='hi'
+ guint16_format='hu'
+elif int_size == 2
+ gint16 = 'int'
+ gint16_modifier=''
+ gint16_format='i'
+ guint16_format='u'
+else
+ error('Compiler provides no native 16-bit integer type')
+endif
+glibconfig_conf.set('gint16', gint16)
+glibconfig_conf.set_quoted('gint16_modifier', gint16_modifier)
+glibconfig_conf.set_quoted('gint16_format', gint16_format)
+glibconfig_conf.set_quoted('guint16_format', guint16_format)
+
+if short_size == 4
+ gint32 = 'short'
+ gint32_modifier='h'
+ gint32_format='hi'
+ guint32_format='hu'
+ guint32_align = short_align
+elif int_size == 4
+ gint32 = 'int'
+ gint32_modifier=''
+ gint32_format='i'
+ guint32_format='u'
+ guint32_align = int_align
+elif long_size == 4
+ gint32 = 'long'
+ gint32_modifier='l'
+ gint32_format='li'
+ guint32_format='lu'
+ guint32_align = long_align
+else
+ error('Compiler provides no native 32-bit integer type')
+endif
+glibconfig_conf.set('gint32', gint32)
+glibconfig_conf.set_quoted('gint32_modifier', gint32_modifier)
+glibconfig_conf.set_quoted('gint32_format', gint32_format)
+glibconfig_conf.set_quoted('guint32_format', guint32_format)
+
+if int_size == 8
+ gint64 = 'int'
+ gint64_modifier=''
+ gint64_format='i'
+ guint64_format='u'
+ glib_extension=''
+ gint64_constant='(val)'
+ guint64_constant='(val)'
+ guint64_align = int_align
+elif long_size == 8 and (long_long_size != long_size or int64_t_typedef == 'long')
+ gint64 = 'long'
+ glib_extension=''
+ gint64_modifier='l'
+ gint64_format='li'
+ guint64_format='lu'
+ gint64_constant='(val##L)'
+ guint64_constant='(val##UL)'
+ guint64_align = long_align
+elif long_long_size == 8 and (long_long_size != long_size or int64_t_typedef == 'long long')
+ gint64 = 'long long'
+ glib_extension='G_GNUC_EXTENSION '
+ gint64_modifier=int64_m
+ gint64_format=int64_m + 'i'
+ guint64_format=int64_m + 'u'
+ gint64_constant='(G_GNUC_EXTENSION (val##LL))'
+ guint64_constant='(G_GNUC_EXTENSION (val##ULL))'
+ guint64_align = long_long_align
+else
+ error('Compiler provides no native 64-bit integer type')
+endif
+glibconfig_conf.set('glib_extension', glib_extension)
+glibconfig_conf.set('gint64', gint64)
+glibconfig_conf.set_quoted('gint64_modifier', gint64_modifier)
+glibconfig_conf.set_quoted('gint64_format', gint64_format)
+glibconfig_conf.set_quoted('guint64_format', guint64_format)
+glibconfig_conf.set('gint64_constant', gint64_constant)
+glibconfig_conf.set('guint64_constant', guint64_constant)
+
+if host_system == 'windows'
+ glibconfig_conf.set('g_pid_type', 'void*')
+ glibconfig_conf.set_quoted('g_pid_format', 'p')
+ if host_machine.cpu_family() == 'x86_64'
+ glibconfig_conf.set_quoted('g_pollfd_format', '%#' + int64_m + 'x')
+ else
+ glibconfig_conf.set_quoted('g_pollfd_format', '%#x')
+ endif
+ glibconfig_conf.set('g_dir_separator', '\\\\')
+ glibconfig_conf.set('g_searchpath_separator', ';')
+else
+ glibconfig_conf.set('g_pid_type', 'int')
+ glibconfig_conf.set_quoted('g_pid_format', 'i')
+ glibconfig_conf.set_quoted('g_pollfd_format', '%d')
+ glibconfig_conf.set('g_dir_separator', '/')
+ glibconfig_conf.set('g_searchpath_separator', ':')
+endif
+
+g_sizet_compatibility = {
+ 'short': sizet_size == short_size,
+ 'int': sizet_size == int_size,
+ 'long': sizet_size == long_size,
+ 'long long': sizet_size == long_long_size,
+}
+
+# Do separate checks for gcc/clang (and ignore other compilers for now), since
+# we need to explicitly pass -Werror to the compilers.
+# FIXME: https://github.com/mesonbuild/meson/issues/5399
+if cc.get_id() == 'gcc' or cc.get_id() == 'clang'
+ foreach type_name, size_compatibility : g_sizet_compatibility
+ g_sizet_compatibility += { type_name: size_compatibility and
+ cc.compiles(
+ '''#include <stddef.h>
+ size_t f (size_t *i) { return *i + 1; }
+ int main (void) {
+ unsigned ''' + type_name + ''' i = 0;
+ f (&i);
+ return 0;
+ }''',
+ args: ['-Werror'],
+ name : 'GCC size_t typedef is ' + type_name), }
+ endforeach
+endif
+
+if g_sizet_compatibility['short']
+ glibconfig_conf.set('glib_size_type_define', 'short')
+ glibconfig_conf.set_quoted('gsize_modifier', 'h')
+ glibconfig_conf.set_quoted('gssize_modifier', 'h')
+ glibconfig_conf.set_quoted('gsize_format', 'hu')
+ glibconfig_conf.set_quoted('gssize_format', 'hi')
+ glibconfig_conf.set('glib_msize_type', 'SHRT')
+elif g_sizet_compatibility['int']
+ glibconfig_conf.set('glib_size_type_define', 'int')
+ glibconfig_conf.set_quoted('gsize_modifier', '')
+ glibconfig_conf.set_quoted('gssize_modifier', '')
+ glibconfig_conf.set_quoted('gsize_format', 'u')
+ glibconfig_conf.set_quoted('gssize_format', 'i')
+ glibconfig_conf.set('glib_msize_type', 'INT')
+elif g_sizet_compatibility['long']
+ glibconfig_conf.set('glib_size_type_define', 'long')
+ glibconfig_conf.set_quoted('gsize_modifier', 'l')
+ glibconfig_conf.set_quoted('gssize_modifier', 'l')
+ glibconfig_conf.set_quoted('gsize_format', 'lu')
+ glibconfig_conf.set_quoted('gssize_format', 'li')
+ glibconfig_conf.set('glib_msize_type', 'LONG')
+elif g_sizet_compatibility['long long']
+ glibconfig_conf.set('glib_size_type_define', 'long long')
+ glibconfig_conf.set_quoted('gsize_modifier', int64_m)
+ glibconfig_conf.set_quoted('gssize_modifier', int64_m)
+ glibconfig_conf.set_quoted('gsize_format', int64_m + 'u')
+ glibconfig_conf.set_quoted('gssize_format', int64_m + 'i')
+ glibconfig_conf.set('glib_msize_type', 'INT64')
+else
+ error('Could not determine size of size_t.')
+endif
+
+if voidp_size == int_size
+ glibconfig_conf.set('glib_intptr_type_define', 'int')
+ glibconfig_conf.set_quoted('gintptr_modifier', '')
+ glibconfig_conf.set_quoted('gintptr_format', 'i')
+ glibconfig_conf.set_quoted('guintptr_format', 'u')
+ glibconfig_conf.set('glib_gpi_cast', '(gint)')
+ glibconfig_conf.set('glib_gpui_cast', '(guint)')
+elif voidp_size == long_size
+ glibconfig_conf.set('glib_intptr_type_define', 'long')
+ glibconfig_conf.set_quoted('gintptr_modifier', 'l')
+ glibconfig_conf.set_quoted('gintptr_format', 'li')
+ glibconfig_conf.set_quoted('guintptr_format', 'lu')
+ glibconfig_conf.set('glib_gpi_cast', '(glong)')
+ glibconfig_conf.set('glib_gpui_cast', '(gulong)')
+elif voidp_size == long_long_size
+ glibconfig_conf.set('glib_intptr_type_define', 'long long')
+ glibconfig_conf.set_quoted('gintptr_modifier', int64_m)
+ glibconfig_conf.set_quoted('gintptr_format', int64_m + 'i')
+ glibconfig_conf.set_quoted('guintptr_format', int64_m + 'u')
+ glibconfig_conf.set('glib_gpi_cast', '(gint64)')
+ glibconfig_conf.set('glib_gpui_cast', '(guint64)')
+else
+ error('Could not determine size of void *')
+endif
+
+if long_size != 8 and long_long_size != 8 and int_size != 8
+ error('GLib requires a 64-bit type. You might want to consider using the GNU C compiler.')
+endif
+
+glibconfig_conf.set('gintbits', int_size * 8)
+glibconfig_conf.set('glongbits', long_size * 8)
+glibconfig_conf.set('gsizebits', sizet_size * 8)
+glibconfig_conf.set('gssizebits', ssizet_size * 8)
+
+# XXX: https://gitlab.gnome.org/GNOME/glib/issues/1413
+if host_system == 'windows'
+ g_module_suffix = 'dll'
+else
+ g_module_suffix = 'so'
+endif
+glibconfig_conf.set('g_module_suffix', g_module_suffix)
+
+glibconfig_conf.set('GLIB_MAJOR_VERSION', major_version)
+glibconfig_conf.set('GLIB_MINOR_VERSION', minor_version)
+glibconfig_conf.set('GLIB_MICRO_VERSION', micro_version)
+glibconfig_conf.set('GLIB_VERSION', glib_version)
+
+glibconfig_conf.set('glib_void_p', voidp_size)
+glibconfig_conf.set('glib_long', long_size)
+glibconfig_conf.set('glib_size_t', sizet_size)
+glibconfig_conf.set('glib_ssize_t', ssizet_size)
+if host_machine.endian() == 'big'
+ glibconfig_conf.set('g_byte_order', 'G_BIG_ENDIAN')
+ glibconfig_conf.set('g_bs_native', 'BE')
+ glibconfig_conf.set('g_bs_alien', 'LE')
+else
+ glibconfig_conf.set('g_byte_order', 'G_LITTLE_ENDIAN')
+ glibconfig_conf.set('g_bs_native', 'LE')
+ glibconfig_conf.set('g_bs_alien', 'BE')
+endif
+
+# === va_copy checks ===
+
+glib_vacopy = ''
+
+# We check for G_VA_COPY_AS_ARRAY for historical reasons, but we no longer
+# use it: use Standard C va_copy() instead.
+
+va_list_val_copy_prog = '''
+ #include <stdarg.h>
+ #include <stdlib.h>
+ void f (int i, ...) {
+ va_list args1, args2;
+ va_start (args1, i);
+ args2 = args1;
+ if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
+ exit (1);
+ va_end (args1); va_end (args2);
+ }
+ int main() {
+ f (0, 42);
+ return 0;
+ }'''
+
+if cc_can_run
+ rres = cc.run(va_list_val_copy_prog, name : 'va_lists can be copied as values')
+ glib_va_val_copy = rres.compiled() and rres.returncode() == 0
+else
+ glib_va_val_copy = meson.get_external_property('va_val_copy', true)
+endif
+if not glib_va_val_copy
+ glib_vacopy = glib_vacopy + '\n#define G_VA_COPY_AS_ARRAY 1'
+ glib_conf.set('G_VA_COPY_AS_ARRAY', 1)
+endif
+glibconfig_conf.set('glib_vacopy', glib_vacopy)
+
+# check for flavours of varargs macros
+g_have_iso_c_varargs = cc.compiles('''
+ void some_func (void) {
+ int a(int p1, int p2, int p3);
+ #define call_a(...) a(1,__VA_ARGS__)
+ call_a(2,3);
+ }''', name : 'ISO C99 varargs macros in C')
+
+if not g_have_iso_c_varargs
+ error('GLib requires a C compiler with support for C99 __VA_ARG__ in macros.')
+endif
+
+if have_cxx
+ g_have_iso_cxx_varargs = cxx.compiles('''
+ void some_func (void) {
+ int a(int p1, int p2, int p3);
+ #define call_a(...) a(1,__VA_ARGS__)
+ call_a(2,3);
+ }''', name : 'ISO C99 varargs macros in C++')
+
+ if not g_have_iso_cxx_varargs
+ error('GLib requires a C++ compiler with support for C99 __VA_ARG__ in macros.')
+ endif
+endif
+
+g_have_gnuc_varargs = cc.compiles('''
+ void some_func (void) {
+ int a(int p1, int p2, int p3);
+ #define call_a(params...) a(1,params)
+ call_a(2,3);
+ }''', name : 'GNUC varargs macros')
+
+if cc.has_header('alloca.h')
+ glibconfig_conf.set('GLIB_HAVE_ALLOCA_H', true)
+endif
+has_syspoll = cc.has_header('sys/poll.h')
+has_systypes = cc.has_header('sys/types.h')
+if has_syspoll
+ glibconfig_conf.set('GLIB_HAVE_SYS_POLL_H', true)
+endif
+has_winsock2 = cc.has_header('winsock2.h')
+
+if has_syspoll and has_systypes
+ poll_includes = '''
+ #include<sys/poll.h>
+ #include<sys/types.h>'''
+elif has_winsock2
+ poll_includes = '''
+ #define _WIN32_WINNT @0@
+ #include <winsock2.h>'''.format(glib_conf.get('_WIN32_WINNT'))
+else
+ # FIXME?
+ error('FIX POLL* defines')
+endif
+
+poll_defines = [
+ [ 'POLLIN', 'g_pollin', 1 ],
+ [ 'POLLOUT', 'g_pollout', 4 ],
+ [ 'POLLPRI', 'g_pollpri', 2 ],
+ [ 'POLLERR', 'g_pollerr', 8 ],
+ [ 'POLLHUP', 'g_pollhup', 16 ],
+ [ 'POLLNVAL', 'g_pollnval', 32 ],
+]
+
+if has_syspoll and has_systypes
+ foreach d : poll_defines
+ val = cc.compute_int(d[0], prefix: poll_includes)
+ glibconfig_conf.set(d[1], val)
+ endforeach
+elif has_winsock2
+ # Due to a missed bug in configure.ac the poll test
+ # never succeeded on Windows and used some pre-defined
+ # values as a fallback. Keep using them to maintain
+ # ABI compatibility with autotools builds of glibs
+ # and with *any* glib-using code compiled against them,
+ # since these values end up in a public header glibconfig.h.
+ foreach d : poll_defines
+ glibconfig_conf.set(d[1], d[2])
+ endforeach
+endif
+
+# Internet address families
+# FIXME: what about Cygwin (G_WITH_CYGWIN)
+if host_system == 'windows'
+ inet_includes = '''
+ #include <winsock2.h>'''
+else
+ inet_includes = '''
+ #include <sys/types.h>
+ #include <sys/socket.h>'''
+endif
+
+inet_defines = [
+ [ 'AF_UNIX', 'g_af_unix' ],
+ [ 'AF_INET', 'g_af_inet' ],
+ [ 'AF_INET6', 'g_af_inet6' ],
+ [ 'MSG_OOB', 'g_msg_oob' ],
+ [ 'MSG_PEEK', 'g_msg_peek' ],
+ [ 'MSG_DONTROUTE', 'g_msg_dontroute' ],
+]
+foreach d : inet_defines
+ val = cc.compute_int(d[0], prefix: inet_includes)
+ glibconfig_conf.set(d[1], val)
+endforeach
+
+if host_system == 'windows'
+ have_ipv6 = true
+else
+ have_ipv6 = cc.has_type('struct in6_addr', prefix: '#include <netinet/in.h>')
+endif
+glib_conf.set('HAVE_IPV6', have_ipv6)
+
+# We need to decide at configure time if GLib will use real atomic
+# operations ("lock free") or emulated ones with a mutex. This is
+# because we must put this information in glibconfig.h so we know if
+# it is safe or not to inline using compiler intrinsics directly from
+# the header.
+#
+# We also publish the information via G_ATOMIC_LOCK_FREE in case the
+# user is interested in knowing if they can use the atomic ops across
+# processes.
+#
+# We can currently support the atomic ops natively when building GLib
+# with recent versions of GCC or MSVC.
+#
+# Note that the atomic ops are only available with GCC on x86 when
+# using -march=i486 or higher. If we detect that the atomic ops are
+# not available but would be available given the right flags, we want
+# to abort and advise the user to fix their CFLAGS. It's better to do
+# that then to silently fall back on emulated atomic ops just because
+# the user had the wrong build environment.
+atomictest = '''int main() {
+ int atomic = 2;
+ __sync_bool_compare_and_swap (&atomic, 2, 3);
+ return 0;
+}
+'''
+
+atomicdefine = '''
+#ifndef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
+#error "compiler has atomic ops, but doesn't define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4"
+#endif
+'''
+
+# We know that we can always use real ("lock free") atomic operations with MSVC
+if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl' or cc.links(atomictest, name : 'atomic ops')
+ have_atomic_lock_free = true
+ if cc.get_id() == 'gcc' and not cc.compiles(atomicdefine, name : 'atomic ops define')
+ # Old gcc release may provide
+ # __sync_bool_compare_and_swap but doesn't define
+ # __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
+ glib_conf.set('__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4', true)
+ endif
+
+ if cc.get_id() == 'gcc' or cc.get_id() == 'clang'
+ sync_swap_test = '''
+ int main() {
+ int atomic = 2;
+ __sync_swap (&atomic, 2);
+ return 0;
+ }
+ '''
+
+ glib_conf.set('_GLIB_GCC_HAVE_SYNC_SWAP', cc.links(sync_swap_test, name : 'sync swap'))
+ endif
+else
+ have_atomic_lock_free = false
+ if host_machine.cpu_family() == 'x86' and cc.links(atomictest, args : '-march=i486')
+ error('GLib must be built with -march=i486 or later.')
+ endif
+endif
+glibconfig_conf.set('G_ATOMIC_LOCK_FREE', have_atomic_lock_free)
+
+# === Threads ===
+
+if get_option('force_posix_threads')
+ warning('DEPRECATION: Option \'force_posix_threads\' is deprecated and will be removed after GLib 2.72; please file an issue with your use case if you still require it')
+endif
+
+# Determination of thread implementation
+if host_system == 'windows' and not get_option('force_posix_threads')
+ thread_dep = []
+ threads_implementation = 'win32'
+ glibconfig_conf.set('g_threads_impl_def', 'WIN32')
+ glib_conf.set('THREADS_WIN32', 1)
+else
+ thread_dep = dependency('threads')
+ threads_implementation = 'posix'
+ pthread_prefix = '''
+ #ifndef _GNU_SOURCE
+ # define _GNU_SOURCE
+ #endif
+ #include <pthread.h>'''
+ glibconfig_conf.set('g_threads_impl_def', 'POSIX')
+ glib_conf.set('THREADS_POSIX', 1)
+ if cc.has_header_symbol('pthread.h', 'pthread_attr_setstacksize')
+ glib_conf.set('HAVE_PTHREAD_ATTR_SETSTACKSIZE', 1)
+ endif
+ if cc.has_header_symbol('pthread.h', 'pthread_attr_setinheritsched')
+ glib_conf.set('HAVE_PTHREAD_ATTR_SETINHERITSCHED', 1)
+ endif
+ if cc.has_header_symbol('pthread.h', 'pthread_condattr_setclock')
+ glib_conf.set('HAVE_PTHREAD_CONDATTR_SETCLOCK', 1)
+ endif
+ if cc.has_header_symbol('pthread.h', 'pthread_cond_timedwait_relative_np')
+ glib_conf.set('HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP', 1)
+ endif
+ if cc.has_header_symbol('pthread.h', 'pthread_getname_np', prefix : pthread_prefix)
+ glib_conf.set('HAVE_PTHREAD_GETNAME_NP', 1)
+ endif
+
+ # Assume that pthread_setname_np is available in some form; same as configure
+ if cc.links(pthread_prefix + '''
+ int main() {
+ pthread_setname_np("example");
+ return 0;
+ }''',
+ name : 'pthread_setname_np(const char*)',
+ dependencies : thread_dep)
+ # macOS and iOS
+ glib_conf.set('HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID', 1)
+ elif cc.links(pthread_prefix + '''
+ int main() {
+ pthread_setname_np(pthread_self(), "example");
+ return 0;
+ }''',
+ name : 'pthread_setname_np(pthread_t, const char*)',
+ dependencies : thread_dep)
+ # Linux, Solaris, etc.
+ glib_conf.set('HAVE_PTHREAD_SETNAME_NP_WITH_TID', 1)
+ elif cc.links(pthread_prefix + '''
+ int main() {
+ pthread_setname_np(pthread_self(), "%s", "example");
+ return 0;
+ }''',
+ name : 'pthread_setname_np(pthread_t, const char*, void*)',
+ dependencies : thread_dep)
+ # NetBSD
+ glib_conf.set('HAVE_PTHREAD_SETNAME_NP_WITH_TID_AND_ARG', 1)
+ elif cc.links(pthread_prefix + '''
+ #include <pthread_np.h>
+ int main() {
+ pthread_set_name_np(pthread_self(), "example");
+ return 0;
+ }''',
+ name : 'pthread_set_name_np(pthread_t, const char*)',
+ dependencies : thread_dep)
+ # FreeBSD, DragonFlyBSD, OpenBSD, etc.
+ glib_conf.set('HAVE_PTHREAD_SET_NAME_NP', 1)
+ endif
+endif
+
+# FIXME: we should make it print the result and always return 0, so that
+# the output in meson shows up as green
+# volatile is needed here to avoid optimisations in the test
+stack_grows_check_prog = '''
+ volatile int *a = 0, *b = 0;
+ void f (int i) {
+ volatile int x = 5;
+ if (i == 0)
+ b = &x;
+ else
+ f (i - 1);
+ }
+ int main () {
+ volatile int y = 7;
+ a = &y;
+ f (100);
+ return b > a ? 0 : 1;
+ }'''
+
+if cc_can_run
+ rres = cc.run(stack_grows_check_prog, name : 'stack grows check')
+ growing_stack = rres.compiled() and rres.returncode() == 0
+else
+ growing_stack = meson.get_external_property('growing_stack', false)
+endif
+
+glibconfig_conf.set10('G_HAVE_GROWING_STACK', growing_stack)
+
+# Tests for iconv
+#
+# We should never use the MinGW C library's iconv because it may not be
+# available in the actual runtime environment. On Windows, we always use
+# the built-in implementation
+if host_system == 'windows'
+ # We have a #include "win_iconv.c" in gconvert.c on Windows, so we don't need
+ # any external library for it
+ libiconv = []
+else
+ libiconv = dependency('iconv')
+endif
+
+pcre2_req = '>=10.32'
+pcre2 = dependency('libpcre2-8', version: pcre2_req, required: false, allow_fallback: false)
+if not pcre2.found()
+ if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl'
+ # MSVC: Search for the PCRE2 library by the configuration, which corresponds
+ # to the output of CMake builds of PCRE2. Note that debugoptimized
+ # is really a Release build with .PDB files.
+ if vs_crt == 'debug'
+ pcre2 = cc.find_library('pcre2d-8', required : false)
+ else
+ pcre2 = cc.find_library('pcre2-8', required : false)
+ endif
+ endif
+endif
+
+# Try again with the fallback
+if not pcre2.found()
+ pcre2 = dependency('libpcre2-8', version: pcre2_req, allow_fallback: true)
+ assert(pcre2.type_name() == 'internal')
+ # static flags are automatically enabled by the subproject if it's built
+ # with default_library=static
+ use_pcre2_static_flag = false
+elif host_system == 'windows'
+ pcre2_static = cc.links('''#define PCRE2_STATIC
+ #define PCRE2_CODE_UNIT_WIDTH 8
+ #include <pcre2.h>
+ int main() {
+ void *p = NULL;
+ pcre2_code_free(p);
+ return 0;
+ }''',
+ dependencies: pcre2,
+ name : 'Windows system PCRE2 is a static build')
+ use_pcre2_static_flag = pcre2_static
+else
+ use_pcre2_static_flag = false
+endif
+
+# Import the gvdb sources as a subproject to avoid having the copylib in-tree
+subproject('gvdb')
+gvdb_dep = dependency('gvdb')
+
+libm = cc.find_library('m', required : false)
+libffi_dep = dependency('libffi', version : '>= 3.0.0')
+
+libz_dep = dependency('zlib')
+
+# First check in libc, fallback to libintl, and as last chance build
+# proxy-libintl subproject.
+# FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible
+# implementations. This could be extended if issues are found in some platforms.
+libintl_deps = []
+libintl = dependency('intl', required: false, allow_fallback: false)
+if libintl.found()
+ # libintl supports different threading APIs, which may not
+ # require additional flags, but it defaults to using pthreads if
+ # found. Meson's "threads" dependency does not allow you to
+ # prefer pthreads. We may not be using pthreads for glib itself
+ # either so just link the library to satisfy libintl rather than
+ # also defining the macros with the -pthread flag.
+ #
+ # Meson's builtin dependency lookup as of 0.60.0 doesn't check for
+ # pthread, so we do this manually here.
+ if cc.has_function('ngettext', dependencies : libintl)
+ libintl_deps += [libintl]
+ else
+ libintl_pthread = cc.find_library('pthread', required : false)
+ if libintl_pthread.found() and cc.has_function('ngettext', dependencies : [libintl, libintl_pthread])
+ libintl_deps += [libintl, libintl_pthread]
+ else
+ libintl = disabler()
+ endif
+ endif
+endif
+
+if libintl.found()
+ have_bind_textdomain_codeset = cc.has_function('bind_textdomain_codeset', dependencies: libintl_deps)
+else
+ libintl = dependency('intl', allow_fallback: true)
+ assert(libintl.type_name() == 'internal')
+ libintl_deps = [libintl]
+ have_bind_textdomain_codeset = true # proxy-libintl supports it
+endif
+
+glib_conf.set('HAVE_BIND_TEXTDOMAIN_CODESET', have_bind_textdomain_codeset)
+
+# We require gettext to always be present
+glib_conf.set('HAVE_DCGETTEXT', 1)
+glib_conf.set('HAVE_GETTEXT', 1)
+
+glib_conf.set_quoted('GLIB_LOCALE_DIR', join_paths(glib_datadir, 'locale'))
+
+glib_conf.set_quoted('GLIB_LOCALSTATEDIR', glib_localstatedir)
+glib_conf.set_quoted('GLIB_RUNSTATEDIR', glib_runstatedir)
+
+# libmount is only used by gio, but we need to fetch the libs to generate the
+# pkg-config file below
+libmount_dep = []
+if host_system == 'linux'
+ libmount_dep = dependency('mount', version : '>=2.23', required : get_option('libmount'))
+ glib_conf.set('HAVE_LIBMOUNT', libmount_dep.found())
+endif
+
+if host_system == 'windows'
+ winsock2 = cc.find_library('ws2_32')
+else
+ winsock2 = not_found
+endif
+
+selinux_dep = []
+if host_system == 'linux'
+ selinux_dep = dependency('libselinux', version: '>=2.2', required: get_option('selinux'))
+
+ glib_conf.set('HAVE_SELINUX', selinux_dep.found())
+endif
+
+xattr_dep = []
+if host_system != 'windows' and get_option('xattr')
+ # either glibc or libattr can provide xattr support
+ # for both of them, we check for getxattr being in
+ # the library and a valid xattr header.
+
+ # try glibc
+ if cc.has_function('getxattr') and cc.has_header('sys/xattr.h')
+ glib_conf.set('HAVE_SYS_XATTR_H', 1)
+ glib_conf_prefix = glib_conf_prefix + '#define @0@ 1\n'.format('HAVE_SYS_XATTR_H')
+ #failure. try libattr
+ elif cc.has_header_symbol('attr/xattr.h', 'getxattr')
+ glib_conf.set('HAVE_ATTR_XATTR_H', 1)
+ glib_conf_prefix = glib_conf_prefix + '#define @0@ 1\n'.format('HAVE_ATTR_XATTR_H')
+ xattr_dep = [cc.find_library('xattr')]
+ else
+ error('No getxattr implementation found in C library or libxattr')
+ endif
+
+ glib_conf.set('HAVE_XATTR', 1)
+ if cc.compiles(glib_conf_prefix + '''
+ #include <stdio.h>
+ #ifdef HAVE_SYS_TYPES_H
+ #include <sys/types.h>
+ #endif
+ #ifdef HAVE_SYS_XATTR_H
+ #include <sys/xattr.h>
+ #elif HAVE_ATTR_XATTR_H
+ #include <attr/xattr.h>
+ #endif
+
+ int main (void) {
+ ssize_t len = getxattr("", "", NULL, 0, 0, XATTR_NOFOLLOW);
+ return len;
+ }''',
+ name : 'XATTR_NOFOLLOW')
+ glib_conf.set('HAVE_XATTR_NOFOLLOW', 1)
+ endif
+endif
+
+# If strlcpy is present (BSD and similar), check that it conforms to the BSD
+# specification. Specifically Solaris 8's strlcpy() does not, see
+# https://bugzilla.gnome.org/show_bug.cgi?id=53933 for further context.
+if cc.has_function('strlcpy')
+ if cc_can_run
+ rres = cc.run('''#include <stdlib.h>
+ #include <string.h>
+ int main() {
+ char p[10];
+ (void) strlcpy (p, "hi", 10);
+ if (strlcat (p, "bye", 0) != 3)
+ return 1;
+ return 0;
+ }''',
+ name : 'OpenBSD strlcpy/strlcat')
+ if rres.compiled() and rres.returncode() == 0
+ glib_conf.set('HAVE_STRLCPY', 1)
+ endif
+ elif meson.get_external_property('have_strlcpy', false)
+ glib_conf.set('HAVE_STRLCPY', 1)
+ endif
+endif
+
+cmdline_test_code = '''
+#include <fcntl.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+static int
+__getcmdline (void)
+{
+/* This code is a dumbed-down version of g_file_get_contents() */
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+#define BUFSIZE 1024
+ char result[BUFSIZE];
+ struct stat stat_buf;
+
+ int fd = open ("/proc/self/cmdline", O_RDONLY|O_BINARY);
+ if (fd < 0)
+ exit (1);
+ if (fstat (fd, &stat_buf))
+ exit (1);
+
+ if (stat_buf.st_size > 0 && S_ISREG (stat_buf.st_mode))
+ {
+ if (read (fd, result, BUFSIZE) <= 0)
+ exit (1);
+ }
+ else
+ {
+ FILE *f = fdopen (fd, "r");
+ if (f == NULL)
+ exit (1);
+
+ if (fread (result, 1, BUFSIZE, f) <= 0)
+ exit (1);
+ }
+
+ return 0;
+}
+
+int
+main (void)
+{
+ exit (__getcmdline ());
+}'''
+
+if cc_can_run
+ rres = cc.run(cmdline_test_code, name : '/proc/self/cmdline')
+ have_proc_self_cmdline = rres.compiled() and rres.returncode() == 0
+else
+ have_proc_self_cmdline = meson.get_external_property('have_proc_self_cmdline', false)
+endif
+
+glib_conf.set('HAVE_PROC_SELF_CMDLINE', have_proc_self_cmdline)
+
+python = import('python').find_installation()
+# used for '#!/usr/bin/env <name>'
+python_name = 'python3'
+
+python_version = python.language_version()
+python_version_req = '>=3.5'
+if not python_version.version_compare(python_version_req)
+ error('Requires Python @0@, @1@ found.'.format(python_version_req, python_version))
+endif
+
+# Determine which user environment-dependent files that we want to install
+have_bash = find_program('bash', required : false).found() # For completion scripts
+bash_comp_dep = dependency('bash-completion', version: '>=2.0', required: false)
+have_sh = find_program('sh', required : false).found() # For glib-gettextize
+
+# Some installed tests require a custom environment
+env_program = find_program('env', required: installed_tests_enabled)
+
+# FIXME: How to detect Solaris? https://github.com/mesonbuild/meson/issues/1578
+if host_system == 'sunos'
+ glib_conf.set('_XOPEN_SOURCE_EXTENDED', 1)
+ glib_conf.set('_XOPEN_SOURCE', 2)
+ glib_conf.set('__EXTENSIONS__',1)
+endif
+
+# Sadly Meson does not expose this value:
+# https://github.com/mesonbuild/meson/pull/3460
+if host_system == 'windows'
+ # Autotools explicitly removed --Wl,--export-all-symbols from windows builds,
+ # with no explanation. Do the same here for now but this could be revisited if
+ # if causes issues.
+ export_dynamic_ldflags = []
+elif host_system == 'cygwin'
+ export_dynamic_ldflags = ['-Wl,--export-all-symbols']
+elif host_system in ['darwin', 'ios']
+ export_dynamic_ldflags = []
+elif host_system == 'sunos'
+ export_dynamic_ldflags = []
+else
+ export_dynamic_ldflags = ['-Wl,--export-dynamic']
+endif
+
+win32_cflags = []
+win32_ldflags = []
+if host_system == 'windows' and cc.get_id() != 'msvc' and cc.get_id() != 'clang-cl'
+ # Ensure MSVC-compatible struct packing convention is used when
+ # compiling for Win32 with gcc. It is used for the whole project and exposed
+ # in glib-2.0.pc.
+ win32_cflags = ['-mms-bitfields']
+ add_project_arguments(win32_cflags, language : 'c')
+
+ # Win32 API libs, used only by libglib and exposed in glib-2.0.pc
+ win32_ldflags = ['-lws2_32', '-lole32', '-lwinmm', '-lshlwapi', '-luuid']
+elif host_system == 'cygwin'
+ win32_ldflags = ['-luser32', '-lkernel32']
+endif
+
+# Tracing: dtrace
+want_dtrace = get_option('dtrace')
+enable_dtrace = false
+
+# Since dtrace support is opt-in we just error out if it was requested but
+# is not available. We don't bother with autodetection yet.
+if want_dtrace
+ if glib_have_carbon
+ error('GLib dtrace support not yet compatible with macOS dtrace')
+ endif
+ dtrace = find_program('dtrace', required : true) # error out if not found
+ if not cc.has_header('sys/sdt.h')
+ error('dtrace support needs sys/sdt.h header')
+ endif
+ # FIXME: autotools build also passes -fPIC -DPIC but is it needed in this case?
+ dtrace_obj_gen = generator(dtrace,
+ output : '@BASENAME@.o',
+ arguments : ['-G', '-s', '@INPUT@', '-o', '@OUTPUT@'])
+ dtrace_hdr_gen = generator(python,
+ output : '@BASENAME@.h',
+ arguments : ['-c', '''
+import subprocess, sys
+subprocess.run(sys.argv[1:], check=True)
+output = sys.argv[6]
+with open(output) as f:
+ contents = f.read()
+contents = contents.replace("define STAP_HAS_SEMAPHORES 1",
+ "undef STAP_HAS_SEMAPHORES")
+contents = contents.replace("define _SDT_HAS_SEMAPHORES 1",
+ "undef _SDT_HAS_SEMAPHORES")
+with open(output, "w") as f:
+ f.write(contents)
+''', dtrace.full_path(), '-h', '-s', '@INPUT@', '-o', '@OUTPUT@'])
+ glib_conf.set('HAVE_DTRACE', 1)
+ enable_dtrace = true
+endif
+
+# systemtap
+want_systemtap = get_option('systemtap')
+enable_systemtap = false
+
+if want_systemtap and enable_dtrace
+ tapset_install_dir = get_option('tapset_install_dir')
+ if tapset_install_dir == ''
+ tapset_install_dir = join_paths(get_option('datadir'), 'systemtap/tapset', host_machine.cpu_family())
+ endif
+ stp_cdata = configuration_data()
+ stp_cdata.set('ABS_GLIB_RUNTIME_LIBDIR', glib_libdir)
+ stp_cdata.set('LT_CURRENT', minor_version * 100)
+ stp_cdata.set('LT_REVISION', micro_version)
+ enable_systemtap = true
+endif
+
+pkg = import('pkgconfig')
+windows = import('windows')
+subdir('tools')
+subdir('glib')
+subdir('gobject')
+subdir('gthread')
+subdir('gmodule')
+subdir('gio')
+subdir('fuzzing')
+
+# xgettext is optional (on Windows for instance)
+if find_program('xgettext', required : get_option('nls')).found()
+ subdir('po')
+endif
+
+# Install m4 macros that other projects use
+install_data('m4macros/glib-2.0.m4', 'm4macros/glib-gettext.m4', 'm4macros/gsettings.m4',
+ install_dir : get_option('datadir') / 'aclocal',
+ install_tag : 'devel',
+)
+
+# Check whether we support overriding the invalid parameter handler on Windows for _get_osfhandle(),
+# g_fsync() (i.e. _commit()), etc
+if host_system == 'windows'
+ if cc.has_function('_set_thread_local_invalid_parameter_handler', prefix: '#include <stdlib.h>')
+ glib_conf.set('HAVE__SET_THREAD_LOCAL_INVALID_PARAMETER_HANDLER', 1)
+ endif
+ if cc.has_function('_set_invalid_parameter_handler', prefix: '#include <stdlib.h>')
+ glib_conf.set('HAVE__SET_INVALID_PARAMETER_HANDLER', 1)
+ endif
+ if cc.has_header_symbol('crtdbg.h', '_CrtSetReportMode')
+ glib_conf.set('HAVE__CRT_SET_REPORT_MODE', 1)
+ endif
+endif
+
+configure_file(output : 'config.h', configuration : glib_conf)
+
+if host_system == 'windows'
+ install_headers([ 'msvc_recommended_pragmas.h' ], install_dir : glib_includedir)
+endif
+
+if get_option('man')
+ xsltproc = find_program('xsltproc', required : true)
+ xsltproc_command = [
+ xsltproc,
+ '--nonet',
+ '--stringparam', 'man.output.quietly', '1',
+ '--stringparam', 'funcsynopsis.style', 'ansi',
+ '--stringparam', 'man.th.extra1.suppress', '1',
+ '--stringparam', 'man.authors.section.enabled', '0',
+ '--stringparam', 'man.copyright.section.enabled', '0',
+ '-o', '@OUTPUT@',
+ 'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl',
+ '@INPUT@',
+ ]
+ man1_dir = join_paths(glib_prefix, get_option('mandir'), 'man1')
+endif
+
+gnome = import('gnome')
+subdir('docs/reference')
+
+summary({
+ 'host cpu' : host_machine.cpu_family(),
+ 'host endian' : host_machine.endian(),
+ 'host system' : host_system,
+ 'C Compiler' : cc.get_id(),
+ 'C++ Compiler' : have_cxx ? cxx.get_id() : 'none',
+ 'shared build' : glib_build_shared,
+ 'static build' : glib_build_static,
+}, section: 'Build environment')
+
+if build_machine.system() != host_system
+ summary({
+ 'build cpu' : build_machine.cpu_family(),
+ 'build endian' : build_machine.endian(),
+ 'build system' : build_machine.system(),
+ }, section: 'Build environment')
+endif
+
+summary({
+ 'prefix' : glib_prefix,
+ 'bindir' : glib_bindir,
+ 'libexecdir' : glib_libexecdir,
+ 'pkgdatadir' : glib_pkgdatadir,
+ 'datadir' : glib_datadir,
+ 'includedir' : glib_includedir,
+ 'giomodulesdir' : glib_giomodulesdir,
+ 'localstatedir' : glib_localstatedir,
+ 'runstatedir' : glib_runstatedir,
+}, section: 'Directories')
+
+if get_option('multiarch')
+ summary({
+ 'multiarch bindir' : glib_bindir,
+ 'multiarch libexecdir' : glib_libexecdir,
+ }, section: 'Directories')
+endif
+
+if enable_systemtap
+ summary('tapset dir', get_option('tapset_install_dir'), section: 'Directories')
+endif
+
+if host_system == 'linux'
+ summary({
+ 'selinux' : selinux_dep.found(),
+ 'libmount' : libmount_dep.found(),
+ }, section: 'Options')
+endif
+
+summary({
+ 'xattr' : xattr_dep.length() > 0,
+ 'man' : get_option('man'),
+ 'dtrace' : get_option('dtrace'),
+ 'systemtap' : enable_systemtap,
+ 'sysprof' : libsysprof_capture_dep.found(),
+ 'gtk_doc' : get_option('gtk_doc'),
+ 'bsymbolic_functions' : get_option('bsymbolic_functions'),
+ 'force_posix_threads' : get_option('force_posix_threads'),
+ 'tests' : get_option('tests'),
+ 'installed_tests' : get_option('installed_tests'),
+ 'nls' : get_option('nls'),
+ 'oss_fuzz' : get_option('oss_fuzz'),
+ 'glib_debug' : get_option('glib_debug'),
+ 'glib_assert' : get_option('glib_assert'),
+ 'glib_checks' : get_option('glib_checks'),
+ 'libelf' : get_option('libelf'),
+ 'multiarch' : get_option('multiarch'),
+}, section: 'Options')
Index: create-2.76.0-force-cross-patch/glib-2.76.0-new
===================================================================
--- create-2.76.0-force-cross-patch/glib-2.76.0-new (nonexistent)
+++ create-2.76.0-force-cross-patch/glib-2.76.0-new (revision 5)
Property changes on: create-2.76.0-force-cross-patch/glib-2.76.0-new
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: create-2.76.0-force-cross-patch
===================================================================
--- create-2.76.0-force-cross-patch (nonexistent)
+++ create-2.76.0-force-cross-patch (revision 5)
Property changes on: create-2.76.0-force-cross-patch
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: patches/README
===================================================================
--- patches/README (nonexistent)
+++ patches/README (revision 5)
@@ -0,0 +1,6 @@
+
+/* begin *
+
+ TODO: Leave some comment here.
+
+ * end */
Index: patches
===================================================================
--- patches (nonexistent)
+++ patches (revision 5)
Property changes on: patches
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~
Index: .
===================================================================
--- . (nonexistent)
+++ . (revision 5)
Property changes on: .
___________________________________________________________________
Added: svn:ignore
## -0,0 +1,73 ##
+
+# install dir
+dist
+
+# Target build dirs
+.a1x-newlib
+.a2x-newlib
+.at91sam7s-newlib
+
+.build-machine
+
+.a1x-glibc
+.a2x-glibc
+.h3-glibc
+.h5-glibc
+.i586-glibc
+.i686-glibc
+.imx6-glibc
+.jz47xx-glibc
+.makefile
+.am335x-glibc
+.omap543x-glibc
+.p5600-glibc
+.power8-glibc
+.power8le-glibc
+.power9-glibc
+.power9le-glibc
+.m1000-glibc
+.riscv64-glibc
+.rk328x-glibc
+.rk33xx-glibc
+.rk339x-glibc
+.s8xx-glibc
+.s9xx-glibc
+.x86_64-glibc
+
+# Hidden files (each file)
+.makefile
+.dist
+.rootfs
+
+# src & hw requires
+.src_requires
+.src_requires_depend
+.requires
+.requires_depend
+
+# Tarballs
+*.gz
+*.bz2
+*.lz
+*.xz
+*.tgz
+*.txz
+
+# Signatures
+*.asc
+*.sig
+*.sign
+*.sha1sum
+
+# Patches
+*.patch
+
+# Descriptions
+*.dsc
+*.txt
+
+# Default linux config files
+*.defconfig
+
+# backup copies
+*~