aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/openimageio
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/openimageio
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/openimageio')
-rw-r--r--vcpkg/ports/openimageio/fix-dependencies.patch103
-rw-r--r--vcpkg/ports/openimageio/fix-openexr-target-missing.patch13
-rw-r--r--vcpkg/ports/openimageio/fix-openimageio_include_dir.patch13
-rw-r--r--vcpkg/ports/openimageio/fix-static-ffmpeg.patch19
-rw-r--r--vcpkg/ports/openimageio/imath-version-guard.patch16
-rw-r--r--vcpkg/ports/openimageio/portfile.cmake124
-rw-r--r--vcpkg/ports/openimageio/usage4
-rw-r--r--vcpkg/ports/openimageio/vcpkg.json135
8 files changed, 427 insertions, 0 deletions
diff --git a/vcpkg/ports/openimageio/fix-dependencies.patch b/vcpkg/ports/openimageio/fix-dependencies.patch
new file mode 100644
index 0000000..60254a7
--- /dev/null
+++ b/vcpkg/ports/openimageio/fix-dependencies.patch
@@ -0,0 +1,103 @@
+diff --git a/src/cmake/Config.cmake.in b/src/cmake/Config.cmake.in
+index 2620994..6e5f0a1 100644
+--- a/src/cmake/Config.cmake.in
++++ b/src/cmake/Config.cmake.in
+@@ -6,6 +6,32 @@
+
+ include(CMakeFindDependencyMacro)
+
++if(@USE_GIF@)
++ find_dependency(GIF)
++endif()
++if(@USE_LIBHEIF@)
++ find_dependency(libheif CONFIG)
++endif()
++if(@USE_FREETYPE@)
++ find_dependency(freetype CONFIG)
++endif()
++find_dependency(PNG)
++if(@USE_OPENCV@)
++ find_dependency(OpenCV CONFIG)
++endif()
++if(@USE_OPENCOLORIO@)
++ find_dependency(OpenColorIO CONFIG)
++endif()
++if(@USE_OPENJPEG@)
++ find_dependency(OpenJPEG CONFIG)
++endif()
++if(@USE_WEBP@)
++ find_dependency(WebP CONFIG)
++endif()
++if(@USE_LIBRAW@)
++ find_dependency(LibRaw)
++endif()
++
+ # add here all the find_dependency() whenever switching to config based dependencies
+ if (NOT @OPENIMAGEIO_CONFIG_DO_NOT_FIND_IMATH@ AND NOT OPENIMAGEIO_CONFIG_DO_NOT_FIND_IMATH)
+ find_dependency(Imath @Imath_VERSION@
+diff --git a/src/cmake/externalpackages.cmake b/src/cmake/externalpackages.cmake
+index f8670a8..816ba08 100644
+--- a/src/cmake/externalpackages.cmake
++++ b/src/cmake/externalpackages.cmake
+@@ -125,16 +125,18 @@ checked_find_package (Freetype
+ VERSION_MIN 2.10.0
+ DEFINITIONS USE_FREETYPE=1 )
+
+-checked_find_package (OpenColorIO REQUIRED
+- VERSION_MIN 2.2
+- VERSION_MAX 2.9
+- )
++find_package(OpenColorIO CONFIG REQUIRED)
++set(OPENCOLORIO_INCLUDES "")
++set(OPENCOLORIO_LIBRARIES OpenColorIO::OpenColorIO)
++checked_find_package (OpenColorIO CONFIG)
+ if (NOT OPENCOLORIO_INCLUDES)
+ get_target_property(OPENCOLORIO_INCLUDES OpenColorIO::OpenColorIO INTERFACE_INCLUDE_DIRECTORIES)
+ endif ()
+ include_directories(BEFORE ${OPENCOLORIO_INCLUDES})
+
+-checked_find_package (OpenCV 4.0
++set(OPENCV_INCLUDES "")
++set(OPENCV_LIBRARIES opencv_core)
++checked_find_package (OpenCV CONFIG
+ DEFINITIONS USE_OPENCV=1)
+
+ # Intel TBB
+@@ -146,11 +148,15 @@ checked_find_package (TBB 2017
+ # DCMTK is used to read DICOM images
+ checked_find_package (DCMTK CONFIG VERSION_MIN 3.6.1)
+
+-checked_find_package (FFmpeg VERSION_MIN 4.0)
++checked_find_package (FFmpeg)
++set(FFmpeg_FOUND "${FFMPEG_FOUND}")
++set(FFMPEG_INCLUDES "${FFMPEG_INCLUDE_DIRS}")
+
+ checked_find_package (GIF VERSION_MIN 5.0)
+
+ # For HEIF/HEIC/AVIF formats
++set(LIBHEIF_INCLUDES "")
++set(LIBHEIF_LIBRARIES heif)
+ checked_find_package (Libheif VERSION_MIN 1.11
+ RECOMMEND_MIN 1.16
+ RECOMMEND_MIN_REASON "for orientation support")
+@@ -159,9 +165,8 @@ checked_find_package (LibRaw
+ VERSION_MIN 0.20.0
+ PRINT LibRaw_r_LIBRARIES)
+
+-checked_find_package (OpenJPEG VERSION_MIN 2.0
+- RECOMMEND_MIN 2.2
+- RECOMMEND_MIN_REASON "for multithreading support")
++set(CMAKE_REQUIRE_FIND_PACKAGE_OpenJPEG ${USE_OPENJPEG})
++checked_find_package (OpenJPEG CONFIG)
+ # Note: Recent OpenJPEG versions have exported cmake configs, but we don't
+ # find them reliable at all, so we stick to our FindOpenJPEG.cmake module.
+
+@@ -178,6 +183,8 @@ if (NOT Ptex_FOUND OR NOT Ptex_VERSION)
+ checked_find_package (Ptex)
+ endif ()
+
++set(WEBP_INCLUDES "")
++set(WEBP_LIBRARIES WebP::webp WebP::webpdemux)
+ checked_find_package (WebP VERSION_MIN 1.1)
+
+ option (USE_R3DSDK "Enable R3DSDK (RED camera) support" OFF)
diff --git a/vcpkg/ports/openimageio/fix-openexr-target-missing.patch b/vcpkg/ports/openimageio/fix-openexr-target-missing.patch
new file mode 100644
index 0000000..4ae28a3
--- /dev/null
+++ b/vcpkg/ports/openimageio/fix-openexr-target-missing.patch
@@ -0,0 +1,13 @@
+diff --git a/src/cmake/Config.cmake.in b/src/cmake/Config.cmake.in
+index 2620994b3..c9cbe7290 100644
+--- a/src/cmake/Config.cmake.in
++++ b/src/cmake/Config.cmake.in
+@@ -10,6 +10,8 @@ include(CMakeFindDependencyMacro)
+ if (NOT @OPENIMAGEIO_CONFIG_DO_NOT_FIND_IMATH@ AND NOT OPENIMAGEIO_CONFIG_DO_NOT_FIND_IMATH)
+ find_dependency(Imath @Imath_VERSION@
+ HINTS @Imath_DIR@)
++ find_dependency(OpenEXR @OpenEXR_VERSION@
++ HINTS @OpenEXR_DIR@)
+ endif ()
+
+ if (NOT @fmt_LOCAL_BUILD@ AND NOT @OIIO_INTERNALIZE_FMT@)
diff --git a/vcpkg/ports/openimageio/fix-openimageio_include_dir.patch b/vcpkg/ports/openimageio/fix-openimageio_include_dir.patch
new file mode 100644
index 0000000..96e1db1
--- /dev/null
+++ b/vcpkg/ports/openimageio/fix-openimageio_include_dir.patch
@@ -0,0 +1,13 @@
+diff --git a/src/cmake/Config.cmake.in b/src/cmake/Config.cmake.in
+index 2a67ee3..11a5d67 100644
+--- a/src/cmake/Config.cmake.in
++++ b/src/cmake/Config.cmake.in
+@@ -53,7 +53,7 @@ endif ()
+
+ # Compute the installation prefix relative to this file. Note that cmake files are installed
+ # to ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} (see OIIO_CONFIG_INSTALL_DIR)
+-get_filename_component(_CURR_INSTALL_LIBDIR "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE)
++get_filename_component(_CURR_INSTALL_LIBDIR "${CMAKE_CURRENT_LIST_DIR}/../" ABSOLUTE)
+ get_filename_component(_ABS_CMAKE_INSTALL_LIBDIR "@CMAKE_INSTALL_FULL_LIBDIR@" ABSOLUTE)
+ get_filename_component(_ABS_CMAKE_INSTALL_INCLUDEDIR "@CMAKE_INSTALL_FULL_INCLUDEDIR@" ABSOLUTE)
+ file(RELATIVE_PATH _INCLUDEDIR_RELATIVE_TO_LIBDIR
diff --git a/vcpkg/ports/openimageio/fix-static-ffmpeg.patch b/vcpkg/ports/openimageio/fix-static-ffmpeg.patch
new file mode 100644
index 0000000..68b69ae
--- /dev/null
+++ b/vcpkg/ports/openimageio/fix-static-ffmpeg.patch
@@ -0,0 +1,19 @@
+diff --git a/src/python/CMakeLists.txt b/src/python/CMakeLists.txt
+index 94b2a3e..0c7ab40 100644
+--- a/src/python/CMakeLists.txt
++++ b/src/python/CMakeLists.txt
+@@ -2,6 +2,14 @@
+ # SPDX-License-Identifier: Apache-2.0
+ # https://github.com/AcademySoftwareFoundation/OpenImageIO
+
++if(USE_FFMPEG AND UNIX AND NOT BUILD_SHARED_LIBS AND VCPKG_CRT_LINKAGE STREQUAL "dynamic")
++ include(CheckLinkerFlag)
++ check_linker_flag(C "LINKER:-Bsymbolic" supports_bsymbolic)
++ if(supports_bsymbolic)
++ add_link_options("LINKER:-Bsymbolic")
++ endif()
++endif()
++
+ add_subdirectory (stubs)
+
+ file (GLOB python_srcs *.cpp)
diff --git a/vcpkg/ports/openimageio/imath-version-guard.patch b/vcpkg/ports/openimageio/imath-version-guard.patch
new file mode 100644
index 0000000..10af02e
--- /dev/null
+++ b/vcpkg/ports/openimageio/imath-version-guard.patch
@@ -0,0 +1,16 @@
+diff --git a/src/cmake/externalpackages.cmake b/src/cmake/externalpackages.cmake
+index 816ba08..7fe6a14 100644
+--- a/src/cmake/externalpackages.cmake
++++ b/src/cmake/externalpackages.cmake
+@@ -133,6 +133,11 @@ if (NOT OPENCOLORIO_INCLUDES)
+ get_target_property(OPENCOLORIO_INCLUDES OpenColorIO::OpenColorIO INTERFACE_INCLUDE_DIRECTORIES)
+ endif ()
+ include_directories(BEFORE ${OPENCOLORIO_INCLUDES})
++if(USE_OPENCOLORIO AND TARGET Imath::Imath AND OIIO_USING_IMATH STREQUAL "2")
++ message(FATAL_ERROR
++ "OpenColorIO and OpenEXR use incompatible versions of Imath. "
++ "You cannot use openimageio[opencolorio] for this configuration.")
++endif()
+
+ set(OPENCV_INCLUDES "")
+ set(OPENCV_LIBRARIES opencv_core)
diff --git a/vcpkg/ports/openimageio/portfile.cmake b/vcpkg/ports/openimageio/portfile.cmake
new file mode 100644
index 0000000..3e157a0
--- /dev/null
+++ b/vcpkg/ports/openimageio/portfile.cmake
@@ -0,0 +1,124 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO AcademySoftwareFoundation/OpenImageIO
+ REF "v${VERSION}"
+ SHA512 cee6ddfbd825022a45a46b041c894a18718a474a32da8715fe08f918c7387505e81f3220c0ad79d3ec160b9c224bdeafbbb8a2b67a47cd845dca492582607c22
+ HEAD_REF master
+ PATCHES
+ fix-dependencies.patch
+ fix-static-ffmpeg.patch
+ imath-version-guard.patch
+ fix-openimageio_include_dir.patch
+ fix-openexr-target-missing.patch
+)
+
+file(REMOVE_RECURSE "${SOURCE_PATH}/ext")
+
+file(REMOVE
+ "${SOURCE_PATH}/src/cmake/modules/FindFFmpeg.cmake"
+ "${SOURCE_PATH}/src/cmake/modules/FindLibheif.cmake"
+ "${SOURCE_PATH}/src/cmake/modules/FindLibRaw.cmake"
+ "${SOURCE_PATH}/src/cmake/modules/FindLibsquish.cmake"
+ "${SOURCE_PATH}/src/cmake/modules/FindOpenCV.cmake"
+ "${SOURCE_PATH}/src/cmake/modules/FindOpenJPEG.cmake"
+ "${SOURCE_PATH}/src/cmake/modules/FindWebP.cmake"
+ "${SOURCE_PATH}/src/cmake/modules/Findfmt.cmake"
+ "${SOURCE_PATH}/src/cmake/modules/FindTBB.cmake"
+ "${SOURCE_PATH}/src/cmake/modules/FindJXL.cmake"
+)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ libraw USE_LIBRAW
+ opencolorio USE_OPENCOLORIO
+ ffmpeg USE_FFMPEG
+ freetype USE_FREETYPE
+ gif USE_GIF
+ jpegxl USE_JXL
+ opencv USE_OPENCV
+ openjpeg USE_OPENJPEG
+ webp USE_WEBP
+ libheif USE_LIBHEIF
+ pybind11 USE_PYTHON
+ tools OIIO_BUILD_TOOLS
+ viewer ENABLE_IV
+)
+
+if("pybind11" IN_LIST FEATURES)
+ vcpkg_get_vcpkg_installed_python(PYTHON3)
+ list(APPEND FEATURE_OPTIONS "-DPython3_EXECUTABLE=${PYTHON3}")
+endif()
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ -DBUILD_TESTING=OFF
+ -DOIIO_BUILD_TESTS=OFF
+ -DUSE_DCMTK=OFF
+ -DUSE_NUKE=OFF
+ -DUSE_OpenVDB=OFF
+ -DUSE_PTEX=OFF
+ -DUSE_TBB=OFF
+ -DLINKSTATIC=OFF # LINKSTATIC breaks library lookup
+ -DBUILD_MISSING_FMT=OFF
+ -DOIIO_INTERNALIZE_FMT=OFF # carry fmt's msvc utf8 usage requirements
+ -DBUILD_MISSING_ROBINMAP=OFF
+ -DBUILD_MISSING_DEPS=OFF
+ -DSTOP_ON_WARNING=OFF
+ -DVERBOSE=ON
+ -DBUILD_DOCS=OFF
+ -DINSTALL_DOCS=OFF
+ -DENABLE_INSTALL_testtex=OFF
+ "-DFMT_INCLUDES=${CURRENT_INSTALLED_DIR}/include"
+ "-DREQUIRED_DEPS=fmt;JPEG;PNG;Robinmap"
+ MAYBE_UNUSED_VARIABLES
+ ENABLE_INSTALL_testtex
+ ENABLE_IV
+ BUILD_MISSING_DEPS
+ BUILD_MISSING_FMT
+ BUILD_MISSING_ROBINMAP
+ REQUIRED_DEPS
+)
+
+vcpkg_cmake_install()
+
+vcpkg_copy_pdbs()
+
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/OpenImageIO)
+
+if("tools" IN_LIST FEATURES)
+ vcpkg_copy_tools(
+ TOOL_NAMES iconvert idiff igrep iinfo maketx oiiotool
+ AUTO_CLEAN
+ )
+endif()
+
+if("viewer" IN_LIST FEATURES)
+ vcpkg_copy_tools(
+ TOOL_NAMES iv
+ AUTO_CLEAN
+ )
+endif()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/doc"
+ "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/debug/share")
+
+vcpkg_fixup_pkgconfig()
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/OpenImageIO/export.h" "ifdef OIIO_STATIC_DEFINE" "if 1")
+endif()
+
+
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.md")
+file(READ "${SOURCE_PATH}/THIRD-PARTY.md" third_party)
+string(REGEX REPLACE
+ "^.*The remainder of this file"
+ "\n-------------------------------------------------------------------------\n\nThe remainder of this file"
+ third_party
+ "${third_party}"
+)
+file(APPEND "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" "${third_party}")
diff --git a/vcpkg/ports/openimageio/usage b/vcpkg/ports/openimageio/usage
new file mode 100644
index 0000000..b76a4cd
--- /dev/null
+++ b/vcpkg/ports/openimageio/usage
@@ -0,0 +1,4 @@
+The package openimageio provides CMake targets:
+
+ find_package(OpenImageIO CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE OpenImageIO::OpenImageIO)
diff --git a/vcpkg/ports/openimageio/vcpkg.json b/vcpkg/ports/openimageio/vcpkg.json
new file mode 100644
index 0000000..1795b41
--- /dev/null
+++ b/vcpkg/ports/openimageio/vcpkg.json
@@ -0,0 +1,135 @@
+{
+ "name": "openimageio",
+ "version": "3.0.9.1",
+ "port-version": 1,
+ "description": "A library for reading and writing images, and a bunch of related classes, utilities, and application.",
+ "homepage": "https://github.com/OpenImageIO/oiio",
+ "license": "BSD-3-Clause",
+ "dependencies": [
+ "fmt",
+ "libjpeg-turbo",
+ "libpng",
+ "opencolorio",
+ "openexr",
+ "robin-map",
+ {
+ "name": "tiff",
+ "default-features": false
+ },
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ "zlib"
+ ],
+ "features": {
+ "ffmpeg": {
+ "description": "Enable ffmpeg support for openimageio",
+ "dependencies": [
+ {
+ "name": "ffmpeg",
+ "default-features": false,
+ "features": [
+ "avresample"
+ ]
+ }
+ ]
+ },
+ "freetype": {
+ "description": "Enable freetype support for openimageio",
+ "dependencies": [
+ "freetype"
+ ]
+ },
+ "gif": {
+ "description": "Enable giflib support for openimageio",
+ "dependencies": [
+ "giflib"
+ ]
+ },
+ "jpegxl": {
+ "description": "Enable JPEG XL codec",
+ "dependencies": [
+ "libjxl"
+ ]
+ },
+ "libheif": {
+ "description": "Enable heif support for openimageio",
+ "dependencies": [
+ "libheif"
+ ]
+ },
+ "libraw": {
+ "description": "Enable RAW image files support",
+ "dependencies": [
+ "libraw"
+ ]
+ },
+ "opencolorio": {
+ "description": [
+ "Enable opencolorio support for openimageio.",
+ "This feature can only be used when openexr and opencolorio use the same version of Imath."
+ ],
+ "dependencies": [
+ "opencolorio"
+ ]
+ },
+ "opencv": {
+ "description": "Enable opencv support for openimageio",
+ "dependencies": [
+ {
+ "name": "opencv",
+ "default-features": false,
+ "features": [
+ "fs",
+ "intrinsics",
+ "thread"
+ ]
+ }
+ ]
+ },
+ "openjpeg": {
+ "description": "Enable openjpeg support for openimageio",
+ "dependencies": [
+ "openjpeg"
+ ]
+ },
+ "pybind11": {
+ "description": "Enable Python bindings support for openimageio",
+ "dependencies": [
+ "pybind11",
+ "python3"
+ ]
+ },
+ "tools": {
+ "description": "Build openimageio tools"
+ },
+ "viewer": {
+ "description": "Build openimageio viewer",
+ "supports": "!android",
+ "dependencies": [
+ "opengl",
+ {
+ "name": "openimageio",
+ "features": [
+ "tools"
+ ]
+ },
+ {
+ "name": "qtbase",
+ "default-features": false
+ }
+ ]
+ },
+ "webp": {
+ "description": "Enable libwebp support for openimageio",
+ "dependencies": [
+ "libwebp"
+ ]
+ }
+ }
+}