aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/liblzf
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/liblzf')
-rw-r--r--vcpkg/ports/liblzf/0001-add-extern-c.patch23
-rw-r--r--vcpkg/ports/liblzf/0002-fix-macro-expansion-ub.patch15
-rw-r--r--vcpkg/ports/liblzf/CMakeLists.txt46
-rw-r--r--vcpkg/ports/liblzf/liblzf.def3
-rw-r--r--vcpkg/ports/liblzf/portfile.cmake31
-rw-r--r--vcpkg/ports/liblzf/vcpkg.json18
6 files changed, 136 insertions, 0 deletions
diff --git a/vcpkg/ports/liblzf/0001-add-extern-c.patch b/vcpkg/ports/liblzf/0001-add-extern-c.patch
new file mode 100644
index 0000000..903705a
--- /dev/null
+++ b/vcpkg/ports/liblzf/0001-add-extern-c.patch
@@ -0,0 +1,23 @@
+--- a/lzf.h
++++ b/lzf.h
+@@ -48,6 +48,10 @@
+
+ #define LZF_VERSION 0x0105 /* 1.5, API version */
+
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ /*
+ * Compress in_len bytes stored at the memory block starting at
+ * in_data and write the result to out_data, up to a maximum length
+@@ -96,5 +100,9 @@ unsigned int
+ lzf_decompress (const void *const in_data, unsigned int in_len,
+ void *out_data, unsigned int out_len);
+
++#ifdef __cplusplus
++}
++#endif
++
+ #endif
+
diff --git a/vcpkg/ports/liblzf/0002-fix-macro-expansion-ub.patch b/vcpkg/ports/liblzf/0002-fix-macro-expansion-ub.patch
new file mode 100644
index 0000000..018c4e6
--- /dev/null
+++ b/vcpkg/ports/liblzf/0002-fix-macro-expansion-ub.patch
@@ -0,0 +1,15 @@
+--- a/lzfP.h
++++ b/lzfP.h
+@@ -79,7 +79,11 @@
+ * Unconditionally aligning does not cost very much, so do it if unsure
+ */
+ #ifndef STRICT_ALIGN
+-# define STRICT_ALIGN !(defined(__i386) || defined (__amd64))
++# if !(defined(__i386) || defined (__amd64))
++# define STRICT_ALIGN 1
++# else
++# define STRICT_ALIGN 0
++# endif
+ #endif
+
+ /*
diff --git a/vcpkg/ports/liblzf/CMakeLists.txt b/vcpkg/ports/liblzf/CMakeLists.txt
new file mode 100644
index 0000000..91292e2
--- /dev/null
+++ b/vcpkg/ports/liblzf/CMakeLists.txt
@@ -0,0 +1,46 @@
+# Based on http://cvs.schmorp.de/liblzf/Makefile.in?view=markup
+cmake_minimum_required(VERSION 3.15)
+project(liblzf LANGUAGES C)
+
+## Build ##
+
+add_library(liblzf
+ lzf_c.c
+ lzf_d.c
+ liblzf.def
+)
+set_target_properties(liblzf PROPERTIES OUTPUT_NAME lzf)
+target_include_directories(liblzf INTERFACE $<INSTALL_INTERFACE:include>)
+if(MINGW)
+ target_compile_definitions(liblzf PRIVATE "_int64=long long")
+endif()
+
+## Install ##
+
+include(GNUInstallDirs)
+install(TARGETS liblzf
+ EXPORT unofficial-liblzf-targets
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+)
+install(FILES lzf.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+
+## Write config ##
+
+set(LIBLZF_SHARE_DIR share/unofficial-liblzf)
+install(EXPORT unofficial-liblzf-targets
+ FILE unofficial-liblzf-config.cmake
+ NAMESPACE unofficial::liblzf::
+ DESTINATION ${LIBLZF_SHARE_DIR}
+)
+include(CMakePackageConfigHelpers)
+write_basic_package_version_file(
+ "${CMAKE_CURRENT_BINARY_DIR}/unofficial-liblzf-config-version.cmake"
+ VERSION ${VERSION}
+ COMPATIBILITY SameMajorVersion
+)
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/unofficial-liblzf-config-version.cmake"
+ DESTINATION ${LIBLZF_SHARE_DIR}
+)
diff --git a/vcpkg/ports/liblzf/liblzf.def b/vcpkg/ports/liblzf/liblzf.def
new file mode 100644
index 0000000..2d8efa4
--- /dev/null
+++ b/vcpkg/ports/liblzf/liblzf.def
@@ -0,0 +1,3 @@
+EXPORTS
+ lzf_compress
+ lzf_decompress
diff --git a/vcpkg/ports/liblzf/portfile.cmake b/vcpkg/ports/liblzf/portfile.cmake
new file mode 100644
index 0000000..9841c2b
--- /dev/null
+++ b/vcpkg/ports/liblzf/portfile.cmake
@@ -0,0 +1,31 @@
+vcpkg_download_distfile(ARCHIVE
+ URLS "http://dist.schmorp.de/liblzf/liblzf-${VERSION}.tar.gz"
+ FILENAME "liblzf-${VERSION}.tar.gz"
+ SHA512 701f70245a11e7cf3412b14ed26bf7b1464512d5b0cf3f913e70ebfdfe20574b8ebbae5a78f4b56ac0034d54830380309cac3057ca00a8028edbde3d091141f5
+)
+
+vcpkg_extract_source_archive(SOURCE_PATH
+ ARCHIVE "${ARCHIVE}"
+ PATCHES
+ 0001-add-extern-c.patch
+ 0002-fix-macro-expansion-ub.patch
+)
+
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}")
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/liblzf.def" DESTINATION "${SOURCE_PATH}")
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DVERSION=${VERSION}
+)
+
+vcpkg_cmake_install()
+
+vcpkg_cmake_config_fixup(PACKAGE_NAME "unofficial-liblzf")
+
+vcpkg_copy_pdbs()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
diff --git a/vcpkg/ports/liblzf/vcpkg.json b/vcpkg/ports/liblzf/vcpkg.json
new file mode 100644
index 0000000..b7a6fd4
--- /dev/null
+++ b/vcpkg/ports/liblzf/vcpkg.json
@@ -0,0 +1,18 @@
+{
+ "name": "liblzf",
+ "version": "3.6",
+ "port-version": 1,
+ "description": "LZF is an extremely fast compression algorithm. It is ideal for applications where you want to save some space but not at the cost of speed.",
+ "homepage": "http://software.schmorp.de/pkg/liblzf.html",
+ "license": "BSD-2-Clause OR GPL-2.0-or-later",
+ "dependencies": [
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ]
+}