Author: rinrab
Date: Thu Jun 4 11:52:55 2026
New Revision: 1934978
Log:
Build libmagic support with cmake.
* CMakeLists.txt
(#options): Add SVN_ENABLE_LIBMAGIC.
(external-magic): Process the dependency and setup required options.
(#configsummary): Log if libmagic is enabled or not.
* build/cmake/FindMAGIC.cmake
(): New module.
* build/generator/gen_cmake.py
(Generator::write): Remove magic from list of ignored deps.
Added:
subversion/trunk/build/cmake/FindMAGIC.cmake
Modified:
subversion/trunk/CMakeLists.txt
subversion/trunk/build/generator/gen_cmake.py
Modified: subversion/trunk/CMakeLists.txt
==============================================================================
--- subversion/trunk/CMakeLists.txt Thu Jun 4 11:22:27 2026
(r1934977)
+++ subversion/trunk/CMakeLists.txt Thu Jun 4 11:52:55 2026
(r1934978)
@@ -92,6 +92,7 @@ option(SVN_ENABLE_TUI "Enable TUI applic
option(SVN_ENABLE_AUTH_KWALLET "Enable KWallet auth library" OFF)
option(SVN_ENABLE_AUTH_GNOME_KEYRING "Enable GNOME Keyring for auth
credentials" OFF)
option(SVN_ENABLE_SASL "Enable Cyrus SASL v2" OFF)
+option(SVN_ENABLE_LIBMAGIC "Enable libmagic filetype detection library")
cmake_dependent_option(SVN_ENABLE_AUTH_GPG_AGENT "Enable GPG Agent support"
OFF "WIN32" ON)
option(SVN_INSTALL_PRIVATE_H "Install private header files." OFF)
@@ -746,6 +747,23 @@ if (SVN_ENABLE_SASL)
)
endif()
+add_library(external-magic INTERFACE)
+if (SVN_ENABLE_LIBMAGIC)
+ if(SVN_USE_PKG_CONFIG)
+ pkg_check_modules(libmagic REQUIRED IMPORTED_TARGET libmagic)
+ target_link_libraries(external-magic INTERFACE PkgConfig::libmagic)
+ set(SVN_MAGIC_LIBS ${libmagic_LDFLAGS})
+ else()
+ find_package(MAGIC REQUIRED)
+ target_link_libraries(external-magic INTERFACE MAGIC::MAGIC)
+ endif()
+
+ add_private_config_definition(
+ "Defined if libmagic support is enabled"
+ "SVN_HAVE_LIBMAGIC" "1"
+ )
+endif()
+
if(SVN_ENABLE_SWIG_PERL OR SVN_ENABLE_SWIG_PYTHON OR SVN_ENABLE_SWIG_RUBY)
file(MAKE_DIRECTORY
"${CMAKE_CURRENT_BINARY_DIR}/subversion/bindings/swig/proxy")
@@ -1116,6 +1134,8 @@ message(STATUS " Enable KWallet integ
message(STATUS " Enable Gnome Keyring .......... :
${SVN_ENABLE_AUTH_GNOME_KEYRING}")
message(STATUS " Enable GPG Agent support ...... :
${SVN_ENABLE_AUTH_GPG_AGENT}")
message(STATUS " Enable Cyrus SASL v2 .......... : ${SVN_ENABLE_SASL}")
+message(STATUS " Optionsal features:")
+message(STATUS " Enable libmagic ............... : ${SVN_ENABLE_LIBMAGIC}")
message(STATUS " Optional modules and targets:")
message(STATUS " Build Apache Modules .......... :
${SVN_ENABLE_APACHE_MODULES}")
message(STATUS " Build programs ................ : ${SVN_ENABLE_PROGRAMS}")
Added: subversion/trunk/build/cmake/FindMAGIC.cmake
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ subversion/trunk/build/cmake/FindMAGIC.cmake Thu Jun 4 11:52:55
2026 (r1934978)
@@ -0,0 +1,64 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+# FindMAGIC.cmake -- Find the libmagic library
+#
+
+find_path(MAGIC_INCLUDE_DIR
+ NAMES magic.h
+ PATH_SUFFIXES
+ include
+)
+
+find_library(MAGIC_LIBRARY
+ NAMES magic
+ PATH_SUFFIXES lib
+)
+
+mark_as_advanced(
+ MAGIC_INCLUDE_DIR
+ MAGIC_LIBRARY
+)
+
+if (MAGIC_INCLUDE_DIR AND EXISTS ${MAGIC_INCLUDE_DIR}/magic.h)
+ file(
+ STRINGS "${MAGIC_INCLUDE_DIR}/magic.h" VERSION_STRINGS
+ REGEX "#define MAGIC_VERSION"
+ )
+ string(REGEX REPLACE ".*MAGIC_VERSION[ \t]+([0-9]+).*" "\\1" MAGIC_VERSION
${VERSION_STRINGS})
+else()
+ set(MAGIC_VERSION 100)
+endif()
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(
+ MAGIC
+ REQUIRED_VARS
+ MAGIC_LIBRARY
+ MAGIC_INCLUDE_DIR
+ VERSION_VAR
+ MAGIC_VERSION
+)
+
+if (MAGIC_FOUND)
+ add_library(MAGIC::MAGIC IMPORTED STATIC)
+ set_target_properties(MAGIC::MAGIC PROPERTIES
+ IMPORTED_LOCATION ${MAGIC_LIBRARY}
+ INTERFACE_INCLUDE_DIRECTORIES ${MAGIC_INCLUDE_DIR}
+ )
+endif()
Modified: subversion/trunk/build/generator/gen_cmake.py
==============================================================================
--- subversion/trunk/build/generator/gen_cmake.py Thu Jun 4 11:22:27
2026 (r1934977)
+++ subversion/trunk/build/generator/gen_cmake.py Thu Jun 4 11:52:55
2026 (r1934978)
@@ -167,7 +167,6 @@ class Generator(gen_base.GeneratorBase):
private_libs.append("fs-libs")
elif dep.name in ["apriconv",
"apr_memcache",
- "magic",
"macos-plist",
"macos-keychain"]:
# These dependencies are currently ignored