forked from qt-creator/qt-creator
KArchive: Add creator specific changes
Change-Id: I8227bffd0e83d69d456e49a9d5f66a5ef00ba60e Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -169,6 +169,9 @@ def build_qtcreator(args, paths):
|
||||
'-DBUILD_DEVELOPER_DOCS=' + cmake_option(not args.no_docs),
|
||||
'-DBUILD_EXECUTABLE_SDKTOOL=' + cmake_option(args.with_sdk_tool),
|
||||
'-DQTC_FORCE_XCB=ON',
|
||||
'-DQTC_USE_SYSTEM_ZLIB=OFF',
|
||||
'-DQTC_USE_SYSTEM_BZIP2=OFF',
|
||||
'-DQTC_USE_SYSTEM_LZMA=OFF',
|
||||
'-DWITH_TESTS=' + cmake_option(args.with_tests)]
|
||||
cmake_args += common_cmake_arguments(args)
|
||||
|
||||
|
3
src/libs/3rdparty/CMakeLists.txt
vendored
3
src/libs/3rdparty/CMakeLists.txt
vendored
@@ -5,8 +5,7 @@ add_subdirectory(libptyqt)
|
||||
add_subdirectory(qtkeychain)
|
||||
add_subdirectory(lua)
|
||||
add_subdirectory(sol2)
|
||||
# Do not enable it yet, as the necessary changes are only introduced with the next patch.
|
||||
#add_subdirectory(karchive)
|
||||
add_subdirectory(karchive)
|
||||
|
||||
if(WIN32)
|
||||
add_subdirectory(winpty)
|
||||
|
422
src/libs/3rdparty/karchive/CMakeLists.txt
vendored
422
src/libs/3rdparty/karchive/CMakeLists.txt
vendored
@@ -1,152 +1,302 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
set(KF_VERSION "6.10.0") # handled by release scripts
|
||||
project(KArchive VERSION ${KF_VERSION})
|
||||
|
||||
include(FeatureSummary)
|
||||
find_package(ECM 6.9.0 NO_MODULE)
|
||||
set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules")
|
||||
feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES)
|
||||
|
||||
option(WITH_BZIP2 "Make bzip2 required" ON)
|
||||
option(WITH_LIBLZMA "Make liblzma required" ON)
|
||||
option(WITH_LIBZSTD "Make libzstd required" ON)
|
||||
|
||||
set(PKGCONFIG_REQUIRED_TYPE "")
|
||||
|
||||
if(WITH_BZIP2)
|
||||
set(BZIP2_PACKAGE_TYPE "REQUIRED")
|
||||
else()
|
||||
set(BZIP2_PACKAGE_TYPE "RECOMMENDED")
|
||||
endif()
|
||||
|
||||
if(WITH_LIBLZMA)
|
||||
set(LIBLZMA_PACKAGE_TYPE "REQUIRED")
|
||||
else()
|
||||
set(LIBLZMA_PACKAGE_TYPE "RECOMMENDED")
|
||||
endif()
|
||||
|
||||
if(WITH_LIBZSTD)
|
||||
set(PKGCONFIG_REQUIRED_TYPE "REQUIRED")
|
||||
set(LIBZSTD_REQUIRED_TYPE "REQUIRED")
|
||||
else()
|
||||
set(LIBZSTD_REQUIRED_TYPE "")
|
||||
endif()
|
||||
|
||||
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
|
||||
|
||||
include(KDEInstallDirs)
|
||||
include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE)
|
||||
include(KDECMakeSettings)
|
||||
include(KDEGitCommitHooks)
|
||||
|
||||
include(ECMGenerateExportHeader)
|
||||
|
||||
set(REQUIRED_QT_VERSION 6.6.0)
|
||||
find_package(Qt6Core ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE)
|
||||
|
||||
find_package(ZLIB)
|
||||
set_package_properties(ZLIB PROPERTIES
|
||||
URL "https://www.zlib.net"
|
||||
DESCRIPTION "Support for gzip compressed files and data streams"
|
||||
TYPE REQUIRED
|
||||
PURPOSE "Support for gzip compressed files and data streams"
|
||||
)
|
||||
option(QTC_USE_SYSTEM_BZIP2 "Use system bzip2 instead of included bzip2" ON)
|
||||
option(QTC_USE_SYSTEM_ZLIB "Use system zlib instead of included zlib" ON)
|
||||
option(QTC_USE_SYSTEM_LZMA "Use system liblzma instead of included liblzma" ON)
|
||||
|
||||
if (QTC_USE_SYSTEM_BZIP2)
|
||||
find_package(BZip2)
|
||||
set_package_properties(BZip2 PROPERTIES
|
||||
URL "https://sourceware.org/bzip2/"
|
||||
DESCRIPTION "Support for BZip2 compressed files and data streams"
|
||||
TYPE ${BZIP2_PACKAGE_TYPE}
|
||||
PURPOSE "Support for BZip2 compressed files and data streams"
|
||||
)
|
||||
if (NOT TARGET BZip2::BZip2)
|
||||
set(BZIP2_FALLBACK " (No system bzip2 found)")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (QTC_USE_SYSTEM_ZLIB)
|
||||
find_package(ZLIB)
|
||||
if (NOT TARGET ZLIB::ZLIB)
|
||||
set(ZLIB_FALLBACK " (No system zlib found)")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (QTC_USE_SYSTEM_LZMA)
|
||||
find_package(LibLZMA)
|
||||
set_package_properties(LibLZMA PROPERTIES
|
||||
URL "https://tukaani.org/xz/"
|
||||
DESCRIPTION "Support for xz compressed files and data streams"
|
||||
TYPE ${LIBLZMA_PACKAGE_TYPE}
|
||||
PURPOSE "Support for xz compressed files and data streams"
|
||||
)
|
||||
|
||||
|
||||
find_package(PkgConfig ${PKGCONFIG_REQUIRED_TYPE})
|
||||
if (PkgConfig_FOUND)
|
||||
pkg_check_modules(LibZstd ${LIBZSTD_REQUIRED_TYPE} IMPORTED_TARGET "libzstd")
|
||||
if (NOT TARGET LibLZMA::LibLZMA)
|
||||
set(LZMA_FALLBACK " (No system liblzma found)")
|
||||
endif()
|
||||
add_feature_info(LibZstd LibZstd_FOUND
|
||||
"Support for zstd compressed files and data streams"
|
||||
)
|
||||
|
||||
include(ECMSetupVersion)
|
||||
include(ECMGenerateHeaders)
|
||||
include(ECMQtDeclareLoggingCategory)
|
||||
include(ECMAddQch)
|
||||
include(ECMDeprecationSettings)
|
||||
include(ECMPoQmTools)
|
||||
|
||||
set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of deprecated API excluded from the build [default=0].")
|
||||
|
||||
option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF)
|
||||
add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)")
|
||||
|
||||
set(karchive_version_header "${CMAKE_CURRENT_BINARY_DIR}/src/karchive_version.h")
|
||||
ecm_setup_version(PROJECT
|
||||
VARIABLE_PREFIX KARCHIVE
|
||||
VERSION_HEADER "${karchive_version_header}"
|
||||
PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF6ArchiveConfigVersion.cmake"
|
||||
SOVERSION 6)
|
||||
|
||||
ecm_set_disabled_deprecation_versions(
|
||||
QT 6.8
|
||||
)
|
||||
|
||||
|
||||
add_subdirectory(src)
|
||||
if (BUILD_TESTING)
|
||||
add_subdirectory(autotests)
|
||||
add_subdirectory(tests)
|
||||
endif()
|
||||
|
||||
ecm_install_po_files_as_qm(poqm)
|
||||
|
||||
# create a Config.cmake and a ConfigVersion.cmake file and install them
|
||||
set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF6Archive")
|
||||
|
||||
if (BUILD_QCH)
|
||||
ecm_install_qch_export(
|
||||
TARGETS KF6Archive_QCH
|
||||
FILE KF6ArchiveQchTargets.cmake
|
||||
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
|
||||
COMPONENT Devel
|
||||
add_qtc_library(
|
||||
karchive
|
||||
DEPENDS Qt::Core
|
||||
PUBLIC_INCLUDES src
|
||||
SOURCES
|
||||
src/kar.cpp
|
||||
src/kar.h
|
||||
src/karchive_export.h
|
||||
src/karchive_p.h
|
||||
src/karchive.cpp
|
||||
src/karchive.h
|
||||
src/karchivedirectory.h
|
||||
src/karchiveentry.h
|
||||
src/karchivefile.h
|
||||
src/kcompressiondevice_p.h
|
||||
src/kcompressiondevice.cpp
|
||||
src/kcompressiondevice.h
|
||||
src/kfilterbase.cpp
|
||||
src/kfilterbase.h
|
||||
src/klimitediodevice_p.h
|
||||
src/klimitediodevice.cpp
|
||||
src/knonefilter.cpp
|
||||
src/knonefilter.h
|
||||
src/krcc.cpp
|
||||
src/krcc.h
|
||||
src/ktar.cpp
|
||||
src/ktar.h
|
||||
src/kzipfileentry.h
|
||||
src/loggingcategory.cpp
|
||||
src/loggingcategory.h
|
||||
)
|
||||
set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF6ArchiveQchTargets.cmake\")")
|
||||
|
||||
# ZIP support
|
||||
extend_qtc_library(
|
||||
karchive
|
||||
CONDITION QTC_USE_SYSTEM_ZLIB AND TARGET ZLIB::ZLIB
|
||||
FEATURE_INFO "KArchive (System) zlib support"
|
||||
DEPENDS ZLIB::ZLIB
|
||||
DEFINES
|
||||
HAVE_ZLIB_SUPPORT=1
|
||||
SOURCES
|
||||
src/kgzipfilter.cpp
|
||||
src/kgzipfilter.h
|
||||
src/kzip.cpp
|
||||
src/kzip.h
|
||||
)
|
||||
|
||||
extend_qtc_library(
|
||||
karchive
|
||||
CONDITION NOT QTC_USE_SYSTEM_ZLIB OR NOT TARGET ZLIB::ZLIB
|
||||
SKIP_AUTOMOC
|
||||
DEFINES
|
||||
HAVE_ZLIB_SUPPORT=1
|
||||
PUBLIC_DEFINES
|
||||
KARCHIVE_HAS_ZLIB
|
||||
FEATURE_INFO "KArchive zlib support${ZLIB_FALLBACK}"
|
||||
INCLUDES
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/
|
||||
SOURCES
|
||||
src/kgzipfilter.cpp
|
||||
src/kgzipfilter.h
|
||||
src/kzip.cpp
|
||||
src/kzip.h
|
||||
|
||||
# Embed zlib sources
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/adler32.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/compress.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/crc32.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/crc32.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/deflate.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/deflate.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/gzclose.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/gzguts.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/gzlib.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/gzread.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/gzwrite.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/infback.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/inffast.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/inffast.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/inffixed.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/inflate.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/inflate.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/inftrees.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/inftrees.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/trees.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/trees.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/uncompr.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/zconf.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/zlib.h
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/zutil.c
|
||||
${CMAKE_CURRENT_LIST_DIR}/../zlib/src/zutil.h
|
||||
)
|
||||
|
||||
# BZip2 support
|
||||
extend_qtc_library(karchive
|
||||
CONDITION QTC_USE_SYSTEM_BZIP2 AND TARGET BZip2::BZip2
|
||||
FEATURE_INFO "KArchive (System) BZip2 support"
|
||||
DEPENDS BZip2::BZip2
|
||||
DEFINES
|
||||
HAVE_BZIP2_SUPPORT=1
|
||||
NEED_BZ2_PREFIX=1
|
||||
PUBLIC_DEFINES
|
||||
KARCHIVE_HAS_BZIP2
|
||||
|
||||
SOURCES
|
||||
src/kbzip2filter.cpp
|
||||
)
|
||||
|
||||
extend_qtc_library(
|
||||
karchive
|
||||
CONDITION NOT QTC_USE_SYSTEM_BZIP2 OR NOT TARGET BZip2::BZip2
|
||||
INCLUDES ./3rdparty/bzip2
|
||||
FEATURE_INFO "KArchive BZip2 support${BZIP2_FALLBACK}"
|
||||
DEFINES
|
||||
HAVE_BZIP2_SUPPORT=1
|
||||
NEED_BZ2_PREFIX=1
|
||||
PUBLIC_DEFINES
|
||||
KARCHIVE_HAS_BZIP2
|
||||
|
||||
SOURCES
|
||||
src/kbzip2filter.cpp
|
||||
|
||||
# Embed bzip2 sources
|
||||
./3rdparty/bzip2/blocksort.c
|
||||
./3rdparty/bzip2/bzlib.c
|
||||
./3rdparty/bzip2/bzlib.h
|
||||
./3rdparty/bzip2/compress.c
|
||||
./3rdparty/bzip2/crctable.c
|
||||
./3rdparty/bzip2/decompress.c
|
||||
./3rdparty/bzip2/huffman.c
|
||||
./3rdparty/bzip2/randtable.c
|
||||
)
|
||||
|
||||
# libLZMA support
|
||||
if (NOT QTC_USE_SYSTEM_LZMA)
|
||||
include (CheckTypeSize)
|
||||
include (CheckIncludeFile)
|
||||
CHECK_TYPE_SIZE("size_t" SIZEOF_SIZE_T)
|
||||
CHECK_INCLUDE_FILE("stdbool.h" HAVE_STDBOOL_H)
|
||||
endif()
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
configure_package_config_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/KF6ArchiveConfig.cmake.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/KF6ArchiveConfig.cmake"
|
||||
INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
|
||||
extend_qtc_library(
|
||||
karchive
|
||||
CONDITION QTC_USE_SYSTEM_LZMA AND TARGET LibLZMA::LibLZMA
|
||||
FEATURE_INFO "KArchive (System) libLZMA support"
|
||||
DEPENDS LibLZMA::LibLZMA
|
||||
DEFINES
|
||||
HAVE_XZ_SUPPORT=1
|
||||
SOURCES
|
||||
src/kxzfilter.cpp
|
||||
src/kxzfilter.h
|
||||
src/k7zip.cpp
|
||||
src/k7zip.h
|
||||
)
|
||||
|
||||
install(FILES ${karchive_version_header}
|
||||
DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KArchive
|
||||
COMPONENT Devel)
|
||||
extend_qtc_library(
|
||||
karchive
|
||||
CONDITION NOT QTC_USE_SYSTEM_LZMA OR NOT TARGET LibLZMA::LibLZMA
|
||||
FEATURE_INFO "KArchive 7zip & xz support${LZMA_FALLBACK}"
|
||||
DEFINES
|
||||
HAVE_XZ_SUPPORT=1
|
||||
SIZEOF_SIZE_T=${SIZEOF_SIZE_T}
|
||||
HAVE_STDBOOL_H=${HAVE_STDBOOL_H}
|
||||
HAVE_CHECK_CRC32
|
||||
HAVE_CHECK_CRC64
|
||||
HAVE_CHECK_SHA256
|
||||
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/KF6ArchiveConfig.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/KF6ArchiveConfigVersion.cmake"
|
||||
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
|
||||
COMPONENT Devel)
|
||||
HAVE_ENCODER_LZMA1 HAVE_DECODER_LZMA1
|
||||
HAVE_ENCODER_LZMA2 HAVE_DECODER_LZMA2
|
||||
HAVE_ENCODER_X86 HAVE_DECODER_X86
|
||||
HAVE_ENCODER_POWERPC HAVE_DECODER_POWERPC
|
||||
HAVE_ENCODER_IA64 HAVE_DECODER_IA64
|
||||
HAVE_ENCODER_ARM HAVE_DECODER_ARM
|
||||
HAVE_ENCODER_ARMTHUMB HAVE_DECODER_ARMTHUMB
|
||||
HAVE_ENCODER_ARM64 HAVE_DECODER_ARM64
|
||||
HAVE_ENCODER_SPARC HAVE_DECODER_SPARC
|
||||
HAVE_ENCODER_RISCV HAVE_DECODER_RISCV
|
||||
HAVE_ENCODER_DELTA HAVE_DECODER_DELTA
|
||||
|
||||
install(EXPORT KF6ArchiveTargets
|
||||
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
|
||||
FILE KF6ArchiveTargets.cmake
|
||||
NAMESPACE KF6::)
|
||||
HAVE_MF_HC3 HAVE_MF_HC4 HAVE_MF_BT2 HAVE_MF_BT3 HAVE_MF_BT4
|
||||
PUBLIC_DEFINES
|
||||
KARCHIVE_HAS_XZ
|
||||
INCLUDES
|
||||
./3rdparty/xz/src/common
|
||||
./3rdparty/xz/src/liblzma/api
|
||||
./3rdparty/xz/src/liblzma/check
|
||||
./3rdparty/xz/src/liblzma/common
|
||||
./3rdparty/xz/src/liblzma/delta
|
||||
./3rdparty/xz/src/liblzma/lz
|
||||
./3rdparty/xz/src/liblzma/lzma
|
||||
./3rdparty/xz/src/liblzma/range_decoder
|
||||
./3rdparty/xz/src/liblzma/rangecoder
|
||||
./3rdparty/xz/src/liblzma/simple
|
||||
SOURCES
|
||||
src/kxzfilter.cpp
|
||||
src/kxzfilter.h
|
||||
src/k7zip.cpp
|
||||
src/k7zip.h
|
||||
|
||||
include(ECMFeatureSummary)
|
||||
ecm_feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
|
||||
# Embed liblzma sources
|
||||
./3rdparty/xz/src/liblzma/check/check.c
|
||||
./3rdparty/xz/src/liblzma/check/crc32_fast.c
|
||||
./3rdparty/xz/src/liblzma/check/crc32_table.c
|
||||
./3rdparty/xz/src/liblzma/check/crc64_fast.c
|
||||
./3rdparty/xz/src/liblzma/check/crc64_table.c
|
||||
./3rdparty/xz/src/liblzma/check/sha256.c
|
||||
./3rdparty/xz/src/liblzma/common/alone_decoder.c
|
||||
./3rdparty/xz/src/liblzma/common/auto_decoder.c
|
||||
./3rdparty/xz/src/liblzma/common/block_decoder.c
|
||||
./3rdparty/xz/src/liblzma/common/block_encoder.c
|
||||
./3rdparty/xz/src/liblzma/common/block_header_decoder.c
|
||||
./3rdparty/xz/src/liblzma/common/block_header_encoder.c
|
||||
./3rdparty/xz/src/liblzma/common/block_util.c
|
||||
./3rdparty/xz/src/liblzma/common/common.c
|
||||
./3rdparty/xz/src/liblzma/common/easy_encoder.c
|
||||
./3rdparty/xz/src/liblzma/common/easy_preset.c
|
||||
./3rdparty/xz/src/liblzma/common/filter_common.c
|
||||
./3rdparty/xz/src/liblzma/common/filter_decoder.c
|
||||
./3rdparty/xz/src/liblzma/common/filter_encoder.c
|
||||
./3rdparty/xz/src/liblzma/common/filter_flags_decoder.c
|
||||
./3rdparty/xz/src/liblzma/common/filter_flags_encoder.c
|
||||
./3rdparty/xz/src/liblzma/common/index_decoder.c
|
||||
./3rdparty/xz/src/liblzma/common/index_encoder.c
|
||||
./3rdparty/xz/src/liblzma/common/index_hash.c
|
||||
./3rdparty/xz/src/liblzma/common/index.c
|
||||
./3rdparty/xz/src/liblzma/common/stream_decoder.c
|
||||
./3rdparty/xz/src/liblzma/common/stream_encoder.c
|
||||
./3rdparty/xz/src/liblzma/common/stream_flags_common.c
|
||||
./3rdparty/xz/src/liblzma/common/stream_flags_decoder.c
|
||||
./3rdparty/xz/src/liblzma/common/stream_flags_encoder.c
|
||||
./3rdparty/xz/src/liblzma/common/vli_decoder.c
|
||||
./3rdparty/xz/src/liblzma/common/vli_encoder.c
|
||||
./3rdparty/xz/src/liblzma/common/vli_size.c
|
||||
./3rdparty/xz/src/liblzma/delta/delta_common.c
|
||||
./3rdparty/xz/src/liblzma/delta/delta_decoder.c
|
||||
./3rdparty/xz/src/liblzma/delta/delta_encoder.c
|
||||
./3rdparty/xz/src/liblzma/lz/lz_decoder.c
|
||||
./3rdparty/xz/src/liblzma/lz/lz_encoder_mf.c
|
||||
./3rdparty/xz/src/liblzma/lz/lz_encoder.c
|
||||
./3rdparty/xz/src/liblzma/lzma/fastpos_table.c
|
||||
./3rdparty/xz/src/liblzma/lzma/lzma_decoder.c
|
||||
./3rdparty/xz/src/liblzma/lzma/lzma_encoder_optimum_fast.c
|
||||
./3rdparty/xz/src/liblzma/lzma/lzma_encoder_optimum_normal.c
|
||||
./3rdparty/xz/src/liblzma/lzma/lzma_encoder_presets.c
|
||||
./3rdparty/xz/src/liblzma/lzma/lzma_encoder.c
|
||||
./3rdparty/xz/src/liblzma/lzma/lzma2_decoder.c
|
||||
./3rdparty/xz/src/liblzma/lzma/lzma2_encoder.c
|
||||
./3rdparty/xz/src/liblzma/rangecoder/price_table.c
|
||||
./3rdparty/xz/src/liblzma/simple/arm.c
|
||||
./3rdparty/xz/src/liblzma/simple/arm64.c
|
||||
./3rdparty/xz/src/liblzma/simple/armthumb.c
|
||||
./3rdparty/xz/src/liblzma/simple/ia64.c
|
||||
./3rdparty/xz/src/liblzma/simple/powerpc.c
|
||||
./3rdparty/xz/src/liblzma/simple/riscv.c
|
||||
./3rdparty/xz/src/liblzma/simple/simple_coder.c
|
||||
./3rdparty/xz/src/liblzma/simple/simple_decoder.c
|
||||
./3rdparty/xz/src/liblzma/simple/simple_encoder.c
|
||||
./3rdparty/xz/src/liblzma/simple/sparc.c
|
||||
./3rdparty/xz/src/liblzma/simple/x86.c
|
||||
)
|
||||
|
||||
kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
|
||||
# Zstd support
|
||||
# BSD License: https://github.com/facebook/zstd/blob/dev/LICENSE
|
||||
# Disabled for now as we don't need it and the packages are suboptimal
|
||||
#extend_qtc_library(
|
||||
# karchive
|
||||
# CONDITION TARGET PkgConfig::LibZstd
|
||||
# DEPENDS PkgConfig::LibZstd
|
||||
# FEATURE_INFO "KArchive Zstd support"
|
||||
# DEFINES
|
||||
# HAVE_ZSTD_SUPPORT=1
|
||||
# PUBLIC_DEFINES
|
||||
# KARCHIVE_HAS_ZSTD
|
||||
# SOURCES
|
||||
# src/kzstdfilter.cpp
|
||||
# src/kzstdfilter.h
|
||||
#)
|
||||
|
152
src/libs/3rdparty/karchive/CMakeLists.txt.kde
vendored
Normal file
152
src/libs/3rdparty/karchive/CMakeLists.txt.kde
vendored
Normal file
@@ -0,0 +1,152 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
set(KF_VERSION "6.10.0") # handled by release scripts
|
||||
project(KArchive VERSION ${KF_VERSION})
|
||||
|
||||
include(FeatureSummary)
|
||||
find_package(ECM 6.9.0 NO_MODULE)
|
||||
set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules")
|
||||
feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES)
|
||||
|
||||
option(WITH_BZIP2 "Make bzip2 required" ON)
|
||||
option(WITH_LIBLZMA "Make liblzma required" ON)
|
||||
option(WITH_LIBZSTD "Make libzstd required" ON)
|
||||
|
||||
set(PKGCONFIG_REQUIRED_TYPE "")
|
||||
|
||||
if(WITH_BZIP2)
|
||||
set(BZIP2_PACKAGE_TYPE "REQUIRED")
|
||||
else()
|
||||
set(BZIP2_PACKAGE_TYPE "RECOMMENDED")
|
||||
endif()
|
||||
|
||||
if(WITH_LIBLZMA)
|
||||
set(LIBLZMA_PACKAGE_TYPE "REQUIRED")
|
||||
else()
|
||||
set(LIBLZMA_PACKAGE_TYPE "RECOMMENDED")
|
||||
endif()
|
||||
|
||||
if(WITH_LIBZSTD)
|
||||
set(PKGCONFIG_REQUIRED_TYPE "REQUIRED")
|
||||
set(LIBZSTD_REQUIRED_TYPE "REQUIRED")
|
||||
else()
|
||||
set(LIBZSTD_REQUIRED_TYPE "")
|
||||
endif()
|
||||
|
||||
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
|
||||
|
||||
include(KDEInstallDirs)
|
||||
include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE)
|
||||
include(KDECMakeSettings)
|
||||
include(KDEGitCommitHooks)
|
||||
|
||||
include(ECMGenerateExportHeader)
|
||||
|
||||
set(REQUIRED_QT_VERSION 6.6.0)
|
||||
find_package(Qt6Core ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE)
|
||||
|
||||
find_package(ZLIB)
|
||||
set_package_properties(ZLIB PROPERTIES
|
||||
URL "https://www.zlib.net"
|
||||
DESCRIPTION "Support for gzip compressed files and data streams"
|
||||
TYPE REQUIRED
|
||||
PURPOSE "Support for gzip compressed files and data streams"
|
||||
)
|
||||
|
||||
find_package(BZip2)
|
||||
set_package_properties(BZip2 PROPERTIES
|
||||
URL "https://sourceware.org/bzip2/"
|
||||
DESCRIPTION "Support for BZip2 compressed files and data streams"
|
||||
TYPE ${BZIP2_PACKAGE_TYPE}
|
||||
PURPOSE "Support for BZip2 compressed files and data streams"
|
||||
)
|
||||
|
||||
find_package(LibLZMA)
|
||||
set_package_properties(LibLZMA PROPERTIES
|
||||
URL "https://tukaani.org/xz/"
|
||||
DESCRIPTION "Support for xz compressed files and data streams"
|
||||
TYPE ${LIBLZMA_PACKAGE_TYPE}
|
||||
PURPOSE "Support for xz compressed files and data streams"
|
||||
)
|
||||
|
||||
|
||||
find_package(PkgConfig ${PKGCONFIG_REQUIRED_TYPE})
|
||||
if (PkgConfig_FOUND)
|
||||
pkg_check_modules(LibZstd ${LIBZSTD_REQUIRED_TYPE} IMPORTED_TARGET "libzstd")
|
||||
endif()
|
||||
add_feature_info(LibZstd LibZstd_FOUND
|
||||
"Support for zstd compressed files and data streams"
|
||||
)
|
||||
|
||||
include(ECMSetupVersion)
|
||||
include(ECMGenerateHeaders)
|
||||
include(ECMQtDeclareLoggingCategory)
|
||||
include(ECMAddQch)
|
||||
include(ECMDeprecationSettings)
|
||||
include(ECMPoQmTools)
|
||||
|
||||
set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of deprecated API excluded from the build [default=0].")
|
||||
|
||||
option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF)
|
||||
add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)")
|
||||
|
||||
set(karchive_version_header "${CMAKE_CURRENT_BINARY_DIR}/src/karchive_version.h")
|
||||
ecm_setup_version(PROJECT
|
||||
VARIABLE_PREFIX KARCHIVE
|
||||
VERSION_HEADER "${karchive_version_header}"
|
||||
PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF6ArchiveConfigVersion.cmake"
|
||||
SOVERSION 6)
|
||||
|
||||
ecm_set_disabled_deprecation_versions(
|
||||
QT 6.8
|
||||
)
|
||||
|
||||
|
||||
add_subdirectory(src)
|
||||
if (BUILD_TESTING)
|
||||
add_subdirectory(autotests)
|
||||
add_subdirectory(tests)
|
||||
endif()
|
||||
|
||||
ecm_install_po_files_as_qm(poqm)
|
||||
|
||||
# create a Config.cmake and a ConfigVersion.cmake file and install them
|
||||
set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF6Archive")
|
||||
|
||||
if (BUILD_QCH)
|
||||
ecm_install_qch_export(
|
||||
TARGETS KF6Archive_QCH
|
||||
FILE KF6ArchiveQchTargets.cmake
|
||||
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
|
||||
COMPONENT Devel
|
||||
)
|
||||
set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF6ArchiveQchTargets.cmake\")")
|
||||
endif()
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
configure_package_config_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/KF6ArchiveConfig.cmake.in"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/KF6ArchiveConfig.cmake"
|
||||
INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
|
||||
)
|
||||
|
||||
install(FILES ${karchive_version_header}
|
||||
DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KArchive
|
||||
COMPONENT Devel)
|
||||
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/KF6ArchiveConfig.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/KF6ArchiveConfigVersion.cmake"
|
||||
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
|
||||
COMPONENT Devel)
|
||||
|
||||
install(EXPORT KF6ArchiveTargets
|
||||
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
|
||||
FILE KF6ArchiveTargets.cmake
|
||||
NAMESPACE KF6::)
|
||||
|
||||
include(ECMFeatureSummary)
|
||||
ecm_feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
|
||||
|
||||
kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
|
11
src/libs/3rdparty/karchive/src/k7zip.cpp
vendored
11
src/libs/3rdparty/karchive/src/k7zip.cpp
vendored
@@ -16,13 +16,15 @@
|
||||
#include <qplatformdefs.h>
|
||||
|
||||
#include "kcompressiondevice.h"
|
||||
#include "kfilterbase.h"
|
||||
#include "klimitediodevice_p.h"
|
||||
#include <kfilterbase.h>
|
||||
#include <kxzfilter.h>
|
||||
#include "kxzfilter.h"
|
||||
|
||||
#include "zlib.h"
|
||||
#include <memory>
|
||||
#include <time.h> // time()
|
||||
#include <zlib.h>
|
||||
|
||||
#undef uncompress
|
||||
|
||||
#ifndef QT_STAT_LNK
|
||||
#define QT_STAT_LNK 0120000
|
||||
@@ -2789,7 +2791,8 @@ bool K7Zip::closeArchive()
|
||||
QBuffer inBuffer(&enc);
|
||||
|
||||
KCompressionDevice flt(&inBuffer, false, KCompressionDevice::Xz);
|
||||
flt.open(QIODevice::WriteOnly);
|
||||
if(!flt.open(QIODevice::WriteOnly))
|
||||
return false;
|
||||
|
||||
KFilterBase *filter = flt.filterBase();
|
||||
|
||||
|
16
src/libs/3rdparty/karchive/src/karchive.cpp
vendored
16
src/libs/3rdparty/karchive/src/karchive.cpp
vendored
@@ -964,7 +964,10 @@ static bool sortByPosition(const KArchiveFile *file1, const KArchiveFile *file2)
|
||||
return file1->position() < file2->position();
|
||||
}
|
||||
|
||||
bool KArchiveDirectory::copyTo(const QString &dest, bool recursiveCopy) const
|
||||
bool KArchiveDirectory::copyTo(
|
||||
const QString &dest,
|
||||
bool recursiveCopy,
|
||||
std::function<bool(const KArchiveFile *, QString)> progress) const
|
||||
{
|
||||
QDir root;
|
||||
const QString destDir(QDir(dest).absolutePath()); // get directory path without any "." or ".."
|
||||
@@ -1029,11 +1032,16 @@ bool KArchiveDirectory::copyTo(const QString &dest, bool recursiveCopy) const
|
||||
}
|
||||
} while (!dirStack.isEmpty());
|
||||
|
||||
std::sort(fileList.begin(), fileList.end(), sortByPosition); // sort on d->pos, so we have a linear access
|
||||
std::sort(
|
||||
fileList.begin(),
|
||||
fileList.end(),
|
||||
sortByPosition); // sort on d->pos, so we have a linear access
|
||||
|
||||
for (QList<const KArchiveFile *>::const_iterator it = fileList.constBegin(), end = fileList.constEnd(); it != end; ++it) {
|
||||
const KArchiveFile *f = *it;
|
||||
for (const KArchiveFile *f : fileList) {
|
||||
qint64 pos = f->position();
|
||||
if (progress)
|
||||
if (!progress(f, fileToDir[pos]))
|
||||
return false;
|
||||
if (!f->copyTo(fileToDir[pos])) {
|
||||
return false;
|
||||
}
|
||||
|
@@ -12,8 +12,6 @@
|
||||
#include "kgzipfilter.h"
|
||||
#include "knonefilter.h"
|
||||
|
||||
#include "config-compression.h"
|
||||
|
||||
#if HAVE_BZIP2_SUPPORT
|
||||
#include "kbzip2filter.h"
|
||||
#endif
|
||||
|
@@ -13,6 +13,9 @@
|
||||
#include <time.h>
|
||||
#include <zlib.h>
|
||||
|
||||
#undef uncompress
|
||||
#undef compress
|
||||
|
||||
/* gzip flag byte */
|
||||
#define ORIG_NAME 0x08 /* bit 3 set: original file name present */
|
||||
|
||||
|
2
src/libs/3rdparty/karchive/src/ktar.cpp
vendored
2
src/libs/3rdparty/karchive/src/ktar.cpp
vendored
@@ -102,7 +102,7 @@ bool KTar::createDevice(QIODevice::OpenMode mode)
|
||||
if (f.open(QIODevice::ReadOnly)) {
|
||||
mime = db.mimeTypeForData(&f);
|
||||
}
|
||||
if (!mime.isValid()) {
|
||||
if (!mime.isValid() || mime.name() == QStringLiteral("application/octet-stream")) {
|
||||
// Unable to determine mimetype from contents, get it from file name
|
||||
mime = db.mimeTypeForFile(fileName(), QMimeDatabase::MatchExtension);
|
||||
}
|
||||
|
78
src/libs/3rdparty/karchive/src/kzip.cpp
vendored
78
src/libs/3rdparty/karchive/src/kzip.cpp
vendored
@@ -25,6 +25,16 @@
|
||||
#include <time.h>
|
||||
#include <zlib.h>
|
||||
|
||||
// "Our" zip zconf.h defines "Z_PREFIX", so we need to undef it here, as this class has another
|
||||
// function called crc32. Instead of a define, we create a forwarder function.
|
||||
#ifdef Z_PREFIX
|
||||
#undef crc32
|
||||
uLong crc32(uLong crc, const Bytef *buf, uInt len)
|
||||
{
|
||||
return z_crc32(crc, buf, len);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef QT_STAT_LNK
|
||||
#define QT_STAT_LNK 0120000
|
||||
#endif // QT_STAT_LNK
|
||||
@@ -835,32 +845,31 @@ bool KZip::closeArchive()
|
||||
qint64 centraldiroffset = device()->pos();
|
||||
// qCDebug(KArchiveLog) << "closearchive: centraldiroffset: " << centraldiroffset;
|
||||
qint64 atbackup = centraldiroffset;
|
||||
QMutableListIterator<KZipFileEntry *> it(d->m_fileList);
|
||||
|
||||
while (it.hasNext()) {
|
||||
for (KZipFileEntry *entry : d->m_fileList) {
|
||||
// set crc and compressed size in each local file header
|
||||
it.next();
|
||||
if (!device()->seek(it.value()->headerStart() + 14)) {
|
||||
setErrorString(tr("Could not seek to next file header: %1").arg(device()->errorString()));
|
||||
if (!device()->seek(entry->headerStart() + 14)) {
|
||||
setErrorString(
|
||||
tr("Could not seek to next file header: %1").arg(device()->errorString()));
|
||||
return false;
|
||||
}
|
||||
// qCDebug(KArchiveLog) << "closearchive setcrcandcsize: fileName:"
|
||||
// << it.value()->path()
|
||||
// << "encoding:" << it.value()->encoding();
|
||||
// << entry->path()
|
||||
// << "encoding:" << entry->encoding();
|
||||
|
||||
uLong mycrc = it.value()->crc32();
|
||||
uLong mycrc = entry->crc32();
|
||||
buffer[0] = char(mycrc); // crc checksum, at headerStart+14
|
||||
buffer[1] = char(mycrc >> 8);
|
||||
buffer[2] = char(mycrc >> 16);
|
||||
buffer[3] = char(mycrc >> 24);
|
||||
|
||||
int mysize1 = it.value()->compressedSize();
|
||||
int mysize1 = entry->compressedSize();
|
||||
buffer[4] = char(mysize1); // compressed file size, at headerStart+18
|
||||
buffer[5] = char(mysize1 >> 8);
|
||||
buffer[6] = char(mysize1 >> 16);
|
||||
buffer[7] = char(mysize1 >> 24);
|
||||
|
||||
int myusize = it.value()->size();
|
||||
int myusize = entry->size();
|
||||
buffer[8] = char(myusize); // uncompressed file size, at headerStart+22
|
||||
buffer[9] = char(myusize >> 8);
|
||||
buffer[10] = char(myusize >> 16);
|
||||
@@ -873,13 +882,11 @@ bool KZip::closeArchive()
|
||||
}
|
||||
device()->seek(atbackup);
|
||||
|
||||
it.toFront();
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
// qCDebug(KArchiveLog) << "fileName:" << it.value()->path()
|
||||
// << "encoding:" << it.value()->encoding();
|
||||
for (KZipFileEntry *entry : d->m_fileList) {
|
||||
// qCDebug(KArchiveLog) << "fileName:" << entry->path()
|
||||
// << "encoding:" << entry->encoding();
|
||||
|
||||
QByteArray path = QFile::encodeName(it.value()->path());
|
||||
QByteArray path = QFile::encodeName(entry->path());
|
||||
|
||||
const int extra_field_len = (d->m_extraField == ModificationTime) ? 9 : 0;
|
||||
const int bufferSize = extra_field_len + path.length() + 46;
|
||||
@@ -899,24 +906,24 @@ bool KZip::closeArchive()
|
||||
// memcpy(buffer, head, sizeof(head));
|
||||
memmove(buffer, head, sizeof(head));
|
||||
|
||||
buffer[10] = char(it.value()->encoding()); // compression method
|
||||
buffer[11] = char(it.value()->encoding() >> 8);
|
||||
buffer[10] = char(entry->encoding()); // compression method
|
||||
buffer[11] = char(entry->encoding() >> 8);
|
||||
|
||||
transformToMsDos(it.value()->date(), &buffer[12]);
|
||||
transformToMsDos(entry->date(), &buffer[12]);
|
||||
|
||||
uLong mycrc = it.value()->crc32();
|
||||
uLong mycrc = entry->crc32();
|
||||
buffer[16] = char(mycrc); // crc checksum
|
||||
buffer[17] = char(mycrc >> 8);
|
||||
buffer[18] = char(mycrc >> 16);
|
||||
buffer[19] = char(mycrc >> 24);
|
||||
|
||||
int mysize1 = it.value()->compressedSize();
|
||||
int mysize1 = entry->compressedSize();
|
||||
buffer[20] = char(mysize1); // compressed file size
|
||||
buffer[21] = char(mysize1 >> 8);
|
||||
buffer[22] = char(mysize1 >> 16);
|
||||
buffer[23] = char(mysize1 >> 24);
|
||||
|
||||
int mysize = it.value()->size();
|
||||
int mysize = entry->size();
|
||||
buffer[24] = char(mysize); // uncompressed file size
|
||||
buffer[25] = char(mysize >> 8);
|
||||
buffer[26] = char(mysize >> 16);
|
||||
@@ -928,10 +935,10 @@ bool KZip::closeArchive()
|
||||
buffer[30] = char(extra_field_len);
|
||||
buffer[31] = char(extra_field_len >> 8);
|
||||
|
||||
buffer[40] = char(it.value()->permissions());
|
||||
buffer[41] = char(it.value()->permissions() >> 8);
|
||||
buffer[40] = char(entry->permissions());
|
||||
buffer[41] = char(entry->permissions() >> 8);
|
||||
|
||||
int myhst = it.value()->headerStart();
|
||||
int myhst = entry->headerStart();
|
||||
buffer[42] = char(myhst); // relative offset of local header
|
||||
buffer[43] = char(myhst >> 8);
|
||||
buffer[44] = char(myhst >> 16);
|
||||
@@ -952,7 +959,7 @@ bool KZip::closeArchive()
|
||||
extfield[4] = 1 | 2 | 4; // specify flags from local field
|
||||
// (unless I misread the spec)
|
||||
// provide only modification time
|
||||
unsigned long time = (unsigned long)it.value()->date().toSecsSinceEpoch();
|
||||
unsigned long time = (unsigned long) entry->date().toSecsSinceEpoch();
|
||||
extfield[5] = char(time);
|
||||
extfield[6] = char(time >> 8);
|
||||
extfield[7] = char(time >> 16);
|
||||
@@ -1087,18 +1094,17 @@ bool KZip::doPrepareWriting(const QString &name,
|
||||
// to save, so that we don't have duplicate file entries when viewing the zip
|
||||
// with konqi...
|
||||
// CAUTION: the old file itself is still in the zip and won't be removed !!!
|
||||
QMutableListIterator<KZipFileEntry *> it(d->m_fileList);
|
||||
// qCDebug(KArchiveLog) << "fileName to write: " << name;
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
// qCDebug(KArchiveLog) << "prepfileName: " << it.value()->path();
|
||||
if (name == it.value()->path()) {
|
||||
for (auto it = d->m_fileList.begin(); it != d->m_fileList.end();) {
|
||||
// qCDebug(KArchiveLog) << "prepfileName: " << entry->path();
|
||||
if (name == (*it)->path()) {
|
||||
// also remove from the parentDir
|
||||
parentDir->removeEntry(it.value());
|
||||
// qCDebug(KArchiveLog) << "removing following entry: " << it.value()->path();
|
||||
delete it.value();
|
||||
it.remove();
|
||||
}
|
||||
parentDir->removeEntry(*it);
|
||||
// qCDebug(KArchiveLog) << "removing following entry: " << entry->path();
|
||||
delete *it;
|
||||
it = d->m_fileList.erase(it);
|
||||
} else
|
||||
it++;
|
||||
}
|
||||
|
||||
// construct a KZipFileEntry and add it to list
|
||||
|
Reference in New Issue
Block a user