aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2026-03-05 12:20:21 +0100
committerJunio C Hamano <gitster@pobox.com>2026-03-05 11:19:56 -0800
commit4cae5847694f0d62b6da3b55164f7749c0a19fef (patch)
tree1daba44eedbe243ef71caae76a964c78e0bf6d0b
parent67ad42147a7acc2af6074753ebd03d904476118f (diff)
downloadgit-4cae5847694f0d62b6da3b55164f7749c0a19fef.tar.xz
meson: simplify iconv-emits-BOM check
Simplify the iconv-emits-BOM check that we have in Meson a bit by: - Dropping useless variables. - Casting the `inpos` pointer to `void *` instead of using a typedef that depends on whether or not we use an old iconv library. This overall condenses the code signficantly and makes it easier to follow. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--meson.build54
1 files changed, 19 insertions, 35 deletions
diff --git a/meson.build b/meson.build
index dd52efd1c8..1f9694e42b 100644
--- a/meson.build
+++ b/meson.build
@@ -1033,42 +1033,26 @@ if iconv.found()
have_old_iconv = true
endif
- iconv_omits_bom_source = '''#
- #include <iconv.h>
-
- int main(int argc, const char **argv)
- {
- '''
- if have_old_iconv
- iconv_omits_bom_source += '''
- typedef const char *iconv_ibp;
- '''
- else
- iconv_omits_bom_source += '''
- typedef char *iconv_ibp;
- '''
- endif
- iconv_omits_bom_source += '''
- int v;
- iconv_t conv;
- char in[] = "a"; iconv_ibp pin = in;
- char out[20] = ""; char *pout = out;
- size_t isz = sizeof in;
- size_t osz = sizeof out;
-
- conv = iconv_open("UTF-16", "UTF-8");
- iconv(conv, &pin, &isz, &pout, &osz);
- iconv_close(conv);
- v = (unsigned char)(out[0]) + (unsigned char)(out[1]);
- return v != 0xfe + 0xff;
- }
- '''
+ if meson.can_run_host_binaries()
+ if compiler.run('''
+ #include <iconv.h>
- if meson.can_run_host_binaries() and compiler.run(iconv_omits_bom_source,
- dependencies: iconv,
- name: 'iconv omits BOM',
- ).returncode() != 0
- libgit_c_args += '-DICONV_OMITS_BOM'
+ int main(int argc, const char **argv)
+ {
+ char in[] = "a", *inpos = in;
+ char out[20] = "", *outpos = out;
+ size_t insz = sizeof(in), outsz = sizeof(out);
+ iconv_t conv = iconv_open("UTF-16", "UTF-8");
+ iconv(conv, (void *) &inpos, &insz, &outpos, &outsz);
+ iconv_close(conv);
+ return (unsigned char)(out[0]) + (unsigned char)(out[1]) != 0xfe + 0xff;
+ }
+ ''',
+ dependencies: iconv,
+ name: 'iconv omits BOM',
+ ).returncode() != 0
+ libgit_c_args += '-DICONV_OMITS_BOM'
+ endif
endif
else
libgit_c_args += '-DNO_ICONV'