svn commit: r1920694 - /apr/apr/trunk/CMakeLists.txt

[email protected]
Newsgroups gmane.comp.apache.apr.cvs
Message-ID <[email protected]>
Author: ivan
Date: Sun Sep 15 15:18:43 2024
New Revision: 1920694

URL: http://svn.apache.org/viewvc?rev=1920694&view=rev
Log:
CMake: Factor-out macro ADD_APR_MODULE() to define APR DSO module library.
Similar to r1920674 in APR-Util 1.7.x.

Modified:
    apr/apr/trunk/CMakeLists.txt

Modified: apr/apr/trunk/CMakeLists.txt
URL: http://svn.apache.org/viewvc/apr/apr/trunk/CMakeLists.txt?rev=1920694&r1=1920693&r2=1920694&view=diff
==============================================================================
--- apr/apr/trunk/CMakeLists.txt (original)
+++ apr/apr/trunk/CMakeLists.txt Sun Sep 15 15:18:43 2024
@@ -503,27 +503,55 @@ IF (MSVC)
   ADD_COMPILE_DEFINITIONS(_CRT_SECURE_NO_DEPRECATE _CRT_NONSTDC_NO_WARNINGS)
 ENDIF()
 
-IF(NOT APR_MODULAR_DSO AND APU_HAVE_CRYPTO)
+MACRO(ADD_APR_MODULE name dllname sources libraries)
+  IF(APR_MODULAR_DSO)
+    ADD_LIBRARY(${name} SHARED ${sources})
+    LIST(APPEND install_modules ${name})
+    LIST(APPEND install_bin_pdb $<TARGET_PDB_FILE:${name}>)
+
+    TARGET_SOURCES(${name} PRIVATE libapr.rc)
+    TARGET_COMPILE_DEFINITIONS(${name}
+                               PRIVATE DLL_NAME=${dllname})
+
+    TARGET_LINK_LIBRARIES(${name}
+                          PRIVATE ${apr_libname} ${APR_SYSTEM_LIBS})
+    TARGET_LINK_LIBRARIES(${name}
+                          PRIVATE ${libraries})
+  ELSE()
+    LIST(APPEND APR_EXTRA_SOURCES ${sources})
+    LIST(APPEND APR_EXTRA_LIBRARIES ${libraries})
+  ENDIF()
+ENDMACRO()
+
+IF(APU_HAVE_CRYPTO)
   IF(NOT OPENSSL_FOUND)
     MESSAGE(FATAL_ERROR "Only OpenSSL-based crypto is currently implemented in the cmake build")
   ENDIF()
 
-  LIST(APPEND APR_EXTRA_SOURCES crypto/apr_crypto_openssl.c)
-  LIST(APPEND APR_EXTRA_LIBRARIES OpenSSL::Crypto)
+  ADD_APR_MODULE(
+    apr_crypto_openssl-2 "apr_crypto_openssl"
+    "crypto/apr_crypto_openssl.c"
+    "OpenSSL::Crypto")
 ENDIF()
 
-IF(NOT APR_MODULAR_DSO AND APU_HAVE_ODBC)
+IF(APU_HAVE_ODBC)
   LIST(APPEND dbd_drivers odbc)
 
-  LIST(APPEND APR_EXTRA_SOURCES dbd/apr_dbd_odbc.c)
-  LIST(APPEND APR_EXTRA_LIBRARIES odbc32 odbccp32)
+  ADD_APR_MODULE(
+    apr_dbd_odbc-2 "apr_dbd_odbc"
+    "dbd/apr_dbd_odbc.c"
+    "odbc32;odbccp32"
+  )
 ENDIF()
 
-IF(NOT APR_MODULAR_DSO AND APU_HAVE_SQLITE3)
+IF(APU_HAVE_SQLITE3)
   LIST(APPEND dbd_drivers sqlite3)
 
-  LIST(APPEND APR_EXTRA_SOURCES dbd/apr_dbd_sqlite3.c)
-  LIST(APPEND APR_EXTRA_LIBRARIES SQLite::SQLite3)
+  ADD_APR_MODULE(
+    apr_dbd_sqlite3-2 "apr_dbd_sqlite3-1"
+    "dbd/apr_dbd_sqlite3.c"
+    "SQLite::SQLite3"
+  )
 ENDIF()
 
 IF (BUILD_SHARED_LIBS)
@@ -572,38 +600,6 @@ ELSE()
   )
 ENDIF()
 
-IF(APR_MODULAR_DSO AND APU_HAVE_CRYPTO)
-  IF(NOT OPENSSL_FOUND)
-    MESSAGE(FATAL_ERROR "Only OpenSSL-based crypto is currently implemented in the cmake build")
-  ENDIF()
-  ADD_LIBRARY(apr_crypto_openssl-2 SHARED crypto/apr_crypto_openssl.c libapr.rc)
-  LIST(APPEND install_modules apr_crypto_openssl-2)
-  LIST(APPEND install_bin_pdb $<TARGET_PDB_FILE:apr_crypto_openssl-2>)
-  TARGET_LINK_LIBRARIES(apr_crypto_openssl-2 ${apr_libname} ${APR_SYSTEM_LIBS} OpenSSL::Crypto)
-  TARGET_COMPILE_DEFINITIONS(apr_crypto_openssl-2
-                             PRIVATE "DLL_NAME=apr_crypto_openssl")
-ENDIF()
-
-IF(APR_MODULAR_DSO AND APU_HAVE_ODBC)
-  ADD_LIBRARY(apr_dbd_odbc-2 SHARED dbd/apr_dbd_odbc.c libapr.rc)
-  LIST(APPEND install_modules apr_dbd_odbc-2)
-  LIST(APPEND install_bin_pdb $<TARGET_PDB_FILE:apr_dbd_odbc-2>)
-  LIST(APPEND dbd_drivers odbc)
-  TARGET_LINK_LIBRARIES(apr_dbd_odbc-2 ${apr_libname} ${APR_SYSTEM_LIBS} odbc32 odbccp32)
-  TARGET_COMPILE_DEFINITIONS(apr_dbd_odbc-2
-                             PRIVATE "DLL_NAME=apr_dbd_odbc")
-ENDIF()
-
-IF(APR_MODULAR_DSO AND APU_HAVE_SQLITE3)
-  ADD_LIBRARY(apr_dbd_sqlite3-2 SHARED dbd/apr_dbd_sqlite3.c libapr.rc)
-  LIST(APPEND install_modules apr_dbd_sqlite3-2)
-  LIST(APPEND install_bin_pdb $<TARGET_PDB_FILE:apr_dbd_sqlite3-2>)
-  LIST(APPEND dbd_drivers sqlite3)
-  TARGET_LINK_LIBRARIES(apr_dbd_sqlite3-2 ${apr_libname} ${APR_SYSTEM_LIBS} SQLite::SQLite3)
-  TARGET_COMPILE_DEFINITIONS(apr_dbd_sqlite3-2
-                             PRIVATE "DLL_NAME=apr_dbd_sqlite3")
-ENDIF()
-
 IF(APR_BUILD_TESTAPR)
   ENABLE_TESTING()
   # Create a "check" target that displays test program output to the console.
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.