gnu: Add heatshrink.

* gnu/packages/compression.scm (heatshrink): New variable.
* gnu/packages/patches/heatshrink-add-cmake.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add "heatshrink-add-cmake.patch".

Change-Id: I0beccdcaed22e47ac6bfe522497e0759a315813d
Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
This commit is contained in:
Artyom V. Poptsov 2024-07-13 14:13:14 +03:00 committed by Sharlatan Hellseher
parent 393f4a1f58
commit 80ee348d10
No known key found for this signature in database
GPG key ID: 76D727BFF62CD2B5
3 changed files with 152 additions and 0 deletions

View file

@ -1485,6 +1485,7 @@ dist_patch_DATA = \
%D%/packages/patches/hdf-eos5-remove-gctp.patch \
%D%/packages/patches/hdf-eos5-fix-szip.patch \
%D%/packages/patches/hdf-eos5-fortrantests.patch \
%D%/packages/patches/heatshrink-add-cmake.patch \
%D%/packages/patches/heimdal-CVE-2022-45142.patch \
%D%/packages/patches/helm-fix-gcc-9-build.patch \
%D%/packages/patches/highlight-gui-data-dir.patch \

View file

@ -40,6 +40,7 @@
;;; Copyright © 2021 Foo Chuan Wei <chuanwei.foo@hotmail.com>
;;; Copyright © 2024 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2024 David Elsing <david.elsing@posteo.net>
;;; Copyright © 2024 Artyom V. Poptsov <poptsov.artyom@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -574,6 +575,45 @@ (define-public xz
(license (list license:gpl2+ license:lgpl2.1+)) ; bits of both
(home-page "https://tukaani.org/xz/")))
(define-public heatshrink
(package
(name "heatshrink")
(version "0.4.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/atomicobject/heatshrink/")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0sdhvk27yz8kahw18j8pddbpkgl78v8rh8fx6wspc3acj7w7yvrn"))
;; Add CMake build script, wanted by prusa-slicer and libbgcode, which are the
;; only users of this library (see
;; <https://github.com/NixOS/nixpkgs/pull/269758/commits/fa36136ceed0e2c58e0c9e21492a7e60c3a64470>.)
(patches (search-patches "heatshrink-add-cmake.patch"))))
(build-system cmake-build-system)
(arguments
(list
;; XXX: No tests available with CMake (see
;; <https://github.com/atomicobject/heatshrink/pull/77>.)
#:tests? #f))
(home-page "https://github.com/atomicobject/heatshrink/")
(synopsis "Data compression library for embedded/real-time systems")
(description
"A data compression/decompression library for embedded/real-time systems.
Among its features are:
@itemize
@item Low memory usage (as low as 50 bytes.) It is useful for some cases with less
than 50 bytes, and useful for many general cases with less than 300 bytes.
@item Incremental, bounded CPU use. It can be used to chew on input data in
arbitrarily tiny bites. This is a useful property in hard real-time environments.
@item Can use either static or dynamic memory allocation.
@end itemize
")
(license license:isc)))
(define-public lhasa
(package
(name "lhasa")

View file

@ -0,0 +1,111 @@
From 0886e9ca76552b8e325841e2b820b4563e5d5aba Mon Sep 17 00:00:00 2001
From: tamasmeszaros <meszaros.q@gmail.com>
Date: Thu, 27 Jul 2023 23:11:25 +0200
Subject: [PATCH] Add CMake build script
---
CMakeLists.txt | 82 +++++++++++++++++++++++++++++++++++++++++++++++++
Config.cmake.in | 5 +++
2 files changed, 87 insertions(+)
create mode 100644 CMakeLists.txt
create mode 100644 Config.cmake.in
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..5b840eb
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,82 @@
+cmake_minimum_required(VERSION 3.10)
+
+project(heatshrink C)
+
+add_library(${PROJECT_NAME} heatshrink_decoder.c heatshrink_encoder.c)
+add_library(${PROJECT_NAME}_dynalloc heatshrink_decoder.c heatshrink_encoder.c)
+
+find_library(MATH_LIBRARY m) # Business as usual
+if(MATH_LIBRARY)
+ target_link_libraries(${PROJECT_NAME} PUBLIC ${MATH_LIBRARY})
+endif()
+
+target_include_directories(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>)
+target_include_directories(${PROJECT_NAME}_dynalloc PUBLIC $<INSTALL_INTERFACE:include>)
+
+target_compile_definitions(${PROJECT_NAME} PUBLIC HEATSHRINK_DYNAMIC_ALLOC=0)
+target_compile_definitions(${PROJECT_NAME}_dynalloc PUBLIC HEATSHRINK_DYNAMIC_ALLOC=1)
+
+if (UNIX)
+ add_executable(${PROJECT_NAME}_cmd heatshrink.c)
+ target_link_libraries(${PROJECT_NAME}_cmd ${PROJECT_NAME}_dynalloc)
+ set_target_properties(${PROJECT_NAME}_cmd PROPERTIES OUTPUT_NAME ${PROJECT_NAME})
+endif ()
+
+# Installation and export:
+
+include(CMakePackageConfigHelpers)
+
+write_basic_package_version_file(
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
+ VERSION 0.4.1
+ COMPATIBILITY AnyNewerVersion
+)
+
+set(_exported_targets ${PROJECT_NAME} ${PROJECT_NAME}_dynalloc)
+if (UNIX)
+ list(APPEND _exported_targets ${PROJECT_NAME}_cmd)
+endif ()
+
+install(TARGETS ${_exported_targets}
+ EXPORT ${PROJECT_NAME}Targets
+)
+
+export(EXPORT ${PROJECT_NAME}Targets
+ FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake"
+ NAMESPACE ${PROJECT_NAME}::
+)
+
+include(GNUInstallDirs)
+set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
+
+configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
+ INSTALL_DESTINATION ${ConfigPackageLocation}
+)
+
+install(
+ FILES
+ heatshrink_common.h
+ heatshrink_config.h
+ heatshrink_encoder.h
+ heatshrink_decoder.h
+ DESTINATION
+ include/${PROJECT_NAME}
+ )
+
+install(EXPORT ${PROJECT_NAME}Targets
+ FILE
+ ${PROJECT_NAME}Targets.cmake
+ NAMESPACE
+ ${PROJECT_NAME}::
+ DESTINATION
+ ${ConfigPackageLocation}
+)
+
+install(
+ FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
+ DESTINATION
+ ${ConfigPackageLocation}
+)
diff --git a/Config.cmake.in b/Config.cmake.in
new file mode 100644
index 0000000..0809ba9
--- /dev/null
+++ b/Config.cmake.in
@@ -0,0 +1,5 @@
+@PACKAGE_INIT@
+
+if (EXISTS ${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake)
+ include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
+endif ()