svn commit: r1920540 - in /subversion/branches/cmake: CMakeLists.txt build/cmake/FindHttpd.cmake build/generator/gen_cmake.py build/generator/templates/targets.cmake.ezt
[email protected] Tue, 10 Sep 2024 11:43:26 -0000
Newsgroups
gmane.comp.version-control.subversion.svn
Message-ID
<[email protected] >
Author: rinrab
Date: Tue Sep 10 11:43:26 2024
New Revision: 1920540
URL: http://svn.apache.org/viewvc?rev=1920540&view=rev
Log:
On the 'cmake' branch: Add compilation of Apache Httpd modules.
* build/cmake/FindHttpd.cmake: New CMake module for finding Httpd dependency.
* build/generator/gen_cmake.py
(get_target_conditions): Handle TargetApacheMod.
(write): Initialize is_apache_mod field.
(check_ignore_target): Do not filter modules for httpd.
* build/generator/templates/targets.cmake.ezt
(libs): Remove prefix and change the library extension to be '.so' if
met Apache module.
* CMakeLists.txt
(deps): Add finding of httpd and create aliases.
(configure summary): Log httpd version and Apache modules enabling state.
Added:
subversion/branches/cmake/build/cmake/FindHttpd.cmake
Modified:
subversion/branches/cmake/CMakeLists.txt
subversion/branches/cmake/build/generator/gen_cmake.py
subversion/branches/cmake/build/generator/templates/targets.cmake.ezt
Modified: subversion/branches/cmake/CMakeLists.txt
URL: http://svn.apache.org/viewvc/subversion/branches/cmake/CMakeLists.txt?rev=1920540&r1=1920539&r2=1920540&view=diff
==============================================================================
--- subversion/branches/cmake/CMakeLists.txt (original)
+++ subversion/branches/cmake/CMakeLists.txt Tue Sep 10 11:43:26 2024
@@ -75,6 +75,7 @@ option(SVN_ENABLE_SVNXX "Enable compilat
option(SVN_ENABLE_PROGRAMS "Build Subversion programs (such as svn.exe)" ON)
cmake_dependent_option(SVN_ENABLE_TOOLS "Build Subversion tools" ON "SVN_ENABLE_TESTS" OFF)
option(SVN_ENABLE_TESTS "Build Subversion test-suite" OFF)
+option(SVN_ENABLE_APACHE_MODULES "Build modules for Apache HTTPD" OFF)
option(SVN_ENABLE_SWIG_PERL "Enable Subversion SWIG bindings for Perl" OFF)
option(SVN_ENABLE_SWIG_PYTHON "Enable Subversion SWIG bindings into Python" OFF)
@@ -270,6 +271,14 @@ elseif(SVN_ENABLE_TESTS)
)
endif()
+### Httpd
+
+if(SVN_ENABLE_APACHE_MODULES)
+ find_package(Httpd REQUIRED)
+ add_library(external-libhttpd ALIAS httpd::httpd)
+ add_library(external-mod_dav ALIAS httpd::mod_dav)
+endif()
+
if(SVN_ENABLE_SWIG_PERL OR SVN_ENABLE_SWIG_PYTHON OR SVN_ENABLE_SWIG_RUBY)
find_package(SWIG REQUIRED)
include(${SWIG_USE_FILE})
@@ -654,7 +663,7 @@ message(STATUS " Enable FS X ........
message(STATUS " Enable RA LOCAL ............... : ${SVN_ENABLE_RA_LOCAL}")
message(STATUS " Enable RA SVN ................. : ${SVN_ENABLE_RA_SVN}")
message(STATUS " Enable RA SERF ................ : ${SVN_ENABLE_RA_SERF}")
-message(STATUS " Build Apache Modules .......... : NOT IMPLEMENTED, HTTPD v2.4.68 (TODO:)")
+message(STATUS " Build Apache Modules .......... : ${SVN_ENABLE_APACHE_MODULES}")
message(STATUS " Build programs ................ : ${SVN_ENABLE_PROGRAMS}")
message(STATUS " Build tools ................... : ${SVN_ENABLE_TOOLS}")
message(STATUS " Build test suite .............. : ${SVN_ENABLE_TESTS}")
@@ -678,7 +687,7 @@ message(STATUS " INTL ...............
message(STATUS " SWIG .......................... : ${SWIG_VERSION}")
message(STATUS " PYTHON ........................ : ${Python_VERSION}")
message(STATUS " PERL .......................... : ${PERL_VERSION_STRING}")
-message(STATUS " HTTPD ......................... : NOT IMPLEMENTED")
+message(STATUS " HTTPD ......................... : ${HTTPD_VERSION}")
message(STATUS " TODO: ......................... : Other dependecies")
message(STATUS " Bindings:")
message(STATUS " Build SVNXX ................... : ${SVN_ENABLE_SVNXX}")
Added: subversion/branches/cmake/build/cmake/FindHttpd.cmake
URL: http://svn.apache.org/viewvc/subversion/branches/cmake/build/cmake/FindHttpd.cmake?rev=1920540&view=auto
==============================================================================
--- subversion/branches/cmake/build/cmake/FindHttpd.cmake (added)
+++ subversion/branches/cmake/build/cmake/FindHttpd.cmake Tue Sep 10 11:43:26 2024
@@ -0,0 +1,62 @@
+find_path(HTTPD_INCLUDE_DIR
+ NAMES httpd.h
+ PATH_SUFFIXES
+ include
+)
+
+find_library(HTTPD_LIBRARY
+ NAMES libhttpd
+ PATH_SUFFIXES lib
+)
+
+find_file(HTTPD_DLL
+ NAMES libhttpd.dll
+ PATH_SUFFIXES bin
+)
+
+find_library(MOD_DAV_LIBRARY
+ NAMES mod_dav
+ PATH_SUFFIXES lib
+)
+
+if (HTTPD_INCLUDE_DIR AND EXISTS "${HTTPD_INCLUDE_DIR}/ap_release.h")
+ file(
+ STRINGS "${HTTPD_INCLUDE_DIR}/ap_release.h" VERSION_STRINGS
+ REGEX "#define (AP_SERVER_MAJORVERSION_NUMBER|AP_SERVER_MINORVERSION_NUMBER|AP_SERVER_PATCHLEVEL_NUMBER)"
+ )
+
+ string(REGEX REPLACE ".*AP_SERVER_MAJORVERSION_NUMBER +([0-9]+).*" "\\1" HTTPD_VERSION_MAJOR ${VERSION_STRINGS})
+ string(REGEX REPLACE ".*AP_SERVER_MINORVERSION_NUMBER +([0-9]+).*" "\\1" HTTPD_VERSION_MINOR ${VERSION_STRINGS})
+ string(REGEX REPLACE ".*AP_SERVER_PATCHLEVEL_NUMBER +([0-9]+).*" "\\1" HTTPD_VERSION_PATCH ${VERSION_STRINGS})
+
+ set(HTTPD_VERSION "${HTTPD_VERSION_MAJOR}.${HTTPD_VERSION_MINOR}.${HTTPD_VERSION_PATCH}")
+endif()
+
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(
+ Httpd
+ REQUIRED_VARS
+ HTTPD_LIBRARY
+ HTTPD_INCLUDE_DIR
+ MOD_DAV_LIBRARY
+ VERSION_VAR
+ HTTPD_VERSION
+)
+
+if(HTTPD_FOUND)
+ if(NOT TARGET httpd::httpd)
+ add_library(httpd::httpd SHARED IMPORTED)
+ set_target_properties(httpd::httpd PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES ${HTTPD_INCLUDE_DIR}
+ IMPORTED_LOCATION ${HTTPD_DLL}
+ IMPORTED_IMPLIB ${HTTPD_LIBRARY}
+ )
+ endif()
+
+ if(NOT TARGET httpd::mod_dav)
+ add_library(httpd::mod_dav STATIC IMPORTED)
+ set_target_properties(httpd::mod_dav PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES ${HTTPD_INCLUDE_DIR}
+ IMPORTED_LOCATION ${MOD_DAV_LIBRARY}
+ )
+ endif()
+endif()
Modified: subversion/branches/cmake/build/generator/gen_cmake.py
URL: http://svn.apache.org/viewvc/subversion/branches/cmake/build/generator/gen_cmake.py?rev=1920540&r1=1920539&r2=1920540&view=diff
==============================================================================
--- subversion/branches/cmake/build/generator/gen_cmake.py (original)
+++ subversion/branches/cmake/build/generator/gen_cmake.py Tue Sep 10 11:43:26 2024
@@ -90,6 +90,9 @@ def get_target_conditions(target):
isinstance(target, gen_base.TargetSWIGLib):
enable_condition.append("SVN_ENABLE_SWIG_" + target.lang.upper())
+ if isinstance(target, gen_base.TargetApacheMod):
+ enable_condition.append("SVN_ENABLE_APACHE_MODULES")
+
return enable_condition
class Generator(gen_base.GeneratorBase):
@@ -116,6 +119,7 @@ class Generator(gen_base.GeneratorBase):
enable_condition += get_target_conditions(target)
build_type = None
swig_lang = None
+ is_apache_mod = None
if isinstance(target, gen_base.TargetScript):
# there is nothing to build
@@ -127,7 +131,7 @@ class Generator(gen_base.GeneratorBase):
group = "fs-libs"
build_type = "${SVN_FS_BUILD_TYPE}"
elif isinstance(target, gen_base.TargetApacheMod):
- pass
+ is_apache_mod = True
elif isinstance(target, gen_base.TargetSWIG):
swig_lang = target.lang
elif isinstance(target, gen_base.TargetLib):
@@ -217,6 +221,7 @@ class Generator(gen_base.GeneratorBase):
srcdir = target.path,
install_target = ezt.boolean(install_target),
swig_lang = swig_lang,
+ is_apache_mod = is_apache_mod,
)
targets.append(new_target)
@@ -258,10 +263,6 @@ class Generator(gen_base.GeneratorBase):
"svnxx-tests",
- "mod_authz_svn",
- "mod_dav_svn",
- "mod_dontdothat",
-
"libsvnjavahl",
"__JAVAHL__",
"__JAVAHL_TESTS__",
Modified: subversion/branches/cmake/build/generator/templates/targets.cmake.ezt
URL: http://svn.apache.org/viewvc/subversion/branches/cmake/build/generator/templates/targets.cmake.ezt?rev=1920540&r1=1920539&r2=1920540&view=diff
==============================================================================
--- subversion/branches/cmake/build/generator/templates/targets.cmake.ezt (original)
+++ subversion/branches/cmake/build/generator/templates/targets.cmake.ezt Tue Sep 10 11:43:26 2024
@@ -48,7 +48,8 @@ if ([targets.enable_condition])[is targe
target_exports([targets.name][for targets.msvc_export]
[targets.msvc_export][end]
)[end]
- set_target_properties([targets.name] PROPERTIES OUTPUT_NAME "[targets.output_name]")
+ set_target_properties([targets.name] PROPERTIES OUTPUT_NAME "[targets.output_name]")[if-any targets.is_apache_mod]
+ set_target_properties([targets.name] PROPERTIES PREFIX "" SUFFIX ".so")[end]
target_include_directories([targets.name] PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/subversion/include"
)[if-any targets.group]