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

lordgamez pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git

commit d46804aa15a42916d7e0f8b91650d13007e2de0d
Author: Ferenc Gerlits <[email protected]>
AuthorDate: Tue Feb 25 17:10:12 2025 +0100

    MINIFICPP-2461 Fix linker error on MSBuild
    
    On Windows, if we use MSBuild instead of Ninja, binary artifacts are put
    in a subdirectory according to the build type, eg. bin/Debug or bin/Release.
    Since our LibArchive build was not aware of this, it could not find the
    liblzma.lib file. This change is a workaround for this problem.
    
    Signed-off-by: Gabor Gyimesi <[email protected]>
    
    This closes #1937
---
 cmake/LibLZMA.cmake                   |  8 ++++----
 cmake/liblzma/dummy/FindLibLZMA.cmake | 15 +++++++++++++--
 2 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/cmake/LibLZMA.cmake b/cmake/LibLZMA.cmake
index 1cd66d84c..67ca7c9d7 100644
--- a/cmake/LibLZMA.cmake
+++ b/cmake/LibLZMA.cmake
@@ -35,11 +35,11 @@ add_library(LibLZMA::LibLZMA ALIAS liblzma)
 # Set exported variables for FindPackage.cmake
 
 set(LIBLZMA_INCLUDE_DIR "${liblzma_SOURCE_DIR}/src/liblzma/api" CACHE STRING 
"" FORCE)
+set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} 
"-DEXPORTED_LIBLZMA_INCLUDE_DIR=${LIBLZMA_INCLUDE_DIR}" CACHE STRING "" FORCE)
+
 if (WIN32)
-    set(LIBLZMA_LIBRARY "${liblzma_BINARY_DIR}/liblzma.lib" CACHE STRING "" 
FORCE)
+    set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} 
"-DEXPORTED_LIBLZMA_LIB_DIR=${liblzma_BINARY_DIR}" CACHE STRING "" FORCE)
 else()
     set(LIBLZMA_LIBRARY "${liblzma_BINARY_DIR}/liblzma.a" CACHE STRING "" 
FORCE)
+    set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} 
"-DEXPORTED_LIBLZMA_LIBRARY=${LIBLZMA_LIBRARY}" CACHE STRING "" FORCE)
 endif()
-
-set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} 
"-DEXPORTED_LIBLZMA_INCLUDE_DIR=${LIBLZMA_INCLUDE_DIR}" CACHE STRING "" FORCE)
-set(PASSTHROUGH_VARIABLES ${PASSTHROUGH_VARIABLES} 
"-DEXPORTED_LIBLZMA_LIBRARY=${LIBLZMA_LIBRARY}" CACHE STRING "" FORCE)
diff --git a/cmake/liblzma/dummy/FindLibLZMA.cmake 
b/cmake/liblzma/dummy/FindLibLZMA.cmake
index c298caab4..ece2ccc26 100644
--- a/cmake/liblzma/dummy/FindLibLZMA.cmake
+++ b/cmake/liblzma/dummy/FindLibLZMA.cmake
@@ -17,8 +17,19 @@
 
 if(NOT LIBLZMA_FOUND)
     set(LIBLZMA_FOUND "YES" CACHE STRING "" FORCE)
+
     set(LIBLZMA_INCLUDE_DIR "${EXPORTED_LIBLZMA_INCLUDE_DIR}" CACHE STRING "" 
FORCE)
     set(LIBLZMA_INCLUDE_DIRS "${EXPORTED_LIBLZMA_INCLUDE_DIR}" CACHE STRING "" 
FORCE)
-    set(LIBLZMA_LIBRARIES "${EXPORTED_LIBLZMA_LIBRARY}" CACHE STRING "" FORCE)
-    set(LIBLZMA_LIBRARIES "${EXPORTED_LIBLZMA_LIBRARY}" CACHE STRING "" FORCE)
+
+    if (WIN32)
+        if (EXISTS "${EXPORTED_LIBLZMA_LIB_DIR}/liblzma.lib")
+            set(LIBLZMA_LIBRARIES "${EXPORTED_LIBLZMA_LIB_DIR}/liblzma.lib" 
CACHE STRING "" FORCE)
+        elseif (EXISTS 
"${EXPORTED_LIBLZMA_LIB_DIR}/${CMAKE_BUILD_TYPE}/liblzma.lib")
+            set(LIBLZMA_LIBRARIES 
"${EXPORTED_LIBLZMA_LIB_DIR}/${CMAKE_BUILD_TYPE}/liblzma.lib" CACHE STRING "" 
FORCE)
+        else()
+            message(FATAL_ERROR "Could not find liblzma.lib")
+        endif()
+    else()
+        set(LIBLZMA_LIBRARIES "${EXPORTED_LIBLZMA_LIBRARY}" CACHE STRING "" 
FORCE)
+    endif()
 endif()

Reply via email to