Author: rinrab
Date: Tue Dec 30 19:25:58 2025
New Revision: 1930988

Log:
Use separate definitions for each checksum backend enabled.

Now, svn_private_config.h must define one of SVN_CHECKSUM_BACKEND_APR,
SVN_CHECKSUM_BACKEND_OPENSSL, or any other SVN_CHECKSUM_BACKEND_FOO. This will
simplify checks in each implementation and will allow adding more than two of
them.

* CMakeLists.txt
  (options): Drop SVN_CHECKSUM_USE_OPENSSL option, replacing it with a string
   cache variable SVN_CHECKSUM_BACKEND to let user select implementation.
  (SVN_CHECKSUM_BACKEND): Cycle through every possible option to setup proper
   implementation.

* configure.ac
  (Checksum backend): Always define SVN_CHECKSUM_BACKEND_APR. We will implement
   it at some point.

* subversion/libsvn_subr/checksum_apr.c
  (): Compile only if SVN_CHECKSUM_BACKEND_APR is defined.

* subversion/libsvn_subr/checksum_openssl.c
  (): Compile only if SVN_CHECKSUM_BACKEND_OPENSSL is defined.

* subversion/svn_private_config.hw
  (SVN_CHECKSUM_BACKEND_APR): Define to 1.

Note: you might need to reconfigure project

Modified:
   subversion/trunk/CMakeLists.txt
   subversion/trunk/configure.ac
   subversion/trunk/subversion/libsvn_subr/checksum_apr.c
   subversion/trunk/subversion/libsvn_subr/checksum_openssl.c
   subversion/trunk/subversion/svn_private_config.hw

Modified: subversion/trunk/CMakeLists.txt
==============================================================================
--- subversion/trunk/CMakeLists.txt     Tue Dec 30 17:23:05 2025        
(r1930987)
+++ subversion/trunk/CMakeLists.txt     Tue Dec 30 19:25:58 2025        
(r1930988)
@@ -111,7 +111,8 @@ cmake_dependent_option(SVN_BUILD_SHARED_
 option(SVN_DEBUG "Enables specific features for developer builds" OFF)
 cmake_dependent_option(SVN_USE_WIN32_CRASHHANDLER "Enables WIN32 crash 
handler." ON "WIN32" OFF)
 option(SVN_USE_DSO "Defined if svn should try to load DSOs" OFF)
-option(SVN_CHECKSUM_USE_OPENSSL "Defined if svn should use OpenSSL to compute 
checksums." OFF)
+set(SVN_CHECKSUM_BACKEND "apr" CACHE STRING "Checksum backend to use (possible 
values are 'apr', 'openssl')" )
+set_property(CACHE SVN_CHECKSUM_BACKEND PROPERTY STRINGS "apr" "openssl")
 set(SVN_SOVERSION "0" CACHE STRING "Subversion library ABI version")
 mark_as_advanced(SVN_SOVERSION)
 
@@ -384,15 +385,24 @@ if (SVN_ENABLE_RA_SERF)
   endif()
 endif()
 
-if (SVN_CHECKSUM_USE_OPENSSL)
+if (SVN_CHECKSUM_BACKEND STREQUAL "apr")
+  add_library(external-openssl INTERFACE)
+  add_private_config_definition(
+    "Defined if svn should use APR to compute checksums."
+    "SVN_CHECKSUM_BACKEND_APR" "1"
+  )
+elseif (SVN_CHECKSUM_BACKEND STREQUAL "openssl")
   find_package(OpenSSL REQUIRED)
   add_library(external-openssl ALIAS OpenSSL::Crypto)
   add_private_config_definition(
     "Defined if svn should use OpenSSL to compute checksums."
-    "SVN_CHECKSUM_USE_OPENSSL" "1"
+    "SVN_CHECKSUM_BACKEND_OPENSSL" "1"
   )
 else()
-  add_library(external-openssl INTERFACE)
+  message(SEND_ERROR
+    "Invalid value of SVN_CHECKSUM_BACKEND: '${SVN_CHECKSUM_BACKEND}'. "
+    "Possible options are 'apr' or 'openssl'."
+  )
 endif()
 
 ### Python

Modified: subversion/trunk/configure.ac
==============================================================================
--- subversion/trunk/configure.ac       Tue Dec 30 17:23:05 2025        
(r1930987)
+++ subversion/trunk/configure.ac       Tue Dec 30 19:25:58 2025        
(r1930988)
@@ -234,6 +234,10 @@ if test "$svn_lib_serf" = "yes"; then
             [Defined if support for Serf is enabled])
 fi
 
+dnl Checksum backend
+AC_DEFINE([SVN_CHECKSUM_BACKEND_APR], 1,
+          [Defined if svn should use APR to compute checksums])
+
 dnl Search for apr_memcache (only affects fs_fs)
 SVN_LIB_APR_MEMCACHE
 

Modified: subversion/trunk/subversion/libsvn_subr/checksum_apr.c
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/checksum_apr.c      Tue Dec 30 
17:23:05 2025        (r1930987)
+++ subversion/trunk/subversion/libsvn_subr/checksum_apr.c      Tue Dec 30 
19:25:58 2025        (r1930988)
@@ -22,7 +22,7 @@
  */
 
 #include "svn_private_config.h"
-#ifndef SVN_CHECKSUM_USE_OPENSSL
+#ifdef SVN_CHECKSUM_BACKEND_APR
 
 #define APR_WANT_BYTEFUNC
 
@@ -134,5 +134,5 @@ svn_checksum__sha1_ctx_final(unsigned ch
   return SVN_NO_ERROR;
 }
 
-#endif /* SVN_CHECKSUM_USE_OPENSSL */
+#endif /* SVN_CHECKSUM_BACKEND_APR */
 

Modified: subversion/trunk/subversion/libsvn_subr/checksum_openssl.c
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/checksum_openssl.c  Tue Dec 30 
17:23:05 2025        (r1930987)
+++ subversion/trunk/subversion/libsvn_subr/checksum_openssl.c  Tue Dec 30 
19:25:58 2025        (r1930988)
@@ -22,7 +22,7 @@
  */
 
 #include "svn_private_config.h"
-#ifdef SVN_CHECKSUM_USE_OPENSSL
+#ifdef SVN_CHECKSUM_BACKEND_OPENSSL
 
 #define APR_WANT_BYTEFUNC
 
@@ -159,5 +159,5 @@ svn_checksum__sha1_ctx_final(unsigned ch
   return SVN_NO_ERROR;
 }
 
-#endif /* SVN_CHECKSUM_USE_OPENSSL */
+#endif /* SVN_CHECKSUM_BACKEND_OPENSSL */
 

Modified: subversion/trunk/subversion/svn_private_config.hw
==============================================================================
--- subversion/trunk/subversion/svn_private_config.hw   Tue Dec 30 17:23:05 
2025        (r1930987)
+++ subversion/trunk/subversion/svn_private_config.hw   Tue Dec 30 19:25:58 
2025        (r1930988)
@@ -73,6 +73,9 @@
 /* Defined to be the path to the installed binaries */
 #define SVN_BINDIR "/usr/local/bin"
 
+/* Defined if svn should use APR to compute checksums */
+#define SVN_CHECKSUM_BACKEND_APR 1
+
 
 
 /* The default FS back-end type */

Reply via email to