aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Christensen <philc@microsoft.com>2018-12-20 13:50:12 -0800
committerPhil Christensen <philc@microsoft.com>2018-12-20 13:50:12 -0800
commitea831f43024a06700a9d8e901c1cb87844a63d81 (patch)
treefd1a423c0f13fda818445d069a73453746d1d9f9
parent96b282341fd80763ef8533ba6619064ad3e8a60f (diff)
parentedec46528d897c584ab1d9454b36a58f7fece217 (diff)
downloadvcpkg-ea831f43024a06700a9d8e901c1cb87844a63d81.tar.gz
vcpkg-ea831f43024a06700a9d8e901c1cb87844a63d81.zip
Merge branch 'master' into dev/philc/4966
-rw-r--r--README.md7
-rw-r--r--docs/users/integration.md2
-rw-r--r--ports/alembic/CONTROL2
-rw-r--r--ports/alembic/portfile.cmake4
-rw-r--r--ports/antlr4/CONTROL2
-rw-r--r--ports/antlr4/Fix-building-in-Visual-Studio-2017.patch52
-rw-r--r--ports/antlr4/portfile.cmake41
-rw-r--r--ports/aubio/CMakeLists.txt1
-rw-r--r--ports/aubio/CONTROL2
-rw-r--r--ports/aubio/portfile.cmake4
-rw-r--r--ports/botan/CONTROL2
-rw-r--r--ports/botan/portfile.cmake6
-rw-r--r--ports/caf/CONTROL2
-rw-r--r--ports/caf/openssl-version-override.patch12
-rw-r--r--ports/caf/portfile.cmake11
-rw-r--r--ports/cairo/CMakeLists.txt3
-rw-r--r--ports/cairo/CONTROL2
-rw-r--r--ports/celero/CONTROL2
-rw-r--r--ports/celero/portfile.cmake4
-rw-r--r--ports/crc32c/0001_export_symbols.patch15
-rw-r--r--ports/crc32c/CONTROL2
-rw-r--r--ports/crc32c/portfile.cmake7
-rw-r--r--ports/docopt/CONTROL2
-rw-r--r--ports/docopt/portfile.cmake4
-rw-r--r--ports/ffmpeg/CONTROL2
-rw-r--r--ports/ffmpeg/portfile.cmake14
-rw-r--r--ports/geogram/CONTROL2
-rw-r--r--ports/geogram/fix-cmake-config-and-install.patch2
-rw-r--r--ports/geogram/portfile.cmake80
-rw-r--r--ports/glbinding/CONTROL2
-rw-r--r--ports/glbinding/portfile.cmake4
-rw-r--r--ports/google-cloud-cpp/CONTROL2
-rw-r--r--ports/google-cloud-cpp/portfile.cmake4
-rw-r--r--ports/graphqlparser/CONTROL2
-rw-r--r--ports/graphqlparser/portfile.cmake20
-rw-r--r--ports/graphqlparser/win-cmake.patch66
-rw-r--r--ports/grpc/CONTROL2
-rw-r--r--ports/grpc/fix-uwp.patch257
-rw-r--r--ports/grpc/portfile.cmake5
-rw-r--r--ports/harfbuzz/CONTROL2
-rw-r--r--ports/harfbuzz/glib-cmake.patch6
-rw-r--r--ports/imgui/CONTROL2
-rw-r--r--ports/imgui/portfile.cmake4
-rw-r--r--ports/itk/CONTROL6
-rw-r--r--ports/itk/portfile.cmake18
-rw-r--r--ports/libcopp/CONTROL3
-rw-r--r--ports/libcopp/portfile.cmake30
-rw-r--r--ports/libcopp/usage5
-rw-r--r--ports/libpng-apng/CONTROL2
-rw-r--r--ports/libpng-apng/portfile.cmake22
-rw-r--r--ports/libpng-apng/skip-install-symlink.patch22
-rw-r--r--ports/libpng-apng/use-abort-on-all-platforms.patch2
-rw-r--r--ports/libpng-apng/vcpkg-cmake-wrapper.cmake6
-rw-r--r--ports/libuv/CMakeLists.txt4
-rw-r--r--ports/libuv/CONTROL2
-rw-r--r--ports/libuv/portfile.cmake7
-rw-r--r--ports/libuv/unofficial-libuv-config.in.cmake7
-rw-r--r--ports/mpfr/CMakeLists.txt327
-rw-r--r--ports/mpfr/CONTROL2
-rw-r--r--ports/mpfr/gmp_printf.c6
-rw-r--r--ports/mpfr/portfile.cmake1
-rw-r--r--ports/nanodbc/0001_cmake.patch23
-rw-r--r--ports/nanodbc/0002_msvc14_codecvt.patch34
-rw-r--r--ports/nanodbc/0003_export_def.patch417
-rw-r--r--ports/nanodbc/0004_unicode.patch33
-rw-r--r--ports/nanodbc/CONTROL2
-rw-r--r--ports/nanodbc/portfile.cmake25
-rw-r--r--ports/opencv/0005-remove-custom-protobuf-find-package.patch7
-rw-r--r--ports/opencv/CONTROL2
-rw-r--r--ports/osgearth/CONTROL2
-rw-r--r--ports/osgearth/portfile.cmake4
-rw-r--r--ports/pango/CMakeLists.txt2
-rw-r--r--ports/pango/CONTROL2
-rw-r--r--ports/pangolin/CONTROL2
-rw-r--r--ports/pangolin/deprecated_constants.patch69
-rw-r--r--ports/pangolin/portfile.cmake1
-rw-r--r--ports/rapidstring/CONTROL3
-rw-r--r--ports/rapidstring/fix-cmake-install.patch34
-rw-r--r--ports/rapidstring/portfile.cmake27
-rw-r--r--ports/restinio/CONTROL2
-rw-r--r--ports/restinio/portfile.cmake4
-rw-r--r--ports/sfgui/CONTROL2
-rw-r--r--ports/sfgui/portfile.cmake7
-rw-r--r--ports/sfml/CONTROL2
-rw-r--r--ports/sfml/portfile.cmake4
-rw-r--r--ports/sqlite3/CONTROL2
-rw-r--r--ports/sqlite3/portfile.cmake4
-rw-r--r--ports/tiff/CONTROL2
-rw-r--r--ports/tiff/portfile.cmake1
-rw-r--r--ports/vtk/CONTROL2
-rw-r--r--ports/vtk/portfile.cmake20
-rw-r--r--ports/wt/0004-link-ssl.patch46
-rw-r--r--ports/wt/CONTROL2
-rw-r--r--ports/wt/portfile.cmake8
-rw-r--r--ports/zxing-cpp/CONTROL4
-rw-r--r--ports/zxing-cpp/portfile.cmake43
-rw-r--r--scripts/cmake/vcpkg_find_acquire_program.cmake3
-rw-r--r--scripts/toolchains/android.cmake13
-rw-r--r--scripts/vcpkg_completion.bash17
-rw-r--r--toolsrc/src/vcpkg/archives.cpp6
-rw-r--r--toolsrc/src/vcpkg/base/system.cpp2
-rw-r--r--toolsrc/src/vcpkg/commands.integrate.cpp52
-rw-r--r--toolsrc/src/vcpkg/tools.cpp483
103 files changed, 1195 insertions, 1366 deletions
diff --git a/README.md b/README.md
index 93262a1ca..e32ef7025 100644
--- a/README.md
+++ b/README.md
@@ -42,11 +42,12 @@ For more information, see our [using a package](docs/examples/installing-and-usi
Additional notes on macOS and Linux support can be found in the [official announcement](https://blogs.msdn.microsoft.com/vcblog/2018/04/24/announcing-a-single-c-library-manager-for-linux-macos-and-windows-vcpkg/).
## Tab-Completion / Auto-Completion
-`vcpkg` supports auto-completion of commands, package names, options etc. To enable tab-completion in Powershell, use
+`vcpkg` supports auto-completion of commands, package names, options etc in Powershell and bash. To enable tab-completion, use one of the following:
```
-.\vcpkg integrate powershell
+PS> .\vcpkg integrate powershell
+Linux:~/$ ./vcpkg integrate bash
```
-and restart Powershell.
+and restart your console.
## Examples
diff --git a/docs/users/integration.md b/docs/users/integration.md
index fbaea41d9..10f5574c1 100644
--- a/docs/users/integration.md
+++ b/docs/users/integration.md
@@ -50,7 +50,7 @@ The `CMAKE_TOOLCHAIN_FILE` setting simply must be set before the `project()` dir
```cmake
if(DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE)
- set(CMAKE_TOOLCHAIN_FILE "${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
+ set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
CACHE STRING "")
endif()
diff --git a/ports/alembic/CONTROL b/ports/alembic/CONTROL
index a2aefabec..59a6580ba 100644
--- a/ports/alembic/CONTROL
+++ b/ports/alembic/CONTROL
@@ -1,4 +1,4 @@
Source: alembic
-Version: 1.7.9
+Version: 1.7.10
Build-Depends: ilmbase, hdf5
Description: Alembic is an open framework for storing and sharing scene data that includes a C++ library, a file format, and client plugins and applications. http://alembic.io/
diff --git a/ports/alembic/portfile.cmake b/ports/alembic/portfile.cmake
index 295afa34a..7e2bc233f 100644
--- a/ports/alembic/portfile.cmake
+++ b/ports/alembic/portfile.cmake
@@ -8,8 +8,8 @@ endif()
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO alembic/alembic
- REF 1.7.9
- SHA512 8025c20525ffbd5bdc9dd5a33ad8238e49f063d244ab9d112e7d1ddb7ee7cf9b36ceb74cb45d658ce22d3033552c89bddf6b818cf466ea46aa1a70a41fdeddb2
+ REF 1.7.10
+ SHA512 e98ffaedb98dbc5c53fe9703d3063bb118d32c83c47e3af04c8fc96237034b02fe0fc2c628ca82bdd0e0ef17d9375f4f48e0022ce33380b9ad91970539611ced
HEAD_REF master
)
diff --git a/ports/antlr4/CONTROL b/ports/antlr4/CONTROL
index bf4df8d1c..900f2622e 100644
--- a/ports/antlr4/CONTROL
+++ b/ports/antlr4/CONTROL
@@ -1,3 +1,3 @@
Source: antlr4
-Version: 4.7
+Version: 4.7.1-2
Description: ANother Tool for Language Recognition \ No newline at end of file
diff --git a/ports/antlr4/Fix-building-in-Visual-Studio-2017.patch b/ports/antlr4/Fix-building-in-Visual-Studio-2017.patch
deleted file mode 100644
index 64e483599..000000000
--- a/ports/antlr4/Fix-building-in-Visual-Studio-2017.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-diff --git a/runtime/src/ANTLRInputStream.h b/runtime/src/ANTLRInputStream.h
-index 3d85bed..813451c 100644
---- a/runtime/src/ANTLRInputStream.h
-+++ b/runtime/src/ANTLRInputStream.h
-@@ -16,7 +16,7 @@ namespace antlr4 {
- protected:
- /// The data being scanned.
- // UTF-32
--#if defined(_MSC_VER) && _MSC_VER == 1900
-+#if defined(_MSC_VER) && _MSC_VER >= 1900
- i32string _data; // Custom type for VS 2015.
- #else
- std::u32string _data;
-diff --git a/runtime/src/UnbufferedCharStream.h b/runtime/src/UnbufferedCharStream.h
-index b489f18..295804c 100644
---- a/runtime/src/UnbufferedCharStream.h
-+++ b/runtime/src/UnbufferedCharStream.h
-@@ -52,7 +52,7 @@ namespace antlr4 {
- /// we keep adding to buffer. Otherwise, <seealso cref="#consume consume()"/> resets so
- /// we start filling at index 0 again.
- // UTF-32 encoded.
--#if defined(_MSC_VER) && _MSC_VER == 1900
-+#if defined(_MSC_VER) && _MSC_VER >= 1900
- i32string _data; // Custom type for VS 2015.
- #else
- std::u32string _data;
-diff --git a/runtime/src/antlr4-common.h b/runtime/src/antlr4-common.h
-index 197fd6d..8357b3e 100644
---- a/runtime/src/antlr4-common.h
-+++ b/runtime/src/antlr4-common.h
-@@ -52,7 +52,7 @@
- typedef __int32 ssize_t;
- #endif
-
-- #if _MSC_VER == 1900
-+ #if _MSC_VER >= 1900
- // VS 2015 has a known bug when using std::codecvt_utf8<char32_t>
- // so we have to temporarily use __int32 instead.
- // https://connect.microsoft.com/VisualStudio/feedback/details/1403302/unresolved-external-when-using-codecvt-utf8
-diff --git a/runtime/src/support/StringUtils.h b/runtime/src/support/StringUtils.h
-index cb751a7..be14bbb 100644
---- a/runtime/src/support/StringUtils.h
-+++ b/runtime/src/support/StringUtils.h
-@@ -10,7 +10,7 @@
- namespace antlrcpp {
- // For all conversions utf8 <-> utf32.
- // VS 2015 has a bug in std::codecvt_utf8<char32_t> (VS 2013 works fine).
--#if defined(_MSC_VER) && _MSC_VER == 1900
-+#if defined(_MSC_VER) && _MSC_VER >= 1900
- static std::wstring_convert<std::codecvt_utf8<__int32>, __int32> utfConverter;
- #else
- static std::wstring_convert<std::codecvt_utf8<char32_t>, char32_t> utfConverter;
diff --git a/ports/antlr4/portfile.cmake b/ports/antlr4/portfile.cmake
index 0d77208e0..3663a9347 100644
--- a/ports/antlr4/portfile.cmake
+++ b/ports/antlr4/portfile.cmake
@@ -4,28 +4,26 @@ endif()
include(vcpkg_common_functions)
-set(VERSION 4.7)
-set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/runtime)
+set(VERSION 4.7.1)
vcpkg_download_distfile(ARCHIVE
- URLS "http://www.antlr.org/download/antlr4-cpp-runtime-4.7-source.zip"
+ URLS "http://www.antlr.org/download/antlr4-cpp-runtime-4.7.1-source.zip"
FILENAME "antlr4-cpp-runtime-${VERSION}-source.zip"
- SHA512 a14fd3320537075a8d4c1cfa81d416bad6257d238608e2428f4930495072cce984c707126e3777ffd3849dd6b6cdf1bf43624bd6d318b1fa5dd6749a7304f808
+ SHA512 24d53278db56b199e6787242f22339f74e07d2cd3ed56f851ad905b110c2ba3cb001e1e2fcbc8624f0e93e00ba1fe1b23630dd1a736558c694655aeb1c3129da
)
# license not exist in antlr folder.
vcpkg_download_distfile(LICENSE
URLS https://raw.githubusercontent.com/antlr/antlr4/${VERSION}/LICENSE.txt
- FILENAME "antlr4-copyright"
- SHA512 c72ae3d5c9f3f07160405b5ca44f01116a9602d82291d6cd218fcc5ec6e8baf985e4baa2acf3d621079585385708bd171c96ef44dd808e60c40a48bc1f56c9ae
+ FILENAME "antlr4-copyright_${VERSION}"
+ SHA512 1e8414de5fdc211e3188a8ec3276c6b3c55235f5edaf48522045ae18fa79fd9049719cb8924d25145016f223ac9a178defada1eeb983ccff598a08b0c0f67a3b
)
-vcpkg_extract_source_archive(${ARCHIVE})
-
-vcpkg_apply_patches(
- SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src
- PATCHES ${CMAKE_CURRENT_LIST_DIR}/crt_mt.patch
- ${CMAKE_CURRENT_LIST_DIR}/Fix-building-in-Visual-Studio-2017.patch
+vcpkg_extract_source_archive_ex(
+ OUT_SOURCE_PATH SOURCE_PATH
+ ARCHIVE ${ARCHIVE}
+ NO_REMOVE_ONE_LEVEL
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/crt_mt.patch
)
if (VCPKG_LIBRARY_LINKAGE STREQUAL "static")
@@ -37,14 +35,14 @@ else()
endif()
vcpkg_build_msbuild(
- PROJECT_PATH ${SOURCE_PATH}/antlr4cpp-vs2015.vcxproj
+ PROJECT_PATH ${SOURCE_PATH}/runtime/antlr4cpp-vs2015.vcxproj
DEBUG_CONFIGURATION ${DEBUG_CONFIG}
RELEASE_CONFIGURATION ${RELEASE_CONFIG}
)
file (MAKE_DIRECTORY
${CURRENT_PACKAGES_DIR}/include)
-FILE(COPY ${SOURCE_PATH}/src/
+FILE(COPY ${SOURCE_PATH}/runtime/src/
DESTINATION ${CURRENT_PACKAGES_DIR}/include
FILES_MATCHING PATTERN "*.h")
@@ -52,9 +50,9 @@ file (MAKE_DIRECTORY
${CURRENT_PACKAGES_DIR}/lib
${CURRENT_PACKAGES_DIR}/debug/lib)
-file(COPY ${SOURCE_PATH}/bin/vs-2015/${TRIPLET_SYSTEM_ARCH}/${DEBUG_CONFIG}/antlr4-runtime.lib
+file(COPY ${SOURCE_PATH}/runtime/bin/vs-2015/${TRIPLET_SYSTEM_ARCH}/${DEBUG_CONFIG}/antlr4-runtime.lib
DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
-file(COPY ${SOURCE_PATH}/bin/vs-2015/${TRIPLET_SYSTEM_ARCH}/${RELEASE_CONFIG}/antlr4-runtime.lib
+file(COPY ${SOURCE_PATH}/runtime/bin/vs-2015/${TRIPLET_SYSTEM_ARCH}/${RELEASE_CONFIG}/antlr4-runtime.lib
DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
if (VCPKG_LIBRARY_LINKAGE STREQUAL "static")
@@ -68,15 +66,16 @@ else()
${CURRENT_PACKAGES_DIR}/debug/bin)
file(COPY
- ${SOURCE_PATH}/bin/vs-2015/${TRIPLET_SYSTEM_ARCH}/${DEBUG_CONFIG}/antlr4-runtime.dll
- ${SOURCE_PATH}/bin/vs-2015/${TRIPLET_SYSTEM_ARCH}/${DEBUG_CONFIG}/antlr4-runtime.pdb
+ ${SOURCE_PATH}/runtime/bin/vs-2015/${TRIPLET_SYSTEM_ARCH}/${DEBUG_CONFIG}/antlr4-runtime.dll
+ ${SOURCE_PATH}/runtime/bin/vs-2015/${TRIPLET_SYSTEM_ARCH}/${DEBUG_CONFIG}/antlr4-runtime.pdb
DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin)
file(COPY
- ${SOURCE_PATH}/bin/vs-2015/${TRIPLET_SYSTEM_ARCH}/${RELEASE_CONFIG}/antlr4-runtime.dll
- ${SOURCE_PATH}/bin/vs-2015/${TRIPLET_SYSTEM_ARCH}/${RELEASE_CONFIG}/antlr4-runtime.pdb
+ ${SOURCE_PATH}/runtime/bin/vs-2015/${TRIPLET_SYSTEM_ARCH}/${RELEASE_CONFIG}/antlr4-runtime.dll
+ ${SOURCE_PATH}/runtime/bin/vs-2015/${TRIPLET_SYSTEM_ARCH}/${RELEASE_CONFIG}/antlr4-runtime.pdb
DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
endif()
file(INSTALL ${LICENSE} DESTINATION ${CURRENT_PACKAGES_DIR}/share/antlr4 RENAME copyright)
-message(STATUS "Installing done") \ No newline at end of file
+message(STATUS "Installing done")
+# \ No newline at end of file
diff --git a/ports/aubio/CMakeLists.txt b/ports/aubio/CMakeLists.txt
index a405a48de..3e65666eb 100644
--- a/ports/aubio/CMakeLists.txt
+++ b/ports/aubio/CMakeLists.txt
@@ -62,6 +62,7 @@ target_link_libraries(aubio PUBLIC
${LIBLZMA_LIBRARIES}
ws2_32.lib
Secur32.lib
+ bcrypt.lib
)
if(BUILD_TOOLS)
diff --git a/ports/aubio/CONTROL b/ports/aubio/CONTROL
index 6f5daa30a..5c699e1dc 100644
--- a/ports/aubio/CONTROL
+++ b/ports/aubio/CONTROL
@@ -1,4 +1,4 @@
Source: aubio
-Version: 0.4.6-2
+Version: 0.4.8
Description: Aubio is a tool designed for the extraction of annotations from audio signals. Its features include segmenting a sound file before each of its attacks, performing pitch detection, tapping the beat and producing midi streams from live audio.
Build-Depends: ffmpeg, libsndfile, libogg, libflac, libvorbis, bzip2, liblzma
diff --git a/ports/aubio/portfile.cmake b/ports/aubio/portfile.cmake
index 02b898246..fec30f57c 100644
--- a/ports/aubio/portfile.cmake
+++ b/ports/aubio/portfile.cmake
@@ -3,8 +3,8 @@ set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/aubio-3c230fae309e9ea3298783368dd7
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO aubio/aubio
- REF 0.4.6
- SHA512 9bb787d81f39ab8e3440be9936552a712a24e009884818e13e80dde756ad3874055bcd931ca3af638122f6a0d0bc53e62e1abeedce3fd79af35fe9ddea6bc707
+ REF 0.4.8
+ SHA512 0422ec9ceb645dd5cdb1ca8b17f552edf9197dbf9c929ca75aacfb89f092c02db8b6d2b8aec567ddc1df5b310770de77cd941b45ed74700c3d3584924f39b576
HEAD_REF master
)
diff --git a/ports/botan/CONTROL b/ports/botan/CONTROL
index 5582c3a7a..3961c2ccb 100644
--- a/ports/botan/CONTROL
+++ b/ports/botan/CONTROL
@@ -1,3 +1,3 @@
Source: botan
-Version: 2.8.0
+Version: 2.9.0
Description: A cryptography library written in C++11
diff --git a/ports/botan/portfile.cmake b/ports/botan/portfile.cmake
index 200d00f9f..f405b8f45 100644
--- a/ports/botan/portfile.cmake
+++ b/ports/botan/portfile.cmake
@@ -1,12 +1,12 @@
include(vcpkg_common_functions)
-set(BOTAN_VERSION 2.8.0)
+set(BOTAN_VERSION 2.9.0)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO randombit/botan
- REF cb14e9ce95bcaae2ada7ffe96ef0cce6a2b38593
- SHA512 3d8fbf1c65e2b0259f225db46ffa4a7eb989a518b230574e94f82dc13afd7dc32cfe6a8a0127e7dd0dea30e06f3946db78db50e107937382eff8ed823e996dc3
+ REF 0129d3172ec419beb90a2b3487f6385a35da0742
+ SHA512 a8328df5ad2693a96935d1d2202ddd6678a5ba9c63a8159acbe56f1c884fa5faaa71339e8f56284cfd00574a9b4f91bdb1fb22c36c8e899d9b4cbe881f4867d3
HEAD_REF master
)
diff --git a/ports/caf/CONTROL b/ports/caf/CONTROL
index e9b8cd0bf..6f39010be 100644
--- a/ports/caf/CONTROL
+++ b/ports/caf/CONTROL
@@ -1,4 +1,4 @@
Source: caf
-Version: 0.15.7
+Version: 0.16.2
Build-Depends: openssl
Description: an open source C++11 actor model implementation featuring lightweight & fast actor implementations, pattern matching for messages, network transparent messaging, and more.
diff --git a/ports/caf/openssl-version-override.patch b/ports/caf/openssl-version-override.patch
index bccbd6ca4..5a0337134 100644
--- a/ports/caf/openssl-version-override.patch
+++ b/ports/caf/openssl-version-override.patch
@@ -1,14 +1,14 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index a7b75f7..794af1d 100644
+index 2d908e8..d270297 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -545,6 +545,9 @@ if(NOT CAF_NO_OPENSSL)
+@@ -495,6 +495,9 @@ if(NOT CAF_NO_OPENSSL)
message(STATUS
"Disable OpenSSL. Required >= 1.0.1 due to TLSv1.2 support.")
set(CAF_NO_OPENSSL yes)
+ elseif(CAF_OPENSSL_VERSION_OVERRIDE)
-+ include_directories(BEFORE ${OPENSSL_INCLUDE_DIR})
-+ add_optional_caf_lib(openssl)
++ include_directories(BEFORE ${OPENSSL_INCLUDE_DIR})
++ add_optional_caf_lib(openssl)
else()
- # Check if openssl headers and library versions match
- set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES})
+ if(NOT CMAKE_CROSSCOMPILING)
+ # Check if openssl headers and library versions match
diff --git a/ports/caf/portfile.cmake b/ports/caf/portfile.cmake
index aecd84116..ae5e24c1b 100644
--- a/ports/caf/portfile.cmake
+++ b/ports/caf/portfile.cmake
@@ -8,14 +8,11 @@ endif()
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO actor-framework/actor-framework
- REF 0.15.7
- SHA512 ff0fa205ad71677b84fa09a2e6ce6bb6d1bc9b790bbbc3ac51505467402ff61a218528004212efa2063c798cc512972d318a2c9423067ee51cef719de2b6b186
+ REF 2cc4377715afc3d3c35848f9d59b9e6876afd875
+ SHA512 7e7962bf5a30122bde8be63f6de0058f865bd890e2d10f4d90f4885b7953467fb6532f69c1a77a35802de7c531f6aac192a2993b53a8dc0b05f503c3f4083a31
HEAD_REF master
-)
-
-vcpkg_apply_patches(
- SOURCE_PATH ${SOURCE_PATH}
- PATCHES ${CMAKE_CURRENT_LIST_DIR}/openssl-version-override.patch
+ PATCHES
+ openssl-version-override.patch
)
vcpkg_configure_cmake(
diff --git a/ports/cairo/CMakeLists.txt b/ports/cairo/CMakeLists.txt
index 137dba7f3..9fc476539 100644
--- a/ports/cairo/CMakeLists.txt
+++ b/ports/cairo/CMakeLists.txt
@@ -160,6 +160,7 @@ endif()
set(CMAKE_DEBUG_POSTFIX "d")
+find_package(Threads REQUIRED)
find_package(ZLIB REQUIRED)
find_package(PNG REQUIRED)
find_package(Freetype REQUIRED)
@@ -176,7 +177,7 @@ add_definitions(
-DHAVE_FT_GET_X11_FONT_FORMAT=1)
# additional features for macOS
-if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+if((CMAKE_SYSTEM_NAME STREQUAL "Darwin") OR (CMAKE_SYSTEM_NAME STREQUAL "Linux"))
add_definitions(
-DHAVE_INTTYPES_H=1
-DHAVE_STDINT_H=1
diff --git a/ports/cairo/CONTROL b/ports/cairo/CONTROL
index 2f182e84b..365fe38e7 100644
--- a/ports/cairo/CONTROL
+++ b/ports/cairo/CONTROL
@@ -1,4 +1,4 @@
Source: cairo
-Version: 1.15.8-3
+Version: 1.15.8-4
Description: Cairo is a 2D graphics library with support for multiple output devices. Currently supported output targets include the X Window System (via both Xlib and XCB), Quartz, Win32, image buffers, PostScript, PDF, and SVG file output. Experimental backends include OpenGL, BeOS, OS/2, and DirectFB.
Build-Depends: zlib, libpng, pixman, glib, freetype, fontconfig
diff --git a/ports/celero/CONTROL b/ports/celero/CONTROL
index 2afd57484..aa90dad66 100644
--- a/ports/celero/CONTROL
+++ b/ports/celero/CONTROL
@@ -1,3 +1,3 @@
Source: celero
-Version: 2.4.0
+Version: 2.4.0-1
Description: Celero is a modern cross-platform (Windows, Linux, MacOS) Microbenchmarking library for C++.
diff --git a/ports/celero/portfile.cmake b/ports/celero/portfile.cmake
index f9288fb8e..61dbec10e 100644
--- a/ports/celero/portfile.cmake
+++ b/ports/celero/portfile.cmake
@@ -3,8 +3,8 @@ include(vcpkg_common_functions)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO DigitalInBlue/Celero
- REF v2.4.0
- SHA512 4ba9f26bcda85bea00de27a6e8166f874f2c3852f74c54c089373caf71e1c066ac771fda73799d84c4c7a20986a71fd7a3b101b7b8972b9797ab3e8ed7918c30
+ REF 9f41c21e35b04d7d65dcb0aff4c962f6e5f2cbc3
+ SHA512 62a4803e61cf9e876c09cc68be07d4bfa31f291d3ced23e092347bf43b48086b3ba7862fc454082f42263d9ec0c260e8ba58da5c0c461ebff9c871209784e2a7
HEAD_REF master
)
diff --git a/ports/crc32c/0001_export_symbols.patch b/ports/crc32c/0001_export_symbols.patch
new file mode 100644
index 000000000..691e8603f
--- /dev/null
+++ b/ports/crc32c/0001_export_symbols.patch
@@ -0,0 +1,15 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 80b7d17..6ab78e2 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -15,6 +15,10 @@ set(CMAKE_CXX_STANDARD 11)
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
+ set(CMAKE_CXX_EXTENSIONS OFF)
+
++# When compiling a Windows DLL export all symbols, just like Unix shared
++# objects do.
++set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
++
+ # https://github.com/izenecloud/cmake/blob/master/SetCompilerWarningAll.cmake
+ if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
+ # Use the highest warning level for Visual Studio.
diff --git a/ports/crc32c/CONTROL b/ports/crc32c/CONTROL
index 20786bad2..ada730a7d 100644
--- a/ports/crc32c/CONTROL
+++ b/ports/crc32c/CONTROL
@@ -1,3 +1,3 @@
Source: crc32c
-Version: 1.0.5-1
+Version: 1.0.6-1
Description: CRC32C implementation with support for CPU-specific acceleration instructions.
diff --git a/ports/crc32c/portfile.cmake b/ports/crc32c/portfile.cmake
index a60f37671..85883c7e2 100644
--- a/ports/crc32c/portfile.cmake
+++ b/ports/crc32c/portfile.cmake
@@ -1,13 +1,12 @@
include(vcpkg_common_functions)
-vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
-
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO google/crc32c
- REF 12a65bfb328fefae5c05879132676f702a3f68e8
- SHA512 610b7c54b0247edd2d37ec18db68c1f8a55b60b2fd3ddcede41e6321eb45d040f513cece493cbdc67e881065a643c4972126864811ff08b24aa7e82642e54f56
+ REF 1.0.6
+ SHA512 c30f6510d6348f15dcdddc06e375f21a69681cd615483d67628b32de747e5e98200fa49faf7e3fc30a1302991fd1f9c9a706c9eb4e13c9c6c09e74066474ea7b
HEAD_REF master
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/0001_export_symbols.patch
)
vcpkg_configure_cmake(
diff --git a/ports/docopt/CONTROL b/ports/docopt/CONTROL
index 0fc6d09c8..b6599438c 100644
--- a/ports/docopt/CONTROL
+++ b/ports/docopt/CONTROL
@@ -1,3 +1,3 @@
Source: docopt
-Version: 2018-04-16-2
+Version: 2018-11-01
Description: Command line arguments parser that will make you smile (C++11 port).
diff --git a/ports/docopt/portfile.cmake b/ports/docopt/portfile.cmake
index 5076bf742..ec3a764d6 100644
--- a/ports/docopt/portfile.cmake
+++ b/ports/docopt/portfile.cmake
@@ -3,8 +3,8 @@ include(vcpkg_common_functions)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO docopt/docopt.cpp
- REF 4f491249e6def236937dbfac7602852e7d99aff8
- SHA512 d3a61f8d8a8c11723064f3405f03eb838a2ac9aa574f86771b1db89a2dd81996b639215fe5d4465343b893bf71502da178c7af8d883c112c1e45f43c17d473b7
+ REF 7476f8e56b4650aaeafb4e1cda2e5d8f01fddd97
+ SHA512 6765e8a3a834ad75bd87effee5ac7e174482039d26015346b95d7d64e4e0097cc3f1f2e6fd9e3e5970bf4c5719095c0a3e5edfac18217913dc88fbe569d37ae8
HEAD_REF master
PATCHES
001-fix-unresolved-symbol.patch
diff --git a/ports/ffmpeg/CONTROL b/ports/ffmpeg/CONTROL
index 7688f67f9..35b3e257e 100644
--- a/ports/ffmpeg/CONTROL
+++ b/ports/ffmpeg/CONTROL
@@ -1,5 +1,5 @@
Source: ffmpeg
-Version: 3.3.3-5
+Version: 4.1
Description: a library to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created.
FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created. It supports the most obscure ancient formats up to the cutting edge. No matter if they were designed by some standards committee, the community or a corporation. It is also highly portable: FFmpeg compiles, runs, and passes our testing infrastructure FATE across Linux, Mac OS X, Microsoft Windows, the BSDs, Solaris, etc. under a wide variety of build environments, machine architectures, and configurations.
diff --git a/ports/ffmpeg/portfile.cmake b/ports/ffmpeg/portfile.cmake
index 994e057b3..f8c0c9f38 100644
--- a/ports/ffmpeg/portfile.cmake
+++ b/ports/ffmpeg/portfile.cmake
@@ -1,9 +1,9 @@
include(vcpkg_common_functions)
-set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/ffmpeg-3.3.3)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/ffmpeg-4.1)
vcpkg_download_distfile(ARCHIVE
- URLS "http://ffmpeg.org/releases/ffmpeg-3.3.3.tar.bz2"
- FILENAME "ffmpeg-3.3.3.tar.bz2"
- SHA512 1cc63bf73356f4e618c0d3572a216bdf5689f10deff56b4262f6d740b0bee5a4b3eac234f45fca3d4d2da77903a507b4fba725b76d2d2070f31b6dae9e7a2dab
+ URLS "http://ffmpeg.org/releases/ffmpeg-4.1.tar.bz2"
+ FILENAME "ffmpeg-4.1.tar.bz2"
+ SHA512 ccf6d07268dc47e08ca619eb182a003face2a8ee73ec1a28157330dd7de1df88939def1fc1c7e6b6ac7b59752cdad84657d589b2fafb73e14e5ef03fb6e33417
)
if (${SOURCE_PATH} MATCHES " ")
@@ -59,12 +59,6 @@ else()
set(OPTIONS "${OPTIONS} --disable-ffplay")
endif()
-if("ffserver" IN_LIST FEATURES)
- set(OPTIONS "${OPTIONS} --enable-ffserver")
-else()
- set(OPTIONS "${OPTIONS} --disable-ffserver")
-endif()
-
if("ffprobe" IN_LIST FEATURES)
set(OPTIONS "${OPTIONS} --enable-ffprobe")
else()
diff --git a/ports/geogram/CONTROL b/ports/geogram/CONTROL
index 687174914..7b19ca9cf 100644
--- a/ports/geogram/CONTROL
+++ b/ports/geogram/CONTROL
@@ -1,5 +1,5 @@
Source: geogram
-Version: 1.6.4
+Version: 1.6.9-2
Description: Geogram is a programming library of geometric algorithms.
Build-Depends: openblas, clapack
diff --git a/ports/geogram/fix-cmake-config-and-install.patch b/ports/geogram/fix-cmake-config-and-install.patch
index f5d933586..2c7790923 100644
--- a/ports/geogram/fix-cmake-config-and-install.patch
+++ b/ports/geogram/fix-cmake-config-and-install.patch
@@ -3,7 +3,7 @@ index 17dc02e..e489d75 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -42,7 +42,7 @@ set(VORPALINE_VERSION_MINOR 6)
- set(VORPALINE_VERSION_PATCH 4)
+ set(VORPALINE_VERSION_PATCH 9)
set(VORPALINE_VERSION ${VORPALINE_VERSION_MAJOR}.${VORPALINE_VERSION_MINOR}.${VORPALINE_VERSION_PATCH})
-set(VORPALINE_INCLUDE_SUBPATH geogram${VORPALINE_VERSION_MAJOR})
diff --git a/ports/geogram/portfile.cmake b/ports/geogram/portfile.cmake
index 17060723f..46709f6c3 100644
--- a/ports/geogram/portfile.cmake
+++ b/ports/geogram/portfile.cmake
@@ -1,64 +1,48 @@
-# Common Ambient Variables:
-# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
-# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
-# CURRENT_PORT_DIR = ${VCPKG_ROOT_DIR}\ports\${PORT}
-# PORT = current port name (zlib, etc)
-# TARGET_TRIPLET = current triplet (x86-windows, x64-windows-static, etc)
-# VCPKG_CRT_LINKAGE = C runtime linkage type (static, dynamic)
-# VCPKG_LIBRARY_LINKAGE = target library linkage type (static, dynamic)
-# VCPKG_ROOT_DIR = <C:\path\to\current\vcpkg>
-# VCPKG_TARGET_ARCHITECTURE = target architecture (x64, x86, arm)
-#
-
include(vcpkg_common_functions)
-set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/geogram_1.6.4)
+set(GEOGRAM_VERSION 1.6.9)
+
vcpkg_download_distfile(ARCHIVE
- URLS "https://gforge.inria.fr/frs/download.php/file/37525/geogram_1.6.4.tar.gz"
- FILENAME "geogram_1.6.4.tar.gz"
- SHA512 a89b824cc7c055b7d0a5882e2f1922f09729f6eed5ed656136e8375e9b414e286fdbc5372fdb69b1ea5ce340dc81231db0228974b997be805043227de3c341b8
+ URLS "https://gforge.inria.fr/frs/download.php/file/37779/geogram_${GEOGRAM_VERSION}.tar.gz"
+ FILENAME "geogram_${GEOGRAM_VERSION}.tar.gz"
+ SHA512 1b5c7540bef734c1908f213f26780aba63b4911a8022d5eb3f7c90eabe2cb69efd1f298b30cdc8e2c636a5b37c8c25832dd4aad0b7c2ff5f0a5b5caa17970136
)
-vcpkg_extract_source_archive(${ARCHIVE})
-file(COPY ${CURRENT_PORT_DIR}/Config.cmake.in DESTINATION ${SOURCE_PATH}/cmake)
-vcpkg_apply_patches(
- SOURCE_PATH ${SOURCE_PATH}
- PATCHES ${CMAKE_CURRENT_LIST_DIR}/fix-cmake-config-and-install.patch
+
+vcpkg_extract_source_archive_ex(
+ OUT_SOURCE_PATH SOURCE_PATH
+ ARCHIVE ${ARCHIVE}
+ REF ${GEOGRAM_VERSION}
+ PATCHES fix-cmake-config-and-install.patch
)
+file(COPY ${CURRENT_PORT_DIR}/Config.cmake.in DESTINATION ${SOURCE_PATH}/cmake)
+
set(GEOGRAM_WITH_GRAPHICS OFF)
if("graphics" IN_LIST FEATURES)
set(GEOGRAM_WITH_GRAPHICS ON)
endif()
-if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
- vcpkg_configure_cmake(
- SOURCE_PATH ${SOURCE_PATH}
- # PREFER_NINJA # Disable this option if project cannot be built with Ninja
- OPTIONS
- -DVORPALINE_BUILD_DYNAMIC=FALSE
- -DGEOGRAM_WITH_GRAPHICS=${GEOGRAM_WITH_GRAPHICS}
- -DGEOGRAM_LIB_ONLY=ON
- -DGEOGRAM_USE_SYSTEM_GLFW3=ON
- -DVORPALINE_PLATFORM=Win-vs-generic
- -DGEOGRAM_WITH_VORPALINE=OFF
- # OPTIONS_RELEASE -DOPTIMIZE=1
- # OPTIONS_DEBUG -DDEBUGGABLE=1
- )
+if (VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ set(VORPALINE_BUILD_DYNAMIC FALSE)
+ set(VORPALINE_PLATFORM Win-vs-generic)
else()
- vcpkg_configure_cmake(
- SOURCE_PATH ${SOURCE_PATH}
- # PREFER_NINJA # Disable this option if project cannot be built with Ninja
- OPTIONS
- -DVORPALINE_BUILD_DYNAMIC=TRUE
- -DGEOGRAM_WITH_GRAPHICS=${GEOGRAM_WITH_GRAPHICS}
- -DGEOGRAM_LIB_ONLY=ON
- -DGEOGRAM_USE_SYSTEM_GLFW3=ON
- -DVORPALINE_PLATFORM=Win-vs-dynamic-generic
- -DGEOGRAM_WITH_VORPALINE=OFF
- # OPTIONS_RELEASE -DOPTIMIZE=1
- # OPTIONS_DEBUG -DDEBUGGABLE=1
- )
+ set(VORPALINE_BUILD_DYNAMIC TRUE)
+ set(VORPALINE_PLATFORM Win-vs-dynamic-generic)
endif()
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ # Geogram cannot be built with ninja because it embeds $(Configuration) in some of the generated paths. These require MSBuild in order to be evaluated.
+ #PREFER_NINJA # Disable this option if project cannot be built with Ninja
+ OPTIONS
+ -DVORPALINE_BUILD_DYNAMIC=${VORPALINE_BUILD_DYNAMIC}
+ -DGEOGRAM_WITH_GRAPHICS=${GEOGRAM_WITH_GRAPHICS}
+ -DGEOGRAM_LIB_ONLY=ON
+ -DGEOGRAM_USE_SYSTEM_GLFW3=ON
+ -DVORPALINE_PLATFORM=${VORPALINE_PLATFORM}
+ -DGEOGRAM_WITH_VORPALINE=OFF
+)
+
vcpkg_install_cmake()
vcpkg_copy_pdbs()
vcpkg_fixup_cmake_targets(CONFIG_PATH "share/geogram")
diff --git a/ports/glbinding/CONTROL b/ports/glbinding/CONTROL
index d225e60c8..9671eda4b 100644
--- a/ports/glbinding/CONTROL
+++ b/ports/glbinding/CONTROL
@@ -1,3 +1,3 @@
Source: glbinding
-Version: 3.0.2-3
+Version: 3.0.2-4
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 64063bc73..d7a896723 100644
--- a/ports/glbinding/portfile.cmake
+++ b/ports/glbinding/portfile.cmake
@@ -2,8 +2,8 @@ include(vcpkg_common_functions)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO cginternals/glbinding
- REF v3.0.2
- SHA512 524ad20a11af7d8ee1764f53326b43efb3b3dbd6c64d1539f4d9fa2bcb7b58a6bd6caf460d6944aed4fd7439b82536d8f28a0f0f51c14c62c2f0c73baab9afcb
+ REF d7a1873ad741fb13a9c6dcbae93d0cda45a11933
+ SHA512 70848d8ddad3e2ddfc54549ed3cdde569991858135140b30b50fa6e92c5aec6e3dd235418e091456f9b68da2fad09fbef117dedac7b48c26bcab62b6f0fa791f
HEAD_REF master
PATCHES force-system-install.patch
)
diff --git a/ports/google-cloud-cpp/CONTROL b/ports/google-cloud-cpp/CONTROL
index 7a64d2e14..5689f78bb 100644
--- a/ports/google-cloud-cpp/CONTROL
+++ b/ports/google-cloud-cpp/CONTROL
@@ -1,4 +1,4 @@
Source: google-cloud-cpp
-Version: 0.3.0-1
+Version: 0.4.0
Build-Depends: grpc, gtest, curl, crc32c
Description: C++ Client Libraries for Google Cloud Platform APIs.
diff --git a/ports/google-cloud-cpp/portfile.cmake b/ports/google-cloud-cpp/portfile.cmake
index 2081b20f7..54fa6d483 100644
--- a/ports/google-cloud-cpp/portfile.cmake
+++ b/ports/google-cloud-cpp/portfile.cmake
@@ -8,8 +8,8 @@ include(vcpkg_common_functions)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO GoogleCloudPlatform/google-cloud-cpp
- REF v0.3.0
- SHA512 90f876ebf4bea40c5bc12d2bd20d27b48202f951d57a68b657c07b7d468b2ac5a00e39a3a6fca48f92030d89ba7d9706eb52b3c8e734b392aee63632af042b5d
+ REF v0.4.0
+ SHA512 2198a7e055c37c2a0d782e2226c2cfb4009e01c36783fe23a0a32b10c7800c1998fbaea17281cb831e7b58975d1bcdb1b2bfec0a5e4fd9d08f25299b96e8893a
HEAD_REF master
PATCHES include-protobuf.patch
)
diff --git a/ports/graphqlparser/CONTROL b/ports/graphqlparser/CONTROL
index 4a66842c0..0f6ed481e 100644
--- a/ports/graphqlparser/CONTROL
+++ b/ports/graphqlparser/CONTROL
@@ -1,3 +1,3 @@
Source: graphqlparser
-Version: v0.7.0
+Version: 0.7.0
Description: A GraphQL query parser in C++ with C and C++ APIs
diff --git a/ports/graphqlparser/portfile.cmake b/ports/graphqlparser/portfile.cmake
index 0e1414583..6e175fe6b 100644
--- a/ports/graphqlparser/portfile.cmake
+++ b/ports/graphqlparser/portfile.cmake
@@ -1,15 +1,3 @@
-# Common Ambient Variables:
-# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
-# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
-# CURRENT_PORT_DIR = ${VCPKG_ROOT_DIR}\ports\${PORT}
-# PORT = current port name (zlib, etc)
-# TARGET_TRIPLET = current triplet (x86-windows, x64-windows-static, etc)
-# VCPKG_CRT_LINKAGE = C runtime linkage type (static, dynamic)
-# VCPKG_LIBRARY_LINKAGE = target library linkage type (static, dynamic)
-# VCPKG_ROOT_DIR = <C:\path\to\current\vcpkg>
-# VCPKG_TARGET_ARCHITECTURE = target architecture (x64, x86, arm)
-#
-
include(vcpkg_common_functions)
vcpkg_from_github(
@@ -18,7 +6,7 @@ vcpkg_from_github(
REF v0.7.0
SHA512 973292b164d0d2cfe453a2f01559dbdb1b9d22b6304f6a3aabf71e2c0a3e24ab69dfd72a086764ad5befecf0005620f8e86f552dacc324f9615a05f31de7cede
HEAD_REF master
- PATCHES ${CMAKE_CURRENT_LIST_DIR}/win-cmake.patch
+ PATCHES win-cmake.patch
)
if(UNIX)
@@ -28,7 +16,7 @@ if(UNIX)
)
elseif(WIN32)
vcpkg_find_acquire_program(PYTHON2)
- vcpkg_find_acquire_program(FLEX)
+ vcpkg_find_acquire_program(FLEX) #
vcpkg_find_acquire_program(BISON)
get_filename_component(VCPKG_DOWNLOADS_PYTHON2_DIR "${PYTHON2}" DIRECTORY)
@@ -47,5 +35,7 @@ endif()
vcpkg_install_cmake()
+vcpkg_copy_pdbs()
+
# Handle copyright
-file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/graphqlparser RENAME copyright)
+configure_file(${SOURCE_PATH}/LICENSE ${CURRENT_PACKAGES_DIR}/share/graphqlparser/copyright COPYONLY)
diff --git a/ports/graphqlparser/win-cmake.patch b/ports/graphqlparser/win-cmake.patch
index c71ba97ff..bd2f4c7c1 100644
--- a/ports/graphqlparser/win-cmake.patch
+++ b/ports/graphqlparser/win-cmake.patch
@@ -1,8 +1,8 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index c4c8b3e..f19cda3 100644
+index c4c8b3e..3373d82 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -3,16 +3,37 @@ PROJECT(libgraphqlparser C CXX)
+@@ -3,9 +3,26 @@ PROJECT(libgraphqlparser C CXX)
SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}")
@@ -31,19 +31,7 @@ index c4c8b3e..f19cda3 100644
FIND_PACKAGE(PythonInterp 2 REQUIRED)
IF (NOT PYTHON_VERSION_MAJOR EQUAL 2)
- MESSAGE(FATAL_ERROR "Python 2 is required.")
- ENDIF()
-
--FIND_PROGRAM(CTYPESGEN_FOUND ctypesgen.py)
-+IF(UNIX)
-+ SET(FLEX_COMPILE_FLAGS "--header-file=lexer.h")
-+ELSEIF(WIN32)
-+ SET(FLEX_COMPILE_FLAGS "--header-file=lexer.h --wincompat")
-+ENDIF()
-
- FIND_PACKAGE(BISON 3)
- FIND_PACKAGE(FLEX)
-@@ -21,7 +42,7 @@ IF (BISON_FOUND)
+@@ -21,7 +38,7 @@ IF (BISON_FOUND)
ENDIF()
IF(FLEX_FOUND)
@@ -52,20 +40,27 @@ index c4c8b3e..f19cda3 100644
IF (BISON_FOUND)
ADD_FLEX_BISON_DEPENDENCY(GraphQLScanner graphqlparser)
ENDIF()
-@@ -83,11 +104,8 @@ GENERATE_AST_FILE(cxx_json_visitor_header JsonVisitor.h.inc)
+@@ -31,7 +48,7 @@ FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/c)
+ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
+ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
- GENERATE_AST_FILE(cxx_json_visitor_impl JsonVisitor.cpp.inc)
+-ADD_LIBRARY(graphqlparser SHARED
++ADD_LIBRARY(graphqlparser
+ JsonVisitor.cpp
+ ${CMAKE_CURRENT_BINARY_DIR}/Ast.h
+ ${CMAKE_CURRENT_BINARY_DIR}/Ast.cpp
+@@ -87,7 +104,9 @@ ADD_SUBDIRECTORY(python)
--ADD_SUBDIRECTORY(python)
--
--OPTION(test "Build tests." OFF)
--
- INSTALL(DIRECTORY c ${CMAKE_CURRENT_BINARY_DIR}/c DESTINATION include/graphqlparser
+ OPTION(test "Build tests." OFF)
+
+-INSTALL(DIRECTORY c ${CMAKE_CURRENT_BINARY_DIR}/c DESTINATION include/graphqlparser
++INSTALL(DIRECTORY c ${CMAKE_CURRENT_BINARY_DIR}/c
++ DESTINATION include/graphqlparser
+ CONFIGURATIONS Release
FILES_MATCHING PATTERN "*.h"
PATTERN "build" EXCLUDE)
-@@ -103,9 +121,12 @@ INSTALL(FILES
+@@ -103,9 +122,13 @@ INSTALL(FILES
position.hh
stack.hh
syntaxdefs.h
@@ -75,12 +70,13 @@ index c4c8b3e..f19cda3 100644
+
INSTALL(TARGETS graphqlparser
- LIBRARY DESTINATION lib)
++ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib
+ RUNTIME DESTINATION bin)
if (UNIX)
# generate pkgconfig file
-@@ -116,16 +137,9 @@ if (UNIX)
+@@ -116,6 +139,11 @@ if (UNIX)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libgraphqlparser.pc"
DESTINATION "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig")
endif()
@@ -90,15 +86,15 @@ index c4c8b3e..f19cda3 100644
+ INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/graphqlparser.pdb
+ DESTINATION bin)
endif()
+
+ IF (test)
+@@ -126,6 +154,8 @@ IF (test)
+ ADD_CUSTOM_TARGET(memcheck
+ valgrind --leak-check=full --suppressions=./test/valgrind.supp --dsymutil=yes --error-exitcode=1 ./test/runTests >/dev/null
+ )
++ else()
++ ADD_CUSTOM_TARGET(runTests
++ ./test/runTests >/dev/null)
+ endif()
-
--IF (test)
-- ADD_SUBDIRECTORY(test)
--
-- if(UNIX)
-- # setup valgrind
-- ADD_CUSTOM_TARGET(memcheck
-- valgrind --leak-check=full --suppressions=./test/valgrind.supp --dsymutil=yes --error-exitcode=1 ./test/runTests >/dev/null
-- )
-- endif()
--
--ENDIF()
+ ENDIF()
diff --git a/ports/grpc/CONTROL b/ports/grpc/CONTROL
index 7045bd444..f7a46c9f6 100644
--- a/ports/grpc/CONTROL
+++ b/ports/grpc/CONTROL
@@ -1,4 +1,4 @@
Source: grpc
-Version: 1.14.1
+Version: 1.17.1
Build-Depends: zlib, openssl, protobuf, c-ares (!uwp)
Description: An RPC library and framework
diff --git a/ports/grpc/fix-uwp.patch b/ports/grpc/fix-uwp.patch
index f479e4c59..81b79d1e0 100644
--- a/ports/grpc/fix-uwp.patch
+++ b/ports/grpc/fix-uwp.patch
@@ -1,109 +1,148 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index a59fd818e3..774ee2f725 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -89,6 +89,9 @@ if(UNIX)
- endif()
- if(WIN32)
- set(_gRPC_PLATFORM_WINDOWS ON)
-+ if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
-+ set(_gRPC_PLATFORM_UWP ON)
-+ endif()
- endif()
-
- set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
-@@ -155,6 +158,10 @@ file(MAKE_DIRECTORY ${_gRPC_PROTO_GENS_DIR})
- # ``.proto`` files
- #
- function(protobuf_generate_grpc_cpp)
-+ if(_gRPC_PLATFORM_UWP)
-+ return()
-+ endif()
-+
- if(NOT ARGN)
- message(SEND_ERROR "Error: PROTOBUF_GENERATE_GRPC_CPP() called without any proto files")
- return()
-@@ -189,6 +196,7 @@ function(protobuf_generate_grpc_cpp)
- endforeach()
- endfunction()
-
-+if(NOT _gRPC_PLATFORM_UWP)
- add_custom_target(plugins
- DEPENDS
- grpc_cpp_plugin
-@@ -218,6 +226,8 @@ add_custom_target(tools_cxx
- add_custom_target(tools
- DEPENDS tools_c tools_cxx)
-
-+endif()
-+
- if (gRPC_BUILD_TESTS)
- add_custom_target(buildtests_c)
- add_dependencies(buildtests_c algorithm_test)
-@@ -3661,7 +3671,6 @@ foreach(_hdr
- DESTINATION "${gRPC_INSTALL_INCLUDEDIR}/${_path}"
- )
- endforeach()
--endif (gRPC_BUILD_CODEGEN)
-
-
- if (gRPC_INSTALL)
-@@ -3671,6 +3680,7 @@ if (gRPC_INSTALL)
- ARCHIVE DESTINATION ${gRPC_INSTALL_LIBDIR}
- )
- endif()
-+endif (gRPC_BUILD_CODEGEN)
-
- if (gRPC_BUILD_TESTS)
-
-@@ -3793,7 +3803,7 @@ foreach(_hdr
- DESTINATION "${gRPC_INSTALL_INCLUDEDIR}/${_path}"
- )
- endforeach()
--endif (gRPC_BUILD_CODEGEN)
-+
-
-
- if (gRPC_INSTALL)
-@@ -3803,6 +3813,7 @@ if (gRPC_INSTALL)
- ARCHIVE DESTINATION ${gRPC_INSTALL_LIBDIR}
- )
- endif()
-+endif (gRPC_BUILD_CODEGEN)
-
- if (gRPC_BUILD_TESTS)
-
-diff --git a/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc b/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc
-index 55efe0e9dd..f538f26edf 100644
---- a/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc
-+++ b/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc
-@@ -60,6 +60,8 @@ bool check_bios_data(const char* bios_data_file) {
-
- static void init_mu(void) { gpr_mu_init(&g_mu); }
-
-+#if !defined(WINAPI_FAMILY) || WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP
-+
- static bool run_powershell() {
- SECURITY_ATTRIBUTES sa;
- sa.nLength = sizeof(sa);
-@@ -97,8 +99,12 @@ static bool run_powershell() {
- CloseHandle(h);
- return true;
- }
-+#endif
-
- bool grpc_alts_is_running_on_gcp() {
-+#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP)
-+ g_is_on_compute_engine = false;
-+#else
- gpr_once_init(&g_once, init_mu);
- gpr_mu_lock(&g_mu);
- if (!g_compute_engine_detection_done) {
-@@ -108,6 +114,7 @@ bool grpc_alts_is_running_on_gcp() {
- g_compute_engine_detection_done = true;
- }
- gpr_mu_unlock(&g_mu);
-+#endif
- return g_is_on_compute_engine;
- }
-
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b39e6f8..5d35293 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -90,6 +90,9 @@ if(UNIX)
+ endif()
+ if(WIN32)
+ set(_gRPC_PLATFORM_WINDOWS ON)
++ if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
++ set(_gRPC_PLATFORM_UWP ON)
++ endif()
+ endif()
+
+ set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
+@@ -107,6 +110,9 @@ if (MSVC)
+ add_definitions(/wd4267)
+ # TODO(jtattermusch): needed to build boringssl with VS2017, revisit later
+ add_definitions(/wd4987 /wd4774 /wd4819 /wd4996 /wd4619)
++ if(_gRPC_PLATFORM_UWP)
++ add_definitions(-DGRPC_ARES=0)
++ endif()
+ endif()
+
+ if (gRPC_USE_PROTO_LITE)
+@@ -177,6 +183,10 @@ file(MAKE_DIRECTORY ${_gRPC_PROTO_GENS_DIR})
+ # ``.proto`` files
+ #
+ function(protobuf_generate_grpc_cpp)
++ if(_gRPC_PLATFORM_UWP)
++ return()
++ endif()
++
+ if(NOT ARGN)
+ message(SEND_ERROR "Error: PROTOBUF_GENERATE_GRPC_CPP() called without any proto files")
+ return()
+@@ -211,6 +221,7 @@ function(protobuf_generate_grpc_cpp)
+ endforeach()
+ endfunction()
+
++if(NOT _gRPC_PLATFORM_UWP)
+ add_custom_target(plugins
+ DEPENDS
+ grpc_cpp_plugin
+@@ -240,6 +251,8 @@ add_custom_target(tools_cxx
+ add_custom_target(tools
+ DEPENDS tools_c tools_cxx)
+
++endif()
++
+ if (gRPC_BUILD_TESTS)
+ add_custom_target(buildtests_c)
+ add_dependencies(buildtests_c algorithm_test)
+@@ -3805,7 +3818,6 @@ foreach(_hdr
+ DESTINATION "${gRPC_INSTALL_INCLUDEDIR}/${_path}"
+ )
+ endforeach()
+-endif (gRPC_BUILD_CODEGEN)
+
+
+ if (gRPC_INSTALL)
+@@ -3815,6 +3827,7 @@ if (gRPC_INSTALL)
+ ARCHIVE DESTINATION ${gRPC_INSTALL_LIBDIR}
+ )
+ endif()
++endif (gRPC_BUILD_CODEGEN)
+
+ if (gRPC_BUILD_TESTS)
+
+@@ -3935,7 +3948,7 @@ foreach(_hdr
+ DESTINATION "${gRPC_INSTALL_INCLUDEDIR}/${_path}"
+ )
+ endforeach()
+-endif (gRPC_BUILD_CODEGEN)
++
+
+
+ if (gRPC_INSTALL)
+@@ -3945,6 +3958,7 @@ if (gRPC_INSTALL)
+ ARCHIVE DESTINATION ${gRPC_INSTALL_LIBDIR}
+ )
+ endif()
++endif (gRPC_BUILD_CODEGEN)
+
+ if (gRPC_BUILD_TESTS)
+
+@@ -4916,7 +4930,6 @@ foreach(_hdr
+ DESTINATION "${gRPC_INSTALL_INCLUDEDIR}/${_path}"
+ )
+ endforeach()
+-endif (gRPC_BUILD_CODEGEN)
+
+
+ if (gRPC_INSTALL)
+@@ -4926,6 +4939,7 @@ if (gRPC_INSTALL)
+ ARCHIVE DESTINATION ${gRPC_INSTALL_LIBDIR}
+ )
+ endif()
++endif (gRPC_BUILD_CODEGEN)
+
+ if (gRPC_BUILD_TESTS)
+
+diff --git a/src/core/lib/iomgr/resource_quota.cc b/src/core/lib/iomgr/resource_quota.cc
+index 7e4b3c9..da67bde 100644
+--- a/src/core/lib/iomgr/resource_quota.cc
++++ b/src/core/lib/iomgr/resource_quota.cc
+@@ -936,7 +936,7 @@ void grpc_resource_user_alloc(grpc_resource_user* resource_user, size_t size,
+ void grpc_resource_user_free(grpc_resource_user* resource_user, size_t size) {
+ gpr_mu_lock(&resource_user->mu);
+ grpc_resource_quota* resource_quota = resource_user->resource_quota;
+- gpr_atm prior = gpr_atm_no_barrier_fetch_add(&resource_quota->used, -size);
++ gpr_atm prior = gpr_atm_no_barrier_fetch_add(&resource_quota->used, -static_cast<gpr_atm>(size));
+ GPR_ASSERT(prior >= static_cast<long>(size));
+ bool was_zero_or_negative = resource_user->free_pool <= 0;
+ resource_user->free_pool += static_cast<int64_t>(size);
+diff --git a/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc b/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc
+index 55efe0e..f538f26 100644
+--- a/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc
++++ b/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc
+@@ -60,6 +60,8 @@ bool check_bios_data(const char* bios_data_file) {
+
+ static void init_mu(void) { gpr_mu_init(&g_mu); }
+
++#if !defined(WINAPI_FAMILY) || WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP
++
+ static bool run_powershell() {
+ SECURITY_ATTRIBUTES sa;
+ sa.nLength = sizeof(sa);
+@@ -97,8 +99,12 @@ static bool run_powershell() {
+ CloseHandle(h);
+ return true;
+ }
++#endif
+
+ bool grpc_alts_is_running_on_gcp() {
++#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY != WINAPI_FAMILY_DESKTOP_APP)
++ g_is_on_compute_engine = false;
++#else
+ gpr_once_init(&g_once, init_mu);
+ gpr_mu_lock(&g_mu);
+ if (!g_compute_engine_detection_done) {
+@@ -108,6 +114,7 @@ bool grpc_alts_is_running_on_gcp() {
+ g_compute_engine_detection_done = true;
+ }
+ gpr_mu_unlock(&g_mu);
++#endif
+ return g_is_on_compute_engine;
+ }
+
diff --git a/ports/grpc/portfile.cmake b/ports/grpc/portfile.cmake
index 537fa32ae..77db34226 100644
--- a/ports/grpc/portfile.cmake
+++ b/ports/grpc/portfile.cmake
@@ -11,8 +11,8 @@ endif()
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO grpc/grpc
- REF v1.14.1
- SHA512 f0e4fe9777ebc3316a85cb581edad19fef785cdcd2859b1dc54bf7407aa2ba804718973661595e318ea62463620f30ca828e5d7638798cca154af5e1d456ed1e
+ REF v1.17.1
+ SHA512 45ba731fd4d1bc3cf590511e53ea6a73de6970f4bb379eb0ef90d550cdc13358f673ead8c6877c02c71dccdba914ad4765c58e173e0dd7895b5d25ebbad38e8e
HEAD_REF master
PATCHES fix-uwp.patch
)
@@ -81,3 +81,4 @@ SET(VCPKG_POLICY_EMPTY_PACKAGE enabled)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
vcpkg_copy_pdbs()
+## \ No newline at end of file
diff --git a/ports/harfbuzz/CONTROL b/ports/harfbuzz/CONTROL
index f3c58ee6e..32d70f5ec 100644
--- a/ports/harfbuzz/CONTROL
+++ b/ports/harfbuzz/CONTROL
@@ -1,5 +1,5 @@
Source: harfbuzz
-Version: 1.8.4-2
+Version: 1.8.4-3
Description: HarfBuzz OpenType text shaping engine
Build-Depends: freetype, ragel
Default-Features: ucdn
diff --git a/ports/harfbuzz/glib-cmake.patch b/ports/harfbuzz/glib-cmake.patch
index cdd7f48a6..ddbc96712 100644
--- a/ports/harfbuzz/glib-cmake.patch
+++ b/ports/harfbuzz/glib-cmake.patch
@@ -1,8 +1,8 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 3c52731..8305f27 100644
+index 2d6e77e8..36e4b4e6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -314,22 +314,12 @@ endif ()
+@@ -306,22 +306,14 @@ endif ()
if (HB_HAVE_GLIB)
add_definitions(-DHAVE_GLIB)
@@ -15,6 +15,8 @@ index 3c52731..8305f27 100644
- find_path(GLIB_INCLUDE_DIR NAMES glib.h HINTS ${PC_GLIB_INCLUDEDIR} ${PC_GLIB_INCLUDE_DIRS} PATH_SUFFIXES glib-2.0)
-
- include_directories(${GLIBCONFIG_INCLUDE_DIR} ${GLIB_INCLUDE_DIR})
++ find_package(Threads REQUIRED)
++ find_package(unofficial-iconv REQUIRED)
+ find_package(unofficial-glib CONFIG REQUIRED)
list(APPEND project_sources ${PROJECT_SOURCE_DIR}/src/hb-glib.cc)
diff --git a/ports/imgui/CONTROL b/ports/imgui/CONTROL
index 8f310b04f..46d927c9e 100644
--- a/ports/imgui/CONTROL
+++ b/ports/imgui/CONTROL
@@ -1,3 +1,3 @@
Source: imgui
-Version: 1.66
+Version: 1.66b
Description: Bloat-free Immediate Mode Graphical User interface for C++ with minimal dependencies.
diff --git a/ports/imgui/portfile.cmake b/ports/imgui/portfile.cmake
index 8f5452042..756574d76 100644
--- a/ports/imgui/portfile.cmake
+++ b/ports/imgui/portfile.cmake
@@ -3,8 +3,8 @@ include(vcpkg_common_functions)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO ocornut/imgui
- REF v1.66
- SHA512 85d41e6fa2141da87b72e5c39d23fe285bea086d6dd758a5ec048a495c29bbcf0a49ee1e9f442d5db3452fd0f28d1e52a2c41b5402cbbaa3ad6612818aaea670
+ REF v1.66b
+ SHA512 894339a70f99c517d9306c49d861a43710b936e71067ddd322f5e771396f8e658a541111fcb00ce9010599f0ec9702d029d18b155199c7635129fd659ac13dbc
HEAD_REF master
)
diff --git a/ports/itk/CONTROL b/ports/itk/CONTROL
index f4b29af94..a2cc426e8 100644
--- a/ports/itk/CONTROL
+++ b/ports/itk/CONTROL
@@ -1,4 +1,8 @@
Source: itk
Version: 4.13.0
Description: Insight Segmentation and Registration Toolkit (ITK) is used for image processing and analysis.
-Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat
+Build-Depends: double-conversion, libjpeg-turbo, zlib, libpng, tiff, expat, hdf5[cpp]
+
+Feature: vtk
+Description: Build ITKVtkGlue module.
+Build-Depends: vtk
diff --git a/ports/itk/portfile.cmake b/ports/itk/portfile.cmake
index 1fea599d8..b42d8be75 100644
--- a/ports/itk/portfile.cmake
+++ b/ports/itk/portfile.cmake
@@ -8,9 +8,19 @@ vcpkg_from_github(
HEAD_REF master
)
+if ("vtk" IN_LIST FEATURES)
+ set(ITKVtkGlue ON )
+else()
+ set(ITKVtkGlue OFF )
+endif()
+
# directory path length needs to be shorter than 50 characters
-file(RENAME ${SOURCE_PATH} ${CURRENT_BUILDTREES_DIR}/ITK)
-set(SOURCE_PATH "${CURRENT_BUILDTREES_DIR}/ITK")
+set(ITK_BUILD_DIR ${CURRENT_BUILDTREES_DIR}/ITK)
+if(EXISTS ${ITK_BUILD_DIR})
+ file(REMOVE_RECURSE ${ITK_BUILD_DIR})
+endif()
+file(RENAME ${SOURCE_PATH} ${ITK_BUILD_DIR})
+set(SOURCE_PATH "${ITK_BUILD_DIR}")
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
@@ -41,9 +51,9 @@ vcpkg_configure_cmake(
#-DITK_PYTHON_VERSION=3
# HDF5 must NOT be installed, otherwise it causes: ...\installed\x64-windows-static\include\H5Tpkg.h(25): fatal error C1189: #error: "Do not include this file outside the H5T package!"
- -DITK_USE_SYSTEM_HDF5=OFF # if ON, causes: ...\buildtrees\itk\x64-windows-static-rel\Modules\ThirdParty\HDF5\src\itk_H5Cpp.h(25): fatal error C1083: Cannot open include file: 'H5Cpp.h': No such file or directory
+ -DITK_USE_SYSTEM_HDF5=ON # if ON, causes: ...\buildtrees\itk\x64-windows-static-rel\Modules\ThirdParty\HDF5\src\itk_H5Cpp.h(25): fatal error C1083: Cannot open include file: 'H5Cpp.h': No such file or directory
- # -DModule_ITKVtkGlue=ON # this option requires VTK to be a dependency in CONTROL file. VTK depends on HDF5!
+ -DModule_ITKVtkGlue=${ITKVtkGlue} # this option requires VTK to be a dependency in CONTROL file. VTK depends on HDF5!
-DModule_IOSTL=ON # example how to turn on a non-default module
-DModule_MorphologicalContourInterpolation=ON # example how to turn on a remote module
-DModule_RLEImage=ON # example how to turn on a remote module
diff --git a/ports/libcopp/CONTROL b/ports/libcopp/CONTROL
new file mode 100644
index 000000000..35fca9b7e
--- /dev/null
+++ b/ports/libcopp/CONTROL
@@ -0,0 +1,3 @@
+Source: libcopp
+Version: 1.1.0-1
+Description: A cross-platfrom coroutine library for C++
diff --git a/ports/libcopp/portfile.cmake b/ports/libcopp/portfile.cmake
new file mode 100644
index 000000000..85b2de09c
--- /dev/null
+++ b/ports/libcopp/portfile.cmake
@@ -0,0 +1,30 @@
+include(vcpkg_common_functions)
+
+vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO owt5008137/libcopp
+ REF 1.1.0
+ SHA512 27b444d158281786154830c6e216e701ba0301af1d7a08873b33e27ce3d2db6ddb4753239878633f4c2aed9f759b46f961408a2eb7b50b5d445c3531c1fa9546
+ HEAD_REF v2
+)
+
+# Use libcopp's own build process, skipping examples and tests
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ # PREFER_NINJA # Disabled because Ninja does not invoke masm correctly for this project
+)
+vcpkg_install_cmake()
+
+file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/share/libcopp)
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/libcopp)
+file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/libcopp)
+file(COPY ${SOURCE_PATH}/BOOST_LICENSE_1_0.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/libcopp)
+file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/libcopp/copyright)
+
+vcpkg_copy_pdbs()
+
+vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake)
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
diff --git a/ports/libcopp/usage b/ports/libcopp/usage
new file mode 100644
index 000000000..4593a42ad
--- /dev/null
+++ b/ports/libcopp/usage
@@ -0,0 +1,5 @@
+The package libcopp provides CMake integration:
+
+ find_package(Libcopp CONFIG REQUIRED)
+ target_include_directories(main PRIVATE ${Libcopp_INCLUDE_DIRS})
+ target_link_libraries(main PRIVATE ${Libcotask_LIBRARIES} ${Libcopp_LIBRARIES})
diff --git a/ports/libpng-apng/CONTROL b/ports/libpng-apng/CONTROL
index f4ea530fe..81db06eee 100644
--- a/ports/libpng-apng/CONTROL
+++ b/ports/libpng-apng/CONTROL
@@ -1,4 +1,4 @@
Source: libpng-apng
-Version: 1.6.34-2
+Version: 1.6.36-1
Build-Depends: zlib
Description: libpng-apng is a library implementing an interface for reading and writing (A)PNG ((Animated) Portable Network Graphics) format files. This is backward compatible with the regular libpng, both in library usage and format.
diff --git a/ports/libpng-apng/portfile.cmake b/ports/libpng-apng/portfile.cmake
index b1ec137a8..948b0a2f3 100644
--- a/ports/libpng-apng/portfile.cmake
+++ b/ports/libpng-apng/portfile.cmake
@@ -1,19 +1,19 @@
include(vcpkg_common_functions)
-set(LIBPNG_APNG_VERSION 1.6.34)
+set(LIBPNG_APNG_VERSION 1.6.36)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO glennrp/libpng
REF v${LIBPNG_APNG_VERSION}
- SHA512 23b6112a1d16a34c8037d5c5812944d4385fc96ed819a22172776bdd5acd3a34e55f073b46087b77d1c12cecc68f9e8ba7754c86b5ab6ed3016063e1c795de7a
+ SHA512 aeb00b48347c9e84d31995b3fe7e40580029734aa8103d774eee5745f5ca1fd1fd91a15f32d492277ab94346e4e7f731ee9bfea1783f930094f9f87eb3d9397d
HEAD_REF master
)
vcpkg_download_distfile(LIBPNG_APNG_PATCH_ARCHIVE
URLS "https://downloads.sourceforge.net/project/libpng-apng/libpng16/${LIBPNG_APNG_VERSION}/libpng-${LIBPNG_APNG_VERSION}-apng.patch.gz"
FILENAME "libpng-${LIBPNG_APNG_VERSION}-apng.patch.gz"
- SHA512 0777b8e55aeee207ee92479f2258ef1f60f16d7951fdbc6d89a80ef533b86dadecd1ef659d6fe7602d8ea3a8e711a096b0f77ee09b993799b73dfffddfe5dd3c
+ SHA512 8fa213204768b058459ffd5eae6b3661c3f185d3baf1913da4337e7b7855e567f2525e7f67411c32fa8cb177a5f93d538c3d0ce17a94d4aa71bd9cffabe8b311
)
vcpkg_find_acquire_program(7Z)
@@ -35,6 +35,7 @@ vcpkg_apply_patches(
SOURCE_PATH ${SOURCE_PATH}
PATCHES
${CMAKE_CURRENT_LIST_DIR}/use-abort-on-all-platforms.patch
+ ${CMAKE_CURRENT_LIST_DIR}/skip-install-symlink.patch
${CURRENT_BUILDTREES_DIR}/src/libpng-${LIBPNG_APNG_VERSION}-apng.patch
)
@@ -57,15 +58,20 @@ vcpkg_configure_cmake(
-DSKIP_INSTALL_PROGRAMS=ON
-DSKIP_INSTALL_EXECUTABLES=ON
-DSKIP_INSTALL_FILES=ON
+ -DSKIP_INSTALL_SYMLINK=ON
OPTIONS_DEBUG
-DSKIP_INSTALL_HEADERS=ON
)
vcpkg_install_cmake()
-if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
- file(RENAME ${CURRENT_PACKAGES_DIR}/lib/libpng16_static.lib ${CURRENT_PACKAGES_DIR}/lib/libpng16.lib)
- file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/libpng16_staticd.lib ${CURRENT_PACKAGES_DIR}/debug/lib/libpng16d.lib)
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ if(EXISTS ${CURRENT_PACKAGES_DIR}/lib/libpng16_static.lib)
+ file(RENAME ${CURRENT_PACKAGES_DIR}/lib/libpng16_static.lib ${CURRENT_PACKAGES_DIR}/lib/libpng16.lib)
+ endif()
+ if(EXISTS ${CURRENT_PACKAGES_DIR}/debug/lib/libpng16_staticd.lib)
+ file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/libpng16_staticd.lib ${CURRENT_PACKAGES_DIR}/debug/lib/libpng16d.lib)
+ endif()
endif()
# Remove CMake config files as they are incorrectly generated and everyone uses built-in FindPNG anyway.
@@ -76,3 +82,7 @@ file(RENAME ${CURRENT_PACKAGES_DIR}/share/libpng-apng/LICENSE ${CURRENT_PACKAGES
vcpkg_copy_pdbs()
file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
+
+if(VCPKG_CMAKE_SYSTEM_NAME AND NOT VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+ file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/png)
+endif()
diff --git a/ports/libpng-apng/skip-install-symlink.patch b/ports/libpng-apng/skip-install-symlink.patch
new file mode 100644
index 000000000..c25075941
--- /dev/null
+++ b/ports/libpng-apng/skip-install-symlink.patch
@@ -0,0 +1,22 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 48c6fa2..589e5f9 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -853,7 +853,7 @@ if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL )
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR})
+
+- if(PNG_SHARED)
++ if(PNG_SHARED AND NOT SKIP_INSTALL_SYMLINK)
+ # Create a symlink for libpng.dll.a => libpng16.dll.a on Cygwin
+ if(CYGWIN OR MINGW)
+ create_symlink(libpng${CMAKE_IMPORT_LIBRARY_SUFFIX} TARGET png)
+@@ -868,7 +868,7 @@ if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL )
+ endif()
+ endif()
+
+- if(PNG_STATIC)
++ if(PNG_STATIC AND NOT SKIP_INSTALL_SYMLINK)
+ if(NOT WIN32 OR CYGWIN OR MINGW)
+ create_symlink(libpng${CMAKE_STATIC_LIBRARY_SUFFIX} TARGET png_static)
+ install(FILES $<TARGET_LINKER_FILE_DIR:png_static>/libpng${CMAKE_STATIC_LIBRARY_SUFFIX}
diff --git a/ports/libpng-apng/use-abort-on-all-platforms.patch b/ports/libpng-apng/use-abort-on-all-platforms.patch
index 0a629e059..ef21211c6 100644
--- a/ports/libpng-apng/use-abort-on-all-platforms.patch
+++ b/ports/libpng-apng/use-abort-on-all-platforms.patch
@@ -2,7 +2,7 @@ diff --git a/pngpriv.h b/pngpriv.h
index fe3355d..5a049b5 100644
--- a/pngpriv.h
+++ b/pngpriv.h
-@@ -457,11 +457,7 @@
+@@ -556,11 +556,7 @@
/* Memory model/platform independent fns */
#ifndef PNG_ABORT
diff --git a/ports/libpng-apng/vcpkg-cmake-wrapper.cmake b/ports/libpng-apng/vcpkg-cmake-wrapper.cmake
new file mode 100644
index 000000000..cb9c74f32
--- /dev/null
+++ b/ports/libpng-apng/vcpkg-cmake-wrapper.cmake
@@ -0,0 +1,6 @@
+if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/../../lib/libpng16.a")
+ set(PNG_LIBRARY_RELEASE "${CMAKE_CURRENT_LIST_DIR}/../../lib/libpng16.a" CACHE FILEPATH "")
+elseif(EXISTS "${CMAKE_CURRENT_LIST_DIR}/../../lib/libpng16${CMAKE_SHARED_LIBRARY_SUFFIX}")
+ set(PNG_LIBRARY_RELEASE "${CMAKE_CURRENT_LIST_DIR}/../../lib/libpng16${CMAKE_SHARED_LIBRARY_SUFFIX}" CACHE FILEPATH "")
+endif()
+_find_package(${ARGS})
diff --git a/ports/libuv/CMakeLists.txt b/ports/libuv/CMakeLists.txt
index c4b7c3882..0f46ec07e 100644
--- a/ports/libuv/CMakeLists.txt
+++ b/ports/libuv/CMakeLists.txt
@@ -60,7 +60,7 @@ else() # Assume some Linux variant
add_library(libuv ${UV_SOURCES_COMMON} ${UV_SOURCES_UNIX} ${UV_SOURCES_LINUX})
endif()
-target_include_directories(libuv PUBLIC ./include PRIVATE ./src)
+target_include_directories(libuv PUBLIC $<INSTALL_INTERFACE:include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>)
set_target_properties(libuv PROPERTIES DEFINE_SYMBOL BUILDING_UV_SHARED)
if(NOT UV_SKIP_HEADERS)
@@ -71,7 +71,9 @@ if(NOT UV_SKIP_HEADERS)
endif()
install(TARGETS libuv
+ EXPORT libuv
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
)
+install(EXPORT libuv FILE unofficial-libuv-targets.cmake NAMESPACE unofficial::libuv:: DESTINATION share/unofficial-libuv)
diff --git a/ports/libuv/CONTROL b/ports/libuv/CONTROL
index e90eaa545..7a8a79098 100644
--- a/ports/libuv/CONTROL
+++ b/ports/libuv/CONTROL
@@ -1,3 +1,3 @@
Source: libuv
-Version: 1.24.0
+Version: 1.24.0-1
Description: libuv is a multi-platform support library with a focus on asynchronous I/O.
diff --git a/ports/libuv/portfile.cmake b/ports/libuv/portfile.cmake
index 782d946c3..76077fc3d 100644
--- a/ports/libuv/portfile.cmake
+++ b/ports/libuv/portfile.cmake
@@ -18,8 +18,15 @@ vcpkg_configure_cmake(
)
vcpkg_install_cmake()
+vcpkg_fixup_cmake_targets(CONFIG_PATH share/unofficial-libuv TARGET_PATH share/unofficial-libuv)
vcpkg_copy_pdbs()
+configure_file(
+ ${CMAKE_CURRENT_LIST_DIR}/unofficial-libuv-config.in.cmake
+ ${CURRENT_PACKAGES_DIR}/share/unofficial-libuv/unofficial-libuv-config.cmake
+ @ONLY
+)
+
file(READ ${CURRENT_PACKAGES_DIR}/include/uv.h UV_H)
if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
string(REPLACE "defined(USING_UV_SHARED)" "1" UV_H "${UV_H}")
diff --git a/ports/libuv/unofficial-libuv-config.in.cmake b/ports/libuv/unofficial-libuv-config.in.cmake
new file mode 100644
index 000000000..7ff66b12c
--- /dev/null
+++ b/ports/libuv/unofficial-libuv-config.in.cmake
@@ -0,0 +1,7 @@
+
+if("@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static" AND NOT WIN32)
+ include(CMakeFindDependencyMacro)
+ find_dependency(Threads)
+endif()
+
+include(${CMAKE_CURRENT_LIST_DIR}/unofficial-libuv-targets.cmake)
diff --git a/ports/mpfr/CMakeLists.txt b/ports/mpfr/CMakeLists.txt
index 7770b18fd..f0064666c 100644
--- a/ports/mpfr/CMakeLists.txt
+++ b/ports/mpfr/CMakeLists.txt
@@ -11,237 +11,240 @@ set(GMP_INCLUDE_DIRS ${GMP_INCLUDE_DIR})
# Sources
set(SRCS
- src/gmp_printf.c
- src/mpfr.h
- src/mpf2mpfr.h
- src/mpfr-gmp.h
- src/mpfr-impl.h
- src/mpfr-intmax.h
- src/mpfr-longlong.h
- src/mpfr-thread.h
- src/exceptions.c
- src/extract.c
- src/uceil_exp2.c
- src/uceil_log2.c
- src/ufloor_log2.c
+ src/abort_prec_max.c
+ src/acos.c
+ src/acosh.c
src/add.c
src/add1.c
+ src/add1sp.c
+ src/add_d.c
src/add_ui.c
src/agm.c
+ src/ai.c
+ src/asin.c
+ src/asinh.c
+ src/atan.c
+ src/atan2.c
+ src/atanh.c
+ src/bernoulli.c
+ src/beta.c
+ src/buildopt.c
+ src/cache.c
+ src/cbrt.c
+ src/check.c
src/clear.c
+ src/clears.c
src/cmp.c
+ src/cmp2.c
src/cmp_abs.c
+ src/cmp_d.c
+ src/cmp_ld.c
src/cmp_si.c
src/cmp_ui.c
src/comparisons.c
+ src/constant.c
+ src/const_catalan.c
+ src/const_euler.c
+ src/const_log2.c
+ src/const_pi.c
+ src/copysign.c
+ src/cos.c
+ src/cosh.c
+ src/cot.c
+ src/coth.c
+ src/csc.c
+ src/csch.c
+ src/digamma.c
+ src/dim.c
+ src/div.c
src/div_2exp.c
- src/div_2si.c
+ src/div_2si.c
src/div_2ui.c
- src/div.c
+ src/div_d.c
src/div_ui.c
src/dump.c
+ src/d_div.c
+ src/d_sub.c
+ src/eint.c
src/eq.c
+ src/erandom.c
+ src/erf.c
+ src/erfc.c
+ src/exceptions.c
+ src/exp.c
src/exp10.c
src/exp2.c
src/exp3.c
- src/exp.c
+ src/expm1.c
+ src/exp_2.c
+ src/extract.c
+ src/factorial.c
+ src/fits_intmax.c
+ src/fits_sint.c
+ src/fits_slong.c
+ src/fits_sshort.c
+ src/fits_uint.c
+ src/fits_uintmax.c
+ src/fits_ulong.c
+ src/fits_ushort.c
+ src/fma.c
+ src/fmma.c
+ src/fms.c
src/frac.c
+ src/free_cache.c
src/frexp.c
+ src/gamma.c
+ src/gammaonethird.c
+ src/gamma_inc.c
src/get_d.c
+ src/get_d64.c
src/get_exp.c
+ src/get_f.c
+ src/get_float128.c
+ src/get_flt.c
+ src/get_ld.c
+ src/get_patches.c
+ src/get_q.c
+ src/get_si.c
+ src/get_sj.c
src/get_str.c
+ src/get_ui.c
+ src/get_uj.c
+ src/get_z.c
+ src/get_z_exp.c
+ src/gmp_op.c
+ src/grandom.c
+ src/hypot.c
src/init.c
+ src/init2.c
+ src/inits.c
+ src/inits2.c
src/inp_str.c
- src/isinteger.c
+ src/int_ceil_log2.c
src/isinf.c
+ src/isinteger.c
src/isnan.c
src/isnum.c
- src/const_log2.c
+ src/isqrt.c
+ src/isregular.c
+ src/iszero.c
+ src/jn.c
+ src/li2.c
+ src/lngamma.c
src/log.c
+ src/log10.c
+ src/log1p.c
+ src/log2.c
+ src/logging.c
+ src/log_ui.c
+ src/minmax.c
+ src/min_prec.c
src/modf.c
+ src/mpfr-gmp.c
+ src/mpfr-mini-gmp.c
+ src/mpn_exp.c
+ src/mp_clz_tab.c
+ src/mul.c
+ src/mulders.c
src/mul_2exp.c
src/mul_2si.c
src/mul_2ui.c
- src/mul.c
+ src/mul_d.c
src/mul_ui.c
src/neg.c
src/next.c
+ src/nrandom.c
+ src/odd_p.c
src/out_str.c
- src/printf.c
- src/vasprintf.c
- src/const_pi.c
+ src/pool.c
src/pow.c
+ src/powerof2.c
src/pow_si.c
src/pow_ui.c
+ src/pow_z.c
+ src/printf.c
src/print_raw.c
- src/print_rnd_mode.c
+ src/print_rnd_mode.c
+ src/random_deviate.c
+ src/rec_sqrt.c
src/reldiff.c
+ src/rem1.c
+ src/rint.c
+ src/rndna.c
+ src/root.c
+ src/round_near_x.c
+ src/round_p.c
src/round_prec.c
+ src/scale2.c
+ src/sec.c
+ src/sech.c
src/set.c
src/setmax.c
src/setmin.c
+ src/setsign.c
src/set_d.c
+ src/set_d64.c
src/set_dfl_prec.c
src/set_exp.c
- src/set_rnd.c
src/set_f.c
+ src/set_float128.c
+ src/set_flt.c
+ src/set_inf.c
+ src/set_ld.c
+ src/set_nan.c
src/set_prc_raw.c
src/set_prec.c
src/set_q.c
+ src/set_rnd.c
src/set_si.c
+ src/set_si_2exp.c
+ src/set_sj.c
src/set_str.c
src/set_str_raw.c
src/set_ui.c
+ src/set_ui_2exp.c
+ src/set_uj.c
src/set_z.c
+ src/set_zero.c
+ src/set_z_exp.c
+ src/sgn.c
+ src/signbit.c
+ src/sin.c
+ src/sinh.c
+ src/sinh_cosh.c
+ src/sin_cos.c
+ src/si_op.c
+ src/sqr.c
src/sqrt.c
src/sqrt_ui.c
+ src/stack_interface.c
+ src/strtofr.c
src/sub.c
src/sub1.c
+ src/sub1sp.c
+ src/subnormal.c
+ src/sub_d.c
src/sub_ui.c
- src/rint.c
+ src/sum.c
+ src/swap.c
+ src/tan.c
+ src/tanh.c
+ src/ubf.c
+ src/uceil_exp2.c
+ src/uceil_log2.c
+ src/ufloor_log2.c
src/ui_div.c
+ src/ui_pow.c
+ src/ui_pow_ui.c
src/ui_sub.c
src/urandom.c
src/urandomb.c
- src/get_z_exp.c
- src/swap.c
- src/factorial.c
- src/cosh.c
- src/sinh.c
- src/tanh.c
- src/sinh_cosh.c
- src/acosh.c
- src/asinh.c
- src/atanh.c
- src/atan.c
- src/cmp2.c
- src/exp_2.c
- src/asin.c
- src/const_euler.c
- src/cos.c
- src/sin.c
- src/tan.c
- src/fma.c
- src/fms.c
- src/hypot.c
- src/log1p.c
- src/expm1.c
- src/log2.c
- src/log10.c
- src/ui_pow.c
- src/ui_pow_ui.c
- src/minmax.c
- src/dim.c
- src/signbit.c
- src/copysign.c
- src/setsign.c
- src/gmp_op.c
- src/init2.c
- src/acos.c
- src/sin_cos.c
- src/set_nan.c
- src/set_inf.c
- src/set_zero.c
- src/powerof2.c
- src/gamma.c
- src/set_ld.c
- src/get_ld.c
- src/cbrt.c
- src/volatile.c
- src/fits_s.h
- src/fits_sshort.c
- src/fits_sint.c
- src/fits_slong.c
- src/fits_u.h
- src/fits_ushort.c
- src/fits_uint.c
- src/fits_ulong.c
- src/fits_uintmax.c
- src/fits_intmax.c
- src/get_si.c
- src/get_ui.c
- src/zeta.c
- src/cmp_d.c
- src/erf.c
- src/inits.c
- src/inits2.c
- src/clears.c
- src/sgn.c
- src/check.c
- src/sub1sp.c
+ src/vasprintf.c
src/version.c
- src/mpn_exp.c
- src/mpfr-gmp.c
- src/mp_clz_tab.c
- src/sum.c
- src/add1sp.c
- src/free_cache.c
- src/si_op.c
- src/cmp_ld.c
- src/set_ui_2exp.c
- src/set_si_2exp.c
- src/set_uj.c
- src/set_sj.c
- src/get_sj.c
- src/get_uj.c
- src/get_z.c
- src/iszero.c
- src/cache.c
- src/sqr.c
- src/int_ceil_log2.c
- src/isqrt.c
- src/strtofr.c
- src/pow_z.c
- src/logging.c
- src/mulders.c
- src/get_f.c
- src/round_p.c
- src/erfc.c
- src/atan2.c
- src/subnormal.c
- src/const_catalan.c
- src/root.c
- src/gen_inverse.h
- src/sec.c
- src/csc.c
- src/cot.c
- src/eint.c
- src/sech.c
- src/csch.c
- src/coth.c
- src/round_near_x.c
- src/constant.c
- src/abort_prec_max.c
- src/stack_interface.c
- src/lngamma.c
- src/zeta_ui.c
- src/set_d64.c
- src/get_d64.c
- src/jn.c
+ src/volatile.c
src/yn.c
- src/rem1.c
- src/get_patches.c
- src/add_d.c
- src/sub_d.c
- src/d_sub.c
- src/mul_d.c
- src/div_d.c
- src/d_div.c
- src/li2.c
- src/rec_sqrt.c
- src/min_prec.c
- src/buildopt.c
- src/digamma.c
- src/bernoulli.c
- src/isregular.c
- src/set_flt.c
- src/get_flt.c
- src/scale2.c
- src/set_z_exp.c
- src/ai.c
- src/gammaonethird.c
- src/ieee_floats.h
- src/grandom.c)
+ src/zeta.c
+ src/zeta_ui.c)
configure_file("src/mparam_h.in" "mparam.h")
diff --git a/ports/mpfr/CONTROL b/ports/mpfr/CONTROL
index fdfe6deb0..e9f4451be 100644
--- a/ports/mpfr/CONTROL
+++ b/ports/mpfr/CONTROL
@@ -1,4 +1,4 @@
Source: mpfr
-Version: 3.1.6-2
+Version: 4.0.1
Description: The MPFR library is a C library for multiple-precision floating-point computations with correct rounding
Build-Depends: mpir
diff --git a/ports/mpfr/gmp_printf.c b/ports/mpfr/gmp_printf.c
deleted file mode 100644
index 1ccb94c0c..000000000
--- a/ports/mpfr/gmp_printf.c
+++ /dev/null
@@ -1,6 +0,0 @@
-#include <stdio.h>
-#include <stdarg.h>
-
-extern int __gmpfr_fprintf(const char *fmt, va_list argp) {
- return fprintf(stderr, fmt, argp);
-}
diff --git a/ports/mpfr/portfile.cmake b/ports/mpfr/portfile.cmake
index 4b534ff0c..7e455041b 100644
--- a/ports/mpfr/portfile.cmake
+++ b/ports/mpfr/portfile.cmake
@@ -9,7 +9,6 @@ vcpkg_download_distfile(ARCHIVE
vcpkg_extract_source_archive(${ARCHIVE})
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
file(COPY ${CMAKE_CURRENT_LIST_DIR}/test_stdarg.c DESTINATION ${SOURCE_PATH})
-file(COPY ${CMAKE_CURRENT_LIST_DIR}/gmp_printf.c DESTINATION ${SOURCE_PATH}/src)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
diff --git a/ports/nanodbc/0001_cmake.patch b/ports/nanodbc/0001_cmake.patch
deleted file mode 100644
index 36d57be0e..000000000
--- a/ports/nanodbc/0001_cmake.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 9f4aa71..94edd95 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -201,9 +201,16 @@ endif()
- if(NANODBC_INSTALL)
- install(FILES src/nanodbc.h DESTINATION include)
- if(NANODBC_STATIC)
-- install(TARGETS nanodbc ARCHIVE DESTINATION lib)
-+ install(
-+ TARGETS nanodbc
-+ ARCHIVE DESTINATION lib
-+ LIBRARY DESTINATION lib)
- else()
-- install(TARGETS nanodbc LIBRARY DESTINATION lib)
-+ install(
-+ TARGETS nanodbc
-+ ARCHIVE DESTINATION lib
-+ LIBRARY DESTINATION lib
-+ RUNTIME DESTINATION bin)
- endif()
- message(STATUS "Target install: Turned on")
- else()
diff --git a/ports/nanodbc/0002_msvc14_codecvt.patch b/ports/nanodbc/0002_msvc14_codecvt.patch
deleted file mode 100644
index ae499bcf9..000000000
--- a/ports/nanodbc/0002_msvc14_codecvt.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff --git a/src/nanodbc.cpp b/src/nanodbc.cpp
-index 8e02d4a..2e42b91 100644
---- a/src/nanodbc.cpp
-+++ b/src/nanodbc.cpp
-@@ -209,10 +209,11 @@ namespace
- out = utf_to_utf<char>(in.c_str(), in.c_str() + in.size());
- #else
- #if defined(_MSC_VER) && (_MSC_VER == 1900)
-- // Workaround for confirmed bug in VS2015.
-- // See: https://social.msdn.microsoft.com/Forums/en-US/8f40dcd8-c67f-4eba-9134-a19b9178e481/vs-2015-rc-linker-stdcodecvt-error
-- auto p = reinterpret_cast<wide_char_t const*>(in.data());
-- out = std::wstring_convert<NANODBC_CODECVT_TYPE<wide_char_t>, wide_char_t>().to_bytes(p, p + in.size());
-+ // Workaround for confirmed bug in VS2015. See:
-+ // https://connect.microsoft.com/VisualStudio/Feedback/Details/1403302
-+ // https://social.msdn.microsoft.com/Forums/en-US/8f40dcd8-c67f-4eba-9134-a19b9178e481/vs-2015-rc-linker-stdcodecvt-error
-+ auto p = reinterpret_cast<unsigned short const*>(in.data());
-+ out = std::wstring_convert<NANODBC_CODECVT_TYPE<unsigned short>, unsigned short>().to_bytes(p, p + in.size());
- #else
- out = std::wstring_convert<NANODBC_CODECVT_TYPE<wide_char_t>, wide_char_t>().to_bytes(in);
- #endif
-@@ -226,9 +227,10 @@ namespace
- using boost::locale::conv::utf_to_utf;
- out = utf_to_utf<wide_char_t>(in.c_str(), in.c_str() + in.size());
- #elif defined(_MSC_VER) && (_MSC_VER == 1900)
-- // Workaround for confirmed bug in VS2015.
-- // See: https://social.msdn.microsoft.com/Forums/en-US/8f40dcd8-c67f-4eba-9134-a19b9178e481/vs-2015-rc-linker-stdcodecvt-error
-- auto s = std::wstring_convert<NANODBC_CODECVT_TYPE<wide_char_t>, wide_char_t>().from_bytes(in);
-+ // Workaround for confirmed bug in VS2015. See:
-+ // https://connect.microsoft.com/VisualStudio/Feedback/Details/1403302
-+ // https://social.msdn.microsoft.com/Forums/en-US/8f40dcd8-c67f-4eba-9134-a19b9178e481/vs-2015-rc-linker-stdcodecvt-error
-+ auto s = std::wstring_convert<NANODBC_CODECVT_TYPE<unsigned short>, unsigned short>().from_bytes(in);
- auto p = reinterpret_cast<wide_char_t const*>(s.data());
- out.assign(p, p + s.size());
- #else
diff --git a/ports/nanodbc/0003_export_def.patch b/ports/nanodbc/0003_export_def.patch
deleted file mode 100644
index 3dd3649ae..000000000
--- a/ports/nanodbc/0003_export_def.patch
+++ /dev/null
@@ -1,417 +0,0 @@
-diff --git a/src/nanodbc.cpp b/src/nanodbc.cpp
-index 8e02d4a..0483660 100644
---- a/src/nanodbc.cpp
-+++ b/src/nanodbc.cpp
-@@ -3253,10 +3253,10 @@ unsigned long statement::parameter_size(short param) const
-
- // We need to instantiate each form of bind() for each of our supported data types.
- #define NANODBC_INSTANTIATE_BINDS(type) \
-- template void statement::bind(short, const type*, param_direction); /* 1-ary */ \
-- template void statement::bind(short, const type*, std::size_t, param_direction); /* n-ary */ \
-- template void statement::bind(short, const type*, std::size_t, const type*, param_direction); /* n-ary, sentry */ \
-- template void statement::bind(short, const type*, std::size_t, const bool*, param_direction) /* n-ary, flags */ \
-+ template NANODBC_API void statement::bind(short, const type*, param_direction); /* 1-ary */ \
-+ template NANODBC_API void statement::bind(short, const type*, std::size_t, param_direction); /* n-ary */ \
-+ template NANODBC_API void statement::bind(short, const type*, std::size_t, const type*, param_direction); /* n-ary, sentry */ \
-+ template NANODBC_API void statement::bind(short, const type*, std::size_t, const bool*, param_direction) /* n-ary, flags */ \
- /**/
-
- // The following are the only supported instantiations of statement::bind().
-@@ -3875,112 +3875,112 @@ result::operator bool() const
- }
-
- // The following are the only supported instantiations of result::get_ref().
--template void result::get_ref(short, string_type::value_type&) const;
--template void result::get_ref(short, short&) const;
--template void result::get_ref(short, unsigned short&) const;
--template void result::get_ref(short, int32_t&) const;
--template void result::get_ref(short, uint32_t&) const;
--template void result::get_ref(short, int64_t&) const;
--template void result::get_ref(short, uint64_t&) const;
--template void result::get_ref(short, float&) const;
--template void result::get_ref(short, double&) const;
--template void result::get_ref(short, string_type&) const;
--template void result::get_ref(short, date&) const;
--template void result::get_ref(short, timestamp&) const;
--
--template void result::get_ref(const string_type&, string_type::value_type&) const;
--template void result::get_ref(const string_type&, short&) const;
--template void result::get_ref(const string_type&, unsigned short&) const;
--template void result::get_ref(const string_type&, int32_t&) const;
--template void result::get_ref(const string_type&, uint32_t&) const;
--template void result::get_ref(const string_type&, int64_t&) const;
--template void result::get_ref(const string_type&, uint64_t&) const;
--template void result::get_ref(const string_type&, float&) const;
--template void result::get_ref(const string_type&, double&) const;
--template void result::get_ref(const string_type&, string_type&) const;
--template void result::get_ref(const string_type&, date&) const;
--template void result::get_ref(const string_type&, timestamp&) const;
-+template NANODBC_API void result::get_ref(short, string_type::value_type&) const;
-+template NANODBC_API void result::get_ref(short, short&) const;
-+template NANODBC_API void result::get_ref(short, unsigned short&) const;
-+template NANODBC_API void result::get_ref(short, int32_t&) const;
-+template NANODBC_API void result::get_ref(short, uint32_t&) const;
-+template NANODBC_API void result::get_ref(short, int64_t&) const;
-+template NANODBC_API void result::get_ref(short, uint64_t&) const;
-+template NANODBC_API void result::get_ref(short, float&) const;
-+template NANODBC_API void result::get_ref(short, double&) const;
-+template NANODBC_API void result::get_ref(short, string_type&) const;
-+template NANODBC_API void result::get_ref(short, date&) const;
-+template NANODBC_API void result::get_ref(short, timestamp&) const;
-+
-+template NANODBC_API void result::get_ref(const string_type&, string_type::value_type&) const;
-+template NANODBC_API void result::get_ref(const string_type&, short&) const;
-+template NANODBC_API void result::get_ref(const string_type&, unsigned short&) const;
-+template NANODBC_API void result::get_ref(const string_type&, int32_t&) const;
-+template NANODBC_API void result::get_ref(const string_type&, uint32_t&) const;
-+template NANODBC_API void result::get_ref(const string_type&, int64_t&) const;
-+template NANODBC_API void result::get_ref(const string_type&, uint64_t&) const;
-+template NANODBC_API void result::get_ref(const string_type&, float&) const;
-+template NANODBC_API void result::get_ref(const string_type&, double&) const;
-+template NANODBC_API void result::get_ref(const string_type&, string_type&) const;
-+template NANODBC_API void result::get_ref(const string_type&, date&) const;
-+template NANODBC_API void result::get_ref(const string_type&, timestamp&) const;
-
- // The following are the only supported instantiations of result::get_ref() with fallback.
--template void result::get_ref(short, const string_type::value_type&, string_type::value_type&) const;
--template void result::get_ref(short, const short&, short&) const;
--template void result::get_ref(short, const unsigned short&, unsigned short&) const;
--template void result::get_ref(short, const int32_t&, int32_t&) const;
--template void result::get_ref(short, const uint32_t&, uint32_t&) const;
--template void result::get_ref(short, const int64_t&, int64_t&) const;
--template void result::get_ref(short, const uint64_t&, uint64_t&) const;
--template void result::get_ref(short, const float&, float&) const;
--template void result::get_ref(short, const double&, double&) const;
--template void result::get_ref(short, const string_type&, string_type&) const;
--template void result::get_ref(short, const date&, date&) const;
--template void result::get_ref(short, const timestamp&, timestamp&) const;
--
--template void result::get_ref(const string_type&, const string_type::value_type&, string_type::value_type&) const;
--template void result::get_ref(const string_type&, const short&, short&) const;
--template void result::get_ref(const string_type&, const unsigned short&, unsigned short&) const;
--template void result::get_ref(const string_type&, const int32_t&, int32_t&) const;
--template void result::get_ref(const string_type&, const uint32_t&, uint32_t&) const;
--template void result::get_ref(const string_type&, const int64_t&, int64_t&) const;
--template void result::get_ref(const string_type&, const uint64_t&, uint64_t&) const;
--template void result::get_ref(const string_type&, const float&, float&) const;
--template void result::get_ref(const string_type&, const double&, double&) const;
--template void result::get_ref(const string_type&, const string_type&, string_type&) const;
--template void result::get_ref(const string_type&, const date&, date&) const;
--template void result::get_ref(const string_type&, const timestamp&, timestamp&) const;
-+template NANODBC_API void result::get_ref(short, const string_type::value_type&, string_type::value_type&) const;
-+template NANODBC_API void result::get_ref(short, const short&, short&) const;
-+template NANODBC_API void result::get_ref(short, const unsigned short&, unsigned short&) const;
-+template NANODBC_API void result::get_ref(short, const int32_t&, int32_t&) const;
-+template NANODBC_API void result::get_ref(short, const uint32_t&, uint32_t&) const;
-+template NANODBC_API void result::get_ref(short, const int64_t&, int64_t&) const;
-+template NANODBC_API void result::get_ref(short, const uint64_t&, uint64_t&) const;
-+template NANODBC_API void result::get_ref(short, const float&, float&) const;
-+template NANODBC_API void result::get_ref(short, const double&, double&) const;
-+template NANODBC_API void result::get_ref(short, const string_type&, string_type&) const;
-+template NANODBC_API void result::get_ref(short, const date&, date&) const;
-+template NANODBC_API void result::get_ref(short, const timestamp&, timestamp&) const;
-+
-+template NANODBC_API void result::get_ref(const string_type&, const string_type::value_type&, string_type::value_type&) const;
-+template NANODBC_API void result::get_ref(const string_type&, const short&, short&) const;
-+template NANODBC_API void result::get_ref(const string_type&, const unsigned short&, unsigned short&) const;
-+template NANODBC_API void result::get_ref(const string_type&, const int32_t&, int32_t&) const;
-+template NANODBC_API void result::get_ref(const string_type&, const uint32_t&, uint32_t&) const;
-+template NANODBC_API void result::get_ref(const string_type&, const int64_t&, int64_t&) const;
-+template NANODBC_API void result::get_ref(const string_type&, const uint64_t&, uint64_t&) const;
-+template NANODBC_API void result::get_ref(const string_type&, const float&, float&) const;
-+template NANODBC_API void result::get_ref(const string_type&, const double&, double&) const;
-+template NANODBC_API void result::get_ref(const string_type&, const string_type&, string_type&) const;
-+template NANODBC_API void result::get_ref(const string_type&, const date&, date&) const;
-+template NANODBC_API void result::get_ref(const string_type&, const timestamp&, timestamp&) const;
-
- // The following are the only supported instantiations of result::get().
--template string_type::value_type result::get(short) const;
--template short result::get(short) const;
--template unsigned short result::get(short) const;
--template int32_t result::get(short) const;
--template uint32_t result::get(short) const;
--template int64_t result::get(short) const;
--template uint64_t result::get(short) const;
--template float result::get(short) const;
--template double result::get(short) const;
--template string_type result::get(short) const;
--template date result::get(short) const;
--template timestamp result::get(short) const;
--
--template string_type::value_type result::get(const string_type&) const;
--template short result::get(const string_type&) const;
--template unsigned short result::get(const string_type&) const;
--template int32_t result::get(const string_type&) const;
--template uint32_t result::get(const string_type&) const;
--template int64_t result::get(const string_type&) const;
--template uint64_t result::get(const string_type&) const;
--template float result::get(const string_type&) const;
--template double result::get(const string_type&) const;
--template string_type result::get(const string_type&) const;
--template date result::get(const string_type&) const;
--template timestamp result::get(const string_type&) const;
-+template NANODBC_API string_type::value_type result::get(short) const;
-+template NANODBC_API short result::get(short) const;
-+template NANODBC_API unsigned short result::get(short) const;
-+template NANODBC_API int32_t result::get(short) const;
-+template NANODBC_API uint32_t result::get(short) const;
-+template NANODBC_API int64_t result::get(short) const;
-+template NANODBC_API uint64_t result::get(short) const;
-+template NANODBC_API float result::get(short) const;
-+template NANODBC_API double result::get(short) const;
-+template NANODBC_API string_type result::get(short) const;
-+template NANODBC_API date result::get(short) const;
-+template NANODBC_API timestamp result::get(short) const;
-+
-+template NANODBC_API string_type::value_type result::get(const string_type&) const;
-+template NANODBC_API short result::get(const string_type&) const;
-+template NANODBC_API unsigned short result::get(const string_type&) const;
-+template NANODBC_API int32_t result::get(const string_type&) const;
-+template NANODBC_API uint32_t result::get(const string_type&) const;
-+template NANODBC_API int64_t result::get(const string_type&) const;
-+template NANODBC_API uint64_t result::get(const string_type&) const;
-+template NANODBC_API float result::get(const string_type&) const;
-+template NANODBC_API double result::get(const string_type&) const;
-+template NANODBC_API string_type result::get(const string_type&) const;
-+template NANODBC_API date result::get(const string_type&) const;
-+template NANODBC_API timestamp result::get(const string_type&) const;
-
- // The following are the only supported instantiations of result::get() with fallback.
--template string_type::value_type result::get(short, const string_type::value_type&) const;
--template short result::get(short, const short&) const;
--template unsigned short result::get(short, const unsigned short&) const;
--template int32_t result::get(short, const int32_t&) const;
--template uint32_t result::get(short, const uint32_t&) const;
--template int64_t result::get(short, const int64_t&) const;
--template uint64_t result::get(short, const uint64_t&) const;
--template float result::get(short, const float&) const;
--template double result::get(short, const double&) const;
--template string_type result::get(short, const string_type&) const;
--template date result::get(short, const date&) const;
--template timestamp result::get(short, const timestamp&) const;
--
--template string_type::value_type result::get(const string_type&, const string_type::value_type&) const;
--template short result::get(const string_type&, const short&) const;
--template unsigned short result::get(const string_type&, const unsigned short&) const;
--template int32_t result::get(const string_type&, const int32_t&) const;
--template uint32_t result::get(const string_type&, const uint32_t&) const;
--template int64_t result::get(const string_type&, const int64_t&) const;
--template uint64_t result::get(const string_type&, const uint64_t&) const;
--template float result::get(const string_type&, const float&) const;
--template double result::get(const string_type&, const double&) const;
--template string_type result::get(const string_type&, const string_type&) const;
--template date result::get(const string_type&, const date&) const;
--template timestamp result::get(const string_type&, const timestamp&) const;
-+template NANODBC_API string_type::value_type result::get(short, const string_type::value_type&) const;
-+template NANODBC_API short result::get(short, const short&) const;
-+template NANODBC_API unsigned short result::get(short, const unsigned short&) const;
-+template NANODBC_API int32_t result::get(short, const int32_t&) const;
-+template NANODBC_API uint32_t result::get(short, const uint32_t&) const;
-+template NANODBC_API int64_t result::get(short, const int64_t&) const;
-+template NANODBC_API uint64_t result::get(short, const uint64_t&) const;
-+template NANODBC_API float result::get(short, const float&) const;
-+template NANODBC_API double result::get(short, const double&) const;
-+template NANODBC_API string_type result::get(short, const string_type&) const;
-+template NANODBC_API date result::get(short, const date&) const;
-+template NANODBC_API timestamp result::get(short, const timestamp&) const;
-+
-+template NANODBC_API string_type::value_type result::get(const string_type&, const string_type::value_type&) const;
-+template NANODBC_API short result::get(const string_type&, const short&) const;
-+template NANODBC_API unsigned short result::get(const string_type&, const unsigned short&) const;
-+template NANODBC_API int32_t result::get(const string_type&, const int32_t&) const;
-+template NANODBC_API uint32_t result::get(const string_type&, const uint32_t&) const;
-+template NANODBC_API int64_t result::get(const string_type&, const int64_t&) const;
-+template NANODBC_API uint64_t result::get(const string_type&, const uint64_t&) const;
-+template NANODBC_API float result::get(const string_type&, const float&) const;
-+template NANODBC_API double result::get(const string_type&, const double&) const;
-+template NANODBC_API string_type result::get(const string_type&, const string_type&) const;
-+template NANODBC_API date result::get(const string_type&, const date&) const;
-+template NANODBC_API timestamp result::get(const string_type&, const timestamp&) const;
-
- } // namespace nanodbc
-
-diff --git a/src/nanodbc.h b/src/nanodbc.h
-index f4e7b3d..2bfc6a8 100644
---- a/src/nanodbc.h
-+++ b/src/nanodbc.h
-@@ -164,6 +164,16 @@ namespace nanodbc
- #define NANODBC_NOEXCEPT noexcept
- #endif
-
-+#pragma warning(disable: 4275)
-+#pragma warning(disable: 4251)
-+#ifdef nanodbc_EXPORTS
-+ /* We are building this library */
-+ #define NANODBC_API __declspec(dllexport)
-+#else
-+ /* We are using this library */
-+ #define NANODBC_API __declspec(dllimport)
-+#endif
-+
- // 8888888888 888 888 888 888 d8b
- // 888 888 888 888 888 Y8P
- // 888 888 888 888 888
-@@ -188,16 +198,17 @@ namespace nanodbc
-
- //! \brief Type incompatible.
- //! \see exceptions
--class type_incompatible_error : public std::runtime_error
-+class NANODBC_API type_incompatible_error : public std::runtime_error
- {
- public:
- type_incompatible_error();
- const char* what() const NANODBC_NOEXCEPT;
- };
-
-+
- //! \brief Accessed null data.
- //! \see exceptions
--class null_access_error : public std::runtime_error
-+class NANODBC_API null_access_error : public std::runtime_error
- {
- public:
- null_access_error();
-@@ -206,7 +217,7 @@ public:
-
- //! \brief Index out of range.
- //! \see exceptions
--class index_range_error : public std::runtime_error
-+class NANODBC_API index_range_error : public std::runtime_error
- {
- public:
- index_range_error();
-@@ -215,7 +226,7 @@ public:
-
- //! \brief Programming logic error.
- //! \see exceptions
--class programming_error : public std::runtime_error
-+class NANODBC_API programming_error : public std::runtime_error
- {
- public:
- explicit programming_error(const std::string& info);
-@@ -224,7 +235,7 @@ public:
-
- //! \brief General database error.
- //! \see exceptions
--class database_error : public std::runtime_error
-+class NANODBC_API database_error : public std::runtime_error
- {
- public:
- //! \brief Creates a runtime_error with a message describing the last ODBC error generated for the given handle and handle_type.
-@@ -298,7 +309,7 @@ struct timestamp
- //! \brief A resource for managing transaction commits and rollbacks.
- //!
- //! \attention You will want to use transactions if you are doing batch operations because it will prevent auto commits from occurring after each individual operation is executed.
--class transaction
-+class NANODBC_API transaction
- {
- public:
- //! \brief Begin a transaction on the given connection object.
-@@ -361,7 +372,7 @@ private:
- // MARK: Statement -
-
- //! \brief Represents a statement on the database.
--class statement
-+class NANODBC_API statement
- {
- public:
- //! \brief Provides support for retrieving output/return parameters.
-@@ -734,7 +745,7 @@ private:
- // MARK: Connection -
-
- //! \brief Manages and encapsulates ODBC resources such as the connection and environment handles.
--class connection
-+class NANODBC_API connection
- {
- public:
- //! \brief Create new connection object, initially not connected.
-@@ -903,7 +914,7 @@ class catalog;
- //!
- //! \see statement::execute(), statement::execute_direct()
- //! \note result objects may be copied, however all copies will refer to the same underlying ODBC result set.
--class result
-+class NANODBC_API result
- {
- public:
- //! Empty result set.
-@@ -1023,7 +1034,7 @@ public:
- //! \param column position.
- //! \throws database_error, index_range_error, type_incompatible_error, null_access_error
- template<class T>
-- T get(short column) const;
-+ T get(short column) const;
-
- //! \brief Gets data from the given column of the current rowset.
- //! If the data is null, fallback is returned instead.
-@@ -1139,7 +1150,7 @@ private:
- // "Y88P"
- // MARK: Catalog -
-
--class catalog
-+class NANODBC_API catalog
- {
- public:
-
-@@ -1319,7 +1330,7 @@ private:
- //! \return A result set object.
- //! \attention You will want to use transactions if you are doing batch operations because it will prevent auto commits from occurring after each individual operation is executed.
- //! \see open(), prepare(), execute(), result, transaction
--result execute(
-+result NANODBC_API execute(
- connection& conn
- , const string_type& query
- , long batch_operations = 1
-@@ -1333,7 +1344,7 @@ result execute(
- //! \return A result set object.
- //! \attention You will want to use transactions if you are doing batch operations because it will prevent auto commits from occurring after each individual operation is executed.
- //! \see open(), prepare(), execute(), result, transaction
--void just_execute(
-+void NANODBC_API just_execute(
- connection& conn
- , const string_type& query
- , long batch_operations = 1
-@@ -1346,7 +1357,7 @@ void just_execute(
- //! \return A result set object.
- //! \attention You will want to use transactions if you are doing batch operations because it will prevent auto commits from occurring after each individual operation is executed.
- //! \see open(), prepare(), execute(), result
--result execute(statement& stmt, long batch_operations = 1);
-+result NANODBC_API execute(statement& stmt, long batch_operations = 1);
-
- //! \brief Execute the previously prepared query now and without creating result object.
- //! \param stmt The prepared statement that will be executed.
-@@ -1355,7 +1366,7 @@ result execute(statement& stmt, long batch_operations = 1);
- //! \return A result set object.
- //! \attention You will want to use transactions if you are doing batch operations because it will prevent auto commits from occurring after each individual operation is executed.
- //! \see open(), prepare(), execute(), result
--void just_execute(statement& stmt, long batch_operations = 1);
-+void NANODBC_API just_execute(statement& stmt, long batch_operations = 1);
-
- //! \brief Execute the previously prepared query now.
- //! Executes within the context of a transaction object and commits the transaction directly after execution.
-@@ -1364,7 +1375,7 @@ void just_execute(statement& stmt, long batch_operations = 1);
- //! \throws database_error
- //! \return A result set object.
- //! \see open(), prepare(), execute(), result, transaction
--result transact(statement& stmt, long batch_operations);
-+result NANODBC_API transact(statement& stmt, long batch_operations);
-
- //! \brief Execute the previously prepared query now and without creating result object.
- //! Executes within the context of a transaction object and commits the transaction directly after execution.
-@@ -1373,7 +1384,7 @@ result transact(statement& stmt, long batch_operations);
- //! \throws database_error
- //! \return A result set object.
- //! \see open(), prepare(), execute(), result, transaction
--void just_transact(statement& stmt, long batch_operations);
-+void NANODBC_API just_transact(statement& stmt, long batch_operations);
-
- //! \brief Prepares the given statement to execute on it associated connection.
- //! If the statement is not open throws programming_error.
-@@ -1382,7 +1393,7 @@ void just_transact(statement& stmt, long batch_operations);
- //! \param timeout The number in seconds before query timeout. Default is 0 indicating no timeout.
- //! \see open()
- //! \throws database_error, programming_error
--void prepare(statement& stmt, const string_type& query, long timeout = 0);
-+void NANODBC_API prepare(statement& stmt, const string_type& query, long timeout = 0);
-
- //! @}
-
diff --git a/ports/nanodbc/0004_unicode.patch b/ports/nanodbc/0004_unicode.patch
deleted file mode 100644
index a4def235c..000000000
--- a/ports/nanodbc/0004_unicode.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-diff --git a/src/nanodbc.cpp b/src/nanodbc.cpp
-index 8e02d4a..c408af7 100644
---- a/src/nanodbc.cpp
-+++ b/src/nanodbc.cpp
-@@ -90,7 +90,7 @@
- typedef std::u32string wide_string_type;
- #define NANODBC_CODECVT_TYPE std::codecvt_utf8
- #else
-- typedef std::u16string wide_string_type;
-+ typedef std::wstring wide_string_type;
- #define NANODBC_CODECVT_TYPE std::codecvt_utf8_utf16
- #endif
- typedef wide_string_type::value_type wide_char_t;
-diff --git a/src/nanodbc.h b/src/nanodbc.h
-index f4e7b3d..bb7bacd 100644
---- a/src/nanodbc.h
-+++ b/src/nanodbc.h
-@@ -127,13 +127,13 @@ namespace nanodbc
-
- //! @}
-
--// You must explicitly request Unicode support by defining NANODBC_USE_UNICODE at compile time.
-+#define NANODBC_USE_UNICODE 1
- #ifndef DOXYGEN
- #ifdef NANODBC_USE_UNICODE
- #ifdef NANODBC_USE_IODBC_WIDE_STRINGS
- typedef std::u32string string_type;
- #else
-- typedef std::u16string string_type;
-+ typedef std::wstring string_type;
- #endif
- #else
- typedef std::string string_type;
diff --git a/ports/nanodbc/CONTROL b/ports/nanodbc/CONTROL
index ef676937e..075bd4d82 100644
--- a/ports/nanodbc/CONTROL
+++ b/ports/nanodbc/CONTROL
@@ -1,3 +1,3 @@
Source: nanodbc
-Version: 2.12.4-2
+Version: 2.12.4-3
Description: A small C++ wrapper for the native C ODBC API.
diff --git a/ports/nanodbc/portfile.cmake b/ports/nanodbc/portfile.cmake
index ff90b4b19..7014c7eac 100644
--- a/ports/nanodbc/portfile.cmake
+++ b/ports/nanodbc/portfile.cmake
@@ -2,33 +2,16 @@ include(vcpkg_common_functions)
# Only static libraries are supported.
# See https://github.com/nanodbc/nanodbc/issues/13
-if(VCPKG_USE_HEAD_VERSION) # v2.13
- vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
-else() # v2.12.4
- vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
-endif()
-
+vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO nanodbc/nanodbc
- REF v2.12.4
- SHA512 b9a924516b2a777e5f1497774997672320548722ed53413b0a7ad5d503e2f8ca1099f5059a912b7aae410928f4c4edcdfd02e4cfbf415976cd222697b354b4e6
+ REF fe1d590991da30dc9cb71676c4d80cb2d9acb49e
+ SHA512 9c7e638b15b3c7ce418374c22a76be4f3f5901e7736938a8b0549b312bb7fa80bc8d34b2a52242a5b94196bb0994481a36e043a4f71cdc1d9af778915d017ac2
HEAD_REF master
)
-# Legacy, remove at release of v2.13
-if(NOT VCPKG_USE_HEAD_VERSION)
-vcpkg_apply_patches(
- SOURCE_PATH ${SOURCE_PATH}
- PATCHES
- ${CMAKE_CURRENT_LIST_DIR}/0001_cmake.patch
- ${CMAKE_CURRENT_LIST_DIR}/0002_msvc14_codecvt.patch
- ${CMAKE_CURRENT_LIST_DIR}/0003_export_def.patch
- ${CMAKE_CURRENT_LIST_DIR}/0004_unicode.patch
-)
-endif()
-# /Legacy
-
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
OPTIONS
diff --git a/ports/opencv/0005-remove-custom-protobuf-find-package.patch b/ports/opencv/0005-remove-custom-protobuf-find-package.patch
index 2944810e5..91ac137f9 100644
--- a/ports/opencv/0005-remove-custom-protobuf-find-package.patch
+++ b/ports/opencv/0005-remove-custom-protobuf-find-package.patch
@@ -1,11 +1,14 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -633,7 +633,7 @@ include(cmake/OpenCVFindLibsGUI.cmake)
+@@ -633,7 +633,10 @@ include(cmake/OpenCVFindLibsGUI.cmake)
include(cmake/OpenCVFindLibsVideo.cmake)
include(cmake/OpenCVFindLibsPerf.cmake)
include(cmake/OpenCVFindLAPACK.cmake)
-include(cmake/OpenCVFindProtobuf.cmake)
+find_package(protobuf)
++if(Protobuf_LIBRARIES)
++ set(HAVE_PROTOBUF TRUE)
++endif()
# ----------------------------------------------------------------------------
# Detect other 3rd-party libraries/tools
@@ -16,7 +19,7 @@
set(include_dirs ${fw_inc})
set(sources_options "")
-set(libs libprotobuf ${LAPACK_LIBRARIES})
-+set(libs protobuf ${LAPACK_LIBRARIES})
++set(libs protobuf::libprotobuf ${LAPACK_LIBRARIES})
if(OPENCV_DNN_OPENCL AND HAVE_OPENCL)
list(APPEND include_dirs ${OPENCL_INCLUDE_DIRS})
else()
diff --git a/ports/opencv/CONTROL b/ports/opencv/CONTROL
index 5f012d80e..41e73b195 100644
--- a/ports/opencv/CONTROL
+++ b/ports/opencv/CONTROL
@@ -1,5 +1,5 @@
Source: opencv
-Version: 3.4.3-4
+Version: 3.4.3-5
Build-Depends: zlib
Description: computer vision library
Default-Features: opengl, jpeg, png, tiff, eigen, flann
diff --git a/ports/osgearth/CONTROL b/ports/osgearth/CONTROL
index 5a8255a2a..3b2ba3e4b 100644
--- a/ports/osgearth/CONTROL
+++ b/ports/osgearth/CONTROL
@@ -1,4 +1,4 @@
Source: osgearth
-Version: 2.9-2
+Version: 2.10
Description: osgEarth - Dynamic map generation toolkit for OpenSceneGraph Copyright 2015 Pelican Mapping.
Build-Depends: osg
diff --git a/ports/osgearth/portfile.cmake b/ports/osgearth/portfile.cmake
index 77320a2e1..21243fced 100644
--- a/ports/osgearth/portfile.cmake
+++ b/ports/osgearth/portfile.cmake
@@ -26,8 +26,8 @@ vcpkg_download_distfile(
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO gwaldron/osgearth
- REF d1884d819d4a43de32b7ca1ded655c73964bed17
- SHA512 525ad4ce8bcbd7d73a2ed66e7fbcd9d302582276f26dda1ef2baa3828da5c1e302ba81aac95d0a0632c7395cbcd072d2b19d084ba641c1ba92872d42bb6f769c
+ REF osgearth-2.10
+ SHA512 ba742f4fc8dbbdaee65e413d477b713cad8da313a1dc68327997359aca88dadc871b03ad4b09172e3e048164989c2797108db67f14edff8ee5a0c63a8fe1bb0c
HEAD_REF master
PATCHES ${VS2017PATCH}
)
diff --git a/ports/pango/CMakeLists.txt b/ports/pango/CMakeLists.txt
index 71b5f9fed..cc21d3eee 100644
--- a/ports/pango/CMakeLists.txt
+++ b/ports/pango/CMakeLists.txt
@@ -14,9 +14,11 @@ endif()
add_definitions(-DHAVE_CONFIG_H)
include_directories(. ./pango ${CMAKE_CURRENT_BINARY_DIR})
+if(NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
# find libintl
find_path(LIBINTL_INCLUDE_DIR libintl.h)
find_library(LIBINTL_LIBRARY NAMES libintl intl)
+endif()
# find glib
find_path(GLIB_INCLUDE_DIR glib.h)
diff --git a/ports/pango/CONTROL b/ports/pango/CONTROL
index e7b365e0b..9b176290b 100644
--- a/ports/pango/CONTROL
+++ b/ports/pango/CONTROL
@@ -1,4 +1,4 @@
Source: pango
-Version: 1.40.11-2
+Version: 1.40.11-3
Description: Text and font handling library.
Build-Depends: glib, gettext, cairo, fontconfig, freetype, harfbuzz[glib] (!windows-static)
diff --git a/ports/pangolin/CONTROL b/ports/pangolin/CONTROL
index a515ba50e..f7f242293 100644
--- a/ports/pangolin/CONTROL
+++ b/ports/pangolin/CONTROL
@@ -1,4 +1,4 @@
Source: pangolin
-Version: 0.5-3
+Version: 0.5-4
Build-Depends: eigen3, glew, libpng, libjpeg-turbo, ffmpeg
Description: Lightweight GUI Library
diff --git a/ports/pangolin/deprecated_constants.patch b/ports/pangolin/deprecated_constants.patch
new file mode 100644
index 000000000..813d2360d
--- /dev/null
+++ b/ports/pangolin/deprecated_constants.patch
@@ -0,0 +1,69 @@
+diff --git a/src/video/drivers/ffmpeg.cpp b/src/video/drivers/ffmpeg.cpp
+index 435225d..ff30349 100644
+--- a/src/video/drivers/ffmpeg.cpp
++++ b/src/video/drivers/ffmpeg.cpp
+@@ -34,6 +34,8 @@ extern "C"
+ #include <libavutil/mathematics.h>
+ }
+
++#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
++
+ namespace pangolin
+ {
+
+@@ -74,8 +76,10 @@ std::string FfmpegFmtToString(const AVPixelFormat fmt)
+ TEST_PIX_FMT_RETURN(YUVJ420P);
+ TEST_PIX_FMT_RETURN(YUVJ422P);
+ TEST_PIX_FMT_RETURN(YUVJ444P);
++#ifdef FF_API_XVMC
+ TEST_PIX_FMT_RETURN(XVMC_MPEG2_MC);
+ TEST_PIX_FMT_RETURN(XVMC_MPEG2_IDCT);
++#endif
+ TEST_PIX_FMT_RETURN(UYVY422);
+ TEST_PIX_FMT_RETURN(UYYVYY411);
+ TEST_PIX_FMT_RETURN(BGR8);
+@@ -95,11 +99,13 @@ std::string FfmpegFmtToString(const AVPixelFormat fmt)
+ TEST_PIX_FMT_RETURN(YUV440P);
+ TEST_PIX_FMT_RETURN(YUVJ440P);
+ TEST_PIX_FMT_RETURN(YUVA420P);
++#ifdef FF_API_VDPAU
+ TEST_PIX_FMT_RETURN(VDPAU_H264);
+ TEST_PIX_FMT_RETURN(VDPAU_MPEG1);
+ TEST_PIX_FMT_RETURN(VDPAU_MPEG2);
+ TEST_PIX_FMT_RETURN(VDPAU_WMV3);
+ TEST_PIX_FMT_RETURN(VDPAU_VC1);
++#endif
+ TEST_PIX_FMT_RETURN(RGB48BE );
+ TEST_PIX_FMT_RETURN(RGB48LE );
+ TEST_PIX_FMT_RETURN(RGB565BE);
+@@ -119,7 +125,9 @@ std::string FfmpegFmtToString(const AVPixelFormat fmt)
+ TEST_PIX_FMT_RETURN(YUV422P16BE);
+ TEST_PIX_FMT_RETURN(YUV444P16LE);
+ TEST_PIX_FMT_RETURN(YUV444P16BE);
++#ifdef FF_API_VDPAU
+ TEST_PIX_FMT_RETURN(VDPAU_MPEG4);
++#endif
+ TEST_PIX_FMT_RETURN(DXVA2_VLD);
+ TEST_PIX_FMT_RETURN(RGB444BE);
+ TEST_PIX_FMT_RETURN(RGB444LE);
+@@ -559,7 +567,8 @@ void FfmpegVideoOutputStream::WriteFrame(AVFrame* frame)
+
+ int ret;
+ int got_packet = 1;
+-
++
++#if FF_API_LAVF_FMT_RAWPICTURE
+ // Setup AVPacket
+ if (recorder.oc->oformat->flags & AVFMT_RAWPICTURE) {
+ /* Raw video case - directly store the picture in the packet */
+@@ -569,6 +578,10 @@ void FfmpegVideoOutputStream::WriteFrame(AVFrame* frame)
+ pkt.pts = frame->pts;
+ ret = 0;
+ } else {
++#else
++ {
++#endif
++
+ /* encode the image */
+ #if (LIBAVFORMAT_VERSION_MAJOR >= 54)
+ ret = avcodec_encode_video2(stream->codec, &pkt, frame, &got_packet);
diff --git a/ports/pangolin/portfile.cmake b/ports/pangolin/portfile.cmake
index 19763f0d6..b25378c56 100644
--- a/ports/pangolin/portfile.cmake
+++ b/ports/pangolin/portfile.cmake
@@ -6,6 +6,7 @@ vcpkg_from_github(
REF v0.5
SHA512 7ebeec108f33f1aa8b1ad08e3ca128a837b22d33e3fc580021f981784043b023a1bf563bbfa8b51d46863db770b336d24fc84ee3d836b85e0da1848281b2a5b2
HEAD_REF master
+ PATCHES deprecated_constants.patch # Change from upstream pangolin to address build failures from latest ffmpeg library
)
file(REMOVE ${SOURCE_PATH}/CMakeModules/FindGLEW.cmake)
diff --git a/ports/rapidstring/CONTROL b/ports/rapidstring/CONTROL
new file mode 100644
index 000000000..e88c40ec2
--- /dev/null
+++ b/ports/rapidstring/CONTROL
@@ -0,0 +1,3 @@
+Source: rapidstring
+Version: 2018-08-03
+Description: rapidstring is maybe the fastest string library ever written in ANSI C.
diff --git a/ports/rapidstring/fix-cmake-install.patch b/ports/rapidstring/fix-cmake-install.patch
new file mode 100644
index 000000000..624a71d2b
--- /dev/null
+++ b/ports/rapidstring/fix-cmake-install.patch
@@ -0,0 +1,34 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 8543256..8ebce9c 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,15 +1,26 @@
+ cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
+ project(rapidstring LANGUAGES C VERSION 0.1.0)
+ add_library(rapidstring INTERFACE)
+-target_include_directories(rapidstring INTERFACE include)
++target_include_directories(rapidstring INTERFACE
++ $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
++ $<INSTALL_INTERFACE:include>)
+
+ include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/utility.cmake)
+
+ # TODO: Installation.
++install(FILES include/rapidstring.h DESTINATION include)
++
++install(TARGETS rapidstring EXPORT rapidstringConfig)
++
++install(EXPORT rapidstringConfig
++ FILE unofficial-rapidstringConfig.cmake
++ NAMESPACE unofficial::rapidstring::
++ DESTINATION share/cmake/rapidstring
++ PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
+
+ if(BUILD_TESTING)
+ enable_testing()
+ endif()
+
+-add_subdirectory(test)
+-add_subdirectory(benchmark)
++#add_subdirectory(test)
++#add_subdirectory(benchmark)
diff --git a/ports/rapidstring/portfile.cmake b/ports/rapidstring/portfile.cmake
new file mode 100644
index 000000000..2bce2d015
--- /dev/null
+++ b/ports/rapidstring/portfile.cmake
@@ -0,0 +1,27 @@
+include(vcpkg_common_functions)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO boyerjohn/rapidstring
+ REF ee433955c1e9cacfaecbf53c0a13318ab5825bd4
+ SHA512 89e0656323d53dc3c47ba24ad9a032445b0985f21aaace05ea5bdbfb0ade5291193ac06145faf5984bcdff67c2a07a500109ce938174dbf1339fea2d79a6bd10
+ HEAD_REF master
+ PATCHES
+ fix-cmake-install.patch
+)
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS
+ -DBUILD_TESTING=OFF
+)
+
+vcpkg_install_cmake()
+
+vcpkg_fixup_cmake_targets(CONFIG_PATH share/cmake/rapidstring TARGET_PATH share/unofficial-rapidstring)
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug)
+
+# Handle copyright
+configure_file(${SOURCE_PATH}/LICENSE ${CURRENT_PACKAGES_DIR}/share/rapidstring/copyright COPYONLY)
diff --git a/ports/restinio/CONTROL b/ports/restinio/CONTROL
index 1e0ad1d52..5b41dfb39 100644
--- a/ports/restinio/CONTROL
+++ b/ports/restinio/CONTROL
@@ -1,4 +1,4 @@
Source: restinio
-Version: 0.4.8
+Version: 0.4.8.4
Description: A header-only C++14 library that gives you an embedded HTTP/Websocket server targeted primarily for asynchronous processing of HTTP-requests.
Build-Depends: asio, fmt, http-parser
diff --git a/ports/restinio/portfile.cmake b/ports/restinio/portfile.cmake
index 2ce2b7263..7acf213b7 100644
--- a/ports/restinio/portfile.cmake
+++ b/ports/restinio/portfile.cmake
@@ -3,8 +3,8 @@ include(vcpkg_common_functions)
vcpkg_from_bitbucket(
OUT_SOURCE_PATH SOURCE_PATH
REPO sobjectizerteam/restinio-0.4
- REF v.0.4.8
- SHA512 da44a6df47f68294b1f26241d63ab282b16a8111580959ea5d69e18d9faca68fe9932451d07c4cd5732d5ac4e6fab6550842fd6bac6385a622fb618b4a916975
+ REF v.0.4.8.4
+ SHA512 de3461ad5b4315d2b5846063cb69d57a14da29f80652d38a6fe96d27d05586d76363053af3284db97c0c9c6da02038960f2812697737eb23a02006e491fb57f7
)
vcpkg_configure_cmake(
diff --git a/ports/sfgui/CONTROL b/ports/sfgui/CONTROL
index 59a7cdab3..da3ee41a9 100644
--- a/ports/sfgui/CONTROL
+++ b/ports/sfgui/CONTROL
@@ -1,4 +1,4 @@
Source: sfgui
-Version: 0.3.2-2
+Version: 0.4.0
Description: simple and fast graphical user interface library
Build-Depends: sfml
diff --git a/ports/sfgui/portfile.cmake b/ports/sfgui/portfile.cmake
index 66ce7d830..16eeb5618 100644
--- a/ports/sfgui/portfile.cmake
+++ b/ports/sfgui/portfile.cmake
@@ -3,8 +3,8 @@ include(vcpkg_common_functions)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO TankOs/SFGUI
- REF 0.3.2
- SHA512 cd97e421695f6189995c1b7a4180e3738bf785abae37d3eb51ac6d687a88a26a1f088863b37e065edaff6ba43eea379e423b31118324c4daa65dba0b3e904869
+ REF 0.4.0
+ SHA512 15456c6080b7095bcdcec08489b2b91b5cfc36cdf3c0b645b305072e7e835837eb4f95b59371ff176630b2b7ae51da475d8ea0bde5ff7fc0ba74c463bf5f54cf
HEAD_REF master
PATCHES "${CMAKE_CURRENT_LIST_DIR}/use-sfml-targets.patch"
)
@@ -27,9 +27,6 @@ vcpkg_copy_pdbs()
file(INSTALL ${SOURCE_PATH}/LICENSE.md DESTINATION ${CURRENT_PACKAGES_DIR}/share/sfgui RENAME copyright)
-file(RENAME ${CURRENT_PACKAGES_DIR}/cmake/Modules/FindSFGUI.cmake ${CURRENT_PACKAGES_DIR}/share/sfgui/FindSFGUI.cmake)
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/cmake/Modules)
-
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/cmake)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/cmake)
diff --git a/ports/sfml/CONTROL b/ports/sfml/CONTROL
index 371300221..8fcda5bc1 100644
--- a/ports/sfml/CONTROL
+++ b/ports/sfml/CONTROL
@@ -1,4 +1,4 @@
Source: sfml
-Version: 2.5.1
+Version: 2.5.1-1
Description: Simple and fast multimedia library
Build-Depends: freetype, libflac, libogg, libvorbis, openal-soft, stb
diff --git a/ports/sfml/portfile.cmake b/ports/sfml/portfile.cmake
index 22ab3b8a3..a25c5628b 100644
--- a/ports/sfml/portfile.cmake
+++ b/ports/sfml/portfile.cmake
@@ -32,9 +32,9 @@ vcpkg_install_cmake()
vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/SFML)
vcpkg_copy_pdbs()
-if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
FILE(READ ${CURRENT_PACKAGES_DIR}/share/sfml/SFMLConfig.cmake SFML_CONFIG)
- FILE(WRITE ${CURRENT_PACKAGES_DIR}/share/sfml/SFMLConfig.cmake "set(SFML_STATIC_LIBRARIES true)\n${SFML_CONFIG}")
+ FILE(WRITE ${CURRENT_PACKAGES_DIR}/share/sfml/SFMLConfig.cmake "set(SFML_STATIC_LIBRARIES true)\ninclude(CMakeFindDependencyMacro)\nfind_dependency(Freetype)\n${SFML_CONFIG}")
endif()
# move sfml-main to manual link dir
diff --git a/ports/sqlite3/CONTROL b/ports/sqlite3/CONTROL
index 91ea02a14..38a874439 100644
--- a/ports/sqlite3/CONTROL
+++ b/ports/sqlite3/CONTROL
@@ -1,5 +1,5 @@
Source: sqlite3
-Version: 3.25.2
+Version: 3.26.0
Description: SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine.
Feature: tool
diff --git a/ports/sqlite3/portfile.cmake b/ports/sqlite3/portfile.cmake
index b2422aecc..d2a078d29 100644
--- a/ports/sqlite3/portfile.cmake
+++ b/ports/sqlite3/portfile.cmake
@@ -1,7 +1,7 @@
include(vcpkg_common_functions)
-set(SQLITE_VERSION 3250200)
-set(SQLITE_HASH f87b4ab405f85df85b5d63e9e28c4db76202dc2d5461e0d0c626fa7521570d89a1122403c037704859ecb58ac1747ebf4b3c8a2f3a3c3d8492e8060df92e379f)
+set(SQLITE_VERSION 3260000)
+set(SQLITE_HASH ba089abd16857a65fc6cf26558a0d3e6f20c278b8df451b357eea5154f8ccd5645c9cfdb30d0fd4fe64f19dd2f876a6cc4a28455b7b013770c2ce9a607171107)
vcpkg_download_distfile(ARCHIVE
URLS "https://sqlite.org/2018/sqlite-amalgamation-${SQLITE_VERSION}.zip"
diff --git a/ports/tiff/CONTROL b/ports/tiff/CONTROL
index 866437737..45499f1fd 100644
--- a/ports/tiff/CONTROL
+++ b/ports/tiff/CONTROL
@@ -1,4 +1,4 @@
Source: tiff
-Version: 4.0.10
+Version: 4.0.10-1
Build-Depends: zlib, libjpeg-turbo, liblzma (!uwp)
Description: A library that supports the manipulation of TIFF image files
diff --git a/ports/tiff/portfile.cmake b/ports/tiff/portfile.cmake
index 13d8ac7bc..92ba3963c 100644
--- a/ports/tiff/portfile.cmake
+++ b/ports/tiff/portfile.cmake
@@ -31,6 +31,7 @@ vcpkg_configure_cmake(
-DBUILD_TESTS=OFF
-Djbig=OFF # This is disabled by default due to GPL/Proprietary licensing.
-Djpeg12=OFF
+ -Dzstd=OFF
${TIFF_CXX_TARGET}
)
diff --git a/ports/vtk/CONTROL b/ports/vtk/CONTROL
index d06f16331..0eb485dcd 100644
--- a/ports/vtk/CONTROL
+++ b/ports/vtk/CONTROL
@@ -1,5 +1,5 @@
Source: vtk
-Version: 8.1.0-3
+Version: 8.1.0-6
Description: Software system for 3D computer graphics, image processing, and visualization
Build-Depends: zlib, libpng, tiff, libxml2, jsoncpp, glew, freetype, expat, hdf5, libjpeg-turbo, proj4, lz4, libtheora
diff --git a/ports/vtk/portfile.cmake b/ports/vtk/portfile.cmake
index edb245eb0..7a5536163 100644
--- a/ports/vtk/portfile.cmake
+++ b/ports/vtk/portfile.cmake
@@ -1,3 +1,7 @@
+if(VCPKG_CMAKE_SYSTEM_NAME AND NOT VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+ message(WARNING "You will need to install Xorg dependencies to build vtk:\napt-get install libxt-dev\n")
+endif()
+
include(vcpkg_common_functions)
set(VTK_SHORT_VERSION "8.1")
@@ -162,6 +166,7 @@ vcpkg_configure_cmake(
-DVTK_INSTALL_DATA_DIR=share/vtk/data
-DVTK_INSTALL_DOC_DIR=share/vtk/doc
-DVTK_INSTALL_PACKAGE_DIR=share/vtk
+ -DVTK_INSTALL_RUNTIME_DIR=tools
-DVTK_FORBID_DOWNLOADS=ON
${ADDITIONAL_OPTIONS}
)
@@ -299,15 +304,14 @@ foreach(FILE IN LISTS CMAKE_FILES)
endforeach()
# =============================================================================
-# Move executable to tools directory and clean-up other directories
-file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools/vtk)
+# Clean-up other directories
-function(_vtk_move_tool TOOL_NAME)
- if(EXISTS ${CURRENT_PACKAGES_DIR}/bin/${TOOL_NAME}.exe)
- file(RENAME ${CURRENT_PACKAGES_DIR}/bin/${TOOL_NAME}.exe ${CURRENT_PACKAGES_DIR}/tools/vtk/${TOOL_NAME}.exe)
- endif()
- file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/bin/${TOOL_NAME}.exe)
+function(_vtk_remove_tool TOOL_NAME)
+ set(filename ${CURRENT_PACKAGES_DIR}/debug/bin/${TOOL_NAME}.exe)
+ if(EXISTS ${filename})
+ file(REMOVE ${filename})
+ endif()
endfunction()
set(VTK_TOOLS
@@ -331,7 +335,7 @@ string(REPLACE "vtk::hdf5::hdf5" "" _contents "${_contents}")
file(WRITE "${CURRENT_PACKAGES_DIR}/share/vtk/Modules/vtkhdf5.cmake" "${_contents}")
foreach(TOOL_NAME IN LISTS VTK_TOOLS)
- _vtk_move_tool("${TOOL_NAME}")
+ _vtk_remove_tool("${TOOL_NAME}")
endforeach()
# =============================================================================
diff --git a/ports/wt/0004-link-ssl.patch b/ports/wt/0004-link-ssl.patch
new file mode 100644
index 000000000..8579223dc
--- /dev/null
+++ b/ports/wt/0004-link-ssl.patch
@@ -0,0 +1,46 @@
+diff --git a/cmake/WtFindSsl.txt b/cmake/WtFindSsl.txt
+index c5f7bbc8..6e2c2f4d 100644
+--- a/cmake/WtFindSsl.txt
++++ b/cmake/WtFindSsl.txt
+@@ -121,6 +121,16 @@ ELSEIF(APPLE)
+ /usr/local/lib
+ NO_DEFAULT_PATH
+ )
++ FIND_LIBRARY(CRYPTO_LIB
++ NAMES
++ crypto
++ PATHS
++ ${SSL_PREFIX}/lib
++ ${SSL_PREFIX}/lib/VC
++ /usr/lib
++ /usr/local/lib
++ NO_DEFAULT_PATH
++ )
+ ELSE (WIN32)
+ FIND_LIBRARY(SSL_LIB
+ NAMES
+@@ -131,6 +141,15 @@ ELSE (WIN32)
+ /usr/lib
+ /usr/local/lib
+ )
++ FIND_LIBRARY(CRYPTO_LIB
++ NAMES
++ crypto
++ PATHS
++ ${SSL_PREFIX}/lib
++ ${SSL_PREFIX}/lib/VC
++ /usr/lib
++ /usr/local/lib
++ )
+ ENDIF (WIN32)
+
+ IF(SSL_LIB
+@@ -144,7 +163,7 @@ IF(SSL_LIB
+ ENDIF(SSL_TOO_LIB)
+ ELSE(WIN32)
+ SET(SSL_FOUND true)
+- SET(SSL_LIBRARIES ${SSL_LIB} -lcrypto)
++ SET(SSL_LIBRARIES ${SSL_LIB} ${CRYPTO_LIB})
+ ENDIF(WIN32)
+ ENDIF(SSL_LIB
+ AND SSL_INCLUDE_DIRS)
diff --git a/ports/wt/CONTROL b/ports/wt/CONTROL
index ff99b10b5..a66c39f42 100644
--- a/ports/wt/CONTROL
+++ b/ports/wt/CONTROL
@@ -1,4 +1,4 @@
Source: wt
-Version: 4.0.4
+Version: 4.0.4-2
Description: Wt is a C++ library for developing web applications
Build-Depends: openssl, sqlite3, libpq, pango, glew, boost-date-time, boost-regex, boost-program-options, boost-signals, boost-system, boost-filesystem, boost-thread, boost-random, boost-multi-index, boost-signals2, boost-asio, boost-ublas, boost-conversion, boost-array, boost-smart-ptr, boost-tuple, boost-algorithm, boost-logic, boost-interprocess
diff --git a/ports/wt/portfile.cmake b/ports/wt/portfile.cmake
index 614480168..0ac9fef61 100644
--- a/ports/wt/portfile.cmake
+++ b/ports/wt/portfile.cmake
@@ -10,6 +10,7 @@ vcpkg_from_github(
0001-boost-1.66.patch
0002-link-glew.patch
0003-disable-boost-autolink.patch
+ 0004-link-ssl.patch
)
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" SHARED_LIBS)
@@ -36,13 +37,18 @@ vcpkg_configure_cmake(
-DUSE_SYSTEM_SQLITE3=ON
-DUSE_SYSTEM_GLEW=ON
+
+ -DCMAKE_INSTALL_DIR=share
)
vcpkg_install_cmake()
-vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/wt)
+vcpkg_fixup_cmake_targets(CONFIG_PATH share/wt)
# There is no way to suppress installation of the headers and resource files in debug build.
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR}/debug/share)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/var)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/var)
+
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/wt RENAME copyright)
vcpkg_copy_pdbs()
diff --git a/ports/zxing-cpp/CONTROL b/ports/zxing-cpp/CONTROL
new file mode 100644
index 000000000..52dfd95b2
--- /dev/null
+++ b/ports/zxing-cpp/CONTROL
@@ -0,0 +1,4 @@
+Source: zxing-cpp
+Version: 3.3.3-2
+Build-Depends: opencv[core]
+Description: Barcode detection and decoding library.
diff --git a/ports/zxing-cpp/portfile.cmake b/ports/zxing-cpp/portfile.cmake
new file mode 100644
index 000000000..405210d9c
--- /dev/null
+++ b/ports/zxing-cpp/portfile.cmake
@@ -0,0 +1,43 @@
+include(vcpkg_common_functions)
+
+vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO glassechidna/zxing-cpp
+ REF 5aad4744a3763d814df98a18886979893e638274
+ SHA512 a079ad47171224de4469e76bf0779b6ebc9c6dfb3604bd5dbf5e6e5f321d9e6255f689daa749855f8400023602f1773214013c006442e9b32dd4b8146c888c02
+ HEAD_REF master
+)
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_Iconv=ON
+)
+
+vcpkg_install_cmake()
+
+vcpkg_fixup_cmake_targets(CONFIG_PATH "lib/zxing/cmake" TARGET_PATH share/zxing)
+
+file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools/zxing)
+if (WIN32)
+ file(COPY ${CURRENT_PACKAGES_DIR}/bin/zxing.exe DESTINATION ${CURRENT_PACKAGES_DIR}/tools/zxing)
+else(WIN32)
+ file(COPY ${CURRENT_PACKAGES_DIR}/bin/zxing DESTINATION ${CURRENT_PACKAGES_DIR}/tools/zxing)
+endif(WIN32)
+vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/zxing)
+
+vcpkg_copy_pdbs()
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/lib/zxing)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/lib/pkgconfig)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/zxing)
+
+# Handle copyright
+file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/share/zxing-cpp)
+file(COPY ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/zxing-cpp)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/zxing-cpp/COPYING ${CURRENT_PACKAGES_DIR}/share/zxing-cpp/copyright)
diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake
index ebe46b335..b6cfc4aab 100644
--- a/scripts/cmake/vcpkg_find_acquire_program.cmake
+++ b/scripts/cmake/vcpkg_find_acquire_program.cmake
@@ -153,6 +153,9 @@ function(vcpkg_find_acquire_program VAR)
set(URL "https://sourceforge.net/projects/winflexbison/files/winflexbison-2.5.16.zip/download")
set(ARCHIVE "win_flex_bison-2.5.16.zip")
set(HASH 0a14154bff5d998feb23903c46961528f8ccb4464375d5384db8c4a7d230c0c599da9b68e7a32f3217a0a0735742242eaf3769cb4f03e00931af8640250e9123)
+ if(NOT EXISTS "${PATHS}/data/m4sugar/m4sugar.m4" AND SUBDIR STREQUAL "win_flex-2.5.16")
+ file(REMOVE_RECURSE "${PATHS}")
+ endif()
else()
set(PROGNAME flex)
set(APT_PACKAGE_NAME flex)
diff --git a/scripts/toolchains/android.cmake b/scripts/toolchains/android.cmake
index 893463056..69192aeca 100644
--- a/scripts/toolchains/android.cmake
+++ b/scripts/toolchains/android.cmake
@@ -1,11 +1,22 @@
set(ANDROID_CPP_FEATURES "rtti exceptions" CACHE STRING "")
set(CMAKE_SYSTEM_NAME Android CACHE STRING "")
-set(ANDROID_ABI x86_64 CACHE STRING "")
set(ANDROID_TOOLCHAIN clang CACHE STRING "")
set(ANDROID_NATIVE_API_LEVEL 21 CACHE STRING "")
set(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION clang CACHE STRING "")
+if (VCPKG_TARGET_TRIPLET STREQUAL "arm64-android")
+ set(ANDROID_ABI arm64-v8a CACHE STRING "")
+elseif(VCPKG_TARGET_TRIPLET STREQUAL "arm-android")
+ set(ANDROID_ABI armeabi-v7a CACHE STRING "")
+elseif(VCPKG_TARGET_TRIPLET STREQUAL "x64-android")
+ set(ANDROID_ABI x86_64 CACHE STRING "")
+elseif(VCPKG_TARGET_TRIPLET STREQUAL "x86-android")
+ set(ANDROID_ABI x86 CACHE STRING "")
+else()
+ message(FATAL_ERROR "Unknown ABI for target triplet ${VCPKG_TARGET_TRIPLET}")
+endif()
+
if(DEFINED ENV{ANDROID_NDK_HOME})
set(ANDROID_NDK_HOME $ENV{ANDROID_NDK_HOME})
else()
diff --git a/scripts/vcpkg_completion.bash b/scripts/vcpkg_completion.bash
new file mode 100644
index 000000000..804507d58
--- /dev/null
+++ b/scripts/vcpkg_completion.bash
@@ -0,0 +1,17 @@
+#/usr/bin/env bash
+
+_vcpkg_completions()
+{
+ local vcpkg_executable=${COMP_WORDS[0]}
+ local remaining_command_line=${COMP_LINE:(${#vcpkg_executable}+1)}
+ COMPREPLY=($(${vcpkg_executable} autocomplete "${remaining_command_line}" -- 2>/dev/null))
+
+ # Colon is treated as a delimiter in bash. The following workaround
+ # allows triplet completion to work correctly in the syntax:
+ # zlib:x64-windows
+ local cur
+ _get_comp_words_by_ref -n : cur
+ __ltrim_colon_completions "$cur"
+}
+
+complete -F _vcpkg_completions vcpkg
diff --git a/toolsrc/src/vcpkg/archives.cpp b/toolsrc/src/vcpkg/archives.cpp
index 8943893d6..38efedf87 100644
--- a/toolsrc/src/vcpkg/archives.cpp
+++ b/toolsrc/src/vcpkg/archives.cpp
@@ -8,7 +8,11 @@ namespace vcpkg::Archives
void extract_archive(const VcpkgPaths& paths, const fs::path& archive, const fs::path& to_path)
{
Files::Filesystem& fs = paths.get_filesystem();
- const fs::path to_path_partial = to_path.u8string() + ".partial";
+ const fs::path to_path_partial = to_path.u8string() + ".partial"
+#if defined(_WIN32)
+ + "." + std::to_string(GetCurrentProcessId())
+#endif
+ ;
std::error_code ec;
fs.remove_all(to_path, ec);
diff --git a/toolsrc/src/vcpkg/base/system.cpp b/toolsrc/src/vcpkg/base/system.cpp
index 9c72f8401..8aa1db53c 100644
--- a/toolsrc/src/vcpkg/base/system.cpp
+++ b/toolsrc/src/vcpkg/base/system.cpp
@@ -170,6 +170,8 @@ namespace vcpkg::System
L"NVCUDASAMPLES_ROOT",
// Enables find_package(Vulkan) in CMake. Environmental variable generated by Vulkan SDK installer
L"VULKAN_SDK",
+ // Enable targeted Android NDK
+ L"ANDROID_NDK_HOME",
};
std::wstring env_cstr;
diff --git a/toolsrc/src/vcpkg/commands.integrate.cpp b/toolsrc/src/vcpkg/commands.integrate.cpp
index 82172e363..c1d3a8c8d 100644
--- a/toolsrc/src/vcpkg/commands.integrate.cpp
+++ b/toolsrc/src/vcpkg/commands.integrate.cpp
@@ -1,6 +1,7 @@
#include "pch.h"
#include <vcpkg/base/checks.h>
+#include <vcpkg/base/expected.h>
#include <vcpkg/base/files.h>
#include <vcpkg/base/system.h>
#include <vcpkg/base/util.h>
@@ -122,7 +123,7 @@ namespace vcpkg::Commands::Integrate
static ElevationPromptChoice elevated_cmd_execute(const std::string& param)
{
- SHELLEXECUTEINFOW sh_ex_info{};
+ SHELLEXECUTEINFOW sh_ex_info {};
sh_ex_info.cbSize = sizeof(sh_ex_info);
sh_ex_info.fMask = SEE_MASK_NOCLOSEPROCESS;
sh_ex_info.hwnd = nullptr;
@@ -404,6 +405,47 @@ With a project open, go to Tools->NuGet Package Manager->Package Manager Console
Checks::exit_with_code(VCPKG_LINE_INFO, rc);
}
+#elif defined(__unix__)
+ static void integrate_bash(const VcpkgPaths& paths)
+ {
+ const auto home_path = System::get_environment_variable("HOME").value_or_exit(VCPKG_LINE_INFO);
+ const fs::path bashrc_path = fs::path {home_path} / ".bashrc";
+
+ auto& fs = paths.get_filesystem();
+ const fs::path completion_script_path = paths.scripts / "vcpkg_completion.bash";
+
+ Expected<std::vector<std::string>> maybe_bashrc_content = fs.read_lines(bashrc_path);
+ Checks::check_exit(
+ VCPKG_LINE_INFO, maybe_bashrc_content.has_value(), "Unable to read %s", bashrc_path.u8string());
+
+ std::vector<std::string> bashrc_content = maybe_bashrc_content.value_or_exit(VCPKG_LINE_INFO);
+
+ std::vector<std::string> matches;
+ for (auto&& line : bashrc_content)
+ {
+ std::smatch match;
+ if (std::regex_match(line, match, std::regex {R"###(^source.*scripts/vcpkg_completion.bash$)###"}))
+ {
+ matches.push_back(line);
+ }
+ }
+
+ if (!matches.empty())
+ {
+ System::print("vcpkg bash completion is already imported to your %s file.\n"
+ "The following entries were found:\n"
+ " %s\n"
+ "Please make sure you have started a new bash shell for the changes to take effect.\n",
+ bashrc_path.u8string(),
+ Strings::join("\n ", matches));
+ Checks::exit_success(VCPKG_LINE_INFO);
+ }
+
+ System::print("Adding vcpkg completion entry to %s\n", bashrc_path.u8string());
+ bashrc_content.push_back(Strings::format("source %s", completion_script_path.u8string()));
+ fs.write_contents(bashrc_path, Strings::join("\n", bashrc_content));
+ Checks::exit_success(VCPKG_LINE_INFO);
+ }
#endif
#if defined(_WIN32)
@@ -425,11 +467,12 @@ With a project open, go to Tools->NuGet Package Manager->Package Manager Console
static const std::string REMOVE = "remove";
static const std::string PROJECT = "project";
static const std::string POWERSHELL = "powershell";
+ static const std::string BASH = "bash";
}
static std::vector<std::string> valid_arguments(const VcpkgPaths&)
{
- return {Subcommand::INSTALL, Subcommand::REMOVE, Subcommand::PROJECT, Subcommand::POWERSHELL};
+ return {Subcommand::INSTALL, Subcommand::REMOVE, Subcommand::PROJECT, Subcommand::POWERSHELL, Subcommand::BASH};
}
const CommandStructure COMMAND_STRUCTURE = {
@@ -463,6 +506,11 @@ With a project open, go to Tools->NuGet Package Manager->Package Manager Console
{
return integrate_powershell(paths);
}
+#elif defined(__unix__)
+ if (args.command_arguments[0] == Subcommand::BASH)
+ {
+ return integrate_bash(paths);
+ }
#endif
Checks::exit_with_message(VCPKG_LINE_INFO, "Unknown parameter %s for integrate", args.command_arguments[0]);
diff --git a/toolsrc/src/vcpkg/tools.cpp b/toolsrc/src/vcpkg/tools.cpp
index c623d816d..365271872 100644
--- a/toolsrc/src/vcpkg/tools.cpp
+++ b/toolsrc/src/vcpkg/tools.cpp
@@ -44,7 +44,7 @@ namespace vcpkg
return result;
}
- static ToolData parse_tool_data_from_xml(const VcpkgPaths& paths, const std::string& tool)
+ static ExpectedT<ToolData, std::string> parse_tool_data_from_xml(const VcpkgPaths& paths, const std::string& tool)
{
#if defined(_WIN32)
static constexpr StringLiteral OS_STRING = "windows";
@@ -53,13 +53,13 @@ namespace vcpkg
#elif defined(__linux__)
static constexpr StringLiteral OS_STRING = "linux";
#else
- return ToolData{};
+ return std::string("operating system is unknown");
#endif
#if defined(_WIN32) || defined(__APPLE__) || defined(__linux__)
static const std::string XML_VERSION = "2";
static const fs::path XML_PATH = paths.scripts / "vcpkgTools.xml";
- static const std::regex XML_VERSION_REGEX{R"###(<tools[\s]+version="([^"]+)">)###"};
+ static const std::regex XML_VERSION_REGEX {R"###(<tools[\s]+version="([^"]+)">)###"};
static const std::string XML = paths.get_filesystem().read_contents(XML_PATH).value_or_exit(VCPKG_LINE_INFO);
std::smatch match_xml_version;
const bool has_xml_version = std::regex_search(XML.cbegin(), XML.cend(), match_xml_version, XML_VERSION_REGEX);
@@ -67,22 +67,22 @@ namespace vcpkg
has_xml_version,
R"(Could not find <tools version="%s"> in %s)",
XML_VERSION,
- XML_PATH.generic_string());
+ XML_PATH.u8string());
Checks::check_exit(VCPKG_LINE_INFO,
XML_VERSION == match_xml_version[1],
"Expected %s version: [%s], but was [%s]. Please re-run bootstrap-vcpkg.",
- XML_PATH.generic_string(),
+ XML_PATH.u8string(),
XML_VERSION,
match_xml_version[1]);
- const std::regex tool_regex{Strings::format(R"###(<tool[\s]+name="%s"[\s]+os="%s">)###", tool, OS_STRING)};
+ const std::regex tool_regex {Strings::format(R"###(<tool[\s]+name="%s"[\s]+os="%s">)###", tool, OS_STRING)};
std::smatch match_tool_entry;
const bool has_tool_entry = std::regex_search(XML.cbegin(), XML.cend(), match_tool_entry, tool_regex);
- Checks::check_exit(VCPKG_LINE_INFO,
- has_tool_entry,
- "Could not find entry for tool [%s] in %s",
- tool,
- XML_PATH.generic_string());
+ if (!has_tool_entry)
+ {
+ return Strings::format(
+ "Could not find entry for tool %s in %s for os=%s", tool, XML_PATH.u8string(), OS_STRING);
+ }
const std::string tool_data =
StringRange::find_exactly_one_enclosed(XML, match_tool_entry[0], "</tool>").to_string();
@@ -106,13 +106,13 @@ namespace vcpkg
const fs::path tool_dir_path = paths.tools / tool_dir_name;
const fs::path exe_path = tool_dir_path / exe_relative_path;
- return ToolData{*version.get(),
- exe_path,
- url,
- paths.downloads / archive_name.value_or(exe_relative_path).to_string(),
- archive_name.has_value(),
- tool_dir_path,
- sha512};
+ return ToolData {*version.get(),
+ exe_path,
+ url,
+ paths.downloads / archive_name.value_or(exe_relative_path).to_string(),
+ archive_name.has_value(),
+ tool_dir_path,
+ sha512};
#endif
}
@@ -122,55 +122,43 @@ namespace vcpkg
std::string version;
};
- static Optional<PathAndVersion> find_first_with_sufficient_version(const std::vector<PathAndVersion>& candidates,
- const std::array<int, 3>& expected_version)
+ struct ToolProvider
{
- const auto it = Util::find_if(candidates, [&](const PathAndVersion& candidate) {
- const auto parsed_version = parse_version_string(candidate.version);
- if (!parsed_version.has_value())
- {
- return false;
- }
+ virtual const std::string& tool_data_name() const = 0;
+ virtual const std::string& exe_stem() const = 0;
+ virtual std::array<int, 3> default_min_version() const = 0;
- const std::array<int, 3> actual_version = *parsed_version.get();
- return actual_version[0] > expected_version[0] ||
- (actual_version[0] == expected_version[0] && actual_version[1] > expected_version[1]) ||
- (actual_version[0] == expected_version[0] && actual_version[1] == expected_version[1] &&
- actual_version[2] >= expected_version[2]);
- });
+ virtual void add_special_paths(std::vector<fs::path>& out_candidate_paths) const {}
+ virtual Optional<std::string> get_version(const fs::path& path_to_exe) const = 0;
+ };
- if (it == candidates.cend())
+ static Optional<PathAndVersion> find_first_with_sufficient_version(const Files::Filesystem& fs,
+ const ToolProvider& tool_provider,
+ const std::vector<fs::path>& candidates,
+ const std::array<int, 3>& expected_version)
+ {
+ for (auto&& candidate : candidates)
{
- return nullopt;
+ if (!fs.exists(candidate)) continue;
+ auto maybe_version = tool_provider.get_version(candidate);
+ const auto version = maybe_version.get();
+ if (!version) continue;
+ const auto parsed_version = parse_version_string(*version);
+ if (!parsed_version) continue;
+ auto& actual_version = *parsed_version.get();
+ const auto version_acceptable =
+ actual_version[0] > expected_version[0] ||
+ (actual_version[0] == expected_version[0] && actual_version[1] > expected_version[1]) ||
+ (actual_version[0] == expected_version[0] && actual_version[1] == expected_version[1] &&
+ actual_version[2] >= expected_version[2]);
+ if (!version_acceptable) continue;
+
+ return PathAndVersion {candidate, *version};
}
- return *it;
+ return nullopt;
}
- struct VersionProvider
- {
- virtual Optional<std::string> get_version(const fs::path& path_to_exe) const = 0;
-
- std::vector<PathAndVersion> get_versions(const std::vector<fs::path>& candidate_paths) const
- {
- auto&& fs = Files::get_real_filesystem();
-
- std::vector<PathAndVersion> output;
- for (auto&& p : candidate_paths)
- {
- if (!fs.exists(p)) continue;
- auto maybe_version = this->get_version(p);
- if (const auto version = maybe_version.get())
- {
- output.emplace_back(PathAndVersion{p, *version});
- return output;
- }
- }
-
- return output;
- }
- };
-
static fs::path fetch_tool(const VcpkgPaths& paths, const std::string& tool_name, const ToolData& tool_data)
{
const std::array<int, 3>& version = tool_data.version;
@@ -220,76 +208,90 @@ namespace vcpkg
}
static PathAndVersion fetch_tool(const VcpkgPaths& paths,
- const std::string& tool_name,
- const ToolData& tool_data,
- const VersionProvider& version_provider)
+ const ToolProvider& tool_provider,
+ const ToolData& tool_data)
{
- const auto downloaded_path = fetch_tool(paths, tool_name, tool_data);
- const auto downloaded_version = version_provider.get_version(downloaded_path).value_or_exit(VCPKG_LINE_INFO);
+ const auto downloaded_path = fetch_tool(paths, tool_provider.tool_data_name(), tool_data);
+ const auto downloaded_version = tool_provider.get_version(downloaded_path).value_or_exit(VCPKG_LINE_INFO);
return {downloaded_path, downloaded_version};
}
- namespace CMake
+ static PathAndVersion get_path(const VcpkgPaths& paths, const ToolProvider& tool)
{
- struct CmakeVersionProvider : VersionProvider
+ auto& fs = paths.get_filesystem();
+
+ std::array<int, 3> min_version = tool.default_min_version();
+
+ std::vector<fs::path> candidate_paths;
+ auto maybe_tool_data = parse_tool_data_from_xml(paths, tool.tool_data_name());
+ if (auto tool_data = maybe_tool_data.get())
{
- Optional<std::string> get_version(const fs::path& path_to_exe) const override
- {
- const std::string cmd = Strings::format(R"("%s" --version)", path_to_exe.u8string());
- const auto rc = System::cmd_execute_and_capture_output(cmd);
- if (rc.exit_code != 0)
- {
- return nullopt;
- }
+ candidate_paths.push_back(tool_data->exe_path);
+ min_version = tool_data->version;
+ }
- /* Sample output:
- cmake version 3.10.2
+ auto& exe_stem = tool.exe_stem();
+ if (!exe_stem.empty())
+ {
+ auto paths_from_path = fs.find_from_PATH(exe_stem);
+ candidate_paths.insert(candidate_paths.end(), paths_from_path.cbegin(), paths_from_path.cend());
+ }
- CMake suite maintained and supported by Kitware (kitware.com/cmake).
- */
- return StringRange::find_exactly_one_enclosed(rc.output, "cmake version ", "\n").to_string();
- }
- };
+ tool.add_special_paths(candidate_paths);
- static PathAndVersion get_path(const VcpkgPaths& paths)
+ const auto maybe_path = find_first_with_sufficient_version(fs, tool, candidate_paths, min_version);
+ if (const auto p = maybe_path.get())
{
- if (System::get_environment_variable("VCPKG_FORCE_SYSTEM_BINARIES").has_value())
- {
- return {"cmake", "0"};
- }
+ return *p;
+ }
+ if (auto tool_data = maybe_tool_data.get())
+ {
+ return fetch_tool(paths, tool, *tool_data);
+ }
- std::vector<fs::path> candidate_paths;
-#if defined(_WIN32) || defined(__APPLE__) || defined(__linux__)
- static const ToolData TOOL_DATA = parse_tool_data_from_xml(paths, "cmake");
- candidate_paths.push_back(TOOL_DATA.exe_path);
-#else
- static const ToolData TOOL_DATA = ToolData{{3, 5, 1}, ""};
-#endif
- const std::vector<fs::path> from_path = paths.get_filesystem().find_from_PATH("cmake");
- candidate_paths.insert(candidate_paths.end(), from_path.cbegin(), from_path.cend());
+ Checks::exit_with_message(VCPKG_LINE_INFO, maybe_tool_data.error());
+ }
+
+ struct CMakeProvider : ToolProvider
+ {
+ std::string m_exe = "cmake";
+
+ virtual const std::string& tool_data_name() const override { return m_exe; }
+ virtual const std::string& exe_stem() const override { return m_exe; }
+ virtual std::array<int, 3> default_min_version() const override { return {3, 5, 1}; }
+ virtual void add_special_paths(std::vector<fs::path>& out_candidate_paths) const override
+ {
+#if defined(_WIN32)
const auto& program_files = System::get_program_files_platform_bitness();
- if (const auto pf = program_files.get()) candidate_paths.push_back(*pf / "CMake" / "bin" / "cmake.exe");
+ if (const auto pf = program_files.get()) out_candidate_paths.push_back(*pf / "CMake" / "bin" / "cmake.exe");
const auto& program_files_32_bit = System::get_program_files_32_bit();
if (const auto pf = program_files_32_bit.get())
- candidate_paths.push_back(*pf / "CMake" / "bin" / "cmake.exe");
-
- const CmakeVersionProvider version_provider{};
- const std::vector<PathAndVersion> candidates_with_versions = version_provider.get_versions(candidate_paths);
- const auto maybe_path = find_first_with_sufficient_version(candidates_with_versions, TOOL_DATA.version);
- if (const auto p = maybe_path.get())
+ out_candidate_paths.push_back(*pf / "CMake" / "bin" / "cmake.exe");
+#endif
+ }
+ virtual Optional<std::string> get_version(const fs::path& path_to_exe) const override
+ {
+ const std::string cmd = Strings::format(R"("%s" --version)", path_to_exe.u8string());
+ const auto rc = System::cmd_execute_and_capture_output(cmd);
+ if (rc.exit_code != 0)
{
- return *p;
+ return nullopt;
}
- return fetch_tool(paths, Tools::CMAKE, TOOL_DATA, version_provider);
+ /* Sample output:
+cmake version 3.10.2
+
+CMake suite maintained and supported by Kitware (kitware.com/cmake).
+ */
+ return StringRange::find_exactly_one_enclosed(rc.output, "cmake version ", "\n").to_string();
}
- }
+ };
static fs::path get_7za_path(const VcpkgPaths& paths)
{
#if defined(_WIN32)
- static const ToolData TOOL_DATA = parse_tool_data_from_xml(paths, "7zip");
+ static const ToolData TOOL_DATA = parse_tool_data_from_xml(paths, "7zip").value_or_exit(VCPKG_LINE_INFO);
if (!paths.get_filesystem().exists(TOOL_DATA.exe_path))
{
return fetch_tool(paths, "7zip", TOOL_DATA);
@@ -300,195 +302,131 @@ namespace vcpkg
#endif
}
- namespace Ninja
+ struct NinjaProvider : ToolProvider
{
- struct NinjaVersionProvider : VersionProvider
- {
- Optional<std::string> get_version(const fs::path& path_to_exe) const override
- {
- const std::string cmd = Strings::format(R"("%s" --version)", path_to_exe.u8string());
- const auto rc = System::cmd_execute_and_capture_output(cmd);
- if (rc.exit_code != 0)
- {
- return nullopt;
- }
+ std::string m_exe = "ninja";
- /* Sample output:
- 1.8.2
- */
- return rc.output;
- }
- };
+ virtual const std::string& tool_data_name() const override { return m_exe; }
+ virtual const std::string& exe_stem() const override { return m_exe; }
+ virtual std::array<int, 3> default_min_version() const override { return {3, 5, 1}; }
- static PathAndVersion get_path(const VcpkgPaths& paths)
+ virtual Optional<std::string> get_version(const fs::path& path_to_exe) const override
{
- if (System::get_environment_variable("VCPKG_FORCE_SYSTEM_BINARIES").has_value())
- {
- return {"ninja", "0"};
- }
-
- static const ToolData TOOL_DATA = parse_tool_data_from_xml(paths, "ninja");
-
- std::vector<fs::path> candidate_paths;
- candidate_paths.push_back(TOOL_DATA.exe_path);
- const std::vector<fs::path> from_path = paths.get_filesystem().find_from_PATH("ninja");
- candidate_paths.insert(candidate_paths.end(), from_path.cbegin(), from_path.cend());
-
- const NinjaVersionProvider version_provider{};
- const std::vector<PathAndVersion> candidates_with_versions = version_provider.get_versions(candidate_paths);
- const auto maybe_path = find_first_with_sufficient_version(candidates_with_versions, TOOL_DATA.version);
- if (const auto p = maybe_path.get())
+ const std::string cmd = Strings::format(R"("%s" --version)", path_to_exe.u8string());
+ const auto rc = System::cmd_execute_and_capture_output(cmd);
+ if (rc.exit_code != 0)
{
- return *p;
+ return nullopt;
}
- return fetch_tool(paths, Tools::NINJA, TOOL_DATA, version_provider);
+ /* Sample output:
+1.8.2
+ */
+ return rc.output;
}
- }
+ };
- namespace Nuget
+ struct NuGetProvider : ToolProvider
{
- struct NugetVersionProvider : VersionProvider
- {
- Optional<std::string> get_version(const fs::path& path_to_exe) const override
- {
- const std::string cmd = Strings::format(R"("%s")", path_to_exe.u8string());
- const auto rc = System::cmd_execute_and_capture_output(cmd);
- if (rc.exit_code != 0)
- {
- return nullopt;
- }
+ std::string m_exe = "nuget";
- /* Sample output:
- NuGet Version: 4.6.2.5055
- usage: NuGet <command> [args] [options]
- Type 'NuGet help <command>' for help on a specific command.
-
- [[[List of available commands follows]]]
- */
- return StringRange::find_exactly_one_enclosed(rc.output, "NuGet Version: ", "\n").to_string();
- }
- };
+ virtual const std::string& tool_data_name() const override { return m_exe; }
+ virtual const std::string& exe_stem() const override { return m_exe; }
+ virtual std::array<int, 3> default_min_version() const override { return {4, 6, 2}; }
- static PathAndVersion get_path(const VcpkgPaths& paths)
+ virtual Optional<std::string> get_version(const fs::path& path_to_exe) const override
{
- static const ToolData TOOL_DATA = parse_tool_data_from_xml(paths, "nuget");
-
- std::vector<fs::path> candidate_paths;
- candidate_paths.push_back(TOOL_DATA.exe_path);
- const std::vector<fs::path> from_path = paths.get_filesystem().find_from_PATH("nuget");
- candidate_paths.insert(candidate_paths.end(), from_path.cbegin(), from_path.cend());
-
- const NugetVersionProvider version_provider{};
- const std::vector<PathAndVersion> candidates_with_versions = version_provider.get_versions(candidate_paths);
- const auto maybe_path = find_first_with_sufficient_version(candidates_with_versions, TOOL_DATA.version);
- if (const auto p = maybe_path.get())
+ const std::string cmd = Strings::format(R"("%s")", path_to_exe.u8string());
+ const auto rc = System::cmd_execute_and_capture_output(cmd);
+ if (rc.exit_code != 0)
{
- return *p;
+ return nullopt;
}
- return fetch_tool(paths, Tools::NUGET, TOOL_DATA, version_provider);
+ /* Sample output:
+NuGet Version: 4.6.2.5055
+usage: NuGet <command> [args] [options]
+Type 'NuGet help <command>' for help on a specific command.
+
+[[[List of available commands follows]]]
+ */
+ return StringRange::find_exactly_one_enclosed(rc.output, "NuGet Version: ", "\n").to_string();
}
- }
+ };
- namespace Git
+ struct GitProvider : ToolProvider
{
- struct GitVersionProvider : VersionProvider
- {
- Optional<std::string> get_version(const fs::path& path_to_exe) const override
- {
- const std::string cmd = Strings::format(R"("%s" --version)", path_to_exe.u8string());
- const auto rc = System::cmd_execute_and_capture_output(cmd);
- if (rc.exit_code != 0)
- {
- return nullopt;
- }
+ std::string m_exe = "git";
- /* Sample output:
- git version 2.17.1.windows.2
- */
- const auto idx = rc.output.find("git version ");
- Checks::check_exit(VCPKG_LINE_INFO,
- idx != std::string::npos,
- "Unexpected format of git version string: %s",
- rc.output);
- return rc.output.substr(idx);
- }
- };
+ virtual const std::string& tool_data_name() const override { return m_exe; }
+ virtual const std::string& exe_stem() const override { return m_exe; }
+ virtual std::array<int, 3> default_min_version() const override { return {2, 7, 4}; }
- static PathAndVersion get_path(const VcpkgPaths& paths)
+ virtual void add_special_paths(std::vector<fs::path>& out_candidate_paths) const
{
- static const ToolData TOOL_DATA = parse_tool_data_from_xml(paths, "git");
-
- std::vector<fs::path> candidate_paths;
#if defined(_WIN32)
- candidate_paths.push_back(TOOL_DATA.exe_path);
-#endif
- const std::vector<fs::path> from_path = paths.get_filesystem().find_from_PATH("git");
- candidate_paths.insert(candidate_paths.end(), from_path.cbegin(), from_path.cend());
-
const auto& program_files = System::get_program_files_platform_bitness();
- if (const auto pf = program_files.get()) candidate_paths.push_back(*pf / "git" / "cmd" / "git.exe");
+ if (const auto pf = program_files.get()) out_candidate_paths.push_back(*pf / "git" / "cmd" / "git.exe");
const auto& program_files_32_bit = System::get_program_files_32_bit();
- if (const auto pf = program_files_32_bit.get()) candidate_paths.push_back(*pf / "git" / "cmd" / "git.exe");
+ if (const auto pf = program_files_32_bit.get())
+ out_candidate_paths.push_back(*pf / "git" / "cmd" / "git.exe");
+#endif
+ }
- const GitVersionProvider version_provider{};
- const std::vector<PathAndVersion> candidates_with_versions = version_provider.get_versions(candidate_paths);
- const auto maybe_path = find_first_with_sufficient_version(candidates_with_versions, TOOL_DATA.version);
- if (const auto p = maybe_path.get())
+ virtual Optional<std::string> get_version(const fs::path& path_to_exe) const override
+ {
+ const std::string cmd = Strings::format(R"("%s" --version)", path_to_exe.u8string());
+ const auto rc = System::cmd_execute_and_capture_output(cmd);
+ if (rc.exit_code != 0)
{
- return *p;
+ return nullopt;
}
- return fetch_tool(paths, Tools::GIT, TOOL_DATA, version_provider);
+ /* Sample output:
+git version 2.17.1.windows.2
+ */
+ const auto idx = rc.output.find("git version ");
+ Checks::check_exit(
+ VCPKG_LINE_INFO, idx != std::string::npos, "Unexpected format of git version string: %s", rc.output);
+ return rc.output.substr(idx);
}
- }
+ };
- namespace IfwInstallerBase
+ struct IfwInstallerBaseProvider : ToolProvider
{
- struct IfwInstallerBaseVersionProvider : VersionProvider
- {
- Optional<std::string> get_version(const fs::path& path_to_exe) const override
- {
- const std::string cmd = Strings::format(R"("%s" --framework-version)", path_to_exe.u8string());
- const auto rc = System::cmd_execute_and_capture_output(cmd);
- if (rc.exit_code != 0)
- {
- return nullopt;
- }
+ std::string m_exe = "";
+ std::string m_toolname = "installerbase";
- /* Sample output:
- 3.1.81
- */
- return rc.output;
- }
- };
+ virtual const std::string& tool_data_name() const override { return m_toolname; }
+ virtual const std::string& exe_stem() const override { return m_exe; }
+ virtual std::array<int, 3> default_min_version() const override { return {0, 0, 0}; }
- static PathAndVersion get_path(const VcpkgPaths& paths)
+ virtual void add_special_paths(std::vector<fs::path>& out_candidate_paths) const
{
- static const ToolData TOOL_DATA = parse_tool_data_from_xml(paths, "installerbase");
-
- std::vector<fs::path> candidate_paths;
- candidate_paths.push_back(TOOL_DATA.exe_path);
// TODO: Uncomment later
// const std::vector<fs::path> from_path = Files::find_from_PATH("installerbase");
// candidate_paths.insert(candidate_paths.end(), from_path.cbegin(), from_path.cend());
- // candidate_paths.push_back(fs::path(System::get_environment_variable("HOMEDRIVE").value_or("C:")) / "Qt" /
- // "Tools" / "QtInstallerFramework" / "3.1" / "bin" / "installerbase.exe");
- // candidate_paths.push_back(fs::path(System::get_environment_variable("HOMEDRIVE").value_or("C:")) / "Qt" /
- // "QtIFW-3.1.0" / "bin" / "installerbase.exe");
-
- const IfwInstallerBaseVersionProvider version_provider{};
- const std::vector<PathAndVersion> candidates_with_versions = version_provider.get_versions(candidate_paths);
- const auto maybe_path = find_first_with_sufficient_version(candidates_with_versions, TOOL_DATA.version);
- if (const auto p = maybe_path.get())
+ // candidate_paths.push_back(fs::path(System::get_environment_variable("HOMEDRIVE").value_or("C:")) /
+ // "Qt" / "Tools" / "QtInstallerFramework" / "3.1" / "bin" / "installerbase.exe");
+ // candidate_paths.push_back(fs::path(System::get_environment_variable("HOMEDRIVE").value_or("C:")) /
+ // "Qt" / "QtIFW-3.1.0" / "bin" / "installerbase.exe");
+ }
+
+ virtual Optional<std::string> get_version(const fs::path& path_to_exe) const override
+ {
+ const std::string cmd = Strings::format(R"("%s" --framework-version)", path_to_exe.u8string());
+ const auto rc = System::cmd_execute_and_capture_output(cmd);
+ if (rc.exit_code != 0)
{
- return *p;
+ return nullopt;
}
- return fetch_tool(paths, Tools::IFW_INSTALLER_BASE, TOOL_DATA, version_provider);
+ /* Sample output:
+3.1.81
+ */
+ return rc.output;
}
- }
+ };
struct ToolCacheImpl final : ToolCache
{
@@ -506,12 +444,12 @@ namespace vcpkg
tool == Tools::IFW_INSTALLER_BASE)
return get_tool_pathversion(paths, tool).path;
if (tool == Tools::IFW_BINARYCREATOR)
- return IfwInstallerBase::get_path(paths).path.parent_path() / "binarycreator.exe";
+ return get_tool_path(paths, Tools::IFW_INSTALLER_BASE).parent_path() / "binarycreator.exe";
if (tool == Tools::IFW_REPOGEN)
- return IfwInstallerBase::get_path(paths).path.parent_path() / "repogen.exe";
+ return get_tool_path(paths, Tools::IFW_INSTALLER_BASE).parent_path() / "repogen.exe";
// For other tools, we simply always auto-download them.
- const ToolData tool_data = parse_tool_data_from_xml(paths, tool);
+ const ToolData tool_data = parse_tool_data_from_xml(paths, tool).value_or_exit(VCPKG_LINE_INFO);
if (paths.get_filesystem().exists(tool_data.exe_path))
{
return tool_data.exe_path;
@@ -522,12 +460,33 @@ namespace vcpkg
const PathAndVersion& get_tool_pathversion(const VcpkgPaths& paths, const std::string& tool) const
{
- return path_version_cache.get_lazy(tool, [&]() {
- if (tool == Tools::CMAKE) return CMake::get_path(paths);
- if (tool == Tools::GIT) return Git::get_path(paths);
- if (tool == Tools::NINJA) return Ninja::get_path(paths);
- if (tool == Tools::NUGET) return Nuget::get_path(paths);
- if (tool == Tools::IFW_INSTALLER_BASE) return IfwInstallerBase::get_path(paths);
+ return path_version_cache.get_lazy(tool, [&]() -> PathAndVersion {
+ if (tool == Tools::CMAKE)
+ {
+ if (System::get_environment_variable("VCPKG_FORCE_SYSTEM_BINARIES").has_value())
+ {
+ return {"cmake", "0"};
+ }
+ return get_path(paths, CMakeProvider());
+ }
+ if (tool == Tools::GIT)
+ {
+ if (System::get_environment_variable("VCPKG_FORCE_SYSTEM_BINARIES").has_value())
+ {
+ return {"git", "0"};
+ }
+ return get_path(paths, GitProvider());
+ }
+ if (tool == Tools::NINJA)
+ {
+ if (System::get_environment_variable("VCPKG_FORCE_SYSTEM_BINARIES").has_value())
+ {
+ return {"ninja", "0"};
+ }
+ return get_path(paths, NinjaProvider());
+ }
+ if (tool == Tools::NUGET) return get_path(paths, NuGetProvider());
+ if (tool == Tools::IFW_INSTALLER_BASE) return get_path(paths, IfwInstallerBaseProvider());
Checks::exit_with_message(VCPKG_LINE_INFO, "Finding version for %s is not implemented yet.", tool);
});