aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libjpeg-turbo
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/libjpeg-turbo
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/libjpeg-turbo')
-rw-r--r--vcpkg/ports/libjpeg-turbo/add-options-for-docs-headers.patch50
-rw-r--r--vcpkg/ports/libjpeg-turbo/portfile.cmake108
-rw-r--r--vcpkg/ports/libjpeg-turbo/usage9
-rw-r--r--vcpkg/ports/libjpeg-turbo/vcpkg-cmake-wrapper.cmake38
-rw-r--r--vcpkg/ports/libjpeg-turbo/vcpkg.json28
-rw-r--r--vcpkg/ports/libjpeg-turbo/workaround_cmake_system_processor.patch13
6 files changed, 246 insertions, 0 deletions
diff --git a/vcpkg/ports/libjpeg-turbo/add-options-for-docs-headers.patch b/vcpkg/ports/libjpeg-turbo/add-options-for-docs-headers.patch
new file mode 100644
index 0000000..6e2edb1
--- /dev/null
+++ b/vcpkg/ports/libjpeg-turbo/add-options-for-docs-headers.patch
@@ -0,0 +1,50 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index c9b4281..2b7b7e1 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -788,9 +788,6 @@ if(WITH_TURBOJPEG)
+ target_link_libraries(tjbench m)
+ endif()
+ endif()
+-
+- add_custom_target(tjdoc COMMAND doxygen -s ../doc/doxygen.config
+- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src)
+ endif()
+
+ if(ENABLE_STATIC)
+@@ -2060,35 +2057,6 @@ if(WITH_TOOLS)
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT bin)
+ endif()
+
+-install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.ijg
+- ${CMAKE_CURRENT_SOURCE_DIR}/README.md
+- ${CMAKE_CURRENT_SOURCE_DIR}/src/example.c
+- ${CMAKE_CURRENT_SOURCE_DIR}/src/tjcomp.c
+- ${CMAKE_CURRENT_SOURCE_DIR}/src/tjdecomp.c
+- ${CMAKE_CURRENT_SOURCE_DIR}/src/tjtran.c
+- ${CMAKE_CURRENT_SOURCE_DIR}/doc/libjpeg.txt
+- ${CMAKE_CURRENT_SOURCE_DIR}/doc/structure.txt
+- ${CMAKE_CURRENT_SOURCE_DIR}/doc/usage.txt
+- ${CMAKE_CURRENT_SOURCE_DIR}/doc/wizard.txt
+- ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md DESTINATION ${CMAKE_INSTALL_DOCDIR}
+- COMPONENT doc)
+-if(WITH_JAVA)
+- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/java/TJComp.java
+- ${CMAKE_CURRENT_SOURCE_DIR}/java/TJDecomp.java
+- ${CMAKE_CURRENT_SOURCE_DIR}/java/TJTran.java
+- DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT doc)
+-endif()
+-
+-if(UNIX OR MINGW)
+- if(WITH_TOOLS)
+- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/cjpeg.1
+- ${CMAKE_CURRENT_SOURCE_DIR}/doc/djpeg.1
+- ${CMAKE_CURRENT_SOURCE_DIR}/doc/jpegtran.1
+- ${CMAKE_CURRENT_SOURCE_DIR}/doc/rdjpgcom.1
+- ${CMAKE_CURRENT_SOURCE_DIR}/doc/wrjpgcom.1
+- DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT man)
+- endif()
+-endif()
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgscripts/libjpeg.pc
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT lib)
+ if(WITH_TURBOJPEG)
diff --git a/vcpkg/ports/libjpeg-turbo/portfile.cmake b/vcpkg/ports/libjpeg-turbo/portfile.cmake
new file mode 100644
index 0000000..c698b71
--- /dev/null
+++ b/vcpkg/ports/libjpeg-turbo/portfile.cmake
@@ -0,0 +1,108 @@
+if(EXISTS "${CURRENT_INSTALLED_DIR}/share/mozjpeg/copyright")
+ message(FATAL_ERROR "Can't build ${PORT} if mozjpeg is installed. Please remove mozjpeg:${TARGET_TRIPLET}, and try to install ${PORT}:${TARGET_TRIPLET} again.")
+endif()
+if(EXISTS "${CURRENT_INSTALLED_DIR}/share/ijg-libjpeg/copyright")
+ message(FATAL_ERROR "Can't build ${PORT} if ijg-libjpeg is installed. Please remove ijg-libjpeg:${TARGET_TRIPLET}, and try to install ${PORT}:${TARGET_TRIPLET} again.")
+endif()
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO libjpeg-turbo/libjpeg-turbo
+ REF "${VERSION}"
+ SHA512 91918fe0d6a2f74fa0faf9141a341a18d123684ceef0ec6a18d4b82fd47f13a939c2dd01c511d83567d1397e7344bd323f921ee5a1095cc61542a97b01ae9301
+ HEAD_REF master
+ PATCHES
+ add-options-for-docs-headers.patch
+ # workaround for vcpkg bug see #5697 on github for more information
+ workaround_cmake_system_processor.patch
+)
+
+if(VCPKG_TARGET_ARCHITECTURE STREQUAL "wasm32")
+ set(LIBJPEGTURBO_SIMD -DWITH_SIMD=OFF)
+elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64" OR (VCPKG_CMAKE_SYSTEM_NAME AND NOT VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore"))
+ set(LIBJPEGTURBO_SIMD -DWITH_SIMD=ON -DNEON_INTRINSICS=ON)
+else()
+ set(LIBJPEGTURBO_SIMD -DWITH_SIMD=ON)
+ vcpkg_find_acquire_program(NASM)
+ get_filename_component(NASM_EXE_PATH ${NASM} DIRECTORY)
+ set(ENV{PATH} "$ENV{PATH};${NASM_EXE_PATH}")
+endif()
+
+if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+ set(ENV{_CL_} "-DNO_GETENV -DNO_PUTENV")
+endif()
+
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" ENABLE_SHARED)
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" ENABLE_STATIC)
+string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "dynamic" WITH_CRT_DLL)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ jpeg7 WITH_JPEG7
+ jpeg8 WITH_JPEG8
+ tools WITH_TOOLS
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DENABLE_STATIC=${ENABLE_STATIC}
+ -DENABLE_SHARED=${ENABLE_SHARED}
+ -DWITH_CRT_DLL=${WITH_CRT_DLL}
+ ${FEATURE_OPTIONS}
+ ${LIBJPEGTURBO_SIMD}
+ MAYBE_UNUSED_VARIABLES
+ WITH_CRT_DLL
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+
+if(WITH_TOOLS)
+ vcpkg_copy_tools(
+ TOOL_NAMES cjpeg djpeg jpegtran rdjpgcom wrjpgcom
+ AUTO_CLEAN
+ )
+ vcpkg_clean_executables_in_bin(
+ FILE_NAMES tjbench
+ )
+endif()
+
+vcpkg_fixup_pkgconfig()
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/libjpeg-turbo)
+
+# Rename libraries for static builds
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ if(EXISTS "${CURRENT_PACKAGES_DIR}/lib/jpeg-static.lib")
+ file(RENAME "${CURRENT_PACKAGES_DIR}/lib/jpeg-static.lib" "${CURRENT_PACKAGES_DIR}/lib/jpeg.lib")
+ file(RENAME "${CURRENT_PACKAGES_DIR}/lib/turbojpeg-static.lib" "${CURRENT_PACKAGES_DIR}/lib/turbojpeg.lib")
+ endif()
+ if(EXISTS "${CURRENT_PACKAGES_DIR}/debug/lib/jpeg-static.lib")
+ file(RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/jpeg-static.lib" "${CURRENT_PACKAGES_DIR}/debug/lib/jpeg.lib")
+ file(RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/turbojpeg-static.lib" "${CURRENT_PACKAGES_DIR}/debug/lib/turbojpeg.lib")
+ endif()
+
+ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin")
+
+ if (EXISTS "${CURRENT_PACKAGES_DIR}/share/${PORT}/libjpeg-turboTargets-debug.cmake")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/${PORT}/libjpeg-turboTargets-debug.cmake"
+ "jpeg-static${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}" "jpeg${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}" IGNORE_UNCHANGED)
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/${PORT}/libjpeg-turboTargets-debug.cmake"
+ "turbojpeg-static${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}" "turbojpeg${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}" IGNORE_UNCHANGED)
+ endif()
+ if (EXISTS "${CURRENT_PACKAGES_DIR}/share/${PORT}/libjpeg-turboTargets-release.cmake")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/${PORT}/libjpeg-turboTargets-release.cmake"
+ "jpeg-static${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}" "jpeg${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}" IGNORE_UNCHANGED)
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/${PORT}/libjpeg-turboTargets-release.cmake"
+ "turbojpeg-static${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}" "turbojpeg${VCPKG_TARGET_STATIC_LIBRARY_SUFFIX}" IGNORE_UNCHANGED)
+ endif()
+endif()
+
+file(REMOVE_RECURSE
+ "${CURRENT_PACKAGES_DIR}/debug/share"
+ "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/share/man")
+
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/jpeg")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.md")
diff --git a/vcpkg/ports/libjpeg-turbo/usage b/vcpkg/ports/libjpeg-turbo/usage
new file mode 100644
index 0000000..fd8720a
--- /dev/null
+++ b/vcpkg/ports/libjpeg-turbo/usage
@@ -0,0 +1,9 @@
+libjpeg-turbo is compatible with built-in implementation-agnostic CMake targets:
+
+ find_package(JPEG REQUIRED)
+ target_link_libraries(main PRIVATE JPEG::JPEG)
+
+libjpeg-turbo provides CMake targets for the TurboJPEG C API:
+
+ find_package(libjpeg-turbo CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE $<IF:$<TARGET_EXISTS:libjpeg-turbo::turbojpeg>,libjpeg-turbo::turbojpeg,libjpeg-turbo::turbojpeg-static>)
diff --git a/vcpkg/ports/libjpeg-turbo/vcpkg-cmake-wrapper.cmake b/vcpkg/ports/libjpeg-turbo/vcpkg-cmake-wrapper.cmake
new file mode 100644
index 0000000..d63c58b
--- /dev/null
+++ b/vcpkg/ports/libjpeg-turbo/vcpkg-cmake-wrapper.cmake
@@ -0,0 +1,38 @@
+cmake_policy(PUSH)
+cmake_policy(SET CMP0012 NEW)
+cmake_policy(SET CMP0054 NEW)
+find_path(JPEG_INCLUDE_DIR NAMES jpeglib.h PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include" NO_DEFAULT_PATH)
+find_library(JPEG_LIBRARY_RELEASE NAMES jpeg PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib" NO_DEFAULT_PATH)
+find_library(JPEG_LIBRARY_DEBUG NAMES jpeg PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib" NO_DEFAULT_PATH)
+if(CMAKE_VERSION VERSION_LESS 3.12 AND CMAKE_BUILD_TYPE STREQUAL "Debug")
+ set(JPEG_LIBRARY "${JPEG_LIBRARY_DEBUG}" CACHE FILEPATH "")
+endif()
+_find_package(${ARGS})
+if(JPEG_FOUND AND NOT TARGET JPEG::JPEG)
+ # Backfill JPEG::JPEG to versions of cmake before 3.12
+ add_library(JPEG::JPEG UNKNOWN IMPORTED)
+ if(DEFINED JPEG_INCLUDE_DIRS)
+ set_target_properties(JPEG::JPEG PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${JPEG_INCLUDE_DIRS}")
+ endif()
+ if(EXISTS "${JPEG_LIBRARY}")
+ set_target_properties(JPEG::JPEG PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+ IMPORTED_LOCATION "${JPEG_LIBRARY}")
+ endif()
+ if(EXISTS "${JPEG_LIBRARY_RELEASE}")
+ set_property(TARGET JPEG::JPEG APPEND PROPERTY
+ IMPORTED_CONFIGURATIONS RELEASE)
+ set_target_properties(JPEG::JPEG PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
+ IMPORTED_LOCATION_RELEASE "${JPEG_LIBRARY_RELEASE}")
+ endif()
+ if(EXISTS "${JPEG_LIBRARY_DEBUG}")
+ set_property(TARGET JPEG::JPEG APPEND PROPERTY
+ IMPORTED_CONFIGURATIONS DEBUG)
+ set_target_properties(JPEG::JPEG PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
+ IMPORTED_LOCATION_DEBUG "${JPEG_LIBRARY_DEBUG}")
+ endif()
+endif()
+cmake_policy(POP)
diff --git a/vcpkg/ports/libjpeg-turbo/vcpkg.json b/vcpkg/ports/libjpeg-turbo/vcpkg.json
new file mode 100644
index 0000000..0de5d1c
--- /dev/null
+++ b/vcpkg/ports/libjpeg-turbo/vcpkg.json
@@ -0,0 +1,28 @@
+{
+ "name": "libjpeg-turbo",
+ "version": "3.1.2",
+ "description": "libjpeg-turbo is a JPEG image codec that uses SIMD instructions (MMX, SSE2, NEON, AltiVec) to accelerate baseline JPEG compression and decompression on x86, x86-64, ARM, and PowerPC systems.",
+ "homepage": "https://github.com/libjpeg-turbo/libjpeg-turbo",
+ "license": "BSD-3-Clause",
+ "dependencies": [
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ],
+ "features": {
+ "jpeg7": {
+ "description": "Emulate libjpeg v7 API/ABI (this makes libjpeg-turbo backward-incompatible with libjpeg v6b!)"
+ },
+ "jpeg8": {
+ "description": "Emulate libjpeg v8 API/ABI (this makes libjpeg-turbo backward-incompatible with libjpeg v6b!)"
+ },
+ "tools": {
+ "description": "Build executables"
+ }
+ }
+}
diff --git a/vcpkg/ports/libjpeg-turbo/workaround_cmake_system_processor.patch b/vcpkg/ports/libjpeg-turbo/workaround_cmake_system_processor.patch
new file mode 100644
index 0000000..1c0b138
--- /dev/null
+++ b/vcpkg/ports/libjpeg-turbo/workaround_cmake_system_processor.patch
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 55ff716..abad9fa 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -105,7 +105,7 @@ include(cmakescripts/PackageInfo.cmake)
+
+ # Detect CPU type and whether we're building 64-bit or 32-bit code
+ math(EXPR BITS "${CMAKE_SIZEOF_VOID_P} * 8")
+-string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} CMAKE_SYSTEM_PROCESSOR_LC)
++string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" CMAKE_SYSTEM_PROCESSOR_LC)
+ set(COUNT 1)
+ foreach(ARCH ${CMAKE_OSX_ARCHITECTURES})
+ if(COUNT GREATER 1)