aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/sail
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/sail
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/sail')
-rw-r--r--vcpkg/ports/sail/fix-heif.patch13
-rw-r--r--vcpkg/ports/sail/fix-include-directory.patch79
-rw-r--r--vcpkg/ports/sail/portfile.cmake86
-rw-r--r--vcpkg/ports/sail/usage11
-rw-r--r--vcpkg/ports/sail/vcpkg.json226
5 files changed, 415 insertions, 0 deletions
diff --git a/vcpkg/ports/sail/fix-heif.patch b/vcpkg/ports/sail/fix-heif.patch
new file mode 100644
index 0000000..000f50f
--- /dev/null
+++ b/vcpkg/ports/sail/fix-heif.patch
@@ -0,0 +1,13 @@
+diff --git a/src/sail-codecs/heif/CMakeLists.txt b/src/sail-codecs/heif/CMakeLists.txt
+index d9c34f85..87981930 100644
+--- a/src/sail-codecs/heif/CMakeLists.txt
++++ b/src/sail-codecs/heif/CMakeLists.txt
+@@ -31,7 +31,7 @@ cmake_push_check_state(RESET)
+ set(TEST_CHROMA "heif_chroma_444")
+ endif()
+
+- check_c_source_runs(
++ check_c_source_compiles(
+ "
+ #include <libheif/heif.h>
+ int main() {
diff --git a/vcpkg/ports/sail/fix-include-directory.patch b/vcpkg/ports/sail/fix-include-directory.patch
new file mode 100644
index 0000000..1509071
--- /dev/null
+++ b/vcpkg/ports/sail/fix-include-directory.patch
@@ -0,0 +1,79 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index ac81279..cfc2f3b 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -299,7 +299,7 @@ endif()
+ # Common configuration file
+ #
+ configure_file("${PROJECT_SOURCE_DIR}/src/config.h.in" "${PROJECT_BINARY_DIR}/include/sail-common/config.h" @ONLY)
+-install(FILES "${PROJECT_BINARY_DIR}/include/sail-common/config.h" DESTINATION include/sail/sail-common)
++install(FILES "${PROJECT_BINARY_DIR}/include/sail-common/config.h" DESTINATION include/sail-common)
+
+ # Print configuration statistics
+ #
+diff --git a/src/bindings/sail-c++/CMakeLists.txt b/src/bindings/sail-c++/CMakeLists.txt
+index 4b69ad4..f4bac29 100644
+--- a/src/bindings/sail-c++/CMakeLists.txt
++++ b/src/bindings/sail-c++/CMakeLists.txt
+@@ -131,7 +131,7 @@ install(TARGETS sail-c++
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+- PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/sail/sail-c++")
++ PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/sail-c++")
+
+ # Install development packages
+ #
+diff --git a/src/sail-common/CMakeLists.txt b/src/sail-common/CMakeLists.txt
+index 06ce246..c8576e5 100644
+--- a/src/sail-common/CMakeLists.txt
++++ b/src/sail-common/CMakeLists.txt
+@@ -114,7 +114,7 @@ endif()
+
+ target_include_directories(sail-common
+ PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
+- $<INSTALL_INTERFACE:include/sail>)
++ $<INSTALL_INTERFACE:include>)
+
+ # pkg-config integration
+ #
+@@ -129,7 +129,7 @@ install(TARGETS sail-common
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+- PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/sail/sail-common")
++ PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/sail-common")
+
+ # Install development packages
+ #
+diff --git a/src/sail-manip/CMakeLists.txt b/src/sail-manip/CMakeLists.txt
+index 5740764..47b81bb 100644
+--- a/src/sail-manip/CMakeLists.txt
++++ b/src/sail-manip/CMakeLists.txt
+@@ -59,7 +59,7 @@ install(TARGETS sail-manip
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+- PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/sail/sail-manip")
++ PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/sail-manip")
+
+ # Install development packages
+ #
+diff --git a/src/sail/CMakeLists.txt b/src/sail/CMakeLists.txt
+index 85590af..2303f63 100644
+--- a/src/sail/CMakeLists.txt
++++ b/src/sail/CMakeLists.txt
+@@ -118,11 +118,11 @@ install(TARGETS sail
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+- PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/sail/sail")
++ PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/sail")
+
+ # Install layouts for debugging codecs
+ #
+-install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/layout/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/sail/sail/layout")
++install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/layout/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/sail/layout")
+
+ # Install development packages
+ #
diff --git a/vcpkg/ports/sail/portfile.cmake b/vcpkg/ports/sail/portfile.cmake
new file mode 100644
index 0000000..64bc554
--- /dev/null
+++ b/vcpkg/ports/sail/portfile.cmake
@@ -0,0 +1,86 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO HappySeaFox/sail
+ REF "v${VERSION}"
+ SHA512 0e6bd4fb7910eda29e0cd6d96e31ff9a476d5836055e4653d6401ab72209eccd3624b8c1e92b7cd0d22ecdaa8ffde44b155da36da61c99ec0c06e1d388bd1d67
+ HEAD_REF master
+ PATCHES
+ fix-heif.patch
+ fix-include-directory.patch
+)
+
+# Enable selected codecs
+set(ONLY_CODECS "")
+
+# List of codecs copy-pased from SAIL
+set(HIGHEST_PRIORITY_CODECS gif jpeg png svg webp)
+set(HIGH_PRIORITY_CODECS avif ico)
+set(MEDIUM_PRIORITY_CODECS heif openexr psd tiff)
+set(LOW_PRIORITY_CODECS bmp hdr jpeg2000 jpegxl pnm qoi tga)
+set(LOWEST_PRIORITY_CODECS jbig pcx wal xbm xpm xwd)
+
+foreach(CODEC ${HIGHEST_PRIORITY_CODECS} ${HIGH_PRIORITY_CODECS} ${MEDIUM_PRIORITY_CODECS} ${LOW_PRIORITY_CODECS} ${LOWEST_PRIORITY_CODECS})
+ if (CODEC IN_LIST FEATURES)
+ list(APPEND ONLY_CODECS "${CODEC}")
+ endif()
+endforeach()
+
+list(JOIN ONLY_CODECS "\;" ONLY_CODECS_ESCAPED)
+
+# Enable OpenMP
+if ("openmp" IN_LIST FEATURES)
+ set(SAIL_ENABLE_OPENMP ON)
+endif()
+
+if (VCPKG_TARGET_IS_WINDOWS)
+ vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+
+ if (VCPKG_CRT_LINKAGE STREQUAL "dynamic")
+ set(SAIL_WINDOWS_STATIC_CRT_FLAG "-DSAIL_WINDOWS_STATIC_CRT=OFF")
+ else()
+ set(SAIL_WINDOWS_STATIC_CRT_FLAG "-DSAIL_WINDOWS_STATIC_CRT=ON")
+ endif()
+endif()
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DBUILD_TESTING=OFF
+ -DSAIL_COMBINE_CODECS=ON
+ -DSAIL_ENABLE_OPENMP=${SAIL_ENABLE_OPENMP}
+ -DSAIL_ONLY_CODECS=${ONLY_CODECS_ESCAPED}
+ -DSAIL_BUILD_APPS=OFF
+ -DSAIL_BUILD_EXAMPLES=OFF
+ ${SAIL_WINDOWS_STATIC_CRT_FLAG}
+)
+
+vcpkg_cmake_install()
+
+vcpkg_copy_pdbs()
+
+# Remove duplicate files
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/debug/share")
+
+# Move cmake configs
+vcpkg_cmake_config_fixup(PACKAGE_NAME sail CONFIG_PATH lib/cmake/sail DO_NOT_DELETE_PARENT_CONFIG_PATH)
+vcpkg_cmake_config_fixup(PACKAGE_NAME sailcodecs CONFIG_PATH lib/cmake/sailcodecs DO_NOT_DELETE_PARENT_CONFIG_PATH)
+vcpkg_cmake_config_fixup(PACKAGE_NAME sailcommon CONFIG_PATH lib/cmake/sailcommon DO_NOT_DELETE_PARENT_CONFIG_PATH)
+vcpkg_cmake_config_fixup(PACKAGE_NAME sailc++ CONFIG_PATH lib/cmake/sailc++ DO_NOT_DELETE_PARENT_CONFIG_PATH)
+vcpkg_cmake_config_fixup(PACKAGE_NAME sailmanip CONFIG_PATH lib/cmake/sailmanip DO_NOT_DELETE_PARENT_CONFIG_PATH)
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/lib/cmake"
+ "${CURRENT_PACKAGES_DIR}/debug/lib/cmake")
+
+
+# Fix pkg-config files
+vcpkg_fixup_pkgconfig()
+
+# Unused because SAIL_COMBINE_CODECS is ON, removes an absolute path from the output
+vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/sail-common/config.h" "#define SAIL_CODECS_PATH [^\r\n]+[\r\n]*" "" REGEX)
+
+# Handle usage
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+
+# Handle copyright
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt")
diff --git a/vcpkg/ports/sail/usage b/vcpkg/ports/sail/usage
new file mode 100644
index 0000000..9b4592d
--- /dev/null
+++ b/vcpkg/ports/sail/usage
@@ -0,0 +1,11 @@
+The package sail provides CMake targets:
+
+C libraries:
+
+ find_package(Sail CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE SAIL::sail)
+
+C++ bindings:
+
+ find_package(SailC++ CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE SAIL::sail-c++)
diff --git a/vcpkg/ports/sail/vcpkg.json b/vcpkg/ports/sail/vcpkg.json
new file mode 100644
index 0000000..ac95863
--- /dev/null
+++ b/vcpkg/ports/sail/vcpkg.json
@@ -0,0 +1,226 @@
+{
+ "name": "sail",
+ "version-semver": "0.9.10",
+ "description": "The missing small and fast image decoding library for humans (not for machines)",
+ "homepage": "https://github.com/HappySeaFox/sail",
+ "license": "MIT",
+ "supports": "!uwp",
+ "dependencies": [
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ],
+ "default-features": [
+ "highest-priority-codecs"
+ ],
+ "features": {
+ "all": {
+ "description": "Enable all codecs",
+ "dependencies": [
+ {
+ "name": "sail",
+ "features": [
+ "high-priority-codecs",
+ "highest-priority-codecs",
+ "low-priority-codecs",
+ "lowest-priority-codecs",
+ "medium-priority-codecs"
+ ]
+ }
+ ]
+ },
+ "avif": {
+ "description": "Enable AVIF codec",
+ "dependencies": [
+ "libavif"
+ ]
+ },
+ "bmp": {
+ "description": "Enable BMP codec"
+ },
+ "gif": {
+ "description": "Enable GIF codec",
+ "dependencies": [
+ "giflib"
+ ]
+ },
+ "hdr": {
+ "description": "Enable HDR codec"
+ },
+ "heif": {
+ "description": "Enable HEIF codec",
+ "dependencies": [
+ "libheif"
+ ]
+ },
+ "high-priority-codecs": {
+ "description": "Enable high priority codecs such as AVIF",
+ "dependencies": [
+ {
+ "name": "sail",
+ "features": [
+ "avif",
+ "ico"
+ ]
+ }
+ ]
+ },
+ "highest-priority-codecs": {
+ "description": "Enable highest priority codecs such as JPEG or PNG",
+ "dependencies": [
+ {
+ "name": "sail",
+ "features": [
+ "gif",
+ "jpeg",
+ "png",
+ "svg",
+ "webp"
+ ]
+ }
+ ]
+ },
+ "ico": {
+ "description": "Enable ICO codec"
+ },
+ "jbig": {
+ "description": "Enable JBIG codec",
+ "dependencies": [
+ "jbigkit"
+ ]
+ },
+ "jpeg": {
+ "description": "Enable JPEG codec",
+ "dependencies": [
+ "libjpeg-turbo"
+ ]
+ },
+ "jpeg2000": {
+ "description": "Enable JPEG2000 codec",
+ "dependencies": [
+ "openjpeg"
+ ]
+ },
+ "jpegxl": {
+ "description": "Enable JPEG XL codec",
+ "dependencies": [
+ "libjxl"
+ ]
+ },
+ "low-priority-codecs": {
+ "description": "Enable low priority codecs such as TGA",
+ "dependencies": [
+ {
+ "name": "sail",
+ "features": [
+ "bmp",
+ "hdr",
+ "jpeg2000",
+ "jpegxl",
+ "pnm",
+ "qoi",
+ "tga"
+ ]
+ }
+ ]
+ },
+ "lowest-priority-codecs": {
+ "description": "Enable lowest priority codecs such as XBM",
+ "dependencies": [
+ {
+ "name": "sail",
+ "features": [
+ "jbig",
+ "pcx",
+ "wal",
+ "xbm",
+ "xpm",
+ "xwd"
+ ]
+ }
+ ]
+ },
+ "medium-priority-codecs": {
+ "description": "Enable medium priority codecs such as AVIF",
+ "dependencies": [
+ {
+ "name": "sail",
+ "features": [
+ "heif",
+ "openexr",
+ "psd",
+ "tiff"
+ ]
+ }
+ ]
+ },
+ "openexr": {
+ "description": "Enable OPENEXR codec",
+ "dependencies": [
+ "openexr"
+ ]
+ },
+ "openmp": {
+ "description": "Enable OpenMP support"
+ },
+ "pcx": {
+ "description": "Enable PCX codec"
+ },
+ "png": {
+ "description": "Enable PNG codec",
+ "dependencies": [
+ "libpng"
+ ]
+ },
+ "pnm": {
+ "description": "Enable PNM codec"
+ },
+ "psd": {
+ "description": "Enable PSD codec"
+ },
+ "qoi": {
+ "description": "Enable QOI codec"
+ },
+ "svg": {
+ "description": "Enable SVG codec",
+ "dependencies": [
+ "nanosvg"
+ ]
+ },
+ "tga": {
+ "description": "Enable TGA codec"
+ },
+ "tiff": {
+ "description": "Enable TIFF codec",
+ "dependencies": [
+ {
+ "name": "tiff",
+ "default-features": false
+ }
+ ]
+ },
+ "wal": {
+ "description": "Enable WAL codec"
+ },
+ "webp": {
+ "description": "Enable WEBP codec",
+ "dependencies": [
+ "libwebp"
+ ]
+ },
+ "xbm": {
+ "description": "Enable XBM codec"
+ },
+ "xpm": {
+ "description": "Enable XPM codec"
+ },
+ "xwd": {
+ "description": "Enable XWD codec"
+ }
+ }
+}