1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-07 17:18:11 +03:00
samba-mirror/lib/util/charset/wscript_configure
Earl Chew 1655413f12 Describe implication of upstream ICU-22610
Add commentary to link commit 86c7688 (MR !3447) to the upstream
fix for ICU-22610 in case there is subsequent breakage.

Signed-off-by: Earl Chew <earl_chew@yahoo.com>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>

Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Fri Nov  8 00:20:38 UTC 2024 on atb-devel-224
2024-11-08 00:20:38 +00:00

55 lines
2.4 KiB
Python

#!/usr/bin/env python
# rather strangely, we need to look for libiconv before checking libc
# as the external libiconv can use a macro to override iconv_open to libiconv_open
# and then we may find the wrong iconv.h later due to other packages looking
# in /usr/local
# We check for the lib iconv when building a shared lib has some compiler/linker
# managed to link when specifying -liconv a executable even if there is no
# libiconv.so or libiconv.a
conf.CHECK_LIB("iconv", shlib=True)
#HP-UX can use libiconv as an add-on package, which has #define iconv_open libiconv_open
if (conf.CHECK_FUNCS_IN('iconv_open', 'iconv', checklibc=False, headers='iconv.h') or
conf.CHECK_FUNCS_IN('libiconv_open', 'iconv', checklibc=False, headers='iconv.h') or
conf.CHECK_FUNCS('iconv_open', headers='iconv.h')):
conf.DEFINE('HAVE_NATIVE_ICONV', 1)
conf.CHECK_CODE('''
uint8_t inbuf[2] = { 0x30, 0xdf };
uint8_t outbuf[4] = { 0 };
char *ptr_in = (char *)inbuf;
char *ptr_out = (char *)outbuf;
size_t size_in = sizeof(inbuf);
size_t size_out = sizeof(outbuf);
size_t ret;
iconv_t cd;
cd = iconv_open("UTF-8", "UTF-16LE");
if (cd == 0 || cd == (iconv_t)-1) return -1;
ret = iconv(cd, &ptr_in, &size_in, &ptr_out, &size_out);
if (ret != (size_t)-1 || errno != EILSEQ) return -1;
''',
define='HAVE_ICONV_ERRNO_ILLEGAL_MULTIBYTE',
execute=True,
msg='Checking errno of iconv for illegal multibyte sequence',
lib='iconv',
headers='errno.h iconv.h')
# Since commit 86c7688 (MR !3447), the required ICU libraries are discovered
# as a single group. This had the benefit of working around ICU-22610, and also
# works with the fix that was merged to ICU main in commit 199bc827.
if conf.CHECK_CFG(package='icu-i18n icu-uc',
args='--cflags --libs',
msg='Checking for icu-i18n icu-uc',
uselib_store='ICUI18N'):
conf.env['icu-libs'] = 'icui18n'
conf.CHECK_LIB(conf.env['icu-libs'], shlib=True, mandatory=True)
if not conf.CHECK_HEADERS('unicode/ustring.h', lib='icui18n'):
conf.fatal('Found icui18n, but unicode/ustring.h is missing')
conf.DEFINE('HAVE_UTF8_NORMALISATION', 1)
else:
conf.env['icu-libs'] = ''