aboutsummaryrefslogtreecommitdiff
path: root/ports
diff options
context:
space:
mode:
authorRobert Schumacher <roschuma@microsoft.com>2017-02-21 13:39:36 -0800
committerGitHub <noreply@github.com>2017-02-21 13:39:36 -0800
commit7d4df89c1dfff0b2bad0165ac4579f6352935a94 (patch)
tree8b87d29fb74fb24984d5aff9b021f14d95afb5ab /ports
parentd9462fdf490d3396cac58b1a935b1b8a982b3a72 (diff)
parentb921dce5fc17bd4c1c206b79eb0a7b8758dcf5bf (diff)
downloadvcpkg-7d4df89c1dfff0b2bad0165ac4579f6352935a94.tar.gz
vcpkg-7d4df89c1dfff0b2bad0165ac4579f6352935a94.zip
Merge branch 'master' into master
Diffstat (limited to 'ports')
-rw-r--r--ports/antlr4/portfile.cmake87
-rw-r--r--ports/asio/CONTROL6
-rw-r--r--ports/asio/portfile.cmake8
-rw-r--r--ports/bond/0001_boost_static_libs.patch23
-rw-r--r--ports/bond/0002_omit_rapidjson.patch12
-rw-r--r--ports/bond/0003_rename_gbc_during_install.patch22
-rw-r--r--ports/bond/CONTROL2
-rw-r--r--ports/bond/portfile.cmake65
-rw-r--r--ports/chakracore/disable_warning_as_error.patch20
-rw-r--r--ports/chakracore/portfile.cmake22
-rw-r--r--ports/clockutils/CONTROL2
-rw-r--r--ports/clockutils/portfile.cmake10
-rw-r--r--ports/dlib/CONTROL3
-rw-r--r--ports/dlib/portfile.cmake45
-rw-r--r--ports/fmt/CONTROL2
-rw-r--r--ports/fmt/portfile.cmake5
-rw-r--r--ports/gdk-pixbuf/CMakeLists.txt128
-rw-r--r--ports/gdk-pixbuf/CONTROL4
-rw-r--r--ports/gdk-pixbuf/portfile.cmake28
-rw-r--r--ports/glbinding/portfile.cmake13
-rw-r--r--ports/grpc/CONTROL2
-rw-r--r--ports/grpc/grpc-fix-cmake-build.patch13
-rw-r--r--ports/grpc/portfile.cmake80
-rw-r--r--ports/hdf5/CONTROL4
-rw-r--r--ports/hdf5/portfile.cmake48
-rw-r--r--ports/libepoxy/CONTROL3
-rw-r--r--ports/libepoxy/portfile.cmake26
-rw-r--r--ports/libjpeg-turbo/portfile.cmake2
-rw-r--r--ports/libmysql/CONTROL2
-rw-r--r--ports/libmysql/portfile.cmake1
-rw-r--r--ports/libnice/CMakeLists.txt139
-rw-r--r--ports/libnice/CONTROL4
-rw-r--r--ports/libnice/portfile.cmake27
-rw-r--r--ports/libraw/CONTROL2
-rw-r--r--ports/libraw/portfile.cmake8
-rw-r--r--ports/lmdb/CONTROL2
-rw-r--r--ports/lmdb/lmdb_45a88275d2a410e683bae4ef44881e0f55fa3c4d.patch436
-rw-r--r--ports/mongo-cxx-driver/CONTROL2
-rw-r--r--ports/mongo-cxx-driver/portfile.cmake2
-rw-r--r--ports/mpg123/portfile.cmake2
-rw-r--r--ports/msmpi/CONTROL3
-rw-r--r--ports/msmpi/portfile.cmake117
-rw-r--r--ports/opencv/CONTROL2
-rw-r--r--ports/opencv/opencv-installation-options.patch101
-rw-r--r--ports/opencv/portfile.cmake9
-rw-r--r--ports/openssl/portfile-uwp.cmake2
-rw-r--r--ports/openssl/portfile.cmake2
-rw-r--r--ports/openvr/CONTROL3
-rw-r--r--ports/openvr/portfile.cmake54
-rw-r--r--ports/parmetis/CONTROL4
-rw-r--r--ports/parmetis/fix-gklib-vs14-math.patch11
-rw-r--r--ports/parmetis/fix-libparmetis-cmakelist.patch15
-rw-r--r--ports/parmetis/fix-metis-vs14-math.patch11
-rw-r--r--ports/parmetis/fix-root-cmakelist.patch29
-rw-r--r--ports/parmetis/portfile.cmake46
-rw-r--r--ports/protobuf/CONTROL2
-rw-r--r--ports/protobuf/portfile.cmake20
-rw-r--r--ports/qca/portfile.cmake2
-rw-r--r--ports/qt5/portfile.cmake2
-rw-r--r--ports/rapidjson/CONTROL2
-rw-r--r--ports/rapidjson/portfile.cmake8
-rw-r--r--ports/sfml/CONTROL2
-rw-r--r--ports/sfml/portfile.cmake8
-rw-r--r--ports/sqlite-modern-cpp/CONTROL4
-rw-r--r--ports/sqlite-modern-cpp/portfile.cmake20
-rw-r--r--ports/sqlite3/CONTROL4
-rw-r--r--ports/sqlite3/portfile.cmake54
67 files changed, 1394 insertions, 455 deletions
diff --git a/ports/antlr4/portfile.cmake b/ports/antlr4/portfile.cmake
index 8b11c95b0..d10513064 100644
--- a/ports/antlr4/portfile.cmake
+++ b/ports/antlr4/portfile.cmake
@@ -6,69 +6,70 @@ vcpkg_download_distfile(ARCHIVE
FILENAME "antlr4-cpp-runtime-4.6-source.zip"
SHA512 e123c2227e41ce80da5a3758725a018690ed70a4e10c23da26c966259e6bdafa192f4363f5a7e1181ef9a47bf3cc50d6b0ca7b26c8dd2b19222a7edf54de8de2
)
+
+# license not exist in antlr folder.
+vcpkg_download_distfile(LICENSE
+ URLS https://raw.githubusercontent.com/antlr/antlr4/4.6/LICENSE.txt
+ FILENAME "antlr4-copyright"
+ SHA512 c72ae3d5c9f3f07160405b5ca44f01116a9602d82291d6cd218fcc5ec6e8baf985e4baa2acf3d621079585385708bd171c96ef44dd808e60c40a48bc1f56c9ae
+)
+
vcpkg_extract_source_archive(${ARCHIVE})
-vcpkg_apply_patches(
- SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src
- PATCHES ${CMAKE_CURRENT_LIST_DIR}/crt_mt.patch
+vcpkg_apply_patches(
+ SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/crt_mt.patch
)
if (${VCPKG_LIBRARY_LINKAGE} STREQUAL static)
- set(DEBUG_CONFIG "Debug Static")
- set(RELEASE_CONFIG "Release Static")
+ set(DEBUG_CONFIG "Debug Static")
+ set(RELEASE_CONFIG "Release Static")
else()
- set(DEBUG_CONFIG "Debug DLL")
- set(RELEASE_CONFIG "Release DLL")
+ set(DEBUG_CONFIG "Debug DLL")
+ set(RELEASE_CONFIG "Release DLL")
endif()
-vcpkg_build_msbuild(
- PROJECT_PATH ${SOURCE_PATH}/antlr4cpp-vs2015.vcxproj
- DEBUG_CONFIGURATION ${DEBUG_CONFIG}
- RELEASE_CONFIGURATION ${RELEASE_CONFIG}
+vcpkg_build_msbuild(
+ PROJECT_PATH ${SOURCE_PATH}/antlr4cpp-vs2015.vcxproj
+ DEBUG_CONFIGURATION ${DEBUG_CONFIG}
+ RELEASE_CONFIGURATION ${RELEASE_CONFIG}
)
-file (MAKE_DIRECTORY
- ${CURRENT_PACKAGES_DIR}/include)
-FILE(COPY ${SOURCE_PATH}/src/
- DESTINATION ${CURRENT_PACKAGES_DIR}/include
+file (MAKE_DIRECTORY
+ ${CURRENT_PACKAGES_DIR}/include)
+FILE(COPY ${SOURCE_PATH}/src/
+ DESTINATION ${CURRENT_PACKAGES_DIR}/include
FILES_MATCHING PATTERN "*.h")
-file (MAKE_DIRECTORY
- ${CURRENT_PACKAGES_DIR}/lib
- ${CURRENT_PACKAGES_DIR}/debug/lib)
+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
- DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
+ DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
file(COPY ${SOURCE_PATH}/bin/vs-2015/${TRIPLET_SYSTEM_ARCH}/${RELEASE_CONFIG}/antlr4-runtime.lib
- DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
+ DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
if (${VCPKG_LIBRARY_LINKAGE} STREQUAL static)
- vcpkg_apply_patches(
- SOURCE_PATH ${CURRENT_PACKAGES_DIR}/include
- PATCHES ${CMAKE_CURRENT_LIST_DIR}/static.patch
- )
+ vcpkg_apply_patches(
+ SOURCE_PATH ${CURRENT_PACKAGES_DIR}/include
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/static.patch
+ )
else()
- file (MAKE_DIRECTORY
- ${CURRENT_PACKAGES_DIR}/bin
- ${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
- 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
- DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
-endif()
+ file (MAKE_DIRECTORY
+ ${CURRENT_PACKAGES_DIR}/bin
+ ${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
+ 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
+ DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
+endif()
-# license not exist in antlr folder.
-vcpkg_download_distfile(LICENSE
- URLS https://raw.githubusercontent.com/antlr/antlr4/master/LICENSE.txt
- FILENAME "antlr4-copyright"
- SHA512 c72ae3d5c9f3f07160405b5ca44f01116a9602d82291d6cd218fcc5ec6e8baf985e4baa2acf3d621079585385708bd171c96ef44dd808e60c40a48bc1f56c9ae
-)
file(INSTALL ${LICENSE} DESTINATION ${CURRENT_PACKAGES_DIR}/share/antlr4 RENAME copyright)
message(STATUS "Installing done") \ No newline at end of file
diff --git a/ports/asio/CONTROL b/ports/asio/CONTROL
index 466ef6cd0..18d9692f5 100644
--- a/ports/asio/CONTROL
+++ b/ports/asio/CONTROL
@@ -1,3 +1,3 @@
-Source: asio
-Version: 1.10.6
-Description: Asio is a cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach.
+Source: asio
+Version: 1.10.8
+Description: Asio is a cross-platform C++ library for network and low-level I/O programming that provides developers with a consistent asynchronous model using a modern C++ approach.
diff --git a/ports/asio/portfile.cmake b/ports/asio/portfile.cmake
index 345ddd673..39fefa012 100644
--- a/ports/asio/portfile.cmake
+++ b/ports/asio/portfile.cmake
@@ -1,10 +1,10 @@
#header-only library
include(vcpkg_common_functions)
-SET(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/asio-asio-1-10-6/asio/)
+SET(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/asio-asio-1-10-8/asio/)
vcpkg_download_distfile(ARCHIVE
- URLS "https://github.com/chriskohlhoff/asio/archive/asio-1-10-6.zip"
- FILENAME "asio-1-10-6.zip"
- SHA512 7e3fde7e88d305d19b88482b73c8b7a41751d65e81bd23dd8ef45eb4e3ef3a10629696b4d347e5a68f08d6fb2dede15a2f38c7ee8d18ac88be769215542da4c6
+ URLS "https://github.com/chriskohlhoff/asio/archive/asio-1-10-8.zip"
+ FILENAME "asio-1-10-8.zip"
+ SHA512 bc9794a20fc7844a2a9d22bfa418005f61defbcecdd612daba0d317e6f8fc5a61d3a3b2d7d557b92584294b8adfccc3c47a8f0441f3e34a47a0f715ca1ba0e5b
)
vcpkg_extract_source_archive(${ARCHIVE})
diff --git a/ports/bond/0001_boost_static_libs.patch b/ports/bond/0001_boost_static_libs.patch
new file mode 100644
index 000000000..cc712b6c7
--- /dev/null
+++ b/ports/bond/0001_boost_static_libs.patch
@@ -0,0 +1,23 @@
+diff --git a/cmake/Config.cmake b/cmake/Config.cmake
+index ed225d14..1573c915 100644
+--- a/cmake/Config.cmake
++++ b/cmake/Config.cmake
+@@ -19,7 +19,7 @@ if (MSVC)
+ # disable MSVC warnings
+ add_compile_options (/bigobj /FIbond/core/warning.h /W4 /WX)
+ add_definitions (-D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS)
+- set (Boost_USE_STATIC_LIBS ON)
++ set (Boost_USE_STATIC_LIBS OFF)
+ endif (MSVC)
+
+ if (WIN32)
+@@ -90,9 +90,6 @@ if (DEFINED ENV{APPVEYOR} AND ("$ENV{BOND_BUILD}" STREQUAL "C++"))
+ endif()
+ endif()
+
+-# disable Boost auto-linking
+-add_definitions (-DBOOST_ALL_NO_LIB)
+-
+ # VS2015U2 fixed a bug with atomics and emits a warning without this definition.
+ add_definitions (-D_ENABLE_ATOMIC_ALIGNMENT_FIX)
+
diff --git a/ports/bond/0002_omit_rapidjson.patch b/ports/bond/0002_omit_rapidjson.patch
new file mode 100644
index 000000000..3e4a0571b
--- /dev/null
+++ b/ports/bond/0002_omit_rapidjson.patch
@@ -0,0 +1,12 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0d743da4..92f91103 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -39,7 +39,6 @@ install (DIRECTORY
+ cpp/inc/bond
+ cpp/generated/bond
+ python/inc/bond
+- thirdparty/rapidjson/include/rapidjson
+ DESTINATION include
+ PATTERN *.cpp EXCLUDE)
+
diff --git a/ports/bond/0003_rename_gbc_during_install.patch b/ports/bond/0003_rename_gbc_during_install.patch
new file mode 100644
index 000000000..edbce6c0a
--- /dev/null
+++ b/ports/bond/0003_rename_gbc_during_install.patch
@@ -0,0 +1,22 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0d743da4..72d62c5e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -49,7 +49,14 @@ install (EXPORT bond
+
+ # if BOND_GBC_PATH is set we must copy over that gbc to the install location
+ if (BOND_GBC_PATH)
+- install (FILES
+- ${BOND_GBC_PATH}
+- DESTINATION bin)
++ if (WIN32)
++ set(INSTALLED_GBC_NAME gbc.exe)
++ else()
++ set(INSTALLED_GBC_NAME gbc)
++ endif()
++
++ install (
++ FILES ${BOND_GBC_PATH}
++ DESTINATION bin
++ RENAME ${INSTALLED_GBC_NAME})
+ endif()
diff --git a/ports/bond/CONTROL b/ports/bond/CONTROL
index 70384f020..0e804025a 100644
--- a/ports/bond/CONTROL
+++ b/ports/bond/CONTROL
@@ -1,5 +1,5 @@
Source: bond
Maintainer: bond@microsoft.com
-Version: 5.0.0-4-g53ea136
+Version: 5.2.0
Description: Bond is a cross-platform framework for working with schematized data. It supports cross-language de/serialization and powerful generic mechanisms for efficiently manipulating data. Bond is broadly used at Microsoft in high scale services. <https://github.com/Microsoft/bond>
Build-Depends: boost, rapidjson
diff --git a/ports/bond/portfile.cmake b/ports/bond/portfile.cmake
index 8dbf7cf53..d806173f1 100644
--- a/ports/bond/portfile.cmake
+++ b/ports/bond/portfile.cmake
@@ -1,31 +1,51 @@
-if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
- message(STATUS "Warning: Static building not supported yet. Building dynamic.")
- set(VCPKG_LIBRARY_LINKAGE dynamic)
+if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
+ message(STATUS "Warning: Dynamic building not supported yet. Building static.")
+ set(VCPKG_LIBRARY_LINKAGE static)
endif()
+
include(vcpkg_common_functions)
-set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/bond-53ea13692925bee4ba494ee9de3614f15c09d85d)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/bond-5.2.0)
+
vcpkg_download_distfile(ARCHIVE
- URLS "https://github.com/Microsoft/bond/archive/53ea13692925bee4ba494ee9de3614f15c09d85d.zip"
- FILENAME "bond-5.0.0-4-g53ea136.zip"
- SHA512 fe39dc211f6b99cba3f2284d78a524305dfb8dcd1f597639c45625df369f96c3321cb6782fef9eb34d34fab69c8da9015024eee34be6d0a76d730729517183da
+ URLS "https://github.com/Microsoft/bond/archive/5.2.0.zip"
+ FILENAME "bond-5.2.0.zip"
+ SHA512 bc533d9e7431d0690b555aa4a42ca947f8025fc388f698c40cfeacf4286892ac5fd86d93df187009d4791e3eae240eb60886947cfe600838c6058274eb4d625c
+)
+vcpkg_download_distfile(GBC_ARCHIVE
+ URLS "https://github.com/Microsoft/bond/releases/download/5.2.0/gbc-5.2.0-amd64.zip"
+ FILENAME "gbc-5.2.0-amd64.zip"
+ SHA512 9413c0035939788724e08ac858bfc3b2ccefbba74ed737b22eca35ec0da576aa2bf8403e606d2ac20b3fbc827933c289630266824613e04b1921b66fef00e132
)
+
vcpkg_extract_source_archive(${ARCHIVE})
-# To build Bond, you'll either need to have the Haskell toolchain installed
-# or set the environment variable BOND_GBC_PATH to point to a directory that
-# contains a pre-compiled version of gbc.exe.
-#
-# You can get a pre-compiled version of gbc from the Bond.Compiler NuGet
-# package <http://www.nuget.org/packages/Bond.Compiler/>.
-#
-# For instructions on installing the Haskell toolchain and getting it to
-# work with Bond, see the Bond README
-# <https://github.com/Microsoft/bond/blob/master/README.md#windows>
+# Extract the precompiled gbc
+vcpkg_extract_source_archive(${GBC_ARCHIVE} ${CURRENT_BUILDTREES_DIR}/tools/)
+set(FETCHED_GBC_PATH ${CURRENT_BUILDTREES_DIR}/tools/gbc-5.2.0-amd64.exe)
+
+if (NOT EXISTS ${FETCHED_GBC_PATH})
+ message(FATAL_ERROR "Fetching GBC failed. Expected '${FETCHED_GBC_PATH}' to exists, but it doesn't.")
+endif()
+
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES
+ # Change Boost_USE_STATIC_LIBS to be compatible with vcpkg's treatment
+ # of Boost
+ ${CMAKE_CURRENT_LIST_DIR}/0001_boost_static_libs.patch
+ # Don't install rapidjson from the (empty) submodule. With vcpkg, we get
+ # rapidjson from vcpkg
+ ${CMAKE_CURRENT_LIST_DIR}/0002_omit_rapidjson.patch
+ # Temporary until this is committed upstream. See
+ # https://github.com/Microsoft/bond/pull/324 for details.
+ ${CMAKE_CURRENT_LIST_DIR}/0003_rename_gbc_during_install.patch
+)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
OPTIONS
-DBOND_LIBRARIES_ONLY=TRUE
+ -DBOND_GBC_PATH=${FETCHED_GBC_PATH}
)
vcpkg_install_cmake()
@@ -34,11 +54,14 @@ vcpkg_install_cmake()
file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/bond)
file(RENAME ${CURRENT_PACKAGES_DIR}/share/bond/LICENSE ${CURRENT_PACKAGES_DIR}/share/bond/copyright)
+# Drop a copy of gbc in tools/ so that it can be used
+file(COPY ${CURRENT_PACKAGES_DIR}/bin/gbc.exe DESTINATION ${CURRENT_PACKAGES_DIR}/tools/)
+
# vcpkg doesn't--as of version 0.0.30--like executables such as gbc.exe in
-# the output. Just delete it for now.
-file(REMOVE
- ${CURRENT_PACKAGES_DIR}/bin/gbc.exe
- ${CURRENT_PACKAGES_DIR}/debug/bin/gbc.exe)
+# the output. Just delete the bin/ directories for now.
+file(REMOVE_RECURSE
+ ${CURRENT_PACKAGES_DIR}/bin/
+ ${CURRENT_PACKAGES_DIR}/debug/bin/)
# There's no way to supress installation of the headers in the debug build,
# so we just delete them.
diff --git a/ports/chakracore/disable_warning_as_error.patch b/ports/chakracore/disable_warning_as_error.patch
new file mode 100644
index 000000000..da7b5da77
--- /dev/null
+++ b/ports/chakracore/disable_warning_as_error.patch
@@ -0,0 +1,20 @@
+diff --git a/bin/NativeTests/NativeTests.vcxproj b/bin/NativeTests/NativeTests.vcxproj
+index d020992..ac70a65 100644
+--- a/bin/NativeTests/NativeTests.vcxproj
++++ b/bin/NativeTests/NativeTests.vcxproj
+@@ -30,6 +30,15 @@
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>
+ <SmallerTypeCheck>false</SmallerTypeCheck>
+ <MinimalRebuild>false</MinimalRebuild>
++ <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</TreatWarningAsError>
++ <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</TreatWarningAsError>
++ <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Test|Win32'">false</TreatWarningAsError>
++ <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">false</TreatWarningAsError>
++ <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</TreatWarningAsError>
++ <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Test|ARM'">false</TreatWarningAsError>
++ <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</TreatWarningAsError>
++ <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</TreatWarningAsError>
++ <TreatWarningAsError Condition="'$(Configuration)|$(Platform)'=='Test|x64'">false</TreatWarningAsError>
+ <!-- <CallingConvention Condition="'$(Platform)'=='Win32'">CDecl</CallingConvention> -->
+ </ClCompile>
+ <Link>
diff --git a/ports/chakracore/portfile.cmake b/ports/chakracore/portfile.cmake
index d4bec63d2..b6aa94b4a 100644
--- a/ports/chakracore/portfile.cmake
+++ b/ports/chakracore/portfile.cmake
@@ -4,14 +4,20 @@
endif()
include(vcpkg_common_functions)
-set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/ChakraCore-1.4.0)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/ChakraCore-1.4.1)
vcpkg_download_distfile(ARCHIVE_FILE
- URLS "https://github.com/Microsoft/ChakraCore/archive/v1.4.0.tar.gz"
- FILENAME "ChakraCore-1.4.0.tar.gz"
- SHA512 d515d56ff1c5776ca4663e27daa4d1c7ca58c57f097799de756980771b5701e35639eefa4db5921d7327e6607b8920df3b30677eb467123e04536df0d971cebc
+ URLS "https://github.com/Microsoft/ChakraCore/archive/v1.4.1.tar.gz"
+ FILENAME "ChakraCore-1.4.1.tar.gz"
+ SHA512 9ca89de88a4d6102826ce4e301ea81b70296cca72131043f9942de715dee2862791c6f33ebce1f12fcafc1554a872a2cf9317313d56c57abff0a6d814a77f2d5
)
vcpkg_extract_source_archive(${ARCHIVE_FILE})
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES
+ ${CMAKE_CURRENT_LIST_DIR}/disable_warning_as_error.patch
+)
+
vcpkg_build_msbuild(
PROJECT_PATH ${SOURCE_PATH}/Build/Chakra.Core.sln
)
@@ -19,6 +25,8 @@ vcpkg_build_msbuild(
file(INSTALL
${SOURCE_PATH}/lib/jsrt/ChakraCore.h
${SOURCE_PATH}/lib/jsrt/ChakraCommon.h
+ ${SOURCE_PATH}/lib/jsrt/ChakraCommonWindows.h
+ ${SOURCE_PATH}/lib/jsrt/ChakraDebug.h
DESTINATION ${CURRENT_PACKAGES_DIR}/include
)
file(INSTALL
@@ -40,5 +48,11 @@ file(INSTALL
DESTINATION ${CURRENT_PACKAGES_DIR}/lib
)
file(INSTALL
+ ${SOURCE_PATH}/Build/VcBuild/bin/${TRIPLET_SYSTEM_ARCH}_release/ch.exe
+ ${SOURCE_PATH}/Build/VcBuild/bin/${TRIPLET_SYSTEM_ARCH}_release/GCStress.exe
+ ${SOURCE_PATH}/Build/VcBuild/bin/${TRIPLET_SYSTEM_ARCH}_release/rl.exe
+ DESTINATION ${CURRENT_PACKAGES_DIR}/tools/chakracore)
+vcpkg_copy_pdbs()
+file(INSTALL
${SOURCE_PATH}/LICENSE.txt
DESTINATION ${CURRENT_PACKAGES_DIR}/share/ChakraCore RENAME copyright)
diff --git a/ports/clockutils/CONTROL b/ports/clockutils/CONTROL
index 4ade8d5f0..8f88e71ec 100644
--- a/ports/clockutils/CONTROL
+++ b/ports/clockutils/CONTROL
@@ -1,3 +1,3 @@
Source: clockutils
-Version: 1.1.1
+Version: 1.1.1-3651f232c27074c4ceead169e223edf5f00247c5
Description: A lightweight c++ library for commonly needed tasks. Optimized for simplicity and speed.
diff --git a/ports/clockutils/portfile.cmake b/ports/clockutils/portfile.cmake
index c078673a6..33f0b1f83 100644
--- a/ports/clockutils/portfile.cmake
+++ b/ports/clockutils/portfile.cmake
@@ -1,9 +1,10 @@
include(vcpkg_common_functions)
-set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/clockUtils-1.1.1)
+set(VERSION 3651f232c27074c4ceead169e223edf5f00247c5)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/clockUtils-${VERSION})
vcpkg_download_distfile(ARCHIVE
- URLS "https://github.com/ClockworkOrigins/clockUtils/archive/1.1.1.tar.gz"
- FILENAME "clockUtils-1.1.1.tar.gz"
- SHA512 6b0c57862baf04c0c5529549ba13983e53445172d9a272571aa20968ba6dba15f1cf480096ca100d450218fef090805366d0564c77a4aa4721a4fe694a0481c9
+ URLS "https://github.com/ClockworkOrigins/clockUtils/archive/${VERSION}.tar.gz"
+ FILENAME "clockUtils-${VERSION}.tar.gz"
+ SHA512 ddb70cae9ced25de77a2df1854dac15e58a77347042ba3ee9c691f85f49edbc6539c84929a7477d429fb9161ba24c57d24d767793b8b1180216d5ddfc5d3ed6a
)
vcpkg_extract_source_archive(${ARCHIVE})
@@ -33,5 +34,6 @@ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/clockUtils)
file(RENAME ${CURRENT_PACKAGES_DIR}/share/clockUtils/LICENSE ${CURRENT_PACKAGES_DIR}/share/clockUtils/copyright)
file(REMOVE ${CURRENT_PACKAGES_DIR}/LICENSE)
+file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/LICENSE)
vcpkg_copy_pdbs() \ No newline at end of file
diff --git a/ports/dlib/CONTROL b/ports/dlib/CONTROL
new file mode 100644
index 000000000..91ce3eb57
--- /dev/null
+++ b/ports/dlib/CONTROL
@@ -0,0 +1,3 @@
+Source: dlib
+Version: 19.2
+Description: Modern C++ toolkit containing machine learning algorithms and tools for creating complex software in C++
diff --git a/ports/dlib/portfile.cmake b/ports/dlib/portfile.cmake
new file mode 100644
index 000000000..3ef3f840e
--- /dev/null
+++ b/ports/dlib/portfile.cmake
@@ -0,0 +1,45 @@
+# Common Ambient Variables:
+# VCPKG_ROOT_DIR = <C:\path\to\current\vcpkg>
+# TARGET_TRIPLET is the current triplet (x86-windows, etc)
+# PORT is the current port name (zlib, etc)
+# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
+# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
+#
+
+include(vcpkg_common_functions)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/dlib-19.2)
+vcpkg_download_distfile(ARCHIVE
+ URLS "http://dlib.net/files/dlib-19.2.tar.bz2"
+ FILENAME "dlib-19.2.tar.bz2"
+ SHA512 dcef5c8be52fe2650c1eccac6c7ac4050075dc07ee504a8bf3df6c9a597da5fdc09506e631abfa979d71c74940ce39ec5267be4c3a676a01ac66fcb14cbfe854
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA # Disable this option if project cannot be built with Ninja
+ # OPTIONS -DUSE_THIS_IN_ALL_BUILDS=1 -DUSE_THIS_TOO=2
+ # OPTIONS_RELEASE -DOPTIMIZE=1
+ # OPTIONS_DEBUG -DDEBUGGABLE=1
+)
+
+vcpkg_install_cmake()
+
+# There is no way to suppress installation of the headers and resource files in debug build.
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/dlib/test)
+
+# Remove other files not required in package
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/lib/cmake)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/cmake)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/dlib/all)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/dlib/cmake_utils)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/include/dlib/external/libpng/arm)
+
+# Handle copyright
+#file(COPY ${SOURCE_PATH}/docs/license.html DESTINATION ${CURRENT_PACKAGES_DIR}/share/dlib)
+file(COPY ${CURRENT_PACKAGES_DIR}/share/doc/dlib/LICENSE.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/dlib)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/dlib/LICENSE.txt ${CURRENT_PACKAGES_DIR}/share/dlib/COPYRIGHT)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/share/doc) \ No newline at end of file
diff --git a/ports/fmt/CONTROL b/ports/fmt/CONTROL
index ce2bfc4e0..4e980b4d5 100644
--- a/ports/fmt/CONTROL
+++ b/ports/fmt/CONTROL
@@ -1,3 +1,3 @@
Source: fmt
-Version: 3.0.1-2
+Version: 3.0.1-4
Description: Formatting library for C++. It can be used as a safe alternative to printf or as a fast alternative to IOStreams.
diff --git a/ports/fmt/portfile.cmake b/ports/fmt/portfile.cmake
index 3ea33e779..959a0ebe7 100644
--- a/ports/fmt/portfile.cmake
+++ b/ports/fmt/portfile.cmake
@@ -13,6 +13,7 @@ vcpkg_extract_source_archive(${ARCHIVE_FILE})
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
OPTIONS
-DFMT_CMAKE_DIR=share/fmt
-DFMT_TEST=OFF
@@ -29,6 +30,10 @@ if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
file(RENAME ${CURRENT_PACKAGES_DIR}/lib/fmt.dll ${CURRENT_PACKAGES_DIR}/bin/fmt.dll)
file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/fmt.dll ${CURRENT_PACKAGES_DIR}/debug/bin/fmt.dll)
+ # Force FMT_SHARED to 1
+ file(READ ${CURRENT_PACKAGES_DIR}/include/fmt/format.h FMT_FORMAT_H)
+ string(REPLACE "defined(FMT_SHARED)" "1" FMT_FORMAT_H "${FMT_FORMAT_H}")
+ file(WRITE ${CURRENT_PACKAGES_DIR}/include/fmt/format.h "${FMT_FORMAT_H}")
endif()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
#file(REMOVE ${CURRENT_PACKAGES_DIR}/include/fmt/format.cc)
diff --git a/ports/gdk-pixbuf/CMakeLists.txt b/ports/gdk-pixbuf/CMakeLists.txt
new file mode 100644
index 000000000..a26e59fb4
--- /dev/null
+++ b/ports/gdk-pixbuf/CMakeLists.txt
@@ -0,0 +1,128 @@
+cmake_minimum_required(VERSION 3.0)
+project(gdk-pixbuf)
+
+set(GDK_PIXBUF_LIB_SUFFIX 2.0)
+set(GDK_PIXBUF_DLL_SUFFIX 2)
+set(GDK_PIXBUF_BINARY_VERSION 2.10.0)
+set(GLIB_LIB_VERSION 2.0)
+
+find_package(ZLIB REQUIRED)
+find_package(PNG REQUIRED)
+
+find_path(GLIB_INCLUDE_DIR glib.h)
+find_library(GLIB_GLIB_LIBRARY glib-${GLIB_LIB_VERSION})
+find_library(GLIB_GIO_LIBRARY gio-${GLIB_LIB_VERSION})
+find_library(GLIB_GOBJECT_LIBRARY gobject-${GLIB_LIB_VERSION})
+find_library(GLIB_GMODULE_LIBRARY gmodule-${GLIB_LIB_VERSION})
+set(GLIB_LIBRARIES ${GLIB_GLIB_LIBRARY} ${GLIB_GOBJECT_LIBRARY} ${GLIB_GMODULE_LIBRARY} ${GLIB_GIO_LIBRARY})
+
+find_path(LIBINTL_INCLUDE_DIR libintl.h)
+find_library(LIBINTL_LIBRARY NAMES libintl intl)
+
+configure_file(./config.h.win32 ${CMAKE_SOURCE_DIR}/config.h COPYONLY)
+include_directories(. ./gdk-pixbuf)
+
+add_library(gdk-pixbuf
+ gdk-pixbuf/gdk-pixbuf.c
+ gdk-pixbuf/gdk-pixbuf-animation.c
+ gdk-pixbuf/gdk-pixbuf-data.c
+ gdk-pixbuf/gdk-pixbuf-io.c
+ gdk-pixbuf/gdk-pixbuf-loader.c
+ gdk-pixbuf/gdk-pixbuf-scale.c
+ gdk-pixbuf/gdk-pixbuf-simple-anim.c
+ gdk-pixbuf/gdk-pixbuf-scaled-anim.c
+ gdk-pixbuf/gdk-pixbuf-util.c
+ gdk-pixbuf/gdk-pixdata.c
+ gdk-pixbuf/gdk-pixbuf-enum-types.c
+ gdk-pixbuf/io-ani.c
+ gdk-pixbuf/io-ani-animation.c
+ gdk-pixbuf/io-icns.c
+ gdk-pixbuf/io-pnm.c
+ gdk-pixbuf/io-png.c
+ gdk-pixbuf/io-qtif.c
+ gdk-pixbuf/io-tga.c
+ gdk-pixbuf/gdk-pixbuf-buffer-queue.c
+ gdk-pixbuf/io-xpm.c
+ gdk-pixbuf/io-xbm.c
+ gdk-pixbuf/pixops/pixops.c
+ gdk-pixbuf/io-gdip-animation.c
+ gdk-pixbuf/io-gdip-bmp.c
+ gdk-pixbuf/io-gdip-emf.c
+ gdk-pixbuf/io-gdip-gif.c
+ gdk-pixbuf/io-gdip-ico.c
+ gdk-pixbuf/io-gdip-jpeg.c
+ gdk-pixbuf/io-gdip-tiff.c
+ gdk-pixbuf/io-gdip-utils.c
+ gdk-pixbuf/io-gdip-wmf.c)
+
+target_include_directories(gdk-pixbuf PRIVATE
+ ${GLIB_INCLUDE_DIR}
+ ${PNG_INCLUDE_DIRS}
+ ${ZLIB_INCLUDE_DIRS}
+ ${LIBINTL_INCLUDE_DIR})
+
+target_link_libraries(gdk-pixbuf
+ ${GLIB_LIBRARIES}
+ ${ZLIB_LIBRARIES}
+ ${PNG_LIBRARIES}
+ ${LIBINTL_LIBRARY}
+ Gdiplus)
+
+target_compile_definitions(gdk-pixbuf PRIVATE
+ HAVE_CONFIG_H
+ GDK_PIXBUF_COMPILATION
+ GDK_PIXBUF_ENABLE_BACKEND
+ DLL_EXPORT
+ GDK_PIXBUF_RELOCATABLE
+ GDK_PIXBUF_PREFIX="/dummy"
+ GDK_PIXBUF_BINARY_VERSION="${GDK_PIXBUF_BINARY_VERSION}"
+ INCLUDE_ani
+ INCLUDE_tga
+ INCLUDE_xbm
+ INCLUDE_png
+ INCLUDE_qtif
+ INCLUDE_pnm
+ INCLUDE_icns
+ INCLUDE_xpm
+ INCLUDE_gdiplus
+ G_DISABLE_SINGLE_INCLUDES
+ GDK_PIXBUF_DISABLE_SINGLE_INCLUDES)
+
+set_target_properties(gdk-pixbuf PROPERTIES
+ OUTPUT_NAME gdk_pixbuf-${GDK_PIXBUF_DLL_SUFFIX}
+ ARCHIVE_OUTPUT_NAME gdk_pixbuf-${GDK_PIXBUF_LIB_SUFFIX})
+
+install(TARGETS gdk-pixbuf
+ RUNTIME DESTINATION bin
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib)
+
+macro(gdk_add_tool TOOL_NAME)
+ add_executable(${TOOL_NAME} ${ARGN})
+ target_include_directories(${TOOL_NAME} PRIVATE ${GLIB_INCLUDE_DIR})
+ target_link_libraries(${TOOL_NAME} gdk-pixbuf ${GLIB_LIBRARIES})
+ install(TARGETS ${TOOL_NAME} RUNTIME DESTINATION tools/gdk-pixbuf)
+endmacro()
+
+if(NOT GDK_SKIP_TOOLS)
+ gdk_add_tool(gdk-pixbuf-csource gdk-pixbuf/gdk-pixbuf-csource.c)
+ gdk_add_tool(gdk-pixbuf-pixdata gdk-pixbuf/gdk-pixbuf-pixdata.c)
+endif()
+
+if(NOT GDK_SKIP_HEADERS)
+ INSTALL(FILES
+ gdk-pixbuf/gdk-pixbuf.h
+ gdk-pixbuf/gdk-pixbuf-autocleanups.h
+ gdk-pixbuf/gdk-pixbuf-core.h
+ gdk-pixbuf/gdk-pixbuf-transform.h
+ gdk-pixbuf/gdk-pixbuf-io.h
+ gdk-pixbuf/gdk-pixbuf-animation.h
+ gdk-pixbuf/gdk-pixbuf-simple-anim.h
+ gdk-pixbuf/gdk-pixbuf-loader.h
+ gdk-pixbuf/gdk-pixbuf-enum-types.h
+ gdk-pixbuf/gdk-pixbuf-marshal.h
+ gdk-pixbuf/gdk-pixbuf-features.h
+ gdk-pixbuf/gdk-pixdata.h
+ gdk-pixbuf/gdk-pixbuf-macros.h
+ DESTINATION include/gdk-pixbuf)
+endif()
diff --git a/ports/gdk-pixbuf/CONTROL b/ports/gdk-pixbuf/CONTROL
new file mode 100644
index 000000000..8c32ddeff
--- /dev/null
+++ b/ports/gdk-pixbuf/CONTROL
@@ -0,0 +1,4 @@
+Source: gdk-pixbuf
+Version: 2.36.5
+Description: Image loading library.
+Build-Depends: gettext, zlib, libpng, glib
diff --git a/ports/gdk-pixbuf/portfile.cmake b/ports/gdk-pixbuf/portfile.cmake
new file mode 100644
index 000000000..7d104a9fe
--- /dev/null
+++ b/ports/gdk-pixbuf/portfile.cmake
@@ -0,0 +1,28 @@
+if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
+ message(STATUS "Warning: Static building not supported. Building dynamic.")
+ set(VCPKG_LIBRARY_LINKAGE dynamic)
+endif()
+
+include(vcpkg_common_functions)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/gdk-pixbuf-2.36.5)
+vcpkg_download_distfile(ARCHIVE
+ URLS "http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/2.36/gdk-pixbuf-2.36.5.tar.xz"
+ FILENAME "gdk-pixbuf-2.36.5.tar.xz"
+ SHA512 27c39bace7bc6cf713915dcb1f35eebfb80ae599d1c9106f48af4cd447050c41e37adee76d29d6b42fbe3d0123b054c8701f2d1b4b99060b4869aa7871523b70)
+
+vcpkg_extract_source_archive(${ARCHIVE})
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS_DEBUG
+ -DGDK_SKIP_HEADERS=ON
+ -DGDK_SKIP_TOOLS=ON)
+
+vcpkg_install_cmake()
+vcpkg_copy_pdbs()
+vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/gdk-pixbuf)
+
+file(COPY ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/gdk-pixbuf)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/gdk-pixbuf/COPYING ${CURRENT_PACKAGES_DIR}/share/gdk-pixbuf/copyright)
diff --git a/ports/glbinding/portfile.cmake b/ports/glbinding/portfile.cmake
index 165c8d889..6f6dfcc68 100644
--- a/ports/glbinding/portfile.cmake
+++ b/ports/glbinding/portfile.cmake
@@ -53,6 +53,19 @@ file(REMOVE ${CURRENT_PACKAGES_DIR}/AUTHORS
${CURRENT_PACKAGES_DIR}/debug/VERSION
)
+# There are some executables that are only built if glfw is found by CMake (see source/tools/*/CMakeLists.txt).
+# glfw is not listed as a dependency for glbinding, so this only happen on systems where package glfw3 is present.
+# glbinding's CMake doesn't offer the choice to exlude those tools from the build process, so deleting them here:
+file(REMOVE ${CURRENT_PACKAGES_DIR}/glcontexts.exe
+ ${CURRENT_PACKAGES_DIR}/glfunctions.exe
+ ${CURRENT_PACKAGES_DIR}/glmeta.exe
+ ${CURRENT_PACKAGES_DIR}/glqueries.exe
+ ${CURRENT_PACKAGES_DIR}/debug/glcontextsd.exe
+ ${CURRENT_PACKAGES_DIR}/debug/glfunctionsd.exe
+ ${CURRENT_PACKAGES_DIR}/debug/glmetad.exe
+ ${CURRENT_PACKAGES_DIR}/debug/glqueriesd.exe
+)
+
# Handle copyright
file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/glbinding)
file(RENAME ${CURRENT_PACKAGES_DIR}/share/glbinding/LICENSE ${CURRENT_PACKAGES_DIR}/share/glbinding/copyright)
diff --git a/ports/grpc/CONTROL b/ports/grpc/CONTROL
index b9d19da4c..3a248b448 100644
--- a/ports/grpc/CONTROL
+++ b/ports/grpc/CONTROL
@@ -1,4 +1,4 @@
Source: grpc
-Version: 1.1.0-dev-1674f65-1
+Version: 1.1.2-1
Build-Depends: zlib, openssl, protobuf
Description: An RPC library and framework \ No newline at end of file
diff --git a/ports/grpc/grpc-fix-cmake-build.patch b/ports/grpc/grpc-fix-cmake-build.patch
new file mode 100644
index 000000000..95e345036
--- /dev/null
+++ b/ports/grpc/grpc-fix-cmake-build.patch
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index d52e199..30ed816 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -2072,6 +2072,8 @@ foreach(_hdr
+ include/grpc/impl/codegen/sync_generic.h
+ include/grpc/impl/codegen/sync_posix.h
+ include/grpc/impl/codegen/sync_windows.h
++ include/grpc++/impl/codegen/proto_utils.h
++ include/grpc++/impl/codegen/config_protobuf.h
+ )
+ string(REPLACE "include/" "" _path ${_hdr})
+ get_filename_component(_path ${_path} PATH)
diff --git a/ports/grpc/portfile.cmake b/ports/grpc/portfile.cmake
index ffd71d137..c6239d8c3 100644
--- a/ports/grpc/portfile.cmake
+++ b/ports/grpc/portfile.cmake
@@ -3,39 +3,28 @@ if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
set(VCPKG_LIBRARY_LINKAGE static)
endif()
include(vcpkg_common_functions)
-find_program(GIT git)
-
-set(GIT_URL "https://github.com/grpc/grpc.git")
-set(GIT_REV "1674f650ad9411448a35b7c19c5dbdaf0ebd8916")
-
-if(NOT EXISTS "${DOWNLOADS}/grpc.git")
- message(STATUS "Cloning")
- vcpkg_execute_required_process(
- COMMAND ${GIT} clone --bare ${GIT_URL} ${DOWNLOADS}/grpc.git
- WORKING_DIRECTORY ${DOWNLOADS}
- LOGNAME clone
- )
-endif()
-message(STATUS "Cloning done")
-
-if(NOT EXISTS "${CURRENT_BUILDTREES_DIR}/src/.git")
- message(STATUS "Adding worktree")
- vcpkg_execute_required_process(
- COMMAND ${GIT} worktree add -f --detach ${CURRENT_BUILDTREES_DIR}/src ${GIT_REV}
- WORKING_DIRECTORY ${DOWNLOADS}/grpc.git
- LOGNAME worktree
- )
- message(STATUS "Updating sumbodules")
- vcpkg_execute_required_process(
- COMMAND ${GIT} submodule update --init third_party/nanopb
- WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/src
- LOGNAME submodule
- )
+
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/grpc-1.1.2)
+
+if(EXISTS "${CURRENT_BUILDTREES_DIR}/src/.git")
+ file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/src)
endif()
-message(STATUS "Adding worktree and updating sumbodules done")
+
+vcpkg_download_distfile(ARCHIVE_FILE
+ URLS "https://github.com/grpc/grpc/archive/v1.1.2.zip"
+ FILENAME "grpc-v1.1.2.tar.gz"
+ SHA512 6e0666ecb72f0a78148fadf627e05b5ba0f1c893919f1e691775d09374e7c4b9b05ff1d276e716ac2a81eb2a3fb88c4a095928589286d2f083bd60539050f5d9
+)
+vcpkg_extract_source_archive(${ARCHIVE_FILE})
+
+# patch is from https://github.com/grpc/grpc/commit/a5fac1f8a00b0ba6ca784baa4783ab947579693b
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES ${CMAKE_CURRENT_LIST_DIR}/grpc-fix-cmake-build.patch
+)
vcpkg_configure_cmake(
- SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src
+ SOURCE_PATH ${SOURCE_PATH}
OPTIONS
-DgRPC_INSTALL=ON
-DgRPC_ZLIB_PROVIDER=package
@@ -48,11 +37,34 @@ vcpkg_install_cmake()
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/share/grpc)
file(RENAME ${CURRENT_PACKAGES_DIR}/lib/cmake/gRPC/gRPCConfig.cmake ${CURRENT_PACKAGES_DIR}/share/grpc/gRPCConfig.cmake)
file(RENAME ${CURRENT_PACKAGES_DIR}/lib/cmake/gRPC/gRPCConfigVersion.cmake ${CURRENT_PACKAGES_DIR}/share/grpc/gRPCConfigVersion.cmake)
-file(RENAME ${CURRENT_PACKAGES_DIR}/lib/cmake/gRPC/gRPCTargets.cmake ${CURRENT_PACKAGES_DIR}/share/grpc/gRPCTargets.cmake)
-file(RENAME ${CURRENT_PACKAGES_DIR}/lib/cmake/gRPC/gRPCTargets-release.cmake ${CURRENT_PACKAGES_DIR}/share/grpc/gRPCTargets-release.cmake)
-file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/cmake/gRPC/gRPCTargets-debug.cmake ${CURRENT_PACKAGES_DIR}/share/grpc/gRPCTargets-debug.cmake)
-file(INSTALL ${CURRENT_BUILDTREES_DIR}/src/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/grpc RENAME copyright)
+# Update import target prefix in gRPCTargets.cmake
+file(READ ${CURRENT_PACKAGES_DIR}/lib/cmake/gRPC/gRPCTargets.cmake _contents)
+set(pattern "get_filename_component(_IMPORT_PREFIX \"\${_IMPORT_PREFIX}\" PATH)\n")
+string(REPLACE "${pattern}${pattern}" "${pattern}" _contents "${_contents}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/grpc/gRPCTargets.cmake "${_contents}")
+
+# Update paths in gRPCTargets-release.cmake
+file(READ ${CURRENT_PACKAGES_DIR}/lib/cmake/gRPC/gRPCTargets-release.cmake _contents)
+string(REPLACE "\${_IMPORT_PREFIX}/bin/" "\${_IMPORT_PREFIX}/tools/" _contents "${_contents}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/grpc/gRPCTargets-release.cmake "${_contents}")
+
+# Update paths in gRPCTargets-debug.cmake
+file(READ ${CURRENT_PACKAGES_DIR}/debug/lib/cmake/gRPC/gRPCTargets-debug.cmake _contents)
+string(REPLACE "\${_IMPORT_PREFIX}/bin/" "\${_IMPORT_PREFIX}/tools/" _contents "${_contents}")
+string(REPLACE "\${_IMPORT_PREFIX}/lib/" "\${_IMPORT_PREFIX}/debug/lib/" _contents "${_contents}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/grpc/gRPCTargets-debug.cmake "${_contents}")
+
+file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/grpc RENAME copyright)
+file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools)
+file(INSTALL ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/Release/grpc_cpp_plugin.exe DESTINATION ${CURRENT_PACKAGES_DIR}/tools)
+
+# Install tools and plugins
+file(
+ INSTALL ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/Release/
+ DESTINATION ${CURRENT_PACKAGES_DIR}/tools
+ FILES_MATCHING PATTERN "*.exe"
+)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
diff --git a/ports/hdf5/CONTROL b/ports/hdf5/CONTROL
new file mode 100644
index 000000000..46049af87
--- /dev/null
+++ b/ports/hdf5/CONTROL
@@ -0,0 +1,4 @@
+Source: hdf5
+Version: 1.8.18
+Description: HDF5 is a data model, library, and file format for storing and managing data
+Build-Depends: zlib, szip, msmpi \ No newline at end of file
diff --git a/ports/hdf5/portfile.cmake b/ports/hdf5/portfile.cmake
new file mode 100644
index 000000000..f54543418
--- /dev/null
+++ b/ports/hdf5/portfile.cmake
@@ -0,0 +1,48 @@
+# Common Ambient Variables:
+# VCPKG_ROOT_DIR = <C:\path\to\current\vcpkg>
+# TARGET_TRIPLET is the current triplet (x86-windows, etc)
+# PORT is the current port name (zlib, etc)
+# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
+# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
+#
+
+include(vcpkg_common_functions)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/hdf5-1.8.18)
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://support.hdfgroup.org/ftp/HDF5/current18/src/hdf5-1.8.18.tar.bz2"
+ FILENAME "hdf5-1.8.18.tar.bz2"
+ SHA512 01f6d14bdd3be2ced9c63cc9e1820cd7ea11db649ff9f3a3055c18c4b0fffe777fd23baad536e3bce31c4d76fe17db64a3972762e1bb4d232927c1ca140e72b2
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS
+ -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=1
+ -DBUILD_TESTING=OFF
+ -DHDF5_BUILD_EXAMPLES=OFF
+ -DHDF5_BUILD_TOOLS=OFF
+ -DHDF5_BUILD_CPP_LIB=OFF
+ -DHDF5_ENABLE_PARALLEL=ON
+ -DHDF5_ENABLE_Z_LIB_SUPPORT=ON
+ -DHDF5_ENABLE_SZIP_SUPPORT=ON
+ -DHDF5_ENABLE_SZIP_ENCODING=ON
+ -DHDF5_INSTALL_DATA_DIR=share/hdf5/data
+ -DHDF5_INSTALL_CMAKE_DIR=share/hdf5
+ "-DSZIP_LIBRARY_DEBUG=${CURRENT_INSTALLED_DIR}\\debug\\lib\\szip_D.lib"
+ "-DSZIP_LIBRARY_RELEASE=${CURRENT_INSTALLED_DIR}\\lib\\szip.lib"
+ "-DSZIP_INCLUDE_DIR=${CURRENT_INSTALLED_DIR}\\include"
+)
+
+vcpkg_install_cmake()
+vcpkg_copy_pdbs()
+
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/hdf5/data/COPYING ${CURRENT_PACKAGES_DIR}/share/hdf5/copyright)
+
+file(READ ${CURRENT_PACKAGES_DIR}/debug/share/hdf5/hdf5-targets-debug.cmake HDF5_TARGETS_DEBUG_MODULE)
+string(REPLACE "\${_IMPORT_PREFIX}" "\${_IMPORT_PREFIX}/debug" HDF5_TARGETS_DEBUG_MODULE "${HDF5_TARGETS_DEBUG_MODULE}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/hdf5/hdf5-targets-debug.cmake "${HDF5_TARGETS_DEBUG_MODULE}")
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
diff --git a/ports/libepoxy/CONTROL b/ports/libepoxy/CONTROL
new file mode 100644
index 000000000..963a3e17a
--- /dev/null
+++ b/ports/libepoxy/CONTROL
@@ -0,0 +1,3 @@
+Source: libepoxy
+Version: 1.4.0-2432daf-1
+Description: Epoxy is a library for handling OpenGL function pointer management for you
diff --git a/ports/libepoxy/portfile.cmake b/ports/libepoxy/portfile.cmake
new file mode 100644
index 000000000..ef1880d16
--- /dev/null
+++ b/ports/libepoxy/portfile.cmake
@@ -0,0 +1,26 @@
+if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
+ message(STATUS "Warning: Static building not supported yet. Building dynamic.")
+ set(VCPKG_LIBRARY_LINKAGE dynamic)
+endif()
+
+include(vcpkg_common_functions)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/libepoxy-2432daf4cf58b5ff11e008ca34811588285c43b3)
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://github.com/anholt/libepoxy/archive/2432daf4cf58b5ff11e008ca34811588285c43b3.zip"
+ FILENAME "libepoxy-2432daf4cf58b5ff11e008ca34811588285c43b3.zip"
+ SHA512 70b59b6c5722eb87522927fdedab44f74ffd2d71d2ae42509de07b0c3e13f71320b25da0d4c75dca75c4208ea7a525483267d6ccb8acd5274728c015c7ac4006)
+
+vcpkg_extract_source_archive(${ARCHIVE})
+
+# ensure python is on path - not for meson but some source generation scripts
+vcpkg_find_acquire_program(PYTHON3)
+get_filename_component(PYTHON3_PATH ${PYTHON3} DIRECTORY)
+set(ENV{PATH} "$ENV{PATH};${PYTHON3_PATH}")
+
+vcpkg_configure_meson(SOURCE_PATH ${SOURCE_PATH})
+vcpkg_install_meson()
+
+vcpkg_copy_pdbs()
+
+file(COPY ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/libepoxy)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/libepoxy/COPYING ${CURRENT_PACKAGES_DIR}/share/libepoxy/copyright)
diff --git a/ports/libjpeg-turbo/portfile.cmake b/ports/libjpeg-turbo/portfile.cmake
index aaa01547c..b58ba01ed 100644
--- a/ports/libjpeg-turbo/portfile.cmake
+++ b/ports/libjpeg-turbo/portfile.cmake
@@ -14,7 +14,7 @@ vcpkg_apply_patches(
vcpkg_find_acquire_program(NASM)
get_filename_component(NASM_EXE_PATH ${NASM} DIRECTORY)
-set(ENV{PATH} "${NASM_EXE_PATH};$ENV{PATH}")
+set(ENV{PATH} "$ENV{PATH};${NASM_EXE_PATH}")
if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
set(BUILD_STATIC OFF)
diff --git a/ports/libmysql/CONTROL b/ports/libmysql/CONTROL
index 4e5564972..906249936 100644
--- a/ports/libmysql/CONTROL
+++ b/ports/libmysql/CONTROL
@@ -1,3 +1,3 @@
Source: libmysql
-Version: 5.7.17
+Version: 5.7.17-1
Description: A MySQL client library for C development. \ No newline at end of file
diff --git a/ports/libmysql/portfile.cmake b/ports/libmysql/portfile.cmake
index 4d711fef5..530732b71 100644
--- a/ports/libmysql/portfile.cmake
+++ b/ports/libmysql/portfile.cmake
@@ -24,6 +24,7 @@ vcpkg_configure_cmake(
-DWITHOUT_SERVER=ON
-DWITH_UNIT_TESTS=OFF
-DENABLED_PROFILING=OFF
+ -DWIX_DIR=OFF
)
vcpkg_install_cmake()
diff --git a/ports/libnice/CMakeLists.txt b/ports/libnice/CMakeLists.txt
new file mode 100644
index 000000000..c631d3317
--- /dev/null
+++ b/ports/libnice/CMakeLists.txt
@@ -0,0 +1,139 @@
+cmake_minimum_required(VERSION 3.0)
+project(libnice C)
+SET (this_target libnice)
+
+add_definitions(-D_CRT_SECURE_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS)
+
+configure_file(${CMAKE_SOURCE_DIR}/win32/vs9/config.h ${CMAKE_SOURCE_DIR}/config.h COPYONLY)
+configure_file(${CMAKE_SOURCE_DIR}/win32/vs9/libnice.def ${CMAKE_SOURCE_DIR}/libnice.def COPYONLY)
+
+find_path(GLIB_INCLUDE_DIR glib.h)
+find_library(GLIB_LIBRARY glib-2.0)
+find_library(GOBJECT_LIBRARY gobject-2.0)
+find_library(GIO_LIBRARY gio-2.0)
+find_library(IPHLPAPI_LIBRARY iphlpapi)
+find_library(WS2_32_LIB ws2_32)
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/agent
+ ${CMAKE_CURRENT_SOURCE_DIR}/random
+ ${CMAKE_CURRENT_SOURCE_DIR}/socket
+ ${CMAKE_CURRENT_SOURCE_DIR}/stun
+ ${GLIB_INCLUDE_DIR})
+
+
+SET (SRCS
+ ./agent/address.c
+ ./agent/agent.c
+ ./agent/candidate.c
+ ./agent/component.c
+ ./agent/conncheck.c
+ ./agent/debug.c
+ ./agent/discovery.c
+ ./agent/discovery.c
+ ./agent/inputstream.c
+ ./agent/interfaces.c
+ ./agent/iostream.c
+ ./agent/outputstream.c
+ ./agent/pseudotcp.c
+ ./agent/stream.c
+ ./random/random.c
+ ./random/random-glib.c
+ ./socket/http.c
+ ./socket/pseudossl.c
+ ./socket/socket.c
+ ./socket/socks5.c
+ ./socket/tcp-active.c
+ ./socket/tcp-bsd.c
+ ./socket/tcp-passive.c
+ ./socket/udp-bsd.c
+ ./socket/udp-turn.c
+ ./socket/udp-turn-over-tcp.c
+ ./stun/debug.c
+ ./stun/md5.c
+ ./stun/rand.c
+ ./stun/sha1.c
+ ./stun/stun5389.c
+ ./stun/stunagent.c
+ ./stun/stuncrc32.c
+ ./stun/stunhmac.c
+ ./stun/stunmessage.c
+ ./stun/usages/bind.c
+ ./stun/usages/ice.c
+ ./stun/usages/timer.c
+ ./stun/usages/turn.c
+ ./stun/utils.c
+ ./libnice.def
+ )
+SET(HEADERS
+ ./config.h
+ ./agent/address.h
+ ./agent/agent.h
+ ./agent/agent-priv.h
+ ./agent/candidate.h
+ ./agent/component.h
+ ./agent/conncheck.h
+ ./agent/debug.h
+ ./agent/discovery.h
+ ./agent/discovery.h
+ ./agent/inputstream.h
+ ./agent/interfaces.h
+ ./agent/iostream.h
+ ./agent/outputstream.h
+ ./agent/pseudotcp.h
+ ./agent/stream.h
+ ./random/random.h
+ ./random/random-glib.h
+ ./socket/http.h
+ ./socket/pseudossl.h
+ ./socket/socket.h
+ ./socket/socks5.h
+ ./socket/tcp-active.h
+ ./socket/tcp-bsd.h
+ ./socket/tcp-passive.h
+ ./socket/udp-bsd.h
+ ./socket/udp-turn.h
+ ./socket/udp-turn-over-tcp.h
+ ./stun/constants.h
+ ./stun/debug.h
+ ./stun/md5.h
+ ./stun/rand.h
+ ./stun/sha1.h
+ ./stun/stun5389.h
+ ./stun/stunagent.h
+ ./stun/stuncrc32.h
+ ./stun/stunhmac.h
+ ./stun/stunmessage.h
+ ./stun/usages/bind.h
+ ./stun/usages/ice.h
+ ./stun/usages/timer.h
+ ./stun/usages/turn.h
+ ./stun/utils.h
+ ./stun/win32_common.h
+ )
+add_library(libnice ${SRCS} ${HEADERS})
+set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "/wd4244 /wd4005 /wd4391 /wd4142 /wd4267")
+target_link_libraries(libnice ${IPHLPAPI_LIBRARY} ${WS2_32_LIB} ${GLIB_LIBRARY} ${GOBJECT_LIBRARY} ${GIO_LIBRARY})
+install(TARGETS libnice
+RUNTIME DESTINATION bin
+ ARCHIVE DESTINATION lib
+ LIBRARY DESTINATION lib)
+
+if (${CMAKE_BUILD_TYPE} STREQUAL "Release")
+install(FILES agent/address.h DESTINATION include/nice)
+install(FILES agent/agent.h DESTINATION include/nice)
+install(FILES agent/candidate.h DESTINATION include/nice)
+install(FILES agent/debug.h DESTINATION include/nice)
+install(FILES agent/interfaces.h DESTINATION include/nice)
+install(FILES nice/nice.h DESTINATION include/nice)
+install(FILES agent/pseudotcp.h DESTINATION include/nice)
+install(FILES stun/constants.h DESTINATION include/stun)
+install(FILES stun/debug.h DESTINATION include/stun)
+install(FILES stun/stunagent.h DESTINATION include/stun)
+install(FILES stun/stunmessage.h DESTINATION include/stun)
+install(FILES stun/usages/bind.h DESTINATION include/stun/usages)
+install(FILES stun/usages/ice.h DESTINATION include/stun/usages)
+install(FILES stun/usages/timer.h DESTINATION include/stun/usages)
+install(FILES stun/usages/turn.h DESTINATION include/stun/usages)
+install(FILES stun/win32_common.h DESTINATION include/stun)
+endif() \ No newline at end of file
diff --git a/ports/libnice/CONTROL b/ports/libnice/CONTROL
new file mode 100644
index 000000000..7d16f4262
--- /dev/null
+++ b/ports/libnice/CONTROL
@@ -0,0 +1,4 @@
+Source: libnice
+Version: 0.1.13
+Description: Libnice is an implementation of the IETF's Interactive Connectivity Establishment (ICE) standard (RFC 5245) and the Session Traversal Utilities for NAT (STUN) standard (RFC 5389).
+Build-Depends: glib \ No newline at end of file
diff --git a/ports/libnice/portfile.cmake b/ports/libnice/portfile.cmake
new file mode 100644
index 000000000..4d4a97bae
--- /dev/null
+++ b/ports/libnice/portfile.cmake
@@ -0,0 +1,27 @@
+include(vcpkg_common_functions)
+
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/libnice-0.1.13)
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://nice.freedesktop.org/releases/libnice-0.1.13.tar.gz"
+ FILENAME "libnice-0.1.13.tar.gz"
+ SHA512 c9bb81e8cd0b4e3673dba07ce08a16dd8821831339b44f1006510cdc09f9ae4c6eb7d43230711a2509867acb8d7df71821c411830dbf71c5a5d7e802f14a32c1
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ OPTIONS_RELEASE -DOPTIMIZE=1
+ OPTIONS_DEBUG -DDEBUGGABLE=1
+)
+
+vcpkg_install_cmake()
+
+vcpkg_copy_pdbs()
+
+file(COPY ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/libnice)
+file(COPY ${SOURCE_PATH}/COPYING.LGPL DESTINATION ${CURRENT_PACKAGES_DIR}/share/libnice)
+file(COPY ${SOURCE_PATH}/COPYING.MPL DESTINATION ${CURRENT_PACKAGES_DIR}/share/libnice)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/libnice/COPYING ${CURRENT_PACKAGES_DIR}/share/libnice/copyright)
diff --git a/ports/libraw/CONTROL b/ports/libraw/CONTROL
index b10e10794..9bb52aae0 100644
--- a/ports/libraw/CONTROL
+++ b/ports/libraw/CONTROL
@@ -1,4 +1,4 @@
Source: libraw
-Version: 0.17.2-2
+Version: 0.18.0-1
Build-Depends: libjpeg-turbo
Description: raw image decoder library
diff --git a/ports/libraw/portfile.cmake b/ports/libraw/portfile.cmake
index 159251c28..2e25ec714 100644
--- a/ports/libraw/portfile.cmake
+++ b/ports/libraw/portfile.cmake
@@ -1,9 +1,9 @@
include(vcpkg_common_functions)
-set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/LibRaw-0.17.2)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/LibRaw-0.18.0)
vcpkg_download_distfile(ARCHIVE
- URLS "http://www.libraw.org/data/LibRaw-0.17.2.zip"
- FILENAME "LibRaw-0.17.2"
- SHA512 97d34c84dafdcad300d607fbd4df7b120aea1ecdbc2783a8616bc423fa6a7a15adfbeb975f8dab021be09d08ef466c401a3b65bfd1abcfa49d31d4ab91873e60
+ URLS "http://www.libraw.org/data/LibRaw-0.18.0.zip"
+ FILENAME "LibRaw-0.18.0.zip"
+ SHA512 c66ae2331caffe18c2835d76d6106052125fab2f549a6f06687b4c1fedaae1c46ee0e4ae4c23b0480976870d76e8cfdbb91dd3cf11e3433ccc070bf03c538bb1
)
set(LIBRAW_CMAKE_COMMIT "a71f3b83ee3dccd7be32f9a2f410df4d9bdbde0a")
set(LIBRAW_CMAKE_SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/LibRaw-cmake-${LIBRAW_CMAKE_COMMIT})
diff --git a/ports/lmdb/CONTROL b/ports/lmdb/CONTROL
index bda09ee71..13c648fa6 100644
--- a/ports/lmdb/CONTROL
+++ b/ports/lmdb/CONTROL
@@ -1,3 +1,3 @@
Source: lmdb
-Version: 0.9.18-1
+Version: 0.9.18-2
Description: LMDB is an extraordinarily fast, memory-efficient database \ No newline at end of file
diff --git a/ports/lmdb/lmdb_45a88275d2a410e683bae4ef44881e0f55fa3c4d.patch b/ports/lmdb/lmdb_45a88275d2a410e683bae4ef44881e0f55fa3c4d.patch
index 18fd36fd6..e6d1f108c 100644
--- a/ports/lmdb/lmdb_45a88275d2a410e683bae4ef44881e0f55fa3c4d.patch
+++ b/ports/lmdb/lmdb_45a88275d2a410e683bae4ef44881e0f55fa3c4d.patch
@@ -252,7 +252,7 @@ index c4d05d1..30d5862 100644
/** @brief Compare two data items according to a particular database.
*
diff --git a/libraries/liblmdb/mdb.c b/libraries/liblmdb/mdb.c
-index d2e81e4..0110402 100644
+index d2e81e4..1d9e9fa 100644
--- a/libraries/liblmdb/mdb.c
+++ b/libraries/liblmdb/mdb.c
@@ -35,9 +35,42 @@
@@ -298,7 +298,26 @@ index d2e81e4..0110402 100644
/** getpid() returns int; MinGW defines pid_t but MinGW64 typedefs it
* as int64 which is wrong. MSVC doesn't define it at all, so just
* don't use it.
-@@ -116,7 +149,9 @@ typedef SSIZE_T ssize_t;
+@@ -56,6 +89,10 @@
+ # define SSIZE_MAX INT_MAX
+ # endif
+ #endif
++/* Windows uses 32-bit off_t to define our own
++ 64 bit offset type
++*/
++#define offset_t __int64
+ #else
+ #include <sys/types.h>
+ #include <sys/stat.h>
+@@ -68,6 +105,7 @@
+ #include <sys/file.h>
+ #endif
+ #include <fcntl.h>
++#define offset_t off_t
+ #endif
+
+ #if defined(__mips) && defined(__linux)
+@@ -116,7 +154,9 @@ typedef SSIZE_T ssize_t;
#endif
#if defined(__APPLE__) || defined (BSD)
@@ -309,7 +328,7 @@ index d2e81e4..0110402 100644
# define MDB_FDATASYNC fsync
#elif defined(ANDROID)
# define MDB_FDATASYNC fsync
-@@ -127,12 +162,22 @@ typedef SSIZE_T ssize_t;
+@@ -127,12 +167,22 @@ typedef SSIZE_T ssize_t;
#ifdef MDB_USE_POSIX_SEM
# define MDB_USE_HASH 1
#include <semaphore.h>
@@ -335,7 +354,7 @@ index d2e81e4..0110402 100644
+ defined(MDB_USE_POSIX_MUTEX) != 1
# error "Ambiguous shared-lock implementation"
#endif
-@@ -183,7 +228,7 @@ typedef SSIZE_T ssize_t;
+@@ -183,7 +233,7 @@ typedef SSIZE_T ssize_t;
#if (BYTE_ORDER == LITTLE_ENDIAN) == (BYTE_ORDER == BIG_ENDIAN)
# error "Unknown or unsupported endianness (BYTE_ORDER)"
@@ -344,7 +363,7 @@ index d2e81e4..0110402 100644
# error "Two's complement, reasonably sized integer types, please"
#endif
-@@ -234,6 +279,8 @@ typedef SSIZE_T ssize_t;
+@@ -234,6 +284,8 @@ typedef SSIZE_T ssize_t;
#define MDB_NO_ROOT (MDB_LAST_ERRCODE + 10)
#ifdef _WIN32
#define MDB_OWNERDEAD ((int) WAIT_ABANDONED)
@@ -353,7 +372,7 @@ index d2e81e4..0110402 100644
#elif defined(MDB_USE_POSIX_MUTEX) && defined(EOWNERDEAD)
#define MDB_OWNERDEAD EOWNERDEAD /**< #LOCK_MUTEX0() result if dead owner */
#endif
-@@ -256,16 +303,20 @@ typedef SSIZE_T ssize_t;
+@@ -256,16 +308,20 @@ typedef SSIZE_T ssize_t;
# define MDB_USE_ROBUST 0
# else
# define MDB_USE_ROBUST 1
@@ -378,7 +397,7 @@ index d2e81e4..0110402 100644
#define MDB_ROBUST_SUPPORTED 1
#endif
-@@ -288,8 +339,10 @@ typedef HANDLE mdb_mutex_t, mdb_mutexref_t;
+@@ -288,8 +344,10 @@ typedef HANDLE mdb_mutex_t, mdb_mutexref_t;
#define pthread_mutex_lock(x) WaitForSingleObject(*x, INFINITE)
#define pthread_cond_signal(x) SetEvent(*x)
#define pthread_cond_wait(cond,mutex) do{SignalObjectAndWait(*mutex, *cond, INFINITE, FALSE); WaitForSingleObject(*mutex, INFINITE);}while(0)
@@ -391,7 +410,7 @@ index d2e81e4..0110402 100644
#define LOCK_MUTEX0(mutex) WaitForSingleObject(mutex, INFINITE)
#define UNLOCK_MUTEX(mutex) ReleaseMutex(mutex)
#define mdb_mutex_consistent(mutex) 0
-@@ -305,12 +358,10 @@ typedef HANDLE mdb_mutex_t, mdb_mutexref_t;
+@@ -305,12 +363,10 @@ typedef HANDLE mdb_mutex_t, mdb_mutexref_t;
#else
#define MDB_PROCESS_QUERY_LIMITED_INFORMATION 0x1000
#endif
@@ -404,7 +423,7 @@ index d2e81e4..0110402 100644
/** For MDB_LOCK_FORMAT: True if readers take a pid lock in the lockfile */
#define MDB_PIDLOCK 1
-@@ -329,12 +380,46 @@ mdb_sem_wait(sem_t *sem)
+@@ -329,12 +385,46 @@ mdb_sem_wait(sem_t *sem)
return rc;
}
@@ -453,7 +472,7 @@ index d2e81e4..0110402 100644
* @{
*/
typedef pthread_mutex_t mdb_mutex_t[1], *mdb_mutexref_t;
-@@ -349,7 +434,7 @@ typedef pthread_mutex_t mdb_mutex_t[1], *mdb_mutexref_t;
+@@ -349,7 +439,7 @@ typedef pthread_mutex_t mdb_mutex_t[1], *mdb_mutexref_t;
/** Mark mutex-protected data as repaired, after death of previous owner.
*/
#define mdb_mutex_consistent(mutex) pthread_mutex_consistent(mutex)
@@ -462,7 +481,7 @@ index d2e81e4..0110402 100644
/** Get the error code for the last failed system function.
*/
-@@ -374,12 +459,24 @@ typedef pthread_mutex_t mdb_mutex_t[1], *mdb_mutexref_t;
+@@ -374,12 +464,24 @@ typedef pthread_mutex_t mdb_mutex_t[1], *mdb_mutexref_t;
#define GET_PAGESIZE(x) ((x) = sysconf(_SC_PAGE_SIZE))
#endif
@@ -487,7 +506,7 @@ index d2e81e4..0110402 100644
/** @} */
#ifdef MDB_ROBUST_SUPPORTED
-@@ -521,7 +618,7 @@ static txnid_t mdb_debug_start;
+@@ -521,7 +623,7 @@ static txnid_t mdb_debug_start;
/** The version number for a database's datafile format. */
#define MDB_DATA_VERSION ((MDB_DEVEL) ? 999 : 1)
/** The version number for a database's lockfile format. */
@@ -496,7 +515,7 @@ index d2e81e4..0110402 100644
/** @brief The max size of a key we can write, or 0 for computed max.
*
-@@ -712,6 +809,9 @@ typedef struct MDB_txbody {
+@@ -712,6 +814,9 @@ typedef struct MDB_txbody {
uint32_t mtb_format;
#if defined(_WIN32) || defined(MDB_USE_POSIX_SEM)
char mtb_rmname[MNAME_LEN];
@@ -506,7 +525,7 @@ index d2e81e4..0110402 100644
#else
/** Mutex protecting access to this table.
* This is the reader table lock used with LOCK_MUTEX().
-@@ -740,12 +840,19 @@ typedef struct MDB_txninfo {
+@@ -740,12 +845,19 @@ typedef struct MDB_txninfo {
#define mti_rmname mt1.mtb.mtb_rmname
#define mti_txnid mt1.mtb.mtb_txnid
#define mti_numreaders mt1.mtb.mtb_numreaders
@@ -526,7 +545,7 @@ index d2e81e4..0110402 100644
#else
mdb_mutex_t mt2_wmutex;
#define mti_wmutex mt2.mt2_wmutex
-@@ -760,12 +867,27 @@ typedef struct MDB_txninfo {
+@@ -760,12 +872,27 @@ typedef struct MDB_txninfo {
((uint32_t) \
((MDB_LOCK_VERSION) \
/* Flags which describe functionality */ \
@@ -557,7 +576,7 @@ index d2e81e4..0110402 100644
*/
typedef struct MDB_page {
#define mp_pgno mp_p.p_pgno
-@@ -774,7 +896,7 @@ typedef struct MDB_page {
+@@ -774,7 +901,7 @@ typedef struct MDB_page {
pgno_t p_pgno; /**< page number */
struct MDB_page *p_next; /**< for in-memory list of freed pages */
} mp_p;
@@ -566,7 +585,7 @@ index d2e81e4..0110402 100644
/** @defgroup mdb_page Page Flags
* @ingroup internal
* Flags for the page headers.
-@@ -841,7 +963,9 @@ typedef struct MDB_page {
+@@ -841,7 +968,9 @@ typedef struct MDB_page {
/** The number of overflow pages needed to store the given size. */
#define OVPAGES(size, psize) ((PAGEHDRSZ-1 + (size)) / (psize) + 1)
@@ -577,7 +596,7 @@ index d2e81e4..0110402 100644
#define NEXT_LOOSE_PAGE(p) (*(MDB_page **)((p) + 2))
/** Header for a single key/data pair within a page.
-@@ -924,7 +1048,7 @@ typedef struct MDB_node {
+@@ -924,7 +1053,7 @@ typedef struct MDB_node {
#ifdef MISALIGNED_OK
#define COPY_PGNO(dst,src) dst = src
#else
@@ -586,7 +605,7 @@ index d2e81e4..0110402 100644
#define COPY_PGNO(dst,src) do { \
unsigned short *s, *d; \
s = (unsigned short *)&(src); \
-@@ -965,13 +1089,13 @@ typedef struct MDB_db {
+@@ -965,13 +1094,13 @@ typedef struct MDB_db {
pgno_t md_branch_pages; /**< number of internal pages */
pgno_t md_leaf_pages; /**< number of leaf pages */
pgno_t md_overflow_pages; /**< number of overflow pages */
@@ -602,7 +621,7 @@ index d2e81e4..0110402 100644
#define VALID_FLAGS (MDB_REVERSEKEY|MDB_DUPSORT|MDB_INTEGERKEY|MDB_DUPFIXED|\
MDB_INTEGERDUP|MDB_REVERSEDUP|MDB_CREATE)
-@@ -995,14 +1119,25 @@ typedef struct MDB_meta {
+@@ -995,14 +1124,25 @@ typedef struct MDB_meta {
uint32_t mm_magic;
/** Version number of this file. Must be set to #MDB_DATA_VERSION. */
uint32_t mm_version;
@@ -630,7 +649,7 @@ index d2e81e4..0110402 100644
volatile txnid_t mm_txnid; /**< txnid that committed this page */
} MDB_meta;
-@@ -1039,6 +1174,9 @@ struct MDB_txn {
+@@ -1039,6 +1179,9 @@ struct MDB_txn {
/** Nested txn under this txn, set together with flag #MDB_TXN_HAS_CHILD */
MDB_txn *mt_child;
pgno_t mt_next_pgno; /**< next unallocated page */
@@ -640,7 +659,7 @@ index d2e81e4..0110402 100644
/** The ID of this transaction. IDs are integers incrementing from 1.
* Only committed write transactions increment the ID. If a transaction
* aborts, the ID may be re-used by the next writer.
-@@ -1052,7 +1190,7 @@ struct MDB_txn {
+@@ -1052,7 +1195,7 @@ struct MDB_txn {
* in this transaction, linked through #NEXT_LOOSE_PAGE(page).
*/
MDB_page *mt_loose_pgs;
@@ -649,7 +668,7 @@ index d2e81e4..0110402 100644
int mt_loose_count;
/** The sorted list of dirty pages we temporarily wrote to disk
* because the dirty list was full. page numbers in here are
-@@ -1085,6 +1223,19 @@ struct MDB_txn {
+@@ -1085,6 +1228,19 @@ struct MDB_txn {
MDB_cursor **mt_cursors;
/** Array of flags for each DB */
unsigned char *mt_dbflags;
@@ -669,7 +688,7 @@ index d2e81e4..0110402 100644
/** Number of DB records in use, or 0 when the txn is finished.
* This number only ever increments until the txn finishes; we
* don't decrement it when individual DB handles are closed.
-@@ -1096,7 +1247,9 @@ struct MDB_txn {
+@@ -1096,7 +1252,9 @@ struct MDB_txn {
* @{
*/
/** #mdb_txn_begin() flags */
@@ -680,7 +699,7 @@ index d2e81e4..0110402 100644
#define MDB_TXN_RDONLY MDB_RDONLY /**< read-only transaction */
/* internal txn flags */
#define MDB_TXN_WRITEMAP MDB_WRITEMAP /**< copy of #MDB_env flag in writers */
-@@ -1162,10 +1315,24 @@ struct MDB_cursor {
+@@ -1162,10 +1320,24 @@ struct MDB_cursor {
#define C_SUB 0x04 /**< Cursor is a sub-cursor */
#define C_DEL 0x08 /**< last op was a cursor_del */
#define C_UNTRACK 0x40 /**< Un-track cursor when closing */
@@ -705,7 +724,7 @@ index d2e81e4..0110402 100644
};
/** Context for sorted-dup records.
-@@ -1195,6 +1362,9 @@ struct MDB_env {
+@@ -1195,6 +1367,9 @@ struct MDB_env {
HANDLE me_fd; /**< The main data file */
HANDLE me_lfd; /**< The lock file */
HANDLE me_mfd; /**< just for writing the meta pages */
@@ -715,16 +734,18 @@ index d2e81e4..0110402 100644
/** Failed to update the meta page. Probably an I/O error. */
#define MDB_FATAL_ERROR 0x80000000U
/** Some fields are initialized. */
-@@ -1219,7 +1389,7 @@ struct MDB_env {
+@@ -1219,8 +1394,8 @@ struct MDB_env {
void *me_pbuf; /**< scratch area for DUPSORT put() */
MDB_txn *me_txn; /**< current write transaction */
MDB_txn *me_txn0; /**< prealloc'd write transaction */
- size_t me_mapsize; /**< size of the data memory map */
+- off_t me_size; /**< current file size */
+ mdb_size_t me_mapsize; /**< size of the data memory map */
- off_t me_size; /**< current file size */
++ offset_t me_size; /**< current file size */
pgno_t me_maxpg; /**< me_mapsize / me_psize */
MDB_dbx *me_dbxs; /**< array of static DB info */
-@@ -1253,6 +1423,13 @@ struct MDB_env {
+ uint16_t *me_dbflags; /**< array of flags from MDB_db.md_flags */
+@@ -1253,6 +1428,13 @@ struct MDB_env {
mdb_mutex_t me_rmutex;
mdb_mutex_t me_wmutex;
#endif
@@ -738,7 +759,7 @@ index d2e81e4..0110402 100644
void *me_userctx; /**< User-settable context */
MDB_assert_func *me_assert_func; /**< Callback for assertion failures */
};
-@@ -1298,7 +1475,7 @@ enum {
+@@ -1298,7 +1480,7 @@ enum {
#define MDB_END_SLOT MDB_NOTLS /**< release any reader slot if #MDB_NOTLS */
static void mdb_txn_end(MDB_txn *txn, unsigned mode);
@@ -747,7 +768,7 @@ index d2e81e4..0110402 100644
static int mdb_page_search_root(MDB_cursor *mc,
MDB_val *key, int modify);
#define MDB_PS_MODIFY 1
-@@ -1327,7 +1504,7 @@ static int mdb_node_add(MDB_cursor *mc, indx_t indx,
+@@ -1327,7 +1509,7 @@ static int mdb_node_add(MDB_cursor *mc, indx_t indx,
static void mdb_node_del(MDB_cursor *mc, int ksize);
static void mdb_node_shrink(MDB_page *mp, indx_t indx);
static int mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst, int fromleft);
@@ -756,7 +777,7 @@ index d2e81e4..0110402 100644
static size_t mdb_leaf_size(MDB_env *env, MDB_val *key, MDB_val *data);
static size_t mdb_branch_size(MDB_env *env, MDB_val *key);
-@@ -1360,13 +1537,18 @@ static int mdb_reader_check0(MDB_env *env, int rlocked, int *dead);
+@@ -1360,13 +1542,18 @@ static int mdb_reader_check0(MDB_env *env, int rlocked, int *dead);
static MDB_cmp_func mdb_cmp_memn, mdb_cmp_memnr, mdb_cmp_int, mdb_cmp_cint, mdb_cmp_long;
/** @endcond */
@@ -776,7 +797,7 @@ index d2e81e4..0110402 100644
#ifdef _WIN32
static SECURITY_DESCRIPTOR mdb_null_sd;
static SECURITY_ATTRIBUTES mdb_all_sa;
-@@ -1407,6 +1589,7 @@ static char *const mdb_errstr[] = {
+@@ -1407,6 +1594,7 @@ static char *const mdb_errstr[] = {
"MDB_BAD_TXN: Transaction must abort, has a child, or is invalid",
"MDB_BAD_VALSIZE: Unsupported size of key/DB name/data, or wrong DUPFIXED size",
"MDB_BAD_DBI: The specified DBI handle was closed/changed unexpectedly",
@@ -784,7 +805,7 @@ index d2e81e4..0110402 100644
};
char *
-@@ -1417,8 +1600,9 @@ mdb_strerror(int err)
+@@ -1417,8 +1605,9 @@ mdb_strerror(int err)
* This works as long as no function between the call to mdb_strerror
* and the actual use of the message uses more than 4K of stack.
*/
@@ -796,7 +817,7 @@ index d2e81e4..0110402 100644
#endif
int i;
if (!err)
-@@ -1450,7 +1634,7 @@ mdb_strerror(int err)
+@@ -1450,7 +1639,7 @@ mdb_strerror(int err)
buf[0] = 0;
FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
@@ -805,7 +826,7 @@ index d2e81e4..0110402 100644
return ptr;
#else
return strerror(err);
-@@ -1550,20 +1734,20 @@ mdb_page_list(MDB_page *mp)
+@@ -1550,20 +1739,20 @@ mdb_page_list(MDB_page *mp)
case P_LEAF|P_LEAF2: type = "LEAF2 page"; break;
case P_LEAF|P_LEAF2|P_SUBP: type = "LEAF2 sub-page"; break;
case P_OVERFLOW:
@@ -830,7 +851,7 @@ index d2e81e4..0110402 100644
for (i=0; i<nkeys; i++) {
if (IS_LEAF2(mp)) { /* LEAF2 pages have no mp_ptrs[] or node headers */
-@@ -1578,7 +1762,7 @@ mdb_page_list(MDB_page *mp)
+@@ -1578,7 +1767,7 @@ mdb_page_list(MDB_page *mp)
key.mv_data = node->mn_data;
nsize = NODESIZE + key.mv_size;
if (IS_BRANCH(mp)) {
@@ -839,7 +860,7 @@ index d2e81e4..0110402 100644
DKEY(&key));
total += nsize;
} else {
-@@ -1674,7 +1858,7 @@ static void mdb_audit(MDB_txn *txn)
+@@ -1674,7 +1863,7 @@ static void mdb_audit(MDB_txn *txn)
}
}
if (freecount + count + NUM_METAS != txn->mt_next_pgno) {
@@ -848,7 +869,7 @@ index d2e81e4..0110402 100644
txn->mt_txnid, freecount, count+NUM_METAS,
freecount+count+NUM_METAS, txn->mt_next_pgno);
}
-@@ -1691,10 +1875,8 @@ int
+@@ -1691,10 +1880,8 @@ int
mdb_dcmp(MDB_txn *txn, MDB_dbi dbi, const MDB_val *a, const MDB_val *b)
{
MDB_cmp_func *dcmp = txn->mt_dbxs[dbi].md_dcmp;
@@ -860,7 +881,7 @@ index d2e81e4..0110402 100644
return dcmp(a, b);
}
-@@ -1774,6 +1956,51 @@ mdb_dlist_free(MDB_txn *txn)
+@@ -1774,6 +1961,51 @@ mdb_dlist_free(MDB_txn *txn)
dl[0].mid = 0;
}
@@ -912,7 +933,7 @@ index d2e81e4..0110402 100644
/** Loosen or free a single page.
* Saves single pages to a list for future reuse
* in this same txn. It has been pulled from the freeDB
-@@ -1803,7 +2030,7 @@ mdb_page_loose(MDB_cursor *mc, MDB_page *mp)
+@@ -1803,7 +2035,7 @@ mdb_page_loose(MDB_cursor *mc, MDB_page *mp)
if (mp != dl[x].mptr) { /* bad cursor? */
mc->mc_flags &= ~(C_INITIALIZED|C_EOF);
txn->mt_flags |= MDB_TXN_ERROR;
@@ -921,7 +942,7 @@ index d2e81e4..0110402 100644
}
/* ok, it's ours */
loose = 1;
-@@ -1815,8 +2042,7 @@ mdb_page_loose(MDB_cursor *mc, MDB_page *mp)
+@@ -1815,8 +2047,7 @@ mdb_page_loose(MDB_cursor *mc, MDB_page *mp)
}
}
if (loose) {
@@ -931,7 +952,7 @@ index d2e81e4..0110402 100644
NEXT_LOOSE_PAGE(mp) = txn->mt_loose_pgs;
txn->mt_loose_pgs = mp;
txn->mt_loose_count++;
-@@ -1842,7 +2068,7 @@ mdb_pages_xkeep(MDB_cursor *mc, unsigned pflags, int all)
+@@ -1842,7 +2073,7 @@ mdb_pages_xkeep(MDB_cursor *mc, unsigned pflags, int all)
{
enum { Mask = P_SUBP|P_DIRTY|P_LOOSE|P_KEEP };
MDB_txn *txn = mc->mc_txn;
@@ -940,7 +961,7 @@ index d2e81e4..0110402 100644
MDB_xcursor *mx;
MDB_page *dp, *mp;
MDB_node *leaf;
-@@ -1885,7 +2111,7 @@ mdb_pages_xkeep(MDB_cursor *mc, unsigned pflags, int all)
+@@ -1885,7 +2116,7 @@ mdb_pages_xkeep(MDB_cursor *mc, unsigned pflags, int all)
pgno_t pgno = txn->mt_dbs[i].md_root;
if (pgno == P_INVALID)
continue;
@@ -949,7 +970,7 @@ index d2e81e4..0110402 100644
break;
if ((dp->mp_flags & Mask) == pflags && level <= 1)
dp->mp_flags ^= P_KEEP;
-@@ -2074,6 +2300,8 @@ mdb_page_dirty(MDB_txn *txn, MDB_page *mp)
+@@ -2074,6 +2305,8 @@ mdb_page_dirty(MDB_txn *txn, MDB_page *mp)
* Do not modify the freedB, just merge freeDB records into me_pghead[]
* and move me_pglast to say which records were consumed. Only this
* function can create me_pghead and move me_pglast/mt_next_pgno.
@@ -958,7 +979,7 @@ index d2e81e4..0110402 100644
* @param[in] mc cursor A cursor handle identifying the transaction and
* database for which we are allocating.
* @param[in] num the number of pages to allocate.
-@@ -2111,8 +2339,7 @@ mdb_page_alloc(MDB_cursor *mc, int num, MDB_page **mp)
+@@ -2111,8 +2344,7 @@ mdb_page_alloc(MDB_cursor *mc, int num, MDB_page **mp)
np = txn->mt_loose_pgs;
txn->mt_loose_pgs = NEXT_LOOSE_PAGE(np);
txn->mt_loose_count--;
@@ -968,7 +989,7 @@ index d2e81e4..0110402 100644
*mp = np;
return MDB_SUCCESS;
}
-@@ -2149,6 +2376,14 @@ mdb_page_alloc(MDB_cursor *mc, int num, MDB_page **mp)
+@@ -2149,6 +2381,14 @@ mdb_page_alloc(MDB_cursor *mc, int num, MDB_page **mp)
last = env->me_pglast;
oldest = env->me_pgoldest;
mdb_cursor_init(&m2, txn, FREE_DBI, NULL);
@@ -983,7 +1004,7 @@ index d2e81e4..0110402 100644
if (last) {
op = MDB_SET_RANGE;
key.mv_data = &last; /* will look up last+1 */
-@@ -2189,7 +2424,7 @@ mdb_page_alloc(MDB_cursor *mc, int num, MDB_page **mp)
+@@ -2189,7 +2429,7 @@ mdb_page_alloc(MDB_cursor *mc, int num, MDB_page **mp)
}
np = m2.mc_pg[m2.mc_top];
leaf = NODEPTR(np, m2.mc_ki[m2.mc_top]);
@@ -992,7 +1013,7 @@ index d2e81e4..0110402 100644
return rc;
idl = (MDB_ID *) data.mv_data;
-@@ -2206,10 +2441,10 @@ mdb_page_alloc(MDB_cursor *mc, int num, MDB_page **mp)
+@@ -2206,10 +2446,10 @@ mdb_page_alloc(MDB_cursor *mc, int num, MDB_page **mp)
}
env->me_pglast = last;
#if (MDB_DEBUG) > 1
@@ -1005,7 +1026,7 @@ index d2e81e4..0110402 100644
#endif
/* Merge in descending sorted order */
mdb_midl_xmerge(mop, idl);
-@@ -2224,6 +2459,20 @@ mdb_page_alloc(MDB_cursor *mc, int num, MDB_page **mp)
+@@ -2224,6 +2464,20 @@ mdb_page_alloc(MDB_cursor *mc, int num, MDB_page **mp)
rc = MDB_MAP_FULL;
goto fail;
}
@@ -1026,7 +1047,7 @@ index d2e81e4..0110402 100644
search_done:
if (env->me_flags & MDB_WRITEMAP) {
-@@ -2365,7 +2614,7 @@ mdb_page_touch(MDB_cursor *mc)
+@@ -2365,7 +2619,7 @@ mdb_page_touch(MDB_cursor *mc)
(rc = mdb_page_alloc(mc, 1, &np)))
goto fail;
pgno = np->mp_pgno;
@@ -1035,7 +1056,7 @@ index d2e81e4..0110402 100644
mp->mp_pgno, pgno));
mdb_cassert(mc, mp->mp_pgno != pgno);
mdb_midl_xappend(txn->mt_free_pgs, mp->mp_pgno);
-@@ -2389,7 +2638,7 @@ mdb_page_touch(MDB_cursor *mc)
+@@ -2389,7 +2643,7 @@ mdb_page_touch(MDB_cursor *mc)
if (mp != dl[x].mptr) { /* bad cursor? */
mc->mc_flags &= ~(C_INITIALIZED|C_EOF);
txn->mt_flags |= MDB_TXN_ERROR;
@@ -1044,7 +1065,7 @@ index d2e81e4..0110402 100644
}
return 0;
}
-@@ -2439,6 +2688,7 @@ done:
+@@ -2439,6 +2693,7 @@ done:
}
}
}
@@ -1052,7 +1073,7 @@ index d2e81e4..0110402 100644
return 0;
fail:
-@@ -2447,7 +2697,7 @@ fail:
+@@ -2447,7 +2702,7 @@ fail:
}
int
@@ -1061,7 +1082,7 @@ index d2e81e4..0110402 100644
{
int rc = 0;
if (env->me_flags & MDB_RDONLY)
-@@ -2456,7 +2706,7 @@ mdb_env_sync(MDB_env *env, int force)
+@@ -2456,7 +2711,7 @@ mdb_env_sync(MDB_env *env, int force)
if (env->me_flags & MDB_WRITEMAP) {
int flags = ((env->me_flags & MDB_MAPASYNC) && !force)
? MS_ASYNC : MS_SYNC;
@@ -1070,7 +1091,7 @@ index d2e81e4..0110402 100644
rc = ErrCode();
#ifdef _WIN32
else if (flags == MS_SYNC && MDB_FDATASYNC(env->me_fd))
-@@ -2476,6 +2726,13 @@ mdb_env_sync(MDB_env *env, int force)
+@@ -2476,6 +2731,13 @@ mdb_env_sync(MDB_env *env, int force)
return rc;
}
@@ -1084,7 +1105,7 @@ index d2e81e4..0110402 100644
/** Back up parent txn's cursors, then grab the originals for tracking */
static int
mdb_cursor_shadow(MDB_txn *src, MDB_txn *dst)
-@@ -2720,6 +2977,9 @@ mdb_txn_renew0(MDB_txn *txn)
+@@ -2720,6 +2982,9 @@ mdb_txn_renew0(MDB_txn *txn)
/* Moved to here to avoid a data race in read TXNs */
txn->mt_next_pgno = meta->mm_last_pg+1;
@@ -1094,7 +1115,7 @@ index d2e81e4..0110402 100644
txn->mt_flags = flags;
-@@ -2755,7 +3015,7 @@ mdb_txn_renew(MDB_txn *txn)
+@@ -2755,7 +3020,7 @@ mdb_txn_renew(MDB_txn *txn)
rc = mdb_txn_renew0(txn);
if (rc == MDB_SUCCESS) {
@@ -1103,7 +1124,7 @@ index d2e81e4..0110402 100644
txn->mt_txnid, (txn->mt_flags & MDB_TXN_RDONLY) ? 'r' : 'w',
(void *)txn, (void *)txn->mt_env, txn->mt_dbs[MAIN_DBI].md_root));
}
-@@ -2798,6 +3058,17 @@ mdb_txn_begin(MDB_env *env, MDB_txn *parent, unsigned int flags, MDB_txn **ret)
+@@ -2798,6 +3063,17 @@ mdb_txn_begin(MDB_env *env, MDB_txn *parent, unsigned int flags, MDB_txn **ret)
DPRINTF(("calloc: %s", strerror(errno)));
return ENOMEM;
}
@@ -1121,7 +1142,7 @@ index d2e81e4..0110402 100644
txn->mt_dbxs = env->me_dbxs; /* static */
txn->mt_dbs = (MDB_db *) ((char *)txn + tsize);
txn->mt_dbflags = (unsigned char *)txn + size - env->me_maxdbs;
-@@ -2825,6 +3096,9 @@ mdb_txn_begin(MDB_env *env, MDB_txn *parent, unsigned int flags, MDB_txn **ret)
+@@ -2825,6 +3101,9 @@ mdb_txn_begin(MDB_env *env, MDB_txn *parent, unsigned int flags, MDB_txn **ret)
parent->mt_child = txn;
txn->mt_parent = parent;
txn->mt_numdbs = parent->mt_numdbs;
@@ -1131,7 +1152,7 @@ index d2e81e4..0110402 100644
memcpy(txn->mt_dbs, parent->mt_dbs, txn->mt_numdbs * sizeof(MDB_db));
/* Copy parent's mt_dbflags, but clear DB_NEW */
for (i=0; i<txn->mt_numdbs; i++)
-@@ -2850,12 +3124,16 @@ renew:
+@@ -2850,12 +3129,16 @@ renew:
rc = mdb_txn_renew0(txn);
}
if (rc) {
@@ -1150,7 +1171,7 @@ index d2e81e4..0110402 100644
txn->mt_txnid, (flags & MDB_RDONLY) ? 'r' : 'w',
(void *) txn, (void *) env, txn->mt_dbs[MAIN_DBI].md_root));
}
-@@ -2870,7 +3148,7 @@ mdb_txn_env(MDB_txn *txn)
+@@ -2870,7 +3153,7 @@ mdb_txn_env(MDB_txn *txn)
return txn->mt_env;
}
@@ -1159,7 +1180,7 @@ index d2e81e4..0110402 100644
mdb_txn_id(MDB_txn *txn)
{
if(!txn) return 0;
-@@ -2922,7 +3200,7 @@ mdb_txn_end(MDB_txn *txn, unsigned mode)
+@@ -2922,7 +3205,7 @@ mdb_txn_end(MDB_txn *txn, unsigned mode)
/* Export or close DBI handles opened in this txn */
mdb_dbis_update(txn, mode & MDB_END_UPDATE);
@@ -1168,7 +1189,7 @@ index d2e81e4..0110402 100644
names[mode & MDB_END_OPMASK],
txn->mt_txnid, (txn->mt_flags & MDB_TXN_RDONLY) ? 'r' : 'w',
(void *) txn, (void *)env, txn->mt_dbs[MAIN_DBI].md_root));
-@@ -2976,7 +3254,31 @@ mdb_txn_end(MDB_txn *txn, unsigned mode)
+@@ -2976,7 +3259,31 @@ mdb_txn_end(MDB_txn *txn, unsigned mode)
mdb_midl_free(pghead);
}
@@ -1201,7 +1222,7 @@ index d2e81e4..0110402 100644
if (mode & MDB_END_FREE)
free(txn);
}
-@@ -3008,6 +3310,9 @@ mdb_txn_abort(MDB_txn *txn)
+@@ -3008,6 +3315,9 @@ mdb_txn_abort(MDB_txn *txn)
/** Save the freelist as of this transaction to the freeDB.
* This changes the freelist. Keep trying until it stabilizes.
@@ -1211,7 +1232,7 @@ index d2e81e4..0110402 100644
*/
static int
mdb_freelist_save(MDB_txn *txn)
-@@ -3096,10 +3401,10 @@ mdb_freelist_save(MDB_txn *txn)
+@@ -3096,10 +3406,10 @@ mdb_freelist_save(MDB_txn *txn)
#if (MDB_DEBUG) > 1
{
unsigned int i = free_pgs[0];
@@ -1224,13 +1245,13 @@ index d2e81e4..0110402 100644
}
#endif
continue;
-@@ -3210,15 +3515,16 @@ mdb_page_flush(MDB_txn *txn, int keep)
+@@ -3210,15 +3520,16 @@ mdb_page_flush(MDB_txn *txn, int keep)
MDB_ID2L dl = txn->mt_u.dirty_list;
unsigned psize = env->me_psize, j;
int i, pagecount = dl[0].mid, rc;
- size_t size = 0, pos = 0;
+ size_t size = 0;
-+ off_t pos = 0;
++ offset_t pos = 0;
pgno_t pgno = 0;
MDB_page *dp = NULL;
#ifdef _WIN32
@@ -1240,11 +1261,11 @@ index d2e81e4..0110402 100644
- ssize_t wpos = 0, wsize = 0, wres;
- size_t next_pos = 1; /* impossible pos, so pos != next_pos */
+ ssize_t wsize = 0, wres;
-+ off_t wpos = 0, next_pos = 1; /* impossible pos, so pos != next_pos */
++ offset_t wpos = 0, next_pos = 1; /* impossible pos, so pos != next_pos */
int n = 0;
#endif
-@@ -3266,7 +3572,7 @@ mdb_page_flush(MDB_txn *txn, int keep)
+@@ -3266,7 +3577,7 @@ mdb_page_flush(MDB_txn *txn, int keep)
* the write offset, to at least save the overhead of a Seek
* system call.
*/
@@ -1253,7 +1274,7 @@ index d2e81e4..0110402 100644
memset(&ov, 0, sizeof(ov));
ov.Offset = pos & 0xffffffff;
ov.OffsetHigh = pos >> 16 >> 16;
-@@ -3317,7 +3623,7 @@ retry_seek:
+@@ -3317,7 +3628,7 @@ retry_seek:
wpos = pos;
wsize = 0;
}
@@ -1262,7 +1283,7 @@ index d2e81e4..0110402 100644
next_pos = pos + size;
iov[n].iov_len = size;
iov[n].iov_base = (char *)dp;
-@@ -3325,6 +3631,10 @@ retry_seek:
+@@ -3325,6 +3636,10 @@ retry_seek:
n++;
#endif /* _WIN32 */
}
@@ -1273,7 +1294,7 @@ index d2e81e4..0110402 100644
/* MIPS has cache coherency issues, this is a no-op everywhere else
* Note: for any size >= on-chip cache size, entire on-chip cache is
-@@ -3526,7 +3836,7 @@ mdb_txn_commit(MDB_txn *txn)
+@@ -3526,7 +3841,7 @@ mdb_txn_commit(MDB_txn *txn)
!(txn->mt_flags & (MDB_TXN_DIRTY|MDB_TXN_SPILLS)))
goto done;
@@ -1282,7 +1303,7 @@ index d2e81e4..0110402 100644
txn->mt_txnid, (void*)txn, (void*)env, txn->mt_dbs[MAIN_DBI].md_root));
/* Update DB root pointers */
-@@ -3564,9 +3874,12 @@ mdb_txn_commit(MDB_txn *txn)
+@@ -3564,9 +3879,12 @@ mdb_txn_commit(MDB_txn *txn)
mdb_audit(txn);
#endif
@@ -1298,7 +1319,7 @@ index d2e81e4..0110402 100644
goto fail;
end_mode = MDB_END_COMMITTED|MDB_END_UPDATE;
-@@ -3621,7 +3934,7 @@ mdb_env_read_header(MDB_env *env, MDB_meta *meta)
+@@ -3621,7 +3939,7 @@ mdb_env_read_header(MDB_env *env, MDB_meta *meta)
p = (MDB_page *)&pbuf;
if (!F_ISSET(p->mp_flags, P_META)) {
@@ -1307,7 +1328,7 @@ index d2e81e4..0110402 100644
return MDB_INVALID;
}
-@@ -3691,7 +4004,6 @@ mdb_env_init_meta(MDB_env *env, MDB_meta *meta)
+@@ -3691,7 +4009,6 @@ mdb_env_init_meta(MDB_env *env, MDB_meta *meta)
p = calloc(NUM_METAS, psize);
if (!p)
return ENOMEM;
@@ -1315,16 +1336,18 @@ index d2e81e4..0110402 100644
p->mp_pgno = 0;
p->mp_flags = P_META;
*(MDB_meta *)METADATA(p) = *meta;
-@@ -3722,7 +4034,7 @@ mdb_env_write_meta(MDB_txn *txn)
+@@ -3722,8 +4039,8 @@ mdb_env_write_meta(MDB_txn *txn)
MDB_env *env;
MDB_meta meta, metab, *mp;
unsigned flags;
- size_t mapsize;
+- off_t off;
+ mdb_size_t mapsize;
- off_t off;
++ offset_t off;
int rc, len, toggle;
char *ptr;
-@@ -3734,11 +4046,11 @@ mdb_env_write_meta(MDB_txn *txn)
+ HANDLE mfd;
+@@ -3734,11 +4051,11 @@ mdb_env_write_meta(MDB_txn *txn)
#endif
toggle = txn->mt_txnid & 1;
@@ -1338,7 +1361,7 @@ index d2e81e4..0110402 100644
mp = env->me_metas[toggle];
mapsize = env->me_metas[toggle ^ 1]->mm_mapsize;
/* Persist any increases of mapsize config */
-@@ -3867,6 +4179,9 @@ mdb_env_create(MDB_env **env)
+@@ -3867,6 +4184,9 @@ mdb_env_create(MDB_env **env)
#ifdef MDB_USE_POSIX_SEM
e->me_rmutex = SEM_FAILED;
e->me_wmutex = SEM_FAILED;
@@ -1348,7 +1371,7 @@ index d2e81e4..0110402 100644
#endif
e->me_pid = getpid();
GET_PAGESIZE(e->me_os_psize);
-@@ -3875,6 +4190,19 @@ mdb_env_create(MDB_env **env)
+@@ -3875,6 +4195,19 @@ mdb_env_create(MDB_env **env)
return MDB_SUCCESS;
}
@@ -1368,7 +1391,7 @@ index d2e81e4..0110402 100644
static int ESECT
mdb_env_map(MDB_env *env, void *addr)
{
-@@ -3882,42 +4210,51 @@ mdb_env_map(MDB_env *env, void *addr)
+@@ -3882,42 +4215,51 @@ mdb_env_map(MDB_env *env, void *addr)
unsigned int flags = env->me_flags;
#ifdef _WIN32
int rc;
@@ -1447,7 +1470,7 @@ index d2e81e4..0110402 100644
#else
int prot = PROT_READ;
if (flags & MDB_WRITEMAP) {
-@@ -3951,6 +4288,7 @@ mdb_env_map(MDB_env *env, void *addr)
+@@ -3951,6 +4293,7 @@ mdb_env_map(MDB_env *env, void *addr)
*/
if (addr && env->me_map != addr)
return EBUSY; /* TODO: Make a new MDB_* error code? */
@@ -1455,7 +1478,7 @@ index d2e81e4..0110402 100644
p = (MDB_page *)env->me_map;
env->me_metas[0] = METADATA(p);
-@@ -3960,15 +4298,17 @@ mdb_env_map(MDB_env *env, void *addr)
+@@ -3960,15 +4303,17 @@ mdb_env_map(MDB_env *env, void *addr)
}
int ESECT
@@ -1475,7 +1498,7 @@ index d2e81e4..0110402 100644
if (env->me_txn)
return EINVAL;
meta = mdb_env_pick_meta(env);
-@@ -3976,16 +4316,21 @@ mdb_env_set_mapsize(MDB_env *env, size_t size)
+@@ -3976,16 +4321,21 @@ mdb_env_set_mapsize(MDB_env *env, size_t size)
size = meta->mm_mapsize;
{
/* Silently round up to minimum if the size is too small */
@@ -1498,7 +1521,7 @@ index d2e81e4..0110402 100644
}
env->me_mapsize = size;
if (env->me_psize)
-@@ -4021,7 +4366,7 @@ mdb_env_get_maxreaders(MDB_env *env, unsigned int *readers)
+@@ -4021,7 +4371,7 @@ mdb_env_get_maxreaders(MDB_env *env, unsigned int *readers)
}
static int ESECT
@@ -1507,7 +1530,7 @@ index d2e81e4..0110402 100644
{
#ifdef _WIN32
LARGE_INTEGER fsize;
-@@ -4135,7 +4480,7 @@ mdb_env_open2(MDB_env *env)
+@@ -4135,7 +4485,7 @@ mdb_env_open2(MDB_env *env)
/* Make sure mapsize >= committed data size. Even when using
* mm_mapsize, which could be broken in old files (ITS#7789).
*/
@@ -1516,7 +1539,7 @@ index d2e81e4..0110402 100644
if (env->me_mapsize < minsize)
env->me_mapsize = minsize;
}
-@@ -4154,6 +4499,18 @@ mdb_env_open2(MDB_env *env)
+@@ -4154,6 +4504,18 @@ mdb_env_open2(MDB_env *env)
return rc;
newenv = 0;
}
@@ -1535,7 +1558,7 @@ index d2e81e4..0110402 100644
rc = mdb_env_map(env, (flags & MDB_FIXEDMAP) ? meta.mm_address : NULL);
if (rc)
-@@ -4183,13 +4540,13 @@ mdb_env_open2(MDB_env *env)
+@@ -4183,13 +4545,13 @@ mdb_env_open2(MDB_env *env)
DPRINTF(("opened database version %u, pagesize %u",
meta->mm_version, env->me_psize));
@@ -1556,7 +1579,7 @@ index d2e81e4..0110402 100644
}
#endif
-@@ -4465,6 +4822,10 @@ mdb_env_setup_locks(MDB_env *env, char *lpath, int mode, int *excl)
+@@ -4465,8 +4827,12 @@ mdb_env_setup_locks(MDB_env *env, char *lpath, int mode, int *excl)
# define MDB_CLOEXEC 0
#endif
#endif
@@ -1565,9 +1588,12 @@ index d2e81e4..0110402 100644
+ union semun semu;
+#endif
int rc;
- off_t size, rsize;
+- off_t size, rsize;
++ offset_t size, rsize;
-@@ -4616,19 +4977,42 @@ mdb_env_setup_locks(MDB_env *env, char *lpath, int mode, int *excl)
+ #ifdef _WIN32
+ wchar_t *wlpath;
+@@ -4616,19 +4982,42 @@ mdb_env_setup_locks(MDB_env *env, char *lpath, int mode, int *excl)
env->me_wmutex = sem_open(env->me_txns->mti_wmname,
O_CREAT|O_EXCL, mode, 1);
if (env->me_wmutex == SEM_FAILED) goto fail_errno;
@@ -1617,7 +1643,7 @@ index d2e81e4..0110402 100644
env->me_txns->mti_magic = MDB_MAGIC;
env->me_txns->mti_format = MDB_LOCK_FORMAT;
-@@ -4636,6 +5020,9 @@ mdb_env_setup_locks(MDB_env *env, char *lpath, int mode, int *excl)
+@@ -4636,6 +5025,9 @@ mdb_env_setup_locks(MDB_env *env, char *lpath, int mode, int *excl)
env->me_txns->mti_numreaders = 0;
} else {
@@ -1627,7 +1653,7 @@ index d2e81e4..0110402 100644
if (env->me_txns->mti_magic != MDB_MAGIC) {
DPUTS("lock region has invalid magic");
rc = MDB_INVALID;
-@@ -4661,8 +5048,33 @@ mdb_env_setup_locks(MDB_env *env, char *lpath, int mode, int *excl)
+@@ -4661,8 +5053,33 @@ mdb_env_setup_locks(MDB_env *env, char *lpath, int mode, int *excl)
if (env->me_rmutex == SEM_FAILED) goto fail_errno;
env->me_wmutex = sem_open(env->me_txns->mti_wmname, 0);
if (env->me_wmutex == SEM_FAILED) goto fail_errno;
@@ -1661,7 +1687,7 @@ index d2e81e4..0110402 100644
return MDB_SUCCESS;
fail_errno:
-@@ -4701,6 +5113,17 @@ mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode
+@@ -4701,6 +5118,17 @@ mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode
if (env->me_fd!=INVALID_HANDLE_VALUE || (flags & ~(CHANGEABLE|CHANGELESS)))
return EINVAL;
@@ -1679,7 +1705,7 @@ index d2e81e4..0110402 100644
len = strlen(path);
if (flags & MDB_NOSUBDIR) {
rc = len + sizeof(LOCKSUFF) + len + 1;
-@@ -4730,6 +5153,17 @@ mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode
+@@ -4730,6 +5158,17 @@ mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode
(env->me_dirty_list = calloc(MDB_IDL_UM_SIZE, sizeof(MDB_ID2)))))
rc = ENOMEM;
}
@@ -1697,7 +1723,7 @@ index d2e81e4..0110402 100644
env->me_flags = flags |= MDB_ENV_ACTIVE;
if (rc)
goto leave;
-@@ -4828,6 +5262,16 @@ mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode
+@@ -4828,6 +5267,16 @@ mdb_env_open(MDB_env *env, const char *path, unsigned int flags, mdb_mode_t mode
txn->mt_dbiseqs = (unsigned int *)(txn->mt_cursors + env->me_maxdbs);
txn->mt_dbflags = (unsigned char *)(txn->mt_dbiseqs + env->me_maxdbs);
txn->mt_env = env;
@@ -1714,7 +1740,7 @@ index d2e81e4..0110402 100644
txn->mt_dbxs = env->me_dbxs;
txn->mt_flags = MDB_TXN_FINISHED;
env->me_txn0 = txn;
-@@ -4866,6 +5310,15 @@ mdb_env_close0(MDB_env *env, int excl)
+@@ -4866,6 +5315,15 @@ mdb_env_close0(MDB_env *env, int excl)
free(env->me_dbflags);
free(env->me_path);
free(env->me_dirty_list);
@@ -1730,7 +1756,7 @@ index d2e81e4..0110402 100644
free(env->me_txn0);
mdb_midl_free(env->me_free_pgs);
-@@ -4883,7 +5336,11 @@ mdb_env_close0(MDB_env *env, int excl)
+@@ -4883,7 +5341,11 @@ mdb_env_close0(MDB_env *env, int excl)
}
if (env->me_map) {
@@ -1742,7 +1768,7 @@ index d2e81e4..0110402 100644
}
if (env->me_mfd != env->me_fd && env->me_mfd != INVALID_HANDLE_VALUE)
(void) close(env->me_mfd);
-@@ -4924,6 +5381,16 @@ mdb_env_close0(MDB_env *env, int excl)
+@@ -4924,6 +5386,16 @@ mdb_env_close0(MDB_env *env, int excl)
sem_unlink(env->me_txns->mti_wmname);
}
}
@@ -1759,7 +1785,7 @@ index d2e81e4..0110402 100644
#endif
munmap((void *)env->me_txns, (env->me_maxreaders-1)*sizeof(MDB_reader)+sizeof(MDB_txninfo));
}
-@@ -4938,6 +5405,14 @@ mdb_env_close0(MDB_env *env, int excl)
+@@ -4938,6 +5410,14 @@ mdb_env_close0(MDB_env *env, int excl)
#endif
(void) close(env->me_lfd);
}
@@ -1774,7 +1800,7 @@ index d2e81e4..0110402 100644
env->me_flags &= ~(MDB_ENV_ACTIVE|MDB_ENV_TXKEY);
}
-@@ -4961,18 +5436,18 @@ mdb_env_close(MDB_env *env)
+@@ -4961,18 +5441,18 @@ mdb_env_close(MDB_env *env)
free(env);
}
@@ -1797,7 +1823,7 @@ index d2e81e4..0110402 100644
*/
static int
mdb_cmp_int(const MDB_val *a, const MDB_val *b)
-@@ -5077,7 +5552,7 @@ mdb_node_search(MDB_cursor *mc, MDB_val *key, int *exactp)
+@@ -5077,7 +5557,7 @@ mdb_node_search(MDB_cursor *mc, MDB_val *key, int *exactp)
nkeys = NUMKEYS(mp);
@@ -1806,7 +1832,7 @@ index d2e81e4..0110402 100644
nkeys, IS_LEAF(mp) ? "leaf" : "branch", IS_SUBP(mp) ? "sub-" : "",
mdb_dbg_pgno(mp)));
-@@ -5089,7 +5564,7 @@ mdb_node_search(MDB_cursor *mc, MDB_val *key, int *exactp)
+@@ -5089,7 +5569,7 @@ mdb_node_search(MDB_cursor *mc, MDB_val *key, int *exactp)
* alignment is guaranteed. Use faster mdb_cmp_int.
*/
if (cmp == mdb_cmp_cint && IS_BRANCH(mp)) {
@@ -1815,7 +1841,7 @@ index d2e81e4..0110402 100644
cmp = mdb_cmp_long;
else
cmp = mdb_cmp_int;
-@@ -5125,7 +5600,7 @@ mdb_node_search(MDB_cursor *mc, MDB_val *key, int *exactp)
+@@ -5125,7 +5605,7 @@ mdb_node_search(MDB_cursor *mc, MDB_val *key, int *exactp)
DPRINTF(("found leaf index %u [%s], rc = %i",
i, DKEY(&nodekey), rc));
else
@@ -1824,7 +1850,7 @@ index d2e81e4..0110402 100644
i, DKEY(&nodekey), NODEPGNO(node), rc));
#endif
if (rc == 0)
-@@ -5173,7 +5648,7 @@ static void
+@@ -5173,7 +5653,7 @@ static void
mdb_cursor_pop(MDB_cursor *mc)
{
if (mc->mc_snum) {
@@ -1833,7 +1859,7 @@ index d2e81e4..0110402 100644
mc->mc_pg[mc->mc_top]->mp_pgno, DDBI(mc), (void *) mc));
mc->mc_snum--;
-@@ -5189,7 +5664,7 @@ mdb_cursor_pop(MDB_cursor *mc)
+@@ -5189,7 +5669,7 @@ mdb_cursor_pop(MDB_cursor *mc)
static int
mdb_cursor_push(MDB_cursor *mc, MDB_page *mp)
{
@@ -1842,7 +1868,7 @@ index d2e81e4..0110402 100644
DDBI(mc), (void *) mc));
if (mc->mc_snum >= CURSOR_STACK) {
-@@ -5204,21 +5679,309 @@ mdb_cursor_push(MDB_cursor *mc, MDB_page *mp)
+@@ -5204,21 +5684,309 @@ mdb_cursor_push(MDB_cursor *mc, MDB_page *mp)
return MDB_SUCCESS;
}
@@ -1920,7 +1946,7 @@ index d2e81e4..0110402 100644
+ len, &off, &len, ViewUnmap, (env->me_flags & MDB_RDONLY) ? 0 : MEM_RESERVE, PAGE_READONLY); \
+ if (rc) rc = mdb_nt2win32(rc)
+#else
-+ off_t off;
++ offset_t off;
+ size_t len;
+#define SET_OFF(off,val) off = val
+#define MAP(rc,env,addr,len,off) \
@@ -2156,7 +2182,7 @@ index d2e81e4..0110402 100644
MDB_txn *tx2 = txn;
level = 1;
do {
-@@ -5233,8 +5996,7 @@ mdb_page_get(MDB_txn *txn, pgno_t pgno, MDB_page **ret, int *lvl)
+@@ -5233,8 +6001,7 @@ mdb_page_get(MDB_txn *txn, pgno_t pgno, MDB_page **ret, int *lvl)
MDB_ID pn = pgno << 1;
x = mdb_midl_search(tx2->mt_spill_pgs, pn);
if (x <= tx2->mt_spill_pgs[0] && tx2->mt_spill_pgs[x] == pn) {
@@ -2166,7 +2192,7 @@ index d2e81e4..0110402 100644
}
}
if (dl[0].mid) {
-@@ -5248,15 +6010,26 @@ mdb_page_get(MDB_txn *txn, pgno_t pgno, MDB_page **ret, int *lvl)
+@@ -5248,15 +6015,26 @@ mdb_page_get(MDB_txn *txn, pgno_t pgno, MDB_page **ret, int *lvl)
} while ((tx2 = tx2->mt_parent) != NULL);
}
@@ -2198,7 +2224,7 @@ index d2e81e4..0110402 100644
done:
*ret = p;
if (lvl)
-@@ -5278,13 +6051,13 @@ mdb_page_search_root(MDB_cursor *mc, MDB_val *key, int flags)
+@@ -5278,13 +6056,13 @@ mdb_page_search_root(MDB_cursor *mc, MDB_val *key, int flags)
MDB_node *node;
indx_t i;
@@ -2214,7 +2240,7 @@ index d2e81e4..0110402 100644
if (flags & (MDB_PS_FIRST|MDB_PS_LAST)) {
i = 0;
-@@ -5308,7 +6081,7 @@ mdb_page_search_root(MDB_cursor *mc, MDB_val *key, int flags)
+@@ -5308,7 +6086,7 @@ mdb_page_search_root(MDB_cursor *mc, MDB_val *key, int flags)
mdb_cassert(mc, i < NUMKEYS(mp));
node = NODEPTR(mp, i);
@@ -2223,7 +2249,7 @@ index d2e81e4..0110402 100644
return rc;
mc->mc_ki[mc->mc_top] = i;
-@@ -5329,7 +6102,7 @@ mdb_page_search_root(MDB_cursor *mc, MDB_val *key, int flags)
+@@ -5329,7 +6107,7 @@ mdb_page_search_root(MDB_cursor *mc, MDB_val *key, int flags)
return MDB_CORRUPTED;
}
@@ -2232,7 +2258,7 @@ index d2e81e4..0110402 100644
key ? DKEY(key) : "null"));
mc->mc_flags |= C_INITIALIZED;
mc->mc_flags &= ~C_EOF;
-@@ -5350,7 +6123,7 @@ mdb_page_search_lowest(MDB_cursor *mc)
+@@ -5350,7 +6128,7 @@ mdb_page_search_lowest(MDB_cursor *mc)
MDB_node *node = NODEPTR(mp, 0);
int rc;
@@ -2241,7 +2267,7 @@ index d2e81e4..0110402 100644
return rc;
mc->mc_ki[mc->mc_top] = 0;
-@@ -5402,7 +6175,7 @@ mdb_page_search(MDB_cursor *mc, MDB_val *key, int flags)
+@@ -5402,7 +6180,7 @@ mdb_page_search(MDB_cursor *mc, MDB_val *key, int flags)
return MDB_NOTFOUND;
if ((leaf->mn_flags & (F_DUPDATA|F_SUBDATA)) != F_SUBDATA)
return MDB_INCOMPATIBLE; /* not a named DB */
@@ -2250,7 +2276,7 @@ index d2e81e4..0110402 100644
if (rc)
return rc;
memcpy(&flags, ((char *) data.mv_data + offsetof(MDB_db, md_flags)),
-@@ -5425,14 +6198,26 @@ mdb_page_search(MDB_cursor *mc, MDB_val *key, int flags)
+@@ -5425,14 +6203,26 @@ mdb_page_search(MDB_cursor *mc, MDB_val *key, int flags)
}
mdb_cassert(mc, root > 1);
@@ -2280,7 +2306,7 @@ index d2e81e4..0110402 100644
DDBI(mc), root, mc->mc_pg[0]->mp_flags));
if (flags & MDB_PS_MODIFY) {
-@@ -5457,7 +6242,7 @@ mdb_ovpage_free(MDB_cursor *mc, MDB_page *mp)
+@@ -5457,7 +6247,7 @@ mdb_ovpage_free(MDB_cursor *mc, MDB_page *mp)
MDB_ID pn = pg << 1;
int rc;
@@ -2289,7 +2315,7 @@ index d2e81e4..0110402 100644
/* If the page is dirty or on the spill list we just acquired it,
* so we should give it back to our current free list, if any.
* Otherwise put it onto the list of pages we freed in this txn.
-@@ -5498,7 +6283,7 @@ mdb_ovpage_free(MDB_cursor *mc, MDB_page *mp)
+@@ -5498,7 +6288,7 @@ mdb_ovpage_free(MDB_cursor *mc, MDB_page *mp)
j = ++(dl[0].mid);
dl[j] = ix; /* Unsorted. OK when MDB_TXN_ERROR. */
txn->mt_flags |= MDB_TXN_ERROR;
@@ -2298,7 +2324,7 @@ index d2e81e4..0110402 100644
}
}
txn->mt_dirty_room++;
-@@ -5523,18 +6308,22 @@ release:
+@@ -5523,18 +6313,22 @@ release:
}
/** Return the data associated with a given node.
@@ -2323,7 +2349,7 @@ index d2e81e4..0110402 100644
if (!F_ISSET(leaf->mn_flags, F_BIGDATA)) {
data->mv_size = NODEDSZ(leaf);
data->mv_data = NODEDATA(leaf);
-@@ -5545,11 +6334,12 @@ mdb_node_read(MDB_txn *txn, MDB_node *leaf, MDB_val *data)
+@@ -5545,11 +6339,12 @@ mdb_node_read(MDB_txn *txn, MDB_node *leaf, MDB_val *data)
*/
data->mv_size = NODEDSZ(leaf);
memcpy(&pgno, NODEDATA(leaf), sizeof(pgno));
@@ -2338,7 +2364,7 @@ index d2e81e4..0110402 100644
return MDB_SUCCESS;
}
-@@ -5560,7 +6350,7 @@ mdb_get(MDB_txn *txn, MDB_dbi dbi,
+@@ -5560,7 +6355,7 @@ mdb_get(MDB_txn *txn, MDB_dbi dbi,
{
MDB_cursor mc;
MDB_xcursor mx;
@@ -2347,7 +2373,7 @@ index d2e81e4..0110402 100644
DKBUF;
DPRINTF(("===> get db %u key [%s]", dbi, DKEY(key)));
-@@ -5572,7 +6362,12 @@ mdb_get(MDB_txn *txn, MDB_dbi dbi,
+@@ -5572,7 +6367,12 @@ mdb_get(MDB_txn *txn, MDB_dbi dbi,
return MDB_BAD_TXN;
mdb_cursor_init(&mc, txn, dbi, &mx);
@@ -2361,7 +2387,7 @@ index d2e81e4..0110402 100644
}
/** Find a sibling for a page.
-@@ -5589,13 +6384,19 @@ mdb_cursor_sibling(MDB_cursor *mc, int move_right)
+@@ -5589,13 +6389,19 @@ mdb_cursor_sibling(MDB_cursor *mc, int move_right)
int rc;
MDB_node *indx;
MDB_page *mp;
@@ -2382,7 +2408,7 @@ index d2e81e4..0110402 100644
mc->mc_pg[mc->mc_top]->mp_pgno, mc->mc_ki[mc->mc_top]));
if (move_right ? (mc->mc_ki[mc->mc_top] + 1u >= NUMKEYS(mc->mc_pg[mc->mc_top]))
-@@ -5618,8 +6419,10 @@ mdb_cursor_sibling(MDB_cursor *mc, int move_right)
+@@ -5618,8 +6424,10 @@ mdb_cursor_sibling(MDB_cursor *mc, int move_right)
}
mdb_cassert(mc, IS_BRANCH(mc->mc_pg[mc->mc_top]));
@@ -2394,7 +2420,7 @@ index d2e81e4..0110402 100644
/* mc will be inconsistent if caller does mc_snum++ as above */
mc->mc_flags &= ~(C_INITIALIZED|C_EOF);
return rc;
-@@ -5640,11 +6443,12 @@ mdb_cursor_next(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
+@@ -5640,11 +6448,12 @@ mdb_cursor_next(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
MDB_node *leaf;
int rc;
@@ -2410,7 +2436,7 @@ index d2e81e4..0110402 100644
mp = mc->mc_pg[mc->mc_top];
-@@ -5659,6 +6463,9 @@ mdb_cursor_next(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
+@@ -5659,6 +6468,9 @@ mdb_cursor_next(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
return rc;
}
}
@@ -2420,7 +2446,7 @@ index d2e81e4..0110402 100644
} else {
mc->mc_xcursor->mx_cursor.mc_flags &= ~(C_INITIALIZED|C_EOF);
if (op == MDB_NEXT_DUP)
-@@ -5666,7 +6473,7 @@ mdb_cursor_next(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
+@@ -5666,7 +6478,7 @@ mdb_cursor_next(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
}
}
@@ -2429,7 +2455,7 @@ index d2e81e4..0110402 100644
mdb_dbg_pgno(mp), (void *) mc));
if (mc->mc_flags & C_DEL) {
mc->mc_flags ^= C_DEL;
-@@ -5680,12 +6487,12 @@ mdb_cursor_next(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
+@@ -5680,12 +6492,12 @@ mdb_cursor_next(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
return rc;
}
mp = mc->mc_pg[mc->mc_top];
@@ -2444,7 +2470,7 @@ index d2e81e4..0110402 100644
mdb_dbg_pgno(mp), NUMKEYS(mp), mc->mc_ki[mc->mc_top]));
if (IS_LEAF2(mp)) {
-@@ -5701,7 +6508,7 @@ skip:
+@@ -5701,7 +6513,7 @@ skip:
mdb_xcursor_init1(mc, leaf);
}
if (data) {
@@ -2453,7 +2479,7 @@ index d2e81e4..0110402 100644
return rc;
if (F_ISSET(leaf->mn_flags, F_DUPDATA)) {
-@@ -5723,7 +6530,12 @@ mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
+@@ -5723,7 +6535,12 @@ mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
MDB_node *leaf;
int rc;
@@ -2467,7 +2493,7 @@ index d2e81e4..0110402 100644
mp = mc->mc_pg[mc->mc_top];
-@@ -5740,6 +6552,9 @@ mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
+@@ -5740,6 +6557,9 @@ mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
return rc;
}
}
@@ -2477,7 +2503,7 @@ index d2e81e4..0110402 100644
} else {
mc->mc_xcursor->mx_cursor.mc_flags &= ~(C_INITIALIZED|C_EOF);
if (op == MDB_PREV_DUP)
-@@ -5747,7 +6562,7 @@ mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
+@@ -5747,7 +6567,7 @@ mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
}
}
@@ -2486,7 +2512,7 @@ index d2e81e4..0110402 100644
mdb_dbg_pgno(mp), (void *) mc));
mc->mc_flags &= ~(C_EOF|C_DEL);
-@@ -5759,11 +6574,13 @@ mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
+@@ -5759,11 +6579,13 @@ mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
}
mp = mc->mc_pg[mc->mc_top];
mc->mc_ki[mc->mc_top] = NUMKEYS(mp) - 1;
@@ -2502,7 +2528,7 @@ index d2e81e4..0110402 100644
mdb_dbg_pgno(mp), NUMKEYS(mp), mc->mc_ki[mc->mc_top]));
if (IS_LEAF2(mp)) {
-@@ -5779,7 +6596,7 @@ mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
+@@ -5779,7 +6601,7 @@ mdb_cursor_prev(MDB_cursor *mc, MDB_val *key, MDB_val *data, MDB_cursor_op op)
mdb_xcursor_init1(mc, leaf);
}
if (data) {
@@ -2511,7 +2537,7 @@ index d2e81e4..0110402 100644
return rc;
if (F_ISSET(leaf->mn_flags, F_DUPDATA)) {
-@@ -5806,8 +6623,10 @@ mdb_cursor_set(MDB_cursor *mc, MDB_val *key, MDB_val *data,
+@@ -5806,8 +6628,10 @@ mdb_cursor_set(MDB_cursor *mc, MDB_val *key, MDB_val *data,
if (key->mv_size == 0)
return MDB_BAD_VALSIZE;
@@ -2523,7 +2549,7 @@ index d2e81e4..0110402 100644
/* See if we're already on the right page */
if (mc->mc_flags & C_INITIALIZED) {
-@@ -5873,6 +6692,7 @@ mdb_cursor_set(MDB_cursor *mc, MDB_val *key, MDB_val *data,
+@@ -5873,6 +6697,7 @@ mdb_cursor_set(MDB_cursor *mc, MDB_val *key, MDB_val *data,
}
}
rc = 0;
@@ -2531,7 +2557,7 @@ index d2e81e4..0110402 100644
goto set2;
}
}
-@@ -5961,25 +6781,23 @@ set1:
+@@ -5961,25 +6786,23 @@ set1:
} else if (op == MDB_GET_BOTH || op == MDB_GET_BOTH_RANGE) {
MDB_val olddata;
MDB_cmp_func *dcmp;
@@ -2561,7 +2587,7 @@ index d2e81e4..0110402 100644
return rc;
}
}
-@@ -5999,8 +6817,10 @@ mdb_cursor_first(MDB_cursor *mc, MDB_val *key, MDB_val *data)
+@@ -5999,8 +6822,10 @@ mdb_cursor_first(MDB_cursor *mc, MDB_val *key, MDB_val *data)
int rc;
MDB_node *leaf;
@@ -2573,7 +2599,7 @@ index d2e81e4..0110402 100644
if (!(mc->mc_flags & C_INITIALIZED) || mc->mc_top) {
rc = mdb_page_search(mc, NULL, MDB_PS_FIRST);
-@@ -6028,7 +6848,7 @@ mdb_cursor_first(MDB_cursor *mc, MDB_val *key, MDB_val *data)
+@@ -6028,7 +6853,7 @@ mdb_cursor_first(MDB_cursor *mc, MDB_val *key, MDB_val *data)
if (rc)
return rc;
} else {
@@ -2582,7 +2608,7 @@ index d2e81e4..0110402 100644
return rc;
}
}
-@@ -6043,8 +6863,10 @@ mdb_cursor_last(MDB_cursor *mc, MDB_val *key, MDB_val *data)
+@@ -6043,8 +6868,10 @@ mdb_cursor_last(MDB_cursor *mc, MDB_val *key, MDB_val *data)
int rc;
MDB_node *leaf;
@@ -2594,7 +2620,7 @@ index d2e81e4..0110402 100644
if (!(mc->mc_flags & C_EOF)) {
-@@ -6073,7 +6895,7 @@ mdb_cursor_last(MDB_cursor *mc, MDB_val *key, MDB_val *data)
+@@ -6073,7 +6900,7 @@ mdb_cursor_last(MDB_cursor *mc, MDB_val *key, MDB_val *data)
if (rc)
return rc;
} else {
@@ -2603,7 +2629,7 @@ index d2e81e4..0110402 100644
return rc;
}
}
-@@ -6119,7 +6941,7 @@ mdb_cursor_get(MDB_cursor *mc, MDB_val *key, MDB_val *data,
+@@ -6119,7 +6946,7 @@ mdb_cursor_get(MDB_cursor *mc, MDB_val *key, MDB_val *data,
if (F_ISSET(leaf->mn_flags, F_DUPDATA)) {
rc = mdb_cursor_get(&mc->mc_xcursor->mx_cursor, data, NULL, MDB_GET_CURRENT);
} else {
@@ -2612,7 +2638,7 @@ index d2e81e4..0110402 100644
}
}
}
-@@ -6169,10 +6991,7 @@ mdb_cursor_get(MDB_cursor *mc, MDB_val *key, MDB_val *data,
+@@ -6169,10 +6996,7 @@ mdb_cursor_get(MDB_cursor *mc, MDB_val *key, MDB_val *data,
rc = MDB_INCOMPATIBLE;
break;
}
@@ -2624,7 +2650,7 @@ index d2e81e4..0110402 100644
if (rc == MDB_SUCCESS) {
if (mc->mc_xcursor->mx_cursor.mc_flags & C_INITIALIZED) {
MDB_cursor *mx;
-@@ -6187,24 +7006,38 @@ fetchm:
+@@ -6187,24 +7011,38 @@ fetchm:
}
}
break;
@@ -2674,7 +2700,7 @@ index d2e81e4..0110402 100644
rc = mdb_cursor_prev(mc, key, data, op);
break;
case MDB_FIRST:
-@@ -6225,7 +7058,7 @@ fetchm:
+@@ -6225,7 +7063,7 @@ fetchm:
MDB_node *leaf = NODEPTR(mc->mc_pg[mc->mc_top], mc->mc_ki[mc->mc_top]);
if (!F_ISSET(leaf->mn_flags, F_DUPDATA)) {
MDB_GET_KEY(leaf, key);
@@ -2683,7 +2709,7 @@ index d2e81e4..0110402 100644
break;
}
}
-@@ -6487,10 +7320,8 @@ more:
+@@ -6487,10 +7325,8 @@ more:
if (flags == MDB_CURRENT)
goto current;
dcmp = mc->mc_dbx->md_dcmp;
@@ -2695,7 +2721,7 @@ index d2e81e4..0110402 100644
/* does data match? */
if (!dcmp(data, &olddata)) {
if (flags & (MDB_NODUPDATA|MDB_APPENDDUP))
-@@ -6609,7 +7440,7 @@ current:
+@@ -6609,7 +7445,7 @@ current:
int level, ovpages, dpages = OVPAGES(data->mv_size, env->me_psize);
memcpy(&pg, olddata.mv_data, sizeof(pg));
@@ -2704,7 +2730,7 @@ index d2e81e4..0110402 100644
return rc2;
ovpages = omp->mp_pages;
-@@ -6641,8 +7472,13 @@ current:
+@@ -6641,8 +7477,13 @@ current:
/* Note - this page is already counted in parent's dirty_room */
rc2 = mdb_mid2l_insert(mc->mc_txn->mt_u.dirty_list, &id2);
mdb_cassert(mc, rc2 == 0);
@@ -2719,7 +2745,7 @@ index d2e81e4..0110402 100644
* compiler may copy words instead of bytes.
*/
off = (PAGEHDRSZ + data->mv_size) & -sizeof(size_t);
-@@ -6728,7 +7564,7 @@ new_sub:
+@@ -6728,7 +7569,7 @@ new_sub:
*/
if (do_sub) {
int xflags, new_dupdata;
@@ -2728,7 +2754,7 @@ index d2e81e4..0110402 100644
put_sub:
xdata.mv_size = 0;
xdata.mv_data = "";
-@@ -6810,7 +7646,7 @@ put_sub:
+@@ -6810,7 +7651,7 @@ put_sub:
return rc;
bad_sub:
if (rc == MDB_KEYEXIST) /* should not happen, we deleted that item */
@@ -2737,7 +2763,7 @@ index d2e81e4..0110402 100644
}
mc->mc_txn->mt_flags |= MDB_TXN_ERROR;
return rc;
-@@ -6910,7 +7746,7 @@ mdb_cursor_del(MDB_cursor *mc, unsigned int flags)
+@@ -6910,7 +7751,7 @@ mdb_cursor_del(MDB_cursor *mc, unsigned int flags)
pgno_t pg;
memcpy(&pg, NODEDATA(leaf), sizeof(pg));
@@ -2746,7 +2772,7 @@ index d2e81e4..0110402 100644
(rc = mdb_ovpage_free(mc, omp)))
goto fail;
}
-@@ -6939,7 +7775,7 @@ mdb_page_new(MDB_cursor *mc, uint32_t flags, int num, MDB_page **mp)
+@@ -6939,7 +7780,7 @@ mdb_page_new(MDB_cursor *mc, uint32_t flags, int num, MDB_page **mp)
if ((rc = mdb_page_alloc(mc, num, &np)))
return rc;
@@ -2755,7 +2781,7 @@ index d2e81e4..0110402 100644
np->mp_pgno, mc->mc_txn->mt_env->me_psize));
np->mp_flags = flags | P_DIRTY;
np->mp_lower = (PAGEHDRSZ-PAGEBASE);
-@@ -7039,7 +7875,7 @@ mdb_node_add(MDB_cursor *mc, indx_t indx,
+@@ -7039,7 +7880,7 @@ mdb_node_add(MDB_cursor *mc, indx_t indx,
mdb_cassert(mc, mp->mp_upper >= mp->mp_lower);
@@ -2764,7 +2790,7 @@ index d2e81e4..0110402 100644
IS_LEAF(mp) ? "leaf" : "branch",
IS_SUBP(mp) ? "sub-" : "",
mdb_dbg_pgno(mp), indx, data ? data->mv_size : 0,
-@@ -7080,7 +7916,7 @@ mdb_node_add(MDB_cursor *mc, indx_t indx,
+@@ -7080,7 +7921,7 @@ mdb_node_add(MDB_cursor *mc, indx_t indx,
goto full;
if ((rc = mdb_page_new(mc, P_OVERFLOW, ovpages, &ofp)))
return rc;
@@ -2773,7 +2799,7 @@ index d2e81e4..0110402 100644
flags |= F_BIGDATA;
goto update;
} else {
-@@ -7137,7 +7973,7 @@ update:
+@@ -7137,7 +7978,7 @@ update:
return MDB_SUCCESS;
full:
@@ -2782,7 +2808,7 @@ index d2e81e4..0110402 100644
mdb_dbg_pgno(mp), NUMKEYS(mp)));
DPRINTF(("upper-lower = %u - %u = %"Z"d", mp->mp_upper,mp->mp_lower,room));
DPRINTF(("node size = %"Z"u", node_size));
-@@ -7160,7 +7996,7 @@ mdb_node_del(MDB_cursor *mc, int ksize)
+@@ -7160,7 +8001,7 @@ mdb_node_del(MDB_cursor *mc, int ksize)
MDB_node *node;
char *base;
@@ -2791,7 +2817,7 @@ index d2e81e4..0110402 100644
IS_LEAF(mp) ? "leaf" : "branch", mdb_dbg_pgno(mp)));
numkeys = NUMKEYS(mp);
mdb_cassert(mc, indx < numkeys);
-@@ -7269,7 +8105,8 @@ mdb_xcursor_init0(MDB_cursor *mc)
+@@ -7269,7 +8110,8 @@ mdb_xcursor_init0(MDB_cursor *mc)
mx->mx_cursor.mc_dbflag = &mx->mx_dbflag;
mx->mx_cursor.mc_snum = 0;
mx->mx_cursor.mc_top = 0;
@@ -2801,7 +2827,7 @@ index d2e81e4..0110402 100644
mx->mx_dbx.md_name.mv_size = 0;
mx->mx_dbx.md_name.mv_data = NULL;
mx->mx_dbx.md_cmp = mc->mc_dbx->md_dcmp;
-@@ -7288,12 +8125,12 @@ mdb_xcursor_init1(MDB_cursor *mc, MDB_node *node)
+@@ -7288,12 +8130,12 @@ mdb_xcursor_init1(MDB_cursor *mc, MDB_node *node)
{
MDB_xcursor *mx = mc->mc_xcursor;
@@ -2815,7 +2841,7 @@ index d2e81e4..0110402 100644
} else {
MDB_page *fp = NODEDATA(node);
mx->mx_db.md_pad = 0;
-@@ -7306,7 +8143,7 @@ mdb_xcursor_init1(MDB_cursor *mc, MDB_node *node)
+@@ -7306,7 +8148,7 @@ mdb_xcursor_init1(MDB_cursor *mc, MDB_node *node)
COPY_PGNO(mx->mx_db.md_root, fp->mp_pgno);
mx->mx_cursor.mc_snum = 1;
mx->mx_cursor.mc_top = 0;
@@ -2824,7 +2850,7 @@ index d2e81e4..0110402 100644
mx->mx_cursor.mc_pg[0] = fp;
mx->mx_cursor.mc_ki[0] = 0;
if (mc->mc_db->md_flags & MDB_DUPFIXED) {
-@@ -7316,13 +8153,11 @@ mdb_xcursor_init1(MDB_cursor *mc, MDB_node *node)
+@@ -7316,13 +8158,11 @@ mdb_xcursor_init1(MDB_cursor *mc, MDB_node *node)
mx->mx_db.md_flags |= MDB_INTEGERKEY;
}
}
@@ -2840,7 +2866,7 @@ index d2e81e4..0110402 100644
}
-@@ -7345,7 +8180,7 @@ mdb_xcursor_init2(MDB_cursor *mc, MDB_xcursor *src_mx, int new_dupdata)
+@@ -7345,7 +8185,7 @@ mdb_xcursor_init2(MDB_cursor *mc, MDB_xcursor *src_mx, int new_dupdata)
mx->mx_cursor.mc_flags |= C_INITIALIZED;
mx->mx_cursor.mc_ki[0] = 0;
mx->mx_dbflag = DB_VALID|DB_USRVALID|DB_DIRTY; /* DB_DIRTY guides mdb_cursor_touch */
@@ -2849,7 +2875,7 @@ index d2e81e4..0110402 100644
mx->mx_dbx.md_cmp = src_mx->mx_dbx.md_cmp;
#endif
} else if (!(mx->mx_cursor.mc_flags & C_INITIALIZED)) {
-@@ -7353,7 +8188,7 @@ mdb_xcursor_init2(MDB_cursor *mc, MDB_xcursor *src_mx, int new_dupdata)
+@@ -7353,7 +8193,7 @@ mdb_xcursor_init2(MDB_cursor *mc, MDB_xcursor *src_mx, int new_dupdata)
}
mx->mx_db = src_mx->mx_db;
mx->mx_cursor.mc_pg[0] = src_mx->mx_cursor.mc_pg[0];
@@ -2858,7 +2884,7 @@ index d2e81e4..0110402 100644
mx->mx_db.md_root));
}
-@@ -7372,7 +8207,8 @@ mdb_cursor_init(MDB_cursor *mc, MDB_txn *txn, MDB_dbi dbi, MDB_xcursor *mx)
+@@ -7372,7 +8212,8 @@ mdb_cursor_init(MDB_cursor *mc, MDB_txn *txn, MDB_dbi dbi, MDB_xcursor *mx)
mc->mc_top = 0;
mc->mc_pg[0] = 0;
mc->mc_ki[0] = 0;
@@ -2868,7 +2894,7 @@ index d2e81e4..0110402 100644
if (txn->mt_dbs[dbi].md_flags & MDB_DUPSORT) {
mdb_tassert(txn, mx != NULL);
mc->mc_xcursor = mx;
-@@ -7437,7 +8273,7 @@ mdb_cursor_renew(MDB_txn *txn, MDB_cursor *mc)
+@@ -7437,7 +8278,7 @@ mdb_cursor_renew(MDB_txn *txn, MDB_cursor *mc)
/* Return the count of duplicate data items for the current key */
int
@@ -2877,7 +2903,7 @@ index d2e81e4..0110402 100644
{
MDB_node *leaf;
-@@ -7471,6 +8307,9 @@ mdb_cursor_count(MDB_cursor *mc, size_t *countp)
+@@ -7471,6 +8312,9 @@ mdb_cursor_count(MDB_cursor *mc, size_t *countp)
void
mdb_cursor_close(MDB_cursor *mc)
{
@@ -2887,7 +2913,7 @@ index d2e81e4..0110402 100644
if (mc && !mc->mc_backup) {
/* remove from txn, if tracked */
if ((mc->mc_flags & C_UNTRACK) && mc->mc_txn->mt_cursors) {
-@@ -7522,7 +8361,7 @@ mdb_update_key(MDB_cursor *mc, MDB_val *key)
+@@ -7522,7 +8366,7 @@ mdb_update_key(MDB_cursor *mc, MDB_val *key)
char kbuf2[DKBUF_MAXKEYSIZE*2+1];
k2.mv_data = NODEKEY(node);
k2.mv_size = node->mn_ksize;
@@ -2896,7 +2922,7 @@ index d2e81e4..0110402 100644
indx, ptr,
mdb_dkey(&k2, kbuf2),
DKEY(key),
-@@ -7670,7 +8509,7 @@ mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst, int fromleft)
+@@ -7670,7 +8514,7 @@ mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst, int fromleft)
return rc;
}
@@ -2905,7 +2931,7 @@ index d2e81e4..0110402 100644
IS_LEAF(csrc->mc_pg[csrc->mc_top]) ? "leaf" : "branch",
csrc->mc_ki[csrc->mc_top],
DKEY(&key),
-@@ -7764,7 +8603,7 @@ mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst, int fromleft)
+@@ -7764,7 +8608,7 @@ mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst, int fromleft)
key.mv_size = NODEKSZ(srcnode);
key.mv_data = NODEKEY(srcnode);
}
@@ -2914,7 +2940,7 @@ index d2e81e4..0110402 100644
csrc->mc_pg[csrc->mc_top]->mp_pgno, DKEY(&key)));
mdb_cursor_copy(csrc, &mn);
mn.mc_snum--;
-@@ -7795,7 +8634,7 @@ mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst, int fromleft)
+@@ -7795,7 +8639,7 @@ mdb_node_move(MDB_cursor *csrc, MDB_cursor *cdst, int fromleft)
key.mv_size = NODEKSZ(srcnode);
key.mv_data = NODEKEY(srcnode);
}
@@ -2923,7 +2949,7 @@ index d2e81e4..0110402 100644
cdst->mc_pg[cdst->mc_top]->mp_pgno, DKEY(&key)));
mdb_cursor_copy(cdst, &mn);
mn.mc_snum--;
-@@ -7841,7 +8680,7 @@ mdb_page_merge(MDB_cursor *csrc, MDB_cursor *cdst)
+@@ -7841,7 +8685,7 @@ mdb_page_merge(MDB_cursor *csrc, MDB_cursor *cdst)
psrc = csrc->mc_pg[csrc->mc_top];
pdst = cdst->mc_pg[cdst->mc_top];
@@ -2932,7 +2958,7 @@ index d2e81e4..0110402 100644
mdb_cassert(csrc, csrc->mc_snum > 1); /* can't merge root page */
mdb_cassert(csrc, cdst->mc_snum > 1);
-@@ -7898,7 +8737,7 @@ mdb_page_merge(MDB_cursor *csrc, MDB_cursor *cdst)
+@@ -7898,7 +8742,7 @@ mdb_page_merge(MDB_cursor *csrc, MDB_cursor *cdst)
}
}
@@ -2941,7 +2967,7 @@ index d2e81e4..0110402 100644
pdst->mp_pgno, NUMKEYS(pdst),
(float)PAGEFILL(cdst->mc_txn->mt_env, pdst) / 10));
-@@ -7986,6 +8825,7 @@ mdb_cursor_copy(const MDB_cursor *csrc, MDB_cursor *cdst)
+@@ -7986,6 +8830,7 @@ mdb_cursor_copy(const MDB_cursor *csrc, MDB_cursor *cdst)
cdst->mc_snum = csrc->mc_snum;
cdst->mc_top = csrc->mc_top;
cdst->mc_flags = csrc->mc_flags;
@@ -2949,7 +2975,7 @@ index d2e81e4..0110402 100644
for (i=0; i<csrc->mc_snum; i++) {
cdst->mc_pg[i] = csrc->mc_pg[i];
-@@ -8014,14 +8854,14 @@ mdb_rebalance(MDB_cursor *mc)
+@@ -8014,14 +8859,14 @@ mdb_rebalance(MDB_cursor *mc)
minkeys = 1;
thresh = FILL_THRESHOLD;
}
@@ -2966,7 +2992,7 @@ index d2e81e4..0110402 100644
mdb_dbg_pgno(mc->mc_pg[mc->mc_top])));
return MDB_SUCCESS;
}
-@@ -8069,7 +8909,7 @@ mdb_rebalance(MDB_cursor *mc)
+@@ -8069,7 +8914,7 @@ mdb_rebalance(MDB_cursor *mc)
if (rc)
return rc;
mc->mc_db->md_root = NODEPGNO(NODEPTR(mp, 0));
@@ -2975,7 +3001,7 @@ index d2e81e4..0110402 100644
if (rc)
return rc;
mc->mc_db->md_depth--;
-@@ -8130,7 +8970,7 @@ mdb_rebalance(MDB_cursor *mc)
+@@ -8130,7 +8975,7 @@ mdb_rebalance(MDB_cursor *mc)
DPUTS("reading right neighbor");
mn.mc_ki[ptop]++;
node = NODEPTR(mc->mc_pg[ptop], mn.mc_ki[ptop]);
@@ -2984,7 +3010,7 @@ index d2e81e4..0110402 100644
if (rc)
return rc;
mn.mc_ki[mn.mc_top] = 0;
-@@ -8142,7 +8982,7 @@ mdb_rebalance(MDB_cursor *mc)
+@@ -8142,7 +8987,7 @@ mdb_rebalance(MDB_cursor *mc)
DPUTS("reading left neighbor");
mn.mc_ki[ptop]--;
node = NODEPTR(mc->mc_pg[ptop], mn.mc_ki[ptop]);
@@ -2993,7 +3019,7 @@ index d2e81e4..0110402 100644
if (rc)
return rc;
mn.mc_ki[mn.mc_top] = NUMKEYS(mn.mc_pg[mn.mc_top]) - 1;
-@@ -8150,7 +8990,7 @@ mdb_rebalance(MDB_cursor *mc)
+@@ -8150,7 +8995,7 @@ mdb_rebalance(MDB_cursor *mc)
fromleft = 1;
}
@@ -3002,7 +3028,7 @@ index d2e81e4..0110402 100644
mn.mc_pg[mn.mc_top]->mp_pgno, NUMKEYS(mn.mc_pg[mn.mc_top]),
(float)PAGEFILL(mc->mc_txn->mt_env, mn.mc_pg[mn.mc_top]) / 10));
-@@ -8207,8 +9047,6 @@ mdb_cursor_del0(MDB_cursor *mc)
+@@ -8207,8 +9052,6 @@ mdb_cursor_del0(MDB_cursor *mc)
if (m3->mc_pg[mc->mc_top] == mp) {
if (m3->mc_ki[mc->mc_top] == ki) {
m3->mc_flags |= C_DEL;
@@ -3011,7 +3037,7 @@ index d2e81e4..0110402 100644
} else if (m3->mc_ki[mc->mc_top] > ki) {
m3->mc_ki[mc->mc_top]--;
}
-@@ -8242,11 +9080,21 @@ mdb_cursor_del0(MDB_cursor *mc)
+@@ -8242,11 +9085,21 @@ mdb_cursor_del0(MDB_cursor *mc)
continue;
if (m3->mc_pg[mc->mc_top] == mp) {
/* if m3 points past last node in page, find next sibling */
@@ -3038,7 +3064,7 @@ index d2e81e4..0110402 100644
}
}
}
-@@ -8352,7 +9200,7 @@ mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno
+@@ -8352,7 +9205,7 @@ mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno
newindx = mc->mc_ki[mc->mc_top];
nkeys = NUMKEYS(mp);
@@ -3047,7 +3073,7 @@ index d2e81e4..0110402 100644
IS_LEAF(mp) ? "leaf" : "branch", mp->mp_pgno,
DKEY(newkey), mc->mc_ki[mc->mc_top], nkeys));
-@@ -8360,7 +9208,7 @@ mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno
+@@ -8360,7 +9213,7 @@ mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno
if ((rc = mdb_page_new(mc, mp->mp_flags, 1, &rp)))
return rc;
rp->mp_pad = mp->mp_pad;
@@ -3056,7 +3082,7 @@ index d2e81e4..0110402 100644
/* Usually when splitting the root page, the cursor
* height is 1. But when called from mdb_update_key,
-@@ -8378,7 +9226,7 @@ mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno
+@@ -8378,7 +9231,7 @@ mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno
mc->mc_pg[0] = pp;
mc->mc_ki[0] = 0;
mc->mc_db->md_root = pp->mp_pgno;
@@ -3065,7 +3091,7 @@ index d2e81e4..0110402 100644
new_root = mc->mc_db->md_depth++;
/* Add left (implicit) pointer. */
-@@ -8395,7 +9243,7 @@ mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno
+@@ -8395,7 +9248,7 @@ mdb_page_split(MDB_cursor *mc, MDB_val *newkey, MDB_val *newdata, pgno_t newpgno
ptop = 0;
} else {
ptop = mc->mc_top-1;
@@ -3074,7 +3100,7 @@ index d2e81e4..0110402 100644
}
mdb_cursor_copy(mc, &mn);
-@@ -8776,11 +9624,12 @@ mdb_put(MDB_txn *txn, MDB_dbi dbi,
+@@ -8776,11 +9629,12 @@ mdb_put(MDB_txn *txn, MDB_dbi dbi,
#ifndef MDB_WBUF
#define MDB_WBUF (1024*1024)
#endif
@@ -3089,7 +3115,7 @@ index d2e81e4..0110402 100644
char *mc_wbuf[2];
char *mc_over[2];
MDB_env *mc_env;
-@@ -8789,10 +9638,9 @@ typedef struct mdb_copy {
+@@ -8789,10 +9643,9 @@ typedef struct mdb_copy {
int mc_olen[2];
pgno_t mc_next_pgno;
HANDLE mc_fd;
@@ -3103,7 +3129,7 @@ index d2e81e4..0110402 100644
} mdb_copy;
/** Dedicated writer thread for compacting copy. */
-@@ -8811,20 +9659,16 @@ mdb_env_copythr(void *arg)
+@@ -8811,20 +9664,16 @@ mdb_env_copythr(void *arg)
#endif
pthread_mutex_lock(&my->mc_mutex);
@@ -3127,7 +3153,7 @@ index d2e81e4..0110402 100644
DO_WRITE(rc, my->mc_fd, ptr, wsize, len);
if (!rc) {
rc = ErrCode();
-@@ -8840,8 +9684,7 @@ again:
+@@ -8840,8 +9689,7 @@ again:
}
}
if (rc) {
@@ -3137,7 +3163,7 @@ index d2e81e4..0110402 100644
}
/* If there's an overflow page tail, write it too */
if (my->mc_olen[toggle]) {
-@@ -8852,39 +9695,41 @@ again:
+@@ -8852,39 +9700,41 @@ again:
}
my->mc_wlen[toggle] = 0;
toggle ^= 1;
@@ -3194,7 +3220,7 @@ index d2e81e4..0110402 100644
MDB_node *ni;
MDB_page *mo, *mp, *leaf;
char *buf, *ptr;
-@@ -8896,10 +9741,10 @@ mdb_env_cwalk(mdb_copy *my, pgno_t *pg, int flags)
+@@ -8896,10 +9746,10 @@ mdb_env_cwalk(mdb_copy *my, pgno_t *pg, int flags)
return MDB_SUCCESS;
mc.mc_snum = 1;
@@ -3208,7 +3234,7 @@ index d2e81e4..0110402 100644
if (rc)
return rc;
rc = mdb_page_search_root(&mc, NULL, MDB_PS_FIRST);
-@@ -8943,7 +9788,8 @@ mdb_env_cwalk(mdb_copy *my, pgno_t *pg, int flags)
+@@ -8943,7 +9793,8 @@ mdb_env_cwalk(mdb_copy *my, pgno_t *pg, int flags)
}
memcpy(&pg, NODEDATA(ni), sizeof(pg));
@@ -3218,7 +3244,7 @@ index d2e81e4..0110402 100644
if (rc)
goto done;
if (my->mc_wlen[toggle] >= MDB_WBUF) {
-@@ -8965,7 +9811,6 @@ mdb_env_cwalk(mdb_copy *my, pgno_t *pg, int flags)
+@@ -8965,7 +9816,6 @@ mdb_env_cwalk(mdb_copy *my, pgno_t *pg, int flags)
goto done;
toggle = my->mc_toggle;
}
@@ -3226,7 +3252,7 @@ index d2e81e4..0110402 100644
} else if (ni->mn_flags & F_SUBDATA) {
MDB_db db;
-@@ -8994,7 +9839,7 @@ mdb_env_cwalk(mdb_copy *my, pgno_t *pg, int flags)
+@@ -8994,7 +9844,7 @@ mdb_env_cwalk(mdb_copy *my, pgno_t *pg, int flags)
again:
ni = NODEPTR(mp, mc.mc_ki[mc.mc_top]);
pg = NODEPGNO(ni);
@@ -3235,7 +3261,7 @@ index d2e81e4..0110402 100644
if (rc)
goto done;
mc.mc_top++;
-@@ -9043,47 +9888,56 @@ mdb_env_copyfd1(MDB_env *env, HANDLE fd)
+@@ -9043,47 +9893,56 @@ mdb_env_copyfd1(MDB_env *env, HANDLE fd)
{
MDB_meta *mm;
MDB_page *mp;
@@ -3314,7 +3340,7 @@ index d2e81e4..0110402 100644
mp = (MDB_page *)my.mc_wbuf[0];
memset(mp, 0, NUM_METAS * env->me_psize);
-@@ -9099,57 +9953,64 @@ mdb_env_copyfd1(MDB_env *env, HANDLE fd)
+@@ -9099,57 +9958,64 @@ mdb_env_copyfd1(MDB_env *env, HANDLE fd)
*(MDB_meta *)METADATA(mp) = *mm;
mm = (MDB_meta *)METADATA(mp);
@@ -3409,7 +3435,7 @@ index d2e81e4..0110402 100644
}
/** Copy environment as-is. */
-@@ -9159,7 +10020,7 @@ mdb_env_copyfd0(MDB_env *env, HANDLE fd)
+@@ -9159,7 +10025,7 @@ mdb_env_copyfd0(MDB_env *env, HANDLE fd)
MDB_txn *txn = NULL;
mdb_mutexref_t wmutex = NULL;
int rc;
@@ -3418,7 +3444,7 @@ index d2e81e4..0110402 100644
char *ptr;
#ifdef _WIN32
DWORD len, w2;
-@@ -9220,7 +10081,7 @@ mdb_env_copyfd0(MDB_env *env, HANDLE fd)
+@@ -9220,7 +10086,7 @@ mdb_env_copyfd0(MDB_env *env, HANDLE fd)
w3 = txn->mt_next_pgno * env->me_psize;
{
@@ -3427,7 +3453,7 @@ index d2e81e4..0110402 100644
if ((rc = mdb_fsize(env->me_fd, &fsize)))
goto leave;
if (w3 > fsize)
-@@ -9659,11 +10520,19 @@ mdb_drop0(MDB_cursor *mc, int subs)
+@@ -9659,11 +10525,19 @@ mdb_drop0(MDB_cursor *mc, int subs)
/* DUPSORT sub-DBs have no ovpages/DBs. Omit scanning leaves.
* This also avoids any P_LEAF2 pages, which have no nodes.
@@ -3448,7 +3474,7 @@ index d2e81e4..0110402 100644
while (mc->mc_snum > 0) {
MDB_page *mp = mc->mc_pg[mc->mc_top];
unsigned n = NUMKEYS(mp);
-@@ -9674,7 +10543,7 @@ mdb_drop0(MDB_cursor *mc, int subs)
+@@ -9674,7 +10548,7 @@ mdb_drop0(MDB_cursor *mc, int subs)
MDB_page *omp;
pgno_t pg;
memcpy(&pg, NODEDATA(ni), sizeof(pg));
@@ -3457,7 +3483,7 @@ index d2e81e4..0110402 100644
if (rc != 0)
goto done;
mdb_cassert(mc, IS_OVERFLOW(omp));
-@@ -9682,6 +10551,9 @@ mdb_drop0(MDB_cursor *mc, int subs)
+@@ -9682,6 +10556,9 @@ mdb_drop0(MDB_cursor *mc, int subs)
pg, omp->mp_pages);
if (rc)
goto done;
@@ -3467,7 +3493,7 @@ index d2e81e4..0110402 100644
} else if (subs && (ni->mn_flags & F_SUBDATA)) {
mdb_xcursor_init1(mc, ni);
rc = mdb_drop0(&mc->mc_xcursor->mx_cursor, 0);
-@@ -9689,6 +10561,8 @@ mdb_drop0(MDB_cursor *mc, int subs)
+@@ -9689,6 +10566,8 @@ mdb_drop0(MDB_cursor *mc, int subs)
goto done;
}
}
@@ -3476,7 +3502,7 @@ index d2e81e4..0110402 100644
} else {
if ((rc = mdb_midl_need(&txn->mt_free_pgs, n)) != 0)
goto done;
-@@ -9710,6 +10584,7 @@ mdb_drop0(MDB_cursor *mc, int subs)
+@@ -9710,6 +10589,7 @@ mdb_drop0(MDB_cursor *mc, int subs)
/* no more siblings, go back to beginning
* of previous level.
*/
@@ -3484,7 +3510,7 @@ index d2e81e4..0110402 100644
mdb_cursor_pop(mc);
mc->mc_ki[0] = 0;
for (i=1; i<mc->mc_snum; i++) {
-@@ -9723,6 +10598,8 @@ mdb_drop0(MDB_cursor *mc, int subs)
+@@ -9723,6 +10603,8 @@ mdb_drop0(MDB_cursor *mc, int subs)
done:
if (rc)
txn->mt_flags |= MDB_TXN_ERROR;
@@ -3493,7 +3519,7 @@ index d2e81e4..0110402 100644
} else if (rc == MDB_NOTFOUND) {
rc = MDB_SUCCESS;
}
-@@ -9842,7 +10719,7 @@ mdb_reader_list(MDB_env *env, MDB_msg_func *func, void *ctx)
+@@ -9842,7 +10724,7 @@ mdb_reader_list(MDB_env *env, MDB_msg_func *func, void *ctx)
if (mr[i].mr_pid) {
txnid_t txnid = mr[i].mr_txnid;
sprintf(buf, txnid == (txnid_t)-1 ?
@@ -3502,7 +3528,7 @@ index d2e81e4..0110402 100644
(int)mr[i].mr_pid, (size_t)mr[i].mr_tid, txnid);
if (first) {
first = 0;
-@@ -9947,7 +10824,7 @@ mdb_reader_check0(MDB_env *env, int rlocked, int *dead)
+@@ -9947,7 +10829,7 @@ mdb_reader_check0(MDB_env *env, int rlocked, int *dead)
}
for (; j<rdrs; j++)
if (mr[j].mr_pid == pid) {
diff --git a/ports/mongo-cxx-driver/CONTROL b/ports/mongo-cxx-driver/CONTROL
index 41c958400..57c400bed 100644
--- a/ports/mongo-cxx-driver/CONTROL
+++ b/ports/mongo-cxx-driver/CONTROL
@@ -1,4 +1,4 @@
Source: mongo-cxx-driver
-Version: 3.0.3
+Version: 3.0.3-1
Build-Depends: boost,libbson,mongo-c-driver
Description: MongoDB C++ Driver. \ No newline at end of file
diff --git a/ports/mongo-cxx-driver/portfile.cmake b/ports/mongo-cxx-driver/portfile.cmake
index 137088109..4b04af054 100644
--- a/ports/mongo-cxx-driver/portfile.cmake
+++ b/ports/mongo-cxx-driver/portfile.cmake
@@ -53,7 +53,7 @@ file(REMOVE_RECURSE
${CURRENT_PACKAGES_DIR}/include/mongocxx/test_util
${CURRENT_PACKAGES_DIR}/include/mongocxx/private
${CURRENT_PACKAGES_DIR}/include/mongocxx/exception/private
- ${CURRENT_PACKAGES_DIR}/include/mongocxx/options
+ ${CURRENT_PACKAGES_DIR}/include/mongocxx/options/private
${CURRENT_PACKAGES_DIR}/debug/include)
diff --git a/ports/mpg123/portfile.cmake b/ports/mpg123/portfile.cmake
index 0308bb17e..76b69c48b 100644
--- a/ports/mpg123/portfile.cmake
+++ b/ports/mpg123/portfile.cmake
@@ -13,7 +13,7 @@ vcpkg_extract_source_archive(${ARCHIVE})
vcpkg_find_acquire_program(YASM)
get_filename_component(YASM_EXE_PATH ${YASM} DIRECTORY)
-set(ENV{PATH} "${YASM_EXE_PATH};$ENV{PATH}")
+set(ENV{PATH} "$ENV{PATH};${YASM_EXE_PATH}")
vcpkg_apply_patches(
SOURCE_PATH ${SOURCE_PATH}
diff --git a/ports/msmpi/CONTROL b/ports/msmpi/CONTROL
new file mode 100644
index 000000000..44752712a
--- /dev/null
+++ b/ports/msmpi/CONTROL
@@ -0,0 +1,3 @@
+Source: msmpi
+Version: 8.0
+Description: Microsoft MPI
diff --git a/ports/msmpi/portfile.cmake b/ports/msmpi/portfile.cmake
new file mode 100644
index 000000000..faf012396
--- /dev/null
+++ b/ports/msmpi/portfile.cmake
@@ -0,0 +1,117 @@
+include(vcpkg_common_functions)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/msmpi-8.0)
+
+vcpkg_download_distfile(SDK_ARCHIVE
+ URLS "https://download.microsoft.com/download/B/2/E/B2EB83FE-98C2-4156-834A-E1711E6884FB/msmpisdk.msi"
+ FILENAME "msmpisdk-8.0.msi"
+ SHA512 49c762873ba777ccb3c959a1d2ca1392e4c3c8d366e604ad707184ea432302e6649894ec6599162d0d40f3e6ebc0dada1eb9ca0da1cde0f6ba7a9b1847dac8c0
+)
+
+### Check for correct version of installed redistributable package
+
+# We always want the ProgramFiles folder even on a 64-bit machine (not the ProgramFilesx86 folder)
+vcpkg_get_program_files_platform_bitness(PROGRAM_FILES_PLATFORM_BITNESS)
+set(SYSTEM_MPIEXEC_FILEPATH "${PROGRAM_FILES_PLATFORM_BITNESS}/Microsoft MPI/Bin/mpiexec.exe")
+set(MSMPI_EXPECTED_FULL_VERSION "8.0.12438.0")
+
+if(EXISTS ${SYSTEM_MPIEXEC_FILEPATH})
+ set(MPIEXEC_VERSION_LOGNAME "mpiexec-version")
+ vcpkg_execute_required_process(
+ COMMAND ${SYSTEM_MPIEXEC_FILEPATH}
+ WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}
+ LOGNAME ${MPIEXEC_VERSION_LOGNAME}
+ )
+ file(READ ${CURRENT_BUILDTREES_DIR}/${MPIEXEC_VERSION_LOGNAME}-out.log MPIEXEC_OUTPUT)
+
+ if(${MPIEXEC_OUTPUT} MATCHES "\\[Version ([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)\\]")
+ if(NOT ${CMAKE_MATCH_1} STREQUAL ${MSMPI_EXPECTED_FULL_VERSION})
+ message(FATAL_ERROR
+ " The version of the installed MSMPI redistributable packages does not match the version to be installed\n"
+ " Expected version: ${MSMPI_EXPECTED_FULL_VERSION}\n"
+ " Found version: ${CMAKE_MATCH_1}\n")
+ endif()
+ else()
+ message(FATAL_ERROR
+ " Could not determine installed MSMPI redistributable package version.\n"
+ " See logs for more information:\n"
+ " ${CURRENT_BUILDTREES_DIR}\\${MPIEXEC_VERSION_LOGNAME}-out.log\n"
+ " ${CURRENT_BUILDTREES_DIR}\\${MPIEXEC_VERSION_LOGNAME}-err.log\n")
+ endif()
+else()
+ vcpkg_download_distfile(REDIST_ARCHIVE
+ URLS "https://download.microsoft.com/download/B/2/E/B2EB83FE-98C2-4156-834A-E1711E6884FB/MSMpiSetup.exe"
+ FILENAME "MSMpiSetup-8.0.exe"
+ SHA512 f5271255817f5417de8e432cd21e5ff3c617911a30b7777560c0ceb6f4031ace5fa88fc7675759ae0964bcf4e2076fe367a06c129f3a9ad06871a08bf95ed68b
+ )
+
+ message(FATAL_ERROR
+ " Could not find:\n"
+ " ${SYSTEM_MPIEXEC_FILEPATH}\n"
+ " Please install the MSMPI redistributable package before trying to install this port.\n"
+ " The appropriate installer has been downloaded to:\n"
+ " ${REDIST_ARCHIVE}\n")
+endif()
+
+file(TO_NATIVE_PATH "${SDK_ARCHIVE}" SDK_ARCHIVE)
+file(TO_NATIVE_PATH "${SOURCE_PATH}/sdk" SDK_SOURCE_DIR)
+
+vcpkg_execute_required_process(
+ COMMAND msiexec /a ${SDK_ARCHIVE} /qn TARGETDIR=${SDK_SOURCE_DIR}
+ WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}
+ LOGNAME extract-sdk
+)
+
+set(SOURCE_INCLUDE_PATH "${SOURCE_PATH}/sdk/PFiles/Microsoft SDKs/MPI/Include")
+set(SOURCE_LIB_PATH "${SOURCE_PATH}/sdk/PFiles/Microsoft SDKs/MPI/Lib")
+
+# Install include files
+file(INSTALL
+ "${SOURCE_INCLUDE_PATH}/mpi.h"
+ "${SOURCE_INCLUDE_PATH}/mpif.h"
+ "${SOURCE_INCLUDE_PATH}/mpi.f90"
+ "${SOURCE_INCLUDE_PATH}/mpio.h"
+ "${SOURCE_INCLUDE_PATH}/mspms.h"
+ "${SOURCE_INCLUDE_PATH}/pmidbg.h"
+ "${SOURCE_INCLUDE_PATH}/${TRIPLET_SYSTEM_ARCH}/mpifptr.h"
+ DESTINATION
+ ${CURRENT_PACKAGES_DIR}/include
+)
+
+# Install release libraries
+file(INSTALL
+ "${SOURCE_LIB_PATH}/${TRIPLET_SYSTEM_ARCH}/msmpi.lib"
+ "${SOURCE_LIB_PATH}/${TRIPLET_SYSTEM_ARCH}/msmpifec.lib"
+ "${SOURCE_LIB_PATH}/${TRIPLET_SYSTEM_ARCH}/msmpifmc.lib"
+ DESTINATION
+ ${CURRENT_PACKAGES_DIR}/lib
+)
+if(${TRIPLET_SYSTEM_ARCH} STREQUAL "x86")
+ file(INSTALL
+ "${SOURCE_LIB_PATH}/${TRIPLET_SYSTEM_ARCH}/msmpifes.lib"
+ "${SOURCE_LIB_PATH}/${TRIPLET_SYSTEM_ARCH}/msmpifms.lib"
+ DESTINATION
+ ${CURRENT_PACKAGES_DIR}/lib
+ )
+endif()
+
+# Install debug libraries
+# NOTE: since the binary distribution does not include any debug libraries we simply install the release libraries
+file(INSTALL
+ "${SOURCE_LIB_PATH}/${TRIPLET_SYSTEM_ARCH}/msmpi.lib"
+ "${SOURCE_LIB_PATH}/${TRIPLET_SYSTEM_ARCH}/msmpifec.lib"
+ "${SOURCE_LIB_PATH}/${TRIPLET_SYSTEM_ARCH}/msmpifmc.lib"
+ DESTINATION
+ ${CURRENT_PACKAGES_DIR}/debug/lib
+)
+if(${TRIPLET_SYSTEM_ARCH} STREQUAL "x86")
+ file(INSTALL
+ "${SOURCE_LIB_PATH}/${TRIPLET_SYSTEM_ARCH}/msmpifes.lib"
+ "${SOURCE_LIB_PATH}/${TRIPLET_SYSTEM_ARCH}/msmpifms.lib"
+ DESTINATION
+ ${CURRENT_PACKAGES_DIR}/debug/lib
+ )
+endif()
+
+# Handle copyright
+file(COPY "${SOURCE_PATH}/sdk/PFiles/Microsoft SDKs/MPI/License/license_sdk.rtf" DESTINATION ${CURRENT_PACKAGES_DIR}/share/msmpi)
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/msmpi/copyright "See the accompanying license_sdk.rtf")
diff --git a/ports/opencv/CONTROL b/ports/opencv/CONTROL
index 74cf1d3bc..0c9766079 100644
--- a/ports/opencv/CONTROL
+++ b/ports/opencv/CONTROL
@@ -1,4 +1,4 @@
Source: opencv
-Version: 3.1.0-1
+Version: 3.2.0
Build-Depends: zlib, libpng, libjpeg-turbo, tiff
Description: computer vision library
diff --git a/ports/opencv/opencv-installation-options.patch b/ports/opencv/opencv-installation-options.patch
index 580334634..cfb401836 100644
--- a/ports/opencv/opencv-installation-options.patch
+++ b/ports/opencv/opencv-installation-options.patch
@@ -1,8 +1,8 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 3ee50ff..64b0405 100644
+index cc45f6f..b4265bd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -250,6 +250,10 @@ OCV_OPTION(INSTALL_PYTHON_EXAMPLES "Install Python examples" OFF )
+@@ -263,6 +263,10 @@ OCV_OPTION(INSTALL_PYTHON_EXAMPLES "Install Python examples" OFF )
OCV_OPTION(INSTALL_ANDROID_EXAMPLES "Install Android examples" OFF IF ANDROID )
OCV_OPTION(INSTALL_TO_MANGLED_PATHS "Enables mangled install paths, that help with side by side installs." OFF IF (UNIX AND NOT ANDROID AND NOT APPLE_FRAMEWORK AND BUILD_SHARED_LIBS) )
OCV_OPTION(INSTALL_TESTS "Install accuracy and performance test binaries and test data" OFF)
@@ -13,36 +13,18 @@ index 3ee50ff..64b0405 100644
# OpenCV build options
# ===================================================
-@@ -315,7 +319,9 @@ else()
+@@ -330,7 +334,9 @@ else()
endif()
if(WIN32 AND CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
- if(DEFINED OpenCV_RUNTIME AND DEFINED OpenCV_ARCH)
+ if(DEFINED OpenCV_DISABLE_ARCH_PATH)
-+ set(OpenCV_INSTALL_BINARIES_PREFIX "")
++ ocv_update(OpenCV_INSTALL_BINARIES_PREFIX "")
+ elseif(DEFINED OpenCV_RUNTIME AND DEFINED OpenCV_ARCH)
- set(OpenCV_INSTALL_BINARIES_PREFIX "${OpenCV_ARCH}/${OpenCV_RUNTIME}/")
+ ocv_update(OpenCV_INSTALL_BINARIES_PREFIX "${OpenCV_ARCH}/${OpenCV_RUNTIME}/")
else()
message(STATUS "Can't detect runtime and/or arch")
-@@ -379,7 +385,7 @@ else()
- set(OPENCV_3P_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib${LIB_SUFFIX}")
- set(OPENCV_SAMPLES_SRC_INSTALL_PATH samples/native)
- set(OPENCV_JAR_INSTALL_PATH java)
-- set(OPENCV_OTHER_INSTALL_PATH etc)
-+ set(OPENCV_OTHER_INSTALL_PATH etc CACHE STRING "")
- else()
- set(OPENCV_LIB_INSTALL_PATH lib${LIB_SUFFIX})
- set(OPENCV_3P_LIB_INSTALL_PATH share/OpenCV/3rdparty/${OPENCV_LIB_INSTALL_PATH})
-@@ -393,7 +399,7 @@ else()
- if(LIB_SUFFIX AND NOT SIZEOF_VOID_P_BITS EQUAL LIB_SUFFIX)
- set(OPENCV_CONFIG_INSTALL_PATH lib${LIB_SUFFIX}/cmake/opencv)
- else()
-- set(OPENCV_CONFIG_INSTALL_PATH share/OpenCV)
-+ set(OPENCV_CONFIG_INSTALL_PATH share/OpenCV CACHE STRING "")
- endif()
- endif()
-
-@@ -734,7 +740,7 @@ if(NOT OPENCV_LICENSE_FILE)
+@@ -784,7 +790,7 @@ if(NOT OPENCV_LICENSE_FILE)
endif()
# for UNIX it does not make sense as LICENSE and readme will be part of the package automatically
@@ -50,29 +32,29 @@ index 3ee50ff..64b0405 100644
+if(ANDROID OR NOT UNIX AND INSTALL_LICENSE)
install(FILES ${OPENCV_LICENSE_FILE}
PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
- DESTINATION ${CMAKE_INSTALL_PREFIX} COMPONENT libs)
+ DESTINATION ./ COMPONENT libs)
diff --git a/cmake/OpenCVGenConfig.cmake b/cmake/OpenCVGenConfig.cmake
-index dbfd7ca..8bfa448 100644
+index 206acfd..b4c223e 100644
--- a/cmake/OpenCVGenConfig.cmake
+++ b/cmake/OpenCVGenConfig.cmake
-@@ -103,7 +103,7 @@ set(OpenCV_INCLUDE_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_INCLUDE_
- set(OpenCV2_INCLUDE_DIRS_CONFIGCMAKE "\"\"")
- set(OpenCV_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_3P_LIB_INSTALL_PATH}\"")
+@@ -91,7 +91,7 @@ function(ocv_gen_config TMP_DIR NESTED_PATH ROOT_NAME)
+ endif()
+ endfunction()
--if(UNIX) # ANDROID configuration is created here also
-+if(UNIX OR INSTALL_FORCE_UNIX_PATHS) # ANDROID configuration is created here also
- #http://www.vtk.org/Wiki/CMake/Tutorials/Packaging reference
- # For a command "find_package(<name> [major[.minor]] [EXACT] [REQUIRED|QUIET])"
- # cmake will look in the following dir on unix:
-@@ -127,7 +127,7 @@ endif()
+-if(UNIX AND NOT ANDROID)
++if((UNIX AND NOT ANDROID) OR INSTALL_FORCE_UNIX_PATHS)
+ ocv_gen_config("${CMAKE_BINARY_DIR}/unix-install" "" "")
+ endif()
+
+@@ -103,7 +103,7 @@ endif()
# --------------------------------------------------------------------------------------------
# Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake -> For use within binary installers/packages
# --------------------------------------------------------------------------------------------
-if(WIN32)
+if(WIN32 AND NOT INSTALL_FORCE_UNIX_PATHS)
- set(OpenCV_INCLUDE_DIRS_CONFIGCMAKE "\"\${OpenCV_CONFIG_PATH}/include\" \"\${OpenCV_CONFIG_PATH}/include/opencv\"")
- set(OpenCV2_INCLUDE_DIRS_CONFIGCMAKE "\"\"")
-
+ if(CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
+ if(BUILD_SHARED_LIBS)
+ set(_lib_suffix "lib")
diff --git a/cmake/OpenCVGenHeaders.cmake b/cmake/OpenCVGenHeaders.cmake
index 2988979..810871b 100644
--- a/cmake/OpenCVGenHeaders.cmake
@@ -97,10 +79,10 @@ index 2988979..810871b 100644
+ install(FILES "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/opencv2/opencv_modules.hpp" DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2 COMPONENT dev)
+endif()
diff --git a/cmake/OpenCVModule.cmake b/cmake/OpenCVModule.cmake
-index 3385385..530e53f 100644
+index 742a287..c8242dd 100644
--- a/cmake/OpenCVModule.cmake
+++ b/cmake/OpenCVModule.cmake
-@@ -879,7 +879,9 @@ macro(_ocv_create_module)
+@@ -880,7 +880,9 @@ macro(_ocv_create_module)
foreach(hdr ${OPENCV_MODULE_${m}_HEADERS})
string(REGEX REPLACE "^.*opencv2/" "opencv2/" hdr2 "${hdr}")
if(NOT hdr2 MATCHES "opencv2/${m}/private.*" AND hdr2 MATCHES "^(opencv2/?.*)/[^/]+.h(..)?$" )
@@ -111,19 +93,6 @@ index 3385385..530e53f 100644
endif()
endforeach()
endif()
-diff --git a/cmake/templates/OpenCVConfig.cmake.in b/cmake/templates/OpenCVConfig.cmake.in
-index 80ffbaf..0585c9f 100644
---- a/cmake/templates/OpenCVConfig.cmake.in
-+++ b/cmake/templates/OpenCVConfig.cmake.in
-@@ -112,7 +112,7 @@ set(OpenCV_USE_MANGLED_PATHS @OpenCV_USE_MANGLED_PATHS_CONFIGCMAKE@)
- # Extract the directory where *this* file has been installed (determined at cmake run-time)
- get_filename_component(OpenCV_CONFIG_PATH "${CMAKE_CURRENT_LIST_FILE}" PATH CACHE)
-
--if(NOT WIN32 OR ANDROID)
-+if(NOT WIN32 OR ANDROID OR "@INSTALL_FORCE_UNIX_PATHS@")
- if(ANDROID)
- set(OpenCV_INSTALL_PATH "${OpenCV_CONFIG_PATH}/../../..")
- else()
diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt
index 1f0d720..86b9d89 100644
--- a/data/CMakeLists.txt
@@ -142,19 +111,27 @@ index 1f0d720..86b9d89 100644
if(INSTALL_TESTS AND OPENCV_TEST_DATA_PATH)
install(DIRECTORY "${OPENCV_TEST_DATA_PATH}/" DESTINATION "${OPENCV_TEST_DATA_INSTALL_PATH}" COMPONENT "tests")
diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
-index b4e48e6..6ea20d6 100644
+index b4e48e6..d5ed455 100644
--- a/include/CMakeLists.txt
+++ b/include/CMakeLists.txt
@@ -1,7 +1,9 @@
-file(GLOB old_hdrs "opencv/*.h*")
-install(FILES ${old_hdrs}
-+if(INSTALL_HEADERS)
-+ file(GLOB old_hdrs "opencv/*.h*")
-+ install(FILES ${old_hdrs}
- DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv
- COMPONENT dev)
+- DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv
+- COMPONENT dev)
-install(FILES "opencv2/opencv.hpp"
-+ install(FILES "opencv2/opencv.hpp"
- DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2
- COMPONENT dev)
+- DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2
+- COMPONENT dev)
++if(INSTALL_HEADERS)
++ file(GLOB old_hdrs "opencv/*.h*")
++ install(FILES ${old_hdrs}
++ DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv
++ COMPONENT dev)
++ install(FILES "opencv2/opencv.hpp"
++ DESTINATION ${OPENCV_INCLUDE_INSTALL_PATH}/opencv2
++ COMPONENT dev)
+endif()
+\ No newline at end of file
+--
+2.9.0.windows.1
+
diff --git a/ports/opencv/portfile.cmake b/ports/opencv/portfile.cmake
index 224c99c42..6614fbb1a 100644
--- a/ports/opencv/portfile.cmake
+++ b/ports/opencv/portfile.cmake
@@ -3,11 +3,11 @@ if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
set(VCPKG_LIBRARY_LINKAGE dynamic)
endif()
include(vcpkg_common_functions)
-set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/opencv-92387b1ef8fad15196dd5f7fb4931444a68bc93a)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/opencv-3.2.0)
vcpkg_download_distfile(ARCHIVE
- URLS "https://github.com/opencv/opencv/archive/92387b1ef8fad15196dd5f7fb4931444a68bc93a.zip"
- FILENAME "opencv-92387b1ef8fad15196dd5f7fb4931444a68bc93a.zip"
- SHA512 b95fa1a5bce0ea9e9bd43173b904e5d779a2f640f4f8dbb36a12df462e8e4cdce3ff94b2fbd85cb96ddf338019f9888e9e7410c468c81b1de98d9c1da945a7eb
+ URLS "https://github.com/opencv/opencv/archive/3.2.0.zip"
+ FILENAME "opencv-3.2.0.zip"
+ SHA512 c6418d2a7654fe9d50611e756778df4c6736f2de76b85773efbf490bb475dd95ec1041fe57a87163ce11a7db44430cd378c8416af3319f979ced92532bf5ebb5
)
vcpkg_extract_source_archive(${ARCHIVE})
@@ -24,7 +24,6 @@ vcpkg_configure_cmake(
-DBUILD_TIFF=OFF
-DBUILD_JPEG=OFF
-DBUILD_PNG=OFF
- -DINSTALL_CREATE_DISTRIB=ON
-DBUILD_opencv_python2=OFF
-DBUILD_opencv_python3=OFF
-DBUILD_opencv_apps=OFF
diff --git a/ports/openssl/portfile-uwp.cmake b/ports/openssl/portfile-uwp.cmake
index 289c549fc..cf2f1e7ca 100644
--- a/ports/openssl/portfile-uwp.cmake
+++ b/ports/openssl/portfile-uwp.cmake
@@ -30,7 +30,7 @@ set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/openssl-OpenSSL_1_0_2k_WinRT)
vcpkg_find_acquire_program(PERL)
get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY)
-set(ENV{PATH} "${PERL_EXE_PATH};$ENV{PATH}")
+set(ENV{PATH} "$ENV{PATH};${PERL_EXE_PATH}")
vcpkg_download_distfile(ARCHIVE
URLS "https://github.com/Microsoft/openssl/archive/OpenSSL_1_0_2k_WinRT.zip"
diff --git a/ports/openssl/portfile.cmake b/ports/openssl/portfile.cmake
index b13258119..042278943 100644
--- a/ports/openssl/portfile.cmake
+++ b/ports/openssl/portfile.cmake
@@ -10,7 +10,7 @@ vcpkg_find_acquire_program(PERL)
find_program(NMAKE nmake)
get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY)
-set(ENV{PATH} "${PERL_EXE_PATH};$ENV{PATH}")
+set(ENV{PATH} "$ENV{PATH};${PERL_EXE_PATH}")
vcpkg_download_distfile(OPENSSL_SOURCE_ARCHIVE
URLS "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz"
diff --git a/ports/openvr/CONTROL b/ports/openvr/CONTROL
new file mode 100644
index 000000000..2a2228ba2
--- /dev/null
+++ b/ports/openvr/CONTROL
@@ -0,0 +1,3 @@
+Source: openvr
+Version: 1.0.5
+Description: an API and runtime that allows access to VR hardware from multiple vendors without requiring that applications have specific knowledge of the hardware they are targeting.
diff --git a/ports/openvr/portfile.cmake b/ports/openvr/portfile.cmake
new file mode 100644
index 000000000..94e90143d
--- /dev/null
+++ b/ports/openvr/portfile.cmake
@@ -0,0 +1,54 @@
+# Common Ambient Variables:
+# VCPKG_ROOT_DIR = <C:\path\to\current\vcpkg>
+# TARGET_TRIPLET is the current triplet (x86-windows, etc)
+# PORT is the current port name (zlib, etc)
+# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
+# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
+#
+
+include(vcpkg_common_functions)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/openvr-1.0.5)
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://github.com/ValveSoftware/openvr/archive/v1.0.5.zip"
+ FILENAME "openvr-v1.0.5.zip"
+ SHA512 18c2e3f7a8754d0e9389c953d0af70788c77adf43f51d25b6664beaeb407dc8d2daa755396c45ce2b4be1b08d333b378810dbebdf3c9bb5f5a03a9d372dc97b0
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+set(VCPKG_LIBRARY_LINKAGE dynamic)
+
+if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ set(ARCH_PATH "win64")
+elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
+ set(ARCH_PATH "win32")
+else()
+ message(FATAL_ERROR "Package only supports x64 and x86 windows.")
+endif()
+
+if(VCPKG_CMAKE_SYSTEM_NAME)
+ message(FATAL_ERROR "Package only supports windows desktop.")
+endif()
+
+file(MAKE_DIRECTORY
+ ${CURRENT_PACKAGES_DIR}/lib
+ ${CURRENT_PACKAGES_DIR}/bin
+ ${CURRENT_PACKAGES_DIR}/debug/lib
+ ${CURRENT_PACKAGES_DIR}/debug/bin
+)
+file(COPY ${SOURCE_PATH}/lib/${ARCH_PATH}/openvr_api.lib DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
+file(COPY ${SOURCE_PATH}/lib/${ARCH_PATH}/openvr_api.lib DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib)
+file(COPY
+ ${SOURCE_PATH}/bin/${ARCH_PATH}/openvr_api.dll
+ ${SOURCE_PATH}/bin/${ARCH_PATH}/openvr_api.pdb
+ DESTINATION ${CURRENT_PACKAGES_DIR}/bin
+)
+file(COPY
+ ${SOURCE_PATH}/bin/${ARCH_PATH}/openvr_api.dll
+ ${SOURCE_PATH}/bin/${ARCH_PATH}/openvr_api.pdb
+ DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin
+)
+file(COPY ${SOURCE_PATH}/headers DESTINATION ${CURRENT_PACKAGES_DIR})
+file(RENAME ${CURRENT_PACKAGES_DIR}/headers ${CURRENT_PACKAGES_DIR}/include)
+
+file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/openvr)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/openvr/LICENSE ${CURRENT_PACKAGES_DIR}/share/openvr/copyright)
diff --git a/ports/parmetis/CONTROL b/ports/parmetis/CONTROL
new file mode 100644
index 000000000..86a367cbd
--- /dev/null
+++ b/ports/parmetis/CONTROL
@@ -0,0 +1,4 @@
+Source: parmetis
+Version: 4.0.3
+Description: Parallel Graph Partitioning and Fill-reducing Matrix Ordering
+Build-Depends: metis, msmpi
diff --git a/ports/parmetis/fix-gklib-vs14-math.patch b/ports/parmetis/fix-gklib-vs14-math.patch
new file mode 100644
index 000000000..059890e36
--- /dev/null
+++ b/ports/parmetis/fix-gklib-vs14-math.patch
@@ -0,0 +1,11 @@
+--- a/metis/GKlib/gk_arch.h Wed Dec 21 18:34:18 2016
++++ b/metis/GKlib/gk_arch.h Wed Dec 21 18:30:49 2016
+@@ -58,7 +58,7 @@
+ #define PTRDIFF_MAX INT64_MAX
+ #endif
+
+-#ifdef __MSC__
++#if defined(__MSC__) && (_MSC_VER < 1900)
+ /* MSC does not have rint() function */
+ #define rint(x) ((int)((x)+0.5))
+
diff --git a/ports/parmetis/fix-libparmetis-cmakelist.patch b/ports/parmetis/fix-libparmetis-cmakelist.patch
new file mode 100644
index 000000000..6cdd7be62
--- /dev/null
+++ b/ports/parmetis/fix-libparmetis-cmakelist.patch
@@ -0,0 +1,15 @@
+--- a/libparmetis/CMakeLists.txt Sat Mar 30 17:24:50 2013
++++ b/libparmetis/CMakeLists.txt Wed Dec 21 19:40:28 2016
+@@ -5,10 +5,10 @@
+ # Create libparmetis
+ add_library(parmetis ${ParMETIS_LIBRARY_TYPE} ${parmetis_sources})
+ # Link with metis and MPI libraries.
+-target_link_libraries(parmetis metis ${MPI_LIBRARIES})
++target_link_libraries(parmetis ${METIS_LIBRARY} ${MPI_LIBRARIES})
+ set_target_properties(parmetis PROPERTIES LINK_FLAGS "${MPI_LINK_FLAGS}")
+
+ install(TARGETS parmetis
+ LIBRARY DESTINATION lib
+- RUNTIME DESTINATION lib
++ RUNTIME DESTINATION bin
+ ARCHIVE DESTINATION lib)
diff --git a/ports/parmetis/fix-metis-vs14-math.patch b/ports/parmetis/fix-metis-vs14-math.patch
new file mode 100644
index 000000000..ddf10052a
--- /dev/null
+++ b/ports/parmetis/fix-metis-vs14-math.patch
@@ -0,0 +1,11 @@
+--- a/metis/libmetis/metislib.h Sat Mar 30 17:24:45 2013
++++ b/metis/libmetis/metislib.h Wed Dec 21 18:30:59 2016
+@@ -31,7 +31,7 @@
+ #include <proto.h>
+
+
+-#if defined(COMPILER_MSC)
++#if defined(COMPILER_MSC) && (_MSC_VER < 1900)
+ #if defined(rint)
+ #undef rint
+ #endif
diff --git a/ports/parmetis/fix-root-cmakelist.patch b/ports/parmetis/fix-root-cmakelist.patch
new file mode 100644
index 000000000..914bf9189
--- /dev/null
+++ b/ports/parmetis/fix-root-cmakelist.patch
@@ -0,0 +1,29 @@
+--- a/CMakeLists.txt Sat Mar 30 17:24:50 2013
++++ b/CMakeLists.txt Wed Dec 21 19:38:12 2016
+@@ -16,6 +16,9 @@
+ # endif()
+ # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${MPI_COMPILE_FLAGS}")
+
++find_package(MPI REQUIRED)
++find_library(METIS_LIBRARY NAMES metis)
++
+ # Prepare libraries.
+ if(SHARED)
+ set(ParMETIS_LIBRARY_TYPE SHARED)
+@@ -30,13 +33,13 @@
+ include_directories(include)
+ include_directories(${MPI_INCLUDE_PATH})
+ include_directories(${GKLIB_PATH})
+-include_directories(${METIS_PATH}/include)
++# include_directories(${METIS_PATH}/include)
+
+ # List of directories that cmake will look for CMakeLists.txt
+-add_subdirectory(${METIS_PATH}/libmetis ${CMAKE_BINARY_DIR}/libmetis)
++# add_subdirectory(${METIS_PATH}/libmetis ${CMAKE_BINARY_DIR}/libmetis)
+ add_subdirectory(include)
+ add_subdirectory(libparmetis)
+-add_subdirectory(programs)
++# add_subdirectory(programs)
+
+ # This is for testing during development and is not being distributed
+ #add_subdirectory(test)
diff --git a/ports/parmetis/portfile.cmake b/ports/parmetis/portfile.cmake
new file mode 100644
index 000000000..c6022ad47
--- /dev/null
+++ b/ports/parmetis/portfile.cmake
@@ -0,0 +1,46 @@
+# Common Ambient Variables:
+# VCPKG_ROOT_DIR = <C:\path\to\current\vcpkg>
+# TARGET_TRIPLET is the current triplet (x86-windows, etc)
+# PORT is the current port name (zlib, etc)
+# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
+# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
+#
+
+include(vcpkg_common_functions)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/parmetis-4.0.3)
+vcpkg_download_distfile(ARCHIVE
+ URLS "http://glaros.dtc.umn.edu/gkhome/fetch/sw/parmetis/parmetis-4.0.3.tar.gz"
+ FILENAME "parmetis-4.0.3.tar.gz"
+ SHA512 454a91921ca35c981df11c9846a11963ff8fd8407a25179453af33f8fe69493f6dd7f2a0b8feed9a7d3f121e45b715749dd7a94873eaac2bae4cad1e535ca132
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES
+ ${CMAKE_CURRENT_LIST_DIR}/fix-metis-vs14-math.patch
+ ${CMAKE_CURRENT_LIST_DIR}/fix-gklib-vs14-math.patch
+ ${CMAKE_CURRENT_LIST_DIR}/fix-root-cmakelist.patch
+ ${CMAKE_CURRENT_LIST_DIR}/fix-libparmetis-cmakelist.patch
+)
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
+ set(ADDITIONAL_OPTIONS -DSHARED=ON -DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON)
+else()
+ set(ADDITIONAL_OPTIONS -DSHARED=OFF)
+endif()
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ OPTIONS
+ ${ADDITIONAL_OPTIONS}
+)
+
+vcpkg_install_cmake()
+vcpkg_copy_pdbs()
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+
+# Handle copyright
+file(COPY ${SOURCE_PATH}/LICENSE.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/parmetis)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/parmetis/LICENSE.txt ${CURRENT_PACKAGES_DIR}/share/parmetis/copyright)
diff --git a/ports/protobuf/CONTROL b/ports/protobuf/CONTROL
index 795213a33..95e7e367c 100644
--- a/ports/protobuf/CONTROL
+++ b/ports/protobuf/CONTROL
@@ -1,4 +1,4 @@
Source: protobuf
-Version: 3.0.2
+Version: 3.2.0
Build-Depends: zlib
Description: Protocol Buffers - Google's data interchange format \ No newline at end of file
diff --git a/ports/protobuf/portfile.cmake b/ports/protobuf/portfile.cmake
index 5853c1e4a..2d7cecf65 100644
--- a/ports/protobuf/portfile.cmake
+++ b/ports/protobuf/portfile.cmake
@@ -1,20 +1,20 @@
#tool
include(vcpkg_common_functions)
vcpkg_download_distfile(ARCHIVE_FILE
- URLS "https://github.com/google/protobuf/releases/download/v3.0.2/protobuf-cpp-3.0.2.tar.gz"
- FILENAME "protobuf-cpp-3.0.2.tar.gz"
- SHA512 5c99fa5d20815f9333a1e30d4da7621375e179abab6e4369ef0827b6ea6a679afbfec445dda21a72b4ab11e1bdd72c0f17a4e86b153ea8e2d3298dc3bcfcd643
+ URLS "https://github.com/google/protobuf/releases/download/v3.2.0/protobuf-cpp-3.2.0.tar.gz"
+ FILENAME "protobuf-cpp-3.2.0.tar.gz"
+ SHA512 dd005f5e862ff24bb233b9eaed1d7f44c42f1cc8c647c0839fe2ecc2d91178845195d79776cfa2e31d224c16eed11b05ad824b66b743e685334057d8180f17aa
)
vcpkg_download_distfile(TOOL_ARCHIVE_FILE
- URLS "https://github.com/google/protobuf/releases/download/v3.0.2/protoc-3.0.2-win32.zip"
- FILENAME "protoc-3.0.2-win32.zip"
- SHA512 51c67bd8bdc35810da70786d873935814679c58b74e653923671bdf06b8b69a1c9a0793d090b17d25e91ddafff1726bcfcdd243373dd47c4aeb9ea83fbabaeb0
+ URLS "https://github.com/google/protobuf/releases/download/v3.2.0/protoc-3.2.0-win32.zip"
+ FILENAME "protoc-3.2.0-win32.zip"
+ SHA512 985c86a04cebacfba96f3985d1b3d6ef341470171b809c6f6362bc13a07a3df9c8962d912857bb764bf8634cf676c5f8453c43b4e0a6398f2ff314708975d1e4
)
vcpkg_extract_source_archive(${ARCHIVE_FILE})
-vcpkg_extract_source_archive(${TOOL_ARCHIVE_FILE} ${CURRENT_BUILDTREES_DIR}/src/protobuf-3.0.2-win32)
+vcpkg_extract_source_archive(${TOOL_ARCHIVE_FILE} ${CURRENT_BUILDTREES_DIR}/src/protobuf-3.2.0-win32)
vcpkg_configure_cmake(
- SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/protobuf-3.0.2/cmake
+ SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/protobuf-3.2.0/cmake
OPTIONS
-Dprotobuf_BUILD_SHARED_LIBS=OFF
-Dprotobuf_MSVC_STATIC_RUNTIME=OFF
@@ -52,6 +52,6 @@ protobuf_try_remove_recurse_wait(${CURRENT_PACKAGES_DIR}/debug/share)
protobuf_try_remove_recurse_wait(${CURRENT_PACKAGES_DIR}/bin)
protobuf_try_remove_recurse_wait(${CURRENT_PACKAGES_DIR}/debug/bin)
-file(INSTALL ${CURRENT_BUILDTREES_DIR}/src/protobuf-3.0.2/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/protobuf RENAME copyright)
-file(INSTALL ${CURRENT_BUILDTREES_DIR}/src/protobuf-3.0.2-win32/bin/protoc.exe DESTINATION ${CURRENT_PACKAGES_DIR}/tools)
+file(INSTALL ${CURRENT_BUILDTREES_DIR}/src/protobuf-3.2.0/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/protobuf RENAME copyright)
+file(INSTALL ${CURRENT_BUILDTREES_DIR}/src/protobuf-3.2.0-win32/bin/protoc.exe DESTINATION ${CURRENT_PACKAGES_DIR}/tools)
vcpkg_copy_pdbs()
diff --git a/ports/qca/portfile.cmake b/ports/qca/portfile.cmake
index 072c4b7cb..6ad35d1f7 100644
--- a/ports/qca/portfile.cmake
+++ b/ports/qca/portfile.cmake
@@ -15,7 +15,7 @@ include(vcpkg_common_functions)
find_program(GIT git)
vcpkg_find_acquire_program(PERL)
get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY)
-set(ENV{PATH} "${PERL_EXE_PATH};$ENV{PATH}")
+set(ENV{PATH} "$ENV{PATH};${PERL_EXE_PATH}")
# Set git variables to qca version 2.2.0 commit
set(GIT_URL "git://anongit.kde.org/qca.git")
diff --git a/ports/qt5/portfile.cmake b/ports/qt5/portfile.cmake
index 2b337df02..df17621f1 100644
--- a/ports/qt5/portfile.cmake
+++ b/ports/qt5/portfile.cmake
@@ -12,7 +12,7 @@ vcpkg_find_acquire_program(PYTHON3)
get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY)
get_filename_component(PYTHON3_EXE_PATH ${PYTHON3} DIRECTORY)
get_filename_component(JOM_EXE_PATH ${JOM} DIRECTORY)
-set(ENV{PATH} "${JOM_EXE_PATH};${PYTHON3_EXE_PATH};${PERL_EXE_PATH};$ENV{PATH}")
+set(ENV{PATH} "${JOM_EXE_PATH};${PYTHON3_EXE_PATH};$ENV{PATH};${PERL_EXE_PATH}")
set(ENV{INCLUDE} "${CURRENT_INSTALLED_DIR}/include;$ENV{INCLUDE}")
set(ENV{LIB} "${CURRENT_INSTALLED_DIR}/lib;$ENV{LIB}")
vcpkg_download_distfile(ARCHIVE_FILE
diff --git a/ports/rapidjson/CONTROL b/ports/rapidjson/CONTROL
index 2ef641783..0dd6333cf 100644
--- a/ports/rapidjson/CONTROL
+++ b/ports/rapidjson/CONTROL
@@ -1,3 +1,3 @@
Source: rapidjson
-Version: 1.0.2-1
+Version: 1.1.0
Description: A fast JSON parser/generator for C++ with both SAX/DOM style API <http://rapidjson.org/>
diff --git a/ports/rapidjson/portfile.cmake b/ports/rapidjson/portfile.cmake
index 3d923cb95..80dc14f5d 100644
--- a/ports/rapidjson/portfile.cmake
+++ b/ports/rapidjson/portfile.cmake
@@ -1,10 +1,10 @@
#header-only library
include(vcpkg_common_functions)
-SET(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/rapidjson-879def80f2e466cdf4c86dc7e53ea2dd4cafaea0)
+SET(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/rapidjson-1.1.0)
vcpkg_download_distfile(ARCHIVE
- URLS "https://github.com/miloyip/rapidjson/archive/879def80f2e466cdf4c86dc7e53ea2dd4cafaea0.zip"
- FILENAME "rapidjson-879def80f2e466cdf4c86dc7e53ea2dd4cafaea0.zip"
- SHA512 4d9ef7cce7d179344c33245c081a142ca5fcb2a0cc170ed39e3d0add008efab8e7389feec03e1ea83b30c5778cd0600865b08bc1c23592e5154dbe1f21f9547d
+ URLS "https://github.com/miloyip/rapidjson/archive/v1.1.0.zip"
+ FILENAME "rapidjson-v1.1.0.zip"
+ SHA512 4ddbf6dc5d943eb971e7a62910dd78d1cc5cc3016066a443f351d4276d2be3375ed97796e672c2aecd6990f0b332826f8c8ddc7d367193d7b82f0037f4e4012c
)
vcpkg_extract_source_archive(${ARCHIVE})
diff --git a/ports/sfml/CONTROL b/ports/sfml/CONTROL
index 175aaa0ab..e7fb08ecd 100644
--- a/ports/sfml/CONTROL
+++ b/ports/sfml/CONTROL
@@ -1,4 +1,4 @@
Source: sfml
-Version: 2.4.1
+Version: 2.4.2
Description: Simple and fast multimedia library
Build-Depends: freetype, libflac, libjpeg-turbo, libogg, libvorbis, openal-soft, stb
diff --git a/ports/sfml/portfile.cmake b/ports/sfml/portfile.cmake
index 916b033ef..69f114ca5 100644
--- a/ports/sfml/portfile.cmake
+++ b/ports/sfml/portfile.cmake
@@ -1,10 +1,10 @@
include(vcpkg_common_functions)
-set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/SFML-2.4.1)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/SFML-2.4.2)
vcpkg_download_distfile(ARCHIVE
- URLS "http://www.sfml-dev.org/files/SFML-2.4.1-sources.zip"
- FILENAME "SFML-2.4.1-sources.zip"
- SHA512 e2a49927e1db6ab94fa52b88460782fa2b28ccd4a8c75793e10c7669b24736f63aab723c2e1d8befc96f6f5cf4ed185f13da2550da721d206780003f158e5507)
+ URLS "http://www.sfml-dev.org/files/SFML-2.4.2-sources.zip"
+ FILENAME "SFML-2.4.2-sources.zip"
+ SHA512 14f2b9f244bbff681d1992581f20012f3073456e4baed0fb2bf2cf82538e9c5ddd8ce01b0cfb3874af47091ec19654aa23c426df04fe1ffcfa209623dc362f85)
vcpkg_extract_source_archive(${ARCHIVE})
diff --git a/ports/sqlite-modern-cpp/CONTROL b/ports/sqlite-modern-cpp/CONTROL
new file mode 100644
index 000000000..641b3229c
--- /dev/null
+++ b/ports/sqlite-modern-cpp/CONTROL
@@ -0,0 +1,4 @@
+Source: sqlite-modern-cpp
+Version: 2.4
+Build-Depends: sqlite3
+Description: The C++14 wrapper around sqlite library
diff --git a/ports/sqlite-modern-cpp/portfile.cmake b/ports/sqlite-modern-cpp/portfile.cmake
new file mode 100644
index 000000000..3171b5550
--- /dev/null
+++ b/ports/sqlite-modern-cpp/portfile.cmake
@@ -0,0 +1,20 @@
+# header only
+include(vcpkg_common_functions)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/sqlite_modern_cpp-2.4)
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://github.com/aminroosta/sqlite_modern_cpp/archive/v2.4.tar.gz"
+ FILENAME "sqlite_modern_cpp-2.4.tar.gz"
+ SHA512 99d8220c9dcbf7383c75ef8061bc792a4ea0b7e6e1290992f1604f66e77fcb5055af8c54c2d82b6a8d331359e2829d987b7528208f032f32699e1349296792db
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+file(INSTALL ${SOURCE_PATH}/hdr/ DESTINATION ${CURRENT_PACKAGES_DIR}/include)
+
+# Handle copyright
+vcpkg_download_distfile(LICENSE
+ URLS https://raw.githubusercontent.com/aminroosta/sqlite_modern_cpp/1d7747fcbb16325ec6673477b06f0c780de24a27/License.txt
+ FILENAME "sqlite_modern_cpp-2.4-license-mit.txt"
+ SHA512 4ffc41d14902b37841463b9e9274537cb48523a7ab7e5fbbbd14a01820d141e367851b0496aa18546ddab96100e7381db7fc35621c795a97c3290b618e18a8bd
+)
+file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/share/sqlite-modern-cpp)
+file(INSTALL ${LICENSE} DESTINATION ${CURRENT_PACKAGES_DIR}/share/sqlite-modern-cpp RENAME copyright)
diff --git a/ports/sqlite3/CONTROL b/ports/sqlite3/CONTROL
index e382a6f85..bc5b4af98 100644
--- a/ports/sqlite3/CONTROL
+++ b/ports/sqlite3/CONTROL
@@ -1,3 +1,3 @@
-Source: sqlite3
-Version: 3.15.0
+Source: sqlite3
+Version: 3.17.0
Description: SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. \ No newline at end of file
diff --git a/ports/sqlite3/portfile.cmake b/ports/sqlite3/portfile.cmake
index 8302e9d3e..fdf4ec159 100644
--- a/ports/sqlite3/portfile.cmake
+++ b/ports/sqlite3/portfile.cmake
@@ -1,27 +1,27 @@
-include(vcpkg_common_functions)
-set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/sqlite-amalgamation-3150000)
-vcpkg_download_distfile(ARCHIVE
- URLS "https://sqlite.org/2016/sqlite-amalgamation-3150000.zip"
- FILENAME "sqlite-amalgamation-3150000.zip"
- SHA512 82fea23b2158c448cbe2b80121eb32652df49eb85357edbaeef0c343ef478433706ebc4cd8add1985763db223d9268d0f7e74fc8db59353c15267cbc3d2078a8
-)
-vcpkg_extract_source_archive(${ARCHIVE})
-
-file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
-
-vcpkg_configure_cmake(
- SOURCE_PATH ${SOURCE_PATH}
- OPTIONS
- -DSOURCE=${SOURCE_PATH}
-)
-vcpkg_build_cmake()
-vcpkg_install_cmake()
-
-file(READ ${CURRENT_PACKAGES_DIR}/debug/share/sqlite3/sqlite3Config-debug.cmake SQLITE3_DEBUG_CONFIG)
-string(REPLACE "\${_IMPORT_PREFIX}" "\${_IMPORT_PREFIX}/debug" SQLITE3_DEBUG_CONFIG "${SQLITE3_DEBUG_CONFIG}")
-file(WRITE ${CURRENT_PACKAGES_DIR}/share/sqlite3/sqlite3Config-debug.cmake "${SQLITE3_DEBUG_CONFIG}")
-
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
-
-file(WRITE ${CURRENT_PACKAGES_DIR}/share/sqlite3/copyright "SQLite is in the Public Domain.\nhttp://www.sqlite.org/copyright.html\n")
-vcpkg_copy_pdbs()
+include(vcpkg_common_functions)
+set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/sqlite-amalgamation-3170000)
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://sqlite.org/2017/sqlite-amalgamation-3170000.zip"
+ FILENAME "sqlite-amalgamation-3170000.zip"
+ SHA512 36dc05dbb21428237332e813181d4dd0c2ffaedb92a53934630c25421617afd9c1a65784665d222501f1b4b5c6445f425f8c512572a97e42603510dcc0796344
+)
+vcpkg_extract_source_archive(${ARCHIVE})
+
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ OPTIONS
+ -DSOURCE=${SOURCE_PATH}
+)
+vcpkg_build_cmake()
+vcpkg_install_cmake()
+
+file(READ ${CURRENT_PACKAGES_DIR}/debug/share/sqlite3/sqlite3Config-debug.cmake SQLITE3_DEBUG_CONFIG)
+string(REPLACE "\${_IMPORT_PREFIX}" "\${_IMPORT_PREFIX}/debug" SQLITE3_DEBUG_CONFIG "${SQLITE3_DEBUG_CONFIG}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/sqlite3/sqlite3Config-debug.cmake "${SQLITE3_DEBUG_CONFIG}")
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
+
+file(WRITE ${CURRENT_PACKAGES_DIR}/share/sqlite3/copyright "SQLite is in the Public Domain.\nhttp://www.sqlite.org/copyright.html\n")
+vcpkg_copy_pdbs()