early-access version 2853

This commit is contained in:
pineappleEA
2022-07-23 03:01:36 +02:00
parent 1f2b5081b5
commit 1f111bb69c
8955 changed files with 418777 additions and 999 deletions

View File

@@ -0,0 +1,14 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b2634da..d037071 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -155,9 +155,6 @@ IF (MSVC)
#################################################################
# Set compile flags for debug build.
# This is added into CMAKE_C_FLAGS when CMAKE_BUILD_TYPE is "Debug"
- # Enable level 4 C4062: The enumerate has no associated handler in a switch
- # statement and there is no default that can catch it.
- SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /w14062")
# Enable level 4 C4254: A larger bit field was assigned to a smaller bit
# field.
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /w14254")

View File

@@ -0,0 +1,157 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b2634da6..0d846877 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -148,10 +148,6 @@ IF (CMAKE_C_COMPILER_ID MATCHES "^XL$")
SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -qinfo=pro:use")
ENDIF(CMAKE_C_COMPILER_ID MATCHES "^XL$")
IF (MSVC)
- if (ENABLE_WERROR)
- # /WX option is the same as gcc's -Werror option.
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX")
- endif ()
#################################################################
# Set compile flags for debug build.
# This is added into CMAKE_C_FLAGS when CMAKE_BUILD_TYPE is "Debug"
@@ -382,8 +378,6 @@ IF(DEFINED __GNUWIN32PATH AND EXISTS "${__GNUWIN32PATH}")
# Maybe DLL path is "C:/Program Files/GnuWin32/bin".
# The zlib and the bzip2 Setup program have installed programs and DLLs into
# "C:/Program Files/GnuWin32" by default.
- # This is convenience setting for Windows.
- SET(CMAKE_PREFIX_PATH ${__GNUWIN32PATH} $(CMAKE_PREFIX_PATH))
#
# If you didn't use Setup program or installed into nonstandard path,
# cmake cannot find out your zlib or bzip2 libraries and include files,
@@ -420,14 +414,7 @@ IF(ZLIB_FOUND)
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
LIST(APPEND ADDITIONAL_LIBS ${ZLIB_LIBRARIES})
IF(WIN32 AND NOT CYGWIN)
- #
- # Test if ZLIB_WINAPI macro is needed to use.
- #
- TRY_MACRO_FOR_LIBRARY(
- "${ZLIB_INCLUDE_DIR}" "${ZLIB_LIBRARIES}"
- RUNS
- "#include <zlib.h>\nint main() {uLong f = zlibCompileFlags(); return (f&(1U<<10))?0:-1; }"
- ZLIB_WINAPI)
+ SET(ZLIB_WINAPI OFF) # skip following test, it crashes with weird message box
IF(ZLIB_WINAPI)
ADD_DEFINITIONS(-DZLIB_WINAPI)
ELSE(ZLIB_WINAPI)
@@ -487,8 +474,6 @@ IF(LIBLZMA_FOUND)
SET(HAVE_LIBLZMA 1)
SET(HAVE_LZMA_H 1)
CMAKE_PUSH_CHECK_STATE()
- SET(CMAKE_REQUIRED_INCLUDES ${LIBLZMA_INCLUDE_DIR})
- SET(CMAKE_REQUIRED_LIBRARIES ${LIBLZMA_LIBRARIES})
INCLUDE_DIRECTORIES(${LIBLZMA_INCLUDE_DIRS})
LIST(APPEND ADDITIONAL_LIBS ${LIBLZMA_LIBRARIES})
# Test if a macro is needed for the library.
@@ -1356,7 +1341,7 @@ CHECK_FUNCTION_EXISTS_GLIBC(localtime_r HAVE_LOCALTIME_R)
CHECK_FUNCTION_EXISTS_GLIBC(lstat HAVE_LSTAT)
CHECK_FUNCTION_EXISTS_GLIBC(lutimes HAVE_LUTIMES)
CHECK_FUNCTION_EXISTS_GLIBC(mbrtowc HAVE_MBRTOWC)
-CHECK_FUNCTION_EXISTS_GLIBC(memmove HAVE_MEMMOVE)
+set(HAVE_MEMMOVE 1)
CHECK_FUNCTION_EXISTS_GLIBC(mkdir HAVE_MKDIR)
CHECK_FUNCTION_EXISTS_GLIBC(mkfifo HAVE_MKFIFO)
CHECK_FUNCTION_EXISTS_GLIBC(mknod HAVE_MKNOD)
@@ -1388,11 +1373,11 @@ CHECK_FUNCTION_EXISTS_GLIBC(utime HAVE_UTIME)
CHECK_FUNCTION_EXISTS_GLIBC(utimes HAVE_UTIMES)
CHECK_FUNCTION_EXISTS_GLIBC(utimensat HAVE_UTIMENSAT)
CHECK_FUNCTION_EXISTS_GLIBC(vfork HAVE_VFORK)
-CHECK_FUNCTION_EXISTS_GLIBC(wcrtomb HAVE_WCRTOMB)
-CHECK_FUNCTION_EXISTS_GLIBC(wcscmp HAVE_WCSCMP)
-CHECK_FUNCTION_EXISTS_GLIBC(wcscpy HAVE_WCSCPY)
-CHECK_FUNCTION_EXISTS_GLIBC(wcslen HAVE_WCSLEN)
-CHECK_FUNCTION_EXISTS_GLIBC(wctomb HAVE_WCTOMB)
+set(HAVE_WCRTOMB 1)
+set(HAVE_WCSCMP 1)
+set(HAVE_WCSCPY 1)
+set(HAVE_WCSLEN 1)
+set(HAVE_WCTOMB 1)
CHECK_FUNCTION_EXISTS_GLIBC(_ctime64_s HAVE__CTIME64_S)
CHECK_FUNCTION_EXISTS_GLIBC(_fseeki64 HAVE__FSEEKI64)
CHECK_FUNCTION_EXISTS_GLIBC(_get_timezone HAVE__GET_TIMEZONE)
@@ -1405,10 +1390,10 @@ CHECK_FUNCTION_EXISTS(cygwin_conv_path HAVE_CYGWIN_CONV_PATH)
CHECK_FUNCTION_EXISTS(fseeko HAVE_FSEEKO)
CHECK_FUNCTION_EXISTS(strerror_r HAVE_STRERROR_R)
CHECK_FUNCTION_EXISTS(strftime HAVE_STRFTIME)
-CHECK_FUNCTION_EXISTS(vprintf HAVE_VPRINTF)
-CHECK_FUNCTION_EXISTS(wmemcmp HAVE_WMEMCMP)
-CHECK_FUNCTION_EXISTS(wmemcpy HAVE_WMEMCPY)
-CHECK_FUNCTION_EXISTS(wmemmove HAVE_WMEMMOVE)
+set(HAVE_VPRINTF 1)
+set(HAVE_WMEMCMP 1)
+set(HAVE_WMEMCPY 1)
+set(HAVE_WMEMMOVE 1)
CMAKE_POP_CHECK_STATE() # Restore the state of the variables
@@ -1449,6 +1434,9 @@ CHECK_C_SOURCE_COMPILES(
"#include <sys/sysmacros.h>\nint main() { return major(256); }"
MAJOR_IN_SYSMACROS)
+CMAKE_PUSH_CHECK_STATE()
+SET(CMAKE_REQUIRED_INCLUDES ${LIBLZMA_INCLUDE_DIR})
+SET(CMAKE_REQUIRED_LIBRARIES ${LIBLZMA_LIBRARIES})
IF(ENABLE_LZMA)
CHECK_C_SOURCE_COMPILES(
"#include <lzma.h>\n#if LZMA_VERSION < 50020000\n#error unsupported\n#endif\nint main(void){lzma_stream_encoder_mt(0, 0); return 0;}"
@@ -1456,6 +1444,7 @@ CHECK_C_SOURCE_COMPILES(
ELSE()
SET(HAVE_LZMA_STREAM_ENCODER_MT 0)
ENDIF(ENABLE_LZMA)
+CMAKE_POP_CHECK_STATE()
IF(HAVE_STRERROR_R)
SET(HAVE_DECL_STRERROR_R 1)
@@ -2018,7 +2007,7 @@ INCLUDE(CreatePkgConfigFile)
#
# Register installation of PDF documents.
#
-IF(WIN32 AND NOT CYGWIN)
+IF(0)
#
# On Windows platform, It's better that we install PDF documents
# on one's computer.
diff --git a/libarchive/CMakeLists.txt b/libarchive/CMakeLists.txt
index 9389bbc9..c34a42b2 100644
--- a/libarchive/CMakeLists.txt
+++ b/libarchive/CMakeLists.txt
@@ -236,28 +236,22 @@ ELSEIF(ARCHIVE_ACL_SUNOS)
ENDIF()
# Libarchive is a shared library
-ADD_LIBRARY(archive SHARED ${libarchive_SOURCES} ${include_HEADERS})
+ADD_LIBRARY(archive ${libarchive_SOURCES} ${include_HEADERS})
TARGET_INCLUDE_DIRECTORIES(archive PUBLIC .)
TARGET_LINK_LIBRARIES(archive ${ADDITIONAL_LIBS})
-SET_TARGET_PROPERTIES(archive PROPERTIES SOVERSION ${SOVERSION})
-
-# archive_static is a static library
-ADD_LIBRARY(archive_static STATIC ${libarchive_SOURCES} ${include_HEADERS})
-TARGET_LINK_LIBRARIES(archive_static ${ADDITIONAL_LIBS})
-SET_TARGET_PROPERTIES(archive_static PROPERTIES COMPILE_DEFINITIONS
+IF(BUILD_SHARED_LIBS)
+ SET_TARGET_PROPERTIES(archive PROPERTIES SOVERSION ${SOVERSION})
+ELSE()
+ SET_TARGET_PROPERTIES(archive PROPERTIES COMPILE_DEFINITIONS
LIBARCHIVE_STATIC)
-# On Posix systems, libarchive.so and libarchive.a can co-exist.
-IF(NOT WIN32 OR CYGWIN)
- SET_TARGET_PROPERTIES(archive_static PROPERTIES OUTPUT_NAME archive)
-ENDIF(NOT WIN32 OR CYGWIN)
+ENDIF()
IF(ENABLE_INSTALL)
# How to install the libraries
- INSTALL(TARGETS archive archive_static
+ INSTALL(TARGETS archive
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib)
- INSTALL_MAN(${libarchive_MANS})
INSTALL(FILES ${include_HEADERS} DESTINATION include)
ENDIF()

View File

@@ -0,0 +1,15 @@
diff --git a/libarchive/archive_random.c b/libarchive/archive_random.c
index 65ea691..63217ec 100644
--- a/libarchive/archive_random.c
+++ b/libarchive/archive_random.c
@@ -48,6 +48,10 @@ __FBSDID("$FreeBSD$");
#include <sys/time.h>
#endif
#ifdef HAVE_PTHREAD_H
+#ifdef __GNUC__
+#define _GNU_SOURCE
+#include <sched.h>
+#endif
#include <pthread.h>
#endif

View File

@@ -0,0 +1,105 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d49db1b82..cbc2b7102 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -476,6 +476,8 @@ ENDIF()
IF(LIBLZMA_FOUND)
SET(HAVE_LIBLZMA 1)
SET(HAVE_LZMA_H 1)
+ LIST(APPEND ADDITIONAL_LIBS LibLZMA::LibLZMA)
+elseif(0)
CMAKE_PUSH_CHECK_STATE()
INCLUDE_DIRECTORIES(${LIBLZMA_INCLUDE_DIRS})
LIST(APPEND ADDITIONAL_LIBS ${LIBLZMA_LIBRARIES})
@@ -556,27 +558,15 @@ ENDIF(LIBB2_FOUND)
# Find LZ4
#
IF(ENABLE_LZ4)
- IF (LZ4_INCLUDE_DIR)
- # Already in cache, be silent
- SET(LZ4_FIND_QUIETLY TRUE)
- ENDIF (LZ4_INCLUDE_DIR)
-
- FIND_PATH(LZ4_INCLUDE_DIR lz4.h)
- FIND_LIBRARY(LZ4_LIBRARY NAMES lz4 liblz4)
- INCLUDE(FindPackageHandleStandardArgs)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZ4 DEFAULT_MSG LZ4_LIBRARY LZ4_INCLUDE_DIR)
+ FIND_PACKAGE(lz4 CONFIG REQUIRED)
ELSE(ENABLE_LZ4)
SET(LZ4_FOUND FALSE) # Override cached value
ENDIF(ENABLE_LZ4)
IF(LZ4_FOUND)
+ SET(HAVE_LZ4HC_H 1)
SET(HAVE_LIBLZ4 1)
SET(HAVE_LZ4_H 1)
- CMAKE_PUSH_CHECK_STATE() # Save the state of the variables
- SET(CMAKE_REQUIRED_INCLUDES ${LZ4_INCLUDE_DIR})
- CHECK_INCLUDE_FILES("lz4hc.h" HAVE_LZ4HC_H)
- CMAKE_POP_CHECK_STATE() # Restore the state of the variables
- INCLUDE_DIRECTORIES(${LZ4_INCLUDE_DIR})
- LIST(APPEND ADDITIONAL_LIBS ${LZ4_LIBRARY})
+ LIST(APPEND ADDITIONAL_LIBS lz4::lz4)
#
# TODO: test for static library.
#
@@ -587,31 +577,19 @@ MARK_AS_ADVANCED(CLEAR LZ4_LIBRARY)
# Find Zstd
#
IF(ENABLE_ZSTD)
- IF (ZSTD_INCLUDE_DIR)
- # Already in cache, be silent
- SET(ZSTD_FIND_QUIETLY TRUE)
- ENDIF (ZSTD_INCLUDE_DIR)
-
- FIND_PATH(ZSTD_INCLUDE_DIR zstd.h)
- FIND_LIBRARY(ZSTD_LIBRARY NAMES zstd libzstd)
- INCLUDE(FindPackageHandleStandardArgs)
- FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZSTD DEFAULT_MSG ZSTD_LIBRARY ZSTD_INCLUDE_DIR)
+ FIND_PACKAGE(zstd CONFIG REQUIRED)
ELSE(ENABLE_ZSTD)
SET(ZSTD_FOUND FALSE) # Override cached value
ENDIF(ENABLE_ZSTD)
-IF(ZSTD_FOUND)
- SET(HAVE_ZSTD_H 1)
- INCLUDE_DIRECTORIES(${ZSTD_INCLUDE_DIR})
- LIST(APPEND ADDITIONAL_LIBS ${ZSTD_LIBRARY})
- CMAKE_PUSH_CHECK_STATE()
- SET(CMAKE_REQUIRED_LIBRARIES ${ZSTD_LIBRARY})
- SET(CMAKE_REQUIRED_INCLUDES ${ZSTD_INCLUDE_DIR})
- CHECK_FUNCTION_EXISTS(ZSTD_decompressStream HAVE_LIBZSTD)
- CHECK_FUNCTION_EXISTS(ZSTD_compressStream HAVE_LIBZSTD_COMPRESSOR)
- #
- # TODO: test for static library.
- #
- CMAKE_POP_CHECK_STATE()
+IF(zstd_FOUND)
+ SET(HAVE_LIBZSTD 1)
+ IF(TARGET zstd::libzstd_shared)
+ LIST(APPEND ADDITIONAL_LIBS zstd::libzstd_shared)
+ SET(CMAKE_REQUIRED_LIBRARIES zstd::libzstd_shared)
+ ELSE(TARGET zstd::libzstd_shared)
+ LIST(APPEND ADDITIONAL_LIBS zstd::libzstd_static)
+ SET(CMAKE_REQUIRED_LIBRARIES zstd::libzstd_static)
+ ENDIF(TARGET zstd::libzstd_shared)
ENDIF(ZSTD_FOUND)
MARK_AS_ADVANCED(CLEAR ZSTD_INCLUDE_DIR)
MARK_AS_ADVANCED(CLEAR ZSTD_LIBRARY)
@@ -783,8 +761,7 @@ IF(ENABLE_OPENSSL AND NOT CMAKE_SYSTEM_NAME MATCHES "Darwin")
FIND_PACKAGE(OpenSSL)
IF(OPENSSL_FOUND)
SET(HAVE_LIBCRYPTO 1)
- INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
- LIST(APPEND ADDITIONAL_LIBS ${OPENSSL_CRYPTO_LIBRARY})
+ LIST(APPEND ADDITIONAL_LIBS OpenSSL::Crypto)
ENDIF(OPENSSL_FOUND)
ELSE()
SET(OPENSSL_FOUND FALSE) # Override cached value
@@ -903,7 +880,7 @@ main(int argc, char **argv)
IF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND)
INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
LIST(APPEND ADDITIONAL_LIBS ${OPENSSL_LIBRARIES})
- LIST(REMOVE_DUPLICATES ADDITIONAL_LIBS)
+ #LIST(REMOVE_DUPLICATES ADDITIONAL_LIBS)
ENDIF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND)
ENDIF (ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION})
ENDIF(NOT ARCHIVE_CRYPTO_${ALGORITHM})

View File

@@ -0,0 +1,238 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7b6f0ad..18cf15c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -397,6 +397,8 @@ IF(DEFINED __GNUWIN32PATH AND EXISTS "${__GNUWIN32PATH}")
ENDIF(DEFINED __GNUWIN32PATH AND EXISTS "${__GNUWIN32PATH}")
SET(ADDITIONAL_LIBS "")
+SET(LIBARCHIVE_LIBS_PRIVATE "") # additional libs for which the pc module is unknown
+SET(LIBARCHIVE_REQUIRES_PRIVATE "") # pc modules for additonal libs
#
# Find ZLIB
#
@@ -410,6 +412,7 @@ IF(ZLIB_FOUND)
SET(HAVE_ZLIB_H 1)
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR})
LIST(APPEND ADDITIONAL_LIBS ${ZLIB_LIBRARIES})
+ STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " zlib")
IF(WIN32 AND NOT CYGWIN)
SET(ZLIB_WINAPI OFF) # skip following test, it crashes with weird message box
IF(ZLIB_WINAPI)
@@ -442,6 +445,7 @@ IF(BZIP2_FOUND)
SET(HAVE_BZLIB_H 1)
INCLUDE_DIRECTORIES(${BZIP2_INCLUDE_DIR})
LIST(APPEND ADDITIONAL_LIBS ${BZIP2_LIBRARIES})
+ STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " bzip2")
# Test if a macro is needed for the library.
TRY_MACRO_FOR_LIBRARY(
"${BZIP2_INCLUDE_DIR}" "${BZIP2_LIBRARIES}"
@@ -471,6 +475,7 @@ IF(LIBLZMA_FOUND)
SET(HAVE_LIBLZMA 1)
SET(HAVE_LZMA_H 1)
LIST(APPEND ADDITIONAL_LIBS LibLZMA::LibLZMA)
+ STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " liblzma")
elseif(0)
CMAKE_PUSH_CHECK_STATE()
INCLUDE_DIRECTORIES(${LIBLZMA_INCLUDE_DIRS})
@@ -514,6 +519,7 @@ IF(LZO2_FOUND)
SET(HAVE_LZO_LZO1X_H 1)
INCLUDE_DIRECTORIES(${LZO2_INCLUDE_DIR})
LIST(APPEND ADDITIONAL_LIBS ${LZO2_LIBRARY})
+ STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " lzo2")
#
# TODO: test for static library.
#
@@ -526,6 +532,7 @@ IF(LIBB2_FOUND)
SET(HAVE_BLAKE2_H 1)
SET(ARCHIVE_BLAKE2 FALSE)
LIST(APPEND ADDITIONAL_LIBS ${LIBB2_LIBRARY})
+ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${LIBB2_LIBRARY})
CMAKE_PUSH_CHECK_STATE()
SET(CMAKE_REQUIRED_LIBRARIES ${LIBB2_LIBRARY})
SET(CMAKE_REQUIRED_INCLUDES ${LIBB2_INCLUDE_DIR})
@@ -552,6 +559,7 @@ IF(lz4_FOUND)
SET(HAVE_LIBLZ4 1)
SET(HAVE_LZ4_H 1)
LIST(APPEND ADDITIONAL_LIBS lz4::lz4)
+ STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " liblz4")
#
# TODO: test for static library.
#
@@ -581,6 +589,7 @@ IF(zstd_FOUND)
LIST(APPEND ADDITIONAL_LIBS zstd::libzstd_static)
SET(CMAKE_REQUIRED_LIBRARIES zstd::libzstd_static)
ENDIF(TARGET zstd::libzstd_shared)
+ STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " libzstd")
ENDIF(ZSTD_FOUND)
MARK_AS_ADVANCED(CLEAR ZSTD_INCLUDE_DIR)
MARK_AS_ADVANCED(CLEAR ZSTD_LIBRARY)
@@ -678,6 +687,7 @@ IF(ENABLE_CNG)
LA_CHECK_INCLUDE_FILE("Bcrypt.h" HAVE_BCRYPT_H)
IF(HAVE_BCRYPT_H)
LIST(APPEND ADDITIONAL_LIBS "Bcrypt")
+ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE "Bcrypt")
ENDIF(HAVE_BCRYPT_H)
ELSE(ENABLE_CNG)
UNSET(HAVE_BCRYPT_H CACHE)
@@ -709,6 +719,7 @@ IF(ENABLE_MBEDTLS)
IF(MBEDTLS_FOUND)
SET(HAVE_LIBMBEDCRYPTO 1)
LIST(APPEND ADDITIONAL_LIBS ${MBEDCRYPTO_LIBRARY})
+ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${MBEDCRYPTO_LIBRARY})
INCLUDE_DIRECTORIES(${MBEDTLS_INCLUDE_DIRS})
LIST(APPEND CMAKE_REQUIRED_INCLUDES ${MBEDTLS_INCLUDE_DIRS})
@@ -729,6 +740,7 @@ IF(ENABLE_NETTLE)
IF(NETTLE_FOUND)
SET(HAVE_LIBNETTLE 1)
LIST(APPEND ADDITIONAL_LIBS ${NETTLE_LIBRARIES})
+ STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " nettle")
INCLUDE_DIRECTORIES(${NETTLE_INCLUDE_DIR})
LIST(APPEND CMAKE_REQUIRED_INCLUDES ${NETTLE_INCLUDE_DIR})
@@ -753,5 +765,10 @@ IF(ENABLE_OPENSSL AND NOT CMAKE_SYSTEM_NAME MATCHES "Darwin")
IF(OPENSSL_FOUND)
SET(HAVE_LIBCRYPTO 1)
LIST(APPEND ADDITIONAL_LIBS OpenSSL::Crypto)
+ IF(WIN32 AND NOT MINGW)
+ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE "libcrypto")
+ ELSE()
+ STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " libcrypto")
+ ENDIF()
ENDIF(OPENSSL_FOUND)
ELSE()
@@ -767,6 +780,7 @@ IF(NOT OPENSSL_FOUND)
SET(CMAKE_REQUIRED_LIBRARIES "md")
FIND_LIBRARY(LIBMD_LIBRARY NAMES md)
LIST(APPEND ADDITIONAL_LIBS ${LIBMD_LIBRARY})
+ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${LIBMD_LIBRARY})
CMAKE_POP_CHECK_STATE() # Restore the state of the variables
ENDIF(LIBMD_FOUND)
ENDIF(NOT OPENSSL_FOUND)
@@ -872,7 +886,12 @@ main(int argc, char **argv)
IF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND)
INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
LIST(APPEND ADDITIONAL_LIBS ${OPENSSL_LIBRARIES})
#LIST(REMOVE_DUPLICATES ADDITIONAL_LIBS)
+ IF(WIN32 AND NOT MINGW)
+ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE "libssl")
+ ELSE()
+ STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " libssl")
+ ENDIF()
ENDIF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND)
ENDIF (ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION})
ENDIF(NOT ARCHIVE_CRYPTO_${ALGORITHM})
@@ -1045,6 +1060,7 @@ IF(ENABLE_ICONV)
CHECK_ICONV("libiconv" "")
IF (HAVE_ICONV)
LIST(APPEND ADDITIONAL_LIBS ${LIBICONV_PATH})
+ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${LIBICONV_PATH})
ENDIF(HAVE_ICONV)
ENDIF(NOT HAVE_ICONV AND LIBICONV_PATH)
ENDIF(ICONV_INCLUDE_DIR)
@@ -1078,6 +1094,7 @@ IF(ENABLE_ICONV)
ENDIF(WIN32 AND NOT CYGWIN)
IF(HAVE_LOCALE_CHARSET)
LIST(APPEND ADDITIONAL_LIBS ${LIBCHARSET_PATH})
+ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${LIBCHARSET_PATH})
ENDIF(HAVE_LOCALE_CHARSET)
ENDIF(LIBCHARSET_PATH)
ENDIF(LIBICONV_PATH)
@@ -1111,6 +1128,7 @@ IF(LIBXML2_FOUND)
CMAKE_PUSH_CHECK_STATE() # Save the state of the variables
INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR})
LIST(APPEND ADDITIONAL_LIBS ${LIBXML2_LIBRARIES})
+ STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " libxml-2.0")
SET(HAVE_LIBXML2 1)
# libxml2's include files use iconv.h
SET(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR} ${LIBXML2_INCLUDE_DIR})
@@ -1140,6 +1158,7 @@ ELSE(LIBXML2_FOUND)
CMAKE_PUSH_CHECK_STATE() # Save the state of the variables
INCLUDE_DIRECTORIES(${EXPAT_INCLUDE_DIR})
LIST(APPEND ADDITIONAL_LIBS ${EXPAT_LIBRARIES})
+ STRING(APPEND LIBARCHIVE_REQUIRES_PRIVATE " expat")
SET(HAVE_LIBEXPAT 1)
LA_CHECK_INCLUDE_FILE("expat.h" HAVE_EXPAT_H)
CMAKE_POP_CHECK_STATE() # Restore the state of the variables
@@ -1170,6 +1189,7 @@ IF(POSIX_REGEX_LIB MATCHES "^(AUTO|LIBC|LIBREGEX)$")
CHECK_FUNCTION_EXISTS_GLIBC(regcomp HAVE_REGCOMP_LIBREGEX)
IF(HAVE_REGCOMP_LIBREGEX)
LIST(APPEND ADDITIONAL_LIBS ${REGEX_LIBRARY})
+ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${REGEX_LIBRARY})
#
# If regex.h is not found, retry looking for regex.h at
# REGEX_INCLUDE_DIR
@@ -1218,6 +1238,7 @@ IF(NOT FOUND_POSIX_REGEX_LIB AND POSIX_REGEX_LIB MATCHES "^(AUTO|LIBPCREPOSIX)$"
IF(PCREPOSIX_FOUND)
INCLUDE_DIRECTORIES(${PCRE_INCLUDE_DIR})
LIST(APPEND ADDITIONAL_LIBS ${PCREPOSIX_LIBRARIES})
+ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${PCREPOSIX_LIBRARIES})
# Test if a macro is needed for the library.
TRY_MACRO_FOR_LIBRARY(
"${PCRE_INCLUDE_DIR}" "${PCREPOSIX_LIBRARIES}"
@@ -1229,6 +1250,7 @@ IF(NOT FOUND_POSIX_REGEX_LIB AND POSIX_REGEX_LIB MATCHES "^(AUTO|LIBPCREPOSIX)$"
ELSEIF(NOT WITHOUT_PCRE_STATIC AND NOT PCRE_STATIC AND PCRE_FOUND)
# Determine if pcre static libraries are to be used.
LIST(APPEND ADDITIONAL_LIBS ${PCRE_LIBRARIES})
+ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${PCRE_LIBRARIES})
SET(TMP_LIBRARIES ${PCREPOSIX_LIBRARIES} ${PCRE_LIBRARIES})
MESSAGE(STATUS "trying again with -lpcre included")
TRY_MACRO_FOR_LIBRARY(
@@ -1244,6 +1266,7 @@ IF(NOT FOUND_POSIX_REGEX_LIB AND POSIX_REGEX_LIB MATCHES "^(AUTO|LIBPCREPOSIX)$"
# ___chkstk_ms.
MESSAGE(STATUS "Visual Studio build detected, trying again with -lgcc included")
LIST(APPEND ADDITIONAL_LIBS ${LIBGCC_LIBRARIES})
+ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${LIBGCC_LIBRARIES})
SET(TMP_LIBRARIES ${PCREPOSIX_LIBRARIES} ${PCRE_LIBRARIES} ${LIBGCC_LIBRARIES})
TRY_MACRO_FOR_LIBRARY(
"${PCRE_INCLUDE_DIR}" "${TMP_LIBRARIES}"
@@ -1762,6 +1785,7 @@ IF(ENABLE_ACL)
SET(CMAKE_REQUIRED_LIBRARIES "acl")
FIND_LIBRARY(ACL_LIBRARY NAMES acl)
LIST(APPEND ADDITIONAL_LIBS ${ACL_LIBRARY})
+ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${ACL_LIBRARY})
ENDIF(HAVE_LIBACL)
CHECK_TYPE_EXISTS(acl_t "sys/types.h;sys/acl.h" HAVE_ACL_T)
@@ -1901,6 +1925,7 @@ int main(void) { return ACL_SYNCHRONIZE; }" HAVE_DECL_ACL_SYNCHRONIZE)
SET(CMAKE_REQUIRED_LIBRARIES "richacl")
FIND_LIBRARY(RICHACL_LIBRARY NAMES richacl)
LIST(APPEND ADDITIONAL_LIBS ${RICHACL_LIBRARY})
+ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${RICHACL_LIBRARY})
ENDIF(HAVE_LIBRICHACL)
CHECK_STRUCT_HAS_MEMBER("struct richace" e_type "sys/richacl.h"
diff --git a/build/cmake/CreatePkgConfigFile.cmake b/build/cmake/CreatePkgConfigFile.cmake
index bc5a43f..422b83b 100644
--- a/build/cmake/CreatePkgConfigFile.cmake
+++ b/build/cmake/CreatePkgConfigFile.cmake
@@ -8,7 +8,7 @@ SET(libdir \${exec_prefix}/lib)
SET(includedir \${prefix}/include)
# Now, this is not particularly pretty, nor is it terribly accurate...
# Loop over all our additional libs
-FOREACH(mylib ${ADDITIONAL_LIBS})
+FOREACH(mylib ${LIBARCHIVE_LIBS_PRIVATE})
# Extract the filename from the absolute path
GET_FILENAME_COMPONENT(mylib_name ${mylib} NAME_WE)
# Strip the lib prefix
@@ -16,10 +16,6 @@ FOREACH(mylib ${ADDITIONAL_LIBS})
# Append it to our LIBS string
SET(LIBS "${LIBS} -l${mylib_name}")
ENDFOREACH()
-# libxml2 is easier, since it's already using pkg-config
-FOREACH(mylib ${PC_LIBXML_STATIC_LDFLAGS})
- SET(LIBS "${LIBS} ${mylib}")
-ENDFOREACH()
# FIXME: The order of the libraries doesn't take dependencies into account,
# thus there's a good chance it'll make some binutils versions unhappy...
# This only affects Libs.private (looked up for static builds) though.
diff --git a/build/pkgconfig/libarchive.pc.in b/build/pkgconfig/libarchive.pc.in
index 4b631e6..80198f1 100644
--- a/build/pkgconfig/libarchive.pc.in
+++ b/build/pkgconfig/libarchive.pc.in
@@ -10,3 +10,4 @@ Cflags: -I${includedir}
Cflags.private: -DLIBARCHIVE_STATIC
Libs: -L${libdir} -larchive
Libs.private: @LIBS@
+Requires.private: @LIBARCHIVE_REQUIRES_PRIVATE@

View File

@@ -0,0 +1,72 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO libarchive/libarchive
REF 6c3301111caa75c76e1b2acb1afb2d71341932ef #v3.6.1
SHA512 2fd56ac20e4249807174a2ae29de1cbca55c8f8f247500845f56fd1fd9ebf48c17b8a25a93156df71df9526c0061415ec7d72a6b46bbaca776047e381a2321a7
HEAD_REF master
PATCHES
disable-warnings.patch
fix-buildsystem.patch
fix-cpu-set.patch
fix-deps.patch
pkgconfig-modules.patch
)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
bzip2 ENABLE_BZip2
bzip2 CMAKE_REQUIRE_FIND_PACKAGE_BZip2
libxml2 ENABLE_LIBXML2
libxml2 CMAKE_REQUIRE_FIND_PACKAGE_LibXml2
lz4 ENABLE_LZ4
lz4 CMAKE_REQUIRE_FIND_PACKAGE_lz4
lzma ENABLE_LZMA
lzma CMAKE_REQUIRE_FIND_PACKAGE_LibLZMA
lzo ENABLE_LZO
openssl ENABLE_OPENSSL
openssl CMAKE_REQUIRE_FIND_PACKAGE_OpenSSL
zstd ENABLE_ZSTD
)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
${FEATURE_OPTIONS}
-DENABLE_ZLIB=ON
-DENABLE_PCREPOSIX=OFF
-DPOSIX_REGEX_LIB=NONE
-DENABLE_NETTLE=OFF
-DENABLE_EXPAT=OFF
-DENABLE_LibGCC=OFF
-DENABLE_CNG=OFF
-DENABLE_TAR=OFF
-DENABLE_CPIO=OFF
-DENABLE_CAT=OFF
-DENABLE_XATTR=OFF
-DENABLE_ACL=OFF
-DENABLE_ICONV=OFF
-DENABLE_LIBB2=OFF
-DENABLE_TEST=OFF
-DENABLE_WERROR=OFF
)
vcpkg_cmake_install()
vcpkg_fixup_pkgconfig()
vcpkg_copy_pdbs()
configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY)
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin")
endif()
foreach(header "${CURRENT_PACKAGES_DIR}/include/archive.h" "${CURRENT_PACKAGES_DIR}/include/archive_entry.h")
vcpkg_replace_string("${header}" "(!defined LIBARCHIVE_STATIC)" "0")
endforeach()
file(INSTALL "${CURRENT_PORT_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)

8
externals/vcpkg/ports/libarchive/usage vendored Executable file
View File

@@ -0,0 +1,8 @@
The package libarchive is compatible with the CMake Find Module:
find_package(LibArchive REQUIRED)
target_include_directories(main PRIVATE ${LibArchive_INCLUDE_DIRS})
target_link_libraries(main PRIVATE ${LibArchive_LIBRARIES})
find_package(LibArchive REQUIRED)
target_link_libraries(main PRIVATE LibArchive::LibArchive) # CMake >= 3.17

View File

@@ -0,0 +1,72 @@
cmake_policy(PUSH)
cmake_policy(SET CMP0012 NEW)
cmake_policy(SET CMP0057 NEW)
set(z_vcpkg_libarchive_args "")
if("REQUIRED" IN_LIST ARGS)
list(APPEND z_vcpkg_libarchive_args "REQUIRED")
endif()
if("QUIET" IN_LIST ARGS)
list(APPEND z_vcpkg_libarchive_args "QUIET")
endif()
_find_package(${ARGS})
if(LibArchive_FOUND AND "@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static")
set(z_vcpkg_libarchive_libs "")
find_package(ZLIB ${z_vcpkg_libarchive_args})
list(APPEND z_vcpkg_libarchive_libs ZLIB::ZLIB)
if(@ENABLE_BZip2@)
find_package(BZip2 ${z_vcpkg_libarchive_args})
list(APPEND z_vcpkg_libarchive_libs BZip2::BZip2)
endif()
if(@ENABLE_LIBXML2@)
find_package(LibXml2 ${z_vcpkg_libarchive_args})
list(APPEND z_vcpkg_libarchive_libs LibXml2::LibXml2)
endif()
if(@ENABLE_LZ4@)
find_package(lz4 CONFIG ${z_vcpkg_libarchive_args})
list(APPEND z_vcpkg_libarchive_libs lz4::lz4)
endif()
if(@ENABLE_LZMA@)
find_package(LibLZMA ${z_vcpkg_libarchive_args})
list(APPEND z_vcpkg_libarchive_libs LibLZMA::LibLZMA)
endif()
if(@ENABLE_LZO@)
include(SelectLibraryConfigurations)
find_library(Z_VCPKG_LZO_LIBRARY_DEBUG NAMES lzo2d lzo2 NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib" NO_DEFAULT_PATH)
find_library(Z_VCPKG_LZO_LIBRARY_RELEASE NAMES lzo2 NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib" NO_DEFAULT_PATH)
select_library_configurations(Z_VCPKG_LZO)
if(Z_VCPKG_LZO_LIBRARY)
list(APPEND z_vcpkg_libarchive_libs ${Z_VCPKG_LZO_LIBRARY})
else()
set(LibArchive_FOUND FALSE)
endif()
endif()
if(@ENABLE_ZSTD@)
find_package(zstd ${z_vcpkg_libarchive_args})
if(TARGET zstd::libzstd_shared)
list(APPEND z_vcpkg_libarchive_libs zstd::libzstd_shared)
else(TARGET zstd::libzstd_shared)
list(APPEND z_vcpkg_libarchive_libs zstd::libzstd_static)
endif(TARGET zstd::libzstd_shared)
endif()
if(@ENABLE_OPENSSL@ AND NOT CMAKE_SYSTEM_NAME MATCHES "Darwin")
find_package(OpenSSL ${z_vcpkg_libarchive_args})
list(APPEND z_vcpkg_libarchive_libs OpenSSL::Crypto)
endif()
list(APPEND LibArchive_LIBRARIES ${z_vcpkg_libarchive_libs})
if(TARGET LibArchive::LibArchive)
if(Z_VCPKG_LZO_LIBRARY AND Z_VCPKG_LZO_LIBRARY_DEBUG)
list(REMOVE_ITEM z_vcpkg_libarchive_libs ${Z_VCPKG_LZO_LIBRARY})
list(APPEND z_vcpkg_libarchive_libs
"\$<\$<NOT:\$<CONFIG:DEBUG>>:${Z_VCPKG_LZO_LIBRARY_RELEASE}>"
"\$<\$<CONFIG:DEBUG>:${Z_VCPKG_LZO_LIBRARY_DEBUG}>"
)
endif()
set_property(TARGET LibArchive::LibArchive APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${z_vcpkg_libarchive_libs})
endif()
unset(z_vcpkg_libarchive_libs)
endif()
unset(z_vcpkg_libarchive_args)
cmake_policy(POP)

70
externals/vcpkg/ports/libarchive/vcpkg.json vendored Executable file
View File

@@ -0,0 +1,70 @@
{
"name": "libarchive",
"version": "3.6.1",
"description": "Library for reading and writing streaming archives",
"homepage": "https://github.com/libarchive/libarchive",
"license": null,
"supports": "!uwp",
"dependencies": [
{
"name": "vcpkg-cmake",
"host": true
},
"zlib"
],
"default-features": [
"bzip2",
"libxml2",
"lz4",
"lzma",
"openssl",
"zstd"
],
"features": {
"bzip2": {
"description": "BZip2 support",
"dependencies": [
"bzip2"
]
},
"libxml2": {
"description": "Libxml2 support",
"dependencies": [
"libxml2"
]
},
"lz4": {
"description": "Lz4 support",
"dependencies": [
"lz4"
]
},
"lzma": {
"description": "Lzma support",
"dependencies": [
"liblzma"
]
},
"lzo": {
"description": "Lzo support",
"dependencies": [
"lzo"
]
},
"openssl": {
"description": "OpenSSL support (not available on macOS)",
"dependencies": [
{
"name": "openssl",
"platform": "!osx"
}
]
},
"zstd": {
"description": "Zstd support",
"dependencies": [
"zstd"
]
}
}
}