* Revise generator selection
If the host is x86, assume that msbuild is requested for windows.
If msbuild is requested and suitable, use it.
Else if a particular generator is requested, use it.
Else if ninja is available, use it.
Else on non-windows host, use "Unix Makefiles".
* Revise ninja_host detection
* Revise parallel configure detection
* Consolidate ninja path setup
* Update documentation
* Use portable chdir
* [ms-gltf] Use new generator selection
* Update versions
* Always save config.log, even on error
* Always save config.log and CMakeCache.txt[.log]
* Add SAVE_LOG_FILES option
* Make implicit lookups explicit
* Update versions
* Fix the application of VCPKG_CMAKE_CONFIGURE_OPTIONS with more than one option
VCPKG_CMAKE_CONFIGURE_OPTIONS (plural) is meant to be a list of options to be added to a cmake invocation.
But it was being applied quoted, which disallowed it from containing multiple options.
- If it was initialized with a list, cmake would get the options ";"-separated.
- If it was initialized with a blank-separated string, cmake would get the entire astring quoted as a single argument.
The fix is simple: don't (ever) quote arguments to list(APPEND) unless they are really meant to be a single element to append to the list.
* Update the version-date of vcpkg-cmake
* Update hash after rebase
* Fix vcpkg-cmake.json
In my defence, I'm new to this...
Co-authored-by: Juan Carlos Arevalo Baeza (JCAB) <jcab@ntdev.microsoft.com>
* [docs] Delete embedded documentation in favor of docs/
Drive-by for the helper ports:
1. "documentation": "https://vcpkg.io/en/docs/README.html"
2. "license": "MIT"
3. Use `include_guard(GLOBAL)` in all script files
4. Make sure any persistent variables are saved to the cache
* [docs] Restore empty regenerate.ps1 to satisfy Azure Pipelines
* [docs] PR comments
* synchronize cmake build scripts.
* version stuff
* fix REMOVE_ITEM and add license
* format manifest
* update version
* use LOGFILE_BASE
* version update
* readd PREFER_NINJA and print a warning that it is deprecated for vcpkg_cmake_configure
* version stuff
* sync build_cmake
* only turn off ninja on windows
* add Z_VCPKG_CHAINLOAD_TOOLCHAIN_FILE
* use z_vcpkg_select_default_vcpkg_chainload_toolchain in meson
* remove VCPKG_CMAKE_GENERATOR
* version stuff
* reduce error to warning
* remove VCPKG_CMAKE_GENERATOR form configure_cmake
* version stuff
* version stuff
* use build_dir_<config>
* version stuff
* use ninja variable insead of pure ninja cmd
* version bump
* use ninja variable instead of calling ninja directly
* acquire ninja
* move the acquire.
* remove setting of cmake_prefix_path
* version stuff
* bump version date
* version stuff
* bump ashes baseline
* remove VCPKG_CMAKE_GENERATOR reference
* fix wrong variable reference due to refactor
* version stuff
Co-authored-by: Alexander Neumann <you@example.com>
Co-authored-by: Billy Robert O'Neal <bion@microsoft.com>
* put default generator and toolchain selection into a function
* update version-date of script
* version stuff
* restore PREFER_NINJA behavior on windows
use elseif instead of else
* cr ws change
* missing ,
* version stuff
* CR scripts/cmake/vcpkg_configure_cmake.cmake
Co-authored-by: nicole mazzuca <mazzucan@outlook.com>
* CR changes
* revert baseline
* update version
* bump version
* version stuff
* ci retrigger
Co-authored-by: Alexander Neumann <you@example.com>
Co-authored-by: nicole mazzuca <mazzucan@outlook.com>
* [vcpkg] Support VS2022 17.0
* small changes
* Update vcpkg.cmake
* Update the baseline version
* Update the baseline version
* Update the baselin version
* Adress the review suggestions
Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
* Expand Architecture list with escape chars
This expands the architecture lists with escape characters. When
building FAT binaries for macos using multiple architectures in the
values they need to be escaped otherwise they are passed on to CMake
incorrectly #14932
* Adding the architecture fix to vcpkg-cmake port
updating port vcpkg-cmake version
* updated version in baseline
* [docs] link to new functions in deprecated warnings
* [docs] add deprecation messages to portfile-functions.md
* [docs] also update documentation in .cmake files
* [docs] introduce new directive DEPRECATED BY in the documentation generation script and use that directive
* Trigger Build
* Trigger Build
* Trigger Build
* [vcpkg_*_cmake] remove deprecation message
to be replaced by a note in the maintainer-guide
this allows existing ports to build without warnings, so as to avoid warning people unnecessarily,
while still making sure people update when they update ports.
* Update docs/maintainers/maintainer-guide.md
* [scripts-audit rollup] PR #16419
* pull the cmake doc comment parsing out into its own function
* support cmake helper ports
* add real support for deprecation, as opposed to ad-hoc
* [scripts-audit rollup] PR #16192
* add a z_ in front of internal functions
* move internal functions out
set feature_vars again in parent scope
* [scripts-audit rollup] PR #16309
Audit vcpkg_copy_pdbs
* [scripts-audit rollup] PR #16304
* Fix usage, documentation
* [scripts-audit rollup] PR #16393
* [scripts-audit rollup] PR #16377
Deprecate `vcpkg_*_cmake` in favor of `vcpkg_cmake_*` from the
`vcpkg-cmake` port, as well as `vcpkg_fixup_cmake_targets`
in favor of `vcpkg_cmake_config_fixup` from the
`vcpkg-cmake-config` port.
* [vcpkg docs] Change how documenting port functions works
Instead of using `##`, use comment blocks for documentation.
Also, add some minor docs and change RST -> MD
so we actually get docs generated.
* add CI stuff
* regenerate docs
* fix vcpkg_find_acquire_program to not use _execute_process
* [vcpkg] allow to use semicolons in COMMAND argument
* [llvm] update to 11.0.0
* [vcpkg] use latest version
* [vcpkg] allow to use semicolons in OPTIONS
* fix vcpkg_fixup_cmake_targets
* [llvm] fix more install paths, add /bigobj option, fix up CMake targets
* Apply suggestions from code review
* [llvm] fix clang, flang, lld, mlir and polly CMake targets
* [llvm] remove empty include directory /include/flang/Config
* [llvm] Flang requires C++17
* [llvm] add /Zc:__cplusplus
* [llvm] remove empty include directory include/clang-tidy/plugin
* [llvm] try to fix ClangConfig.cmake, LLVMConfig.cmake, LLDConfig.cmake etc. with patch
* [llvm] set tools install dir to tools/llvm
* [aws-sdk-cpp] fix build after changes in vcpkg_configure_cmake.cmake
* [llvm] disable Flang and OpenMP on Windows
Co-authored-by: Nicole Mazzuca <mazzucan@outlook.com>
Co-authored-by: Nicole Mazzuca <mazzucan@outlook.com>
Co-authored-by: JackBoosY <yuzaiyang@beyondsoft.com>
Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
* [vcpkg] Pass CMAKE_DISABLE_SOURCE_CHANGES to all ports by default
* [docs] Regenerate
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
Co-authored-by: Billy Robert O'Neal III <bion@microsoft.com>
==== Changes Related to manifests ====
* Add the `manifests` feature flag
* This only says whether we look for a `vcpkg.json` in the cwd, not
whether we support parsing manifests (for ports, for example)
* Changes to the manifests RFC
* `"authors"` -> `"maintainers"`
* `--x-classic-mode` -> `-manifests` \in `vcpkg_feature_flags`
* reserve `"core"` in addition to `"default"`, since that's already
reserved for features
* Add a small helper note about what identifiers must look like
* `<license-string>`: SPDX v3.8 -> v3.9
* `"feature"."description"` is allowed to be an array of strings as well
* `"version"` -> `"version-string"` for forward-compat with versions
RFC
* Add the `--feature-flags` option
* Add the ability to turn off feature flags via passing
`-<feature-flag>` to `VCPKG_FEATURE_FLAGS` or `--feature-flags`
* Add CMake toolchain support for manifests
* Requires either:
* a feature flag of `manifests` in either `Env{VCPKG_FEATURE_FLAGS}`
or `VCPKG_FEATURE_FLAGS`
* Passing the `VCPKG_ENABLE_MANIFESTS` option
* The toolchain will install your packages to
`${VCPKG_MANIFEST_DIR}/vcpkg_installed`.
* Add MSBuild `vcpkg integrate install` support for manifests
* Requires `VcpkgEnableManifest` to be true
* `vcpkg create` creates a port that has a `vcpkg.json` instead of a
`CONTROL`
* argparse, abseil, 3fd, and avisynthplus ports switched to manifest
from CONTROL
* Add support for `--x-manifest-root`, as well as code for finding it if
not passed
* Add support for parsing manifests!
* Add a filesystem lock!
==== Important Changes which are somewhat unrelated to manifests ====
* Rename `logicexpression.{h,cpp}` to `platform-expression.{h,cpp}`
* Add `PlatformExpression` type which takes the place of the old logic
expression
* Split the parsing of platform expressions from checking whether
they're true or not
* Eagerly parse PlatformExpressions as opposed to leaving them as
strings
* Add checking for feature flag consistency
* i.e., if `-binarycaching` is passed, you shouldn't be passing
`--binarysource`
* Add the `Json::Reader` type which, with the help of user-defined
visitors, converts JSON to your internal type
* VcpkgArgParser: place the switch names into a constant as opposed to
using magic constants
* In general update the parsing code so that this ^ works
* Add `Port-Version` fields to CONTROL files
* This replaces the existing practice of
`Version: <my-version>-<port-version>`
==== Smaller changes ====
* small drive-by cleanups to some CMake
* `${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}` ->
`${CURRENT_INSTALLED_DIR}`
* Remove `-analyze` when compiling with clang-cl, since that's not a
supported flag (vcpkg's build system)
* Add a message about which compiler is detected by vcpkg's build
system machinery
* Fix `Expected::then`
* Convert `""` to `{}` for `std::string` and `fs::path`, to avoid a
`strlen` (additionally, `.empty()` instead of `== ""`, and `.clear()`)
* Add `Strings::strto` which converts strings to numeric types
* Support built-in arrays and `StringView` for `Strings::join`
* Add `operator<` and friends to `StringView`
* Add `substr` to `StringView`
* SourceParagraphParser gets some new errors
* Add iOS community triplets and toolchain support
Added an iOS toolchain to enable building packages for iOS.
The toolchain is used when a triplet's VCPKG_CMAKE_SYSTEM_NAME is set
to iOS.
To configure which architecture should be built, as well as other
iOS specifics, the following triplet variables can be set:
- VCPKG_TARGET_ARCHITECTURE
- VCPKG_OSX_SYSROOT
- VCPKG_OSX_DEPLOYMENT_TARGET
- VCPKG_OSX_ARCHITECTURES
The following VCPKG_TARGET_ARCHITECTURE values are currently
supported:
- arm, arm64, x64, x86.
The following VCPKG_OSX_SYSROOT values are currently supported:
- iphoneos, iphonesimulator, or an absolute path to the device or
simulator Xcode SDK.
VCPKG_OSX_DEPLOYMENT_TARGET can be set to control the minimum iOS
delopyment target for the built libraries.
CMAKE_OSX_ARCHITECTURES is derived from VCPKG_TARGET_ARCHITECTURE,
so generally it should not be set. In case if someone needs to target
a more specific architecture (like armv7k or arm64e), it can
be set in the triplet via VCPKG_OSX_ARCHITECTURES.
Note that only certain combinations of the architecture and sysroot
will work: simulator SDKs only provide x86-based libraries, etc.
The toolchain also sets CMAKE_SYSTEM_PROCESSOR for certain
configurations, because certain packages (like libpng) depend on the
processor type.
Added 4 community iOS triplets that build static libraries:
- arm-ios, arm64-ios, x86-ios, x64-ios.
The non-arm triplets target the iOS simulator.
The triplets build static libraries because they are easiest to
integrate into an iOS project. Dynamic libraries or frameworks require
code signing on iOS, which complicates integration.
Added heuristics to try and automatically detect what iOS triplet to
use when building your own CMake project (so when a CMake project sets
CMAKE_TOOLCHAIN_FILE to buildsystems/vcpkg.cmake), if no explicit
triplet is provided (VCPKG_TARGET_TRIPLET is undefined).
The heuristic checks for the values of CMAKE_SYSTEM_NAME and
CMAKE_OSX_ARCHITECTURES. Note that for this to work,
CMAKE_OSX_ARCHITECTURES needs to be set before the first project()
call in your CMake project.
Added workaround so find_package finds vcpkg installed packages
when targeting iOS.
This is done by saving / restoring the value of CMAKE_FIND_ROOT_PATH
while also adding the vcpkg package root in the find_package override
macro.
The workaround can be removed once vcpkg upgrades to CMake 3.15.0
or higher where the issue is fixed.
Fixes: #6003
* Fix building libpng and pcre2 targetting iOS
Fixes: #6003
* Add support for building with MinGW
Tested with MSYS2 MinGW 8.3.0, gcc-mcf.lhmouse MinGW 9.2.1,
and StephanTLavavej/mingw-distro!
* Add MinGW toolchain
From your MinGW configured shell you could just use vcpkg to
configure packages.
An x64-mingw triplet would look like:
```
set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE static)
set(VCPKG_ENV_PASSTHROUGH PATH)
set(VCPKG_CMAKE_SYSTEM_NAME MinGW)
```
* Add MinGW community tripplets
x64 tested with https://github.com/StephanTLavavej/mingw-distro
x86, arm64, arm tested with https://github.com/mstorsjo/llvm-mingw
* - Added scripts variable to ports file.
- Added check if triplet file is not available (NPE).
* - Fixed line endings.
* Provide location of .vcpkg-root to ports.cmake
* vcpkg sets VCPKG_ROOT_PATH in ports.cmake
* [vcpkg] Fail if VCPKG_ROOT_PATH is not passed from vcpkg.exe
* [vcpkg] Fix vcpkg rooth path
* [vcpkg] Make --x-scripts-root an experimental command
* [vcpkg_check_features] Set OUT_EXPAND_OPTIONS explicitly
* [vcpkg_check_features] Allow reverse logic for features
* [vcpkg_check_features] Document new parameters
* [vcpkg_check_features] Remove unnecessary logging
* Do not create variables for each feature only set OUT_FEATURE_OPTIONS
* Improve documentation
* Update ports that use vcpkg_check_features()
* Missing documentation updates
* [pcl] Fix tools feature
* [opencv,opencv4] Fix usage of vcpkg_check_features()
* [opencv4] Fix typo
* [vcpkg_configure_cmake] Add NO_CHARSET_FLAG option
* [vcpkg_configure_cmake] Add documentation for new NO_CHARSET_FLAG option
* [vcpkg_configure_cmake, windows toolchain] Handle NO_CHARSET_FLAG in toolchain
* [build.cpp] Add Windows toolchain to package hash
* [duilib,msix,thrift,tidy-html5] Use NO_CHARSET_FLAG to fix regressions
* [BZip2] Fix Unix Dynamic Builds
* [bzip2] Bump control version
* [libgta] Only build one flavor
* [vcpkg_configure_cmake] Resolve#2375 since we now use CMake >= 3.11
* [vcpkg] Fix CMAKE_SYSTEM_PROCESSOR
Add CMAKE_SYSTEM_PROCESSOR setting under UWP, Linux, and Darwin.
If explicitly specified VCPKG_CMAKE_SYSTEM_PROCESSOR in triplet files, CMAKE_SYSTEM_PROCESSOR is set to specified architecture.
* [vcpkg-toolchains] Move logic out of vcpkg_configure_cmake and into the toolchains.