mirror of
https://github.com/microsoft/vcpkg.git
synced 2024-11-26 05:19:06 +08:00
Merge branch 'master' of https://github.com/Microsoft/vcpkg into qca
This commit is contained in:
commit
334d666dda
3
ports/anax/CONTROL
Normal file
3
ports/anax/CONTROL
Normal file
@ -0,0 +1,3 @@
|
||||
Source: anax
|
||||
Version: 2.1.0
|
||||
Description: An open source C++ entity system. <https://github.com/miguelmartin75/anax>
|
33
ports/anax/portfile.cmake
Normal file
33
ports/anax/portfile.cmake
Normal file
@ -0,0 +1,33 @@
|
||||
# Common Ambient Variables:
|
||||
# VCPKG_ROOT_DIR = <C:\path\to\current\vcpkg>
|
||||
# TARGET_TRIPLET is the current triplet (x86-windows, etc)
|
||||
# PORT is the current port name (zlib, etc)
|
||||
# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
|
||||
# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
|
||||
#
|
||||
|
||||
if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
|
||||
message(STATUS "Warning: Dynamic building not supported yet. Building static.")
|
||||
set(VCPKG_LIBRARY_LINKAGE static)
|
||||
endif()
|
||||
include(vcpkg_common_functions)
|
||||
|
||||
set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/anax-2.1.0)
|
||||
vcpkg_download_distfile(ARCHIVE
|
||||
URLS "https://github.com/miguelmartin75/anax/archive/v2.1.0.zip"
|
||||
FILENAME "anax-2.1.0.zip"
|
||||
SHA512 89f2df64add676ab48a19953b95d8eae1da9c8c5f3c0f6bc757a3bc99af6e4360c56c12d27d12c672ccd754b1f53a5e271533b381641f20e8cf3ca8ddda6cd1a
|
||||
)
|
||||
vcpkg_extract_source_archive(${ARCHIVE})
|
||||
|
||||
vcpkg_configure_cmake(
|
||||
SOURCE_PATH ${SOURCE_PATH}
|
||||
)
|
||||
|
||||
vcpkg_install_cmake()
|
||||
|
||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
|
||||
|
||||
# Handle copyright
|
||||
file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/anax)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/share/anax/LICENSE ${CURRENT_PACKAGES_DIR}/share/anax/copyright)
|
3
ports/entityx/CONTROL
Normal file
3
ports/entityx/CONTROL
Normal file
@ -0,0 +1,3 @@
|
||||
Source: entityx
|
||||
Version: 1.2.0
|
||||
Description: EntityX - A fast, type-safe C++ Entity-Component system. <https://github.com/alecthomas/entityx>
|
44
ports/entityx/portfile.cmake
Normal file
44
ports/entityx/portfile.cmake
Normal file
@ -0,0 +1,44 @@
|
||||
# Common Ambient Variables:
|
||||
# VCPKG_ROOT_DIR = <C:\path\to\current\vcpkg>
|
||||
# TARGET_TRIPLET is the current triplet (x86-windows, etc)
|
||||
# PORT is the current port name (zlib, etc)
|
||||
# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
|
||||
# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
|
||||
#
|
||||
|
||||
if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
|
||||
message(STATUS "Warning: Dynamic building not supported yet. Building static.")
|
||||
set(VCPKG_LIBRARY_LINKAGE static)
|
||||
endif()
|
||||
|
||||
include(vcpkg_common_functions)
|
||||
set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/entityx-1.2.0)
|
||||
vcpkg_download_distfile(ARCHIVE
|
||||
URLS "https://github.com/alecthomas/entityx/archive/1.2.0.zip"
|
||||
FILENAME "entityx-1.2.0.zip"
|
||||
SHA512 4d7009f0412fbccd7bee72713d53424c3b4fa39da62b87729dd84a710a059db27e65ca27b927285c82af09997caea125d85571824133d9b71b4e3c4eebd9917c
|
||||
)
|
||||
vcpkg_extract_source_archive(${ARCHIVE})
|
||||
|
||||
if (VCPKG_CRT_LINKAGE STREQUAL dynamic)
|
||||
SET(SHARED_FLAG ON)
|
||||
else()
|
||||
SET(SHARED_FLAG OFF)
|
||||
endif()
|
||||
|
||||
vcpkg_configure_cmake(
|
||||
SOURCE_PATH ${SOURCE_PATH}
|
||||
OPTIONS
|
||||
# OPTIONS_RELEASE -DOPTIMIZE=1
|
||||
# OPTIONS_DEBUG -DDEBUGGABLE=1
|
||||
-DENTITYX_BUILD_SHARED=${SHARED_FLAG}
|
||||
-DENTITYX_BUILD_TESTING=false
|
||||
)
|
||||
|
||||
vcpkg_install_cmake()
|
||||
|
||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
|
||||
|
||||
# Handle copyright
|
||||
file(COPY ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/entityx)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/share/entityx/COPYING ${CURRENT_PACKAGES_DIR}/share/entityx/copyright)
|
148
ports/freeimage/CMakeLists.txt
Normal file
148
ports/freeimage/CMakeLists.txt
Normal file
@ -0,0 +1,148 @@
|
||||
cmake_minimum_required(VERSION 3.4)
|
||||
|
||||
include(GNUInstallDirs)
|
||||
|
||||
project(FreeImage C CXX)
|
||||
|
||||
find_package(zlib REQUIRED)
|
||||
find_package(PNG REQUIRED)
|
||||
find_package(JPEG REQUIRED)
|
||||
find_package(TIFF REQUIRED)
|
||||
find_package(OPENJPEG REQUIRED)
|
||||
|
||||
# Include some custom Find***.cmake modules
|
||||
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||
|
||||
find_package(WEBP REQUIRED)
|
||||
find_package(JXR REQUIRED)
|
||||
find_package(LibRaw REQUIRED)
|
||||
|
||||
option(BUILD_SHARED_LIBS "Build shared libraries" ON)
|
||||
|
||||
set(REAL_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/Source)
|
||||
|
||||
# Add a debug postfix
|
||||
set(CMAKE_DEBUG_POSTFIX "d")
|
||||
|
||||
# For now the internal copy of OpenEXR is used (as a private always static library)
|
||||
file(GLOB OPENEXR_PRIVATE_HEADERS ${REAL_SOURCE_DIR}/OpenEXR/Half/*.h
|
||||
${REAL_SOURCE_DIR}/OpenEXR/Iex/*.h
|
||||
${REAL_SOURCE_DIR}/OpenEXR/IexMath/*.h
|
||||
${REAL_SOURCE_DIR}/OpenEXR/IlmImf/*.h
|
||||
${REAL_SOURCE_DIR}/OpenEXR/IlmThread/*.h
|
||||
${REAL_SOURCE_DIR}/OpenEXR/Imath/*.h
|
||||
${REAL_SOURCE_DIR}/OpenEXR/*.h)
|
||||
|
||||
file(GLOB OPENEXR_SRCS ${REAL_SOURCE_DIR}/OpenEXR/Half/*.cpp
|
||||
${REAL_SOURCE_DIR}/OpenEXR/Iex/*.cpp
|
||||
${REAL_SOURCE_DIR}/OpenEXR/IexMath/*.cpp
|
||||
${REAL_SOURCE_DIR}/OpenEXR/IlmImf/*.cpp
|
||||
${REAL_SOURCE_DIR}/OpenEXR/IlmThread/*.cpp
|
||||
${REAL_SOURCE_DIR}/OpenEXR/Imath/*.cpp)
|
||||
|
||||
add_library(FreeImage_Private_OpenEXR STATIC ${OPENEXR_PRIVATE_HEADERS} ${OPENEXR_SRCS})
|
||||
|
||||
set(FreeImage_Private_OpenEXR_INCLUDE_DIRS ${REAL_SOURCE_DIR}/OpenEXR
|
||||
${REAL_SOURCE_DIR}/OpenEXR/Half
|
||||
${REAL_SOURCE_DIR}/OpenEXR/Iex
|
||||
${REAL_SOURCE_DIR}/OpenEXR/IexMath
|
||||
${REAL_SOURCE_DIR}/OpenEXR/IlmImf
|
||||
${REAL_SOURCE_DIR}/OpenEXR/IlmThread
|
||||
${REAL_SOURCE_DIR}/OpenEXR/Imath)
|
||||
|
||||
target_include_directories(FreeImage_Private_OpenEXR PRIVATE ${FreeImage_Private_OpenEXR_INCLUDE_DIRS}
|
||||
${ZLIB_INCLUDE_DIRS})
|
||||
|
||||
# List the public header files
|
||||
set(PUBLIC_HEADERS ${REAL_SOURCE_DIR}/FreeImage.h)
|
||||
|
||||
# List the private header files
|
||||
set(ROOT_PRIVATE_HEADERS ${REAL_SOURCE_DIR}/CacheFile.h
|
||||
${REAL_SOURCE_DIR}/FreeImageIO.h
|
||||
${REAL_SOURCE_DIR}/MapIntrospector.h
|
||||
${REAL_SOURCE_DIR}/Plugin.h
|
||||
${REAL_SOURCE_DIR}/Quantizers.h
|
||||
${REAL_SOURCE_DIR}/ToneMapping.h
|
||||
${REAL_SOURCE_DIR}/Utilities.h
|
||||
${REAL_SOURCE_DIR}/DeprecationManager/DeprecationMgr.h)
|
||||
|
||||
file(GLOB FREEIMAGE_PRIVATE_HEADERS ${REAL_SOURCE_DIR}/FreeImage/*.h)
|
||||
file(GLOB FREEIMAGE_TOOLKIT_PRIVATE_HEADERS ${REAL_SOURCE_DIR}/FreeImageToolkit/*.h)
|
||||
file(GLOB METADATA_PRIVATE_HEADERS ${REAL_SOURCE_DIR}/Metadata/*.h)
|
||||
|
||||
set(PRIVATE_HEADERS ${ROOT_PRIVATE_HEADERS}
|
||||
${FREEIMAGE_PRIVATE_HEADERS}
|
||||
${FREEIMAGE_TOOLKIT_PRIVATE_HEADERS}
|
||||
${METADATA_PRIVATE_HEADERS})
|
||||
|
||||
# List the source files
|
||||
file(GLOB DEPRECATION_SRCS ${REAL_SOURCE_DIR}/DeprecationManager/*.cpp)
|
||||
file(GLOB FREEIMAGE_TOOLKIT_SRCS ${REAL_SOURCE_DIR}/FreeImageToolkit/*.cpp)
|
||||
file(GLOB FREEIMAGE_SRCS ${REAL_SOURCE_DIR}/FreeImage/*.cpp)
|
||||
file(GLOB METADATA_SRCS ${REAL_SOURCE_DIR}/Metadata/*.cpp)
|
||||
|
||||
# The G3 plugin is disabled because it require the private copy of tiff
|
||||
list(REMOVE_ITEM FREEIMAGE_SRCS ${REAL_SOURCE_DIR}/FreeImage/PluginG3.cpp)
|
||||
|
||||
# The JPEGTransform plugin is disable because it requires a private copy of jpeg
|
||||
list(REMOVE_ITEM FREEIMAGE_TOOLKIT_SRCS ${REAL_SOURCE_DIR}/FreeImageToolkit/JPEGTransform.cpp)
|
||||
|
||||
|
||||
set(SRCS ${DEPRECATION_SRCS}
|
||||
${FREEIMAGE_SRCS}
|
||||
${FREEIMAGE_TOOLKIT_SRCS}
|
||||
${METADATA_SRCS}
|
||||
)
|
||||
|
||||
# If FreeImage is used as a static library, FREEIMAGE_LIB
|
||||
# needs to be defined (at the C preprocessor level) to correctly
|
||||
# define (to nothing instead of _declspec(dllimport) ) the DLL_API macro.
|
||||
# For this purpouse we include (depending on the BUILD_SHARED_LIBS )
|
||||
# the appropriate FreeImageConfig.h .
|
||||
if(${BUILD_SHARED_LIBS})
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/FreeImageConfig-dynamic.h ${CMAKE_CURRENT_BINARY_DIR}/FreeImageConfig.h)
|
||||
else()
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/FreeImageConfig-static.h ${CMAKE_CURRENT_BINARY_DIR}/FreeImageConfig.h)
|
||||
endif()
|
||||
list(APPEND PUBLIC_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/FreeImageConfig.h)
|
||||
|
||||
add_library(FreeImage ${SRCS} ${PRIVATE_HEADERS} ${PUBLIC_HEADERS})
|
||||
|
||||
if(${BUILD_SHARED_LIBS})
|
||||
target_compile_definitions(FreeImage PRIVATE -DFREEIMAGE_EXPORTS)
|
||||
else()
|
||||
target_compile_definitions(FreeImage PRIVATE -DFREEIMAGE_LIB)
|
||||
endif()
|
||||
|
||||
target_include_directories(FreeImage PRIVATE ${REAL_SOURCE_DIR}
|
||||
${ZLIB_INCLUDE_DIRS}
|
||||
${JPEG_INCLUDE_DIRS}
|
||||
${TIFF_INCLUDE_DIRS}
|
||||
${PNG_INCLUDE_DIRS}
|
||||
${OPENJPEG_INCLUDE_DIRS}
|
||||
${WEBP_INCLUDE_DIRS}
|
||||
${JXR_INCLUDE_DIRS}
|
||||
${LibRaw_INCLUDE_DIRS}
|
||||
${FreeImage_Private_OpenEXR_INCLUDE_DIRS}
|
||||
${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
|
||||
target_link_libraries(FreeImage ${ZLIB_LIBRARIES}
|
||||
${JPEG_LIBRARIES}
|
||||
${TIFF_LIBRARIES}
|
||||
${PNG_LIBRARIES}
|
||||
${OPENJPEG_LIBRARIES}
|
||||
${WEBP_LIBRARIES}
|
||||
${JXR_LIBRARIES}
|
||||
${LibRaw_LIBRARIES}
|
||||
FreeImage_Private_OpenEXR)
|
||||
|
||||
target_compile_definitions(FreeImage PRIVATE ${PNG_DEFINITIONS})
|
||||
|
||||
install(TARGETS FreeImage
|
||||
COMPONENT runtime
|
||||
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT bin
|
||||
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT shlib
|
||||
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" COMPONENT lib)
|
||||
|
||||
install(FILES ${PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
4
ports/freeimage/CONTROL
Normal file
4
ports/freeimage/CONTROL
Normal file
@ -0,0 +1,4 @@
|
||||
Source: freeimage
|
||||
Version: 3.17.0
|
||||
Build-Depends: zlib, libpng, libjpeg-turbo, tiff, openjpeg, libwebp, libraw, jxrlib
|
||||
Description: Support library for graphics image formats
|
5
ports/freeimage/FreeImageConfig-dynamic.h
Normal file
5
ports/freeimage/FreeImageConfig-dynamic.h
Normal file
@ -0,0 +1,5 @@
|
||||
#ifndef FREEIMAGE_CONFIG_H
|
||||
#define FREEIMAGE_CONFIG_H
|
||||
|
||||
|
||||
#endif
|
6
ports/freeimage/FreeImageConfig-static.h
Normal file
6
ports/freeimage/FreeImageConfig-static.h
Normal file
@ -0,0 +1,6 @@
|
||||
#ifndef FREEIMAGE_CONFIG_H
|
||||
#define FREEIMAGE_CONFIG_H
|
||||
|
||||
#define FREEIMAGE_LIB
|
||||
|
||||
#endif
|
28
ports/freeimage/cmake/FindJXR.cmake
Normal file
28
ports/freeimage/cmake/FindJXR.cmake
Normal file
@ -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 ${JPEGXR_LIBRARY} ${JXRGLUE_LIBRARY})
|
||||
mark_as_advanced(JXR_LIBRARIES)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(JXR DEFAULT_MSG JXR_INCLUDE_DIRS JXR_LIBRARIES)
|
26
ports/freeimage/cmake/FindWEBP.cmake
Normal file
26
ports/freeimage/cmake/FindWEBP.cmake
Normal file
@ -0,0 +1,26 @@
|
||||
# - Find WEBP
|
||||
# Find the WEBP library
|
||||
# This module defines
|
||||
# WEBP_INCLUDE_DIRS, where to find webp/decode.h
|
||||
# WEBP_LIBRARIES, the libraries needed to use WEBP
|
||||
#
|
||||
|
||||
find_path(WEBP_INCLUDE_DIRS
|
||||
NAMES webp/decode.h
|
||||
)
|
||||
mark_as_advanced(WEBP_INCLUDE_DIRS)
|
||||
|
||||
find_library(
|
||||
WEBP_LIBRARIES
|
||||
NAMES webp
|
||||
)
|
||||
|
||||
find_library(WEBP_LIBRARY_RELEASE NAMES webp PATH_SUFFIXES lib)
|
||||
find_library(WEBP_LIBRARY_DEBUG NAMES webpd PATH_SUFFIXES lib)
|
||||
include(SelectLibraryConfigurations)
|
||||
select_library_configurations(WEBP)
|
||||
|
||||
set(WEBP_LIBRARIES ${WEBP_LIBRARY})
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(WEBP DEFAULT_MSG WEBP_INCLUDE_DIRS WEBP_LIBRARIES)
|
@ -0,0 +1,71 @@
|
||||
diff --git a/Source/FreeImage.h b/Source/FreeImage.h
|
||||
index e2d1c5a..cc66b7d 100644
|
||||
--- a/Source/FreeImage.h
|
||||
+++ b/Source/FreeImage.h
|
||||
@@ -410,7 +410,11 @@ FI_ENUM(FREE_IMAGE_FORMAT) {
|
||||
FIF_DDS = 24,
|
||||
FIF_GIF = 25,
|
||||
FIF_HDR = 26,
|
||||
- FIF_FAXG3 = 27,
|
||||
+/* vcpkg: The G3 fax format plugin is deliberately disabled in our build of
|
||||
+ FreeImage, since it requires usage of the vendored copy of libtiff. */
|
||||
+#if 0
|
||||
+ FIF_FAXG3 = 27,
|
||||
+#endif
|
||||
FIF_SGI = 28,
|
||||
FIF_EXR = 29,
|
||||
FIF_J2K = 30,
|
||||
@@ -476,6 +480,9 @@ FI_ENUM(FREE_IMAGE_DITHER) {
|
||||
/** Lossless JPEG transformations
|
||||
Constants used in FreeImage_JPEGTransform
|
||||
*/
|
||||
+/* vcpkg: The JPEGTransform functions are deliberately disabled in our build
|
||||
+ of FreeImage, since they require usage of the vendored copy of libjpeg. */
|
||||
+#if 0
|
||||
FI_ENUM(FREE_IMAGE_JPEG_OPERATION) {
|
||||
FIJPEG_OP_NONE = 0, //! no transformation
|
||||
FIJPEG_OP_FLIP_H = 1, //! horizontal flip
|
||||
@@ -486,6 +493,7 @@ FI_ENUM(FREE_IMAGE_JPEG_OPERATION) {
|
||||
FIJPEG_OP_ROTATE_180 = 6, //! 180-degree rotation
|
||||
FIJPEG_OP_ROTATE_270 = 7 //! 270-degree clockwise (or 90 ccw)
|
||||
};
|
||||
+#endif
|
||||
|
||||
/** Tone mapping operators.
|
||||
Constants used in FreeImage_ToneMapping.
|
||||
@@ -1077,6 +1085,9 @@ DLL_API const char* DLL_CALLCONV FreeImage_TagToString(FREE_IMAGE_MDMODEL model,
|
||||
// JPEG lossless transformation routines
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
+/* vcpkg: The JPEGTransform functions are deliberately disabled in our build
|
||||
+ of FreeImage, since they require usage of the vendored copy of libjpeg. */
|
||||
+#if 0
|
||||
DLL_API BOOL DLL_CALLCONV FreeImage_JPEGTransform(const char *src_file, const char *dst_file, FREE_IMAGE_JPEG_OPERATION operation, BOOL perfect FI_DEFAULT(TRUE));
|
||||
DLL_API BOOL DLL_CALLCONV FreeImage_JPEGTransformU(const wchar_t *src_file, const wchar_t *dst_file, FREE_IMAGE_JPEG_OPERATION operation, BOOL perfect FI_DEFAULT(TRUE));
|
||||
DLL_API BOOL DLL_CALLCONV FreeImage_JPEGCrop(const char *src_file, const char *dst_file, int left, int top, int right, int bottom);
|
||||
@@ -1085,7 +1096,7 @@ DLL_API BOOL DLL_CALLCONV FreeImage_JPEGTransformFromHandle(FreeImageIO* src_io,
|
||||
DLL_API BOOL DLL_CALLCONV FreeImage_JPEGTransformCombined(const char *src_file, const char *dst_file, FREE_IMAGE_JPEG_OPERATION operation, int* left, int* top, int* right, int* bottom, BOOL perfect FI_DEFAULT(TRUE));
|
||||
DLL_API BOOL DLL_CALLCONV FreeImage_JPEGTransformCombinedU(const wchar_t *src_file, const wchar_t *dst_file, FREE_IMAGE_JPEG_OPERATION operation, int* left, int* top, int* right, int* bottom, BOOL perfect FI_DEFAULT(TRUE));
|
||||
DLL_API BOOL DLL_CALLCONV FreeImage_JPEGTransformCombinedFromMemory(FIMEMORY* src_stream, FIMEMORY* dst_stream, FREE_IMAGE_JPEG_OPERATION operation, int* left, int* top, int* right, int* bottom, BOOL perfect FI_DEFAULT(TRUE));
|
||||
-
|
||||
+#endif
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
// Image manipulation toolkit
|
||||
diff --git a/Source/FreeImage/Plugin.cpp b/Source/FreeImage/Plugin.cpp
|
||||
index 57ebffd..a93440f 100644
|
||||
--- a/Source/FreeImage/Plugin.cpp
|
||||
+++ b/Source/FreeImage/Plugin.cpp
|
||||
@@ -263,7 +263,11 @@ FreeImage_Initialise(BOOL load_local_plugins_only) {
|
||||
s_plugins->AddNode(InitDDS);
|
||||
s_plugins->AddNode(InitGIF);
|
||||
s_plugins->AddNode(InitHDR);
|
||||
- s_plugins->AddNode(InitG3);
|
||||
+/* vcpkg: The G3 fax format plugin is deliberately disabled in our build of FreeImage
|
||||
++ since it requires usage of the vendored copy of libtiff. */
|
||||
+#if 0
|
||||
+ s_plugins->AddNode(InitG3);
|
||||
+#endif
|
||||
s_plugins->AddNode(InitSGI);
|
||||
s_plugins->AddNode(InitEXR);
|
||||
s_plugins->AddNode(InitJ2K);
|
56
ports/freeimage/portfile.cmake
Normal file
56
ports/freeimage/portfile.cmake
Normal file
@ -0,0 +1,56 @@
|
||||
include(${CMAKE_TRIPLET_FILE})
|
||||
include(vcpkg_common_functions)
|
||||
set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/FreeImage)
|
||||
vcpkg_download_distfile(ARCHIVE
|
||||
URLS "http://downloads.sourceforge.net/freeimage/FreeImage3170.zip"
|
||||
FILENAME "FreeImage3170.zip"
|
||||
SHA512 703c2626c0bcfe73eb40d720f45745208ca9650a7730759680a2b38ad3f6c719a43008477032bc70b76a95761f7d4b6f901b961359d36b54ace906dd78fb391b
|
||||
)
|
||||
vcpkg_extract_source_archive(${ARCHIVE})
|
||||
|
||||
|
||||
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
|
||||
file(COPY ${CMAKE_CURRENT_LIST_DIR}/FreeImageConfig-static.h DESTINATION ${SOURCE_PATH})
|
||||
file(COPY ${CMAKE_CURRENT_LIST_DIR}/FreeImageConfig-dynamic.h DESTINATION ${SOURCE_PATH})
|
||||
|
||||
# Copy some useful Find***.cmake modules
|
||||
file(COPY ${CMAKE_CURRENT_LIST_DIR}/cmake DESTINATION ${SOURCE_PATH})
|
||||
|
||||
# This is not strictly necessary, but to make sure
|
||||
# that no "internal" libraries are used by removing them
|
||||
# Note that the only "internal" dependency used is OpenEXR
|
||||
file(REMOVE_RECURSE ${SOURCE_PATH}/Source/LibJPEG)
|
||||
file(REMOVE_RECURSE ${SOURCE_PATH}/Source/LibPNG)
|
||||
file(REMOVE_RECURSE ${SOURCE_PATH}/Source/LibTIFF4)
|
||||
file(REMOVE_RECURSE ${SOURCE_PATH}/Source/ZLib)
|
||||
file(REMOVE_RECURSE ${SOURCE_PATH}/Source/LibOpenJPEG)
|
||||
file(REMOVE_RECURSE ${SOURCE_PATH}/Source/LibJXR)
|
||||
file(REMOVE_RECURSE ${SOURCE_PATH}/Source/LibWebP)
|
||||
file(REMOVE_RECURSE ${SOURCE_PATH}/Source/LibRawLite)
|
||||
|
||||
vcpkg_apply_patches(
|
||||
SOURCE_PATH ${SOURCE_PATH}
|
||||
PATCHES "${CMAKE_CURRENT_LIST_DIR}/disable-plugins-depending-on-internal-third-party-libraries.patch"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/use-external-jpeg.patch"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/use-external-jxrlib.patch"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/use-external-libtiff.patch"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/use-external-openjpeg.patch"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/use-external-png-zlib.patch"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/use-external-rawlib.patch"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/use-external-webp.patch"
|
||||
"${CMAKE_CURRENT_LIST_DIR}/use-freeimage-config-include.patch"
|
||||
)
|
||||
|
||||
vcpkg_configure_cmake(
|
||||
SOURCE_PATH ${SOURCE_PATH}
|
||||
)
|
||||
|
||||
vcpkg_install_cmake()
|
||||
|
||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
|
||||
|
||||
# Handle copyright
|
||||
file(COPY ${SOURCE_PATH}/license-fi.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/freeimage)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/share/freeimage/license-fi.txt ${CURRENT_PACKAGES_DIR}/share/freeimage/copyright)
|
||||
|
||||
vcpkg_copy_pdbs()
|
17
ports/freeimage/use-external-jpeg.patch
Normal file
17
ports/freeimage/use-external-jpeg.patch
Normal file
@ -0,0 +1,17 @@
|
||||
diff --git a/Source/FreeImage/PluginJPEG.cpp b/Source/FreeImage/PluginJPEG.cpp
|
||||
index 573989c..aaeefa4 100644
|
||||
--- a/Source/FreeImage/PluginJPEG.cpp
|
||||
+++ b/Source/FreeImage/PluginJPEG.cpp
|
||||
@@ -35,9 +35,9 @@ extern "C" {
|
||||
#undef FAR
|
||||
#include <setjmp.h>
|
||||
|
||||
-#include "../LibJPEG/jinclude.h"
|
||||
-#include "../LibJPEG/jpeglib.h"
|
||||
-#include "../LibJPEG/jerror.h"
|
||||
+#include <stdio.h>
|
||||
+#include <jpeglib.h>
|
||||
+#include <jerror.h>
|
||||
}
|
||||
|
||||
#include "FreeImage.h"
|
14
ports/freeimage/use-external-jxrlib.patch
Normal file
14
ports/freeimage/use-external-jxrlib.patch
Normal file
@ -0,0 +1,14 @@
|
||||
diff --git a/Source/FreeImage/PluginJXR.cpp b/Source/FreeImage/PluginJXR.cpp
|
||||
index 0e14e09..8eb9d5d 100644
|
||||
--- a/Source/FreeImage/PluginJXR.cpp
|
||||
+++ b/Source/FreeImage/PluginJXR.cpp
|
||||
@@ -23,7 +23,8 @@
|
||||
#include "Utilities.h"
|
||||
#include "../Metadata/FreeImageTag.h"
|
||||
|
||||
-#include "../LibJXR/jxrgluelib/JXRGlue.h"
|
||||
+#define INITGUID
|
||||
+#include <JXRGlue.h>
|
||||
|
||||
// ==========================================================
|
||||
// Plugin Interface
|
174
ports/freeimage/use-external-libtiff.patch
Normal file
174
ports/freeimage/use-external-libtiff.patch
Normal file
@ -0,0 +1,174 @@
|
||||
diff --git a/Source/FreeImage/PluginTIFF.cpp b/Source/FreeImage/PluginTIFF.cpp
|
||||
index 1b45453..562fdd7 100644
|
||||
--- a/Source/FreeImage/PluginTIFF.cpp
|
||||
+++ b/Source/FreeImage/PluginTIFF.cpp
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
#include "FreeImage.h"
|
||||
#include "Utilities.h"
|
||||
-#include "../LibTIFF4/tiffiop.h"
|
||||
+#include <tiffio.h>
|
||||
#include "../Metadata/FreeImageTag.h"
|
||||
#include "../OpenEXR/Half/half.h"
|
||||
|
||||
diff --git a/Source/Metadata/XTIFF.cpp b/Source/Metadata/XTIFF.cpp
|
||||
index d5be902..8dbcd5d 100644
|
||||
--- a/Source/Metadata/XTIFF.cpp
|
||||
+++ b/Source/Metadata/XTIFF.cpp
|
||||
@@ -29,7 +29,7 @@
|
||||
#pragma warning (disable : 4786) // identifier was truncated to 'number' characters
|
||||
#endif
|
||||
|
||||
-#include "../LibTIFF4/tiffiop.h"
|
||||
+#include <tiffio.h>
|
||||
|
||||
#include "FreeImage.h"
|
||||
#include "Utilities.h"
|
||||
@@ -40,6 +40,43 @@
|
||||
// Extended TIFF Directory GEO Tag Support
|
||||
// ----------------------------------------------------------
|
||||
|
||||
+// vcpkg: function imported from libtiff/tif_dirinfo.c, in which it is not exported
|
||||
+/*
|
||||
+ * Return size of TIFFDataType in bytes.
|
||||
+ *
|
||||
+ * XXX: We need a separate function to determine the space needed
|
||||
+ * to store the value. For TIFF_RATIONAL values TIFFDataWidth() returns 8,
|
||||
+ * but we use 4-byte float to represent rationals.
|
||||
+ */
|
||||
+int
|
||||
+FreeImage_TIFFDataSize(TIFFDataType type)
|
||||
+{
|
||||
+ switch (type)
|
||||
+ {
|
||||
+ case TIFF_BYTE:
|
||||
+ case TIFF_SBYTE:
|
||||
+ case TIFF_ASCII:
|
||||
+ case TIFF_UNDEFINED:
|
||||
+ return 1;
|
||||
+ case TIFF_SHORT:
|
||||
+ case TIFF_SSHORT:
|
||||
+ return 2;
|
||||
+ case TIFF_LONG:
|
||||
+ case TIFF_SLONG:
|
||||
+ case TIFF_FLOAT:
|
||||
+ case TIFF_IFD:
|
||||
+ case TIFF_RATIONAL:
|
||||
+ case TIFF_SRATIONAL:
|
||||
+ return 4;
|
||||
+ case TIFF_DOUBLE:
|
||||
+ case TIFF_LONG8:
|
||||
+ case TIFF_SLONG8:
|
||||
+ case TIFF_IFD8:
|
||||
+ return 8;
|
||||
+ default:
|
||||
+ return 0;
|
||||
+ }
|
||||
+}
|
||||
/**
|
||||
Tiff info structure.
|
||||
Entry format:
|
||||
@@ -224,6 +261,33 @@ tiff_write_geotiff_profile(TIFF *tif, FIBITMAP *dib) {
|
||||
// TIFF EXIF tag reading & writing
|
||||
// ----------------------------------------------------------
|
||||
|
||||
+static uint32 exif_tag_ids[] = {
|
||||
+ EXIFTAG_EXPOSURETIME, EXIFTAG_FNUMBER, EXIFTAG_EXPOSUREPROGRAM,
|
||||
+ EXIFTAG_SPECTRALSENSITIVITY, EXIFTAG_ISOSPEEDRATINGS, EXIFTAG_OECF,
|
||||
+ EXIFTAG_EXIFVERSION, EXIFTAG_DATETIMEORIGINAL, EXIFTAG_DATETIMEDIGITIZED,
|
||||
+ EXIFTAG_COMPONENTSCONFIGURATION, EXIFTAG_COMPRESSEDBITSPERPIXEL,
|
||||
+ EXIFTAG_SHUTTERSPEEDVALUE, EXIFTAG_APERTUREVALUE,
|
||||
+ EXIFTAG_BRIGHTNESSVALUE, EXIFTAG_EXPOSUREBIASVALUE,
|
||||
+ EXIFTAG_MAXAPERTUREVALUE, EXIFTAG_SUBJECTDISTANCE, EXIFTAG_METERINGMODE,
|
||||
+ EXIFTAG_LIGHTSOURCE, EXIFTAG_FLASH, EXIFTAG_FOCALLENGTH,
|
||||
+ EXIFTAG_SUBJECTAREA, EXIFTAG_MAKERNOTE, EXIFTAG_USERCOMMENT,
|
||||
+ EXIFTAG_SUBSECTIME, EXIFTAG_SUBSECTIMEORIGINAL,
|
||||
+ EXIFTAG_SUBSECTIMEDIGITIZED, EXIFTAG_FLASHPIXVERSION, EXIFTAG_COLORSPACE,
|
||||
+ EXIFTAG_PIXELXDIMENSION, EXIFTAG_PIXELYDIMENSION,
|
||||
+ EXIFTAG_RELATEDSOUNDFILE, EXIFTAG_FLASHENERGY,
|
||||
+ EXIFTAG_SPATIALFREQUENCYRESPONSE, EXIFTAG_FOCALPLANEXRESOLUTION,
|
||||
+ EXIFTAG_FOCALPLANEYRESOLUTION, EXIFTAG_FOCALPLANERESOLUTIONUNIT,
|
||||
+ EXIFTAG_SUBJECTLOCATION, EXIFTAG_EXPOSUREINDEX, EXIFTAG_SENSINGMETHOD,
|
||||
+ EXIFTAG_FILESOURCE, EXIFTAG_SCENETYPE, EXIFTAG_CFAPATTERN,
|
||||
+ EXIFTAG_CUSTOMRENDERED, EXIFTAG_EXPOSUREMODE, EXIFTAG_WHITEBALANCE,
|
||||
+ EXIFTAG_DIGITALZOOMRATIO, EXIFTAG_FOCALLENGTHIN35MMFILM,
|
||||
+ EXIFTAG_SCENECAPTURETYPE, EXIFTAG_GAINCONTROL, EXIFTAG_CONTRAST,
|
||||
+ EXIFTAG_SATURATION, EXIFTAG_SHARPNESS, EXIFTAG_DEVICESETTINGDESCRIPTION,
|
||||
+ EXIFTAG_SUBJECTDISTANCERANGE, EXIFTAG_GAINCONTROL, EXIFTAG_GAINCONTROL,
|
||||
+ EXIFTAG_IMAGEUNIQUEID
|
||||
+};
|
||||
+static int nExifTags = sizeof(exif_tag_ids) / sizeof(exif_tag_ids[0]);
|
||||
+
|
||||
/**
|
||||
Read a single Exif tag
|
||||
|
||||
@@ -575,43 +639,10 @@ tiff_read_exif_tags(TIFF *tif, TagLib::MDMODEL md_model, FIBITMAP *dib) {
|
||||
|
||||
// loop over all Core Directory Tags
|
||||
// ### uses private data, but there is no other way
|
||||
+ // -> vcpkg: Best we can do without private headers is to hard-code a list of known EXIF tags and read those
|
||||
if(md_model == TagLib::EXIF_MAIN) {
|
||||
- const TIFFDirectory *td = &tif->tif_dir;
|
||||
-
|
||||
- uint32 lastTag = 0; //<- used to prevent reading some tags twice (as stored in tif_fieldinfo)
|
||||
-
|
||||
- for (int fi = 0, nfi = (int)tif->tif_nfields; nfi > 0; nfi--, fi++) {
|
||||
- const TIFFField *fld = tif->tif_fields[fi];
|
||||
-
|
||||
- const uint32 tag_id = TIFFFieldTag(fld);
|
||||
-
|
||||
- if(tag_id == lastTag) {
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- // test if tag value is set
|
||||
- // (lifted directly from LibTiff _TIFFWriteDirectory)
|
||||
-
|
||||
- if( fld->field_bit == FIELD_CUSTOM ) {
|
||||
- int is_set = FALSE;
|
||||
-
|
||||
- for(int ci = 0; ci < td->td_customValueCount; ci++ ) {
|
||||
- is_set |= (td->td_customValues[ci].info == fld);
|
||||
- }
|
||||
-
|
||||
- if( !is_set ) {
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- } else if(!TIFFFieldSet(tif, fld->field_bit)) {
|
||||
- continue;
|
||||
- }
|
||||
-
|
||||
- // process *all* other tags (some will be ignored)
|
||||
-
|
||||
- tiff_read_exif_tag(tif, tag_id, dib, md_model);
|
||||
-
|
||||
- lastTag = tag_id;
|
||||
+ for (int i = 0; i < nExifTags; ++i) {
|
||||
+ tiff_read_exif_tag(tif, exif_tag_ids[i], dib, md_model);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -723,10 +754,9 @@ tiff_write_exif_tags(TIFF *tif, TagLib::MDMODEL md_model, FIBITMAP *dib) {
|
||||
|
||||
TagLib& tag_lib = TagLib::instance();
|
||||
|
||||
- for (int fi = 0, nfi = (int)tif->tif_nfields; nfi > 0; nfi--, fi++) {
|
||||
- const TIFFField *fld = tif->tif_fields[fi];
|
||||
-
|
||||
- const uint32 tag_id = TIFFFieldTag(fld);
|
||||
+ for (int fi = 0, nfi = nExifTags; nfi > 0; nfi--, fi++) {
|
||||
+ const uint32 tag_id = exif_tag_ids[fi];
|
||||
+ const TIFFField *fld = TIFFFieldWithTag(tif, tag_id);
|
||||
|
||||
if(skip_write_field(tif, tag_id)) {
|
||||
// skip tags that are already handled by the LibTIFF writing process
|
||||
@@ -749,7 +779,7 @@ tiff_write_exif_tags(TIFF *tif, TagLib::MDMODEL md_model, FIBITMAP *dib) {
|
||||
continue;
|
||||
}
|
||||
// type of storage may differ (e.g. rationnal array vs float array type)
|
||||
- if((unsigned)_TIFFDataSize(tif_tag_type) != FreeImage_TagDataWidth(tag_type)) {
|
||||
+ if((unsigned)FreeImage_TIFFDataSize(tif_tag_type) != FreeImage_TagDataWidth(tag_type)) {
|
||||
// skip tag or _TIFFmemcpy will fail
|
||||
continue;
|
||||
}
|
39
ports/freeimage/use-external-openjpeg.patch
Normal file
39
ports/freeimage/use-external-openjpeg.patch
Normal file
@ -0,0 +1,39 @@
|
||||
diff --git a/Source/FreeImage/J2KHelper.cpp b/Source/FreeImage/J2KHelper.cpp
|
||||
index 1776c3b..538f1c5 100644
|
||||
--- a/Source/FreeImage/J2KHelper.cpp
|
||||
+++ b/Source/FreeImage/J2KHelper.cpp
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
#include "FreeImage.h"
|
||||
#include "Utilities.h"
|
||||
-#include "../LibOpenJPEG/openjpeg.h"
|
||||
+#include <openjpeg.h>
|
||||
#include "J2KHelper.h"
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
diff --git a/Source/FreeImage/PluginJ2K.cpp b/Source/FreeImage/PluginJ2K.cpp
|
||||
index b8bcfc8..621a903 100644
|
||||
--- a/Source/FreeImage/PluginJ2K.cpp
|
||||
+++ b/Source/FreeImage/PluginJ2K.cpp
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
#include "FreeImage.h"
|
||||
#include "Utilities.h"
|
||||
-#include "../LibOpenJPEG/openjpeg.h"
|
||||
+#include <openjpeg.h>
|
||||
#include "J2KHelper.h"
|
||||
|
||||
// ==========================================================
|
||||
diff --git a/Source/FreeImage/PluginJP2.cpp b/Source/FreeImage/PluginJP2.cpp
|
||||
index 742fe2c..c57f626 100644
|
||||
--- a/Source/FreeImage/PluginJP2.cpp
|
||||
+++ b/Source/FreeImage/PluginJP2.cpp
|
||||
@@ -21,7 +21,7 @@
|
||||
|
||||
#include "FreeImage.h"
|
||||
#include "Utilities.h"
|
||||
-#include "../LibOpenJPEG/openjpeg.h"
|
||||
+#include <openjpeg.h>
|
||||
#include "J2KHelper.h"
|
||||
|
||||
// ==========================================================
|
40
ports/freeimage/use-external-png-zlib.patch
Normal file
40
ports/freeimage/use-external-png-zlib.patch
Normal file
@ -0,0 +1,40 @@
|
||||
diff --git a/Source/FreeImage/PluginPNG.cpp b/Source/FreeImage/PluginPNG.cpp
|
||||
index ba2ef17..c3c5cd6 100644
|
||||
--- a/Source/FreeImage/PluginPNG.cpp
|
||||
+++ b/Source/FreeImage/PluginPNG.cpp
|
||||
@@ -40,8 +40,8 @@
|
||||
|
||||
// ----------------------------------------------------------
|
||||
|
||||
-#include "../ZLib/zlib.h"
|
||||
-#include "../LibPNG/png.h"
|
||||
+#include <zlib.h>
|
||||
+#include <png.h>
|
||||
|
||||
// ----------------------------------------------------------
|
||||
|
||||
diff --git a/Source/FreeImage/ZLibInterface.cpp b/Source/FreeImage/ZLibInterface.cpp
|
||||
index 3ab6d32..725618b 100644
|
||||
--- a/Source/FreeImage/ZLibInterface.cpp
|
||||
+++ b/Source/FreeImage/ZLibInterface.cpp
|
||||
@@ -19,10 +19,9 @@
|
||||
// Use at your own risk!
|
||||
// ==========================================================
|
||||
|
||||
-#include "../ZLib/zlib.h"
|
||||
+#include <zlib.h>
|
||||
#include "FreeImage.h"
|
||||
#include "Utilities.h"
|
||||
-#include "../ZLib/zutil.h" /* must be the last header because of error C3163 in VS2008 (_vsnprintf defined in stdio.h) */
|
||||
|
||||
/**
|
||||
Compresses a source buffer into a target buffer, using the ZLib library.
|
||||
@@ -115,7 +114,7 @@ FreeImage_ZLibGZip(BYTE *target, DWORD target_size, BYTE *source, DWORD source_s
|
||||
return 0;
|
||||
case Z_OK: {
|
||||
// patch header, setup crc and length (stolen from mod_trace_output)
|
||||
- BYTE *p = target + 8; *p++ = 2; *p = OS_CODE; // xflags, os_code
|
||||
+ BYTE *p = target + 8; *p++ = 2; *p = 0x03; // xflags, os_code
|
||||
crc = crc32(crc, source, source_size);
|
||||
memcpy(target + 4 + dest_len, &crc, 4);
|
||||
memcpy(target + 8 + dest_len, &source_size, 4);
|
13
ports/freeimage/use-external-rawlib.patch
Normal file
13
ports/freeimage/use-external-rawlib.patch
Normal file
@ -0,0 +1,13 @@
|
||||
diff --git a/Source/FreeImage/PluginRAW.cpp b/Source/FreeImage/PluginRAW.cpp
|
||||
index e9bd5bf..c7f8758 100644
|
||||
--- a/Source/FreeImage/PluginRAW.cpp
|
||||
+++ b/Source/FreeImage/PluginRAW.cpp
|
||||
@@ -19,7 +19,7 @@
|
||||
// Use at your own risk!
|
||||
// ==========================================================
|
||||
|
||||
-#include "../LibRawLite/libraw/libraw.h"
|
||||
+#include <libraw/libraw.h>
|
||||
|
||||
#include "FreeImage.h"
|
||||
#include "Utilities.h"
|
18
ports/freeimage/use-external-webp.patch
Normal file
18
ports/freeimage/use-external-webp.patch
Normal file
@ -0,0 +1,18 @@
|
||||
diff --git a/Source/FreeImage/PluginWebP.cpp b/Source/FreeImage/PluginWebP.cpp
|
||||
index 9fb0b69..c401447 100644
|
||||
--- a/Source/FreeImage/PluginWebP.cpp
|
||||
+++ b/Source/FreeImage/PluginWebP.cpp
|
||||
@@ -24,10 +24,9 @@
|
||||
|
||||
#include "../Metadata/FreeImageTag.h"
|
||||
|
||||
-#include "../LibWebP/src/webp/decode.h"
|
||||
-#include "../LibWebP/src/webp/encode.h"
|
||||
-#include "../LibWebP/src/enc/vp8enci.h"
|
||||
-#include "../LibWebP/src/webp/mux.h"
|
||||
+#include <webp/decode.h>
|
||||
+#include <webp/encode.h>
|
||||
+#include <webp/mux.h>
|
||||
|
||||
// ==========================================================
|
||||
// Plugin Interface
|
16
ports/freeimage/use-freeimage-config-include.patch
Normal file
16
ports/freeimage/use-freeimage-config-include.patch
Normal file
@ -0,0 +1,16 @@
|
||||
diff --git a/Source/FreeImage.h b/Source/FreeImage.h
|
||||
index cc66b7d..cc66812 100644
|
||||
--- a/Source/FreeImage.h
|
||||
+++ b/Source/FreeImage.h
|
||||
@@ -32,6 +32,11 @@
|
||||
#define FREEIMAGE_MINOR_VERSION 17
|
||||
#define FREEIMAGE_RELEASE_SERIAL 0
|
||||
|
||||
+// vcpkg specific includes --------------------------------------------------
|
||||
+// Include FreeImageConfig.h to define FREEIMAGE_LIB in static builds,
|
||||
+// or do not define it in dynamic builds
|
||||
+#include "FreeImageConfig.h"
|
||||
+
|
||||
// Compiler options ---------------------------------------------------------
|
||||
|
||||
#include <wchar.h> // needed for UNICODE functions
|
@ -1,3 +1,3 @@
|
||||
Source: glbinding
|
||||
Version: 2.1.1
|
||||
Version: 2.1.1-1
|
||||
Description: glbinding is an MIT licensed, cross-platform C++ binding for the OpenGL API
|
||||
|
@ -43,6 +43,16 @@ endif()
|
||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/cmake)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/data ${CURRENT_PACKAGES_DIR}/share/data)
|
||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/data)
|
||||
file(REMOVE ${CURRENT_PACKAGES_DIR}/AUTHORS
|
||||
${CURRENT_PACKAGES_DIR}/LICENSE
|
||||
${CURRENT_PACKAGES_DIR}/README.md
|
||||
${CURRENT_PACKAGES_DIR}/VERSION
|
||||
${CURRENT_PACKAGES_DIR}/debug/AUTHORS
|
||||
${CURRENT_PACKAGES_DIR}/debug/LICENSE
|
||||
${CURRENT_PACKAGES_DIR}/debug/README.md
|
||||
${CURRENT_PACKAGES_DIR}/debug/VERSION
|
||||
)
|
||||
|
||||
# Handle copyright
|
||||
file(COPY ${CURRENT_BUILDTREES_DIR}/src/glbinding-2.1.1/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/glbinding)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/share/glbinding/LICENSE ${CURRENT_PACKAGES_DIR}/share/glbinding/copyright)
|
||||
|
5
ports/globjects/CONTROL
Normal file
5
ports/globjects/CONTROL
Normal file
@ -0,0 +1,5 @@
|
||||
Source: globjects
|
||||
Maintainer: mattias@mattiascibien.net
|
||||
Version: 1.0.0
|
||||
Build-Depends: glbinding, glm
|
||||
Description: C++ library strictly wrapping OpenGL objects. <https://github.com/cginternals/globjects>
|
61
ports/globjects/portfile.cmake
Normal file
61
ports/globjects/portfile.cmake
Normal file
@ -0,0 +1,61 @@
|
||||
# Common Ambient Variables:
|
||||
# VCPKG_ROOT_DIR = <C:\path\to\current\vcpkg>
|
||||
# TARGET_TRIPLET is the current triplet (x86-windows, etc)
|
||||
# PORT is the current port name (zlib, etc)
|
||||
# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
|
||||
# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
|
||||
#
|
||||
|
||||
include(vcpkg_common_functions)
|
||||
set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/globjects-1.0.0)
|
||||
vcpkg_download_distfile(ARCHIVE
|
||||
URLS "https://github.com/cginternals/globjects/archive/v1.0.0.zip"
|
||||
FILENAME "globjects-1.0.0.zip"
|
||||
SHA512 e03ae16786b11891a61f0e2f85b0d98a858d1bad3cf4c45944982d6a753dbaa8b28975dc02153360a5ac0f3be73fe86c91af130cfc0dda7459dd782f16868eeb
|
||||
)
|
||||
vcpkg_extract_source_archive(${ARCHIVE})
|
||||
|
||||
vcpkg_configure_cmake(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/globjects-1.0.0)
|
||||
#vcpkg_build_cmake()
|
||||
vcpkg_install_cmake()
|
||||
|
||||
|
||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
|
||||
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/share)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/cmake/globjects ${CURRENT_PACKAGES_DIR}/share/globjects)
|
||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/cmake)
|
||||
|
||||
file(READ ${CURRENT_PACKAGES_DIR}/debug/cmake/globjects/globjects-export-debug.cmake globjects_DEBUG_MODULE)
|
||||
string(REPLACE "\${_IMPORT_PREFIX}" "\${_IMPORT_PREFIX}/debug" globjects_DEBUG_MODULE "${globjects_DEBUG_MODULE}")
|
||||
string(REPLACE "globjectsd.dll" "bin/globjectsd.dll" globjects_DEBUG_MODULE "${globjects_DEBUG_MODULE}")
|
||||
file(WRITE ${CURRENT_PACKAGES_DIR}/share/globjects/globjects-export-debug.cmake "${globjects_DEBUG_MODULE}")
|
||||
file(READ ${CURRENT_PACKAGES_DIR}/share/globjects/globjects-export-release.cmake RELEASE_CONF)
|
||||
string(REPLACE "globjects.dll" "bin/globjects.dll" RELEASE_CONF "${RELEASE_CONF}")
|
||||
file(WRITE ${CURRENT_PACKAGES_DIR}/share/globjects/globjects-export-release.cmake "${RELEASE_CONF}")
|
||||
file(REMOVE ${CURRENT_PACKAGES_DIR}/globjects-config.cmake)
|
||||
file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/globjects-config.cmake)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/share/globjects/globjects-export.cmake ${CURRENT_PACKAGES_DIR}/share/globjects/globjects-config.cmake)
|
||||
if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
|
||||
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/bin)
|
||||
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/bin)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/globjects.dll ${CURRENT_PACKAGES_DIR}/bin/globjects.dll)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/globjectsd.dll ${CURRENT_PACKAGES_DIR}/debug/bin/globjectsd.dll)
|
||||
endif()
|
||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/cmake)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/data ${CURRENT_PACKAGES_DIR}/share/data)
|
||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/data)
|
||||
file(REMOVE ${CURRENT_PACKAGES_DIR}/AUTHORS
|
||||
${CURRENT_PACKAGES_DIR}/LICENSE
|
||||
${CURRENT_PACKAGES_DIR}/README.md
|
||||
${CURRENT_PACKAGES_DIR}/VERSION
|
||||
${CURRENT_PACKAGES_DIR}/debug/AUTHORS
|
||||
${CURRENT_PACKAGES_DIR}/debug/LICENSE
|
||||
${CURRENT_PACKAGES_DIR}/debug/README.md
|
||||
${CURRENT_PACKAGES_DIR}/debug/VERSION
|
||||
)
|
||||
|
||||
# Handle copyright
|
||||
file(COPY ${CURRENT_BUILDTREES_DIR}/src/globjects-1.0.0/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/globjects)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/share/globjects/LICENSE ${CURRENT_PACKAGES_DIR}/share/globjects/copyright)
|
||||
|
||||
vcpkg_copy_pdbs()
|
@ -37,8 +37,6 @@ message(STATUS "Adding worktree and patching done")
|
||||
|
||||
vcpkg_configure_cmake(
|
||||
SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src
|
||||
OPTIONS
|
||||
-DBUILD_SHARED_LIBS=ON
|
||||
)
|
||||
|
||||
vcpkg_install_cmake()
|
||||
@ -55,4 +53,15 @@ file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gtest_main.dll ${CURRENT_PACKAGES_
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gmock.dll ${CURRENT_PACKAGES_DIR}/debug/bin/gmock.dll)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gmock_main.dll ${CURRENT_PACKAGES_DIR}/debug/bin/gmock_main.dll)
|
||||
|
||||
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/lib/manual-link)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gtest.lib ${CURRENT_PACKAGES_DIR}/lib/manual-link/gtest.lib)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gtest_main.lib ${CURRENT_PACKAGES_DIR}/lib/manual-link/gtest_main.lib)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gmock.lib ${CURRENT_PACKAGES_DIR}/lib/manual-link/gmock.lib)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/lib/gmock_main.lib ${CURRENT_PACKAGES_DIR}/lib/manual-link/gmock_main.lib)
|
||||
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gtest.lib ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link/gtest.lib)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gtest_main.lib ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link/gtest_main.lib)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gmock.lib ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link/gmock.lib)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/gmock_main.lib ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link/gmock_main.lib)
|
||||
|
||||
vcpkg_copy_pdbs()
|
||||
|
25
ports/libiconv/0003-Fix-uwp.patch
Normal file
25
ports/libiconv/0003-Fix-uwp.patch
Normal file
@ -0,0 +1,25 @@
|
||||
diff --git a/libcharset/lib/localcharset.c b/libcharset/lib/localcharset.c
|
||||
index 3aceb42..dadd95a 100644
|
||||
--- a/libcharset/lib/localcharset.c
|
||||
+++ b/libcharset/lib/localcharset.c
|
||||
@@ -455,7 +455,10 @@ locale_charset (void)
|
||||
# endif
|
||||
|
||||
#elif defined WIN32_NATIVE
|
||||
-
|
||||
+#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP)
|
||||
+ // GetACP() not available to UWP apps
|
||||
+ codeset = NULL;
|
||||
+#else
|
||||
static char buf[2 + 10 + 1];
|
||||
|
||||
/* Woe32 has a function returning the locale's codepage as a number:
|
||||
@@ -467,7 +470,7 @@ locale_charset (void)
|
||||
encoding is the best bet. */
|
||||
sprintf (buf, "CP%u", GetACP ());
|
||||
codeset = buf;
|
||||
-
|
||||
+#endif
|
||||
#elif defined OS2
|
||||
|
||||
const char *locale;
|
@ -55,6 +55,8 @@ list(APPEND Libiconv_headers ${Libiconv_BINARY_DIR}/localcharset.h)
|
||||
#
|
||||
set(libname libiconv)
|
||||
|
||||
add_definitions(-D_CRT_SECURE_NO_WARNINGS)
|
||||
|
||||
configure_file(
|
||||
${Libiconv_SOURCE_DIR}/include/iconv.h.build.in
|
||||
${Libiconv_BINARY_DIR}/iconv.h
|
||||
|
@ -14,6 +14,7 @@ vcpkg_apply_patches(
|
||||
SOURCE_PATH ${SOURCE_PATH}
|
||||
PATCHES ${CMAKE_CURRENT_LIST_DIR}/0001-Add-export-definitions.patch
|
||||
${CMAKE_CURRENT_LIST_DIR}/0002-Config-for-MSVC.patch
|
||||
${CMAKE_CURRENT_LIST_DIR}/0003-Fix-uwp.patch
|
||||
)
|
||||
|
||||
vcpkg_configure_cmake(
|
||||
|
@ -1,4 +1,4 @@
|
||||
Source: libraw
|
||||
Version: 0.17.2
|
||||
Version: 0.17.2-2
|
||||
Build-Depends: libjpeg-turbo
|
||||
Description: raw image decoder library
|
||||
|
@ -23,12 +23,16 @@ file(COPY ${LIBRAW_CMAKE_SOURCE_PATH}/cmake DESTINATION ${SOURCE_PATH})
|
||||
vcpkg_configure_cmake(
|
||||
SOURCE_PATH ${SOURCE_PATH}
|
||||
OPTIONS
|
||||
-DINSTALL_CMAKE_MODULE_PATH=${SOURCE_PATH}
|
||||
-DINSTALL_CMAKE_MODULE_PATH=${CURRENT_PACKAGES_DIR}/share/libraw
|
||||
)
|
||||
|
||||
vcpkg_install_cmake()
|
||||
|
||||
file(COPY ${SOURCE_PATH}/FindLibRaw.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/libraw/cmake/FindLibRaw.cmake)
|
||||
# Rename thread-safe version to be "raw.lib". This is unfortunately needed
|
||||
# because otherwise libraries that build on top of libraw have to choose.
|
||||
file(REMOVE ${CURRENT_PACKAGES_DIR}/lib/raw.lib ${CURRENT_PACKAGES_DIR}/debug/lib/raw.lib)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/lib/raw_r.lib ${CURRENT_PACKAGES_DIR}/lib/raw.lib)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/raw_r.lib ${CURRENT_PACKAGES_DIR}/debug/lib/raw.lib)
|
||||
|
||||
# Cleanup
|
||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
|
||||
@ -38,8 +42,13 @@ file(GLOB DEBUG_EXECUTABLES ${CURRENT_PACKAGES_DIR}/debug/bin/*.exe)
|
||||
file(REMOVE ${DEBUG_EXECUTABLES})
|
||||
if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
|
||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin)
|
||||
else()
|
||||
file(REMOVE ${CURRENT_PACKAGES_DIR}/bin/raw.dll ${CURRENT_PACKAGES_DIR}/debug/bin/raw.dll)
|
||||
endif()
|
||||
|
||||
# Rename cmake module into a config in order to allow more flexible lookup rules
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/share/libraw/FindLibRaw.cmake ${CURRENT_PACKAGES_DIR}/share/libraw/LibRaw-config.cmake)
|
||||
|
||||
# Handle copyright
|
||||
file(COPY ${SOURCE_PATH}/COPYRIGHT DESTINATION ${CURRENT_PACKAGES_DIR}/share/libraw)
|
||||
file(RENAME ${CURRENT_PACKAGES_DIR}/share/libraw/COPYRIGHT ${CURRENT_PACKAGES_DIR}/share/libraw/copyright)
|
||||
|
@ -31,11 +31,13 @@
|
||||
|
||||
<ItemDefinitionGroup Condition="'$(VcpkgEnabled)' == 'true'">
|
||||
<Link>
|
||||
<AdditionalDependencies Condition="'$(VcpkgConfiguration)' == 'Debug'">$(VcpkgRoot)debug\lib\*.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies Condition="'$(VcpkgConfiguration)' == 'Release'">$(VcpkgRoot)lib\*.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies Condition="'$(VcpkgConfiguration)' == 'Debug' and '$(VcpkgAutoLink)' != 'false'">%(AdditionalDependencies);$(VcpkgRoot)debug\lib\*.lib</AdditionalDependencies>
|
||||
<AdditionalDependencies Condition="'$(VcpkgConfiguration)' == 'Release' and '$(VcpkgAutoLink)' != 'false'">%(AdditionalDependencies);$(VcpkgRoot)lib\*.lib</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories Condition="'$(VcpkgConfiguration)' == 'Release'">%(AdditionalLibraryDirectories);$(VcpkgRoot)lib;$(VcpkgRoot)lib\manual-link</AdditionalLibraryDirectories>
|
||||
<AdditionalLibraryDirectories Condition="'$(VcpkgConfiguration)' == 'Debug'">%(AdditionalLibraryDirectories);$(VcpkgRoot)debug\lib;$(VcpkgRoot)debug\lib\manual-link</AdditionalLibraryDirectories>
|
||||
</Link>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(VcpkgRoot)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);$(VcpkgRoot)include</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
</ItemDefinitionGroup>
|
||||
|
||||
|
@ -46,21 +46,29 @@ if(NOT VCPKG_TOOLCHAIN)
|
||||
list(APPEND CMAKE_PREFIX_PATH
|
||||
${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug
|
||||
)
|
||||
list(APPEND CMAKE_LIBRARY_PATH
|
||||
${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib/manual-link
|
||||
)
|
||||
link_directories(${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib/manual-link)
|
||||
endif()
|
||||
list(APPEND CMAKE_PREFIX_PATH
|
||||
${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}
|
||||
)
|
||||
list(APPEND CMAKE_LIBRARY_PATH
|
||||
${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/manual-link
|
||||
)
|
||||
link_directories(${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/manual-link)
|
||||
|
||||
include_directories(${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include)
|
||||
|
||||
set(CMAKE_PROGRAM_PATH ${CMAKE_PROGRAM_PATH} ${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/tools)
|
||||
|
||||
option(OVERRIDE_ADD_EXECUTABLE "Automatically copy dependencies into the output directory for executables." ON)
|
||||
if(OVERRIDE_ADD_EXECUTABLE)
|
||||
function(add_executable name)
|
||||
_add_executable(${ARGV})
|
||||
list(FIND ARGV "IMPORTED" IMPORTED_IDX)
|
||||
if(IMPORTED_IDX EQUAL -1)
|
||||
option(VCPKG_APPLOCAL_DEPS "Automatically copy dependencies into the output directory for executables." ON)
|
||||
function(add_executable name)
|
||||
_add_executable(${ARGV})
|
||||
list(FIND ARGV "IMPORTED" IMPORTED_IDX)
|
||||
if(IMPORTED_IDX EQUAL -1)
|
||||
if(VCPKG_APPLOCAL_DEPS)
|
||||
add_custom_command(TARGET ${name} POST_BUILD
|
||||
COMMAND powershell -noprofile -executionpolicy UnRestricted -file ${_VCPKG_TOOLCHAIN_DIR}/msbuild/applocal.ps1
|
||||
-targetBinary $<TARGET_FILE:${name}>
|
||||
@ -68,7 +76,17 @@ if(NOT VCPKG_TOOLCHAIN)
|
||||
-OutVariable out
|
||||
)
|
||||
endif()
|
||||
endfunction()
|
||||
endif()
|
||||
set_target_properties(${name} PROPERTIES VS_GLOBAL_VcpkgEnabled false)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(add_library name)
|
||||
_add_library(${ARGV})
|
||||
list(FIND ARGV "IMPORTED" IMPORTED_IDX)
|
||||
if(IMPORTED_IDX EQUAL -1)
|
||||
set_target_properties(${name} PROPERTIES VS_GLOBAL_VcpkgEnabled false)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
set(VCPKG_TOOLCHAIN ON)
|
||||
endif()
|
||||
|
@ -46,8 +46,8 @@ namespace vcpkg
|
||||
|
||||
const ConfigurationType& config() const;
|
||||
const LinkageType& linkage() const;
|
||||
const std::regex crt_regex() const;
|
||||
const std::string toString() const;
|
||||
std::regex crt_regex() const;
|
||||
std::string toString() const;
|
||||
|
||||
private:
|
||||
BuildType(const ConfigurationType& config, const LinkageType& linkage, const std::string& crt_regex_as_string)
|
||||
|
@ -14,13 +14,13 @@ namespace vcpkg
|
||||
return this->m_linkage;
|
||||
}
|
||||
|
||||
const std::regex BuildType::crt_regex() const
|
||||
std::regex BuildType::crt_regex() const
|
||||
{
|
||||
const std::regex r(this->m_crt_regex_as_string, std::regex_constants::icase);
|
||||
return r;
|
||||
}
|
||||
|
||||
const std::string BuildType::toString() const
|
||||
std::string BuildType::toString() const
|
||||
{
|
||||
const std::string s = Strings::format("[%s,%s]", to_string(this->m_config), to_string(this->m_linkage));
|
||||
return s;
|
||||
|
@ -32,6 +32,12 @@ namespace vcpkg
|
||||
System::println("");
|
||||
}
|
||||
|
||||
template <class Pred>
|
||||
void non_recursive_find_matching_paths_in_dir(const fs::path& dir, const Pred predicate, std::vector<fs::path>* output)
|
||||
{
|
||||
std::copy_if(fs::directory_iterator(dir), fs::directory_iterator(), std::back_inserter(*output), predicate);
|
||||
}
|
||||
|
||||
template <class Pred>
|
||||
void recursive_find_matching_paths_in_dir(const fs::path& dir, const Pred predicate, std::vector<fs::path>* output)
|
||||
{
|
||||
@ -62,9 +68,9 @@ namespace vcpkg
|
||||
}
|
||||
}
|
||||
|
||||
static lint_status check_for_files_in_include_directory(const package_spec& spec, const vcpkg_paths& paths)
|
||||
static lint_status check_for_files_in_include_directory(const fs::path& package_dir)
|
||||
{
|
||||
const fs::path include_dir = paths.packages / spec.dir() / "include";
|
||||
const fs::path include_dir = package_dir / "include";
|
||||
if (!fs::exists(include_dir) || fs::is_empty(include_dir))
|
||||
{
|
||||
System::println(System::color::warning, "The folder /include is empty. This indicates the library was not correctly installed.");
|
||||
@ -74,9 +80,9 @@ namespace vcpkg
|
||||
return lint_status::SUCCESS;
|
||||
}
|
||||
|
||||
static lint_status check_for_files_in_debug_include_directory(const package_spec& spec, const vcpkg_paths& paths)
|
||||
static lint_status check_for_files_in_debug_include_directory(const fs::path& package_dir)
|
||||
{
|
||||
const fs::path debug_include_dir = paths.packages / spec.dir() / "debug" / "include";
|
||||
const fs::path debug_include_dir = package_dir / "debug" / "include";
|
||||
std::vector<fs::path> files_found;
|
||||
|
||||
recursive_find_matching_paths_in_dir(debug_include_dir, [&](const fs::path& current)
|
||||
@ -95,9 +101,9 @@ namespace vcpkg
|
||||
return lint_status::SUCCESS;
|
||||
}
|
||||
|
||||
static lint_status check_for_files_in_debug_share_directory(const package_spec& spec, const vcpkg_paths& paths)
|
||||
static lint_status check_for_files_in_debug_share_directory(const fs::path& package_dir)
|
||||
{
|
||||
const fs::path debug_share = paths.packages / spec.dir() / "debug" / "share";
|
||||
const fs::path debug_share = package_dir / "debug" / "share";
|
||||
|
||||
if (fs::exists(debug_share) && !fs::is_empty(debug_share))
|
||||
{
|
||||
@ -108,9 +114,9 @@ namespace vcpkg
|
||||
return lint_status::SUCCESS;
|
||||
}
|
||||
|
||||
static lint_status check_folder_lib_cmake(const package_spec& spec, const vcpkg_paths& paths)
|
||||
static lint_status check_folder_lib_cmake(const fs::path& package_dir)
|
||||
{
|
||||
const fs::path lib_cmake = paths.packages / spec.dir() / "lib" / "cmake";
|
||||
const fs::path lib_cmake = package_dir / "lib" / "cmake";
|
||||
if (fs::exists(lib_cmake))
|
||||
{
|
||||
System::println(System::color::warning, "The /lib/cmake folder should be moved to just /cmake");
|
||||
@ -120,14 +126,13 @@ namespace vcpkg
|
||||
return lint_status::SUCCESS;
|
||||
}
|
||||
|
||||
static lint_status check_for_misplaced_cmake_files(const package_spec& spec, const vcpkg_paths& paths)
|
||||
static lint_status check_for_misplaced_cmake_files(const fs::path& package_dir, const package_spec& spec)
|
||||
{
|
||||
const fs::path current_packages_dir = paths.packages / spec.dir();
|
||||
std::vector<fs::path> misplaced_cmake_files;
|
||||
recursive_find_files_with_extension_in_dir(current_packages_dir / "cmake", ".cmake", &misplaced_cmake_files);
|
||||
recursive_find_files_with_extension_in_dir(current_packages_dir / "debug" / "cmake", ".cmake", &misplaced_cmake_files);
|
||||
recursive_find_files_with_extension_in_dir(current_packages_dir / "lib" / "cmake", ".cmake", &misplaced_cmake_files);
|
||||
recursive_find_files_with_extension_in_dir(current_packages_dir / "debug" / "lib" / "cmake", ".cmake", &misplaced_cmake_files);
|
||||
recursive_find_files_with_extension_in_dir(package_dir / "cmake", ".cmake", &misplaced_cmake_files);
|
||||
recursive_find_files_with_extension_in_dir(package_dir / "debug" / "cmake", ".cmake", &misplaced_cmake_files);
|
||||
recursive_find_files_with_extension_in_dir(package_dir / "lib" / "cmake", ".cmake", &misplaced_cmake_files);
|
||||
recursive_find_files_with_extension_in_dir(package_dir / "debug" / "lib" / "cmake", ".cmake", &misplaced_cmake_files);
|
||||
|
||||
if (!misplaced_cmake_files.empty())
|
||||
{
|
||||
@ -139,9 +144,9 @@ namespace vcpkg
|
||||
return lint_status::SUCCESS;
|
||||
}
|
||||
|
||||
static lint_status check_folder_debug_lib_cmake(const package_spec& spec, const vcpkg_paths& paths)
|
||||
static lint_status check_folder_debug_lib_cmake(const fs::path& package_dir)
|
||||
{
|
||||
const fs::path lib_cmake_debug = paths.packages / spec.dir() / "debug" / "lib" / "cmake";
|
||||
const fs::path lib_cmake_debug = package_dir / "debug" / "lib" / "cmake";
|
||||
if (fs::exists(lib_cmake_debug))
|
||||
{
|
||||
System::println(System::color::warning, "The /debug/lib/cmake folder should be moved to just /debug/cmake");
|
||||
@ -151,11 +156,11 @@ namespace vcpkg
|
||||
return lint_status::SUCCESS;
|
||||
}
|
||||
|
||||
static lint_status check_for_dlls_in_lib_dirs(const package_spec& spec, const vcpkg_paths& paths)
|
||||
static lint_status check_for_dlls_in_lib_dirs(const fs::path& package_dir)
|
||||
{
|
||||
std::vector<fs::path> dlls;
|
||||
recursive_find_files_with_extension_in_dir(paths.packages / spec.dir() / "lib", ".dll", &dlls);
|
||||
recursive_find_files_with_extension_in_dir(paths.packages / spec.dir() / "debug" / "lib", ".dll", &dlls);
|
||||
recursive_find_files_with_extension_in_dir(package_dir / "lib", ".dll", &dlls);
|
||||
recursive_find_files_with_extension_in_dir(package_dir / "debug" / "lib", ".dll", &dlls);
|
||||
|
||||
if (!dlls.empty())
|
||||
{
|
||||
@ -169,7 +174,8 @@ namespace vcpkg
|
||||
|
||||
static lint_status check_for_copyright_file(const package_spec& spec, const vcpkg_paths& paths)
|
||||
{
|
||||
const fs::path copyright_file = paths.packages / spec.dir() / "share" / spec.name() / "copyright";
|
||||
const fs::path packages_dir = paths.packages / spec.dir();
|
||||
const fs::path copyright_file = packages_dir / "share" / spec.name() / "copyright";
|
||||
if (fs::exists(copyright_file))
|
||||
{
|
||||
return lint_status::SUCCESS;
|
||||
@ -210,17 +216,15 @@ namespace vcpkg
|
||||
print_vector_of_files(potential_copyright_files);
|
||||
}
|
||||
|
||||
const fs::path current_packages_dir = paths.packages / spec.dir();
|
||||
System::println(" %s/share/%s/copyright", current_packages_dir.generic_string(), spec.name());
|
||||
|
||||
System::println(" %s/share/%s/copyright", packages_dir.generic_string(), spec.name());
|
||||
return lint_status::ERROR_DETECTED;
|
||||
}
|
||||
|
||||
static lint_status check_for_exes(const package_spec& spec, const vcpkg_paths& paths)
|
||||
static lint_status check_for_exes(const fs::path& package_dir)
|
||||
{
|
||||
std::vector<fs::path> exes;
|
||||
recursive_find_files_with_extension_in_dir(paths.packages / spec.dir() / "bin", ".exe", &exes);
|
||||
recursive_find_files_with_extension_in_dir(paths.packages / spec.dir() / "debug" / "bin", ".exe", &exes);
|
||||
recursive_find_files_with_extension_in_dir(package_dir / "bin", ".exe", &exes);
|
||||
recursive_find_files_with_extension_in_dir(package_dir / "debug" / "bin", ".exe", &exes);
|
||||
|
||||
if (!exes.empty())
|
||||
{
|
||||
@ -446,10 +450,10 @@ namespace vcpkg
|
||||
return lint_status::SUCCESS;
|
||||
}
|
||||
|
||||
static lint_status check_bin_folders_are_not_present_in_static_build(const package_spec& spec, const vcpkg_paths& paths)
|
||||
static lint_status check_bin_folders_are_not_present_in_static_build(const fs::path& package_dir)
|
||||
{
|
||||
const fs::path bin = paths.packages / spec.dir() / "bin";
|
||||
const fs::path debug_bin = paths.packages / spec.dir() / "debug" / "bin";
|
||||
const fs::path bin = package_dir / "bin";
|
||||
const fs::path debug_bin = package_dir / "debug" / "bin";
|
||||
|
||||
if (!fs::exists(bin) && !fs::exists(debug_bin))
|
||||
{
|
||||
@ -591,6 +595,33 @@ namespace vcpkg
|
||||
return lint_status::SUCCESS;
|
||||
}
|
||||
|
||||
static lint_status check_no_files_in_package_dir_and_debug_dir(const fs::path& package_dir)
|
||||
{
|
||||
std::vector<fs::path> misplaced_files;
|
||||
|
||||
non_recursive_find_matching_paths_in_dir(package_dir, [](const fs::path& current)
|
||||
{
|
||||
const std::string filename = current.filename().generic_string();
|
||||
return !fs::is_directory(current) && !((_stricmp(filename.c_str(), "CONTROL") == 0 || _stricmp(filename.c_str(), "BUILD_INFO") == 0));
|
||||
}, &misplaced_files);
|
||||
|
||||
const fs::path debug_dir = package_dir / "debug";
|
||||
non_recursive_find_matching_paths_in_dir(debug_dir, [](const fs::path& current)
|
||||
{
|
||||
return !fs::is_directory(current);
|
||||
}, &misplaced_files);
|
||||
|
||||
if (!misplaced_files.empty())
|
||||
{
|
||||
System::println(System::color::warning, "The following files are placed in\n%s and\n%s: ", package_dir.generic_string(), debug_dir.generic_string());
|
||||
print_vector_of_files(misplaced_files);
|
||||
System::println(System::color::warning, "Files cannot be present in those directories.\n");
|
||||
return lint_status::ERROR_DETECTED;
|
||||
}
|
||||
|
||||
return lint_status::SUCCESS;
|
||||
}
|
||||
|
||||
static void operator +=(size_t& left, const lint_status& right)
|
||||
{
|
||||
left += static_cast<size_t>(right);
|
||||
@ -601,22 +632,24 @@ namespace vcpkg
|
||||
System::println("-- Performing post-build validation");
|
||||
|
||||
BuildInfo build_info = read_build_info(paths.build_info_file_path(spec));
|
||||
const fs::path package_dir = paths.package_dir(spec);
|
||||
|
||||
size_t error_count = 0;
|
||||
error_count += check_for_files_in_include_directory(spec, paths);
|
||||
error_count += check_for_files_in_debug_include_directory(spec, paths);
|
||||
error_count += check_for_files_in_debug_share_directory(spec, paths);
|
||||
error_count += check_folder_lib_cmake(spec, paths);
|
||||
error_count += check_for_misplaced_cmake_files(spec, paths);
|
||||
error_count += check_folder_debug_lib_cmake(spec, paths);
|
||||
error_count += check_for_dlls_in_lib_dirs(spec, paths);
|
||||
error_count += check_for_files_in_include_directory(package_dir);
|
||||
error_count += check_for_files_in_debug_include_directory(package_dir);
|
||||
error_count += check_for_files_in_debug_share_directory(package_dir);
|
||||
error_count += check_folder_lib_cmake(package_dir);
|
||||
error_count += check_for_misplaced_cmake_files(package_dir, spec);
|
||||
error_count += check_folder_debug_lib_cmake(package_dir);
|
||||
error_count += check_for_dlls_in_lib_dirs(package_dir);
|
||||
error_count += check_for_copyright_file(spec, paths);
|
||||
error_count += check_for_exes(spec, paths);
|
||||
error_count += check_for_exes(package_dir);
|
||||
|
||||
const fs::path debug_lib_dir = paths.packages / spec.dir() / "debug" / "lib";
|
||||
const fs::path release_lib_dir = paths.packages / spec.dir() / "lib";
|
||||
const fs::path debug_bin_dir = paths.packages / spec.dir() / "debug" / "bin";
|
||||
const fs::path release_bin_dir = paths.packages / spec.dir() / "bin";
|
||||
|
||||
const fs::path debug_lib_dir = package_dir / "debug" / "lib";
|
||||
const fs::path release_lib_dir = package_dir / "lib";
|
||||
const fs::path debug_bin_dir = package_dir / "debug" / "bin";
|
||||
const fs::path release_bin_dir = package_dir / "bin";
|
||||
|
||||
const std::vector<fs::path> debug_libs = recursive_find_files_with_extension_in_dir(debug_lib_dir, ".lib");
|
||||
const std::vector<fs::path> release_libs = recursive_find_files_with_extension_in_dir(release_lib_dir, ".lib");
|
||||
@ -655,10 +688,10 @@ namespace vcpkg
|
||||
case LinkageType::STATIC:
|
||||
{
|
||||
std::vector<fs::path> dlls;
|
||||
recursive_find_files_with_extension_in_dir(paths.packages / spec.dir(), ".dll", &dlls);
|
||||
recursive_find_files_with_extension_in_dir(package_dir, ".dll", &dlls);
|
||||
error_count += check_no_dlls_present(dlls);
|
||||
|
||||
error_count += check_bin_folders_are_not_present_in_static_build(spec, paths);
|
||||
error_count += check_bin_folders_are_not_present_in_static_build(package_dir);
|
||||
|
||||
error_count += check_crt_linkage_of_libs(BuildType::value_of(ConfigurationType::DEBUG, linkage_type_value_of(build_info.crt_linkage)), debug_libs);
|
||||
error_count += check_crt_linkage_of_libs(BuildType::value_of(ConfigurationType::RELEASE, linkage_type_value_of(build_info.crt_linkage)), release_libs);
|
||||
@ -674,11 +707,12 @@ namespace vcpkg
|
||||
Checks::unreachable();
|
||||
}
|
||||
#if 0
|
||||
error_count += check_no_subdirectories(paths.packages / spec.dir() / "lib");
|
||||
error_count += check_no_subdirectories(paths.packages / spec.dir() / "debug" / "lib");
|
||||
error_count += check_no_subdirectories(package_dir / "lib");
|
||||
error_count += check_no_subdirectories(package_dir / "debug" / "lib");
|
||||
#endif
|
||||
|
||||
error_count += check_no_empty_folders(paths.packages / spec.dir());
|
||||
error_count += check_no_empty_folders(package_dir);
|
||||
error_count += check_no_files_in_package_dir_and_debug_dir(package_dir);
|
||||
|
||||
if (error_count != 0)
|
||||
{
|
||||
|
@ -18,19 +18,6 @@ using namespace vcpkg;
|
||||
|
||||
bool vcpkg::g_do_dry_run = false;
|
||||
|
||||
namespace
|
||||
{
|
||||
template <class M, class K, class V>
|
||||
auto find_or_default(const M& map, const K& key, const V& val)
|
||||
{
|
||||
auto it = map.find(key);
|
||||
if (it == map.end())
|
||||
return decltype(it->second)(val);
|
||||
else
|
||||
return it->second;
|
||||
}
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
std::fstream open_status_file(const vcpkg_paths& paths, std::ios_base::openmode mode = std::ios_base::app | std::ios_base::in | std::ios_base::out | std::ios_base::binary)
|
||||
@ -157,8 +144,8 @@ static void install_and_write_listfile(const vcpkg_paths& paths, const BinaryPar
|
||||
|
||||
for (auto it = fs::recursive_directory_iterator(package_prefix_path); it != fs::recursive_directory_iterator(); ++it)
|
||||
{
|
||||
const auto& filename = it->path().filename();
|
||||
if (fs::is_regular_file(it->status()) && (_stricmp(filename.generic_string().c_str(), "CONTROL") == 0 || _stricmp(filename.generic_string().c_str(), "BUILD_INFO") == 0))
|
||||
const std::string filename = it->path().filename().generic_string();
|
||||
if (fs::is_regular_file(it->status()) && (_stricmp(filename.c_str(), "CONTROL") == 0 || _stricmp(filename.c_str(), "BUILD_INFO") == 0))
|
||||
{
|
||||
// Do not copy the control file
|
||||
continue;
|
||||
|
Loading…
Reference in New Issue
Block a user