# general
ac_cv_func_calloc_0_nonnull=${ac_cv_func_calloc_0_nonnull=yes}
ac_cv_func_realloc_works=${ac_cv_func_realloc_works=yes}
ac_cv_func_realloc_0_nonnull=${ac_cv_func_realloc_0_nonnull=yes}
ac_cv_func_malloc_works=${ac_cv_func_malloc_works=yes}
ac_cv_func_malloc_0_nonnull=${ac_cv_func_malloc_0_nonnull=yes}
ac_cv_func_memcmp_working=${ac_cv_func_memcmp_working=yes}
ac_cv_func_getpgrp_void=yes
ac_cv_func_setpgrp_void=yes
ac_cv_func_setgrent_void=yes
ac_cv_func_getgrgid_r=${ac_cv_func_getgrgid_r=yes}
ac_cv_func_getpwuid_r=${ac_cv_func_getpwuid_r=yes}
ac_cv_func_posix_getpwuid_r=${ac_cv_func_posix_getpwuid_r=yes}
ac_cv_func_posix_getgrgid_r=${ac_cv_func_posix_getgrgid_r=yes}
ac_cv_func_getaddrinfo=${ac_cv_func_getaddrinfo=yes}
ac_cv_func_strtod=${ac_cv_func_strtod=yes}

# bash
bash_cv_getcwd_malloc=${bash_cv_getcwd_malloc=yes}

# clamav
clamav_av_func_working_snprintf_long=${clamav_av_func_working_snprintf_long=yes}
clamav_av_have_in_port_t=${clamav_av_have_in_port_t=yes}
clamav_av_have_in_addr_t=${clamav_av_have_in_addr_t=yes}
ac_cv_func_mmap_fixed_mapped=${ac_cv_func_mmap_fixed_mapped=yes}

# coreutils
fu_cv_sys_stat_statfs2_bsize=${fu_cv_sys_stat_statfs2_bsize=yes}
gl_cv_func_getcwd_abort_bug=${gl_cv_func_getcwd_abort_bug=no}
gl_cv_func_getcwd_null=${gl_cv_func_getcwd_null=yes}
gl_cv_func_getcwd_path_max=${gl_cv_func_getcwd_path_max=yes}
ac_cv_func_getgroups_works=${ac_cv_func_getgroups_works=yes}
gl_cv_func_nanosleep=${gl_cv_func_nanosleep='no (mishandles large arguments)'}
gl_cv_func_working_mkstemp=${gl_cv_func_working_mkstemp=yes}
gl_cv_func_working_mktime=${gl_cv_func_working_mktime=yes}
gl_cv_func_working_utimes=${gl_cv_func_working_utimes=yes}

#dbus-glib
ac_cv_have_abstract_sockets=${ac_cv_have_abstract_sockets=yes}

# gnucash
am_cv_scanf_lld=${am_cv_scanf_lld=yes}

# guile
ac_cv_func_pthread_attr_getstack=${ac_cv_func_pthread_attr_getstack=yes}

#gcc-zlib
ac_cv_func_getpagesize=${ac_cv_func_getpagesize=yes}
ac_cv_func_memcpy=${ac_cv_func_memcpy=yes}
ac_cv_func_strerror=${ac_cv_func_strerror=yes}

# squid
ac_cv_af_unix_large_dgram=${ac_cv_af_unix_large_dgram=yes}
ac_cv_func_setresuid=${ac_cv_func_setresuid=yes}
ac_cv_func_va_copy=${ac_cv_func_va_copy=yes}
ac_cv_func___va_copy=${ac_cv_func___va_copy=yes}
ac_cv_epoll_works=${ac_cv_epoll_works=yes}

ac_cv_check_sjlj=ssjlj

# m4
gt_cv_locale_fr=${gt_cv_locale_fr=fr_FR}
gl_cv_func_btowc_eof=${gl_cv_func_btowc_eof=yes}
gl_cv_func_wcrtomb_retval=${gl_cv_func_wcrtomb_retval=yes}
gl_cv_func_wctob_works=${gl_cv_func_wctob_works=yes}
gl_cv_func_mbrtowc_incomplete_state=${gl_cv_func_mbrtowc_incomplete_state=yes}
gl_cv_func_mbrtowc_sanitycheck=${gl_cv_func_mbrtowc_sanitycheck=yes}
gl_cv_func_mbrtowc_null_arg=${gl_cv_func_mbrtowc_null_arg=yes}
gl_cv_func_mbrtowc_retval=${gl_cv_func_mbrtowc_retval=yes}
gl_cv_func_mbrtowc_nul_retval=${gl_cv_func_mbrtowc_nul_retval=yes}

# va_copy and _va_copy
ac_cv_va_copy=${ac_cv_va_copy=yes}
ac_cv___va_copy=${ac_cv___va_copy=yes}
ac_cv_func_va_copy=${ac_cv_func_va_copy=yes}
ac_cv_func___va_copy=${ac_cv_func___va_copy=yes}

# Xorg
xorg_cv_malloc0_returns_null=${xorg_cv_malloc0_returns_null=yes}
