diff --git a/docs/maintainers/control-files.md b/docs/maintainers/control-files.md
index a074a7ae22632f..87468e6af8843b 100644
--- a/docs/maintainers/control-files.md
+++ b/docs/maintainers/control-files.md
@@ -8,7 +8,7 @@ Field names are case-sensitive and start the line without leading whitespace. P
## Source Paragraph
-The first paragraph in a `CONTROL` file is the Source paragraph. It must have a `Source`, `Version`, and `Description` field. It can optionally have a `Build-Depends` and `Default-Features` field.
+The first paragraph in a `CONTROL` file is the Source paragraph. It must have a `Source`, `Version`, and `Description` field. The full set of fields is documented below.
### Examples:
```no-highlight
@@ -58,7 +58,7 @@ For example, given:
Then if you update the source version today, you should give it version `2019-06-01`. If you need to make a change which doesn't adjust the source version, you should give it version `2019-02-14-2`.
-Example:
+##### Examples:
```no-highlight
Version: 1.0.5-2
```
@@ -71,7 +71,7 @@ A description of the library.
By convention the first line of the description is a summary of the library. An optional detailed description follows. The detailed description can be multiple lines, all starting with whitespace.
-Example:
+##### Examples:
```no-highlight
Description: C++ header-only JSON library
```
@@ -96,17 +96,13 @@ Vcpkg does not distinguish between build-only dependencies and runtime dependenc
*For example: websocketpp is a header only library, and thus does not require any dependencies at install time. However, downstream users need boost and openssl to make use of the library. Therefore, websocketpp lists boost and openssl as dependencies*
-Example:
-```no-highlight
-Build-Depends: zlib, libpng, libjpeg-turbo, tiff
-```
-If the port is dependent on optional features of another library those can be specified using the `portname[featurelist]` syntax.
+If the port is dependent on optional features of another library those can be specified using the `portname[featurelist]` syntax. If the port does not require any features from the dependency, this should be specifed as `portname[core]`.
-Dependencies can be filtered based on the target triplet to support different requirements on Windows Desktop versus the Universal Windows Platform. Currently, the string inside parentheses is substring-compared against the triplet name. There must be a space between the name of the port and the filter. __This will change in a future version to not depend on the triplet name.__
+Dependencies can be filtered based on the target triplet to support differing requirements. These filters use the same syntax as the Supports field below and are surrounded in parentheses following the portname and feature list.
-Example:
+##### Example:
```no-highlight
-Build-Depends: curl[openssl] (!windows&!osx), curl[winssl] (windows), curl[darwinssl] (osx)
+Build-Depends: rapidjson, curl[core,openssl] (!windows), curl[core,winssl] (windows)
```
#### Default-Features
@@ -114,10 +110,46 @@ Comma separated list of optional port features to install by default.
This field is optional.
+##### Example:
```no-highlight
Default-Features: dynamodb, s3, kinesis
```
+
+#### Supports
+Expression that evaluates to true when the port is expected to build successfully for a triplet.
+
+Currently, this field is only used in the CI testing to skip ports. In the future, this mechanism is intended to warn users in advance that a given install tree is not expected to succeed. Therefore, this field should be used optimistically; in cases where a port is expected to succeed 10% of the time, it should still be marked "supported".
+
+The grammar for the supports expression uses standard operators:
+- `!expr` - negation
+- `expr|expr` - or (`||` is also supported)
+- `expr&expr` - and (`&&` is also supported)
+- `(expr)` - grouping/precedence
+
+The predefined expressions are computed from standard triplet settings:
+- `x64` - `VCPKG_TARGET_ARCHITECTURE` == `"x64"`
+- `x86` - `VCPKG_TARGET_ARCHITECTURE` == `"x86"`
+- `arm` - `VCPKG_TARGET_ARCHITECTURE` == `"arm"` or `VCPKG_TARGET_ARCHITECTURE` == `"arm64"`
+- `arm64` - `VCPKG_TARGET_ARCHITECTURE` == `"arm64"`
+- `windows` - `VCPKG_CMAKE_SYSTEM_NAME` == `""` or `VCPKG_CMAKE_SYSTEM_NAME` == `"WindowsStore"`
+- `uwp` - `VCPKG_CMAKE_SYSTEM_NAME` == `"WindowsStore"`
+- `linux` - `VCPKG_CMAKE_SYSTEM_NAME` == `"Linux"`
+- `osx` - `VCPKG_CMAKE_SYSTEM_NAME` == `"Darwin"`
+- `android` - `VCPKG_CMAKE_SYSTEM_NAME` == `"Android"`
+- `static` - `VCPKG_LIBRARY_LINKAGE` == `"static"`
+
+These predefined expressions can be overridden in the triplet file via the [`VCPKG_DEP_INFO_OVERRIDE_VARS`](../users/triplets.md) option.
+
+This field is optional and defaults to true.
+
+> Implementers' Note: these terms are computed from the triplet via the `vcpkg_get_dep_info` mechanism.
+
+##### Example:
+```no-highlight
+Supports: !(uwp|arm)
+```
+
## Feature Paragraphs
Multiple optional features can be specified in the `CONTROL` files. It must have a `Feature` and `Description` field. It can optionally have a `Build-Depends` field. It must be separated from other paragraphs by one or more empty lines.
diff --git a/docs/users/triplets.md b/docs/users/triplets.md
index 6e52d347d8f023..21dea5c3168d47 100644
--- a/docs/users/triplets.md
+++ b/docs/users/triplets.md
@@ -2,20 +2,17 @@
Triplet is a standard term used in cross compiling as a way to completely capture the target environment (cpu, os, compiler, runtime, etc) in a single convenient name.
-In Vcpkg, we use triplets to describe self-consistent builds of library sets. This means every library will be built using the same target cpu, OS, and compiler toolchain, but also CRT linkage and preferred library type.
+In Vcpkg, we use triplets to describe an imaginary "target configuration set" for every library. Within a triplet, libraries are generally built with the same configuration, but it is not a requirement. For example, you could have one triplet that builds `openssl` statically and `zlib` dynamically, one that builds them both statically, and one that builds them both dynamically (all for the same target OS and architecture). A single build will consume files from a single triplet.
We currently provide many triplets by default (run `vcpkg help triplet`). However, you can easily add your own by creating a new file in the `triplets\` directory. The new triplet will immediately be available for use in commands, such as `vcpkg install boost:x86-windows-custom`.
To change the triplet used by your project, such as to enable static linking, see our [Integration Document](integration.md#triplet-selection).
-
## Community triplets
-Triplets contained in the `triplets\community` folder are not tested by continuous integration.
-
-These triplets contain configurations commonly requested by the community, but for which we lack the resources to properly test.
+Triplets contained in the `triplets\community` folder are not tested by continuous integration, but are commonly requested by the community.
-Port updates may break compatibility with community triplets, such regressions won't get caught by our testing pipelines. Because of this, community involvement is paramount!
+Because we do not have continuous coverage, port updates may break compatibility with community triplets. Because of this, community involvement is paramount!
We will gladly accept and review contributions that aim to solve issues with these triplets.
@@ -23,7 +20,7 @@ We will gladly accept and review contributions that aim to solve issues with the
Community Triplets are enabled by default, when using a community triplet a message like the following one will be printed during a package install:
-```bash
+```no-highlight
-- Using community triplet x86-uwp. This triplet configuration is not guaranteed to succeed.
-- [COMMUNITY] Loading triplet configuration from: D:\src\viromer\vcpkg\triplets\community\x86-uwp.cmake
```
@@ -78,8 +75,29 @@ This option also has forms for configuration-specific and C flags:
- `VCPKG_C_FLAGS_DEBUG`
- `VCPKG_C_FLAGS_RELEASE`
+
+### VCPKG_DEP_INFO_OVERRIDE_VARS
+Replaces the default computed list of triplet "Supports" terms.
+
+This option (if set) will override the default set of terms used for qualified dependency resolution and "Supports" field evaluation.
+
+See the [`Supports`](../maintainers/control-files.md#Supports) control file field documentation for more details.
+
+> Implementers' Note: this list is extracted via the `vcpkg_get_dep_info` mechanism.
+
## Windows Variables
+### VCPKG_ENV_PASSTHROUGH
+Instructs vcpkg to allow additional environment variables into the build process.
+
+On Windows, vcpkg builds packages in a special clean environment that is isolated from the current command prompt to ensure build reliability and consistency.
+
+This triplet option can be set to a list of additional environment variables that will be added to the clean environment.
+
+See also the `vcpkg env` command for how you can inspect the precise environment that will be used.
+
+> Implementers' Note: this list is extracted via the `vcpkg_get_tags` mechanism.
+
### VCPKG_VISUAL_STUDIO_PATH
Specifies the Visual Studio installation to use.
diff --git a/ports/abseil/CONTROL b/ports/abseil/CONTROL
index 459eeee3f6e810..01f27c758a5f14 100644
--- a/ports/abseil/CONTROL
+++ b/ports/abseil/CONTROL
@@ -5,3 +5,4 @@ Description: an open-source collection designed to augment the C++ standard libr
Abseil is an open-source collection of C++ library code designed to augment the C++ standard library. The Abseil library code is collected from Google's own C++ code base, has been extensively tested and used in production, and is the same code we depend on in our daily coding lives.
In some cases, Abseil provides pieces missing from the C++ standard; in others, Abseil provides alternatives to the standard for special needs we've found through usage in the Google code base. We denote those cases clearly within the library code we provide you.
Abseil is not meant to be a competitor to the standard library; we've just found that many of these utilities serve a purpose within our code base, and we now want to provide those resources to the C++ community as a whole.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/ace/CONTROL b/ports/ace/CONTROL
index 1530b043abd695..4cf1db8bc45233 100644
--- a/ports/ace/CONTROL
+++ b/ports/ace/CONTROL
@@ -2,6 +2,7 @@ Source: ace
Version: 6.5.7-1
Homepage: https://www.dre.vanderbilt.edu/~schmidt/ACE.html
Description: The ADAPTIVE Communication Environment
+Supports: !uwp
Feature: wchar
Description: Enable extra wide char functions in ACE
diff --git a/ports/activemq-cpp/CONTROL b/ports/activemq-cpp/CONTROL
index 5a7ade4e97df3e..891c51ee7e2ec7 100644
--- a/ports/activemq-cpp/CONTROL
+++ b/ports/activemq-cpp/CONTROL
@@ -2,3 +2,4 @@ Source: activemq-cpp
Version: 3.9.5-1
Build-Depends: apr
Description: Apache ActiveMQ is the most popular and powerful open source messaging and Integration Patterns server.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/akali/portfile.cmake b/ports/akali/portfile.cmake
index e1be350182db68..aa59b038962cdc 100644
--- a/ports/akali/portfile.cmake
+++ b/ports/akali/portfile.cmake
@@ -12,7 +12,8 @@ string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" AKALI_STATIC)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
- PREFER_NINJA
+ DISABLE_PARALLEL_CONFIGURE
+ PREFER_NINJA
OPTIONS
-DAKALI_STATIC:BOOL=${AKALI_STATIC}
-DBUILD_TESTS:BOOL=OFF
diff --git a/ports/alac/CONTROL b/ports/alac/CONTROL
index 1bea4dc14549c1..7938d6b7144dbf 100644
--- a/ports/alac/CONTROL
+++ b/ports/alac/CONTROL
@@ -2,3 +2,4 @@ Source: alac
Version: 2017-11-03-c38887c5-1
Homepage: https://github.com/macosforge/alac
Description: The Apple Lossless Audio Codec (ALAC) is a lossless audio codec developed by Apple and deployed on all of its platforms and devices.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/aliyun-oss-c-sdk/CONTROL b/ports/aliyun-oss-c-sdk/CONTROL
index 430541401bbb4b..fdf8c658b7cfbd 100644
--- a/ports/aliyun-oss-c-sdk/CONTROL
+++ b/ports/aliyun-oss-c-sdk/CONTROL
@@ -2,3 +2,4 @@ Source: aliyun-oss-c-sdk
Version: 3.7.1-1
Description: Alibaba Cloud Object Storage Service (OSS) is a cloud storage service provided by Alibaba Cloud, featuring massive capacity, security, a low cost, and high reliability.
Build-Depends: curl, apr-util
+Supports: !uwp
diff --git a/ports/ampl-mp/CONTROL b/ports/ampl-mp/CONTROL
index d45564c4f325d3..a8f88ac553cbae 100644
--- a/ports/ampl-mp/CONTROL
+++ b/ports/ampl-mp/CONTROL
@@ -1,3 +1,4 @@
Source: ampl-mp
Version: 2019-03-21-1
Description: An open-source library for mathematical programming
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/apr/CONTROL b/ports/apr/CONTROL
index 7465836035de43..714022691d13f3 100644
--- a/ports/apr/CONTROL
+++ b/ports/apr/CONTROL
@@ -2,6 +2,7 @@ Source: apr
Version: 1.6.5-3
Homepage: https://apr.apache.org/
Description: The Apache Portable Runtime (APR) is a C library that forms a system portability layer that covers many operating systems.
+Supports: !uwp
Feature: private-headers
Description: Install non-standard files required for building Apache httpd
diff --git a/ports/arrow/CONTROL b/ports/arrow/CONTROL
index 780568f03e244a..896f78af487f63 100644
--- a/ports/arrow/CONTROL
+++ b/ports/arrow/CONTROL
@@ -3,3 +3,4 @@ Version: 0.15.1
Build-Depends: boost-system, boost-filesystem, boost-multiprecision, boost-algorithm, flatbuffers, rapidjson, zlib, lz4, brotli, zstd, snappy, gflags, thrift, double-conversion, glog, uriparser
Homepage: https://github.com/apache/arrow
Description: Apache Arrow is a columnar in-memory analytics layer designed to accelerate big data. It houses a set of canonical in-memory representations of flat and hierarchical data along with multiple language-bindings for structure manipulation. It also provides IPC and common algorithm implementations.
+Supports: x64
\ No newline at end of file
diff --git a/ports/aws-sdk-cpp/CONTROL b/ports/aws-sdk-cpp/CONTROL
index 625d1f3de5651f..93be6843d8cf98 100644
--- a/ports/aws-sdk-cpp/CONTROL
+++ b/ports/aws-sdk-cpp/CONTROL
@@ -1,5 +1,5 @@
Source: aws-sdk-cpp
-Version: 1.7.214
+Version: 1.7.214-1
Homepage: https://github.com/aws/aws-sdk-cpp
Description: AWS SDK for C++
Build-Depends: openssl (!uwp&!windows), curl (!uwp&!windows), aws-c-event-stream
diff --git a/ports/aws-sdk-cpp/portfile.cmake b/ports/aws-sdk-cpp/portfile.cmake
index b058608f350108..9fa6b2f5fd8303 100644
--- a/ports/aws-sdk-cpp/portfile.cmake
+++ b/ports/aws-sdk-cpp/portfile.cmake
@@ -3,7 +3,7 @@ vcpkg_buildpath_length_warning(37)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO aws/aws-sdk-cpp
- REF e8a7e7263e900983921e95363026efaa494622ab # 1.7.214
+ REF e8a7e7263e900983921e95363026efaa494622ab # 1.7.214
SHA512 dc4e003ffaebf21410d8d360f8a4602dda99d3ee0c0ab7fb61c97fe8b5f0b38438ed5315fb85d3a435cd5a99724e43c5cf569a7cb365ed8137caeac32c619a86
HEAD_REF master
)
@@ -14,14 +14,11 @@ set(BUILD_ONLY core)
include(${CMAKE_CURRENT_LIST_DIR}/compute_build_only.cmake)
-if(CMAKE_HOST_WIN32)
- string(REPLACE ";" "\\\\\\;" BUILD_ONLY "${BUILD_ONLY}")
-else()
- string(REPLACE ";" "\\\\\\\\\\\;" BUILD_ONLY "${BUILD_ONLY}")
-endif()
+string(REPLACE ";" "\\\\\\\\\\\;" BUILD_ONLY "${BUILD_ONLY}")
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
+ DISABLE_PARALLEL_CONFIGURE
PREFER_NINJA
OPTIONS
-DENABLE_UNITY_BUILD=ON
diff --git a/ports/azure-storage-cpp/CONTROL b/ports/azure-storage-cpp/CONTROL
index be93299da61577..66a402f8f8a348 100644
--- a/ports/azure-storage-cpp/CONTROL
+++ b/ports/azure-storage-cpp/CONTROL
@@ -4,3 +4,4 @@ Build-Depends: cpprestsdk[core], atlmfc (windows), boost-log (!windows&!uwp), bo
Description: Microsoft Azure Storage Client SDK for C++
A client library for working with Microsoft Azure storage services including blobs, files, tables, and queues. This client library enables working with the Microsoft Azure storage services which include the blob service for storing binary and text data, the file service for storing binary and text data, the table service for storing structured non-relational data, and the queue service for storing messages that may be accessed by a client.
Homepage: https://blogs.msdn.com/b/windowsazurestorage/
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/benchmark/CONTROL b/ports/benchmark/CONTROL
index 27c4c82562de6b..d82040748d51c3 100644
--- a/ports/benchmark/CONTROL
+++ b/ports/benchmark/CONTROL
@@ -2,3 +2,4 @@ Source: benchmark
Version: 1.5
Homepage: https://github.com/google/benchmark
Description: A library to support the benchmarking of functions, similar to unit-tests.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/berkeleydb/CONTROL b/ports/berkeleydb/CONTROL
index 7d93c230c952c4..75c856c084364f 100644
--- a/ports/berkeleydb/CONTROL
+++ b/ports/berkeleydb/CONTROL
@@ -2,3 +2,4 @@ Source: berkeleydb
Version: 4.8.30-3
Homepage: https://download.oracle.com/
Description: BDB - A high-performance embedded database for key/value data.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/c-ares/CONTROL b/ports/c-ares/CONTROL
index c8a5f48542637b..4898ec5dedfc08 100644
--- a/ports/c-ares/CONTROL
+++ b/ports/c-ares/CONTROL
@@ -2,3 +2,4 @@ Source: c-ares
Version: 2019-5-2-1
Homepage: https://github.com/c-ares/c-ares
Description: A C library for asynchronous DNS requests
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/caffe2/CONTROL b/ports/caffe2/CONTROL
index 4d72fb76450316..e9bb4dbd7b0564 100644
--- a/ports/caffe2/CONTROL
+++ b/ports/caffe2/CONTROL
@@ -3,3 +3,4 @@ Version: 0.8.1-3
Build-Depends: lmdb, gflags, glog, eigen3, protobuf
Homepage: https://github.com/caffe2/caffe2
Description: Caffe2 is a lightweight, modular, and scalable deep learning framework.
+Supports: !x86
\ No newline at end of file
diff --git a/ports/capnproto/CONTROL b/ports/capnproto/CONTROL
index 02cc080f17e634..cb1258c979f1a5 100644
--- a/ports/capnproto/CONTROL
+++ b/ports/capnproto/CONTROL
@@ -3,3 +3,4 @@ Version: 0.7.0-3
Description: Data interchange format and capability-based RPC system
Homepage: https://capnproto.org/
Build-Depends: zlib
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/civetweb/CONTROL b/ports/civetweb/CONTROL
index b24a4ffeca1ee0..07b7306f1481f0 100644
--- a/ports/civetweb/CONTROL
+++ b/ports/civetweb/CONTROL
@@ -1,3 +1,4 @@
Source: civetweb
Version: 2019-07-05
Description: Easy to use, powerful, C/C++ embeddable web server.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/coroutine/CONTROL b/ports/coroutine/CONTROL
index 13c8e3d21cc882..c716f258591be4 100644
--- a/ports/coroutine/CONTROL
+++ b/ports/coroutine/CONTROL
@@ -2,3 +2,4 @@ Source: coroutine
Version: 2020-01-13
Build-Depends: ms-gsl
Description: C++ coroutine helper/example library
+Supports: !x86
\ No newline at end of file
diff --git a/ports/cpp-netlib/CONTROL b/ports/cpp-netlib/CONTROL
index 845a89e660183b..70c70b13f9ec73 100644
--- a/ports/cpp-netlib/CONTROL
+++ b/ports/cpp-netlib/CONTROL
@@ -3,3 +3,4 @@ Version: 0.13.0-3
Homepage: https://cpp-netlib.org/
Build-Depends: boost
Description: A collection of network-related routines/implementations geared towards providing a robust cross-platform networking library
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/cppfs/CONTROL b/ports/cppfs/CONTROL
index d94532e8a8051c..c97527ff4a698a 100644
--- a/ports/cppfs/CONTROL
+++ b/ports/cppfs/CONTROL
@@ -1,6 +1,7 @@
Source: cppfs
Version: 1.2.0-1
Description: Cross-platform C++ file system library supporting multiple backends
+Supports: !uwp
Feature: ssh
Description: SSH backend for cppfs
diff --git a/ports/cppitertools/CONTROL b/ports/cppitertools/CONTROL
index 8c5f387ec84011..579a85a693cbe5 100644
--- a/ports/cppitertools/CONTROL
+++ b/ports/cppitertools/CONTROL
@@ -1,4 +1,4 @@
Source: cppitertools
-Version: 2019-04-14-2
+Version: 2019-04-14-3
Description: Range-based for loop add-ons inspired by the Python builtins and itertools library
Build-Depends: boost-optional
diff --git a/ports/cppitertools/portfile.cmake b/ports/cppitertools/portfile.cmake
index f19069a3b1f04f..26b6ee93b84a73 100644
--- a/ports/cppitertools/portfile.cmake
+++ b/ports/cppitertools/portfile.cmake
@@ -1,7 +1,3 @@
-# header-only library
-
-include(vcpkg_common_functions)
-
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO ryanhaining/cppitertools
@@ -13,8 +9,8 @@ vcpkg_from_github(
file(GLOB INCLUDE_FILES ${SOURCE_PATH}/*.hpp)
file(GLOB INCLUDE_INTERNAL_FILES ${SOURCE_PATH}/internal/*.hpp)
-file(COPY ${INCLUDE_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/include)
-file(COPY ${INCLUDE_INTERNAL_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/include/internal)
+file(COPY ${INCLUDE_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/include/cppitertools)
+file(COPY ${INCLUDE_INTERNAL_FILES} DESTINATION ${CURRENT_PACKAGES_DIR}/include/cppitertools/internal)
# Handle copyright
configure_file(${SOURCE_PATH}/LICENSE.md ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright COPYONLY)
diff --git a/ports/cudnn/CONTROL b/ports/cudnn/CONTROL
index cc8019b5b74d40..4ab7c941b9d053 100644
--- a/ports/cudnn/CONTROL
+++ b/ports/cudnn/CONTROL
@@ -2,3 +2,4 @@ Source: cudnn
Version: 7.6
Description: NVIDIA's cuDNN deep neural network acceleration library
Build-Depends: cuda
+Supports: (windows|linux)&x64
diff --git a/ports/darknet/CONTROL b/ports/darknet/CONTROL
index 3665fa069cb176..66bcbb76b9d072 100644
--- a/ports/darknet/CONTROL
+++ b/ports/darknet/CONTROL
@@ -2,6 +2,7 @@ Source: darknet
Version: 0.2.5.1-1
Description: Darknet is an open source neural network framework written in C and CUDA. You only look once (YOLO) is a state-of-the-art, real-time object detection system, best example of darknet functionalities.
Build-Depends: pthreads (windows), stb
+Supports: !(arm|uwp)
Feature: cuda
Build-Depends: cuda
diff --git a/ports/dirent/portfile.cmake b/ports/dirent/portfile.cmake
index 80aab02f05cb88..945f6017af0f1f 100644
--- a/ports/dirent/portfile.cmake
+++ b/ports/dirent/portfile.cmake
@@ -3,7 +3,6 @@ if(VCPKG_CMAKE_SYSTEM_NAME AND NOT VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStor
return()
endif()
-include(vcpkg_common_functions)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO tronkko/dirent
@@ -14,3 +13,5 @@ vcpkg_from_github(
file(INSTALL ${SOURCE_PATH}/include/ DESTINATION ${CURRENT_PACKAGES_DIR}/include)
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/dirent RENAME copyright)
vcpkg_copy_pdbs()
+
+set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled)
diff --git a/ports/dlfcn-win32/portfile.cmake b/ports/dlfcn-win32/portfile.cmake
index e2376ab63174ea..1e1fdccb1414ce 100644
--- a/ports/dlfcn-win32/portfile.cmake
+++ b/ports/dlfcn-win32/portfile.cmake
@@ -1,4 +1,3 @@
-include(vcpkg_common_functions)
set(SOURCE_VERSION 1.1.1)
vcpkg_from_github(
@@ -27,3 +26,5 @@ vcpkg_copy_pdbs()
file(COPY ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
file(RENAME ${CURRENT_PACKAGES_DIR}/share/${PORT}/COPYING ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright)
+
+set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled)
diff --git a/ports/dmlc/CONTROL b/ports/dmlc/CONTROL
index 24d639ce368b9a..673862144c165f 100644
--- a/ports/dmlc/CONTROL
+++ b/ports/dmlc/CONTROL
@@ -3,6 +3,7 @@ Version: 2019-08-12-1
Homepage: https://github.com/dmlc/dmlc-core
Description: DMLC-Core is the backbone library to support all DMLC projects, offers the bricks to build efficient and scalable distributed machine learning libraries.
Default-Features: openmp
+Supports: !uwp
Feature: openmp
Description: Build with openmp
\ No newline at end of file
diff --git a/ports/dpdk/CONTROL b/ports/dpdk/CONTROL
index 056800d295c3fc..53d79f7e690898 100644
--- a/ports/dpdk/CONTROL
+++ b/ports/dpdk/CONTROL
@@ -1,4 +1,4 @@
Source: dpdk
Version: 19.02
Description: A set of libraries and drivers for fast packet processing
-
+Supports: linux
diff --git a/ports/easyhook/CONTROL b/ports/easyhook/CONTROL
index a47eb803dfccc5..077a5fb530610b 100644
--- a/ports/easyhook/CONTROL
+++ b/ports/easyhook/CONTROL
@@ -1,4 +1,5 @@
Source: easyhook
Version: 2.7.6789.0
Homepage: https://github.com/EasyHook/EasyHook
-Description: This project supports extending (hooking) unmanaged code (APIs) with pure managed ones, from within a fully managed environment on 32- or 64-bit Windows Vista x64, Windows Server 2008 x64, Windows 7, Windows 8.1, and Windows 10.
\ No newline at end of file
+Description: This project supports extending (hooking) unmanaged code (APIs) with pure managed ones, from within a fully managed environment on 32- or 64-bit Windows Vista x64, Windows Server 2008 x64, Windows 7, Windows 8.1, and Windows 10.
+Supports: windows
\ No newline at end of file
diff --git a/ports/ebml/CONTROL b/ports/ebml/CONTROL
index 0b2aac43262731..9af9cc8657e4a7 100644
--- a/ports/ebml/CONTROL
+++ b/ports/ebml/CONTROL
@@ -2,3 +2,4 @@ Source: ebml
Version: 1.3.9
Homepage: https://github.com/Matroska-Org/libebml
Description: a C++ libary to parse EBML files
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/expat/CONTROL b/ports/expat/CONTROL
index 68629eb2d49004..9007da6cdd7703 100644
--- a/ports/expat/CONTROL
+++ b/ports/expat/CONTROL
@@ -2,3 +2,4 @@ Source: expat
Version: 2.2.7
Homepage: https://github.com/libexpat/libexpat
Description: XML parser library written in C
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/field3d/CONTROL b/ports/field3d/CONTROL
index 487075eb4cbe56..c65ac02c5e1f01 100644
--- a/ports/field3d/CONTROL
+++ b/ports/field3d/CONTROL
@@ -3,3 +3,4 @@ Version: 1.7.2
Homepage: https://github.com/imageworks/Field3D
Description: An open source library for storing voxel data. It provides C++ classes that handle in-memory storage and a file format based on HDF5 that allows the C++ objects to be written to and read from disk.
Build-Depends: hdf5, boost-regex, boost-thread, boost-program-options, boost-system, openexr, boost-foreach, boost-test, boost-timer, boost-format
+Supports: !(windows|arm|uwp)
\ No newline at end of file
diff --git a/ports/folly/CONTROL b/ports/folly/CONTROL
index 1ec16d0093b102..77c75a7024e1b5 100644
--- a/ports/folly/CONTROL
+++ b/ports/folly/CONTROL
@@ -4,6 +4,7 @@ Homepage: https://github.com/facebook/folly
Description: An open-source C++ library developed and used at Facebook. The library is UNSTABLE on Windows
Build-Depends: openssl, libevent, double-conversion, glog, gflags, boost-chrono, boost-context, boost-conversion, boost-crc, boost-date-time, boost-filesystem, boost-multi-index, boost-program-options, boost-regex, boost-system, boost-thread, boost-smart-ptr
Default-Features: zlib
+Supports: x64
Feature: zlib
Build-Depends: zlib
diff --git a/ports/forge/CONTROL b/ports/forge/CONTROL
index d791f8ad6385b4..3aa7608d0cb4e4 100644
--- a/ports/forge/CONTROL
+++ b/ports/forge/CONTROL
@@ -2,3 +2,4 @@ Source: forge
Version: 1.0.4-2
Description: Helps with high performance visualizations involving OpenGL-CUDA/OpenCL interop.
Build-Depends: glfw3, glm, glbinding, freetype, boost-functional, freeimage, fontconfig (!windows)
+Supports: x64
\ No newline at end of file
diff --git a/ports/getopt-win32/CONTROL b/ports/getopt-win32/CONTROL
index ba14d4909ba88d..5de151a798e43b 100644
--- a/ports/getopt-win32/CONTROL
+++ b/ports/getopt-win32/CONTROL
@@ -2,3 +2,4 @@ Source: getopt-win32
Version: 0.1
Description: An implementation of getopt.
Homepage: https://github.com/libimobiledevice-win32
+Supports: windows
\ No newline at end of file
diff --git a/ports/getopt-win32/portfile.cmake b/ports/getopt-win32/portfile.cmake
index 50ffc2b88ab688..780cb1c5f7cc8e 100644
--- a/ports/getopt-win32/portfile.cmake
+++ b/ports/getopt-win32/portfile.cmake
@@ -1,5 +1,3 @@
-include(vcpkg_common_functions)
-
if(VCPKG_CMAKE_SYSTEM_NAME)
message(FATAL_ERROR "getopt-win32 only supports building on Windows Desktop")
endif()
@@ -22,3 +20,5 @@ vcpkg_install_msbuild(
# Copy header
file(COPY ${SOURCE_PATH}/getopt.h DESTINATION ${CURRENT_PACKAGES_DIR}/include/)
+
+set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled)
diff --git a/ports/getopt/CONTROL b/ports/getopt/CONTROL
index bae137bbd5ccc3..d2b9c2930d2ebf 100644
--- a/ports/getopt/CONTROL
+++ b/ports/getopt/CONTROL
@@ -2,3 +2,4 @@ Source: getopt
Version: 0
Description: The getopt and getopt_long functions automate some of the chore involved in parsing typical unix command line options.
Build-Depends: getopt-win32 (windows)
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/gettext/portfile.cmake b/ports/gettext/portfile.cmake
index a9ab3d2e76e67e..38ada752cddd2f 100644
--- a/ports/gettext/portfile.cmake
+++ b/ports/gettext/portfile.cmake
@@ -1,16 +1,16 @@
-if(VCPKG_CMAKE_SYSTEM_NAME AND NOT VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" AND NOT VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Darwin")
+if(VCPKG_TARGET_IS_LINUX)
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
if (NOT EXISTS "/usr/include/libintl.h")
message(FATAL_ERROR "Please use command \"sudo apt-get install gettext\" to install gettext on linux.")
endif()
file(COPY ${CMAKE_CURRENT_LIST_DIR}/unofficial-gettext-config.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/unofficial-gettext)
return()
+else()
+ set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled)
endif()
#Based on https://github.com/winlibs/gettext
-include(vcpkg_common_functions)
-
set(GETTEXT_VERSION 0.19)
vcpkg_download_distfile(ARCHIVE
diff --git a/ports/gflags/CONTROL b/ports/gflags/CONTROL
index 4cd423293a8a26..f2b9307789644a 100644
--- a/ports/gflags/CONTROL
+++ b/ports/gflags/CONTROL
@@ -2,3 +2,4 @@ Source: gflags
Version: 2.2.2-1
Homepage: https://github.com/gflags/gflags
Description: A C++ library that implements commandline flags processing
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/glib/CONTROL b/ports/glib/CONTROL
index cdf5441fe60cfe..871f98d862b7a8 100644
--- a/ports/glib/CONTROL
+++ b/ports/glib/CONTROL
@@ -3,6 +3,7 @@ Version: 2.52.3-14-5
Homepage: https://developer.gnome.org/glib/
Description: Portable, general-purpose utility library.
Build-Depends: zlib, pcre, libffi, gettext, libiconv
+Supports: !uwp
Feature: selinux
Description: Build with selinux support.
\ No newline at end of file
diff --git a/ports/glibmm/CONTROL b/ports/glibmm/CONTROL
index 941735feb4a87a..aefaf7b834a21b 100644
--- a/ports/glibmm/CONTROL
+++ b/ports/glibmm/CONTROL
@@ -2,4 +2,5 @@ Source: glibmm
Version: 2.52.1-11
Description: This is glibmm, a C++ API for parts of glib that are useful for C++.
Homepage: https://www.gtkmm.org.
-Build-Depends: zlib, pcre, libffi, gettext, libiconv, glib, libsigcpp
\ No newline at end of file
+Build-Depends: zlib, pcre, libffi, gettext, libiconv, glib, libsigcpp
+Supports: !uwp
diff --git a/ports/gmmlib/CONTROL b/ports/gmmlib/CONTROL
index 4d043f870254f7..b17937635de073 100644
--- a/ports/gmmlib/CONTROL
+++ b/ports/gmmlib/CONTROL
@@ -1,3 +1,4 @@
Source: gmmlib
Version: 19.2.3
Description: intel's graphics memory management library
+Supports: linux
\ No newline at end of file
diff --git a/ports/googleapis/CONTROL b/ports/googleapis/CONTROL
index ac633e51b7b486..d89aa8cd42d6f8 100644
--- a/ports/googleapis/CONTROL
+++ b/ports/googleapis/CONTROL
@@ -3,3 +3,4 @@ Version: 0.1.5
Build-Depends: grpc, protobuf
Description: C++ Proto Libraries for Google APIs.
Homepage: https://github.com/googleapis/cpp-cmakefiles
+Supports: !uwp
diff --git a/ports/grpc/00008-uwp_upb_disable_C4146_error.patch b/ports/grpc/00008-uwp_upb_disable_C4146_error.patch
deleted file mode 100644
index e2259e294aa5e1..00000000000000
--- a/ports/grpc/00008-uwp_upb_disable_C4146_error.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-diff --git a/third_party/upb/upb/msg.c b/third_party/upb/upb/msg.c
-index a77da5665c..399e8753ba 100644
---- a/third_party/upb/upb/msg.c
-+++ b/third_party/upb/upb/msg.c
-@@ -33,17 +33,26 @@ static size_t upb_msg_sizeof(const upb_msglayout *l) {
- }
-
- static upb_msg_internal *upb_msg_getinternal(upb_msg *msg) {
-+#pragma warning(push)
-+#pragma warning(disable : 4146)
- return VOIDPTR_AT(msg, -sizeof(upb_msg_internal));
-+#pragma warning(pop)
- }
-
- static const upb_msg_internal *upb_msg_getinternal_const(const upb_msg *msg) {
-+#pragma warning(push)
-+#pragma warning(disable : 4146)
- return VOIDPTR_AT(msg, -sizeof(upb_msg_internal));
-+#pragma warning(pop)
- }
-
- static upb_msg_internal_withext *upb_msg_getinternalwithext(
- upb_msg *msg, const upb_msglayout *l) {
- UPB_ASSERT(l->extendable);
-+#pragma warning(push)
-+#pragma warning(disable : 4146)
- return VOIDPTR_AT(msg, -sizeof(upb_msg_internal_withext));
-+#pragma warning(pop)
- }
-
- upb_msg *upb_msg_new(const upb_msglayout *l, upb_arena *a) {
diff --git a/ports/grpc/00009-use-system-upb.patch b/ports/grpc/00009-use-system-upb.patch
new file mode 100644
index 00000000000000..515238b9a1b1d3
--- /dev/null
+++ b/ports/grpc/00009-use-system-upb.patch
@@ -0,0 +1,118 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b535f10..0fcb682 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1530,7 +1530,7 @@ target_link_libraries(grpc
+ ${_gRPC_UPB_LIBRARIES}
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ gpr
+- upb
++ ${_gRPC_UPB_LIBRARIES}
+ )
+ if(_gRPC_PLATFORM_IOS OR _gRPC_PLATFORM_MAC)
+ target_link_libraries(grpc "-framework CoreFoundation")
+@@ -1941,7 +1941,7 @@ target_link_libraries(grpc_cronet
+ ${_gRPC_UPB_LIBRARIES}
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ gpr
+- upb
++ ${_gRPC_UPB_LIBRARIES}
+ )
+ if(_gRPC_PLATFORM_IOS OR _gRPC_PLATFORM_MAC)
+ target_link_libraries(grpc_cronet "-framework CoreFoundation")
+@@ -2283,7 +2283,7 @@ target_link_libraries(grpc_test_util
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ gpr
+ grpc
+- upb
++ ${_gRPC_UPB_LIBRARIES}
+ )
+ if(_gRPC_PLATFORM_IOS OR _gRPC_PLATFORM_MAC)
+ target_link_libraries(grpc_test_util "-framework CoreFoundation")
+@@ -2626,7 +2626,7 @@ target_link_libraries(grpc_test_util_unsecure
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ gpr
+ grpc_unsecure
+- upb
++ ${_gRPC_UPB_LIBRARIES}
+ )
+ if(_gRPC_PLATFORM_IOS OR _gRPC_PLATFORM_MAC)
+ target_link_libraries(grpc_test_util_unsecure "-framework CoreFoundation")
+@@ -3017,7 +3017,7 @@ target_link_libraries(grpc_unsecure
+ ${_gRPC_UPB_LIBRARIES}
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ gpr
+- upb
++ ${_gRPC_UPB_LIBRARIES}
+ )
+ if(_gRPC_PLATFORM_IOS OR _gRPC_PLATFORM_MAC)
+ target_link_libraries(grpc_unsecure "-framework CoreFoundation")
+@@ -3553,7 +3553,7 @@ target_link_libraries(grpc++
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ grpc
+ gpr
+- upb
++ ${_gRPC_UPB_LIBRARIES}
+ )
+
+ foreach(_hdr
+@@ -4817,7 +4817,7 @@ target_link_libraries(grpc++_unsecure
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ gpr
+ grpc_unsecure
+- upb
++ ${_gRPC_UPB_LIBRARIES}
+ )
+
+ foreach(_hdr
+@@ -5848,7 +5848,7 @@ if(gRPC_INSTALL)
+ endif()
+
+ endif()
+-
++if(0)
+ add_library(upb
+ third_party/upb/upb/decode.c
+ third_party/upb/upb/encode.c
+@@ -5888,10 +5888,10 @@ target_include_directories(upb
+ target_link_libraries(upb
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ )
++endif()
+
+
+-
+-if(gRPC_INSTALL)
++if(gRPC_INSTALL AND 0)
+ install(TARGETS upb EXPORT gRPCTargets
+ RUNTIME DESTINATION ${gRPC_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${gRPC_INSTALL_LIBDIR}
+diff --git a/cmake/gRPCConfig.cmake.in b/cmake/gRPCConfig.cmake.in
+index 504d5a7..e2a3122 100644
+--- a/cmake/gRPCConfig.cmake.in
++++ b/cmake/gRPCConfig.cmake.in
+@@ -3,6 +3,7 @@
+ @_gRPC_FIND_PROTOBUF@
+ @_gRPC_FIND_SSL@
+ @_gRPC_FIND_CARES@
++find_package(upb CONFIG)
+
+ # Targets
+ include(${CMAKE_CURRENT_LIST_DIR}/gRPCTargets.cmake)
+diff --git a/cmake/upb.cmake b/cmake/upb.cmake
+index 2c0ab84..746e067 100644
+--- a/cmake/upb.cmake
++++ b/cmake/upb.cmake
+@@ -12,9 +12,9 @@
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+
+-set(UPB_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/upb)
++find_package(upb REQUIRED)
++set(_gRPC_UPB_INCLUDE_DIR)
+
+-set(_gRPC_UPB_INCLUDE_DIR "${UPB_ROOT_DIR}")
+ set(_gRPC_UPB_GRPC_GENERATED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/core/ext/upb-generated")
+
+-set(_gRPC_UPB_LIBRARIES upb)
++set(_gRPC_UPB_LIBRARIES upb::upb)
diff --git a/ports/grpc/CONTROL b/ports/grpc/CONTROL
index 4f5652a8b73bd0..790e19e8d28916 100644
--- a/ports/grpc/CONTROL
+++ b/ports/grpc/CONTROL
@@ -1,5 +1,5 @@
Source: grpc
-Version: 1.26.0
-Build-Depends: zlib, openssl, protobuf, c-ares (!uwp)
+Version: 1.26.0-1
+Build-Depends: zlib, openssl, protobuf, c-ares (!uwp), upb
Homepage: https://github.com/grpc/grpc
Description: An RPC library and framework
diff --git a/ports/grpc/portfile.cmake b/ports/grpc/portfile.cmake
index 9e925898c9eeec..e156ea4d5687e2 100644
--- a/ports/grpc/portfile.cmake
+++ b/ports/grpc/portfile.cmake
@@ -1,15 +1,7 @@
-include(vcpkg_common_functions)
-
-if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" OR NOT VCPKG_CMAKE_SYSTEM_NAME)
+if(VCPKG_TARGET_IS_WINDOWS)
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
endif()
-# This snippet is a workaround for users who are upgrading from an extremely old version of this
-# port, which cloned directly into `src\`
-if(EXISTS "${CURRENT_BUILDTREES_DIR}/src/.git")
- file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/src)
-endif()
-
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO grpc/grpc
@@ -23,28 +15,19 @@ vcpkg_from_github(
00004-link-gdi32-on-windows.patch
00005-fix-uwp-error.patch
00006-crypt32.patch
- 00008-uwp_upb_disable_C4146_error.patch
+ 00009-use-system-upb.patch
)
-if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
+if(VCPKG_TARGET_IS_UWP OR VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
set(gRPC_BUILD_CODEGEN OFF)
else()
set(gRPC_BUILD_CODEGEN ON)
endif()
-if(VCPKG_CRT_LINKAGE STREQUAL "static")
- set(gRPC_MSVC_STATIC_RUNTIME ON)
-else()
- set(gRPC_MSVC_STATIC_RUNTIME OFF)
-endif()
-
-if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
- set(gRPC_STATIC_LINKING ON)
-else()
- set(gRPC_STATIC_LINKING OFF)
-endif()
+string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" gRPC_MSVC_STATIC_RUNTIME)
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" gRPC_STATIC_LINKING)
-if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+if(VCPKG_TARGET_IS_UWP)
set(cares_CARES_PROVIDER OFF)
else()
set(cares_CARES_PROVIDER "package")
diff --git a/ports/gtkmm/CONTROL b/ports/gtkmm/CONTROL
index b346cd69974ce1..ecdab2cc3853dc 100644
--- a/ports/gtkmm/CONTROL
+++ b/ports/gtkmm/CONTROL
@@ -3,3 +3,4 @@ Version: 3.22.2-2
Homepage: https://www.gtkmm.org/
Description: gtkmm is the official C++ interface for the popular GUI library GTK+.
Build-Depends: glib, atk, gtk, gdk-pixbuf, pango, cairo, libepoxy, gettext, glibmm, atkmm, cairomm, pangomm
+Supports: !uwp
diff --git a/ports/hdf5/CONTROL b/ports/hdf5/CONTROL
index a8d27e029144a9..6a74b2da92b83e 100644
--- a/ports/hdf5/CONTROL
+++ b/ports/hdf5/CONTROL
@@ -1,8 +1,9 @@
Source: hdf5
-Version: 1.10.5-9
+Version: 1.10.5-10
Homepage: https://www.hdfgroup.org/downloads/hdf5/
Description: HDF5 is a data model, library, and file format for storing and managing data
Default-Features: szip, zlib
+Supports: !uwp
Feature: parallel
Description: parallel support for HDF5
diff --git a/ports/hwloc/CONTROL b/ports/hwloc/CONTROL
index f754a0fd840be9..eeb7421f35c4a5 100644
--- a/ports/hwloc/CONTROL
+++ b/ports/hwloc/CONTROL
@@ -3,3 +3,4 @@ Version: 1.11.7-3
Homepage: https://github.com/open-mpi/hwloc
Description: Portable Hardware Locality (hwloc)
The Portable Hardware Locality (hwloc) software package provides a portable abstraction (across OS, versions, architectures, ...) of the hierarchical topology of modern architectures, including NUMA memory nodes, sockets, shared caches, cores and simultaneous multithreading. It also gathers various system attributes such as cache and memory information as well as the locality of I/O devices such as network interfaces, InfiniBand HCAs or GPUs.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/icu/CONTROL b/ports/icu/CONTROL
index 4fccc8622f3639..06d902e19b51d4 100644
--- a/ports/icu/CONTROL
+++ b/ports/icu/CONTROL
@@ -2,3 +2,4 @@ Source: icu
Version: 61.1-8
Homepage: http://icu-project.org/apiref/icu4c/
Description: Mature and widely used Unicode and localization library.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/jinja2cpplight/CONTROL b/ports/jinja2cpplight/CONTROL
index 57334bc42cf5ac..f918eb28f5a1f3 100644
--- a/ports/jinja2cpplight/CONTROL
+++ b/ports/jinja2cpplight/CONTROL
@@ -1,4 +1,5 @@
Source: jinja2cpplight
Version: 2018-05-08
Homepage: https://github.com/hughperkins/Jinja2CppLight
-Description: (very) lightweight version of Jinja2 for C++, Lightweight templating engine for C++, based on Jinja2.
\ No newline at end of file
+Description: (very) lightweight version of Jinja2 for C++, Lightweight templating engine for C++, based on Jinja2.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/jsonnet/0003-use-upstream-nlohmann-json.patch b/ports/jsonnet/0003-use-upstream-nlohmann-json.patch
new file mode 100644
index 00000000000000..a2e1105b7c40a0
--- /dev/null
+++ b/ports/jsonnet/0003-use-upstream-nlohmann-json.patch
@@ -0,0 +1,13 @@
+diff --git a/core/vm.cpp b/core/vm.cpp
+index 0cf06fa..d65a6d7 100644
+--- a/core/vm.cpp
++++ b/core/vm.cpp
+@@ -23,7 +23,7 @@ limitations under the License.
+
+ #include "desugarer.h"
+ #include "json.h"
+-#include "json.hpp"
++#include "nlohmann/json.hpp"
+ #include "md5.h"
+ #include "parser.h"
+ #include "state.h"
diff --git a/ports/jsonnet/002-fix-dependency-and-install.patch b/ports/jsonnet/002-fix-dependency-and-install.patch
index cccdc9439ccbca..7c7b5da776befb 100644
--- a/ports/jsonnet/002-fix-dependency-and-install.patch
+++ b/ports/jsonnet/002-fix-dependency-and-install.patch
@@ -24,7 +24,7 @@ index 82fb7c2..a94b4ff 100644
endif()
+
+
-+install(FILES ${LIBJSONNET_HEADERS} DESTINATION include)
++install(FILES ${LIB_HEADER} DESTINATION include)
\ No newline at end of file
diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt
index bf349df..6ed1442 100644
diff --git a/ports/jsonnet/CONTROL b/ports/jsonnet/CONTROL
index 2f6e669efa6a8a..78542024cbf9cc 100644
--- a/ports/jsonnet/CONTROL
+++ b/ports/jsonnet/CONTROL
@@ -1,4 +1,5 @@
Source: jsonnet
-Version: 0.14.0
+Version: 0.14.0-1
Homepage: https://github.com/google/jsonnet
Description: Jsonnet - The data templating language
+Build-Depends: nlohmann-json
diff --git a/ports/jsonnet/portfile.cmake b/ports/jsonnet/portfile.cmake
index 2840f513f54aed..6b4a30a1141946 100644
--- a/ports/jsonnet/portfile.cmake
+++ b/ports/jsonnet/portfile.cmake
@@ -11,9 +11,10 @@ vcpkg_from_github(
PATCHES
001-enable-msvc.patch
002-fix-dependency-and-install.patch
+ 0003-use-upstream-nlohmann-json.patch
)
-if (VCPKG_TARGET_IS_WINDOWS)
+if(VCPKG_TARGET_IS_WINDOWS)
vcpkg_execute_required_process(
COMMAND Powershell -Command "((Get-Content -AsByteStream \"${SOURCE_PATH}/stdlib/std.jsonnet\") -join ',') + ',0' | Out-File -Encoding Ascii \"${SOURCE_PATH}/core/std.jsonnet.h\""
WORKING_DIRECTORY "${SOURCE_PATH}"
@@ -27,7 +28,7 @@ else()
)
endif()
-if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
set(BUILD_SHARED ON)
set(BUILD_STATIC OFF)
else()
@@ -44,6 +45,7 @@ vcpkg_configure_cmake(
-DBUILD_JSONNET=OFF
-DBUILD_JSONNETFMT=OFF
-DBUILD_TESTS=OFF
+ -DUSE_SYSTEM_JSON=ON
)
vcpkg_install_cmake()
diff --git a/ports/kinectsdk1/CONTROL b/ports/kinectsdk1/CONTROL
index 9764fb69aba46d..d4cd1d2733b957 100644
--- a/ports/kinectsdk1/CONTROL
+++ b/ports/kinectsdk1/CONTROL
@@ -1,3 +1,4 @@
Source: kinectsdk1
Version: 1.8-2
Description: Kinect for Windows SDK for Kinect v1 sensor.
+Supports: !arm
\ No newline at end of file
diff --git a/ports/kinectsdk2/CONTROL b/ports/kinectsdk2/CONTROL
index 4fc290d0fa51c9..d92784df46cf6f 100644
--- a/ports/kinectsdk2/CONTROL
+++ b/ports/kinectsdk2/CONTROL
@@ -1,3 +1,4 @@
Source: kinectsdk2
Version: 2.0-2
Description: Kinect for Windows SDK for Kinect v2 sensor.
+Supports: !arm
\ No newline at end of file
diff --git a/ports/lastools/CONTROL b/ports/lastools/CONTROL
index cb908a8d4ec24e..31113037314e32 100644
--- a/ports/lastools/CONTROL
+++ b/ports/lastools/CONTROL
@@ -1,4 +1,5 @@
Source: lastools
Version: 2019-07-10
Homepage: https://github.com/LAStools/LAStools
-Description: LAStools: award-winning software for efficient LiDAR processing (with LASzip)
\ No newline at end of file
+Description: LAStools: award-winning software for efficient LiDAR processing (with LASzip)
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/leveldb/CONTROL b/ports/leveldb/CONTROL
index aa0b2bc3e1df4b..1b1302f979dca7 100644
--- a/ports/leveldb/CONTROL
+++ b/ports/leveldb/CONTROL
@@ -2,3 +2,4 @@ Source: leveldb
Version: 1.22-1
Homepage: https://github.com/bitcoin-core/leveldb
Description: LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/libarchive/CONTROL b/ports/libarchive/CONTROL
index 73760e887b6d2e..6678faacccf536 100644
--- a/ports/libarchive/CONTROL
+++ b/ports/libarchive/CONTROL
@@ -4,6 +4,7 @@ Homepage: https://github.com/libarchive/libarchive
Description: Library for reading and writing streaming archives
Build-Depends: zlib
Default-Features: bzip2, libxml2, lz4, lzma, lzo, openssl
+Supports: !uwp
Feature: bzip2
Build-Depends: bzip2
diff --git a/ports/libevent/CONTROL b/ports/libevent/CONTROL
index 64067f15c666b8..4df532990ce45d 100644
--- a/ports/libevent/CONTROL
+++ b/ports/libevent/CONTROL
@@ -1,7 +1,8 @@
Source: libevent
-Version: 2.1.11-4
+Version: 2.1.11-5
Homepage: https://github.com/libevent/libevent
Description: An event notification library
+Supports: !uwp
Default-Features: thread
Feature: openssl
diff --git a/ports/libexif/CONTROL b/ports/libexif/CONTROL
index e37d0960e31251..f3e4e41058107c 100644
--- a/ports/libexif/CONTROL
+++ b/ports/libexif/CONTROL
@@ -2,3 +2,4 @@ Source: libexif
Version: 0.6.21-2
Homepage: https://libexif.github.io/
Description: a library for parsing, editing, and saving EXIF data
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/libffi/CONTROL b/ports/libffi/CONTROL
index 4492dbce16f475..2bc4a093a21f86 100644
--- a/ports/libffi/CONTROL
+++ b/ports/libffi/CONTROL
@@ -2,3 +2,4 @@ Source: libffi
Version: 3.1-7
Homepage: https://github.com/libffi/libffi
Description: Portable, high level programming interface to various calling conventions
+Supports: !arm
\ No newline at end of file
diff --git a/ports/libgit2/CONTROL b/ports/libgit2/CONTROL
index d4050188cd2088..0c320dd404b0b7 100644
--- a/ports/libgit2/CONTROL
+++ b/ports/libgit2/CONTROL
@@ -3,3 +3,4 @@ Version: 0.28.4
Homepage: https://github.com/libgit2/libgit2
Build-Depends: openssl (!windows&&!uwp)
Description: Git linkable library
+Supports: !uwp
diff --git a/ports/libiconv/portfile.cmake b/ports/libiconv/portfile.cmake
index 9027e2acf85af7..5f184079f36f14 100644
--- a/ports/libiconv/portfile.cmake
+++ b/ports/libiconv/portfile.cmake
@@ -40,3 +40,5 @@ vcpkg_copy_pdbs()
file(INSTALL ${SOURCE_PATH}/COPYING.LIB DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
vcpkg_test_cmake(PACKAGE_NAME unofficial-iconv)
+
+set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled)
diff --git a/ports/libmysql/CONTROL b/ports/libmysql/CONTROL
index fb236147e20963..1195fecc2470bb 100644
--- a/ports/libmysql/CONTROL
+++ b/ports/libmysql/CONTROL
@@ -3,3 +3,4 @@ Version: 8.0.4-5
Homepage: https://github.com/mysql/mysql-server
Build-Depends: boost-algorithm, boost-geometry, boost-optional, boost-functional, boost-graph, openssl, icu, libevent, liblzma, lz4, zlib
Description: A MySQL client library for C development.
+Supports: !(windows&x86)&!uwp
\ No newline at end of file
diff --git a/ports/libodb-sqlite/CMakeLists.txt b/ports/libodb-sqlite/CMakeLists.txt
index 79f9bc2bf3e8c2..8a62ab9a876df2 100644
--- a/ports/libodb-sqlite/CMakeLists.txt
+++ b/ports/libodb-sqlite/CMakeLists.txt
@@ -2,8 +2,7 @@ cmake_minimum_required(VERSION 3.0)
project(libodb-sqlite VERSION 2.4.0 LANGUAGES CXX)
find_package(odb 2.4.0 REQUIRED COMPONENTS libodb)
find_package(sqlite3 CONFIG)
-configure_file(config.unix.h.in
- ${CMAKE_CURRENT_SOURCE_DIR}/odb/sqlite/details/config.h COPYONLY)
+configure_file(config.unix.h.in odb/sqlite/details/config.h COPYONLY)
set(LIBODB_INSTALL_HEADERS ON CACHE BOOL "Install the header files (a debug install)")
file(GLOB_RECURSE libodb_src LIST_DIRECTORIES False
@@ -15,7 +14,7 @@ target_include_directories(libodb-sqlite
PUBLIC
$
$
-
+ $
)
target_link_libraries(libodb-sqlite PRIVATE odb::libodb sqlite3)
@@ -35,14 +34,22 @@ install(TARGETS libodb-sqlite EXPORT odb_sqliteConfig
RUNTIME DESTINATION bin
)
if(LIBODB_INSTALL_HEADERS)
-install(DIRECTORY odb DESTINATION include/
+ install(
+ DIRECTORY odb
+ DESTINATION include/
COMPONENT sqlite
FILES_MATCHING
PATTERN "*.h"
PATTERN "*.hxx"
PATTERN "*.ixx"
PATTERN "*.txx"
-)
+ )
+ install(
+ FILES config.unix.h.in
+ DESTINATION include/odb/sqlite/detail
+ COMPONENT sqlite
+ RENAME config.h
+ )
endif()
install(EXPORT odb_sqliteConfig NAMESPACE odb:: COMPONENT sqlite DESTINATION share/odb)
export(TARGETS libodb-sqlite NAMESPACE odb:: FILE odb_sqliteConfig.cmake)
\ No newline at end of file
diff --git a/ports/libodb-sqlite/CONTROL b/ports/libodb-sqlite/CONTROL
index 0c87a6fc8ff681..e7afd76e0ef20e 100644
--- a/ports/libodb-sqlite/CONTROL
+++ b/ports/libodb-sqlite/CONTROL
@@ -1,5 +1,5 @@
Source: libodb-sqlite
-Version: 2.4.0-5
+Version: 2.4.0-6
Homepage: https://www.codesynthesis.com/products/odb/
Description: Sqlite support for the ODB ORM library
Build-Depends: libodb, sqlite3
diff --git a/ports/libodb/portfile.cmake b/ports/libodb/portfile.cmake
index 18dc60f7374be4..d616f1b3547f04 100644
--- a/ports/libodb/portfile.cmake
+++ b/ports/libodb/portfile.cmake
@@ -20,6 +20,7 @@ file(COPY
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
+ DISABLE_PARALLEL_CONFIGURE
OPTIONS_DEBUG
-DLIBODB_INSTALL_HEADERS=OFF
)
diff --git a/ports/libopenmpt/CONTROL b/ports/libopenmpt/CONTROL
index 32fa988d1366ac..be431f49e5628e 100644
--- a/ports/libopenmpt/CONTROL
+++ b/ports/libopenmpt/CONTROL
@@ -3,3 +3,4 @@ Version: 2017-01-28-cf2390140
Homepage: https://github.com/OpenMPT/openmpt
Description: a library to render tracker music
Build-Depends: zlib, mpg123, libogg, libvorbis, portaudio, libflac
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/libopusenc/CONTROL b/ports/libopusenc/CONTROL
index 844b22d499bddf..7e52b1353a0c06 100644
--- a/ports/libopusenc/CONTROL
+++ b/ports/libopusenc/CONTROL
@@ -3,3 +3,4 @@ Version: 0.2.1
Homepage: https://github.com/xiph/libopusenc
Description: Library for encoding .opus audio files and live streams.
Build-Depends: opus
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/libosip2/CONTROL b/ports/libosip2/CONTROL
index 693a9d73e5f34b..2fe1f8b1694fab 100644
--- a/ports/libosip2/CONTROL
+++ b/ports/libosip2/CONTROL
@@ -1,4 +1,5 @@
Source: libosip2
Version: 5.1.0-3
Homepage: https://www.gnu.org/software/osip/
-Description: oSIP is an LGPL implementation of SIP. It's stable, portable, flexible and compliant! -may be more-! It is used mostly with eXosip2 stack (GPL) which provides simpler API for User-Agent implementation.
\ No newline at end of file
+Description: oSIP is an LGPL implementation of SIP. It's stable, portable, flexible and compliant! -may be more-! It is used mostly with eXosip2 stack (GPL) which provides simpler API for User-Agent implementation.
+Supports: !(windows|uwp)
\ No newline at end of file
diff --git a/ports/libp7-baical/CONTROL b/ports/libp7-baical/CONTROL
index 698334f58b313a..80037450b08fde 100644
--- a/ports/libp7-baical/CONTROL
+++ b/ports/libp7-baical/CONTROL
@@ -2,3 +2,4 @@ Source: libp7-baical
Version: 4.4-4
Homepage: https://baical.net/
Description: P7 is a library for high-speed sending telemetry & trace data from application
+Supports: !(arm|uwp)
\ No newline at end of file
diff --git a/ports/libp7client/CONTROL b/ports/libp7client/CONTROL
index 0069877d4f45e5..f7020b6f136991 100644
--- a/ports/libp7client/CONTROL
+++ b/ports/libp7client/CONTROL
@@ -1,3 +1,4 @@
Source: libp7client
Version: 5.2-1
Description: Open source, cross-platform, fastest library for sending logs, telemetry & trace data from your application.
+Supports: x86|x64
\ No newline at end of file
diff --git a/ports/libpq/CONTROL b/ports/libpq/CONTROL
index 724d9acd8f71ac..359481816ab02d 100644
--- a/ports/libpq/CONTROL
+++ b/ports/libpq/CONTROL
@@ -1,6 +1,7 @@
Source: libpq
Version: 12.0
Build-Depends: libpq[bonjour] (osx)
+Supports: !uwp
Homepage: https://www.postgresql.org/
Description: The official database access API of postgresql
Default-Features: zlib, openssl
@@ -79,4 +80,4 @@ Build-Depends: libxslt
Description: Build with libxslt (--with-libxslt)
Feature: client
-Description: Build all client tools and libraries.
\ No newline at end of file
+Description: Build all client tools and libraries.
diff --git a/ports/libpqxx/CMakeLists.txt b/ports/libpqxx/CMakeLists.txt
index d8b9ce4f526f99..a3e6ae3f484790 100644
--- a/ports/libpqxx/CMakeLists.txt
+++ b/ports/libpqxx/CMakeLists.txt
@@ -67,6 +67,7 @@ install(DIRECTORY include/ DESTINATION include
PATTERN "*.am" EXCLUDE
PATTERN "*.in" EXCLUDE
PATTERN "*.template" EXCLUDE
+ PATTERN "CMakeLists.txt" EXCLUDE
)
install(DIRECTORY ${CMAKE_BINARY_DIR}/pqxx/ DESTINATION include/pqxx
CONFIGURATIONS Release
diff --git a/ports/libpqxx/CONTROL b/ports/libpqxx/CONTROL
index 1742189b9308f2..9acdf81465528c 100644
--- a/ports/libpqxx/CONTROL
+++ b/ports/libpqxx/CONTROL
@@ -1,5 +1,5 @@
Source: libpqxx
-Version: 6.4.5-1
+Version: 6.4.5-2
Homepage: https://github.com/jtv/libpqxx
Description: The official C++ client API for PostgreSQL
-Build-Depends: libpq
+Build-Depends: libpq[core]
diff --git a/ports/libpqxx/portfile.cmake b/ports/libpqxx/portfile.cmake
index e9fbdbc985d335..85e9cedb7376dc 100644
--- a/ports/libpqxx/portfile.cmake
+++ b/ports/libpqxx/portfile.cmake
@@ -6,8 +6,8 @@ vcpkg_from_github(
REF a6b1d60e74c1427c8ac2324b85cd4a0dc2068332
SHA512 990083f738322283dc9c98b138a676e5ba04ab77794d5a51d672557e0562d2366b5085ad5571dd91af8ba4dea56baa94e8c1e4e6fe571341c95e92eb28d2b15a
HEAD_REF master
- PATCHES
- fix-deprecated-bug.patch
+ PATCHES
+ fix-deprecated-bug.patch
)
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
diff --git a/ports/libressl/CONTROL b/ports/libressl/CONTROL
index 2cb09fb6c35f25..a5dfd10c70e388 100644
--- a/ports/libressl/CONTROL
+++ b/ports/libressl/CONTROL
@@ -1,6 +1,7 @@
Source: libressl
Version: 2.9.1-2
Description: LibreSSL is a version of the TLS/crypto stack forked from OpenSSL in 2014, with goals of modernizing the codebase, improving security, and applying best practice development processes.
+Supports: !(uwp|arm)
Feature: tools
Description: Build openssl and ocspcheck executables
diff --git a/ports/libsoundio/CONTROL b/ports/libsoundio/CONTROL
index 52ab4845f20fc2..d8abcf070365b5 100644
--- a/ports/libsoundio/CONTROL
+++ b/ports/libsoundio/CONTROL
@@ -1,4 +1,5 @@
Source: libsoundio
-Version: 2.0.0-1
+Version: 2.0.0-3
Description: libsoundio is C library providing cross-platform audio input and output.
Homepage: http://libsound.io/
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/libsoundio/fix_cmakelists.patch b/ports/libsoundio/fix_cmakelists.patch
index 225c4cff36f4dd..ffe00adff2ff52 100644
--- a/ports/libsoundio/fix_cmakelists.patch
+++ b/ports/libsoundio/fix_cmakelists.patch
@@ -1,184 +1,49 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 6541f1b..058bf3b 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -1,6 +1,4 @@
- cmake_minimum_required(VERSION 2.8.5)
--project(libsoundio C)
--set(CMAKE_MODULE_PATH ${libsoundio_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
-
- if(CMAKE_VERSION VERSION_LESS 3.0.0)
- set(CMAKE_INSTALL_LIBDIR "lib" CACHE PATH "library install dir (lib)")
-@@ -11,6 +9,11 @@ else()
- cmake_policy(SET CMP0046 NEW)
- include(GNUInstallDirs)
- endif()
-+cmake_policy(SET CMP0022 NEW)
-+
-+project(libsoundio C)
-+set(CMAKE_MODULE_PATH ${libsoundio_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
-+set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)
-
- if(NOT CMAKE_BUILD_TYPE)
- set(CMAKE_BUILD_TYPE "Debug" CACHE STRING
-@@ -27,8 +30,7 @@ if(NOT SOUNDIO_STATIC_LIBNAME)
- set(SOUNDIO_STATIC_LIBNAME soundio)
- endif()
-
--option(BUILD_STATIC_LIBS "Build static libraries" ON)
--option(BUILD_DYNAMIC_LIBS "Build dynamic libraries" ON)
-+option(BUILD_SHARED_LIBS "Build dynamic libraries" ON)
- option(BUILD_EXAMPLE_PROGRAMS "Build example programs" ON)
- option(BUILD_TESTS "Build tests" ON)
- option(ENABLE_JACK "Enable JACK backend" ON)
-@@ -203,7 +205,7 @@ if(MSVC)
- set(EXAMPLE_CFLAGS "/W4")
- set(TEST_CFLAGS "${LIB_CFLAGS}")
- set(TEST_LDFLAGS " ")
-- set(LIBM " ")
-+ set(LIBM "")
- else()
- set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -Werror -pedantic")
- set(LIB_CFLAGS "-std=c11 -fvisibility=hidden -Wall -Werror=strict-prototypes -Werror=old-style-definition -Werror=missing-prototypes -D_REENTRANT -D_POSIX_C_SOURCE=200809L -Wno-missing-braces")
-@@ -223,32 +225,33 @@ configure_file(
- ${DOXYGEN_CONF_FILE}
- )
-
--if(BUILD_DYNAMIC_LIBS)
-- add_library(libsoundio_shared SHARED ${LIBSOUNDIO_SOURCES})
-- set_target_properties(libsoundio_shared PROPERTIES
-+if(BUILD_SHARED_LIBS)
-+ add_library(libsoundio SHARED ${LIBSOUNDIO_SOURCES})
-+ set_target_properties(libsoundio PROPERTIES PUBLIC_HEADER "${LIBSOUNDIO_HEADERS}")
-+ set_target_properties(libsoundio PROPERTIES
- OUTPUT_NAME soundio
- SOVERSION ${LIBSOUNDIO_VERSION_MAJOR}
- VERSION ${LIBSOUNDIO_VERSION}
- COMPILE_FLAGS ${LIB_CFLAGS}
- LINKER_LANGUAGE C
- )
-- target_link_libraries(libsoundio_shared LINK_PUBLIC ${LIBSOUNDIO_LIBS})
-- install(TARGETS libsoundio_shared DESTINATION ${CMAKE_INSTALL_LIBDIR})
--endif()
--
--if(BUILD_STATIC_LIBS)
-- add_library(libsoundio_static STATIC ${LIBSOUNDIO_SOURCES})
-- set_target_properties(libsoundio_static PROPERTIES
-- OUTPUT_NAME ${SOUNDIO_STATIC_LIBNAME}
-+ target_link_libraries(libsoundio LINK_PUBLIC ${LIBSOUNDIO_LIBS})
-+ install(TARGETS libsoundio EXPORT libsoundio-export LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
-+else()
-+ add_library(libsoundio STATIC ${LIBSOUNDIO_SOURCES})
-+ set_target_properties(libsoundio PROPERTIES PUBLIC_HEADER "${LIBSOUNDIO_HEADERS}")
-+ set_target_properties(libsoundio PROPERTIES
-+ OUTPUT_NAME soundio
- COMPILE_FLAGS ${LIB_CFLAGS}
- LINKER_LANGUAGE C
- )
-- install(TARGETS libsoundio_static DESTINATION ${CMAKE_INSTALL_LIBDIR})
-+ target_link_libraries(libsoundio LINK_PUBLIC ${LIBSOUNDIO_LIBS})
-+ target_compile_definitions(libsoundio PUBLIC SOUNDIO_STATIC_LIBRARY)
-+ install(TARGETS libsoundio EXPORT libsoundio-export LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
- endif()
-
--install(FILES
-- ${LIBSOUNDIO_HEADERS}
-- DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/soundio")
-+add_library(libsoundio::libsoundio ALIAS libsoundio)
-+install(EXPORT libsoundio-export FILE libsoundio-config.cmake DESTINATION share/libsoundio/ NAMESPACE ${PROJECT_NAME}:: EXPORT_LINK_INTERFACE_LIBRARIES)
-
- # Example Programs
-
-@@ -257,44 +260,28 @@ if(BUILD_EXAMPLE_PROGRAMS)
- set_target_properties(sio_sine PROPERTIES
- LINKER_LANGUAGE C
- COMPILE_FLAGS ${EXAMPLE_CFLAGS})
-- if(BUILD_DYNAMIC_LIBS)
-- target_link_libraries(sio_sine libsoundio_shared ${LIBM})
-- else()
-- target_link_libraries(sio_sine libsoundio_static ${LIBSOUNDIO_LIBS} ${LIBM})
-- endif()
-+ target_link_libraries(sio_sine libsoundio::libsoundio ${LIBM})
- install(TARGETS sio_sine DESTINATION ${CMAKE_INSTALL_BINDIR})
-
- add_executable(sio_list_devices example/sio_list_devices.c)
- set_target_properties(sio_list_devices PROPERTIES
- LINKER_LANGUAGE C
- COMPILE_FLAGS ${EXAMPLE_CFLAGS})
-- if(BUILD_DYNAMIC_LIBS)
-- target_link_libraries(sio_list_devices libsoundio_shared)
-- else()
-- target_link_libraries(sio_list_devices libsoundio_static ${LIBSOUNDIO_LIBS})
-- endif()
-+ target_link_libraries(sio_list_devices libsoundio::libsoundio)
- install(TARGETS sio_list_devices DESTINATION ${CMAKE_INSTALL_BINDIR})
-
- add_executable(sio_microphone example/sio_microphone.c)
- set_target_properties(sio_microphone PROPERTIES
- LINKER_LANGUAGE C
- COMPILE_FLAGS ${EXAMPLE_CFLAGS})
-- if(BUILD_DYNAMIC_LIBS)
-- target_link_libraries(sio_microphone libsoundio_shared)
-- else()
-- target_link_libraries(sio_microphone libsoundio_static ${LIBSOUNDIO_LIBS})
-- endif()
-+ target_link_libraries(sio_microphone libsoundio::libsoundio)
- install(TARGETS sio_microphone DESTINATION ${CMAKE_INSTALL_BINDIR})
-
- add_executable(sio_record example/sio_record.c)
- set_target_properties(sio_record PROPERTIES
- LINKER_LANGUAGE C
- COMPILE_FLAGS ${EXAMPLE_CFLAGS})
-- if(BUILD_DYNAMIC_LIBS)
-- target_link_libraries(sio_record libsoundio_shared)
-- else()
-- target_link_libraries(sio_record libsoundio_static ${LIBSOUNDIO_LIBS})
-- endif()
-+ target_link_libraries(sio_record libsoundio::libsoundio)
- install(TARGETS sio_record DESTINATION ${CMAKE_INSTALL_BINDIR})
- endif()
-
-@@ -308,7 +295,7 @@ if(BUILD_TESTS)
- )
-
- add_executable(latency "${libsoundio_SOURCE_DIR}/test/latency.c" ${LIBSOUNDIO_SOURCES})
-- target_link_libraries(latency LINK_PUBLIC ${LIBSOUNDIO_LIBS} ${LIBM})
-+ target_link_libraries(latency LINK_PUBLIC libsoundio::libsoundio ${LIBM})
- set_target_properties(latency PROPERTIES
- LINKER_LANGUAGE C
- COMPILE_FLAGS ${LIB_CFLAGS}
-@@ -318,31 +305,19 @@ if(BUILD_TESTS)
- set_target_properties(underflow PROPERTIES
- LINKER_LANGUAGE C
- COMPILE_FLAGS ${EXAMPLE_CFLAGS})
-- if(BUILD_DYNAMIC_LIBS)
-- target_link_libraries(underflow libsoundio_shared ${LIBM})
-- else()
-- target_link_libraries(underflow libsoundio_static ${LIBSOUNDIO_LIBS} ${LIBM})
-- endif()
-+ target_link_libraries(underflow libsoundio::libsoundio ${LIBM})
-
- add_executable(backend_disconnect_recover test/backend_disconnect_recover.c)
- set_target_properties(backend_disconnect_recover PROPERTIES
- LINKER_LANGUAGE C
- COMPILE_FLAGS ${EXAMPLE_CFLAGS})
-- if(BUILD_DYNAMIC_LIBS)
-- target_link_libraries(backend_disconnect_recover libsoundio_shared)
-- else()
-- target_link_libraries(backend_disconnect_recover libsoundio_static ${LIBSOUNDIO_LIBS})
-- endif()
-+ target_link_libraries(backend_disconnect_recover libsoundio::libsoundio)
-
- add_executable(overflow test/overflow.c)
- set_target_properties(overflow PROPERTIES
- LINKER_LANGUAGE C
- COMPILE_FLAGS ${EXAMPLE_CFLAGS})
-- if(BUILD_DYNAMIC_LIBS)
-- target_link_libraries(overflow libsoundio_shared)
-- else()
-- target_link_libraries(overflow libsoundio_static ${LIBSOUNDIO_LIBS})
-- endif()
-+ target_link_libraries(overflow libsoundio::libsoundio)
-
-
-
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 6541f1b..e81bdce 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,4 +1,5 @@
+-cmake_minimum_required(VERSION 2.8.5)
++cmake_minimum_required(VERSION 3.14)
++cmake_policy(SET CMP0022 NEW)
+ project(libsoundio C)
+ set(CMAKE_MODULE_PATH ${libsoundio_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
+
+@@ -233,7 +234,8 @@ if(BUILD_DYNAMIC_LIBS)
+ LINKER_LANGUAGE C
+ )
+ target_link_libraries(libsoundio_shared LINK_PUBLIC ${LIBSOUNDIO_LIBS})
+- install(TARGETS libsoundio_shared DESTINATION ${CMAKE_INSTALL_LIBDIR})
++ target_include_directories(libsoundio_shared PUBLIC $)
++ install(TARGETS libsoundio_shared EXPORT libsoundio-export)
+ endif()
+
+ if(BUILD_STATIC_LIBS)
+@@ -243,9 +245,26 @@ if(BUILD_STATIC_LIBS)
+ COMPILE_FLAGS ${LIB_CFLAGS}
+ LINKER_LANGUAGE C
+ )
+- install(TARGETS libsoundio_static DESTINATION ${CMAKE_INSTALL_LIBDIR})
++ target_link_libraries(libsoundio_static PUBLIC ${LIBSOUNDIO_LIBS})
++ target_include_directories(libsoundio_static PUBLIC $)
++ install(TARGETS libsoundio_static EXPORT libsoundio-export)
+ endif()
+
++add_library(libsoundio INTERFACE)
++if(BUILD_DYNAMIC_LIBS)
++ target_link_libraries(libsoundio INTERFACE libsoundio_shared)
++else()
++ target_link_libraries(libsoundio INTERFACE libsoundio_static)
++endif()
++install(TARGETS libsoundio EXPORT libsoundio-export)
++install(
++ EXPORT libsoundio-export
++ FILE libsoundio-config.cmake
++ DESTINATION share/libsoundio/
++ NAMESPACE ${PROJECT_NAME}::
++ EXPORT_LINK_INTERFACE_LIBRARIES
++)
++
+ install(FILES
+ ${LIBSOUNDIO_HEADERS}
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/soundio")
diff --git a/ports/libsoundio/portfile.cmake b/ports/libsoundio/portfile.cmake
index 0e1b7f561b682a..e28aa40c6227de 100644
--- a/ports/libsoundio/portfile.cmake
+++ b/ports/libsoundio/portfile.cmake
@@ -1,8 +1,5 @@
-include(vcpkg_common_functions)
-if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
- message(FATAL_ERROR "WindowsStore not supported")
-endif()
+vcpkg_fail_port_install(ON_TARGET "UWP")
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
@@ -14,15 +11,22 @@ vcpkg_from_github(
fix_cmakelists.patch
)
-string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" BUILD_SHARED_LIBS)
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" BUILD_DYNAMIC_LIBS)
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC_LIBS)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
OPTIONS
- -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}
+ -DBUILD_DYNAMIC_LIBS=${BUILD_DYNAMIC_LIBS}
+ -DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS}
-DBUILD_EXAMPLE_PROGRAMS=OFF
-DBUILD_TESTS=OFF
+ -DENABLE_JACK=OFF
+ -DENABLE_PULSEAUDIO=OFF
+ -DENABLE_ALSA=OFF
+ -DENABLE_COREAUDIO=${VCPKG_TARGET_IS_OSX}
+ -DENABLE_WASAPI=${VCPKG_TARGET_IS_WINDOWS}
)
vcpkg_install_cmake()
diff --git a/ports/libssh/CONTROL b/ports/libssh/CONTROL
index c12fb8f8f489bb..4439406538ea9c 100644
--- a/ports/libssh/CONTROL
+++ b/ports/libssh/CONTROL
@@ -3,6 +3,7 @@ Version: 0.9.0
Homepage: https://www.libssh.org/
Description: libssh is a multiplatform C library implementing the SSHv2 and SSHv1 protocol on client and server side
Build-Depends: openssl
+Supports: !uwp
Feature: zlib
Description: libssh with zlib
diff --git a/ports/libusb-win32/CONTROL b/ports/libusb-win32/CONTROL
index 6904f706676297..bea5b909293882 100644
--- a/ports/libusb-win32/CONTROL
+++ b/ports/libusb-win32/CONTROL
@@ -2,3 +2,4 @@ Source: libusb-win32
Version: 1.2.6.0-3
Homepage: https://sourceforge.net/projects/libusb-win32
Description: Allows user space applications to access many USB device on Windows.
+Supports: windows
\ No newline at end of file
diff --git a/ports/libuuid/CONTROL b/ports/libuuid/CONTROL
index e5dc0c0b4e6e14..2d46a830767a3c 100644
--- a/ports/libuuid/CONTROL
+++ b/ports/libuuid/CONTROL
@@ -1,3 +1,4 @@
Source: libuuid
Version: 1.0.3-3
Description: Universally unique id library
+Supports: linux|osx
\ No newline at end of file
diff --git a/ports/llgl/CONTROL b/ports/llgl/CONTROL
index 476ccd8c25bf0c..fcba2d2d424510 100644
--- a/ports/llgl/CONTROL
+++ b/ports/llgl/CONTROL
@@ -2,6 +2,7 @@ Source: llgl
Version: 2019-08-15
Homepage: https://github.com/LukasBanana/LLGL
Description: Low Level Graphics Library (LLGL) is a thin abstraction layer for the modern graphics APIs OpenGL, Direct3D, Vulkan, and Metal.
+Supports: !uwp
Feature: opengl
Description: Support for opengl
diff --git a/ports/llvm/CONTROL b/ports/llvm/CONTROL
index e1569bdee9e2ba..2eb184a84d2a0d 100644
--- a/ports/llvm/CONTROL
+++ b/ports/llvm/CONTROL
@@ -3,6 +3,7 @@ Version: 8.0.0-3
Homepage: https://llvm.org/
Description: The LLVM Compiler Infrastructure
Build-Depends: atlmfc (windows)
+Supports: !uwp
Default-Features: tools, utils
Feature: tools
@@ -15,4 +16,4 @@ Feature: example
Description: Generate build targets for the LLVM examples
Feature: test
-Description: Generate build targets for the LLVM unit tests.
\ No newline at end of file
+Description: Generate build targets for the LLVM unit tests.
diff --git a/ports/log4cpp/CONTROL b/ports/log4cpp/CONTROL
index 11c37843b267dd..ec84f40653626d 100644
--- a/ports/log4cpp/CONTROL
+++ b/ports/log4cpp/CONTROL
@@ -2,4 +2,4 @@ Source: log4cpp
Version: 2.9.1-2
Homepage: https://github.com/orocos-toolchain/log4cpp
Description: Log4cpp is library of C++ classes for flexible logging to files, syslog, IDSA and other destinations. It is modeled after the Log4j Java library, staying as close to their API as is reasonable.
-
+Supports: !uwp
diff --git a/ports/luajit/CONTROL b/ports/luajit/CONTROL
index 03b778e9a8a2bb..f37d4dcbeb63b3 100644
--- a/ports/luajit/CONTROL
+++ b/ports/luajit/CONTROL
@@ -2,3 +2,4 @@ Source: luajit
Version: 2.0.5-3
Homepage: https://github.com/LuaJIT/LuaJIT
Description: LuaJIT is a Just-In-Time (JIT) compiler for the Lua programming language.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/lzfse/CONTROL b/ports/lzfse/CONTROL
index f79063ad98d4b0..cc4669974139cc 100644
--- a/ports/lzfse/CONTROL
+++ b/ports/lzfse/CONTROL
@@ -2,3 +2,4 @@ Source: lzfse
Version: 1.0-2
Homepage: https://github.com/lzfse/lzfse
Description: Lempel-Ziv style data compressor using Finite State Entropy coding.
+Supports: !arm
\ No newline at end of file
diff --git a/ports/marl/CONTROL b/ports/marl/CONTROL
index f3a24fdcd625e6..16f464135d30dd 100644
--- a/ports/marl/CONTROL
+++ b/ports/marl/CONTROL
@@ -2,3 +2,4 @@ Source: marl
Version: 2019-09-13
Description: A hybrid thread/fiber task scheduler written in C++ 11
Homepage: https://github.com/google/marl
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/matroska/CONTROL b/ports/matroska/CONTROL
index 29cef7e80ec657..1a5235db7f16dd 100644
--- a/ports/matroska/CONTROL
+++ b/ports/matroska/CONTROL
@@ -3,3 +3,4 @@ Version: 1.5.2
Homepage: https://github.com/Matroska-Org/libmatroska
Description: a C++ libary to parse Matroska files (.mkv and .mka)
Build-Depends: ebml
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/mcpp/CONTROL b/ports/mcpp/CONTROL
index e7663444045ff9..cc756ae9a05644 100644
--- a/ports/mcpp/CONTROL
+++ b/ports/mcpp/CONTROL
@@ -1,4 +1,4 @@
Source: mcpp
-Version: 2.7.2.14
+Version: 2.7.2.14-1
Homepage: https://github.com/zeroc-ice/mcpp
Description: Fork of mcpp, a C/C++ preprocessor
diff --git a/ports/mcpp/portfile.cmake b/ports/mcpp/portfile.cmake
index 9394d00c37a070..11e268f99b3464 100644
--- a/ports/mcpp/portfile.cmake
+++ b/ports/mcpp/portfile.cmake
@@ -15,7 +15,6 @@ vcpkg_install_cmake()
file(
INSTALL
- ${SOURCE_PATH}/config.h
${SOURCE_PATH}/mcpp_lib.h
${SOURCE_PATH}/mcpp_out.h
DESTINATION
diff --git a/ports/mdnsresponder/CONTROL b/ports/mdnsresponder/CONTROL
index 66c039dbc64762..9f97716e8ae4ab 100644
--- a/ports/mdnsresponder/CONTROL
+++ b/ports/mdnsresponder/CONTROL
@@ -2,3 +2,4 @@ Source: mdnsresponder
Version: 765.30.11-2
Description: The mDNSResponder project is a component of Bonjour, Apple's ease-of-use IP networking initiative.
Homepage: https://developer.apple.com/bonjour/
+Supports: !arm
\ No newline at end of file
diff --git a/ports/mecab/CONTROL b/ports/mecab/CONTROL
index b5b9c8f1074db1..9bf6cec343ea7f 100644
--- a/ports/mecab/CONTROL
+++ b/ports/mecab/CONTROL
@@ -1,3 +1,4 @@
Source: mecab
Version: 1.0
Description: A morphological analysis engine based on CRF
+Supports: !(uwp|arm|arm64)
\ No newline at end of file
diff --git a/ports/minhook/CONTROL b/ports/minhook/CONTROL
index 95209891ba88ec..0daab0e4c954be 100644
--- a/ports/minhook/CONTROL
+++ b/ports/minhook/CONTROL
@@ -1,3 +1,4 @@
Source: minhook
Version: 1.3.3
-Description: The Minimalistic x86/x64 API Hooking Library for Windows.
\ No newline at end of file
+Description: The Minimalistic x86/x64 API Hooking Library for Windows.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/minifb/CONTROL b/ports/minifb/CONTROL
index cff3a97c0482a6..5a86f9bbe9673a 100644
--- a/ports/minifb/CONTROL
+++ b/ports/minifb/CONTROL
@@ -2,3 +2,4 @@ Source: minifb
Version: 2019-08-20-1
Homepage: https://github.com/emoon/minifb
Description: MiniFB (Mini FrameBuffer) is a small cross platform library that makes it easy to render (32-bit) pixels in a window.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/minizip/CONTROL b/ports/minizip/CONTROL
index 22ea0c9f30861b..415a3a82cad755 100644
--- a/ports/minizip/CONTROL
+++ b/ports/minizip/CONTROL
@@ -3,6 +3,7 @@ Version: 1.2.11-6
Build-Depends: zlib
Homepage: https://github.com/madler/zlib
Description: Zip compression library
+Supports: !uwp
Feature: bzip2
Build-Depends: bzip2
diff --git a/ports/mongoose/CONTROL b/ports/mongoose/CONTROL
index c307982cf1702a..a6c7f8663ae925 100644
--- a/ports/mongoose/CONTROL
+++ b/ports/mongoose/CONTROL
@@ -2,7 +2,8 @@ Source: mongoose
Version: 6.15-2
Description: Embedded web server / embedded networking library
Homepage: https://cesanta.com/
+Supports: !uwp
Feature: ssl
Build-Depends: openssl
-Description: Build with openssl
\ No newline at end of file
+Description: Build with openssl
diff --git a/ports/monkeys-audio/CONTROL b/ports/monkeys-audio/CONTROL
index d265f22d911eb3..abe072f2565423 100644
--- a/ports/monkeys-audio/CONTROL
+++ b/ports/monkeys-audio/CONTROL
@@ -1,8 +1,9 @@
Source: monkeys-audio
-Version: 5.14
+Version: 5.14-1
Homepage: https://monkeysaudio.com
Description: Monkey's Audio is an excellent audio compression tool which has multiple advantages over traditional methods.
Audio files compressed with it ends with .ape extension.
+Supports: !uwp
Feature: tools
-Description: Build monkeys-audio tools
\ No newline at end of file
+Description: Build monkeys-audio tools
diff --git a/ports/mpir/CONTROL b/ports/mpir/CONTROL
index 12f9d38ea234d7..79238cbb55c429 100644
--- a/ports/mpir/CONTROL
+++ b/ports/mpir/CONTROL
@@ -2,3 +2,4 @@ Source: mpir
Version: 3.0.0-7
Homepage: https://github.com/wbhart/mpir
Description: Multiple Precision Integers and Rationals.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/mqtt-cpp/CONTROL b/ports/mqtt-cpp/CONTROL
index 73303edd292230..eae0c7dd4bad74 100644
--- a/ports/mqtt-cpp/CONTROL
+++ b/ports/mqtt-cpp/CONTROL
@@ -1,5 +1,5 @@
Source: mqtt-cpp
-Version: 7.0.1
+Version: 7.0.1-1
Description: Header-only MQTT client/server for C++14 based on Boost.Asio.
Homepage: https://github.com/redboltz/mqtt_cpp
-Build-Depends: boost-asio, boost-timer
+Build-Depends: boost-asio, boost-timer, boost-system, boost-date-time
diff --git a/ports/mqtt-cpp/portfile.cmake b/ports/mqtt-cpp/portfile.cmake
index 13e5e2077e52a4..d1b930826fe3b4 100644
--- a/ports/mqtt-cpp/portfile.cmake
+++ b/ports/mqtt-cpp/portfile.cmake
@@ -1,5 +1,3 @@
-# header-only library
-
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO redboltz/mqtt_cpp
@@ -14,7 +12,10 @@ vcpkg_configure_cmake(
OPTIONS
-DMQTT_BUILD_EXAMPLES=OFF
-DMQTT_BUILD_TESTS=OFF
+ -DCMAKE_DISABLE_FIND_PACKAGE_Doxygen=ON
)
-file(INSTALL ${SOURCE_PATH}/include/ DESTINATION ${CURRENT_PACKAGES_DIR}/include)
+vcpkg_install_cmake()
+
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug)
file(INSTALL ${SOURCE_PATH}/LICENSE_1_0.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
diff --git a/ports/ms-angle/CONTROL b/ports/ms-angle/CONTROL
index 4fadc599431234..4ba09505088e13 100644
--- a/ports/ms-angle/CONTROL
+++ b/ports/ms-angle/CONTROL
@@ -2,3 +2,4 @@ Source: ms-angle
Version: 2018-04-18-2
Description: The UWP version of 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.
+Supports: windows|uwp
\ No newline at end of file
diff --git a/ports/msmpi/CONTROL b/ports/msmpi/CONTROL
index d21b80c37df0b2..baa44b8fe85aad 100644
--- a/ports/msmpi/CONTROL
+++ b/ports/msmpi/CONTROL
@@ -1,3 +1,4 @@
Source: msmpi
Version: 10.0-2
Description: Microsoft MPI
+Supports: windows
\ No newline at end of file
diff --git a/ports/nano-signal-slot/CONTROL b/ports/nano-signal-slot/CONTROL
index 9594e575bab898..99cee9fec497ec 100644
--- a/ports/nano-signal-slot/CONTROL
+++ b/ports/nano-signal-slot/CONTROL
@@ -2,3 +2,4 @@ Source: nano-signal-slot
Version: 2.0.1
Homepage: https://github.com/NoAvailableAlias/nano-signal-slot
Description: Pure C++17 Signals and Slots
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/nativefiledialog/CONTROL b/ports/nativefiledialog/CONTROL
index 60aca3c45e1d92..afe28357787b69 100644
--- a/ports/nativefiledialog/CONTROL
+++ b/ports/nativefiledialog/CONTROL
@@ -2,6 +2,7 @@ Source: nativefiledialog
Version: 2019-08-28
Description: A tiny, neat C library that portably invokes native file open and save dialogs
Homepage: https://github.com/mlabbe/nativefiledialog
+Supports: !uwp
Feature: zenity
Description: Using Zenity backend on Linux
diff --git a/ports/networkdirect-sdk/CONTROL b/ports/networkdirect-sdk/CONTROL
index 3cc939c8e58a39..158183800d5d31 100644
--- a/ports/networkdirect-sdk/CONTROL
+++ b/ports/networkdirect-sdk/CONTROL
@@ -1,4 +1,5 @@
Source: networkdirect-sdk
Version: 2.0.1
Description: The Network Direct architecture allows hardware vendors to expose the advanced capabilities of their networking devices.
-Homepage: https://www.nuget.org/packages/NetworkDirect
\ No newline at end of file
+Homepage: https://www.nuget.org/packages/NetworkDirect
+Supports: windows&(x64|x86)
\ No newline at end of file
diff --git a/ports/openal-soft/CONTROL b/ports/openal-soft/CONTROL
index b52d568cd1645d..0833c52c095b4c 100644
--- a/ports/openal-soft/CONTROL
+++ b/ports/openal-soft/CONTROL
@@ -2,3 +2,4 @@ Source: openal-soft
Version: 1.20.0
Homepage: https://github.com/kcat/openal-soft
Description: OpenAL Soft is an LGPL-licensed, cross-platform, software implementation of the OpenAL 3D audio API.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/openexr/CONTROL b/ports/openexr/CONTROL
index 7d8759237f7aea..ddf7b0fbd2be03 100644
--- a/ports/openexr/CONTROL
+++ b/ports/openexr/CONTROL
@@ -3,3 +3,4 @@ Version: 2.3.0-5
Homepage: https://www.openexr.com/
Description: OpenEXR is a high dynamic-range (HDR) image file format developed by Industrial Light & Magic for use in computer imaging applications
Build-Depends: zlib
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/openmpi/CONTROL b/ports/openmpi/CONTROL
index 6ea5a17c124926..86af5ffd5c5d85 100644
--- a/ports/openmpi/CONTROL
+++ b/ports/openmpi/CONTROL
@@ -2,3 +2,4 @@ Source: openmpi
Version: 4.0.1
Homepage: https://www.open-mpi.org/
Description: The Open MPI Project is an open source Message Passing Interface implementation that is developed and maintained by a consortium of academic, research, and industry partners. Open MPI is therefore able to combine the expertise, technologies, and resources from all across the High Performance Computing community in order to build the best MPI library available. Open MPI offers advantages for system and software vendors, application developers and computer science researchers.
+Supports: !(windows|uwp)
\ No newline at end of file
diff --git a/ports/openni2/CONTROL b/ports/openni2/CONTROL
index a8fa4a2ac94c5c..c1b869a57bdfec 100644
--- a/ports/openni2/CONTROL
+++ b/ports/openni2/CONTROL
@@ -3,3 +3,4 @@ Version: 2.2.0.33-11
Build-Depends: kinectsdk1
Homepage: https://github.com/OpenNI/OpenNI2
Description: OpenNI is open source library for access to Natural Interaction (NI) devices such as RGB-D camera.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/openssl-unix/CONTROL b/ports/openssl-unix/CONTROL
index b2a55c187db45a..c56c95dad4baca 100644
--- a/ports/openssl-unix/CONTROL
+++ b/ports/openssl-unix/CONTROL
@@ -1,3 +1,4 @@
Source: openssl-unix
Version: 1.1.1d-1
Description: OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.
+Supports: !(windows|uwp)
\ No newline at end of file
diff --git a/ports/openssl-uwp/CONTROL b/ports/openssl-uwp/CONTROL
index a4a8e681a823c2..7e7650fc22f04d 100644
--- a/ports/openssl-uwp/CONTROL
+++ b/ports/openssl-uwp/CONTROL
@@ -1,3 +1,4 @@
Source: openssl-uwp
Version: 1.1.1d-1
Description: OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.
+Supports: uwp
\ No newline at end of file
diff --git a/ports/openssl-windows/CONTROL b/ports/openssl-windows/CONTROL
index 9d80476f848823..561977fe0f7eda 100644
--- a/ports/openssl-windows/CONTROL
+++ b/ports/openssl-windows/CONTROL
@@ -1,3 +1,4 @@
Source: openssl-windows
Version: 1.1.1d-1
Description: OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.
+Supports: windows
\ No newline at end of file
diff --git a/ports/opentracing/CONTROL b/ports/opentracing/CONTROL
index 62f6dd30362c44..8a5e0625f53df9 100644
--- a/ports/opentracing/CONTROL
+++ b/ports/opentracing/CONTROL
@@ -2,3 +2,4 @@ Source: opentracing
Version: 1.5.1-1
Description: C++ implementation of the OpenTracing API
Homepage: https://opentracing.io
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/openxr-loader/CONTROL b/ports/openxr-loader/CONTROL
index 0088df713ccf08..632fadab740b55 100644
--- a/ports/openxr-loader/CONTROL
+++ b/ports/openxr-loader/CONTROL
@@ -1,6 +1,7 @@
Source: openxr-loader
Version: 1.0.3.0
Description: Khronos API for abstracting VR/MR/AR hardware
+Supports: !(arm|uwp)
Feature: vulkan
Description: Vulkan functionality for OpenXR
diff --git a/ports/opusfile/CONTROL b/ports/opusfile/CONTROL
index 0ba3167a67f7eb..80ca95f96b0448 100644
--- a/ports/opusfile/CONTROL
+++ b/ports/opusfile/CONTROL
@@ -3,6 +3,7 @@ Version: 0.11-3
Homepage: https://github.com/xiph/opusfile
Description: Stand-alone decoder library for .opus streams
Build-Depends: libogg, opus
+Supports: !uwp
Feature: opusurl
Description: Support decoding of http(s) streams
diff --git a/ports/osg/CONTROL b/ports/osg/CONTROL
index f677e0284b9b12..8df250d7ce5783 100644
--- a/ports/osg/CONTROL
+++ b/ports/osg/CONTROL
@@ -1,8 +1,8 @@
Source: osg
-Version: 3.6.4
+Version: 3.6.4-1
Homepage: https://github.com/openscenegraph/OpenSceneGraph
Description: The OpenSceneGraph is an open source high performance 3D graphics toolkit.
-Build-Depends: freetype, jasper, openexr, zlib, gdal, giflib, libjpeg-turbo, libpng, tiff, fontconfig
+Build-Depends: freetype, jasper, openexr, zlib, gdal, giflib, libjpeg-turbo, libpng, tiff, fontconfig, sdl2, boost-asio (!windows), libxml2 (windows), giflib (windows), freeglut (windows)
Feature: collada
Description: Support for Collada (.dae) files
diff --git a/ports/osg/portfile.cmake b/ports/osg/portfile.cmake
index 8c6b5f299b3dc5..03520aa9b6d174 100644
--- a/ports/osg/portfile.cmake
+++ b/ports/osg/portfile.cmake
@@ -18,6 +18,18 @@ else()
set(OSG_DYNAMIC ON)
endif()
file(REMOVE ${SOURCE_PATH}/CMakeModules/FindSDL2.cmake)
+
+set(OPTIONS)
+if(NOT "collada" IN_LIST FEATURES)
+ list(APPEND OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_COLLADA=ON)
+endif()
+list(APPEND OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_FFmpeg=ON)
+list(APPEND OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_DCMTK=ON)
+list(APPEND OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_GStreamer=ON)
+list(APPEND OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_GLIB=ON)
+list(APPEND OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_SDL=ON)
+list(APPEND OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_LIBLAS=ON)
+
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
OPTIONS
diff --git a/ports/pbc/CONTROL b/ports/pbc/CONTROL
index b717ac1e52e05f..1577832fd66730 100644
--- a/ports/pbc/CONTROL
+++ b/ports/pbc/CONTROL
@@ -3,3 +3,4 @@ Version: 0.5.14-2
Build-Depends: mpir (windows)
Homepage: https://crypto.stanford.edu/pbc
Description: Pairing-Based Crypto library provides low-level routines for pairing-based cryptosystems.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/physx/CONTROL b/ports/physx/CONTROL
index 49150dc292aa6f..c744a2ae36c38d 100644
--- a/ports/physx/CONTROL
+++ b/ports/physx/CONTROL
@@ -1,3 +1,4 @@
-Source: physx
-Version: 4.1.1-3
-Description: The NVIDIA PhysX SDK is a scalable multi-platform physics solution supporting a wide range of devices, from smartphones to high-end multicore CPUs and GPUs
+Source: physx
+Version: 4.1.1-3
+Description: The NVIDIA PhysX SDK is a scalable multi-platform physics solution supporting a wide range of devices, from smartphones to high-end multicore CPUs and GPUs
+Supports: !uwp
diff --git a/ports/pistache/CONTROL b/ports/pistache/CONTROL
index c1b4408cf55faa..307fe019164c12 100644
--- a/ports/pistache/CONTROL
+++ b/ports/pistache/CONTROL
@@ -1,4 +1,5 @@
Source: pistache
Version: 2019-08-05
Homepage: https://github.com/oktal/pistache
-Description: Pistache is a modern and elegant HTTP and REST framework for C++. It is entirely written in pure-C++11 and provides a clear and pleasant API.
\ No newline at end of file
+Description: Pistache is a modern and elegant HTTP and REST framework for C++. It is entirely written in pure-C++11 and provides a clear and pleasant API.
+Supports: linux
\ No newline at end of file
diff --git a/ports/pmdk/CONTROL b/ports/pmdk/CONTROL
index c2e5bed303fd43..4b4cac6b2f6412 100644
--- a/ports/pmdk/CONTROL
+++ b/ports/pmdk/CONTROL
@@ -2,3 +2,4 @@ Source: pmdk
Version: 1.7-1
Homepage: https://github.com/pmem/pmdk
Description: Persistent Memory Development Kit
+Supports: !(arm|x86)
\ No newline at end of file
diff --git a/ports/portmidi/CONTROL b/ports/portmidi/CONTROL
index 07ba19c0c77c37..1a9917935ab026 100644
--- a/ports/portmidi/CONTROL
+++ b/ports/portmidi/CONTROL
@@ -2,3 +2,4 @@ Source: portmidi
Version: 0.217.1-1
Homepage: https://sourceforge.net/projects/portmedia/
Description: Free, cross-platform, open-source I/O library for MIDI
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/ptex/CONTROL b/ports/ptex/CONTROL
index 823988f8568e0c..501913cf5bd9d8 100644
--- a/ports/ptex/CONTROL
+++ b/ports/ptex/CONTROL
@@ -3,3 +3,4 @@ Version: 2.3.2-1
Homepage: https://github.com/wdas/ptex
Description: Per-Face Texture Mapping for Production Rendering.
Build-Depends: zlib
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/pthreads/CONTROL b/ports/pthreads/CONTROL
index 43c38ffdbedc6c..19e2bd0ac82d34 100644
--- a/ports/pthreads/CONTROL
+++ b/ports/pthreads/CONTROL
@@ -2,3 +2,4 @@ Source: pthreads
Version: 3.0.0-4
Homepage: https://sourceware.org/pub/pthreads-win32/
Description: pthreads for windows
+Supports: !(uwp|arm|arm64)
\ No newline at end of file
diff --git a/ports/pthreads/portfile.cmake b/ports/pthreads/portfile.cmake
index 393fefddc766d7..3abb2d591199fc 100644
--- a/ports/pthreads/portfile.cmake
+++ b/ports/pthreads/portfile.cmake
@@ -1,14 +1,12 @@
-include(vcpkg_common_functions)
-
-if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
- message(FATAL_ERROR "${PORT} does not currently support UWP platform nor ARM architectures")
-endif()
-
if(VCPKG_CMAKE_SYSTEM_NAME AND NOT VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
return()
endif()
+if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "arm" OR VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
+ message(FATAL_ERROR "${PORT} does not currently support UWP platform nor ARM architectures")
+endif()
+
set(PTHREADS4W_VERSION "3.0.0")
vcpkg_download_distfile(ARCHIVE
@@ -98,3 +96,5 @@ file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/pt
file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/pthread)
file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/pthreads)
file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/pthreads_windows)
+
+set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled)
diff --git a/ports/qt5-activeqt/CONTROL b/ports/qt5-activeqt/CONTROL
index 4ec2594b35d2f4..e4aa3b5c162a59 100644
--- a/ports/qt5-activeqt/CONTROL
+++ b/ports/qt5-activeqt/CONTROL
@@ -2,3 +2,4 @@ Source: qt5-activeqt
Version: 5.12.5
Description: Qt5 ActiveQt Module - ActiveX components
Build-Depends: qt5-base
+Supports: windows
\ No newline at end of file
diff --git a/ports/qt5-connectivity/CONTROL b/ports/qt5-connectivity/CONTROL
index 0bec2a8b4ca8cc..245cfa1b192bef 100644
--- a/ports/qt5-connectivity/CONTROL
+++ b/ports/qt5-connectivity/CONTROL
@@ -1,4 +1,4 @@
Source: qt5-connectivity
Version: 5.12.5-1
Description: Qt5 Connectivity module - Provides access to Bluetooth and NFC hardware
-Build-Depends: qt5-base, qt5-androidextras (android)
+Build-Depends: qt5-base
diff --git a/ports/qt5-macextras/CONTROL b/ports/qt5-macextras/CONTROL
index 21b0ad5fa78699..6bd46f216c4a87 100644
--- a/ports/qt5-macextras/CONTROL
+++ b/ports/qt5-macextras/CONTROL
@@ -2,3 +2,4 @@ Source: qt5-macextras
Version: 5.12.5
Description: Qt5 Mac Extras Module. Provides platform-specific APIs for mac.
Build-Depends: qt5-base
+Supports: osx
\ No newline at end of file
diff --git a/ports/qt5-purchasing/CONTROL b/ports/qt5-purchasing/CONTROL
index f970ba418cf55a..f83c48053726f7 100644
--- a/ports/qt5-purchasing/CONTROL
+++ b/ports/qt5-purchasing/CONTROL
@@ -1,4 +1,4 @@
Source: qt5-purchasing
Version: 5.12.5-1
Description: Qt5 Purchasing Module - Enables in-app purchase of products in Qt applications.
-Build-Depends: qt5-base, qt5-declarative, qt5-androidextras (android)
+Build-Depends: qt5-base, qt5-declarative
diff --git a/ports/qt5-winextras/CONTROL b/ports/qt5-winextras/CONTROL
index 5d948ee5ce16cc..3f65220bf37d81 100644
--- a/ports/qt5-winextras/CONTROL
+++ b/ports/qt5-winextras/CONTROL
@@ -2,3 +2,4 @@ Source: qt5-winextras
Version: 5.12.5-1
Description: Qt5 Windows Extras Module. Provides platform-specific APIs for Windows.
Build-Depends: qt5-base, atlmfc (windows), qt5-declarative, qt5-multimedia
+Supports: windows
\ No newline at end of file
diff --git a/ports/rabit/CONTROL b/ports/rabit/CONTROL
index 7b07cba7b53d92..64dd8ea8d8a877 100644
--- a/ports/rabit/CONTROL
+++ b/ports/rabit/CONTROL
@@ -3,4 +3,4 @@ Version: 0.1-2
Homepage: https://github.com/dmlc/rabit
Description: rabit is a light weight library that provides a fault tolerant interface of Allreduce and Broadcast. It is designed to support easy implementations of distributed machine learning programs, many of which fall naturally under the Allreduce abstraction.
Build-Depends: dmlc
-
+Supports: !uwp
diff --git a/ports/raylib/CONTROL b/ports/raylib/CONTROL
index 8d50803e64f4f7..2113f5760d15e9 100644
--- a/ports/raylib/CONTROL
+++ b/ports/raylib/CONTROL
@@ -1,6 +1,7 @@
Source: raylib
Version: 2.5.0
Description: A simple and easy-to-use library to enjoy videogames programming
+Supports: !(arm|uwp)
#Build-Depends: glfw3
Feature: non-audio
diff --git a/ports/readline/CONTROL b/ports/readline/CONTROL
index 4fdb10939fb944..c487f389b52ac3 100644
--- a/ports/readline/CONTROL
+++ b/ports/readline/CONTROL
@@ -2,3 +2,4 @@ Source: readline
Version: 0
Description: GNU readline and history libraries
Build-Depends: readline-win32 (windows)
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/rhash/CONTROL b/ports/rhash/CONTROL
index a2bb52c2f26ead..8b838cc39a1dd1 100644
--- a/ports/rhash/CONTROL
+++ b/ports/rhash/CONTROL
@@ -2,3 +2,4 @@ Source: rhash
Version: 1.3.8
Homepage: https://github.com/rhash/RHash
Description: C library for computing a wide variety of hash sums
+Supports: !uwp
diff --git a/ports/sciter/CONTROL b/ports/sciter/CONTROL
index 10beb200a19010..b835b87e11d27b 100644
--- a/ports/sciter/CONTROL
+++ b/ports/sciter/CONTROL
@@ -2,3 +2,4 @@ Source: sciter
Version: 4.2.6.9-2
Homepage: https://github.com/c-smile/sciter-sdk
Description: Sciter is an embeddable HTML/CSS/scripting engine.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/septag-sx/CONTROL b/ports/septag-sx/CONTROL
index ee9917e667d0f3..a41e214af566f4 100644
--- a/ports/septag-sx/CONTROL
+++ b/ports/septag-sx/CONTROL
@@ -1,3 +1,4 @@
Source: septag-sx
Version: 2019-05-07-2
Description: Portable base library for C programmers, designed for performance and simplicity.
+Supports: !(uwp|arm)
\ No newline at end of file
diff --git a/ports/simdjson/CONTROL b/ports/simdjson/CONTROL
index 14f70df1c28273..fe34d9af319b23 100644
--- a/ports/simdjson/CONTROL
+++ b/ports/simdjson/CONTROL
@@ -2,3 +2,4 @@ Source: simdjson
Version: 2019-12-27
Description: A extremely fast JSON library that can parse gigabytes of JSON per second
Homepage: https://github.com/lemire/simdjson
+Supports: !(x86|arm|arm64)
\ No newline at end of file
diff --git a/ports/soundtouch/CONTROL b/ports/soundtouch/CONTROL
index 7ce1c2ba65e465..28b6ac87c38770 100644
--- a/ports/soundtouch/CONTROL
+++ b/ports/soundtouch/CONTROL
@@ -3,3 +3,4 @@ Version: 2.0.0-4
Homepage: https://www.surina.net/soundtouch
Description: SoundTouch is an open-source audio processing library for changing the Tempo, Pitch and Playback Rates of audio streams or audio files.
Build-Depends: atlmfc (windows)
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/spdk-dpdk/CONTROL b/ports/spdk-dpdk/CONTROL
index 02647149a11ac6..61d1415cdd9b2e 100644
--- a/ports/spdk-dpdk/CONTROL
+++ b/ports/spdk-dpdk/CONTROL
@@ -1,4 +1,4 @@
Source: spdk-dpdk
Version: 20181124
Description: SPDK mirror of DPDK. A set of libraries and drivers for fast packet processing
-
+Supports: linux
diff --git a/ports/spdk-ipsec/CONTROL b/ports/spdk-ipsec/CONTROL
index 3f8e1a0344df64..7adb9c4c99c6be 100644
--- a/ports/spdk-ipsec/CONTROL
+++ b/ports/spdk-ipsec/CONTROL
@@ -1,4 +1,4 @@
Source: spdk-ipsec
Version: 20180711
Description: SPDK mirror of ipsec. Intel(R) Multi-Buffer Crypto for IPsec Library
-
+Supports: x64
diff --git a/ports/spdk-isal/CONTROL b/ports/spdk-isal/CONTROL
index abfbe3de01a90f..1a134ae14e08a6 100644
--- a/ports/spdk-isal/CONTROL
+++ b/ports/spdk-isal/CONTROL
@@ -1,4 +1,4 @@
Source: spdk-isal
Version: 20181006
Description: SPDK mirror of isa-l. Intel(R) Intelligent Storage Acceleration Library
-
+Supports: x64
diff --git a/ports/spdk/CONTROL b/ports/spdk/CONTROL
index 5e2cf3ca2cccc1..0233395c11e8c7 100644
--- a/ports/spdk/CONTROL
+++ b/ports/spdk/CONTROL
@@ -1,4 +1,5 @@
Source: spdk
Version: 19.01.1
Description: Storage Performance Development Kit
-Build-Depends: spdk-dpdk, spdk-ipsec, spdk-isal
\ No newline at end of file
+Build-Depends: spdk-dpdk, spdk-ipsec, spdk-isal
+Supports: linux
\ No newline at end of file
diff --git a/ports/teemo/CONTROL b/ports/teemo/CONTROL
index 2ee045a3530d46..4d96fe5af2451a 100644
--- a/ports/teemo/CONTROL
+++ b/ports/teemo/CONTROL
@@ -1,5 +1,5 @@
Source: teemo
-Version: 1.2
+Version: 1.2-1
Build-Depends: curl[non-http], cpprestsdk
Description: C++ File Download Library, support Multithreading, Breakpoint Transmission, Speed Limit, Real-time Speed.
Homepage: https://github.com/winsoft666/teemo
\ No newline at end of file
diff --git a/ports/teemo/adjust-install-dir.patch b/ports/teemo/adjust-install-dir.patch
new file mode 100644
index 00000000000000..3ca1dcf56d02ce
--- /dev/null
+++ b/ports/teemo/adjust-install-dir.patch
@@ -0,0 +1,22 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 20de97c..0009c8a 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -108,7 +108,7 @@ set_target_properties(${LIB_NAME}
+ RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" )
+
+ target_include_directories(${LIB_NAME} INTERFACE
+- $)
++ $)
+
+ install(TARGETS ${LIB_NAME}
+ EXPORT ${LIB_NAME}-target
+@@ -117,7 +117,7 @@ install(TARGETS ${LIB_NAME}
+ ARCHIVE DESTINATION lib)
+
+
+-install(FILES ${HEADER_FILES} DESTINATION include)
++install(FILES ${HEADER_FILES} DESTINATION include/teemo)
+
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/../CMake/teemo-config.cmake
diff --git a/ports/teemo/portfile.cmake b/ports/teemo/portfile.cmake
index df79626c0b9c58..07b5d5a534023a 100644
--- a/ports/teemo/portfile.cmake
+++ b/ports/teemo/portfile.cmake
@@ -6,6 +6,9 @@ vcpkg_from_github(
REF 15edb1705d18ee78b32516a8ae52d6b10507af62
SHA512 7dbe917d48b1e8c4b004bad33d8a82524e501d8bec6cdeca4e89ebbe8ed79fa484028c3afd365347e31fa83f64a6f0f5a42ea0063baa7c0985824fb3dffcc8f2
HEAD_REF master
+ PATCHES
+ # Installing "slice.h" to the root include directory causes build issues in many other libraries
+ adjust-install-dir.patch
)
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" TEEMO_STATIC)
@@ -26,13 +29,13 @@ elseif(EXISTS ${CURRENT_PACKAGES_DIR}/share/teemo)
vcpkg_fixup_cmake_targets(CONFIG_PATH share/teemo)
endif()
-file(READ ${CURRENT_PACKAGES_DIR}/include/teemo.h TEEMO_H)
+file(READ ${CURRENT_PACKAGES_DIR}/include/teemo/teemo.h TEEMO_H)
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
string(REPLACE "#ifdef TEEMO_STATIC" "#if 1" TEEMO_H "${TEEMO_H}")
else()
string(REPLACE "#ifdef TEEMO_STATIC" "#if 0" TEEMO_H "${TEEMO_H}")
endif()
-file(WRITE ${CURRENT_PACKAGES_DIR}/include/teemo.h "${TEEMO_H}")
+file(WRITE ${CURRENT_PACKAGES_DIR}/include/teemo/teemo.h "${TEEMO_H}")
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
diff --git a/ports/telnetpp/CONTROL b/ports/telnetpp/CONTROL
index 53dd8657aaa753..ffb5ef01a3a620 100644
--- a/ports/telnetpp/CONTROL
+++ b/ports/telnetpp/CONTROL
@@ -4,6 +4,7 @@ Homepage: https://github.com/KazDragon/telnetpp
Description: Telnet++ is an implementation of the Telnet Session Layer protocol using C++14
Build-Depends: boost-container, boost-signals2, boost-variant, gsl-lite, boost-exception
Default-Features: zlib
+Supports: !uwp
Feature: zlib
Description: Zlib support
diff --git a/ports/tensorflow-cc/CONTROL b/ports/tensorflow-cc/CONTROL
index 29f15a376ce9b6..8bcc1cc35999cb 100644
--- a/ports/tensorflow-cc/CONTROL
+++ b/ports/tensorflow-cc/CONTROL
@@ -2,3 +2,4 @@ Source: tensorflow-cc
Version: 1.14-1
Description: Library for computation using data flow graphs for scalable machine learning
Build-Depends: c-ares
+Supports: !x86
\ No newline at end of file
diff --git a/ports/tgui/portfile.cmake b/ports/tgui/portfile.cmake
index 33e3dd9bf38755..736946af93dae5 100644
--- a/ports/tgui/portfile.cmake
+++ b/ports/tgui/portfile.cmake
@@ -11,7 +11,7 @@ set(TGUI_TOOLS_PATH ${CURRENT_PACKAGES_DIR}/tools/tgui)
# Enable static build
file(REMOVE "${SOURCE_PATH}/cmake/Modules/FindSFML.cmake")
-string(COMPARE EQUAL ${VCPKG_LIBRARY_LINKAGE} "dynamic" TGUI_SHARED_LIBS)
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" TGUI_SHARED_LIBS)
# gui-builder
set(BUILD_GUI_BUILDER OFF)
@@ -21,6 +21,7 @@ endif()
vcpkg_configure_cmake(
SOURCE_PATH "${SOURCE_PATH}"
+ DISABLE_PARALLEL_CONFIGURE
PREFER_NINJA
OPTIONS
-DTGUI_BUILD_GUI_BUILDER=${BUILD_GUI_BUILDER}
diff --git a/ports/tinkerforge/CONTROL b/ports/tinkerforge/CONTROL
index 5eb67e96b229ab..da38ec368d10e1 100644
--- a/ports/tinkerforge/CONTROL
+++ b/ports/tinkerforge/CONTROL
@@ -1,3 +1,4 @@
Source: tinkerforge
Version: 2.1.25
Description: Tinkerforge C API bindings for bricks and bricklets
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/unicorn/CONTROL b/ports/unicorn/CONTROL
index 74d5814879cd83..6dbc5f1233f454 100644
--- a/ports/unicorn/CONTROL
+++ b/ports/unicorn/CONTROL
@@ -2,3 +2,4 @@ Source: unicorn
Version: 2019-07-11
Homepage: https://github.com/unicorn-engine/unicorn
Description: Unicorn is a lightweight multi-platform, multi-architecture CPU emulator framework
+Supports: !uwp
diff --git a/ports/upb/CONTROL b/ports/upb/CONTROL
index d42b9e367c42c7..cb9b6041d03242 100644
--- a/ports/upb/CONTROL
+++ b/ports/upb/CONTROL
@@ -1,13 +1,4 @@
Source: upb
-Version: 2019-10-21
+Version: 2019-10-21-1
Homepage: https://github.com/protocolbuffers/upb/
Description: μpb (often written 'upb') is a small protobuf implementation written in C.
-
-Feature: asan
-Description: build with asan support
-
-Feature: ubsan
-Description: build with ubsan support
-
-Feature: tests
-Description: build tests
\ No newline at end of file
diff --git a/ports/upb/add-cmake-install.patch b/ports/upb/add-cmake-install.patch
new file mode 100644
index 00000000000000..ece6b8db430195
--- /dev/null
+++ b/ports/upb/add-cmake-install.patch
@@ -0,0 +1,60 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 836c5ff..6eb8bb5 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -8,7 +8,7 @@ else()
+ cmake_policy(VERSION 3.12)
+ endif()
+
+-cmake_minimum_required (VERSION 3.0)
++cmake_minimum_required (VERSION 3.14)
+ cmake_policy(SET CMP0048 NEW)
+
+ project(upb)
+@@ -59,7 +59,7 @@ elseif(UNIX)
+ endif()
+
+ enable_testing()
+-
++add_library(descriptor_upbproto INTERFACE)
+ add_library(upb
+ upb/decode.c
+ upb/encode.c
+@@ -136,12 +136,35 @@ target_link_libraries(upb_cc_bindings INTERFACE
+ descriptor_upbproto
+ handlers
+ upb)
+-add_library(upb_test
++if(ENABLE_TESTING)
++add_executable(upb_test
+ tests/testmain.cc
+ tests/test_util.h
+ tests/upb_test.h)
+ target_link_libraries(upb_test
+ handlers
+ upb)
++endif()
+
+-
++install(
++ DIRECTORY upb
++ DESTINATION include
++ FILES_MATCHING
++ PATTERN "*.h"
++ PATTERN "*.inc"
++ PATTERN "*.int.h" EXCLUDE
++)
++target_include_directories(upb PUBLIC $)
++install(TARGETS
++ upb
++ upb_cc_bindings
++ upb_json
++ upb_pb
++ table
++ descriptor_upbproto
++ handlers
++ legacy_msg_reflection
++ reflection
++ EXPORT upb-config
++)
++install(EXPORT upb-config NAMESPACE upb:: DESTINATION share/upb)
diff --git a/ports/upb/fix-cmakelists.patch b/ports/upb/fix-cmakelists.patch
deleted file mode 100644
index 4c7ab1413b2dd2..00000000000000
--- a/ports/upb/fix-cmakelists.patch
+++ /dev/null
@@ -1,184 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 836c5ff..6ee66a7 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -58,90 +58,148 @@ elseif(UNIX)
- set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--build-id")
- endif()
-
--enable_testing()
-+if (ENABLE_TEST)
-+ enable_testing()
-+endif()
-
-+set(UPB_HDRS
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/generated_util.h
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/msg.h
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/table.int.h
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/port_def.inc
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/port_undef.inc
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/decode.h
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/encode.h
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/upb.h
-+)
-+
-+set(UBP_PROJECTS upb)
- add_library(upb
- upb/decode.c
- upb/encode.c
-- upb/generated_util.h
- upb/msg.c
-- upb/msg.h
- upb/port.c
-- upb/port_def.inc
-- upb/port_undef.inc
- upb/table.c
-- upb/table.int.h
- upb/upb.c
-- upb/decode.h
-- upb/encode.h
-- upb/upb.h)
-+ upb/upb.h
-+ ${UPB_HDRS})
-+
-+
-+set(UBP_PROJECTS ${UBP_PROJECTS} generated_code_support__only_for_generated_code_do_not_use__i_give_permission_to_break_me)
- add_library(generated_code_support__only_for_generated_code_do_not_use__i_give_permission_to_break_me INTERFACE)
- target_link_libraries(generated_code_support__only_for_generated_code_do_not_use__i_give_permission_to_break_me INTERFACE
- upb)
-+
-+set(REFLECTION_HDRS
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/def.h
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/msgfactory.h
-+)
-+
-+set(UBP_PROJECTS ${UBP_PROJECTS} reflection)
- add_library(reflection
- upb/def.c
- upb/msgfactory.c
-- upb/def.h
-- upb/msgfactory.h)
-+ ${REFLECTION_HDRS})
- target_link_libraries(reflection
- descriptor_upbproto
- table
- upb)
-+
-+set(UBP_PROJECTS ${UBP_PROJECTS} table)
- add_library(table INTERFACE)
- target_link_libraries(table INTERFACE
- upb)
-+
-+set(LEGACY_MSG_HDRS ${CMAKE_CURRENT_LIST_DIR}/upb/legacy_msg_reflection.h)
-+
-+set(UBP_PROJECTS ${UBP_PROJECTS} legacy_msg_reflection)
- add_library(legacy_msg_reflection
- upb/legacy_msg_reflection.c
-- upb/legacy_msg_reflection.h)
-+ ${LEGACY_MSG_HDRS})
- target_link_libraries(legacy_msg_reflection
- table
- upb)
-+
-+set(HANDLERS_HDRS
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/handlers-inl.h
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/handlers.h
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/sink.h
-+)
-+
-+set(UBP_PROJECTS ${UBP_PROJECTS} handlers)
- add_library(handlers
- upb/handlers.c
-- upb/handlers-inl.h
- upb/sink.c
-- upb/handlers.h
-- upb/sink.h)
-+ ${HANDLERS_HDRS})
- target_link_libraries(handlers
- reflection
- table
- upb)
-+
-+set(UPB_PB_HDRS
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/pb/decoder.int.h
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/pb/varint.int.h
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/pb/decoder.h
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/pb/encoder.h
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/pb/textprinter.h
-+)
-+
-+set(UBP_PROJECTS ${UBP_PROJECTS} upb_pb)
- add_library(upb_pb
- upb/pb/compile_decoder.c
- upb/pb/decoder.c
-- upb/pb/decoder.int.h
- upb/pb/encoder.c
- upb/pb/textprinter.c
- upb/pb/varint.c
-- upb/pb/varint.int.h
-- upb/pb/decoder.h
-- upb/pb/encoder.h
-- upb/pb/textprinter.h)
-+ ${UPB_PB_HDRS})
- target_link_libraries(upb_pb
- descriptor_upbproto
- handlers
- reflection
- table
- upb)
-+
-+set(UPB_JSON_HDRS
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/json/parser.h
-+ ${CMAKE_CURRENT_LIST_DIR}/upb/json/printer.h
-+)
-+
-+set(UBP_PROJECTS ${UBP_PROJECTS} upb_json)
- add_library(upb_json
- generated_for_cmake/upb/json/parser.c
- upb/json/printer.c
-- upb/json/parser.h
-- upb/json/printer.h)
-+ ${UPB_JSON_HDRS})
- target_link_libraries(upb_json
- upb
- upb_pb)
-+
-+set(UBP_PROJECTS ${UBP_PROJECTS} upb_cc_bindings)
- add_library(upb_cc_bindings INTERFACE)
- target_link_libraries(upb_cc_bindings INTERFACE
- descriptor_upbproto
- handlers
- upb)
--add_library(upb_test
-- tests/testmain.cc
-- tests/test_util.h
-- tests/upb_test.h)
--target_link_libraries(upb_test
-- handlers
-- upb)
--
-
-+if (ENABLE_TEST)
-+ set(UBP_PROJECTS ${UBP_PROJECTS} upb_test)
-+ add_library(upb_test
-+ tests/testmain.cc
-+ tests/test_util.h
-+ tests/upb_test.h)
-+ target_link_libraries(upb_test
-+ handlers
-+ upb)
-+endif()
-+
-+install(FILES ${UPB_HDRS} ${REFLECTION_HDRS} ${LEGACY_MSG_HDRS} ${HANDLERS_HDRS} DESTINATION include/upb)
-+install(FILES ${UPB_PB_HDRS} DESTINATION include/upb/pb)
-+install(FILES ${UPB_JSON_HDRS} DESTINATION include/upb/json)
-+
-+foreach(PROJ ${UBP_PROJECTS})
-+ install(
-+ TARGETS ${PROJ}
-+ RUNTIME DESTINATION bin
-+ LIBRARY DESTINATION lib
-+ ARCHIVE DESTINATION lib
-+ )
-+endforeach()
-\ No newline at end of file
diff --git a/ports/upb/portfile.cmake b/ports/upb/portfile.cmake
index 303587cea06cbd..b5a46253cdbbf1 100644
--- a/ports/upb/portfile.cmake
+++ b/ports/upb/portfile.cmake
@@ -1,29 +1,27 @@
-vcpkg_fail_port_install(ON_TARGET "Windows")
+vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
vcpkg_from_github(
- OUT_SOURCE_PATH SOURCE_PATH
- REPO protocolbuffers/upb
- REF 9effcbcb27f0a665f9f345030188c0b291e32482
- SHA512 416ff26ec21181d53be23e94203205072152ab3a8e4b3b28d16263a601995fd2d2f8afe5d8cfbecdac8543249482287b9fe6129314f7c9a7880660f5508bb85e
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO protocolbuffers/upb
+ REF 9effcbcb27f0a665f9f345030188c0b291e32482
+ SHA512 416ff26ec21181d53be23e94203205072152ab3a8e4b3b28d16263a601995fd2d2f8afe5d8cfbecdac8543249482287b9fe6129314f7c9a7880660f5508bb85e
HEAD_REF master
- PATCHES fix-cmakelists.patch
-)
-
-vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
- asan UPB_ENABLE_ASAN
- ubsan UPB_ENABLE_UBSAN
- tests ENABLE_TEST
+ PATCHES add-cmake-install.patch
)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
- OPTIONS ${FEATURE_OPTIONS}
)
vcpkg_install_cmake()
+vcpkg_fixup_cmake_targets()
vcpkg_copy_pdbs()
-file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
+file(REMOVE_RECURSE
+ ${CURRENT_PACKAGES_DIR}/debug/include
+ # empty folder
+ ${CURRENT_PACKAGES_DIR}/include/upb/bindings/lua/upb
+)
file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
diff --git a/ports/uvatlas/CONTROL b/ports/uvatlas/CONTROL
index 0c0cb84b300226..e1621c5b5b7bc7 100644
--- a/ports/uvatlas/CONTROL
+++ b/ports/uvatlas/CONTROL
@@ -1,4 +1,5 @@
Source: uvatlas
Version: dec2019
Homepage: https://github.com/Microsoft/UVAtlas
-Description: UVAtlas isochart texture atlas
\ No newline at end of file
+Description: UVAtlas isochart texture atlas
+Supports: windows
\ No newline at end of file
diff --git a/ports/vectorclass/CONTROL b/ports/vectorclass/CONTROL
index cc34713589af01..a5110d95c8d7e1 100644
--- a/ports/vectorclass/CONTROL
+++ b/ports/vectorclass/CONTROL
@@ -2,3 +2,4 @@ Source: vectorclass
Version: 2.00.01
Homepage: https://github.com/vectorclass/version2
Description: C++ class library for using the Single Instruction Multiple Data (SIMD) instructions in modern Microprocessors
+Supports: !(arm|arm64)
\ No newline at end of file
diff --git a/ports/winreg/CONTROL b/ports/winreg/CONTROL
index 6b798d4d0dd4ff..0e2cc71886c5de 100644
--- a/ports/winreg/CONTROL
+++ b/ports/winreg/CONTROL
@@ -1,4 +1,5 @@
Source: winreg
Version: 1.2.1-1
Homepage: https://github.com/GiovanniDicanio/WinReg
-Description: High-level C++ wrapper around the Windows Registry C API.
\ No newline at end of file
+Description: High-level C++ wrapper around the Windows Registry C API.
+Supports: windows || uwp
\ No newline at end of file
diff --git a/ports/wintoast/CONTROL b/ports/wintoast/CONTROL
index d9d410796d7696..033a5abdf2d8da 100644
--- a/ports/wintoast/CONTROL
+++ b/ports/wintoast/CONTROL
@@ -1,3 +1,4 @@
Source: wintoast
Version: 1.2.0
-Description: WinToast is a lightly library written in C++ which brings a complete integration of the modern toast notifications of Windows 8 & Windows 10.
\ No newline at end of file
+Description: WinToast is a lightly library written in C++ which brings a complete integration of the modern toast notifications of Windows 8 & Windows 10.
+Supports: !uwp
\ No newline at end of file
diff --git a/ports/x-plane/CONTROL b/ports/x-plane/CONTROL
index c151e87196c9e3..de1217a60f4436 100644
--- a/ports/x-plane/CONTROL
+++ b/ports/x-plane/CONTROL
@@ -1,3 +1,4 @@
Source: x-plane
Version: 3.0.1-1
Description: The X-Plane Plugin SDK.
+Supports: !x86
\ No newline at end of file
diff --git a/ports/x265/CONTROL b/ports/x265/CONTROL
index 0ed00a54ddee30..c94ba68012bbf8 100644
--- a/ports/x265/CONTROL
+++ b/ports/x265/CONTROL
@@ -1,4 +1,4 @@
Source: x265
-Version: 3.2-1
+Version: 3.2-3
Homepage: https://bitbucket.org/multicoreware/x265
Description: x265 is a H.265 / HEVC video encoder application library, designed to encode video or images into an H.265 / HEVC encoded bitstream.
diff --git a/ports/yasm/CONTROL b/ports/yasm/CONTROL
index 5cb34927087a43..bdcaaea9f46e88 100644
--- a/ports/yasm/CONTROL
+++ b/ports/yasm/CONTROL
@@ -2,3 +2,4 @@ Source: yasm
Version: 1.3.0
Homepage: https://github.com/yasm/yasm
Description: Yasm is a complete rewrite of the NASM assembler under the “new” BSD License.
+Supports: windows & !uwp & !arm
\ No newline at end of file
diff --git a/ports/yoga/CONTROL b/ports/yoga/CONTROL
index 52e8498a3cf43d..5a0c6d26082c2c 100644
--- a/ports/yoga/CONTROL
+++ b/ports/yoga/CONTROL
@@ -2,3 +2,4 @@ Source: yoga
Version: 1.16.0-1
Homepage: https://github.com/facebook/yoga
Description: Yoga is a cross-platform layout engine which implements Flexbox
+Supports: !uwp
diff --git a/ports/z3/CONTROL b/ports/z3/CONTROL
index be11a9d7c47166..866f2cf5f444c3 100644
--- a/ports/z3/CONTROL
+++ b/ports/z3/CONTROL
@@ -1,4 +1,5 @@
Source: z3
Version: 4.8.6
Homepage: https://github.com/Z3Prover/z3
-Description: Z3 is a theorem prover from Microsoft Research.
\ No newline at end of file
+Description: Z3 is a theorem prover from Microsoft Research.
+Supports: !arm64 && !uwp
diff --git a/ports/zfp/CONTROL b/ports/zfp/CONTROL
index eb9505fa46f83c..164bade9d5b5f5 100644
--- a/ports/zfp/CONTROL
+++ b/ports/zfp/CONTROL
@@ -1,5 +1,5 @@
Source: zfp
-Version: 0.5.5-1
+Version: 0.5.5-2
Homepage: https://github.com/LLNL/zfp
Description: Zfp is an open source C/C++ library for compressed numerical arrays that support high throughput read and write random access. zfp also supports streaming compression of integer and floating-point data, e.g., for applications that read and write large data sets to and from disk. zfp is primarily written in C and C++ but also includes Python and Fortran bindings.
diff --git a/ports/zfp/portfile.cmake b/ports/zfp/portfile.cmake
index 7c9af254763619..d189762b7bc296 100644
--- a/ports/zfp/portfile.cmake
+++ b/ports/zfp/portfile.cmake
@@ -31,12 +31,16 @@ vcpkg_install_cmake()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
-if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin)
endif()
vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/${PORT})
+# Rename problematic root include "bitstream.h"; conflicts with x265's private headers
+file(RENAME ${CURRENT_PACKAGES_DIR}/include/bitstream.h ${CURRENT_PACKAGES_DIR}/include/zfp/bitstream.h)
+vcpkg_replace_string(${CURRENT_PACKAGES_DIR}/include/zfp.h "\"bitstream.h\"" "\"zfp/bitstream.h\"")
+
vcpkg_copy_pdbs()
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
\ No newline at end of file
diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt
index e13f9870f93ee1..b658bcea3771a0 100644
--- a/scripts/ci.baseline.txt
+++ b/scripts/ci.baseline.txt
@@ -224,6 +224,9 @@ chakracore:x64-linux=fail
chakracore:x64-osx=fail
chakracore:x64-uwp=fail
chakracore:x64-windows-static=fail
+# DCMTK currently has a vendored copy of libcharls.a, which causes conflicts with charls (TODO: use charls' copy)
+charls:x64-linux=skip
+charls:x64-osx=skip
chartdir:arm64-windows=fail
chartdir:arm-uwp=fail
chartdir:x64-uwp=fail
@@ -654,7 +657,6 @@ jemalloc:x64-uwp=fail
jemalloc:x64-windows-static=fail
jinja2cpplight:arm-uwp=fail
jinja2cpplight:x64-uwp=fail
-jsonnet:x64-osx=fail
kd-soap:x64-linux=fail
kd-soap:x64-osx=fail
kd-soap:x64-windows-static=fail
@@ -785,12 +787,15 @@ libmariadb:x64-uwp = skip
libmariadb:x64-windows = skip
libmariadb:x64-windows-static = skip
libmariadb:x86-windows = skip
-libmesh:arm64-windows=fail
-libmesh:arm-uwp=fail
-libmesh:x64-uwp=fail
-libmesh:x64-windows=fail
-libmesh:x64-windows-static=fail
-libmesh:x86-windows=fail
+# libmesh installs tons of problematic files that conflict with other ports (boost, eigen, etc)
+libmesh:arm64-windows=skip
+libmesh:arm-uwp=skip
+libmesh:x64-uwp=skip
+libmesh:x64-windows=skip
+libmesh:x64-windows-static=skip
+libmesh:x86-windows=skip
+libmesh:x64-osx=skip
+libmesh:x64-linux=skip
libmicrohttpd:arm64-windows=fail
libmicrohttpd:arm-uwp=fail
libmicrohttpd:x64-linux=fail
@@ -1057,11 +1062,18 @@ minizip:x64-uwp=fail
mlpack:x64-linux=ignore
mman:x64-linux=fail
mman:x64-osx=fail
-mmx:x64-windows=ignore
-mmx:x64-windows-static=ignore
-mmx:x86-windows=ignore
+# mmx installs many problematic headers, such as `json.h` and `sched.h`
+mmx:x64-windows=skip
+mmx:x64-windows-static=skip
+mmx:x86-windows=skip
+mmx:x64-linux=skip
+mmx:x64-osx=skip
+mmx:arm-uwp=skip
+mmx:x64-uwp=skip
+mmx:arm64-windows=skip
mongo-c-driver:arm64-windows=fail
-mongo-c-driver:x64-osx=fail
+# Flaky strange linker error
+mongo-c-driver:x64-osx=skip
mongoose:arm-uwp=fail
mongoose:x64-uwp=fail
monkeys-audio:arm64-windows=fail
@@ -1722,12 +1734,8 @@ unrar:x64-linux=fail
unrar:x64-osx=fail
unrar:x64-uwp=fail
unrar:x64-windows-static=fail
-upb:arm64-windows=fail
upb:arm-uwp=fail
upb:x64-uwp=fail
-upb:x64-windows=fail
-upb:x64-windows-static=fail
-upb:x86-windows=fail
urdfdom:x64-windows-static=fail
usd:x64-linux=ignore
usd:x86-windows=fail
diff --git a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake
index a042d9124c41ef..d72381be5f72d4 100644
--- a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake
+++ b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake
@@ -30,7 +30,6 @@ function(vcpkg_fixup_cmake_targets)
set(_vfct_TARGET_PATH share/${PORT})
endif()
-
if(NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
set(EXECUTABLE_SUFFIX "\\.exe")
else()
@@ -49,7 +48,6 @@ function(vcpkg_fixup_cmake_targets)
set(DEBUG_CONFIG ${CURRENT_PACKAGES_DIR}/debug/${_vfct_CONFIG_PATH})
set(RELEASE_CONFIG ${CURRENT_PACKAGES_DIR}/${_vfct_CONFIG_PATH})
-
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
if(NOT EXISTS ${DEBUG_CONFIG})
message(FATAL_ERROR "'${DEBUG_CONFIG}' does not exist.")
diff --git a/scripts/get_triplet_environment.cmake b/scripts/get_triplet_environment.cmake
deleted file mode 100644
index 3b0b9fbefa507d..00000000000000
--- a/scripts/get_triplet_environment.cmake
+++ /dev/null
@@ -1,16 +0,0 @@
-include(${CMAKE_TRIPLET_FILE})
-if (DEFINED VCPKG_ENV_OVERRIDES_FILE)
- include(${VCPKG_ENV_OVERRIDES_FILE})
-endif()
-
-# GUID used as a flag - "cut here line"
-message("c35112b6-d1ba-415b-aa5d-81de856ef8eb")
-message("VCPKG_TARGET_ARCHITECTURE=${VCPKG_TARGET_ARCHITECTURE}")
-message("VCPKG_CMAKE_SYSTEM_NAME=${VCPKG_CMAKE_SYSTEM_NAME}")
-message("VCPKG_CMAKE_SYSTEM_VERSION=${VCPKG_CMAKE_SYSTEM_VERSION}")
-message("VCPKG_PLATFORM_TOOLSET=${VCPKG_PLATFORM_TOOLSET}")
-message("VCPKG_VISUAL_STUDIO_PATH=${VCPKG_VISUAL_STUDIO_PATH}")
-message("VCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}")
-message("VCPKG_BUILD_TYPE=${VCPKG_BUILD_TYPE}")
-message("VCPKG_ENV_PASSTHROUGH=${VCPKG_ENV_PASSTHROUGH}")
-message("VCPKG_PUBLIC_ABI_OVERRIDE=${VCPKG_PUBLIC_ABI_OVERRIDE}")
diff --git a/scripts/ports.cmake b/scripts/ports.cmake
index 1aea1ffa374936..20e59a18470c33 100644
--- a/scripts/ports.cmake
+++ b/scripts/ports.cmake
@@ -78,13 +78,9 @@ if(CMD MATCHES "^BUILD$")
include(${CMAKE_TRIPLET_FILE})
- if (DEFINED VCPKG_ENV_OVERRIDES_FILE)
- include(${VCPKG_ENV_OVERRIDES_FILE})
- endif()
-
- if (DEFINED VCPKG_PORT_TOOLCHAINS)
- foreach(VCPKG_PORT_TOOLCHAIN ${VCPKG_PORT_TOOLCHAINS})
- include(${VCPKG_PORT_TOOLCHAIN})
+ if (DEFINED VCPKG_PORT_CONFIGS)
+ foreach(VCPKG_PORT_CONFIG ${VCPKG_PORT_CONFIGS})
+ include(${VCPKG_PORT_CONFIG})
endforeach()
endif()
@@ -115,6 +111,9 @@ if(CMD MATCHES "^BUILD$")
if (DEFINED VCPKG_POLICY_EMPTY_INCLUDE_FOLDER)
file(APPEND ${BUILD_INFO_FILE_PATH} "PolicyEmptyIncludeFolder: ${VCPKG_POLICY_EMPTY_INCLUDE_FOLDER}\n")
endif()
+ if (DEFINED VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS)
+ file(APPEND ${BUILD_INFO_FILE_PATH} "PolicyAllowRestrictedHeaders: ${VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS}\n")
+ endif()
if (DEFINED VCPKG_HEAD_VERSION)
file(APPEND ${BUILD_INFO_FILE_PATH} "Version: ${VCPKG_HEAD_VERSION}\n")
endif()
diff --git a/scripts/vcpkg_get_dep_info.cmake b/scripts/vcpkg_get_dep_info.cmake
new file mode 100644
index 00000000000000..92212b82d02ac1
--- /dev/null
+++ b/scripts/vcpkg_get_dep_info.cmake
@@ -0,0 +1,19 @@
+function(vcpkg_get_dep_info PORT VCPKG_TRIPLET_ID)
+ message("d8187afd-ea4a-4fc3-9aa4-a6782e1ed9af")
+ vcpkg_triplet_file(${VCPKG_TRIPLET_ID})
+
+ # GUID used as a flag - "cut here line"
+ message("c35112b6-d1ba-415b-aa5d-81de856ef8eb
+VCPKG_TARGET_ARCHITECTURE=${VCPKG_TARGET_ARCHITECTURE}
+VCPKG_CMAKE_SYSTEM_NAME=${VCPKG_CMAKE_SYSTEM_NAME}
+VCPKG_CMAKE_SYSTEM_VERSION=${VCPKG_CMAKE_SYSTEM_VERSION}
+VCPKG_LIBRARY_LINKAGE=${VCPKG_LIBRARY_LINKAGE}
+VCPKG_CRT_LINKAGE=${VCPKG_CRT_LINKAGE}
+VCPKG_DEP_INFO_OVERRIDE_VARS=${VCPKG_DEP_INFO_OVERRIDE_VARS}
+CMAKE_HOST_SYSTEM_NAME=${CMAKE_HOST_SYSTEM_NAME}
+CMAKE_HOST_SYSTEM_PROCESSOR=${CMAKE_HOST_SYSTEM_PROCESSOR}
+CMAKE_HOST_SYSTEM_VERSION=${CMAKE_HOST_SYSTEM_VERSION}
+CMAKE_HOST_SYSTEM=${CMAKE_HOST_SYSTEM}
+e1e74b5c-18cb-4474-a6bd-5c1c8bc81f3f
+8c504940-be29-4cba-9f8f-6cd83e9d87b7")
+endfunction()
diff --git a/scripts/vcpkg_get_tags.cmake b/scripts/vcpkg_get_tags.cmake
new file mode 100644
index 00000000000000..ccdc4fea625fe6
--- /dev/null
+++ b/scripts/vcpkg_get_tags.cmake
@@ -0,0 +1,28 @@
+function(vcpkg_get_tags PORT FEATURES VCPKG_TRIPLET_ID VCPKG_ABI_SETTINGS_FILE)
+ message("d8187afd-ea4a-4fc3-9aa4-a6782e1ed9af")
+ vcpkg_triplet_file(${VCPKG_TRIPLET_ID})
+
+ # GUID used as a flag - "cut here line"
+ message("c35112b6-d1ba-415b-aa5d-81de856ef8eb
+VCPKG_TARGET_ARCHITECTURE=${VCPKG_TARGET_ARCHITECTURE}
+VCPKG_CMAKE_SYSTEM_NAME=${VCPKG_CMAKE_SYSTEM_NAME}
+VCPKG_CMAKE_SYSTEM_VERSION=${VCPKG_CMAKE_SYSTEM_VERSION}
+VCPKG_PLATFORM_TOOLSET=${VCPKG_PLATFORM_TOOLSET}
+VCPKG_VISUAL_STUDIO_PATH=${VCPKG_VISUAL_STUDIO_PATH}
+VCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}
+VCPKG_BUILD_TYPE=${VCPKG_BUILD_TYPE}
+e1e74b5c-18cb-4474-a6bd-5c1c8bc81f3f")
+
+ # Just to enforce the user didn't set it in the triplet file
+ if (DEFINED VCPKG_PUBLIC_ABI_OVERRIDE)
+ set(VCPKG_PUBLIC_ABI_OVERRIDE)
+ message(WARNING "VCPKG_PUBLIC_ABI_OVERRIDE set in the triplet will be ignored.")
+ endif()
+ include("${VCPKG_ABI_SETTINGS_FILE}" OPTIONAL)
+
+ message("c35112b6-d1ba-415b-aa5d-81de856ef8eb
+VCPKG_PUBLIC_ABI_OVERRIDE=${VCPKG_PUBLIC_ABI_OVERRIDE}
+VCPKG_ENV_PASSTHROUGH=${VCPKG_ENV_PASSTHROUGH}
+e1e74b5c-18cb-4474-a6bd-5c1c8bc81f3f
+8c504940-be29-4cba-9f8f-6cd83e9d87b7")
+endfunction()
diff --git a/toolsrc/VERSION.txt b/toolsrc/VERSION.txt
index 80548a8198a91c..f9cb2e7e9e57c7 100644
--- a/toolsrc/VERSION.txt
+++ b/toolsrc/VERSION.txt
@@ -1 +1 @@
-"2020.01.17"
+"2020.01.18"
diff --git a/toolsrc/include/vcpkg-test/mockcmakevarprovider.h b/toolsrc/include/vcpkg-test/mockcmakevarprovider.h
new file mode 100644
index 00000000000000..03defdcddb5149
--- /dev/null
+++ b/toolsrc/include/vcpkg-test/mockcmakevarprovider.h
@@ -0,0 +1,38 @@
+#pragma once
+
+#include
+
+namespace vcpkg::Test
+{
+ struct MockCMakeVarProvider : CMakeVars::CMakeVarProvider
+ {
+ void load_generic_triplet_vars(const Triplet& triplet) const override { generic_triplet_vars[triplet] = {}; }
+
+ void load_dep_info_vars(Span specs) const override
+ {
+ for (auto&& spec : specs)
+ dep_info_vars[spec] = {};
+ }
+
+ void load_tag_vars(Span specs,
+ const PortFileProvider::PortFileProvider& port_provider) const override
+ {
+ for (auto&& spec : specs)
+ tag_vars[spec.package_spec] = {};
+ Util::unused(port_provider);
+ }
+
+ Optional&> get_generic_triplet_vars(
+ const Triplet& triplet) const override;
+
+ Optional&> get_dep_info_vars(
+ const PackageSpec& spec) const override;
+
+ Optional&> get_tag_vars(
+ const PackageSpec& spec) const override;
+
+ mutable std::unordered_map> dep_info_vars;
+ mutable std::unordered_map> tag_vars;
+ mutable std::unordered_map> generic_triplet_vars;
+ };
+}
diff --git a/toolsrc/include/vcpkg-test/util.h b/toolsrc/include/vcpkg-test/util.h
index 259b0ba7ebbb7a..088a39b7d54ede 100644
--- a/toolsrc/include/vcpkg-test/util.h
+++ b/toolsrc/include/vcpkg-test/util.h
@@ -17,6 +17,12 @@
namespace vcpkg::Test
{
+ std::unique_ptr make_control_file(
+ const char* name,
+ const char* depends,
+ const std::vector>& features = {},
+ const std::vector& default_features = {});
+
std::unique_ptr make_status_pgh(const char* name,
const char* depends = "",
const char* default_features = "",
@@ -27,6 +33,23 @@ namespace vcpkg::Test
const char* depends = "",
const char* triplet = "x86-windows");
+ ///
+ /// Map of source control files by their package name.
+ ///
+ struct PackageSpecMap
+ {
+ std::unordered_map map;
+ Triplet triplet;
+ PackageSpecMap(const Triplet& t = Triplet::X86_WINDOWS) noexcept : triplet(t) {}
+
+ PackageSpec emplace(const char* name,
+ const char* depends = "",
+ const std::vector>& features = {},
+ const std::vector& default_features = {});
+
+ PackageSpec emplace(vcpkg::SourceControlFileLocation&& scfl);
+ };
+
vcpkg::PackageSpec unsafe_pspec(std::string name, vcpkg::Triplet t = vcpkg::Triplet::X86_WINDOWS);
template
diff --git a/toolsrc/include/vcpkg/base/graphs.h b/toolsrc/include/vcpkg/base/graphs.h
index 683735b1c11a47..f368a872d728d6 100644
--- a/toolsrc/include/vcpkg/base/graphs.h
+++ b/toolsrc/include/vcpkg/base/graphs.h
@@ -1,11 +1,10 @@
#pragma once
+#include
#include
-#include
-#include
+#include
#include
-#include
#include
namespace vcpkg::Graphs
@@ -95,10 +94,8 @@ namespace vcpkg::Graphs
}
}
- template
- std::vector topological_sort(VertexContainer starting_vertices,
- const AdjacencyProvider& f,
- Randomizer* randomizer)
+ template
+ std::vector topological_sort(Range starting_vertices, const AdjacencyProvider& f, Randomizer* randomizer)
{
std::vector sorted;
std::unordered_map exploration_status;
@@ -112,40 +109,4 @@ namespace vcpkg::Graphs
return sorted;
}
-
- template
- struct Graph final : AdjacencyProvider
- {
- public:
- void add_vertex(const V& v) { this->m_edges[v]; }
-
- void add_edge(const V& u, const V& v)
- {
- this->m_edges[v];
- this->m_edges[u].insert(v);
- }
-
- std::vector vertex_list() const
- {
- std::vector vertex_list;
- for (auto&& vertex : this->m_edges)
- vertex_list.emplace_back(vertex.first);
- return vertex_list;
- }
-
- std::vector adjacency_list(const V& vertex) const override
- {
- const std::unordered_set& as_set = this->m_edges.at(vertex);
- return std::vector(as_set.cbegin(), as_set.cend()); // TODO: Avoid redundant copy
- }
-
- V load_vertex_data(const V& vertex) const override { return vertex; }
-
- // Note: this function indicates how tied this template is to the exact type it will be templated upon.
- // Possible fix: This type shouldn't implement to_string() and should instead be derived from?
- std::string to_string(const V& spec) const override { return spec->spec.to_string(); }
-
- private:
- std::unordered_map> m_edges;
- };
}
diff --git a/toolsrc/include/vcpkg/base/span.h b/toolsrc/include/vcpkg/base/span.h
index 4c805e2b47c8e7..a5ba884aff4e46 100644
--- a/toolsrc/include/vcpkg/base/span.h
+++ b/toolsrc/include/vcpkg/base/span.h
@@ -23,14 +23,13 @@ namespace vcpkg
constexpr Span(std::nullptr_t) noexcept : m_ptr(nullptr), m_count(0) {}
constexpr Span(pointer ptr, size_t count) noexcept : m_ptr(ptr), m_count(count) {}
constexpr Span(pointer ptr_begin, pointer ptr_end) noexcept : m_ptr(ptr_begin), m_count(ptr_end - ptr_begin) {}
- constexpr Span(std::initializer_list l) noexcept : m_ptr(l.begin()), m_count(l.size()) {}
template
constexpr Span(T (&arr)[N]) noexcept : m_ptr(arr), m_count(N)
{
}
- template
+ template>>
constexpr Span(std::remove_const_t (&arr)[N]) noexcept : m_ptr(arr), m_count(N)
{
}
diff --git a/toolsrc/include/vcpkg/base/util.h b/toolsrc/include/vcpkg/base/util.h
index ad628e07103c2f..849781b95daf89 100644
--- a/toolsrc/include/vcpkg/base/util.h
+++ b/toolsrc/include/vcpkg/base/util.h
@@ -18,7 +18,7 @@ namespace vcpkg::Util
namespace Vectors
{
template>
- void concatenate(std::vector* augend, const Container& addend)
+ void append(std::vector* augend, const Container& addend)
{
augend->insert(augend->end(), addend.begin(), addend.end());
}
@@ -122,6 +122,12 @@ namespace vcpkg::Util
std::sort(begin(cont), end(cont), comp);
}
+ template
+ bool any_of(Range&& rng, Pred pred)
+ {
+ return std::any_of(rng.begin(), rng.end(), std::move(pred));
+ }
+
template
Range&& sort_unique_erase(Range&& cont)
{
@@ -220,4 +226,10 @@ namespace vcpkg::Util
void unused(const Ts&...)
{
}
+
+ template
+ T copy(const T& t)
+ {
+ return t;
+ }
}
diff --git a/toolsrc/include/vcpkg/binaryparagraph.h b/toolsrc/include/vcpkg/binaryparagraph.h
index 45720538412697..223a1fb86dc355 100644
--- a/toolsrc/include/vcpkg/binaryparagraph.h
+++ b/toolsrc/include/vcpkg/binaryparagraph.h
@@ -13,8 +13,14 @@ namespace vcpkg
{
BinaryParagraph();
explicit BinaryParagraph(Parse::RawParagraph fields);
- BinaryParagraph(const SourceParagraph& spgh, const Triplet& triplet, const std::string& abi_tag);
- BinaryParagraph(const SourceParagraph& spgh, const FeatureParagraph& fpgh, const Triplet& triplet);
+ BinaryParagraph(const SourceParagraph& spgh,
+ const Triplet& triplet,
+ const std::string& abi_tag,
+ const std::vector& deps);
+ BinaryParagraph(const SourceParagraph& spgh,
+ const FeatureParagraph& fpgh,
+ const Triplet& triplet,
+ const std::vector& deps);
std::string displayname() const;
@@ -30,6 +36,7 @@ namespace vcpkg
std::vector default_features;
std::vector depends;
std::string abi;
+ Type type;
};
struct BinaryControlFile
diff --git a/toolsrc/include/vcpkg/build.h b/toolsrc/include/vcpkg/build.h
index be5424296706f6..57663ebe59c7ee 100644
--- a/toolsrc/include/vcpkg/build.h
+++ b/toolsrc/include/vcpkg/build.h
@@ -1,5 +1,6 @@
#pragma once
+#include
#include
#include
#include
@@ -21,6 +22,7 @@ namespace vcpkg::Build
{
void perform_and_exit_ex(const FullPackageSpec& full_spec,
const SourceControlFileLocation& scfl,
+ const PortFileProvider::PathsPortFileProvider& provider,
const ParsedArguments& options,
const VcpkgPaths& paths);
@@ -88,6 +90,12 @@ namespace vcpkg::Build
YES
};
+ enum class PurgeDecompressFailure
+ {
+ NO = 0,
+ YES
+ };
+
struct BuildPackageOptions
{
UseHeadVersion use_head_version;
@@ -99,6 +107,7 @@ namespace vcpkg::Build
DownloadTool download_tool;
BinaryCaching binary_caching;
FailOnTombstone fail_on_tombstone;
+ PurgeDecompressFailure purge_decompress_failure;
};
enum class BuildResult
@@ -130,12 +139,9 @@ namespace vcpkg::Build
///
struct PreBuildInfo
{
- ///
- /// Runs the triplet file in a "capture" mode to create a PreBuildInfo
- ///
- static PreBuildInfo from_triplet_file(const VcpkgPaths& paths,
- const Triplet& triplet,
- Optional port = nullopt);
+ PreBuildInfo(const VcpkgPaths& paths,
+ const Triplet& triplet,
+ const std::unordered_map& cmakevars);
std::string triplet_abi_tag;
std::string target_architecture;
@@ -193,12 +199,18 @@ namespace vcpkg::Build
BuildPackageConfig(const SourceControlFileLocation& scfl,
const Triplet& triplet,
const BuildPackageOptions& build_package_options,
- const std::set& feature_list)
+ const CMakeVars::CMakeVarProvider& var_provider,
+ const std::unordered_map>& feature_dependencies,
+ const std::vector& package_dependencies,
+ const std::vector& feature_list)
: scfl(scfl)
, scf(*scfl.source_control_file)
, triplet(triplet)
, port_dir(scfl.source_location)
, build_package_options(build_package_options)
+ , var_provider(var_provider)
+ , feature_dependencies(feature_dependencies)
+ , package_dependencies(package_dependencies)
, feature_list(feature_list)
{
}
@@ -206,9 +218,13 @@ namespace vcpkg::Build
const SourceControlFileLocation& scfl;
const SourceControlFile& scf;
const Triplet& triplet;
- fs::path port_dir;
+ const fs::path& port_dir;
const BuildPackageOptions& build_package_options;
- const std::set& feature_list;
+ const CMakeVars::CMakeVarProvider& var_provider;
+
+ const std::unordered_map>& feature_dependencies;
+ const std::vector& package_dependencies;
+ const std::vector& feature_list;
};
ExtendedBuildResult build_package(const VcpkgPaths& paths,
@@ -223,6 +239,7 @@ namespace vcpkg::Build
ONLY_RELEASE_CRT,
EMPTY_INCLUDE_FOLDER,
ALLOW_OBSOLETE_MSVCRT,
+ ALLOW_RESTRICTED_HEADERS,
// Must be last
COUNT,
};
@@ -234,6 +251,7 @@ namespace vcpkg::Build
BuildPolicy::ONLY_RELEASE_CRT,
BuildPolicy::EMPTY_INCLUDE_FOLDER,
BuildPolicy::ALLOW_OBSOLETE_MSVCRT,
+ BuildPolicy::ALLOW_RESTRICTED_HEADERS,
};
const std::string& to_string(BuildPolicy policy);
diff --git a/toolsrc/include/vcpkg/cmakevars.h b/toolsrc/include/vcpkg/cmakevars.h
new file mode 100644
index 00000000000000..c634866d05908d
--- /dev/null
+++ b/toolsrc/include/vcpkg/cmakevars.h
@@ -0,0 +1,69 @@
+#pragma once
+
+#include
+#include
+
+#include
+#include
+
+namespace vcpkg::CMakeVars
+{
+ struct CMakeVarProvider
+ {
+ virtual Optional&> get_generic_triplet_vars(
+ const Triplet& triplet) const = 0;
+
+ virtual Optional&> get_dep_info_vars(
+ const PackageSpec& spec) const = 0;
+
+ virtual Optional&> get_tag_vars(
+ const PackageSpec& spec) const = 0;
+
+ virtual void load_generic_triplet_vars(const Triplet& triplet) const = 0;
+
+ virtual void load_dep_info_vars(Span specs) const = 0;
+
+ virtual void load_tag_vars(Span specs,
+ const PortFileProvider::PortFileProvider& port_provider) const = 0;
+ };
+
+ struct TripletCMakeVarProvider : Util::ResourceBase, CMakeVarProvider
+ {
+ private:
+ fs::path create_tag_extraction_file(
+ const Span>& spec_abi_settings) const;
+
+ fs::path create_dep_info_extraction_file(const Span specs) const;
+
+ void launch_and_split(const fs::path& script_path,
+ std::vector>>& vars) const;
+
+ public:
+ explicit TripletCMakeVarProvider(const vcpkg::VcpkgPaths& paths) : paths(paths) {}
+
+ void load_generic_triplet_vars(const Triplet& triplet) const override;
+
+ void load_dep_info_vars(Span specs) const override;
+
+ void load_tag_vars(Span specs,
+ const PortFileProvider::PortFileProvider& port_provider) const override;
+
+ Optional&> get_generic_triplet_vars(
+ const Triplet& triplet) const override;
+
+ Optional&> get_dep_info_vars(
+ const PackageSpec& spec) const override;
+
+ Optional&> get_tag_vars(
+ const PackageSpec& spec) const override;
+
+ private:
+ const VcpkgPaths& paths;
+ const fs::path& cmake_exe_path = paths.get_tool_exe(Tools::CMAKE);
+ const fs::path get_tags_path = paths.scripts / "vcpkg_get_tags.cmake";
+ const fs::path get_dep_info_path = paths.scripts / "vcpkg_get_dep_info.cmake";
+ mutable std::unordered_map> dep_resolution_vars;
+ mutable std::unordered_map> tag_vars;
+ mutable std::unordered_map> generic_triplet_vars;
+ };
+}
diff --git a/toolsrc/include/vcpkg/dependencies.h b/toolsrc/include/vcpkg/dependencies.h
index e9018b1b89224a..eb9d42b6da0f7e 100644
--- a/toolsrc/include/vcpkg/dependencies.h
+++ b/toolsrc/include/vcpkg/dependencies.h
@@ -3,7 +3,9 @@
#include
#include
#include
+#include
#include
+#include
#include
#include
@@ -43,15 +45,12 @@ namespace vcpkg::Dependencies
InstallPlanAction() noexcept;
- InstallPlanAction(InstalledPackageView&& spghs,
- const std::set& features,
- const RequestType& request_type);
+ InstallPlanAction(InstalledPackageView&& spghs, const RequestType& request_type);
InstallPlanAction(const PackageSpec& spec,
const SourceControlFileLocation& scfl,
- const std::set& features,
const RequestType& request_type,
- std::vector&& dependencies);
+ std::unordered_map>&& dependencies);
std::string displayname() const;
@@ -63,9 +62,11 @@ namespace vcpkg::Dependencies
InstallPlanType plan_type;
RequestType request_type;
Build::BuildPackageOptions build_options;
- std::set feature_list;
- std::vector computed_dependencies;
+ std::unordered_map> feature_dependencies;
+ std::vector package_dependencies;
+
+ std::vector feature_list;
};
enum class RemovePlanType
@@ -87,15 +88,14 @@ namespace vcpkg::Dependencies
RequestType request_type;
};
- struct AnyAction
+ struct ActionPlan
{
- AnyAction(InstallPlanAction&& iplan) : install_action(std::move(iplan)) {}
- AnyAction(RemovePlanAction&& rplan) : remove_action(std::move(rplan)) {}
-
- Optional install_action;
- Optional remove_action;
+ bool empty() const { return remove_actions.empty() && already_installed.empty() && install_actions.empty(); }
+ size_t size() const { return remove_actions.size() + already_installed.size() + install_actions.size(); }
- const PackageSpec& spec() const;
+ std::vector remove_actions;
+ std::vector already_installed;
+ std::vector install_actions;
};
enum class ExportPlanType
@@ -127,80 +127,36 @@ namespace vcpkg::Dependencies
Optional m_installed_package;
};
- struct PortFileProvider
- {
- virtual Optional get_control_file(const std::string& src_name) const = 0;
- virtual std::vector load_all_control_files() const = 0;
- };
-
- struct MapPortFileProvider : Util::ResourceBase, PortFileProvider
- {
- explicit MapPortFileProvider(const std::unordered_map& map);
- Optional get_control_file(const std::string& src_name) const override;
- std::vector load_all_control_files() const override;
-
- private:
- const std::unordered_map& ports;
- };
-
- struct PathsPortFileProvider : Util::ResourceBase, PortFileProvider
- {
- explicit PathsPortFileProvider(const vcpkg::VcpkgPaths& paths,
- const std::vector* ports_dirs_paths);
- Optional get_control_file(const std::string& src_name) const override;
- std::vector load_all_control_files() const override;
-
- private:
- Files::Filesystem& filesystem;
- std::vector ports_dirs;
- mutable std::unordered_map cache;
- };
-
struct ClusterGraph;
- struct GraphPlan;
struct CreateInstallPlanOptions
{
Graphs::Randomizer* randomizer = nullptr;
};
- struct PackageGraph
- {
- PackageGraph(const PortFileProvider& provider, const StatusParagraphs& status_db);
- ~PackageGraph();
-
- void install(const FeatureSpec& spec,
- const std::unordered_set& prevent_default_features = {}) const;
- void upgrade(const PackageSpec& spec) const;
-
- std::vector serialize(const CreateInstallPlanOptions& options = {}) const;
-
- private:
- std::unique_ptr m_graph_plan;
- std::unique_ptr m_graph;
- };
-
std::vector create_remove_plan(const std::vector& specs,
const StatusParagraphs& status_db);
std::vector create_export_plan(const std::vector& specs,
const StatusParagraphs& status_db);
- std::vector create_feature_install_plan(
- const std::unordered_map& map,
- const std::vector& specs,
- const StatusParagraphs& status_db);
-
/// Figure out which actions are required to install features specifications in `specs`.
/// Contains the ports of the current environment.
/// Feature specifications to resolve dependencies for.
/// Status of installed packages in the current environment.
- std::vector create_feature_install_plan(const PortFileProvider& provider,
- const std::vector& specs,
- const StatusParagraphs& status_db,
- const CreateInstallPlanOptions& options = {});
-
- void print_plan(const std::vector& action_plan,
+ ActionPlan create_feature_install_plan(const PortFileProvider::PortFileProvider& provider,
+ const CMakeVars::CMakeVarProvider& var_provider,
+ const std::vector& specs,
+ const StatusParagraphs& status_db,
+ const CreateInstallPlanOptions& options = {});
+
+ ActionPlan create_upgrade_plan(const PortFileProvider::PortFileProvider& provider,
+ const CMakeVars::CMakeVarProvider& var_provider,
+ const std::vector& specs,
+ const StatusParagraphs& status_db,
+ const CreateInstallPlanOptions& options = {});
+
+ void print_plan(const ActionPlan& action_plan,
const bool is_recursive = true,
const fs::path& default_ports_dir = "");
}
diff --git a/toolsrc/include/vcpkg/install.h b/toolsrc/include/vcpkg/install.h
index 2e92764dc50d5d..e020c86533cb17 100644
--- a/toolsrc/include/vcpkg/install.h
+++ b/toolsrc/include/vcpkg/install.h
@@ -20,7 +20,7 @@ namespace vcpkg::Install
struct SpecSummary
{
- SpecSummary(const PackageSpec& spec, const Dependencies::AnyAction* action);
+ SpecSummary(const PackageSpec& spec, const Dependencies::InstallPlanAction* action);
const BinaryParagraph* get_binary_paragraph() const;
@@ -28,7 +28,7 @@ namespace vcpkg::Install
Build::ExtendedBuildResult build_result;
vcpkg::Chrono::ElapsedTime timing;
- const Dependencies::AnyAction* action;
+ const Dependencies::InstallPlanAction* action;
};
struct InstallSummary
@@ -58,8 +58,9 @@ namespace vcpkg::Install
};
Build::ExtendedBuildResult perform_install_plan_action(const VcpkgPaths& paths,
- const Dependencies::InstallPlanAction& action,
- StatusParagraphs& status_db);
+ Dependencies::InstallPlanAction& action,
+ StatusParagraphs& status_db,
+ const CMakeVars::CMakeVarProvider& var_provider);
enum class InstallResult
{
@@ -74,10 +75,11 @@ namespace vcpkg::Install
const BinaryControlFile& binary_paragraph,
StatusParagraphs* status_db);
- InstallSummary perform(const std::vector& action_plan,
+ InstallSummary perform(Dependencies::ActionPlan& action_plan,
const KeepGoing keep_going,
const VcpkgPaths& paths,
- StatusParagraphs& status_db);
+ StatusParagraphs& status_db,
+ const CMakeVars::CMakeVarProvider& var_provider);
extern const CommandStructure COMMAND_STRUCTURE;
diff --git a/toolsrc/include/vcpkg/logicexpression.h b/toolsrc/include/vcpkg/logicexpression.h
index 8795971b9de917..3a3d0debe824bf 100644
--- a/toolsrc/include/vcpkg/logicexpression.h
+++ b/toolsrc/include/vcpkg/logicexpression.h
@@ -1,10 +1,24 @@
#pragma once
#include
+#include
+#include
namespace vcpkg
{
+ struct ExpressionContext
+ {
+ // map of cmake variables and their values.
+ const std::unordered_map& cmake_context;
+
+ // The legacy context is a string (typically the name of the triplet).
+ // An identifier was considered 'true' if it is a substring of this.
+ // It is now used for backwards compatability diagnostic messages and
+ // will be eventually removed.
+ const std::string& legacy_context;
+ };
+
// Evaluate simple vcpkg logic expressions. An identifier in the expression is considered 'true'
// if it is a substring of the evaluation_context (typically the name of the triplet)
- bool evaluate_expression(const std::string& expression, const std::string& evaluation_context);
+ ExpectedT evaluate_expression(const std::string& expression, const ExpressionContext& context);
}
\ No newline at end of file
diff --git a/toolsrc/include/vcpkg/packagespec.h b/toolsrc/include/vcpkg/packagespec.h
index c87c6a2c6240b5..628352cdb6456b 100644
--- a/toolsrc/include/vcpkg/packagespec.h
+++ b/toolsrc/include/vcpkg/packagespec.h
@@ -23,6 +23,9 @@ namespace vcpkg
///
struct PackageSpec
{
+ PackageSpec() noexcept = default;
+ PackageSpec(std::string name, Triplet triplet) : m_name(std::move(name)), m_triplet(triplet) {}
+
static ExpectedT from_name_and_triplet(const std::string& name,
const Triplet& triplet);
@@ -103,7 +106,14 @@ namespace vcpkg
PackageSpec package_spec;
std::vector features;
- static std::vector to_feature_specs(const std::vector& specs);
+ FullPackageSpec() noexcept = default;
+ explicit FullPackageSpec(PackageSpec spec, std::vector features = {})
+ : package_spec(std::move(spec)), features(std::move(features))
+ {
+ }
+
+ std::vector to_feature_specs(const std::vector& default_features,
+ const std::vector& all_features) const;
static ExpectedT from_string(const std::string& spec_as_string,
const Triplet& default_triplet);
@@ -145,4 +155,21 @@ namespace std
{
bool operator()(const vcpkg::PackageSpec& left, const vcpkg::PackageSpec& right) const { return left == right; }
};
+
+ template<>
+ struct hash
+ {
+ size_t operator()(const vcpkg::FeatureSpec& value) const
+ {
+ size_t hash = std::hash()(value.spec());
+ hash = hash * 31 + std::hash()(value.feature());
+ return hash;
+ }
+ };
+
+ template<>
+ struct equal_to
+ {
+ bool operator()(const vcpkg::FeatureSpec& left, const vcpkg::FeatureSpec& right) const { return left == right; }
+ };
}
diff --git a/toolsrc/include/vcpkg/portfileprovider.h b/toolsrc/include/vcpkg/portfileprovider.h
new file mode 100644
index 00000000000000..79f69d9ae26353
--- /dev/null
+++ b/toolsrc/include/vcpkg/portfileprovider.h
@@ -0,0 +1,38 @@
+#pragma once
+
+#include
+#include
+#include
+#include
+
+namespace vcpkg::PortFileProvider
+{
+ struct PortFileProvider
+ {
+ virtual Optional get_control_file(const std::string& src_name) const = 0;
+ virtual std::vector load_all_control_files() const = 0;
+ };
+
+ struct MapPortFileProvider : Util::ResourceBase, PortFileProvider
+ {
+ explicit MapPortFileProvider(const std::unordered_map& map);
+ Optional get_control_file(const std::string& src_name) const override;
+ std::vector load_all_control_files() const override;
+
+ private:
+ const std::unordered_map& ports;
+ };
+
+ struct PathsPortFileProvider : Util::ResourceBase, PortFileProvider
+ {
+ explicit PathsPortFileProvider(const vcpkg::VcpkgPaths& paths,
+ const std::vector* ports_dirs_paths);
+ Optional get_control_file(const std::string& src_name) const override;
+ std::vector load_all_control_files() const override;
+
+ private:
+ Files::Filesystem& filesystem;
+ std::vector ports_dirs;
+ mutable std::unordered_map cache;
+ };
+}
diff --git a/toolsrc/include/vcpkg/sourceparagraph.h b/toolsrc/include/vcpkg/sourceparagraph.h
index 95347770aa21e1..0574afe748343c 100644
--- a/toolsrc/include/vcpkg/sourceparagraph.h
+++ b/toolsrc/include/vcpkg/sourceparagraph.h
@@ -7,6 +7,8 @@
#include
#include
+#include
+
#include
#include
@@ -21,15 +23,28 @@ namespace vcpkg
static Dependency parse_dependency(std::string name, std::string qualifier);
};
- std::vector filter_dependencies(const std::vector& deps, const Triplet& t);
- std::vector filter_dependencies_to_specs(const std::vector& deps, const Triplet& t);
- std::vector filter_dependencies_to_features(const std::vector& deps, const Triplet& t);
+ std::vector filter_dependencies(const std::vector& deps,
+ const Triplet& t,
+ const std::unordered_map& cmake_vars);
// zlib[uwp] becomes Dependency{"zlib", "uwp"}
std::vector expand_qualified_dependencies(const std::vector& depends);
std::string to_string(const Dependency& dep);
+ struct Type
+ {
+ enum
+ {
+ UNKNOWN,
+ PORT,
+ ALIAS,
+ } type;
+
+ static std::string to_string(const Type&);
+ static Type from_string(const std::string&);
+ };
+
///
/// Port metadata of additional feature in a package (part of CONTROL file)
///
@@ -50,9 +65,10 @@ namespace vcpkg
std::string description;
std::string maintainer;
std::string homepage;
- std::vector supports;
std::vector depends;
std::vector default_features;
+ Type type;
+ std::string supports_expression;
};
///
@@ -60,21 +76,48 @@ namespace vcpkg
///
struct SourceControlFile
{
+ SourceControlFile() = default;
+ SourceControlFile(const SourceControlFile& scf)
+ : core_paragraph(std::make_unique(*scf.core_paragraph))
+ {
+ for (const auto& feat_ptr : scf.feature_paragraphs)
+ {
+ feature_paragraphs.emplace_back(std::make_unique(*feat_ptr));
+ }
+ }
+
static Parse::ParseExpected parse_control_file(
- std::vector&& control_paragraphs);
+ const fs::path& path_to_control, std::vector&& control_paragraphs);
std::unique_ptr core_paragraph;
std::vector> feature_paragraphs;
Optional find_feature(const std::string& featurename) const;
+ Optional&> find_dependencies_for_feature(const std::string& featurename) const;
};
///
- /// Full metadata of a package: core and other features. As well as the location the SourceControlFile was loaded
- /// from.
+ /// Full metadata of a package: core and other features. As well as the location the SourceControlFile was
+ /// loaded from.
///
struct SourceControlFileLocation
{
+ SourceControlFileLocation(const SourceControlFileLocation& scfl)
+ : source_control_file(std::make_unique(*scfl.source_control_file))
+ , source_location(scfl.source_location)
+ {
+ }
+
+ SourceControlFileLocation(std::unique_ptr&& scf, fs::path&& source)
+ : source_control_file(std::move(scf)), source_location(std::move(source))
+ {
+ }
+
+ SourceControlFileLocation(std::unique_ptr&& scf, const fs::path& source)
+ : source_control_file(std::move(scf)), source_location(source)
+ {
+ }
+
std::unique_ptr source_control_file;
fs::path source_location;
};
@@ -84,35 +127,4 @@ namespace vcpkg
{
return print_error_message({&error_info_list, 1});
}
-
- struct Supports
- {
- static ExpectedT> parse(const std::vector& strs);
-
- using Architecture = System::CPUArchitecture;
-
- enum class Platform
- {
- WINDOWS,
- UWP,
- };
- enum class Linkage
- {
- DYNAMIC,
- STATIC,
- };
- enum class ToolsetVersion
- {
- V140,
- V141,
- };
-
- bool is_supported(Architecture arch, Platform plat, Linkage crt, ToolsetVersion tools);
-
- private:
- std::vector architectures;
- std::vector platforms;
- std::vector crt_linkages;
- std::vector toolsets;
- };
}
diff --git a/toolsrc/include/vcpkg/statusparagraph.h b/toolsrc/include/vcpkg/statusparagraph.h
index 6e832fe2f4f3e7..ec850607d4bd7d 100644
--- a/toolsrc/include/vcpkg/statusparagraph.h
+++ b/toolsrc/include/vcpkg/statusparagraph.h
@@ -56,6 +56,7 @@ namespace vcpkg
const PackageSpec& spec() const { return core->package.spec; }
std::vector dependencies() const;
+ std::unordered_map> feature_dependencies() const;
const StatusParagraph* core;
std::vector features;
diff --git a/toolsrc/include/vcpkg/update.h b/toolsrc/include/vcpkg/update.h
index b85f7b2b312a45..6091da7783792f 100644
--- a/toolsrc/include/vcpkg/update.h
+++ b/toolsrc/include/vcpkg/update.h
@@ -17,7 +17,7 @@ namespace vcpkg::Update
VersionDiff version_diff;
};
- std::vector find_outdated_packages(const Dependencies::PortFileProvider& provider,
+ std::vector find_outdated_packages(const PortFileProvider::PortFileProvider& provider,
const StatusParagraphs& status_db);
void perform_and_exit(const VcpkgCmdArguments& args, const VcpkgPaths& paths);
diff --git a/toolsrc/src/vcpkg-test/dependencies.cpp b/toolsrc/src/vcpkg-test/dependencies.cpp
index 2344bb990dacce..63e7cfee75dda3 100644
--- a/toolsrc/src/vcpkg-test/dependencies.cpp
+++ b/toolsrc/src/vcpkg-test/dependencies.cpp
@@ -1,5 +1,7 @@
#include
-
+#include
+#include
+#include
#include
using namespace vcpkg;
@@ -7,22 +9,69 @@ using Parse::parse_comma_list;
TEST_CASE ("parse depends", "[dependencies]")
{
- auto v = expand_qualified_dependencies(parse_comma_list("libA (windows)"));
+ auto v = expand_qualified_dependencies(parse_comma_list("liba (windows)"));
REQUIRE(v.size() == 1);
- REQUIRE(v.at(0).depend.name == "libA");
+ REQUIRE(v.at(0).depend.name == "liba");
REQUIRE(v.at(0).qualifier == "windows");
}
TEST_CASE ("filter depends", "[dependencies]")
{
- auto deps = expand_qualified_dependencies(parse_comma_list("libA (windows), libB, libC (uwp)"));
- auto v = filter_dependencies(deps, Triplet::X64_WINDOWS);
+ const std::unordered_map x64_win_cmake_vars{{"VCPKG_TARGET_ARCHITECTURE", "x64"},
+ {"VCPKG_CMAKE_SYSTEM_NAME", ""}};
+
+ const std::unordered_map arm_uwp_cmake_vars{{"VCPKG_TARGET_ARCHITECTURE", "arm"},
+ {"VCPKG_CMAKE_SYSTEM_NAME", "WindowsStore"}};
+
+ auto deps = expand_qualified_dependencies(parse_comma_list("liba (windows), libb, libc (uwp)"));
+ auto v = filter_dependencies(deps, Triplet::X64_WINDOWS, x64_win_cmake_vars);
REQUIRE(v.size() == 2);
- REQUIRE(v.at(0) == "libA");
- REQUIRE(v.at(1) == "libB");
+ REQUIRE(v.at(0).package_spec.name() == "liba");
+ REQUIRE(v.at(1).package_spec.name() == "libb");
- auto v2 = filter_dependencies(deps, Triplet::ARM_UWP);
+ auto v2 = filter_dependencies(deps, Triplet::ARM_UWP, arm_uwp_cmake_vars);
+ REQUIRE(v.size() == 2);
+ REQUIRE(v2.at(0).package_spec.name() == "libb");
+ REQUIRE(v2.at(1).package_spec.name() == "libc");
+}
+
+TEST_CASE ("parse feature depends", "[dependencies]")
+{
+ auto u = parse_comma_list("libwebp[anim, gif2webp, img2webp, info, mux, nearlossless, "
+ "simd, cwebp, dwebp], libwebp[vwebp_sdl, extras] (!osx)");
+ REQUIRE(u.at(1) == "libwebp[vwebp_sdl, extras] (!osx)");
+ auto v = expand_qualified_dependencies(u);
REQUIRE(v.size() == 2);
- REQUIRE(v2.at(0) == "libB");
- REQUIRE(v2.at(1) == "libC");
+ auto&& a0 = v.at(0);
+ REQUIRE(a0.depend.name == "libwebp");
+ REQUIRE(a0.depend.features.size() == 9);
+ REQUIRE(a0.qualifier.empty());
+
+ auto&& a1 = v.at(1);
+ REQUIRE(a1.depend.name == "libwebp");
+ REQUIRE(a1.depend.features.size() == 2);
+ REQUIRE(a1.qualifier == "!osx");
+}
+
+TEST_CASE ("qualified dependency", "[dependencies]")
+{
+ using namespace Test;
+ PackageSpecMap spec_map;
+ auto spec_a = FullPackageSpec{spec_map.emplace("a", "b, b[b1] (linux)"), {}};
+ auto spec_b = FullPackageSpec{spec_map.emplace("b", "", {{"b1", ""}}), {}};
+
+ PortFileProvider::MapPortFileProvider map_port{spec_map.map};
+ MockCMakeVarProvider var_provider;
+
+ auto plan = vcpkg::Dependencies::create_feature_install_plan(map_port, var_provider, {spec_a}, {});
+ REQUIRE(plan.install_actions.size() == 2);
+ REQUIRE(plan.install_actions.at(0).feature_list == std::vector{"core"});
+
+ FullPackageSpec linspec_a{PackageSpec::from_name_and_triplet("a", Triplet::from_canonical_name("x64-linux"))
+ .value_or_exit(VCPKG_LINE_INFO),
+ {}};
+ var_provider.dep_info_vars[linspec_a.package_spec].emplace("VCPKG_CMAKE_SYSTEM_NAME", "Linux");
+ auto plan2 = vcpkg::Dependencies::create_feature_install_plan(map_port, var_provider, {linspec_a}, {});
+ REQUIRE(plan2.install_actions.size() == 2);
+ REQUIRE(plan2.install_actions.at(0).feature_list == std::vector{"b1", "core"});
}
diff --git a/toolsrc/src/vcpkg-test/mockcmakevarsprovider.cpp b/toolsrc/src/vcpkg-test/mockcmakevarsprovider.cpp
new file mode 100644
index 00000000000000..eda1a7a643a74b
--- /dev/null
+++ b/toolsrc/src/vcpkg-test/mockcmakevarsprovider.cpp
@@ -0,0 +1,28 @@
+#include
+
+namespace vcpkg::Test
+{
+ Optional&> MockCMakeVarProvider::get_generic_triplet_vars(
+ const Triplet& triplet) const
+ {
+ auto it = generic_triplet_vars.find(triplet);
+ if (it == generic_triplet_vars.end()) return nullopt;
+ return it->second;
+ }
+
+ Optional&> MockCMakeVarProvider::get_dep_info_vars(
+ const PackageSpec& spec) const
+ {
+ auto it = dep_info_vars.find(spec);
+ if (it == dep_info_vars.end()) return nullopt;
+ return it->second;
+ }
+
+ Optional&> MockCMakeVarProvider::get_tag_vars(
+ const PackageSpec& spec) const
+ {
+ auto it = tag_vars.find(spec);
+ if (it == tag_vars.end()) return nullopt;
+ return it->second;
+ }
+}
\ No newline at end of file
diff --git a/toolsrc/src/vcpkg-test/paragraph.cpp b/toolsrc/src/vcpkg-test/paragraph.cpp
index 85c37851d29ecf..2ee4efe2f48f69 100644
--- a/toolsrc/src/vcpkg-test/paragraph.cpp
+++ b/toolsrc/src/vcpkg-test/paragraph.cpp
@@ -10,10 +10,11 @@ namespace Strings = vcpkg::Strings;
TEST_CASE ("SourceParagraph construct minimum", "[paragraph]")
{
auto m_pgh =
- vcpkg::SourceControlFile::parse_control_file(std::vector>{{
- {"Source", "zlib"},
- {"Version", "1.2.8"},
- }});
+ vcpkg::SourceControlFile::parse_control_file("",
+ std::vector>{{
+ {"Source", "zlib"},
+ {"Version", "1.2.8"},
+ }});
REQUIRE(m_pgh.has_value());
auto& pgh = **m_pgh.get();
@@ -28,15 +29,15 @@ TEST_CASE ("SourceParagraph construct minimum", "[paragraph]")
TEST_CASE ("SourceParagraph construct maximum", "[paragraph]")
{
auto m_pgh =
- vcpkg::SourceControlFile::parse_control_file(std::vector>{{
- {"Source", "s"},
- {"Version", "v"},
- {"Maintainer", "m"},
- {"Description", "d"},
- {"Build-Depends", "bd"},
- {"Default-Features", "df"},
- {"Supports", "x64"},
- }});
+ vcpkg::SourceControlFile::parse_control_file("",
+ std::vector>{{
+ {"Source", "s"},
+ {"Version", "v"},
+ {"Maintainer", "m"},
+ {"Description", "d"},
+ {"Build-Depends", "bd"},
+ {"Default-Features", "df"},
+ }});
REQUIRE(m_pgh.has_value());
auto& pgh = **m_pgh.get();
@@ -48,18 +49,17 @@ TEST_CASE ("SourceParagraph construct maximum", "[paragraph]")
REQUIRE(pgh.core_paragraph->depends[0].name() == "bd");
REQUIRE(pgh.core_paragraph->default_features.size() == 1);
REQUIRE(pgh.core_paragraph->default_features[0] == "df");
- REQUIRE(pgh.core_paragraph->supports.size() == 1);
- REQUIRE(pgh.core_paragraph->supports[0] == "x64");
}
TEST_CASE ("SourceParagraph two depends", "[paragraph]")
{
auto m_pgh =
- vcpkg::SourceControlFile::parse_control_file(std::vector>{{
- {"Source", "zlib"},
- {"Version", "1.2.8"},
- {"Build-Depends", "z, openssl"},
- }});
+ vcpkg::SourceControlFile::parse_control_file("",
+ std::vector>{{
+ {"Source", "zlib"},
+ {"Version", "1.2.8"},
+ {"Build-Depends", "z, openssl"},
+ }});
REQUIRE(m_pgh.has_value());
auto& pgh = **m_pgh.get();
@@ -71,11 +71,12 @@ TEST_CASE ("SourceParagraph two depends", "[paragraph]")
TEST_CASE ("SourceParagraph three depends", "[paragraph]")
{
auto m_pgh =
- vcpkg::SourceControlFile::parse_control_file(std::vector>{{
- {"Source", "zlib"},
- {"Version", "1.2.8"},
- {"Build-Depends", "z, openssl, xyz"},
- }});
+ vcpkg::SourceControlFile::parse_control_file("",
+ std::vector>{{
+ {"Source", "zlib"},
+ {"Version", "1.2.8"},
+ {"Build-Depends", "z, openssl, xyz"},
+ }});
REQUIRE(m_pgh.has_value());
auto& pgh = **m_pgh.get();
@@ -85,31 +86,15 @@ TEST_CASE ("SourceParagraph three depends", "[paragraph]")
REQUIRE(pgh.core_paragraph->depends[2].name() == "xyz");
}
-TEST_CASE ("SourceParagraph three supports", "[paragraph]")
-{
- auto m_pgh =
- vcpkg::SourceControlFile::parse_control_file(std::vector>{{
- {"Source", "zlib"},
- {"Version", "1.2.8"},
- {"Supports", "x64, windows, uwp"},
- }});
- REQUIRE(m_pgh.has_value());
- auto& pgh = **m_pgh.get();
-
- REQUIRE(pgh.core_paragraph->supports.size() == 3);
- REQUIRE(pgh.core_paragraph->supports[0] == "x64");
- REQUIRE(pgh.core_paragraph->supports[1] == "windows");
- REQUIRE(pgh.core_paragraph->supports[2] == "uwp");
-}
-
TEST_CASE ("SourceParagraph construct qualified depends", "[paragraph]")
{
auto m_pgh =
- vcpkg::SourceControlFile::parse_control_file(std::vector>{{
- {"Source", "zlib"},
- {"Version", "1.2.8"},
- {"Build-Depends", "libA (windows), libB (uwp)"},
- }});
+ vcpkg::SourceControlFile::parse_control_file("",
+ std::vector>{{
+ {"Source", "zlib"},
+ {"Version", "1.2.8"},
+ {"Build-Depends", "libA (windows), libB (uwp)"},
+ }});
REQUIRE(m_pgh.has_value());
auto& pgh = **m_pgh.get();
@@ -127,11 +112,12 @@ TEST_CASE ("SourceParagraph construct qualified depends", "[paragraph]")
TEST_CASE ("SourceParagraph default features", "[paragraph]")
{
auto m_pgh =
- vcpkg::SourceControlFile::parse_control_file(std::vector>{{
- {"Source", "a"},
- {"Version", "1.0"},
- {"Default-Features", "a1"},
- }});
+ vcpkg::SourceControlFile::parse_control_file("",
+ std::vector>{{
+ {"Source", "a"},
+ {"Version", "1.0"},
+ {"Default-Features", "a1"},
+ }});
REQUIRE(m_pgh.has_value());
auto& pgh = **m_pgh.get();
@@ -380,11 +366,12 @@ TEST_CASE ("BinaryParagraph serialize min", "[paragraph]")
auto pghs = vcpkg::Paragraphs::parse_paragraphs(ss).value_or_exit(VCPKG_LINE_INFO);
REQUIRE(pghs.size() == 1);
- REQUIRE(pghs[0].size() == 4);
+ REQUIRE(pghs[0].size() == 5);
REQUIRE(pghs[0]["Package"] == "zlib");
REQUIRE(pghs[0]["Version"] == "1.2.8");
REQUIRE(pghs[0]["Architecture"] == "x86-windows");
REQUIRE(pghs[0]["Multi-Arch"] == "same");
+ REQUIRE(pghs[0]["Type"] == "Port");
}
TEST_CASE ("BinaryParagraph serialize max", "[paragraph]")
@@ -402,13 +389,14 @@ TEST_CASE ("BinaryParagraph serialize max", "[paragraph]")
auto pghs = vcpkg::Paragraphs::parse_paragraphs(ss).value_or_exit(VCPKG_LINE_INFO);
REQUIRE(pghs.size() == 1);
- REQUIRE(pghs[0].size() == 7);
+ REQUIRE(pghs[0].size() == 8);
REQUIRE(pghs[0]["Package"] == "zlib");
REQUIRE(pghs[0]["Version"] == "1.2.8");
REQUIRE(pghs[0]["Architecture"] == "x86-windows");
REQUIRE(pghs[0]["Multi-Arch"] == "same");
REQUIRE(pghs[0]["Description"] == "first line\n second line");
REQUIRE(pghs[0]["Depends"] == "dep");
+ REQUIRE(pghs[0]["Type"] == "Port");
}
TEST_CASE ("BinaryParagraph serialize multiple deps", "[paragraph]")
diff --git a/toolsrc/src/vcpkg-test/plan.cpp b/toolsrc/src/vcpkg-test/plan.cpp
index e354b75515831e..594c9783b9181a 100644
--- a/toolsrc/src/vcpkg-test/plan.cpp
+++ b/toolsrc/src/vcpkg-test/plan.cpp
@@ -1,7 +1,10 @@
#include
+#include
#include
+#include