I made some more headway. AFAICT, lib-var-expand-crypt is missing dependencies from Makefile.am, which should have been declared via LIBADD. The following allows the build to progress *much* further; way past the link issues with lib-var-expand-crypt: $ cd src $ git diff lib-var-expand-crypt/Makefile.am diff --git a/src/lib-var-expand-crypt/Makefile.am b/src/lib-var-expand-crypt/Makefile.am index 8f829bcc02..ff5b83f22c 100644 --- a/src/lib-var-expand-crypt/Makefile.am +++ b/src/lib-var-expand-crypt/Makefile.am @@ -9,6 +9,8 @@ AM_CPPFLAGS = \ var_expand_crypt_la_SOURCES = \ var-expand-crypt.c +# rmfuhrer 07/14/2025: Trying to satisfy link-time references to binary_to_hex_append and friends... +var_expand_crypt_la_LIBADD = ../lib/liblib.la ../lib-dcrypt/libdcrypt.la ../lib-var-expand/libvar_expand.la ../lib-json/libjson.la var_expand_crypt_la_LDFLAGS = $(MODULE_LIBS) -avoid-version -module pkginc_libdir=$(pkgincludedir) $ Should I file a bug or pull request? I'm somewhat confused as to how 2.4.0 built for anyone (on any platform) without it... It's now dying while trying to compile ldap-utils.c with an undefined symbol: $ cd src $ PATH="/opt/homebrew/opt/bison/bin:$PATH" make ... ldap-utils.c:77:27: error: use of undeclared identifier 'LDAP_OPT_X_TLS_ECNAME' 77 | if (ldap_set_opt_str(ld, LDAP_OPT_X_TLS_ECNAME, | ^ 3 warnings and 1 error generated. make[3]: *** [ldap-utils.lo] Error 1 make[2]: *** [all-recursive] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2 $ The ldap.h that gets pulled in is from the MacOS SDK There are lots of deprecation warnings from the compiler about LDAP-related stuff defined in the SDK like this: ldap-utils.c:14:8: warning: 'ldap_set_option' is deprecated: first deprecated in macOS 10.11 - use OpenDirectory Framework [-Wdeprecated-declarations] 14 | ret = ldap_set_option(ld, opt, value); | ^ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/ldap.h:984:1: note: 'ldap_set_option' has been explicitly marked deprecated here That said, sure enough, the SDK's ldap.h doesn't define LDAP_OPT_X_TLS_ECNAME, on which ldap-utils.c depends. The SDK ldap.h defines LDAP_API_VERSION as 3001, but the SDK's ldap_features.h defines LDAP_VENDOR_VERSION as 2.4.28 (aka "20428"). More oddly, I have OpenLDAP v2.6.9 installed via Homebrew, in /opt/homebrew/opt/openldap (where the compiler isn't looking), and yet it also defines LDAP_API_VERSION to be 3001. OTOH, its LDAP_VENDOR_VERSION is 2.6.9 (aka "20609"), and it actually does define LDAP_OPT_X_TLS_ECNAME. Why didn't configure "realize" that the SDK version of OpenLDAP was too old? I guess configure has an insufficient test for the OpenLDAP version required? Should I file a bug against dovecot (on GitHub) for this?