Building rsync with --enable-md5-asm, --enable-roll-simd, or
--enable-roll-asm fails on FreeBSD/amd64.

ld.lld: error: undefined symbol: md5_process_asm
ld.lld: error: undefined symbol: get_checksum1

The configure script accepts both "x86_64" and "amd64" as valid CPU
architectures for this purpose, and substitutes the name into the
Makefile ...

OBJS3=progress.o pipe.o $(MD5_ASM_amd64) $(ROLL_SIMD_amd64) $(ROLL_ASM_amd64)

... but only the *_x86_64 variables are defined in Makefile.in:

ROLL_SIMD_x86_64=simd-checksum-x86_64.o
ROLL_ASM_x86_64=simd-checksum-avx2.o
MD5_ASM_x86_64=lib/md5-asm-x86_64.o

This can be fixed any number of ways; the following diff is just an
example:

--- configure.ac.orig   2026-08-25 13:45:30 UTC
+++ configure.ac
@@ -292,7 +292,11 @@ if test x"$enable_roll_simd" != x"no"; then
        AC_LANG(C)
        if test x"$CXX_OK" = x"yes"; then
            # AC_MSG_RESULT() is called below.
-           ROLL_SIMD="$host_cpu"
+           if test x"$host_cpu" = x"amd64"; then
+               ROLL_SIMD="x86_64"
+           else
+               ROLL_SIMD="$host_cpu"
+           fi
        elif test x"$enable_roll_simd" = x"yes"; then
            AC_MSG_RESULT(error)
            AC_MSG_ERROR(The rolling-checksum SIMD compilation test failed.
@@ -506,7 +510,11 @@ if test x"$enable_md5_asm" != x"no"; then
 
 if test x"$enable_md5_asm" != x"no"; then
     if test x"$host_cpu" = x"x86_64" || test x"$host_cpu" = x"amd64"; then
-       MD5_ASM="$host_cpu"
+       if test x"$host_cpu" = x"amd64"; then
+           MD5_ASM="x86_64"
+       else
+           MD5_ASM="$host_cpu"
+       fi
     elif test x"$enable_md5_asm" = x"yes"; then
         AC_MSG_RESULT(unavailable)
         AC_MSG_ERROR(The ASM optimizations are currently x86_64|amd64 only.
@@ -535,7 +543,11 @@ if test x"$enable_roll_asm" = x"yes"; then
 fi
 
 if test x"$enable_roll_asm" = x"yes"; then
-    ROLL_ASM="$host_cpu"
+    if test x"$host_cpu" = x"amd64"; then
+       ROLL_ASM="x86_64"
+    else
+       ROLL_ASM="$host_cpu"
+    fi
     AC_MSG_RESULT([yes ($ROLL_ASM)])
     AC_DEFINE(USE_ROLL_ASM, 1, [Define to 1 to enable rolling-checksum ASM 
optimizations (requires --enable-roll-simd)])
     ROLL_ASM='$(ROLL_ASM_'"$ROLL_ASM)"

-- 
Christian "naddy" Weisgerber                          [email protected]

-- 
Please use reply-all for most replies to avoid omitting the mailing list.
To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync
Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html

Reply via email to