meson: only check for missing networking syms on non-Windows; add compat impls

These are added in the Makefile, but not in meson. They probably won't work well on systems without them. CMake adds them, but only on non-Windows. Actually, it only performs compiler checks for hstrerror, but excludes that check on Windows with the note that it is "incompatible with the Windows build". This seems to be misleading -- it is not incompatible, it simply doesn't exist. Still, the compat version should not be used. I interpret this cmake logic to mean we shouldn't even be checking for symbol availability on Windows. In addition to making it simple to add compat definitions, this also probably shaves off a second or two of configure time on Windows as no compiler check needs to be performed. Signed-off-by: Eli Schwartz <eschwartz@gentoo.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Eli Schwartz committed Apr 25, 2025 at 01:25 UTC d380dfeed74d9f4530cdab41f51bd287aebfbe4d
1 file changed +8 -5
meson.build
+8 -5
@@ -1088,11 +1088,14 @@ else
1088 endif
1089 libgit_dependencies += networking_dependencies
1090
1091 -foreach symbol : ['inet_ntop', 'inet_pton', 'hstrerror']
1092 - if not compiler.has_function(symbol, dependencies: networking_dependencies)
1093 - libgit_c_args += '-DNO_' + symbol.to_upper()
1094 - endif
1095 -endforeach
1091 +if host_machine.system() != 'windows'
1092 + foreach symbol : ['inet_ntop', 'inet_pton', 'hstrerror']
1093 + if not compiler.has_function(symbol, dependencies: networking_dependencies)
1094 + libgit_c_args += '-DNO_' + symbol.to_upper()
1095 + libgit_sources += 'compat/' + symbol + '.c'
1096 + endif
1097 + endforeach
1098 +endif
1099
1100 has_ipv6 = compiler.has_function('getaddrinfo', dependencies: networking_dependencies)
1101 if not has_ipv6