diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/openimageio | |
Diffstat (limited to 'vcpkg/ports/openimageio')
| -rw-r--r-- | vcpkg/ports/openimageio/fix-dependencies.patch | 103 | ||||
| -rw-r--r-- | vcpkg/ports/openimageio/fix-openexr-target-missing.patch | 13 | ||||
| -rw-r--r-- | vcpkg/ports/openimageio/fix-openimageio_include_dir.patch | 13 | ||||
| -rw-r--r-- | vcpkg/ports/openimageio/fix-static-ffmpeg.patch | 19 | ||||
| -rw-r--r-- | vcpkg/ports/openimageio/imath-version-guard.patch | 16 | ||||
| -rw-r--r-- | vcpkg/ports/openimageio/portfile.cmake | 124 | ||||
| -rw-r--r-- | vcpkg/ports/openimageio/usage | 4 | ||||
| -rw-r--r-- | vcpkg/ports/openimageio/vcpkg.json | 135 |
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" + ] + } + } +} |