diff --git a/MSVC/.gitignore b/MSVC/.gitignore
index 5a687e53..d69cb772 100644
--- a/MSVC/.gitignore
+++ b/MSVC/.gitignore
@@ -15,7 +15,6 @@ Release/
*.VC.VC.opendb
*.VC.db
*.db
-*.filters
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
@@ -245,4 +244,5 @@ _Pvt_Extensions
# FAKE - F# Make
.fake/
-!config.h
\ No newline at end of file
+!config.h
+contrib/build/
\ No newline at end of file
diff --git a/MSVC/contrib/src/fetch_and_patch.bat b/MSVC/contrib/src/fetch_and_patch.bat
new file mode 100644
index 00000000..3aeb1d3f
--- /dev/null
+++ b/MSVC/contrib/src/fetch_and_patch.bat
@@ -0,0 +1,20 @@
+@echo OFF
+SETLOCAL EnableDelayedExpansion
+
+set SRC=%~dp0
+
+set USE_CACHE=0
+
+set DEPENDENCIES=( ^
+gmp, ^
+gnutls, ^
+iconv, ^
+msgpack, ^
+nettle, ^
+opendht, ^
+zlib ^
+)
+
+for %%I in %DEPENDENCIES% do (
+ call %SRC%\%%I\fetch_and_patch.bat
+)
\ No newline at end of file
diff --git a/MSVC/contrib/src/gmp/fetch_and_patch.bat b/MSVC/contrib/src/gmp/fetch_and_patch.bat
new file mode 100644
index 00000000..1fb83c76
--- /dev/null
+++ b/MSVC/contrib/src/gmp/fetch_and_patch.bat
@@ -0,0 +1,22 @@
+set BUILD=%SRC%..\build
+
+set GMP_VERSION=3c8f5a0ae0c2ac9ff0ea31b27f71b152979b556d
+set GMP_URL=https://github.com/ShiftMediaProject/gmp/archive/%GMP_VERSION%.tar.gz
+
+mkdir %BUILD%
+
+if %USE_CACHE%==1 (
+ copy %CACHE_DIR%\%GMP_VERSION%.tar.gz %cd%
+) else (
+ wget %GMP_URL%
+)
+
+7z -y x %GMP_VERSION%.tar.gz && 7z -y x %GMP_VERSION%.tar -o%BUILD%
+del %GMP_VERSION%.tar && del %GMP_VERSION%.tar.gz && del %BUILD%\pax_global_header
+rename %BUILD%\gmp-%GMP_VERSION% gmp
+
+cd %BUILD%\gmp
+
+git apply --reject --whitespace=fix %SRC%\gmp\gmp-uwp.patch
+
+cd %SRC%
\ No newline at end of file
diff --git a/MSVC/contrib/src/gmp/gmp-uwp.patch b/MSVC/contrib/src/gmp/gmp-uwp.patch
new file mode 100644
index 00000000..e32ef9ae
--- /dev/null
+++ b/MSVC/contrib/src/gmp/gmp-uwp.patch
@@ -0,0 +1,110 @@
+--- a/SMP/libgmp.vcxproj
++++ b/SMP/libgmp.vcxproj
+@@ -1248,6 +1248,7 @@
+ {02B94302-23D6-43EF-8865-95CDE99D5DC2}
+ libgmp
+ libgmp
++ 8.1
+
+
+
+@@ -1368,65 +1369,65 @@
+
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libgmpd
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libgmpd
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ gmpd
+ false
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ gmpd
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ false
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libgmp
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libgmp
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libgmp
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libgmp
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ gmp
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ gmp
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+--- a/SMP/config.h
++++ b/SMP/config.h
+@@ -202,7 +202,7 @@
+ /* #undef HAVE_NATIVE_mpn_add_n_sub_n */
+ #define HAVE_NATIVE_mpn_add_nc 1
+ #if defined(__x86_64) || defined(_M_X64)
+-#define HAVE_NATIVE_mpn_addaddmul_1msb0 1
++#define HAVE_NATIVE_mpn_addaddmul_1msb0 0
+ #define HAVE_NATIVE_mpn_addlsh1_n 1
+ #define HAVE_NATIVE_mpn_addlsh2_n 1
+ #define HAVE_NATIVE_mpn_addlsh_n 1
+--
+2.8.1.windows.1
+
diff --git a/MSVC/contrib/src/gnutls/fetch_and_patch.bat b/MSVC/contrib/src/gnutls/fetch_and_patch.bat
new file mode 100644
index 00000000..5c25b52e
--- /dev/null
+++ b/MSVC/contrib/src/gnutls/fetch_and_patch.bat
@@ -0,0 +1,24 @@
+set BUILD=%SRC%..\build
+
+set GNUTLS_VERSION=f2d0ade53ff644da55244aed79d05eca78d11a2f
+set GNUTLS_URL=https://github.com/ShiftMediaProject/gnutls/archive/%GNUTLS_VERSION%.tar.gz
+
+mkdir %BUILD%
+
+if %USE_CACHE%==1 (
+ copy %CACHE_DIR%\%GNUTLS_VERSION%.tar.gz %cd%
+) else (
+ wget %GNUTLS_URL%
+)
+
+7z -y x %GNUTLS_VERSION%.tar.gz && 7z -y x %GNUTLS_VERSION%.tar -o%BUILD%
+del %GNUTLS_VERSION%.tar && del %GNUTLS_VERSION%.tar.gz && del %BUILD%\pax_global_header
+rename %BUILD%\gnutls-%GNUTLS_VERSION% gnutls
+
+cd %BUILD%\gnutls
+
+git apply --reject --whitespace=fix %SRC%\gnutls\gnutls-no-egd.patch
+git apply --reject --whitespace=fix %SRC%\gnutls\read-file-limits.h.patch
+git apply --reject --whitespace=fix %SRC%\gnutls\gnutls-uwp.patch
+
+cd %SRC%
\ No newline at end of file
diff --git a/MSVC/contrib/src/gnutls/gnutls-no-egd.patch b/MSVC/contrib/src/gnutls/gnutls-no-egd.patch
new file mode 100644
index 00000000..d4b5f093
--- /dev/null
+++ b/MSVC/contrib/src/gnutls/gnutls-no-egd.patch
@@ -0,0 +1,107 @@
+ {a => b}/lib/nettle/Makefile.am | 2 +-
+ {a => b}/lib/nettle/Makefile.in | 11 +++++------
+ {a => b}/lib/nettle/rnd-common.c | 7 +++++--
+ 3 files changed, 11 insertions(+), 9 deletions(-)
+
+diff --git a/lib/nettle/Makefile.am b/lib/nettle/Makefile.am
+index e84ed1f..4767663 100644
+--- a/lib/nettle/Makefile.am
++++ b/lib/nettle/Makefile.am
+@@ -38,7 +38,7 @@ endif
+
+ noinst_LTLIBRARIES = libcrypto.la
+
+-libcrypto_la_SOURCES = pk.c mpi.c mac.c cipher.c init.c egd.c egd.h \
++libcrypto_la_SOURCES = pk.c mpi.c mac.c cipher.c init.c \
+ gnettle.h rnd-common.h rnd-common.c \
+ rnd.c
+
+diff --git a/lib/nettle/Makefile.in b/lib/nettle/Makefile.in
+index 88ae7cf..6ddd536 100644
+--- a/lib/nettle/Makefile.in
++++ b/lib/nettle/Makefile.in
+@@ -221,8 +221,8 @@ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ LTLIBRARIES = $(noinst_LTLIBRARIES)
+ libcrypto_la_LIBADD =
+-am__libcrypto_la_SOURCES_DIST = pk.c mpi.c mac.c cipher.c init.c egd.c \
+- egd.h gnettle.h rnd-common.h rnd-common.c rnd.c rnd-fips.c \
++am__libcrypto_la_SOURCES_DIST = pk.c mpi.c mac.c cipher.c init.c \
++ gnettle.h rnd-common.h rnd-common.c rnd.c rnd-fips.c \
+ int/drbg-aes-self-test.c int/dsa-fips.h \
+ int/dsa-keygen-fips186.c int/dsa-validate.c \
+ int/provable-prime.c int/drbg-aes.c int/drbg-aes.h \
+@@ -233,7 +233,7 @@ am__dirstamp = $(am__leading_dot)dirstamp
+ @ENABLE_FIPS140_TRUE@ int/dsa-keygen-fips186.lo \
+ @ENABLE_FIPS140_TRUE@ int/dsa-validate.lo int/provable-prime.lo \
+ @ENABLE_FIPS140_TRUE@ int/drbg-aes.lo int/rsa-keygen-fips186.lo
+-am_libcrypto_la_OBJECTS = pk.lo mpi.lo mac.lo cipher.lo init.lo egd.lo \
++am_libcrypto_la_OBJECTS = pk.lo mpi.lo mac.lo cipher.lo init.lo \
+ rnd-common.lo rnd.lo $(am__objects_1)
+ libcrypto_la_OBJECTS = $(am_libcrypto_la_OBJECTS)
+ AM_V_lt = $(am__v_lt_@AM_V@)
+@@ -1279,8 +1279,8 @@ AM_CPPFLAGS = -I$(srcdir)/int -I$(srcdir)/../../gl \
+ -I$(builddir)/../includes -I$(builddir)/../../gl \
+ -I$(srcdir)/.. $(am__append_1)
+ noinst_LTLIBRARIES = libcrypto.la
+-libcrypto_la_SOURCES = pk.c mpi.c mac.c cipher.c init.c egd.c egd.h \
+- gnettle.h rnd-common.h rnd-common.c rnd.c $(am__append_2)
++libcrypto_la_SOURCES = pk.c mpi.c mac.c cipher.c init.c gnettle.h \
++ rnd-common.h rnd-common.c rnd.c $(am__append_2)
+ all: all-am
+
+ .SUFFIXES:
+@@ -1355,7 +1355,6 @@ distclean-compile:
+ -rm -f *.tab.c
+
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cipher.Plo@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/egd.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mac.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mpi.Plo@am__quote@
+diff --git a/lib/nettle/rnd-common.c b/lib/nettle/rnd-common.c
+index c69ff3b..80b5f32 100644
+--- a/lib/nettle/rnd-common.c
++++ b/lib/nettle/rnd-common.c
+@@ -139,7 +139,7 @@ void _rnd_system_entropy_deinit(void)
+ #include
+ #include
+ #include
+-#include "egd.h"
++//#include "egd.h"
+
+ static int _gnutls_urandom_fd = -1;
+ static mode_t _gnutls_urandom_fd_mode = 0;
+@@ -208,6 +208,7 @@ static int _rnd_get_system_entropy_urandom(void* _rnd, size_t size)
+ return 0;
+ }
+
++#if 0
+ static
+ int _rnd_get_system_entropy_egd(void* _rnd, size_t size)
+ {
+@@ -232,6 +233,7 @@ int _rnd_get_system_entropy_egd(void* _rnd, size_t size)
+
+ return 0;
+ }
++#endif
+
+ int _rnd_system_entropy_check(void)
+ {
+@@ -268,6 +270,7 @@ int _rnd_system_entropy_init(void)
+
+ return 0;
+ fallback:
++#if 0
+ _gnutls_urandom_fd = _rndegd_connect_socket();
+ if (_gnutls_urandom_fd < 0) {
+ _gnutls_debug_log("Cannot open egd socket!\n");
+@@ -281,7 +284,7 @@ fallback:
+ }
+
+ _rnd_get_system_entropy = _rnd_get_system_entropy_egd;
+-
++#endif
+ return 0;
+ }
+
diff --git a/MSVC/contrib/src/gnutls/gnutls-uwp.patch b/MSVC/contrib/src/gnutls/gnutls-uwp.patch
new file mode 100644
index 00000000..60850279
--- /dev/null
+++ b/MSVC/contrib/src/gnutls/gnutls-uwp.patch
@@ -0,0 +1,445 @@
+--- a/SMP/libgnutls.vcxproj
++++ b/SMP/libgnutls.vcxproj
+@@ -743,91 +744,91 @@
+
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libgnutlsd
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libgnutlsd
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ gnutlsd
+ false
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ gnutlsd
+ false
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ gnutlsd
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ false
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ gnutlsd
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ false
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libgnutls
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libgnutls
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libgnutls
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libgnutls
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ gnutls
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ gnutls
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ gnutls
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ gnutls
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+@@ -1834,7 +1834,7 @@ del /f /q $(OutDir)\licenses\gnutls.txt
+ false
+ Fast
+ false
+- HAVE_CONFIG_H;inline=__inline;ASN1_BUILDING;ASN1_STATIC;LOCALEDIR=".";__func__=__FUNCTION__;ASM_X86;ASM_X86_64;_WIN32_WINNT=0x0600;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)
++ RING_UWP;HAVE_WIN32_LOCKS;HAVE_CONFIG_H;inline=__inline;ASN1_BUILDING;ASN1_STATIC;LOCALEDIR=".";__func__=__FUNCTION__;ASM_X86_64;_WIN32_WINNT=0x0600;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)
+ .\;.\lib;..\lib;..\lib\accelerated;..\lib\auth;..\lib\ext;..\lib\extras;..\lib\minitasn1;..\lib\nettle;..\lib\nettle\int;..\lib\openpgp;..\lib\opencdk;..\lib\x509;..\lib\includes;..\gl;$(OutDir)\include;..\lib\accelerated\x86;$(ProjectDir)\..\..\prebuilt\include;%(AdditionalIncludeDirectories)
+ false
+ 4996;4244;4018;4146;4267;4028;4101;4020;4047;4024;4005;4311;4312;4334;4116;4090;%(DisableSpecificWarnings)
+@@ -1850,7 +1850,7 @@ del /f /q $(OutDir)\licenses\gnutls.txt
+ $(OutDir)\lib\x64\$(TargetName)$(TargetExt)
+ MachineX64
+ Windows
+- Crypt32.lib;Ws2_32.lib;libzlib.lib;libiconv.lib;libhogweed.lib;libgmp.lib;libnettle.lib;%(AdditionalDependencies)
++ bcrypt.lib;Ws2_32.lib;libzlib.lib;libiconv.lib;libhogweed.lib;libgmp.lib;libnettle.lib;%(AdditionalDependencies)
+ $(OutDir)\lib\x64\;$(ProjectDir)\..\..\prebuilt\lib\x64\;%(AdditionalLibraryDirectories)
+ /IGNORE:4006,4221,4042 %(AdditionalOptions)
+
+--- a/lib/nettle/rnd-common.c
++++ b/lib/nettle/rnd-common.c
+@@ -45,6 +45,7 @@
+ #include
+ #include
+ #include
++#include
+
+ /* gnulib wants to claim strerror even if it cannot provide it. WTF */
+ #undef strerror
+@@ -88,16 +89,25 @@ void _rnd_get_event(struct event_st *e)
+ #include
+
+ static HCRYPTPROV device_fd = 0;
++static BCRYPT_ALG_HANDLE bdevice_fd = 0;
+
+ static
+ int _rnd_get_system_entropy_win32(void* rnd, size_t size)
+ {
++#ifndef RING_UWP
+ if (!CryptGenRandom(device_fd, (DWORD) size, rnd)) {
+ _gnutls_debug_log("Error in CryptGenRandom: %d\n",
+ (int)GetLastError());
+ return GNUTLS_E_RANDOM_DEVICE_ERROR;
+ }
+-
++#else
++ NTSTATUS ret = BCryptGenRandom(bdevice_fd, rnd, (ULONG) size, 0);
++ if (!(BCRYPT_SUCCESS(ret))) {
++ _gnutls_debug_log("Error in BCryptGenRandom: %d\n",
++ (int)GetLastError());
++ return GNUTLS_E_RANDOM_DEVICE_ERROR;
++ }
++#endif
+ return 0;
+ }
+
+@@ -111,7 +121,7 @@ int _rnd_system_entropy_check(void)
+ int _rnd_system_entropy_init(void)
+ {
+ int old;
+-
++#ifndef RING_UWP
+ if (!CryptAcquireContext
+ (&device_fd, NULL, NULL, PROV_RSA_FULL,
+ CRYPT_SILENT | CRYPT_VERIFYCONTEXT)) {
+@@ -119,13 +129,26 @@ int _rnd_system_entropy_init(void)
+ ("error in CryptAcquireContext!\n");
+ return GNUTLS_E_RANDOM_DEVICE_ERROR;
+ }
+-
++#else
++ NTSTATUS ret = BCryptOpenAlgorithmProvider(&bdevice_fd,
++ BCRYPT_RNG_ALGORITHM, MS_PRIMITIVE_PROVIDER,
++ 0);
++ if (!(BCRYPT_SUCCESS(ret))) {
++ _gnutls_debug_log
++ ("error in BCryptOpenAlgorithmProvider!\n");
++ return GNUTLS_E_RANDOM_DEVICE_ERROR;
++ }
++#endif
+ return 0;
+ }
+
+ void _rnd_system_entropy_deinit(void)
+ {
++#ifndef RING_UWP
+ CryptReleaseContext(device_fd, 0);
++#else
++ BCryptCloseAlgorithmProvider(bdevice_fd, 0);
++#endif
+ }
+
+ #else /* POSIX */
+--- a/lib/opencdk/misc.c
++++ b/lib/opencdk/misc.c
+@@ -34,7 +34,6 @@
+ #include
+ #include
+
+-
+ u32 _cdk_buftou32(const byte * buf)
+ {
+ u32 u;
+@@ -149,6 +148,13 @@ int _cdk_check_args(int overwrite, const char *in, const char *out)
+ }
+
+ #ifdef _WIN32
++#if (_WIN32_WINNT >= 0x0600)
++FILE *_cdk_tmpfile(void)
++{
++ return NULL;
++}
++#else
++
+ #include
+ #include
+
+@@ -183,6 +189,7 @@ FILE *_cdk_tmpfile(void)
+ _close(fd);
+ return NULL;
+ }
++#endif /*_WIN32*/
+ #else
+ FILE *_cdk_tmpfile(void)
+ {
+--- a/lib/system-keys-win.c
++++ b/lib/system-keys-win.c
+@@ -20,9 +20,10 @@
+
+ // Before including any Windows header we need to set _WIN32_WINNT to Vista
+ // (or higher) so that the NCRYPT stuff can be used.
+-#if _WIN32_WINNT < 0x600
++#define _WIN32_WINNT 0x0A00
++#if _WIN32_WINNT < 0x0600
+ #undef _WIN32_WINNT
+-#define _WIN32_WINNT 0x600
++#define _WIN32_WINNT 0x0600
+ #endif
+
+
+@@ -1075,7 +1076,11 @@ int _gnutls_system_key_init(void)
+ int ret;
+
+ #ifdef DYN_NCRYPT
+- ncrypt_lib = LoadLibraryA("ncrypt.dll");
++#if (_WIN32_WINNT < 0x0A00)
++ ncrypt_lib = LoadLibrary("ncrypt.dll");
++#else
++ ncrypt_lib = LoadPackagedLibrary("ncrypt.dll", 0);
++#endif
+ if (ncrypt_lib == NULL) {
+ return gnutls_assert_val(GNUTLS_E_CRYPTO_INIT_FAILED);
+ }
+--- a/lib/system-keys-win.c
++++ b/lib/system-keys-win.c
+@@ -396,7 +396,11 @@ _gnutls_privkey_import_system_url(gnutls_privkey_t pkey,
+ blob.cbData = id_size;
+ blob.pbData = id;
+
+- store = CertOpenSystemStore(0, "MY");
++ store = CertOpenStore( CERT_STORE_PROV_SYSTEM_A,
++ X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
++ 0,
++ CERT_SYSTEM_STORE_CURRENT_USER,
++ (const void*)"MY");
+ if (store == NULL) {
+ gnutls_assert();
+ ret = GNUTLS_E_FILE_ERROR;
+@@ -535,7 +539,11 @@ _gnutls_x509_crt_import_system_url(gnutls_x509_crt_t crt, const char *url)
+ blob.cbData = id_size;
+ blob.pbData = id;
+
+- store = CertOpenSystemStore(0, "MY");
++ store = CertOpenStore( CERT_STORE_PROV_SYSTEM_A,
++ X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
++ 0,
++ CERT_SYSTEM_STORE_CURRENT_USER,
++ (const void*)"MY");
+ if (store == NULL) {
+ gnutls_assert();
+ ret = GNUTLS_E_FILE_ERROR;
+@@ -776,7 +784,11 @@ gnutls_system_key_iter_get_info(gnutls_system_key_iter_t *iter,
+ if (*iter == NULL)
+ return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
+
+- (*iter)->store = CertOpenSystemStore(0, "MY");
++ (*iter)->store = CertOpenStore( CERT_STORE_PROV_SYSTEM_A,
++ X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
++ 0,
++ CERT_SYSTEM_STORE_CURRENT_USER,
++ (const void*)"MY");
+ if ((*iter)->store == NULL) {
+ gnutls_free(*iter);
+ *iter = NULL;
+@@ -841,7 +853,11 @@ int gnutls_system_key_delete(const char *cert_url, const char *key_url)
+ blob.cbData = id_size;
+ blob.pbData = id;
+
+- store = CertOpenSystemStore(0, "MY");
++ store = CertOpenStore( CERT_STORE_PROV_SYSTEM_A,
++ X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
++ 0,
++ CERT_SYSTEM_STORE_CURRENT_USER,
++ (const void*)"MY");
+ if (store != NULL) {
+ do {
+ cert = CertFindCertificateInStore(store,
+--- a/lib/system.c
++++ b/lib/system.c
+@@ -446,9 +446,17 @@ int add_system_trust(gnutls_x509_trust_list_t list, unsigned int tl_flags,
+ gnutls_datum_t data;
+
+ if (i == 0)
+- store = CertOpenSystemStore(0, "ROOT");
++ store = CertOpenStore( CERT_STORE_PROV_SYSTEM_A,
++ X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
++ 0,
++ CERT_SYSTEM_STORE_CURRENT_USER,
++ (const void*)"ROOT");
+ else
+- store = CertOpenSystemStore(0, "CA");
++ store = CertOpenStore( CERT_STORE_PROV_SYSTEM_A,
++ X509_ASN_ENCODING | PKCS_7_ASN_ENCODING,
++ 0,
++ CERT_SYSTEM_STORE_CURRENT_USER,
++ (const void*)"CA");
+
+ if (store == NULL)
+ return GNUTLS_E_FILE_ERROR;
+--- a/lib/accelerated/x86/x86-common.c
++++ b/lib/accelerated/x86/x86-common.c
+@@ -652,6 +652,7 @@ void register_x86_intel_crypto(unsigned capabilities)
+
+ void register_x86_crypto(void)
+ {
++#ifndef RING_UWP
+ unsigned capabilities = 0;
+ char *p;
+ p = secure_getenv("GNUTLS_CPUID_OVERRIDE");
+@@ -663,5 +664,7 @@ void register_x86_crypto(void)
+ #ifdef ENABLE_PADLOCK
+ register_x86_padlock_crypto(capabilities);
+ #endif
++#endif
++ register_x86_intel_crypto(0);
+ }
+
+--- a/lib/gnutls_global.c
++++ b/lib/gnutls_global.c
+@@ -240,7 +240,9 @@ int gnutls_global_init(void)
+
+ _gnutls_switch_lib_state(LIB_STATE_INIT);
+
++#ifndef RING_UWP
+ e = secure_getenv("GNUTLS_DEBUG_LEVEL");
++#endif
+ if (e != NULL) {
+ level = atoi(e);
+ gnutls_global_set_log_level(level);
+@@ -473,8 +475,10 @@ const char *e;
+ if (_gnutls_global_init_skip() != 0)
+ return;
+
++#ifndef RING_UWP
+ e = secure_getenv("GNUTLS_NO_EXPLICIT_INIT");
+- if (e != NULL) {
++#endif
++ if (e != NULL) {
+ ret = atoi(e);
+ if (ret == 1)
+ return;
+@@ -494,7 +498,9 @@ static void _DESTRUCTOR lib_deinit(void)
+ if (_gnutls_global_init_skip() != 0)
+ return;
+
++#ifndef RING_UWP
+ e = secure_getenv("GNUTLS_NO_EXPLICIT_INIT");
++#endif
+ if (e != NULL) {
+ int ret = atoi(e);
+ if (ret == 1)
+--- a/lib/gnutls_kx.c
++++ b/lib/gnutls_kx.c
+@@ -105,7 +105,9 @@ static void write_nss_key_log(gnutls_session_t session, const gnutls_datum_t *pr
+
+ if (!checked_env) {
+ checked_env = 1;
++#ifndef RING_UWP
+ keylogfile = secure_getenv("SSLKEYLOGFILE");
++#endif
+ }
+
+ if (keylogfile == NULL)
+--- a/lib/system.c
++++ b/lib/system.c
+@@ -340,7 +340,11 @@ void gnutls_system_global_deinit(void)
+ */
+ int _gnutls_find_config_path(char *path, size_t max_size)
+ {
+- const char *home_dir = secure_getenv("HOME");
++#ifndef RING_UWP
++ const char *home_dir = secure_getenv("HOME");
++#else
++ const char *home_dir = NULL;
++#endif
+
+ if (home_dir != NULL && home_dir[0] != 0) {
+ snprintf(path, max_size, "%s/" CONFIG_PATH, home_dir);
+@@ -349,8 +353,13 @@ int _gnutls_find_config_path(char *path, size_t max_size)
+
+ #ifdef _WIN32
+ if (home_dir == NULL || home_dir[0] == '\0') {
++#ifndef RING_UWP
+ const char *home_drive = getenv("HOMEDRIVE");
+ const char *home_path = getenv("HOMEPATH");
++#else
++ const char *home_drive = NULL;
++ const char *home_path = NULL;
++#endif
+
+ if (home_drive != NULL && home_path != NULL) {
+ snprintf(path, max_size, "%s%s\\" CONFIG_PATH, home_drive, home_path);
+2.8.1.windows.1
+
diff --git a/MSVC/contrib/src/gnutls/read-file-limits.h.patch b/MSVC/contrib/src/gnutls/read-file-limits.h.patch
new file mode 100644
index 00000000..b13b1a88
--- /dev/null
+++ b/MSVC/contrib/src/gnutls/read-file-limits.h.patch
@@ -0,0 +1,12 @@
+--- gnutls/gl/read-file.c.orig 2012-03-06 20:59:29.600593329 -0500
++++ gnutls/gl/read-file.c 2012-03-06 20:59:44.568593328 -0500
+@@ -35,6 +35,9 @@
+ /* Get errno. */
+ #include
+
++/* Get SIZE_MAX */
++#include
++
+ /* Read a STREAM and return a newly allocated string with the content,
+ and set *LENGTH to the length of the string. The string is
+ zero-terminated, but the terminating zero byte is not counted in
diff --git a/MSVC/contrib/src/iconv/fetch_and_patch.bat b/MSVC/contrib/src/iconv/fetch_and_patch.bat
new file mode 100644
index 00000000..b7503aa3
--- /dev/null
+++ b/MSVC/contrib/src/iconv/fetch_and_patch.bat
@@ -0,0 +1,22 @@
+set BUILD=%SRC%..\build
+
+set ICONV_VERSION=65ab92f7a1699ecc39e37fb81f66e5a42aaa35c4
+set ICONV_URL=https://github.com/ShiftMediaProject/libiconv/archive/%ICONV_VERSION%.tar.gz
+
+mkdir %BUILD%
+
+if %USE_CACHE%==1 (
+ copy %CACHE_DIR%\%ICONV_VERSION%.tar.gz %cd%
+) else (
+ wget %ICONV_URL%
+)
+
+7z -y x %ICONV_VERSION%.tar.gz && 7z -y x %ICONV_VERSION%.tar -o%BUILD%
+del %ICONV_VERSION%.tar && del %ICONV_VERSION%.tar.gz && del %BUILD%\pax_global_header
+rename %BUILD%\libiconv-%ICONV_VERSION% libiconv
+
+cd %BUILD%\libiconv
+
+git apply --reject --whitespace=fix %SRC%\iconv\libiconv-uwp.patch
+
+cd %SRC%
\ No newline at end of file
diff --git a/MSVC/contrib/src/iconv/libiconv-uwp.patch b/MSVC/contrib/src/iconv/libiconv-uwp.patch
new file mode 100644
index 00000000..233cdfc7
--- /dev/null
+++ b/MSVC/contrib/src/iconv/libiconv-uwp.patch
@@ -0,0 +1,99 @@
+--- a/SMP/libiconv.vcxproj
++++ b/SMP/libiconv.vcxproj
+@@ -45,6 +45,7 @@
+
+ {CB8BB76F-D3FF-434E-A85E-7FFC0893EC9B}
+ libiconv
++ 8.1
+
+
+
+@@ -164,65 +165,65 @@
+
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libiconvd
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libiconvd
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ iconvd
+ false
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ iconvd
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ false
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libiconv
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libiconv
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libiconv
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libiconv
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ iconv
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ iconv
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+--
+2.8.1.windows.1
+
diff --git a/MSVC/contrib/src/msgpack/fetch_and_patch.bat b/MSVC/contrib/src/msgpack/fetch_and_patch.bat
new file mode 100644
index 00000000..424c36f1
--- /dev/null
+++ b/MSVC/contrib/src/msgpack/fetch_and_patch.bat
@@ -0,0 +1,22 @@
+set BUILD=%SRC%..\build
+
+set MSGPACK_VERSION=1df97bc37b363a340c5ad06c5cbcc53310aaff80
+set MSGPACK_URL=https://github.com/msgpack/msgpack-c/archive/%MSGPACK_VERSION%.tar.gz
+
+mkdir %BUILD%
+
+if %USE_CACHE%==1 (
+ copy %CACHE_DIR%\%MSGPACK_VERSION%.tar.gz %cd%
+) else (
+ wget %MSGPACK_URL%
+)
+
+7z -y x %MSGPACK_VERSION%.tar.gz && 7z -y x %MSGPACK_VERSION%.tar -o%BUILD%
+del %MSGPACK_VERSION%.tar && del %MSGPACK_VERSION%.tar.gz && del %BUILD%\pax_global_header
+rename %BUILD%\msgpack-c-%MSGPACK_VERSION% msgpack-c
+
+cd %BUILD%\msgpack-c
+
+git apply --reject --whitespace=fix %SRC%\msgpack\msgpack-uwp.patch
+
+cd %SRC%
\ No newline at end of file
diff --git a/MSVC/contrib/src/msgpack/msgpack-uwp.patch b/MSVC/contrib/src/msgpack/msgpack-uwp.patch
new file mode 100644
index 00000000..d79e9ef9
--- /dev/null
+++ b/MSVC/contrib/src/msgpack/msgpack-uwp.patch
@@ -0,0 +1,221 @@
+--- /dev/null
++++ b/msgpack_vc8.vcxproj
+@@ -0,0 +1,214 @@
++
++
++
++
++ Debug
++ Win32
++
++
++ Debug
++ x64
++
++
++ Release
++ Win32
++
++
++ Release
++ x64
++
++
++
++ MessagePack
++ {122A2EA4-B283-4241-9655-786DE78283B2}
++ MessagePack
++ Win32Proj
++ 8.1
++
++
++
++ StaticLibrary
++ v140
++ Unicode
++ false
++
++
++ StaticLibrary
++ v140
++ Unicode
++ false
++
++
++ StaticLibrary
++ v140
++ Unicode
++
++
++ StaticLibrary
++ v140
++ Unicode
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++ <_ProjectFileVersion>14.0.25123.0
++
++
++ $(ProjectDir)..\
++ $(Configuration)\
++ msgpackd
++
++
++ msgpackd
++ $(ProjectDir)..\
++ $(Configuration)\
++
++
++ $(ProjectDir)..\
++ $(Configuration)\
++ msgpack
++
++
++ msgpack
++ $(ProjectDir)..\
++ $(Configuration)\
++
++
++
++ Disabled
++ .;include;%(AdditionalIncludeDirectories)
++ WIN32_NATIVE;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
++ true
++ StackFrameRuntimeCheck
++ MultiThreadedDebugDLL
++
++ Level3
++ EditAndContinue
++
++
++ $(OutDir)\lib\x86\$(TargetName)$(TargetExt)
++
++
++ mkdir $(OutDir)\include
++
++mkdir $(OutDir)\include\msgpack
++
++copy include\*.h $(OutDir)\include\
++
++copy include\*.hpp $(OutDir)\include\
++xcopy /S /Y include\msgpack\*.h $(OutDir)\include\msgpack
++xcopy /S /Y include\msgpack\*.hpp $(OutDir)\include\msgpack
++
++
++
++
++
++ Disabled
++ .;include;%(AdditionalIncludeDirectories)
++ WIN32_NATIVE;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)
++ StackFrameRuntimeCheck
++ MultiThreadedDebugDLL
++
++
++ Level3
++ ProgramDatabase
++
++
++ $(OutDir)\lib\x64\$(TargetName)$(TargetExt)
++
++
++ mkdir $(OutDir)\include
++
++mkdir $(OutDir)\include\msgpack
++
++copy include\*.h $(OutDir)\include\
++
++copy include\*.hpp $(OutDir)\include\
++xcopy /S /Y include\msgpack\*.h $(OutDir)\include\msgpack
++xcopy /S /Y include\msgpack\*.hpp $(OutDir)\include\msgpack
++
++
++
++
++
++ .;include;%(AdditionalIncludeDirectories)
++ WIN32_NATIVE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
++ MultiThreadedDLL
++
++ Level3
++ ProgramDatabase
++ $(OutDir)\lib\x86\$(TargetName).pdb
++
++
++ $(OutDir)\lib\x86\$(TargetName)$(TargetExt)
++
++
++
++ mkdir $(OutDir)\include
++
++mkdir $(OutDir)\include\msgpack
++
++copy include\*.h $(OutDir)\include\
++
++copy include\*.hpp $(OutDir)\include\
++xcopy /S /Y include\msgpack\*.h $(OutDir)\include\msgpack
++xcopy /S /Y include\msgpack\*.hpp $(OutDir)\include\msgpack
++
++
++
++
++
++ .;include;%(AdditionalIncludeDirectories)
++ MSGPACK_USE_CPP03;WIN32_NATIVE;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)
++ MultiThreadedDLL
++
++
++ Level3
++ ProgramDatabase
++ $(OutDir)\lib\x64\$(TargetName).pdb
++
++
++ $(OutDir)\lib\x64\$(TargetName)$(TargetExt)
++
++
++
++ mkdir $(OutDir)\include
++
++mkdir $(OutDir)\include\msgpack
++
++copy include\*.h $(OutDir)\include\
++
++copy include\*.hpp $(OutDir)\include\
++xcopy /S /Y include\msgpack\*.h $(OutDir)\include\msgpack
++xcopy /S /Y include\msgpack\*.hpp $(OutDir)\include\msgpack
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
++
+\ No newline at end of file
+--
+2.8.1.windows.1
+
diff --git a/MSVC/contrib/src/nettle/fetch_and_patch.bat b/MSVC/contrib/src/nettle/fetch_and_patch.bat
new file mode 100644
index 00000000..6146062f
--- /dev/null
+++ b/MSVC/contrib/src/nettle/fetch_and_patch.bat
@@ -0,0 +1,22 @@
+set BUILD=%SRC%..\build
+
+set NETTLE_VERSION=4e0b2723b76d4163fa37b2b456d41534154ec97c
+set NETTLE_URL=https://github.com/ShiftMediaProject/nettle/archive/%NETTLE_VERSION%.tar.gz
+
+mkdir %BUILD%
+
+if %USE_CACHE%==1 (
+ copy %CACHE_DIR%\%NETTLE_VERSION%.tar.gz %cd%
+) else (
+ wget %NETTLE_URL%
+)
+
+7z -y x %NETTLE_VERSION%.tar.gz && 7z -y x %NETTLE_VERSION%.tar -o%BUILD%
+del %NETTLE_VERSION%.tar && del %NETTLE_VERSION%.tar.gz && del %BUILD%\pax_global_header
+rename %BUILD%\nettle-%NETTLE_VERSION% nettle
+
+cd %BUILD%\nettle
+
+git apply --reject --whitespace=fix %SRC%\nettle\nettle-uwp.patch
+
+cd %SRC%
\ No newline at end of file
diff --git a/MSVC/contrib/src/nettle/nettle-uwp.patch b/MSVC/contrib/src/nettle/nettle-uwp.patch
new file mode 100644
index 00000000..bca04dba
--- /dev/null
+++ b/MSVC/contrib/src/nettle/nettle-uwp.patch
@@ -0,0 +1,228 @@
+--- a/SMP/libhogweed.vcxproj
++++ b/SMP/libhogweed.vcxproj
+@@ -242,6 +242,7 @@
+
+ {200F3D3C-8B84-46D8-953A-6C0EBD283B5C}
+ libhogweed
++ 8.1
+
+
+
+@@ -405,91 +406,91 @@
+
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libhogweedd
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libhogweedd
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ hogweedd
+ false
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ hogweedd
+ false
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ hogweedd
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ false
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ hogweedd
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ false
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libhogweed
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libhogweed
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libhogweed
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libhogweed
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ hogweed
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ hogweed
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ hogweed
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ hogweed
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+--- a/SMP/libnettle.vcxproj
++++ b/SMP/libnettle.vcxproj
+@@ -278,6 +278,7 @@
+
+ {070FEF2B-0C3F-4F33-9D3C-53C7330BF518}
+ libnettle
++ 8.1
+
+
+
+@@ -397,65 +398,65 @@
+
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libnettled
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libnettled
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ nettled
+ false
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ nettled
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ false
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libnettle
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libnettle
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libnettle
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libnettle
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ nettle
+ Clean
+
+
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ nettle
+- $(ProjectDir)..\..\..\msvc\
++ $(ProjectDir)..\..\
+ Clean
+
+
+--
+2.8.1.windows.1
diff --git a/MSVC/contrib/src/zlib/fetch_and_patch.bat b/MSVC/contrib/src/zlib/fetch_and_patch.bat
new file mode 100644
index 00000000..59f25a96
--- /dev/null
+++ b/MSVC/contrib/src/zlib/fetch_and_patch.bat
@@ -0,0 +1,22 @@
+set BUILD=%SRC%..\build
+
+set ZLIB_VERSION=3a062eb61d0c3d4aa30851cd1a6597b977b56597
+set ZLIB_URL=https://github.com/ShiftMediaProject/zlib/archive/%ZLIB_VERSION%.tar.gz
+
+mkdir %BUILD%
+
+if %USE_CACHE%==1 (
+ copy %CACHE_DIR%\%ZLIB_VERSION%.tar.gz %cd%
+) else (
+ wget %ZLIB_URL%
+)
+
+7z -y x %ZLIB_VERSION%.tar.gz && 7z -y x %ZLIB_VERSION%.tar -o%BUILD%
+del %ZLIB_VERSION%.tar && del %ZLIB_VERSION%.tar.gz && del %BUILD%\pax_global_header
+rename %BUILD%\zlib-%ZLIB_VERSION% zlib
+
+cd %BUILD%\zlib
+
+git apply --reject --whitespace=fix %SRC%\zlib\zlib-uwp.patch
+
+cd %SRC%
\ No newline at end of file
diff --git a/MSVC/contrib/src/zlib/zlib-uwp.patch b/MSVC/contrib/src/zlib/zlib-uwp.patch
new file mode 100644
index 00000000..c559cdcb
--- /dev/null
+++ b/MSVC/contrib/src/zlib/zlib-uwp.patch
@@ -0,0 +1,97 @@
+--- a/SMP/libzlib.vcxproj
++++ b/SMP/libzlib.vcxproj
+@@ -45,6 +45,7 @@
+
+ {CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}
+ libzlib
++ 8.1
+
+
+
+@@ -165,63 +166,63 @@
+
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libzlibd
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libzlib
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libzlib
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ zlib
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ zlibd
+ false
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libzlibd
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libzlib
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ libzlib
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ zlib
+ Clean
+
+
+- $(ProjectDir)..\..\..\msvc\
+- $(SolutionDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
++ $(ProjectDir)..\..\
++ $(ProjectDir)obj\$(Configuration)\$(Platform)\$(ProjectName)\
+ zlibd
+ false
+ Clean
+--
+2.8.1.windows.1
+
diff --git a/MSVC/dhtchat.vcxproj b/MSVC/dhtchat.vcxproj
index 96243267..97dc0307 100644
--- a/MSVC/dhtchat.vcxproj
+++ b/MSVC/dhtchat.vcxproj
@@ -139,7 +139,7 @@
true
true
true
- ..\..\include;..\..\msgpack-c\include;$(ProjectDir)
+ ..\..\include;$(ProjectDir)contrib\build\include;$(ProjectDir)contrib\build\msgpack-c\include;$(ProjectDir)
_CRT_SECURE_NO_WARNINGS;WIN32_NATIVE;WIN32_LEAN_AND_MEAN;_MBCS;%(PreprocessorDefinitions)
4804;4267;4244;4800;4273;
$(IntDir)vc$(PlatformToolsetVersion).pdb
@@ -148,7 +148,7 @@
true
true
crypt32.lib;blake.lib;argon.lib;libgnutls.lib;opendht.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
- $(ProjectDir)..\..\lib\x64
+ $(ProjectDir)contrib\build\lib\x64;$(ProjectDir)..\..\lib\x64
/ignore:4049 %(AdditionalOptions)
diff --git a/MSVC/dhtnode.vcxproj b/MSVC/dhtnode.vcxproj
index 1331486b..c0840773 100644
--- a/MSVC/dhtnode.vcxproj
+++ b/MSVC/dhtnode.vcxproj
@@ -139,7 +139,7 @@
true
true
true
- ..\..\include;..\..\msgpack-c\include;$(ProjectDir)
+ ..\..\include;$(ProjectDir)contrib\build\include;$(ProjectDir)contrib\build\msgpack-c\include;$(ProjectDir)
WIN32_NATIVE;WIN32_LEAN_AND_MEAN;_MBCS;%(PreprocessorDefinitions)
4804;4267;4244;4800;4273;4101;
$(IntDir)vc$(PlatformToolsetVersion).pdb
@@ -148,7 +148,7 @@
true
true
crypt32.lib;blake.lib;argon.lib;libgnutls.lib;opendht.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
- $(ProjectDir)..\..\lib\x64
+ $(ProjectDir)contrib\build\lib\x64;$(ProjectDir)..\..\lib\x64
/ignore:4049 %(AdditionalOptions)
diff --git a/MSVC/dhtscanner.vcxproj b/MSVC/dhtscanner.vcxproj
index 77ed2d6d..d14dd5aa 100644
--- a/MSVC/dhtscanner.vcxproj
+++ b/MSVC/dhtscanner.vcxproj
@@ -139,7 +139,7 @@
true
true
true
- ..\..\include;..\..\msgpack-c\include;$(ProjectDir)
+ ..\..\include;$(ProjectDir)contrib\build\include;$(ProjectDir)contrib\build\msgpack-c\include;$(ProjectDir)
_CRT_SECURE_NO_WARNINGS;WIN32_NATIVE;WIN32_LEAN_AND_MEAN;_MBCS;%(PreprocessorDefinitions)
4804;4267;4244;4800;4273;4101;
$(IntDir)vc$(PlatformToolsetVersion).pdb
@@ -148,7 +148,7 @@
true
true
crypt32.lib;blake.lib;argon.lib;libgnutls.lib;opendht.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
- $(ProjectDir)..\..\lib\x64
+ $(ProjectDir)contrib\build\lib\x64;$(ProjectDir)..\..\lib\x64
/ignore:4049 %(AdditionalOptions)
diff --git a/MSVC/opendht.vcxproj b/MSVC/opendht.vcxproj
index 85d058e3..57a1e62d 100644
--- a/MSVC/opendht.vcxproj
+++ b/MSVC/opendht.vcxproj
@@ -26,6 +26,7 @@
+
@@ -207,7 +208,7 @@ copy ..\include\opendht.h $(OutDir)\include\
true
true
true
- ..\..\include;..\include;..\include\opendht;..\..\msgpack-c\include;
+ $(ProjectDir)contrib\build\include;$(ProjectDir)..\include;$(ProjectDir)..\include\opendht;$(ProjectDir)contrib\build\msgpack-c\include;$(ProjectDir)..\argon2
_CRT_SECURE_NO_WARNINGS;WIN32_NATIVE;WIN32_LEAN_AND_MEAN;_MBCS;%(PreprocessorDefinitions)
4804;4800;4101;4267;4244;4503;
-D_SCL_SECURE_NO_WARNINGS %(AdditionalOptions)
diff --git a/MSVC/opendht.vcxproj.filters b/MSVC/opendht.vcxproj.filters
new file mode 100644
index 00000000..a2e97035
--- /dev/null
+++ b/MSVC/opendht.vcxproj.filters
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MSVC/opendht_deps.sln b/MSVC/opendht_deps.sln
index 4ef618ba..ddcd5ded 100644
--- a/MSVC/opendht_deps.sln
+++ b/MSVC/opendht_deps.sln
@@ -13,9 +13,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "opendht", "opendht.vcxproj"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dependencies", "dependencies", "{71A1A9EC-1104-4335-A87E-AF8749FD5B34}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgmp", "..\..\gmp\SMP\libgmp.vcxproj", "{02B94302-23D6-43EF-8865-95CDE99D5DC2}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgmp", "contrib\build\gmp\SMP\libgmp.vcxproj", "{02B94302-23D6-43EF-8865-95CDE99D5DC2}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgnutls", "..\..\gnutls\SMP\libgnutls.vcxproj", "{6F610EE8-7F59-4191-AB88-F63843267C02}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgnutls", "contrib\build\gnutls\SMP\libgnutls.vcxproj", "{6F610EE8-7F59-4191-AB88-F63843267C02}"
ProjectSection(ProjectDependencies) = postProject
{02B94302-23D6-43EF-8865-95CDE99D5DC2} = {02B94302-23D6-43EF-8865-95CDE99D5DC2}
{070FEF2B-0C3F-4F33-9D3C-53C7330BF518} = {070FEF2B-0C3F-4F33-9D3C-53C7330BF518}
@@ -24,18 +24,18 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libgnutls", "..\..\gnutls\S
{CB8BB76F-D3FF-434E-A85E-7FFC0893EC9B} = {CB8BB76F-D3FF-434E-A85E-7FFC0893EC9B}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libiconv", "..\..\libiconv\SMP\libiconv.vcxproj", "{CB8BB76F-D3FF-434E-A85E-7FFC0893EC9B}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libiconv", "contrib\build\libiconv\SMP\libiconv.vcxproj", "{CB8BB76F-D3FF-434E-A85E-7FFC0893EC9B}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libhogweed", "..\..\nettle\SMP\libhogweed.vcxproj", "{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libhogweed", "contrib\build\nettle\SMP\libhogweed.vcxproj", "{200F3D3C-8B84-46D8-953A-6C0EBD283B5C}"
ProjectSection(ProjectDependencies) = postProject
{02B94302-23D6-43EF-8865-95CDE99D5DC2} = {02B94302-23D6-43EF-8865-95CDE99D5DC2}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libnettle", "..\..\nettle\SMP\libnettle.vcxproj", "{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libnettle", "contrib\build\nettle\SMP\libnettle.vcxproj", "{070FEF2B-0C3F-4F33-9D3C-53C7330BF518}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libzlib", "..\..\zlib\SMP\libzlib.vcxproj", "{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libzlib", "contrib\build\zlib\SMP\libzlib.vcxproj", "{CA9A4A38-CC63-4BDB-8CFB-E058965DDA32}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MessagePack", "..\..\msgpack-c\msgpack_vc8.vcxproj", "{122A2EA4-B283-4241-9655-786DE78283B2}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MessagePack", "contrib\build\msgpack-c\msgpack_vc8.vcxproj", "{122A2EA4-B283-4241-9655-786DE78283B2}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "argon", "argon.vcxproj", "{2B85EA05-086B-4DF6-A140-DF52BDAEEEEA}"
ProjectSection(ProjectDependencies) = postProject
@@ -63,20 +63,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dhtchat", "dhtchat.vcxproj"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- DebugDLL|x64 = DebugDLL|x64
- DebugDLL|x86 = DebugDLL|x86
- DebugDLLStaticDeps|x64 = DebugDLLStaticDeps|x64
- DebugDLLStaticDeps|x86 = DebugDLLStaticDeps|x86
Release|x64 = Release|x64
- Release|x86 = Release|x86
- ReleaseDLL|x64 = ReleaseDLL|x64
- ReleaseDLL|x86 = ReleaseDLL|x86
- ReleaseDLLStaticDeps|x64 = ReleaseDLLStaticDeps|x64
- ReleaseDLLStaticDeps|x86 = ReleaseDLLStaticDeps|x86
- ReleaseLTO|x64 = ReleaseLTO|x64
- ReleaseLTO|x86 = ReleaseLTO|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{711397CE-E5D5-467D-9457-8716C047E50C}.Debug|x64.ActiveCfg = Debug|x64
diff --git a/MSVC/project_get_dependencies.bat b/MSVC/project_get_dependencies.bat
deleted file mode 100644
index 28a7c28b..00000000
--- a/MSVC/project_get_dependencies.bat
+++ /dev/null
@@ -1,79 +0,0 @@
-@ECHO OFF
-SETLOCAL EnableDelayedExpansion
-
-SET UPSTREAMURL=https://github.com/ShiftMediaProject
-SET DEPENDENCIES=( ^
-gmp, ^
-gnutls, ^
-nettle ^
-)
-
-SET PASSDEPENDENCIES=%~1
-
-git status >NUL 2>&1
-IF %ERRORLEVEL% EQU 128 (
- git init
-) ELSE (
- IF %ERRORLEVEL% EQU 9009 (
- ECHO git not installed.
- EXIT /B 1
- )
-)
-
-SET CURRDIR=%~dp1
-
-cd ..\..
-set MSGPACK_VERSION=1df97bc37b363a340c5ad06c5cbcc53310aaff80
-set MSGPACK_URL="https://github.com/msgpack/msgpack-c.git"
-ECHO Cloning msgpack-c...
-git clone %MSGPACK_URL% --quiet
-cd msgpack-c
-git checkout %MSGPACK_VERSION%
-git apply --reject --whitespace=fix ..\opendht\MSVC\msgpack-msvc.patch
-cd ..
-
-FOR %%I IN %DEPENDENCIES% DO (
- ECHO !PASSDEPENDENCIES! | FINDSTR /C:"%%I" >NUL 2>&1 || (
- CALL :cloneOrUpdateRepo "%%I" )
-)
-cd %CURRDIR% >NUL
-GOTO exit
-
-:cloneOrUpdateRepo
-SET REPONAME=%~1
-IF NOT EXIST "%REPONAME%" (
- ECHO %REPONAME%: Existing folder not found. Cloning repository...
- SET REPOURL=%UPSTREAMURL%/%REPONAME%.git
- git clone !REPOURL! --quiet
- cd %REPONAME%
- git config --local core.autocrlf false
- git rm --cached -r . --quiet
- git reset --hard --quiet
- cd ..\
-)
-
-SET PASSDEPENDENCIES=%PASSDEPENDENCIES% %REPONAME%
-
-IF EXIST "%REPONAME%\SMP\project_get_dependencies.bat" (
- ECHO %REPONAME%: Found additional dependencies...
- ECHO.
- cd %REPONAME%\SMP
- project_get_dependencies.bat "!PASSDEPENDENCIES!" || GOTO exitOnError
- cd ..\..
-)
-ECHO.
-EXIT /B %ERRORLEVEL%
-
-:exitOnError
-cd %CURRDIR%
-
-:exit
-(
- ENDLOCAL
- SET PASSDEPENDENCIES=%PASSDEPENDENCIES%
-)
-
-ECHO %CMDCMDLINE% | FINDSTR /L %COMSPEC% >NUL 2>&1
-IF %ERRORLEVEL% == 0 IF "%~1"=="" PAUSE
-
-EXIT /B 0
\ No newline at end of file