# general
ac_cv_sizeof_char=${ac_cv_sizeof_char=1}
ac_cv_sizeof_unsigned_char=${ac_cv_sizeof_unsigned_char=1}
ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p=4}
ac_cv_sizeof_unsigned_char_p=${ac_cv_sizeof_unsigned_char_p=4}
ac_cv_sizeof_int=${ac_cv_sizeof_int=4}
ac_cv_sizeof_unsigned_int=${ac_cv_sizeof_unsigned_int=4}
ac_cv_sizeof_int_p=${ac_cv_sizeof_int_p=4}
ac_cv_sizeof_long=${ac_cv_sizeof_long=4}
ac_cv_sizeof_unsigned_long=${ac_cv_sizeof_unsigned_long=4}
ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8}
ac_cv_sizeof_unsigned_long_long=${ac_cv_sizeof_unsigned_long_long=8}
ac_cv_sizeof_short=${ac_cv_sizeof_short=2}
ac_cv_sizeof_unsigned_short=${ac_cv_sizeof_unsigned_short=2}
ac_cv_sizeof_size_t=${ac_cv_sizeof_size_t=4}
ac_cv_sizeof_ssize_t=${ac_cv_sizeof_ssize_t=4}
ac_cv_sizeof_void_p=${ac_cv_sizeof_void_p=4}
ac_cv_sizeof_long_p=${ac_cv_sizeof_long_p=4}
ac_cv_sizeof_float=${ac_cv_sizeof_float=4}
ac_cv_sizeof_uid_t=${ac_cv_sizeof_uid_t=4}
ac_cv_sizeof_gid_t=${ac_cv_sizeof_gid_t=4}
ac_cv_sizeof_dev_t=${ac_cv_sizeof_dev_t=8}
ac_cv_func_lstat_dereferences_slashed_symlink=${ac_cv_func_lstat_dereferences_slashed_symlink=yes}
ac_cv_func_lstat_empty_string_bug=${ac_cv_func_lstat_empty_string_bug=no}
ac_cv_func_setvbuf_reversed=${ac_cv_func_setvbuf_reversed=no}
ac_cv_func_stat_empty_string_bug=${ac_cv_func_stat_empty_string_bug=no}
ac_cv_func_stat_ignores_trailing_slash=${ac_cv_func_stat_ignores_trailing_slash=no}
ac_cv_va_val_copy=${ac_cv_va_val_copy=yes}

ac_cv_linux_vers=${ac_cv_linux_vers=2}

ac_cv_path_ESD_CONFIG=no
lf_cv_sane_realloc=yes
jm_cv_func_gettimeofday_clobber=no
samba_cv_HAVE_GETTIMEOFDAY_TZ=yes
bf_lsbf=1
ac_cv_uchar=${ac_cv_uchar=no}
ac_cv_uint=${ac_cv_uint=yes}
ac_cv_ulong=${ac_cv_ulong=yes}
ac_cv_ushort=${ac_cv_ushort=yes}

# audacity
ac_cv_file_lib_src_libmad_frame_h=${ac_cv_file_lib_src_libmad_frame_h=no}

# bash
ac_cv_c_long_double=${ac_cv_c_long_double=yes}
bash_cv_func_sigsetjmp=${bash_cv_func_sigsetjmp=missing}

# 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}

# cvs
cvs_cv_func_printf_ptr=${cvs_cv_func_printf_ptr=yes}

# db
db_cv_alignp_t=${db_cv_alignp_t='unsigned long'}
db_cv_align_t=${db_cv_align_t='unsigned long long'}
db_cv_fcntl_f_setfd=${db_cv_fcntl_f_setfd=yes}
db_cv_sprintf_count=${db_cv_sprintf_count=yes}

# D-BUS
ac_cv_func_posix_getpwnam_r=${ac_cv_func_posix_getpwnam_r=yes}

# ettercap
ettercap_cv_type_socklen_t=${ettercap_cv_type_socklen_t=yes}

# gettext
am_cv_func_working_getline=${am_cv_func_working_getline=yes}

# guile
ac_cv_uchar=${ac_cv_uchar=no}
ac_cv_uint=${ac_cv_uint=yes}
ac_cv_ulong=${ac_cv_ulong=yes}
ac_cv_ushort=${ac_cv_ushort=yes}

# intercom
ac_cv_func_fnmatch_works=${ac_cv_func_fnmatch_works=yes}

# jikes-native
ac_cv_sizeof_wchar_t=4

# lftp
ac_cv_need_trio=${ac_cv_need_trio=no}
lftp_cv_va_val_copy=${lftp_cv_va_val_copy=yes}

# libnet 
ac_cv_lbl_unaligned_fail=${ac_cv_lbl_unaligned_fail=no}
ac_libnet_have_packet_socket=${ac_libnet_have_packet_socket=yes}

# libxfce4util
with_broken_putenv=${with_broken_putenv=no}

# mysql
mysql_cv_func_atomic_sub=${mysql_cv_func_atomic_sub=yes}
mysql_cv_func_atomic_add=${mysql_cv_func_atomic_add=yes}

# php
ac_cv_pread=${ac_cv_pread=no}
ac_cv_pwrite=${ac_cv_pwrite=no}
php_cv_lib_cookie_io_functions_use_off64_t=${php_cv_lib_cookie_io_functions_use_off64_t=yes}

# rsync
rsync_cv_HAVE_BROKEN_LARGEFILE=${rsync_cv_HAVE_BROKEN_LARGEFILE=no}
rsync_cv_HAVE_SOCKETPAIR=${rsync_cv_HAVE_SOCKETPAIR=yes}
rsync_cv_HAVE_LONGLONG=${rsync_cv_HAVE_LONGLONG=yes}
rsync_cv_HAVE_OFF64_T=${rsync_cv_HAVE_OFF64_T=no}
rsync_cv_HAVE_SHORT_INO_T=${rsync_cv_HAVE_SHORT_INO_T=no}
rsync_cv_HAVE_UNSIGNED_CHAR=${rsync_cv_HAVE_UNSIGNED_CHAR=no}
rsync_cv_HAVE_BROKEN_READDIR=${rsync_cv_HAVE_BROKEN_READDIR=no}
rsync_cv_HAVE_GETTIMEOFDAY_TZ=${rsync_cv_HAVE_GETTIMEOFDAY_TZ=yes}
rsync_cv_HAVE_SECURE_MKSTEMP=${rsync_cv_HAVE_SECURE_MKSTEMP=yes}
rsync_cv_REPLACE_INET_NTOA=${rsync_cv_REPLACE_INET_NTOA=no}
rsync_cv_REPLACE_INET_ATON=${rsync_cv_REPLACE_INET_ATON=no}

# samba
samba_cv_HAVE_GETTIMEOFDAY_TZ=${samba_cv_HAVE_GETTIMEOFDAY_TZ=yes}

# screen
screen_cv_sys_bcopy_overlap=${screen_cv_sys_bcopy_overlap=no}
screen_cv_sys_memcpy_overlap=${screen_cv_sys_memcpy_overlap=no}
screen_cv_sys_memmove_overlap=${screen_cv_sys_memmove_overlap=no}
screen_cv_sys_fifo_broken_impl=${screen_cv_sys_fifo_broken_impl=yes}
screen_cv_sys_fifo_usable=${screen_cv_sys_fifo_usable=yes}
screen_cv_sys_select_broken_retval=${screen_cv_sys_select_broken_retval=no}
screen_cv_sys_sockets_nofs=${screen_cv_sys_sockets_nofs=no}
screen_cv_sys_sockets_usable=${screen_cv_sys_sockets_usable=yes}
screen_cv_sys_terminfo_used=${screen_cv_sys_terminfo_used=yes}

# slrn
slrn_cv_va_val_copy=${slrn_cv_va_val_copy=yes}

# ssh
ac_cv_have_space_d_name_in_struct_dirent=${ac_cv_dirent_have_space_d_name=yes}
ac_cv_have_broken_snprintf=${ac_cv_have_broken_snprintf=no}
ac_cv_have_accrights_in_msghdr=${ac_cv_have_accrights_in_msghdr=no}
ac_cv_have_control_in_msghdr=${ac_cv_have_control_in_msghdr=yes}
ac_cv_type_struct_timespec=${ac_cv_type_struct_timespec=yes}
ac_cv_have_openpty_ctty_bug=${ac_cv_have_openpty_ctty_bug=yes}

# startup-notification
lf_cv_sane_realloc=yes

# xffm
jm_cv_func_working_readdir=yes

# xorg X11R7
ac_cv_sys_linker_h=${ac_cv_sys_linker_h=no}
ac_cv_file__usr_share_X11_sgml_defs_ent=${ac_cv_file__usr_share_X11_sgml_defs_ent=no}

# evolution-data-server
ac_cv_libiconv_utf8=${ac_cv_libiconv_utf8=yes}

#dbus
ac_cv_have_abstract_sockets=${ac_cv_have_abstract_sockets=yes}

#libpciaccess
have_mtrr_h=yes

#mozilla
moz_cv_size_of_JS_BYTES_PER_WORD=4
moz_cv_align_of_JS_ALIGN_OF_POINTER=4
moz_cv_size_of_JS_BYTES_PER_DOUBLE=8

#ofono
ac_cv_lib_c_signalfd=${ac_cv_lib_c_signalfd=yes}

#unfs3
nfsd_cv_broken_setfsuid=${nfsd_cv_broken_setfsuid=0}
nfsd_cv_func_statfs=${nfsd_cv_func_statfs=statfs2_bsize}
nfsd_cv_bsd_signals=${nfsd_cv_bsd_signals=yes}

# at-spi2-core
ac_cv_alignof_char=1
ac_cv_alignof_dbind_pointer=4
ac_cv_alignof_dbind_struct=1
ac_cv_alignof_dbus_bool_t=4
ac_cv_alignof_dbus_int16_t=2
ac_cv_alignof_dbus_int32_t=4
ac_cv_alignof_dbus_int64_t=4
ac_cv_alignof_double=4
