Skip to content

Commit

Permalink
MINIFICPP-2461 Fix linker error on MSBuild
Browse files Browse the repository at this point in the history
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 <gamezbird@gmail.com>

This closes #1937
  • Loading branch information
fgerlits authored and lordgamez committed Feb 27, 2025
1 parent 9dbf996 commit d46804a
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 6 deletions.
8 changes: 4 additions & 4 deletions cmake/LibLZMA.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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)
15 changes: 13 additions & 2 deletions cmake/liblzma/dummy/FindLibLZMA.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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()

0 comments on commit d46804a

Please sign in to comment.