diff --git a/docs/maintainers/execute_process.md b/docs/maintainers/execute_process.md index bafb1e57ccb..b7d57110c29 100644 --- a/docs/maintainers/execute_process.md +++ b/docs/maintainers/execute_process.md @@ -5,6 +5,5 @@ is enabled. In order to execute a process in Download Mode call `vcpkg_execute_in_download_mode()` 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 943afa6e752..56e42bbd808 100644 --- a/docs/maintainers/portfile-functions.md +++ b/docs/maintainers/portfile-functions.md @@ -1,4 +1,4 @@ - + # Portfile helper functions - [execute\_process](execute_process.md) @@ -11,6 +11,8 @@ - [vcpkg\_build\_msbuild](vcpkg_build_msbuild.md) - [vcpkg\_build\_ninja](vcpkg_build_ninja.md) - [vcpkg\_build\_nmake](vcpkg_build_nmake.md) +- [vcpkg\_build\_qmake](vcpkg_build_qmake.md) +- [vcpkg\_buildpath\_length\_warning](vcpkg_buildpath_length_warning.md) - [vcpkg\_check\_features](vcpkg_check_features.md) - [vcpkg\_check\_linkage](vcpkg_check_linkage.md) - [vcpkg\_clean\_executables\_in\_bin](vcpkg_clean_executables_in_bin.md) @@ -20,6 +22,7 @@ - [vcpkg\_configure\_gn](vcpkg_configure_gn.md) - [vcpkg\_configure\_make](vcpkg_configure_make.md) - [vcpkg\_configure\_meson](vcpkg_configure_meson.md) +- [vcpkg\_configure\_qmake](vcpkg_configure_qmake.md) - [vcpkg\_copy\_pdbs](vcpkg_copy_pdbs.md) - [vcpkg\_copy\_tool\_dependencies](vcpkg_copy_tool_dependencies.md) - [vcpkg\_copy\_tools](vcpkg_copy_tools.md) @@ -27,6 +30,7 @@ - [vcpkg\_execute\_build\_process](vcpkg_execute_build_process.md) - [vcpkg\_execute\_in\_download\_mode](vcpkg_execute_in_download_mode.md) - [vcpkg\_execute\_required\_process](vcpkg_execute_required_process.md) +- [vcpkg\_execute\_required\_process\_repeat](vcpkg_execute_required_process_repeat.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) @@ -39,6 +43,8 @@ - [vcpkg\_from\_github](vcpkg_from_github.md) - [vcpkg\_from\_gitlab](vcpkg_from_gitlab.md) - [vcpkg\_from\_sourceforge](vcpkg_from_sourceforge.md) +- [vcpkg\_get\_program\_files\_platform\_bitness](vcpkg_get_program_files_platform_bitness.md) +- [vcpkg\_get\_windows\_sdk](vcpkg_get_windows_sdk.md) - [vcpkg\_install\_cmake](vcpkg_install_cmake.md) - [vcpkg\_install\_gn](vcpkg_install_gn.md) - [vcpkg\_install\_make](vcpkg_install_make.md) @@ -48,3 +54,4 @@ - [vcpkg\_install\_qmake](vcpkg_install_qmake.md) - [vcpkg\_internal\_get\_cmake\_vars](vcpkg_internal_get_cmake_vars.md) - [vcpkg\_prettify\_command](vcpkg_prettify_command.md) +- [vcpkg\_replace\_string](vcpkg_replace_string.md) diff --git a/docs/maintainers/vcpkg_add_to_path.md b/docs/maintainers/vcpkg_add_to_path.md index b47d86cef84..0c8986276ee 100644 --- a/docs/maintainers/vcpkg_add_to_path.md +++ b/docs/maintainers/vcpkg_add_to_path.md @@ -21,6 +21,5 @@ The default is to append. * [folly](https://github.com/Microsoft/vcpkg/blob/master/ports/folly/portfile.cmake#L15) * [z3](https://github.com/Microsoft/vcpkg/blob/master/ports/z3/portfile.cmake#L13) - ## Source [scripts/cmake/vcpkg_add_to_path.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_add_to_path.cmake) diff --git a/docs/maintainers/vcpkg_build_make.md b/docs/maintainers/vcpkg_build_make.md index de44a84d4a2..5c7037b68f5 100644 --- a/docs/maintainers/vcpkg_build_make.md +++ b/docs/maintainers/vcpkg_build_make.md @@ -6,7 +6,7 @@ Build a linux makefile project. ```cmake vcpkg_build_make([BUILD_TARGET ] [ADD_BIN_TO_PATH] - [ENABLE_INSTALL]) + [ENABLE_INSTALL] [MAKEFILE ] [LOGFILE_ROOT ]) ``` @@ -36,7 +36,7 @@ Additional subdir to invoke make in. Useful if only parts of a port should be bu ## 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 +You can use the alias [`vcpkg_install_make()`](vcpkg_install_make.md) function if your CMake script supports the "install" target ## Examples diff --git a/docs/maintainers/vcpkg_build_nmake.md b/docs/maintainers/vcpkg_build_nmake.md index 1daa0717f14..337269eeb8a 100644 --- a/docs/maintainers/vcpkg_build_nmake.md +++ b/docs/maintainers/vcpkg_build_nmake.md @@ -64,7 +64,7 @@ Adds the appropriate Release and Debug `bin\` directories to the path during the ## 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 +You can use the alias [`vcpkg_install_nmake()`](vcpkg_install_nmake.md) function if your CMake script supports the "install" target ## Examples diff --git a/docs/maintainers/vcpkg_build_qmake.md b/docs/maintainers/vcpkg_build_qmake.md new file mode 100644 index 00000000000..2dab94176d8 --- /dev/null +++ b/docs/maintainers/vcpkg_build_qmake.md @@ -0,0 +1,10 @@ +# vcpkg_build_qmake + +Build a qmake-based project, previously configured using vcpkg_configure_qmake. + +```cmake +vcpkg_build_qmake() +``` + +## Source +[scripts/cmake/vcpkg_build_qmake.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_build_qmake.cmake) diff --git a/docs/maintainers/vcpkg_buildpath_length_warning.md b/docs/maintainers/vcpkg_buildpath_length_warning.md new file mode 100644 index 00000000000..d766afc9d85 --- /dev/null +++ b/docs/maintainers/vcpkg_buildpath_length_warning.md @@ -0,0 +1,11 @@ +# vcpkg_buildpath_length_warning + +Warns the user if their vcpkg installation path might be too long for the package they're installing. + +## Usage +```cmake +vcpkg_buildpath_length_warning(13) +``` + +## Source +[scripts/cmake/vcpkg_buildpath_length_warning.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_buildpath_length_warning.cmake) diff --git a/docs/maintainers/vcpkg_check_features.md b/docs/maintainers/vcpkg_check_features.md index cec01dde2ea..fcf313bfdc6 100644 --- a/docs/maintainers/vcpkg_check_features.md +++ b/docs/maintainers/vcpkg_check_features.md @@ -143,6 +143,5 @@ vcpkg_configure_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) - ## 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_check_linkage.md b/docs/maintainers/vcpkg_check_linkage.md index 406325dba08..f9c149b683f 100644 --- a/docs/maintainers/vcpkg_check_linkage.md +++ b/docs/maintainers/vcpkg_check_linkage.md @@ -28,7 +28,7 @@ This command will either alter the settings for `VCPKG_LIBRARY_LINKAGE` or fail, ## Examples -* [libimobiledevice](https://github.com/Microsoft/vcpkg/blob/master/ports/libimobiledevice/portfile.cmake) +* [abseil](https://github.com/Microsoft/vcpkg/blob/master/ports/abseil/portfile.cmake) ## Source [scripts/cmake/vcpkg_check_linkage.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_check_linkage.cmake) diff --git a/docs/maintainers/vcpkg_common_definitions.md b/docs/maintainers/vcpkg_common_definitions.md index 9bbc64b1ef4..10e765f1e8c 100644 --- a/docs/maintainers/vcpkg_common_definitions.md +++ b/docs/maintainers/vcpkg_common_definitions.md @@ -24,6 +24,5 @@ CMAKE_STATIC_LIBRARY_(PREFIX|SUFFIX), CMAKE_SHARED_LIBRARY_(PREFIX|SUFFIX) and C Furthermore the variables CMAKE_FIND_LIBRARY_(PREFIXES|SUFFIXES) are also 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_configure_qmake.md b/docs/maintainers/vcpkg_configure_qmake.md new file mode 100644 index 00000000000..5117600dfbf --- /dev/null +++ b/docs/maintainers/vcpkg_configure_qmake.md @@ -0,0 +1,21 @@ +# vcpkg_configure_qmake + +Configure a qmake-based project. + +```cmake +vcpkg_configure_qmake( + SOURCE_PATH + [OPTIONS arg1 [arg2 ...]] + [OPTIONS_RELEASE arg1 [arg2 ...]] + [OPTIONS_DEBUG arg1 [arg2 ...]] +) +``` + +### SOURCE_PATH +The path to the *.pro qmake project file. + +### OPTIONS, OPTIONS\_RELEASE, OPTIONS\_DEBUG +The options passed to qmake. + +## Source +[scripts/cmake/vcpkg_configure_qmake.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_configure_qmake.cmake) diff --git a/docs/maintainers/vcpkg_execute_in_download_mode.md b/docs/maintainers/vcpkg_execute_in_download_mode.md index 0a7f8a8f745..51fa4642081 100644 --- a/docs/maintainers/vcpkg_execute_in_download_mode.md +++ b/docs/maintainers/vcpkg_execute_in_download_mode.md @@ -5,25 +5,30 @@ Execute a process even in download mode. ## Usage ```cmake vcpkg_execute_in_download_mode( - COMMAND [...] - OUTPUT_QUIET ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE - WORKING_DIRECTORY - TIMEOUT - RESULT_VARIABLE - OUTPUT_VARIABLE - ERROR_VARIABLE - INPUT_FILE - OUTPUT_FILE - ERROR_FILE - ENCODING + COMMAND [] + [WORKING_DIRECTORY ] + [TIMEOUT ] + [RESULT_VARIABLE ] + [OUTPUT_VARIABLE ] + [ERROR_VARIABLE ] + [INPUT_FILE ] + [OUTPUT_FILE ] + [ERROR_FILE ] + [OUTPUT_QUIET] + [ERROR_QUIET] + [OUTPUT_STRIP_TRAILING_WHITESPACE] + [ERROR_STRIP_TRAILING_WHITESPACE] + [ENCODING ] ) ``` -The signature of this function is identical with `execute_process()` except that +The signature of this function is identical to `execute_process()` except that it only accepts one COMMAND argument, i.e., does not support chaining multiple commands with pipes. -See `execute_process()` for a detailed description of the parameters. +See [`execute_process()`] for a detailed description of the parameters. + +[`execute_process()`]: https://cmake.org/cmake/help/latest/command/execute_process.html ## Source [scripts/cmake/vcpkg_execute_in_download_mode.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_execute_in_download_mode.cmake) diff --git a/docs/maintainers/vcpkg_execute_required_process_repeat.md b/docs/maintainers/vcpkg_execute_required_process_repeat.md new file mode 100644 index 00000000000..09102ca1a90 --- /dev/null +++ b/docs/maintainers/vcpkg_execute_required_process_repeat.md @@ -0,0 +1,16 @@ +# vcpkg_execute_required_process_repeat + +Execute a process until the command succeeds, or until the COUNT is reached. + +## Usage +```cmake +vcpkg_execute_required_process_repeat( + COUNT + COMMAND [] + WORKING_DIRECTORY + LOGNAME +) +``` + +## Source +[scripts/cmake/vcpkg_execute_required_process_repeat.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_execute_required_process_repeat.cmake) diff --git a/docs/maintainers/vcpkg_extract_source_archive.md b/docs/maintainers/vcpkg_extract_source_archive.md index 4971df96041..895dd16fc0c 100644 --- a/docs/maintainers/vcpkg_extract_source_archive.md +++ b/docs/maintainers/vcpkg_extract_source_archive.md @@ -15,7 +15,7 @@ The full path to the archive to be extracted. This is usually obtained from calling [`vcpkg_download_distfile`](vcpkg_download_distfile.md). ### TARGET_DIRECTORY -If specified, the archive will be extracted into the target directory instead of `${CURRENT_BUILDTREES_DIR}\src\`. +If specified, the archive will be extracted into the target directory instead of `${CURRENT_BUILDTREES_DIR}/src/`. This can be used to mimic git submodules, by extracting into a subdirectory of another archive. diff --git a/docs/maintainers/vcpkg_find_acquire_program.md b/docs/maintainers/vcpkg_find_acquire_program.md index aef499b12e3..ed93ba2cacf 100644 --- a/docs/maintainers/vcpkg_find_acquire_program.md +++ b/docs/maintainers/vcpkg_find_acquire_program.md @@ -13,29 +13,29 @@ This variable specifies both the program to be acquired as well as the out param ## Notes The current list of programs includes: -- 7Z -- ARIA2 (Downloader) -- BISON -- CLANG -- DARK -- DOXYGEN -- FLEX -- GASPREPROCESSOR -- GPERF -- PERL -- PYTHON2 -- PYTHON3 -- GIT -- GN -- GO -- JOM -- MESON -- NASM -- NINJA -- NUGET -- SCONS -- SWIG -- YASM +* 7Z +* ARIA2 (Downloader) +* BISON +* CLANG +* DARK +* DOXYGEN +* FLEX +* GASPREPROCESSOR +* GPERF +* PERL +* PYTHON2 +* PYTHON3 +* GIT +* GN +* GO +* JOM +* MESON +* NASM +* NINJA +* NUGET +* SCONS +* SWIG +* YASM Note that msys2 has a dedicated helper function: [`vcpkg_acquire_msys`](vcpkg_acquire_msys.md). diff --git a/docs/maintainers/vcpkg_find_fortran.md b/docs/maintainers/vcpkg_find_fortran.md index eb04ebdf360..4ee10b163e2 100644 --- a/docs/maintainers/vcpkg_find_fortran.md +++ b/docs/maintainers/vcpkg_find_fortran.md @@ -6,8 +6,7 @@ Windows(x86/x64) Only: If not it will switch/enable MinGW gfortran ## Usage ```cmake -vcpkg_find_fortran( -) +vcpkg_find_fortran() ``` ## Source diff --git a/docs/maintainers/vcpkg_fixup_cmake_targets.md b/docs/maintainers/vcpkg_fixup_cmake_targets.md index 18e8d086797..5a0b2d64476 100644 --- a/docs/maintainers/vcpkg_fixup_cmake_targets.md +++ b/docs/maintainers/vcpkg_fixup_cmake_targets.md @@ -27,6 +27,11 @@ By default the parent directory of CONFIG_PATH is removed if it is named "cmake" Passing this option disable such behavior, as it is convenient for ports that install more than one CMake package configuration file. +### NO_PREFIX_CORRECTION +Disables the correction of_IMPORT_PREFIX done by vcpkg due to moving the targets. +Currently the correction does not take into account how the files are moved and applies +I rather simply correction which in some cases will yield the wrong results. + ## Notes Transform all `/debug//*targets-debug.cmake` files and move them to `/`. Removes all `/debug//*targets.cmake` and `/debug//*config.cmake`. diff --git a/docs/maintainers/vcpkg_fixup_pkgconfig.md b/docs/maintainers/vcpkg_fixup_pkgconfig.md index be77ae3471e..48870e972ee 100644 --- a/docs/maintainers/vcpkg_fixup_pkgconfig.md +++ b/docs/maintainers/vcpkg_fixup_pkgconfig.md @@ -36,7 +36,7 @@ Skips the library checks in vcpkg_fixup_pkgconfig. Only use if the script itself Still work in progress. If there are more cases which can be handled here feel free to add them ## Examples -Just call vcpkg_fixup_pkgconfig() after any install step which installs *.pc files. +Just call `vcpkg_fixup_pkgconfig()` after any install step which installs *.pc files. ## Source [scripts/cmake/vcpkg_fixup_pkgconfig.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_fixup_pkgconfig.cmake) diff --git a/docs/maintainers/vcpkg_from_gitlab.md b/docs/maintainers/vcpkg_from_gitlab.md index fe75ecf9356..ceef6f2d44c 100644 --- a/docs/maintainers/vcpkg_from_gitlab.md +++ b/docs/maintainers/vcpkg_from_gitlab.md @@ -61,6 +61,5 @@ This exports the `VCPKG_HEAD_VERSION` variable during head builds. * [folly](https://github.com/Microsoft/vcpkg/blob/master/ports/folly/portfile.cmake#L15) * [z3](https://github.com/Microsoft/vcpkg/blob/master/ports/z3/portfile.cmake#L13) - ## Source [scripts/cmake/vcpkg_from_gitlab.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_from_gitlab.cmake) diff --git a/docs/maintainers/vcpkg_get_program_files_platform_bitness.md b/docs/maintainers/vcpkg_get_program_files_platform_bitness.md new file mode 100644 index 00000000000..a39992f4e0d --- /dev/null +++ b/docs/maintainers/vcpkg_get_program_files_platform_bitness.md @@ -0,0 +1,13 @@ +# vcpkg_get_program_files_platform_bitness + +Get the Program Files directory of the current platform's bitness: +either `$ENV{ProgramW6432}` on 64-bit windows, +or `$ENV{PROGRAMFILES}` on 32-bit windows. + +## Usage: +```cmake +vcpkg_get_program_files_platform_bitness() +``` + +## Source +[scripts/cmake/vcpkg_get_program_files_platform_bitness.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_get_program_files_platform_bitness.cmake) diff --git a/docs/maintainers/vcpkg_get_windows_sdk.md b/docs/maintainers/vcpkg_get_windows_sdk.md new file mode 100644 index 00000000000..b32f3f49d0a --- /dev/null +++ b/docs/maintainers/vcpkg_get_windows_sdk.md @@ -0,0 +1,11 @@ +# vcpkg_get_windows_sdk + +Get the Windows SDK number. + +## Usage: +```cmake +vcpkg_get_windows_sdk() +``` + +## Source +[scripts/cmake/vcpkg_get_windows_sdk.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_get_windows_sdk.cmake) diff --git a/docs/maintainers/vcpkg_replace_string.md b/docs/maintainers/vcpkg_replace_string.md new file mode 100644 index 00000000000..5e04d0368c6 --- /dev/null +++ b/docs/maintainers/vcpkg_replace_string.md @@ -0,0 +1,11 @@ +# vcpkg_replace_string + +Replace a string in a file. + +```cmake +vcpkg_replace_string(filename match_string replace_string) +``` + + +## Source +[scripts/cmake/vcpkg_replace_string.cmake](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_replace_string.cmake) diff --git a/docs/regenerate.ps1 b/docs/regenerate.ps1 index abb91af6113..c984ad77b43 100644 --- a/docs/regenerate.ps1 +++ b/docs/regenerate.ps1 @@ -1,27 +1,81 @@ -Param([string]$VcpkgRoot = "") +[CmdletBinding()] +Param( + [String]$VcpkgRoot = '' +) -$ErrorActionPreference = "Stop" - -if (!$VcpkgRoot) { - $VcpkgRoot = ".." +if ([String]::IsNullOrEmpty($VcpkgRoot)) { + $VcpkgRoot = "${PSScriptRoot}/.." } $VcpkgRoot = Resolve-Path $VcpkgRoot -if (!(Test-Path "$VcpkgRoot\.vcpkg-root")) { +if (-not (Test-Path "$VcpkgRoot/.vcpkg-root")) { throw "Invalid vcpkg instance, did you forget -VcpkgRoot?" } -Set-Content -Path "$PSScriptRoot\maintainers\portfile-functions.md" -Value "`n`n# Portfile helper functions" +Set-Content ` + -Path "$PSScriptRoot/maintainers/portfile-functions.md" ` + -Value "`n`n# Portfile helper functions" + +Get-ChildItem "$VcpkgRoot/scripts/cmake" -Filter '*.cmake' | ForEach-Object { + $filename = $_ + [String[]]$contents = Get-Content $filename + + if ($contents[0] -eq '# DEPRECATED') { + return + } + + [String]$startCommentRegex = '#\[(=*)\[' + [String]$endCommentRegex = '' + [Bool]$inComment = $False + [Bool]$failThisFile = $False + + $contents = $contents | ForEach-Object { + if (-not $inComment) { + if ($_ -match "^\s*${startCommentRegex}(\.[a-z]*)?:?\s*$") { + if (-not [String]::IsNullOrEmpty($matches[2]) -and $matches[2] -ne '.md') { + Write-Warning "The documentation in ${filename} doesn't seem to be markdown (extension: $($matches[2])). Only markdown is supported; please rewrite the documentation in markdown." + } + $inComment = $True + $endCommentRegex = "\]$($matches[1])\]" + } elseif ($_ -match $startCommentRegex) { + $failThisFile = $True + Write-Warning "Invalid start of comment -- the comment start must be at the beginning of the line. + (on line: `"$_`")" + } else { + # do nothing -- we're outside a comment, so cmake code + } + } else { + if ($_ -match "^\s*#?${endCommentRegex}\s*$") { + $inComment = $False + $endCommentRegex = '' + } elseif ($_ -match $endCommentRegex) { + $failThisFile = $True + Write-Warning "Invalid end of comment -- the comment end must be on it's own on a line. + (on line: `"$_`")" + } else { + # regular documentation line + $_ + } + } + } + + if ($inComment) { + Write-Warning "File ${filename} has an unclosed comment." + return + } + + if ($failThisFile) { + return + } -ls "$VcpkgRoot\scripts\cmake\*.cmake" | % { - $contents = Get-Content $_ ` - | ? { $_ -match "^## |^##`$" } ` - | % { $_ -replace "^## ?","" } if ($contents) { - Set-Content -Path "$PSScriptRoot\maintainers\$($_.BaseName).md" -Value "$($contents -join "`n")`n`n## Source`n[scripts/cmake/$($_.Name)](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/$($_.Name))" - "- [$($_.BaseName -replace "_","\_")]($($_.BaseName).md)" ` - | Out-File -Enc Ascii -Append -FilePath "$PSScriptRoot\maintainers\portfile-functions.md" + Set-Content -Path "$PSScriptRoot/maintainers/$($filename.BaseName).md" -Value "$($contents -join "`n")`n`n## Source`n[scripts/cmake/$($filename.Name)](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/$($filename.Name))" + "- [$($filename.BaseName -replace "_","\_")]($($filename.BaseName).md)" ` + | Out-File -Enc Ascii -Append -FilePath "$PSScriptRoot/maintainers/portfile-functions.md" + } elseif (-not $filename.Name.StartsWith("vcpkg_internal")) { + # don't worry about undocumented internal functions + Write-Warning "The cmake function in file $filename doesn't seem to have any documentation. Make sure the documentation comments are correctly written." } } diff --git a/scripts/azure-pipelines/azure-pipelines.yml b/scripts/azure-pipelines/azure-pipelines.yml index 1a2852cedee..03bf38e4cd8 100644 --- a/scripts/azure-pipelines/azure-pipelines.yml +++ b/scripts/azure-pipelines/azure-pipelines.yml @@ -39,11 +39,27 @@ stages: filePath: 'scripts/azure-pipelines/windows/Check-ManifestFormatting.ps1' arguments: '-Root .' pwsh: true +- stage: check_documentation_generation + displayName: Check if the documentation has been regenerated correctly + pool: $(windows-pool) + dependsOn: [] + jobs: + - job: + workspace: + clean: resources + steps: + - task: Powershell@2 + displayName: 'Check documentation generation' + inputs: + filePath: 'scripts/azure-pipelines/windows/Check-CMakeFunctionDocumentation.ps1' + arguments: '-Root .' + pwsh: true - stage: run_port_ci displayName: 'Run the Port CI' dependsOn: - check_cxx_formatting - check_manifest_formatting + - check_documentation_generation jobs: - template: windows/azure-pipelines.yml parameters: diff --git a/scripts/azure-pipelines/windows/Check-CMakeFunctionDocumentation.ps1 b/scripts/azure-pipelines/windows/Check-CMakeFunctionDocumentation.ps1 new file mode 100644 index 00000000000..5505c340177 --- /dev/null +++ b/scripts/azure-pipelines/windows/Check-CMakeFunctionDocumentation.ps1 @@ -0,0 +1,30 @@ +[CmdletBinding()] +Param( + [Parameter(Mandatory=$True)] + [string]$Root +) + +if (-not (Test-Path "$Root/.vcpkg-root")) +{ + Write-Error "The vcpkg root was not at $Root" + throw +} + +& "$Root/docs/regenerate.ps1" -VcpkgRoot $Root -WarningAction 'Stop' + +$changedFiles = & "$PSScriptRoot/Get-ChangedFiles.ps1" -Directory "$Root/docs" +if ($null -ne $changedFiles) +{ + $msg = @( + "", + "The documentation files do not seem to have been regenerated.", + "Please re-run `docs/regenerate.ps1`." + ) + $msg += "" + + $msg += "This should produce the following diff:" + $msg += git diff "$Root/docs" + + Write-Error ($msg -join "`n") + throw +} diff --git a/scripts/cmake/execute_process.cmake b/scripts/cmake/execute_process.cmake index 76a3d9a8b9d..2207cfab250 100644 --- a/scripts/cmake/execute_process.cmake +++ b/scripts/cmake/execute_process.cmake @@ -1,10 +1,12 @@ -## # 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 `vcpkg_execute_in_download_mode()` instead. -## +#[===[.md: +# 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 `vcpkg_execute_in_download_mode()` instead. +#]===] + if (NOT DEFINED OVERRIDEN_EXECUTE_PROCESS) set(OVERRIDEN_EXECUTE_PROCESS ON) @@ -12,9 +14,5 @@ if (NOT DEFINED OVERRIDEN_EXECUTE_PROCESS) macro(execute_process) message(FATAL_ERROR "This command cannot be executed in Download Mode.\nHalting portfile execution.\n") endmacro() - else() - macro(_execute_process) - execute_process(${ARGV}) - endmacro() endif() endif() diff --git a/scripts/cmake/vcpkg_acquire_msys.cmake b/scripts/cmake/vcpkg_acquire_msys.cmake index 49271eeb620..ac48d177718 100644 --- a/scripts/cmake/vcpkg_acquire_msys.cmake +++ b/scripts/cmake/vcpkg_acquire_msys.cmake @@ -1,519 +1,521 @@ -## # vcpkg_acquire_msys -## -## Download and prepare an MSYS2 instance. -## -## ## Usage -## ```cmake -## vcpkg_acquire_msys( -## PACKAGES ... -## [NO_DEFAULT_PACKAGES] -## [DIRECT_PACKAGES ...] -## ) -## ``` -## -## ## Parameters -## ### MSYS_ROOT_VAR -## An out-variable that will be set to the path to MSYS2. -## -## ### PACKAGES -## A list of packages to acquire in msys. -## -## To ensure a package is available: `vcpkg_acquire_msys(MSYS_ROOT PACKAGES make automake1.16)` -## -## ### NO_DEFAULT_PACKAGES -## Exclude the normal base packages. -## -## The list of base packages includes: bash, coreutils, sed, grep, gawk, diffutils, make, and pkg-config -## -## ### DIRECT_PACKAGES -## A list of URL/SHA512 pairs to acquire in msys. -## -## This parameter can be used by a port to privately extend the list of msys packages to be acquired. -## The URLs can be found on the msys2 website[1] and should be a direct archive link: -## -## https://repo.msys2.org/mingw/i686/mingw-w64-i686-gettext-0.19.8.1-9-any.pkg.tar.zst -## -## [1] https://packages.msys2.org/search -## -## ## Notes -## A call to `vcpkg_acquire_msys` will usually be followed by a call to `bash.exe`: -## ```cmake -## vcpkg_acquire_msys(MSYS_ROOT) -## set(BASH ${MSYS_ROOT}/usr/bin/bash.exe) -## -## vcpkg_execute_required_process( -## COMMAND ${BASH} --noprofile --norc "${CMAKE_CURRENT_LIST_DIR}\\build.sh" -## WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel -## LOGNAME build-${TARGET_TRIPLET}-rel -## ) -## ``` -## -## ## Examples -## -## * [ffmpeg](https://github.com/Microsoft/vcpkg/blob/master/ports/ffmpeg/portfile.cmake) -## * [icu](https://github.com/Microsoft/vcpkg/blob/master/ports/icu/portfile.cmake) -## * [libvpx](https://github.com/Microsoft/vcpkg/blob/master/ports/libvpx/portfile.cmake) +#[===[.md: +# vcpkg_acquire_msys + +Download and prepare an MSYS2 instance. + +## Usage +```cmake +vcpkg_acquire_msys( + PACKAGES ... + [NO_DEFAULT_PACKAGES] + [DIRECT_PACKAGES ...] +) +``` + +## Parameters +### MSYS_ROOT_VAR +An out-variable that will be set to the path to MSYS2. + +### PACKAGES +A list of packages to acquire in msys. + +To ensure a package is available: `vcpkg_acquire_msys(MSYS_ROOT PACKAGES make automake1.16)` + +### NO_DEFAULT_PACKAGES +Exclude the normal base packages. + +The list of base packages includes: bash, coreutils, sed, grep, gawk, diffutils, make, and pkg-config + +### DIRECT_PACKAGES +A list of URL/SHA512 pairs to acquire in msys. + +This parameter can be used by a port to privately extend the list of msys packages to be acquired. +The URLs can be found on the msys2 website[1] and should be a direct archive link: + + https://repo.msys2.org/mingw/i686/mingw-w64-i686-gettext-0.19.8.1-9-any.pkg.tar.zst + +[1] https://packages.msys2.org/search + +## Notes +A call to `vcpkg_acquire_msys` will usually be followed by a call to `bash.exe`: +```cmake +vcpkg_acquire_msys(MSYS_ROOT) +set(BASH ${MSYS_ROOT}/usr/bin/bash.exe) + +vcpkg_execute_required_process( + COMMAND ${BASH} --noprofile --norc "${CMAKE_CURRENT_LIST_DIR}\\build.sh" + WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel + LOGNAME build-${TARGET_TRIPLET}-rel +) +``` + +## Examples + +* [ffmpeg](https://github.com/Microsoft/vcpkg/blob/master/ports/ffmpeg/portfile.cmake) +* [icu](https://github.com/Microsoft/vcpkg/blob/master/ports/icu/portfile.cmake) +* [libvpx](https://github.com/Microsoft/vcpkg/blob/master/ports/libvpx/portfile.cmake) +#]===] function(vcpkg_acquire_msys PATH_TO_ROOT_OUT) - # parse parameters such that semicolons in options arguments to COMMAND don't get erased - cmake_parse_arguments(PARSE_ARGV 0 _am "NO_DEFAULT_PACKAGES" "" "PACKAGES;DIRECT_PACKAGES") + # parse parameters such that semicolons in options arguments to COMMAND don't get erased + cmake_parse_arguments(PARSE_ARGV 0 _am "NO_DEFAULT_PACKAGES" "" "PACKAGES;DIRECT_PACKAGES") - set(TOTAL_HASH 0) - set(ARCHIVES) + set(TOTAL_HASH 0) + set(ARCHIVES) - set(PACKAGES ${_am_PACKAGES}) + set(PACKAGES ${_am_PACKAGES}) - if(NOT _am_NO_DEFAULT_PACKAGES) - list(APPEND PACKAGES bash coreutils sed grep gawk diffutils make pkg-config) - endif() + if(NOT _am_NO_DEFAULT_PACKAGES) + list(APPEND PACKAGES bash coreutils sed grep gawk diffutils make pkg-config) + endif() - macro(msys_package_download URL SHA FILENAME) - set(URLS "${URL}") - # Mirror list from https://github.com/msys2/MSYS2-packages/blob/master/pacman-mirrors/mirrorlist.msys - # Sourceforge is not used because it does not keep older package versions - set(MIRRORS - "https://www2.futureware.at/~nickoe/msys2-mirror/" - "https://mirror.yandex.ru/mirrors/msys2/" - "https://mirrors.tuna.tsinghua.edu.cn/msys2/" - "https://mirrors.ustc.edu.cn/msys2/" - "https://mirror.bit.edu.cn/msys2/" - "https://mirror.selfnet.de/msys2/" - "https://mirrors.sjtug.sjtu.edu.cn/msys2/" - ) + macro(msys_package_download URL SHA FILENAME) + set(URLS "${URL}") + # Mirror list from https://github.com/msys2/MSYS2-packages/blob/master/pacman-mirrors/mirrorlist.msys + # Sourceforge is not used because it does not keep older package versions + set(MIRRORS + "https://www2.futureware.at/~nickoe/msys2-mirror/" + "https://mirror.yandex.ru/mirrors/msys2/" + "https://mirrors.tuna.tsinghua.edu.cn/msys2/" + "https://mirrors.ustc.edu.cn/msys2/" + "https://mirror.bit.edu.cn/msys2/" + "https://mirror.selfnet.de/msys2/" + "https://mirrors.sjtug.sjtu.edu.cn/msys2/" + ) - foreach(MIRROR IN LISTS MIRRORS) - string(REPLACE "https://repo.msys2.org/" "${MIRROR}" MIRROR_URL "${URL}") - list(APPEND URLS "${MIRROR_URL}") + foreach(MIRROR IN LISTS MIRRORS) + string(REPLACE "https://repo.msys2.org/" "${MIRROR}" MIRROR_URL "${URL}") + list(APPEND URLS "${MIRROR_URL}") + endforeach() + vcpkg_download_distfile(MSYS_ARCHIVE + URLS ${URLS} + SHA512 "${SHA}" + FILENAME "msys-${FILENAME}" + QUIET + ) + string(APPEND TOTAL_HASH "${SHA}") + list(APPEND ARCHIVES "${MSYS_ARCHIVE}") + endmacro() + + macro(msys_package) + cmake_parse_arguments(p "ZST;ANY" "URL;NAME;SHA512;VERSION;REPO" "DEPS" ${ARGN}) + if(p_URL AND NOT p_NAME) + if(NOT p_URL MATCHES "^https://repo\\.msys2\\.org/.*/(([^-]+(-[^0-9][^-]*)*)-.+\\.pkg\\.tar\\.(xz|zst))\$") + message(FATAL_ERROR "Regex does not match supplied URL to vcpkg_acquire_msys: ${p_URL}") + endif() + set(FILENAME "${CMAKE_MATCH_1}") + set(p_NAME "${CMAKE_MATCH_2}") + else() + if(p_ZST) + set(EXT zst) + else() + set(EXT xz) + endif() + if(p_ANY) + set(ARCH any) + else() + set(ARCH x86_64) + endif() + if(NOT p_REPO) + set(p_REPO msys/x86_64) + endif() + set(FILENAME "${p_NAME}-${p_VERSION}-${ARCH}.pkg.tar.${EXT}") + set(p_URL "https://repo.msys2.org/${p_REPO}/${FILENAME}") + endif() + if("${p_NAME}" IN_LIST PACKAGES) + list(REMOVE_ITEM PACKAGES "${p_NAME}") + list(APPEND PACKAGES ${p_DEPS}) + msys_package_download("${p_URL}" "${p_SHA512}" "${FILENAME}") + endif() + endmacro() + + unset(N) + foreach(P IN LISTS _am_DIRECT_PACKAGES) + if(NOT DEFINED N) + set(N "${P}") + else() + get_filename_component(FILENAME "${N}" NAME) + msys_package_download("${N}" "${P}" "${FILENAME}") + unset(N) + endif() endforeach() - vcpkg_download_distfile(MSYS_ARCHIVE - URLS ${URLS} - SHA512 "${SHA}" - FILENAME "msys-${FILENAME}" - QUIET + if(DEFINED N) + message(FATAL_ERROR "vcpkg_acquire_msys(... DIRECT_PACKAGES ...) requires exactly pairs of URL/SHA512") + endif() + + # To add new entries, use https://packages.msys2.org/package/$PACKAGE?repo=msys + msys_package( + URL "https://repo.msys2.org/msys/x86_64/unzip-6.0-2-x86_64.pkg.tar.xz" + SHA512 b8a1e0ce6deff26939cb46267f80ada0a623b7d782e80873cea3d388b4dc3a1053b14d7565b31f70bc904bf66f66ab58ccc1cd6bfa677065de1f279dd331afb9 + DEPS libbz2 + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/libbz2-1.0.8-2-x86_64.pkg.tar.xz" + SHA512 d128bd1792d0f5750e6a63a24db86a791e7ee457db8c0bef68d217099be4a6eef27c85caf6ad09b0bcd5b3cdac6fc0a2b9842cc58d381a4035505906cc4803ec + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/patch-2.7.6-1-x86_64.pkg.tar.xz" + SHA512 04d06b9d5479f129f56e8290e0afe25217ffa457ec7bed3e576df08d4a85effd80d6e0ad82bd7541043100799b608a64da3c8f535f8ea173d326da6194902e8c + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/gzip-1.10-1-x86_64.pkg.tar.xz" + SHA512 2d0a60f2c384e3b9e2bed2212867c85333545e51ee0f583a33914e488e43c265ed0017cd4430a6e3dafdca99c0414b3756a4b9cc92a6f04d5566eff8b68def75 + DEPS msys2-runtime + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/bash-4.4.023-2-x86_64.pkg.tar.xz" + SHA512 1cf2a07022113010e00e150e7004732013a793d49e7a6ac7c2be27a0b2c0ce3366150584b9974e30df042f8876a84d6a77c1a46f0607e38ebe18f8a25f51c32d + DEPS msys2-runtime + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/autoconf-2.69-5-any.pkg.tar.xz" + SHA512 66b9c97bd3d1dfe2a2ab576235b6b8c204a9e4c099ba14cf5d0139e564bba1e735e3b1083354b4cac8c6c42233cbdd5e1e277e32cadfe24017b94d2fbdeb5617 + DEPS m4 + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/diffutils-3.7-1-x86_64.pkg.tar.xz" + SHA512 0c39837a26b2111bb6310cdfe0bc14656e3d57456ad8023f59c9386634a8f1f236915c79a57348b64c508897c73ed88d8abce2b9ac512a427e9a3956939f2040 + DEPS msys2-runtime + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/binutils-2.34-4-x86_64.pkg.tar.zst" + SHA512 5271288d11489879082bc1f2298bb8bedbcfcf6ee19f8a9b3b552b6a4395543d9385bb833e3c32b1560bff1b411d2be503e2c12a7201bf37b85cfacc5f5baba3 + DEPS libiconv libintl + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/libtool-2.4.6-9-x86_64.pkg.tar.xz" + SHA512 b309799e5a9d248ef66eaf11a0bd21bf4e8b9bd5c677c627ec83fa760ce9f0b54ddf1b62cbb436e641fbbde71e3b61cb71ff541d866f8ca7717a3a0dbeb00ebf + DEPS grep sed coreutils file + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/file-5.39-1-x86_64.pkg.tar.zst" + SHA512 be51dd0f6143a2f34f2a3e7d412866eb12511f25daaf3a5478240537733a67d7797a3a55a8893e5638589c06bca5af20aed5ded7db0bf19fbf52b30fae08cadd + DEPS gcc-libs zlib libbz2 + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/zlib-1.2.11-1-x86_64.pkg.tar.xz" + SHA512 b607da40d3388b440f2a09e154f21966cd55ad77e02d47805f78a9dee5de40226225bf0b8335fdfd4b83f25ead3098e9cb974d4f202f28827f8468e30e3b790d + DEPS gcc-libs + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/bzip2-1.0.8-2-x86_64.pkg.tar.xz" + SHA512 336f5b59eb9cf4e93b537a212509d84f72cd9b8a97bf8ac0596eff298f3c0979bdea6c605244d5913670b9d20b017e5ee327f1e606f546a88e177a03c589a636 + DEPS gcc-libs + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/libbz2-1.0.8-2-x86_64.pkg.tar.xz" + SHA512 d128bd1792d0f5750e6a63a24db86a791e7ee457db8c0bef68d217099be4a6eef27c85caf6ad09b0bcd5b3cdac6fc0a2b9842cc58d381a4035505906cc4803ec + DEPS gcc-libs + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/coreutils-8.32-1-x86_64.pkg.tar.xz" + SHA512 1a2ae4f296954421ce36f764b9b1c77ca72fc8583c46060b817677d0ad6adc7d7e3c2bbe1ae0179afd116a3d62f28e59eae2f7c84c1c8ffb7d22d2f2b40c0cdc + DEPS libiconv libintl gmp + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/grep-3.0-2-x86_64.pkg.tar.xz" + SHA512 c784d5f8a929ae251f2ffaccf7ab0b3936ae9f012041e8f074826dd6077ad0a859abba19feade1e71b3289cc640626dfe827afe91c272b38a1808f228f2fdd00 + DEPS libiconv libintl libpcre + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/sed-4.8-1-x86_64.pkg.tar.xz" + SHA512 b6e7ed0af9e04aba4992ee26d8616f7ac675c8137bb28558c049d50709afb571b33695ce21d01e5b7fe8e188c008dd2e8cbafc72a7e2a919c2d678506095132b + DEPS libintl + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/libpcre-8.44-1-x86_64.pkg.tar.xz" + SHA512 e9e56386fc5cca0f3c36cee21eda91300d9a13a962ec2f52eeea00f131915daea1cfeb0e1b30704bf3cc4357d941d356e0d72192bab3006c2548e18cd96dad77 + DEPS gcc-libs + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/m4-1.4.18-2-x86_64.pkg.tar.xz" + SHA512 061e9243c1e013aa093546e3872984ad47b7fc9d64d4c39dcce62e750ed632645df00be3fe382a2f55f3bf623dd0d649e2092be23e8f22f921f582e41893e36a + DEPS msys2-runtime + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/automake-wrapper-11-1-any.pkg.tar.xz" + SHA512 0fcfc80c31fd0bda5a46c55e9100a86d2fc788a92c7e2ca4fd281e551375c62eb5b9cc9ad9338bb44a815bf0b1d1b60b882c8e68ca3ea529b442f2d03d1d3e1f + DEPS gawk + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/gawk-5.1.0-1-x86_64.pkg.tar.xz" + SHA512 4e2be747b184f27945df6fb37d52d56fd8117d2fe4b289370bcdb5b15a4cf90cbeaea98cf9e64bcbfa2c13db50d8bd14cbd719c5f31b420842da903006dbc959 + DEPS libintl libreadline mpfr + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/mpfr-4.1.0-1-x86_64.pkg.tar.zst" + SHA512 d64fa60e188124591d41fc097d7eb51d7ea4940bac05cdcf5eafde951ed1eaa174468f5ede03e61106e1633e3428964b34c96de76321ed8853b398fbe8c4d072 + DEPS gmp gcc-libs + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/gmp-6.2.0-1-x86_64.pkg.tar.xz" + SHA512 1389a443e775bb255d905665dd577bef7ed71d51a8c24d118097f8119c08c4dfe67505e88ddd1e9a3764dd1d50ed8b84fa34abefa797d257e90586f0cbf54de8 + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/xz-5.2.5-1-x86_64.pkg.tar.xz" # this seems to require immediate updating on version bumps. + SHA512 99d092c3398277e47586cead103b41e023e9432911fb7bdeafb967b826f6a57d32e58afc94c8230dad5b5ec2aef4f10d61362a6d9e410a6645cf23f076736bba + DEPS liblzma libiconv gettext + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/liblzma-5.2.5-1-x86_64.pkg.tar.xz" + SHA512 8d5c04354fdc7309e73abce679a4369c0be3dc342de51cef9d2a932b7df6a961c8cb1f7e373b1b8b2be40343a95fbd57ac29ebef63d4a2074be1d865e28ca6ad + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/libreadline-8.0.004-1-x86_64.pkg.tar.xz" + SHA512 42760bddedccc8d93507c1e3a7a81595dc6392b5e4319d24a85275eb04c30eb79078e4247eb2cdd00ff3884d932639130c89bf1b559310a17fa4858062491f97 + DEPS ncurses + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/ncurses-6.2-1-x86_64.pkg.tar.xz" + SHA512 d4dc566d3dbd32e7646e328cb350689ede7eaa7008c8ed971072f8869a2986fe3935e7df1700851b52716af7ef20c49f9e6628d3163a5e9208a8872b5014eaea + DEPS msys2-runtime + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/automake1.16-1.16.2-1-any.pkg.tar.zst" + SHA512 568d1250a31a53452e029d1c236da66d67fffa786a8713128027d33a6a9408cda6e493e9c1555a816efee6245b05a1ef8f9ce3482c39de71356c2e983d926bf7 + DEPS perl + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/automake1.15-1.15.1-1-any.pkg.tar.xz" + SHA512 d5bb245ab1bb6b57c40ef97755bfb0919dcceb0eccc33e848809922bf6b032f9e4eb36d89aedf41542051277d92238bd48a74115867db0bbc1e1db1c975cc72c + DEPS perl + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/perl-5.32.0-1-x86_64.pkg.tar.zst" + SHA512 8acc6c4901bd2e24faf1951084d70029847f05e870826e07b8d9a5d90144f4aa0ab6e568e77c28c36650f016ee75ce78b0356c75673b212c992401f7f1543dd8 + DEPS libcrypt + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/libcrypt-2.1-2-x86_64.pkg.tar.xz" + SHA512 59a13f79f560934f880d68209a58a3c39ee4a1d24500035bde90d7a6f6ab0d4f72fe14edea6f19a8eb54d4d53b0b6ad4589b388f1521a07ab24a0f8307619cab + DEPS gcc-libs + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/pkg-config-0.29.2-1-x86_64.pkg.tar.xz" + SHA512 f1d70f0b4ebcfeb3fa2156a7a4f7b0b404795853e05361de14054dc6658a6154915bb982626cbfe76bef0828325f993f30da6817361ca8d7ea440a40023fa864 + DEPS libiconv + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/make-4.3-1-x86_64.pkg.tar.xz" + SHA512 7306dec7859edc27d70a24ab4b396728481484a426c5aa2f7e9fed2635b3b25548b05b7d37a161a86a8edaa5922948bee8c99b1e8a078606e69ca48a433fe321 + DEPS libintl msys2-runtime ) - string(APPEND TOTAL_HASH "${SHA}") - list(APPEND ARCHIVES "${MSYS_ARCHIVE}") - endmacro() - - macro(msys_package) - cmake_parse_arguments(p "ZST;ANY" "URL;NAME;SHA512;VERSION;REPO" "DEPS" ${ARGN}) - if(p_URL AND NOT p_NAME) - if(NOT p_URL MATCHES "^https://repo\\.msys2\\.org/.*/(([^-]+(-[^0-9][^-]*)*)-.+\\.pkg\\.tar\\.(xz|zst))\$") - message(FATAL_ERROR "Regex does not match supplied URL to vcpkg_acquire_msys: ${p_URL}") - endif() - set(FILENAME "${CMAKE_MATCH_1}") - set(p_NAME "${CMAKE_MATCH_2}") - else() - if(p_ZST) - set(EXT zst) - else() - set(EXT xz) - endif() - if(p_ANY) - set(ARCH any) - else() - set(ARCH x86_64) - endif() - if(NOT p_REPO) - set(p_REPO msys/x86_64) - endif() - set(FILENAME "${p_NAME}-${p_VERSION}-${ARCH}.pkg.tar.${EXT}") - set(p_URL "https://repo.msys2.org/${p_REPO}/${FILENAME}") - endif() - if("${p_NAME}" IN_LIST PACKAGES) - list(REMOVE_ITEM PACKAGES "${p_NAME}") - list(APPEND PACKAGES ${p_DEPS}) - msys_package_download("${p_URL}" "${p_SHA512}" "${FILENAME}") - endif() - endmacro() - - unset(N) - foreach(P IN LISTS _am_DIRECT_PACKAGES) - if(NOT DEFINED N) - set(N "${P}") - else() - get_filename_component(FILENAME "${N}" NAME) - msys_package_download("${N}" "${P}" "${FILENAME}") - unset(N) - endif() - endforeach() - if(DEFINED N) - message(FATAL_ERROR "vcpkg_acquire_msys(... DIRECT_PACKAGES ...) requires exactly pairs of URL/SHA512") - endif() - - # To add new entries, use https://packages.msys2.org/package/$PACKAGE?repo=msys - msys_package( - URL "https://repo.msys2.org/msys/x86_64/unzip-6.0-2-x86_64.pkg.tar.xz" - SHA512 b8a1e0ce6deff26939cb46267f80ada0a623b7d782e80873cea3d388b4dc3a1053b14d7565b31f70bc904bf66f66ab58ccc1cd6bfa677065de1f279dd331afb9 - DEPS libbz2 - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/libbz2-1.0.8-2-x86_64.pkg.tar.xz" - SHA512 d128bd1792d0f5750e6a63a24db86a791e7ee457db8c0bef68d217099be4a6eef27c85caf6ad09b0bcd5b3cdac6fc0a2b9842cc58d381a4035505906cc4803ec - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/patch-2.7.6-1-x86_64.pkg.tar.xz" - SHA512 04d06b9d5479f129f56e8290e0afe25217ffa457ec7bed3e576df08d4a85effd80d6e0ad82bd7541043100799b608a64da3c8f535f8ea173d326da6194902e8c - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/gzip-1.10-1-x86_64.pkg.tar.xz" - SHA512 2d0a60f2c384e3b9e2bed2212867c85333545e51ee0f583a33914e488e43c265ed0017cd4430a6e3dafdca99c0414b3756a4b9cc92a6f04d5566eff8b68def75 - DEPS msys2-runtime - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/bash-4.4.023-2-x86_64.pkg.tar.xz" - SHA512 1cf2a07022113010e00e150e7004732013a793d49e7a6ac7c2be27a0b2c0ce3366150584b9974e30df042f8876a84d6a77c1a46f0607e38ebe18f8a25f51c32d - DEPS msys2-runtime - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/autoconf-2.69-5-any.pkg.tar.xz" - SHA512 66b9c97bd3d1dfe2a2ab576235b6b8c204a9e4c099ba14cf5d0139e564bba1e735e3b1083354b4cac8c6c42233cbdd5e1e277e32cadfe24017b94d2fbdeb5617 - DEPS m4 - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/diffutils-3.7-1-x86_64.pkg.tar.xz" - SHA512 0c39837a26b2111bb6310cdfe0bc14656e3d57456ad8023f59c9386634a8f1f236915c79a57348b64c508897c73ed88d8abce2b9ac512a427e9a3956939f2040 - DEPS msys2-runtime - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/binutils-2.34-4-x86_64.pkg.tar.zst" - SHA512 5271288d11489879082bc1f2298bb8bedbcfcf6ee19f8a9b3b552b6a4395543d9385bb833e3c32b1560bff1b411d2be503e2c12a7201bf37b85cfacc5f5baba3 - DEPS libiconv libintl - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/libtool-2.4.6-9-x86_64.pkg.tar.xz" - SHA512 b309799e5a9d248ef66eaf11a0bd21bf4e8b9bd5c677c627ec83fa760ce9f0b54ddf1b62cbb436e641fbbde71e3b61cb71ff541d866f8ca7717a3a0dbeb00ebf - DEPS grep sed coreutils file - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/file-5.39-1-x86_64.pkg.tar.zst" - SHA512 be51dd0f6143a2f34f2a3e7d412866eb12511f25daaf3a5478240537733a67d7797a3a55a8893e5638589c06bca5af20aed5ded7db0bf19fbf52b30fae08cadd - DEPS gcc-libs zlib libbz2 - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/zlib-1.2.11-1-x86_64.pkg.tar.xz" - SHA512 b607da40d3388b440f2a09e154f21966cd55ad77e02d47805f78a9dee5de40226225bf0b8335fdfd4b83f25ead3098e9cb974d4f202f28827f8468e30e3b790d - DEPS gcc-libs - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/bzip2-1.0.8-2-x86_64.pkg.tar.xz" - SHA512 336f5b59eb9cf4e93b537a212509d84f72cd9b8a97bf8ac0596eff298f3c0979bdea6c605244d5913670b9d20b017e5ee327f1e606f546a88e177a03c589a636 - DEPS gcc-libs - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/libbz2-1.0.8-2-x86_64.pkg.tar.xz" - SHA512 d128bd1792d0f5750e6a63a24db86a791e7ee457db8c0bef68d217099be4a6eef27c85caf6ad09b0bcd5b3cdac6fc0a2b9842cc58d381a4035505906cc4803ec - DEPS gcc-libs - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/coreutils-8.32-1-x86_64.pkg.tar.xz" - SHA512 1a2ae4f296954421ce36f764b9b1c77ca72fc8583c46060b817677d0ad6adc7d7e3c2bbe1ae0179afd116a3d62f28e59eae2f7c84c1c8ffb7d22d2f2b40c0cdc - DEPS libiconv libintl gmp - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/grep-3.0-2-x86_64.pkg.tar.xz" - SHA512 c784d5f8a929ae251f2ffaccf7ab0b3936ae9f012041e8f074826dd6077ad0a859abba19feade1e71b3289cc640626dfe827afe91c272b38a1808f228f2fdd00 - DEPS libiconv libintl libpcre - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/sed-4.8-1-x86_64.pkg.tar.xz" - SHA512 b6e7ed0af9e04aba4992ee26d8616f7ac675c8137bb28558c049d50709afb571b33695ce21d01e5b7fe8e188c008dd2e8cbafc72a7e2a919c2d678506095132b - DEPS libintl - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/libpcre-8.44-1-x86_64.pkg.tar.xz" - SHA512 e9e56386fc5cca0f3c36cee21eda91300d9a13a962ec2f52eeea00f131915daea1cfeb0e1b30704bf3cc4357d941d356e0d72192bab3006c2548e18cd96dad77 - DEPS gcc-libs - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/m4-1.4.18-2-x86_64.pkg.tar.xz" - SHA512 061e9243c1e013aa093546e3872984ad47b7fc9d64d4c39dcce62e750ed632645df00be3fe382a2f55f3bf623dd0d649e2092be23e8f22f921f582e41893e36a - DEPS msys2-runtime - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/automake-wrapper-11-1-any.pkg.tar.xz" - SHA512 0fcfc80c31fd0bda5a46c55e9100a86d2fc788a92c7e2ca4fd281e551375c62eb5b9cc9ad9338bb44a815bf0b1d1b60b882c8e68ca3ea529b442f2d03d1d3e1f - DEPS gawk - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/gawk-5.1.0-1-x86_64.pkg.tar.xz" - SHA512 4e2be747b184f27945df6fb37d52d56fd8117d2fe4b289370bcdb5b15a4cf90cbeaea98cf9e64bcbfa2c13db50d8bd14cbd719c5f31b420842da903006dbc959 - DEPS libintl libreadline mpfr - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/mpfr-4.1.0-1-x86_64.pkg.tar.zst" - SHA512 d64fa60e188124591d41fc097d7eb51d7ea4940bac05cdcf5eafde951ed1eaa174468f5ede03e61106e1633e3428964b34c96de76321ed8853b398fbe8c4d072 - DEPS gmp gcc-libs - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/gmp-6.2.0-1-x86_64.pkg.tar.xz" - SHA512 1389a443e775bb255d905665dd577bef7ed71d51a8c24d118097f8119c08c4dfe67505e88ddd1e9a3764dd1d50ed8b84fa34abefa797d257e90586f0cbf54de8 - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/xz-5.2.5-1-x86_64.pkg.tar.xz" # this seems to require immediate updating on version bumps. - SHA512 99d092c3398277e47586cead103b41e023e9432911fb7bdeafb967b826f6a57d32e58afc94c8230dad5b5ec2aef4f10d61362a6d9e410a6645cf23f076736bba - DEPS liblzma libiconv gettext - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/liblzma-5.2.5-1-x86_64.pkg.tar.xz" - SHA512 8d5c04354fdc7309e73abce679a4369c0be3dc342de51cef9d2a932b7df6a961c8cb1f7e373b1b8b2be40343a95fbd57ac29ebef63d4a2074be1d865e28ca6ad - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/libreadline-8.0.004-1-x86_64.pkg.tar.xz" - SHA512 42760bddedccc8d93507c1e3a7a81595dc6392b5e4319d24a85275eb04c30eb79078e4247eb2cdd00ff3884d932639130c89bf1b559310a17fa4858062491f97 - DEPS ncurses - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/ncurses-6.2-1-x86_64.pkg.tar.xz" - SHA512 d4dc566d3dbd32e7646e328cb350689ede7eaa7008c8ed971072f8869a2986fe3935e7df1700851b52716af7ef20c49f9e6628d3163a5e9208a8872b5014eaea - DEPS msys2-runtime - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/automake1.16-1.16.2-1-any.pkg.tar.zst" - SHA512 568d1250a31a53452e029d1c236da66d67fffa786a8713128027d33a6a9408cda6e493e9c1555a816efee6245b05a1ef8f9ce3482c39de71356c2e983d926bf7 - DEPS perl - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/automake1.15-1.15.1-1-any.pkg.tar.xz" - SHA512 d5bb245ab1bb6b57c40ef97755bfb0919dcceb0eccc33e848809922bf6b032f9e4eb36d89aedf41542051277d92238bd48a74115867db0bbc1e1db1c975cc72c - DEPS perl - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/perl-5.32.0-1-x86_64.pkg.tar.zst" - SHA512 8acc6c4901bd2e24faf1951084d70029847f05e870826e07b8d9a5d90144f4aa0ab6e568e77c28c36650f016ee75ce78b0356c75673b212c992401f7f1543dd8 - DEPS libcrypt - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/libcrypt-2.1-2-x86_64.pkg.tar.xz" - SHA512 59a13f79f560934f880d68209a58a3c39ee4a1d24500035bde90d7a6f6ab0d4f72fe14edea6f19a8eb54d4d53b0b6ad4589b388f1521a07ab24a0f8307619cab - DEPS gcc-libs - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/pkg-config-0.29.2-1-x86_64.pkg.tar.xz" - SHA512 f1d70f0b4ebcfeb3fa2156a7a4f7b0b404795853e05361de14054dc6658a6154915bb982626cbfe76bef0828325f993f30da6817361ca8d7ea440a40023fa864 - DEPS libiconv - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/make-4.3-1-x86_64.pkg.tar.xz" - SHA512 7306dec7859edc27d70a24ab4b396728481484a426c5aa2f7e9fed2635b3b25548b05b7d37a161a86a8edaa5922948bee8c99b1e8a078606e69ca48a433fe321 - DEPS libintl msys2-runtime - ) msys_package( - URL "https://repo.msys2.org/msys/x86_64/gettext-devel-0.19.8.1-1-x86_64.pkg.tar.xz" - SHA512 648f74c23e4f92145cdd0d45ff5285c2df34e855a9e75e5463dd6646967f8cf34a18ce357c6f498a4680e6d7b84e2d1697ba9deee84da8ea6bb14bbdb594ee22 - DEPS gettext - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/gettext-0.19.8.1-1-x86_64.pkg.tar.xz" - SHA512 c8c42d084c297746548963f7ec7a7df46241886f3e637e779811ee4a8fee6058f892082bb2658f6777cbffba2de4bcdfd68e846ba63c6a6552c9efb0c8c1de50 - DEPS libintl libgettextpo libasprintf - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/libgettextpo-0.19.8.1-1-x86_64.pkg.tar.xz" - SHA512 480b782a79b0ce71ed9939ae3a6821fc2f5a63358733965c62cee027d0e6c88e255df1d62379ee47f5a7f8ffe163e554e318dba22c67dc67469b10aa3248edf7 - DEPS gcc-libs - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/libasprintf-0.19.8.1-1-x86_64.pkg.tar.xz" - SHA512 a2e8027b9bbee20f8cf60851130ca2af436641b1fb66054f8deba118da7ebecb1cd188224dcf08e4c5b7cde85b412efab058afef2358e843c9de8eb128ca448c - DEPS gcc-libs - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/findutils-4.7.0-1-x86_64.pkg.tar.xz" - SHA512 fd09a24562b196ff252f4b5de86ed977280306a8c628792930812f146fcf7355f9d87434bbabe25e6cc17d8bd028f6bc68fc02e5bea83137a49cf5cc6f509e10 - DEPS libintl libiconv - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/libintl-0.19.8.1-1-x86_64.pkg.tar.xz" - SHA512 4e54c252b828c862f376d8f5a2410ee623a43d70cbb07d0b8ac20c25096f59fb3ae8dcd011d1792bec76f0b0b9411d0e184ee23707995761dc50eb76f9fc6b92 - DEPS libiconv - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/libiconv-1.16-2-x86_64.pkg.tar.zst" - SHA512 3ab569eca9887ef85e7dd5dbca3143d8a60f7103f370a7ecc979a58a56b0c8dcf1f54ac3df4495bc306bd44bf36ee285aaebbb221c4eebfc912cf47d347d45fc - DEPS gcc-libs - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/gcc-libs-9.3.0-1-x86_64.pkg.tar.xz" - SHA512 2816afbf45aa0ff47f94a623ad083d9421bca5284dc55683c2f1bc09ea0eadfe720afb75aafef60c2ff6384d051c4fbe2a744bb16a20acf34c04dc59b17c3d8c - DEPS msys2-runtime - ) - msys_package( - URL "https://repo.msys2.org/msys/x86_64/msys2-runtime-3.1.6-3-x86_64.pkg.tar.xz" - SHA512 f094a7f4926195ef7ba015f0c5c56587b1faa94d85530f07aaaa5557a1494c3bd75257d4687c8401cbf1328d23e5586a92b05f0a872caebb1a7e941a07829776 - ) + URL "https://repo.msys2.org/msys/x86_64/gettext-devel-0.19.8.1-1-x86_64.pkg.tar.xz" + SHA512 648f74c23e4f92145cdd0d45ff5285c2df34e855a9e75e5463dd6646967f8cf34a18ce357c6f498a4680e6d7b84e2d1697ba9deee84da8ea6bb14bbdb594ee22 + DEPS gettext + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/gettext-0.19.8.1-1-x86_64.pkg.tar.xz" + SHA512 c8c42d084c297746548963f7ec7a7df46241886f3e637e779811ee4a8fee6058f892082bb2658f6777cbffba2de4bcdfd68e846ba63c6a6552c9efb0c8c1de50 + DEPS libintl libgettextpo libasprintf + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/libgettextpo-0.19.8.1-1-x86_64.pkg.tar.xz" + SHA512 480b782a79b0ce71ed9939ae3a6821fc2f5a63358733965c62cee027d0e6c88e255df1d62379ee47f5a7f8ffe163e554e318dba22c67dc67469b10aa3248edf7 + DEPS gcc-libs + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/libasprintf-0.19.8.1-1-x86_64.pkg.tar.xz" + SHA512 a2e8027b9bbee20f8cf60851130ca2af436641b1fb66054f8deba118da7ebecb1cd188224dcf08e4c5b7cde85b412efab058afef2358e843c9de8eb128ca448c + DEPS gcc-libs + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/findutils-4.7.0-1-x86_64.pkg.tar.xz" + SHA512 fd09a24562b196ff252f4b5de86ed977280306a8c628792930812f146fcf7355f9d87434bbabe25e6cc17d8bd028f6bc68fc02e5bea83137a49cf5cc6f509e10 + DEPS libintl libiconv + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/libintl-0.19.8.1-1-x86_64.pkg.tar.xz" + SHA512 4e54c252b828c862f376d8f5a2410ee623a43d70cbb07d0b8ac20c25096f59fb3ae8dcd011d1792bec76f0b0b9411d0e184ee23707995761dc50eb76f9fc6b92 + DEPS libiconv + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/libiconv-1.16-2-x86_64.pkg.tar.zst" + SHA512 3ab569eca9887ef85e7dd5dbca3143d8a60f7103f370a7ecc979a58a56b0c8dcf1f54ac3df4495bc306bd44bf36ee285aaebbb221c4eebfc912cf47d347d45fc + DEPS gcc-libs + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/gcc-libs-9.3.0-1-x86_64.pkg.tar.xz" + SHA512 2816afbf45aa0ff47f94a623ad083d9421bca5284dc55683c2f1bc09ea0eadfe720afb75aafef60c2ff6384d051c4fbe2a744bb16a20acf34c04dc59b17c3d8c + DEPS msys2-runtime + ) + msys_package( + URL "https://repo.msys2.org/msys/x86_64/msys2-runtime-3.1.6-3-x86_64.pkg.tar.xz" + SHA512 f094a7f4926195ef7ba015f0c5c56587b1faa94d85530f07aaaa5557a1494c3bd75257d4687c8401cbf1328d23e5586a92b05f0a872caebb1a7e941a07829776 + ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-python-numpy-1.19.0-1-any.pkg.tar.zst" - SHA512 15791fff23deda17a4452c9ca3f23210ed77ee20dcdd6e0c31d0e626a63aeb93d15ed814078729101f1cce96129b4b5e3c898396b003d794a52d7169dd027465 - DEPS mingw-w64-x86_64-openblas mingw-w64-x86_64-python - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-openblas-0.3.10-2-any.pkg.tar.zst" - SHA512 3cf15ef191ceb303a7e40ad98aca94c56211b245617c17682379b5606a1a76e12d04fa1a83c6109e89620200a74917bcd981380c7749dda12fa8e79f0b923877 - DEPS mingw-w64-x86_64-gcc-libgfortran mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-libwinpthread - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gcc-libgfortran-10.2.0-1-any.pkg.tar.zst" - SHA512 c2dee2957356fa51aae39d907d0cc07f966028b418f74a1ea7ea551ff001c175d86781f980c0cf994207794322dcd369fa122ab78b6c6d0f0ab01e39a754e780 - DEPS mingw-w64-x86_64-gcc-libs - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-python-3.8.5-1-any.pkg.tar.zst" - SHA512 49bbcaa9479ff95fd21b473a1bc286886b204ec3e2e0d9466322e96a9ee07ccd8116024b54b967a87e4752057004475cac5060605e87bd5057de45efe5122a25 - DEPS mingw-w64-x86_64-bzip2 mingw-w64-x86_64-expat mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-libffi mingw-w64-x86_64-mpdecimal mingw-w64-x86_64-ncurses mingw-w64-x86_64-openssl mingw-w64-x86_64-sqlite3 mingw-w64-x86_64-tcl mingw-w64-x86_64-tk mingw-w64-x86_64-xz mingw-w64-x86_64-zlib - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-bzip2-1.0.8-1-any.pkg.tar.xz" - SHA512 6e01b26a2144f99ca00406dbce5b8c3e928ec8a3ff77e0b741b26aaf9c927e9bea8cb1b5f38cd59118307e10dd4523a0ea2a1ea61f798f99e6d605ef1d100503 - DEPS mingw-w64-x86_64-gcc-libs - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-mpdecimal-2.5.0-1-any.pkg.tar.zst" - SHA512 48130ff676c0235bad4648527021e597ee00aa49a4443740a134005877e2ff2ca27b30a0ac86b923192a65348b36de4e8d3f9c57d76ab42b2e21d1a92dbf7ccf - DEPS mingw-w64-x86_64-gcc-libs - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-ncurses-6.2-1-any.pkg.tar.xz" - SHA512 1cbffe0e181a3d4ceaa8f39b2a649584b2c7d689e6a057d85cb9f84edece2cf60eddc220127c7fa4f29e4aa6e8fb4f568ef9d73582d08168607135af977407e0 - DEPS mingw-w64-x86_64-libsystre - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-libsystre-1.0.1-4-any.pkg.tar.xz" - SHA512 6540e896636d00d1ea4782965b3fe4d4ef1e32e689a98d25e2987191295b319eb1de2e56be3a4b524ff94f522a6c3e55f8159c1a6f58c8739e90f8e24e2d40d8 - DEPS mingw-w64-x86_64-libtre - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-libtre-git-r128.6fb7206-2-any.pkg.tar.xz" - NAME mingw-w64-x86_64-libtre - VERSION git-r128.6fb7206-2 - ANY - REPO mingw/x86_64 - SHA512 d595dbcf3a3b6ed098e46f370533ab86433efcd6b4d3dcf00bbe944ab8c17db7a20f6535b523da43b061f071a3b8aa651700b443ae14ec752ae87500ccc0332d - DEPS mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-gettext - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-openssl-1.1.1.g-1-any.pkg.tar.xz" - SHA512 81681089a19cae7dbdee1bc9d3148f03458fa7a1d2fd105be39299b3a0c91b34450bcfe2ad86622bc6819da1558d7217deb0807b4a7bed942a9a7a786fcd54a3 - DEPS mingw-w64-x86_64-ca-certificates mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-zlib - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-ca-certificates-20200601-1-any.pkg.tar.zst" - SHA512 21a81e1529a3ad4f6eceb3b7d4e36400712d3a690d3991131573d4aae8364965757f9b02054d93c853eb75fbb7f6173a278b122450c800b2c9a1e8017dd35e28 - DEPS mingw-w64-x86_64-p11-kit - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-p11-kit-0.23.20-2-any.pkg.tar.xz" - SHA512 c441c4928465a98aa53917df737b728275bc0f6e9b41e13de7c665a37d2111b46f057bb652a1d5a6c7cdf8a74ea15e365a727671b698f5bbb5a7cfd0b889935e - DEPS mingw-w64-x86_64-gettext mingw-w64-x86_64-libffi mingw-w64-x86_64-libtasn1 - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-libtasn1-4.16.0-1-any.pkg.tar.xz" - SHA512 c450cd49391b46af552a89f2f6e2c21dd5da7d40e7456b380290c514a0f06bcbd63f0f972b3c173c4237bec7b652ff22d2d330e8fdf5c888558380bd2667be64 - DEPS mingw-w64-x86_64-gcc-libs - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-sqlite3-3.33.0-1-any.pkg.tar.zst" - SHA512 eae319f87c9849049347f132efc2ecc46e9ac1ead55542e31a3ea216932a4fa5c5bae8d468d2f050e1e22068ac9fbe9d8e1aa7612cc0110cafe6605032adeb0f - DEPS mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-readline mingw-w64-x86_64-tcl - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-readline-8.0.004-1-any.pkg.tar.xz" - SHA512 e3fb3030a50f677697bec0da39ba2eb979dc28991ad0e29012cbf1bda82723176148510bf924b7fce7a0b79e7b078232d69e07f3fbb7d657b8ee631841730120 - DEPS mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-termcap - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-termcap-1.3.1-6-any.pkg.tar.zst" - SHA512 602d182ba0f1e20c4c51ae09b327c345bd736e6e4f22cd7d58374ac68c705dd0af97663b9b94d41870457f46bb9110abb29186d182196133618fc460f71d1300 - DEPS mingw-w64-x86_64-gcc-libs - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-tk-8.6.10-1-any.pkg.tar.xz" - SHA512 3be88b87d5e77a875ea98f0bce4192242e550eeb1b0d44abfee9c8797135a45dd3219b89006de99458dd3f9ae47da77dccc63dab25cea93fbc285af756264eb8 - DEPS mingw-w64-x86_64-tcl - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-tcl-8.6.10-1-any.pkg.tar.xz" - SHA512 c3f21588e19725598878ef13145fbe7a995c2a0c678ef0a4782e28fd64d65fe3271178369bf0c54e92123eba82f2d3da6ae2fc34acd3b20150d1e173be1c0f8f - DEPS mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-zlib - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-xz-5.2.5-1-any.pkg.tar.xz" - SHA512 0e1336a1565cda6e78996d69ba973aaa3522392ab586f70b0b93dbe09be50baf3e14f8ba0afcc665bc885508f1a898b16f206f89eaa3cbc9985afeea6ff1c02b - DEPS mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-gettext - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gettext-0.19.8.1-9-any.pkg.tar.zst" - SHA512 571a36cf60e40172aaa7a5a40b1db60bbea145d9f399603a625a57ca106679f6feb53fda73d935ce8f0057935cad5b9a8770ae4f065e54e1554a1932b48eec97 - DEPS mingw-w64-x86_64-expat mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-libiconv - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gcc-libs-10.2.0-1-any.pkg.tar.zst" - SHA512 d17eff08c83d08ef020d999a2ead0d25036ada1c1bf6ed7c02bad9b56840ee5a3304acd790d86f52b83b09c1e788f0cecdf7254dc6760c3c7e478f65882cd32d - DEPS mingw-w64-x86_64-gmp mingw-w64-x86_64-libwinpthread mingw-w64-x86_64-mpc mingw-w64-x86_64-mpfr - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-mpc-1.2.0-1-any.pkg.tar.zst" - SHA512 e2e561ef7c1bd85bbf021ecbe4df1cfd377a5b426ec0091f267111b9f18d476d5f95a40e0ffbd97aee5f331c49dc7a8dfc2111d54cc979643fae30e564d671aa - DEPS mingw-w64-x86_64-mpfr - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-mpfr-4.1.0-2-any.pkg.tar.zst" - SHA512 14739667242b8852f0d26547eb3297899a51fd1edafc7101b4e7489273e1efb9cb8422fc067361e3c3694c2afcc6c49fc89537f9f811ad5b9b595873112ee890 - DEPS mingw-w64-x86_64-gmp - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gmp-6.2.0-1-any.pkg.tar.xz" - SHA512 0b22b7363e27cec706eb79ee0c45b5fe7088a5ca69e0868e7366481ed2ea9b3f6623d340cebba0b5ed3d79e4dfc7cf15f53530eb260c6d4057bfc3d92eb8c7bc - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-expat-2.2.9-1-any.pkg.tar.xz" - SHA512 1f747b9c7e6ee680b6d8f76429e81a42e2d4ab72d5d930207c90f4513cca5158c08c8296889fd27fe07a275cdeff5d34b5de0e6d1cd982d2e1d05765d6c8c31a - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-libffi-3.3-1-any.pkg.tar.xz" - SHA512 90451ac2dadcd3f1310b6af977d4c56d239500743a3d67e4f8df915e6e6f65f34d4244843d8bac5718642973be5312c17cb3fb0b4c64732cda06437e9f1ce86d - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-libiconv-1.16-1-any.pkg.tar.xz" - SHA512 c8e2fda532c753e0b1004596bf737c3669355f32af9b45d96c23fcef14994ba21ddf4f75138bdecc94cbf8a8c449eff530d24b74a0da47793e24ce92d154f411 - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-zlib-1.2.11-7-any.pkg.tar.xz" - SHA512 bbd4a549efc2a5f4b1e9f1be00331e8726d80401a9c6117afa9d5dd92f4ac42a06cf2ce491a988e5c6ed7a6e536f8f1746081f4944bc6d473ccd16390fea27fe - ) - msys_package( - URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-libwinpthread-git-8.0.0.5906.c9a21571-1-any.pkg.tar.zst" - NAME mingw-w64-x86_64-libwinpthread - VERSION git-8.0.0.5906.c9a21571-1 - ANY - ZST - REPO mingw/x86_64 - SHA512 a6969a5db1c55ba458c1a047d0a2a9d2db6cc24266ea47f740598b149a601995d2de734a0984ac5e57ee611d5982cbc03fd6fc0f498435e8d6401bf15724caad - ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-python-numpy-1.19.0-1-any.pkg.tar.zst" + SHA512 15791fff23deda17a4452c9ca3f23210ed77ee20dcdd6e0c31d0e626a63aeb93d15ed814078729101f1cce96129b4b5e3c898396b003d794a52d7169dd027465 + DEPS mingw-w64-x86_64-openblas mingw-w64-x86_64-python + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-openblas-0.3.10-2-any.pkg.tar.zst" + SHA512 3cf15ef191ceb303a7e40ad98aca94c56211b245617c17682379b5606a1a76e12d04fa1a83c6109e89620200a74917bcd981380c7749dda12fa8e79f0b923877 + DEPS mingw-w64-x86_64-gcc-libgfortran mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-libwinpthread + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gcc-libgfortran-10.2.0-1-any.pkg.tar.zst" + SHA512 c2dee2957356fa51aae39d907d0cc07f966028b418f74a1ea7ea551ff001c175d86781f980c0cf994207794322dcd369fa122ab78b6c6d0f0ab01e39a754e780 + DEPS mingw-w64-x86_64-gcc-libs + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-python-3.8.5-1-any.pkg.tar.zst" + SHA512 49bbcaa9479ff95fd21b473a1bc286886b204ec3e2e0d9466322e96a9ee07ccd8116024b54b967a87e4752057004475cac5060605e87bd5057de45efe5122a25 + DEPS mingw-w64-x86_64-bzip2 mingw-w64-x86_64-expat mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-libffi mingw-w64-x86_64-mpdecimal mingw-w64-x86_64-ncurses mingw-w64-x86_64-openssl mingw-w64-x86_64-sqlite3 mingw-w64-x86_64-tcl mingw-w64-x86_64-tk mingw-w64-x86_64-xz mingw-w64-x86_64-zlib + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-bzip2-1.0.8-1-any.pkg.tar.xz" + SHA512 6e01b26a2144f99ca00406dbce5b8c3e928ec8a3ff77e0b741b26aaf9c927e9bea8cb1b5f38cd59118307e10dd4523a0ea2a1ea61f798f99e6d605ef1d100503 + DEPS mingw-w64-x86_64-gcc-libs + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-mpdecimal-2.5.0-1-any.pkg.tar.zst" + SHA512 48130ff676c0235bad4648527021e597ee00aa49a4443740a134005877e2ff2ca27b30a0ac86b923192a65348b36de4e8d3f9c57d76ab42b2e21d1a92dbf7ccf + DEPS mingw-w64-x86_64-gcc-libs + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-ncurses-6.2-1-any.pkg.tar.xz" + SHA512 1cbffe0e181a3d4ceaa8f39b2a649584b2c7d689e6a057d85cb9f84edece2cf60eddc220127c7fa4f29e4aa6e8fb4f568ef9d73582d08168607135af977407e0 + DEPS mingw-w64-x86_64-libsystre + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-libsystre-1.0.1-4-any.pkg.tar.xz" + SHA512 6540e896636d00d1ea4782965b3fe4d4ef1e32e689a98d25e2987191295b319eb1de2e56be3a4b524ff94f522a6c3e55f8159c1a6f58c8739e90f8e24e2d40d8 + DEPS mingw-w64-x86_64-libtre + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-libtre-git-r128.6fb7206-2-any.pkg.tar.xz" + NAME mingw-w64-x86_64-libtre + VERSION git-r128.6fb7206-2 + ANY + REPO mingw/x86_64 + SHA512 d595dbcf3a3b6ed098e46f370533ab86433efcd6b4d3dcf00bbe944ab8c17db7a20f6535b523da43b061f071a3b8aa651700b443ae14ec752ae87500ccc0332d + DEPS mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-gettext + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-openssl-1.1.1.g-1-any.pkg.tar.xz" + SHA512 81681089a19cae7dbdee1bc9d3148f03458fa7a1d2fd105be39299b3a0c91b34450bcfe2ad86622bc6819da1558d7217deb0807b4a7bed942a9a7a786fcd54a3 + DEPS mingw-w64-x86_64-ca-certificates mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-zlib + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-ca-certificates-20200601-1-any.pkg.tar.zst" + SHA512 21a81e1529a3ad4f6eceb3b7d4e36400712d3a690d3991131573d4aae8364965757f9b02054d93c853eb75fbb7f6173a278b122450c800b2c9a1e8017dd35e28 + DEPS mingw-w64-x86_64-p11-kit + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-p11-kit-0.23.20-2-any.pkg.tar.xz" + SHA512 c441c4928465a98aa53917df737b728275bc0f6e9b41e13de7c665a37d2111b46f057bb652a1d5a6c7cdf8a74ea15e365a727671b698f5bbb5a7cfd0b889935e + DEPS mingw-w64-x86_64-gettext mingw-w64-x86_64-libffi mingw-w64-x86_64-libtasn1 + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-libtasn1-4.16.0-1-any.pkg.tar.xz" + SHA512 c450cd49391b46af552a89f2f6e2c21dd5da7d40e7456b380290c514a0f06bcbd63f0f972b3c173c4237bec7b652ff22d2d330e8fdf5c888558380bd2667be64 + DEPS mingw-w64-x86_64-gcc-libs + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-sqlite3-3.33.0-1-any.pkg.tar.zst" + SHA512 eae319f87c9849049347f132efc2ecc46e9ac1ead55542e31a3ea216932a4fa5c5bae8d468d2f050e1e22068ac9fbe9d8e1aa7612cc0110cafe6605032adeb0f + DEPS mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-readline mingw-w64-x86_64-tcl + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-readline-8.0.004-1-any.pkg.tar.xz" + SHA512 e3fb3030a50f677697bec0da39ba2eb979dc28991ad0e29012cbf1bda82723176148510bf924b7fce7a0b79e7b078232d69e07f3fbb7d657b8ee631841730120 + DEPS mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-termcap + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-termcap-1.3.1-6-any.pkg.tar.zst" + SHA512 602d182ba0f1e20c4c51ae09b327c345bd736e6e4f22cd7d58374ac68c705dd0af97663b9b94d41870457f46bb9110abb29186d182196133618fc460f71d1300 + DEPS mingw-w64-x86_64-gcc-libs + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-tk-8.6.10-1-any.pkg.tar.xz" + SHA512 3be88b87d5e77a875ea98f0bce4192242e550eeb1b0d44abfee9c8797135a45dd3219b89006de99458dd3f9ae47da77dccc63dab25cea93fbc285af756264eb8 + DEPS mingw-w64-x86_64-tcl + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-tcl-8.6.10-1-any.pkg.tar.xz" + SHA512 c3f21588e19725598878ef13145fbe7a995c2a0c678ef0a4782e28fd64d65fe3271178369bf0c54e92123eba82f2d3da6ae2fc34acd3b20150d1e173be1c0f8f + DEPS mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-zlib + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-xz-5.2.5-1-any.pkg.tar.xz" + SHA512 0e1336a1565cda6e78996d69ba973aaa3522392ab586f70b0b93dbe09be50baf3e14f8ba0afcc665bc885508f1a898b16f206f89eaa3cbc9985afeea6ff1c02b + DEPS mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-gettext + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gettext-0.19.8.1-9-any.pkg.tar.zst" + SHA512 571a36cf60e40172aaa7a5a40b1db60bbea145d9f399603a625a57ca106679f6feb53fda73d935ce8f0057935cad5b9a8770ae4f065e54e1554a1932b48eec97 + DEPS mingw-w64-x86_64-expat mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-libiconv + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gcc-libs-10.2.0-1-any.pkg.tar.zst" + SHA512 d17eff08c83d08ef020d999a2ead0d25036ada1c1bf6ed7c02bad9b56840ee5a3304acd790d86f52b83b09c1e788f0cecdf7254dc6760c3c7e478f65882cd32d + DEPS mingw-w64-x86_64-gmp mingw-w64-x86_64-libwinpthread mingw-w64-x86_64-mpc mingw-w64-x86_64-mpfr + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-mpc-1.2.0-1-any.pkg.tar.zst" + SHA512 e2e561ef7c1bd85bbf021ecbe4df1cfd377a5b426ec0091f267111b9f18d476d5f95a40e0ffbd97aee5f331c49dc7a8dfc2111d54cc979643fae30e564d671aa + DEPS mingw-w64-x86_64-mpfr + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-mpfr-4.1.0-2-any.pkg.tar.zst" + SHA512 14739667242b8852f0d26547eb3297899a51fd1edafc7101b4e7489273e1efb9cb8422fc067361e3c3694c2afcc6c49fc89537f9f811ad5b9b595873112ee890 + DEPS mingw-w64-x86_64-gmp + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-gmp-6.2.0-1-any.pkg.tar.xz" + SHA512 0b22b7363e27cec706eb79ee0c45b5fe7088a5ca69e0868e7366481ed2ea9b3f6623d340cebba0b5ed3d79e4dfc7cf15f53530eb260c6d4057bfc3d92eb8c7bc + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-expat-2.2.9-1-any.pkg.tar.xz" + SHA512 1f747b9c7e6ee680b6d8f76429e81a42e2d4ab72d5d930207c90f4513cca5158c08c8296889fd27fe07a275cdeff5d34b5de0e6d1cd982d2e1d05765d6c8c31a + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-libffi-3.3-1-any.pkg.tar.xz" + SHA512 90451ac2dadcd3f1310b6af977d4c56d239500743a3d67e4f8df915e6e6f65f34d4244843d8bac5718642973be5312c17cb3fb0b4c64732cda06437e9f1ce86d + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-libiconv-1.16-1-any.pkg.tar.xz" + SHA512 c8e2fda532c753e0b1004596bf737c3669355f32af9b45d96c23fcef14994ba21ddf4f75138bdecc94cbf8a8c449eff530d24b74a0da47793e24ce92d154f411 + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-zlib-1.2.11-7-any.pkg.tar.xz" + SHA512 bbd4a549efc2a5f4b1e9f1be00331e8726d80401a9c6117afa9d5dd92f4ac42a06cf2ce491a988e5c6ed7a6e536f8f1746081f4944bc6d473ccd16390fea27fe + ) + msys_package( + URL "https://repo.msys2.org/mingw/x86_64/mingw-w64-x86_64-libwinpthread-git-8.0.0.5906.c9a21571-1-any.pkg.tar.zst" + NAME mingw-w64-x86_64-libwinpthread + VERSION git-8.0.0.5906.c9a21571-1 + ANY + ZST + REPO mingw/x86_64 + SHA512 a6969a5db1c55ba458c1a047d0a2a9d2db6cc24266ea47f740598b149a601995d2de734a0984ac5e57ee611d5982cbc03fd6fc0f498435e8d6401bf15724caad + ) - if(PACKAGES) - message(FATAL_ERROR "Unknown packages were required for vcpkg_acquire_msys(${_am_PACKAGES}): ${PACKAGES}\nThis can be resolved by explicitly passing URL/SHA pairs to DIRECT_PACKAGES.") - endif() + if(PACKAGES) + message(FATAL_ERROR "Unknown packages were required for vcpkg_acquire_msys(${_am_PACKAGES}): ${PACKAGES}\nThis can be resolved by explicitly passing URL/SHA pairs to DIRECT_PACKAGES.") + endif() - string(SHA512 TOTAL_HASH "${TOTAL_HASH}") - string(SUBSTRING "${TOTAL_HASH}" 0 16 TOTAL_HASH) - set(PATH_TO_ROOT ${DOWNLOADS}/tools/msys2/${TOTAL_HASH}) - if(NOT EXISTS "${PATH_TO_ROOT}") - file(REMOVE_RECURSE ${PATH_TO_ROOT}.tmp) - file(MAKE_DIRECTORY ${PATH_TO_ROOT}.tmp/tmp) - set(I 0) - foreach(ARCHIVE IN LISTS ARCHIVES) - vcpkg_execute_required_process( - ALLOW_IN_DOWNLOAD_MODE - COMMAND ${CMAKE_COMMAND} -E tar xzf ${ARCHIVE} - LOGNAME msys-${TARGET_TRIPLET}-${I} - WORKING_DIRECTORY ${PATH_TO_ROOT}.tmp - ) - math(EXPR I "${I} + 1") - endforeach() - file(RENAME ${PATH_TO_ROOT}.tmp ${PATH_TO_ROOT}) - endif() - message(STATUS "Using msys root at ${DOWNLOADS}/tools/msys2/${TOTAL_HASH}") - set(${PATH_TO_ROOT_OUT} ${PATH_TO_ROOT} PARENT_SCOPE) + string(SHA512 TOTAL_HASH "${TOTAL_HASH}") + string(SUBSTRING "${TOTAL_HASH}" 0 16 TOTAL_HASH) + set(PATH_TO_ROOT ${DOWNLOADS}/tools/msys2/${TOTAL_HASH}) + if(NOT EXISTS "${PATH_TO_ROOT}") + file(REMOVE_RECURSE ${PATH_TO_ROOT}.tmp) + file(MAKE_DIRECTORY ${PATH_TO_ROOT}.tmp/tmp) + set(I 0) + foreach(ARCHIVE IN LISTS ARCHIVES) + vcpkg_execute_required_process( + ALLOW_IN_DOWNLOAD_MODE + COMMAND ${CMAKE_COMMAND} -E tar xzf ${ARCHIVE} + LOGNAME msys-${TARGET_TRIPLET}-${I} + WORKING_DIRECTORY ${PATH_TO_ROOT}.tmp + ) + math(EXPR I "${I} + 1") + endforeach() + file(RENAME ${PATH_TO_ROOT}.tmp ${PATH_TO_ROOT}) + endif() + message(STATUS "Using msys root at ${DOWNLOADS}/tools/msys2/${TOTAL_HASH}") + set(${PATH_TO_ROOT_OUT} ${PATH_TO_ROOT} PARENT_SCOPE) endfunction() diff --git a/scripts/cmake/vcpkg_add_to_path.cmake b/scripts/cmake/vcpkg_add_to_path.cmake index 05763b2ef20..6239db0486f 100644 --- a/scripts/cmake/vcpkg_add_to_path.cmake +++ b/scripts/cmake/vcpkg_add_to_path.cmake @@ -1,26 +1,27 @@ -## # vcpkg_add_to_path -## -## Add a directory to the PATH environment variable -## -## ## Usage -## ```cmake -## vcpkg_add_to_path([PREPEND] <${PYTHON3_DIR}>) -## ``` -## -## ## Parameters -## ### -## The directory to add -## -## ### PREPEND -## Prepends the directory. -## -## The default is to append. -## -## ## Examples: -## * [curl](https://github.com/Microsoft/vcpkg/blob/master/ports/curl/portfile.cmake#L75) -## * [folly](https://github.com/Microsoft/vcpkg/blob/master/ports/folly/portfile.cmake#L15) -## * [z3](https://github.com/Microsoft/vcpkg/blob/master/ports/z3/portfile.cmake#L13) -## +#[===[ +# vcpkg_add_to_path + +Add a directory to the PATH environment variable + +## Usage +```cmake +vcpkg_add_to_path([PREPEND] <${PYTHON3_DIR}>) +``` + +## Parameters +### +The directory to add + +### PREPEND +Prepends the directory. + +The default is to append. + +## Examples: +* [curl](https://github.com/Microsoft/vcpkg/blob/master/ports/curl/portfile.cmake#L75) +* [folly](https://github.com/Microsoft/vcpkg/blob/master/ports/folly/portfile.cmake#L15) +* [z3](https://github.com/Microsoft/vcpkg/blob/master/ports/z3/portfile.cmake#L13) +#]===] function(vcpkg_add_to_path) if(NOT "${ARGC}" STREQUAL "1" AND NOT "${ARGC}" STREQUAL "2") message(FATAL_ERROR "vcpkg_add_to_path() only accepts 1 or 2 arguments.") @@ -36,4 +37,4 @@ function(vcpkg_add_to_path) endif() set(ENV{PATH} "$ENV{PATH}${VCPKG_HOST_PATH_SEPARATOR}${ARGV0}") endif() -endfunction() \ No newline at end of file +endfunction() diff --git a/scripts/cmake/vcpkg_apply_patches.cmake b/scripts/cmake/vcpkg_apply_patches.cmake index 5ca7dbca07a..25ba4533199 100644 --- a/scripts/cmake/vcpkg_apply_patches.cmake +++ b/scripts/cmake/vcpkg_apply_patches.cmake @@ -1,34 +1,36 @@ -## # vcpkg_apply_patches -## -## Apply a set of patches to a source tree. This function is deprecated in favor of the `PATCHES` argument to `vcpkg_from_github()` et al. -## -## ## Usage -## ```cmake -## vcpkg_apply_patches( -## SOURCE_PATH <${SOURCE_PATH}> -## [QUIET] -## PATCHES ... -## ) -## ``` -## -## ## Parameters -## ### SOURCE_PATH -## The source path in which apply the patches. By convention, this is usually set in the portfile as the variable `SOURCE_PATH`. -## -## ### PATCHES -## A list of patches that are applied to the source tree. -## -## Generally, these take the form of `${CMAKE_CURRENT_LIST_DIR}/some.patch` to select patches in the `port\\` directory. -## -## ### QUIET -## Disables the warning message upon failure. -## -## This should only be used for edge cases, such as patches that are known to fail even on a clean source tree. -## -## ## Examples -## -## * [libbson](https://github.com/Microsoft/vcpkg/blob/master/ports/libbson/portfile.cmake) -## * [gdal](https://github.com/Microsoft/vcpkg/blob/master/ports/gdal/portfile.cmake) +#[===[.md +# vcpkg_apply_patches + +Apply a set of patches to a source tree. This function is deprecated in favor of the `PATCHES` argument to `vcpkg_from_github()` et al. + +## Usage +```cmake +vcpkg_apply_patches( + SOURCE_PATH <${SOURCE_PATH}> + [QUIET] + PATCHES ... +) +``` + +## Parameters +### SOURCE_PATH +The source path in which apply the patches. By convention, this is usually set in the portfile as the variable `SOURCE_PATH`. + +### PATCHES +A list of patches that are applied to the source tree. + +Generally, these take the form of `${CMAKE_CURRENT_LIST_DIR}/some.patch` to select patches in the `port\\` directory. + +### QUIET +Disables the warning message upon failure. + +This should only be used for edge cases, such as patches that are known to fail even on a clean source tree. + +## Examples + +* [libbson](https://github.com/Microsoft/vcpkg/blob/master/ports/libbson/portfile.cmake) +* [gdal](https://github.com/Microsoft/vcpkg/blob/master/ports/gdal/portfile.cmake) +#]===] include(vcpkg_execute_in_download_mode) diff --git a/scripts/cmake/vcpkg_build_cmake.cmake b/scripts/cmake/vcpkg_build_cmake.cmake index a429ebf4b9c..d463d29c75c 100644 --- a/scripts/cmake/vcpkg_build_cmake.cmake +++ b/scripts/cmake/vcpkg_build_cmake.cmake @@ -1,34 +1,37 @@ -## # vcpkg_build_cmake -## -## Build a cmake project. -## -## ## Usage: -## ```cmake -## vcpkg_build_cmake([DISABLE_PARALLEL] [TARGET ]) -## ``` -## -## ## Parameters: -## ### DISABLE_PARALLEL -## The underlying buildsystem will be instructed to not parallelize -## -## ### TARGET -## The target passed to the cmake build command (`cmake --build . --target `). 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_cmake()`](vcpkg_configure_cmake.md). -## You can use the alias [`vcpkg_install_cmake()`](vcpkg_configure_cmake.md) function if your CMake script supports the -## "install" target -## -## ## Examples: -## -## * [zlib](https://github.com/Microsoft/vcpkg/blob/master/ports/zlib/portfile.cmake) -## * [cpprestsdk](https://github.com/Microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake) -## * [poco](https://github.com/Microsoft/vcpkg/blob/master/ports/poco/portfile.cmake) -## * [opencv](https://github.com/Microsoft/vcpkg/blob/master/ports/opencv/portfile.cmake) +#[===[.md: +# vcpkg_build_cmake + +Build a cmake project. + +## Usage: +```cmake +vcpkg_build_cmake([DISABLE_PARALLEL] [TARGET ]) +``` + +## Parameters: +### DISABLE_PARALLEL +The underlying buildsystem will be instructed to not parallelize + +### TARGET +The target passed to the cmake build command (`cmake --build . --target `). 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_cmake()`](vcpkg_configure_cmake.md). +You can use the alias [`vcpkg_install_cmake()`](vcpkg_configure_cmake.md) function if your CMake script supports the +"install" target + +## Examples: + +* [zlib](https://github.com/Microsoft/vcpkg/blob/master/ports/zlib/portfile.cmake) +* [cpprestsdk](https://github.com/Microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake) +* [poco](https://github.com/Microsoft/vcpkg/blob/master/ports/poco/portfile.cmake) +* [opencv](https://github.com/Microsoft/vcpkg/blob/master/ports/opencv/portfile.cmake) +#]===] + function(vcpkg_build_cmake) # parse parameters such that semicolons in options arguments to COMMAND don't get erased cmake_parse_arguments(PARSE_ARGV 0 _bc "DISABLE_PARALLEL;ADD_BIN_TO_PATH" "TARGET;LOGFILE_ROOT" "") diff --git a/scripts/cmake/vcpkg_build_gn.cmake b/scripts/cmake/vcpkg_build_gn.cmake index cf0ea89cf84..3952e7eedc1 100644 --- a/scripts/cmake/vcpkg_build_gn.cmake +++ b/scripts/cmake/vcpkg_build_gn.cmake @@ -1,18 +1,20 @@ -## # vcpkg_build_gn -## -## Build a GN project -## -## ## Usage: -## ```cmake -## vcpkg_build_gn( -## [TARGETS ...] -## ) -## ``` -## -## ## Parameters: -## ### TARGETS -## Only build the specified targets. +#[===[.md: +# vcpkg_build_gn + +Build a GN project + +## Usage: +```cmake +vcpkg_build_gn( + [TARGETS ...] +) +``` + +## Parameters: +### TARGETS +Only build the specified targets. +#]===] function(vcpkg_build_gn) vcpkg_build_ninja(${ARGN}) -endfunction() \ No newline at end of file +endfunction() diff --git a/scripts/cmake/vcpkg_build_make.cmake b/scripts/cmake/vcpkg_build_make.cmake index d74db5f45a7..654fb8799b8 100644 --- a/scripts/cmake/vcpkg_build_make.cmake +++ b/scripts/cmake/vcpkg_build_make.cmake @@ -1,50 +1,53 @@ -## # vcpkg_build_make -## -## Build a linux makefile project. -## -## ## Usage: -## ```cmake -## vcpkg_build_make([BUILD_TARGET ] -## [ADD_BIN_TO_PATH] -## [ENABLE_INSTALL]) -## [MAKEFILE ] -## [LOGFILE_ROOT ]) -## ``` -## -## ### BUILD_TARGET -## The target passed to the make build command (`./make `). If not specified, the 'all' 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. -## -## ### ENABLE_INSTALL -## IF the port supports the install target use vcpkg_install_make() instead of vcpkg_build_make() -## -## ### MAKEFILE -## Specifies the Makefile as a relative path from the root of the sources passed to `vcpkg_configure_make()` -## -## ### BUILD_TARGET -## The target passed to the make build command (`./make `). If not specified, the 'all' target will -## be passed. -## -## ### DISABLE_PARALLEL -## The underlying buildsystem will be instructed to not parallelize -## -## ### SUBPATH -## Additional subdir to invoke make in. Useful if only parts of a port should be built. -## -## ## 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) +#[===[.md: +# vcpkg_build_make + +Build a linux makefile project. + +## Usage: +```cmake +vcpkg_build_make([BUILD_TARGET ] + [ADD_BIN_TO_PATH] + [ENABLE_INSTALL] + [MAKEFILE ] + [LOGFILE_ROOT ]) +``` + +### BUILD_TARGET +The target passed to the make build command (`./make `). If not specified, the 'all' 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. + +### ENABLE_INSTALL +IF the port supports the install target use vcpkg_install_make() instead of vcpkg_build_make() + +### MAKEFILE +Specifies the Makefile as a relative path from the root of the sources passed to `vcpkg_configure_make()` + +### BUILD_TARGET +The target passed to the make build command (`./make `). If not specified, the 'all' target will +be passed. + +### DISABLE_PARALLEL +The underlying buildsystem will be instructed to not parallelize + +### SUBPATH +Additional subdir to invoke make in. Useful if only parts of a port should be built. + +## 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_install_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) +#]===] + function(vcpkg_build_make) if(NOT _VCPKG_CMAKE_VARS_FILE) # vcpkg_build_make called without using vcpkg_configure_make before diff --git a/scripts/cmake/vcpkg_build_msbuild.cmake b/scripts/cmake/vcpkg_build_msbuild.cmake index 19b136cd299..a682c6a1786 100644 --- a/scripts/cmake/vcpkg_build_msbuild.cmake +++ b/scripts/cmake/vcpkg_build_msbuild.cmake @@ -1,65 +1,67 @@ -## # vcpkg_build_msbuild -## -## Build a msbuild-based project. Deprecated in favor of `vcpkg_install_msbuild()`. -## -## ## Usage -## ```cmake -## vcpkg_build_msbuild( -## PROJECT_PATH <${SOURCE_PATH}/port.sln> -## [RELEASE_CONFIGURATION ] -## [DEBUG_CONFIGURATION ] -## [TARGET ] -## [TARGET_PLATFORM_VERSION <10.0.15063.0>] -## [PLATFORM <${TRIPLET_SYSTEM_ARCH}>] -## [PLATFORM_TOOLSET <${VCPKG_PLATFORM_TOOLSET}>] -## [OPTIONS ...] -## [OPTIONS_RELEASE ...] -## [OPTIONS_DEBUG ...] -## [USE_VCPKG_INTEGRATION] -## ) -## ``` -## -## ## Parameters -## ### USE_VCPKG_INTEGRATION -## Apply the normal `integrate install` integration for building the project. -## -## By default, projects built with this command will not automatically link libraries or have header paths set. -## -## ### PROJECT_PATH -## The path to the solution (`.sln`) or project (`.vcxproj`) file. -## -## ### RELEASE_CONFIGURATION -## The configuration (``/p:Configuration`` msbuild parameter) used for Release builds. -## -## ### DEBUG_CONFIGURATION -## The configuration (``/p:Configuration`` msbuild parameter) -## used for Debug builds. -## -## ### TARGET_PLATFORM_VERSION -## The WindowsTargetPlatformVersion (``/p:WindowsTargetPlatformVersion`` msbuild parameter) -## -## ### TARGET -## The MSBuild target to build. (``/t:``) -## -## ### PLATFORM -## The platform (``/p:Platform`` msbuild parameter) used for the build. -## -## ### PLATFORM_TOOLSET -## The platform toolset (``/p:PlatformToolset`` msbuild parameter) used for the build. -## -## ### OPTIONS -## Additional options passed to msbuild for all builds. -## -## ### OPTIONS_RELEASE -## Additional options passed to msbuild for Release builds. These are in addition to `OPTIONS`. -## -## ### OPTIONS_DEBUG -## Additional options passed to msbuild for Debug builds. These are in addition to `OPTIONS`. -## -## ## Examples -## -## * [chakracore](https://github.com/Microsoft/vcpkg/blob/master/ports/chakracore/portfile.cmake) -## * [cppunit](https://github.com/Microsoft/vcpkg/blob/master/ports/cppunit/portfile.cmake) +#[===[.md: +# vcpkg_build_msbuild + +Build a msbuild-based project. Deprecated in favor of `vcpkg_install_msbuild()`. + +## Usage +```cmake +vcpkg_build_msbuild( + PROJECT_PATH <${SOURCE_PATH}/port.sln> + [RELEASE_CONFIGURATION ] + [DEBUG_CONFIGURATION ] + [TARGET ] + [TARGET_PLATFORM_VERSION <10.0.15063.0>] + [PLATFORM <${TRIPLET_SYSTEM_ARCH}>] + [PLATFORM_TOOLSET <${VCPKG_PLATFORM_TOOLSET}>] + [OPTIONS ...] + [OPTIONS_RELEASE ...] + [OPTIONS_DEBUG ...] + [USE_VCPKG_INTEGRATION] +) +``` + +## Parameters +### USE_VCPKG_INTEGRATION +Apply the normal `integrate install` integration for building the project. + +By default, projects built with this command will not automatically link libraries or have header paths set. + +### PROJECT_PATH +The path to the solution (`.sln`) or project (`.vcxproj`) file. + +### RELEASE_CONFIGURATION +The configuration (``/p:Configuration`` msbuild parameter) used for Release builds. + +### DEBUG_CONFIGURATION +The configuration (``/p:Configuration`` msbuild parameter) +used for Debug builds. + +### TARGET_PLATFORM_VERSION +The WindowsTargetPlatformVersion (``/p:WindowsTargetPlatformVersion`` msbuild parameter) + +### TARGET +The MSBuild target to build. (``/t:``) + +### PLATFORM +The platform (``/p:Platform`` msbuild parameter) used for the build. + +### PLATFORM_TOOLSET +The platform toolset (``/p:PlatformToolset`` msbuild parameter) used for the build. + +### OPTIONS +Additional options passed to msbuild for all builds. + +### OPTIONS_RELEASE +Additional options passed to msbuild for Release builds. These are in addition to `OPTIONS`. + +### OPTIONS_DEBUG +Additional options passed to msbuild for Debug builds. These are in addition to `OPTIONS`. + +## Examples + +* [chakracore](https://github.com/Microsoft/vcpkg/blob/master/ports/chakracore/portfile.cmake) +* [cppunit](https://github.com/Microsoft/vcpkg/blob/master/ports/cppunit/portfile.cmake) +#]===] function(vcpkg_build_msbuild) # parse parameters such that semicolons in options arguments to COMMAND don't get erased diff --git a/scripts/cmake/vcpkg_build_ninja.cmake b/scripts/cmake/vcpkg_build_ninja.cmake index d49cc5c1fe5..2c9276e63d5 100644 --- a/scripts/cmake/vcpkg_build_ninja.cmake +++ b/scripts/cmake/vcpkg_build_ninja.cmake @@ -1,17 +1,19 @@ -## # vcpkg_build_ninja -## -## Build a ninja project -## -## ## Usage: -## ```cmake -## vcpkg_build_ninja( -## [TARGETS ...] -## ) -## ``` -## -## ## Parameters: -## ### TARGETS -## Only build the specified targets. +#[===[.md: +# vcpkg_build_ninja + +Build a ninja project + +## Usage: +```cmake +vcpkg_build_ninja( + [TARGETS ...] +) +``` + +## Parameters: +### TARGETS +Only build the specified targets. +#]===] function(vcpkg_build_ninja) # parse parameters such that semicolons in options arguments to COMMAND don't get erased @@ -35,4 +37,4 @@ function(vcpkg_build_ninja) if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") build(${TARGET_TRIPLET}-rel) endif() -endfunction() \ No newline at end of file +endfunction() diff --git a/scripts/cmake/vcpkg_build_nmake.cmake b/scripts/cmake/vcpkg_build_nmake.cmake index 7f81ca29322..583ea6df21f 100644 --- a/scripts/cmake/vcpkg_build_nmake.cmake +++ b/scripts/cmake/vcpkg_build_nmake.cmake @@ -1,76 +1,79 @@ -## # vcpkg_build_nmake -## -## Build a msvc makefile project. -## -## ## Usage: -## ```cmake -## vcpkg_build_nmake( -## SOURCE_PATH <${SOURCE_PATH}> -## [NO_DEBUG] -## [TARGET ] -## [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>...] -## [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. -## -## ### 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. -## -## ### 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) +#[===[.md: +# vcpkg_build_nmake + +Build a msvc makefile project. + +## Usage: +```cmake +vcpkg_build_nmake( + SOURCE_PATH <${SOURCE_PATH}> + [NO_DEBUG] + [TARGET ] + [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>...] + [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. + +### 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. + +### 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_install_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) +#]===] + function(vcpkg_build_nmake) # parse parameters such that semicolons in options arguments to COMMAND don't get erased cmake_parse_arguments(PARSE_ARGV 0 _bn diff --git a/scripts/cmake/vcpkg_build_qmake.cmake b/scripts/cmake/vcpkg_build_qmake.cmake index 5568c080ce3..fd00f590f8b 100644 --- a/scripts/cmake/vcpkg_build_qmake.cmake +++ b/scripts/cmake/vcpkg_build_qmake.cmake @@ -1,11 +1,13 @@ -#.rst: -# .. command:: vcpkg_build_qmake -# -# Build a qmake-based project, previously configured using vcpkg_configure_qmake. -# -# :: -# vcpkg_build_qmake() -# +#[===[.md: +# vcpkg_build_qmake + +Build a qmake-based project, previously configured using vcpkg_configure_qmake. + +```cmake +vcpkg_build_qmake() +``` +#]===] + function(vcpkg_build_qmake) # parse parameters such that semicolons in options arguments to COMMAND don't get erased cmake_parse_arguments(PARSE_ARGV 0 _csc "SKIP_MAKEFILES" "BUILD_LOGNAME" "TARGETS;RELEASE_TARGETS;DEBUG_TARGETS") diff --git a/scripts/cmake/vcpkg_buildpath_length_warning.cmake b/scripts/cmake/vcpkg_buildpath_length_warning.cmake index b7ef10bb88f..c3cc6d0f6d8 100644 --- a/scripts/cmake/vcpkg_buildpath_length_warning.cmake +++ b/scripts/cmake/vcpkg_buildpath_length_warning.cmake @@ -1,3 +1,14 @@ +#[===[.md: +# vcpkg_buildpath_length_warning + +Warns the user if their vcpkg installation path might be too long for the package they're installing. + +## Usage +```cmake +vcpkg_buildpath_length_warning(13) +``` +#]===] + function(vcpkg_buildpath_length_warning WARNING_LENGTH) string(LENGTH "${CURRENT_BUILDTREES_DIR}" BUILDTREES_PATH_LENGTH) if(BUILDTREES_PATH_LENGTH GREATER ${WARNING_LENGTH} AND CMAKE_HOST_WIN32) @@ -5,4 +16,4 @@ function(vcpkg_buildpath_length_warning WARNING_LENGTH) "We recommend moving vcpkg to a short path such as 'C:\\src\\vcpkg' or using the subst command." ) endif() -endfunction() \ No newline at end of file +endfunction() diff --git a/scripts/cmake/vcpkg_check_features.cmake b/scripts/cmake/vcpkg_check_features.cmake index 404a1b61db4..c22903eaaf7 100644 --- a/scripts/cmake/vcpkg_check_features.cmake +++ b/scripts/cmake/vcpkg_check_features.cmake @@ -1,148 +1,150 @@ -## # vcpkg_check_features -## 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: -## -## * `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. -## -## -## ## 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 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} -## ) -## ``` -## -## ### Example 2: Inverted features -## -## ```cmake -## $ ./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} -## ) -## ``` -## -## ### Example 3: Set multiple options for same feature -## -## ```cmake -## $ ./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 install rocksdb[tbb] -## -## # 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 -## ) -## -## 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) -## +#[===[.md: +# vcpkg_check_features +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: + +* `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. + + +## 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 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} +) +``` + +### Example 2: Inverted features + +```cmake +$ ./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} +) +``` + +### Example 3: Set multiple options for same feature + +```cmake +$ ./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 install rocksdb[tbb] + +# 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 +) + +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) +#]===] + function(vcpkg_check_features) # parse parameters such that semicolons in options arguments to COMMAND don't get erased cmake_parse_arguments(PARSE_ARGV 0 _vcf "" "OUT_FEATURE_OPTIONS" "FEATURES;INVERTED_FEATURES") diff --git a/scripts/cmake/vcpkg_check_linkage.cmake b/scripts/cmake/vcpkg_check_linkage.cmake index 101adc4fd58..9a8a7acb021 100644 --- a/scripts/cmake/vcpkg_check_linkage.cmake +++ b/scripts/cmake/vcpkg_check_linkage.cmake @@ -1,34 +1,37 @@ -## # vcpkg_check_linkage -## -## Asserts the available library and CRT linkage options for the port. -## -## ## Usage -## ```cmake -## vcpkg_check_linkage( -## [ONLY_STATIC_LIBRARY | ONLY_DYNAMIC_LIBRARY] -## [ONLY_STATIC_CRT | ONLY_DYNAMIC_CRT] -## ) -## ``` -## -## ## Parameters -## ### ONLY_STATIC_LIBRARY -## Indicates that this port can only be built with static library linkage. -## -## ### ONLY_DYNAMIC_LIBRARY -## Indicates that this port can only be built with dynamic/shared library linkage. -## -## ### ONLY_STATIC_CRT -## Indicates that this port can only be built with static CRT linkage. -## -## ### ONLY_DYNAMIC_CRT -## Indicates that this port can only be built with dynamic/shared CRT linkage. -## -## ## Notes -## This command will either alter the settings for `VCPKG_LIBRARY_LINKAGE` or fail, depending on what was requested by the user versus what the library supports. -## -## ## Examples -## -## * [libimobiledevice](https://github.com/Microsoft/vcpkg/blob/master/ports/libimobiledevice/portfile.cmake) +#[===[.md: +# vcpkg_check_linkage + +Asserts the available library and CRT linkage options for the port. + +## Usage +```cmake +vcpkg_check_linkage( + [ONLY_STATIC_LIBRARY | ONLY_DYNAMIC_LIBRARY] + [ONLY_STATIC_CRT | ONLY_DYNAMIC_CRT] +) +``` + +## Parameters +### ONLY_STATIC_LIBRARY +Indicates that this port can only be built with static library linkage. + +### ONLY_DYNAMIC_LIBRARY +Indicates that this port can only be built with dynamic/shared library linkage. + +### ONLY_STATIC_CRT +Indicates that this port can only be built with static CRT linkage. + +### ONLY_DYNAMIC_CRT +Indicates that this port can only be built with dynamic/shared CRT linkage. + +## Notes +This command will either alter the settings for `VCPKG_LIBRARY_LINKAGE` or fail, depending on what was requested by the user versus what the library supports. + +## Examples + +* [abseil](https://github.com/Microsoft/vcpkg/blob/master/ports/abseil/portfile.cmake) +#]===] + function(vcpkg_check_linkage) cmake_parse_arguments(_csc "ONLY_STATIC_LIBRARY;ONLY_DYNAMIC_LIBRARY;ONLY_DYNAMIC_CRT;ONLY_STATIC_CRT" "" "" ${ARGN}) diff --git a/scripts/cmake/vcpkg_clean_executables_in_bin.cmake b/scripts/cmake/vcpkg_clean_executables_in_bin.cmake index b479bd3d0de..077e23cc3f7 100644 --- a/scripts/cmake/vcpkg_clean_executables_in_bin.cmake +++ b/scripts/cmake/vcpkg_clean_executables_in_bin.cmake @@ -1,23 +1,26 @@ -## # vcpkg_clean_executables_in_bin -## -## Remove specified executables found in `${CURRENT_PACKAGES_DIR}/bin` and `${CURRENT_PACKAGES_DIR}/debug/bin`. If, after all specified executables have been removed, and the `bin` and `debug/bin` directories are empty, then also delete `bin` and `debug/bin` directories. -## -## ## Usage -## ```cmake -## vcpkg_clean_executables_in_bin( -## FILE_NAMES ... -## ) -## ``` -## -## ## Parameters -## ### FILE_NAMES -## A list of executable filenames without extension. -## -## ## Notes -## Generally, there is no need to call this function manually. Instead, pass an extra `AUTO_CLEAN` argument when calling `vcpkg_copy_tools`. -## -## ## Examples -## * [czmq](https://github.com/microsoft/vcpkg/blob/master/ports/czmq/portfile.cmake) +#[===[.md: +# vcpkg_clean_executables_in_bin + +Remove specified executables found in `${CURRENT_PACKAGES_DIR}/bin` and `${CURRENT_PACKAGES_DIR}/debug/bin`. If, after all specified executables have been removed, and the `bin` and `debug/bin` directories are empty, then also delete `bin` and `debug/bin` directories. + +## Usage +```cmake +vcpkg_clean_executables_in_bin( + FILE_NAMES ... +) +``` + +## Parameters +### FILE_NAMES +A list of executable filenames without extension. + +## Notes +Generally, there is no need to call this function manually. Instead, pass an extra `AUTO_CLEAN` argument when calling `vcpkg_copy_tools`. + +## Examples +* [czmq](https://github.com/microsoft/vcpkg/blob/master/ports/czmq/portfile.cmake) +#]===] + function(vcpkg_clean_executables_in_bin) # parse parameters such that semicolons in options arguments to COMMAND don't get erased cmake_parse_arguments(PARSE_ARGV 0 _vct "" "" "FILE_NAMES") diff --git a/scripts/cmake/vcpkg_clean_msbuild.cmake b/scripts/cmake/vcpkg_clean_msbuild.cmake index b0d77dfd2b6..ead78706d3c 100644 --- a/scripts/cmake/vcpkg_clean_msbuild.cmake +++ b/scripts/cmake/vcpkg_clean_msbuild.cmake @@ -1,15 +1,17 @@ -## # vcpkg_clean_msbuild -## -## Clean intermediate files generated by `vcpkg_install_msbuild()`. -## -## ## Usage -## ```cmake -## vcpkg_clean_msbuild() -## ``` -## -## ## Examples -## -## * [xalan-c](https://github.com/Microsoft/vcpkg/blob/master/ports/xalan-c/portfile.cmake) +#[===[.md: +# vcpkg_clean_msbuild + +Clean intermediate files generated by `vcpkg_install_msbuild()`. + +## Usage +```cmake +vcpkg_clean_msbuild() +``` + +## Examples + +* [xalan-c](https://github.com/Microsoft/vcpkg/blob/master/ports/xalan-c/portfile.cmake) +#]===] function(vcpkg_clean_msbuild) file(REMOVE_RECURSE diff --git a/scripts/cmake/vcpkg_common_definitions.cmake b/scripts/cmake/vcpkg_common_definitions.cmake index 33c66c3ec94..10e5338d0e7 100644 --- a/scripts/cmake/vcpkg_common_definitions.cmake +++ b/scripts/cmake/vcpkg_common_definitions.cmake @@ -1,29 +1,30 @@ -## # 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, OPENBSD. only defined if -## VCPKG_HOST_IS_ with being one of the following: WINDOWS, LINUX, OSX, FREEBSD, OPENBSD. only defined if -## VCPKG_HOST_PATH_SEPARATOR Host specific path separator (USAGE: "${VCPKG_HOST_PATH_SEPARATOR}"; only use and pass variables with VCPKG_HOST_PATH_SEPARATOR within "") -## VCPKG_HOST_EXECUTABLE_SUFFIX executable suffix of the host -## VCPKG_TARGET_EXECUTABLE_SUFFIX executable suffix of the target -## 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) -## VCPKG_TARGET_IMPORT_LIBRARY_PREFIX import library prefix for target (same as CMAKE_IMPORT_LIBRARY_PREFIX) -## VCPKG_TARGET_IMPORT_LIBRARY_SUFFIX import library suffix for target (same as CMAKE_IMPORT_LIBRARY_SUFFIX) -## VCPKG_FIND_LIBRARY_PREFIXES target dependent prefixes used for find_library calls in portfiles -## VCPKG_FIND_LIBRARY_SUFFIXES target dependent suffixes used for find_library calls in portfiles -## VCPKG_SYSTEM_LIBRARIES list of libraries are provide by the toolchain and are not managed by vcpkg -## ``` -## -## CMAKE_STATIC_LIBRARY_(PREFIX|SUFFIX), CMAKE_SHARED_LIBRARY_(PREFIX|SUFFIX) and CMAKE_IMPORT_LIBRARY_(PREFIX|SUFFIX) are defined for the target -## Furthermore the variables CMAKE_FIND_LIBRARY_(PREFIXES|SUFFIXES) are also defined for the target so that -## portfiles are able to use find_library calls to discover dependent libraries within the current triplet for ports. -## +#[===[.md: +# 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, OPENBSD. only defined if +VCPKG_HOST_IS_ with being one of the following: WINDOWS, LINUX, OSX, FREEBSD, OPENBSD. only defined if +VCPKG_HOST_PATH_SEPARATOR Host specific path separator (USAGE: "${VCPKG_HOST_PATH_SEPARATOR}"; only use and pass variables with VCPKG_HOST_PATH_SEPARATOR within "") +VCPKG_HOST_EXECUTABLE_SUFFIX executable suffix of the host +VCPKG_TARGET_EXECUTABLE_SUFFIX executable suffix of the target +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) +VCPKG_TARGET_IMPORT_LIBRARY_PREFIX import library prefix for target (same as CMAKE_IMPORT_LIBRARY_PREFIX) +VCPKG_TARGET_IMPORT_LIBRARY_SUFFIX import library suffix for target (same as CMAKE_IMPORT_LIBRARY_SUFFIX) +VCPKG_FIND_LIBRARY_PREFIXES target dependent prefixes used for find_library calls in portfiles +VCPKG_FIND_LIBRARY_SUFFIXES target dependent suffixes used for find_library calls in portfiles +VCPKG_SYSTEM_LIBRARIES list of libraries are provide by the toolchain and are not managed by vcpkg +``` + +CMAKE_STATIC_LIBRARY_(PREFIX|SUFFIX), CMAKE_SHARED_LIBRARY_(PREFIX|SUFFIX) and CMAKE_IMPORT_LIBRARY_(PREFIX|SUFFIX) are defined for the target +Furthermore the variables CMAKE_FIND_LIBRARY_(PREFIXES|SUFFIXES) are also defined for the target so that +portfiles are able to use find_library calls to discover dependent libraries within the current triplet for ports. +#]===] #Helper variable to identify the Target system. VCPKG_TARGET_IS_ if (NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") diff --git a/scripts/cmake/vcpkg_common_functions.cmake b/scripts/cmake/vcpkg_common_functions.cmake index 4aeb9524a49..6b6959cd8c4 100644 --- a/scripts/cmake/vcpkg_common_functions.cmake +++ b/scripts/cmake/vcpkg_common_functions.cmake @@ -1 +1,3 @@ +# DEPRECATED + message("${_VCPKG_BACKCOMPAT_MESSAGE_LEVEL}" "vcpkg_common_functions has been removed and all values are automatically provided in all portfile.cmake invocations. Please remove `include(vcpkg_common_functions)`.") diff --git a/scripts/cmake/vcpkg_configure_cmake.cmake b/scripts/cmake/vcpkg_configure_cmake.cmake index 2f22d34a14a..8800d45eb2f 100644 --- a/scripts/cmake/vcpkg_configure_cmake.cmake +++ b/scripts/cmake/vcpkg_configure_cmake.cmake @@ -1,68 +1,71 @@ -## # vcpkg_configure_cmake -## -## Configure CMake for Debug and Release builds of a project. -## -## ## Usage -## ```cmake -## 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>...] -## [OPTIONS_DEBUG <-DDEBUGGABLE=1>...] -## ) -## ``` -## -## ## Parameters -## ### 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. -## -## ### 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. -## -## This also disables CMAKE_DISABLE_SOURCE_CHANGES. -## -## ### 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. -## -## 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. -## -## ### OPTIONS_RELEASE -## Additional options passed to CMake during the Release configuration. These are in addition to `OPTIONS`. -## -## ### OPTIONS_DEBUG -## Additional options passed to CMake during the Debug configuration. These are in addition to `OPTIONS`. -## -## ### LOGNAME -## Name of the log to write the output of the configure call to. -## -## ## Notes -## This command supplies many common arguments to CMake. To see the full list, examine the source. -## -## ## Examples -## -## * [zlib](https://github.com/Microsoft/vcpkg/blob/master/ports/zlib/portfile.cmake) -## * [cpprestsdk](https://github.com/Microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake) -## * [poco](https://github.com/Microsoft/vcpkg/blob/master/ports/poco/portfile.cmake) -## * [opencv](https://github.com/Microsoft/vcpkg/blob/master/ports/opencv/portfile.cmake) +#[===[.md: +# vcpkg_configure_cmake + +Configure CMake for Debug and Release builds of a project. + +## Usage +```cmake +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>...] + [OPTIONS_DEBUG <-DDEBUGGABLE=1>...] +) +``` + +## Parameters +### 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. + +### 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. + +This also disables CMAKE_DISABLE_SOURCE_CHANGES. + +### 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. + +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. + +### OPTIONS_RELEASE +Additional options passed to CMake during the Release configuration. These are in addition to `OPTIONS`. + +### OPTIONS_DEBUG +Additional options passed to CMake during the Debug configuration. These are in addition to `OPTIONS`. + +### LOGNAME +Name of the log to write the output of the configure call to. + +## Notes +This command supplies many common arguments to CMake. To see the full list, examine the source. + +## Examples + +* [zlib](https://github.com/Microsoft/vcpkg/blob/master/ports/zlib/portfile.cmake) +* [cpprestsdk](https://github.com/Microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake) +* [poco](https://github.com/Microsoft/vcpkg/blob/master/ports/poco/portfile.cmake) +* [opencv](https://github.com/Microsoft/vcpkg/blob/master/ports/opencv/portfile.cmake) +#]===] + function(vcpkg_configure_cmake) # parse parameters such that semicolons in arguments to OPTIONS don't get erased cmake_parse_arguments(PARSE_ARGV 0 _csc diff --git a/scripts/cmake/vcpkg_configure_gn.cmake b/scripts/cmake/vcpkg_configure_gn.cmake index 5d083aed8f4..88346340232 100644 --- a/scripts/cmake/vcpkg_configure_gn.cmake +++ b/scripts/cmake/vcpkg_configure_gn.cmake @@ -1,30 +1,32 @@ -## # vcpkg_configure_gn -## -## Generate Ninja (GN) targets -## -## ## Usage: -## ```cmake -## vcpkg_configure_gn( -## SOURCE_PATH -## [OPTIONS ] -## [OPTIONS_DEBUG ] -## [OPTIONS_RELEASE ] -## ) -## ``` -## -## ## Parameters: -## ### SOURCE_PATH (required) -## The path to the GN project. -## -## ### OPTIONS -## Options to be passed to both the debug and release targets. -## Note: Must be provided as a space-separated string. -## -## ### OPTIONS_DEBUG (space-separated string) -## Options to be passed to the debug target. -## -## ### OPTIONS_RELEASE (space-separated string) -## Options to be passed to the release target. +#[===[.md: +# vcpkg_configure_gn + +Generate Ninja (GN) targets + +## Usage: +```cmake +vcpkg_configure_gn( + SOURCE_PATH + [OPTIONS ] + [OPTIONS_DEBUG ] + [OPTIONS_RELEASE ] +) +``` + +## Parameters: +### SOURCE_PATH (required) +The path to the GN project. + +### OPTIONS +Options to be passed to both the debug and release targets. +Note: Must be provided as a space-separated string. + +### OPTIONS_DEBUG (space-separated string) +Options to be passed to the debug target. + +### OPTIONS_RELEASE (space-separated string) +Options to be passed to the release target. +#]===] function(vcpkg_configure_gn) # parse parameters such that semicolons in options arguments to COMMAND don't get erased @@ -56,4 +58,4 @@ function(vcpkg_configure_gn) if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") generate(${TARGET_TRIPLET}-rel "--args=${_vcg_OPTIONS} ${_vcg_OPTIONS_RELEASE}") endif() -endfunction() \ No newline at end of file +endfunction() diff --git a/scripts/cmake/vcpkg_configure_make.cmake b/scripts/cmake/vcpkg_configure_make.cmake index 8e079b64d2f..8a7b27be890 100644 --- a/scripts/cmake/vcpkg_configure_make.cmake +++ b/scripts/cmake/vcpkg_configure_make.cmake @@ -1,91 +1,94 @@ -## # vcpkg_configure_make -## -## Configure configure for Debug and Release builds of a project. -## -## ## Usage -## ```cmake -## vcpkg_configure_make( -## SOURCE_PATH <${SOURCE_PATH}> -## [AUTOCONFIG] -## [USE_WRAPPERS] -## [DETERMINE_BUILD_TRIPLET] -## [BUILD_TRIPLET "--host=x64 --build=i686-unknown-pc"] -## [NO_ADDITIONAL_PATHS] -## [CONFIG_DEPENDENT_ENVIRONMENT ...] -## [CONFIGURE_ENVIRONMENT_VARIABLES ...] -## [ADD_BIN_TO_PATH] -## [NO_DEBUG] -## [SKIP_CONFIGURE] -## [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`. -## -## ### SKIP_CONFIGURE -## Skip configure process -## -## ### USE_WRAPPERS -## Use autotools ar-lib and compile wrappers (only applies to windows cl and lib) -## -## ### BUILD_TRIPLET -## Used to pass custom --build/--target/--host to configure. Can be globally overwritten by VCPKG_MAKE_BUILD_TRIPLET -## -## ### DETERMINE_BUILD_TRIPLET -## For ports having a configure script following the autotools rules for selecting the triplet -## -## ### NO_ADDITIONAL_PATHS -## Don't pass any additional paths except for --prefix to the configure call -## -## ### AUTOCONFIG -## Need to use autoconfig to generate configure file. -## -## ### PRERUN_SHELL -## Script that needs to be called before configuration (do not use for batch files which simply call autoconf or configure) -## -## ### ADD_BIN_TO_PATH -## Adds the appropriate Release and Debug `bin\` directories to the path during configure such that executables can run against the in-tree DLLs. -## -## ## DISABLE_VERBOSE_FLAGS -## do not pass '--disable-silent-rules --verbose' to configure -## -## ### 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`. -## -## ### CONFIG_DEPENDENT_ENVIRONMENT -## List of additional configuration dependent environment variables to set. -## Pass SOMEVAR to set the environment and have SOMEVAR_(DEBUG|RELEASE) set in the portfile to the appropriate values -## General environment variables can be set from within the portfile itself. -## -## ### CONFIGURE_ENVIRONMENT_VARIABLES -## List of additional environment variables to pass via the configure call. -## -## ## 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) +#[===[.md: +# vcpkg_configure_make + +Configure configure for Debug and Release builds of a project. + +## Usage +```cmake +vcpkg_configure_make( + SOURCE_PATH <${SOURCE_PATH}> + [AUTOCONFIG] + [USE_WRAPPERS] + [DETERMINE_BUILD_TRIPLET] + [BUILD_TRIPLET "--host=x64 --build=i686-unknown-pc"] + [NO_ADDITIONAL_PATHS] + [CONFIG_DEPENDENT_ENVIRONMENT ...] + [CONFIGURE_ENVIRONMENT_VARIABLES ...] + [ADD_BIN_TO_PATH] + [NO_DEBUG] + [SKIP_CONFIGURE] + [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`. + +### SKIP_CONFIGURE +Skip configure process + +### USE_WRAPPERS +Use autotools ar-lib and compile wrappers (only applies to windows cl and lib) + +### BUILD_TRIPLET +Used to pass custom --build/--target/--host to configure. Can be globally overwritten by VCPKG_MAKE_BUILD_TRIPLET + +### DETERMINE_BUILD_TRIPLET +For ports having a configure script following the autotools rules for selecting the triplet + +### NO_ADDITIONAL_PATHS +Don't pass any additional paths except for --prefix to the configure call + +### AUTOCONFIG +Need to use autoconfig to generate configure file. + +### PRERUN_SHELL +Script that needs to be called before configuration (do not use for batch files which simply call autoconf or configure) + +### ADD_BIN_TO_PATH +Adds the appropriate Release and Debug `bin\` directories to the path during configure such that executables can run against the in-tree DLLs. + +## DISABLE_VERBOSE_FLAGS +do not pass '--disable-silent-rules --verbose' to configure + +### 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`. + +### CONFIG_DEPENDENT_ENVIRONMENT +List of additional configuration dependent environment variables to set. +Pass SOMEVAR to set the environment and have SOMEVAR_(DEBUG|RELEASE) set in the portfile to the appropriate values +General environment variables can be set from within the portfile itself. + +### CONFIGURE_ENVIRONMENT_VARIABLES +List of additional environment variables to pass via the configure call. + +## 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) +#]===] + macro(_vcpkg_determine_host_mingw out_var) if(DEFINED ENV{PROCESSOR_ARCHITEW6432}) set(HOST_ARCH $ENV{PROCESSOR_ARCHITEW6432}) @@ -202,7 +205,7 @@ macro(_vcpkg_extract_cpp_flags_and_set_cflags_and_cxxflags _SUFFIX) endmacro() function(vcpkg_configure_make) - # parse parameters such that semicolons in options arguments to COMMAND don't get erased + # parse parameters such that semicolons in options arguments to COMMAND don't get erased cmake_parse_arguments(PARSE_ARGV 0 _csc "AUTOCONFIG;SKIP_CONFIGURE;COPY_SOURCE;DISABLE_VERBOSE_FLAGS;NO_ADDITIONAL_PATHS;ADD_BIN_TO_PATH;USE_WRAPPERS;DETERMINE_BUILD_TRIPLET" "SOURCE_PATH;PROJECT_SUBPATH;PRERUN_SHELL;BUILD_TRIPLET" diff --git a/scripts/cmake/vcpkg_configure_meson.cmake b/scripts/cmake/vcpkg_configure_meson.cmake index 8bcb654d96a..212bcf07605 100644 --- a/scripts/cmake/vcpkg_configure_meson.cmake +++ b/scripts/cmake/vcpkg_configure_meson.cmake @@ -1,38 +1,41 @@ -## # vcpkg_configure_meson -## -## Configure Meson for Debug and Release builds of a project. -## -## ## Usage -## ```cmake -## vcpkg_configure_meson( -## SOURCE_PATH <${SOURCE_PATH}> -## [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] -## [OPTIONS_RELEASE <-DOPTIMIZE=1>...] -## [OPTIONS_DEBUG <-DDEBUGGABLE=1>...] -## ) -## ``` -## -## ## Parameters -## ### SOURCE_PATH -## Specifies the directory containing the `meson.build`. -## By convention, this is usually set in the portfile as the variable `SOURCE_PATH`. -## -## ### OPTIONS -## Additional options passed to Meson during the configuration. -## -## ### OPTIONS_RELEASE -## Additional options passed to Meson during the Release configuration. These are in addition to `OPTIONS`. -## -## ### OPTIONS_DEBUG -## Additional options passed to Meson during the Debug configuration. These are in addition to `OPTIONS`. -## -## ## Notes -## This command supplies many common arguments to Meson. To see the full list, examine the source. -## -## ## Examples -## -## * [fribidi](https://github.com/Microsoft/vcpkg/blob/master/ports/fribidi/portfile.cmake) -## * [libepoxy](https://github.com/Microsoft/vcpkg/blob/master/ports/libepoxy/portfile.cmake) +#[===[.md: +# vcpkg_configure_meson + +Configure Meson for Debug and Release builds of a project. + +## Usage +```cmake +vcpkg_configure_meson( + SOURCE_PATH <${SOURCE_PATH}> + [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] + [OPTIONS_RELEASE <-DOPTIMIZE=1>...] + [OPTIONS_DEBUG <-DDEBUGGABLE=1>...] +) +``` + +## Parameters +### SOURCE_PATH +Specifies the directory containing the `meson.build`. +By convention, this is usually set in the portfile as the variable `SOURCE_PATH`. + +### OPTIONS +Additional options passed to Meson during the configuration. + +### OPTIONS_RELEASE +Additional options passed to Meson during the Release configuration. These are in addition to `OPTIONS`. + +### OPTIONS_DEBUG +Additional options passed to Meson during the Debug configuration. These are in addition to `OPTIONS`. + +## Notes +This command supplies many common arguments to Meson. To see the full list, examine the source. + +## Examples + +* [fribidi](https://github.com/Microsoft/vcpkg/blob/master/ports/fribidi/portfile.cmake) +* [libepoxy](https://github.com/Microsoft/vcpkg/blob/master/ports/libepoxy/portfile.cmake) +#]===] + function(vcpkg_internal_meson_generate_native_file) #https://mesonbuild.com/Native-environments.html set(NATIVE "[binaries]\n") #set(proglist AR RANLIB STRIP NM OBJDUMP DLLTOOL MT) @@ -60,7 +63,6 @@ function(vcpkg_internal_meson_generate_native_file) #https://mesonbuild.com/Nati string(APPEND NATIVE "cpp_ld = '${VCPKG_DETECTED_CMAKE_LINKER}'\n") endif() string(APPEND NATIVE "cmake = '${CMAKE_COMMAND}'\n") - string(APPEND NATIVE "[built-in options]\n") #https://mesonbuild.com/Builtin-options.html if(VCPKG_DETECTED_CMAKE_C_COMPILER MATCHES "cl.exe") string(APPEND NATIVE "cpp_eh='none'\n") # To make sure meson is not adding eh flags by itself using msvc diff --git a/scripts/cmake/vcpkg_configure_qmake.cmake b/scripts/cmake/vcpkg_configure_qmake.cmake index f0baabb6ae6..6fa3a609a5c 100644 --- a/scripts/cmake/vcpkg_configure_qmake.cmake +++ b/scripts/cmake/vcpkg_configure_qmake.cmake @@ -1,19 +1,23 @@ -#.rst: -# .. command:: vcpkg_configure_qmake -# -# Configure a qmake-based project. -# -# :: -# vcpkg_configure_qmake(SOURCE_PATH -# [OPTIONS arg1 [arg2 ...]] -# [OPTIONS_RELEASE arg1 [arg2 ...]] -# [OPTIONS_DEBUG arg1 [arg2 ...]] -# ) -# -# ``SOURCE_PATH`` -# The path to the *.pro qmake project file. -# ``OPTIONS[_RELEASE|_DEBUG]`` -# The options passed to qmake. +#[===[.md: +# vcpkg_configure_qmake + +Configure a qmake-based project. + +```cmake +vcpkg_configure_qmake( + SOURCE_PATH + [OPTIONS arg1 [arg2 ...]] + [OPTIONS_RELEASE arg1 [arg2 ...]] + [OPTIONS_DEBUG arg1 [arg2 ...]] +) +``` + +### SOURCE_PATH +The path to the *.pro qmake project file. + +### OPTIONS, OPTIONS\_RELEASE, OPTIONS\_DEBUG +The options passed to qmake. +#]===] function(vcpkg_configure_qmake) # parse parameters such that semicolons in options arguments to COMMAND don't get erased @@ -127,4 +131,4 @@ function(vcpkg_configure_qmake) endif() endif() -endfunction() \ No newline at end of file +endfunction() diff --git a/scripts/cmake/vcpkg_copy_pdbs.cmake b/scripts/cmake/vcpkg_copy_pdbs.cmake index d3cb7e6ec66..db91420b65e 100644 --- a/scripts/cmake/vcpkg_copy_pdbs.cmake +++ b/scripts/cmake/vcpkg_copy_pdbs.cmake @@ -1,25 +1,28 @@ -## # vcpkg_copy_pdbs -## -## Automatically locate pdbs in the build tree and copy them adjacent to all DLLs. -## -## ## Usage -## ```cmake -## vcpkg_copy_pdbs([BUILD_PATHS <${CURRENT_PACKAGES_DIR}/bin/*.dll> ...]) -## ``` -## -## ## Notes -## This command should always be called by portfiles after they have finished rearranging the binary output. -## -## ## Parameters -## ### BUILD_PATHS -## Path patterns passed to `file(GLOB_RECURSE)` for locating dlls. -## -## Defaults to `${CURRENT_PACKAGES_DIR}/bin/*.dll` and `${CURRENT_PACKAGES_DIR}/debug/bin/*.dll`. -## -## ## Examples -## -## * [zlib](https://github.com/Microsoft/vcpkg/blob/master/ports/zlib/portfile.cmake) -## * [cpprestsdk](https://github.com/Microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake) +#[===[.md: +# vcpkg_copy_pdbs + +Automatically locate pdbs in the build tree and copy them adjacent to all DLLs. + +## Usage +```cmake +vcpkg_copy_pdbs([BUILD_PATHS <${CURRENT_PACKAGES_DIR}/bin/*.dll> ...]) +``` + +## Notes +This command should always be called by portfiles after they have finished rearranging the binary output. + +## Parameters +### BUILD_PATHS +Path patterns passed to `file(GLOB_RECURSE)` for locating dlls. + +Defaults to `${CURRENT_PACKAGES_DIR}/bin/*.dll` and `${CURRENT_PACKAGES_DIR}/debug/bin/*.dll`. + +## Examples + +* [zlib](https://github.com/Microsoft/vcpkg/blob/master/ports/zlib/portfile.cmake) +* [cpprestsdk](https://github.com/Microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake) +#]===] + function(vcpkg_copy_pdbs) # parse parameters such that semicolons in options arguments to COMMAND don't get erased cmake_parse_arguments(PARSE_ARGV 0 _vcp "" "" "BUILD_PATHS") @@ -75,4 +78,4 @@ function(vcpkg_copy_pdbs) endif() endif() -endfunction() \ No newline at end of file +endfunction() diff --git a/scripts/cmake/vcpkg_copy_tool_dependencies.cmake b/scripts/cmake/vcpkg_copy_tool_dependencies.cmake index 63e9b6fb1ea..ba0f31920b8 100644 --- a/scripts/cmake/vcpkg_copy_tool_dependencies.cmake +++ b/scripts/cmake/vcpkg_copy_tool_dependencies.cmake @@ -1,21 +1,24 @@ -## # vcpkg_copy_tool_dependencies -## -## Copy all DLL dependencies of built tools into the tool folder. -## -## ## Usage -## ```cmake -## vcpkg_copy_tool_dependencies(<${CURRENT_PACKAGES_DIR}/tools/${PORT}>) -## ``` -## ## Parameters -## The path to the directory containing the tools. -## -## ## Notes -## This command should always be called by portfiles after they have finished rearranging the binary output, if they have any tools. -## -## ## Examples -## -## * [glib](https://github.com/Microsoft/vcpkg/blob/master/ports/glib/portfile.cmake) -## * [fltk](https://github.com/Microsoft/vcpkg/blob/master/ports/fltk/portfile.cmake) +#[===[.md: +# vcpkg_copy_tool_dependencies + +Copy all DLL dependencies of built tools into the tool folder. + +## Usage +```cmake +vcpkg_copy_tool_dependencies(<${CURRENT_PACKAGES_DIR}/tools/${PORT}>) +``` +## Parameters +The path to the directory containing the tools. + +## Notes +This command should always be called by portfiles after they have finished rearranging the binary output, if they have any tools. + +## Examples + +* [glib](https://github.com/Microsoft/vcpkg/blob/master/ports/glib/portfile.cmake) +* [fltk](https://github.com/Microsoft/vcpkg/blob/master/ports/fltk/portfile.cmake) +#]===] + function(vcpkg_copy_tool_dependencies TOOL_DIR) if (VCPKG_TARGET_IS_WINDOWS) find_program(PWSH_EXE pwsh) diff --git a/scripts/cmake/vcpkg_copy_tools.cmake b/scripts/cmake/vcpkg_copy_tools.cmake index 37cfabd3bd7..628bfc50643 100644 --- a/scripts/cmake/vcpkg_copy_tools.cmake +++ b/scripts/cmake/vcpkg_copy_tools.cmake @@ -1,30 +1,33 @@ -## # vcpkg_copy_tools -## -## Copy tools and all their DLL dependencies into the `tools` folder. -## -## ## Usage -## ```cmake -## vcpkg_copy_tools( -## TOOL_NAMES ... -## [SEARCH_DIR <${CURRENT_PACKAGES_DIR}/bin>] -## [AUTO_CLEAN] -## ) -## ``` -## ## Parameters -## ### TOOL_NAMES -## A list of tool filenames without extension. -## -## ### SEARCH_DIR -## The path to the directory containing the tools. This will be set to `${CURRENT_PACKAGES_DIR}/bin` if ommited. -## -## ### AUTO_CLEAN -## Auto clean executables in `${CURRENT_PACKAGES_DIR}/bin` and `${CURRENT_PACKAGES_DIR}/debug/bin`. -## -## ## Examples -## -## * [cpuinfo](https://github.com/microsoft/vcpkg/blob/master/ports/cpuinfo/portfile.cmake) -## * [nanomsg](https://github.com/microsoft/vcpkg/blob/master/ports/nanomsg/portfile.cmake) -## * [uriparser](https://github.com/microsoft/vcpkg/blob/master/ports/uriparser/portfile.cmake) +#[===[.md: +# vcpkg_copy_tools + +Copy tools and all their DLL dependencies into the `tools` folder. + +## Usage +```cmake +vcpkg_copy_tools( + TOOL_NAMES ... + [SEARCH_DIR <${CURRENT_PACKAGES_DIR}/bin>] + [AUTO_CLEAN] +) +``` +## Parameters +### TOOL_NAMES +A list of tool filenames without extension. + +### SEARCH_DIR +The path to the directory containing the tools. This will be set to `${CURRENT_PACKAGES_DIR}/bin` if ommited. + +### AUTO_CLEAN +Auto clean executables in `${CURRENT_PACKAGES_DIR}/bin` and `${CURRENT_PACKAGES_DIR}/debug/bin`. + +## Examples + +* [cpuinfo](https://github.com/microsoft/vcpkg/blob/master/ports/cpuinfo/portfile.cmake) +* [nanomsg](https://github.com/microsoft/vcpkg/blob/master/ports/nanomsg/portfile.cmake) +* [uriparser](https://github.com/microsoft/vcpkg/blob/master/ports/uriparser/portfile.cmake) +#]===] + function(vcpkg_copy_tools) # parse parameters such that semicolons in options arguments to COMMAND don't get erased cmake_parse_arguments(PARSE_ARGV 0 _vct "AUTO_CLEAN" "SEARCH_DIR" "TOOL_NAMES") diff --git a/scripts/cmake/vcpkg_download_distfile.cmake b/scripts/cmake/vcpkg_download_distfile.cmake index ff42fd64e50..8f250c67e1d 100644 --- a/scripts/cmake/vcpkg_download_distfile.cmake +++ b/scripts/cmake/vcpkg_download_distfile.cmake @@ -1,54 +1,56 @@ -## # vcpkg_download_distfile -## -## Download and cache a file needed for this port. -## -## This helper should always be used instead of CMake's built-in `file(DOWNLOAD)` command. -## -## ## Usage -## ```cmake -## vcpkg_download_distfile( -## -## URLS ... -## FILENAME -## SHA512 <5981de...> -## ) -## ``` -## ## Parameters -## ### OUT_VARIABLE -## This variable will be set to the full path to the downloaded file. This can then immediately be passed in to [`vcpkg_extract_source_archive`](vcpkg_extract_source_archive.md) for sources. -## -## ### URLS -## A list of URLs to be consulted. They will be tried in order until one of the downloaded files successfully matches the SHA512 given. -## -## ### FILENAME -## The local name for the file. Files are shared between ports, so the file may need to be renamed to make it clearly attributed to this port and avoid conflicts. -## -## ### SHA512 -## The expected hash for the file. -## -## If this doesn't match the downloaded version, the build will be terminated with a message describing the mismatch. -## -## ### QUIET -## Suppress output on cache hit -## -## ### SKIP_SHA512 -## Skip SHA512 hash check for file. -## -## This switch is only valid when building with the `--head` command line flag. -## -## ### HEADERS -## A list of headers to append to the download request. This can be used for authentication during a download. -## -## Headers should be specified as ": ". -## -## ## Notes -## The helper [`vcpkg_from_github`](vcpkg_from_github.md) should be used for downloading from GitHub projects. -## -## ## Examples -## -## * [apr](https://github.com/Microsoft/vcpkg/blob/master/ports/apr/portfile.cmake) -## * [fontconfig](https://github.com/Microsoft/vcpkg/blob/master/ports/fontconfig/portfile.cmake) -## * [freetype](https://github.com/Microsoft/vcpkg/blob/master/ports/freetype/portfile.cmake) +#[===[.md: +# vcpkg_download_distfile + +Download and cache a file needed for this port. + +This helper should always be used instead of CMake's built-in `file(DOWNLOAD)` command. + +## Usage +```cmake +vcpkg_download_distfile( + + URLS ... + FILENAME + SHA512 <5981de...> +) +``` +## Parameters +### OUT_VARIABLE +This variable will be set to the full path to the downloaded file. This can then immediately be passed in to [`vcpkg_extract_source_archive`](vcpkg_extract_source_archive.md) for sources. + +### URLS +A list of URLs to be consulted. They will be tried in order until one of the downloaded files successfully matches the SHA512 given. + +### FILENAME +The local name for the file. Files are shared between ports, so the file may need to be renamed to make it clearly attributed to this port and avoid conflicts. + +### SHA512 +The expected hash for the file. + +If this doesn't match the downloaded version, the build will be terminated with a message describing the mismatch. + +### QUIET +Suppress output on cache hit + +### SKIP_SHA512 +Skip SHA512 hash check for file. + +This switch is only valid when building with the `--head` command line flag. + +### HEADERS +A list of headers to append to the download request. This can be used for authentication during a download. + +Headers should be specified as ": ". + +## Notes +The helper [`vcpkg_from_github`](vcpkg_from_github.md) should be used for downloading from GitHub projects. + +## Examples + +* [apr](https://github.com/Microsoft/vcpkg/blob/master/ports/apr/portfile.cmake) +* [fontconfig](https://github.com/Microsoft/vcpkg/blob/master/ports/fontconfig/portfile.cmake) +* [freetype](https://github.com/Microsoft/vcpkg/blob/master/ports/freetype/portfile.cmake) +#]===] include(vcpkg_execute_in_download_mode) diff --git a/scripts/cmake/vcpkg_execute_build_process.cmake b/scripts/cmake/vcpkg_execute_build_process.cmake index 9f937418487..2fc583d2208 100644 --- a/scripts/cmake/vcpkg_execute_build_process.cmake +++ b/scripts/cmake/vcpkg_execute_build_process.cmake @@ -1,36 +1,39 @@ -## # 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) +#[===[.md: +# 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) +#]===] + include(vcpkg_prettify_command) function(vcpkg_execute_build_process) # parse parameters such that semicolons in options arguments to COMMAND don't get erased diff --git a/scripts/cmake/vcpkg_execute_in_download_mode.cmake b/scripts/cmake/vcpkg_execute_in_download_mode.cmake index 752ef40e26e..8ef77372953 100644 --- a/scripts/cmake/vcpkg_execute_in_download_mode.cmake +++ b/scripts/cmake/vcpkg_execute_in_download_mode.cmake @@ -1,59 +1,67 @@ -## # vcpkg_execute_in_download_mode -## -## Execute a process even in download mode. -## -## ## Usage -## ```cmake -## vcpkg_execute_in_download_mode( -## COMMAND [...] -## OUTPUT_QUIET ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE -## WORKING_DIRECTORY -## TIMEOUT -## RESULT_VARIABLE -## OUTPUT_VARIABLE -## ERROR_VARIABLE -## INPUT_FILE -## OUTPUT_FILE -## ERROR_FILE -## ENCODING -## ) -## ``` -## -## The signature of this function is identical with `execute_process()` except that -## it only accepts one COMMAND argument, i.e., does not support chaining multiple -## commands with pipes. -## -## See `execute_process()` for a detailed description of the parameters. +#[===[.md: +# vcpkg_execute_in_download_mode + +Execute a process even in download mode. + +## Usage +```cmake +vcpkg_execute_in_download_mode( + COMMAND [] + [WORKING_DIRECTORY ] + [TIMEOUT ] + [RESULT_VARIABLE ] + [OUTPUT_VARIABLE ] + [ERROR_VARIABLE ] + [INPUT_FILE ] + [OUTPUT_FILE ] + [ERROR_FILE ] + [OUTPUT_QUIET] + [ERROR_QUIET] + [OUTPUT_STRIP_TRAILING_WHITESPACE] + [ERROR_STRIP_TRAILING_WHITESPACE] + [ENCODING ] +) +``` + +The signature of this function is identical to `execute_process()` except that +it only accepts one COMMAND argument, i.e., does not support chaining multiple +commands with pipes. + +See [`execute_process()`] for a detailed description of the parameters. + +[`execute_process()`]: https://cmake.org/cmake/help/latest/command/execute_process.html +#]===] + function(vcpkg_execute_in_download_mode) - # parse parameters such that semicolons in options arguments to COMMAND don't get erased - cmake_parse_arguments(PARSE_ARGV 0 vcpkg_execute_in_download_mode - "OUTPUT_QUIET;ERROR_QUIET;OUTPUT_STRIP_TRAILING_WHITESPACE;ERROR_STRIP_TRAILING_WHITESPACE" - "WORKING_DIRECTORY;TIMEOUT;RESULT_VARIABLE;RESULTS_VARIABLE;OUTPUT_VARIABLE;ERROR_VARIABLE;INPUT_FILE;OUTPUT_FILE;ERROR_FILE;ENCODING" - "COMMAND") + # parse parameters such that semicolons in options arguments to COMMAND don't get erased + cmake_parse_arguments(PARSE_ARGV 0 vcpkg_execute_in_download_mode + "OUTPUT_QUIET;ERROR_QUIET;OUTPUT_STRIP_TRAILING_WHITESPACE;ERROR_STRIP_TRAILING_WHITESPACE" + "WORKING_DIRECTORY;TIMEOUT;RESULT_VARIABLE;RESULTS_VARIABLE;OUTPUT_VARIABLE;ERROR_VARIABLE;INPUT_FILE;OUTPUT_FILE;ERROR_FILE;ENCODING" + "COMMAND") - # collect all other present parameters - set(other_args "") - foreach(arg OUTPUT_QUIET ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE) - if(vcpkg_execute_in_download_mode_${arg}) - list(APPEND other_args ${arg}) + # collect all other present parameters + set(other_args "") + foreach(arg OUTPUT_QUIET ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE) + if(vcpkg_execute_in_download_mode_${arg}) + list(APPEND other_args ${arg}) + endif() + endforeach() + foreach(arg WORKING_DIRECTORY TIMEOUT RESULT_VARIABLE RESULTS_VARIABLE OUTPUT_VARIABLE ERROR_VARIABLE INPUT_FILE OUTPUT_FILE ERROR_FILE ENCODING) + if(vcpkg_execute_in_download_mode_${arg}) + list(APPEND other_args ${arg} ${vcpkg_execute_in_download_mode_${arg}}) + endif() + endforeach() + + if (DEFINED VCPKG_DOWNLOAD_MODE) + _execute_process(COMMAND ${vcpkg_execute_in_download_mode_COMMAND} ${other_args}) + else() + execute_process(COMMAND ${vcpkg_execute_in_download_mode_COMMAND} ${other_args}) endif() - endforeach() - foreach(arg WORKING_DIRECTORY TIMEOUT RESULT_VARIABLE RESULTS_VARIABLE OUTPUT_VARIABLE ERROR_VARIABLE INPUT_FILE OUTPUT_FILE ERROR_FILE ENCODING) - if(vcpkg_execute_in_download_mode_${arg}) - list(APPEND other_args ${arg} ${vcpkg_execute_in_download_mode_${arg}}) - endif() - endforeach() - if (DEFINED VCPKG_DOWNLOAD_MODE) - _execute_process(COMMAND ${vcpkg_execute_in_download_mode_COMMAND} ${other_args}) - else() - execute_process(COMMAND ${vcpkg_execute_in_download_mode_COMMAND} ${other_args}) - endif() - - # pass output parameters back to caller's scope - foreach(arg RESULT_VARIABLE RESULTS_VARIABLE OUTPUT_VARIABLE ERROR_VARIABLE) - if(vcpkg_execute_in_download_mode_${arg}) - set(${vcpkg_execute_in_download_mode_${arg}} ${${vcpkg_execute_in_download_mode_${arg}}} PARENT_SCOPE) - endif() - endforeach() + # pass output parameters back to caller's scope + foreach(arg RESULT_VARIABLE RESULTS_VARIABLE OUTPUT_VARIABLE ERROR_VARIABLE) + if(vcpkg_execute_in_download_mode_${arg}) + set(${vcpkg_execute_in_download_mode_${arg}} ${${vcpkg_execute_in_download_mode_${arg}}} PARENT_SCOPE) + endif() + endforeach() endfunction() diff --git a/scripts/cmake/vcpkg_execute_required_process.cmake b/scripts/cmake/vcpkg_execute_required_process.cmake index 454d97b806a..4b8d2476168 100644 --- a/scripts/cmake/vcpkg_execute_required_process.cmake +++ b/scripts/cmake/vcpkg_execute_required_process.cmake @@ -1,49 +1,51 @@ -## # vcpkg_execute_required_process -## -## Execute a process with logging and fail the build if the command fails. -## -## ## Usage -## ```cmake -## vcpkg_execute_required_process( -## COMMAND <${PERL}> [...] -## WORKING_DIRECTORY <${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg> -## LOGNAME -## [TIMEOUT ] -## [OUTPUT_VARIABLE ] -## [ERROR_VARIABLE ] -## ) -## ``` -## ## 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. -## -## ### WORKING_DIRECTORY -## The directory to execute the command in. -## -## ### LOGNAME -## The prefix to use for the log files. -## -## ### TIMEOUT -## Optional timeout after which to terminate the command. -## -## ### OUTPUT_VARIABLE -## Optional variable to receive stdout of the command. -## -## ### ERROR_VARIABLE -## Optional variable to receive stderr of the command. -## -## This should be a unique name for different triplets so that the logs don't conflict when building multiple at once. -## -## ## Examples -## -## * [ffmpeg](https://github.com/Microsoft/vcpkg/blob/master/ports/ffmpeg/portfile.cmake) -## * [openssl](https://github.com/Microsoft/vcpkg/blob/master/ports/openssl/portfile.cmake) -## * [boost](https://github.com/Microsoft/vcpkg/blob/master/ports/boost/portfile.cmake) -## * [qt5](https://github.com/Microsoft/vcpkg/blob/master/ports/qt5/portfile.cmake) +#[===[.md: +# vcpkg_execute_required_process + +Execute a process with logging and fail the build if the command fails. + +## Usage +```cmake +vcpkg_execute_required_process( + COMMAND <${PERL}> [...] + WORKING_DIRECTORY <${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg> + LOGNAME + [TIMEOUT ] + [OUTPUT_VARIABLE ] + [ERROR_VARIABLE ] +) +``` +## 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. + +### WORKING_DIRECTORY +The directory to execute the command in. + +### LOGNAME +The prefix to use for the log files. + +### TIMEOUT +Optional timeout after which to terminate the command. + +### OUTPUT_VARIABLE +Optional variable to receive stdout of the command. + +### ERROR_VARIABLE +Optional variable to receive stderr of the command. + +This should be a unique name for different triplets so that the logs don't conflict when building multiple at once. + +## Examples + +* [ffmpeg](https://github.com/Microsoft/vcpkg/blob/master/ports/ffmpeg/portfile.cmake) +* [openssl](https://github.com/Microsoft/vcpkg/blob/master/ports/openssl/portfile.cmake) +* [boost](https://github.com/Microsoft/vcpkg/blob/master/ports/boost/portfile.cmake) +* [qt5](https://github.com/Microsoft/vcpkg/blob/master/ports/qt5/portfile.cmake) +#]===] include(vcpkg_prettify_command) include(vcpkg_execute_in_download_mode) diff --git a/scripts/cmake/vcpkg_execute_required_process_repeat.cmake b/scripts/cmake/vcpkg_execute_required_process_repeat.cmake index 91b847dc5a2..ba9debfadc1 100644 --- a/scripts/cmake/vcpkg_execute_required_process_repeat.cmake +++ b/scripts/cmake/vcpkg_execute_required_process_repeat.cmake @@ -1,4 +1,19 @@ -# Usage: vcpkg_execute_required_process_repeat(COUNT COMMAND [...] WORKING_DIRECTORY LOGNAME ) +#[===[.md: +# vcpkg_execute_required_process_repeat + +Execute a process until the command succeeds, or until the COUNT is reached. + +## Usage +```cmake +vcpkg_execute_required_process_repeat( + COUNT + COMMAND [] + WORKING_DIRECTORY + LOGNAME +) +``` +#]===] + include(vcpkg_prettify_command) function(vcpkg_execute_required_process_repeat) # parse parameters such that semicolons in options arguments to COMMAND don't get erased diff --git a/scripts/cmake/vcpkg_extract_source_archive.cmake b/scripts/cmake/vcpkg_extract_source_archive.cmake index fbae94b5572..631d6da59f9 100644 --- a/scripts/cmake/vcpkg_extract_source_archive.cmake +++ b/scripts/cmake/vcpkg_extract_source_archive.cmake @@ -1,32 +1,35 @@ -## # vcpkg_extract_source_archive -## -## Extract an archive into the source directory. Deprecated in favor of [`vcpkg_extract_source_archive_ex`](vcpkg_extract_source_archive_ex.md). -## -## ## Usage -## ```cmake -## vcpkg_extract_source_archive( -## <${ARCHIVE}> [<${TARGET_DIRECTORY}>] -## ) -## ``` -## ## Parameters -## ### ARCHIVE -## The full path to the archive to be extracted. -## -## This is usually obtained from calling [`vcpkg_download_distfile`](vcpkg_download_distfile.md). -## -## ### TARGET_DIRECTORY -## If specified, the archive will be extracted into the target directory instead of `${CURRENT_BUILDTREES_DIR}\src\`. -## -## This can be used to mimic git submodules, by extracting into a subdirectory of another archive. -## -## ## Notes -## This command will also create a tracking file named .extracted in the TARGET_DIRECTORY. This file, when present, will suppress the extraction of the archive. -## -## ## Examples -## -## * [libraw](https://github.com/Microsoft/vcpkg/blob/master/ports/libraw/portfile.cmake) -## * [protobuf](https://github.com/Microsoft/vcpkg/blob/master/ports/protobuf/portfile.cmake) -## * [msgpack](https://github.com/Microsoft/vcpkg/blob/master/ports/msgpack/portfile.cmake) +#[===[.md: +# vcpkg_extract_source_archive + +Extract an archive into the source directory. Deprecated in favor of [`vcpkg_extract_source_archive_ex`](vcpkg_extract_source_archive_ex.md). + +## Usage +```cmake +vcpkg_extract_source_archive( + <${ARCHIVE}> [<${TARGET_DIRECTORY}>] +) +``` +## Parameters +### ARCHIVE +The full path to the archive to be extracted. + +This is usually obtained from calling [`vcpkg_download_distfile`](vcpkg_download_distfile.md). + +### TARGET_DIRECTORY +If specified, the archive will be extracted into the target directory instead of `${CURRENT_BUILDTREES_DIR}/src/`. + +This can be used to mimic git submodules, by extracting into a subdirectory of another archive. + +## Notes +This command will also create a tracking file named .extracted in the TARGET_DIRECTORY. This file, when present, will suppress the extraction of the archive. + +## Examples + +* [libraw](https://github.com/Microsoft/vcpkg/blob/master/ports/libraw/portfile.cmake) +* [protobuf](https://github.com/Microsoft/vcpkg/blob/master/ports/protobuf/portfile.cmake) +* [msgpack](https://github.com/Microsoft/vcpkg/blob/master/ports/msgpack/portfile.cmake) +#]===] + include(vcpkg_execute_required_process) function(vcpkg_extract_source_archive ARCHIVE) diff --git a/scripts/cmake/vcpkg_extract_source_archive_ex.cmake b/scripts/cmake/vcpkg_extract_source_archive_ex.cmake index d1a7febeed0..bef245b5ace 100644 --- a/scripts/cmake/vcpkg_extract_source_archive_ex.cmake +++ b/scripts/cmake/vcpkg_extract_source_archive_ex.cmake @@ -1,56 +1,59 @@ -## # vcpkg_extract_source_archive_ex -## -## Extract an archive into the source directory. Replaces [`vcpkg_extract_source_archive`](vcpkg_extract_source_archive.md). -## -## ## Usage -## ```cmake -## vcpkg_extract_source_archive_ex( -## SKIP_PATCH_CHECK -## OUT_SOURCE_PATH -## ARCHIVE <${ARCHIVE}> -## [REF <1.0.0>] -## [NO_REMOVE_ONE_LEVEL] -## [WORKING_DIRECTORY <${CURRENT_BUILDTREES_DIR}/src>] -## [PATCHES ...] -## ) -## ``` -## ## Parameters -## ### SKIP_PATCH_CHECK -## If this option is set the failure to apply a patch is ignored. -## -## ### OUT_SOURCE_PATH -## Specifies the out-variable that will contain the extracted location. -## -## This should be set to `SOURCE_PATH` by convention. -## -## ### ARCHIVE -## 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. If more than 10 characters it will be truncated. -## -## By convention, this is set to the version number or tag fetched -## -## ### WORKING_DIRECTORY -## If specified, the archive will be extracted into the working directory instead of `${CURRENT_BUILDTREES_DIR}/src/`. -## -## Note that the archive will still be extracted into a subfolder underneath that directory (`${WORKING_DIRECTORY}/${REF}-${HASH}/`). -## -## ### PATCHES -## A list of patches to be applied to the extracted sources. -## -## Relative paths are based on the port directory. -## -## ### NO_REMOVE_ONE_LEVEL -## Specifies that the default removal of the top level folder should not occur. -## -## ## Examples -## -## * [bzip2](https://github.com/Microsoft/vcpkg/blob/master/ports/bzip2/portfile.cmake) -## * [sqlite3](https://github.com/Microsoft/vcpkg/blob/master/ports/sqlite3/portfile.cmake) -## * [cairo](https://github.com/Microsoft/vcpkg/blob/master/ports/cairo/portfile.cmake) +#[===[.md: +# vcpkg_extract_source_archive_ex + +Extract an archive into the source directory. Replaces [`vcpkg_extract_source_archive`](vcpkg_extract_source_archive.md). + +## Usage +```cmake +vcpkg_extract_source_archive_ex( + SKIP_PATCH_CHECK + OUT_SOURCE_PATH + ARCHIVE <${ARCHIVE}> + [REF <1.0.0>] + [NO_REMOVE_ONE_LEVEL] + [WORKING_DIRECTORY <${CURRENT_BUILDTREES_DIR}/src>] + [PATCHES ...] +) +``` +## Parameters +### SKIP_PATCH_CHECK +If this option is set the failure to apply a patch is ignored. + +### OUT_SOURCE_PATH +Specifies the out-variable that will contain the extracted location. + +This should be set to `SOURCE_PATH` by convention. + +### ARCHIVE +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. If more than 10 characters it will be truncated. + +By convention, this is set to the version number or tag fetched + +### WORKING_DIRECTORY +If specified, the archive will be extracted into the working directory instead of `${CURRENT_BUILDTREES_DIR}/src/`. + +Note that the archive will still be extracted into a subfolder underneath that directory (`${WORKING_DIRECTORY}/${REF}-${HASH}/`). + +### PATCHES +A list of patches to be applied to the extracted sources. + +Relative paths are based on the port directory. + +### NO_REMOVE_ONE_LEVEL +Specifies that the default removal of the top level folder should not occur. + +## Examples + +* [bzip2](https://github.com/Microsoft/vcpkg/blob/master/ports/bzip2/portfile.cmake) +* [sqlite3](https://github.com/Microsoft/vcpkg/blob/master/ports/sqlite3/portfile.cmake) +* [cairo](https://github.com/Microsoft/vcpkg/blob/master/ports/cairo/portfile.cmake) +#]===] + include(vcpkg_apply_patches) include(vcpkg_extract_source_archive) diff --git a/scripts/cmake/vcpkg_fail_port_install.cmake b/scripts/cmake/vcpkg_fail_port_install.cmake index 5288226eb87..9e919aa020c 100644 --- a/scripts/cmake/vcpkg_fail_port_install.cmake +++ b/scripts/cmake/vcpkg_fail_port_install.cmake @@ -1,41 +1,44 @@ -## # vcpkg_fail_port_install -## -## Checks common requirements and fails the current portfile with a (default) error message -## -## ## Usage -## ```cmake -## vcpkg_fail_port_install( -## [ALWAYS] -## [MESSAGE <"Reason for failure">] -## [ON_TARGET [ ...]] -## [ON_ARCH [ ...]] -## [ON_CRT_LINKAGE [ ...]]) -## [ON_LIBRARY_LINKAGE [ ...]] -## ) -## ``` -## -## ## Parameters -## ### MESSAGE -## Additional failure message. If none 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) +#[===[.md: +# vcpkg_fail_port_install + +Checks common requirements and fails the current portfile with a (default) error message + +## Usage +```cmake +vcpkg_fail_port_install( + [ALWAYS] + [MESSAGE <"Reason for failure">] + [ON_TARGET [ ...]] + [ON_ARCH [ ...]] + [ON_CRT_LINKAGE [ ...]]) + [ON_LIBRARY_LINKAGE [ ...]] +) +``` + +## Parameters +### MESSAGE +Additional failure message. If none 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) +#]===] + function(vcpkg_fail_port_install) # parse parameters such that semicolons in options arguments to COMMAND don't get erased cmake_parse_arguments(PARSE_ARGV 0 _csc "ALWAYS" "MESSAGE" "ON_TARGET;ON_ARCH;ON_CRT_LINKAGE;ON_LIBRARY_LINKAGE") diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 1760c3630cb..278d7e6a4f4 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -1,49 +1,51 @@ -## # vcpkg_find_acquire_program -## -## Download or find a well-known tool. -## -## ## Usage -## ```cmake -## vcpkg_find_acquire_program() -## ``` -## ## Parameters -## ### VAR -## This variable specifies both the program to be acquired as well as the out parameter that will be set to the path of the program executable. -## -## ## Notes -## The current list of programs includes: -## -## - 7Z -## - ARIA2 (Downloader) -## - BISON -## - CLANG -## - DARK -## - DOXYGEN -## - FLEX -## - GASPREPROCESSOR -## - GPERF -## - PERL -## - PYTHON2 -## - PYTHON3 -## - GIT -## - GN -## - GO -## - JOM -## - MESON -## - NASM -## - NINJA -## - NUGET -## - SCONS -## - SWIG -## - YASM -## -## Note that msys2 has a dedicated helper function: [`vcpkg_acquire_msys`](vcpkg_acquire_msys.md). -## -## ## Examples -## -## * [ffmpeg](https://github.com/Microsoft/vcpkg/blob/master/ports/ffmpeg/portfile.cmake) -## * [openssl](https://github.com/Microsoft/vcpkg/blob/master/ports/openssl/portfile.cmake) -## * [qt5](https://github.com/Microsoft/vcpkg/blob/master/ports/qt5/portfile.cmake) +#[===[.md: +# vcpkg_find_acquire_program + +Download or find a well-known tool. + +## Usage +```cmake +vcpkg_find_acquire_program() +``` +## Parameters +### VAR +This variable specifies both the program to be acquired as well as the out parameter that will be set to the path of the program executable. + +## Notes +The current list of programs includes: + +* 7Z +* ARIA2 (Downloader) +* BISON +* CLANG +* DARK +* DOXYGEN +* FLEX +* GASPREPROCESSOR +* GPERF +* PERL +* PYTHON2 +* PYTHON3 +* GIT +* GN +* GO +* JOM +* MESON +* NASM +* NINJA +* NUGET +* SCONS +* SWIG +* YASM + +Note that msys2 has a dedicated helper function: [`vcpkg_acquire_msys`](vcpkg_acquire_msys.md). + +## Examples + +* [ffmpeg](https://github.com/Microsoft/vcpkg/blob/master/ports/ffmpeg/portfile.cmake) +* [openssl](https://github.com/Microsoft/vcpkg/blob/master/ports/openssl/portfile.cmake) +* [qt5](https://github.com/Microsoft/vcpkg/blob/master/ports/qt5/portfile.cmake) +#]===] include(vcpkg_execute_in_download_mode) @@ -464,7 +466,7 @@ function(vcpkg_find_acquire_program VAR) macro(do_version_check) if(VERSION_CMD) - _execute_process( + vcpkg_execute_in_download_mode( COMMAND ${${VAR}} ${VERSION_CMD} WORKING_DIRECTORY ${DOWNLOADS} OUTPUT_VARIABLE ${VAR}_VERSION_OUTPUT diff --git a/scripts/cmake/vcpkg_find_fortran.cmake b/scripts/cmake/vcpkg_find_fortran.cmake index c517fa51bfd..fd359d0eeb3 100644 --- a/scripts/cmake/vcpkg_find_fortran.cmake +++ b/scripts/cmake/vcpkg_find_fortran.cmake @@ -1,14 +1,15 @@ -## # vcpkg_find_fortran -## -## Checks if a Fortran compiler can be found. -## Windows(x86/x64) Only: If not it will switch/enable MinGW gfortran -## and return required cmake args for building. -## -## ## Usage -## ```cmake -## vcpkg_find_fortran( -## ) -## ``` +#[===[.md: +# vcpkg_find_fortran + +Checks if a Fortran compiler can be found. +Windows(x86/x64) Only: If not it will switch/enable MinGW gfortran + and return required cmake args for building. + +## Usage +```cmake +vcpkg_find_fortran() +``` +#]===] function(vcpkg_find_fortran additional_cmake_args_out) set(ARGS_OUT) diff --git a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake index 31bf9351b21..2da44f551ee 100644 --- a/scripts/cmake/vcpkg_fixup_cmake_targets.cmake +++ b/scripts/cmake/vcpkg_fixup_cmake_targets.cmake @@ -1,52 +1,55 @@ -## # vcpkg_fixup_cmake_targets -## -## Merge release and debug CMake targets and configs to support multiconfig generators. -## -## Additionally corrects common issues with targets, such as absolute paths and incorrectly placed binaries. -## -## ## Usage -## ```cmake -## vcpkg_fixup_cmake_targets([CONFIG_PATH ] [TARGET_PATH ] [DO_NOT_DELETE_PARENT_CONFIG_PATH]) -## ``` -## -## ## Parameters -## -## ### CONFIG_PATH -## Subpath currently containing `*.cmake` files subdirectory (like `lib/cmake/${PORT}`). Should be relative to `${CURRENT_PACKAGES_DIR}`. -## -## Defaults to `share/${PORT}`. -## -## ### TARGET_PATH -## Subpath to which the above `*.cmake` files should be moved. Should be relative to `${CURRENT_PACKAGES_DIR}`. -## This needs to be specified if the port name differs from the `find_package()` name. -## -## Defaults to `share/${PORT}`. -## -## ### DO_NOT_DELETE_PARENT_CONFIG_PATH -## By default the parent directory of CONFIG_PATH is removed if it is named "cmake". -## Passing this option disable such behavior, as it is convenient for ports that install -## more than one CMake package configuration file. -## -## ### NO_PREFIX_CORRECTION -## Disables the correction of_IMPORT_PREFIX done by vcpkg due to moving the targets. -## Currently the correction does not take into account how the files are moved and applies -## I rather simply correction which in some cases will yield the wrong results. -## -## ## Notes -## Transform all `/debug//*targets-debug.cmake` files and move them to `/`. -## Removes all `/debug//*targets.cmake` and `/debug//*config.cmake`. -## -## Transform all references matching `/bin/*.exe` to `/tools//*.exe` on Windows. -## Transform all references matching `/bin/*` to `/tools//*` on other platforms. -## -## Fix `${_IMPORT_PREFIX}` in auto generated targets to be one folder deeper. -## Replace `${CURRENT_INSTALLED_DIR}` with `${_IMPORT_PREFIX}` in configs and targets. -## -## ## Examples -## -## * [concurrentqueue](https://github.com/Microsoft/vcpkg/blob/master/ports/concurrentqueue/portfile.cmake) -## * [curl](https://github.com/Microsoft/vcpkg/blob/master/ports/curl/portfile.cmake) -## * [nlohmann-json](https://github.com/Microsoft/vcpkg/blob/master/ports/nlohmann-json/portfile.cmake) +#[===[.md: +# vcpkg_fixup_cmake_targets + +Merge release and debug CMake targets and configs to support multiconfig generators. + +Additionally corrects common issues with targets, such as absolute paths and incorrectly placed binaries. + +## Usage +```cmake +vcpkg_fixup_cmake_targets([CONFIG_PATH ] [TARGET_PATH ] [DO_NOT_DELETE_PARENT_CONFIG_PATH]) +``` + +## Parameters + +### CONFIG_PATH +Subpath currently containing `*.cmake` files subdirectory (like `lib/cmake/${PORT}`). Should be relative to `${CURRENT_PACKAGES_DIR}`. + +Defaults to `share/${PORT}`. + +### TARGET_PATH +Subpath to which the above `*.cmake` files should be moved. Should be relative to `${CURRENT_PACKAGES_DIR}`. +This needs to be specified if the port name differs from the `find_package()` name. + +Defaults to `share/${PORT}`. + +### DO_NOT_DELETE_PARENT_CONFIG_PATH +By default the parent directory of CONFIG_PATH is removed if it is named "cmake". +Passing this option disable such behavior, as it is convenient for ports that install +more than one CMake package configuration file. + +### NO_PREFIX_CORRECTION +Disables the correction of_IMPORT_PREFIX done by vcpkg due to moving the targets. +Currently the correction does not take into account how the files are moved and applies +I rather simply correction which in some cases will yield the wrong results. + +## Notes +Transform all `/debug//*targets-debug.cmake` files and move them to `/`. +Removes all `/debug//*targets.cmake` and `/debug//*config.cmake`. + +Transform all references matching `/bin/*.exe` to `/tools//*.exe` on Windows. +Transform all references matching `/bin/*` to `/tools//*` on other platforms. + +Fix `${_IMPORT_PREFIX}` in auto generated targets to be one folder deeper. +Replace `${CURRENT_INSTALLED_DIR}` with `${_IMPORT_PREFIX}` in configs and targets. + +## Examples + +* [concurrentqueue](https://github.com/Microsoft/vcpkg/blob/master/ports/concurrentqueue/portfile.cmake) +* [curl](https://github.com/Microsoft/vcpkg/blob/master/ports/curl/portfile.cmake) +* [nlohmann-json](https://github.com/Microsoft/vcpkg/blob/master/ports/nlohmann-json/portfile.cmake) +#]===] + function(vcpkg_fixup_cmake_targets) # parse parameters such that semicolons in options arguments to COMMAND don't get erased cmake_parse_arguments(PARSE_ARGV 0 _vfct "DO_NOT_DELETE_PARENT_CONFIG_PATH" "CONFIG_PATH;TARGET_PATH;NO_PREFIX_CORRECTION" "") diff --git a/scripts/cmake/vcpkg_fixup_pkgconfig.cmake b/scripts/cmake/vcpkg_fixup_pkgconfig.cmake index baccef10023..f003b6d2d8f 100644 --- a/scripts/cmake/vcpkg_fixup_pkgconfig.cmake +++ b/scripts/cmake/vcpkg_fixup_pkgconfig.cmake @@ -1,44 +1,46 @@ -## # vcpkg_fixup_pkgconfig -## -## Fix common paths in *.pc files and make everything relativ to $(prefix) -## -## ## Usage -## ```cmake -## vcpkg_fixup_pkgconfig( -## [RELEASE_FILES ...] -## [DEBUG_FILES ...] -## [SYSTEM_LIBRARIES ...] -## [IGNORE_FLAGS ] -## [SKIP_CHECK] -## ) -## ``` -## -## ## Parameters -## ### RELEASE_FILES -## Specifies a list of files to apply the fixes for release paths. -## Defaults to every *.pc file in the folder ${CURRENT_PACKAGES_DIR} without ${CURRENT_PACKAGES_DIR}/debug/ -## -## ### DEBUG_FILES -## Specifies a list of files to apply the fixes for debug paths. -## Defaults to every *.pc file in the folder ${CURRENT_PACKAGES_DIR}/debug/ -## -## ### SYSTEM_LIBRARIES -## If the *.pc file contains system libraries outside vcpkg these need to be listed here. -## VCPKG checks every -l flag for the existence of the required library within vcpkg. -## -## ### IGNORE_FLAGS -## If the *.pc file contains flags in the lib field which are not libraries. These can be listed here -## -## ### SKIP_CHECK -## Skips the library checks in vcpkg_fixup_pkgconfig. Only use if the script itself has unhandled cases. -## -## ## Notes -## Still work in progress. If there are more cases which can be handled here feel free to add them -## -## ## Examples -## Just call vcpkg_fixup_pkgconfig() after any install step which installs *.pc files. +#[===[.md: +# vcpkg_fixup_pkgconfig -include(vcpkg_escape_regex_control_characters) +Fix common paths in *.pc files and make everything relativ to $(prefix) + +## Usage +```cmake +vcpkg_fixup_pkgconfig( + [RELEASE_FILES ...] + [DEBUG_FILES ...] + [SYSTEM_LIBRARIES ...] + [IGNORE_FLAGS ] + [SKIP_CHECK] +) +``` + +## Parameters +### RELEASE_FILES +Specifies a list of files to apply the fixes for release paths. +Defaults to every *.pc file in the folder ${CURRENT_PACKAGES_DIR} without ${CURRENT_PACKAGES_DIR}/debug/ + +### DEBUG_FILES +Specifies a list of files to apply the fixes for debug paths. +Defaults to every *.pc file in the folder ${CURRENT_PACKAGES_DIR}/debug/ + +### SYSTEM_LIBRARIES +If the *.pc file contains system libraries outside vcpkg these need to be listed here. +VCPKG checks every -l flag for the existence of the required library within vcpkg. + +### IGNORE_FLAGS +If the *.pc file contains flags in the lib field which are not libraries. These can be listed here + +### SKIP_CHECK +Skips the library checks in vcpkg_fixup_pkgconfig. Only use if the script itself has unhandled cases. + +## Notes +Still work in progress. If there are more cases which can be handled here feel free to add them + +## Examples +Just call `vcpkg_fixup_pkgconfig()` after any install step which installs *.pc files. +#]===] + +include(vcpkg_internal_escape_regex_control_characters) function(vcpkg_fixup_pkgconfig_check_files pkg_cfg_cmd _file _config _system_libs _ignore_flags) # Setup pkg-config paths set(_VCPKG_INSTALLED_PKGCONF "${CURRENT_INSTALLED_DIR}") @@ -136,7 +138,7 @@ function(vcpkg_fixup_pkgconfig_check_files pkg_cfg_cmd _file _config _system_lib foreach(_search_path IN LISTS _pkg_lib_paths_output) debug_message("REMOVING:'${_search_path}'") debug_message("FROM:'${_pkg_libs_output}'") - vcpkg_escape_regex_control_characters(_search_path "${_search_path}") + vcpkg_internal_escape_regex_control_characters(_search_path "${_search_path}") string(REGEX REPLACE "(^[\t ]*|[\t ]+|;[\t ]*)-L${_search_path}([\t ]+|[\t ]*$)" ";" _pkg_libs_output "${_pkg_libs_output}") # Remove search paths from libs endforeach() debug_message("LIBS AFTER -L REMOVAL:'${_pkg_libs_output}'") @@ -169,7 +171,7 @@ function(vcpkg_fixup_pkgconfig_check_files pkg_cfg_cmd _file _config _system_lib debug_message("BEFORE IGNORE FLAGS REMOVAL: ${_pkg_libs_output}") foreach(_ignore IN LISTS _ignore_flags) # Remove ignore with whitespace debug_message("REMOVING FLAG:'${_ignore}'") - vcpkg_escape_regex_control_characters(_ignore "${_ignore}") + vcpkg_internal_escape_regex_control_characters(_ignore "${_ignore}") string(REGEX REPLACE "(^[\t ]*|;[\t ]*|[\t ]+)${_ignore}([\t ]+|[\t ]*;|[\t ]*$)" "\\2" _pkg_libs_output "${_pkg_libs_output}") debug_message("AFTER REMOVAL: ${_pkg_libs_output}") endforeach() @@ -259,7 +261,7 @@ function(vcpkg_fixup_pkgconfig) message(FATAL_ERROR "vcpkg_fixup_pkgconfig was passed extra arguments: ${_vfct_UNPARSED_ARGUMENTS}") endif() - vcpkg_escape_regex_control_characters(_vfpkg_ESCAPED_CURRENT_PACKAGES_DIR "${CURRENT_PACKAGES_DIR}") + vcpkg_internal_escape_regex_control_characters(_vfpkg_ESCAPED_CURRENT_PACKAGES_DIR "${CURRENT_PACKAGES_DIR}") if(NOT _vfpkg_RELEASE_FILES) file(GLOB_RECURSE _vfpkg_RELEASE_FILES "${CURRENT_PACKAGES_DIR}/**/*.pc") list(FILTER _vfpkg_RELEASE_FILES EXCLUDE REGEX "${_vfpkg_ESCAPED_CURRENT_PACKAGES_DIR}/debug/") diff --git a/scripts/cmake/vcpkg_from_bitbucket.cmake b/scripts/cmake/vcpkg_from_bitbucket.cmake index bd4c67ed98e..a376e810591 100644 --- a/scripts/cmake/vcpkg_from_bitbucket.cmake +++ b/scripts/cmake/vcpkg_from_bitbucket.cmake @@ -1,59 +1,62 @@ -## # vcpkg_from_bitbucket -## -## Download and extract a project from Bitbucket. -## Enables support for installing HEAD `vcpkg.exe install --head `. -## -## ## Usage: -## ```cmake -## vcpkg_from_bitbucket( -## OUT_SOURCE_PATH -## REPO -## [REF ] -## [SHA512 <45d0d7f8cc350...>] -## [HEAD_REF ] -## [PATCHES ...] -## ) -## ``` -## -## ## Parameters: -## ### OUT_SOURCE_PATH -## Specifies the out-variable that will contain the extracted location. -## -## This should be set to `SOURCE_PATH` by convention. -## -## ### REPO -## The organization or user and repository on GitHub. -## -## ### REF -## A stable git commit-ish (ideally a tag) 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. -## -## If `REF` is specified, `SHA512` must also be specified. -## -## ### SHA512 -## The SHA512 hash that should match the archive (https://bitbucket.com/${REPO}/get/${REF}.tar.gz). -## -## This is most easily determined by first setting it to `1`, then trying to build the port. The error message will contain the full hash, which can be copied back into the portfile. -## -## ### HEAD_REF -## The unstable git commit-ish (ideally a branch) to pull for `--head` builds. -## -## For most projects, this should be `master`. The chosen branch should be one that is expected to be always buildable on all supported platforms. -## -## ### PATCHES -## A list of patches to be applied to the extracted sources. -## -## Relative paths are based on the port directory. -## -## ## Notes: -## At least one of `REF` and `HEAD_REF` must be specified, however it is preferable for both to be present. -## -## This exports the `VCPKG_HEAD_VERSION` variable during head builds. -## -## ## Examples: -## -## * [blaze](https://github.com/Microsoft/vcpkg/blob/master/ports/blaze/portfile.cmake) +#[===[.md: +# vcpkg_from_bitbucket + +Download and extract a project from Bitbucket. +Enables support for installing HEAD `vcpkg.exe install --head `. + +## Usage: +```cmake +vcpkg_from_bitbucket( + OUT_SOURCE_PATH + REPO + [REF ] + [SHA512 <45d0d7f8cc350...>] + [HEAD_REF ] + [PATCHES ...] +) +``` + +## Parameters: +### OUT_SOURCE_PATH +Specifies the out-variable that will contain the extracted location. + +This should be set to `SOURCE_PATH` by convention. + +### REPO +The organization or user and repository on GitHub. + +### REF +A stable git commit-ish (ideally a tag) 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. + +If `REF` is specified, `SHA512` must also be specified. + +### SHA512 +The SHA512 hash that should match the archive (https://bitbucket.com/${REPO}/get/${REF}.tar.gz). + +This is most easily determined by first setting it to `1`, then trying to build the port. The error message will contain the full hash, which can be copied back into the portfile. + +### HEAD_REF +The unstable git commit-ish (ideally a branch) to pull for `--head` builds. + +For most projects, this should be `master`. The chosen branch should be one that is expected to be always buildable on all supported platforms. + +### PATCHES +A list of patches to be applied to the extracted sources. + +Relative paths are based on the port directory. + +## Notes: +At least one of `REF` and `HEAD_REF` must be specified, however it is preferable for both to be present. + +This exports the `VCPKG_HEAD_VERSION` variable during head builds. + +## Examples: + +* [blaze](https://github.com/Microsoft/vcpkg/blob/master/ports/blaze/portfile.cmake) +#]===] + function(vcpkg_from_bitbucket) set(oneValueArgs OUT_SOURCE_PATH REPO REF SHA512 HEAD_REF) set(multipleValuesArgs PATCHES) diff --git a/scripts/cmake/vcpkg_from_git.cmake b/scripts/cmake/vcpkg_from_git.cmake index 39469064f34..54f93996a96 100644 --- a/scripts/cmake/vcpkg_from_git.cmake +++ b/scripts/cmake/vcpkg_from_git.cmake @@ -1,40 +1,42 @@ -## # vcpkg_from_git -## -## Download and extract a project from git -## -## ## Usage: -## ```cmake -## vcpkg_from_git( -## OUT_SOURCE_PATH -## URL -## REF <59f7335e4d...> -## [PATCHES ...] -## ) -## ``` -## -## ## Parameters: -## ### OUT_SOURCE_PATH -## 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. -## -## ### REF -## The git sha of the commit to download. -## -## ### PATCHES -## A list of patches to be applied to the extracted sources. -## -## Relative paths are based on the port directory. -## -## ## Notes: -## `OUT_SOURCE_PATH`, `REF`, and `URL` must be specified. -## -## ## Examples: -## -## * [fdlibm](https://github.com/Microsoft/vcpkg/blob/master/ports/fdlibm/portfile.cmake) +#[===[.md: +# vcpkg_from_git + +Download and extract a project from git + +## Usage: +```cmake +vcpkg_from_git( + OUT_SOURCE_PATH + URL + REF <59f7335e4d...> + [PATCHES ...] +) +``` + +## Parameters: +### OUT_SOURCE_PATH +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. + +### REF +The git sha of the commit to download. + +### PATCHES +A list of patches to be applied to the extracted sources. + +Relative paths are based on the port directory. + +## Notes: +`OUT_SOURCE_PATH`, `REF`, and `URL` must be specified. + +## Examples: + +* [fdlibm](https://github.com/Microsoft/vcpkg/blob/master/ports/fdlibm/portfile.cmake) +#]===] include(vcpkg_execute_in_download_mode) diff --git a/scripts/cmake/vcpkg_from_github.cmake b/scripts/cmake/vcpkg_from_github.cmake index 5bc85d0cd4d..f52538c8ef2 100644 --- a/scripts/cmake/vcpkg_from_github.cmake +++ b/scripts/cmake/vcpkg_from_github.cmake @@ -1,73 +1,76 @@ -## # vcpkg_from_github -## -## Download and extract a project from GitHub. Enables support for `install --head`. -## -## ## Usage: -## ```cmake -## vcpkg_from_github( -## OUT_SOURCE_PATH -## REPO -## [REF ] -## [SHA512 <45d0d7f8cc350...>] -## [HEAD_REF ] -## [PATCHES ...] -## [GITHUB_HOST ] -## [AUTHORIZATION_TOKEN <${SECRET_FROM_FILE}>] -## ) -## ``` -## -## ## Parameters: -## ### OUT_SOURCE_PATH -## Specifies the out-variable that will contain the extracted location. -## -## This should be set to `SOURCE_PATH` by convention. -## -## ### REPO -## The organization or user and repository on GitHub. -## -## ### 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. -## -## If `REF` is specified, `SHA512` must also be specified. -## -## ### SHA512 -## The SHA512 hash that should match the archive (https://github.com/${REPO}/archive/${REF}.tar.gz). -## -## This is most easily determined by first setting it to `1`, then trying to build the port. The error message will contain the full hash, which can be copied back into the portfile. -## -## ### HEAD_REF -## The unstable git commit-ish (ideally a branch) to pull for `--head` builds. -## -## For most projects, this should be `master`. The chosen branch should be one that is expected to be always buildable on all supported platforms. -## -## ### PATCHES -## A list of patches to be applied to the extracted sources. -## -## Relative paths are based on the port directory. -## -## ### GITHUB_HOST -## A replacement host for enterprise GitHub instances. -## -## This field should contain the scheme, host, and port of the desired URL without a trailing slash. -## -## ### AUTHORIZATION_TOKEN -## A token to be passed via the Authorization HTTP header as "token ${AUTHORIZATION_TOKEN}". -## -## ### FILE_DISAMBIGUATOR -## A token to uniquely identify the resulting filename if the SHA512 changes even though a git ref does not, to avoid stepping on the same file name. -## -## ## Notes: -## At least one of `REF` and `HEAD_REF` must be specified, however it is preferable for both to be present. -## -## This exports the `VCPKG_HEAD_VERSION` variable during head builds. -## -## ## Examples: -## -## * [cpprestsdk](https://github.com/Microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake) -## * [ms-gsl](https://github.com/Microsoft/vcpkg/blob/master/ports/ms-gsl/portfile.cmake) -## * [beast](https://github.com/Microsoft/vcpkg/blob/master/ports/beast/portfile.cmake) +#[===[.md: +# vcpkg_from_github + +Download and extract a project from GitHub. Enables support for `install --head`. + +## Usage: +```cmake +vcpkg_from_github( + OUT_SOURCE_PATH + REPO + [REF ] + [SHA512 <45d0d7f8cc350...>] + [HEAD_REF ] + [PATCHES ...] + [GITHUB_HOST ] + [AUTHORIZATION_TOKEN <${SECRET_FROM_FILE}>] +) +``` + +## Parameters: +### OUT_SOURCE_PATH +Specifies the out-variable that will contain the extracted location. + +This should be set to `SOURCE_PATH` by convention. + +### REPO +The organization or user and repository on GitHub. + +### 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. + +If `REF` is specified, `SHA512` must also be specified. + +### SHA512 +The SHA512 hash that should match the archive (https://github.com/${REPO}/archive/${REF}.tar.gz). + +This is most easily determined by first setting it to `1`, then trying to build the port. The error message will contain the full hash, which can be copied back into the portfile. + +### HEAD_REF +The unstable git commit-ish (ideally a branch) to pull for `--head` builds. + +For most projects, this should be `master`. The chosen branch should be one that is expected to be always buildable on all supported platforms. + +### PATCHES +A list of patches to be applied to the extracted sources. + +Relative paths are based on the port directory. + +### GITHUB_HOST +A replacement host for enterprise GitHub instances. + +This field should contain the scheme, host, and port of the desired URL without a trailing slash. + +### AUTHORIZATION_TOKEN +A token to be passed via the Authorization HTTP header as "token ${AUTHORIZATION_TOKEN}". + +### FILE_DISAMBIGUATOR +A token to uniquely identify the resulting filename if the SHA512 changes even though a git ref does not, to avoid stepping on the same file name. + +## Notes: +At least one of `REF` and `HEAD_REF` must be specified, however it is preferable for both to be present. + +This exports the `VCPKG_HEAD_VERSION` variable during head builds. + +## Examples: + +* [cpprestsdk](https://github.com/Microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake) +* [ms-gsl](https://github.com/Microsoft/vcpkg/blob/master/ports/ms-gsl/portfile.cmake) +* [beast](https://github.com/Microsoft/vcpkg/blob/master/ports/beast/portfile.cmake) +#]===] + function(vcpkg_from_github) set(oneValueArgs OUT_SOURCE_PATH REPO REF SHA512 HEAD_REF GITHUB_HOST AUTHORIZATION_TOKEN FILE_DISAMBIGUATOR) set(multipleValuesArgs PATCHES) diff --git a/scripts/cmake/vcpkg_from_gitlab.cmake b/scripts/cmake/vcpkg_from_gitlab.cmake index c4226966144..354ff85b987 100644 --- a/scripts/cmake/vcpkg_from_gitlab.cmake +++ b/scripts/cmake/vcpkg_from_gitlab.cmake @@ -1,66 +1,67 @@ -## # vcpkg_from_gitlab -## -## Download and extract a project from Gitlab instances. Enables support for `install --head`. -## -## ## Usage: -## ```cmake -## vcpkg_from_gitlab( -## GITLAB_URL -## OUT_SOURCE_PATH -## REPO -## [REF ] -## [SHA512 <45d0d7f8cc350...>] -## [HEAD_REF ] -## [PATCHES ...] -## ) -## ``` -## -## ## Parameters: -## -## ### GITLAB_URL -## The URL of the Gitlab instance to use. -## -## ### OUT_SOURCE_PATH -## Specifies the out-variable that will contain the extracted location. -## -## This should be set to `SOURCE_PATH` by convention. -## -## ### REPO -## The organization or user plus the repository name on the Gitlab instance. -## -## ### REF -## A stable git commit-ish (ideally a tag) 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. -## -## If `REF` is specified, `SHA512` must also be specified. -## -## ### SHA512 -## The SHA512 hash that should match the archive (${GITLAB_URL}/${REPO}/-/archive/${REF}/${REPO_NAME}-${REF}.tar.gz). -## The REPO_NAME variable is parsed from the value of REPO. -## -## This is most easily determined by first setting it to `1`, then trying to build the port. The error message will contain the full hash, which can be copied back into the portfile. -## -## ### HEAD_REF -## The unstable git commit-ish (ideally a branch) to pull for `--head` builds. -## -## For most projects, this should be `master`. The chosen branch should be one that is expected to be always buildable on all supported platforms. -## -## ### PATCHES -## A list of patches to be applied to the extracted sources. -## -## Relative paths are based on the port directory. -## -## ## Notes: -## At least one of `REF` and `HEAD_REF` must be specified, however it is preferable for both to be present. -## -## This exports the `VCPKG_HEAD_VERSION` variable during head builds. -## -## ## Examples: -## * [curl][https://github.com/Microsoft/vcpkg/blob/master/ports/curl/portfile.cmake#L75] -## * [folly](https://github.com/Microsoft/vcpkg/blob/master/ports/folly/portfile.cmake#L15) -## * [z3](https://github.com/Microsoft/vcpkg/blob/master/ports/z3/portfile.cmake#L13) -## +#[===[.md: +# vcpkg_from_gitlab + +Download and extract a project from Gitlab instances. Enables support for `install --head`. + +## Usage: +```cmake +vcpkg_from_gitlab( + GITLAB_URL + OUT_SOURCE_PATH + REPO + [REF ] + [SHA512 <45d0d7f8cc350...>] + [HEAD_REF ] + [PATCHES ...] +) +``` + +## Parameters: + +### GITLAB_URL +The URL of the Gitlab instance to use. + +### OUT_SOURCE_PATH +Specifies the out-variable that will contain the extracted location. + +This should be set to `SOURCE_PATH` by convention. + +### REPO +The organization or user plus the repository name on the Gitlab instance. + +### REF +A stable git commit-ish (ideally a tag) 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. + +If `REF` is specified, `SHA512` must also be specified. + +### SHA512 +The SHA512 hash that should match the archive (${GITLAB_URL}/${REPO}/-/archive/${REF}/${REPO_NAME}-${REF}.tar.gz). +The REPO_NAME variable is parsed from the value of REPO. + +This is most easily determined by first setting it to `1`, then trying to build the port. The error message will contain the full hash, which can be copied back into the portfile. + +### HEAD_REF +The unstable git commit-ish (ideally a branch) to pull for `--head` builds. + +For most projects, this should be `master`. The chosen branch should be one that is expected to be always buildable on all supported platforms. + +### PATCHES +A list of patches to be applied to the extracted sources. + +Relative paths are based on the port directory. + +## Notes: +At least one of `REF` and `HEAD_REF` must be specified, however it is preferable for both to be present. + +This exports the `VCPKG_HEAD_VERSION` variable during head builds. + +## Examples: +* [curl][https://github.com/Microsoft/vcpkg/blob/master/ports/curl/portfile.cmake#L75] +* [folly](https://github.com/Microsoft/vcpkg/blob/master/ports/folly/portfile.cmake#L15) +* [z3](https://github.com/Microsoft/vcpkg/blob/master/ports/z3/portfile.cmake#L13) +#]===] include(vcpkg_execute_in_download_mode) diff --git a/scripts/cmake/vcpkg_from_sourceforge.cmake b/scripts/cmake/vcpkg_from_sourceforge.cmake index 280ad93f86d..82286b346d0 100644 --- a/scripts/cmake/vcpkg_from_sourceforge.cmake +++ b/scripts/cmake/vcpkg_from_sourceforge.cmake @@ -1,68 +1,70 @@ -## # vcpkg_from_sourceforge -## -## Download and extract a project from sourceforge. -## -## ## Usage: -## ```cmake -## vcpkg_from_sourceforge( -## OUT_SOURCE_PATH SOURCE_PATH -## REPO -## [REF <2.1-3>] -## SHA512 <547b417109332...> -## FILENAME -## [DISABLE_SSL] -## [NO_REMOVE_ONE_LEVEL] -## [PATCHES ...] -## ) -## ``` -## -## ## Parameters: -## ### OUT_SOURCE_PATH -## Specifies the out-variable that will contain the extracted location. -## -## This should be set to `SOURCE_PATH` by convention. -## -## ### REPO -## The organization or user and repository (optional) on sourceforge. -## -## ### REF -## A stable version number that will not change contents. -## -## ### FILENAME -## The local name for the file. Files are shared between ports, so the file may need to be renamed to make it clearly attributed to this port and avoid conflicts. -## -## For example, we can get the download link: -## https://sourceforge.net/settings/mirror_choices?projectname=mad&filename=libmad/0.15.1b/libmad-0.15.1b.tar.gz&selected=nchc -## So the REPO is `mad/libmad`, the REF is `0.15.1b`, and the FILENAME is `libmad-0.15.1b.tar.gz` -## -## For some special links: -## https://sourceforge.net/settings/mirror_choices?projectname=soxr&filename=soxr-0.1.3-Source.tar.xz&selected=nchc -## The REPO is `soxr`, REF is not exist, and the FILENAME is `soxr-0.1.3-Source.tar.xz` -## -## ### SHA512 -## The SHA512 hash that should match the archive. -## -## ### WORKING_DIRECTORY -## If specified, the archive will be extracted into the working directory instead of `${CURRENT_BUILDTREES_DIR}/src/`. -## -## Note that the archive will still be extracted into a subfolder underneath that directory (`${WORKING_DIRECTORY}/${REF}-${HASH}/`). -## -## ### PATCHES -## A list of patches to be applied to the extracted sources. -## -## Relative paths are based on the port directory. -## -## ### DISABLE_SSL -## Disable ssl when downloading source. -## -## ### NO_REMOVE_ONE_LEVEL -## Specifies that the default removal of the top level folder should not occur. -## -## ## Examples: -## -## * [cunit](https://github.com/Microsoft/vcpkg/blob/master/ports/cunit/portfile.cmake) -## * [polyclipping](https://github.com/Microsoft/vcpkg/blob/master/ports/polyclipping/portfile.cmake) -## * [tinyfiledialogs](https://github.com/Microsoft/vcpkg/blob/master/ports/tinyfiledialogs/portfile.cmake) +#[===[.md: +# vcpkg_from_sourceforge + +Download and extract a project from sourceforge. + +## Usage: +```cmake +vcpkg_from_sourceforge( + OUT_SOURCE_PATH SOURCE_PATH + REPO + [REF <2.1-3>] + SHA512 <547b417109332...> + FILENAME + [DISABLE_SSL] + [NO_REMOVE_ONE_LEVEL] + [PATCHES ...] +) +``` + +## Parameters: +### OUT_SOURCE_PATH +Specifies the out-variable that will contain the extracted location. + +This should be set to `SOURCE_PATH` by convention. + +### REPO +The organization or user and repository (optional) on sourceforge. + +### REF +A stable version number that will not change contents. + +### FILENAME +The local name for the file. Files are shared between ports, so the file may need to be renamed to make it clearly attributed to this port and avoid conflicts. + +For example, we can get the download link: +https://sourceforge.net/settings/mirror_choices?projectname=mad&filename=libmad/0.15.1b/libmad-0.15.1b.tar.gz&selected=nchc +So the REPO is `mad/libmad`, the REF is `0.15.1b`, and the FILENAME is `libmad-0.15.1b.tar.gz` + +For some special links: +https://sourceforge.net/settings/mirror_choices?projectname=soxr&filename=soxr-0.1.3-Source.tar.xz&selected=nchc +The REPO is `soxr`, REF is not exist, and the FILENAME is `soxr-0.1.3-Source.tar.xz` + +### SHA512 +The SHA512 hash that should match the archive. + +### WORKING_DIRECTORY +If specified, the archive will be extracted into the working directory instead of `${CURRENT_BUILDTREES_DIR}/src/`. + +Note that the archive will still be extracted into a subfolder underneath that directory (`${WORKING_DIRECTORY}/${REF}-${HASH}/`). + +### PATCHES +A list of patches to be applied to the extracted sources. + +Relative paths are based on the port directory. + +### DISABLE_SSL +Disable ssl when downloading source. + +### NO_REMOVE_ONE_LEVEL +Specifies that the default removal of the top level folder should not occur. + +## Examples: + +* [cunit](https://github.com/Microsoft/vcpkg/blob/master/ports/cunit/portfile.cmake) +* [polyclipping](https://github.com/Microsoft/vcpkg/blob/master/ports/polyclipping/portfile.cmake) +* [tinyfiledialogs](https://github.com/Microsoft/vcpkg/blob/master/ports/tinyfiledialogs/portfile.cmake) +#]===] function(vcpkg_from_sourceforge) macro(check_file_content) diff --git a/scripts/cmake/vcpkg_get_program_files_platform_bitness.cmake b/scripts/cmake/vcpkg_get_program_files_platform_bitness.cmake index ed51b74010a..7e3a5af5265 100644 --- a/scripts/cmake/vcpkg_get_program_files_platform_bitness.cmake +++ b/scripts/cmake/vcpkg_get_program_files_platform_bitness.cmake @@ -1,3 +1,16 @@ +#[===[.md: +# vcpkg_get_program_files_platform_bitness + +Get the Program Files directory of the current platform's bitness: +either `$ENV{ProgramW6432}` on 64-bit windows, +or `$ENV{PROGRAMFILES}` on 32-bit windows. + +## Usage: +```cmake +vcpkg_get_program_files_platform_bitness() +``` +#]===] + function(vcpkg_get_program_files_platform_bitness ret) set(ret_temp $ENV{ProgramW6432}) @@ -7,4 +20,4 @@ function(vcpkg_get_program_files_platform_bitness ret) set(${ret} ${ret_temp} PARENT_SCOPE) -endfunction() \ No newline at end of file +endfunction() diff --git a/scripts/cmake/vcpkg_get_windows_sdk.cmake b/scripts/cmake/vcpkg_get_windows_sdk.cmake index e7d72a12528..f16d4f53e8f 100644 --- a/scripts/cmake/vcpkg_get_windows_sdk.cmake +++ b/scripts/cmake/vcpkg_get_windows_sdk.cmake @@ -1,6 +1,16 @@ -# Returns Windows SDK number via out variable "ret" +#[===[.md: +# vcpkg_get_windows_sdk + +Get the Windows SDK number. + +## Usage: +```cmake +vcpkg_get_windows_sdk() +``` +#]===] + function(vcpkg_get_windows_sdk ret) set(WINDOWS_SDK $ENV{WindowsSDKVersion}) string(REPLACE "\\" "" WINDOWS_SDK "${WINDOWS_SDK}") set(${ret} ${WINDOWS_SDK} PARENT_SCOPE) -endfunction() \ No newline at end of file +endfunction() diff --git a/scripts/cmake/vcpkg_install_cmake.cmake b/scripts/cmake/vcpkg_install_cmake.cmake index ab72d054e4f..a1ba0cf2fb0 100644 --- a/scripts/cmake/vcpkg_install_cmake.cmake +++ b/scripts/cmake/vcpkg_install_cmake.cmake @@ -1,25 +1,28 @@ -## # vcpkg_install_cmake -## -## Build and install a cmake project. -## -## ## Usage: -## ```cmake -## vcpkg_install_cmake(...) -## ``` -## -## ## Parameters: -## See [`vcpkg_build_cmake()`](vcpkg_build_cmake.md). -## -## ## Notes: -## This command transparently forwards to [`vcpkg_build_cmake()`](vcpkg_build_cmake.md), adding a `TARGET install` -## parameter. -## -## ## Examples: -## -## * [zlib](https://github.com/Microsoft/vcpkg/blob/master/ports/zlib/portfile.cmake) -## * [cpprestsdk](https://github.com/Microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake) -## * [poco](https://github.com/Microsoft/vcpkg/blob/master/ports/poco/portfile.cmake) -## * [opencv](https://github.com/Microsoft/vcpkg/blob/master/ports/opencv/portfile.cmake) +#[===[.md: +# vcpkg_install_cmake + +Build and install a cmake project. + +## Usage: +```cmake +vcpkg_install_cmake(...) +``` + +## Parameters: +See [`vcpkg_build_cmake()`](vcpkg_build_cmake.md). + +## Notes: +This command transparently forwards to [`vcpkg_build_cmake()`](vcpkg_build_cmake.md), adding a `TARGET install` +parameter. + +## Examples: + +* [zlib](https://github.com/Microsoft/vcpkg/blob/master/ports/zlib/portfile.cmake) +* [cpprestsdk](https://github.com/Microsoft/vcpkg/blob/master/ports/cpprestsdk/portfile.cmake) +* [poco](https://github.com/Microsoft/vcpkg/blob/master/ports/poco/portfile.cmake) +* [opencv](https://github.com/Microsoft/vcpkg/blob/master/ports/opencv/portfile.cmake) +#]===] + function(vcpkg_install_cmake) vcpkg_build_cmake(LOGFILE_ROOT install TARGET install ${ARGN}) endfunction() diff --git a/scripts/cmake/vcpkg_install_gn.cmake b/scripts/cmake/vcpkg_install_gn.cmake index e71c8c17364..8dd83510e67 100644 --- a/scripts/cmake/vcpkg_install_gn.cmake +++ b/scripts/cmake/vcpkg_install_gn.cmake @@ -1,23 +1,25 @@ -## # vcpkg_install_gn -## -## Installs a GN project -## -## ## Usage: -## ```cmake -## vcpkg_install_gn( -## SOURCE_PATH -## [TARGETS ...] -## ) -## ``` -## -## ## Parameters: -## ### SOURCE_PATH -## The path to the source directory -## -## ### TARGETS -## Only install the specified targets. -## -## Note: includes must be handled separately +#[===[.md: +# vcpkg_install_gn + +Installs a GN project + +## Usage: +```cmake +vcpkg_install_gn( + SOURCE_PATH + [TARGETS ...] +) +``` + +## Parameters: +### SOURCE_PATH +The path to the source directory + +### TARGETS +Only install the specified targets. + +Note: includes must be handled separately +#]===] function(vcpkg_install_gn) # parse parameters such that semicolons in options arguments to COMMAND don't get erased @@ -95,4 +97,4 @@ function(vcpkg_install_gn) install_("${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel" "${CURRENT_PACKAGES_DIR}") endif() -endfunction() \ No newline at end of file +endfunction() diff --git a/scripts/cmake/vcpkg_install_make.cmake b/scripts/cmake/vcpkg_install_make.cmake index 4246894686c..ce8a782d3c5 100644 --- a/scripts/cmake/vcpkg_install_make.cmake +++ b/scripts/cmake/vcpkg_install_make.cmake @@ -1,24 +1,26 @@ -## # 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) +#[===[.md: +# 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) +#]===] function(vcpkg_install_make) vcpkg_build_make(${ARGN} LOGFILE_ROOT ENABLE_INSTALL) diff --git a/scripts/cmake/vcpkg_install_meson.cmake b/scripts/cmake/vcpkg_install_meson.cmake index 9d9972a0b91..21620291802 100644 --- a/scripts/cmake/vcpkg_install_meson.cmake +++ b/scripts/cmake/vcpkg_install_meson.cmake @@ -1,16 +1,19 @@ -## # vcpkg_install_meson -## -## Builds a meson project previously configured with `vcpkg_configure_meson()`. -## -## ## Usage -## ```cmake -## vcpkg_install_meson() -## ``` -## -## ## Examples -## -## * [fribidi](https://github.com/Microsoft/vcpkg/blob/master/ports/fribidi/portfile.cmake) -## * [libepoxy](https://github.com/Microsoft/vcpkg/blob/master/ports/libepoxy/portfile.cmake) +#[===[.md: +# vcpkg_install_meson + +Builds a meson project previously configured with `vcpkg_configure_meson()`. + +## Usage +```cmake +vcpkg_install_meson() +``` + +## Examples + +* [fribidi](https://github.com/Microsoft/vcpkg/blob/master/ports/fribidi/portfile.cmake) +* [libepoxy](https://github.com/Microsoft/vcpkg/blob/master/ports/libepoxy/portfile.cmake) +#]===] + function(vcpkg_install_meson) vcpkg_find_acquire_program(NINJA) unset(ENV{DESTDIR}) # installation directory was already specified with '--prefix' option diff --git a/scripts/cmake/vcpkg_install_msbuild.cmake b/scripts/cmake/vcpkg_install_msbuild.cmake index ee3247cfaff..cdef344ddbf 100644 --- a/scripts/cmake/vcpkg_install_msbuild.cmake +++ b/scripts/cmake/vcpkg_install_msbuild.cmake @@ -1,93 +1,95 @@ -## # vcpkg_install_msbuild -## -## Build and install a msbuild-based project. This replaces `vcpkg_build_msbuild()`. -## -## ## Usage -## ```cmake -## vcpkg_install_msbuild( -## SOURCE_PATH <${SOURCE_PATH}> -## PROJECT_SUBPATH -## [INCLUDES_SUBPATH ] -## [LICENSE_SUBPATH ] -## [RELEASE_CONFIGURATION ] -## [DEBUG_CONFIGURATION ] -## [TARGET ] -## [TARGET_PLATFORM_VERSION <10.0.15063.0>] -## [PLATFORM <${TRIPLET_SYSTEM_ARCH}>] -## [PLATFORM_TOOLSET <${VCPKG_PLATFORM_TOOLSET}>] -## [OPTIONS ...] -## [OPTIONS_RELEASE ...] -## [OPTIONS_DEBUG ...] -## [USE_VCPKG_INTEGRATION] -## [ALLOW_ROOT_INCLUDES | REMOVE_ROOT_INCLUDES] -## ) -## ``` -## -## ## Parameters -## ### SOURCE_PATH -## The path to the root of the source tree. -## -## Because MSBuild uses in-source builds, the source tree will be copied into a temporary location for the build. This -## parameter is the base for that copy and forms the base for all XYZ_SUBPATH options. -## -## ### USE_VCPKG_INTEGRATION -## Apply the normal `integrate install` integration for building the project. -## -## By default, projects built with this command will not automatically link libraries or have header paths set. -## -## ### PROJECT_SUBPATH -## The subpath to the solution (`.sln`) or project (`.vcxproj`) file relative to `SOURCE_PATH`. -## -## ### LICENSE_SUBPATH -## The subpath to the license file relative to `SOURCE_PATH`. -## -## ### INCLUDES_SUBPATH -## The subpath to the includes directory relative to `SOURCE_PATH`. -## -## This parameter should be a directory and should not end in a trailing slash. -## -## ### ALLOW_ROOT_INCLUDES -## Indicates that top-level include files (e.g. `include/zlib.h`) should be allowed. -## -## ### REMOVE_ROOT_INCLUDES -## Indicates that top-level include files (e.g. `include/Makefile.am`) should be removed. -## -## ### SKIP_CLEAN -## Indicates that the intermediate files should not be removed. -## -## Ports using this option should later call [`vcpkg_clean_msbuild()`](vcpkg_clean_msbuild.md) to manually clean up. -## -## ### RELEASE_CONFIGURATION -## The configuration (``/p:Configuration`` msbuild parameter) used for Release builds. -## -## ### DEBUG_CONFIGURATION -## The configuration (``/p:Configuration`` msbuild parameter) used for Debug builds. -## -## ### TARGET_PLATFORM_VERSION -## The WindowsTargetPlatformVersion (``/p:WindowsTargetPlatformVersion`` msbuild parameter) -## -## ### TARGET -## The MSBuild target to build. (``/t:``) -## -## ### PLATFORM -## The platform (``/p:Platform`` msbuild parameter) used for the build. -## -## ### PLATFORM_TOOLSET -## The platform toolset (``/p:PlatformToolset`` msbuild parameter) used for the build. -## -## ### OPTIONS -## Additional options passed to msbuild for all builds. -## -## ### OPTIONS_RELEASE -## Additional options passed to msbuild for Release builds. These are in addition to `OPTIONS`. -## -## ### OPTIONS_DEBUG -## Additional options passed to msbuild for Debug builds. These are in addition to `OPTIONS`. -## -## ## Examples -## -## * [xalan-c](https://github.com/Microsoft/vcpkg/blob/master/ports/xalan-c/portfile.cmake) -## * [libimobiledevice](https://github.com/Microsoft/vcpkg/blob/master/ports/libimobiledevice/portfile.cmake) +#[===[.md: +# vcpkg_install_msbuild + +Build and install a msbuild-based project. This replaces `vcpkg_build_msbuild()`. + +## Usage +```cmake +vcpkg_install_msbuild( + SOURCE_PATH <${SOURCE_PATH}> + PROJECT_SUBPATH + [INCLUDES_SUBPATH ] + [LICENSE_SUBPATH ] + [RELEASE_CONFIGURATION ] + [DEBUG_CONFIGURATION ] + [TARGET ] + [TARGET_PLATFORM_VERSION <10.0.15063.0>] + [PLATFORM <${TRIPLET_SYSTEM_ARCH}>] + [PLATFORM_TOOLSET <${VCPKG_PLATFORM_TOOLSET}>] + [OPTIONS ...] + [OPTIONS_RELEASE ...] + [OPTIONS_DEBUG ...] + [USE_VCPKG_INTEGRATION] + [ALLOW_ROOT_INCLUDES | REMOVE_ROOT_INCLUDES] +) +``` + +## Parameters +### SOURCE_PATH +The path to the root of the source tree. + +Because MSBuild uses in-source builds, the source tree will be copied into a temporary location for the build. This +parameter is the base for that copy and forms the base for all XYZ_SUBPATH options. + +### USE_VCPKG_INTEGRATION +Apply the normal `integrate install` integration for building the project. + +By default, projects built with this command will not automatically link libraries or have header paths set. + +### PROJECT_SUBPATH +The subpath to the solution (`.sln`) or project (`.vcxproj`) file relative to `SOURCE_PATH`. + +### LICENSE_SUBPATH +The subpath to the license file relative to `SOURCE_PATH`. + +### INCLUDES_SUBPATH +The subpath to the includes directory relative to `SOURCE_PATH`. + +This parameter should be a directory and should not end in a trailing slash. + +### ALLOW_ROOT_INCLUDES +Indicates that top-level include files (e.g. `include/zlib.h`) should be allowed. + +### REMOVE_ROOT_INCLUDES +Indicates that top-level include files (e.g. `include/Makefile.am`) should be removed. + +### SKIP_CLEAN +Indicates that the intermediate files should not be removed. + +Ports using this option should later call [`vcpkg_clean_msbuild()`](vcpkg_clean_msbuild.md) to manually clean up. + +### RELEASE_CONFIGURATION +The configuration (``/p:Configuration`` msbuild parameter) used for Release builds. + +### DEBUG_CONFIGURATION +The configuration (``/p:Configuration`` msbuild parameter) used for Debug builds. + +### TARGET_PLATFORM_VERSION +The WindowsTargetPlatformVersion (``/p:WindowsTargetPlatformVersion`` msbuild parameter) + +### TARGET +The MSBuild target to build. (``/t:``) + +### PLATFORM +The platform (``/p:Platform`` msbuild parameter) used for the build. + +### PLATFORM_TOOLSET +The platform toolset (``/p:PlatformToolset`` msbuild parameter) used for the build. + +### OPTIONS +Additional options passed to msbuild for all builds. + +### OPTIONS_RELEASE +Additional options passed to msbuild for Release builds. These are in addition to `OPTIONS`. + +### OPTIONS_DEBUG +Additional options passed to msbuild for Debug builds. These are in addition to `OPTIONS`. + +## Examples + +* [xalan-c](https://github.com/Microsoft/vcpkg/blob/master/ports/xalan-c/portfile.cmake) +* [libimobiledevice](https://github.com/Microsoft/vcpkg/blob/master/ports/libimobiledevice/portfile.cmake) +#]===] include(vcpkg_clean_msbuild) diff --git a/scripts/cmake/vcpkg_install_nmake.cmake b/scripts/cmake/vcpkg_install_nmake.cmake index 05efce2e238..5aebdae90ce 100644 --- a/scripts/cmake/vcpkg_install_nmake.cmake +++ b/scripts/cmake/vcpkg_install_nmake.cmake @@ -1,66 +1,68 @@ -## # vcpkg_install_nmake -## -## Build and install a msvc makefile project. -## -## ## Usage: -## ```cmake -## vcpkg_install_nmake( -## SOURCE_PATH <${SOURCE_PATH}> -## [NO_DEBUG] -## [TARGET ] -## 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>...] -## ``` -## -## ## 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. -## -## ### 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. -## -## ### 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` -## -## ## 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) +#[===[.md: +# vcpkg_install_nmake + +Build and install a msvc makefile project. + +## Usage: +```cmake +vcpkg_install_nmake( + SOURCE_PATH <${SOURCE_PATH}> + [NO_DEBUG] + [TARGET ] + 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>...] +``` + +## 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. + +### 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. + +### 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` + +## 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) +#]===] function(vcpkg_install_nmake) # parse parameters such that semicolons in options arguments to COMMAND don't get erased diff --git a/scripts/cmake/vcpkg_install_qmake.cmake b/scripts/cmake/vcpkg_install_qmake.cmake index 571b55a6830..d8362697abc 100644 --- a/scripts/cmake/vcpkg_install_qmake.cmake +++ b/scripts/cmake/vcpkg_install_qmake.cmake @@ -1,24 +1,26 @@ -## # vcpkg_install_qmake -## -## Build and install a qmake project. -## -## ## Usage: -## ```cmake -## vcpkg_install_qmake(...) -## ``` -## -## ## Parameters: -## See [`vcpkg_build_qmake()`](vcpkg_build_qmake.md). -## -## ## Notes: -## This command transparently forwards to [`vcpkg_build_qmake()`](vcpkg_build_qmake.md). -## -## Additionally, this command will copy produced .libs/.dlls/.as/.dylibs/.sos to the appropriate -## staging directories. -## -## ## Examples -## -## * [libqglviewer](https://github.com/Microsoft/vcpkg/blob/master/ports/libqglviewer/portfile.cmake) +#[===[.md: +# vcpkg_install_qmake + +Build and install a qmake project. + +## Usage: +```cmake +vcpkg_install_qmake(...) +``` + +## Parameters: +See [`vcpkg_build_qmake()`](vcpkg_build_qmake.md). + +## Notes: +This command transparently forwards to [`vcpkg_build_qmake()`](vcpkg_build_qmake.md). + +Additionally, this command will copy produced .libs/.dlls/.as/.dylibs/.sos to the appropriate +staging directories. + +## Examples + +* [libqglviewer](https://github.com/Microsoft/vcpkg/blob/master/ports/libqglviewer/portfile.cmake) +#]===] function(vcpkg_install_qmake) vcpkg_build_qmake(${ARGN}) diff --git a/scripts/cmake/vcpkg_escape_regex_control_characters.cmake b/scripts/cmake/vcpkg_internal_escape_regex_control_characters.cmake similarity index 64% rename from scripts/cmake/vcpkg_escape_regex_control_characters.cmake rename to scripts/cmake/vcpkg_internal_escape_regex_control_characters.cmake index 3d9d92b5e41..0655f93db20 100644 --- a/scripts/cmake/vcpkg_escape_regex_control_characters.cmake +++ b/scripts/cmake/vcpkg_internal_escape_regex_control_characters.cmake @@ -1,4 +1,4 @@ -function(vcpkg_escape_regex_control_characters out_var string_with_regex_characters) +function(vcpkg_internal_escape_regex_control_characters out_var string_with_regex_characters) string(REGEX REPLACE "[][+.*()^\\$?|]" "\\\\\\0" _escaped_content "${string_with_regex_characters}") set(${out_var} "${_escaped_content}" PARENT_SCOPE) endfunction() diff --git a/scripts/cmake/vcpkg_internal_get_cmake_vars.cmake b/scripts/cmake/vcpkg_internal_get_cmake_vars.cmake index 7f5ed1283d0..6c705ae8f8f 100644 --- a/scripts/cmake/vcpkg_internal_get_cmake_vars.cmake +++ b/scripts/cmake/vcpkg_internal_get_cmake_vars.cmake @@ -1,29 +1,31 @@ -## # vcpkg_internal_get_cmake_vars -## -## **Only for internal use in vcpkg helpers. Behavior and arguments will change without notice.** -## Runs a cmake configure with a dummy project to extract certain cmake variables -## -## ## Usage -## ```cmake -## vcpkg_internal_get_cmake_vars( -## [OUTPUT_FILE ] -## [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] -## ) -## ``` -## -## ## Parameters -## ### OPTIONS -## Additional options to pass to the test configure call -## -## ### OUTPUT_FILE -## Variable to return the path to the generated cmake file with the detected `CMAKE_` variables set as `VCKPG_DETECTED_` -## -## ## Notes -## If possible avoid usage in portfiles. -## -## ## Examples -## -## * [vcpkg_configure_make](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_configure_make.cmake) +#[===[.md: +# vcpkg_internal_get_cmake_vars + +**Only for internal use in vcpkg helpers. Behavior and arguments will change without notice.** +Runs a cmake configure with a dummy project to extract certain cmake variables + +## Usage +```cmake +vcpkg_internal_get_cmake_vars( + [OUTPUT_FILE ] + [OPTIONS <-DUSE_THIS_IN_ALL_BUILDS=1>...] +) +``` + +## Parameters +### OPTIONS +Additional options to pass to the test configure call + +### OUTPUT_FILE +Variable to return the path to the generated cmake file with the detected `CMAKE_` variables set as `VCKPG_DETECTED_` + +## Notes +If possible avoid usage in portfiles. + +## Examples + +* [vcpkg_configure_make](https://github.com/Microsoft/vcpkg/blob/master/scripts/cmake/vcpkg_configure_make.cmake) +#]===] function(vcpkg_internal_get_cmake_vars) cmake_parse_arguments(PARSE_ARGV 0 _gcv "" "OUTPUT_FILE" "OPTIONS") diff --git a/scripts/cmake/vcpkg_prettify_command.cmake b/scripts/cmake/vcpkg_prettify_command.cmake index c12332b7a59..25ad95eecb1 100644 --- a/scripts/cmake/vcpkg_prettify_command.cmake +++ b/scripts/cmake/vcpkg_prettify_command.cmake @@ -1,17 +1,19 @@ -## # 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` +#[===[.md: +# 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` +#]===] macro(vcpkg_prettify_command INPUT_VAR OUTPUT_VAR) set(${OUTPUT_VAR} "") diff --git a/scripts/cmake/vcpkg_replace_string.cmake b/scripts/cmake/vcpkg_replace_string.cmake index 3eb18d0bf75..d24b8677ec0 100644 --- a/scripts/cmake/vcpkg_replace_string.cmake +++ b/scripts/cmake/vcpkg_replace_string.cmake @@ -1,12 +1,14 @@ -#.rst: -# .. command:: vcpkg_replace_string -# -# Replace a string in a file. -# -# :: -# vcpkg_replace_string(filename match_string replace_string) -# -# +#[===[.md: +# vcpkg_replace_string + +Replace a string in a file. + +```cmake +vcpkg_replace_string(filename match_string replace_string) +``` + +#]===] + function(vcpkg_replace_string filename match_string replace_string) file(READ ${filename} _contents) string(REPLACE "${match_string}" "${replace_string}" _contents "${_contents}") diff --git a/scripts/cmake/vcpkg_test_cmake.cmake b/scripts/cmake/vcpkg_test_cmake.cmake index 48d247f676f..f2a8a76b12b 100644 --- a/scripts/cmake/vcpkg_test_cmake.cmake +++ b/scripts/cmake/vcpkg_test_cmake.cmake @@ -1,3 +1,4 @@ +# DEPRECATED function(vcpkg_test_cmake) message("${_VCPKG_BACKCOMPAT_MESSAGE_LEVEL}" "vcpkg_test_cmake was a no-op and has been removed. Please remove the call to `vcpkg_test_cmake()`.") endfunction() diff --git a/test.cmake b/test.cmake deleted file mode 100644 index c239695cbd7..00000000000 --- a/test.cmake +++ /dev/null @@ -1,9 +0,0 @@ -set(LLVM_EXECUTABLE_REGEX [[^([^.]*|[^.]*\.lld)\.exe$]]) -foreach(el "bugpoint.exe" "ld.lld.exe" "asdf.dll" "asdf") - message(STATUS "Matching ${el}") - if(el MATCHES "${LLVM_EXECUTABLE_REGEX}") - message(STATUS "Matching ${el} - match (${CMAKE_MATCH_1}).") - else() - message(STATUS "Matching ${el} - no match.") - endif() -endforeach()