From 72ad532057c9f9fb6fa370c80f663c005e9dd021 Mon Sep 17 00:00:00 2001 From: Daniel Engberg Date: Wed, 5 Apr 2023 08:12:08 +0200 Subject: [PATCH] archivers/zstd: Add CMake config files and adjust Makefile - Use upstream's short test for "make test" - Use verbose output by default during build * Tweak Makefile to follow Porters Handbook more closely * Install CMake files (taken from CMake build framework) PR: 267652 Reported by: fluffy Approved by: portmgr (maintainer timeout, 1+ month) --- archivers/zstd/Makefile | 45 +++++-- archivers/zstd/distinfo | 2 +- archivers/zstd/files/zstdConfig.cmake.in | 1 + .../zstd/files/zstdConfigVersion.cmake.in | 70 +++++++++++ .../files/zstdTargets-BUILD_TYPE.cmake.in | 29 +++++ archivers/zstd/files/zstdTargets.cmake.in | 115 ++++++++++++++++++ archivers/zstd/pkg-plist | 6 +- 7 files changed, 257 insertions(+), 11 deletions(-) create mode 100644 archivers/zstd/files/zstdConfig.cmake.in create mode 100644 archivers/zstd/files/zstdConfigVersion.cmake.in create mode 100644 archivers/zstd/files/zstdTargets-BUILD_TYPE.cmake.in create mode 100644 archivers/zstd/files/zstdTargets.cmake.in diff --git a/archivers/zstd/Makefile b/archivers/zstd/Makefile index bd01c4aeeff06..40687a6a78550 100644 --- a/archivers/zstd/Makefile +++ b/archivers/zstd/Makefile @@ -1,7 +1,8 @@ PORTNAME= zstd -PORTVERSION= 1.5.4 +DISTVERSION= 1.5.4 +PORTREVISION= 1 CATEGORIES= archivers -MASTER_SITES= https://github.com/facebook/zstd/releases/download/v${PORTVERSION}/ +MASTER_SITES= https://github.com/facebook/zstd/releases/download/v${DISTVERSION}/ MAINTAINER= sunpoet@FreeBSD.org COMMENT= Fast real-time compression algorithm @@ -16,27 +17,53 @@ LICENSE_FILE_GPLv2= ${WRKSRC}/COPYING LIB_DEPENDS= liblz4.so:archivers/liblz4 USES= gmake localbase:ldflags tar:zst +USE_LDCONFIG= yes ALL_TARGET= default +TEST_TARGET= shortest BINARY_ALIAS= gmd5sum=md5sum -TEST_TARGET= test MAKE_ENV= INSTALL_DATA="${INSTALL_DATA}" \ INSTALL_MAN="${INSTALL_MAN}" \ INSTALL_PROGRAM="${INSTALL_PROGRAM}" \ - INSTALL_SCRIPT="${INSTALL_SCRIPT}" -USE_LDCONFIG= yes + INSTALL_SCRIPT="${INSTALL_SCRIPT}" \ + V=1 + +.if defined(WITH_DEBUG) +BUILD_TYPE= Debug +.else +BUILD_TYPE= Release +.endif -PLIST_SUB= PORTVERSION=${PORTVERSION} +PLIST_SUB= DISTVERSION=${DISTVERSION} \ + BUILD_TYPE=${BUILD_TYPE:tl} OPTIONS_DEFINE= OPTIMIZED_CFLAGS OPTIMIZED_CFLAGS_VARS= CFLAGS+=-O3 post-build: - cd ${WRKSRC}/programs && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} zstd-frugal + cd ${BUILD_WRKSRC}/programs && ${DO_MAKE_BUILD} zstd-frugal post-install: - ${INSTALL_PROGRAM} ${WRKSRC}/programs/zstd-frugal ${STAGEDIR}${PREFIX}/bin/zstd-frugal - ${LN} -s zstd.1.gz ${STAGEDIR}${PREFIX}/man/man1/zstdmt.1.gz + ${INSTALL_PROGRAM} ${BUILD_WRKSRC}/programs/zstd-frugal ${STAGEDIR}${PREFIX}/bin/zstd-frugal + ${MKDIR} ${STAGEDIR}${PREFIX}/lib/cmake/zstd + ${INSTALL_DATA} ${PATCHDIR}/zstdConfig.cmake.in \ + ${STAGEDIR}${PREFIX}/lib/cmake/zstd/zstdConfig.cmake + ${INSTALL_DATA} ${PATCHDIR}/zstdConfigVersion.cmake.in \ + ${STAGEDIR}${PREFIX}/lib/cmake/zstd/zstdConfigVersion.cmake + @${REINPLACE_CMD} -e 's|%%DISTVERSION%%|${DISTVERSION}|g' \ + ${STAGEDIR}${PREFIX}/lib/cmake/zstd/zstdConfigVersion.cmake + ${INSTALL_DATA} ${PATCHDIR}/zstdTargets-BUILD_TYPE.cmake.in \ + ${STAGEDIR}${PREFIX}/lib/cmake/zstd/zstdTargets-${BUILD_TYPE:tl}.cmake + @${REINPLACE_CMD} -e 's|%%BUILD_TYPE_CAPS%%|${BUILD_TYPE:tu}|g' \ + ${STAGEDIR}${PREFIX}/lib/cmake/zstd/zstdTargets-${BUILD_TYPE:tl}.cmake + @${REINPLACE_CMD} -e 's|%%BUILD_TYPE_MIXED%%|${BUILD_TYPE}|g' \ + ${STAGEDIR}${PREFIX}/lib/cmake/zstd/zstdTargets-${BUILD_TYPE:tl}.cmake + @${REINPLACE_CMD} -e 's|%%DISTVERSION%%|${DISTVERSION}|g' \ + ${STAGEDIR}${PREFIX}/lib/cmake/zstd/zstdTargets-${BUILD_TYPE:tl}.cmake + ${INSTALL_DATA} ${PATCHDIR}/zstdTargets.cmake.in \ + ${STAGEDIR}${PREFIX}/lib/cmake/zstd/zstdTargets.cmake + ${RM} ${STAGEDIR}${PREFIX}/lib/cmake/zstd/*.bak + ${RLN} zstd.1.gz ${STAGEDIR}${PREFIX}/man/man1/zstdmt.1.gz .include diff --git a/archivers/zstd/distinfo b/archivers/zstd/distinfo index 14adce85132c8..b1bcfd8794b3b 100644 --- a/archivers/zstd/distinfo +++ b/archivers/zstd/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1677770991 +TIMESTAMP = 1680672624 SHA256 (zstd-1.5.4.tar.zst) = 6925880b84aca086308c27036ef1c16e76817372301ead7c37f90e23567f704e SIZE (zstd-1.5.4.tar.zst) = 1620303 diff --git a/archivers/zstd/files/zstdConfig.cmake.in b/archivers/zstd/files/zstdConfig.cmake.in new file mode 100644 index 0000000000000..ebbfcc38f6fca --- /dev/null +++ b/archivers/zstd/files/zstdConfig.cmake.in @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/zstdTargets.cmake") diff --git a/archivers/zstd/files/zstdConfigVersion.cmake.in b/archivers/zstd/files/zstdConfigVersion.cmake.in new file mode 100644 index 0000000000000..9d632415ae6b4 --- /dev/null +++ b/archivers/zstd/files/zstdConfigVersion.cmake.in @@ -0,0 +1,70 @@ +# This is a basic version file for the Config-mode of find_package(). +# It is used by write_basic_package_version_file() as input file for configure_file() +# to create a version-file which can be installed along a config.cmake file. +# +# The created file sets PACKAGE_VERSION_EXACT if the current version string and +# the requested version string are exactly the same and it sets +# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version, +# but only if the requested major version is the same as the current one. +# The variable CVF_VERSION must be set before calling configure_file(). + + +set(PACKAGE_VERSION "%%DISTVERSION%%") + +if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) +else() + + if("%%DISTVERSION%%" MATCHES "^([0-9]+)\\.") + set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}") + if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0) + string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}") + endif() + else() + set(CVF_VERSION_MAJOR "%%DISTVERSION%%") + endif() + + if(PACKAGE_FIND_VERSION_RANGE) + # both endpoints of the range must have the expected major version + math (EXPR CVF_VERSION_MAJOR_NEXT "${CVF_VERSION_MAJOR} + 1") + if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR + OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR) + OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT))) + set(PACKAGE_VERSION_COMPATIBLE FALSE) + elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR + AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX) + OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX))) + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_COMPATIBLE FALSE) + endif() + else() + if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) + set(PACKAGE_VERSION_COMPATIBLE TRUE) + else() + set(PACKAGE_VERSION_COMPATIBLE FALSE) + endif() + + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() + endif() +endif() + + +# if the installed project requested no architecture check, don't perform the check +if("FALSE") + return() +endif() + +# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: +if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "") + return() +endif() + +# check that the installed version has the same 32/64bit-ness as the one which is currently searching: +if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8") + math(EXPR installedBits "8 * 8") + set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)") + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() diff --git a/archivers/zstd/files/zstdTargets-BUILD_TYPE.cmake.in b/archivers/zstd/files/zstdTargets-BUILD_TYPE.cmake.in new file mode 100644 index 0000000000000..fed8503e9e068 --- /dev/null +++ b/archivers/zstd/files/zstdTargets-BUILD_TYPE.cmake.in @@ -0,0 +1,29 @@ +#---------------------------------------------------------------- +# Generated CMake target import file for configuration "%%BUILD_TYPE_MIXED%%". +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Import target "zstd::libzstd_shared" for configuration "%%BUILD_TYPE_MIXED%%" +set_property(TARGET zstd::libzstd_shared APPEND PROPERTY IMPORTED_CONFIGURATIONS %%BUILD_TYPE_CAPS%%) +set_target_properties(zstd::libzstd_shared PROPERTIES + IMPORTED_LOCATION_%%BUILD_TYPE_CAPS%% "${_IMPORT_PREFIX}/lib/libzstd.so.%%DISTVERSION%%" + IMPORTED_SONAME_%%BUILD_TYPE_CAPS%% "libzstd.so.1" + ) + +list(APPEND _cmake_import_check_targets zstd::libzstd_shared ) +list(APPEND _cmake_import_check_files_for_zstd::libzstd_shared "${_IMPORT_PREFIX}/lib/libzstd.so.%%DISTVERSION%%" ) + +# Import target "zstd::libzstd_static" for configuration "%%BUILD_TYPE_MIXED%%" +set_property(TARGET zstd::libzstd_static APPEND PROPERTY IMPORTED_CONFIGURATIONS %%BUILD_TYPE_CAPS%%) +set_target_properties(zstd::libzstd_static PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_%%BUILD_TYPE_CAPS%% "C" + IMPORTED_LOCATION_%%BUILD_TYPE_CAPS%% "${_IMPORT_PREFIX}/lib/libzstd.a" + ) + +list(APPEND _cmake_import_check_targets zstd::libzstd_static ) +list(APPEND _cmake_import_check_files_for_zstd::libzstd_static "${_IMPORT_PREFIX}/lib/libzstd.a" ) + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) diff --git a/archivers/zstd/files/zstdTargets.cmake.in b/archivers/zstd/files/zstdTargets.cmake.in new file mode 100644 index 0000000000000..60da8aa603e0d --- /dev/null +++ b/archivers/zstd/files/zstdTargets.cmake.in @@ -0,0 +1,115 @@ +# Generated by CMake + +if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.8) + message(FATAL_ERROR "CMake >= 2.8.0 required") +endif() +if(CMAKE_VERSION VERSION_LESS "2.8.3") + message(FATAL_ERROR "CMake >= 2.8.3 required") +endif() +cmake_policy(PUSH) +cmake_policy(VERSION 2.8.3...3.23) +#---------------------------------------------------------------- +# Generated CMake target import file. +#---------------------------------------------------------------- + +# Commands may need to know the format version. +set(CMAKE_IMPORT_FILE_VERSION 1) + +# Protect against multiple inclusion, which would fail when already imported targets are added once more. +set(_cmake_targets_defined "") +set(_cmake_targets_not_defined "") +set(_cmake_expected_targets "") +foreach(_cmake_expected_target IN ITEMS zstd::libzstd_shared zstd::libzstd_static) + list(APPEND _cmake_expected_targets "${_cmake_expected_target}") + if(TARGET "${_cmake_expected_target}") + list(APPEND _cmake_targets_defined "${_cmake_expected_target}") + else() + list(APPEND _cmake_targets_not_defined "${_cmake_expected_target}") + endif() +endforeach() +unset(_cmake_expected_target) +if(_cmake_targets_defined STREQUAL _cmake_expected_targets) + unset(_cmake_targets_defined) + unset(_cmake_targets_not_defined) + unset(_cmake_expected_targets) + unset(CMAKE_IMPORT_FILE_VERSION) + cmake_policy(POP) + return() +endif() +if(NOT _cmake_targets_defined STREQUAL "") + string(REPLACE ";" ", " _cmake_targets_defined_text "${_cmake_targets_defined}") + string(REPLACE ";" ", " _cmake_targets_not_defined_text "${_cmake_targets_not_defined}") + message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_cmake_targets_defined_text}\nTargets not yet defined: ${_cmake_targets_not_defined_text}\n") +endif() +unset(_cmake_targets_defined) +unset(_cmake_targets_not_defined) +unset(_cmake_expected_targets) + + +# Compute the installation prefix relative to this file. +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +if(_IMPORT_PREFIX STREQUAL "/") + set(_IMPORT_PREFIX "") +endif() + +# Create imported target zstd::libzstd_shared +add_library(zstd::libzstd_shared SHARED IMPORTED) + +set_target_properties(zstd::libzstd_shared PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" + INTERFACE_LINK_LIBRARIES "-pthread" +) + +# Create imported target zstd::libzstd_static +add_library(zstd::libzstd_static STATIC IMPORTED) + +set_target_properties(zstd::libzstd_static PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" + INTERFACE_LINK_LIBRARIES "-pthread" +) + +if(CMAKE_VERSION VERSION_LESS 2.8.12) + message(FATAL_ERROR "This file relies on consumers using CMake 2.8.12 or greater.") +endif() + +# Load information for each installed configuration. +file(GLOB _cmake_config_files "${CMAKE_CURRENT_LIST_DIR}/zstdTargets-*.cmake") +foreach(_cmake_config_file IN LISTS _cmake_config_files) + include("${_cmake_config_file}") +endforeach() +unset(_cmake_config_file) +unset(_cmake_config_files) + +# Cleanup temporary variables. +set(_IMPORT_PREFIX) + +# Loop over all imported files and verify that they actually exist +foreach(_cmake_target IN LISTS _cmake_import_check_targets) + foreach(_cmake_file IN LISTS "_cmake_import_check_files_for_${_cmake_target}") + if(NOT EXISTS "${_cmake_file}") + message(FATAL_ERROR "The imported target \"${_cmake_target}\" references the file + \"${_cmake_file}\" +but this file does not exist. Possible reasons include: +* The file was deleted, renamed, or moved to another location. +* An install or uninstall procedure did not complete successfully. +* The installation package was faulty and contained + \"${CMAKE_CURRENT_LIST_FILE}\" +but not all the files it references. +") + endif() + endforeach() + unset(_cmake_file) + unset("_cmake_import_check_files_for_${_cmake_target}") +endforeach() +unset(_cmake_target) +unset(_cmake_import_check_targets) + +# This file does not depend on other imported targets which have +# been exported from the same project but in a separate export set. + +# Commands beyond this point should not need to know the version. +set(CMAKE_IMPORT_FILE_VERSION) +cmake_policy(POP) diff --git a/archivers/zstd/pkg-plist b/archivers/zstd/pkg-plist index fbe5a2fadb4c8..c9710e44faab5 100644 --- a/archivers/zstd/pkg-plist +++ b/archivers/zstd/pkg-plist @@ -8,10 +8,14 @@ bin/zstdmt include/zdict.h include/zstd.h include/zstd_errors.h +lib/cmake/zstd/zstdConfig.cmake +lib/cmake/zstd/zstdConfigVersion.cmake +lib/cmake/zstd/zstdTargets-%%BUILD_TYPE%%.cmake +lib/cmake/zstd/zstdTargets.cmake lib/libzstd.a lib/libzstd.so lib/libzstd.so.1 -lib/libzstd.so.%%PORTVERSION%% +lib/libzstd.so.%%DISTVERSION%% libdata/pkgconfig/libzstd.pc man/man1/unzstd.1.gz man/man1/zstd.1.gz