include(../../cmake/Utils.cmake) find_package(LibArchive QUIET) if (NOT DEFINED LibArchive_LIBRARIES) file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/deps) execute_process( COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} -DTOOLCHAIN_FILE=${TOOLCHAIN_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/ext -DZLIB_REPO=${ZLIB_REPO} -DZSTD_REPO=${ZSTD_REPO} -DLZ4_REPO=${LZ4_REPO} -DLIBARCHIVE_REPO=${LIBARCHIVE_REPO} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/deps ) execute_process( COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}/deps --config Release RESULT_VARIABLE build_result ) if (NOT ${build_result} EQUAL "0") message(FATAL_ERROR "Failed to build lib archive!") endif() else () message("Using system LibArchive") set(USING_SYSTEM_LIBARCHIVE ON PARENT_SCOPE) endif () function(LinkLibArchive TARGET) list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/deps/INSTALL) find_package(LibArchive REQUIRED) set(ZLIB_USE_STATIC_LIBS ON) find_package(ZLIB REQUIRED) find_package(LZ4 QUIET) find_package(zstd QUIET) find_package(BZip2 QUIET) find_package(LibLZMA QUIET) target_include_directories(${TARGET} PRIVATE ${LibArchive_INCLUDE_DIR}) target_link_libraries(${TARGET} PRIVATE ${LibArchive_LIBRARIES} ${ZLIB_LIBRARIES} ${zstd_LIBRARIES} ${LZ4_LIBRARIES}) if (BZIP2_LIBRARIES) target_link_libraries(${TARGET} PRIVATE ${BZIP2_LIBRARIES}) endif() if (LIBLZMA_LIBRARIES) target_link_libraries(${TARGET} PRIVATE ${LIBLZMA_LIBRARIES}) endif() endfunction()