aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/selene
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/selene')
-rw-r--r--vcpkg/ports/selene/disable_x86_intrinsics_on_arm.patch13
-rw-r--r--vcpkg/ports/selene/portfile.cmake34
-rw-r--r--vcpkg/ports/selene/tiff-deprecated-typedefs.patch14
-rw-r--r--vcpkg/ports/selene/trivial-pixel.patch23
-rw-r--r--vcpkg/ports/selene/vcpkg.json40
5 files changed, 124 insertions, 0 deletions
diff --git a/vcpkg/ports/selene/disable_x86_intrinsics_on_arm.patch b/vcpkg/ports/selene/disable_x86_intrinsics_on_arm.patch
new file mode 100644
index 0000000..79e38c5
--- /dev/null
+++ b/vcpkg/ports/selene/disable_x86_intrinsics_on_arm.patch
@@ -0,0 +1,13 @@
+diff --git a/selene/base/Bitcount.hpp b/selene/base/Bitcount.hpp
+index a4d69e4..709f650 100755
+--- a/selene/base/Bitcount.hpp
++++ b/selene/base/Bitcount.hpp
+@@ -69,7 +69,7 @@ inline std::size_t bit_count(unsigned long long x)
+ return static_cast<std::size_t>(__builtin_popcountll(x));
+ }
+
+-#elif defined(_MSC_VER)
++#elif defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64)
+
+ /** \brief Performs a bit count on the supplied value.
+ *
diff --git a/vcpkg/ports/selene/portfile.cmake b/vcpkg/ports/selene/portfile.cmake
new file mode 100644
index 0000000..abc6e87
--- /dev/null
+++ b/vcpkg/ports/selene/portfile.cmake
@@ -0,0 +1,34 @@
+vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO kmhofmann/selene
+ REF v0.3.1
+ SHA512 7bc57ebe9e2442da2716eb5c1af11f8d610b0b09fe96e3122d1028575732b6045a987c499bbf7de53003edd627b8809d86c80ea4975fc2264a1c61d5891a46c3
+ HEAD_REF master
+ PATCHES
+ disable_x86_intrinsics_on_arm.patch
+ tiff-deprecated-typedefs.patch
+ trivial-pixel.patch
+)
+
+vcpkg_check_features(
+ OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ "opencv" SELENE_USE_OPENCV
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DSELENE_ARCH_NATIVE=OFF
+ ${FEATURE_OPTIONS}
+)
+
+vcpkg_cmake_install()
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/selene)
+vcpkg_copy_pdbs()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
diff --git a/vcpkg/ports/selene/tiff-deprecated-typedefs.patch b/vcpkg/ports/selene/tiff-deprecated-typedefs.patch
new file mode 100644
index 0000000..e242913
--- /dev/null
+++ b/vcpkg/ports/selene/tiff-deprecated-typedefs.patch
@@ -0,0 +1,14 @@
+diff --git a/selene/CMakeLists.txt b/selene/CMakeLists.txt
+index ab2760c..d1e1e6c 100644
+--- a/selene/CMakeLists.txt
++++ b/selene/CMakeLists.txt
+@@ -229,6 +229,9 @@ if(TIFF_FOUND)
+ )
+
+ target_compile_options(selene_img_io_tiff PRIVATE ${SELENE_COMPILER_OPTIONS} ${SELENE_IMG_COMPILER_OPTIONS})
++ if(MSVC)
++ target_compile_options(selene_img_io_tiff PRIVATE /wd4996)
++ endif()
+
+ target_compile_definitions(selene_img_io_tiff PRIVATE ${SELENE_COMPILER_DEFINITIONS})
+
diff --git a/vcpkg/ports/selene/trivial-pixel.patch b/vcpkg/ports/selene/trivial-pixel.patch
new file mode 100644
index 0000000..9aeb7e4
--- /dev/null
+++ b/vcpkg/ports/selene/trivial-pixel.patch
@@ -0,0 +1,23 @@
+--- a/selene/img/pixel/Pixel.hpp
++++ b/selene/img/pixel/Pixel.hpp
+@@ -45,6 +45,6 @@
+ constexpr Pixel() noexcept = default; ///< Default constructor. Pixel values are uninitialized.
+
+- template <typename... Args, typename = std::enable_if_t<sizeof...(Args) == nr_channels_>>
+- constexpr Pixel(Args... args) noexcept;
++ template <typename Arg1, typename... Args, typename = std::enable_if_t<sizeof...(Args) + 1 == nr_channels_>>
++ constexpr Pixel(Arg1 arg1, Args... args) noexcept;
+
+ constexpr explicit Pixel(const std::array<T, nr_channels>& arr) noexcept;
+@@ -216,8 +216,8 @@
+ template <typename T, std::size_t nr_channels_, PixelFormat pixel_format_>
+-template <typename... Args, typename>
+-constexpr Pixel<T, nr_channels_, pixel_format_>::Pixel(Args... args) noexcept
+- : data_{{static_cast<T>(args)...}}
++template <typename Arg1, typename... Args, typename>
++constexpr Pixel<T, nr_channels_, pixel_format_>::Pixel(Arg1 arg1, Args... args) noexcept
++ : data_{{static_cast<T>(arg1), static_cast<T>(args)...}}
+ {
+ static_assert(std::is_trivial<Pixel<T, nr_channels_, pixel_format_>>::value, "Pixel type is not trivial");
+ static_assert(std::is_standard_layout<Pixel<T, nr_channels_, pixel_format_>>::value,
+ "Pixel type is not standard layout");
diff --git a/vcpkg/ports/selene/vcpkg.json b/vcpkg/ports/selene/vcpkg.json
new file mode 100644
index 0000000..238e4aa
--- /dev/null
+++ b/vcpkg/ports/selene/vcpkg.json
@@ -0,0 +1,40 @@
+{
+ "name": "selene",
+ "version": "0.3.1",
+ "port-version": 8,
+ "description": "A C++17 image representation, processing and I/O library.",
+ "homepage": "https://github.com/kmhofmann/selene",
+ "dependencies": [
+ "libjpeg-turbo",
+ "libpng",
+ {
+ "name": "tiff",
+ "default-features": false
+ },
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ "zlib"
+ ],
+ "features": {
+ "opencv": {
+ "description": "Enable using OpenCV",
+ "dependencies": [
+ {
+ "name": "opencv",
+ "default-features": false,
+ "features": [
+ "fs",
+ "intrinsics",
+ "thread"
+ ]
+ }
+ ]
+ }
+ }
+}