This is an automated email from the ASF dual-hosted git repository.

tschoening pushed a commit to branch ghpr_14_replace-ant-build-with-cmake
in repository https://gitbox.apache.org/repos/asf/logging-log4cxx.git

commit d919ea18d495d3f8cbdddb64db849c8fc67201de
Author: Stephen Webb <[email protected]>
AuthorDate: Tue Jan 28 14:36:37 2020 +1100

    Provide find modules for APR and APR-Util. Add the version resource to 
log4cxx.dll
---
 CMakeLists.txt                             | 13 +++++-----
 src/CMakeLists.txt                         |  4 +--
 src/cmake/findAPR-Util.cmake               | 40 ++++++++++++++++++++++++++++++
 src/cmake/findAPR.cmake                    | 39 +++++++++++++++++++++++++++++
 src/cmake/projectVersionDetails.cmake      |  5 ++++
 src/main/CMakeLists.txt                    |  1 +
 src/main/include/CMakeLists.txt            |  4 +++
 src/main/include/log4cxx/version_info.h.in |  5 ++++
 src/main/resources/CMakeLists.txt          |  7 ++++++
 src/main/resources/log4cxx.rc              |  9 ++++---
 10 files changed, 114 insertions(+), 13 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b28b810..df334be 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,5 +1,10 @@
 cmake_minimum_required(VERSION 3.13)
-project(log4cxx VERSION 0.10.0 LANGUAGES CXX)
+include(src/cmake/projectVersionDetails.cmake)
+project(log4cxx VERSION ${log4cxx_VER} LANGUAGES CXX)
+include(CTest)
+
+# FindAPR and FindAPR-util are not provided by APR and APR-Util so source them 
locally
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/src/cmake")
 
 # Find Apache Runtime
 find_package(apr QUIET)
@@ -13,12 +18,6 @@ find_package(apr-util QUIET)
 find_path(APR_UTIL_INCLUDE_DIR apu.h PATH_SUFFIXES apr-1)
 find_library(APR_UTIL_LIBRARIES NAMES libaprutil-1 aprutil-1)
 
-## Testing
-option(TEST_LOG4CXX "Build log4cxx tests" OFF)
-if(TEST_LOG4CXX)
-  enable_testing()
-endif()
-
 # Building
 add_subdirectory(src)
 
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 95e66e1..fced9be 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -7,6 +7,6 @@ target_link_libraries(log4cxx PRIVATE odbc32.lib)
 option(LOG4CXX_INSTALL_PDB "Install .pdb files (if generated)"  ON)
 endif()
 
-if(TEST_LOG4CXX)
-  add_subdirectory(test)
+if(BUILD_TESTING)
+   add_subdirectory(test)
 endif()
diff --git a/src/cmake/findAPR-Util.cmake b/src/cmake/findAPR-Util.cmake
new file mode 100644
index 0000000..3485911
--- /dev/null
+++ b/src/cmake/findAPR-Util.cmake
@@ -0,0 +1,40 @@
+# Locate APR-Util include paths and libraries
+include(FindPackageHandleStandardArgs)
+
+# This module defines
+# APR_UTIL_INCLUDE_DIR, where to find apr.h, etc.
+# APR_UTIL_LIBRARIES, the libraries to link against to use APR.
+# APR_UTIL_FOUND, set to yes if found
+
+macro(_apu_invoke _varname)
+    execute_process(
+        COMMAND ${APR_UTIL_CONFIG_EXECUTABLE} ${ARGN}
+        OUTPUT_VARIABLE _apr_output
+        RESULT_VARIABLE _apr_failed
+    )
+
+    if(_apr_failed)
+        message(FATAL_ERROR "apu-1-config ${ARGN} failed with result 
${_apr_failed}")
+    else(_apr_failed)
+        string(REGEX REPLACE "[\r\n]"  "" _apr_output "${_apr_output}")
+        string(REGEX REPLACE " +$"     "" _apr_output "${_apr_output}")
+        string(REGEX REPLACE "^ +"     "" _apr_output "${_apr_output}")
+
+        separate_arguments(_apr_output)
+
+        set(${_varname} "${_apr_output}")
+    endif(_apr_failed)
+endmacro(_apu_invoke)
+
+find_program(APR_UTIL_CONFIG_EXECUTABLE
+    apu-1-config
+    PATHS /usr/local/bin    /usr/bin    C:/Progra~1/apr-util/bin
+    )
+mark_as_advanced(APR_UTIL_CONFIG_EXECUTABLE)
+if(EXISTS ${APR_UTIL_CONFIG_EXECUTABLE})
+    _apu_invoke(APR_UTIL_INCLUDE_DIR   --includedir)
+    _apu_invoke(APR_UTIL_LIBRARIES     --link-ld)
+endif()
+
+find_package_handle_standard_args(apr-util DEFAULT_MSG
+  APR_UTIL_INCLUDE_DIR APR_UTIL_LIBRARIES)
diff --git a/src/cmake/findAPR.cmake b/src/cmake/findAPR.cmake
new file mode 100644
index 0000000..171d745
--- /dev/null
+++ b/src/cmake/findAPR.cmake
@@ -0,0 +1,39 @@
+# Locate APR include paths and libraries
+include(FindPackageHandleStandardArgs)
+
+# This module defines
+# APR_INCLUDE_DIR, where to find apr.h, etc.
+# APR_LIBRARIES, the libraries to link against to use APR.
+# APR_FOUND, set to 'yes' if found
+macro(_apr_invoke _varname)
+    execute_process(
+        COMMAND ${APR_CONFIG_EXECUTABLE} ${ARGN}
+        OUTPUT_VARIABLE _apr_output
+        RESULT_VARIABLE _apr_failed
+    )
+
+    if(_apr_failed)
+        message(FATAL_ERROR "apr-1-config ${ARGN} failed with result 
${_apr_failed}")
+    else(_apr_failed)
+        string(REGEX REPLACE "[\r\n]"  "" _apr_output "${_apr_output}")
+        string(REGEX REPLACE " +$"     "" _apr_output "${_apr_output}")
+        string(REGEX REPLACE "^ +"     "" _apr_output "${_apr_output}")
+
+        separate_arguments(_apr_output)
+        set(${_varname} "${_apr_output}")
+    endif(_apr_failed)
+endmacro(_apr_invoke)
+
+
+find_program(APR_CONFIG_EXECUTABLE
+    apr-1-config
+    PATHS /usr/local/bin    /usr/bin    C:/Progra~1/apr/bin
+    )
+mark_as_advanced(APR_CONFIG_EXECUTABLE)
+if(EXISTS ${APR_CONFIG_EXECUTABLE})
+    _apr_invoke(APR_INCLUDE_DIR  --includedir)
+    _apr_invoke(APR_LIBRARIES  --link-ld)
+endif()
+
+find_package_handle_standard_args(apr
+    APR_INCLUDE_DIR APR_LIBRARIES)
diff --git a/src/cmake/projectVersionDetails.cmake 
b/src/cmake/projectVersionDetails.cmake
new file mode 100644
index 0000000..68bda9b
--- /dev/null
+++ b/src/cmake/projectVersionDetails.cmake
@@ -0,0 +1,5 @@
+# This file should contain nothing but the following line
+# setting the project version. The variable name must not
+# clash with the log4cxx_VERSION* variables automatically
+# defined by the project() command.
+set(log4cxx_VER 0.11.0.0)
diff --git a/src/main/CMakeLists.txt b/src/main/CMakeLists.txt
index 12cb4c9..80dd6d8 100644
--- a/src/main/CMakeLists.txt
+++ b/src/main/CMakeLists.txt
@@ -1,5 +1,6 @@
 add_subdirectory(include)
 add_subdirectory(cpp)
+add_subdirectory(resources)
 
 # setup include directories 
 include(GNUInstallDirs)
diff --git a/src/main/include/CMakeLists.txt b/src/main/include/CMakeLists.txt
index 0afef45..1939886 100644
--- a/src/main/include/CMakeLists.txt
+++ b/src/main/include/CMakeLists.txt
@@ -14,6 +14,10 @@ add_custom_target(configure_log4cxx
     ${CMAKE_CURRENT_BINARY_DIR}/log4cxx/log4cxx.h
     ${CMAKE_CURRENT_BINARY_DIR}/log4cxx/private/log4cxx_private.h
 )
+configure_file(${CMAKE_CURRENT_SOURCE_DIR}/log4cxx/version_info.h.in
+               ${CMAKE_CURRENT_BINARY_DIR}/log4cxx/version_info.h
+               @ONLY
+)
 else()
 # Configure log4cxx.h
 set(LOG4CXX_CHAR "utf-8" CACHE STRING "Interal character representation, 
choice of utf-8 (default), wchar_t, unichar")
diff --git a/src/main/include/log4cxx/version_info.h.in 
b/src/main/include/log4cxx/version_info.h.in
new file mode 100644
index 0000000..b4331fc
--- /dev/null
+++ b/src/main/include/log4cxx/version_info.h.in
@@ -0,0 +1,5 @@
+// Information used by resource files
+#define INFO_PRODUCT_VERSION_LIST 
@log4cxx_VERSION_MAJOR@,@log4cxx_VERSION_MINOR@,@log4cxx_VERSION_PATCH@
+#define INFO_PRODUCT_VERSION_STRING "@log4cxx_VERSION@"
+#define INFO_FILE_VERSION_LIST 
INFO_PRODUCT_VERSION_LIST,@log4cxx_VERSION_TWEAK@
+#define INFO_FILE_VERSION_STRING INFO_PRODUCT_VERSION_STRING "." 
@log4cxx_VERSION_TWEAK@
diff --git a/src/main/resources/CMakeLists.txt 
b/src/main/resources/CMakeLists.txt
new file mode 100644
index 0000000..3827357
--- /dev/null
+++ b/src/main/resources/CMakeLists.txt
@@ -0,0 +1,7 @@
+# Configure
+if(WIN32)
+target_sources(log4cxx
+  PRIVATE
+  log4cxx.rc
+)
+endif()
\ No newline at end of file
diff --git a/src/main/resources/log4cxx.rc b/src/main/resources/log4cxx.rc
index d61b19c..3faf8b0 100644
--- a/src/main/resources/log4cxx.rc
+++ b/src/main/resources/log4cxx.rc
@@ -74,10 +74,11 @@ END
 //
 // Version
 //
+#include <log4cxx/version_info.h>
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 0, 0, 0, 0
- PRODUCTVERSION 0, 0, 0, 0
+ FILEVERSION INFO_FILE_VERSION_LIST
+ PRODUCTVERSION INFO_PRODUCT_VERSION_LIST
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -94,12 +95,12 @@ BEGIN
         BEGIN
             VALUE "CompanyName", "Apache Software Foundation"
             VALUE "FileDescription", "Apache log4cxx"
-            VALUE "FileVersion", "0, 0, 0, 0"
+            VALUE "FileVersion", INFO_FILE_VERSION_STRING
             VALUE "InternalName", "log4cxx"
             VALUE "LegalCopyright",  "Licensed to the Apache Software 
Foundation (ASF) under one or more\ncontributor license agreements.  See the 
NOTICE file distributed with\nthis work for additional information regarding 
copyright ownership.\nThe ASF licenses this file to You under the Apache 
License, Version 2.0\n(the ""License""); you may not use this file except in 
compliance with\nthe License.  You may obtain a copy of the License at\n\n     
http://www.apache.org/licenses/LICENSE- [...]
             VALUE "OriginalFilename", "log4cxx.dll"
             VALUE "ProductName", "Apache log4cxx"
-            VALUE "ProductVersion", "0, 0, 0, 0"
+            VALUE "ProductVersion", INFO_PRODUCT_VERSION_STRING
         END
     END
     BLOCK "VarFileInfo"

Reply via email to