From 32157f8ce5abdca2f25981064006906cd1cce5e5 Mon Sep 17 00:00:00 2001 From: Robert Schumacher Date: Fri, 25 Nov 2016 23:10:27 -0800 Subject: [PATCH 01/26] [vcpkg-integrate] Provide an opt-out for autolinking. Properly suppress integration via MSBuild when using CMake. Add lib\ and lib\manual-link\ to additional library paths. [gtest] Because the four libraries provided by gtest supply redundant symbols and define main, opt them all out. Addresses #306. --- ports/gtest/portfile.cmake | 13 +++++++-- scripts/buildsystems/msbuild/vcpkg.targets | 8 ++++-- scripts/buildsystems/vcpkg.cmake | 32 ++++++++++++++++------ 3 files changed, 40 insertions(+), 13 deletions(-) diff --git a/ports/gtest/portfile.cmake b/ports/gtest/portfile.cmake index e1d601d7bd..d1ba722d7a 100644 --- a/ports/gtest/portfile.cmake +++ b/ports/gtest/portfile.cmake @@ -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() diff --git a/scripts/buildsystems/msbuild/vcpkg.targets b/scripts/buildsystems/msbuild/vcpkg.targets index 18c4e9d9f3..7782551c2c 100644 --- a/scripts/buildsystems/msbuild/vcpkg.targets +++ b/scripts/buildsystems/msbuild/vcpkg.targets @@ -31,11 +31,13 @@ - $(VcpkgRoot)debug\lib\*.lib;%(AdditionalDependencies) - $(VcpkgRoot)lib\*.lib;%(AdditionalDependencies) + %(AdditionalDependencies);$(VcpkgRoot)debug\lib\*.lib + %(AdditionalDependencies);$(VcpkgRoot)lib\*.lib + %(AdditionalLibraryDirectories);$(VcpkgRoot)lib;$(VcpkgRoot)lib\manual-link + %(AdditionalLibraryDirectories);$(VcpkgRoot)debug\lib;$(VcpkgRoot)debug\lib\manual-link - $(VcpkgRoot)include;%(AdditionalIncludeDirectories) + %(AdditionalIncludeDirectories);$(VcpkgRoot)include diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake index 54960a138f..c77aca52d7 100644 --- a/scripts/buildsystems/vcpkg.cmake +++ b/scripts/buildsystems/vcpkg.cmake @@ -46,21 +46,27 @@ 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 + ) 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 + ) 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 $ @@ -68,7 +74,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() From 61b653aad37f4dbad0d64f7dca895ca94ccad983 Mon Sep 17 00:00:00 2001 From: Robert Schumacher Date: Sat, 26 Nov 2016 00:10:42 -0800 Subject: [PATCH 02/26] [vcpkg.cmake] Add `lib` and `lib/manual-link` to CMake's default link directories when using our toolchain. --- scripts/buildsystems/vcpkg.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake index c77aca52d7..44db05a226 100644 --- a/scripts/buildsystems/vcpkg.cmake +++ b/scripts/buildsystems/vcpkg.cmake @@ -49,6 +49,7 @@ if(NOT VCPKG_TOOLCHAIN) 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} @@ -56,6 +57,7 @@ if(NOT VCPKG_TOOLCHAIN) 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) From 351c9a85b2d9a7d5a166e7d58271431eb3d74f99 Mon Sep 17 00:00:00 2001 From: Robert Schumacher Date: Sat, 26 Nov 2016 00:15:38 -0800 Subject: [PATCH 03/26] [curl] [freetype] [tiff] Add dependencies on zlib. Add curl dependency on openssl. --- ports/curl/CONTROL | 5 +++-- ports/freetype/CONTROL | 3 ++- ports/tiff/CONTROL | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/ports/curl/CONTROL b/ports/curl/CONTROL index 26fe767c37..bca23865d5 100644 --- a/ports/curl/CONTROL +++ b/ports/curl/CONTROL @@ -1,3 +1,4 @@ Source: curl -Version: 7.51.0 -Description: A library for transferring data with URLs \ No newline at end of file +Version: 7.51.0-1 +Build-Depends: zlib, openssl +Description: A library for transferring data with URLs diff --git a/ports/freetype/CONTROL b/ports/freetype/CONTROL index 39def18fc6..614017c816 100644 --- a/ports/freetype/CONTROL +++ b/ports/freetype/CONTROL @@ -1,3 +1,4 @@ Source: freetype -Version: 2.6.3-1 +Version: 2.6.3-2 +Build-Depends: zlib Description: A library to render fonts. \ No newline at end of file diff --git a/ports/tiff/CONTROL b/ports/tiff/CONTROL index df11c0e9c2..65e3d37da6 100644 --- a/ports/tiff/CONTROL +++ b/ports/tiff/CONTROL @@ -1,3 +1,4 @@ Source: tiff -Version: 4.0.6 +Version: 4.0.6-1 +Build-Depends: zlib Description: A library that supports the manipulation of TIFF image files \ No newline at end of file From 90a0447f9370a67edb0e0e2fab10438e4906dd98 Mon Sep 17 00:00:00 2001 From: Mattias Cibien Date: Sat, 26 Nov 2016 21:00:53 +0100 Subject: [PATCH 04/26] Initial globjects --- ports/globjects/CONTROL | 3 +++ ports/globjects/portfile.cmake | 29 +++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 ports/globjects/CONTROL create mode 100644 ports/globjects/portfile.cmake diff --git a/ports/globjects/CONTROL b/ports/globjects/CONTROL new file mode 100644 index 0000000000..1702691919 --- /dev/null +++ b/ports/globjects/CONTROL @@ -0,0 +1,3 @@ +Source: globjects +Version: 1.0.0 +Description: C++ library strictly wrapping OpenGL objects. diff --git a/ports/globjects/portfile.cmake b/ports/globjects/portfile.cmake new file mode 100644 index 0000000000..f6e7fc9e6b --- /dev/null +++ b/ports/globjects/portfile.cmake @@ -0,0 +1,29 @@ +# Common Ambient Variables: +# VCPKG_ROOT_DIR = +# 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 ${SOURCE_PATH} + # OPTIONS -DUSE_THIS_IN_ALL_BUILDS=1 -DUSE_THIS_TOO=2 + # OPTIONS_RELEASE -DOPTIMIZE=1 + # OPTIONS_DEBUG -DDEBUGGABLE=1 +) + +vcpkg_install_cmake() + +# Handle copyright +#file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/globjects) +#file(RENAME ${CURRENT_PACKAGES_DIR}/share/globjects/LICENSE ${CURRENT_PACKAGES_DIR}/share/globjects/copyright) From de0065d9d27ed8be7bd0cc63dc004a529cbc1624 Mon Sep 17 00:00:00 2001 From: Mattias Cibien Date: Sat, 26 Nov 2016 21:14:30 +0100 Subject: [PATCH 05/26] Finished globjects --- ports/globjects/portfile.cmake | 40 ++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/ports/globjects/portfile.cmake b/ports/globjects/portfile.cmake index f6e7fc9e6b..6102dfa8ab 100644 --- a/ports/globjects/portfile.cmake +++ b/ports/globjects/portfile.cmake @@ -15,15 +15,37 @@ vcpkg_download_distfile(ARCHIVE ) vcpkg_extract_source_archive(${ARCHIVE}) -vcpkg_configure_cmake( - SOURCE_PATH ${SOURCE_PATH} - # OPTIONS -DUSE_THIS_IN_ALL_BUILDS=1 -DUSE_THIS_TOO=2 - # OPTIONS_RELEASE -DOPTIMIZE=1 - # OPTIONS_DEBUG -DDEBUGGABLE=1 -) - +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) # Handle copyright -#file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/globjects) -#file(RENAME ${CURRENT_PACKAGES_DIR}/share/globjects/LICENSE ${CURRENT_PACKAGES_DIR}/share/globjects/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() From 98bb77dab2951822573e02b7b50aa4fbcc080981 Mon Sep 17 00:00:00 2001 From: Mattias Cibien Date: Sun, 27 Nov 2016 09:26:00 +0100 Subject: [PATCH 06/26] Added maintainer and url --- ports/globjects/CONTROL | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ports/globjects/CONTROL b/ports/globjects/CONTROL index 1702691919..14fb29ae58 100644 --- a/ports/globjects/CONTROL +++ b/ports/globjects/CONTROL @@ -1,3 +1,5 @@ Source: globjects +Maintainer: mattias@mattiascibien.net Version: 1.0.0 -Description: C++ library strictly wrapping OpenGL objects. +Build-Depends: glbinding +Description: C++ library strictly wrapping OpenGL objects. From a45a65f9390b5d4f839daf94fe6a3d6845037a99 Mon Sep 17 00:00:00 2001 From: Mattias Cibien Date: Sun, 27 Nov 2016 09:37:54 +0100 Subject: [PATCH 07/26] Fixed missing glm dependency --- ports/globjects/CONTROL | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/globjects/CONTROL b/ports/globjects/CONTROL index 14fb29ae58..7917bacacf 100644 --- a/ports/globjects/CONTROL +++ b/ports/globjects/CONTROL @@ -1,5 +1,5 @@ Source: globjects Maintainer: mattias@mattiascibien.net Version: 1.0.0 -Build-Depends: glbinding +Build-Depends: glbinding, glm Description: C++ library strictly wrapping OpenGL objects. From 8ee0ec169919dc6c2e0379803a35f135d064dceb Mon Sep 17 00:00:00 2001 From: Dale Stammen Date: Mon, 28 Nov 2016 13:01:55 -0800 Subject: [PATCH 08/26] fix for uwp builds --- ports/libiconv/0003-Fix-uwp.patch | 25 +++++++++++++++++++++++++ ports/libiconv/CMakeLists.txt | 2 ++ ports/libiconv/portfile.cmake | 1 + 3 files changed, 28 insertions(+) create mode 100644 ports/libiconv/0003-Fix-uwp.patch diff --git a/ports/libiconv/0003-Fix-uwp.patch b/ports/libiconv/0003-Fix-uwp.patch new file mode 100644 index 0000000000..0b2444166e --- /dev/null +++ b/ports/libiconv/0003-Fix-uwp.patch @@ -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; diff --git a/ports/libiconv/CMakeLists.txt b/ports/libiconv/CMakeLists.txt index 46575ca273..0d2a2a4d33 100644 --- a/ports/libiconv/CMakeLists.txt +++ b/ports/libiconv/CMakeLists.txt @@ -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 diff --git a/ports/libiconv/portfile.cmake b/ports/libiconv/portfile.cmake index cfb96391b1..46bd2f9e90 100644 --- a/ports/libiconv/portfile.cmake +++ b/ports/libiconv/portfile.cmake @@ -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( From 5bd036cf5a70e18c451cc5aa9d041c530bf7adf1 Mon Sep 17 00:00:00 2001 From: Silvio Date: Sun, 27 Nov 2016 17:24:23 +0100 Subject: [PATCH 09/26] Add freeimage port Extensive modification have been done to support building with external dependencies. The biggest change is a new CMake-based build system. Several patches are based on the equivalent ones used in Debian packaging, see http://sources.debian.net/patches/freeimage . The only dependency for which the internal version is still used is OpenEXR. --- ports/freeimage/CMakeLists.txt | 148 +++++++++++++++ ports/freeimage/CONTROL | 4 + ports/freeimage/FreeImageConfig-dynamic.h | 5 + ports/freeimage/FreeImageConfig-static.h | 8 + ports/freeimage/cmake/FindJXR.cmake | 28 +++ ports/freeimage/cmake/FindWEBP.cmake | 26 +++ ...ng-on-internal-third-party-libraries.patch | 71 +++++++ ports/freeimage/portfile.cmake | 54 ++++++ ports/freeimage/use-external-jpeg.patch | 17 ++ ports/freeimage/use-external-jxrlib.patch | 14 ++ ports/freeimage/use-external-libtiff.patch | 174 ++++++++++++++++++ ports/freeimage/use-external-openjpeg.patch | 39 ++++ ports/freeimage/use-external-png-zlib.patch | 40 ++++ ports/freeimage/use-external-rawlib.patch | 13 ++ ports/freeimage/use-external-webp.patch | 18 ++ .../use-freeimage-config-include.patch | 16 ++ 16 files changed, 675 insertions(+) create mode 100644 ports/freeimage/CMakeLists.txt create mode 100644 ports/freeimage/CONTROL create mode 100644 ports/freeimage/FreeImageConfig-dynamic.h create mode 100644 ports/freeimage/FreeImageConfig-static.h create mode 100644 ports/freeimage/cmake/FindJXR.cmake create mode 100644 ports/freeimage/cmake/FindWEBP.cmake create mode 100644 ports/freeimage/disable-plugins-depending-on-internal-third-party-libraries.patch create mode 100644 ports/freeimage/portfile.cmake create mode 100644 ports/freeimage/use-external-jpeg.patch create mode 100644 ports/freeimage/use-external-jxrlib.patch create mode 100644 ports/freeimage/use-external-libtiff.patch create mode 100644 ports/freeimage/use-external-openjpeg.patch create mode 100644 ports/freeimage/use-external-png-zlib.patch create mode 100644 ports/freeimage/use-external-rawlib.patch create mode 100644 ports/freeimage/use-external-webp.patch create mode 100644 ports/freeimage/use-freeimage-config-include.patch diff --git a/ports/freeimage/CMakeLists.txt b/ports/freeimage/CMakeLists.txt new file mode 100644 index 0000000000..80a40b43bb --- /dev/null +++ b/ports/freeimage/CMakeLists.txt @@ -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}) \ No newline at end of file diff --git a/ports/freeimage/CONTROL b/ports/freeimage/CONTROL new file mode 100644 index 0000000000..961acc4be1 --- /dev/null +++ b/ports/freeimage/CONTROL @@ -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 diff --git a/ports/freeimage/FreeImageConfig-dynamic.h b/ports/freeimage/FreeImageConfig-dynamic.h new file mode 100644 index 0000000000..d87b65b4c5 --- /dev/null +++ b/ports/freeimage/FreeImageConfig-dynamic.h @@ -0,0 +1,5 @@ +#ifndef FREEIMAGE_CONFIG_H +#define FREEIMAGE_CONFIG_H + + +#endif diff --git a/ports/freeimage/FreeImageConfig-static.h b/ports/freeimage/FreeImageConfig-static.h new file mode 100644 index 0000000000..a7e6a32244 --- /dev/null +++ b/ports/freeimage/FreeImageConfig-static.h @@ -0,0 +1,8 @@ +#ifndef FREEIMAGE_CONFIG_H +#define FREEIMAGE_CONFIG_H + +#ifndef +#define FREEIMAGE_LIB +#endif + +#endif diff --git a/ports/freeimage/cmake/FindJXR.cmake b/ports/freeimage/cmake/FindJXR.cmake new file mode 100644 index 0000000000..7e4a5d45e8 --- /dev/null +++ b/ports/freeimage/cmake/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 ${JPEGXR_LIBRARY} ${JXRGLUE_LIBRARY}) +mark_as_advanced(JXR_LIBRARIES) + +include(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(JXR DEFAULT_MSG JXR_INCLUDE_DIRS JXR_LIBRARIES) diff --git a/ports/freeimage/cmake/FindWEBP.cmake b/ports/freeimage/cmake/FindWEBP.cmake new file mode 100644 index 0000000000..9b8516e156 --- /dev/null +++ b/ports/freeimage/cmake/FindWEBP.cmake @@ -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) diff --git a/ports/freeimage/disable-plugins-depending-on-internal-third-party-libraries.patch b/ports/freeimage/disable-plugins-depending-on-internal-third-party-libraries.patch new file mode 100644 index 0000000000..28d0e3a42b --- /dev/null +++ b/ports/freeimage/disable-plugins-depending-on-internal-third-party-libraries.patch @@ -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); diff --git a/ports/freeimage/portfile.cmake b/ports/freeimage/portfile.cmake new file mode 100644 index 0000000000..4a212ba4bc --- /dev/null +++ b/ports/freeimage/portfile.cmake @@ -0,0 +1,54 @@ +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) diff --git a/ports/freeimage/use-external-jpeg.patch b/ports/freeimage/use-external-jpeg.patch new file mode 100644 index 0000000000..2df2c9d2d4 --- /dev/null +++ b/ports/freeimage/use-external-jpeg.patch @@ -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 + +-#include "../LibJPEG/jinclude.h" +-#include "../LibJPEG/jpeglib.h" +-#include "../LibJPEG/jerror.h" ++#include ++#include ++#include + } + + #include "FreeImage.h" diff --git a/ports/freeimage/use-external-jxrlib.patch b/ports/freeimage/use-external-jxrlib.patch new file mode 100644 index 0000000000..d86a18e824 --- /dev/null +++ b/ports/freeimage/use-external-jxrlib.patch @@ -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 + + // ========================================================== + // Plugin Interface diff --git a/ports/freeimage/use-external-libtiff.patch b/ports/freeimage/use-external-libtiff.patch new file mode 100644 index 0000000000..f2ddd9ba63 --- /dev/null +++ b/ports/freeimage/use-external-libtiff.patch @@ -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 + #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 + + #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; + } diff --git a/ports/freeimage/use-external-openjpeg.patch b/ports/freeimage/use-external-openjpeg.patch new file mode 100644 index 0000000000..fa4f8e7b6e --- /dev/null +++ b/ports/freeimage/use-external-openjpeg.patch @@ -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 + #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 + #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 + #include "J2KHelper.h" + + // ========================================================== diff --git a/ports/freeimage/use-external-png-zlib.patch b/ports/freeimage/use-external-png-zlib.patch new file mode 100644 index 0000000000..fc7837e434 --- /dev/null +++ b/ports/freeimage/use-external-png-zlib.patch @@ -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 ++#include + + // ---------------------------------------------------------- + +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 + #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); diff --git a/ports/freeimage/use-external-rawlib.patch b/ports/freeimage/use-external-rawlib.patch new file mode 100644 index 0000000000..6afa0bffa2 --- /dev/null +++ b/ports/freeimage/use-external-rawlib.patch @@ -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 + + #include "FreeImage.h" + #include "Utilities.h" diff --git a/ports/freeimage/use-external-webp.patch b/ports/freeimage/use-external-webp.patch new file mode 100644 index 0000000000..ae63284311 --- /dev/null +++ b/ports/freeimage/use-external-webp.patch @@ -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 ++#include ++#include + + // ========================================================== + // Plugin Interface diff --git a/ports/freeimage/use-freeimage-config-include.patch b/ports/freeimage/use-freeimage-config-include.patch new file mode 100644 index 0000000000..4927aff5be --- /dev/null +++ b/ports/freeimage/use-freeimage-config-include.patch @@ -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 // needed for UNICODE functions From 394d3fd1574085b67ede4f486c845fa66a7a2a16 Mon Sep 17 00:00:00 2001 From: Silvio Traversaro Date: Tue, 29 Nov 2016 09:52:06 +0100 Subject: [PATCH 10/26] [freeimage] Add vcpkg_copy_pdbs() --- ports/freeimage/portfile.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ports/freeimage/portfile.cmake b/ports/freeimage/portfile.cmake index 4a212ba4bc..3e403f9eaf 100644 --- a/ports/freeimage/portfile.cmake +++ b/ports/freeimage/portfile.cmake @@ -52,3 +52,5 @@ 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() From 537bded431bb850344ba0790630ddbc5fd9ef2ec Mon Sep 17 00:00:00 2001 From: Mattias Cibien Date: Tue, 29 Nov 2016 10:42:02 +0100 Subject: [PATCH 11/26] Initial anax port --- ports/anax/CONTROL | 3 +++ ports/anax/portfile.cmake | 41 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 ports/anax/CONTROL create mode 100644 ports/anax/portfile.cmake diff --git a/ports/anax/CONTROL b/ports/anax/CONTROL new file mode 100644 index 0000000000..f6d285b4c9 --- /dev/null +++ b/ports/anax/CONTROL @@ -0,0 +1,3 @@ +Source: anax +Version: 2.1.0 +Description: An open source C++ entity system. diff --git a/ports/anax/portfile.cmake b/ports/anax/portfile.cmake new file mode 100644 index 0000000000..845643992e --- /dev/null +++ b/ports/anax/portfile.cmake @@ -0,0 +1,41 @@ +# Common Ambient Variables: +# VCPKG_ROOT_DIR = +# 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}) + +if (VCPKG_CRT_LINKAGE STREQUAL dynamic) + SET(SHARED_FLAG ON) +else() + SET(SHARED_FLAG OFF) +endif() + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + OPTIONS + -DBUILD_SHARED_LIBS=${SHARED_FLAG} +) + +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) From c6fe22929cc5c152677efede93b9f42778afa7b6 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Tue, 29 Nov 2016 02:33:07 -0800 Subject: [PATCH 12/26] [anax] BUILD_SHARED_LIBS is automatically set by vcpkg --- ports/anax/portfile.cmake | 8 -------- 1 file changed, 8 deletions(-) diff --git a/ports/anax/portfile.cmake b/ports/anax/portfile.cmake index 845643992e..ae22332cfd 100644 --- a/ports/anax/portfile.cmake +++ b/ports/anax/portfile.cmake @@ -20,16 +20,8 @@ vcpkg_download_distfile(ARCHIVE ) 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 - -DBUILD_SHARED_LIBS=${SHARED_FLAG} ) vcpkg_install_cmake() From fa32afc372d42ebc120f4c20ab1e270eeea08ab8 Mon Sep 17 00:00:00 2001 From: Mattias Cibien Date: Tue, 29 Nov 2016 12:42:34 +0100 Subject: [PATCH 13/26] Add entityx --- ports/entityx/CONTROL | 3 +++ ports/entityx/portfile.cmake | 44 ++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 ports/entityx/CONTROL create mode 100644 ports/entityx/portfile.cmake diff --git a/ports/entityx/CONTROL b/ports/entityx/CONTROL new file mode 100644 index 0000000000..f6dab245a0 --- /dev/null +++ b/ports/entityx/CONTROL @@ -0,0 +1,3 @@ +Source: entityx +Version: +Description: diff --git a/ports/entityx/portfile.cmake b/ports/entityx/portfile.cmake new file mode 100644 index 0000000000..d7bcdbe1b7 --- /dev/null +++ b/ports/entityx/portfile.cmake @@ -0,0 +1,44 @@ +# Common Ambient Variables: +# VCPKG_ROOT_DIR = +# 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) From e55e05dcb31820b8b578c7ff87d94cca30916a14 Mon Sep 17 00:00:00 2001 From: Mattias Cibien Date: Tue, 29 Nov 2016 12:46:57 +0100 Subject: [PATCH 14/26] Added missing control info --- ports/entityx/CONTROL | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/entityx/CONTROL b/ports/entityx/CONTROL index f6dab245a0..f522fe702b 100644 --- a/ports/entityx/CONTROL +++ b/ports/entityx/CONTROL @@ -1,3 +1,3 @@ Source: entityx -Version: -Description: +Version: 1.2.0 +Description: EntityX - A fast, type-safe C++ Entity-Component system. From 519c54250792cbd2a321f6b4292aeb4d4e3c1a2b Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Tue, 29 Nov 2016 11:33:32 -0800 Subject: [PATCH 15/26] Don't return by const value --- toolsrc/include/BuildInfo.h | 4 ++-- toolsrc/src/BuildInfo.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/toolsrc/include/BuildInfo.h b/toolsrc/include/BuildInfo.h index 7f64c51cc5..ccf40abbf5 100644 --- a/toolsrc/include/BuildInfo.h +++ b/toolsrc/include/BuildInfo.h @@ -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) diff --git a/toolsrc/src/BuildInfo.cpp b/toolsrc/src/BuildInfo.cpp index 8d46a0dba7..44c7fdcf03 100644 --- a/toolsrc/src/BuildInfo.cpp +++ b/toolsrc/src/BuildInfo.cpp @@ -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; From 5e75a3dd0e891e6100fa9137fbf9d05ab750f24a Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Tue, 29 Nov 2016 13:06:27 -0800 Subject: [PATCH 16/26] Extract local variable --- toolsrc/src/vcpkg.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/toolsrc/src/vcpkg.cpp b/toolsrc/src/vcpkg.cpp index db85eee8fd..acebd57b97 100644 --- a/toolsrc/src/vcpkg.cpp +++ b/toolsrc/src/vcpkg.cpp @@ -157,8 +157,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; From b271355a5845ddfc235dd79c0e6e1389de3fb534 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Tue, 29 Nov 2016 13:06:42 -0800 Subject: [PATCH 17/26] Extract local variable --- toolsrc/src/post_build_lint.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/toolsrc/src/post_build_lint.cpp b/toolsrc/src/post_build_lint.cpp index 9ae91748eb..82a532f5f0 100644 --- a/toolsrc/src/post_build_lint.cpp +++ b/toolsrc/src/post_build_lint.cpp @@ -613,10 +613,11 @@ namespace vcpkg error_count += check_for_copyright_file(spec, paths); error_count += check_for_exes(spec, paths); - 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 package_dir = paths.package_dir(spec); + 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 debug_libs = recursive_find_files_with_extension_in_dir(debug_lib_dir, ".lib"); const std::vector release_libs = recursive_find_files_with_extension_in_dir(release_lib_dir, ".lib"); From be71c433cc9902813e5a64be81fd058238c64fef Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Tue, 29 Nov 2016 13:07:21 -0800 Subject: [PATCH 18/26] [post-build-checks] Add check for files in package dir and debug dir --- toolsrc/src/post_build_lint.cpp | 35 +++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/toolsrc/src/post_build_lint.cpp b/toolsrc/src/post_build_lint.cpp index 82a532f5f0..c3a6db1847 100644 --- a/toolsrc/src/post_build_lint.cpp +++ b/toolsrc/src/post_build_lint.cpp @@ -32,6 +32,12 @@ namespace vcpkg System::println(""); } + template + void non_recursive_find_matching_paths_in_dir(const fs::path& dir, const Pred predicate, std::vector* output) + { + std::copy_if(fs::directory_iterator(dir), fs::directory_iterator(), std::back_inserter(*output), predicate); + } + template void recursive_find_matching_paths_in_dir(const fs::path& dir, const Pred predicate, std::vector* output) { @@ -591,6 +597,34 @@ 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 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(right); @@ -680,6 +714,7 @@ namespace vcpkg #endif error_count += check_no_empty_folders(paths.packages / spec.dir()); + error_count += check_no_files_in_package_dir_and_debug_dir(package_dir); if (error_count != 0) { From 7a2e6f614d9366fb63f0abb1f02a3e65dbd64ddb Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Tue, 29 Nov 2016 13:14:20 -0800 Subject: [PATCH 19/26] Use extracted local variable --- toolsrc/src/post_build_lint.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/toolsrc/src/post_build_lint.cpp b/toolsrc/src/post_build_lint.cpp index c3a6db1847..866050edf5 100644 --- a/toolsrc/src/post_build_lint.cpp +++ b/toolsrc/src/post_build_lint.cpp @@ -690,7 +690,7 @@ namespace vcpkg case LinkageType::STATIC: { std::vector 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); @@ -709,11 +709,11 @@ 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) From 7c08cf4347b6d8a91420439bae87ee0fb000912f Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Tue, 29 Nov 2016 13:14:56 -0800 Subject: [PATCH 20/26] [glbinding] Remove files from package dir and debug dir --- ports/glbinding/CONTROL | 2 +- ports/glbinding/portfile.cmake | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ports/glbinding/CONTROL b/ports/glbinding/CONTROL index bc04bf5f6f..5e7ec029c0 100644 --- a/ports/glbinding/CONTROL +++ b/ports/glbinding/CONTROL @@ -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 diff --git a/ports/glbinding/portfile.cmake b/ports/glbinding/portfile.cmake index cf578c0a5d..6da7d4858d 100644 --- a/ports/glbinding/portfile.cmake +++ b/ports/glbinding/portfile.cmake @@ -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) From 52866d79b01fb81e97cdbf22e46a13264c1662e5 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Tue, 29 Nov 2016 13:19:29 -0800 Subject: [PATCH 21/26] [globjects] Remove files from package dir and debug dir --- ports/globjects/portfile.cmake | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ports/globjects/portfile.cmake b/ports/globjects/portfile.cmake index 6102dfa8ab..e46c345098 100644 --- a/ports/globjects/portfile.cmake +++ b/ports/globjects/portfile.cmake @@ -44,6 +44,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/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) From daa47668d00d1534a913e8f81ac26c349fe5d2f9 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Tue, 29 Nov 2016 15:32:44 -0800 Subject: [PATCH 22/26] [post-build-checks] Refactor - pass around package_dir --- toolsrc/src/post_build_lint.cpp | 78 ++++++++++++++++----------------- 1 file changed, 38 insertions(+), 40 deletions(-) diff --git a/toolsrc/src/post_build_lint.cpp b/toolsrc/src/post_build_lint.cpp index 866050edf5..d358cca45f 100644 --- a/toolsrc/src/post_build_lint.cpp +++ b/toolsrc/src/post_build_lint.cpp @@ -68,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."); @@ -80,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 files_found; recursive_find_matching_paths_in_dir(debug_include_dir, [&](const fs::path& current) @@ -101,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)) { @@ -114,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"); @@ -126,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 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()) { @@ -145,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"); @@ -157,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 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()) { @@ -175,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; @@ -216,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 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()) { @@ -452,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)) { @@ -607,7 +605,6 @@ namespace vcpkg 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) { @@ -635,19 +632,20 @@ 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 package_dir = paths.package_dir(spec); + 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"; @@ -693,7 +691,7 @@ namespace vcpkg 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); From c0564b6111a14f54e94ad64892ab40f9adb4a1b6 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Tue, 29 Nov 2016 16:45:21 -0800 Subject: [PATCH 23/26] Remove unused function --- toolsrc/src/vcpkg.cpp | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/toolsrc/src/vcpkg.cpp b/toolsrc/src/vcpkg.cpp index acebd57b97..b1fe769825 100644 --- a/toolsrc/src/vcpkg.cpp +++ b/toolsrc/src/vcpkg.cpp @@ -18,19 +18,6 @@ using namespace vcpkg; bool vcpkg::g_do_dry_run = false; -namespace -{ - template - 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) From ab147b838b79692b838e6d3cf794a8caef3e5629 Mon Sep 17 00:00:00 2001 From: Robert Schumacher Date: Tue, 29 Nov 2016 17:12:45 -0800 Subject: [PATCH 24/26] [vcpkg] Remove link-time choice of thread-safe vs non-thread-safe so that dependent libraries make the right choice. --- ports/libraw/CONTROL | 2 +- ports/libraw/portfile.cmake | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ports/libraw/CONTROL b/ports/libraw/CONTROL index d627cdd160..dd5c7a5c36 100644 --- a/ports/libraw/CONTROL +++ b/ports/libraw/CONTROL @@ -1,4 +1,4 @@ Source: libraw -Version: 0.17.2 +Version: 0.17.2-1 Build-Depends: libjpeg-turbo Description: raw image decoder library diff --git a/ports/libraw/portfile.cmake b/ports/libraw/portfile.cmake index 69c168a074..3ff69a6e08 100644 --- a/ports/libraw/portfile.cmake +++ b/ports/libraw/portfile.cmake @@ -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,6 +42,8 @@ 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() # Handle copyright From af2b0cab4276ab7581595d968dd2470b0cb46fd5 Mon Sep 17 00:00:00 2001 From: Robert Schumacher Date: Tue, 29 Nov 2016 17:48:32 -0800 Subject: [PATCH 25/26] [libraw] Rename Module to Config to increase flexibility of install locations --- ports/libraw/CONTROL | 2 +- ports/libraw/portfile.cmake | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ports/libraw/CONTROL b/ports/libraw/CONTROL index dd5c7a5c36..b10e10794d 100644 --- a/ports/libraw/CONTROL +++ b/ports/libraw/CONTROL @@ -1,4 +1,4 @@ Source: libraw -Version: 0.17.2-1 +Version: 0.17.2-2 Build-Depends: libjpeg-turbo Description: raw image decoder library diff --git a/ports/libraw/portfile.cmake b/ports/libraw/portfile.cmake index 3ff69a6e08..159251c280 100644 --- a/ports/libraw/portfile.cmake +++ b/ports/libraw/portfile.cmake @@ -46,6 +46,9 @@ 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) From b2ec171574b83abe2637a27087717136aaf004e2 Mon Sep 17 00:00:00 2001 From: Robert Schumacher Date: Tue, 29 Nov 2016 18:02:49 -0800 Subject: [PATCH 26/26] [freeimage] Always define FREEIMAGE_LIB in static mode. --- ports/freeimage/FreeImageConfig-static.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/ports/freeimage/FreeImageConfig-static.h b/ports/freeimage/FreeImageConfig-static.h index a7e6a32244..ed723490ee 100644 --- a/ports/freeimage/FreeImageConfig-static.h +++ b/ports/freeimage/FreeImageConfig-static.h @@ -1,8 +1,6 @@ #ifndef FREEIMAGE_CONFIG_H #define FREEIMAGE_CONFIG_H -#ifndef #define FREEIMAGE_LIB -#endif #endif