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/jxrlib | |
Diffstat (limited to 'vcpkg/ports/jxrlib')
| -rw-r--r-- | vcpkg/ports/jxrlib/CMakeLists.txt | 113 | ||||
| -rw-r--r-- | vcpkg/ports/jxrlib/FindJXR.cmake | 28 | ||||
| -rw-r--r-- | vcpkg/ports/jxrlib/fix-mingw.patch | 51 | ||||
| -rw-r--r-- | vcpkg/ports/jxrlib/guiddef.patch | 20 | ||||
| -rw-r--r-- | vcpkg/ports/jxrlib/portfile.cmake | 29 | ||||
| -rw-r--r-- | vcpkg/ports/jxrlib/usage | 5 | ||||
| -rw-r--r-- | vcpkg/ports/jxrlib/vcpkg-cmake-wrapper.cmake | 6 | ||||
| -rw-r--r-- | vcpkg/ports/jxrlib/vcpkg.json | 14 |
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 + } + ] +} |