aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/jxrlib
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/jxrlib
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/jxrlib')
-rw-r--r--vcpkg/ports/jxrlib/CMakeLists.txt113
-rw-r--r--vcpkg/ports/jxrlib/FindJXR.cmake28
-rw-r--r--vcpkg/ports/jxrlib/fix-mingw.patch51
-rw-r--r--vcpkg/ports/jxrlib/guiddef.patch20
-rw-r--r--vcpkg/ports/jxrlib/portfile.cmake29
-rw-r--r--vcpkg/ports/jxrlib/usage5
-rw-r--r--vcpkg/ports/jxrlib/vcpkg-cmake-wrapper.cmake6
-rw-r--r--vcpkg/ports/jxrlib/vcpkg.json14
8 files changed, 266 insertions, 0 deletions
diff --git a/vcpkg/ports/jxrlib/CMakeLists.txt b/vcpkg/ports/jxrlib/CMakeLists.txt
new file mode 100644
index 0000000..18c924f
--- /dev/null
+++ b/vcpkg/ports/jxrlib/CMakeLists.txt
@@ -0,0 +1,113 @@
+# Copyright Mathieu Malaterre <malat@debian.org>
+# BSD (Same as jxrlib)
+# Based on https://jxrlib.codeplex.com/discussions/440294
+# and modified for vcpkg packaging
+cmake_minimum_required(VERSION 2.8)
+project(jxrlib C)
+
+# Need shared libs for ABI
+option(BUILD_SHARED_LIBS "Build shared libraries" ON)
+
+# Add a debug postfix
+set(CMAKE_DEBUG_POSTFIX "d")
+
+# helper macro to preserve original Makefile convention
+macro(JXR_MAKE_OBJ SET_NAME)
+ foreach(src ${SRC_${SET_NAME}})
+ list(APPEND OBJ_${SET_NAME} ${DIR_${SET_NAME}}/${src})
+ endforeach()
+endmacro()
+
+if(NOT WIN32)
+ add_definitions(-D__ANSI__)
+endif()
+if(NOT MSVC)
+ add_compile_options(
+ -Wno-error=implicit-function-declaration
+ -Wno-endif-labels
+ -Wno-incompatible-pointer-types # https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types
+ )
+endif()
+
+include(TestBigEndian)
+test_big_endian(ISBIGENDIAN)
+if(ISBIGENDIAN)
+ set(DEF_ENDIAN _BIG__ENDIAN_)
+endif()
+
+set(DIR_SYS image/sys)
+set(DIR_DEC image/decode)
+set(DIR_ENC image/encode)
+
+set(DIR_GLUE jxrgluelib)
+set(DIR_TEST jxrtestlib)
+set(DIR_EXEC jxrencoderdecoder)
+
+if(NOT JXRLIB_INSTALL_BIN_DIR)
+ set(JXRLIB_INSTALL_BIN_DIR "bin")
+endif()
+
+if(NOT JXRLIB_INSTALL_LIB_DIR)
+ set(JXRLIB_INSTALL_LIB_DIR "lib")
+endif()
+
+if(NOT JXRLIB_INSTALL_INCLUDE_DIR)
+ set(JXRLIB_INSTALL_INCLUDE_DIR "include/jxrlib")
+endif()
+
+include_directories(
+ common/include
+ ${DIR_SYS}
+ ${DIR_GLUE}
+ ${DIR_TEST}
+)
+
+
+# JPEG-XR
+set(SRC_SYS adapthuff.c image.c strcodec.c strPredQuant.c strTransform.c perfTimerANSI.c)
+JXR_MAKE_OBJ(SYS)
+set(SRC_DEC decode.c postprocess.c segdec.c strdec.c strInvTransform.c strPredQuantDec.c JXRTranscode.c)
+JXR_MAKE_OBJ(DEC)
+set(SRC_ENC encode.c segenc.c strenc.c strFwdTransform.c strPredQuantEnc.c)
+JXR_MAKE_OBJ(ENC)
+
+add_library(jpegxr ${OBJ_ENC} ${OBJ_DEC} ${OBJ_SYS})
+set_property(TARGET jpegxr
+ PROPERTY COMPILE_DEFINITIONS DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN}
+)
+set_property(TARGET jpegxr PROPERTY LINK_INTERFACE_LIBRARIES "")
+install(TARGETS jpegxr
+ EXPORT JXRLibTargets
+ RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR}
+ LIBRARY DESTINATION ${JXRLIB_INSTALL_LIB_DIR}
+ ARCHIVE DESTINATION ${JXRLIB_INSTALL_LIB_DIR}
+)
+
+# JXR-GLUE
+set(SRC_GLUE JXRGlue.c JXRMeta.c JXRGluePFC.c JXRGlueJxr.c)
+JXR_MAKE_OBJ(GLUE)
+set(SRC_TEST JXRTest.c JXRTestBmp.c JXRTestHdr.c JXRTestPnm.c JXRTestTif.c JXRTestYUV.c)
+JXR_MAKE_OBJ(TEST)
+
+add_library(jxrglue ${OBJ_GLUE} ${OBJ_TEST})
+set_property(TARGET jxrglue
+ PROPERTY COMPILE_DEFINITIONS DISABLE_PERF_MEASUREMENT ${DEF_ENDIAN}
+)
+set_property(TARGET jxrglue PROPERTY LINK_INTERFACE_LIBRARIES "")
+install(TARGETS jxrglue
+ EXPORT JXRLibTargets
+ RUNTIME DESTINATION ${JXRLIB_INSTALL_BIN_DIR}
+ LIBRARY DESTINATION ${JXRLIB_INSTALL_LIB_DIR}
+ ARCHIVE DESTINATION ${JXRLIB_INSTALL_LIB_DIR}
+)
+
+target_link_libraries(jxrglue jpegxr)
+
+# install rules
+install(FILES jxrgluelib/JXRGlue.h jxrgluelib/JXRMeta.h jxrtestlib/JXRTest.h
+ image/sys/windowsmediaphoto.h
+ DESTINATION ${JXRLIB_INSTALL_INCLUDE_DIR} COMPONENT Headers
+)
+install(DIRECTORY common/include/ DESTINATION ${JXRLIB_INSTALL_INCLUDE_DIR}
+ FILES_MATCHING PATTERN "*.h"
+)
diff --git a/vcpkg/ports/jxrlib/FindJXR.cmake b/vcpkg/ports/jxrlib/FindJXR.cmake
new file mode 100644
index 0000000..79924d2
--- /dev/null
+++ b/vcpkg/ports/jxrlib/FindJXR.cmake
@@ -0,0 +1,28 @@
+# - Find JXR
+# Find the JXR library
+# This module defines
+# JXR_INCLUDE_DIRS, where to find jxrlib/JXRGlue.h
+# JXR_LIBRARIES, the libraries needed to use JXR
+#
+
+find_path(JXR_INCLUDE_DIRS
+ NAMES JXRGlue.h
+ PATH_SUFFIXES jxrlib
+)
+mark_as_advanced(JXR_INCLUDE_DIRS)
+
+include(SelectLibraryConfigurations)
+
+find_library(JPEGXR_LIBRARY_RELEASE NAMES jpegxr PATH_SUFFIXES lib)
+find_library(JPEGXR_LIBRARY_DEBUG NAMES jpegxrd PATH_SUFFIXES lib)
+select_library_configurations(JPEGXR)
+
+find_library(JXRGLUE_LIBRARY_RELEASE NAMES jxrglue PATH_SUFFIXES lib)
+find_library(JXRGLUE_LIBRARY_DEBUG NAMES jxrglued PATH_SUFFIXES lib)
+select_library_configurations(JXRGLUE)
+
+set(JXR_LIBRARIES ${JXRGLUE_LIBRARY} ${JPEGXR_LIBRARY})
+mark_as_advanced(JXR_LIBRARIES)
+
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(JXR DEFAULT_MSG JXR_INCLUDE_DIRS JXR_LIBRARIES)
diff --git a/vcpkg/ports/jxrlib/fix-mingw.patch b/vcpkg/ports/jxrlib/fix-mingw.patch
new file mode 100644
index 0000000..10ea197
--- /dev/null
+++ b/vcpkg/ports/jxrlib/fix-mingw.patch
@@ -0,0 +1,51 @@
+diff --git a/common/include/wmspecstrings_adt.h b/common/include/wmspecstrings_adt.h
+index ca7f25f..d5eb028 100644
+--- a/common/include/wmspecstrings_adt.h
++++ b/common/include/wmspecstrings_adt.h
+@@ -36,6 +36,10 @@
+ __type_has_adt_prop(compname,valid_schars) \
+ __type_has_adt_prop(compname,correct_len) \
+ __nullterminated
++#ifdef __MINGW32__
++#undef __$compname_props
++#define __$compname_props
++#endif
+ #if defined(UNICODE) || defined(_UNICODE)
+ #define __$TCHAR unsigned short
+ #else
+diff --git a/image/sys/strcodec.h b/image/sys/strcodec.h
+index 695a454..9fad5b6 100644
+--- a/image/sys/strcodec.h
++++ b/image/sys/strcodec.h
+@@ -59,7 +59,7 @@
+ //#ifdef WIN32
+ #if defined(WIN32) && !defined(UNDER_CE) // WIN32 seems to be defined always in VS2005 for ARM platform
+ #define PLATFORM_X86
+-#include "..\x86\x86.h"
++#include "../x86/x86.h"
+ #endif
+
+ #ifndef UNREFERENCED_PARAMETER
+diff --git a/jxrgluelib/JXRMeta.h b/jxrgluelib/JXRMeta.h
+index b7b5880..7c9d653 100644
+--- a/jxrgluelib/JXRMeta.h
++++ b/jxrgluelib/JXRMeta.h
+@@ -111,6 +111,18 @@
+ #define __out_win __out
+ #endif
+
++#ifndef __in
++#define __in
++#endif
++#ifndef __out
++#define __out
++#endif
++#ifndef __in_ecount
++#define __in_ecount(x)
++#endif
++#ifndef __out_ecount
++#define __out_ecount(x)
++#endif
+
+ //================================================================
+
diff --git a/vcpkg/ports/jxrlib/guiddef.patch b/vcpkg/ports/jxrlib/guiddef.patch
new file mode 100644
index 0000000..4ff1be2
--- /dev/null
+++ b/vcpkg/ports/jxrlib/guiddef.patch
@@ -0,0 +1,20 @@
+diff --git a/common/include/guiddef.h b/common/include/jxrguiddef.h
+similarity index 100%
+rename from common/include/guiddef.h
+rename to common/include/jxrguiddef.h
+diff --git a/jxrgluelib/JXRGlue.h b/jxrgluelib/JXRGlue.h
+index d0b219c..c3e5d2b 100644
+--- a/jxrgluelib/JXRGlue.h
++++ b/jxrgluelib/JXRGlue.h
+@@ -32,7 +32,11 @@ extern "C" {
+ #endif
+
+ #include <JXRMeta.h>
++#ifdef _WIN32
+ #include <guiddef.h>
++#else
++#include <jxrguiddef.h>
++#endif
+
+ //================================================================
+ #define WMP_SDK_VERSION 0x0101
diff --git a/vcpkg/ports/jxrlib/portfile.cmake b/vcpkg/ports/jxrlib/portfile.cmake
new file mode 100644
index 0000000..0616a9f
--- /dev/null
+++ b/vcpkg/ports/jxrlib/portfile.cmake
@@ -0,0 +1,29 @@
+vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO 4creators/jxrlib
+ REF f7521879862b9085318e814c6157490dd9dbbdb4
+ SHA512 f5617cbe73b6b905cc6bba181e6a3efedd59584f7a8c90e0f34db580cfdad4239a2ab753df4e221f26a5c0db51475b021052e3b9e3ab3673573573b1d57f3fdb
+ HEAD_REF master
+ PATCHES
+ guiddef.patch
+ fix-mingw.patch
+)
+
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}")
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/FindJXR.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/jxr")
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/jxr")
+
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
diff --git a/vcpkg/ports/jxrlib/usage b/vcpkg/ports/jxrlib/usage
new file mode 100644
index 0000000..6668ba1
--- /dev/null
+++ b/vcpkg/ports/jxrlib/usage
@@ -0,0 +1,5 @@
+The package jxrlib provides CMake integration:
+
+ find_package(JXR REQUIRED)
+ target_include_directories(main PRIVATE ${JXR_INCLUDE_DIRS})
+ target_link_libraries(main PRIVATE ${JXR_LIBRARIES})
diff --git a/vcpkg/ports/jxrlib/vcpkg-cmake-wrapper.cmake b/vcpkg/ports/jxrlib/vcpkg-cmake-wrapper.cmake
new file mode 100644
index 0000000..4bee917
--- /dev/null
+++ b/vcpkg/ports/jxrlib/vcpkg-cmake-wrapper.cmake
@@ -0,0 +1,6 @@
+set(JXR_PREV_MODULE_PATH ${CMAKE_MODULE_PATH})
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})
+
+_find_package(${ARGS})
+
+set(CMAKE_MODULE_PATH ${JXR_PREV_MODULE_PATH})
diff --git a/vcpkg/ports/jxrlib/vcpkg.json b/vcpkg/ports/jxrlib/vcpkg.json
new file mode 100644
index 0000000..bad3f88
--- /dev/null
+++ b/vcpkg/ports/jxrlib/vcpkg.json
@@ -0,0 +1,14 @@
+{
+ "name": "jxrlib",
+ "version": "2019.10.9",
+ "port-version": 7,
+ "description": "Open source implementation of the jpegxr image format standard.",
+ "homepage": "https://github.com/4creators/jxrlib",
+ "license": "BSD-2-Clause",
+ "dependencies": [
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ }
+ ]
+}