aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/angle/CMakeLists.txt6
-rw-r--r--ports/angle/CONTROL2
-rw-r--r--ports/angle/portfile.cmake4
-rw-r--r--ports/imgui/CMakeLists.txt4
-rw-r--r--ports/imgui/CONTROL3
-rw-r--r--ports/imgui/portfile.cmake13
-rw-r--r--ports/libflac/CONTROL2
-rw-r--r--ports/libflac/portfile.cmake12
-rw-r--r--ports/libflac/uwp-createfile2.patch38
-rw-r--r--ports/libflac/uwp-library-console.patch53
-rw-r--r--ports/libsndfile/CONTROL2
-rw-r--r--ports/libsndfile/portfile.cmake7
-rw-r--r--ports/libsndfile/uwp-createfile-getfilesize-addendum.patch13
-rw-r--r--ports/libsndfile/uwp-createfile-getfilesize.patch58
-rw-r--r--ports/mpfr/CMakeLists.txt3
-rw-r--r--ports/mpfr/CONTROL2
-rw-r--r--ports/mpfr/gmp_printf.c6
-rw-r--r--ports/mpfr/portfile.cmake1
-rw-r--r--ports/sdl2/CONTROL2
-rw-r--r--ports/sdl2/portfile.cmake15
-rw-r--r--scripts/cmake/vcpkg_find_acquire_program.cmake8
-rw-r--r--toolsrc/include/vcpkg/base/files.h1
-rw-r--r--toolsrc/include/vcpkg/base/system.h24
-rw-r--r--toolsrc/include/vcpkg/vcpkglib.h15
-rw-r--r--toolsrc/src/vcpkg/base/system.cpp41
-rw-r--r--toolsrc/src/vcpkg/build.cpp12
-rw-r--r--toolsrc/src/vcpkg/commands.create.cpp3
-rw-r--r--toolsrc/src/vcpkg/commands.integrate.cpp2
-rw-r--r--toolsrc/src/vcpkg/export.cpp3
-rw-r--r--toolsrc/src/vcpkg/metrics.cpp5
-rw-r--r--toolsrc/src/vcpkg/vcpkglib.cpp24
-rw-r--r--toolsrc/src/vcpkg/vcpkgpaths.cpp4
32 files changed, 304 insertions, 84 deletions
diff --git a/ports/angle/CMakeLists.txt b/ports/angle/CMakeLists.txt
index 5a4c05359..53fff2223 100644
--- a/ports/angle/CMakeLists.txt
+++ b/ports/angle/CMakeLists.txt
@@ -178,6 +178,7 @@ target_compile_definitions(libGLESv2
-DGL_APICALL=
-DEGLAPI=
)
+target_include_directories(libGLESv2 PUBLIC "$<INSTALL_INTERFACE:include>")
##########
# libEGL
@@ -188,13 +189,16 @@ add_library(libEGL
"src/libEGL/resource.h"
)
target_link_libraries(libEGL PRIVATE angle::common angle::libANGLE libGLESv2)
+target_include_directories(libEGL PUBLIC "$<INSTALL_INTERFACE:include>")
-install(TARGETS libEGL libGLESv2
+install(TARGETS libEGL libGLESv2 EXPORT ANGLEExport
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
+install(EXPORT ANGLEExport FILE unofficial-angle-config.cmake NAMESPACE unofficial::angle:: DESTINATION share/unofficial-angle)
+
if(NOT DISABLE_INSTALL_HEADERS)
install(
DIRECTORY include/
diff --git a/ports/angle/CONTROL b/ports/angle/CONTROL
index 38f8c7c60..12f912ac8 100644
--- a/ports/angle/CONTROL
+++ b/ports/angle/CONTROL
@@ -1,4 +1,4 @@
Source: angle
-Version: 2017-06-14-8d471f-2
+Version: 2017-06-14-8d471f-4
Description: A conformant OpenGL ES implementation for Windows, Mac and Linux.
The goal of ANGLE is to allow users of multiple operating systems to seamlessly run WebGL and other OpenGL ES content by translating OpenGL ES API calls to one of the hardware-supported APIs available for that platform. ANGLE currently provides translation from OpenGL ES 2.0 and 3.0 to desktop OpenGL, OpenGL ES, Direct3D 9, and Direct3D 11. Support for translation from OpenGL ES to Vulkan is underway, and future plans include compute shader support (ES 3.1) and MacOS support.
diff --git a/ports/angle/portfile.cmake b/ports/angle/portfile.cmake
index ab7ebd828..e21aa83bc 100644
--- a/ports/angle/portfile.cmake
+++ b/ports/angle/portfile.cmake
@@ -31,6 +31,10 @@ vcpkg_configure_cmake(
)
vcpkg_install_cmake()
+
+vcpkg_fixup_cmake_targets(CONFIG_PATH share/unofficial-angle)
+file(RENAME ${CURRENT_PACKAGES_DIR}/share/angle ${CURRENT_PACKAGES_DIR}/share/unofficial-angle)
+
vcpkg_copy_pdbs()
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/angle RENAME copyright)
diff --git a/ports/imgui/CMakeLists.txt b/ports/imgui/CMakeLists.txt
index a4c49a337..3658c5cae 100644
--- a/ports/imgui/CMakeLists.txt
+++ b/ports/imgui/CMakeLists.txt
@@ -4,8 +4,6 @@ project(imgui CXX)
set(CMAKE_DEBUG_POSTFIX d)
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
-find_path(STB_INCLUDE_DIR stb_rect_pack.h stb_textedit.h stb_truetype.h)
-
set(IMGUI_INCLUDES_PUBLIC
imgui.h
imconfig.h
@@ -27,8 +25,6 @@ add_library(imgui
${IMGUI_SOURCES}
)
-target_include_directories(imgui PUBLIC ${STB_INCLUDE_DIR})
-
install(TARGETS imgui
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
diff --git a/ports/imgui/CONTROL b/ports/imgui/CONTROL
index 35e041de1..4428d0d45 100644
--- a/ports/imgui/CONTROL
+++ b/ports/imgui/CONTROL
@@ -1,4 +1,3 @@
Source: imgui
-Version: 1.51-1
-Build-Depends: stb
+Version: 1.52
Description: Bloat-free Immediate Mode Graphical User interface for C++ with minimal dependencies.
diff --git a/ports/imgui/portfile.cmake b/ports/imgui/portfile.cmake
index 587a4cf19..385a2396b 100644
--- a/ports/imgui/portfile.cmake
+++ b/ports/imgui/portfile.cmake
@@ -1,23 +1,14 @@
include(vcpkg_common_functions)
-if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
- message(STATUS "Warning: Dynamic building not supported yet. Building static.")
- set(VCPKG_LIBRARY_LINKAGE static)
-endif()
-
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO ocornut/imgui
- REF v1.51
- SHA512 33aea46d0ab8419fcd4af765c9f1a88dfb1b80ad466276b655a67f40ffedabe399db6b0d76a2ece74e551928bd6f842ae3fa42998e0b1a2206157a3852e002d6
+ REF v1.52
+ SHA512 8ada897ae33bcffa222dab4e9ff602611fa27d43f26085b8f96c313fea917d3149f1e3f4640f6156cfb7bc39bcb116106ccb4e8da1409d467e78c93bf9f7ea03
HEAD_REF master
)
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
-file(GLOB STB_HEADERS ${SOURCE_PATH}/stb_*.h)
-if(STB_HEADERS)
- file(REMOVE ${STB_HEADERS})
-endif()
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
diff --git a/ports/libflac/CONTROL b/ports/libflac/CONTROL
index 2a0572d2a..ca2995d68 100644
--- a/ports/libflac/CONTROL
+++ b/ports/libflac/CONTROL
@@ -1,4 +1,4 @@
Source: libflac
-Version: 1.3.2-3
+Version: 1.3.2-4
Description: Library for manipulating FLAC files
Build-Depends: libogg
diff --git a/ports/libflac/portfile.cmake b/ports/libflac/portfile.cmake
index cbf7d6fd3..236f51c8e 100644
--- a/ports/libflac/portfile.cmake
+++ b/ports/libflac/portfile.cmake
@@ -1,8 +1,3 @@
- # libFLAC uses winapi functions not available in WindowsStore
-if (VCPKG_CMAKE_SYSTEM_NAME STREQUAL WindowsStore)
- message(FATAL_ERROR "Error: UWP builds are currently not supported.")
-endif()
-
include(vcpkg_common_functions)
set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/flac-1.3.2)
vcpkg_download_distfile(ARCHIVE
@@ -12,6 +7,13 @@ vcpkg_download_distfile(ARCHIVE
vcpkg_extract_source_archive(${ARCHIVE})
+vcpkg_apply_patches(
+ SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/flac-1.3.2
+ PATCHES
+ "${CMAKE_CURRENT_LIST_DIR}/uwp-library-console.patch"
+ "${CMAKE_CURRENT_LIST_DIR}/uwp-createfile2.patch"
+)
+
if(VCPKG_TARGET_ARCHITECTURE STREQUAL x86)
vcpkg_find_acquire_program(NASM)
get_filename_component(NASM_EXE_PATH ${NASM} DIRECTORY)
diff --git a/ports/libflac/uwp-createfile2.patch b/ports/libflac/uwp-createfile2.patch
new file mode 100644
index 000000000..cfb343990
--- /dev/null
+++ b/ports/libflac/uwp-createfile2.patch
@@ -0,0 +1,38 @@
+diff --git a/src/libFLAC/windows_unicode_filenames.c b/src/libFLAC/windows_unicode_filenames.c
+index 2404e31..d320bf5 100644
+--- a/src/libFLAC/windows_unicode_filenames.c
++++ b/src/libFLAC/windows_unicode_filenames.c
+@@ -185,6 +185,27 @@ int flac_internal_rename_utf8(const char *oldname, const char *newname)
+
+ HANDLE WINAPI flac_internal_CreateFile_utf8(const char *lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile)
+ {
++#if defined (WINAPI_FAMILY_PARTITION) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
++ HANDLE handle = INVALID_HANDLE_VALUE;
++
++ if (!utf8_filenames)
++ return handle;
++
++ wchar_t *wname;
++
++ if ((wname = wchar_from_utf8(lpFileName)) != NULL)
++ {
++ CREATEFILE2_EXTENDED_PARAMETERS cfParams = {0};
++ cfParams.dwSize = sizeof(CREATEFILE2_EXTENDED_PARAMETERS);
++ cfParams.dwFileAttributes = dwFlagsAndAttributes & FILE_ATTRIBUTE_NORMAL;
++ cfParams.lpSecurityAttributes = lpSecurityAttributes;
++ cfParams.hTemplateFile = hTemplateFile;
++ handle = CreateFile2(wname, dwDesiredAccess, dwShareMode, dwCreationDisposition, &cfParams);
++ free(wname);
++ }
++
++ return handle;
++#else
+ if (!utf8_filenames) {
+ return CreateFileA(lpFileName, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile);
+ } else {
+@@ -198,4 +219,5 @@ HANDLE WINAPI flac_internal_CreateFile_utf8(const char *lpFileName, DWORD dwDesi
+
+ return handle;
+ }
++#endif
+ }
diff --git a/ports/libflac/uwp-library-console.patch b/ports/libflac/uwp-library-console.patch
new file mode 100644
index 000000000..bba2422c3
--- /dev/null
+++ b/ports/libflac/uwp-library-console.patch
@@ -0,0 +1,53 @@
+diff --git a/src/share/win_utf8_io/win_utf8_io.c b/src/share/win_utf8_io/win_utf8_io.c
+index c61d27f..0870054 100644
+--- a/src/share/win_utf8_io/win_utf8_io.c
++++ b/src/share/win_utf8_io/win_utf8_io.c
+@@ -110,7 +110,11 @@ int get_utf8_argv(int *argc, char ***argv)
+ char **utf8argv;
+ int ret, i;
+
++#if defined (WINAPI_FAMILY_PARTITION) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
++ if ((handle = LoadPackagedLibrary("msvcrt.dll", 0)) == NULL) return 1;
++#else
+ if ((handle = LoadLibrary("msvcrt.dll")) == NULL) return 1;
++#endif
+ if ((wgetmainargs = (wgetmainargs_t)GetProcAddress(handle, "__wgetmainargs")) == NULL) {
+ FreeLibrary(handle);
+ return 1;
+@@ -163,6 +167,9 @@ size_t strlen_utf8(const char *str)
+ /* get the console width in characters */
+ int win_get_console_width(void)
+ {
++#if defined (WINAPI_FAMILY_PARTITION) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
++ return 80;
++#else
+ int width = 80;
+ CONSOLE_SCREEN_BUFFER_INFO csbi;
+ HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
+@@ -170,6 +177,7 @@ int win_get_console_width(void)
+ if (GetConsoleScreenBufferInfo(hOut, &csbi) != 0)
+ width = csbi.dwSize.X;
+ return width;
++#endif
+ }
+
+ /* print functions */
+@@ -179,6 +187,10 @@ static int wprint_console(FILE *stream, const wchar_t *text, size_t len)
+ DWORD out;
+ int ret;
+
++#if defined (WINAPI_FAMILY_PARTITION) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
++ // disabled for UWP as there's no alternative:
++ // https://docs.microsoft.com/en-us/uwp/win32-and-com/alternatives-to-windows-apis-uwp
++#else
+ do {
+ if (stream == stdout) {
+ HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
+@@ -197,6 +209,7 @@ static int wprint_console(FILE *stream, const wchar_t *text, size_t len)
+ return out;
+ }
+ } while(0);
++#endif
+
+ ret = fputws(text, stream);
+ if (ret < 0)
diff --git a/ports/libsndfile/CONTROL b/ports/libsndfile/CONTROL
index 67e058991..70be2ab6c 100644
--- a/ports/libsndfile/CONTROL
+++ b/ports/libsndfile/CONTROL
@@ -1,4 +1,4 @@
Source: libsndfile
-Version: 1.0.29-6830c42-1
+Version: 1.0.29-6830c42-2
Description: Library to read, write and manipulate many soundfile types. Authored by Eric de Castro Lopo
Build-Depends: libogg, libflac, libvorbis
diff --git a/ports/libsndfile/portfile.cmake b/ports/libsndfile/portfile.cmake
index ac07f96a0..daa7de3ae 100644
--- a/ports/libsndfile/portfile.cmake
+++ b/ports/libsndfile/portfile.cmake
@@ -19,6 +19,13 @@ vcpkg_download_distfile(ARCHIVE
)
vcpkg_extract_source_archive(${ARCHIVE})
+vcpkg_apply_patches(
+ SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/libsndfile-6830c421899e32f8d413a903a21a9b6cf384d369
+ PATCHES
+ "${CMAKE_CURRENT_LIST_DIR}/uwp-createfile-getfilesize.patch"
+ "${CMAKE_CURRENT_LIST_DIR}/uwp-createfile-getfilesize-addendum.patch"
+)
+
if (VCPKG_CRT_LINKAGE STREQUAL "dynamic")
set(CRT_LIB_STATIC 0)
elseif (VCPKG_CRT_LINKAGE STREQUAL "static")
diff --git a/ports/libsndfile/uwp-createfile-getfilesize-addendum.patch b/ports/libsndfile/uwp-createfile-getfilesize-addendum.patch
new file mode 100644
index 000000000..62e6b1131
--- /dev/null
+++ b/ports/libsndfile/uwp-createfile-getfilesize-addendum.patch
@@ -0,0 +1,13 @@
+diff --git a/src/file_io.c b/src/file_io.c
+index 47351bc..54741c9 100644
+--- a/src/file_io.c
++++ b/src/file_io.c
+@@ -799,6 +799,8 @@ psf_open_handle (PSF_FILE * pfile)
+
+ if (handle == INVALID_HANDLE_VALUE)
+ return NULL;
++
++ return handle;
+ #else
+ if (pfile->use_wchar)
+ handle = CreateFileW (
diff --git a/ports/libsndfile/uwp-createfile-getfilesize.patch b/ports/libsndfile/uwp-createfile-getfilesize.patch
new file mode 100644
index 000000000..0e60cde54
--- /dev/null
+++ b/ports/libsndfile/uwp-createfile-getfilesize.patch
@@ -0,0 +1,58 @@
+diff --git a/src/file_io.c b/src/file_io.c
+index 7cf8f0c..47351bc 100644
+--- a/src/file_io.c
++++ b/src/file_io.c
+@@ -787,6 +787,19 @@ psf_open_handle (PSF_FILE * pfile)
+ return NULL ;
+ } ;
+
++#if defined (WINAPI_FAMILY_PARTITION) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
++ if (!pfile->use_wchar)
++ return NULL;
++
++ CREATEFILE2_EXTENDED_PARAMETERS cfParams = {0};
++ cfParams.dwSize = sizeof(CREATEFILE2_EXTENDED_PARAMETERS);
++ cfParams.dwFileAttributes = FILE_ATTRIBUTE_NORMAL;
++
++ handle = CreateFile2(pfile->path.wc, dwDesiredAccess, dwShareMode, dwCreationDistribution, &cfParams);
++
++ if (handle == INVALID_HANDLE_VALUE)
++ return NULL;
++#else
+ if (pfile->use_wchar)
+ handle = CreateFileW (
+ pfile->path.wc, /* pointer to name of the file */
+@@ -812,6 +825,7 @@ psf_open_handle (PSF_FILE * pfile)
+ return NULL ;
+
+ return handle ;
++#endif
+ } /* psf_open_handle */
+
+ /* USE_WINDOWS_API */ static void
+@@ -1104,7 +1118,16 @@ psf_is_pipe (SF_PRIVATE *psf)
+
+ /* USE_WINDOWS_API */ sf_count_t
+ psf_get_filelen_handle (HANDLE handle)
+-{ sf_count_t filelen ;
++{
++#if defined (WINAPI_FAMILY_PARTITION) && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_SYSTEM)
++ LARGE_INTEGER size;
++
++ if (!GetFileSizeEx(handle, &size) && GetLastError() != NO_ERROR)
++ return (sf_count_t) -1 ;
++
++ return size.QuadPart;
++#else
++ sf_count_t filelen ;
+ DWORD dwFileSizeLow, dwFileSizeHigh, dwError = NO_ERROR ;
+
+ dwFileSizeLow = GetFileSize (handle, &dwFileSizeHigh) ;
+@@ -1118,6 +1141,7 @@ psf_get_filelen_handle (HANDLE handle)
+ filelen = dwFileSizeLow + ((__int64) dwFileSizeHigh << 32) ;
+
+ return filelen ;
++#endif
+ } /* psf_get_filelen_handle */
+
+ /* USE_WINDOWS_API */ void
diff --git a/ports/mpfr/CMakeLists.txt b/ports/mpfr/CMakeLists.txt
index 8a989ff28..3fb121b76 100644
--- a/ports/mpfr/CMakeLists.txt
+++ b/ports/mpfr/CMakeLists.txt
@@ -11,6 +11,7 @@ set(GMP_INCLUDE_DIRS ${GMP_INCLUDE_DIR})
# Sources
set(SRCS
+ src/gmp_printf.c
src/mpfr.h
src/mpf2mpfr.h
src/mpfr-gmp.h
@@ -272,4 +273,4 @@ install(
install(
FILES src/mpfr.h
DESTINATION "include"
-) \ No newline at end of file
+)
diff --git a/ports/mpfr/CONTROL b/ports/mpfr/CONTROL
index bec54417d..8482ed8eb 100644
--- a/ports/mpfr/CONTROL
+++ b/ports/mpfr/CONTROL
@@ -1,4 +1,4 @@
Source: mpfr
-Version: 3.1.6
+Version: 3.1.6-1
Description: The MPFR library is a C library for multiple-precision floating-point computations with correct rounding
Build-Depends: mpir
diff --git a/ports/mpfr/gmp_printf.c b/ports/mpfr/gmp_printf.c
new file mode 100644
index 000000000..1ccb94c0c
--- /dev/null
+++ b/ports/mpfr/gmp_printf.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+#include <stdarg.h>
+
+extern int __gmpfr_fprintf(const char *fmt, va_list argp) {
+ return fprintf(stderr, fmt, argp);
+}
diff --git a/ports/mpfr/portfile.cmake b/ports/mpfr/portfile.cmake
index b71aa0505..0e82d2623 100644
--- a/ports/mpfr/portfile.cmake
+++ b/ports/mpfr/portfile.cmake
@@ -8,6 +8,7 @@ vcpkg_download_distfile(ARCHIVE
vcpkg_extract_source_archive(${ARCHIVE})
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/gmp_printf.c DESTINATION ${SOURCE_PATH}/src)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
diff --git a/ports/sdl2/CONTROL b/ports/sdl2/CONTROL
index f662ef6e7..04c88cb24 100644
--- a/ports/sdl2/CONTROL
+++ b/ports/sdl2/CONTROL
@@ -1,3 +1,3 @@
Source: sdl2
-Version: 2.0.7-1
+Version: 2.0.7-2
Description: Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL and Direct3D.
diff --git a/ports/sdl2/portfile.cmake b/ports/sdl2/portfile.cmake
index 9dd029c84..2fe53818e 100644
--- a/ports/sdl2/portfile.cmake
+++ b/ports/sdl2/portfile.cmake
@@ -50,7 +50,7 @@ else()
else()
set(SDL_STATIC_CRT OFF)
endif()
-
+
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
OPTIONS
@@ -61,10 +61,21 @@ else()
)
vcpkg_install_cmake()
-
+
+ file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/lib/manual-link ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link)
+ file(RENAME ${CURRENT_PACKAGES_DIR}/lib/SDL2main.lib ${CURRENT_PACKAGES_DIR}/lib/manual-link/SDL2main.lib)
+ file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/SDL2maind.lib ${CURRENT_PACKAGES_DIR}/debug/lib/manual-link/SDL2maind.lib)
+
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
vcpkg_fixup_cmake_targets(CONFIG_PATH "cmake")
+
+ file(GLOB SHARE_FILES ${CURRENT_PACKAGES_DIR}/share/sdl2/*.cmake)
+ foreach(SHARE_FILE ${SHARE_FILES})
+ file(READ "${SHARE_FILE}" _contents)
+ string(REPLACE "lib/SDL2main" "lib/manual-link/SDL2main" _contents "${_contents}")
+ file(WRITE "${SHARE_FILE}" "${_contents}")
+ endforeach()
endif()
file(INSTALL ${SOURCE_PATH}/COPYING.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/sdl2 RENAME copyright)
diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake
index e6a37e328..066126e6c 100644
--- a/scripts/cmake/vcpkg_find_acquire_program.cmake
+++ b/scripts/cmake/vcpkg_find_acquire_program.cmake
@@ -148,6 +148,14 @@ function(vcpkg_find_acquire_program VAR)
set(URL "https://github.com/wixtoolset/wix3/releases/download/wix311rtm/wix311-binaries.zip")
set(ARCHIVE "wix311-binaries.zip")
set(HASH 74f0fa29b5991ca655e34a9d1000d47d4272e071113fada86727ee943d913177ae96dc3d435eaf494d2158f37560cd4c2c5274176946ebdb17bf2354ced1c516)
+ elseif(VAR MATCHES "SCONS")
+ set(PROGNAME scons)
+ set(REQUIRED_INTERPRETER PYTHON2)
+ set(SCRIPTNAME "scons.py")
+ set(PATHS ${DOWNLOADS}/tools/scons)
+ set(URL "https://sourceforge.net/projects/scons/files/scons-local-3.0.1.zip/download")
+ set(ARCHIVE "scons-local-3.0.1.zip")
+ set(HASH fe121b67b979a4e9580c7f62cfdbe0c243eba62a05b560d6d513ac7f35816d439b26d92fc2d7b7d7241c9ce2a49ea7949455a17587ef53c04a5f5125ac635727)
else()
message(FATAL "unknown tool ${VAR} -- unable to acquire.")
endif()
diff --git a/toolsrc/include/vcpkg/base/files.h b/toolsrc/include/vcpkg/base/files.h
index 63cf3c6fd..51a12ceba 100644
--- a/toolsrc/include/vcpkg/base/files.h
+++ b/toolsrc/include/vcpkg/base/files.h
@@ -15,6 +15,7 @@ namespace fs
using stdfs::copy_options;
using stdfs::file_status;
using stdfs::path;
+ using stdfs::u8path;
inline bool is_regular_file(file_status s) { return stdfs::is_regular_file(s); }
inline bool is_directory(file_status s) { return stdfs::is_directory(s); }
diff --git a/toolsrc/include/vcpkg/base/system.h b/toolsrc/include/vcpkg/base/system.h
index 9f2d91435..db537db4b 100644
--- a/toolsrc/include/vcpkg/base/system.h
+++ b/toolsrc/include/vcpkg/base/system.h
@@ -10,6 +10,28 @@ namespace vcpkg::System
fs::path get_exe_path_of_current_process();
+ struct CMakeVariable
+ {
+ CMakeVariable(const CStringView varname, const char* varvalue);
+ CMakeVariable(const CStringView varname, const std::string& varvalue);
+ CMakeVariable(const CStringView varname, const fs::path& path);
+
+ std::string s;
+ };
+
+ std::string make_cmake_cmd(const fs::path& cmake_exe,
+ const fs::path& cmake_script,
+ const std::vector<CMakeVariable>& pass_variables);
+
+ struct PowershellParameter
+ {
+ PowershellParameter(const CStringView varname, const char* varvalue);
+ PowershellParameter(const CStringView varname, const std::string& varvalue);
+ PowershellParameter(const CStringView varname, const fs::path& path);
+
+ std::string s;
+ };
+
struct ExitCodeAndOutput
{
int exit_code;
@@ -24,7 +46,7 @@ namespace vcpkg::System
std::string powershell_execute_and_capture_output(const std::string& title,
const fs::path& script_path,
- const CStringView args = "");
+ const std::vector<PowershellParameter>& parameters = {});
enum class Color
{
diff --git a/toolsrc/include/vcpkg/vcpkglib.h b/toolsrc/include/vcpkg/vcpkglib.h
index 9a7fdb861..3c8e676bf 100644
--- a/toolsrc/include/vcpkg/vcpkglib.h
+++ b/toolsrc/include/vcpkg/vcpkglib.h
@@ -20,18 +20,5 @@ namespace vcpkg
std::vector<StatusParagraphAndAssociatedFiles> get_installed_files(const VcpkgPaths& paths,
const StatusParagraphs& status_db);
- struct CMakeVariable
- {
- CMakeVariable(const CStringView varname, const char* varvalue);
- CMakeVariable(const CStringView varname, const std::string& varvalue);
- CMakeVariable(const CStringView varname, const fs::path& path);
-
- std::string s;
- };
-
- std::string make_cmake_cmd(const fs::path& cmake_exe,
- const fs::path& cmake_script,
- const std::vector<CMakeVariable>& pass_variables);
-
- std::string shorten_text(const std::string& desc, size_t length);
+ std::string shorten_text(const std::string& desc, const size_t length);
} // namespace vcpkg
diff --git a/toolsrc/src/vcpkg/base/system.cpp b/toolsrc/src/vcpkg/base/system.cpp
index 47096ed63..56b725f6b 100644
--- a/toolsrc/src/vcpkg/base/system.cpp
+++ b/toolsrc/src/vcpkg/base/system.cpp
@@ -72,6 +72,43 @@ namespace vcpkg::System
return supported_architectures;
}
+ CMakeVariable::CMakeVariable(const CStringView varname, const char* varvalue)
+ : s(Strings::format(R"("-D%s=%s")", varname, varvalue))
+ {
+ }
+ CMakeVariable::CMakeVariable(const CStringView varname, const std::string& varvalue)
+ : CMakeVariable(varname, varvalue.c_str())
+ {
+ }
+ CMakeVariable::CMakeVariable(const CStringView varname, const fs::path& path)
+ : CMakeVariable(varname, path.generic_u8string())
+ {
+ }
+
+ std::string make_cmake_cmd(const fs::path& cmake_exe,
+ const fs::path& cmake_script,
+ const std::vector<CMakeVariable>& pass_variables)
+ {
+ const std::string cmd_cmake_pass_variables = Strings::join(" ", pass_variables, [](auto&& v) { return v.s; });
+ return Strings::format(
+ R"("%s" %s -P "%s")", cmake_exe.u8string(), cmd_cmake_pass_variables, cmake_script.generic_u8string());
+ }
+
+ PowershellParameter::PowershellParameter(const CStringView varname, const char* varvalue)
+ : s(Strings::format(R"(-%s '%s')", varname, varvalue))
+ {
+ }
+
+ PowershellParameter::PowershellParameter(const CStringView varname, const std::string& varvalue)
+ : PowershellParameter(varname, varvalue.c_str())
+ {
+ }
+
+ PowershellParameter::PowershellParameter(const CStringView varname, const fs::path& path)
+ : PowershellParameter(varname, path.generic_u8string())
+ {
+ }
+
int cmd_execute_clean(const CStringView cmd_line)
{
#if defined(_WIN32)
@@ -272,8 +309,10 @@ namespace vcpkg::System
std::string powershell_execute_and_capture_output(const std::string& title,
const fs::path& script_path,
- const CStringView args)
+ const std::vector<PowershellParameter>& parameters)
{
+ const std::string args = Strings::join(" ", parameters, [](auto&& v) { return v.s; });
+
// TODO: switch out ExecutionPolicy Bypass with "Remove Mark Of The Web" code and restore RemoteSigned
const std::string cmd = Strings::format(
R"(powershell -NoProfile -ExecutionPolicy Bypass -Command "& {& '%s' %s}")", script_path.u8string(), args);
diff --git a/toolsrc/src/vcpkg/build.cpp b/toolsrc/src/vcpkg/build.cpp
index e3787a97e..804573d91 100644
--- a/toolsrc/src/vcpkg/build.cpp
+++ b/toolsrc/src/vcpkg/build.cpp
@@ -301,7 +301,7 @@ namespace vcpkg::Build
const Toolset& toolset = paths.get_toolset(pre_build_info.platform_toolset, pre_build_info.visual_studio_path);
- const std::string cmd_launch_cmake = make_cmake_cmd(
+ const std::string cmd_launch_cmake = System::make_cmake_cmd(
cmake_exe_path,
ports_cmake_script_path,
{
@@ -493,11 +493,11 @@ namespace vcpkg::Build
const fs::path ports_cmake_script_path = paths.scripts / "get_triplet_environment.cmake";
const fs::path triplet_file_path = paths.triplets / (triplet.canonical_name() + ".cmake");
- const auto cmd_launch_cmake = make_cmake_cmd(cmake_exe_path,
- ports_cmake_script_path,
- {
- {"CMAKE_TRIPLET_FILE", triplet_file_path},
- });
+ const auto cmd_launch_cmake = System::make_cmake_cmd(cmake_exe_path,
+ ports_cmake_script_path,
+ {
+ {"CMAKE_TRIPLET_FILE", triplet_file_path},
+ });
const auto ec_data = System::cmd_execute_and_capture_output(cmd_launch_cmake);
Checks::check_exit(VCPKG_LINE_INFO, ec_data.exit_code == 0, ec_data.output);
diff --git a/toolsrc/src/vcpkg/commands.create.cpp b/toolsrc/src/vcpkg/commands.create.cpp
index c7183d257..44f5f7928 100644
--- a/toolsrc/src/vcpkg/commands.create.cpp
+++ b/toolsrc/src/vcpkg/commands.create.cpp
@@ -4,7 +4,6 @@
#include <vcpkg/base/system.h>
#include <vcpkg/commands.h>
#include <vcpkg/help.h>
-#include <vcpkg/vcpkglib.h>
namespace vcpkg::Commands::Create
{
@@ -25,7 +24,7 @@ namespace vcpkg::Commands::Create
const fs::path& cmake_exe = paths.get_cmake_exe();
- std::vector<CMakeVariable> cmake_args{{"CMD", "CREATE"}, {"PORT", port_name}, {"URL", url}};
+ std::vector<System::CMakeVariable> cmake_args{{"CMD", "CREATE"}, {"PORT", port_name}, {"URL", url}};
if (args.command_arguments.size() >= 3)
{
diff --git a/toolsrc/src/vcpkg/commands.integrate.cpp b/toolsrc/src/vcpkg/commands.integrate.cpp
index 31b9ec722..f13a999fa 100644
--- a/toolsrc/src/vcpkg/commands.integrate.cpp
+++ b/toolsrc/src/vcpkg/commands.integrate.cpp
@@ -139,7 +139,7 @@ namespace vcpkg::Commands::Integrate
static fs::path get_appdata_targets_path()
{
static const fs::path LOCAL_APP_DATA =
- fs::path(System::get_environment_variable("LOCALAPPDATA").value_or_exit(VCPKG_LINE_INFO));
+ fs::u8path(System::get_environment_variable("LOCALAPPDATA").value_or_exit(VCPKG_LINE_INFO));
return LOCAL_APP_DATA / "vcpkg" / "vcpkg.user.targets";
}
#endif
diff --git a/toolsrc/src/vcpkg/export.cpp b/toolsrc/src/vcpkg/export.cpp
index 9b86863eb..f237c72f8 100644
--- a/toolsrc/src/vcpkg/export.cpp
+++ b/toolsrc/src/vcpkg/export.cpp
@@ -369,7 +369,8 @@ namespace vcpkg::Export
static void print_next_step_info(const fs::path& prefix)
{
const fs::path cmake_toolchain = prefix / "scripts" / "buildsystems" / "vcpkg.cmake";
- const CMakeVariable cmake_variable = CMakeVariable("CMAKE_TOOLCHAIN_FILE", cmake_toolchain.generic_string());
+ const System::CMakeVariable cmake_variable =
+ System::CMakeVariable("CMAKE_TOOLCHAIN_FILE", cmake_toolchain.generic_string());
System::println("\n"
"To use the exported libraries in CMake projects use:"
"\n"
diff --git a/toolsrc/src/vcpkg/metrics.cpp b/toolsrc/src/vcpkg/metrics.cpp
index d7e18a176..69160705c 100644
--- a/toolsrc/src/vcpkg/metrics.cpp
+++ b/toolsrc/src/vcpkg/metrics.cpp
@@ -255,9 +255,10 @@ namespace vcpkg::Metrics
auto match = *next;
if (match[0] != "00-00-00-00-00-00")
{
- std::string matchstr = match[0];
+ const std::string matchstr = match[0];
+ const System::PowershellParameter value("Value", matchstr);
auto hash_result = System::powershell_execute_and_capture_output(
- "SHA256Hash", get_vcpkg_root() / "SHA256Hash.ps1", Strings::format("-Value \"%s\"", matchstr));
+ "SHA256Hash", get_vcpkg_root() / "scripts" / "SHA256Hash.ps1", {value});
Util::erase_remove_if(hash_result,
[](char ch) { return !(ch >= 'A' && ch <= 'F') && !(ch >= '0' && ch <= '9'); });
hash_result = Strings::ascii_to_lowercase(hash_result);
diff --git a/toolsrc/src/vcpkg/vcpkglib.cpp b/toolsrc/src/vcpkg/vcpkglib.cpp
index 38b130f6f..5b2cec4d0 100644
--- a/toolsrc/src/vcpkg/vcpkglib.cpp
+++ b/toolsrc/src/vcpkg/vcpkglib.cpp
@@ -212,29 +212,7 @@ namespace vcpkg
return installed_files;
}
- CMakeVariable::CMakeVariable(const CStringView varname, const char* varvalue)
- : s(Strings::format(R"("-D%s=%s")", varname, varvalue))
- {
- }
- CMakeVariable::CMakeVariable(const CStringView varname, const std::string& varvalue)
- : CMakeVariable(varname, varvalue.c_str())
- {
- }
- CMakeVariable::CMakeVariable(const CStringView varname, const fs::path& path)
- : CMakeVariable(varname, path.generic_u8string())
- {
- }
-
- std::string make_cmake_cmd(const fs::path& cmake_exe,
- const fs::path& cmake_script,
- const std::vector<CMakeVariable>& pass_variables)
- {
- const std::string cmd_cmake_pass_variables = Strings::join(" ", pass_variables, [](auto&& v) { return v.s; });
- return Strings::format(
- R"("%s" %s -P "%s")", cmake_exe.u8string(), cmd_cmake_pass_variables, cmake_script.generic_u8string());
- }
-
- std::string shorten_text(const std::string& desc, size_t length)
+ std::string shorten_text(const std::string& desc, const size_t length)
{
Checks::check_exit(VCPKG_LINE_INFO, length >= 3);
auto simple_desc = std::regex_replace(desc, std::regex("\\s+"), " ");
diff --git a/toolsrc/src/vcpkg/vcpkgpaths.cpp b/toolsrc/src/vcpkg/vcpkgpaths.cpp
index a553f4199..460979693 100644
--- a/toolsrc/src/vcpkg/vcpkgpaths.cpp
+++ b/toolsrc/src/vcpkg/vcpkgpaths.cpp
@@ -92,8 +92,8 @@ namespace vcpkg
version_as_string);
const fs::path script = scripts_folder / "fetchDependency.ps1";
const std::string title = "Fetching %s version %s (No sufficient installed version was found)";
- const std::string output =
- System::powershell_execute_and_capture_output(title, script, Strings::format("-Dependency %s", tool_name));
+ const System::PowershellParameter dependency_param("Dependency", tool_name);
+ const std::string output = System::powershell_execute_and_capture_output(title, script, {dependency_param});
const std::vector<std::string> dependency_path = keep_data_lines(output);
Checks::check_exit(