@@ -66,64 +66,56 @@ set(BUILD_SHARED_LIBS OFF)
6666
6767include (FetchContent )
6868
69- # LZMA Dependencies - TRUE Raspberry Pi Imager approach with FetchContent xz
70- if (WIN32 )
71- # Windows: Use FetchContent xz exactly like real Raspberry Pi Imager
72- message (STATUS "Using FetchContent XZ/LZMA library on Windows (Raspberry Pi Imager style)" )
73- set (LIBLZMA_VERSION "5.4.6" )
74- FetchContent_Declare (xz
75- GIT_REPOSITORY https://github.com/tukaani-project/xz.git
76- GIT_TAG v${LIBLZMA_VERSION}
77- ${USE_OVERRIDE_FIND_PACKAGE}
78- )
79- set (XZ_MICROLZMA_DECODER OFF CACHE BOOL "" FORCE )
80- set (XZ_MICROLZMA_ENCODER OFF CACHE BOOL "" FORCE )
81- set (XZ_LZIP_DECODER OFF CACHE BOOL "" FORCE )
82- set (XZ_ENABLE_SANDBOX OFF CACHE BOOL "" FORCE )
83- set (XZ_BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE )
84- set (XZ_ENABLE_DOXYGEN OFF CACHE BOOL "" FORCE )
85- set (XZ_DECODERS lzma1 lzma2 delta)
86- set (XZ_ENCODERS lzma1 lzma2 delta)
87- set (CREATE_LZMA_SYMLINKS OFF CACHE BOOL "" FORCE )
88- set (CREATE_XZ_SYMLINKS OFF CACHE BOOL "" FORCE )
89-
90- FetchContent_GetProperties (xz)
91- if (NOT xz_POPULATED)
92- FetchContent_Populate (xz)
93- add_subdirectory (${xz_SOURCE_DIR} ${xz_BINARY_DIR} EXCLUDE_FROM_ALL )
94- endif ()
95-
96- # Clean up cache variables
97- unset (XZ_MICROLZMA_DECODER)
98- unset (XZ_MICROLZMA_ENCODER)
99- unset (XZ_LZIP_DECODER)
100- unset (XZ_ENABLE_SANDBOX)
101- unset (XZ_BUILD_SHARED_LIBS)
102- unset (XZ_ENABLE_DOXYGEN)
103- unset (CREATE_LZMA_SYMLINKS)
104- unset (CREATE_XZ_SYMLINKS)
105-
106- # Set LZMA variables exactly like Raspberry Pi Imager
107- set (LIBLZMA_FOUND true CACHE BOOL "" FORCE )
108- set (LIBLZMA_INCLUDE_DIR ${xz_SOURCE_DIR} /src/liblzma/api CACHE PATH "" FORCE )
109- set (LIBLZMA_INCLUDE_DIRS ${xz_SOURCE_DIR} /src/liblzma/api CACHE PATH "" FORCE )
110- set (LIBLZMA_LIBRARY liblzma CACHE FILEPATH "" FORCE )
111- set (LIBLZMA_LIBRARIES ${xz_BINARY_DIR} /liblzma.a CACHE FILEPATH "" FORCE )
112- set (LIBLZMA_HAS_AUTO_DECODER true CACHE BOOL "" FORCE )
113- set (LIBLZMA_HAS_EASY_ENCODER true CACHE BOOL "" FORCE )
114- set (LIBLZMA_HAS_LZMA_PRESET true CACHE BOOL "" FORCE )
115-
116- # Create namespace target
117- if (TARGET liblzma AND NOT TARGET LibLZMA::LibLZMA)
118- add_library (LibLZMA::LibLZMA ALIAS liblzma )
119- endif ()
120- else ()
121- # macOS/Linux: Use system LZMA
122- message (STATUS "Using system LZMA library" )
123- find_package (LibLZMA REQUIRED )
124- if (LIBLZMA_FOUND AND TARGET LibLZMA::LibLZMA)
125- set (EXTRALIBS ${EXTRALIBS} LibLZMA::LibLZMA)
126- endif ()
69+ # Bundled liblzma - EXACT Raspberry Pi Imager approach
70+ set (LIBLZMA_VERSION "5.8.1" )
71+ FetchContent_Declare (xz
72+ GIT_REPOSITORY https://github.com/tukaani-project/xz.git
73+ GIT_TAG v${LIBLZMA_VERSION}
74+ ${USE_OVERRIDE_FIND_PACKAGE}
75+ )
76+ set (XZ_MICROLZMA_DECODER OFF CACHE BOOL "" FORCE )
77+ set (XZ_MICROLZMA_ENCODER OFF CACHE BOOL "" FORCE )
78+ set (XZ_LZIP_DECODER OFF CACHE BOOL "" FORCE )
79+ set (XZ_ENABLE_SANDBOX OFF CACHE BOOL "" FORCE )
80+ set (XZ_BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE )
81+ set (XZ_ENABLE_DOXYGEN OFF CACHE BOOL "" FORCE )
82+ set (XZ_DECODERS
83+ lzma1
84+ lzma2
85+ delta
86+ )
87+ set (XZ_ENCODERS
88+ lzma1
89+ lzma2
90+ delta
91+ )
92+ set (CREATE_LZMA_SYMLINKS OFF CACHE BOOL "" FORCE )
93+ set (CREATE_XZ_SYMLINKS OFF CACHE BOOL "" FORCE )
94+ FetchContent_GetProperties (xz)
95+ if (NOT xz_POPULATED)
96+ FetchContent_Populate (xz)
97+ add_subdirectory (${xz_SOURCE_DIR} ${xz_BINARY_DIR} EXCLUDE_FROM_ALL )
98+ endif ()
99+ unset (XZ_MICROLZMA_DECODER)
100+ unset (XZ_MICROLZMA_ENCODER)
101+ unset (XZ_LZIP_DECODER)
102+ unset (XZ_ENABLE_SANDBOX)
103+ unset (XZ_BUILD_SHARED_LIBS)
104+ unset (XZ_ENABLE_DOXYGEN)
105+ unset (CREATE_LZMA_SYMLINKS)
106+ unset (CREATE_XZ_SYMLINKS)
107+ set (LIBLZMA_FOUND true CACHE BOOL "" FORCE )
108+ set (LIBLZMA_INCLUDE_DIR ${xz_SOURCE_DIR} /src/liblzma/api CACHE PATH "" FORCE )
109+ set (LIBLZMA_INCLUDE_DIRS ${xz_SOURCE_DIR} /src/liblzma/api CACHE PATH "" FORCE )
110+ set (LIBLZMA_LIBRARY liblzma CACHE FILEPATH "" FORCE )
111+ set (LIBLZMA_LIBRARIES ${xz_BINARY_DIR} /liblzma.a CACHE FILEPATH "" FORCE )
112+ set (LIBLZMA_HAS_AUTO_DECODER true CACHE BOOL "" FORCE )
113+ set (LIBLZMA_HAS_EASY_ENCODER true CACHE BOOL "" FORCE )
114+ set (LIBLZMA_HAS_LZMA_PRESET true CACHE BOOL "" FORCE )
115+
116+ # Create namespace target for modern CMake compatibility
117+ if (TARGET liblzma AND NOT TARGET LibLZMA::LibLZMA)
118+ add_library (LibLZMA::LibLZMA ALIAS liblzma )
127119endif ()
128120
129121# Bundled zstd
@@ -239,7 +231,7 @@ set(ARCHIVE_BUILD_STATIC_LIBS ON CACHE BOOL "")
239231set (ARCHIVE_BUILD_EXAMPLES OFF CACHE BOOL "" )
240232set (ENABLE_ZSTD ON CACHE BOOL "" )
241233set (ENABLE_LZMA ON CACHE BOOL "" )
242- # libarchive will find our LZMA via the variables set above
234+ # Enable LZMA for libarchive - variables are set above with FORCE
243235set (POSIX_REGEX_LIB "libc" CACHE STRING "Regex library for libarchive" )
244236set (LIBARCHIVE_VERSION "3.8.1" )
245237
@@ -259,8 +251,9 @@ endif()
259251if (TARGET archive_static AND TARGET ZLIB::ZLIB)
260252 add_dependencies (archive_static ZLIB::ZLIB )
261253endif ()
262- if (TARGET archive_static AND TARGET cmliblzma)
263- add_dependencies (archive_static cmliblzma )
254+ # Ensure libarchive is built after liblzma
255+ if (TARGET archive_static AND TARGET liblzma)
256+ add_dependencies (archive_static liblzma )
264257endif ()
265258
266259unset (POSIX_REGEX_LIB)
0 commit comments