From 9cfcc711469778370af64830086cc62afd523dfc Mon Sep 17 00:00:00 2001 From: Robert Schumacher Date: Fri, 21 Jun 2019 21:33:29 -0700 Subject: [docs] Add maintainer guidelines (#6871) * [maintainer-guide] Initial commit of maintainer guidelines * [maintainer-guide] Rearrange sections * [maintainer-guide] Add note about GitHub Draft PRs * [maintainer-guide] Improvements * [maintainer-guide] Address comments about versioning conventions * [maintainer-guide] Add section about how portfiles interact with CMakeLists.txt * [maintainer-guidelines] Add link from docs index --- docs/maintainers/control-files.md | 17 +++- docs/maintainers/maintainer-guide.md | 178 +++++++++++++++++++++++++++++++++++ 2 files changed, 192 insertions(+), 3 deletions(-) create mode 100644 docs/maintainers/maintainer-guide.md (limited to 'docs/maintainers') diff --git a/docs/maintainers/control-files.md b/docs/maintainers/control-files.md index ac4afa265..03bfa113a 100644 --- a/docs/maintainers/control-files.md +++ b/docs/maintainers/control-files.md @@ -43,16 +43,27 @@ The port version. This field is an alphanumeric string that may also contain `.`, `_`, or `-`. No attempt at ordering versions is made; all versions are treated as bit strings and are only evaluated for equality. -By convention, if a portfile is modified without incrementing the "upstream" version, a `-#` is appended to create a unique version string. +For tagged-release ports, we follow the following convention: -Some projects do not have named releases. In these cases use the date of the version do not have labeled releases, in these cases use the date of the last commit in `YYYY-MM-DD` format. See the `abseil` port as an example. +1. If the port follows a scheme like `va.b.c`, we remove the leading `v`. In this case, it becomes `a.b.c`. +2. If the port includes its own name in the version like `curl-7_65_1`, we remove the leading name: `7_65_1` +3. If the port has been modified, we append a `-N` to distinguish the versions: `1.2.1-4` + +For rolling-release ports, we use the date that the _commit was accessed by you_, formatted as `YYYY-MM-DD`. Stated another way: if someone had a time machine and went to that date, they would see this commit as the latest master. + +For example, given: +1. The latest commit was made on 2019-04-19 +2. The current version string is `2019-02-14-1` +3. Today's date is 2019-06-01. + +Then if you update the source version today, you should give it version `2019-06-01`. If you need to make a change which doesn't adjust the source version, you should give it version `2019-02-14-2`. Example: ```no-highlight Version: 1.0.5-2 ``` ```no-highlight -Version: 2019-3-21 +Version: 2019-03-21 ``` #### Description diff --git a/docs/maintainers/maintainer-guide.md b/docs/maintainers/maintainer-guide.md new file mode 100644 index 000000000..0baa45a02 --- /dev/null +++ b/docs/maintainers/maintainer-guide.md @@ -0,0 +1,178 @@ +# Maintainer Guidelines and Policies + +This document lists a set of policies that you should apply when adding or updating a port recipe. It is intended to serve the role of [Debian's Policy Manual](https://www.debian.org/doc/debian-policy/), [Homebrew's Maintainer Guidelines](https://docs.brew.sh/Maintainer-Guidelines), and [Homebrew's Formula Cookbook](https://docs.brew.sh/Formula-Cookbook). + +## PR Structure + +### Make separate Pull Requests per port + +Whenever possible, separate changes into multiple PR's. This makes them significantly easier to review and prevents issues with one set of changes from holding up every other change. + +### Avoid trivial changes in untouched files + +For example, avoid reformatting or renaming variables in portfiles that otherwise have no reason to be modified for the issue at hand. However, if you need to modify the file for the primary purpose of the PR (updating the library), then obviously beneficial changes like fixing typos are appreciated! + +### Check names against other repositories + +A good service to check many at once is [Repology](https://repology.org/). If the library you are adding could be confused with another one, consider renaming to make it clear. + +### Use GitHub Draft PRs + +GitHub Draft PRs are a great way to get CI or human feedback on work that isn't yet ready to merge. Most new PRs should be opened as drafts and converted to normal PRs once the CI passes. + +More information about GitHub Draft PRs: https://github.blog/2019-02-14-introducing-draft-pull-requests/ + +## Portfiles + +### Avoid deprecated helper functions + +At this time, the following helpers are deprecated: + +1. `vcpkg_extract_archive()` should be replaced by `vcpkg_extract_archive_ex()` +2. `vcpkg_apply_patches()` should be replaced by the `PATCHES` arguments to the "extract" helpers (e.g. `vcpkg_from_github()`) +3. `vcpkg_build_msbuild()` should be replaced by `vcpkg_install_msbuild()` + +### Avoid excessive comments in portfiles + +Ideally, portfiles should be short, simple, and as declarative as possible. Remove any helper comments introduced by the `create` command before submitting a PR. + +## Build Techniques + +### Do not use vendored dependencies + +Do not use embedded copies of libraries. All dependencies should be split out and packaged separately so they can be updated and maintained. + +### Prefer using CMake + +When multiple buildsystems are available, prefer using CMake. Additionally, when appropriate, it can be easier and more maintainable to rewrite alternative buildsystems into CMake using `file(GLOB)` directives. + +Examples: [abseil](../../ports/abseil/portfile.cmake) + +### Choose either static or shared binaries + +By default, `vcpkg_configure_cmake()` will pass in the appropriate setting for `BUILD_SHARED_LIBS`, however for libraries that don't respect that variable, you can switch on `VCPKG_LIBRARY_LINKAGE`: + +```cmake +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" KEYSTONE_BUILD_STATIC) +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" KEYSTONE_BUILD_SHARED) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + -DKEYSTONE_BUILD_STATIC=${KEYSTONE_BUILD_STATIC} + -DKEYSTONE_BUILD_SHARED=${KEYSTONE_BUILD_SHARED} +) +``` + +### When defining features, explicitly control dependencies + +When defining a feature that captures an optional dependency, ensure that the dependency will not be used accidentally when the feature is not explicitly enabled. For example: + +```cmake +set(CMAKE_DISABLE_FIND_PACKAGE_ZLIB ON) +if("zlib" IN_LIST FEATURES) + set(CMAKE_DISABLE_FIND_PACKAGE_ZLIB OFF) +endif() + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + -DCMAKE_DISABLE_FIND_PACKAGE_ZLIB=${CMAKE_DISABLE_FIND_PACKAGE_ZLIB} +) +``` + +Note that `ZLIB` in the above is case-sensitive. See the [cmake documentation](https://cmake.org/cmake/help/v3.15/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.html) for more details. + +## Versioning + +### Follow common conventions for the `Version:` field + +See our [CONTROL files document](control-files.md#version) for a full explanation of our conventions. + +### Update the `Version:` field in the `CONTROL` file of any modified ports + +Vcpkg uses this field to determine whether a given port is out-of-date and should be changed whenever the port's behavior changes. + +Our convention for this field is to append a `-N` to the upstream version when changes need to be made. + +For Example: + +- Zlib's package version is currently `1.2.1`. +- You've discovered that the wrong copyright file has been deployed, and fixed that in the portfile. +- You should update the `Version:` field in the control file to `1.2.1-1`. + +See our [CONTROL files document](control-files.md#version) for a full explanation of our conventions. + +## Patching + +### Prefer options over patching + +It is preferable to set options in a call to `vcpkg_configure_xyz()` over patching the settings directly. + +Common options that allow avoiding patching: +1. [MSBUILD] `` settings inside the project file can be overridden via `/p:` parameters +2. [CMAKE] Calls to `find_package(XYz)` in CMake scripts can be disabled via [`-DCMAKE_DISABLE_FIND_PACKAGE_XYz=ON`](https://cmake.org/cmake/help/v3.15/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.html) +3. [CMAKE] Cache variables (declared as `set(VAR "value" CACHE STRING "Documentation")` or `option(VAR "Documentation" "Default Value")`) can be overriden by just passing them in on the command line as `-DVAR:STRING=Foo`. One notable exception is if the `FORCE` parameter is passed to `set()`. See also the [CMake `set` documentation](https://cmake.org/cmake/help/v3.15/command/set.html) + +### Minimize patches + +When making changes to a library, strive to minimize the final diff. This means you should _not_ reformat the upstream source code when making changes that affect a region. Also, when disabling a conditional, it is better to add a `AND FALSE` or `&& 0` to the condition than to delete every line of the conditional. + +This helps to keep the size of the vcpkg repository down as well as improves the likelihood that the patch will apply to future code versions. + +### Do not implement features in patches + +The purpose of patching in vcpkg is to enable compatibility with compilers, libraries, and platforms. It is not to implement new features in lieu of following proper Open Source procedure (submitting an Issue/PR/etc). + +## Do not build tests/docs/examples by default + +When submitting a new port, check for any options like `BUILD_TESTS` or `WITH_TESTS` or `POCO_ENABLE_SAMPLES` and ensure the additional binaries are disabled. This minimizes build times and dependencies for the average user. + +Optionally, you can add a `test` feature which enables building the tests, however this should not be in the `Default-Features` list. + +## Enable existing users of the library to switch to vcpkg + +### Do not add `CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS` + +Unless the author of the library is already using it, we should not use this CMake functionality because it interacts poorly with C++ templates and breaks certain compiler features. Libraries that don't provide a .def file and do not use __declspec() declarations simply do not support shared builds for Windows and should be marked as such with `vcpkg_check_linkage(ONLY_STATIC_LIBRARY)`. + +### Do not rename binaries outside the names given by upstream + +This means that if the upstream library has different names in release and debug (libx versus libxd), then the debug library should not be renamed to `libx`. Vice versa, if the upstream library has the same name in release and debug, we should not introduce a new name. + +Important caveat: +- Static and shared variants often should be renamed to a common scheme. This enables consumers to use a common name and be ignorant of the downstream linkage. This is safe because we only make one at a time available. + +Note that if a library generates CMake integration files (`foo-config.cmake`), renaming must be done through patching the CMake build itself instead of simply calling `file(RENAME)` on the output archives/LIBs. + +Finally, DLL files on Windows should never be renamed post-build because it breaks the generated LIBs. + +## Useful implementation notes + +### Portfiles are run in Script Mode + +While `portfile.cmake`'s and `CMakeLists.txt`'s share a common syntax and core CMake language constructs, portfiles run in "Script Mode", whereas `CMakeLists.txt` files run in "Build Mode" (unofficial term). The most important difference between these two modes is that "Script Mode" does not have a concept of "Target" -- any behaviors that depend on the "target" machine (`CMAKE_CXX_COMPILER`, `CMAKE_EXECUTABLE_SUFFIX`, `CMAKE_SYSTEM_NAME`, etc) will not be correct. + +Portfiles have direct access to variables set in the triplet file, but `CMakeLists.txt`s do not (though there is often a translation that happens -- `VCPKG_LIBRARY_LINKAGE` versus `BUILD_SHARED_LIBS`). + +Finally, portfiles and CMake builds invoked by portfiles are run in different processes. Conceptually: + +```no-highlight ++----------------------------+ +------------------------------------+ +| CMake.exe | | CMake.exe | ++----------------------------+ +------------------------------------+ +| Triplet file | ====> | Toolchain file | +| (x64-windows.cmake) | | (scripts/buildsystems/vcpkg.cmake) | ++----------------------------+ +------------------------------------+ +| Portfile | ====> | CMakeLists.txt | +| (ports/foo/portfile.cmake) | | (buildtrees/../CMakeLists.txt) | ++----------------------------+ +------------------------------------+ +``` + +To determine the host in a portfile, the standard CMake variables are fine (`CMAKE_HOST_WIN32`). + +To determine the target in a portfile, the vcpkg triplet variables should be used (`VCPKG_CMAKE_SYSTEM_NAME`). + +See also our [triplet documentation](../users/triplets.md) for a full enumeration of possible settings. -- cgit v1.2.3 From 1ce24dd0db6d9cf6cdb348ff29aa8454b3f1b028 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 25 Jun 2019 16:08:18 -0700 Subject: [docs]Update cmake docs (#7039) --- docs/maintainers/portfile-functions.md | 1 + docs/maintainers/vcpkg_configure_cmake.md | 1 + docs/maintainers/vcpkg_execute_build_process.md | 36 ++++++++++++++++++++++ .../maintainers/vcpkg_extract_source_archive_ex.md | 2 +- docs/maintainers/vcpkg_find_acquire_program.md | 1 + 5 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 docs/maintainers/vcpkg_execute_build_process.md (limited to 'docs/maintainers') diff --git a/docs/maintainers/portfile-functions.md b/docs/maintainers/portfile-functions.md index f159f7f64..c4b810dc0 100644 --- a/docs/maintainers/portfile-functions.md +++ b/docs/maintainers/portfile-functions.md @@ -12,6 +12,7 @@ - [vcpkg\_copy\_pdbs](vcpkg_copy_pdbs.md) - [vcpkg\_copy\_tool\_dependencies](vcpkg_copy_tool_dependencies.md) - [vcpkg\_download\_distfile](vcpkg_download_distfile.md) +- [vcpkg\_execute\_build\_process](vcpkg_execute_build_process.md) - [vcpkg\_execute\_required\_process](vcpkg_execute_required_process.md) - [vcpkg\_extract\_source\_archive](vcpkg_extract_source_archive.md) - [vcpkg\_extract\_source\_archive\_ex](vcpkg_extract_source_archive_ex.md) diff --git a/docs/maintainers/vcpkg_configure_cmake.md b/docs/maintainers/vcpkg_configure_cmake.md index 200d358ae..f61a6fa20 100644 --- a/docs/maintainers/vcpkg_configure_cmake.md +++ b/docs/maintainers/vcpkg_configure_cmake.md @@ -7,6 +7,7 @@ Configure CMake for Debug and Release builds of a project. vcpkg_configure_cmake( SOURCE_PATH <${SOURCE_PATH}> [PREFER_NINJA] + [DISABLE_PARALLEL_CONFIGURE] [GENERATOR <"NMake Makefiles">] [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] [OPTIONS_RELEASE <-DOPTIMIZE=1>...] diff --git a/docs/maintainers/vcpkg_execute_build_process.md b/docs/maintainers/vcpkg_execute_build_process.md new file mode 100644 index 000000000..d5b3593d9 --- /dev/null +++ b/docs/maintainers/vcpkg_execute_build_process.md @@ -0,0 +1,36 @@ +# vcpkg_execute_build_process + +Execute a required build process + +## Usage +```cmake +vcpkg_execute_build_process( + COMMAND [...] + [NO_PARALLEL_COMMAND [...]] + WORKING_DIRECTORY + LOGNAME ) +) +``` +## Parameters +### COMMAND +The command to be executed, along with its arguments. + +### NO_PARALLEL_COMMAND +Optional parameter which specifies a non-parallel command to attempt if a +failure potentially due to parallelism is detected. + +### WORKING_DIRECTORY +The directory to execute the command in. + +### LOGNAME +The prefix to use for the log files. + +This should be a unique name for different triplets so that the logs don't +conflict when building multiple at once. + +## Examples + +* [icu](https://github.com/Microsoft/vcpkg/blob/master/ports/icu/portfile.cmake) + +## Source +[scripts/cmake/vcpkg_execute_build_process.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_execute_build_process.cmake) diff --git a/docs/maintainers/vcpkg_extract_source_archive_ex.md b/docs/maintainers/vcpkg_extract_source_archive_ex.md index 92c90b296..8f525c3ce 100644 --- a/docs/maintainers/vcpkg_extract_source_archive_ex.md +++ b/docs/maintainers/vcpkg_extract_source_archive_ex.md @@ -25,7 +25,7 @@ The full path to the archive to be extracted. This is usually obtained from calling [`vcpkg_download_distfile`](vcpkg_download_distfile.md). ### REF -A friendly name that will be used instead of the filename of the archive. +A friendly name that will be used instead of the filename of the archive. If more than 10 characters it will be truncated. By convention, this is set to the version number or tag fetched diff --git a/docs/maintainers/vcpkg_find_acquire_program.md b/docs/maintainers/vcpkg_find_acquire_program.md index 57a2bf75a..b868ea418 100644 --- a/docs/maintainers/vcpkg_find_acquire_program.md +++ b/docs/maintainers/vcpkg_find_acquire_program.md @@ -24,6 +24,7 @@ The current list of programs includes: - MESON - NASM - NINJA +- NUGET - YASM - ARIA2 (Downloader) -- cgit v1.2.3 From b4675fd65a5baebe93d0e60e082ae43013ed246f Mon Sep 17 00:00:00 2001 From: myd7349 Date: Sat, 29 Jun 2019 01:17:39 +0800 Subject: [vcpkg] Add vcpkg_check_features (#6958) * [vcpkg] Add vcpkg_check_feature, vcpkg_check_features * [vcpkg] Remove vcpkg_check_feature * [oniguruma,xtensor] Use vcpkg_check_features --- docs/maintainers/portfile-functions.md | 1 + docs/maintainers/vcpkg_check_features.md | 41 ++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 docs/maintainers/vcpkg_check_features.md (limited to 'docs/maintainers') diff --git a/docs/maintainers/portfile-functions.md b/docs/maintainers/portfile-functions.md index c4b810dc0..b98d89192 100644 --- a/docs/maintainers/portfile-functions.md +++ b/docs/maintainers/portfile-functions.md @@ -6,6 +6,7 @@ - [vcpkg\_apply\_patches](vcpkg_apply_patches.md) - [vcpkg\_build\_cmake](vcpkg_build_cmake.md) - [vcpkg\_build\_msbuild](vcpkg_build_msbuild.md) +- [vcpkg\_check\_features](vcpkg_check_features.md) - [vcpkg\_check\_linkage](vcpkg_check_linkage.md) - [vcpkg\_clean\_msbuild](vcpkg_clean_msbuild.md) - [vcpkg\_configure\_cmake](vcpkg_configure_cmake.md) diff --git a/docs/maintainers/vcpkg_check_features.md b/docs/maintainers/vcpkg_check_features.md new file mode 100644 index 000000000..ca2debf85 --- /dev/null +++ b/docs/maintainers/vcpkg_check_features.md @@ -0,0 +1,41 @@ +# vcpkg_check_features + +Check if one or more features are part of the package installation. + +## Usage +```cmake +vcpkg_check_features( + + [ ] + ... +) +``` + +`vcpkg_check_features` accepts a list of (feature, output_variable) pairs. +The syntax is similar to the `PROPERTIES` argument of `set_target_properties`. + +`vcpkg_check_features` will create a variable `FEATURE_OPTIONS` in the +parent scope, which you can pass as a part of `OPTIONS` argument when +calling functions like `vcpkg_config_cmake`: +```cmake +vcpkg_config_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + -DBUILD_TESTING=ON + ${FEATURE_OPTIONS} +) +``` + +## Notes +`vcpkg_check_features` is supposed to be called only once. Otherwise, the +`FEATURE_OPTIONS` variable set by a previous call will be overwritten. + +## Examples + +* [czmq](https://github.com/microsoft/vcpkg/blob/master/ports/czmq/portfile.cmake) +* [oniguruma](https://github.com/microsoft/vcpkg/blob/master/ports/oniguruma/portfile.cmake) +* [xtensor](https://github.com/microsoft/vcpkg/blob/master/ports/xtensor/portfile.cmake) + +## Source +[scripts/cmake/vcpkg_check_features.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_check_features.cmake) -- cgit v1.2.3 From a7bbee315276d37344a464eb95b02ca20ff1b0c2 Mon Sep 17 00:00:00 2001 From: myd7349 Date: Sat, 29 Jun 2019 23:29:13 +0800 Subject: [vcpkg] Update vcpkg_check_features document (#7091) * [oniguruma] Fix misusage of vcpkg_check_features * [xsimd] Use vcpkg_check_features --- docs/maintainers/vcpkg_check_features.md | 48 ++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 9 deletions(-) (limited to 'docs/maintainers') diff --git a/docs/maintainers/vcpkg_check_features.md b/docs/maintainers/vcpkg_check_features.md index ca2debf85..46ee9051a 100644 --- a/docs/maintainers/vcpkg_check_features.md +++ b/docs/maintainers/vcpkg_check_features.md @@ -1,6 +1,6 @@ # vcpkg_check_features -Check if one or more features are part of the package installation. +Check if one or more features are a part of the package installation. ## Usage ```cmake @@ -11,12 +11,9 @@ vcpkg_check_features( ) ``` -`vcpkg_check_features` accepts a list of (feature, output_variable) pairs. -The syntax is similar to the `PROPERTIES` argument of `set_target_properties`. +`vcpkg_check_features` accepts a list of (feature, output_variable) pairs. If a feature is specified, the corresponding output variable will be set as `ON`, or `OFF` otherwise. The syntax is similar to the `PROPERTIES` argument of `set_target_properties`. -`vcpkg_check_features` will create a variable `FEATURE_OPTIONS` in the -parent scope, which you can pass as a part of `OPTIONS` argument when -calling functions like `vcpkg_config_cmake`: +`vcpkg_check_features` will create a variable `FEATURE_OPTIONS` in the parent scope, which you can pass as a part of `OPTIONS` argument when calling functions like `vcpkg_config_cmake`: ```cmake vcpkg_config_cmake( SOURCE_PATH ${SOURCE_PATH} @@ -28,13 +25,46 @@ vcpkg_config_cmake( ``` ## Notes -`vcpkg_check_features` is supposed to be called only once. Otherwise, the -`FEATURE_OPTIONS` variable set by a previous call will be overwritten. +```cmake +vcpkg_check_features( ) +``` +can be used as a replacement of: +```cmake +if( IN_LIST FEATURES) + set( ON) +else() + set( OFF) +endif() +``` + +However, if you have a feature that was checked like this before: +```cmake +if( IN_LIST FEATURES) + set( OFF) +else() + set( ON) +endif() +``` +then you should not use `vcpkg_check_features` instead. [```oniguruma```](https://github.com/microsoft/vcpkg/blob/master/ports/oniguruma/portfile.cmake), for example, has a feature named `non-posix` which is checked with: +```cmake +if("non-posix" IN_LIST FEATURES) + set(ENABLE_POSIX_API OFF) +else() + set(ENABLE_POSIX_API ON) +endif() +``` +and by replacing these code with: +```cmake +vcpkg_check_features(non-posix ENABLE_POSIX_API) +``` +is totally wrong. + +`vcpkg_check_features` is supposed to be called only once. Otherwise, the `FEATURE_OPTIONS` variable set by a previous call will be overwritten. ## Examples * [czmq](https://github.com/microsoft/vcpkg/blob/master/ports/czmq/portfile.cmake) -* [oniguruma](https://github.com/microsoft/vcpkg/blob/master/ports/oniguruma/portfile.cmake) +* [xsimd](https://github.com/microsoft/vcpkg/blob/master/ports/xsimd/portfile.cmake) * [xtensor](https://github.com/microsoft/vcpkg/blob/master/ports/xtensor/portfile.cmake) ## Source -- cgit v1.2.3 From e2049cb9754006b6a2abed781d34030e16702fad Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Sun, 30 Jun 2019 09:31:22 -0700 Subject: [vcpkg_configure_cmake] Add NO_CHARSET_FLAG option (#7074) * [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 --- docs/maintainers/vcpkg_configure_cmake.md | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'docs/maintainers') diff --git a/docs/maintainers/vcpkg_configure_cmake.md b/docs/maintainers/vcpkg_configure_cmake.md index f61a6fa20..b78ef54d9 100644 --- a/docs/maintainers/vcpkg_configure_cmake.md +++ b/docs/maintainers/vcpkg_configure_cmake.md @@ -8,6 +8,7 @@ vcpkg_configure_cmake( SOURCE_PATH <${SOURCE_PATH}> [PREFER_NINJA] [DISABLE_PARALLEL_CONFIGURE] + [NO_CHARSET_FLAG] [GENERATOR <"NMake Makefiles">] [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] [OPTIONS_RELEASE <-DOPTIMIZE=1>...] @@ -27,6 +28,11 @@ Disables running the CMake configure step in parallel. This is needed for libraries which write back into their source directory during configure. +### NO_CHARSET_FLAG +Disables passing `utf-8` as the default character set to `CMAKE_C_FLAGS` and `CMAKE_CXX_FLAGS`. + +This is needed for libraries that set their own source code's character set. + ### GENERATOR Specifies the precise generator to use. -- cgit v1.2.3 From d2b3ef9e88fcb51b7273a76abe6e78d49d73a329 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Mon, 1 Jul 2019 22:39:51 -0700 Subject: Fix vcpkg_from_git (#7082) * [vcpkg_from_git/fdlibm] Fix flaky sha256 issues * [doc] regenerate docs --- docs/maintainers/vcpkg_from_git.md | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to 'docs/maintainers') diff --git a/docs/maintainers/vcpkg_from_git.md b/docs/maintainers/vcpkg_from_git.md index 6b24a558d..4b9a26c62 100644 --- a/docs/maintainers/vcpkg_from_git.md +++ b/docs/maintainers/vcpkg_from_git.md @@ -8,7 +8,6 @@ vcpkg_from_git( OUT_SOURCE_PATH URL REF <59f7335e4d...> - SHA512 [PATCHES ...] ) ``` @@ -20,17 +19,10 @@ Specifies the out-variable that will contain the extracted location. This should be set to `SOURCE_PATH` by convention. ### URL -The url of the git repository. - -### SHA512 -The SHA512 hash that should match the archive form of the commit. - -This is most easily determined by first setting it to `0`, then trying to build the port. The error message will contain the full hash, which can be copied back into the portfile. +The url of the git repository. Must start with `https`. ### REF -A stable git commit-ish (ideally a tag or commit) that will not change contents. **This should not be a branch.** - -For repositories without official releases, this can be set to the full commit id of the current latest master. +The git sha of the commit to download. ### PATCHES A list of patches to be applied to the extracted sources. @@ -38,7 +30,7 @@ A list of patches to be applied to the extracted sources. Relative paths are based on the port directory. ## Notes: -`OUT_SOURCE_PATH`, `REF`, `SHA512`, and `URL` must be specified. +`OUT_SOURCE_PATH`, `REF`, and `URL` must be specified. ## Examples: -- cgit v1.2.3 From 0079c186f0fd8f8f64afc7e0796dd2aa2882e2e3 Mon Sep 17 00:00:00 2001 From: Phil Christensen Date: Tue, 23 Jul 2019 14:49:45 -0700 Subject: [docs] add notes about manual-link (#7390) --- docs/maintainers/maintainer-guide.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'docs/maintainers') diff --git a/docs/maintainers/maintainer-guide.md b/docs/maintainers/maintainer-guide.md index 0baa45a02..e4938844f 100644 --- a/docs/maintainers/maintainer-guide.md +++ b/docs/maintainers/maintainer-guide.md @@ -34,7 +34,7 @@ At this time, the following helpers are deprecated: ### Avoid excessive comments in portfiles -Ideally, portfiles should be short, simple, and as declarative as possible. Remove any helper comments introduced by the `create` command before submitting a PR. +Ideally, portfiles should be short, simple, and as declarative as possible. Remove any boiler plate comments introduced by the `create` command before submitting a PR. ## Build Techniques @@ -85,6 +85,15 @@ vcpkg_configure_cmake( Note that `ZLIB` in the above is case-sensitive. See the [cmake documentation](https://cmake.org/cmake/help/v3.15/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.html) for more details. +### Place conflicting libs in a `manual-link` directory + +A lib is considered conflicting if it does any of the following: ++ Define `main` ++ Define malloc ++ Define symbols that are also declared in other libraries + +Conflicting libs are typically by design and not considered a defect. Because some build systems link against everything in the lib directory, these should be moved into a subdirectory named `manual-link`. + ## Versioning ### Follow common conventions for the `Version:` field @@ -157,7 +166,7 @@ While `portfile.cmake`'s and `CMakeLists.txt`'s share a common syntax and core C Portfiles have direct access to variables set in the triplet file, but `CMakeLists.txt`s do not (though there is often a translation that happens -- `VCPKG_LIBRARY_LINKAGE` versus `BUILD_SHARED_LIBS`). -Finally, portfiles and CMake builds invoked by portfiles are run in different processes. Conceptually: +Portfiles and CMake builds invoked by portfiles are run in different processes. Conceptually: ```no-highlight +----------------------------+ +------------------------------------+ -- cgit v1.2.3 From a3a6530631df905eb5c0e26d0b20d7d548e0c465 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Tue, 13 Aug 2019 20:13:55 -0700 Subject: [vcpkg_check_features] Set output variable explicitly and allow reverse-logic check (#7558) * [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 --- docs/maintainers/portfile-functions.md | 1 + docs/maintainers/vcpkg_check_features.md | 171 +++++++++++++++++++++-------- docs/maintainers/vcpkg_configure_cmake.md | 10 +- docs/maintainers/vcpkg_prettify_command.md | 17 +++ 4 files changed, 148 insertions(+), 51 deletions(-) create mode 100644 docs/maintainers/vcpkg_prettify_command.md (limited to 'docs/maintainers') diff --git a/docs/maintainers/portfile-functions.md b/docs/maintainers/portfile-functions.md index b98d89192..eadebf49a 100644 --- a/docs/maintainers/portfile-functions.md +++ b/docs/maintainers/portfile-functions.md @@ -24,4 +24,5 @@ - [vcpkg\_from\_gitlab](vcpkg_from_gitlab.md) - [vcpkg\_install\_cmake](vcpkg_install_cmake.md) - [vcpkg\_install\_msbuild](vcpkg_install_msbuild.md) +- [vcpkg\_prettify\_command](vcpkg_prettify_command.md) - [vcpkg\_test\_cmake](vcpkg_test_cmake.md) diff --git a/docs/maintainers/vcpkg_check_features.md b/docs/maintainers/vcpkg_check_features.md index 46ee9051a..cec01dde2 100644 --- a/docs/maintainers/vcpkg_check_features.md +++ b/docs/maintainers/vcpkg_check_features.md @@ -1,71 +1,148 @@ # vcpkg_check_features - -Check if one or more features are a part of the package installation. +Check if one or more features are a part of a package installation. ## Usage ```cmake vcpkg_check_features( - - [ ] - ... + OUT_FEATURE_OPTIONS + [FEATURES + + [ ] + ...] + [INVERTED_FEATURES + + [ ] + ...] ) ``` +`vcpkg_check_features()` accepts these parameters: -`vcpkg_check_features` accepts a list of (feature, output_variable) pairs. If a feature is specified, the corresponding output variable will be set as `ON`, or `OFF` otherwise. The syntax is similar to the `PROPERTIES` argument of `set_target_properties`. +* `OUT_FEATURE_OPTIONS`: + An output variable, the function will clear the variable passed to `OUT_FEATURE_OPTIONS` + and then set it to contain a list of option definitions (`-D=ON|OFF`). + + This should be set to `FEATURE_OPTIONS` by convention. + +* `FEATURES`: + A list of (`FEATURE_NAME`, `OPTION_NAME`) pairs. + For each `FEATURE_NAME` a definition is added to `OUT_FEATURE_OPTIONS` in the form of: + + * `-D=ON`, if a feature is specified for installation, + * `-D=OFF`, otherwise. + +* `INVERTED_FEATURES`: + A list of (`FEATURE_NAME`, `OPTION_NAME`) pairs, uses reversed logic from `FEATURES`. + For each `FEATURE_NAME` a definition is added to `OUT_FEATURE_OPTIONS` in the form of: + + * `-D=OFF`, if a feature is specified for installation, + * `-D=ON`, otherwise. -`vcpkg_check_features` will create a variable `FEATURE_OPTIONS` in the parent scope, which you can pass as a part of `OPTIONS` argument when calling functions like `vcpkg_config_cmake`: -```cmake -vcpkg_config_cmake( - SOURCE_PATH ${SOURCE_PATH} - PREFER_NINJA - OPTIONS - -DBUILD_TESTING=ON - ${FEATURE_OPTIONS} -) -``` ## Notes + +The `FEATURES` name parameter can be omitted if no `INVERTED_FEATURES` are used. + +At least one (`FEATURE_NAME`, `OPTION_NAME`) pair must be passed to the function call. + +Arguments passed to `FEATURES` and `INVERTED_FEATURES` are not validated to prevent duplication. +If the same (`FEATURE_NAME`, `OPTION_NAME`) pair is passed to both lists, +two conflicting definitions are added to `OUT_FEATURE_OPTIONS`. + + +## Examples + +### Example 1: Regular features + ```cmake -vcpkg_check_features( ) -``` -can be used as a replacement of: -```cmake -if( IN_LIST FEATURES) - set( ON) -else() - set( OFF) -endif() +$ ./vcpkg install mimalloc[asm,secure] + +# ports/mimalloc/portfile.cmake +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + # Keyword FEATURES is optional if INVERTED_FEATURES are not used + asm MI_SEE_ASM + override MI_OVERRIDE + secure MI_SECURE +) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + # Expands to "-DMI_SEE_ASM=ON; -DMI_OVERRIDE=OFF; -DMI_SECURE=ON" + ${FEATURE_OPTIONS} +) ``` -However, if you have a feature that was checked like this before: +### Example 2: Inverted features + ```cmake -if( IN_LIST FEATURES) - set( OFF) -else() - set( ON) -endif() +$ ./vcpkg install cpprestsdk[websockets] + +# ports/cpprestsdk/portfile.cmake +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + INVERTED_FEATURES # <- Keyword INVERTED_FEATURES required + brotli CPPREST_EXCLUDE_BROTLI + websockets CPPREST_EXCLUDE_WEBSOCKETS +) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + # Expands to "-DCPPREST_EXCLUDE_BROTLI=ON; -DCPPREST_EXCLUDE_WEBSOCKETS=OFF" + ${FEATURE_OPTIONS} +) ``` -then you should not use `vcpkg_check_features` instead. [```oniguruma```](https://github.com/microsoft/vcpkg/blob/master/ports/oniguruma/portfile.cmake), for example, has a feature named `non-posix` which is checked with: + +### Example 3: Set multiple options for same feature + ```cmake -if("non-posix" IN_LIST FEATURES) - set(ENABLE_POSIX_API OFF) -else() - set(ENABLE_POSIX_API ON) -endif() -``` -and by replacing these code with: +$ ./vcpkg install pcl[cuda] + +# ports/pcl/portfile.cmake +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + cuda WITH_CUDA + cuda BUILD_CUDA + cuda BUILD_GPU +) + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + # Expands to "-DWITH_CUDA=ON; -DBUILD_CUDA=ON; -DBUILD_GPU=ON" + ${FEATURE_OPTIONS} +) +``` + +### Example 4: Use regular and inverted features + ```cmake -vcpkg_check_features(non-posix ENABLE_POSIX_API) -``` -is totally wrong. +$ ./vcpkg install rocksdb[tbb] -`vcpkg_check_features` is supposed to be called only once. Otherwise, the `FEATURE_OPTIONS` variable set by a previous call will be overwritten. +# ports/rocksdb/portfile.cmake +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES # <- Keyword FEATURES is required because INVERTED_FEATURES are being used + tbb WITH_TBB + INVERTED_FEATURES + tbb ROCKSDB_IGNORE_PACKAGE_TBB +) -## Examples +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + # Expands to "-DWITH_TBB=ON; -DROCKSDB_IGNORE_PACKAGE_TBB=OFF" + ${FEATURE_OPTIONS} +) +``` + +## Examples in portfiles + +* [cpprestsdk](https://github.com/microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake) +* [pcl](https://github.com/microsoft/vcpkg/blob/master/ports/pcl/portfile.cmake) +* [rocksdb](https://github.com/microsoft/vcpkg/blob/master/ports/rocksdb/portfile.cmake) -* [czmq](https://github.com/microsoft/vcpkg/blob/master/ports/czmq/portfile.cmake) -* [xsimd](https://github.com/microsoft/vcpkg/blob/master/ports/xsimd/portfile.cmake) -* [xtensor](https://github.com/microsoft/vcpkg/blob/master/ports/xtensor/portfile.cmake) ## Source [scripts/cmake/vcpkg_check_features.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_check_features.cmake) diff --git a/docs/maintainers/vcpkg_configure_cmake.md b/docs/maintainers/vcpkg_configure_cmake.md index b78ef54d9..ebbd92ed1 100644 --- a/docs/maintainers/vcpkg_configure_cmake.md +++ b/docs/maintainers/vcpkg_configure_cmake.md @@ -18,14 +18,15 @@ vcpkg_configure_cmake( ## Parameters ### SOURCE_PATH -Specifies the directory containing the `CMakeLists.txt`. By convention, this is usually set in the portfile as the variable `SOURCE_PATH`. +Specifies the directory containing the `CMakeLists.txt`. +By convention, this is usually set in the portfile as the variable `SOURCE_PATH`. ### PREFER_NINJA -Indicates that, when available, Vcpkg should use Ninja to perform the build. This should be specified unless the port is known to not work under Ninja. +Indicates that, when available, Vcpkg should use Ninja to perform the build. +This should be specified unless the port is known to not work under Ninja. ### DISABLE_PARALLEL_CONFIGURE Disables running the CMake configure step in parallel. - This is needed for libraries which write back into their source directory during configure. ### NO_CHARSET_FLAG @@ -36,7 +37,8 @@ This is needed for libraries that set their own source code's character set. ### GENERATOR Specifies the precise generator to use. -This is useful if some project-specific buildsystem has been wrapped in a cmake script that won't perform an actual build. If used for this purpose, it should be set to "NMake Makefiles". +This is useful if some project-specific buildsystem has been wrapped in a cmake script that won't perform an actual build. +If used for this purpose, it should be set to "NMake Makefiles". ### OPTIONS Additional options passed to CMake during the configuration. diff --git a/docs/maintainers/vcpkg_prettify_command.md b/docs/maintainers/vcpkg_prettify_command.md new file mode 100644 index 000000000..1856e06b4 --- /dev/null +++ b/docs/maintainers/vcpkg_prettify_command.md @@ -0,0 +1,17 @@ +# vcpkg_prettify_command + +Turns list of command arguments into a formatted string. + +## Usage +```cmake +vcpkg_prettify_command() +``` + +## Examples + +* `scripts/cmake/vcpkg_execute_build_process.cmake` +* `scripts/cmake/vcpkg_execute_required_process.cmake` +* `scripts/cmake/vcpkg_execute_required_process_repeat.cmake` + +## Source +[scripts/cmake/vcpkg_prettify_command.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_prettify_command.cmake) -- cgit v1.2.3 From 8e7ce6d91a060bba5f9e252a5d9aad92f5bd4a56 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Mon, 19 Aug 2019 12:28:30 -0700 Subject: Add guideline for VCPKG__FLAGS (#7751) --- docs/maintainers/maintainer-guide.md | 85 ++++++++++++++++++++++++++++-------- 1 file changed, 67 insertions(+), 18 deletions(-) (limited to 'docs/maintainers') diff --git a/docs/maintainers/maintainer-guide.md b/docs/maintainers/maintainer-guide.md index e4938844f..f52172356 100644 --- a/docs/maintainers/maintainer-guide.md +++ b/docs/maintainers/maintainer-guide.md @@ -1,26 +1,37 @@ # Maintainer Guidelines and Policies -This document lists a set of policies that you should apply when adding or updating a port recipe. It is intended to serve the role of [Debian's Policy Manual](https://www.debian.org/doc/debian-policy/), [Homebrew's Maintainer Guidelines](https://docs.brew.sh/Maintainer-Guidelines), and [Homebrew's Formula Cookbook](https://docs.brew.sh/Formula-Cookbook). +This document lists a set of policies that you should apply when adding or updating a port recipe. +It is intended to serve the role of +[Debian's Policy Manual](https://www.debian.org/doc/debian-policy/), +[Homebrew's Maintainer Guidelines](https://docs.brew.sh/Maintainer-Guidelines), and +[Homebrew's Formula Cookbook](https://docs.brew.sh/Formula-Cookbook). ## PR Structure ### Make separate Pull Requests per port -Whenever possible, separate changes into multiple PR's. This makes them significantly easier to review and prevents issues with one set of changes from holding up every other change. +Whenever possible, separate changes into multiple PRs. +This makes them significantly easier to review and prevents issues with one set of changes from holding up every other change. ### Avoid trivial changes in untouched files -For example, avoid reformatting or renaming variables in portfiles that otherwise have no reason to be modified for the issue at hand. However, if you need to modify the file for the primary purpose of the PR (updating the library), then obviously beneficial changes like fixing typos are appreciated! +For example, avoid reformatting or renaming variables in portfiles that otherwise have no reason to be modified for the issue at hand. +However, if you need to modify the file for the primary purpose of the PR (updating the library), +then obviously beneficial changes like fixing typos are appreciated! ### Check names against other repositories -A good service to check many at once is [Repology](https://repology.org/). If the library you are adding could be confused with another one, consider renaming to make it clear. +A good service to check many at once is [Repology](https://repology.org/). +If the library you are adding could be confused with another one, +consider renaming to make it clear. ### Use GitHub Draft PRs -GitHub Draft PRs are a great way to get CI or human feedback on work that isn't yet ready to merge. Most new PRs should be opened as drafts and converted to normal PRs once the CI passes. +GitHub Draft PRs are a great way to get CI or human feedback on work that isn't yet ready to merge. +Most new PRs should be opened as drafts and converted to normal PRs once the CI passes. -More information about GitHub Draft PRs: https://github.blog/2019-02-14-introducing-draft-pull-requests/ +More information about GitHub Draft PRs: +https://github.blog/2019-02-14-introducing-draft-pull-requests/ ## Portfiles @@ -28,29 +39,33 @@ More information about GitHub Draft PRs: https://github.blog/2019-02-14-introduc At this time, the following helpers are deprecated: -1. `vcpkg_extract_archive()` should be replaced by `vcpkg_extract_archive_ex()` -2. `vcpkg_apply_patches()` should be replaced by the `PATCHES` arguments to the "extract" helpers (e.g. `vcpkg_from_github()`) -3. `vcpkg_build_msbuild()` should be replaced by `vcpkg_install_msbuild()` +1. `vcpkg_extract_archive()` should be replaced by [`vcpkg_extract_archive_ex()`](vcpkg_extract_archive_ex.md) +2. `vcpkg_apply_patches()` should be replaced by the `PATCHES` arguments to the "extract" helpers (e.g. [`vcpkg_from_github()`](vcpkg_from_github.md)) +3. `vcpkg_build_msbuild()` should be replaced by [`vcpkg_install_msbuild()`](vcpkg_install_msbuild.md) ### Avoid excessive comments in portfiles -Ideally, portfiles should be short, simple, and as declarative as possible. Remove any boiler plate comments introduced by the `create` command before submitting a PR. +Ideally, portfiles should be short, simple, and as declarative as possible. +Remove any boiler plate comments introduced by the `create` command before submitting a PR. ## Build Techniques ### Do not use vendored dependencies -Do not use embedded copies of libraries. All dependencies should be split out and packaged separately so they can be updated and maintained. +Do not use embedded copies of libraries. +All dependencies should be split out and packaged separately so they can be updated and maintained. ### Prefer using CMake -When multiple buildsystems are available, prefer using CMake. Additionally, when appropriate, it can be easier and more maintainable to rewrite alternative buildsystems into CMake using `file(GLOB)` directives. +When multiple buildsystems are available, prefer using CMake. +Additionally, when appropriate, it can be easier and more maintainable to rewrite alternative buildsystems into CMake using `file(GLOB)` directives. Examples: [abseil](../../ports/abseil/portfile.cmake) ### Choose either static or shared binaries -By default, `vcpkg_configure_cmake()` will pass in the appropriate setting for `BUILD_SHARED_LIBS`, however for libraries that don't respect that variable, you can switch on `VCPKG_LIBRARY_LINKAGE`: +By default, `vcpkg_configure_cmake()` will pass in the appropriate setting for `BUILD_SHARED_LIBS`, +however for libraries that don't respect that variable, you can switch on `VCPKG_LIBRARY_LINKAGE`: ```cmake string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" KEYSTONE_BUILD_STATIC) @@ -67,19 +82,37 @@ vcpkg_configure_cmake( ### When defining features, explicitly control dependencies -When defining a feature that captures an optional dependency, ensure that the dependency will not be used accidentally when the feature is not explicitly enabled. For example: +When defining a feature that captures an optional dependency, +ensure that the dependency will not be used accidentally when the feature is not explicitly enabled. ```cmake -set(CMAKE_DISABLE_FIND_PACKAGE_ZLIB ON) -if("zlib" IN_LIST FEATURES) - set(CMAKE_DISABLE_FIND_PACKAGE_ZLIB OFF) +if ("zlib" IN_LIST FEATURES) + set(CMAKE_DISABLE_FIND_PACKAGE_ZLIB OFF) +else() + set(CMAKE_DISABLE_FIND_PACKAGE_ZLIB ON) endif() +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + -CMAKE_DISABLE_FIND_PACKAGE_ZLIB=${CMAKE_DISABLE_FIND_PACKAGE_ZLIB} +) +``` + +The snippet below using `vcpkg_check_features()` is equivalent, [see the documentation](vcpkg_check_features.md). + +```cmake +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + INVERTED_FEATURES + "zlib" CMAKE_DISABLE_FIND_PACKAGE_ZLIB +) + vcpkg_configure_cmake( SOURCE_PATH ${SOURCE_PATH} PREFER_NINJA OPTIONS - -DCMAKE_DISABLE_FIND_PACKAGE_ZLIB=${CMAKE_DISABLE_FIND_PACKAGE_ZLIB} + ${FEATURE_OPTIONS} ) ``` @@ -125,6 +158,22 @@ Common options that allow avoiding patching: 2. [CMAKE] Calls to `find_package(XYz)` in CMake scripts can be disabled via [`-DCMAKE_DISABLE_FIND_PACKAGE_XYz=ON`](https://cmake.org/cmake/help/v3.15/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.html) 3. [CMAKE] Cache variables (declared as `set(VAR "value" CACHE STRING "Documentation")` or `option(VAR "Documentation" "Default Value")`) can be overriden by just passing them in on the command line as `-DVAR:STRING=Foo`. One notable exception is if the `FORCE` parameter is passed to `set()`. See also the [CMake `set` documentation](https://cmake.org/cmake/help/v3.15/command/set.html) +### Prefer patching over overriding `VCPKG_` values + +Some variables prefixed with `VCPKG_` have an equivalent `CMAKE_`. +However, not all of them are passed to the internal package build [(see implementation: Windows toolchain)](../../scripts/toolchains/windows.cmake). + +Consider the following example: + +```cmake +set(VCPKG_C_FLAGS "-O2 ${VCPKG_C_FLAGS}") +set(VCPKG_CXX_FLAGS "-O2 ${VCPKG_CXX_FLAGS}") +``` + +Using `vcpkg`'s built-in toolchains this works, because the value of `VCPKG__FLAGS` is forwarded to the appropriate `CMAKE_LANG_FLAGS` variable. But, a custom toolchain that is not aware of `vcpkg`'s variables will not forward them. + +Because of this, it is preferable to patch the buildsystem directly when setting `CMAKE__FLAGS`. + ### Minimize patches When making changes to a library, strive to minimize the final diff. This means you should _not_ reformat the upstream source code when making changes that affect a region. Also, when disabling a conditional, it is better to add a `AND FALSE` or `&& 0` to the condition than to delete every line of the conditional. -- cgit v1.2.3 From 65d4bc146bf7c1c21989b680497b1f6f9a09c967 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Wed, 28 Aug 2019 11:47:17 -0700 Subject: [vcpkg install] Enable Download Mode (#7797) * [portfile functions] Override execute_process() to accept ALLOW_IN_DOWNLOAD_MODE option * [vcpkg install] Set VCPKG_DOWNLOAD_MODE when using --only-downloads option * [vcpkg_find_acquire_program] Allow in Download Mode * Don't stop when build fails for a package * Download sources for all packages in dependency graph * Improve output messages * Enable acquiring MSYS packages in download mode * Documentation * Update documentation * execute_process() always fails on Download Mode * Regenerate docs and fix formatting * Run clang-format * Use _execute_process on vcpkg_from_ helpers --- docs/maintainers/execute_process.md | 10 +++++++ docs/maintainers/portfile-functions.md | 3 ++ docs/maintainers/vcpkg_common_definitions.md | 19 ++++++++++++ docs/maintainers/vcpkg_execute_required_process.md | 4 +++ docs/maintainers/vcpkg_fail_port_install.md | 34 ++++++++++++++++++++++ 5 files changed, 70 insertions(+) create mode 100644 docs/maintainers/execute_process.md create mode 100644 docs/maintainers/vcpkg_common_definitions.md create mode 100644 docs/maintainers/vcpkg_fail_port_install.md (limited to 'docs/maintainers') diff --git a/docs/maintainers/execute_process.md b/docs/maintainers/execute_process.md new file mode 100644 index 000000000..cbb339509 --- /dev/null +++ b/docs/maintainers/execute_process.md @@ -0,0 +1,10 @@ +# execute_process + +Intercepts all calls to execute_process() inside portfiles and fails when Download Mode +is enabled. + +In order to execute a process in Download Mode call `_execute_process()` instead. + + +## Source +[scripts/cmake/execute_process.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/execute_process.cmake) diff --git a/docs/maintainers/portfile-functions.md b/docs/maintainers/portfile-functions.md index eadebf49a..bbd5d23ab 100644 --- a/docs/maintainers/portfile-functions.md +++ b/docs/maintainers/portfile-functions.md @@ -1,6 +1,7 @@ # Portfile helper functions +- [execute\_process](execute_process.md) - [vcpkg\_acquire\_msys](vcpkg_acquire_msys.md) - [vcpkg\_add\_to\_path](vcpkg_add_to_path.md) - [vcpkg\_apply\_patches](vcpkg_apply_patches.md) @@ -9,6 +10,7 @@ - [vcpkg\_check\_features](vcpkg_check_features.md) - [vcpkg\_check\_linkage](vcpkg_check_linkage.md) - [vcpkg\_clean\_msbuild](vcpkg_clean_msbuild.md) +- [vcpkg\_common\_definitions](vcpkg_common_definitions.md) - [vcpkg\_configure\_cmake](vcpkg_configure_cmake.md) - [vcpkg\_copy\_pdbs](vcpkg_copy_pdbs.md) - [vcpkg\_copy\_tool\_dependencies](vcpkg_copy_tool_dependencies.md) @@ -17,6 +19,7 @@ - [vcpkg\_execute\_required\_process](vcpkg_execute_required_process.md) - [vcpkg\_extract\_source\_archive](vcpkg_extract_source_archive.md) - [vcpkg\_extract\_source\_archive\_ex](vcpkg_extract_source_archive_ex.md) +- [vcpkg\_fail\_port\_install](vcpkg_fail_port_install.md) - [vcpkg\_find\_acquire\_program](vcpkg_find_acquire_program.md) - [vcpkg\_from\_bitbucket](vcpkg_from_bitbucket.md) - [vcpkg\_from\_git](vcpkg_from_git.md) diff --git a/docs/maintainers/vcpkg_common_definitions.md b/docs/maintainers/vcpkg_common_definitions.md new file mode 100644 index 000000000..3bb922b17 --- /dev/null +++ b/docs/maintainers/vcpkg_common_definitions.md @@ -0,0 +1,19 @@ +# vcpkg_common_definitions + +File contains helpful variabls for portfiles which are commonly needed or used. + +## The following variables are available: +```cmake +VCPKG_TARGET_IS_ with being one of the following: WINDOWS, UWP, LINUX, OSX, ANDROID, FREEBSD. only defined if +VCPKG_TARGET_STATIC_LIBRARY_PREFIX static library prefix for target (same as CMAKE_STATIC_LIBRARY_PREFIX) +VCPKG_TARGET_STATIC_LIBRARY_SUFFIX static library suffix for target (same as CMAKE_STATIC_LIBRARY_SUFFIX) +VCPKG_TARGET_SHARED_LIBRARY_PREFIX shared library prefix for target (same as CMAKE_SHARED_LIBRARY_PREFIX) +VCPKG_TARGET_SHARED_LIBRARY_SUFFIX shared library suffix for target (same as CMAKE_SHARED_LIBRARY_SUFFIX) +``` + +CMAKE_STATIC_LIBRARY_PREFIX, CMAKE_STATIC_LIBRARY_SUFFIX, CMAKE_SHARED_LIBRARY_PREFIX, CMAKE_SHARED_LIBRARY_SUFFIX are defined for the target so that +portfiles are able to use find_library calls to discover dependent libraries within the current triplet for ports. + + +## Source +[scripts/cmake/vcpkg_common_definitions.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_common_definitions.cmake) diff --git a/docs/maintainers/vcpkg_execute_required_process.md b/docs/maintainers/vcpkg_execute_required_process.md index 4b1a7e081..26a116782 100644 --- a/docs/maintainers/vcpkg_execute_required_process.md +++ b/docs/maintainers/vcpkg_execute_required_process.md @@ -11,6 +11,10 @@ vcpkg_execute_required_process( ) ``` ## Parameters +### ALLOW_IN_DOWNLOAD_MODE +Allows the command to execute in Download Mode. +[See execute_process() override](../../scripts/cmake/execute_process.cmake). + ### COMMAND The command to be executed, along with its arguments. diff --git a/docs/maintainers/vcpkg_fail_port_install.md b/docs/maintainers/vcpkg_fail_port_install.md new file mode 100644 index 000000000..b3b48ad5e --- /dev/null +++ b/docs/maintainers/vcpkg_fail_port_install.md @@ -0,0 +1,34 @@ +# vcpkg_fail_port_install + +Fails the current portfile with a (default) error message + +## Usage +```cmake +vcpkg_fail_port_install([MESSAGE ] [ON_TARGET [ ...]] +``` + +## Parameters +### MESSAGE +Additional failure message. If non is given a default message will be displayed depending on the failure condition + +### ALWAYS +will always fail early + +### ON_TARGET +targets for which the build should fail early. Valid targets are from VCPKG_IS_TARGET_ (see vcpkg_common_definitions.cmake) + +### ON_ARCH +architecture for which the build should fail early. + +### ON_CRT_LINKAGE +CRT linkage for which the build should fail early. + +### ON_LIBRARY_LINKAGE +library linkage for which the build should fail early. + +## Examples + +* [aws-lambda-cpp](https://github.com/Microsoft/vcpkg/blob/master/ports/aws-lambda-cpp/portfile.cmake) + +## Source +[scripts/cmake/vcpkg_fail_port_install.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_fail_port_install.cmake) -- cgit v1.2.3 From 4b404e8cfbdde4277733adaacc399fa4e1b57320 Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Wed, 28 Aug 2019 11:59:30 -0700 Subject: Revert "[vcpkg install] Enable Download Mode (#7797)" (#7949) This reverts commit 65d4bc146bf7c1c21989b680497b1f6f9a09c967. --- docs/maintainers/execute_process.md | 10 ------- docs/maintainers/portfile-functions.md | 3 -- docs/maintainers/vcpkg_common_definitions.md | 19 ------------ docs/maintainers/vcpkg_execute_required_process.md | 4 --- docs/maintainers/vcpkg_fail_port_install.md | 34 ---------------------- 5 files changed, 70 deletions(-) delete mode 100644 docs/maintainers/execute_process.md delete mode 100644 docs/maintainers/vcpkg_common_definitions.md delete mode 100644 docs/maintainers/vcpkg_fail_port_install.md (limited to 'docs/maintainers') diff --git a/docs/maintainers/execute_process.md b/docs/maintainers/execute_process.md deleted file mode 100644 index cbb339509..000000000 --- a/docs/maintainers/execute_process.md +++ /dev/null @@ -1,10 +0,0 @@ -# execute_process - -Intercepts all calls to execute_process() inside portfiles and fails when Download Mode -is enabled. - -In order to execute a process in Download Mode call `_execute_process()` instead. - - -## Source -[scripts/cmake/execute_process.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/execute_process.cmake) diff --git a/docs/maintainers/portfile-functions.md b/docs/maintainers/portfile-functions.md index bbd5d23ab..eadebf49a 100644 --- a/docs/maintainers/portfile-functions.md +++ b/docs/maintainers/portfile-functions.md @@ -1,7 +1,6 @@ # Portfile helper functions -- [execute\_process](execute_process.md) - [vcpkg\_acquire\_msys](vcpkg_acquire_msys.md) - [vcpkg\_add\_to\_path](vcpkg_add_to_path.md) - [vcpkg\_apply\_patches](vcpkg_apply_patches.md) @@ -10,7 +9,6 @@ - [vcpkg\_check\_features](vcpkg_check_features.md) - [vcpkg\_check\_linkage](vcpkg_check_linkage.md) - [vcpkg\_clean\_msbuild](vcpkg_clean_msbuild.md) -- [vcpkg\_common\_definitions](vcpkg_common_definitions.md) - [vcpkg\_configure\_cmake](vcpkg_configure_cmake.md) - [vcpkg\_copy\_pdbs](vcpkg_copy_pdbs.md) - [vcpkg\_copy\_tool\_dependencies](vcpkg_copy_tool_dependencies.md) @@ -19,7 +17,6 @@ - [vcpkg\_execute\_required\_process](vcpkg_execute_required_process.md) - [vcpkg\_extract\_source\_archive](vcpkg_extract_source_archive.md) - [vcpkg\_extract\_source\_archive\_ex](vcpkg_extract_source_archive_ex.md) -- [vcpkg\_fail\_port\_install](vcpkg_fail_port_install.md) - [vcpkg\_find\_acquire\_program](vcpkg_find_acquire_program.md) - [vcpkg\_from\_bitbucket](vcpkg_from_bitbucket.md) - [vcpkg\_from\_git](vcpkg_from_git.md) diff --git a/docs/maintainers/vcpkg_common_definitions.md b/docs/maintainers/vcpkg_common_definitions.md deleted file mode 100644 index 3bb922b17..000000000 --- a/docs/maintainers/vcpkg_common_definitions.md +++ /dev/null @@ -1,19 +0,0 @@ -# vcpkg_common_definitions - -File contains helpful variabls for portfiles which are commonly needed or used. - -## The following variables are available: -```cmake -VCPKG_TARGET_IS_ with being one of the following: WINDOWS, UWP, LINUX, OSX, ANDROID, FREEBSD. only defined if -VCPKG_TARGET_STATIC_LIBRARY_PREFIX static library prefix for target (same as CMAKE_STATIC_LIBRARY_PREFIX) -VCPKG_TARGET_STATIC_LIBRARY_SUFFIX static library suffix for target (same as CMAKE_STATIC_LIBRARY_SUFFIX) -VCPKG_TARGET_SHARED_LIBRARY_PREFIX shared library prefix for target (same as CMAKE_SHARED_LIBRARY_PREFIX) -VCPKG_TARGET_SHARED_LIBRARY_SUFFIX shared library suffix for target (same as CMAKE_SHARED_LIBRARY_SUFFIX) -``` - -CMAKE_STATIC_LIBRARY_PREFIX, CMAKE_STATIC_LIBRARY_SUFFIX, CMAKE_SHARED_LIBRARY_PREFIX, CMAKE_SHARED_LIBRARY_SUFFIX are defined for the target so that -portfiles are able to use find_library calls to discover dependent libraries within the current triplet for ports. - - -## Source -[scripts/cmake/vcpkg_common_definitions.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_common_definitions.cmake) diff --git a/docs/maintainers/vcpkg_execute_required_process.md b/docs/maintainers/vcpkg_execute_required_process.md index 26a116782..4b1a7e081 100644 --- a/docs/maintainers/vcpkg_execute_required_process.md +++ b/docs/maintainers/vcpkg_execute_required_process.md @@ -11,10 +11,6 @@ vcpkg_execute_required_process( ) ``` ## Parameters -### ALLOW_IN_DOWNLOAD_MODE -Allows the command to execute in Download Mode. -[See execute_process() override](../../scripts/cmake/execute_process.cmake). - ### COMMAND The command to be executed, along with its arguments. diff --git a/docs/maintainers/vcpkg_fail_port_install.md b/docs/maintainers/vcpkg_fail_port_install.md deleted file mode 100644 index b3b48ad5e..000000000 --- a/docs/maintainers/vcpkg_fail_port_install.md +++ /dev/null @@ -1,34 +0,0 @@ -# vcpkg_fail_port_install - -Fails the current portfile with a (default) error message - -## Usage -```cmake -vcpkg_fail_port_install([MESSAGE ] [ON_TARGET [ ...]] -``` - -## Parameters -### MESSAGE -Additional failure message. If non is given a default message will be displayed depending on the failure condition - -### ALWAYS -will always fail early - -### ON_TARGET -targets for which the build should fail early. Valid targets are from VCPKG_IS_TARGET_ (see vcpkg_common_definitions.cmake) - -### ON_ARCH -architecture for which the build should fail early. - -### ON_CRT_LINKAGE -CRT linkage for which the build should fail early. - -### ON_LIBRARY_LINKAGE -library linkage for which the build should fail early. - -## Examples - -* [aws-lambda-cpp](https://github.com/Microsoft/vcpkg/blob/master/ports/aws-lambda-cpp/portfile.cmake) - -## Source -[scripts/cmake/vcpkg_fail_port_install.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_fail_port_install.cmake) -- cgit v1.2.3 From f5c732b40d43f062278f247036b773477823813b Mon Sep 17 00:00:00 2001 From: Victor Romero Date: Wed, 28 Aug 2019 13:49:29 -0700 Subject: Download Mode (#7950) * [portfile functions] Override execute_process() to accept ALLOW_IN_DOWNLOAD_MODE option * [vcpkg install] Set VCPKG_DOWNLOAD_MODE when using --only-downloads option * [vcpkg_find_acquire_program] Allow in Download Mode * Don't stop when build fails for a package * Download sources for all packages in dependency graph * Improve output messages * Enable acquiring MSYS packages in download mode * Documentation * Update documentation * execute_process() always fails on Download Mode * Regenerate docs and fix formatting * Run clang-format * Use _execute_process on vcpkg_from_ helpers * Fix calls to _execute_process() when not in Download Mode --- docs/maintainers/execute_process.md | 10 +++++++ docs/maintainers/portfile-functions.md | 3 ++ docs/maintainers/vcpkg_common_definitions.md | 19 ++++++++++++ docs/maintainers/vcpkg_execute_required_process.md | 4 +++ docs/maintainers/vcpkg_fail_port_install.md | 34 ++++++++++++++++++++++ 5 files changed, 70 insertions(+) create mode 100644 docs/maintainers/execute_process.md create mode 100644 docs/maintainers/vcpkg_common_definitions.md create mode 100644 docs/maintainers/vcpkg_fail_port_install.md (limited to 'docs/maintainers') diff --git a/docs/maintainers/execute_process.md b/docs/maintainers/execute_process.md new file mode 100644 index 000000000..cbb339509 --- /dev/null +++ b/docs/maintainers/execute_process.md @@ -0,0 +1,10 @@ +# execute_process + +Intercepts all calls to execute_process() inside portfiles and fails when Download Mode +is enabled. + +In order to execute a process in Download Mode call `_execute_process()` instead. + + +## Source +[scripts/cmake/execute_process.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/execute_process.cmake) diff --git a/docs/maintainers/portfile-functions.md b/docs/maintainers/portfile-functions.md index eadebf49a..bbd5d23ab 100644 --- a/docs/maintainers/portfile-functions.md +++ b/docs/maintainers/portfile-functions.md @@ -1,6 +1,7 @@ # Portfile helper functions +- [execute\_process](execute_process.md) - [vcpkg\_acquire\_msys](vcpkg_acquire_msys.md) - [vcpkg\_add\_to\_path](vcpkg_add_to_path.md) - [vcpkg\_apply\_patches](vcpkg_apply_patches.md) @@ -9,6 +10,7 @@ - [vcpkg\_check\_features](vcpkg_check_features.md) - [vcpkg\_check\_linkage](vcpkg_check_linkage.md) - [vcpkg\_clean\_msbuild](vcpkg_clean_msbuild.md) +- [vcpkg\_common\_definitions](vcpkg_common_definitions.md) - [vcpkg\_configure\_cmake](vcpkg_configure_cmake.md) - [vcpkg\_copy\_pdbs](vcpkg_copy_pdbs.md) - [vcpkg\_copy\_tool\_dependencies](vcpkg_copy_tool_dependencies.md) @@ -17,6 +19,7 @@ - [vcpkg\_execute\_required\_process](vcpkg_execute_required_process.md) - [vcpkg\_extract\_source\_archive](vcpkg_extract_source_archive.md) - [vcpkg\_extract\_source\_archive\_ex](vcpkg_extract_source_archive_ex.md) +- [vcpkg\_fail\_port\_install](vcpkg_fail_port_install.md) - [vcpkg\_find\_acquire\_program](vcpkg_find_acquire_program.md) - [vcpkg\_from\_bitbucket](vcpkg_from_bitbucket.md) - [vcpkg\_from\_git](vcpkg_from_git.md) diff --git a/docs/maintainers/vcpkg_common_definitions.md b/docs/maintainers/vcpkg_common_definitions.md new file mode 100644 index 000000000..3bb922b17 --- /dev/null +++ b/docs/maintainers/vcpkg_common_definitions.md @@ -0,0 +1,19 @@ +# vcpkg_common_definitions + +File contains helpful variabls for portfiles which are commonly needed or used. + +## The following variables are available: +```cmake +VCPKG_TARGET_IS_ with being one of the following: WINDOWS, UWP, LINUX, OSX, ANDROID, FREEBSD. only defined if +VCPKG_TARGET_STATIC_LIBRARY_PREFIX static library prefix for target (same as CMAKE_STATIC_LIBRARY_PREFIX) +VCPKG_TARGET_STATIC_LIBRARY_SUFFIX static library suffix for target (same as CMAKE_STATIC_LIBRARY_SUFFIX) +VCPKG_TARGET_SHARED_LIBRARY_PREFIX shared library prefix for target (same as CMAKE_SHARED_LIBRARY_PREFIX) +VCPKG_TARGET_SHARED_LIBRARY_SUFFIX shared library suffix for target (same as CMAKE_SHARED_LIBRARY_SUFFIX) +``` + +CMAKE_STATIC_LIBRARY_PREFIX, CMAKE_STATIC_LIBRARY_SUFFIX, CMAKE_SHARED_LIBRARY_PREFIX, CMAKE_SHARED_LIBRARY_SUFFIX are defined for the target so that +portfiles are able to use find_library calls to discover dependent libraries within the current triplet for ports. + + +## Source +[scripts/cmake/vcpkg_common_definitions.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_common_definitions.cmake) diff --git a/docs/maintainers/vcpkg_execute_required_process.md b/docs/maintainers/vcpkg_execute_required_process.md index 4b1a7e081..26a116782 100644 --- a/docs/maintainers/vcpkg_execute_required_process.md +++ b/docs/maintainers/vcpkg_execute_required_process.md @@ -11,6 +11,10 @@ vcpkg_execute_required_process( ) ``` ## Parameters +### ALLOW_IN_DOWNLOAD_MODE +Allows the command to execute in Download Mode. +[See execute_process() override](../../scripts/cmake/execute_process.cmake). + ### COMMAND The command to be executed, along with its arguments. diff --git a/docs/maintainers/vcpkg_fail_port_install.md b/docs/maintainers/vcpkg_fail_port_install.md new file mode 100644 index 000000000..b3b48ad5e --- /dev/null +++ b/docs/maintainers/vcpkg_fail_port_install.md @@ -0,0 +1,34 @@ +# vcpkg_fail_port_install + +Fails the current portfile with a (default) error message + +## Usage +```cmake +vcpkg_fail_port_install([MESSAGE ] [ON_TARGET [ ...]] +``` + +## Parameters +### MESSAGE +Additional failure message. If non is given a default message will be displayed depending on the failure condition + +### ALWAYS +will always fail early + +### ON_TARGET +targets for which the build should fail early. Valid targets are from VCPKG_IS_TARGET_ (see vcpkg_common_definitions.cmake) + +### ON_ARCH +architecture for which the build should fail early. + +### ON_CRT_LINKAGE +CRT linkage for which the build should fail early. + +### ON_LIBRARY_LINKAGE +library linkage for which the build should fail early. + +## Examples + +* [aws-lambda-cpp](https://github.com/Microsoft/vcpkg/blob/master/ports/aws-lambda-cpp/portfile.cmake) + +## Source +[scripts/cmake/vcpkg_fail_port_install.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_fail_port_install.cmake) -- cgit v1.2.3 From d9932608863f57512db4b415ae6e14ff0bd6e11d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20St=C3=B6ggl?= Date: Sun, 29 Sep 2019 19:50:13 +0200 Subject: Fix a typo in maintainer-guide.md (#8383) --- docs/maintainers/maintainer-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs/maintainers') diff --git a/docs/maintainers/maintainer-guide.md b/docs/maintainers/maintainer-guide.md index f52172356..3a3a3a15a 100644 --- a/docs/maintainers/maintainer-guide.md +++ b/docs/maintainers/maintainer-guide.md @@ -156,7 +156,7 @@ It is preferable to set options in a call to `vcpkg_configure_xyz()` over patchi Common options that allow avoiding patching: 1. [MSBUILD] `` settings inside the project file can be overridden via `/p:` parameters 2. [CMAKE] Calls to `find_package(XYz)` in CMake scripts can be disabled via [`-DCMAKE_DISABLE_FIND_PACKAGE_XYz=ON`](https://cmake.org/cmake/help/v3.15/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.html) -3. [CMAKE] Cache variables (declared as `set(VAR "value" CACHE STRING "Documentation")` or `option(VAR "Documentation" "Default Value")`) can be overriden by just passing them in on the command line as `-DVAR:STRING=Foo`. One notable exception is if the `FORCE` parameter is passed to `set()`. See also the [CMake `set` documentation](https://cmake.org/cmake/help/v3.15/command/set.html) +3. [CMAKE] Cache variables (declared as `set(VAR "value" CACHE STRING "Documentation")` or `option(VAR "Documentation" "Default Value")`) can be overridden by just passing them in on the command line as `-DVAR:STRING=Foo`. One notable exception is if the `FORCE` parameter is passed to `set()`. See also the [CMake `set` documentation](https://cmake.org/cmake/help/v3.15/command/set.html) ### Prefer patching over overriding `VCPKG_` values -- cgit v1.2.3 From 5ebf65665dfbf29abeb49410070c2102490fd476 Mon Sep 17 00:00:00 2001 From: Vinny Date: Tue, 1 Oct 2019 11:21:04 -0400 Subject: [Documentation] Added documentation page for vcpkg_fixup_cmake_targets.cmake (#8365) * Added documentation page for vcpkg_fixup_cmake_targets.cmake, added example usage comment to .cmake file * Update cmake_fixup_cmake_targets.md * Update cmake_fixup_cmake_targets.md --- docs/maintainers/cmake_fixup_cmake_targets.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 docs/maintainers/cmake_fixup_cmake_targets.md (limited to 'docs/maintainers') diff --git a/docs/maintainers/cmake_fixup_cmake_targets.md b/docs/maintainers/cmake_fixup_cmake_targets.md new file mode 100644 index 000000000..9bbaddbba --- /dev/null +++ b/docs/maintainers/cmake_fixup_cmake_targets.md @@ -0,0 +1,25 @@ +# vcpkg_fixup_cmake_targets + +Transforms all /debug/share/\/\*targets-debug.cmake files and move them to /share/\. +Removes all /debug/share/\/\*targets.cmake and /debug/share/\/\*config.cmake. + +Transforms all references matching /bin/\*.exe tools/\/\*.exe on Windows. +Transforms all references matching /bin/\* to /tools/\/\* on other platforms. + +Fixups ${_IMPORT_PREFIX} in auto generated targets to be one folder deeper. +Replaces ${CURRENT_INSTALLED_DIR} with ${_IMPORT_PREFIX} in config files and targets. + + +## Usage +```cmake +vcpkg_fixup_cmake_targets(CONFIG_PATH ) +``` + +## Parameters: +### CONFIG_PATH +*.cmake files subdirectory (e.g. "lib/cmake/${PORT}" or "cmake/${PORT}). +### TARGET_PATH +Optional location to place fixup'd files. Unecessary if target is "share/${PORT}". + +## Source +[scripts/cmake/cmake_fixup_cmake_targets.cmake](https://github.com/microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_fixup_cmake_targets.cmake) -- cgit v1.2.3 From 85e7e815f17d3a316089f9aa3bc0ee3c2a13039d Mon Sep 17 00:00:00 2001 From: Vinny Date: Wed, 2 Oct 2019 10:08:51 -0400 Subject: Update and rename cmake_fixup_cmake_targets.md to vcpkg_fixup_cmake_targets.md (#8424) Corrected incorrect file name. Added inline code for reading clarity Added examples --- docs/maintainers/cmake_fixup_cmake_targets.md | 25 ---------------------- docs/maintainers/vcpkg_fixup_cmake_targets.md | 30 +++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 25 deletions(-) delete mode 100644 docs/maintainers/cmake_fixup_cmake_targets.md create mode 100644 docs/maintainers/vcpkg_fixup_cmake_targets.md (limited to 'docs/maintainers') diff --git a/docs/maintainers/cmake_fixup_cmake_targets.md b/docs/maintainers/cmake_fixup_cmake_targets.md deleted file mode 100644 index 9bbaddbba..000000000 --- a/docs/maintainers/cmake_fixup_cmake_targets.md +++ /dev/null @@ -1,25 +0,0 @@ -# vcpkg_fixup_cmake_targets - -Transforms all /debug/share/\/\*targets-debug.cmake files and move them to /share/\. -Removes all /debug/share/\/\*targets.cmake and /debug/share/\/\*config.cmake. - -Transforms all references matching /bin/\*.exe tools/\/\*.exe on Windows. -Transforms all references matching /bin/\* to /tools/\/\* on other platforms. - -Fixups ${_IMPORT_PREFIX} in auto generated targets to be one folder deeper. -Replaces ${CURRENT_INSTALLED_DIR} with ${_IMPORT_PREFIX} in config files and targets. - - -## Usage -```cmake -vcpkg_fixup_cmake_targets(CONFIG_PATH ) -``` - -## Parameters: -### CONFIG_PATH -*.cmake files subdirectory (e.g. "lib/cmake/${PORT}" or "cmake/${PORT}). -### TARGET_PATH -Optional location to place fixup'd files. Unecessary if target is "share/${PORT}". - -## Source -[scripts/cmake/cmake_fixup_cmake_targets.cmake](https://github.com/microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_fixup_cmake_targets.cmake) diff --git a/docs/maintainers/vcpkg_fixup_cmake_targets.md b/docs/maintainers/vcpkg_fixup_cmake_targets.md new file mode 100644 index 000000000..5bad80656 --- /dev/null +++ b/docs/maintainers/vcpkg_fixup_cmake_targets.md @@ -0,0 +1,30 @@ +# vcpkg_fixup_cmake_targets + +Transforms all `/debug/share/\/\*targets-debug.cmake` files and move them to `/share/\`. +Removes all `/debug/share/\/\*targets.cmake and /debug/share/\/\*config.cmake`. + +Transforms all references matching `/bin/\*.exe tools/\/\*.exe` on Windows. +Transforms all references matching `/bin/\* to /tools/\/\*` on other platforms. + +Fixups *${_IMPORT_PREFIX}* in auto generated targets to be one folder deeper. +Replaces *${CURRENT_INSTALLED_DIR}* with *${_IMPORT_PREFIX}* in config files and targets. + + +## Usage +```cmake +vcpkg_fixup_cmake_targets(CONFIG_PATH ) +``` + +## Parameters: +### CONFIG_PATH +*.cmake files subdirectory (e.g. "lib/cmake/${PORT}" or "cmake/${PORT}). +### TARGET_PATH +Optional location to place fixup'd files. Unecessary if target is "share/${PORT}". + +## Examples: + - [Azure-uamqp-c](https://github.com/microsoft/vcpkg/blob/master/ports/azure-uamqp-c/portfile.cmake) + - [Brigand](https://github.com/microsoft/vcpkg/blob/master/ports/brigand/portfile.cmake) + - [cctz](https://github.com/microsoft/vcpkg/blob/master/ports/cctz/portfile.cmake) + +## Source +[scripts/cmake/vcpkg_fixup_cmake_targets.cmake](https://github.com/microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_fixup_cmake_targets.cmake) -- cgit v1.2.3 From ad493fd8600c13f75dabcad60e6bd8d644f83c6b Mon Sep 17 00:00:00 2001 From: JackBoosY <47264268+JackBoosY@users.noreply.github.com> Date: Sat, 5 Oct 2019 22:51:07 +0800 Subject: Add function vcpkg_configure_make/vcpkg_build_make/vcpkg_install_make/vcpkg_build_nmake/vcpkg_install_nmake (#8267) * Add function vcpkg_configure_make/vcpkg_build_make. * Fix autoreconf command and add log. * Add vcpkg_install_make. * Fix call function name. * support non-debug mode. * Add nmake support. * [tcl]Add new port for testing. * [vcpkg_configure_make]Fix prefix in linux. * restart CI systen. * Separate vcpkg_build_nmake/vcpkg_install_nmake. Add arg PROJECT_NAME. * fix copy source file. add samples. * Remove uncommon options. Add force install para to autoreconf. * fix build error. * fix options judgment. * enable nmake in windows. * fix some envs and macros. Disable NMAKE in vcpkg_configure_make currently. * update docs. * fix environments. * Modify libosip2 to use vcpkg_configure_make/vcpkg_install_make. * [tcl]Tcl separates PR. * trigger PR-EAGER. * [freexl]Fix options name and remove option NMAKE. * use tool-chain instead of set environments manually. * fix autoreconf para. * use vcpkg_execute_build_process instead. --- docs/maintainers/portfile-functions.md | 11 +++-- docs/maintainers/vcpkg_build_make.md | 30 +++++++++++++ docs/maintainers/vcpkg_build_nmake.md | 63 +++++++++++++++++++++++++++ docs/maintainers/vcpkg_configure_make.md | 74 ++++++++++++++++++++++++++++++++ docs/maintainers/vcpkg_install_make.md | 24 +++++++++++ docs/maintainers/vcpkg_install_nmake.md | 48 +++++++++++++++++++++ 6 files changed, 247 insertions(+), 3 deletions(-) create mode 100644 docs/maintainers/vcpkg_build_make.md create mode 100644 docs/maintainers/vcpkg_build_nmake.md create mode 100644 docs/maintainers/vcpkg_configure_make.md create mode 100644 docs/maintainers/vcpkg_install_make.md create mode 100644 docs/maintainers/vcpkg_install_nmake.md (limited to 'docs/maintainers') diff --git a/docs/maintainers/portfile-functions.md b/docs/maintainers/portfile-functions.md index bbd5d23ab..dac417acf 100644 --- a/docs/maintainers/portfile-functions.md +++ b/docs/maintainers/portfile-functions.md @@ -6,12 +6,15 @@ - [vcpkg\_add\_to\_path](vcpkg_add_to_path.md) - [vcpkg\_apply\_patches](vcpkg_apply_patches.md) - [vcpkg\_build\_cmake](vcpkg_build_cmake.md) -- [vcpkg\_build\_msbuild](vcpkg_build_msbuild.md) +- [vcpkg\_build\_msbuild](vcpkg_build_msbuild.md) +- [vcpkg\_build\_make](vcpkg_build_make.md) +- [vcpkg\_build\_nmake](vcpkg_build_nmake.md) - [vcpkg\_check\_features](vcpkg_check_features.md) - [vcpkg\_check\_linkage](vcpkg_check_linkage.md) - [vcpkg\_clean\_msbuild](vcpkg_clean_msbuild.md) - [vcpkg\_common\_definitions](vcpkg_common_definitions.md) -- [vcpkg\_configure\_cmake](vcpkg_configure_cmake.md) +- [vcpkg\_configure\_cmake](vcpkg_configure_cmake.md) +- [vcpkg\_configure\_make](vcpkg_configure_make.md) - [vcpkg\_copy\_pdbs](vcpkg_copy_pdbs.md) - [vcpkg\_copy\_tool\_dependencies](vcpkg_copy_tool_dependencies.md) - [vcpkg\_download\_distfile](vcpkg_download_distfile.md) @@ -26,6 +29,8 @@ - [vcpkg\_from\_github](vcpkg_from_github.md) - [vcpkg\_from\_gitlab](vcpkg_from_gitlab.md) - [vcpkg\_install\_cmake](vcpkg_install_cmake.md) -- [vcpkg\_install\_msbuild](vcpkg_install_msbuild.md) +- [vcpkg\_install\_msbuild](vcpkg_install_msbuild.md) +- [vcpkg\_install\_make](vcpkg_install_make.md) +- [vcpkg\_install\_nmake](vcpkg_install_nmake.md) - [vcpkg\_prettify\_command](vcpkg_prettify_command.md) - [vcpkg\_test\_cmake](vcpkg_test_cmake.md) diff --git a/docs/maintainers/vcpkg_build_make.md b/docs/maintainers/vcpkg_build_make.md new file mode 100644 index 000000000..5161ba3ce --- /dev/null +++ b/docs/maintainers/vcpkg_build_make.md @@ -0,0 +1,30 @@ +# vcpkg_build_make + +Build a linux makefile project. + +## Usage: +```cmake +vcpkg_build_make([TARGET ]) +``` + +### TARGET +The target passed to the configure/make build command (`./configure/make/make install`). If not specified, no target will +be passed. + +### ADD_BIN_TO_PATH +Adds the appropriate Release and Debug `bin\` directories to the path during the build such that executables can run against the in-tree DLLs. + +## Notes: +This command should be preceeded by a call to [`vcpkg_configure_make()`](vcpkg_configure_make.md). +You can use the alias [`vcpkg_install_make()`](vcpkg_configure_make.md) function if your CMake script supports the +"install" target + +## Examples + +* [x264](https://github.com/Microsoft/vcpkg/blob/master/ports/x264/portfile.cmake) +* [tcl](https://github.com/Microsoft/vcpkg/blob/master/ports/tcl/portfile.cmake) +* [freexl](https://github.com/Microsoft/vcpkg/blob/master/ports/freexl/portfile.cmake) +* [libosip2](https://github.com/Microsoft/vcpkg/blob/master/ports/libosip2/portfile.cmake) + +## Source +[scripts/cmake/vcpkg_build_make.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_build_make.cmake) diff --git a/docs/maintainers/vcpkg_build_nmake.md b/docs/maintainers/vcpkg_build_nmake.md new file mode 100644 index 000000000..296fbbd7d --- /dev/null +++ b/docs/maintainers/vcpkg_build_nmake.md @@ -0,0 +1,63 @@ +# vcpkg_build_nmake + +Build a msvc makefile project. + +## Usage: +```cmake +vcpkg_build_nmake( + SOURCE_PATH <${SOURCE_PATH}> + [NO_DEBUG] + PROJECT_SUBPATH <${SUBPATH}> + PROJECT_NAME <${MAKEFILE_NAME}> + [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] + [OPTIONS_RELEASE <-DOPTIMIZE=1>...] + [OPTIONS_DEBUG <-DDEBUGGABLE=1>...] + [TARGET ]) +``` + +## Parameters +### SOURCE_PATH +Specifies the directory containing the source files. +By convention, this is usually set in the portfile as the variable `SOURCE_PATH`. + +### PROJECT_SUBPATH +Specifies the sub directory containing the `makefile.vc`/`makefile.mak`/`makefile.msvc` or other msvc makefile. + +### PROJECT_NAME +Specifies the name of msvc makefile name. +Default is `makefile.vc` + +### NO_DEBUG +This port doesn't support debug mode. + +### ENABLE_INSTALL +Install binaries after build. + +### OPTIONS +Additional options passed to generate during the generation. + +### OPTIONS_RELEASE +Additional options passed to generate during the Release generation. These are in addition to `OPTIONS`. + +### OPTIONS_DEBUG +Additional options passed to generate during the Debug generation. These are in addition to `OPTIONS`. + +### TARGET +The target passed to the nmake build command (`nmake/nmake install`). If not specified, no target will +be passed. + +### ADD_BIN_TO_PATH +Adds the appropriate Release and Debug `bin\` directories to the path during the build such that executables can run against the in-tree DLLs. + +## Notes: +This command should be preceeded by a call to [`vcpkg_configure_nmake()`](vcpkg_configure_nmake.md). +You can use the alias [`vcpkg_install_nmake()`](vcpkg_configure_nmake.md) function if your CMake script supports the +"install" target + +## Examples + +* [tcl](https://github.com/Microsoft/vcpkg/blob/master/ports/tcl/portfile.cmake) +* [freexl](https://github.com/Microsoft/vcpkg/blob/master/ports/freexl/portfile.cmake) + +## Source +[scripts/cmake/vcpkg_build_nmake.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_build_nmake.cmake) diff --git a/docs/maintainers/vcpkg_configure_make.md b/docs/maintainers/vcpkg_configure_make.md new file mode 100644 index 000000000..7b5ef3c48 --- /dev/null +++ b/docs/maintainers/vcpkg_configure_make.md @@ -0,0 +1,74 @@ +# vcpkg_configure_make + +Configure `configure` for Debug and Release builds of a project. + +## Usage +```cmake +vcpkg_configure_make( + SOURCE_PATH <${SOURCE_PATH}> + [AUTOCONFIG] + [DISABLE_AUTO_HOST] + [DISABLE_AUTO_DST] + [GENERATOR] + [NO_DEBUG] + [PROJECT_SUBPATH <${PROJ_SUBPATH}>] + [PRERUN_SHELL <${SHELL_PATH}>] + [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] + [OPTIONS_RELEASE <-DOPTIMIZE=1>...] + [OPTIONS_DEBUG <-DDEBUGGABLE=1>...] +) +``` + +## Parameters +### SOURCE_PATH +Specifies the directory containing the `configure`/`configure.ac`. +By convention, this is usually set in the portfile as the variable `SOURCE_PATH`. + +### PROJECT_SUBPATH +Specifies the directory containing the ``configure`/`configure.ac`. +By convention, this is usually set in the portfile as the variable `SOURCE_PATH`. +Should use `GENERATOR NMake` first. + +### NO_DEBUG +This port doesn't support debug mode. + +### AUTOCONFIG +Need to use autoconfig to generate configure file. + +### DISABLE_AUTO_HOST +Don't set host automatically, the default value is `i686`. +If use this option, you will need to set host manually. + +### DISABLE_AUTO_DST +Don't set installation path automatically, the default value is `${CURRENT_PACKAGES_DIR}` and `${CURRENT_PACKAGES_DIR}/debug` +If use this option, you will need to set dst path manually. + +### GENERATOR +Specifies the precise generator to use. +NMake: nmake(windows) make(unix) +MAKE: make(windows) make(unix) + +### PRERUN_SHELL +Script that needs to be called before configuration + +### OPTIONS +Additional options passed to configure during the configuration. + +### OPTIONS_RELEASE +Additional options passed to configure during the Release configuration. These are in addition to `OPTIONS`. + +### OPTIONS_DEBUG +Additional options passed to configure during the Debug configuration. These are in addition to `OPTIONS`. + +## Notes +This command supplies many common arguments to configure. To see the full list, examine the source. + +## Examples + +* [x264](https://github.com/Microsoft/vcpkg/blob/master/ports/x264/portfile.cmake) +* [tcl](https://github.com/Microsoft/vcpkg/blob/master/ports/tcl/portfile.cmake) +* [freexl](https://github.com/Microsoft/vcpkg/blob/master/ports/freexl/portfile.cmake) +* [libosip2](https://github.com/Microsoft/vcpkg/blob/master/ports/libosip2/portfile.cmake) + +## Source +[scripts/cmake/vcpkg_configure_make.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_configure_make.cmake) diff --git a/docs/maintainers/vcpkg_install_make.md b/docs/maintainers/vcpkg_install_make.md new file mode 100644 index 000000000..3460778cc --- /dev/null +++ b/docs/maintainers/vcpkg_install_make.md @@ -0,0 +1,24 @@ +# vcpkg_install_make + +Build and install a make project. + +## Usage: +```cmake +vcpkg_install_make(...) +``` + +## Parameters: +See [`vcpkg_build_make()`](vcpkg_build_make.md). + +## Notes: +This command transparently forwards to [`vcpkg_build_make()`](vcpkg_build_make.md), adding `ENABLE_INSTALL` + +## Examples + +* [x264](https://github.com/Microsoft/vcpkg/blob/master/ports/x264/portfile.cmake) +* [tcl](https://github.com/Microsoft/vcpkg/blob/master/ports/tcl/portfile.cmake) +* [freexl](https://github.com/Microsoft/vcpkg/blob/master/ports/freexl/portfile.cmake) +* [libosip2](https://github.com/Microsoft/vcpkg/blob/master/ports/libosip2/portfile.cmake) + +## Source +[scripts/cmake/vcpkg_install_make.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_install_make.cmake) diff --git a/docs/maintainers/vcpkg_install_nmake.md b/docs/maintainers/vcpkg_install_nmake.md new file mode 100644 index 000000000..e45ae107c --- /dev/null +++ b/docs/maintainers/vcpkg_install_nmake.md @@ -0,0 +1,48 @@ +# vcpkg_install_nmake + +Build and install a msvc makefile project. + +## Usage: +```cmake +vcpkg_install_nmake( + SOURCE_PATH <${SOURCE_PATH}> + [NO_DEBUG] + PROJECT_SUBPATH <${SUBPATH}> + PROJECT_NAME <${MAKEFILE_NAME}> + [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] + [OPTIONS_RELEASE <-DOPTIMIZE=1>...] + [OPTIONS_DEBUG <-DDEBUGGABLE=1>...] +``` + +## Parameters +### SOURCE_PATH +Specifies the directory containing the source files. +By convention, this is usually set in the portfile as the variable `SOURCE_PATH`. + +### PROJECT_SUBPATH +Specifies the sub directory containing the `makefile.vc`/`makefile.mak`/`makefile.msvc` or other msvc makefile. + +### PROJECT_NAME +Specifies the name of msvc makefile name. +Default is makefile.vc + +### NO_DEBUG +This port doesn't support debug mode. + +### OPTIONS +Additional options passed to generate during the generation. + +### OPTIONS_RELEASE +Additional options passed to generate during the Release generation. These are in addition to `OPTIONS`. + +### OPTIONS_DEBUG +Additional options passed to generate during the Debug generation. These are in addition to `OPTIONS`. + +## Parameters: +See [`vcpkg_build_nmake()`](vcpkg_build_nmake.md). + +## Notes: +This command transparently forwards to [`vcpkg_build_nmake()`](vcpkg_build_nmake.md), adding `ENABLE_INSTALL` + +## Source +[scripts/cmake/vcpkg_install_nmake.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_install_nmake.cmake) -- cgit v1.2.3 From 988b1c989797380b92ef19c651e391bac546e0dc Mon Sep 17 00:00:00 2001 From: JackBoosY <47264268+JackBoosY@users.noreply.github.com> Date: Tue, 22 Oct 2019 07:23:52 +0800 Subject: support SKIP_CONFIGURE in vcpkg_configure_make. (#8647) --- docs/maintainers/vcpkg_configure_make.md | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'docs/maintainers') diff --git a/docs/maintainers/vcpkg_configure_make.md b/docs/maintainers/vcpkg_configure_make.md index 7b5ef3c48..73b46bafc 100644 --- a/docs/maintainers/vcpkg_configure_make.md +++ b/docs/maintainers/vcpkg_configure_make.md @@ -11,6 +11,7 @@ vcpkg_configure_make( [DISABLE_AUTO_DST] [GENERATOR] [NO_DEBUG] + [SKIP_CONFIGURE] [PROJECT_SUBPATH <${PROJ_SUBPATH}>] [PRERUN_SHELL <${SHELL_PATH}>] [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] @@ -32,6 +33,9 @@ Should use `GENERATOR NMake` first. ### NO_DEBUG This port doesn't support debug mode. +### SKIP_CONFIGURE +Skip configure process + ### AUTOCONFIG Need to use autoconfig to generate configure file. -- cgit v1.2.3 From 92af850c1cf514a9045f05502392311b528e8311 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20St=C3=B6ggl?= Date: Fri, 25 Oct 2019 00:51:16 +0200 Subject: maintainer-guide.md - Fix link (#8720) "source_" was missing in the name of the helper function. Fix typo: vcpkg_extract_archive_ex -> vcpkg_extract_source_archive_ex --- docs/maintainers/maintainer-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs/maintainers') diff --git a/docs/maintainers/maintainer-guide.md b/docs/maintainers/maintainer-guide.md index 3a3a3a15a..624aa46d3 100644 --- a/docs/maintainers/maintainer-guide.md +++ b/docs/maintainers/maintainer-guide.md @@ -39,7 +39,7 @@ https://github.blog/2019-02-14-introducing-draft-pull-requests/ At this time, the following helpers are deprecated: -1. `vcpkg_extract_archive()` should be replaced by [`vcpkg_extract_archive_ex()`](vcpkg_extract_archive_ex.md) +1. `vcpkg_extract_source_archive()` should be replaced by [`vcpkg_extract_source_archive_ex()`](vcpkg_extract_source_archive_ex.md) 2. `vcpkg_apply_patches()` should be replaced by the `PATCHES` arguments to the "extract" helpers (e.g. [`vcpkg_from_github()`](vcpkg_from_github.md)) 3. `vcpkg_build_msbuild()` should be replaced by [`vcpkg_install_msbuild()`](vcpkg_install_msbuild.md) -- cgit v1.2.3 From 934275b7125e89caeaeff167d567574bf41e8264 Mon Sep 17 00:00:00 2001 From: JackBoosY <47264268+JackBoosY@users.noreply.github.com> Date: Wed, 30 Oct 2019 14:23:36 +0800 Subject: [libxslt]Using vcpkg_install_nmake in Windows, support unix. (#8589) * [libxslt]Using vcpkg_install_nmake in Windows, support unix. * support PRERUN_SHELL/PRERUN_SHELL_DEBUG/PRERUN_SHELL_RELEASE * Re-trigger CI. --- docs/maintainers/vcpkg_build_nmake.md | 12 ++++++++++++ docs/maintainers/vcpkg_install_nmake.md | 12 ++++++++++++ 2 files changed, 24 insertions(+) (limited to 'docs/maintainers') diff --git a/docs/maintainers/vcpkg_build_nmake.md b/docs/maintainers/vcpkg_build_nmake.md index 296fbbd7d..e5c177b1b 100644 --- a/docs/maintainers/vcpkg_build_nmake.md +++ b/docs/maintainers/vcpkg_build_nmake.md @@ -9,6 +9,9 @@ vcpkg_build_nmake( [NO_DEBUG] PROJECT_SUBPATH <${SUBPATH}> PROJECT_NAME <${MAKEFILE_NAME}> + [PRERUN_SHELL <${SHELL_PATH}>] + [PRERUN_SHELL_DEBUG <${SHELL_PATH}>] + [PRERUN_SHELL_RELEASE <${SHELL_PATH}>] [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] [OPTIONS_RELEASE <-DOPTIMIZE=1>...] [OPTIONS_DEBUG <-DDEBUGGABLE=1>...] @@ -33,6 +36,15 @@ This port doesn't support debug mode. ### ENABLE_INSTALL Install binaries after build. +### PRERUN_SHELL +Script that needs to be called before build + +### PRERUN_SHELL_DEBUG +Script that needs to be called before debug build + +### PRERUN_SHELL_RELEASE +Script that needs to be called before release build + ### OPTIONS Additional options passed to generate during the generation. diff --git a/docs/maintainers/vcpkg_install_nmake.md b/docs/maintainers/vcpkg_install_nmake.md index e45ae107c..3f397c195 100644 --- a/docs/maintainers/vcpkg_install_nmake.md +++ b/docs/maintainers/vcpkg_install_nmake.md @@ -9,6 +9,9 @@ vcpkg_install_nmake( [NO_DEBUG] PROJECT_SUBPATH <${SUBPATH}> PROJECT_NAME <${MAKEFILE_NAME}> + [PRERUN_SHELL <${SHELL_PATH}>] + [PRERUN_SHELL_DEBUG <${SHELL_PATH}>] + [PRERUN_SHELL_RELEASE <${SHELL_PATH}>] [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] [OPTIONS_RELEASE <-DOPTIMIZE=1>...] [OPTIONS_DEBUG <-DDEBUGGABLE=1>...] @@ -29,6 +32,15 @@ Default is makefile.vc ### NO_DEBUG This port doesn't support debug mode. +### PRERUN_SHELL +Script that needs to be called before build + +### PRERUN_SHELL_DEBUG +Script that needs to be called before debug build + +### PRERUN_SHELL_RELEASE +Script that needs to be called before release build + ### OPTIONS Additional options passed to generate during the generation. -- cgit v1.2.3