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]
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]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.