[rollup] Rollup PR 2021-07-16 (#19001)

* [rollup:2021-07-16 1/7] PR #18201 (@JackBoosY)

[vcpkg-cmake] Add check for unused cmake variables

* [rollup:2021-07-16 2/7] PR #18397 (@strega-nil)

[vcpkg_list] add new function

* [rollup:2021-07-16 3/7] PR #18782 (@strega-nil)

[scripts-audit] vcpkg_build_ninja

* [rollup:2021-07-16 4/7] PR #18784 (@strega-nil)

[scripts-audit] vcpkg_minimum_required

* [rollup:2021-07-16 5/7] PR #18785 (@strega-nil)

[scripts-audit] vcpkg_replace_string

* [rollup:2021-07-16 6/7] PR #18786 (@strega-nil)

[scripts-audit] windows scripts

* [rollup:2021-07-16 7/7] PR #18945 (@strega-nil)

[many ports] remove deprecated vcpkg_check_features call [1/5]

Co-authored-by: nicole mazzuca <mazzucan@outlook.com>
Co-authored-by: PhoebeHui <20694052+PhoebeHui@users.noreply.github.com>
This commit is contained in:
nicole mazzuca 2021-07-20 12:24:58 -05:00 committed by GitHub
parent b67fab9861
commit 0e1dc12185
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
85 changed files with 2140 additions and 330 deletions

View File

@ -51,6 +51,7 @@
- [vcpkg\_install\_msbuild](vcpkg_install_msbuild.md)
- [vcpkg\_install\_nmake](vcpkg_install_nmake.md)
- [vcpkg\_install\_qmake](vcpkg_install_qmake.md)
- [vcpkg\_list](vcpkg_list.md)
- [vcpkg\_minimum\_required](vcpkg_minimum_required.md)
- [vcpkg\_replace\_string](vcpkg_replace_string.md)

View File

@ -18,6 +18,8 @@ vcpkg_cmake_configure(
<configure-setting>...]
[OPTIONS_DEBUG
<configure-setting>...]
[MAYBE_UNUSED_VARIABLES
<variable-name>...]
)
```
@ -56,6 +58,11 @@ By default, this function adds flags to `CMAKE_C_FLAGS` and `CMAKE_CXX_FLAGS`
which set the default character set to utf-8 for MSVC.
If the library sets its own code page, pass the `NO_CHARSET_FLAG` option.
This function makes certain that all options passed in are used by the
underlying CMake build system. If there are options that might be unused,
perhaps on certain platforms, pass those variable names to
`MAYBE_UNUSED_VARIABLES`.
`LOGFILE_BASE` is used to set the base of the logfile names;
by default, this is `config`, and thus the logfiles end up being something like
`config-x86-windows-dbg.log`. You can set it to anything you like;

View File

@ -17,6 +17,7 @@ vcpkg_configure_cmake(
[OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...]
[OPTIONS_RELEASE <-DOPTIMIZE=1>...]
[OPTIONS_DEBUG <-DDEBUGGABLE=1>...]
[MAYBE_UNUSED_VARIABLES <option-name>...]
)
```
@ -55,6 +56,9 @@ Additional options passed to CMake during the Release configuration. These are i
### OPTIONS_DEBUG
Additional options passed to CMake during the Debug configuration. These are in addition to `OPTIONS`.
### MAYBE_UNUSED_VARIABLES
Any CMake variables which are explicitly passed in, but which may not be used on all platforms.
### LOGNAME
Name of the log to write the output of the configure call to.

View File

@ -0,0 +1,94 @@
# vcpkg_list
The latest version of this document lives in the [vcpkg repo](https://github.com/Microsoft/vcpkg/blob/master/docs/maintainers/vcpkg_list.md).
A replacement for CMake's `list()` function, which correctly handles elements
with internal semicolons (in other words, escaped semicolons).
Use `vcpkg_list()` instead of `list()` whenever possible.
```cmake
vcpkg_list(SET <out-var> [<element>...])
vcpkg_list(<COMMAND> <list-var> [<other-arguments>...])
```
In addition to all of the commands from `list()`, `vcpkg_list` adds
a `vcpkg_list(SET)` command.
This command takes its arguments, escapes them, and then concatenates
them into a list; this should be used instead of `set()` for setting any
list variable.
Otherwise, the `vcpkg_list()` function is the same as the built-in
`list()` function, with the following restrictions:
- `GET`, `REMOVE_ITEM`, and `REMOVE_AT` support only one index/value
- `POP_BACK` and `POP_FRONT` do not support getting the value into
another out variable. Use C++ style `GET` then `POP_(BACK|FRONT)`.
- `FILTER` and `TRANSFORM` are unsupported.
See the [CMake documentation for `list()`](https://cmake.org/cmake/help/latest/command/list.html)
for more information.
## Notes: Some Weirdnesses
The most major weirdness is due to `""` pulling double-duty as "list of zero elements",
and "list of one element, which is empty". `vcpkg_list` always uses the former understanding.
This can cause weird behavior, for example:
```cmake
set(lst "")
vcpkg_list(APPEND lst "" "")
# lst = ";"
```
This is because you're appending two elements to the empty list.
One very weird behavior that comes out of this would be:
```cmake
set(lst "")
vcpkg_list(APPEND lst "")
# lst = ""
```
since `""` is the empty list, we append the empty element and end up with a list
of one element, which is empty. This does not happen for non-empty lists;
for example:
```cmake
set(lst "a")
vcpkg_list(APPEND lst "")
# lst = "a;"
```
only the empty list has this odd behavior.
## Examples
### Creating a list
```cmake
vcpkg_list(SET foo_param)
if(DEFINED arg_FOO)
vcpkg_list(SET foo_param FOO "${arg_FOO}")
endif()
```
### Appending to a list
```cmake
set(OPTIONS -DFOO=BAR)
if(VCPKG_TARGET_IS_WINDOWS)
vcpkg_list(APPEND OPTIONS "-DOS=WINDOWS;FOO")
endif()
```
### Popping the end off a list
```cmake
if(NOT list STREQUAL "")
vcpkg_list(GET list end -1)
vcpkg_list(POP_BACK list)
endif()
```
## Source
[scripts/cmake/vcpkg\_list.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_list.cmake)

View File

@ -5,9 +5,8 @@ The latest version of this document lives in the [vcpkg repo](https://github.com
Replace a string in a file.
```cmake
vcpkg_replace_string(filename match_string replace_string)
vcpkg_replace_string(<filename> <match> <replace>)
```
## Source
[scripts/cmake/vcpkg\_replace\_string.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_replace_string.cmake)

View File

@ -1,9 +0,0 @@
Source: apr
Version: 1.7.0
Port-Version: 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

View File

@ -17,7 +17,8 @@ vcpkg_extract_source_archive_ex(
if (VCPKG_TARGET_IS_WINDOWS)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
private-headers INSTALL_PRIVATE_H
FEATURES
private-headers INSTALL_PRIVATE_H
)
vcpkg_configure_cmake(

13
ports/apr/vcpkg.json Normal file
View File

@ -0,0 +1,13 @@
{
"name": "apr",
"version": "1.7.0",
"port-version": 4,
"description": "The Apache Portable Runtime (APR) is a C library that forms a system portability layer that covers many operating systems.",
"homepage": "https://apr.apache.org/",
"supports": "!uwp",
"features": {
"private-headers": {
"description": "Install non-standard files required for building Apache httpd"
}
}
}

View File

@ -1,12 +0,0 @@
Source: azure-iot-sdk-c
Version: 2020-12-09
Build-Depends: azure-uamqp-c, azure-umqtt-c, azure-c-shared-utility, parson, azure-uhttp-c, azure-macro-utils-c, umock-c
Description: A C99 SDK for connecting devices to Microsoft Azure IoT services
Homepage: https://github.com/Azure/azure-iot-sdk-c
Feature: public-preview
Description: A version of the azure-iot-sdk-c containing public-preview features.
Build-Depends: azure-uamqp-c[public-preview], azure-umqtt-c[public-preview], azure-c-shared-utility[public-preview], azure-uhttp-c[public-preview], azure-macro-utils-c[public-preview], umock-c[public-preview]
Feature: use-prov-client
Description: Enables device provisioning client for DPS

View File

@ -25,8 +25,9 @@ else()
endif()
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
use-prov-client hsm_type_symm_key
use-prov-client use_prov_client
FEATURES
use-prov-client hsm_type_symm_key
use-prov-client use_prov_client
)
file(COPY ${CURRENT_INSTALLED_DIR}/share/azure-c-shared-utility/azure_iot_build_rules.cmake DESTINATION ${SOURCE_PATH}/deps/azure-c-shared-utility/configs/)
@ -51,4 +52,4 @@ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR
configure_file(${SOURCE_PATH}/LICENSE ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright COPYONLY)
vcpkg_copy_pdbs()
vcpkg_copy_pdbs()

View File

@ -0,0 +1,62 @@
{
"name": "azure-iot-sdk-c",
"version-date": "2020-12-09",
"port-version": 1,
"description": "A C99 SDK for connecting devices to Microsoft Azure IoT services",
"homepage": "https://github.com/Azure/azure-iot-sdk-c",
"dependencies": [
"azure-c-shared-utility",
"azure-macro-utils-c",
"azure-uamqp-c",
"azure-uhttp-c",
"azure-umqtt-c",
"parson",
"umock-c"
],
"features": {
"public-preview": {
"description": "A version of the azure-iot-sdk-c containing public-preview features.",
"dependencies": [
{
"name": "azure-c-shared-utility",
"features": [
"public-preview"
]
},
{
"name": "azure-macro-utils-c",
"features": [
"public-preview"
]
},
{
"name": "azure-uamqp-c",
"features": [
"public-preview"
]
},
{
"name": "azure-uhttp-c",
"features": [
"public-preview"
]
},
{
"name": "azure-umqtt-c",
"features": [
"public-preview"
]
},
{
"name": "umock-c",
"features": [
"public-preview"
]
}
]
},
"use-prov-client": {
"description": "Enables device provisioning client for DPS"
}
}
}

View File

@ -1,13 +0,0 @@
Source: azure-kinect-sensor-sdk
Version: 1.4.1
Homepage: https://github.com/microsoft/Azure-Kinect-Sensor-SDK
Description: Azure Kinect SDK is a cross platform (Linux and Windows) user mode SDK to read data from your Azure Kinect device.
Build-Depends: azure-c-shared-utility, glfw3, gtest, imgui, libusb, spdlog, cjson, ebml, libjpeg-turbo, matroska, libsoundio, libyuv, libuvc (linux)
Supports: !osx
Feature: docs
Description: Build K4A doxygen documentation.
Feature: tool
Description: Build tools.
Build-Depends: gl3w, glew, imgui[glfw-binding,opengl3-glew-binding]

View File

@ -19,8 +19,9 @@ get_filename_component(PYTHON3_DIR "${PYTHON3}" DIRECTORY)
vcpkg_add_to_path("${PYTHON3_DIR}")
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
docs K4A_BUILD_DOCS
tool BUILD_TOOLS
FEATURES
docs K4A_BUILD_DOCS
tool BUILD_TOOLS
)
# .rc file needs windows.h, so do not use PREFER_NINJA here

View File

@ -0,0 +1,45 @@
{
"name": "azure-kinect-sensor-sdk",
"version": "1.4.1",
"port-version": 1,
"description": "Azure Kinect SDK is a cross platform (Linux and Windows) user mode SDK to read data from your Azure Kinect device.",
"homepage": "https://github.com/microsoft/Azure-Kinect-Sensor-SDK",
"supports": "!osx",
"dependencies": [
"azure-c-shared-utility",
"cjson",
"ebml",
"glfw3",
"gtest",
"imgui",
"libjpeg-turbo",
"libsoundio",
"libusb",
{
"name": "libuvc",
"platform": "linux"
},
"libyuv",
"matroska",
"spdlog"
],
"features": {
"docs": {
"description": "Build K4A doxygen documentation."
},
"tool": {
"description": "Build tools.",
"dependencies": [
"gl3w",
"glew",
{
"name": "imgui",
"features": [
"glfw-binding",
"opengl3-glew-binding"
]
}
]
}
}
}

View File

@ -1,22 +0,0 @@
Source: bitserializer
Version: 0.10
Description: Core part of C++ 17 library for serialization to JSON, XML, YAML
Homepage: https://bitbucket.org/Pavel_Kisliak/bitserializer
Default-Features: cpprestjson-archive, rapidjson-archive, pugixml-archive
Supports: !(arm|osx)
Feature: cpprestjson-archive
Build-Depends: cpprestsdk
Description: Module for support JSON (implementation based on the CppRestSDK library)
Feature: rapidjson-archive
Build-Depends: rapidjson
Description: Module for support JSON (implementation based on the RapidJson library)
Feature: pugixml-archive
Build-Depends: pugixml
Description: Module for support XML (implementation based on the PugiXml library)
Feature: rapidyaml-archive
Build-Depends: ryml (!arm&!arm64&!osx)
Description: Module for support YAML (implementation based on the RapidYaml library)

View File

@ -7,10 +7,11 @@ vcpkg_from_bitbucket(
)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
"cpprestjson-archive" BUILD_CPPRESTJSON_ARCHIVE
"rapidjson-archive" BUILD_RAPIDJSON_ARCHIVE
"pugixml-archive" BUILD_PUGIXML_ARCHIVE
"rapidyaml-archive" BUILD_RAPIDYAML_ARCHIVE
FEATURES
"cpprestjson-archive" BUILD_CPPRESTJSON_ARCHIVE
"rapidjson-archive" BUILD_RAPIDJSON_ARCHIVE
"pugixml-archive" BUILD_PUGIXML_ARCHIVE
"rapidyaml-archive" BUILD_RAPIDYAML_ARCHIVE
)
vcpkg_configure_cmake(

View File

@ -0,0 +1,42 @@
{
"name": "bitserializer",
"version": "0.10",
"port-version": 1,
"description": "Core part of C++ 17 library for serialization to JSON, XML, YAML",
"homepage": "https://bitbucket.org/Pavel_Kisliak/bitserializer",
"supports": "!(arm | osx)",
"default-features": [
"cpprestjson-archive",
"pugixml-archive",
"rapidjson-archive"
],
"features": {
"cpprestjson-archive": {
"description": "Module for support JSON (implementation based on the CppRestSDK library)",
"dependencies": [
"cpprestsdk"
]
},
"pugixml-archive": {
"description": "Module for support XML (implementation based on the PugiXml library)",
"dependencies": [
"pugixml"
]
},
"rapidjson-archive": {
"description": "Module for support JSON (implementation based on the RapidJson library)",
"dependencies": [
"rapidjson"
]
},
"rapidyaml-archive": {
"description": "Module for support YAML (implementation based on the RapidYaml library)",
"dependencies": [
{
"name": "ryml",
"platform": "!arm & !arm64 & !osx"
}
]
}
}
}

View File

@ -13,9 +13,9 @@ vcpkg_from_github(
if (VCPKG_TARGET_IS_WINDOWS)
vcpkg_download_distfile(GBC_ARCHIVE
URLS "https://github.com/microsoft/bond/releases/download/${BOND_VER}/gbc-${BOND_VER}-amd64.zip"
FILENAME "gbc-${BOND_VER}-amd64.zip"
SHA512 41a4e01a9a0f6246a3c07f516f2c0cfc8a837eff2166c2bb787877e409d6f55eeb6084e63aabc3502492775a3fa7e381bf37fde0bdfced50a9d0b39dfaca7dfd
URLS "https://github.com/microsoft/bond/releases/download/${BOND_VER}/gbc-${BOND_VER}-amd64.zip"
FILENAME "gbc-${BOND_VER}-amd64.zip"
SHA512 41a4e01a9a0f6246a3c07f516f2c0cfc8a837eff2166c2bb787877e409d6f55eeb6084e63aabc3502492775a3fa7e381bf37fde0bdfced50a9d0b39dfaca7dfd
)
# Clear the generator to prevent it from updating
@ -37,20 +37,21 @@ else()
endif()
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
bond-over-grpc BOND_ENABLE_GRPC
FEATURES
bond-over-grpc BOND_ENABLE_GRPC
)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
OPTIONS
-DBOND_LIBRARIES_ONLY=TRUE
-DBOND_GBC_PATH=${FETCHED_GBC_PATH}
-DBOND_SKIP_GBC_TESTS=TRUE
-DBOND_ENABLE_COMM=FALSE
-DBOND_FIND_RAPIDJSON=TRUE
-DBOND_STACK_OPTIONS=--allow-different-user
${FEATURE_OPTIONS}
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
OPTIONS
-DBOND_LIBRARIES_ONLY=TRUE
-DBOND_GBC_PATH=${FETCHED_GBC_PATH}
-DBOND_SKIP_GBC_TESTS=TRUE
-DBOND_ENABLE_COMM=FALSE
-DBOND_FIND_RAPIDJSON=TRUE
-DBOND_STACK_OPTIONS=--allow-different-user
${FEATURE_OPTIONS}
)
vcpkg_install_cmake()

View File

@ -1,7 +1,7 @@
{
"name": "bond",
"version-string": "9.0.3",
"port-version": 1,
"version": "9.0.3",
"port-version": 2,
"description": "Bond is a cross-platform framework for working with schematized data. It supports cross-language de/serialization and powerful generic mechanisms for efficiently manipulating data. Bond is broadly used at Microsoft in high scale services.",
"homepage": "https://github.com/Microsoft/bond",
"dependencies": [

View File

@ -51,7 +51,8 @@ else()
endif()
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
amalgamation BOTAN_AMALGAMATION
FEATURES
amalgamation BOTAN_AMALGAMATION
)
function(BOTAN_BUILD BOTAN_BUILD_TYPE)

View File

@ -1,7 +1,7 @@
{
"name": "botan",
"version": "2.16.0",
"port-version": 1,
"port-version": 2,
"description": "A cryptography library written in C++11",
"homepage": "https://botan.randombit.net",
"supports": "!(windows & arm)",

View File

@ -1,51 +0,0 @@
Source: capstone
Version: 4.0.2
Port-Version: 1
Homepage: https://github.com/aquynh/capstone
Description: Multi-architecture disassembly framework
Feature: arm
Description: Capstone disassembly support for ARM
Feature: arm64
Description: Capstone disassembly support for ARM64
Feature: evm
Description: Capstone disassembly support for EVM
Feature: m680x
Description: Capstone disassembly support for M680X
Feature: m68k
Description: Capstone disassembly support for M68k
Feature: mips
Description: Capstone disassembly support for MIPS
Feature: ppc
Description: Capstone disassembly support for PowerPC
Feature: sparc
Description: Capstone disassembly support for SPARC
Feature: sysz
Description: Capstone disassembly support for SysZ
Feature: tms320c64x
Description: Capstone disassembly support for TMS320C64X
Feature: x86
Description: Capstone disassembly support for x86
Feature: x86-reduce
Description: Capstone disassembly support for x86 without support for less used instructions
Build-Depends: capstone[x86]
Feature: xcore
Description: Capstone disassembly support for XCore
Feature: diet
Description: Build Capstone in diet mode (reduced features for smaller size)
Feature: osxkernel
Description: Support for emedding Capstone into OSX Kernel extensions

View File

@ -10,21 +10,22 @@ string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" CS_BUILD_STATIC)
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" CS_BUILD_SHARED)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
"arm" CAPSTONE_ARM_SUPPORT
"arm64" CAPSTONE_ARM64_SUPPORT
"evm" CAPSTONE_EVM_SUPPORT
"m680x" CAPSTONE_M680X_SUPPORT
"m68k" CAPSTONE_M68K_SUPPORT
"mips" CAPSTONE_MIPS_SUPPORT
"osxkernel" CAPSTONE_OSXKERNEL_SUPPORT
"ppc" CAPSTONE_PPC_SUPPORT
"sparc" CAPSTONE_SPARC_SUPPORT
"sysz" CAPSTONE_SYSZ_SUPPORT
"tms320c64x" CAPSTONE_TMS320C64X_SUPPORT
"x86" CAPSTONE_X86_SUPPORT
"x86-reduce" CAPSTONE_X86_REDUCE
"xcore" CAPSTONE_XCORE_SUPPORT
"diet" CAPSTONE_BUILD_DIET
FEATURES
"arm" CAPSTONE_ARM_SUPPORT
"arm64" CAPSTONE_ARM64_SUPPORT
"evm" CAPSTONE_EVM_SUPPORT
"m680x" CAPSTONE_M680X_SUPPORT
"m68k" CAPSTONE_M68K_SUPPORT
"mips" CAPSTONE_MIPS_SUPPORT
"osxkernel" CAPSTONE_OSXKERNEL_SUPPORT
"ppc" CAPSTONE_PPC_SUPPORT
"sparc" CAPSTONE_SPARC_SUPPORT
"sysz" CAPSTONE_SYSZ_SUPPORT
"tms320c64x" CAPSTONE_TMS320C64X_SUPPORT
"x86" CAPSTONE_X86_SUPPORT
"x86-reduce" CAPSTONE_X86_REDUCE
"xcore" CAPSTONE_XCORE_SUPPORT
"diet" CAPSTONE_BUILD_DIET
)
vcpkg_configure_cmake(

62
ports/capstone/vcpkg.json Normal file
View File

@ -0,0 +1,62 @@
{
"name": "capstone",
"version": "4.0.2",
"port-version": 2,
"description": "Multi-architecture disassembly framework",
"homepage": "https://github.com/aquynh/capstone",
"features": {
"arm": {
"description": "Capstone disassembly support for ARM"
},
"arm64": {
"description": "Capstone disassembly support for ARM64"
},
"diet": {
"description": "Build Capstone in diet mode (reduced features for smaller size)"
},
"evm": {
"description": "Capstone disassembly support for EVM"
},
"m680x": {
"description": "Capstone disassembly support for M680X"
},
"m68k": {
"description": "Capstone disassembly support for M68k"
},
"mips": {
"description": "Capstone disassembly support for MIPS"
},
"osxkernel": {
"description": "Support for emedding Capstone into OSX Kernel extensions"
},
"ppc": {
"description": "Capstone disassembly support for PowerPC"
},
"sparc": {
"description": "Capstone disassembly support for SPARC"
},
"sysz": {
"description": "Capstone disassembly support for SysZ"
},
"tms320c64x": {
"description": "Capstone disassembly support for TMS320C64X"
},
"x86": {
"description": "Capstone disassembly support for x86"
},
"x86-reduce": {
"description": "Capstone disassembly support for x86 without support for less used instructions",
"dependencies": [
{
"name": "capstone",
"features": [
"x86"
]
}
]
},
"xcore": {
"description": "Capstone disassembly support for XCore"
}
}
}

View File

@ -27,11 +27,12 @@ file(REMOVE ${SOURCE_PATH}/cmake/FindEigen.cmake)
file(REMOVE ${SOURCE_PATH}/cmake/FindSuiteSparse.cmake)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
"suitesparse" SUITESPARSE
"cxsparse" CXSPARSE
"lapack" LAPACK
"eigensparse" EIGENSPARSE
"tools" GFLAGS
FEATURES
"suitesparse" SUITESPARSE
"cxsparse" CXSPARSE
"lapack" LAPACK
"eigensparse" EIGENSPARSE
"tools" GFLAGS
)
vcpkg_configure_cmake(

View File

@ -1,7 +1,7 @@
{
"name": "ceres",
"version-semver": "2.0.0",
"port-version": 4,
"port-version": 5,
"description": "non-linear optimization package",
"homepage": "https://github.com/ceres-solver/ceres-solver",
"dependencies": [

View File

@ -1,10 +0,0 @@
Source: cgal
Version: 5.2.2
Port-Version: 0
Build-Depends: mpfr, gmp, zlib, boost-accumulators, boost-algorithm, boost-bimap, boost-callable-traits, boost-concept-check, boost-container, boost-core, boost-detail, boost-filesystem, boost-functional, boost-fusion, boost-geometry, boost-graph, boost-heap, boost-intrusive, boost-iostreams, boost-iterator, boost-lambda, boost-logic, boost-math, boost-mpl, boost-multi-index, boost-multiprecision, boost-numeric-conversion, boost-optional, boost-parameter, boost-pool, boost-preprocessor, boost-property-map, boost-property-tree, boost-ptr-container, boost-random, boost-range, boost-serialization, boost-spirit, boost-thread, boost-tuple, boost-type-traits, boost-units, boost-utility, boost-variant
Homepage: https://github.com/CGAL/cgal
Description: The Computational Geometry Algorithms Library (CGAL) is a C++ library that aims to provide easy access to efficient and reliable algorithms in computational geometry.
Feature: qt
Build-Depends: qt5-base[core], qt5-3d, qt5-svg, qt5-xmlpatterns, qt5-script, eigen3
Description: Qt GUI support for CGAL

View File

@ -9,7 +9,8 @@ vcpkg_from_github(
)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
qt WITH_CGAL_Qt5
FEATURES
qt WITH_CGAL_Qt5
)
vcpkg_configure_cmake(

69
ports/cgal/vcpkg.json Normal file
View File

@ -0,0 +1,69 @@
{
"name": "cgal",
"version": "5.2.2",
"port-version": 1,
"description": "The Computational Geometry Algorithms Library (CGAL) is a C++ library that aims to provide easy access to efficient and reliable algorithms in computational geometry.",
"homepage": "https://github.com/CGAL/cgal",
"dependencies": [
"boost-accumulators",
"boost-algorithm",
"boost-bimap",
"boost-callable-traits",
"boost-concept-check",
"boost-container",
"boost-core",
"boost-detail",
"boost-filesystem",
"boost-functional",
"boost-fusion",
"boost-geometry",
"boost-graph",
"boost-heap",
"boost-intrusive",
"boost-iostreams",
"boost-iterator",
"boost-lambda",
"boost-logic",
"boost-math",
"boost-mpl",
"boost-multi-index",
"boost-multiprecision",
"boost-numeric-conversion",
"boost-optional",
"boost-parameter",
"boost-pool",
"boost-preprocessor",
"boost-property-map",
"boost-property-tree",
"boost-ptr-container",
"boost-random",
"boost-range",
"boost-serialization",
"boost-spirit",
"boost-thread",
"boost-tuple",
"boost-type-traits",
"boost-units",
"boost-utility",
"boost-variant",
"gmp",
"mpfr",
"zlib"
],
"features": {
"qt": {
"description": "Qt GUI support for CGAL",
"dependencies": [
"eigen3",
"qt5-3d",
{
"name": "qt5-base",
"default-features": false
},
"qt5-script",
"qt5-svg",
"qt5-xmlpatterns"
]
}
}
}

View File

@ -1,10 +0,0 @@
Source: civetweb
Version: 1.13
Port-Version: 1
Homepage: https://github.com/civetweb/civetweb
Description: Easy to use, powerful, C/C++ embeddable web server.
Supports: !uwp
Feature: ssl
Build-Depends: openssl
Description: Enable SSL support

View File

@ -12,7 +12,8 @@ vcpkg_from_github(
)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
ssl CIVETWEB_ENABLE_SSL
FEATURES
ssl CIVETWEB_ENABLE_SSL
)
vcpkg_configure_cmake(

16
ports/civetweb/vcpkg.json Normal file
View File

@ -0,0 +1,16 @@
{
"name": "civetweb",
"version": "1.13",
"port-version": 2,
"description": "Easy to use, powerful, C/C++ embeddable web server.",
"homepage": "https://github.com/civetweb/civetweb",
"supports": "!uwp",
"features": {
"ssl": {
"description": "Enable SSL support",
"dependencies": [
"openssl"
]
}
}
}

View File

@ -1,7 +0,0 @@
Source: cjson
Version: 2019-11-30-1
Description: Ultralightweight JSON parser in ANSI C
Homepage: https://github.com/DaveGamble/cJSON
Feature: utils
Description: Enable building the cJSON_Utils library

View File

@ -8,7 +8,8 @@ vcpkg_from_github(
vcpkg_check_features(
OUT_FEATURE_OPTIONS FEATURE_OPTIONS
utils ENABLE_CJSON_UTILS
FEATURES
utils ENABLE_CJSON_UTILS
)
if(CMAKE_HOST_WIN32)

12
ports/cjson/vcpkg.json Normal file
View File

@ -0,0 +1,12 @@
{
"name": "cjson",
"version-date": "2019-11-30",
"port-version": 2,
"description": "Ultralightweight JSON parser in ANSI C",
"homepage": "https://github.com/DaveGamble/cJSON",
"features": {
"utils": {
"description": "Enable building the cJSON_Utils library"
}
}
}

View File

@ -1,7 +0,0 @@
Source: clue
Version: 1.0.0-alpha.7
Homepage: https://github.com/martinmoene/clue
Description: clue is a C++03 header-only library to log messages with a severity and optional module identifier.
Feature: test
Description: Build test

View File

@ -9,7 +9,8 @@ vcpkg_from_github(
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
test CLUE_BUILD_TEST
FEATURES
test CLUE_BUILD_TEST
)
vcpkg_configure_cmake(
@ -24,4 +25,4 @@ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug)
# Handle copyright
file(COPY ${SOURCE_PATH}/LICENSE_1_0.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
file(RENAME ${CURRENT_PACKAGES_DIR}/share/${PORT}/LICENSE_1_0.txt ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright)
file(RENAME ${CURRENT_PACKAGES_DIR}/share/${PORT}/LICENSE_1_0.txt ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright)

12
ports/clue/vcpkg.json Normal file
View File

@ -0,0 +1,12 @@
{
"name": "clue",
"version-string": "1.0.0-alpha.7",
"port-version": 1,
"description": "clue is a C++03 header-only library to log messages with a severity and optional module identifier.",
"homepage": "https://github.com/martinmoene/clue",
"features": {
"test": {
"description": "Build test"
}
}
}

View File

@ -1,9 +0,0 @@
Source: cppzmq
Version: 4.7.1
Port-Version: 1
Build-Depends: zeromq
Homepage: https://github.com/zeromq/cppzmq
Description: lightweight messaging kernel, C++ bindings
Feature: draft
Description: Build and install draft

View File

@ -7,7 +7,8 @@ vcpkg_from_github(
)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
draft ENABLE_DRAFTS
FEATURES
draft ENABLE_DRAFTS
)
vcpkg_configure_cmake(

15
ports/cppzmq/vcpkg.json Normal file
View File

@ -0,0 +1,15 @@
{
"name": "cppzmq",
"version": "4.7.1",
"port-version": 2,
"description": "lightweight messaging kernel, C++ bindings",
"homepage": "https://github.com/zeromq/cppzmq",
"dependencies": [
"zeromq"
],
"features": {
"draft": {
"description": "Build and install draft"
}
}
}

View File

@ -1,16 +0,0 @@
Source: crashrpt
Version: 1.4.3
Description: A crash reporting system for Windows applications
Homepage: http://crashrpt.sourceforge.net/
Build-Depends: dbghelp, libjpeg-turbo, libogg, libpng, libtheora, tinyxml, wtl, zlib
Default-Features:
Feature: probe
Description: The CrashRptProbe library
Feature: tests
Description: Test application for crashrpt
Build-Depends: crashrpt[core,probe]
Feature: demos
Description: Demo applications for CrashRptProbe

View File

@ -28,9 +28,10 @@ string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" CRASHRPT_BUILD_SHARED_
string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "dynamic" CRASHRPT_LINK_CRT_AS_DLL)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
probe CRASHRPT_BUILD_PROBE
tests CRASHRPT_BUILD_TESTS
demos CRASHRPT_BUILD_DEMOS
FEATURES
probe CRASHRPT_BUILD_PROBE
tests CRASHRPT_BUILD_TESTS
demos CRASHRPT_BUILD_DEMOS
)
# PREFER_NINJA is not used below since CrashSender fails to build with errors like this one:

37
ports/crashrpt/vcpkg.json Normal file
View File

@ -0,0 +1,37 @@
{
"name": "crashrpt",
"version": "1.4.3",
"port-version": 1,
"description": "A crash reporting system for Windows applications",
"homepage": "http://crashrpt.sourceforge.net/",
"dependencies": [
"dbghelp",
"libjpeg-turbo",
"libogg",
"libpng",
"libtheora",
"tinyxml",
"wtl",
"zlib"
],
"features": {
"demos": {
"description": "Demo applications for CrashRptProbe"
},
"probe": {
"description": "The CrashRptProbe library"
},
"tests": {
"description": "Test application for crashrpt",
"dependencies": [
{
"name": "crashrpt",
"default-features": false,
"features": [
"probe"
]
}
]
}
}
}

View File

@ -1,19 +0,0 @@
Source: dlib
Version: 19.21
Port-Version: 4
Build-Depends: libjpeg-turbo, libpng, blas, lapack
Homepage: https://github.com/davisking/dlib
Description: Modern C++ toolkit containing machine learning algorithms and tools for creating complex software in C++
Default-Features: fftw3, sqlite3
Feature: cuda
Build-Depends: cuda, cudnn
Description: CUDA support for dlib
Feature: fftw3
Build-Depends: fftw3
Description: fftw3 support for dlib
Feature: sqlite3
Build-Depends: sqlite3
Description: sqlite3 support for dlib

View File

@ -22,9 +22,10 @@ string(REPLACE "PNG_LIBRARY" "PNG_LIBRARIES" DLIB_CMAKE "${DLIB_CMAKE}")
file(WRITE "${SOURCE_PATH}/dlib/CMakeLists.txt" "${DLIB_CMAKE}")
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
"sqlite3" DLIB_LINK_WITH_SQLITE3
"fftw3" DLIB_USE_FFTW
"cuda" DLIB_USE_CUDA
FEATURES
"sqlite3" DLIB_LINK_WITH_SQLITE3
"fftw3" DLIB_USE_FFTW
"cuda" DLIB_USE_CUDA
)
vcpkg_configure_cmake(

38
ports/dlib/vcpkg.json Normal file
View File

@ -0,0 +1,38 @@
{
"name": "dlib",
"version": "19.21",
"port-version": 5,
"description": "Modern C++ toolkit containing machine learning algorithms and tools for creating complex software in C++",
"homepage": "https://github.com/davisking/dlib",
"dependencies": [
"blas",
"lapack",
"libjpeg-turbo",
"libpng"
],
"default-features": [
"fftw3",
"sqlite3"
],
"features": {
"cuda": {
"description": "CUDA support for dlib",
"dependencies": [
"cuda",
"cudnn"
]
},
"fftw3": {
"description": "fftw3 support for dlib",
"dependencies": [
"fftw3"
]
},
"sqlite3": {
"description": "sqlite3 support for dlib",
"dependencies": [
"sqlite3"
]
}
}
}

View File

@ -1,9 +0,0 @@
Source: dmlc
Version: 2019-08-12
Port-Version: 5
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.
Supports: !uwp
Feature: openmp
Description: Build with openmp

View File

@ -11,7 +11,8 @@ vcpkg_from_github(
)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
openmp ENABLE_OPENMP
FEATURES
openmp ENABLE_OPENMP
)
if(VCPKG_CRT_LINKAGE STREQUAL dynamic)
@ -36,4 +37,4 @@ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/dmlc)
# Handle copyright
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)

13
ports/dmlc/vcpkg.json Normal file
View File

@ -0,0 +1,13 @@
{
"name": "dmlc",
"version-date": "2019-08-12",
"port-version": 6,
"description": "DMLC-Core is the backbone library to support all DMLC projects, offers the bricks to build efficient and scalable distributed machine learning libraries.",
"homepage": "https://github.com/dmlc/dmlc-core",
"supports": "!uwp",
"features": {
"openmp": {
"description": "Build with openmp"
}
}
}

View File

@ -1,5 +1,5 @@
{
"name": "vcpkg-cmake",
"version-date": "2021-06-25",
"port-version": 4
"port-version": 5
}

View File

@ -17,6 +17,8 @@ vcpkg_cmake_configure(
<configure-setting>...]
[OPTIONS_DEBUG
<configure-setting>...]
[MAYBE_UNUSED_VARIABLES
<variable-name>...]
)
```
@ -55,6 +57,11 @@ By default, this function adds flags to `CMAKE_C_FLAGS` and `CMAKE_CXX_FLAGS`
which set the default character set to utf-8 for MSVC.
If the library sets its own code page, pass the `NO_CHARSET_FLAG` option.
This function makes certain that all options passed in are used by the
underlying CMake build system. If there are options that might be unused,
perhaps on certain platforms, pass those variable names to
`MAYBE_UNUSED_VARIABLES`.
`LOGFILE_BASE` is used to set the base of the logfile names;
by default, this is `config`, and thus the logfiles end up being something like
`config-x86-windows-dbg.log`. You can set it to anything you like;
@ -88,7 +95,7 @@ function(vcpkg_cmake_configure)
cmake_parse_arguments(PARSE_ARGV 0 "arg"
"PREFER_NINJA;DISABLE_PARALLEL_CONFIGURE;WINDOWS_USE_MSBUILD;NO_CHARSET_FLAG"
"SOURCE_PATH;GENERATOR;LOGFILE_BASE"
"OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE"
"OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE;MAYBE_UNUSED_VARIABLES"
)
if(DEFINED CACHE{Z_VCPKG_CMAKE_GENERATOR})
@ -102,9 +109,19 @@ function(vcpkg_cmake_configure)
message(FATAL_ERROR "SOURCE_PATH must be set")
endif()
if(NOT DEFINED arg_LOGFILE_BASE)
set(arg_LOGFILE_BASE "config")
set(arg_LOGFILE_BASE "config-${TARGET_TRIPLET}")
endif()
set(manually_specified_variables "")
foreach(option IN LISTS arg_OPTIONS arg_OPTIONS_RELEASE arg_OPTIONS_DEBUG)
if(option MATCHES "^-D([^:=]*)[:=]")
list(APPEND manually_specified_variables "${CMAKE_MATCH_1}")
endif()
endforeach()
list(REMOVE_DUPLICATES manually_specified_variables)
list(REMOVE_ITEM manually_specified_variables ${arg_MAYBE_UNUSED_VARIABLES})
debug_message("manually specified variables: ${manually_specified_variables}")
if(CMAKE_HOST_WIN32)
if(DEFINED ENV{PROCESSOR_ARCHITEW6432})
set(host_architecture "$ENV{PROCESSOR_ARCHITEW6432}")
@ -364,8 +381,11 @@ function(vcpkg_cmake_configure)
vcpkg_execute_required_process(
COMMAND ninja -v
WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/vcpkg-parallel-configure"
LOGNAME "${arg_LOGFILE_BASE}-${TARGET_TRIPLET}"
LOGNAME "${arg_LOGFILE_BASE}"
)
list(APPEND config_logs
"${CURRENT_BUILDTREES_DIR}/${arg_LOGFILE_BASE}-out.log"
"${CURRENT_BUILDTREES_DIR}/${arg_LOGFILE_BASE}-err.log")
else()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
message(STATUS "Configuring ${TARGET_TRIPLET}-dbg")
@ -379,8 +399,11 @@ function(vcpkg_cmake_configure)
"-DCMAKE_BUILD_TYPE=Debug"
"-DCMAKE_INSTALL_PREFIX=${CURRENT_PACKAGES_DIR}/debug"
WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg"
LOGNAME "${arg_LOGFILE_BASE}-${TARGET_TRIPLET}-dbg"
LOGNAME "${arg_LOGFILE_BASE}-dbg"
)
list(APPEND config_logs
"${CURRENT_BUILDTREES_DIR}/${arg_LOGFILE_BASE}-dbg-out.log"
"${CURRENT_BUILDTREES_DIR}/${arg_LOGFILE_BASE}-dbg-err.log")
endif()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
@ -397,8 +420,43 @@ function(vcpkg_cmake_configure)
WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel"
LOGNAME "${arg_LOGFILE_BASE}-rel"
)
list(APPEND config_logs
"${CURRENT_BUILDTREES_DIR}/${arg_LOGFILE_BASE}-rel-out.log"
"${CURRENT_BUILDTREES_DIR}/${arg_LOGFILE_BASE}-rel-err.log")
endif()
endif()
set(all_unused_variables)
foreach(config_log IN LISTS config_logs)
if(NOT EXISTS "${config_log}")
continue()
endif()
file(READ "${config_log}" log_contents)
debug_message("Reading configure log ${config_log}...")
if(NOT log_contents MATCHES "Manually-specified variables were not used by the project:\n\n(( [^\n]*\n)*)")
continue()
endif()
string(STRIP "${CMAKE_MATCH_1}" unused_variables) # remove leading ` ` and trailing `\n`
string(REPLACE "\n " ";" unused_variables "${unused_variables}")
debug_message("unused variables: ${unused_variables}")
foreach(unused_variable IN LISTS unused_variables)
if(unused_variable IN_LIST manually_specified_variables)
debug_message("manually specified unused variable: ${unused_variable}")
list(APPEND all_unused_variables "${unused_variable}")
else()
debug_message("unused variable (not manually specified): ${unused_variable}")
endif()
endforeach()
endforeach()
if(DEFINED all_unused_variables)
list(REMOVE_DUPLICATES all_unused_variables)
list(JOIN all_unused_variables "\n " all_unused_variables)
message(WARNING "The following variables are not used in CMakeLists.txt:
${all_unused_variables}
Please recheck them and remove the unnecessary options from the `vcpkg_cmake_configure` call.
If these options should still be passed for whatever reason, please use the `MAYBE_UNUSED_VARIABLES` argument.")
endif()
set(Z_VCPKG_CMAKE_GENERATOR "${generator}" CACHE INTERNAL "The generator which was used to configure CMake.")
endfunction()

View File

@ -153,7 +153,7 @@ macro(z_vcpkg_function_arguments OUT_VAR)
message(FATAL_ERROR "z_vcpkg_function_arguments: invalid arguments (${ARGV})")
endif()
set("${OUT_VAR}")
set("${OUT_VAR}" "")
# this allows us to get the value of the enclosing function's ARGC
set(z_vcpkg_function_arguments_ARGC_NAME "ARGC")
@ -164,8 +164,11 @@ macro(z_vcpkg_function_arguments OUT_VAR)
if(NOT z_vcpkg_function_arguments_LAST_ARG LESS z_vcpkg_function_arguments_FIRST_ARG)
foreach(z_vcpkg_function_arguments_N RANGE "${z_vcpkg_function_arguments_FIRST_ARG}" "${z_vcpkg_function_arguments_LAST_ARG}")
string(REPLACE ";" "\\;" z_vcpkg_function_arguments_ESCAPED_ARG "${ARGV${z_vcpkg_function_arguments_N}}")
list(APPEND "${OUT_VAR}" "${z_vcpkg_function_arguments_ESCAPED_ARG}")
# adds an extra `;` on the first time through
set("${OUT_VAR}" "${${OUT_VAR}};${z_vcpkg_function_arguments_ESCAPED_ARG}")
endforeach()
# remove leading `;`
string(SUBSTRING "${${OUT_VAR}}" 1 -1 "${OUT_VAR}")
endif()
endmacro()

View File

@ -15,26 +15,33 @@ vcpkg_build_ninja(
Only build the specified targets.
#]===]
function(z_vcpkg_build_ninja_build config targets)
message(STATUS "Building (${config})...")
vcpkg_execute_build_process(
COMMAND "${NINJA}" -C "${CURRENT_BUILDTREES_DIR}/${config}" ${targets}
WORKING_DIRECTORY "${SOURCE_PATH}"
LOGNAME "build-${config}"
)
endfunction()
function(vcpkg_build_ninja)
# parse parameters such that semicolons in options arguments to COMMAND don't get erased
cmake_parse_arguments(PARSE_ARGV 0 _vbn "" "" "TARGETS")
cmake_parse_arguments(PARSE_ARGV 0 arg "" "" "TARGETS")
if(DEFINED arg_UNPARSED_ARGUMENTS)
message(WARNING "${CMAKE_CURRENT_FUNCTION} was passed extra arguments: ${arg_UNPARSED_ARGUMENTS}")
endif()
if(NOT DEFINED arg_TARGETS)
set(arg_TARGETS "")
endif()
vcpkg_find_acquire_program(NINJA)
function(build CONFIG)
message(STATUS "Building (${CONFIG})...")
vcpkg_execute_build_process(
COMMAND "${NINJA}" -C "${CURRENT_BUILDTREES_DIR}/${CONFIG}" ${_vbn_TARGETS}
WORKING_DIRECTORY "${SOURCE_PATH}"
LOGNAME build-${CONFIG}
)
endfunction()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
build(${TARGET_TRIPLET}-dbg)
z_vcpkg_build_ninja_build("${TARGET_TRIPLET}-dbg" "${arg_TARGETS}")
endif()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
build(${TARGET_TRIPLET}-rel)
z_vcpkg_build_ninja_build("${TARGET_TRIPLET}-rel" "${arg_TARGETS}")
endif()
endfunction()

View File

@ -15,6 +15,7 @@ vcpkg_configure_cmake(
[OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...]
[OPTIONS_RELEASE <-DOPTIMIZE=1>...]
[OPTIONS_DEBUG <-DDEBUGGABLE=1>...]
[MAYBE_UNUSED_VARIABLES <option-name>...]
)
```
@ -53,6 +54,9 @@ Additional options passed to CMake during the Release configuration. These are i
### OPTIONS_DEBUG
Additional options passed to CMake during the Debug configuration. These are in addition to `OPTIONS`.
### MAYBE_UNUSED_VARIABLES
Any CMake variables which are explicitly passed in, but which may not be used on all platforms.
### LOGNAME
Name of the log to write the output of the configure call to.
@ -73,9 +77,9 @@ function(vcpkg_configure_cmake)
endif()
cmake_parse_arguments(PARSE_ARGV 0 arg
"PREFER_NINJA;DISABLE_PARALLEL_CONFIGURE;NO_CHARSET_FLAG"
"PREFER_NINJA;DISABLE_PARALLEL_CONFIGURE;NO_CHARSET_FLAG;Z_VCPKG_IGNORE_UNUSED_VARIABLES"
"SOURCE_PATH;GENERATOR;LOGNAME"
"OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE"
"OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE;MAYBE_UNUSED_VARIABLES"
)
if(NOT VCPKG_PLATFORM_TOOLSET)
@ -87,6 +91,18 @@ function(vcpkg_configure_cmake)
set(arg_LOGNAME config-${TARGET_TRIPLET})
endif()
set(manually_specified_variables "")
if(NOT arg_Z_VCPKG_IGNORE_UNUSED_VARIABLES)
foreach(option IN LISTS arg_OPTIONS arg_OPTIONS_RELEASE arg_OPTIONS_DEBUG)
if(option MATCHES "^-D([^:=]*)[:=]")
list(APPEND manually_specified_variables "${CMAKE_MATCH_1}")
endif()
endforeach()
list(REMOVE_DUPLICATES manually_specified_variables)
list(REMOVE_ITEM manually_specified_variables ${arg_MAYBE_UNUSED_VARIABLES})
debug_message("manually specified variables: ${manually_specified_variables}")
endif()
if(CMAKE_HOST_WIN32)
if(DEFINED ENV{PROCESSOR_ARCHITEW6432})
set(arg_HOST_ARCHITECTURE $ENV{PROCESSOR_ARCHITEW6432})
@ -326,6 +342,10 @@ function(vcpkg_configure_cmake)
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/vcpkg-parallel-configure
LOGNAME ${arg_LOGNAME}
)
list(APPEND config_logs
"${CURRENT_BUILDTREES_DIR}/${arg_LOGNAME}-out.log"
"${CURRENT_BUILDTREES_DIR}/${arg_LOGNAME}-err.log")
else()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
message(STATUS "Configuring ${TARGET_TRIPLET}-dbg")
@ -335,6 +355,9 @@ function(vcpkg_configure_cmake)
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg
LOGNAME ${arg_LOGNAME}-dbg
)
list(APPEND config_logs
"${CURRENT_BUILDTREES_DIR}/${arg_LOGNAME}-dbg-out.log"
"${CURRENT_BUILDTREES_DIR}/${arg_LOGNAME}-dbg-err.log")
endif()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
@ -345,8 +368,45 @@ function(vcpkg_configure_cmake)
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel
LOGNAME ${arg_LOGNAME}-rel
)
list(APPEND config_logs
"${CURRENT_BUILDTREES_DIR}/${arg_LOGNAME}-rel-out.log"
"${CURRENT_BUILDTREES_DIR}/${arg_LOGNAME}-rel-err.log")
endif()
endif()
# Check unused variables
set(all_unused_variables)
foreach(config_log IN LISTS config_logs)
if (NOT EXISTS "${config_log}")
continue()
endif()
file(READ "${config_log}" log_contents)
debug_message("Reading configure log ${config_log}...")
if(NOT log_contents MATCHES "Manually-specified variables were not used by the project:\n\n(( [^\n]*\n)*)")
continue()
endif()
string(STRIP "${CMAKE_MATCH_1}" unused_variables) # remove leading ` ` and trailing `\n`
string(REPLACE "\n " ";" unused_variables "${unused_variables}")
debug_message("unused variables: ${unused_variables}")
foreach(unused_variable IN LISTS unused_variables)
if(unused_variable IN_LIST manually_specified_variables)
debug_message("manually specified unused variable: ${unused_variable}")
list(APPEND all_unused_variables "${unused_variable}")
else()
debug_message("unused variable (not manually specified): ${unused_variable}")
endif()
endforeach()
endforeach()
if(DEFINED all_unused_variables)
list(REMOVE_DUPLICATES all_unused_variables)
list(JOIN all_unused_variables "\n " all_unused_variables)
message(WARNING "The following variables are not used in CMakeLists.txt:
${all_unused_variables}
Please recheck them and remove the unnecessary options from the `vcpkg_configure_cmake` call.
If these options should still be passed for whatever reason, please use the `MAYBE_UNUSED_VARIABLES` argument.")
endif()
set(Z_VCPKG_CMAKE_GENERATOR "${GENERATOR}" PARENT_SCOPE)
endfunction()

View File

@ -11,13 +11,10 @@ vcpkg_get_program_files_platform_bitness(<variable>)
```
#]===]
function(vcpkg_get_program_files_platform_bitness ret)
set(ret_temp $ENV{ProgramW6432})
if (NOT DEFINED ret_temp)
set(ret_temp $ENV{PROGRAMFILES})
function(vcpkg_get_program_files_platform_bitness out_var)
if(DEFINED ENV{ProgramW6432})
set("${out_var}" "$ENV{ProgramW6432}" PARENT_SCOPE)
else()
set("${out_var}" "$ENV{PROGRAMFILES}" PARENT_SCOPE)
endif()
set(${ret} ${ret_temp} PARENT_SCOPE)
endfunction()

View File

@ -9,8 +9,10 @@ vcpkg_get_windows_sdk(<variable>)
```
#]===]
function(vcpkg_get_windows_sdk ret)
set(WINDOWS_SDK $ENV{WindowsSDKVersion})
string(REPLACE "\\" "" WINDOWS_SDK "${WINDOWS_SDK}")
set(${ret} ${WINDOWS_SDK} PARENT_SCOPE)
function(vcpkg_get_windows_sdk out_var)
if("$ENV{WindowsSDKVersion}" MATCHES [[^([0-9.]*)\\?$]])
set("${out_var}" "${CMAKE_MATCH_1}" PARENT_SCOPE)
else()
message(FATAL_ERROR "Unexpected format for ENV{WindowsSDKVersion} ($ENV{WindowsSDKVersion})")
endif()
endfunction()

View File

@ -53,6 +53,7 @@ function(vcpkg_internal_get_cmake_vars)
OPTIONS_RELEASE "-DVCPKG_OUTPUT_FILE:PATH=${CURRENT_BUILDTREES_DIR}/cmake-vars-${TARGET_TRIPLET}-rel.cmake.log"
PREFER_NINJA
LOGNAME get-cmake-vars-${TARGET_TRIPLET}
Z_VCPKG_IGNORE_UNUSED_VARIABLES
)
set(_include_string)

View File

@ -0,0 +1,257 @@
#[===[.md:
# vcpkg_list
A replacement for CMake's `list()` function, which correctly handles elements
with internal semicolons (in other words, escaped semicolons).
Use `vcpkg_list()` instead of `list()` whenever possible.
```cmake
vcpkg_list(SET <out-var> [<element>...])
vcpkg_list(<COMMAND> <list-var> [<other-arguments>...])
```
In addition to all of the commands from `list()`, `vcpkg_list` adds
a `vcpkg_list(SET)` command.
This command takes its arguments, escapes them, and then concatenates
them into a list; this should be used instead of `set()` for setting any
list variable.
Otherwise, the `vcpkg_list()` function is the same as the built-in
`list()` function, with the following restrictions:
- `GET`, `REMOVE_ITEM`, and `REMOVE_AT` support only one index/value
- `POP_BACK` and `POP_FRONT` do not support getting the value into
another out variable. Use C++ style `GET` then `POP_(BACK|FRONT)`.
- `FILTER` and `TRANSFORM` are unsupported.
See the [CMake documentation for `list()`](https://cmake.org/cmake/help/latest/command/list.html)
for more information.
## Notes: Some Weirdnesses
The most major weirdness is due to `""` pulling double-duty as "list of zero elements",
and "list of one element, which is empty". `vcpkg_list` always uses the former understanding.
This can cause weird behavior, for example:
```cmake
set(lst "")
vcpkg_list(APPEND lst "" "")
# lst = ";"
```
This is because you're appending two elements to the empty list.
One very weird behavior that comes out of this would be:
```cmake
set(lst "")
vcpkg_list(APPEND lst "")
# lst = ""
```
since `""` is the empty list, we append the empty element and end up with a list
of one element, which is empty. This does not happen for non-empty lists;
for example:
```cmake
set(lst "a")
vcpkg_list(APPEND lst "")
# lst = "a;"
```
only the empty list has this odd behavior.
## Examples
### Creating a list
```cmake
vcpkg_list(SET foo_param)
if(DEFINED arg_FOO)
vcpkg_list(SET foo_param FOO "${arg_FOO}")
endif()
```
### Appending to a list
```cmake
set(OPTIONS -DFOO=BAR)
if(VCPKG_TARGET_IS_WINDOWS)
vcpkg_list(APPEND OPTIONS "-DOS=WINDOWS;FOO")
endif()
```
### Popping the end off a list
```cmake
if(NOT list STREQUAL "")
vcpkg_list(GET list end -1)
vcpkg_list(POP_BACK list)
endif()
```
#]===]
macro(z_vcpkg_list_escape_once_more lst)
string(REPLACE [[\;]] [[\\;]] "${lst}" "${${lst}}")
endmacro()
function(vcpkg_list)
# NOTE: as this function replaces an existing CMake command,
# it does not use cmake_parse_arguments
# vcpkg_list(<operation> <list_var> ...)
# A0 A1
if(ARGC LESS "2")
message(FATAL_ERROR "vcpkg_list requires at least two arguments.")
endif()
if(ARGV1 MATCHES "^ARGV([0-9]*)$|^ARG[CN]$|^CMAKE_CURRENT_FUNCTION")
message(FATAL_ERROR "vcpkg_list does not support the list_var being ${ARGV1}.
Please use a different variable name.")
endif()
set(list "${${ARGV1}}")
set(operation "${ARGV0}")
set(list_var "${ARGV1}")
if(operation STREQUAL "SET")
z_vcpkg_function_arguments(args 2)
set("${list_var}" "${args}" PARENT_SCOPE)
return()
endif()
# Normal reading functions
if(operation STREQUAL "LENGTH")
# vcpkg_list(LENGTH <list-var> <out-var>)
# A0 A1 A2
if(NOT ARGC EQUAL "3")
message(FATAL_ERROR "vcpkg_list sub-command ${operation} requires two arguments.")
endif()
list(LENGTH list out)
set("${ARGV2}" "${out}" PARENT_SCOPE)
return()
endif()
if(operation MATCHES "^(GET|JOIN|FIND)$")
# vcpkg_list(<operation> <list-var> <arg> <out-var>)
# A0 A1 A2 A3
if(NOT ARGC EQUAL "4")
message(FATAL_ERROR "vcpkg_list sub-command ${operation} requires three arguments.")
endif()
if(operation STREQUAL "GET")
list(LENGTH list length)
if(length EQUAL "0")
message(FATAL_ERROR "vcpkg_list GET given empty list")
elseif(ARGV2 GREATER_EQUAL length OR ARGV2 LESS "-${length}")
message(FATAL_ERROR "vcpkg_list index: ${ARGV2} is not in range")
endif()
endif()
list("${operation}" list "${ARGV2}" out)
set("${ARGV3}" "${out}" PARENT_SCOPE)
return()
endif()
if(operation STREQUAL "SUBLIST")
# vcpkg_list(SUBLIST <list-var> <begin> <length> <out-var>)
# A0 A1 A2 A3 A4
if(NOT ARGC EQUAL "5")
message(FATAL_ERROR "vcpkg_list sub-command SUBLIST requires four arguments.")
endif()
list(LENGTH list length)
if(ARGV2 LESS "0" OR (ARGV2 GREATER_EQUAL length AND NOT ARGV2 EQUAL "0"))
message(FATAL_ERROR "vcpkg_list begin index: ${ARGV2} is out of range")
endif()
z_vcpkg_list_escape_once_more(list)
list(SUBLIST list "${ARGV2}" "${ARGV3}" out)
set("${ARGV4}" "${out}" PARENT_SCOPE)
return()
endif()
# modification functions
if(operation MATCHES "^(APPEND|PREPEND)$")
# vcpkg_list(<operation> <list> [<element>...])
# A0 A1 A2...
# if ARGC <= 2, then we don't have to do anything
if(ARGC GREATER 2)
z_vcpkg_function_arguments(args 2)
if(list STREQUAL "")
set("${list_var}" "${args}" PARENT_SCOPE)
elseif(operation STREQUAL "APPEND")
set("${list_var}" "${list};${args}" PARENT_SCOPE)
else()
set("${list_var}" "${args};${list}" PARENT_SCOPE)
endif()
endif()
return()
endif()
if(operation STREQUAL "INSERT")
# vcpkg_list(INSERT <list> <index> [<element>...])
# A0 A1 A2 A3...
list(LENGTH list length)
if(ARGV2 LESS "-{$length}" OR ARGV2 GREATER length)
message(FATAL_ERROR "vcpkg_list index: ${ARGV2} out of range")
endif()
if(ARGC GREATER 3)
# list(LENGTH) is one of the few subcommands that's fine
list(LENGTH list length)
if(ARGV2 LESS "0")
math(EXPR ARGV2 "${length} + ${ARGV2}")
endif()
if(ARGV2 LESS "0" OR ARGV2 GREATER length)
message(FATAL_ERROR "list index: ${ARGV2} out of range (-${length}, ${length})")
endif()
z_vcpkg_function_arguments(args 3)
if(list STREQUAL "")
set("${list_var}" "${args}" PARENT_SCOPE)
elseif(ARGV2 EQUAL "0")
set("${list_var}" "${args};${list}" PARENT_SCOPE)
elseif(ARGV2 EQUAL length)
set("${list_var}" "${list};${args}" PARENT_SCOPE)
else()
vcpkg_list(SUBLIST list 0 "${ARGV2}" list_start)
vcpkg_list(SUBLIST list "${ARGV2}" -1 list_end)
set("${list_var}" "${list_start};${args};${list_end}" PARENT_SCOPE)
endif()
elseif(ARGC LESS 3)
message(FATAL_ERROR "vcpkg_list sub-command INSERT requires at least two arguments.")
endif()
return()
endif()
if(operation MATCHES "^(POP_BACK|POP_FRONT|REVERSE|REMOVE_DUPLICATES)$")
# vcpkg_list(<operation> <list>)
# A0 A1
if(NOT ARGC EQUAL 2)
message(FATAL_ERROR "vcpkg_list sub-command ${operation} requires one argument.")
endif()
z_vcpkg_list_escape_once_more(list)
list("${operation}" list)
set("${list_var}" "${list}" PARENT_SCOPE)
return()
endif()
if(operation MATCHES "^(REMOVE_AT|REMOVE_ITEM)$")
# vcpkg_list(<operation> <list> <index-or-item>)
# A0 A1 A2
if(NOT ARGC EQUAL 3)
message(FATAL_ERROR "vcpkg_list sub-command ${operation} requires two arguments.")
endif()
if(operation STREQUAL "REMOVE_AT")
list(LENGTH list length)
if(ARGV2 GREATER_EQUAL length OR ARGV2 LESS "-${length}")
message(FATAL_ERROR "vcpkg_list index: ${ARGV2} out of range")
endif()
endif()
z_vcpkg_list_escape_once_more(list)
string(REPLACE [[;]] [[\;]] ARGV2 "${ARGV2}")
list("${operation}" list "${ARGV2}")
set("${list_var}" "${list}" PARENT_SCOPE)
return()
endif()
message(FATAL_ERROR "vcpkg_list sub-command ${operation} is not yet implemented.")
endfunction()

View File

@ -14,7 +14,7 @@ The date-version to check against.
#]===]
function(vcpkg_minimum_required)
cmake_parse_arguments(PARSE_ARGV 0 _vcpkg "" "VERSION" "")
cmake_parse_arguments(PARSE_ARGV 0 arg "" "VERSION" "")
if (NOT DEFINED VCPKG_BASE_VERSION)
message(FATAL_ERROR
"Your vcpkg executable is outdated and is not compatible with the current CMake scripts. "
@ -22,27 +22,27 @@ function(vcpkg_minimum_required)
)
endif()
set(_vcpkg_date_regex "^[12][0-9][0-9][0-9]-[01][0-9]-[0-3][0-9]$")
if (NOT VCPKG_BASE_VERSION MATCHES "${_vcpkg_date_regex}")
set(vcpkg_date_regex "^[12][0-9][0-9][0-9]-[01][0-9]-[0-3][0-9]$")
if (NOT VCPKG_BASE_VERSION MATCHES "${vcpkg_date_regex}")
message(FATAL_ERROR
"vcpkg internal failure; \${VCPKG_BASE_VERSION} (${VCPKG_BASE_VERSION}) was not a valid date."
"vcpkg internal failure; VCPKG_BASE_VERSION (${VCPKG_BASE_VERSION}) was not a valid date."
)
endif()
if (NOT _vcpkg_VERSION MATCHES "${_vcpkg_date_regex}")
if (NOT arg_VERSION MATCHES "${vcpkg_date_regex}")
message(FATAL_ERROR
"VERSION parameter to vcpkg_minimum_required was not a valid date. "
"Comparing with vcpkg tool version ${_vcpkg_matched_base_version}"
"Comparing with vcpkg tool version ${VCPKG_BASE_VERSION}"
)
endif()
string(REPLACE "-" "." _VCPKG_BASE_VERSION_as_dotted "${VCPKG_BASE_VERSION}")
string(REPLACE "-" "." _vcpkg_VERSION_as_dotted "${_vcpkg_VERSION}")
string(REPLACE "-" "." VCPKG_BASE_VERSION_as_dotted "${VCPKG_BASE_VERSION}")
string(REPLACE "-" "." arg_VERSION_as_dotted "${arg_VERSION}")
if (_VCPKG_BASE_VERSION_as_dotted VERSION_LESS _vcpkg_VERSION_as_dotted)
if (VCPKG_BASE_VERSION_as_dotted VERSION_LESS vcpkg_VERSION_as_dotted)
message(FATAL_ERROR
"Your vcpkg executable is from ${VCPKG_BASE_VERSION} which is older than required by the caller "
"of vcpkg_minimum_required (${_vcpkg_VERSION}). "
"of vcpkg_minimum_required(VERSION ${arg_VERSION}). "
"Please re-acquire vcpkg by running bootstrap-vcpkg."
)
endif()

View File

@ -4,13 +4,12 @@
Replace a string in a file.
```cmake
vcpkg_replace_string(filename match_string replace_string)
vcpkg_replace_string(<filename> <match> <replace>)
```
#]===]
function(vcpkg_replace_string filename match_string replace_string)
file(READ ${filename} _contents)
string(REPLACE "${match_string}" "${replace_string}" _contents "${_contents}")
file(WRITE ${filename} "${_contents}")
function(vcpkg_replace_string filename match replace)
file(READ "${filename}" contents)
string(REPLACE "${match}" "${replace}" contents "${contents}")
file(WRITE "${filename}" "${contents}")
endfunction()

View File

@ -32,22 +32,32 @@ macro(z_vcpkg_function_arguments OUT_VAR)
set(z_vcpkg_function_arguments_FIRST_ARG 0)
elseif("${ARGC}" EQUAL 2)
set(z_vcpkg_function_arguments_FIRST_ARG "${ARGV1}")
if(NOT z_vcpkg_function_arguments_FIRST_ARG GREATER_EQUAL "0" AND NOT z_vcpkg_function_arguments_FIRST_ARG LESS "0")
message(FATAL_ERROR "z_vcpkg_function_arguments: index (${z_vcpkg_function_arguments_FIRST_ARG}) is not a number")
elseif(z_vcpkg_function_arguments_FIRST_ARG LESS "0" OR z_vcpkg_function_arguments_FIRST_ARG GREATER ARGC)
message(FATAL_ERROR "z_vcpkg_function_arguments: index (${z_vcpkg_function_arguments_FIRST_ARG}) out of range")
endif()
else()
# vcpkg bug
message(FATAL_ERROR "z_vcpkg_function_arguments: invalid arguments (${ARGV})")
endif()
set("${OUT_VAR}")
set("${OUT_VAR}" "")
# this allows us to get the value of the enclosing function's ARGC
set(z_vcpkg_function_arguments_ARGC_NAME "ARGC")
set(z_vcpkg_function_arguments_ARGC "${${z_vcpkg_function_arguments_ARGC_NAME}}")
math(EXPR z_vcpkg_function_arguments_LAST_ARG "${z_vcpkg_function_arguments_ARGC} - 1")
if(z_vcpkg_function_arguments_LAST_ARG GREATER_EQUAL z_vcpkg_function_arguments_FIRST_ARG)
# GREATER_EQUAL added in CMake 3.7
if(NOT z_vcpkg_function_arguments_LAST_ARG LESS z_vcpkg_function_arguments_FIRST_ARG)
foreach(z_vcpkg_function_arguments_N RANGE "${z_vcpkg_function_arguments_FIRST_ARG}" "${z_vcpkg_function_arguments_LAST_ARG}")
string(REPLACE ";" "\\;" z_vcpkg_function_arguments_ESCAPED_ARG "${ARGV${z_vcpkg_function_arguments_N}}")
list(APPEND "${OUT_VAR}" "${z_vcpkg_function_arguments_ESCAPED_ARG}")
# adds an extra ";" on the front
set("${OUT_VAR}" "${${OUT_VAR}};${z_vcpkg_function_arguments_ESCAPED_ARG}")
endforeach()
# and then removes that extra semicolon
string(SUBSTRING "${${OUT_VAR}}" 1 -1 "${OUT_VAR}")
endif()
endmacro()

View File

@ -130,6 +130,7 @@ if(CMD MATCHES "^BUILD$")
include("${SCRIPTS}/cmake/vcpkg_install_nmake.cmake")
include("${SCRIPTS}/cmake/vcpkg_install_qmake.cmake")
include("${SCRIPTS}/cmake/vcpkg_internal_get_cmake_vars.cmake")
include("${SCRIPTS}/cmake/vcpkg_list.cmake")
include("${SCRIPTS}/cmake/vcpkg_replace_string.cmake")
include("${SCRIPTS}/cmake/vcpkg_test_cmake.cmake")

View File

@ -0,0 +1,73 @@
function(set_fatal_error)
if(ARGC EQUAL 0)
set(Z_VCPKG_UNIT_TEST_HAS_FATAL_ERROR "OFF" CACHE BOOL "" FORCE)
else()
set(Z_VCPKG_UNIT_TEST_HAS_FATAL_ERROR "ON" CACHE BOOL "" FORCE)
set(Z_VCPKG_UNIT_TEST_FATAL_ERROR "${ARGV0}" CACHE STRING "" FORCE)
endif()
endfunction()
function(set_has_error)
set(Z_VCPKG_UNIT_TEST_HAS_ERROR ON CACHE BOOL "" FORCE)
endfunction()
macro(message level msg)
if("${level}" STREQUAL "FATAL_ERROR")
set_fatal_error("${msg}")
return()
else()
_message("${level}" "${msg}") # note: this results in incorrect printing, but that's fine
# message(STATUS "\${asdf}") will result in
# message(STATUS "${asdf}"), since that's how macro arguments work.
endif()
endmacro()
set(Z_VCPKG_UNIT_TEST_HAS_ERROR OFF CACHE BOOL "" FORCE)
set_fatal_error()
function(unit_test_check_variable_equal utcve_test utcve_variable utcve_value)
cmake_language(EVAL CODE "${utcve_test}")
if(Z_VCPKG_UNIT_TEST_HAS_FATAL_ERROR)
set_fatal_error()
set_has_error()
message(STATUS "${utcve_test} had an unexpected FATAL_ERROR;
expected: \"${utcve_value}\"")
message(STATUS "FATAL_ERROR: ${Z_VCPKG_UNIT_TEST_FATAL_ERROR}")
return()
endif()
if(NOT DEFINED "${utcve_variable}")
message(STATUS "${utcve_test} failed to set ${utcve_variable};
expected: \"${utcve_value}\"")
set_has_error()
return()
endif()
if(NOT "${${utcve_variable}}" STREQUAL "${utcve_value}")
message(STATUS "${utcve_test} resulted in the wrong value for ${utcve_variable};
expected: \"${utcve_value}\"
actual : \"${${utcve_variable}}\"")
set_has_error()
return()
endif()
endfunction()
function(unit_test_ensure_fatal_error utcve_test)
cmake_language(EVAL CODE "${utcve_test}")
if(NOT Z_VCPKG_UNIT_TEST_HAS_FATAL_ERROR)
set_has_error()
message(STATUS "${utcve_test} was expected to be a FATAL_ERROR.")
endif()
set_fatal_error()
endfunction()
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
if("list" IN_LIST FEATURES)
include("${CMAKE_CURRENT_LIST_DIR}/test-vcpkg_list.cmake")
endif()
if("function-arguments" IN_LIST FEATURES)
include("${CMAKE_CURRENT_LIST_DIR}/test-z_vcpkg_function_arguments.cmake")
endif()
if(Z_VCPKG_UNIT_TEST_HAS_ERROR)
_message(FATAL_ERROR "At least one test failed")
endif()

View File

@ -0,0 +1,813 @@
# vcpkg_list(SET <list> <elements>...)
unit_test_check_variable_equal(
[[vcpkg_list(SET lst)]]
lst ""
)
unit_test_check_variable_equal(
[[vcpkg_list(SET lst "")]]
lst ""
)
unit_test_check_variable_equal(
[[vcpkg_list(SET lst "" "")]]
lst ";"
)
unit_test_check_variable_equal(
[[vcpkg_list(SET lst a)]]
lst "a"
)
unit_test_check_variable_equal(
[[vcpkg_list(SET lst a b)]]
lst "a;b"
)
unit_test_check_variable_equal(
[[vcpkg_list(SET lst "a;b")]]
lst [[a\;b]]
)
unit_test_check_variable_equal(
[=[vcpkg_list(SET lst "a;b" "c" [[d\;e]])]=]
lst [[a\;b;c;d\\;e]]
)
# vcpkg_list(LENGTH <list> <out-var>)
set(lst [[]])
unit_test_check_variable_equal(
[[vcpkg_list(LENGTH lst out)]]
out 0
)
set(lst [[;]])
unit_test_check_variable_equal(
[[vcpkg_list(LENGTH lst out)]]
out 2
)
set(lst [[a]])
unit_test_check_variable_equal(
[[vcpkg_list(LENGTH lst out)]]
out 1
)
set(lst [[a;b]])
unit_test_check_variable_equal(
[[vcpkg_list(LENGTH lst out)]]
out 2
)
set(lst [[a\\;b]])
unit_test_check_variable_equal(
[[vcpkg_list(LENGTH lst out)]]
out 1
)
set(lst [[a\;b;c\\;d]])
unit_test_check_variable_equal(
[[vcpkg_list(LENGTH lst out)]]
out 2
)
# vcpkg_list(GET <list> <element-index> <out-var>)
set(lst "")
unit_test_ensure_fatal_error([[vcpkg_list(GET lst 0 out)]])
set(lst "a")
unit_test_check_variable_equal(
[[vcpkg_list(GET lst 0 out)]]
out "a"
)
unit_test_check_variable_equal(
[[vcpkg_list(GET lst -1 out)]]
out "a"
)
unit_test_ensure_fatal_error([[vcpkg_list(GET lst 2 out)]])
unit_test_ensure_fatal_error([[vcpkg_list(GET lst -2 out)]])
set(lst ";b")
unit_test_check_variable_equal(
[[vcpkg_list(GET lst 0 out)]]
out ""
)
unit_test_check_variable_equal(
[[vcpkg_list(GET lst -1 out)]]
out "b"
)
set(lst "a;b")
unit_test_check_variable_equal(
[[vcpkg_list(GET lst 0 out)]]
out "a"
)
unit_test_check_variable_equal(
[[vcpkg_list(GET lst -1 out)]]
out "b"
)
set(lst [[a\;b;c]])
unit_test_check_variable_equal(
[[vcpkg_list(GET lst 0 out)]]
out "a;b"
)
unit_test_check_variable_equal(
[[vcpkg_list(GET lst -1 out)]]
out "c"
)
set(lst [[a;b\;c;d\\;e]])
unit_test_check_variable_equal(
[[vcpkg_list(GET lst 1 out)]]
out "b;c"
)
unit_test_check_variable_equal(
[[vcpkg_list(GET lst -1 out)]]
out [[d\;e]]
)
# vcpkg_list(JOIN <list> <glue> <out-var>)
set(lst "")
unit_test_check_variable_equal(
[[vcpkg_list(JOIN lst "-" out)]]
out ""
)
set(lst "a")
unit_test_check_variable_equal(
[[vcpkg_list(JOIN lst "-" out)]]
out "a"
)
set(lst ";")
unit_test_check_variable_equal(
[[vcpkg_list(JOIN lst "-" out)]]
out "-"
)
set(lst [[a;b]])
unit_test_check_variable_equal(
[[vcpkg_list(JOIN lst "-" out)]]
out [[a-b]]
)
unit_test_check_variable_equal(
[[vcpkg_list(JOIN lst "+" out)]]
out [[a+b]]
)
set(lst [[a;b\;c\\;d]])
unit_test_check_variable_equal(
[[vcpkg_list(JOIN lst "-" out)]]
out [[a-b;c\;d]]
)
# vcpkg_list(SUBLIST <list> <begin> <length> <out-var>)
set(lst "")
unit_test_check_variable_equal(
[[vcpkg_list(SUBLIST lst 0 0 out)]]
out ""
)
unit_test_check_variable_equal(
[[vcpkg_list(SUBLIST lst 0 1 out)]]
out ""
)
unit_test_ensure_fatal_error([[vcpkg_list(SUBLIST lst 1 0 out)]])
set(lst "a")
unit_test_check_variable_equal(
[[vcpkg_list(SUBLIST lst 0 0 out)]]
out ""
)
unit_test_check_variable_equal(
[[vcpkg_list(SUBLIST lst 0 1 out)]]
out "a"
)
unit_test_ensure_fatal_error([[vcpkg_list(SUBLIST lst 2 0 out)]])
unit_test_ensure_fatal_error([[vcpkg_list(SUBLIST lst 2 1 out)]])
set(lst ";;")
unit_test_check_variable_equal(
[[vcpkg_list(SUBLIST lst 0 0 out)]]
out ""
)
unit_test_check_variable_equal(
[[vcpkg_list(SUBLIST lst 0 1 out)]]
out ""
)
unit_test_check_variable_equal(
[[vcpkg_list(SUBLIST lst 0 2 out)]]
out ";"
)
unit_test_check_variable_equal(
[[vcpkg_list(SUBLIST lst 0 3 out)]]
out ";;"
)
set(lst "a;b;c;d")
unit_test_check_variable_equal(
[[vcpkg_list(SUBLIST lst 1 2 out)]]
out "b;c"
)
set(lst [[a\;b;c\;d;e]])
unit_test_check_variable_equal(
[[vcpkg_list(SUBLIST lst 1 2 out)]]
out [[c\;d;e]]
)
set(lst [[a\;b;c\\;d;e;f;g;h]])
unit_test_check_variable_equal(
[[vcpkg_list(SUBLIST lst 1 -1 out)]]
out [[c\\;d;e;f;g;h]]
)
# vcpkg_list(FIND <list> <value> <out-var>)
set(lst "")
unit_test_check_variable_equal(
[[vcpkg_list(FIND lst "a" out)]]
out -1
)
set(lst "b")
unit_test_check_variable_equal(
[[vcpkg_list(FIND lst "a" out)]]
out -1
)
set(lst "a;b")
unit_test_check_variable_equal(
[[vcpkg_list(FIND lst "a" out)]]
out 0
)
unit_test_check_variable_equal(
[[vcpkg_list(FIND lst b out)]]
out 1
)
set(lst ";b")
unit_test_check_variable_equal(
[[vcpkg_list(FIND lst "" out)]]
out 0
)
unit_test_check_variable_equal(
[[vcpkg_list(FIND lst b out)]]
out 1
)
set(lst [[a\;b;c]])
unit_test_check_variable_equal(
[[vcpkg_list(FIND lst "a;b" out)]]
out 0
)
unit_test_check_variable_equal(
[[vcpkg_list(FIND lst c out)]]
out 1
)
unit_test_check_variable_equal(
[[vcpkg_list(FIND lst a out)]]
out -1
)
set(lst [[a\\;b;c]])
unit_test_check_variable_equal(
[=[vcpkg_list(FIND lst [[a\;b]] out)]=]
out 0
)
# vcpkg_list(APPEND <list> [<element>...])
set(lst "")
unit_test_check_variable_equal(
[[vcpkg_list(APPEND lst)]]
lst [[]]
)
unit_test_check_variable_equal(
[[vcpkg_list(APPEND lst "")]]
lst ""
)
unit_test_check_variable_equal(
[[vcpkg_list(APPEND lst "" "")]]
lst ";"
)
unit_test_check_variable_equal(
[[vcpkg_list(APPEND lst a)]]
lst "a"
)
set(lst ";")
unit_test_check_variable_equal(
[[vcpkg_list(APPEND lst)]]
lst ";"
)
unit_test_check_variable_equal(
[[vcpkg_list(APPEND lst "")]]
lst ";;"
)
unit_test_check_variable_equal(
[[vcpkg_list(APPEND lst b)]]
lst ";;b"
)
unit_test_check_variable_equal(
[[vcpkg_list(APPEND lst "b;c" d)]]
lst [[;;b\;c;d]]
)
set(lst "a")
unit_test_check_variable_equal(
[[vcpkg_list(APPEND lst)]]
lst "a"
)
unit_test_check_variable_equal(
[[vcpkg_list(APPEND lst "")]]
lst "a;"
)
unit_test_check_variable_equal(
[[vcpkg_list(APPEND lst b)]]
lst "a;b"
)
unit_test_check_variable_equal(
[[vcpkg_list(APPEND lst "b;c" d)]]
lst [[a;b\;c;d]]
)
set(lst "a;b")
unit_test_check_variable_equal(
[[vcpkg_list(APPEND lst)]]
lst "a;b"
)
unit_test_check_variable_equal(
[[vcpkg_list(APPEND lst "")]]
lst "a;b;"
)
unit_test_check_variable_equal(
[[vcpkg_list(APPEND lst c)]]
lst "a;b;c"
)
unit_test_check_variable_equal(
[[vcpkg_list(APPEND lst "c;d" e)]]
lst [[a;b;c\;d;e]]
)
unit_test_check_variable_equal(
[=[vcpkg_list(APPEND lst [[c\;d]])]=]
lst [[a;b;c\\;d]]
)
# vcpkg_list(PREPEND <list> [<element>...])
set(lst "")
unit_test_check_variable_equal(
[[vcpkg_list(PREPEND lst)]]
lst ""
)
unit_test_check_variable_equal(
[[vcpkg_list(PREPEND lst "")]]
lst ""
)
unit_test_check_variable_equal(
[[vcpkg_list(PREPEND lst "" "")]]
lst ";"
)
unit_test_check_variable_equal(
[[vcpkg_list(PREPEND lst a)]]
lst "a"
)
set(lst ";")
unit_test_check_variable_equal(
[[vcpkg_list(PREPEND lst)]]
lst ";"
)
unit_test_check_variable_equal(
[[vcpkg_list(PREPEND lst "")]]
lst ";;"
)
unit_test_check_variable_equal(
[[vcpkg_list(PREPEND lst b)]]
lst "b;;"
)
unit_test_check_variable_equal(
[[vcpkg_list(PREPEND lst "b;c" d)]]
lst [[b\;c;d;;]]
)
set(lst "a")
unit_test_check_variable_equal(
[[vcpkg_list(PREPEND lst)]]
lst "a"
)
unit_test_check_variable_equal(
[[vcpkg_list(PREPEND lst "")]]
lst ";a"
)
unit_test_check_variable_equal(
[[vcpkg_list(PREPEND lst b)]]
lst "b;a"
)
unit_test_check_variable_equal(
[[vcpkg_list(PREPEND lst "b;c" d)]]
lst [[b\;c;d;a]]
)
set(lst "a;b")
unit_test_check_variable_equal(
[[vcpkg_list(PREPEND lst)]]
lst "a;b"
)
unit_test_check_variable_equal(
[[vcpkg_list(PREPEND lst "")]]
lst ";a;b"
)
unit_test_check_variable_equal(
[[vcpkg_list(PREPEND lst c)]]
lst "c;a;b"
)
unit_test_check_variable_equal(
[[vcpkg_list(PREPEND lst "c;d" e)]]
lst [[c\;d;e;a;b]]
)
unit_test_check_variable_equal(
[=[vcpkg_list(PREPEND lst [[c\;d]])]=]
lst [[c\\;d;a;b]]
)
# list(INSERT <list> <index> [<element>...])
set(lst "")
unit_test_check_variable_equal(
[[vcpkg_list(INSERT lst 0)]]
lst ""
)
unit_test_check_variable_equal(
[[vcpkg_list(INSERT lst 0 "")]]
lst ""
)
unit_test_check_variable_equal(
[[vcpkg_list(INSERT lst 0 "" "")]]
lst ";"
)
unit_test_check_variable_equal(
[[vcpkg_list(INSERT lst 0 "a")]]
lst "a"
)
unit_test_ensure_fatal_error([[vcpkg_list(INSERT lst 1 "")]])
unit_test_ensure_fatal_error([[vcpkg_list(INSERT lst -1 "")]])
set(lst ";")
unit_test_check_variable_equal(
[[vcpkg_list(INSERT lst 0)]]
lst ";"
)
unit_test_check_variable_equal(
[[vcpkg_list(INSERT lst 1)]]
lst ";"
)
unit_test_check_variable_equal(
[[vcpkg_list(INSERT lst 1 "")]]
lst ";;"
)
unit_test_check_variable_equal(
[[vcpkg_list(INSERT lst 0 b)]]
lst "b;;"
)
unit_test_check_variable_equal(
[[vcpkg_list(INSERT lst 1 b)]]
lst ";b;"
)
unit_test_check_variable_equal(
[[vcpkg_list(INSERT lst 2 b)]]
lst ";;b"
)
unit_test_check_variable_equal(
[[vcpkg_list(INSERT lst -1 "b;c" d)]]
lst [[;b\;c;d;]]
)
unit_test_check_variable_equal(
[[vcpkg_list(INSERT lst -2 "b;c" d)]]
lst [[b\;c;d;;]]
)
unit_test_ensure_fatal_error([[vcpkg_list(INSERT lst 3 "")]])
unit_test_ensure_fatal_error([[vcpkg_list(INSERT lst -3 "")]])
set(lst "a;b")
unit_test_check_variable_equal(
[[vcpkg_list(INSERT lst -1 c)]]
lst "a;c;b"
)
unit_test_check_variable_equal(
[[vcpkg_list(INSERT lst 1 c)]]
lst "a;c;b"
)
unit_test_check_variable_equal(
[[vcpkg_list(INSERT lst 2 c)]]
lst "a;b;c"
)
unit_test_check_variable_equal(
[[vcpkg_list(INSERT lst -2 c)]]
lst "c;a;b"
)
unit_test_check_variable_equal(
[[vcpkg_list(INSERT lst 1 "c;d")]]
lst [[a;c\;d;b]]
)
unit_test_check_variable_equal(
[=[vcpkg_list(INSERT lst 1 [[c\;d]] e)]=]
lst [[a;c\\;d;e;b]]
)
# vcpkg_list(POP_BACK <list>)
set(lst "")
unit_test_check_variable_equal(
[[vcpkg_list(POP_BACK lst)]]
lst ""
)
set(lst ";")
unit_test_check_variable_equal(
[[vcpkg_list(POP_BACK lst)]]
lst ""
)
set(lst "a;b")
unit_test_check_variable_equal(
[[vcpkg_list(POP_BACK lst)]]
lst "a"
)
set(lst "a;;b")
unit_test_check_variable_equal(
[[vcpkg_list(POP_BACK lst)]]
lst "a;"
)
set(lst [[a\;b]])
unit_test_check_variable_equal(
[[vcpkg_list(POP_BACK lst)]]
lst ""
)
set(lst [[c;a\;b;c]])
unit_test_check_variable_equal(
[[vcpkg_list(POP_BACK lst)]]
lst [[c;a\;b]]
)
# vcpkg_list(POP_FRONT <list>)
set(lst "")
unit_test_check_variable_equal(
[[vcpkg_list(POP_BACK lst)]]
lst ""
)
set(lst ";")
unit_test_check_variable_equal(
[[vcpkg_list(POP_FRONT lst)]]
lst ""
)
set(lst "a;b")
unit_test_check_variable_equal(
[[vcpkg_list(POP_FRONT lst)]]
lst "b"
)
set(lst "a;;b")
unit_test_check_variable_equal(
[[vcpkg_list(POP_FRONT lst)]]
lst ";b"
)
set(lst [[a\;b]])
unit_test_check_variable_equal(
[[vcpkg_list(POP_FRONT lst)]]
lst ""
)
set(lst [[c;a\;b;c]])
unit_test_check_variable_equal(
[[vcpkg_list(POP_FRONT lst)]]
lst [[a\;b;c]]
)
# vcpkg_list(REMOVE_DUPLICATES <list>)
set(lst ";")
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_DUPLICATES lst)]]
lst ""
)
set(lst "a;b")
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_DUPLICATES lst)]]
lst "a;b"
)
set(lst "a;a;b")
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_DUPLICATES lst)]]
lst "a;b"
)
set(lst "a;b;a")
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_DUPLICATES lst)]]
lst "a;b"
)
set(lst "c;a;b;a;c")
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_DUPLICATES lst)]]
lst "c;a;b"
)
set(lst "a;;b")
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_DUPLICATES lst)]]
lst "a;;b"
)
set(lst [[a\;b;a\;b]])
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_DUPLICATES lst)]]
lst [[a\;b]]
)
set(lst [[c;a\;b;c]])
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_DUPLICATES lst)]]
lst [[c;a\;b]]
)
# vcpkg_list(REVERSE <list>)
set(lst "")
unit_test_check_variable_equal(
[[vcpkg_list(REVERSE lst)]]
lst ""
)
set(lst ";")
unit_test_check_variable_equal(
[[vcpkg_list(REVERSE lst)]]
lst ";"
)
set(lst "a;b")
unit_test_check_variable_equal(
[[vcpkg_list(REVERSE lst)]]
lst "b;a"
)
set(lst "a;b;c;d;e;f;g")
unit_test_check_variable_equal(
[[vcpkg_list(REVERSE lst)]]
lst "g;f;e;d;c;b;a"
)
set(lst [[a\;b;a\;b\\;c]])
unit_test_check_variable_equal(
[[vcpkg_list(REVERSE lst)]]
lst [[a\;b\\;c;a\;b]]
)
set(lst [[c;a\;b]])
unit_test_check_variable_equal(
[[vcpkg_list(REVERSE lst)]]
lst [[a\;b;c]]
)
# vcpkg_list(REMOVE_ITEM <list> <value>)
set(lst "")
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_ITEM lst "a")]]
lst ""
)
set(lst ";")
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_ITEM lst "")]]
lst ""
)
set(lst "a;b")
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_ITEM lst a)]]
lst "b"
)
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_ITEM lst b)]]
lst "a"
)
set(lst "a;a;b")
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_ITEM lst a)]]
lst "b"
)
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_ITEM lst b)]]
lst "a;a"
)
set(lst "a;b;c;a;d")
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_ITEM lst b)]]
lst "a;c;a;d"
)
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_ITEM lst a)]]
lst "b;c;d"
)
set(lst "a;;b")
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_ITEM lst "")]]
lst "a;b"
)
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_ITEM lst a)]]
lst ";b"
)
set(lst [[e;a\;b;c\;d]])
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_ITEM lst "a;b")]]
lst [[e;c\;d]]
)
set(lst [[c;a\;b;c]])
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_ITEM lst "c")]]
lst [[a\;b]]
)
set(lst [[c;a\\;b;c]])
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_ITEM lst "a\\;b")]]
lst [[c;c]]
)
# vcpkg_list(REMOVE_AT <list> <index>)
set(lst "")
unit_test_ensure_fatal_error([[vcpkg_list(REMOVE_AT lst 0)]])
set(lst ";")
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_AT lst 0)]]
lst ""
)
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_AT lst 1)]]
lst ""
)
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_AT lst -1)]]
lst ""
)
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_AT lst -2)]]
lst ""
)
unit_test_ensure_fatal_error([[vcpkg_list(REMOVE_AT lst 2)]])
unit_test_ensure_fatal_error([[vcpkg_list(REMOVE_AT lst -3)]])
set(lst "a;b")
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_AT lst 0)]]
lst "b"
)
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_AT lst 1)]]
lst "a"
)
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_AT lst -1)]]
lst "a"
)
set(lst "a;;b")
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_AT lst 0)]]
lst ";b"
)
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_AT lst 1)]]
lst "a;b"
)
set(lst [[e;a\;b;c\;d]])
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_AT lst 0)]]
lst [[a\;b;c\;d]]
)
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_AT lst 1)]]
lst [[e;c\;d]]
)
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_AT lst -1)]]
lst [[e;a\;b]]
)
set(lst [[c;a\\;b;c\;d;e]])
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_AT lst 0)]]
lst [[a\\;b;c\;d;e]]
)
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_AT lst 1)]]
lst [[c;c\;d;e]]
)
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_AT lst 2)]]
lst [[c;a\\;b;e]]
)
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_AT lst 3)]]
lst [[c;a\\;b;c\;d]]
)
unit_test_check_variable_equal(
[[vcpkg_list(REMOVE_AT lst -1)]]
lst [[c;a\\;b;c\;d]]
)

View File

@ -0,0 +1,63 @@
# these both set `args` in the top level
function(check_function_args start)
z_vcpkg_function_arguments(out "${start}")
set(args "${out}" PARENT_SCOPE)
endfunction()
function(check_all_function_args)
z_vcpkg_function_arguments(out)
set(args "${out}" PARENT_SCOPE)
endfunction()
unit_test_ensure_fatal_error([[check_function_args(-1)]])
unit_test_ensure_fatal_error([[check_function_args(3)]])
unit_test_ensure_fatal_error([[check_function_args(notanumber)]])
unit_test_check_variable_equal(
[[check_all_function_args()]]
args ""
)
unit_test_check_variable_equal(
[[check_all_function_args("")]]
args ""
)
unit_test_check_variable_equal(
[[check_all_function_args("" "")]]
args ";"
)
unit_test_check_variable_equal(
[[check_all_function_args("" "" "" "")]]
args ";;;"
)
unit_test_check_variable_equal(
[[check_all_function_args(a b c)]]
args "a;b;c"
)
unit_test_check_variable_equal(
[[check_function_args(2 a b c)]]
args "b;c"
)
unit_test_check_variable_equal(
[[check_function_args(3 a b c)]]
args "c"
)
unit_test_check_variable_equal(
[=[check_all_function_args("a;b" [[c\;d]] e)]=]
args [[a\;b;c\\;d;e]]
)
unit_test_check_variable_equal(
[=[check_all_function_args("a;b" [[c\;d]] [[e\\;f]])]=]
args [[a\;b;c\\;d;e\\\;f]]
)
unit_test_check_variable_equal(
[=[check_function_args(2 "a;b" [[c\;d]] e)]=]
args [[c\\;d;e]]
)
unit_test_check_variable_equal(
[=[check_function_args(3 "a;b" [[c\;d]] e)]=]
args "e"
)
unit_test_check_variable_equal(
[=[check_function_args(4 "a;b" [[c\;d]] e)]=]
args ""
)

View File

@ -0,0 +1,18 @@
{
"name": "unit-test-cmake",
"version-string": "0",
"description": "Ensures that the CMake scripts are unit tested.",
"supports": "x64",
"default-features": [
"function-arguments",
"list"
],
"features": {
"function-arguments": {
"description": "Test the z_vcpkg_function_arguments function"
},
"list": {
"description": "Test the vcpkg_list function"
}
}
}

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "b9e93acdaa680398eaed361f1df530096ded84ff",
"version": "1.7.0",
"port-version": 4
},
{
"git-tree": "ca62f9b23d92ff6bb375277cb56e6ea1cde2c9f1",
"version-string": "1.7.0",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "5dadcecafd0c3ffdfcf438c1f5f8b106002e14d0",
"version-date": "2020-12-09",
"port-version": 1
},
{
"git-tree": "d74324af317840ffb5c5aa54f1579ef2faab4a0e",
"version-string": "2020-12-09",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "dc7fdf585419fadcd96b13a800c4323b098256cd",
"version": "1.4.1",
"port-version": 1
},
{
"git-tree": "28c9dbd6d17602e942cd81f9d70aeff80f3d83f0",
"version-string": "1.4.1",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "a840c1d638565cbc8c4fd9a4200c0f54136275d7",
"version": "0.10",
"port-version": 1
},
{
"git-tree": "7ad926d8d5b488348fb195aa2180443a986e3464",
"version-string": "0.10",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "a1dbc5726734016b562a6f957ae3072df17b4592",
"version": "9.0.3",
"port-version": 2
},
{
"git-tree": "29fa989c86f7846056f2afc162152f79169ec813",
"version-string": "9.0.3",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "8a0618dd4e015d7a0ae5339e6758c5f1fd4754a6",
"version": "2.16.0",
"port-version": 2
},
{
"git-tree": "7776bdc54cb37a29c18701d4332e4537e6be357a",
"version": "2.16.0",

View File

@ -102,7 +102,7 @@
},
"apr": {
"baseline": "1.7.0",
"port-version": 3
"port-version": 4
},
"apr-util": {
"baseline": "1.6.1",
@ -274,11 +274,11 @@
},
"azure-iot-sdk-c": {
"baseline": "2020-12-09",
"port-version": 0
"port-version": 1
},
"azure-kinect-sensor-sdk": {
"baseline": "1.4.1",
"port-version": 0
"port-version": 1
},
"azure-macro-utils-c": {
"baseline": "2020-06-17",
@ -390,7 +390,7 @@
},
"bitserializer": {
"baseline": "0.10",
"port-version": 0
"port-version": 1
},
"bitserializer-cpprestjson": {
"baseline": "alias",
@ -434,7 +434,7 @@
},
"bond": {
"baseline": "9.0.3",
"port-version": 1
"port-version": 2
},
"boolinq": {
"baseline": "3.0.1",
@ -1038,7 +1038,7 @@
},
"botan": {
"baseline": "2.16.0",
"port-version": 1
"port-version": 2
},
"box2d": {
"baseline": "2.4.1",
@ -1126,7 +1126,7 @@
},
"capstone": {
"baseline": "4.0.2",
"port-version": 1
"port-version": 2
},
"cartographer": {
"baseline": "1.0.0",
@ -1182,7 +1182,7 @@
},
"ceres": {
"baseline": "2.0.0",
"port-version": 4
"port-version": 5
},
"cfitsio": {
"baseline": "3.49",
@ -1190,7 +1190,7 @@
},
"cgal": {
"baseline": "5.2.2",
"port-version": 0
"port-version": 1
},
"cgicc": {
"baseline": "3.2.19-4",
@ -1254,11 +1254,11 @@
},
"civetweb": {
"baseline": "1.13",
"port-version": 1
"port-version": 2
},
"cjson": {
"baseline": "2019-11-30-1",
"port-version": 0
"baseline": "2019-11-30",
"port-version": 2
},
"clamav": {
"baseline": "0.103.0",
@ -1314,7 +1314,7 @@
},
"clue": {
"baseline": "1.0.0-alpha.7",
"port-version": 0
"port-version": 1
},
"cmark": {
"baseline": "0.29.0",
@ -1474,7 +1474,7 @@
},
"cppzmq": {
"baseline": "4.7.1",
"port-version": 1
"port-version": 2
},
"cpr": {
"baseline": "1.6.2",
@ -1502,7 +1502,7 @@
},
"crashrpt": {
"baseline": "1.4.3",
"port-version": 0
"port-version": 1
},
"crc32c": {
"baseline": "1.1.1",
@ -1726,11 +1726,11 @@
},
"dlib": {
"baseline": "19.21",
"port-version": 4
"port-version": 5
},
"dmlc": {
"baseline": "2019-08-12",
"port-version": 5
"port-version": 6
},
"docopt": {
"baseline": "2018-11-01",
@ -6538,7 +6538,7 @@
},
"vcpkg-cmake": {
"baseline": "2021-06-25",
"port-version": 4
"port-version": 5
},
"vcpkg-cmake-config": {
"baseline": "2021-05-22",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "465e527988f09c855e156cff45b7ee6dfbe1d303",
"version": "4.0.2",
"port-version": 2
},
{
"git-tree": "7c919b056af0b624766a625f1de7847f97262d92",
"version-string": "4.0.2",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "07f2aa6906e97637ae7a4ed6dcfce6867eb1a049",
"version-semver": "2.0.0",
"port-version": 5
},
{
"git-tree": "ba834e4ef32213f516d2b0539240ba4cc4a9c90a",
"version-semver": "2.0.0",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "02c3a0b581425d69dc21787d87e14c53a07e33ee",
"version": "5.2.2",
"port-version": 1
},
{
"git-tree": "8ecf63852d98760d2b2bd0c75b70ab95a5e73aca",
"version-string": "5.2.2",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "ca6f80fd431dc0a13daa1509308d598700fbd763",
"version": "1.13",
"port-version": 2
},
{
"git-tree": "c66a22f30f2b72f81ae2bb23cce2bfc512b6e983",
"version-string": "1.13",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "c8997bd75a1e40cf8ac7f7d77a942afd84f01d2e",
"version-date": "2019-11-30",
"port-version": 2
},
{
"git-tree": "2a1edb97563c7a8e4007f479bfdcb33122911e16",
"version-string": "2019-11-30-1",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "b58662a5b92d34be097810c33d6ec24400ae0b26",
"version-string": "1.0.0-alpha.7",
"port-version": 1
},
{
"git-tree": "f4b5156fc9604848b9aa627ef0bf7ab21e9ad5ac",
"version-string": "1.0.0-alpha.7",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "142701d624e76cc4288ddce74c796501ba8cfa57",
"version": "4.7.1",
"port-version": 2
},
{
"git-tree": "8f196edc3e7a6d6d26e14162ed542848d1eee4c1",
"version-string": "4.7.1",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "ad55102e0d167bb457349e5b2b4cec75efc45a91",
"version": "1.4.3",
"port-version": 1
},
{
"git-tree": "671b2d16a22bdaf8718e15fa13554c838b6e6ce7",
"version-string": "1.4.3",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "58207e22ff2355358bee9fb607b03b6cab1030c6",
"version": "19.21",
"port-version": 5
},
{
"git-tree": "498121f386e722fbc511caac849425041206735b",
"version-string": "19.21",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "47d5b971d74b762c6c52e676d5c1c082ee462c0e",
"version-date": "2019-08-12",
"port-version": 6
},
{
"git-tree": "162f71aa6f31426d3e8cbbb2614c8bba689e7bbc",
"version-string": "2019-08-12",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "07c3e68ce9ae8f30bcc0b21def7a528dbb8ecb07",
"version-date": "2021-06-25",
"port-version": 5
},
{
"git-tree": "acc25ec22f8fd8887a865705580b1d6de041616d",
"version-date": "2021-06-25",