mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-09-20 01:06:15 +02:00
539 lines
15 KiB
Meson
539 lines
15 KiB
Meson
project('glib', 'c')
|
|
|
|
cc = meson.get_compiler('c')
|
|
|
|
major_version = 3
|
|
minor_version = 36
|
|
micro_version = 3
|
|
interface_version = 3
|
|
|
|
glib_version = '3.36.3'
|
|
inc_dirs = include_directories('.', 'glib', 'gmodule')
|
|
|
|
glib_conf = configuration_data()
|
|
glibconfig_conf = configuration_data()
|
|
|
|
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', micro_version)
|
|
glib_conf.set('GLIB_BINARY_AGE', 363)
|
|
glib_conf.set('GETTEXT_PACKAGE', '"glib20"')
|
|
glib_conf.set('ENABLE_NLS', 1)
|
|
glib_conf.set('HAVE_VASPRINTF', 1)
|
|
glib_conf.set('HAVE_VPRINTF', 1)
|
|
glib_conf.set('HAVE_GOOD_PRINTF', 1)
|
|
|
|
if run_command('xgettext', '--help').returncode() != 0
|
|
error('GNU Gettext required currently.')
|
|
endif
|
|
glib_conf.set('HAVE_GETTEXT', 1)
|
|
glib_conf.set('GLIB_LOCALE_DIR', '"share/locale"')
|
|
|
|
if cc.has_header('locale.h')
|
|
glib_conf.set('HAVE_LOCALE_H', 1)
|
|
lc_msg_test = '''#include<locale.h>
|
|
void foo() { LC_MESSAGES; }
|
|
'''
|
|
if cc.compiles(lc_msg_test)
|
|
glib_conf.set('HAVE_LC_MESSAGES', 1)
|
|
endif
|
|
endif
|
|
if cc.has_header('xlocale.h')
|
|
glib_conf.set('HAVE_XLOCALE_H', 1)
|
|
endif
|
|
|
|
if host.name() == 'windows'
|
|
glib_os = '''#define G_OS_WIN32
|
|
#define G_PLATFORM_WIN32'''
|
|
else
|
|
glib_os = '#define G_OS_UNIX'
|
|
endif
|
|
glibconfig_conf.set('glib_os', glib_os)
|
|
|
|
glib_conf.set('HAVE_STDIO_H', 1)
|
|
glib_conf.set('HAVE_STDDEF_H', 1)
|
|
if cc.has_header('dirent.h')
|
|
glib_conf.set('HAVE_DIRENT_H', 1)
|
|
endif
|
|
if cc.has_header('float.h')
|
|
glib_conf.set('HAVE_FLOAT_H', 1)
|
|
endif
|
|
if cc.has_header('limits.h')
|
|
glib_conf.set('HAVE_LIMITS_H', 1)
|
|
endif
|
|
if cc.has_header('pwd.h')
|
|
glib_conf.set('HAVE_PWD_H', 1)
|
|
endif
|
|
if cc.has_header('grp.h')
|
|
glib_conf.set('HAVE_GRP_H', 1)
|
|
endif
|
|
if cc.has_header('sys/param.h')
|
|
glib_conf.set('HAVE_SYS_PARAM_H', 1)
|
|
sysparam_include = '#include<sys/param.h>'
|
|
else
|
|
sysparam_include = ''
|
|
endif
|
|
if cc.has_header('poll.h')
|
|
glib_conf.set('HAVE_POLL_H', 1)
|
|
endif
|
|
if cc.has_header('sys/resource.h')
|
|
glib_conf.set('HAVE_SYS_RESOURCE_H', 1)
|
|
endif
|
|
|
|
if cc.has_header('sys/time.h')
|
|
glib_conf.set('HAVE_SYS_TIME_H', 1)
|
|
endif
|
|
if cc.has_header('sys/times.h')
|
|
glib_conf.set('HAVE_SYS_TIMES_H', 1)
|
|
endif
|
|
if cc.has_header('sys/wait.h')
|
|
glib_conf.set('HAVE_SYS_WAIT_H', 1)
|
|
endif
|
|
if cc.has_header('unistd.h')
|
|
glib_conf.set('HAVE_UNISTD_H', 1)
|
|
endif
|
|
if cc.has_header('values.h')
|
|
glib_conf.set('HAVE_VALUES_H', 1)
|
|
endif
|
|
|
|
|
|
if cc.has_header('sys/select.h')
|
|
glib_conf.set('HAVE_SYS_SELECT_H', 1)
|
|
endif
|
|
if cc.has_header('sys/types.h')
|
|
glib_conf.set('HAVE_SYS_TYPES_H', 1)
|
|
endif
|
|
if cc.has_header('stdint.h')
|
|
glib_conf.set('HAVE_STDINT_H', 1)
|
|
endif
|
|
if cc.has_header('inttypes.h')
|
|
glib_conf.set('HAVE_INTTYPES_H', 1)
|
|
endif
|
|
if cc.has_header('sched.h')
|
|
glib_conf.set('HAVE_SCHED_H', 1)
|
|
endif
|
|
if cc.has_header('malloc.h')
|
|
glib_conf.set('HAVE_MALLOC_H', 1)
|
|
endif
|
|
|
|
if cc.has_header('sys/vfs.h')
|
|
glib_conf.set('HAVE_SYS_VFS_H', 1)
|
|
endif
|
|
if cc.has_header('sys/vmount.h')
|
|
glib_conf.set('HAVE_SYS_VMOUNT_H', 1)
|
|
endif
|
|
if cc.has_header('sys/statvfs.h')
|
|
glib_conf.set('HAVE_SYS_STATVFS_H', 1)
|
|
endif
|
|
if cc.has_header('sys/filio.h')
|
|
glib_conf.set('HAVE_SYS_FILIO_H', 1)
|
|
endif
|
|
|
|
if cc.has_header('mntent.h')
|
|
glib_conf.set('HAVE_MNTENT_H', 1)
|
|
endif
|
|
if cc.has_header('sys/mnttab.h')
|
|
glib_conf.set('HAVE_SYS_MNTTAB_H', 1)
|
|
endif
|
|
if cc.has_header('sys/vfstab.h')
|
|
glib_conf.set('HAVE_SYS_VFSTAB_H', 1)
|
|
endif
|
|
if cc.has_header('sys/mntctl.h')
|
|
glib_conf.set('HAVE_SYS_mntctl_H', 1)
|
|
endif
|
|
if cc.has_header('fstab.h')
|
|
glib_conf.set('HAVE_FSTAB_H', 1)
|
|
endif
|
|
|
|
if cc.has_header('sys/uio.h')
|
|
glib_conf.set('HAVE_SYS_UIO_H', 1)
|
|
endif
|
|
if cc.has_header('sys/mkdev.h')
|
|
glib_conf.set('HAVE_SYS_MKDEV_H', 1)
|
|
endif
|
|
|
|
if cc.has_header('linux/magic.h')
|
|
glib_conf.set('HAVE_LINUX_MAGIC_H', 1)
|
|
endif
|
|
|
|
if cc.has_header('sys/prctl.h')
|
|
glib_conf.set('HAVE_SYS_PRCTL_H', 1)
|
|
endif
|
|
|
|
if cc.has_header('sys/mount.h', prefix : sysparam_include)
|
|
glib_conf.set('HAVE_SYS_MOUNT_H', 1)
|
|
endif
|
|
if cc.has_header('sys/sysctl.h', prefix : sysparam_include)
|
|
glib_conf.set('HAVE_SYS_SYSCTL_H', 1)
|
|
endif
|
|
|
|
if cc.has_header('xlocale.h')
|
|
glib_conf.set('HAVE_XLOCALE_H', 1)
|
|
endif
|
|
|
|
if cc.has_member('struct stat', 'st_mtimensec', prefix : '#include<sys/stat.h>')
|
|
glib_conf.set('HAVE_STRUCT_STAT_ST_MTIMENSEC', 1)
|
|
endif
|
|
|
|
if cc.has_member('struct stat', 'st_mtim.tv_nsec', prefix : '#include<sys/stat.h>')
|
|
glib_conf.set('HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC', 1)
|
|
endif
|
|
|
|
if cc.has_member('struct stat', 'st_atimensec', prefix : '#include<sys/stat.h>')
|
|
glib_conf.set('HAVE_STRUCT_STAT_ST_ATIMENSEC', 1)
|
|
endif
|
|
|
|
if cc.has_member('struct stat', 'st_atim.tv_nsec', prefix : '#include<sys/stat.h>')
|
|
glib_conf.set('HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC', 1)
|
|
endif
|
|
|
|
if cc.has_member('struct stat', 'st_ctimensec', prefix : '#include<sys/stat.h>')
|
|
glib_conf.set('HAVE_STRUCT_STAT_ST_CTIMENSEC', 1)
|
|
endif
|
|
|
|
if cc.has_member('struct stat', 'st_ctim.tv_nsec', prefix : '#include<sys/stat.h>')
|
|
glib_conf.set('HAVE_STRUCT_STAT_ST_CTIM_TV_NSEC', 1)
|
|
endif
|
|
|
|
if cc.has_member('struct stat', 'st_ctim.tv_nsec', prefix : '#include<sys/stat.h>')
|
|
glib_conf.set('HAVE_STRUCT_STAT_ST_CTIM_TV_NSEC', 1)
|
|
endif
|
|
|
|
# Fixme, build properly.
|
|
blkprefix = '''#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <unistd.h>
|
|
#include <sys/statfs.h>
|
|
#include <sys/param.h>
|
|
#include <sys/mount.h>
|
|
'''
|
|
|
|
if cc.has_member('struct stat', 'blksize', prefix : blkprefix)
|
|
glib_conf.set('HAVE_STRUCT_STAT_BLKSIZE', 1)
|
|
endif
|
|
if cc.has_member('struct stat', 'st_blocks', prefix : blkprefix)
|
|
glib_conf.set('HAVE_STRUCT_STAT_BLOCKS', 1)
|
|
endif
|
|
if cc.has_member('struct stat', 'f_fstypename', prefix : blkprefix)
|
|
glib_conf.set('HAVE_STRUCT_STAT_F_FSTYPENAME', 1)
|
|
endif
|
|
if cc.has_member('struct stat', 'f_bavail', prefix : blkprefix)
|
|
glib_conf.set('HAVE_STRUCT_STAT_F_BAVAIL', 1)
|
|
endif
|
|
|
|
if cc.has_header('string.h')
|
|
glib_conf.set('HAVE_STRING_H', 1)
|
|
endif
|
|
|
|
# Let's configuring love
|
|
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')
|
|
long_long_size = cc.sizeof('long long')
|
|
sizet_size = cc.sizeof('size_t')
|
|
|
|
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')
|
|
sizet_align = cc.alignment('size_t')
|
|
|
|
glib_conf.set('ALIGNOF_UNSIGNED_LONG', long_align)
|
|
|
|
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_VOID_P', voidp_size)
|
|
|
|
if long_size == 2
|
|
# configure.ac does not work if this is the case. So we don't either.
|
|
gint16 = 'long'
|
|
endif
|
|
if int_size == 2
|
|
gint16 = 'int'
|
|
gint16_modifier='""'
|
|
gint16_format='"i"'
|
|
guint16_format='"u"'
|
|
endif
|
|
if short_size == 2
|
|
gint16 = 'short'
|
|
gint16_modifier='"h"'
|
|
gint16_format='"hi"'
|
|
guint16_format='"hu"'
|
|
endif
|
|
glibconfig_conf.set('gint16', gint16)
|
|
glibconfig_conf.set('gint16_modifier', gint16_modifier)
|
|
glibconfig_conf.set('gint16_format', gint16_format)
|
|
glibconfig_conf.set('guint16_format', guint16_format)
|
|
|
|
if long_size == 4
|
|
gint32 = 'long'
|
|
gint32_modifier='"l"'
|
|
gint32_format='"li"'
|
|
guint32_format='"lu"'
|
|
guint32_align = long_align
|
|
endif
|
|
if int_size == 4
|
|
gint32 = 'int'
|
|
gint32_modifier='""'
|
|
gint32_format='"i"'
|
|
guint32_format='"u"'
|
|
guint32_align = int_align
|
|
endif
|
|
if short_size == 4
|
|
gint32 = 'short'
|
|
gint32_modifier='"h"'
|
|
gint32_format='"hi"'
|
|
guint32_format='"hu"'
|
|
guint32_align = short_align
|
|
endif
|
|
glibconfig_conf.set('gint32', gint32)
|
|
glibconfig_conf.set('gint32_modifier', gint32_modifier)
|
|
glibconfig_conf.set('gint32_format', gint32_format)
|
|
glibconfig_conf.set('guint32_format', guint32_format)
|
|
glib_conf.set('ALIGNOF_GUINT32', guint32_align)
|
|
|
|
if long_long_size == 8
|
|
# Currently broken.
|
|
gint64 = 'long long'
|
|
endif
|
|
if long_size == 8
|
|
gint64 = 'long'
|
|
gint64_modifier='"l"'
|
|
gint64_format='"li"'
|
|
guint64_format='"lu"'
|
|
glib_extension=''
|
|
gint64_constant='(val##L)'
|
|
guint64_constant='(val##UL)'
|
|
guint64_align = long_align
|
|
endif
|
|
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
|
|
endif
|
|
if short_size == 8
|
|
# Another one broken in configure.ac
|
|
gint64 = 'short'
|
|
endif
|
|
glibconfig_conf.set('gint64', gint64)
|
|
glibconfig_conf.set('gint64_modifier', gint64_modifier)
|
|
glibconfig_conf.set('gint64_format', gint64_format)
|
|
glibconfig_conf.set('guint64_format', guint64_format)
|
|
glibconfig_conf.set('gint64_constant', gint64_constant)
|
|
glibconfig_conf.set('guint64_constant', guint64_constant)
|
|
glib_conf.set('ALIGNOF_GUINT64', guint64_align)
|
|
|
|
# Horrible hack.
|
|
glibconfig_conf.set('gintbits', 32)
|
|
|
|
if host.name() == 'windows'
|
|
glibconfig_conf.set('g_pid_type', 'void*')
|
|
else
|
|
glibconfig_conf.set('g_pid_type', 'int')
|
|
endif
|
|
|
|
if sizet_size == short_size
|
|
glibconfig_conf.set('glib_size_type_define', 'short')
|
|
glibconfig_conf.set('gsize_modifier', '"h"')
|
|
glibconfig_conf.set('gsize_format', '"hu"')
|
|
glibconfig_conf.set('gssize_format', '"hi"')
|
|
glibconfig_conf.set('glib_msize_type', 'SHRT')
|
|
elif sizet_size == int_size
|
|
glibconfig_conf.set('glib_size_type_define', 'int')
|
|
glibconfig_conf.set('gsize_modifier', '""')
|
|
glibconfig_conf.set('gsize_format', '"u"')
|
|
glibconfig_conf.set('gssize_format', '"i"')
|
|
glibconfig_conf.set('glib_msize_type', 'INT')
|
|
elif sizet_size == long_size
|
|
glibconfig_conf.set('glib_size_type_define', 'long')
|
|
glibconfig_conf.set('gsize_modifier', '"l"')
|
|
glibconfig_conf.set('gsize_format', '"lu"')
|
|
glibconfig_conf.set('gssize_format', '"li"')
|
|
glibconfig_conf.set('glib_msize_type', 'LONG')
|
|
elif sizet_size == long_long_size
|
|
glibconfig_conf.set('glib_size_type_define', 'long long')
|
|
glibconfig_conf.set('gsize_modifier', '"I64"')
|
|
glibconfig_conf.set('gsize_format', '"I64u"')
|
|
glibconfig_conf.set('gssize_format', '"I64i"')
|
|
glibconfig_conf.set('glib_msize_type', 'INT64')
|
|
else
|
|
error('Could not determine size of size_t.')
|
|
endif
|
|
|
|
glibconfig_conf.set('glib_void_p', voidp_size)
|
|
glibconfig_conf.set('glib_long', long_size)
|
|
glibconfig_conf.set('glib_size_t', sizet_size)
|
|
if host.is_big_endian()
|
|
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
|
|
|
|
if cc.has_header('limits.h')
|
|
glibconfig_conf.set('INC_LIMITS_H', '#include<limits.h>')
|
|
glibconfig_conf.set('glib_ms', 'SHRT_MIN')
|
|
glibconfig_conf.set('glib_Ms', 'SHRT_MAX')
|
|
glibconfig_conf.set('glib_Mus', 'USHRT_MAX')
|
|
glibconfig_conf.set('glib_mi', 'INT_MIN')
|
|
glibconfig_conf.set('glib_Mi', 'INT_MAX')
|
|
glibconfig_conf.set('glib_Mui', 'UINT_MAX')
|
|
glibconfig_conf.set('glib_ml', 'LONG_MIN')
|
|
glibconfig_conf.set('glib_Ml', 'LONG_MAX')
|
|
glibconfig_conf.set('glib_Mul', 'ULONG_MAX')
|
|
endif
|
|
if cc.has_header('float.h')
|
|
glibconfig_conf.set('INC_FLOAT_H', '#include<float.h>')
|
|
glibconfig_conf.set('glib_mf', 'FLT_MIN')
|
|
glibconfig_conf.set('glib_Mf', 'FLT_MAX')
|
|
glibconfig_conf.set('glib_md', 'DBL_MIN')
|
|
glibconfig_conf.set('glib_Md', 'DBL_MAX')
|
|
endif
|
|
if cc.has_header('values.h')
|
|
glibconfig_conf.set('INC_VALUES_H', '#include<values.h>')
|
|
glibconfig_conf.set('glib_mf', 'MINFLOAT')
|
|
glibconfig_conf.set('glib_Mf', 'MAXFLOAT')
|
|
glibconfig_conf.set('glib_md', 'MINDOUBLE')
|
|
glibconfig_conf.set('glib_Md', 'MAXDOUBLE')
|
|
glibconfig_conf.set('glib_ms', 'MINSHORT')
|
|
glibconfig_conf.set('glib_Ms', 'MAXSHORT')
|
|
glibconfig_conf.set('glib_Mus', '(((gushort)G_MAXSHORT)*2+1)')
|
|
glibconfig_conf.set('glib_mi', 'MININT')
|
|
glibconfig_conf.set('glib_Mi', 'MAXINT')
|
|
glibconfig_conf.set('glib_Mui', '(((guint)G_MAXINT)*2+1)')
|
|
glibconfig_conf.set('glib_ml', 'MINLONG')
|
|
glibconfig_conf.set('glib_Ml', 'MAXLONG')
|
|
glibconfig_conf.set('glib_Mul', '(((gulong)G_MAXLONG)*2+1)')
|
|
endif
|
|
|
|
if cc.compiles('''#undef inline
|
|
inline int foo () { return 0; }
|
|
int main () { return foo (); }''')
|
|
glibconfig_conf.set('G_HAS_INLINE', 1)
|
|
else
|
|
glibconfig_conf.set('G_HAS_INLINE', 0)
|
|
endif
|
|
|
|
# I can't quite decipher what the multiple consecutive checks
|
|
# are trying to do. Use this, fix if it breaks.
|
|
glibconfig_conf.set('G_CAN_INLINE', '1')
|
|
|
|
vacopy_src = '''#include <stdarg.h>
|
|
#include <stdlib.h>
|
|
void f (int i, ...) {
|
|
va_list args1, args2;
|
|
va_start (args1, i);
|
|
va_copy (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;
|
|
}
|
|
'''
|
|
have_vacopy = cc.compiles(vacopy_src)
|
|
|
|
__vaacopy_src = '''#include <stdarg.h>
|
|
#include <stdlib.h>
|
|
void f (int i, ...) {
|
|
va_list args1, args2;
|
|
va_start (args1, i);
|
|
__va_copy (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;
|
|
}
|
|
'''
|
|
have___vaacopy = cc.compiles(__vaacopy_src)
|
|
|
|
if have_vacopy
|
|
glib_conf.set('G_VA_COPY', 'va_copy')
|
|
elif have___vacopy
|
|
glib_conf.set('G_VA_COPY', '__va_copy')
|
|
endif
|
|
|
|
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
|
|
|
|
if has_syspoll and has_systypes
|
|
templ = '''#include<sys/poll.h>
|
|
#include<sys/types.h>
|
|
#include<stdio.h>
|
|
int main(int argc, char **argv) {
|
|
printf("%d\n", (int)@0@);
|
|
return 0;
|
|
}'''
|
|
value_POLLIN = cc.run(templ.format('POLLIN')).stdout().strip()
|
|
value_POLLOUT = cc.run(templ.format('POLLOUT')).stdout().strip()
|
|
value_POLLPRI = cc.run(templ.format('POLLPRI')).stdout().strip()
|
|
value_POLLERR = cc.run(templ.format('POLLERR')).stdout().strip()
|
|
value_POLLHUP = cc.run(templ.format('POLLHUP')).stdout().strip()
|
|
value_POLLNVAL = cc.run(templ.format('POLLNVAL')).stdout().strip()
|
|
else
|
|
value_POLLIN = 1
|
|
value_POLLOUT = 4
|
|
value_POLLPRI = 2
|
|
value_POLLERR = 8
|
|
value_POLLHUP = 16
|
|
value_POLLNVAL = 32
|
|
endif
|
|
|
|
glibconfig_conf.set('g_pollin', value_POLLIN)
|
|
glibconfig_conf.set('g_pollout', value_POLLOUT)
|
|
glibconfig_conf.set('g_pollpri', value_POLLPRI)
|
|
glibconfig_conf.set('g_pollerr', value_POLLERR)
|
|
glibconfig_conf.set('g_pollhup', value_POLLHUP)
|
|
glibconfig_conf.set('g_pollnval', value_POLLNVAL)
|
|
|
|
glibconfig_conf.set('GLIB_USING_SYSTEM_PRINTF', true)
|
|
|
|
# Need to check $host for this one.
|
|
glibconfig_conf.set('glib_memory_barrier_needed', true)
|
|
atomictest = '''void func() {
|
|
volatile int atomic = 2;
|
|
__sync_bool_compare_and_swap (&atomic, 2, 3);
|
|
}
|
|
'''
|
|
if cc.compiles(atomictest)
|
|
glibconfig_conf.set('G_ATOMIC_LOCK_FREE', true)
|
|
else
|
|
glibconfig_conf.set('G_ATOMIC_LOCK_FREE', false)
|
|
endif
|
|
|
|
pcre = dependency('libpcre') # Should check for Unicode support, too.
|
|
thread_lib = find_library('pthread')
|
|
|
|
configure_file(input : 'config.h.meson', output : 'config.h', configuration : glib_conf)
|
|
|
|
subdir('glib')
|
|
#subdir('tests')
|