Skip to content

Commit

Permalink
[7zip] Fix cmake package config (#23511)
Browse files Browse the repository at this point in the history
  • Loading branch information
Osyotr authored Mar 15, 2022
1 parent c21f961 commit 5220969
Show file tree
Hide file tree
Showing 7 changed files with 101 additions and 79 deletions.
5 changes: 5 additions & 0 deletions ports/7zip/7zip-config.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
@PACKAGE_INIT@

include("${CMAKE_CURRENT_LIST_DIR}/7zip-targets.cmake")

check_required_components(7zip)
110 changes: 81 additions & 29 deletions ports/7zip/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

cmake_minimum_required(VERSION 3.19)

project(7zip LANGUAGES C CXX)
Expand Down Expand Up @@ -62,6 +61,7 @@ target_sources(7zip PRIVATE
CPP/7zip/Compress/ZlibEncoder.cpp
CPP/7zip/Compress/ZDecoder.cpp
CPP/7zip/Compress/CodecExports.cpp

CPP/7zip/Crypto/7zAes.cpp
CPP/7zip/Crypto/7zAesRegister.cpp
CPP/7zip/Crypto/HmacSha1.cpp
Expand Down Expand Up @@ -95,14 +95,13 @@ target_sources(7zip PRIVATE
C/Lzma2Dec.c
C/Lzma2DecMt.c
C/Lzma2Enc.c
C/LzmaDec.c
C/LzmaEnc.c
C/LzmaLib.c
C/MtCoder.c
C/MtDec.c
C/Ppmd7.c
C/Ppmd7aDec.c
C/Ppmd7Dec.c
C/Ppmd7aDec.c
C/Ppmd7Enc.c
C/Ppmd8.c
C/Ppmd8Dec.c
Expand Down Expand Up @@ -130,7 +129,9 @@ target_sources(7zip PRIVATE
CPP/Common/MyWindows.cpp
CPP/Common/MyXml.cpp
CPP/Common/NewHandler.cpp
CPP/Common/Sha1Prepare.cpp
CPP/Common/Sha1Reg.cpp
CPP/Common/Sha256Prepare.cpp
CPP/Common/Sha256Reg.cpp
CPP/Common/StringConvert.cpp
CPP/Common/StringToInt.cpp
Expand Down Expand Up @@ -174,8 +175,8 @@ target_sources(7zip PRIVATE
CPP/7zip/Archive/ApmHandler.cpp
CPP/7zip/Archive/ArHandler.cpp
CPP/7zip/Archive/ArjHandler.cpp
CPP/7zip/Archive/Bz2Handler.cpp
CPP/7zip/Archive/Base64Handler.cpp
CPP/7zip/Archive/Bz2Handler.cpp
CPP/7zip/Archive/ComHandler.cpp
CPP/7zip/Archive/CpioHandler.cpp
CPP/7zip/Archive/CramfsHandler.cpp
Expand Down Expand Up @@ -291,36 +292,40 @@ target_sources(7zip PRIVATE
C/Util/LzmaLib/LzmaLib.def
)

# 7zCrcOpt # AesOpt # Sha1Opt # Sha256Opt # XzCrc64Opt # LzFindOpt
set(WINDOWS_PRIVATE_HEADERS
Asm/x86/7zCrcOpt.asm
Asm/x86/AesOpt.asm
Asm/x86/Sha1Opt.asm
Asm/x86/Sha256Opt.asm
Asm/x86/XzCrc64Opt.asm
Asm/x86/LzFindOpt.asm
)
set(WINDOWS_PRIVATE_SOURCE_FILES
C/7zCrcOpt.c
C/AesOpt.c
C/Sha1Opt.c
C/Sha256Opt.c
C/XzCrc64Opt.c
C/LzFindOpt.c
)

# 7zCrcOpt
if(VCPKG_TARGET_IS_WINDOWS)
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
target_sources(7zip PRIVATE ${WINDOWS_PRIVATE_HEADERS})
set_source_files_properties(${WINDOWS_PRIVATE_HEADERS} PROPERTIES LANGUAGE ASM_MASM)
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
#target_sources(7zip PRIVATE Asm/arm/7zCrcOpt.asm)
target_sources(7zip PRIVATE Asm/x86/7zCrcOpt.asm)
set_source_files_properties(Asm/x86/7zCrcOpt.asm PROPERTIES LANGUAGE ASM_MASM)
else()
target_sources(7zip PRIVATE C/7zCrcOpt.c)
endif()
else()
target_sources(7zip PRIVATE C/7zCrcOpt.c)
endif()

# AesOpt
if(VCPKG_TARGET_IS_WINDOWS)
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
target_sources(7zip PRIVATE Asm/x86/AesOpt.asm)
set_source_files_properties(Asm/x86/AesOpt.asm PROPERTIES LANGUAGE ASM_MASM)
else()
target_sources(7zip PRIVATE ${WINDOWS_PRIVATE_SOURCE_FILES})
target_sources(7zip PRIVATE C/AesOpt.c)
endif()
else()
target_sources(7zip PRIVATE ${WINDOWS_PRIVATE_SOURCE_FILES})
target_sources(7zip PRIVATE C/AesOpt.c)
endif()

# LzFindOpt
if(VCPKG_TARGET_IS_WINDOWS)
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
target_sources(7zip PRIVATE Asm/x86/LzFindOpt.asm)
set_source_files_properties(Asm/x86/LzFindOpt.asm PROPERTIES LANGUAGE ASM_MASM)
else()
target_sources(7zip PRIVATE C/LzFindOpt.c)
endif()
else()
target_sources(7zip PRIVATE C/LzFindOpt.c)
endif()

# LzmaDecOpt
Expand All @@ -334,13 +339,49 @@ if((VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") OR
elseif(VCPKG_TARGET_IS_LINUX AND VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
target_sources(7zip PRIVATE Asm/arm64/LzmaDecOpt.S)
set_source_files_properties(Asm/x86/LzmaDecOpt.asm PROPERTIES LANGUAGE ASM)
endif()
endif()

get_source_file_property(defs C/LzmaDec.c COMPILE_DEFINITIONS)
list(APPEND defs "_LZMA_DEC_OPT")
set_source_files_properties(C/LzmaDec.c PROPERTIES COMPILE_DEFINITIONS "${defs}")
endif()

# Sha1Opt
if(VCPKG_TARGET_IS_WINDOWS)
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
target_sources(7zip PRIVATE Asm/x86/Sha1Opt.asm)
set_source_files_properties(Asm/x86/Sha1Opt.asm PROPERTIES LANGUAGE ASM_MASM)
else()
target_sources(7zip PRIVATE C/Sha1Opt.c)
endif()
else()
target_sources(7zip PRIVATE C/Sha1Opt.c)
endif()

# Sha256Opt
if(VCPKG_TARGET_IS_WINDOWS)
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
target_sources(7zip PRIVATE Asm/x86/Sha256Opt.asm)
set_source_files_properties(Asm/x86/Sha256Opt.asm PROPERTIES LANGUAGE ASM_MASM)
else()
target_sources(7zip PRIVATE C/Sha256Opt.c)
endif()
else()
target_sources(7zip PRIVATE C/Sha256Opt.c)
endif()

# XzCrc64Opt
if(VCPKG_TARGET_IS_WINDOWS)
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
target_sources(7zip PRIVATE Asm/x86/XzCrc64Opt.asm)
set_source_files_properties(Asm/x86/XzCrc64Opt.asm PROPERTIES LANGUAGE ASM_MASM)
else()
target_sources(7zip PRIVATE C/XzCrc64Opt.c)
endif()
else()
target_sources(7zip PRIVATE C/XzCrc64Opt.c)
endif()

target_compile_definitions(7zip
PUBLIC
-D_REENTRANT
Expand Down Expand Up @@ -398,6 +439,17 @@ foreach(HEADER ${PUBLIC_HEADERS})
)
endforeach()

include(CMakePackageConfigHelpers)
configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/7zip-config.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/7zip-config.cmake"
INSTALL_DESTINATION "share/7zip"
)
install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/7zip-config.cmake"
DESTINATION "share/7zip"
)

install(
EXPORT 7zip-targets
DESTINATION share/7zip
Expand Down
16 changes: 8 additions & 8 deletions ports/7zip/portfile.cmake
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
set(7ZIP_VERSION 21.07)
set(7ZIP_VERSION "2107")
vcpkg_download_distfile(ARCHIVE
URLS "https://www.7-zip.org/a/7z2107-src.7z"
FILENAME "7z2107-src.7z"
URLS "https://www.7-zip.org/a/7z${7ZIP_VERSION}-src.7z"
FILENAME "7z${7ZIP_VERSION}-src.7z"
SHA512 c13521a9829ac239a89015e1f5da27eeaa2469754e3f8ca32311d964ea9d0b40a17e4f8ccbd425d3e865aa768be345368f1c36f354d5710ac7cb2749dd6a3ab5
)

vcpkg_extract_source_archive_ex(
OUT_SOURCE_PATH SOURCE_PATH
ARCHIVE ${ARCHIVE}
REF ${7ZIP_VERSION}
vcpkg_extract_source_archive(
SOURCE_PATH
ARCHIVE "${ARCHIVE}"
NO_REMOVE_ONE_LEVEL
)

file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}")
file(COPY "${CMAKE_CURRENT_LIST_DIR}/7zip-config.cmake.in" DESTINATION "${SOURCE_PATH}")

vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
Expand Down
41 changes: 0 additions & 41 deletions ports/7zip/unRarLicense.txt

This file was deleted.

1 change: 1 addition & 0 deletions ports/7zip/vcpkg.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "7zip",
"version-string": "21.07",
"port-version": 1,
"description": "Library for archiving file with a high compression ratio.",
"homepage": "https://www.7-zip.org",
"license": "LGPL-2.1-or-later",
Expand Down
5 changes: 5 additions & 0 deletions versions/7-/7zip.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "d60561160384264eaf45a225dcb41beccb87ecbc",
"version-string": "21.07",
"port-version": 1
},
{
"git-tree": "7a951689070e40d8ff0ed20b4e18bc533ef5db1f",
"version-string": "21.07",
Expand Down
2 changes: 1 addition & 1 deletion versions/baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
},
"7zip": {
"baseline": "21.07",
"port-version": 0
"port-version": 1
},
"abseil": {
"baseline": "20211102.1",
Expand Down

0 comments on commit 5220969

Please sign in to comment.