aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libraw
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/libraw
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/libraw')
-rw-r--r--vcpkg/ports/libraw/dependencies.patch50
-rw-r--r--vcpkg/ports/libraw/fix-install.patch39
-rw-r--r--vcpkg/ports/libraw/portfile.cmake73
-rw-r--r--vcpkg/ports/libraw/usage7
-rw-r--r--vcpkg/ports/libraw/vcpkg-cmake-wrapper.cmake40
-rw-r--r--vcpkg/ports/libraw/vcpkg.json40
6 files changed, 249 insertions, 0 deletions
diff --git a/vcpkg/ports/libraw/dependencies.patch b/vcpkg/ports/libraw/dependencies.patch
new file mode 100644
index 0000000..f25ec96
--- /dev/null
+++ b/vcpkg/ports/libraw/dependencies.patch
@@ -0,0 +1,50 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index d3faf24..8833187 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -130,7 +130,10 @@ set(LIBRAW_PC_REQUIRES_PRIVATE "")
+ if(NOT WIN32 AND NOT EMSCRIPTEN)
+ FIND_LIBRARY(MATH_LIBRARY m)
+ if(MATH_LIBRARY)
++ set(MATH_LIBRARY m)
+ string(APPEND LIBRAW_PC_LIBS_PRIVATE " -l${MATH_LIBRARY}")
++ else()
++ set(MATH_LIBRARY "")
+ endif()
+ endif()
+
+@@ -142,7 +145,11 @@ set(LCMS_FOUND false)
+
+ if(ENABLE_LCMS)
+ message(STATUS "Check for LCMS2 availability...")
+- find_package(LCMS2)
++ find_package(lcms2 CONFIG REQUIRED)
++ set(LCMS2_FOUND 1)
++ set(LCMS2_VERSION 2.14)
++ set(LCMS2_INCLUDE_DIR "")
++ set(LCMS2_LIBRARIES lcms2::lcms2)
+ if(LCMS2_FOUND AND (LCMS2_VERSION VERSION_EQUAL 2.1 OR LCMS2_VERSION VERSION_GREATER 2.1))
+ message(STATUS "Found LCMS2 : ${LCMS2_LIBRARIES} ${LCMS2_INCLUDE_DIR}")
+ include_directories(${LCMS2_INCLUDE_DIR})
+@@ -188,7 +195,7 @@ MACRO_BOOL_TO_01(ZLIB_FOUND LIBRAW_USE_DNGDEFLATECODEC)
+ # JPEG library check
+ find_package(JPEG)
+ if(JPEG_FOUND)
+- if (${JPEG_VERSION} LESS 80)
++ if (${JPEG_VERSION} LESS 80 OR NOT CMAKE_REQUIRE_FIND_PACKAGE_JPEG)
+ set(JPEG8_FOUND FALSE)
+ else()
+ set(JPEG8_FOUND TRUE)
+diff --git a/cmake/librawConfig.cmake.in b/cmake/librawConfig.cmake.in
+index b1b58d8..dae06cc 100644
+--- a/cmake/librawConfig.cmake.in
++++ b/cmake/librawConfig.cmake.in
+@@ -13,7 +13,7 @@ endif()
+
+ if(@LCMS_SUPPORT_CAN_BE_COMPILED@)
+ if(@LCMS2_FOUND@)
+- find_dependency(LCMS2)
++ find_dependency(lcms2 CONFIG)
+ elseif(@LCMS_FOUND@)
+ find_dependency(LCMS)
+ endif()
diff --git a/vcpkg/ports/libraw/fix-install.patch b/vcpkg/ports/libraw/fix-install.patch
new file mode 100644
index 0000000..c4facc5
--- /dev/null
+++ b/vcpkg/ports/libraw/fix-install.patch
@@ -0,0 +1,39 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e6a70d9..a5c70e7 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -629,7 +629,13 @@ if (LIBRAW_INSTALL)
+ )
+
+ # Install Shared binary files.
+- install(TARGETS raw raw_r
++ install(TARGETS raw
++ EXPORT ${PROJECT_NAME}Targets
++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/manual-link
++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/manual-link
++ )
++ install(TARGETS raw_r
+ EXPORT ${PROJECT_NAME}Targets
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+@@ -640,6 +646,7 @@ if (LIBRAW_INSTALL)
+ if(NOT BUILD_SHARED_LIBS AND "${CMAKE_CXX_SIMULATE_ID}" STREQUAL "MSVC")
+ message("ClangCl does not support pdb generation with static libraries")
+ elseif(MSVC)
++ elseif(0)
+ install(FILES ${PROJECT_BINARY_DIR}/raw.pdb ${PROJECT_BINARY_DIR}/raw_r.pdb
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ CONFIGURATIONS Debug RelWithDebInfo
+diff --git a/cmake/data/libraw.pc.cmake b/cmake/data/libraw.pc.cmake
+index 54c5af4..d182680 100644
+--- a/cmake/data/libraw.pc.cmake
++++ b/cmake/data/libraw.pc.cmake
+@@ -1,6 +1,6 @@
+ prefix=@CMAKE_INSTALL_PREFIX@
+ exec_prefix=${prefix}
+-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
++libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@/manual-link
+ includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
+
+ Name: @PROJECT_NAME@
diff --git a/vcpkg/ports/libraw/portfile.cmake b/vcpkg/ports/libraw/portfile.cmake
new file mode 100644
index 0000000..a85a39a
--- /dev/null
+++ b/vcpkg/ports/libraw/portfile.cmake
@@ -0,0 +1,73 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO LibRaw/LibRaw
+ REF "${VERSION}"
+ SHA512 d8366d62f32f02466128ecfedf9a9b39289834a73d89d57004cf7df63919e66808ba283cddf5843b25fe903d72eb988ac5b490525083e2b5d84a05c7679b4014
+ HEAD_REF master
+)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH LIBRAW_CMAKE_SOURCE_PATH
+ REPO LibRaw/LibRaw-cmake
+ REF eb98e4325aef2ce85d2eb031c2ff18640ca616d3
+ SHA512 63e68a4d30286ec3aa97168d46b7a1199268099ae27b61abcc92e93ec30e48d364086227983a1d724415e5f4da44d905422f30192453b95f31040e5f8469c3f9
+ HEAD_REF master
+ PATCHES
+ dependencies.patch
+ # Move the non-thread-safe library to manual-link. This is unfortunately needed
+ # because otherwise libraries that build on top of libraw have to choose.
+ fix-install.patch
+)
+
+file(COPY "${LIBRAW_CMAKE_SOURCE_PATH}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}")
+file(COPY "${LIBRAW_CMAKE_SOURCE_PATH}/cmake" DESTINATION "${SOURCE_PATH}")
+
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ openmp ENABLE_OPENMP
+ openmp CMAKE_REQUIRE_FIND_PACKAGE_OpenMP
+ dng-lossy CMAKE_REQUIRE_FIND_PACKAGE_JPEG
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ -DENABLE_EXAMPLES=OFF
+ -DCMAKE_REQUIRE_FIND_PACKAGE_Jasper=1
+ -DCMAKE_REQUIRE_FIND_PACKAGE_ZLIB=1
+ MAYBE_UNUSED_VARIABLES
+ CMAKE_REQUIRE_FIND_PACKAGE_OpenMP
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake")
+vcpkg_fixup_pkgconfig()
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/libraw/libraw_types.h"
+ "#ifdef LIBRAW_NODLL" "#if 1"
+ )
+else()
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/libraw/libraw_types.h"
+ "#ifdef LIBRAW_NODLL" "#if 0"
+ )
+endif()
+
+file(COPY "${CURRENT_PACKAGES_DIR}/share/cmake/libraw/FindLibRaw.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+file(REMOVE_RECURSE
+ "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/debug/share"
+ "${CURRENT_PACKAGES_DIR}/share/cmake"
+ "${CURRENT_PACKAGES_DIR}/share/doc"
+)
+
+configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY)
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+vcpkg_install_copyright(FILE_LIST
+ "${SOURCE_PATH}/COPYRIGHT"
+ "${SOURCE_PATH}/LICENSE.LGPL"
+ "${SOURCE_PATH}/LICENSE.CDDL"
+)
diff --git a/vcpkg/ports/libraw/usage b/vcpkg/ports/libraw/usage
new file mode 100644
index 0000000..751277b
--- /dev/null
+++ b/vcpkg/ports/libraw/usage
@@ -0,0 +1,7 @@
+libraw provides CMake targets:
+
+ find_package(libraw CONFIG REQUIRED)
+ # non-thread-safe
+ target_link_libraries(main PRIVATE libraw::raw)
+ # thread-safe
+ target_link_libraries(main PRIVATE libraw::raw_r)
diff --git a/vcpkg/ports/libraw/vcpkg-cmake-wrapper.cmake b/vcpkg/ports/libraw/vcpkg-cmake-wrapper.cmake
new file mode 100644
index 0000000..4d2b9ad
--- /dev/null
+++ b/vcpkg/ports/libraw/vcpkg-cmake-wrapper.cmake
@@ -0,0 +1,40 @@
+find_library(LibRaw_LIBRARY_RELEASE NAMES raw PATHS "${CMAKE_CURRENT_LIST_DIR}/../../lib/manual-link" NO_DEFAULT_PATH)
+find_library(LibRaw_LIBRARY_DEBUG NAMES rawd raw PATHS "${CMAKE_CURRENT_LIST_DIR}/../../debug/lib/manual-link" NO_DEFAULT_PATH)
+find_library(LibRaw_r_LIBRARY_RELEASE NAMES raw_r PATHS "${CMAKE_CURRENT_LIST_DIR}/../../lib" NO_DEFAULT_PATH)
+find_library(LibRaw_r_LIBRARY_DEBUG NAMES raw_rd raw_r PATHS "${CMAKE_CURRENT_LIST_DIR}/../../debug/lib" NO_DEFAULT_PATH)
+
+set(LIBRAW_PREV_MODULE_PATH "${CMAKE_MODULE_PATH}")
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
+_find_package(${ARGS})
+set(CMAKE_MODULE_PATH ${LIBRAW_PREV_MODULE_PATH})
+
+if(NOT LibRaw_r_LIBRARIES STREQUAL "")
+ if ("@ENABLE_OPENMP@")
+ find_package(OpenMP REQUIRED)
+ if (OpenMP_FOUND)
+ list(APPEND LibRaw_LIBRARIES ${OpenMP_CXX_LIBRARIES})
+ list(APPEND LibRaw_r_LIBRARIES ${OpenMP_CXX_LIBRARIES})
+ endif()
+ endif()
+
+ if ("@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static")
+ find_package(Jasper REQUIRED)
+ list(APPEND LibRaw_LIBRARIES ${JASPER_LIBRARIES})
+ list(APPEND LibRaw_r_LIBRARIES ${JASPER_LIBRARIES})
+ find_package(lcms2 CONFIG REQUIRED)
+ list(APPEND LibRaw_LIBRARIES lcms2::lcms2)
+ list(APPEND LibRaw_r_LIBRARIES lcms2::lcms2)
+ find_package(ZLIB REQUIRED)
+ list(APPEND LibRaw_LIBRARIES ${ZLIB_LIBRARIES})
+ list(APPEND LibRaw_r_LIBRARIES ${ZLIB_LIBRARIES})
+ if("@CMAKE_REQUIRE_FIND_PACKAGE_JPEG@")
+ find_package(JPEG REQUIRED)
+ list(APPEND LibRaw_LIBRARIES ${JPEG_LIBRARIES})
+ list(APPEND LibRaw_r_LIBRARIES ${JPEG_LIBRARIES})
+ endif()
+ if("@MATH_LIBRARY@")
+ list(APPEND LibRaw_LIBRARIES @MATH_LIBRARY@)
+ list(APPEND LibRaw_r_LIBRARIES @MATH_LIBRARY@)
+ endif()
+ endif()
+endif()
diff --git a/vcpkg/ports/libraw/vcpkg.json b/vcpkg/ports/libraw/vcpkg.json
new file mode 100644
index 0000000..cb1a157
--- /dev/null
+++ b/vcpkg/ports/libraw/vcpkg.json
@@ -0,0 +1,40 @@
+{
+ "name": "libraw",
+ "version": "0.21.4",
+ "description": "raw image decoder library",
+ "homepage": "https://www.libraw.org",
+ "license": "LGPL-2.1-only OR CDDL-1.0",
+ "supports": "!uwp & !xbox",
+ "dependencies": [
+ {
+ "name": "jasper",
+ "default-features": false
+ },
+ "lcms",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ "zlib"
+ ],
+ "features": {
+ "dng-lossy": {
+ "description": "DNG lossy codec support",
+ "dependencies": [
+ {
+ "name": "libjpeg-turbo",
+ "features": [
+ "jpeg8"
+ ]
+ }
+ ]
+ },
+ "openmp": {
+ "description": "Build library with OpenMP support"
+ }
+ }
+}