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 */