From d9b80249d9bdbc8d3dd6c15d8815068a65aa80be Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Fri, 29 Oct 2021 10:39:59 -0700 Subject: [PATCH 01/17] convert indentation to 4 spaces --- .../cmake/vcpkg_find_acquire_program.cmake | 1061 ++++++++--------- 1 file changed, 530 insertions(+), 531 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 4fa7782e529231..ed41007d87a461 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -47,560 +47,559 @@ Note that msys2 has a dedicated helper function: [`vcpkg_acquire_msys`](vcpkg_ac * [qt5](https://github.com/Microsoft/vcpkg/blob/master/ports/qt5/portfile.cmake) #]===] -include(vcpkg_execute_in_download_mode) - function(vcpkg_find_acquire_program VAR) - set(EXPANDED_VAR ${${VAR}}) - if(EXPANDED_VAR) - return() - endif() - - unset(NOEXTRACT) - unset(_vfa_RENAME) - unset(SUBDIR) - unset(PROG_PATH_SUBDIR) - unset(REQUIRED_INTERPRETER) - unset(_vfa_SUPPORTED) - unset(POST_INSTALL_COMMAND) - unset(PATHS) - - if(VAR MATCHES "PERL") - set(PROGNAME perl) - set(PERL_VERSION 5.32.1.1) - set(SUBDIR ${PERL_VERSION}) - set(PATHS ${DOWNLOADS}/tools/perl/${SUBDIR}/perl/bin) - set(BREW_PACKAGE_NAME "perl") - set(APT_PACKAGE_NAME "perl") - set(URL - "https://strawberryperl.com/download/${PERL_VERSION}/strawberry-perl-${PERL_VERSION}-32bit.zip" - ) - set(ARCHIVE "strawberry-perl-${PERL_VERSION}-32bit.zip") - set(HASH 936381254fea2e596db6a16c23b08ced25c4081fda484e1b8c4356755016e4b956bd00f3d2ee651d5f41a7695e9998f6c1ac3f4a237212b9c55aca8c5fea14e9) - elseif(VAR MATCHES "NASM") - set(PROGNAME nasm) - set(NASM_VERSION 2.15.05) - set(PATHS ${DOWNLOADS}/tools/nasm/nasm-${NASM_VERSION}) - set(BREW_PACKAGE_NAME "nasm") - set(APT_PACKAGE_NAME "nasm") - set(URL - "https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VERSION}/win32/nasm-${NASM_VERSION}-win32.zip" - "https://fossies.org/windows/misc/nasm-${NASM_VERSION}-win32.zip" - ) - set(ARCHIVE "nasm-${NASM_VERSION}-win32.zip") - set(HASH 9412b8caa07e15eac8f500f6f8fab9f038d95dc25e0124b08a80645607cf5761225f98546b52eac7b894420d64f26c3cbf22c19cd286bbe583f7c964256c97ed) - elseif(VAR MATCHES "YASM") - set(PROGNAME yasm) - set(YASM_VERSION 1.3.0.6.g1962) - set(SUBDIR 1.3.0.6) - set(BREW_PACKAGE_NAME "yasm") - set(APT_PACKAGE_NAME "yasm") - set(URL "https://www.tortall.net/projects/yasm/snapshots/v${YASM_VERSION}/yasm-${YASM_VERSION}.exe") - set(ARCHIVE "yasm-${YASM_VERSION}.exe") - set(_vfa_RENAME "yasm.exe") - set(NOEXTRACT ON) - set(HASH c1945669d983b632a10c5ff31e86d6ecbff143c3d8b2c433c0d3d18f84356d2b351f71ac05fd44e5403651b00c31db0d14615d7f9a6ecce5750438d37105c55b) - elseif(VAR MATCHES "GIT") - set(PROGNAME git) - if(CMAKE_HOST_WIN32) - set(GIT_BASE_VERSION 2.32.0) - set(GIT_VERSION 2.32.0.2) - set(SUBDIR "git-${GIT_VERSION}-2-windows") - set(URL "https://github.com/git-for-windows/git/releases/download/v${GIT_BASE_VERSION}.windows.2/PortableGit-${GIT_VERSION}-32-bit.7z.exe") - set(ARCHIVE "PortableGit-${GIT_VERSION}-32-bit.7z.exe") - set(HASH 867d8534972cbaf7a4224e25a14d484f8d17ef186f8d79e9a758afb90cf69541375cb7615a39702311f4809cb8371ef85c2b1a15bfffe9e48f0e597ac011b348) - set(PATHS - "${DOWNLOADS}/tools/${SUBDIR}/mingw32/bin" - "${DOWNLOADS}/tools/git/${SUBDIR}/mingw32/bin") - else() - set(BREW_PACKAGE_NAME "git") - set(APT_PACKAGE_NAME "git") - endif() - elseif(VAR MATCHES "GN") - set(PROGNAME gn) - set(_vfa_RENAME "gn") - set(CIPD_DOWNLOAD_GN "https://chrome-infra-packages.appspot.com/dl/gn/gn") - if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") - set(_vfa_SUPPORTED ON) - set(GN_VERSION "xus7xtaPhpv5vCmKFOnsBVoB-PKmhZvRsSTjbQAuF0MC") - set(GN_PLATFORM "linux-amd64") - set(HASH "871e75d7f3597b74fb99e36bb41fe5a9f8ce8a4d9f167f4729fc6e444807a59f35ec8aca70c2274a99c79d70a1108272be1ad991678a8ceb39e30f77abb13135") - elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") - set(_vfa_SUPPORTED ON) - set(GN_VERSION "qhxILDNcJ2H44HfHmfiU-XIY3E_SIXvFqLd2wvbIgOoC") - set(GN_PLATFORM "mac-amd64") - set(HASH "03ee64cb15bae7fceb412900d470601090bce147cfd45eb9b46683ac1a5dca848465a5d74c55a47df7f0e334d708151249a6d37bb021de74dd48b97ed4a07937") - else() - set(GN_VERSION "qUkAhy9J0P7c5racy-9wB6AHNK_btS18im8S06_ehhwC") - set(GN_PLATFORM "windows-amd64") - set(HASH "263e02bd79eee0cb7b664831b7898565c5656a046328d8f187ef7ae2a4d766991d477b190c9b425fcc960ab76f381cd3e396afb85cba7408ca9e74eb32c175db") - endif() - set(SUBDIR "${GN_VERSION}") - set(URL "${CIPD_DOWNLOAD_GN}/${GN_PLATFORM}/+/${GN_VERSION}") - set(ARCHIVE "gn-${GN_PLATFORM}.zip") - elseif(VAR MATCHES "GO") - set(PROGNAME go) - set(SUBDIR 1.16.6.windows-386) - set(PATHS ${DOWNLOADS}/tools/go/${SUBDIR}/go/bin) - set(BREW_PACKAGE_NAME "go") - set(APT_PACKAGE_NAME "golang-go") - set(URL "https://dl.google.com/go/go${SUBDIR}.zip") - set(ARCHIVE "go${SUBDIR}.zip") - set(HASH 2a1e539ed628c0cca5935d24d22cf3a7165f5c80e12a4003ac184deae6a6d0aa31f582f3e8257b0730adfc09aeec3a0e62f4732e658c312d5382170bcd8c94d8) - elseif(VAR MATCHES "PYTHON3") - if(CMAKE_HOST_WIN32) - set(PROGNAME python) - set(PYTHON_VERSION 3.10.0) - if (VCPKG_TARGET_ARCHITECTURE STREQUAL x86) - set(SUBDIR "python-${PYTHON_VERSION}-x86") - set(URL "https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}-embed-win32.zip") - set(ARCHIVE "python-${PYTHON_VERSION}-embed-win32.zip") - set(HASH 0b007bfa02cdd48b3c260986493fa124a6b9d794da6eba2b4fad0d779fd655e9ae4e16daf5f02ff5b30a17abcfc1499bc6bee394c0f8abe933f2d4fe702af3cd) - else() - set(SUBDIR "python-${PYTHON_VERSION}-x64") - set(URL "https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}-embed-amd64.zip") - set(ARCHIVE "python-${PYTHON_VERSION}-embed-amd64.zip") - set(HASH 23d81d007698383d8dc088da532dcb86c6ceca7eb78ba5688fc2e18ee7f33f53a5632282873762293b8164556dfb15870f8ffb7abd368faba0a3d8d5d5bc6297) - endif() - set(PATHS ${DOWNLOADS}/tools/python/${SUBDIR}) - set(POST_INSTALL_COMMAND ${CMAKE_COMMAND} -E rm python310._pth) - else() - set(PROGNAME python3) - set(BREW_PACKAGE_NAME "python") - set(APT_PACKAGE_NAME "python3") - endif() - elseif(VAR MATCHES "PYTHON2") - if(CMAKE_HOST_WIN32) - set(PROGNAME python) - set(PYTHON_VERSION 2.7.18) - if (VCPKG_TARGET_ARCHITECTURE STREQUAL x86) - set(SUBDIR "python-${PYTHON_VERSION}-x86") - set(URL "https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}.msi") - set(ARCHIVE "python-${PYTHON_VERSION}.msi") - set(HASH 2c112733c777ddbf189b0a54047a9d5851ebce0564cc38b9687d79ce6c7a09006109dbad8627fb1a60c3ad55e261db850d9dfa454af0533b460b2afc316fe115) - else() - set(SUBDIR "python-${PYTHON_VERSION}-x64") - set(URL "https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}.amd64.msi") - set(ARCHIVE "python-${PYTHON_VERSION}.amd64.msi") - set(HASH 6a81a413b80fd39893e7444fd47efa455d240cbb77a456c9d12f7cf64962b38c08cfa244cd9c50a65947c40f936c6c8c5782f7236d7b92445ab3dd01e82af23e) - endif() - set(PATHS ${DOWNLOADS}/tools/python/${SUBDIR}) - elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") - # macOS includes Python 2.7 built-in as `python` - set(PROGNAME python) - set(BREW_PACKAGE_NAME "python2") - else() - set(PROGNAME python2) - set(APT_PACKAGE_NAME "python") + set(EXPANDED_VAR ${${VAR}}) + if(EXPANDED_VAR) + return() endif() - elseif(VAR MATCHES "RUBY") - set(PROGNAME "ruby") - set(RUBY_VERSION 2.7.4-1) - set(PATHS ${DOWNLOADS}/tools/ruby/rubyinstaller-${RUBY_VERSION}-x86/bin) - set(URL https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-${RUBY_VERSION}/rubyinstaller-${RUBY_VERSION}-x86.7z) - set(ARCHIVE rubyinstaller-${RUBY_VERSION}-x86.7z) - set(HASH 4bf459c987b407bdda328c52d95060bf6ad48fc3e5ed5f64d4b205c5b4153c7a00cb6f9da6c0bcd5f2e001e9dc3dda0b72269ec4afdeffd658b93c085cd1d859) - elseif(VAR MATCHES "JOM") - set(PROGNAME jom) - set(SUBDIR "jom-1.1.3") - set(PATHS ${DOWNLOADS}/tools/jom/${SUBDIR}) - set(URL - "https://download.qt.io/official_releases/jom/jom_1_1_3.zip" - "https://mirrors.ocf.berkeley.edu/qt/official_releases/jom/jom_1_1_3.zip" - ) - set(ARCHIVE "jom_1_1_3.zip") - set(HASH 5b158ead86be4eb3a6780928d9163f8562372f30bde051d8c281d81027b766119a6e9241166b91de0aa6146836cea77e5121290e62e31b7a959407840fc57b33) - elseif(VAR MATCHES "7Z") - set(PROGNAME 7z) - set(PATHS "${DOWNLOADS}/tools/7z/Files/7-Zip") - set(URL "https://7-zip.org/a/7z1900.msi") - set(ARCHIVE "7z1900.msi") - set(HASH f73b04e2d9f29d4393fde572dcf3c3f0f6fa27e747e5df292294ab7536ae24c239bf917689d71eb10cc49f6b9a4ace26d7c122ee887d93cc935f268c404e9067) - elseif(VAR MATCHES "NINJA") - set(PROGNAME ninja) - set(NINJA_VERSION 1.10.2) - set(_vfa_SUPPORTED ON) - if(CMAKE_HOST_WIN32) - set(ARCHIVE "ninja-win-${NINJA_VERSION}.zip") - set(SUBDIR "${NINJA_VERSION}-windows") - set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-win.zip") - set(HASH 6004140d92e86afbb17b49c49037ccd0786ce238f340f7d0e62b4b0c29ed0d6ad0bab11feda2094ae849c387d70d63504393714ed0a1f4d3a1f155af7a4f1ba3) - elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") - set(ARCHIVE "ninja-mac-${NINJA_VERSION}.zip") - set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-mac.zip") - set(SUBDIR "${NINJA_VERSION}-osx") - set(PATHS "${DOWNLOADS}/tools/ninja-${NINJA_VERSION}-osx") - set(HASH bcd12f6a3337591306d1b99a7a25a6933779ba68db79f17c1d3087d7b6308d245daac08df99087ff6be8dc7dd0dcdbb3a50839a144745fa719502b3a7a07260b) - elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "FreeBSD") - set(PATHS "${DOWNLOADS}/tools/${SUBDIR}-freebsd") - set(_vfa_SUPPORTED OFF) - else() - set(ARCHIVE "ninja-linux-${NINJA_VERSION}.zip") - set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-linux.zip") - set(SUBDIR "${NINJA_VERSION}-linux") - set(PATHS "${DOWNLOADS}/tools/ninja-${NINJA_VERSION}-linux") - set(HASH 93e802e9c17fb59636cddde4bad1ddaadad624f4ecfee00d5c78790330a4e9d433180e795718cda27da57215ce643c3929cf72c85337ee019d868c56f2deeef3) - endif() - set(VERSION_CMD --version) - elseif(VAR MATCHES "NUGET") - set(PROGNAME nuget) - set(SUBDIR "5.11.0") - set(PATHS "${DOWNLOADS}/tools/nuget-${SUBDIR}-windows") - set(BREW_PACKAGE_NAME "nuget") - set(URL "https://dist.nuget.org/win-x86-commandline/v5.11.0/nuget.exe") - set(_vfa_RENAME "nuget.exe") - set(ARCHIVE "nuget.5.11.0.exe") - set(NOEXTRACT ON) - set(HASH 06a337c9404dec392709834ef2cdbdce611e104b510ef40201849595d46d242151749aef65bc2d7ce5ade9ebfda83b64c03ce14c8f35ca9957a17a8c02b8c4b7) - elseif(VAR MATCHES "MESON") - set(MESON_VERSION 0.58.1) - set(PROGNAME meson) - set(REQUIRED_INTERPRETER PYTHON3) - set(APT_PACKAGE_NAME "meson") - set(BREW_PACKAGE_NAME "meson") - set(SCRIPTNAME meson meson.py) - set(REF aeda7f249c4a5dbbecc52e44f382246a2377b5b0) - set(PATHS ${DOWNLOADS}/tools/meson/meson-${REF}) - set(URL "https://github.com/mesonbuild/meson/archive/${REF}.tar.gz") - set(ARCHIVE "meson-${REF}.tar.gz") - #set(PATHS ${DOWNLOADS}/tools/meson/meson-${MESON_VERSION}) - #set(URL "https://github.com/mesonbuild/meson/releases/download/${MESON_VERSION}/meson-${MESON_VERSION}.tar.gz") - #set(ARCHIVE "meson-${MESON_VERSION}.tar.gz") - set(HASH 18a012a45274dbb4582e99fd69d920f38831e788d9860f9553c64847bedb1c2010ae0b5c0ef4a4350c03f5e0f95aaa0395378e1208109b59640c1a70b1e202d2) - set(_vfa_SUPPORTED ON) - set(VERSION_CMD --version) - elseif(VAR MATCHES "FLEX" OR VAR MATCHES "BISON") - if(CMAKE_HOST_WIN32) - set(SOURCEFORGE_ARGS - REPO winflexbison - FILENAME winflexbison-2.5.16.zip - SHA512 0a14154bff5d998feb23903c46961528f8ccb4464375d5384db8c4a7d230c0c599da9b68e7a32f3217a0a0735742242eaf3769cb4f03e00931af8640250e9123 - NO_REMOVE_ONE_LEVEL - WORKING_DIRECTORY "${DOWNLOADS}/tools/winflexbison" - ) - if(VAR MATCHES "FLEX") - set(PROGNAME win_flex) - else() - set(PROGNAME win_bison) - endif() - set(PATHS ${DOWNLOADS}/tools/winflexbison/0a14154bff-a8cf65db07) - if(NOT EXISTS "${PATHS}/data/m4sugar/m4sugar.m4") - file(REMOVE_RECURSE "${PATHS}") - endif() - elseif(VAR MATCHES "FLEX") - set(PROGNAME flex) - set(APT_PACKAGE_NAME flex) - set(BREW_PACKAGE_NAME flex) - else() - set(PROGNAME bison) - set(APT_PACKAGE_NAME bison) - set(BREW_PACKAGE_NAME bison) - if (APPLE) - set(PATHS /usr/local/opt/bison/bin) - endif() - endif() - elseif(VAR MATCHES "CLANG") - set(PROGNAME clang) - set(SUBDIR "clang-12.0.0") - set(LLVM_VERSION 12.0.0) - if(CMAKE_HOST_WIN32) - set(PATHS - # Support LLVM in Visual Studio 2019 - "$ENV{LLVMInstallDir}/x64/bin" - "$ENV{LLVMInstallDir}/bin" - "$ENV{VCINSTALLDIR}/Tools/Llvm/x64/bin" - "$ENV{VCINSTALLDIR}/Tools/Llvm/bin" - "${DOWNLOADS}/tools/${SUBDIR}-windows/bin" - "${DOWNLOADS}/tools/clang/${SUBDIR}/bin") - if(DEFINED ENV{PROCESSOR_ARCHITEW6432}) - set(HOST_ARCH_ $ENV{PROCESSOR_ARCHITEW6432}) - else() - set(HOST_ARCH_ $ENV{PROCESSOR_ARCHITECTURE}) - endif() + unset(NOEXTRACT) + unset(_vfa_RENAME) + unset(SUBDIR) + unset(PROG_PATH_SUBDIR) + unset(REQUIRED_INTERPRETER) + unset(_vfa_SUPPORTED) + unset(POST_INSTALL_COMMAND) + unset(PATHS) - if(HOST_ARCH_ MATCHES "64") - set(URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/LLVM-${LLVM_VERSION}-win64.exe") - set(ARCHIVE "LLVM-${LLVM_VERSION}-win64.7z.exe") - set(HASH 67a9b54abad5143fa5f79f0cfc184be1394c9fc894fa9cee709943cb6ccbde8f0ea6003d8fcc20eccf035631abe4009cc0f694ac84e7879331cebba8125e4c7f) - else() - set(URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/LLVM-${LLVM_VERSION}-win32.exe") - set(ARCHIVE "LLVM-${LLVM_VERSION}-win32.7z.exe") - set(HASH 92fa5252fd08c1414ee6d71e2544cd2c44872124c47225f8d98b3af711d20e699f2888bc30642dfd00e005013da1607a593674fb4878951cc434694f9a119199) - endif() - endif() - set(BREW_PACKAGE_NAME "llvm") - set(APT_PACKAGE_NAME "clang") - elseif(VAR MATCHES "GPERF") - set(PROGNAME gperf) - set(GPERF_VERSION 3.0.1) - set(PATHS ${DOWNLOADS}/tools/gperf/bin) - set(URL "https://sourceforge.net/projects/gnuwin32/files/gperf/${GPERF_VERSION}/gperf-${GPERF_VERSION}-bin.zip/download") - set(ARCHIVE "gperf-${GPERF_VERSION}-bin.zip") - set(HASH 3f2d3418304390ecd729b85f65240a9e4d204b218345f82ea466ca3d7467789f43d0d2129fcffc18eaad3513f49963e79775b10cc223979540fa2e502fe7d4d9) - elseif(VAR MATCHES "GASPREPROCESSOR") - set(NOEXTRACT true) - set(PROGNAME gas-preprocessor) - set(SUBDIR "4daa6115") - set(REQUIRED_INTERPRETER PERL) - set(SCRIPTNAME "gas-preprocessor.pl") - set(PATHS ${DOWNLOADS}/tools/gas-preprocessor/${SUBDIR}) - set(_vfa_RENAME "gas-preprocessor.pl") - set(URL "https://raw.githubusercontent.com/FFmpeg/gas-preprocessor/4daa611556a0558dfe537b4f7ad80f7e50a079c1/gas-preprocessor.pl") - set(ARCHIVE "gas-preprocessor-${SUBDIR}.pl") - set(HASH 2737ba3c1cf85faeb1fbfe015f7bad170f43a857a50a1b3d81fa93ba325d481f73f271c5a886ff8b7eef206662e19f0e9ef24861dfc608b67b8ea8a2062dc061) - elseif(VAR MATCHES "DARK") - set(PROGNAME dark) - set(SUBDIR "wix311-binaries") - set(PATHS ${DOWNLOADS}/tools/dark/${SUBDIR}) - set(URL "https://github.com/wixtoolset/wix3/releases/download/wix311rtm/wix311-binaries.zip") - set(ARCHIVE "wix311-binaries.zip") - set(HASH 74f0fa29b5991ca655e34a9d1000d47d4272e071113fada86727ee943d913177ae96dc3d435eaf494d2158f37560cd4c2c5274176946ebdb17bf2354ced1c516) - elseif(VAR MATCHES "SCONS") - set(PROGNAME scons) - set(SCONS_VERSION 4.1.0) - set(SUBDIR ${SCONS_VERSION}) - set(REQUIRED_INTERPRETER PYTHON2) - set(SCRIPTNAME "scons.py") - set(URL "https://sourceforge.net/projects/scons/files/scons-local-${SCONS_VERSION}.zip/download") - set(ARCHIVE "scons-local-${SCONS_VERSION}.zip") - set(HASH b173176ce8aca25039c64fcc68ec1b9ad31e03a926fd545e7631b3f9b374d914adffc593f505e3e7e2867b0ffe85e8deb0b39afe314edf05d02974ce5db1badb) - elseif(VAR MATCHES "SWIG") - set(SWIG_VERSION 4.0.2) - set(PROGNAME swig) - if(CMAKE_HOST_WIN32) - set(SOURCEFORGE_ARGS - REPO swig/swigwin - REF swigwin-${SWIG_VERSION} - FILENAME "swigwin-${SWIG_VERSION}.zip" - SHA512 b8f105f9b9db6acc1f6e3741990915b533cd1bc206eb9645fd6836457fd30789b7229d2e3219d8e35f2390605ade0fbca493ae162ec3b4bc4e428b57155db03d - NO_REMOVE_ONE_LEVEL - WORKING_DIRECTORY "${DOWNLOADS}/tools/swig" - ) - set(SUBDIR b8f105f9b9-f0518bc3b7/swigwin-${SWIG_VERSION}) - else() - set(APT_PACKAGE_NAME "swig") - set(BREW_PACKAGE_NAME "swig") - endif() - - elseif(VAR MATCHES "DOXYGEN") - set(PROGNAME doxygen) - set(DOXYGEN_VERSION 1.9.1) - set(SOURCEFORGE_ARGS - REPO doxygen - REF rel-${DOXYGEN_VERSION} - FILENAME "doxygen-${DOXYGEN_VERSION}.windows.bin.zip" - SHA512 c3eeb6b9fa4eab70fb6b0864fbbf94fb8050f3fee38d117cf470921a80e3569cc1c8b0272604d6731e05f01790cfaa70e159bec5d0882fc4f2d8ae4a5d52a21b - NO_REMOVE_ONE_LEVEL - WORKING_DIRECTORY "${DOWNLOADS}/tools/doxygen" - ) - set(SUBDIR c3eeb6b9fa-76d69c6db5) - elseif(VAR MATCHES "BAZEL") - set(PROGNAME bazel) - set(BAZEL_VERSION 4.1.0) - set(_vfa_RENAME "bazel") - if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") - set(_vfa_SUPPORTED ON) - set(SUBDIR ${BAZEL_VERSION}-linux) - set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${SUBDIR}-x86_64") - set(ARCHIVE "bazel-${SUBDIR}-x86_64") - set(NOEXTRACT ON) - set(HASH 50aa0894dbeedb9189a56f17baa8cecfa55c5f9c1f93a61b9ab5e10984754a400884fc9802b4979f536778e15f813a72807396b4b47694e4c05eadb841361c69) - elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") - set(_vfa_SUPPORTED ON) - set(SUBDIR ${BAZEL_VERSION}-darwin) - set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${SUBDIR}-x86_64") - set(ARCHIVE "bazel-${SUBDIR}-x86_64") - set(NOEXTRACT ON) - set(HASH 3500560c9d49d37a1ead2d2777d673c6f1874582883e141ecd5b3991005b1b6b8aab5f255c187133d771497c2a956f5c1e0dfad04dc453525634537e65b649af) - else() - set(SUBDIR ${BAZEL_VERSION}-windows) - set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${SUBDIR}-x86_64.zip") - set(ARCHIVE "bazel-${SUBDIR}-x86_64.zip") - set(HASH 3954ab54b465d62eef397767dac7ce21d06ac8ea3e1571d0e7b1f0ea8b5c2cf44eea5d252b85a63a1e1a08dbe9a219783cc23c2888673c35e2df03edfdc9e5a7) - endif() - elseif(VAR MATCHES "ARIA2") - set(PROGNAME aria2c) - set(ARIA2_VERSION 1.35.0) - set(PATHS ${DOWNLOADS}/tools/aria2c/aria2-${ARIA2_VERSION}-win-32bit-build1) - set(URL "https://github.com/aria2/aria2/releases/download/release-${ARIA2_VERSION}/aria2-${ARIA2_VERSION}-win-32bit-build1.zip") - set(ARCHIVE "aria2-${ARIA2_VERSION}-win-32bit-build1.zip") - set(HASH 933537cad820b1cecf43a9eeca7e1b241dd7b1c902ee942441a166f2c38845f16046321efbdfa2f83c7e9fc50c7ecc5da6fd00e0c6e2124c07d3b783aa5092a4) - elseif(VAR MATCHES "PKGCONFIG") - set(PROGNAME pkg-config) - if(ENV{PKG_CONFIG}) - debug_message(STATUS "PKG_CONFIG found in ENV! Using $ENV{PKG_CONFIG}") - set(PKGCONFIG $ENV{PKG_CONFIG} PARENT_SCOPE) - return() - elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "OpenBSD") - # As of 6.8, the OpenBSD specific pkg-config doesn't support {pcfiledir} - set(_vfa_SUPPORTED ON) - set(_vfa_RENAME "pkg-config") - set(PKGCONFIG_VERSION 0.29.2.1) - set(NOEXTRACT ON) - set(ARCHIVE "pkg-config.openbsd") - set(SUBDIR "openbsd") - set(URL "https://raw.githubusercontent.com/jgilje/pkg-config-openbsd/master/pkg-config") - set(HASH b7ec9017b445e00ae1377e36e774cf3f5194ab262595840b449832707d11e443a102675f66d8b7e8b2e2f28cebd6e256835507b1e0c69644cc9febab8285080b) - set(VERSION_CMD --version) - elseif(CMAKE_HOST_WIN32) - if(NOT EXISTS "${PKGCONFIG}") - set(VERSION 0.29.2-2) - set(LIBWINPTHREAD_VERSION git-8.0.0.5906.c9a21571-1) - vcpkg_acquire_msys( - PKGCONFIG_ROOT - NO_DEFAULT_PACKAGES - DIRECT_PACKAGES - "https://repo.msys2.org/mingw/i686/mingw-w64-i686-pkg-config-${VERSION}-any.pkg.tar.zst" - 54f8dad3b1a36a4515db47825a3214fbd2bd82f604aec72e7fb8d79068095fda3c836fb2296acd308522d6e12ce15f69e0c26dcf4eb0681fd105d057d912cdb7 - "https://repo.msys2.org/mingw/i686/mingw-w64-i686-libwinpthread-${LIBWINPTHREAD_VERSION}-any.pkg.tar.zst" - 2c3d9e6b2eee6a4c16fd69ddfadb6e2dc7f31156627d85845c523ac85e5c585d4cfa978659b1fe2ec823d44ef57bc2b92a6127618ff1a8d7505458b794f3f01c + if(VAR MATCHES "PERL") + set(PROGNAME perl) + set(PERL_VERSION 5.32.1.1) + set(SUBDIR ${PERL_VERSION}) + set(PATHS ${DOWNLOADS}/tools/perl/${SUBDIR}/perl/bin) + set(BREW_PACKAGE_NAME "perl") + set(APT_PACKAGE_NAME "perl") + set(URL + "https://strawberryperl.com/download/${PERL_VERSION}/strawberry-perl-${PERL_VERSION}-32bit.zip" ) - endif() - set(${VAR} "${PKGCONFIG_ROOT}/mingw32/bin/pkg-config.exe" PARENT_SCOPE) - return() - else() - set(BREW_PACKAGE_NAME pkg-config) - set(APT_PACKAGE_NAME pkg-config) - set(PATHS "/bin" "/usr/bin" "/usr/local/bin") - endif() - else() - message(FATAL "unknown tool ${VAR} -- unable to acquire.") - endif() - - macro(do_version_check) - if(VERSION_CMD) - vcpkg_execute_in_download_mode( - COMMAND ${${VAR}} ${VERSION_CMD} - WORKING_DIRECTORY ${VCPKG_ROOT_DIR} - OUTPUT_VARIABLE ${VAR}_VERSION_OUTPUT + set(ARCHIVE "strawberry-perl-${PERL_VERSION}-32bit.zip") + set(HASH 936381254fea2e596db6a16c23b08ced25c4081fda484e1b8c4356755016e4b956bd00f3d2ee651d5f41a7695e9998f6c1ac3f4a237212b9c55aca8c5fea14e9) + elseif(VAR MATCHES "NASM") + set(PROGNAME nasm) + set(NASM_VERSION 2.15.05) + set(PATHS ${DOWNLOADS}/tools/nasm/nasm-${NASM_VERSION}) + set(BREW_PACKAGE_NAME "nasm") + set(APT_PACKAGE_NAME "nasm") + set(URL + "https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VERSION}/win32/nasm-${NASM_VERSION}-win32.zip" + "https://fossies.org/windows/misc/nasm-${NASM_VERSION}-win32.zip" ) - string(STRIP "${${VAR}_VERSION_OUTPUT}" ${VAR}_VERSION_OUTPUT) - #TODO: REGEX MATCH case for more complex cases! - if(NOT ${VAR}_VERSION_OUTPUT VERSION_GREATER_EQUAL ${VAR}_VERSION) - message(STATUS "Found ${PROGNAME}('${${VAR}_VERSION_OUTPUT}') but at least version ${${VAR}_VERSION} is required! Trying to use internal version if possible!") - unset(${VAR}) - set(${VAR} "${VAR}-NOTFOUND" CACHE INTERNAL "") + set(ARCHIVE "nasm-${NASM_VERSION}-win32.zip") + set(HASH 9412b8caa07e15eac8f500f6f8fab9f038d95dc25e0124b08a80645607cf5761225f98546b52eac7b894420d64f26c3cbf22c19cd286bbe583f7c964256c97ed) + elseif(VAR MATCHES "YASM") + set(PROGNAME yasm) + set(YASM_VERSION 1.3.0.6.g1962) + set(SUBDIR 1.3.0.6) + set(BREW_PACKAGE_NAME "yasm") + set(APT_PACKAGE_NAME "yasm") + set(URL "https://www.tortall.net/projects/yasm/snapshots/v${YASM_VERSION}/yasm-${YASM_VERSION}.exe") + set(ARCHIVE "yasm-${YASM_VERSION}.exe") + set(_vfa_RENAME "yasm.exe") + set(NOEXTRACT ON) + set(HASH c1945669d983b632a10c5ff31e86d6ecbff143c3d8b2c433c0d3d18f84356d2b351f71ac05fd44e5403651b00c31db0d14615d7f9a6ecce5750438d37105c55b) + elseif(VAR MATCHES "GIT") + set(PROGNAME git) + if(CMAKE_HOST_WIN32) + set(GIT_BASE_VERSION 2.32.0) + set(GIT_VERSION 2.32.0.2) + set(SUBDIR "git-${GIT_VERSION}-2-windows") + set(URL "https://github.com/git-for-windows/git/releases/download/v${GIT_BASE_VERSION}.windows.2/PortableGit-${GIT_VERSION}-32-bit.7z.exe") + set(ARCHIVE "PortableGit-${GIT_VERSION}-32-bit.7z.exe") + set(HASH 867d8534972cbaf7a4224e25a14d484f8d17ef186f8d79e9a758afb90cf69541375cb7615a39702311f4809cb8371ef85c2b1a15bfffe9e48f0e597ac011b348) + set(PATHS + "${DOWNLOADS}/tools/${SUBDIR}/mingw32/bin" + "${DOWNLOADS}/tools/git/${SUBDIR}/mingw32/bin") else() - message(STATUS "Found external ${PROGNAME}('${${VAR}_VERSION_OUTPUT}').") + set(BREW_PACKAGE_NAME "git") + set(APT_PACKAGE_NAME "git") endif() - endif() - endmacro() - - macro(do_find) - if(NOT DEFINED REQUIRED_INTERPRETER) - find_program(${VAR} ${PROGNAME} PATHS ${PATHS} NO_DEFAULT_PATH) - if(NOT ${VAR}) - find_program(${VAR} ${PROGNAME}) - if(${VAR} AND NOT ${VAR}_VERSION_CHECKED) - do_version_check() - set(${VAR}_VERSION_CHECKED ON) - elseif(${VAR}_VERSION_CHECKED) - message(FATAL_ERROR "Unable to find ${PROGNAME} with min version of ${${VAR}_VERSION}") + elseif(VAR MATCHES "GN") + set(PROGNAME gn) + set(_vfa_RENAME "gn") + set(CIPD_DOWNLOAD_GN "https://chrome-infra-packages.appspot.com/dl/gn/gn") + if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") + set(_vfa_SUPPORTED ON) + set(GN_VERSION "xus7xtaPhpv5vCmKFOnsBVoB-PKmhZvRsSTjbQAuF0MC") + set(GN_PLATFORM "linux-amd64") + set(HASH "871e75d7f3597b74fb99e36bb41fe5a9f8ce8a4d9f167f4729fc6e444807a59f35ec8aca70c2274a99c79d70a1108272be1ad991678a8ceb39e30f77abb13135") + elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") + set(_vfa_SUPPORTED ON) + set(GN_VERSION "qhxILDNcJ2H44HfHmfiU-XIY3E_SIXvFqLd2wvbIgOoC") + set(GN_PLATFORM "mac-amd64") + set(HASH "03ee64cb15bae7fceb412900d470601090bce147cfd45eb9b46683ac1a5dca848465a5d74c55a47df7f0e334d708151249a6d37bb021de74dd48b97ed4a07937") + else() + set(GN_VERSION "qUkAhy9J0P7c5racy-9wB6AHNK_btS18im8S06_ehhwC") + set(GN_PLATFORM "windows-amd64") + set(HASH "263e02bd79eee0cb7b664831b7898565c5656a046328d8f187ef7ae2a4d766991d477b190c9b425fcc960ab76f381cd3e396afb85cba7408ca9e74eb32c175db") endif() - endif() - else() - vcpkg_find_acquire_program(${REQUIRED_INTERPRETER}) - find_file(SCRIPT_${VAR} NAMES ${SCRIPTNAME} PATHS ${PATHS} NO_DEFAULT_PATH) - if(NOT SCRIPT_${VAR}) - find_file(SCRIPT_${VAR} NAMES ${SCRIPTNAME}) - if(SCRIPT_${VAR} AND NOT ${VAR}_VERSION_CHECKED) - set(${VAR} ${${REQUIRED_INTERPRETER}} ${SCRIPT_${VAR}}) - do_version_check() - set(${VAR}_VERSION_CHECKED ON) - if(NOT ${VAR}) - unset(SCRIPT_${VAR} CACHE) + set(SUBDIR "${GN_VERSION}") + set(URL "${CIPD_DOWNLOAD_GN}/${GN_PLATFORM}/+/${GN_VERSION}") + set(ARCHIVE "gn-${GN_PLATFORM}.zip") + elseif(VAR MATCHES "GO") + set(PROGNAME go) + set(SUBDIR 1.16.6.windows-386) + set(PATHS ${DOWNLOADS}/tools/go/${SUBDIR}/go/bin) + set(BREW_PACKAGE_NAME "go") + set(APT_PACKAGE_NAME "golang-go") + set(URL "https://dl.google.com/go/go${SUBDIR}.zip") + set(ARCHIVE "go${SUBDIR}.zip") + set(HASH 2a1e539ed628c0cca5935d24d22cf3a7165f5c80e12a4003ac184deae6a6d0aa31f582f3e8257b0730adfc09aeec3a0e62f4732e658c312d5382170bcd8c94d8) + elseif(VAR MATCHES "PYTHON3") + if(CMAKE_HOST_WIN32) + set(PROGNAME python) + set(PYTHON_VERSION 3.10.0) + if (VCPKG_TARGET_ARCHITECTURE STREQUAL x86) + set(SUBDIR "python-${PYTHON_VERSION}-x86") + set(URL "https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}-embed-win32.zip") + set(ARCHIVE "python-${PYTHON_VERSION}-embed-win32.zip") + set(HASH 0b007bfa02cdd48b3c260986493fa124a6b9d794da6eba2b4fad0d779fd655e9ae4e16daf5f02ff5b30a17abcfc1499bc6bee394c0f8abe933f2d4fe702af3cd) + else() + set(SUBDIR "python-${PYTHON_VERSION}-x64") + set(URL "https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}-embed-amd64.zip") + set(ARCHIVE "python-${PYTHON_VERSION}-embed-amd64.zip") + set(HASH 23d81d007698383d8dc088da532dcb86c6ceca7eb78ba5688fc2e18ee7f33f53a5632282873762293b8164556dfb15870f8ffb7abd368faba0a3d8d5d5bc6297) endif() - elseif(${VAR}_VERSION_CHECKED) - message(FATAL_ERROR "Unable to find ${PROGNAME} with min version of ${${VAR}_VERSION}") + set(PATHS ${DOWNLOADS}/tools/python/${SUBDIR}) + set(POST_INSTALL_COMMAND ${CMAKE_COMMAND} -E rm python310._pth) + else() + set(PROGNAME python3) + set(BREW_PACKAGE_NAME "python") + set(APT_PACKAGE_NAME "python3") endif() - endif() - if(SCRIPT_${VAR}) - set(${VAR} ${${REQUIRED_INTERPRETER}} ${SCRIPT_${VAR}}) - endif() - endif() - endmacro() - - if(NOT DEFINED PROG_PATH_SUBDIR) - set(PROG_PATH_SUBDIR "${DOWNLOADS}/tools/${PROGNAME}/${SUBDIR}") - endif() - if(DEFINED SUBDIR) - list(APPEND PATHS ${PROG_PATH_SUBDIR}) - endif() - if("${PROG_PATH_SUBDIR}" MATCHES [[^(.*)[/\\]$]]) - # remove trailing slash, which may turn into a trailing `\` which CMake _does not like_ - set(PROG_PATH_SUBDIR "${CMAKE_MATCH_1}") - endif() + elseif(VAR MATCHES "PYTHON2") + if(CMAKE_HOST_WIN32) + set(PROGNAME python) + set(PYTHON_VERSION 2.7.18) + if (VCPKG_TARGET_ARCHITECTURE STREQUAL x86) + set(SUBDIR "python-${PYTHON_VERSION}-x86") + set(URL "https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}.msi") + set(ARCHIVE "python-${PYTHON_VERSION}.msi") + set(HASH 2c112733c777ddbf189b0a54047a9d5851ebce0564cc38b9687d79ce6c7a09006109dbad8627fb1a60c3ad55e261db850d9dfa454af0533b460b2afc316fe115) + else() + set(SUBDIR "python-${PYTHON_VERSION}-x64") + set(URL "https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}.amd64.msi") + set(ARCHIVE "python-${PYTHON_VERSION}.amd64.msi") + set(HASH 6a81a413b80fd39893e7444fd47efa455d240cbb77a456c9d12f7cf64962b38c08cfa244cd9c50a65947c40f936c6c8c5782f7236d7b92445ab3dd01e82af23e) + endif() + set(PATHS ${DOWNLOADS}/tools/python/${SUBDIR}) + elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") + # macOS includes Python 2.7 built-in as `python` + set(PROGNAME python) + set(BREW_PACKAGE_NAME "python2") + else() + set(PROGNAME python2) + set(APT_PACKAGE_NAME "python") + endif() + elseif(VAR MATCHES "RUBY") + set(PROGNAME "ruby") + set(RUBY_VERSION 2.7.4-1) + set(PATHS ${DOWNLOADS}/tools/ruby/rubyinstaller-${RUBY_VERSION}-x86/bin) + set(URL https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-${RUBY_VERSION}/rubyinstaller-${RUBY_VERSION}-x86.7z) + set(ARCHIVE rubyinstaller-${RUBY_VERSION}-x86.7z) + set(HASH 4bf459c987b407bdda328c52d95060bf6ad48fc3e5ed5f64d4b205c5b4153c7a00cb6f9da6c0bcd5f2e001e9dc3dda0b72269ec4afdeffd658b93c085cd1d859) + elseif(VAR MATCHES "JOM") + set(PROGNAME jom) + set(SUBDIR "jom-1.1.3") + set(PATHS ${DOWNLOADS}/tools/jom/${SUBDIR}) + set(URL + "https://download.qt.io/official_releases/jom/jom_1_1_3.zip" + "https://mirrors.ocf.berkeley.edu/qt/official_releases/jom/jom_1_1_3.zip" + ) + set(ARCHIVE "jom_1_1_3.zip") + set(HASH 5b158ead86be4eb3a6780928d9163f8562372f30bde051d8c281d81027b766119a6e9241166b91de0aa6146836cea77e5121290e62e31b7a959407840fc57b33) + elseif(VAR MATCHES "7Z") + set(PROGNAME 7z) + set(PATHS "${DOWNLOADS}/tools/7z/Files/7-Zip") + set(URL "https://7-zip.org/a/7z1900.msi") + set(ARCHIVE "7z1900.msi") + set(HASH f73b04e2d9f29d4393fde572dcf3c3f0f6fa27e747e5df292294ab7536ae24c239bf917689d71eb10cc49f6b9a4ace26d7c122ee887d93cc935f268c404e9067) + elseif(VAR MATCHES "NINJA") + set(PROGNAME ninja) + set(NINJA_VERSION 1.10.2) + set(_vfa_SUPPORTED ON) + if(CMAKE_HOST_WIN32) + set(ARCHIVE "ninja-win-${NINJA_VERSION}.zip") + set(SUBDIR "${NINJA_VERSION}-windows") + set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-win.zip") + set(HASH 6004140d92e86afbb17b49c49037ccd0786ce238f340f7d0e62b4b0c29ed0d6ad0bab11feda2094ae849c387d70d63504393714ed0a1f4d3a1f155af7a4f1ba3) + elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") + set(ARCHIVE "ninja-mac-${NINJA_VERSION}.zip") + set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-mac.zip") + set(SUBDIR "${NINJA_VERSION}-osx") + set(PATHS "${DOWNLOADS}/tools/ninja-${NINJA_VERSION}-osx") + set(HASH bcd12f6a3337591306d1b99a7a25a6933779ba68db79f17c1d3087d7b6308d245daac08df99087ff6be8dc7dd0dcdbb3a50839a144745fa719502b3a7a07260b) + elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "FreeBSD") + set(PATHS "${DOWNLOADS}/tools/${SUBDIR}-freebsd") + set(_vfa_SUPPORTED OFF) + else() + set(ARCHIVE "ninja-linux-${NINJA_VERSION}.zip") + set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-linux.zip") + set(SUBDIR "${NINJA_VERSION}-linux") + set(PATHS "${DOWNLOADS}/tools/ninja-${NINJA_VERSION}-linux") + set(HASH 93e802e9c17fb59636cddde4bad1ddaadad624f4ecfee00d5c78790330a4e9d433180e795718cda27da57215ce643c3929cf72c85337ee019d868c56f2deeef3) + endif() + set(VERSION_CMD --version) + elseif(VAR MATCHES "NUGET") + set(PROGNAME nuget) + set(SUBDIR "5.11.0") + set(PATHS "${DOWNLOADS}/tools/nuget-${SUBDIR}-windows") + set(BREW_PACKAGE_NAME "nuget") + set(URL "https://dist.nuget.org/win-x86-commandline/v5.10.0/nuget.exe") + set(URL "https://dist.nuget.org/win-x86-commandline/v5.11.0/nuget.exe") + set(_vfa_RENAME "nuget.exe") + set(ARCHIVE "nuget.5.11.0.exe") + set(NOEXTRACT ON) + set(HASH 06a337c9404dec392709834ef2cdbdce611e104b510ef40201849595d46d242151749aef65bc2d7ce5ade9ebfda83b64c03ce14c8f35ca9957a17a8c02b8c4b7) + elseif(VAR MATCHES "MESON") + set(MESON_VERSION 0.58.1) + set(PROGNAME meson) + set(REQUIRED_INTERPRETER PYTHON3) + set(APT_PACKAGE_NAME "meson") + set(BREW_PACKAGE_NAME "meson") + set(SCRIPTNAME meson meson.py) + set(REF aeda7f249c4a5dbbecc52e44f382246a2377b5b0) + set(PATHS ${DOWNLOADS}/tools/meson/meson-${REF}) + set(URL "https://github.com/mesonbuild/meson/archive/${REF}.tar.gz") + set(ARCHIVE "meson-${REF}.tar.gz") + #set(PATHS ${DOWNLOADS}/tools/meson/meson-${MESON_VERSION}) + #set(URL "https://github.com/mesonbuild/meson/releases/download/${MESON_VERSION}/meson-${MESON_VERSION}.tar.gz") + #set(ARCHIVE "meson-${MESON_VERSION}.tar.gz") + set(HASH 18a012a45274dbb4582e99fd69d920f38831e788d9860f9553c64847bedb1c2010ae0b5c0ef4a4350c03f5e0f95aaa0395378e1208109b59640c1a70b1e202d2) + set(_vfa_SUPPORTED ON) + set(VERSION_CMD --version) + elseif(VAR MATCHES "FLEX" OR VAR MATCHES "BISON") + if(CMAKE_HOST_WIN32) + set(SOURCEFORGE_ARGS + REPO winflexbison + FILENAME winflexbison-2.5.16.zip + SHA512 0a14154bff5d998feb23903c46961528f8ccb4464375d5384db8c4a7d230c0c599da9b68e7a32f3217a0a0735742242eaf3769cb4f03e00931af8640250e9123 + NO_REMOVE_ONE_LEVEL + WORKING_DIRECTORY "${DOWNLOADS}/tools/winflexbison" + ) + if(VAR MATCHES "FLEX") + set(PROGNAME win_flex) + else() + set(PROGNAME win_bison) + endif() + set(PATHS ${DOWNLOADS}/tools/winflexbison/0a14154bff-a8cf65db07) + if(NOT EXISTS "${PATHS}/data/m4sugar/m4sugar.m4") + file(REMOVE_RECURSE "${PATHS}") + endif() + elseif(VAR MATCHES "FLEX") + set(PROGNAME flex) + set(APT_PACKAGE_NAME flex) + set(BREW_PACKAGE_NAME flex) + else() + set(PROGNAME bison) + set(APT_PACKAGE_NAME bison) + set(BREW_PACKAGE_NAME bison) + if (APPLE) + set(PATHS /usr/local/opt/bison/bin) + endif() + endif() + elseif(VAR MATCHES "CLANG") + set(PROGNAME clang) + set(SUBDIR "clang-12.0.0") + set(LLVM_VERSION 12.0.0) + if(CMAKE_HOST_WIN32) + set(PATHS + # Support LLVM in Visual Studio 2019 + "$ENV{LLVMInstallDir}/x64/bin" + "$ENV{LLVMInstallDir}/bin" + "$ENV{VCINSTALLDIR}/Tools/Llvm/x64/bin" + "$ENV{VCINSTALLDIR}/Tools/Llvm/bin" + "${DOWNLOADS}/tools/${SUBDIR}-windows/bin" + "${DOWNLOADS}/tools/clang/${SUBDIR}/bin") - do_find() - if(NOT ${VAR}) - if(NOT CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows" AND NOT _vfa_SUPPORTED) - set(EXAMPLE ".") - if(DEFINED BREW_PACKAGE_NAME AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") - set(EXAMPLE ":\n brew install ${BREW_PACKAGE_NAME}") - elseif(DEFINED APT_PACKAGE_NAME AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") - set(EXAMPLE ":\n sudo apt-get install ${APT_PACKAGE_NAME}") - endif() - message(FATAL_ERROR "Could not find ${PROGNAME}. Please install it via your package manager${EXAMPLE}") - endif() + if(DEFINED ENV{PROCESSOR_ARCHITEW6432}) + set(HOST_ARCH_ $ENV{PROCESSOR_ARCHITEW6432}) + else() + set(HOST_ARCH_ $ENV{PROCESSOR_ARCHITECTURE}) + endif() - if(DEFINED SOURCEFORGE_ARGS) - # Locally change editable to suppress re-extraction each time - set(_VCPKG_EDITABLE 1) - vcpkg_from_sourceforge(OUT_SOURCE_PATH SFPATH ${SOURCEFORGE_ARGS}) - unset(_VCPKG_EDITABLE) - else() - vcpkg_download_distfile(ARCHIVE_PATH - URLS ${URL} - SHA512 ${HASH} - FILENAME ${ARCHIVE} - ) + if(HOST_ARCH_ MATCHES "64") + set(URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/LLVM-${LLVM_VERSION}-win64.exe") + set(ARCHIVE "LLVM-${LLVM_VERSION}-win64.7z.exe") + set(HASH 67a9b54abad5143fa5f79f0cfc184be1394c9fc894fa9cee709943cb6ccbde8f0ea6003d8fcc20eccf035631abe4009cc0f694ac84e7879331cebba8125e4c7f) + else() + set(URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/LLVM-${LLVM_VERSION}-win32.exe") + set(ARCHIVE "LLVM-${LLVM_VERSION}-win32.7z.exe") + set(HASH 92fa5252fd08c1414ee6d71e2544cd2c44872124c47225f8d98b3af711d20e699f2888bc30642dfd00e005013da1607a593674fb4878951cc434694f9a119199) + endif() + endif() + set(BREW_PACKAGE_NAME "llvm") + set(APT_PACKAGE_NAME "clang") + elseif(VAR MATCHES "GPERF") + set(PROGNAME gperf) + set(GPERF_VERSION 3.0.1) + set(PATHS ${DOWNLOADS}/tools/gperf/bin) + set(URL "https://sourceforge.net/projects/gnuwin32/files/gperf/${GPERF_VERSION}/gperf-${GPERF_VERSION}-bin.zip/download") + set(ARCHIVE "gperf-${GPERF_VERSION}-bin.zip") + set(HASH 3f2d3418304390ecd729b85f65240a9e4d204b218345f82ea466ca3d7467789f43d0d2129fcffc18eaad3513f49963e79775b10cc223979540fa2e502fe7d4d9) + elseif(VAR MATCHES "GASPREPROCESSOR") + set(NOEXTRACT true) + set(PROGNAME gas-preprocessor) + set(SUBDIR "4daa6115") + set(REQUIRED_INTERPRETER PERL) + set(SCRIPTNAME "gas-preprocessor.pl") + set(PATHS ${DOWNLOADS}/tools/gas-preprocessor/${SUBDIR}) + set(_vfa_RENAME "gas-preprocessor.pl") + set(URL "https://raw.githubusercontent.com/FFmpeg/gas-preprocessor/4daa611556a0558dfe537b4f7ad80f7e50a079c1/gas-preprocessor.pl") + set(ARCHIVE "gas-preprocessor-${SUBDIR}.pl") + set(HASH 2737ba3c1cf85faeb1fbfe015f7bad170f43a857a50a1b3d81fa93ba325d481f73f271c5a886ff8b7eef206662e19f0e9ef24861dfc608b67b8ea8a2062dc061) + elseif(VAR MATCHES "DARK") + set(PROGNAME dark) + set(SUBDIR "wix311-binaries") + set(PATHS ${DOWNLOADS}/tools/dark/${SUBDIR}) + set(URL "https://github.com/wixtoolset/wix3/releases/download/wix311rtm/wix311-binaries.zip") + set(ARCHIVE "wix311-binaries.zip") + set(HASH 74f0fa29b5991ca655e34a9d1000d47d4272e071113fada86727ee943d913177ae96dc3d435eaf494d2158f37560cd4c2c5274176946ebdb17bf2354ced1c516) + elseif(VAR MATCHES "SCONS") + set(PROGNAME scons) + set(SCONS_VERSION 4.1.0) + set(SUBDIR ${SCONS_VERSION}) + set(REQUIRED_INTERPRETER PYTHON2) + set(SCRIPTNAME "scons.py") + set(URL "https://sourceforge.net/projects/scons/files/scons-local-${SCONS_VERSION}.zip/download") + set(ARCHIVE "scons-local-${SCONS_VERSION}.zip") + set(HASH b173176ce8aca25039c64fcc68ec1b9ad31e03a926fd545e7631b3f9b374d914adffc593f505e3e7e2867b0ffe85e8deb0b39afe314edf05d02974ce5db1badb) + elseif(VAR MATCHES "SWIG") + set(SWIG_VERSION 4.0.2) + set(PROGNAME swig) + if(CMAKE_HOST_WIN32) + set(SOURCEFORGE_ARGS + REPO swig/swigwin + REF swigwin-${SWIG_VERSION} + FILENAME "swigwin-${SWIG_VERSION}.zip" + SHA512 b8f105f9b9db6acc1f6e3741990915b533cd1bc206eb9645fd6836457fd30789b7229d2e3219d8e35f2390605ade0fbca493ae162ec3b4bc4e428b57155db03d + NO_REMOVE_ONE_LEVEL + WORKING_DIRECTORY "${DOWNLOADS}/tools/swig" + ) + set(SUBDIR b8f105f9b9-f0518bc3b7/swigwin-${SWIG_VERSION}) + else() + set(APT_PACKAGE_NAME "swig") + set(BREW_PACKAGE_NAME "swig") + endif() - file(MAKE_DIRECTORY ${PROG_PATH_SUBDIR}) - if(DEFINED NOEXTRACT) - if(DEFINED _vfa_RENAME) - file(INSTALL ${ARCHIVE_PATH} DESTINATION ${PROG_PATH_SUBDIR} RENAME ${_vfa_RENAME} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + elseif(VAR MATCHES "DOXYGEN") + set(PROGNAME doxygen) + set(DOXYGEN_VERSION 1.9.1) + set(SOURCEFORGE_ARGS + REPO doxygen + REF rel-${DOXYGEN_VERSION} + FILENAME "doxygen-${DOXYGEN_VERSION}.windows.bin.zip" + SHA512 c3eeb6b9fa4eab70fb6b0864fbbf94fb8050f3fee38d117cf470921a80e3569cc1c8b0272604d6731e05f01790cfaa70e159bec5d0882fc4f2d8ae4a5d52a21b + NO_REMOVE_ONE_LEVEL + WORKING_DIRECTORY "${DOWNLOADS}/tools/doxygen" + ) + set(SUBDIR c3eeb6b9fa-76d69c6db5) + elseif(VAR MATCHES "BAZEL") + set(PROGNAME bazel) + set(BAZEL_VERSION 4.1.0) + set(_vfa_RENAME "bazel") + if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") + set(_vfa_SUPPORTED ON) + set(SUBDIR ${BAZEL_VERSION}-linux) + set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${SUBDIR}-x86_64") + set(ARCHIVE "bazel-${SUBDIR}-x86_64") + set(NOEXTRACT ON) + set(HASH 50aa0894dbeedb9189a56f17baa8cecfa55c5f9c1f93a61b9ab5e10984754a400884fc9802b4979f536778e15f813a72807396b4b47694e4c05eadb841361c69) + elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") + set(_vfa_SUPPORTED ON) + set(SUBDIR ${BAZEL_VERSION}-darwin) + set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${SUBDIR}-x86_64") + set(ARCHIVE "bazel-${SUBDIR}-x86_64") + set(NOEXTRACT ON) + set(HASH 3500560c9d49d37a1ead2d2777d673c6f1874582883e141ecd5b3991005b1b6b8aab5f255c187133d771497c2a956f5c1e0dfad04dc453525634537e65b649af) else() - file(COPY ${ARCHIVE_PATH} DESTINATION ${PROG_PATH_SUBDIR} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + set(SUBDIR ${BAZEL_VERSION}-windows) + set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${SUBDIR}-x86_64.zip") + set(ARCHIVE "bazel-${SUBDIR}-x86_64.zip") + set(HASH 3954ab54b465d62eef397767dac7ce21d06ac8ea3e1571d0e7b1f0ea8b5c2cf44eea5d252b85a63a1e1a08dbe9a219783cc23c2888673c35e2df03edfdc9e5a7) endif() - else() - get_filename_component(ARCHIVE_EXTENSION ${ARCHIVE} LAST_EXT) - string(TOLOWER "${ARCHIVE_EXTENSION}" ARCHIVE_EXTENSION) - if(ARCHIVE_EXTENSION STREQUAL ".msi") - file(TO_NATIVE_PATH "${ARCHIVE_PATH}" ARCHIVE_NATIVE_PATH) - file(TO_NATIVE_PATH "${PROG_PATH_SUBDIR}" DESTINATION_NATIVE_PATH) - vcpkg_execute_in_download_mode( - COMMAND msiexec /a ${ARCHIVE_NATIVE_PATH} /qn TARGETDIR=${DESTINATION_NATIVE_PATH} - WORKING_DIRECTORY ${DOWNLOADS} - ) - elseif("${ARCHIVE_PATH}" MATCHES ".7z.exe$") - vcpkg_find_acquire_program(7Z) - vcpkg_execute_in_download_mode( - COMMAND ${7Z} x "${ARCHIVE_PATH}" "-o${PROG_PATH_SUBDIR}" -y -bso0 -bsp0 - WORKING_DIRECTORY ${PROG_PATH_SUBDIR} - ) + elseif(VAR MATCHES "ARIA2") + set(PROGNAME aria2c) + set(ARIA2_VERSION 1.35.0) + set(PATHS ${DOWNLOADS}/tools/aria2c/aria2-${ARIA2_VERSION}-win-32bit-build1) + set(URL "https://github.com/aria2/aria2/releases/download/release-${ARIA2_VERSION}/aria2-${ARIA2_VERSION}-win-32bit-build1.zip") + set(ARCHIVE "aria2-${ARIA2_VERSION}-win-32bit-build1.zip") + set(HASH 933537cad820b1cecf43a9eeca7e1b241dd7b1c902ee942441a166f2c38845f16046321efbdfa2f83c7e9fc50c7ecc5da6fd00e0c6e2124c07d3b783aa5092a4) + elseif(VAR MATCHES "PKGCONFIG") + set(PROGNAME pkg-config) + if(ENV{PKG_CONFIG}) + debug_message(STATUS "PKG_CONFIG found in ENV! Using $ENV{PKG_CONFIG}") + set(PKGCONFIG $ENV{PKG_CONFIG} PARENT_SCOPE) + return() + elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "OpenBSD") + # As of 6.8, the OpenBSD specific pkg-config doesn't support {pcfiledir} + set(_vfa_SUPPORTED ON) + set(_vfa_RENAME "pkg-config") + set(PKGCONFIG_VERSION 0.29.2.1) + set(NOEXTRACT ON) + set(ARCHIVE "pkg-config.openbsd") + set(SUBDIR "openbsd") + set(URL "https://raw.githubusercontent.com/jgilje/pkg-config-openbsd/master/pkg-config") + set(HASH b7ec9017b445e00ae1377e36e774cf3f5194ab262595840b449832707d11e443a102675f66d8b7e8b2e2f28cebd6e256835507b1e0c69644cc9febab8285080b) + set(VERSION_CMD --version) + elseif(CMAKE_HOST_WIN32) + if(NOT EXISTS "${PKGCONFIG}") + set(VERSION 0.29.2-2) + set(LIBWINPTHREAD_VERSION git-8.0.0.5906.c9a21571-1) + vcpkg_acquire_msys( + PKGCONFIG_ROOT + NO_DEFAULT_PACKAGES + DIRECT_PACKAGES + "https://repo.msys2.org/mingw/i686/mingw-w64-i686-pkg-config-${VERSION}-any.pkg.tar.zst" + 54f8dad3b1a36a4515db47825a3214fbd2bd82f604aec72e7fb8d79068095fda3c836fb2296acd308522d6e12ce15f69e0c26dcf4eb0681fd105d057d912cdb7 + "https://repo.msys2.org/mingw/i686/mingw-w64-i686-libwinpthread-${LIBWINPTHREAD_VERSION}-any.pkg.tar.zst" + 2c3d9e6b2eee6a4c16fd69ddfadb6e2dc7f31156627d85845c523ac85e5c585d4cfa978659b1fe2ec823d44ef57bc2b92a6127618ff1a8d7505458b794f3f01c + ) + endif() + set(${VAR} "${PKGCONFIG_ROOT}/mingw32/bin/pkg-config.exe" PARENT_SCOPE) + return() else() - vcpkg_execute_in_download_mode( - COMMAND ${CMAKE_COMMAND} -E tar xzf ${ARCHIVE_PATH} - WORKING_DIRECTORY ${PROG_PATH_SUBDIR} - ) + set(BREW_PACKAGE_NAME pkg-config) + set(APT_PACKAGE_NAME pkg-config) + set(PATHS "/bin" "/usr/bin" "/usr/local/bin") endif() - endif() + else() + message(FATAL "unknown tool ${VAR} -- unable to acquire.") endif() - if(DEFINED POST_INSTALL_COMMAND) - vcpkg_execute_required_process( - ALLOW_IN_DOWNLOAD_MODE - COMMAND ${POST_INSTALL_COMMAND} - WORKING_DIRECTORY ${PROG_PATH_SUBDIR} - LOGNAME ${VAR}-tool-post-install - ) + macro(do_version_check) + if(VERSION_CMD) + vcpkg_execute_in_download_mode( + COMMAND ${${VAR}} ${VERSION_CMD} + WORKING_DIRECTORY ${VCPKG_ROOT_DIR} + OUTPUT_VARIABLE ${VAR}_VERSION_OUTPUT + ) + string(STRIP "${${VAR}_VERSION_OUTPUT}" ${VAR}_VERSION_OUTPUT) + #TODO: REGEX MATCH case for more complex cases! + if(NOT ${VAR}_VERSION_OUTPUT VERSION_GREATER_EQUAL ${VAR}_VERSION) + message(STATUS "Found ${PROGNAME}('${${VAR}_VERSION_OUTPUT}') but at least version ${${VAR}_VERSION} is required! Trying to use internal version if possible!") + unset(${VAR}) + set(${VAR} "${VAR}-NOTFOUND" CACHE INTERNAL "") + else() + message(STATUS "Found external ${PROGNAME}('${${VAR}_VERSION_OUTPUT}').") + endif() + endif() + endmacro() + + macro(do_find) + if(NOT DEFINED REQUIRED_INTERPRETER) + find_program(${VAR} ${PROGNAME} PATHS ${PATHS} NO_DEFAULT_PATH) + if(NOT ${VAR}) + find_program(${VAR} ${PROGNAME}) + if(${VAR} AND NOT ${VAR}_VERSION_CHECKED) + do_version_check() + set(${VAR}_VERSION_CHECKED ON) + elseif(${VAR}_VERSION_CHECKED) + message(FATAL_ERROR "Unable to find ${PROGNAME} with min version of ${${VAR}_VERSION}") + endif() + endif() + else() + vcpkg_find_acquire_program(${REQUIRED_INTERPRETER}) + find_file(SCRIPT_${VAR} NAMES ${SCRIPTNAME} PATHS ${PATHS} NO_DEFAULT_PATH) + if(NOT SCRIPT_${VAR}) + find_file(SCRIPT_${VAR} NAMES ${SCRIPTNAME}) + if(SCRIPT_${VAR} AND NOT ${VAR}_VERSION_CHECKED) + set(${VAR} ${${REQUIRED_INTERPRETER}} ${SCRIPT_${VAR}}) + do_version_check() + set(${VAR}_VERSION_CHECKED ON) + if(NOT ${VAR}) + unset(SCRIPT_${VAR} CACHE) + endif() + elseif(${VAR}_VERSION_CHECKED) + message(FATAL_ERROR "Unable to find ${PROGNAME} with min version of ${${VAR}_VERSION}") + endif() + endif() + if(SCRIPT_${VAR}) + set(${VAR} ${${REQUIRED_INTERPRETER}} ${SCRIPT_${VAR}}) + endif() + endif() + endmacro() + + if(NOT DEFINED PROG_PATH_SUBDIR) + set(PROG_PATH_SUBDIR "${DOWNLOADS}/tools/${PROGNAME}/${SUBDIR}") endif() - unset(${VAR} CACHE) + if(DEFINED SUBDIR) + list(APPEND PATHS ${PROG_PATH_SUBDIR}) + endif() + if("${PROG_PATH_SUBDIR}" MATCHES [[^(.*)[/\\]$]]) + # remove trailing slash, which may turn into a trailing `\` which CMake _does not like_ + set(PROG_PATH_SUBDIR "${CMAKE_MATCH_1}") + endif() + do_find() if(NOT ${VAR}) - message(FATAL_ERROR "Unable to find ${VAR}") + if(NOT CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows" AND NOT _vfa_SUPPORTED) + set(EXAMPLE ".") + if(DEFINED BREW_PACKAGE_NAME AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") + set(EXAMPLE ":\n brew install ${BREW_PACKAGE_NAME}") + elseif(DEFINED APT_PACKAGE_NAME AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") + set(EXAMPLE ":\n sudo apt-get install ${APT_PACKAGE_NAME}") + endif() + message(FATAL_ERROR "Could not find ${PROGNAME}. Please install it via your package manager${EXAMPLE}") + endif() + + if(DEFINED SOURCEFORGE_ARGS) + # Locally change editable to suppress re-extraction each time + set(_VCPKG_EDITABLE 1) + vcpkg_from_sourceforge(OUT_SOURCE_PATH SFPATH ${SOURCEFORGE_ARGS}) + unset(_VCPKG_EDITABLE) + else() + vcpkg_download_distfile(ARCHIVE_PATH + URLS ${URL} + SHA512 ${HASH} + FILENAME ${ARCHIVE} + ) + + file(MAKE_DIRECTORY ${PROG_PATH_SUBDIR}) + if(DEFINED NOEXTRACT) + if(DEFINED _vfa_RENAME) + file(INSTALL ${ARCHIVE_PATH} DESTINATION ${PROG_PATH_SUBDIR} RENAME ${_vfa_RENAME} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + else() + file(COPY ${ARCHIVE_PATH} DESTINATION ${PROG_PATH_SUBDIR} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + endif() + else() + get_filename_component(ARCHIVE_EXTENSION ${ARCHIVE} LAST_EXT) + string(TOLOWER "${ARCHIVE_EXTENSION}" ARCHIVE_EXTENSION) + if(ARCHIVE_EXTENSION STREQUAL ".msi") + file(TO_NATIVE_PATH "${ARCHIVE_PATH}" ARCHIVE_NATIVE_PATH) + file(TO_NATIVE_PATH "${PROG_PATH_SUBDIR}" DESTINATION_NATIVE_PATH) + vcpkg_execute_in_download_mode( + COMMAND msiexec /a ${ARCHIVE_NATIVE_PATH} /qn TARGETDIR=${DESTINATION_NATIVE_PATH} + WORKING_DIRECTORY ${DOWNLOADS} + ) + elseif("${ARCHIVE_PATH}" MATCHES ".7z.exe$") + vcpkg_find_acquire_program(7Z) + vcpkg_execute_in_download_mode( + COMMAND ${7Z} x "${ARCHIVE_PATH}" "-o${PROG_PATH_SUBDIR}" -y -bso0 -bsp0 + WORKING_DIRECTORY ${PROG_PATH_SUBDIR} + ) + else() + vcpkg_execute_in_download_mode( + COMMAND ${CMAKE_COMMAND} -E tar xzf ${ARCHIVE_PATH} + WORKING_DIRECTORY ${PROG_PATH_SUBDIR} + ) + endif() + endif() + endif() + + if(DEFINED POST_INSTALL_COMMAND) + vcpkg_execute_required_process( + ALLOW_IN_DOWNLOAD_MODE + COMMAND ${POST_INSTALL_COMMAND} + WORKING_DIRECTORY ${PROG_PATH_SUBDIR} + LOGNAME ${VAR}-tool-post-install + ) + endif() + unset(${VAR} CACHE) + do_find() + if(NOT ${VAR}) + message(FATAL_ERROR "Unable to find ${VAR}") + endif() endif() - endif() - set(${VAR} "${${VAR}}" PARENT_SCOPE) + set(${VAR} "${${VAR}}" PARENT_SCOPE) endfunction() From 468ac6603d724db7d23c348cbd33c5c1d24668df Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Fri, 29 Oct 2021 10:52:17 -0700 Subject: [PATCH 02/17] remove DEFINED in favor of `STREQUAL ""` --- .../cmake/vcpkg_find_acquire_program.cmake | 438 +++++++++--------- 1 file changed, 219 insertions(+), 219 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index ed41007d87a461..637ebca2a67da8 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -5,10 +5,10 @@ Download or find a well-known tool. ## Usage ```cmake -vcpkg_find_acquire_program() +vcpkg_find_acquire_program() ``` ## Parameters -### VAR +### program 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 @@ -47,26 +47,25 @@ Note that msys2 has a dedicated helper function: [`vcpkg_acquire_msys`](vcpkg_ac * [qt5](https://github.com/Microsoft/vcpkg/blob/master/ports/qt5/portfile.cmake) #]===] -function(vcpkg_find_acquire_program VAR) - set(EXPANDED_VAR ${${VAR}}) - if(EXPANDED_VAR) +function(vcpkg_find_acquire_program program) + if("${${program}}") return() endif() - unset(NOEXTRACT) - unset(_vfa_RENAME) - unset(SUBDIR) - unset(PROG_PATH_SUBDIR) - unset(REQUIRED_INTERPRETER) - unset(_vfa_SUPPORTED) - unset(POST_INSTALL_COMMAND) - unset(PATHS) + set(raw_executable "ON") + set(program_name "") + set(rename_binary_to "") + set(tool_subdirectory "") + set(interpreter "") + set(supported_on_unix "") + set(post_install_command "") + set(paths_to_search "") - if(VAR MATCHES "PERL") - set(PROGNAME perl) + if(program MATCHES "PERL") + set(program_name perl) set(PERL_VERSION 5.32.1.1) - set(SUBDIR ${PERL_VERSION}) - set(PATHS ${DOWNLOADS}/tools/perl/${SUBDIR}/perl/bin) + set(tool_subdirectory ${PERL_VERSION}) + set(paths_to_search ${DOWNLOADS}/tools/perl/${tool_subdirectory}/perl/bin) set(BREW_PACKAGE_NAME "perl") set(APT_PACKAGE_NAME "perl") set(URL @@ -74,10 +73,10 @@ function(vcpkg_find_acquire_program VAR) ) set(ARCHIVE "strawberry-perl-${PERL_VERSION}-32bit.zip") set(HASH 936381254fea2e596db6a16c23b08ced25c4081fda484e1b8c4356755016e4b956bd00f3d2ee651d5f41a7695e9998f6c1ac3f4a237212b9c55aca8c5fea14e9) - elseif(VAR MATCHES "NASM") - set(PROGNAME nasm) + elseif(program MATCHES "NASM") + set(program_name nasm) set(NASM_VERSION 2.15.05) - set(PATHS ${DOWNLOADS}/tools/nasm/nasm-${NASM_VERSION}) + set(paths_to_search ${DOWNLOADS}/tools/nasm/nasm-${NASM_VERSION}) set(BREW_PACKAGE_NAME "nasm") set(APT_PACKAGE_NAME "nasm") set(URL @@ -86,44 +85,44 @@ function(vcpkg_find_acquire_program VAR) ) set(ARCHIVE "nasm-${NASM_VERSION}-win32.zip") set(HASH 9412b8caa07e15eac8f500f6f8fab9f038d95dc25e0124b08a80645607cf5761225f98546b52eac7b894420d64f26c3cbf22c19cd286bbe583f7c964256c97ed) - elseif(VAR MATCHES "YASM") - set(PROGNAME yasm) + elseif(program MATCHES "YASM") + set(program_name yasm) set(YASM_VERSION 1.3.0.6.g1962) - set(SUBDIR 1.3.0.6) + set(tool_subdirectory 1.3.0.6) set(BREW_PACKAGE_NAME "yasm") set(APT_PACKAGE_NAME "yasm") set(URL "https://www.tortall.net/projects/yasm/snapshots/v${YASM_VERSION}/yasm-${YASM_VERSION}.exe") set(ARCHIVE "yasm-${YASM_VERSION}.exe") - set(_vfa_RENAME "yasm.exe") - set(NOEXTRACT ON) + set(rename_binary_to "yasm.exe") + set(raw_executable ON) set(HASH c1945669d983b632a10c5ff31e86d6ecbff143c3d8b2c433c0d3d18f84356d2b351f71ac05fd44e5403651b00c31db0d14615d7f9a6ecce5750438d37105c55b) - elseif(VAR MATCHES "GIT") - set(PROGNAME git) + elseif(program MATCHES "GIT") + set(program_name git) if(CMAKE_HOST_WIN32) set(GIT_BASE_VERSION 2.32.0) set(GIT_VERSION 2.32.0.2) - set(SUBDIR "git-${GIT_VERSION}-2-windows") + set(tool_subdirectory "git-${GIT_VERSION}-2-windows") set(URL "https://github.com/git-for-windows/git/releases/download/v${GIT_BASE_VERSION}.windows.2/PortableGit-${GIT_VERSION}-32-bit.7z.exe") set(ARCHIVE "PortableGit-${GIT_VERSION}-32-bit.7z.exe") set(HASH 867d8534972cbaf7a4224e25a14d484f8d17ef186f8d79e9a758afb90cf69541375cb7615a39702311f4809cb8371ef85c2b1a15bfffe9e48f0e597ac011b348) - set(PATHS - "${DOWNLOADS}/tools/${SUBDIR}/mingw32/bin" - "${DOWNLOADS}/tools/git/${SUBDIR}/mingw32/bin") + set(paths_to_search + "${DOWNLOADS}/tools/${tool_subdirectory}/mingw32/bin" + "${DOWNLOADS}/tools/git/${tool_subdirectory}/mingw32/bin") else() set(BREW_PACKAGE_NAME "git") set(APT_PACKAGE_NAME "git") endif() - elseif(VAR MATCHES "GN") - set(PROGNAME gn) - set(_vfa_RENAME "gn") + elseif(program MATCHES "GN") + set(program_name gn) + set(rename_binary_to "gn") set(CIPD_DOWNLOAD_GN "https://chrome-infra-packages.appspot.com/dl/gn/gn") if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") - set(_vfa_SUPPORTED ON) + set(supported_on_unix ON) set(GN_VERSION "xus7xtaPhpv5vCmKFOnsBVoB-PKmhZvRsSTjbQAuF0MC") set(GN_PLATFORM "linux-amd64") set(HASH "871e75d7f3597b74fb99e36bb41fe5a9f8ce8a4d9f167f4729fc6e444807a59f35ec8aca70c2274a99c79d70a1108272be1ad991678a8ceb39e30f77abb13135") elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") - set(_vfa_SUPPORTED ON) + set(supported_on_unix ON) set(GN_VERSION "qhxILDNcJ2H44HfHmfiU-XIY3E_SIXvFqLd2wvbIgOoC") set(GN_PLATFORM "mac-amd64") set(HASH "03ee64cb15bae7fceb412900d470601090bce147cfd45eb9b46683ac1a5dca848465a5d74c55a47df7f0e334d708151249a6d37bb021de74dd48b97ed4a07937") @@ -132,142 +131,141 @@ function(vcpkg_find_acquire_program VAR) set(GN_PLATFORM "windows-amd64") set(HASH "263e02bd79eee0cb7b664831b7898565c5656a046328d8f187ef7ae2a4d766991d477b190c9b425fcc960ab76f381cd3e396afb85cba7408ca9e74eb32c175db") endif() - set(SUBDIR "${GN_VERSION}") + set(tool_subdirectory "${GN_VERSION}") set(URL "${CIPD_DOWNLOAD_GN}/${GN_PLATFORM}/+/${GN_VERSION}") set(ARCHIVE "gn-${GN_PLATFORM}.zip") - elseif(VAR MATCHES "GO") - set(PROGNAME go) - set(SUBDIR 1.16.6.windows-386) - set(PATHS ${DOWNLOADS}/tools/go/${SUBDIR}/go/bin) + elseif(program MATCHES "GO") + set(program_name go) + set(tool_subdirectory 1.16.6.windows-386) + set(paths_to_search ${DOWNLOADS}/tools/go/${tool_subdirectory}/go/bin) set(BREW_PACKAGE_NAME "go") set(APT_PACKAGE_NAME "golang-go") - set(URL "https://dl.google.com/go/go${SUBDIR}.zip") - set(ARCHIVE "go${SUBDIR}.zip") + set(URL "https://dl.google.com/go/go${tool_subdirectory}.zip") + set(ARCHIVE "go${tool_subdirectory}.zip") set(HASH 2a1e539ed628c0cca5935d24d22cf3a7165f5c80e12a4003ac184deae6a6d0aa31f582f3e8257b0730adfc09aeec3a0e62f4732e658c312d5382170bcd8c94d8) - elseif(VAR MATCHES "PYTHON3") + elseif(program MATCHES "PYTHON3") if(CMAKE_HOST_WIN32) - set(PROGNAME python) + set(program_name python) set(PYTHON_VERSION 3.10.0) if (VCPKG_TARGET_ARCHITECTURE STREQUAL x86) - set(SUBDIR "python-${PYTHON_VERSION}-x86") + set(tool_subdirectory "python-${PYTHON_VERSION}-x86") set(URL "https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}-embed-win32.zip") set(ARCHIVE "python-${PYTHON_VERSION}-embed-win32.zip") set(HASH 0b007bfa02cdd48b3c260986493fa124a6b9d794da6eba2b4fad0d779fd655e9ae4e16daf5f02ff5b30a17abcfc1499bc6bee394c0f8abe933f2d4fe702af3cd) else() - set(SUBDIR "python-${PYTHON_VERSION}-x64") + set(tool_subdirectory "python-${PYTHON_VERSION}-x64") set(URL "https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}-embed-amd64.zip") set(ARCHIVE "python-${PYTHON_VERSION}-embed-amd64.zip") set(HASH 23d81d007698383d8dc088da532dcb86c6ceca7eb78ba5688fc2e18ee7f33f53a5632282873762293b8164556dfb15870f8ffb7abd368faba0a3d8d5d5bc6297) endif() - set(PATHS ${DOWNLOADS}/tools/python/${SUBDIR}) - set(POST_INSTALL_COMMAND ${CMAKE_COMMAND} -E rm python310._pth) + set(paths_to_search ${DOWNLOADS}/tools/python/${tool_subdirectory}) + set(post_install_command ${CMAKE_COMMAND} -E rm python310._pth) else() - set(PROGNAME python3) + set(program_name python3) set(BREW_PACKAGE_NAME "python") set(APT_PACKAGE_NAME "python3") endif() - elseif(VAR MATCHES "PYTHON2") + elseif(program MATCHES "PYTHON2") if(CMAKE_HOST_WIN32) - set(PROGNAME python) + set(program_name python) set(PYTHON_VERSION 2.7.18) if (VCPKG_TARGET_ARCHITECTURE STREQUAL x86) - set(SUBDIR "python-${PYTHON_VERSION}-x86") + set(tool_subdirectory "python-${PYTHON_VERSION}-x86") set(URL "https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}.msi") set(ARCHIVE "python-${PYTHON_VERSION}.msi") set(HASH 2c112733c777ddbf189b0a54047a9d5851ebce0564cc38b9687d79ce6c7a09006109dbad8627fb1a60c3ad55e261db850d9dfa454af0533b460b2afc316fe115) else() - set(SUBDIR "python-${PYTHON_VERSION}-x64") + set(tool_subdirectory "python-${PYTHON_VERSION}-x64") set(URL "https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}.amd64.msi") set(ARCHIVE "python-${PYTHON_VERSION}.amd64.msi") set(HASH 6a81a413b80fd39893e7444fd47efa455d240cbb77a456c9d12f7cf64962b38c08cfa244cd9c50a65947c40f936c6c8c5782f7236d7b92445ab3dd01e82af23e) endif() - set(PATHS ${DOWNLOADS}/tools/python/${SUBDIR}) + set(paths_to_search ${DOWNLOADS}/tools/python/${tool_subdirectory}) elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") # macOS includes Python 2.7 built-in as `python` - set(PROGNAME python) + set(program_name python) set(BREW_PACKAGE_NAME "python2") else() - set(PROGNAME python2) + set(program_name python2) set(APT_PACKAGE_NAME "python") endif() - elseif(VAR MATCHES "RUBY") - set(PROGNAME "ruby") + elseif(program MATCHES "RUBY") + set(program_name "ruby") set(RUBY_VERSION 2.7.4-1) - set(PATHS ${DOWNLOADS}/tools/ruby/rubyinstaller-${RUBY_VERSION}-x86/bin) + set(paths_to_search ${DOWNLOADS}/tools/ruby/rubyinstaller-${RUBY_VERSION}-x86/bin) set(URL https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-${RUBY_VERSION}/rubyinstaller-${RUBY_VERSION}-x86.7z) set(ARCHIVE rubyinstaller-${RUBY_VERSION}-x86.7z) set(HASH 4bf459c987b407bdda328c52d95060bf6ad48fc3e5ed5f64d4b205c5b4153c7a00cb6f9da6c0bcd5f2e001e9dc3dda0b72269ec4afdeffd658b93c085cd1d859) - elseif(VAR MATCHES "JOM") - set(PROGNAME jom) - set(SUBDIR "jom-1.1.3") - set(PATHS ${DOWNLOADS}/tools/jom/${SUBDIR}) + elseif(program MATCHES "JOM") + set(program_name jom) + set(tool_subdirectory "jom-1.1.3") + set(paths_to_search ${DOWNLOADS}/tools/jom/${tool_subdirectory}) set(URL "https://download.qt.io/official_releases/jom/jom_1_1_3.zip" "https://mirrors.ocf.berkeley.edu/qt/official_releases/jom/jom_1_1_3.zip" ) set(ARCHIVE "jom_1_1_3.zip") set(HASH 5b158ead86be4eb3a6780928d9163f8562372f30bde051d8c281d81027b766119a6e9241166b91de0aa6146836cea77e5121290e62e31b7a959407840fc57b33) - elseif(VAR MATCHES "7Z") - set(PROGNAME 7z) - set(PATHS "${DOWNLOADS}/tools/7z/Files/7-Zip") + elseif(program MATCHES "7Z") + set(program_name 7z) + set(paths_to_search "${DOWNLOADS}/tools/7z/Files/7-Zip") set(URL "https://7-zip.org/a/7z1900.msi") set(ARCHIVE "7z1900.msi") set(HASH f73b04e2d9f29d4393fde572dcf3c3f0f6fa27e747e5df292294ab7536ae24c239bf917689d71eb10cc49f6b9a4ace26d7c122ee887d93cc935f268c404e9067) - elseif(VAR MATCHES "NINJA") - set(PROGNAME ninja) + elseif(program MATCHES "NINJA") + set(program_name ninja) set(NINJA_VERSION 1.10.2) - set(_vfa_SUPPORTED ON) + set(supported_on_unix ON) if(CMAKE_HOST_WIN32) set(ARCHIVE "ninja-win-${NINJA_VERSION}.zip") - set(SUBDIR "${NINJA_VERSION}-windows") + set(tool_subdirectory "${NINJA_VERSION}-windows") set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-win.zip") set(HASH 6004140d92e86afbb17b49c49037ccd0786ce238f340f7d0e62b4b0c29ed0d6ad0bab11feda2094ae849c387d70d63504393714ed0a1f4d3a1f155af7a4f1ba3) elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") set(ARCHIVE "ninja-mac-${NINJA_VERSION}.zip") set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-mac.zip") - set(SUBDIR "${NINJA_VERSION}-osx") - set(PATHS "${DOWNLOADS}/tools/ninja-${NINJA_VERSION}-osx") + set(tool_subdirectory "${NINJA_VERSION}-osx") + set(paths_to_search "${DOWNLOADS}/tools/ninja-${NINJA_VERSION}-osx") set(HASH bcd12f6a3337591306d1b99a7a25a6933779ba68db79f17c1d3087d7b6308d245daac08df99087ff6be8dc7dd0dcdbb3a50839a144745fa719502b3a7a07260b) elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "FreeBSD") - set(PATHS "${DOWNLOADS}/tools/${SUBDIR}-freebsd") - set(_vfa_SUPPORTED OFF) + set(paths_to_search "${DOWNLOADS}/tools/${tool_subdirectory}-freebsd") + set(supported_on_unix OFF) else() set(ARCHIVE "ninja-linux-${NINJA_VERSION}.zip") set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-linux.zip") - set(SUBDIR "${NINJA_VERSION}-linux") - set(PATHS "${DOWNLOADS}/tools/ninja-${NINJA_VERSION}-linux") + set(tool_subdirectory "${NINJA_VERSION}-linux") + set(paths_to_search "${DOWNLOADS}/tools/ninja-${NINJA_VERSION}-linux") set(HASH 93e802e9c17fb59636cddde4bad1ddaadad624f4ecfee00d5c78790330a4e9d433180e795718cda27da57215ce643c3929cf72c85337ee019d868c56f2deeef3) endif() set(VERSION_CMD --version) - elseif(VAR MATCHES "NUGET") - set(PROGNAME nuget) - set(SUBDIR "5.11.0") - set(PATHS "${DOWNLOADS}/tools/nuget-${SUBDIR}-windows") + elseif(program MATCHES "NUGET") + set(program_name nuget) + set(tool_subdirectory "5.11.0") + set(paths_to_search "${DOWNLOADS}/tools/nuget-${tool_subdirectory}-windows") set(BREW_PACKAGE_NAME "nuget") - set(URL "https://dist.nuget.org/win-x86-commandline/v5.10.0/nuget.exe") set(URL "https://dist.nuget.org/win-x86-commandline/v5.11.0/nuget.exe") - set(_vfa_RENAME "nuget.exe") + set(rename_binary_to "nuget.exe") set(ARCHIVE "nuget.5.11.0.exe") - set(NOEXTRACT ON) + set(raw_executable ON) set(HASH 06a337c9404dec392709834ef2cdbdce611e104b510ef40201849595d46d242151749aef65bc2d7ce5ade9ebfda83b64c03ce14c8f35ca9957a17a8c02b8c4b7) - elseif(VAR MATCHES "MESON") + elseif(program MATCHES "MESON") set(MESON_VERSION 0.58.1) - set(PROGNAME meson) - set(REQUIRED_INTERPRETER PYTHON3) + set(program_name meson) + set(interpreter PYTHON3) set(APT_PACKAGE_NAME "meson") set(BREW_PACKAGE_NAME "meson") set(SCRIPTNAME meson meson.py) set(REF aeda7f249c4a5dbbecc52e44f382246a2377b5b0) - set(PATHS ${DOWNLOADS}/tools/meson/meson-${REF}) + set(paths_to_search ${DOWNLOADS}/tools/meson/meson-${REF}) set(URL "https://github.com/mesonbuild/meson/archive/${REF}.tar.gz") set(ARCHIVE "meson-${REF}.tar.gz") - #set(PATHS ${DOWNLOADS}/tools/meson/meson-${MESON_VERSION}) + #set(paths_to_search ${DOWNLOADS}/tools/meson/meson-${MESON_VERSION}) #set(URL "https://github.com/mesonbuild/meson/releases/download/${MESON_VERSION}/meson-${MESON_VERSION}.tar.gz") #set(ARCHIVE "meson-${MESON_VERSION}.tar.gz") set(HASH 18a012a45274dbb4582e99fd69d920f38831e788d9860f9553c64847bedb1c2010ae0b5c0ef4a4350c03f5e0f95aaa0395378e1208109b59640c1a70b1e202d2) - set(_vfa_SUPPORTED ON) + set(supported_on_unix ON) set(VERSION_CMD --version) - elseif(VAR MATCHES "FLEX" OR VAR MATCHES "BISON") + elseif(program MATCHES "FLEX" OR program MATCHES "BISON") if(CMAKE_HOST_WIN32) set(SOURCEFORGE_ARGS REPO winflexbison @@ -276,40 +274,40 @@ function(vcpkg_find_acquire_program VAR) NO_REMOVE_ONE_LEVEL WORKING_DIRECTORY "${DOWNLOADS}/tools/winflexbison" ) - if(VAR MATCHES "FLEX") - set(PROGNAME win_flex) + if(program MATCHES "FLEX") + set(program_name win_flex) else() - set(PROGNAME win_bison) + set(program_name win_bison) endif() - set(PATHS ${DOWNLOADS}/tools/winflexbison/0a14154bff-a8cf65db07) - if(NOT EXISTS "${PATHS}/data/m4sugar/m4sugar.m4") - file(REMOVE_RECURSE "${PATHS}") + set(paths_to_search ${DOWNLOADS}/tools/winflexbison/0a14154bff-a8cf65db07) + if(NOT EXISTS "${paths_to_search}/data/m4sugar/m4sugar.m4") + file(REMOVE_RECURSE "${paths_to_search}") endif() - elseif(VAR MATCHES "FLEX") - set(PROGNAME flex) + elseif(program MATCHES "FLEX") + set(program_name flex) set(APT_PACKAGE_NAME flex) set(BREW_PACKAGE_NAME flex) else() - set(PROGNAME bison) + set(program_name bison) set(APT_PACKAGE_NAME bison) set(BREW_PACKAGE_NAME bison) if (APPLE) - set(PATHS /usr/local/opt/bison/bin) + set(paths_to_search /usr/local/opt/bison/bin) endif() endif() - elseif(VAR MATCHES "CLANG") - set(PROGNAME clang) - set(SUBDIR "clang-12.0.0") + elseif(program MATCHES "CLANG") + set(program_name clang) + set(tool_subdirectory "clang-12.0.0") set(LLVM_VERSION 12.0.0) if(CMAKE_HOST_WIN32) - set(PATHS + set(paths_to_search # Support LLVM in Visual Studio 2019 "$ENV{LLVMInstallDir}/x64/bin" "$ENV{LLVMInstallDir}/bin" "$ENV{VCINSTALLDIR}/Tools/Llvm/x64/bin" "$ENV{VCINSTALLDIR}/Tools/Llvm/bin" - "${DOWNLOADS}/tools/${SUBDIR}-windows/bin" - "${DOWNLOADS}/tools/clang/${SUBDIR}/bin") + "${DOWNLOADS}/tools/${tool_subdirectory}-windows/bin" + "${DOWNLOADS}/tools/clang/${tool_subdirectory}/bin") if(DEFINED ENV{PROCESSOR_ARCHITEW6432}) set(HOST_ARCH_ $ENV{PROCESSOR_ARCHITEW6432}) @@ -329,43 +327,43 @@ function(vcpkg_find_acquire_program VAR) endif() set(BREW_PACKAGE_NAME "llvm") set(APT_PACKAGE_NAME "clang") - elseif(VAR MATCHES "GPERF") - set(PROGNAME gperf) + elseif(program MATCHES "GPERF") + set(program_name gperf) set(GPERF_VERSION 3.0.1) - set(PATHS ${DOWNLOADS}/tools/gperf/bin) + set(paths_to_search ${DOWNLOADS}/tools/gperf/bin) set(URL "https://sourceforge.net/projects/gnuwin32/files/gperf/${GPERF_VERSION}/gperf-${GPERF_VERSION}-bin.zip/download") set(ARCHIVE "gperf-${GPERF_VERSION}-bin.zip") set(HASH 3f2d3418304390ecd729b85f65240a9e4d204b218345f82ea466ca3d7467789f43d0d2129fcffc18eaad3513f49963e79775b10cc223979540fa2e502fe7d4d9) - elseif(VAR MATCHES "GASPREPROCESSOR") - set(NOEXTRACT true) - set(PROGNAME gas-preprocessor) - set(SUBDIR "4daa6115") - set(REQUIRED_INTERPRETER PERL) + elseif(program MATCHES "GASPREPROCESSOR") + set(raw_executable true) + set(program_name gas-preprocessor) + set(tool_subdirectory "4daa6115") + set(interpreter PERL) set(SCRIPTNAME "gas-preprocessor.pl") - set(PATHS ${DOWNLOADS}/tools/gas-preprocessor/${SUBDIR}) - set(_vfa_RENAME "gas-preprocessor.pl") + set(paths_to_search ${DOWNLOADS}/tools/gas-preprocessor/${tool_subdirectory}) + set(rename_binary_to "gas-preprocessor.pl") set(URL "https://raw.githubusercontent.com/FFmpeg/gas-preprocessor/4daa611556a0558dfe537b4f7ad80f7e50a079c1/gas-preprocessor.pl") - set(ARCHIVE "gas-preprocessor-${SUBDIR}.pl") + set(ARCHIVE "gas-preprocessor-${tool_subdirectory}.pl") set(HASH 2737ba3c1cf85faeb1fbfe015f7bad170f43a857a50a1b3d81fa93ba325d481f73f271c5a886ff8b7eef206662e19f0e9ef24861dfc608b67b8ea8a2062dc061) - elseif(VAR MATCHES "DARK") - set(PROGNAME dark) - set(SUBDIR "wix311-binaries") - set(PATHS ${DOWNLOADS}/tools/dark/${SUBDIR}) + elseif(program MATCHES "DARK") + set(program_name dark) + set(tool_subdirectory "wix311-binaries") + set(paths_to_search ${DOWNLOADS}/tools/dark/${tool_subdirectory}) set(URL "https://github.com/wixtoolset/wix3/releases/download/wix311rtm/wix311-binaries.zip") set(ARCHIVE "wix311-binaries.zip") set(HASH 74f0fa29b5991ca655e34a9d1000d47d4272e071113fada86727ee943d913177ae96dc3d435eaf494d2158f37560cd4c2c5274176946ebdb17bf2354ced1c516) - elseif(VAR MATCHES "SCONS") - set(PROGNAME scons) + elseif(program MATCHES "SCONS") + set(program_name scons) set(SCONS_VERSION 4.1.0) - set(SUBDIR ${SCONS_VERSION}) - set(REQUIRED_INTERPRETER PYTHON2) + set(tool_subdirectory ${SCONS_VERSION}) + set(interpreter PYTHON2) set(SCRIPTNAME "scons.py") set(URL "https://sourceforge.net/projects/scons/files/scons-local-${SCONS_VERSION}.zip/download") set(ARCHIVE "scons-local-${SCONS_VERSION}.zip") set(HASH b173176ce8aca25039c64fcc68ec1b9ad31e03a926fd545e7631b3f9b374d914adffc593f505e3e7e2867b0ffe85e8deb0b39afe314edf05d02974ce5db1badb) - elseif(VAR MATCHES "SWIG") + elseif(program MATCHES "SWIG") set(SWIG_VERSION 4.0.2) - set(PROGNAME swig) + set(program_name swig) if(CMAKE_HOST_WIN32) set(SOURCEFORGE_ARGS REPO swig/swigwin @@ -375,14 +373,14 @@ function(vcpkg_find_acquire_program VAR) NO_REMOVE_ONE_LEVEL WORKING_DIRECTORY "${DOWNLOADS}/tools/swig" ) - set(SUBDIR b8f105f9b9-f0518bc3b7/swigwin-${SWIG_VERSION}) + set(tool_subdirectory b8f105f9b9-f0518bc3b7/swigwin-${SWIG_VERSION}) else() set(APT_PACKAGE_NAME "swig") set(BREW_PACKAGE_NAME "swig") endif() - elseif(VAR MATCHES "DOXYGEN") - set(PROGNAME doxygen) + elseif(program MATCHES "DOXYGEN") + set(program_name doxygen) set(DOXYGEN_VERSION 1.9.1) set(SOURCEFORGE_ARGS REPO doxygen @@ -392,52 +390,52 @@ function(vcpkg_find_acquire_program VAR) NO_REMOVE_ONE_LEVEL WORKING_DIRECTORY "${DOWNLOADS}/tools/doxygen" ) - set(SUBDIR c3eeb6b9fa-76d69c6db5) - elseif(VAR MATCHES "BAZEL") - set(PROGNAME bazel) + set(tool_subdirectory c3eeb6b9fa-76d69c6db5) + elseif(program MATCHES "BAZEL") + set(program_name bazel) set(BAZEL_VERSION 4.1.0) - set(_vfa_RENAME "bazel") + set(rename_binary_to "bazel") if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") - set(_vfa_SUPPORTED ON) - set(SUBDIR ${BAZEL_VERSION}-linux) - set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${SUBDIR}-x86_64") - set(ARCHIVE "bazel-${SUBDIR}-x86_64") - set(NOEXTRACT ON) + set(supported_on_unix ON) + set(tool_subdirectory ${BAZEL_VERSION}-linux) + set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${tool_subdirectory}-x86_64") + set(ARCHIVE "bazel-${tool_subdirectory}-x86_64") + set(raw_executable ON) set(HASH 50aa0894dbeedb9189a56f17baa8cecfa55c5f9c1f93a61b9ab5e10984754a400884fc9802b4979f536778e15f813a72807396b4b47694e4c05eadb841361c69) elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") - set(_vfa_SUPPORTED ON) - set(SUBDIR ${BAZEL_VERSION}-darwin) - set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${SUBDIR}-x86_64") - set(ARCHIVE "bazel-${SUBDIR}-x86_64") - set(NOEXTRACT ON) + set(supported_on_unix ON) + set(tool_subdirectory ${BAZEL_VERSION}-darwin) + set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${tool_subdirectory}-x86_64") + set(ARCHIVE "bazel-${tool_subdirectory}-x86_64") + set(raw_executable ON) set(HASH 3500560c9d49d37a1ead2d2777d673c6f1874582883e141ecd5b3991005b1b6b8aab5f255c187133d771497c2a956f5c1e0dfad04dc453525634537e65b649af) else() - set(SUBDIR ${BAZEL_VERSION}-windows) - set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${SUBDIR}-x86_64.zip") - set(ARCHIVE "bazel-${SUBDIR}-x86_64.zip") + set(tool_subdirectory ${BAZEL_VERSION}-windows) + set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${tool_subdirectory}-x86_64.zip") + set(ARCHIVE "bazel-${tool_subdirectory}-x86_64.zip") set(HASH 3954ab54b465d62eef397767dac7ce21d06ac8ea3e1571d0e7b1f0ea8b5c2cf44eea5d252b85a63a1e1a08dbe9a219783cc23c2888673c35e2df03edfdc9e5a7) endif() - elseif(VAR MATCHES "ARIA2") - set(PROGNAME aria2c) + elseif(program MATCHES "ARIA2") + set(program_name aria2c) set(ARIA2_VERSION 1.35.0) - set(PATHS ${DOWNLOADS}/tools/aria2c/aria2-${ARIA2_VERSION}-win-32bit-build1) + set(paths_to_search ${DOWNLOADS}/tools/aria2c/aria2-${ARIA2_VERSION}-win-32bit-build1) set(URL "https://github.com/aria2/aria2/releases/download/release-${ARIA2_VERSION}/aria2-${ARIA2_VERSION}-win-32bit-build1.zip") set(ARCHIVE "aria2-${ARIA2_VERSION}-win-32bit-build1.zip") set(HASH 933537cad820b1cecf43a9eeca7e1b241dd7b1c902ee942441a166f2c38845f16046321efbdfa2f83c7e9fc50c7ecc5da6fd00e0c6e2124c07d3b783aa5092a4) - elseif(VAR MATCHES "PKGCONFIG") - set(PROGNAME pkg-config) + elseif(program MATCHES "PKGCONFIG") + set(program_name pkg-config) if(ENV{PKG_CONFIG}) debug_message(STATUS "PKG_CONFIG found in ENV! Using $ENV{PKG_CONFIG}") set(PKGCONFIG $ENV{PKG_CONFIG} PARENT_SCOPE) return() elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "OpenBSD") # As of 6.8, the OpenBSD specific pkg-config doesn't support {pcfiledir} - set(_vfa_SUPPORTED ON) - set(_vfa_RENAME "pkg-config") + set(supported_on_unix ON) + set(rename_binary_to "pkg-config") set(PKGCONFIG_VERSION 0.29.2.1) - set(NOEXTRACT ON) + set(raw_executable ON) set(ARCHIVE "pkg-config.openbsd") - set(SUBDIR "openbsd") + set(tool_subdirectory "openbsd") set(URL "https://raw.githubusercontent.com/jgilje/pkg-config-openbsd/master/pkg-config") set(HASH b7ec9017b445e00ae1377e36e774cf3f5194ab262595840b449832707d11e443a102675f66d8b7e8b2e2f28cebd6e256835507b1e0c69644cc9febab8285080b) set(VERSION_CMD --version) @@ -455,94 +453,96 @@ function(vcpkg_find_acquire_program VAR) 2c3d9e6b2eee6a4c16fd69ddfadb6e2dc7f31156627d85845c523ac85e5c585d4cfa978659b1fe2ec823d44ef57bc2b92a6127618ff1a8d7505458b794f3f01c ) endif() - set(${VAR} "${PKGCONFIG_ROOT}/mingw32/bin/pkg-config.exe" PARENT_SCOPE) + set(${program} "${PKGCONFIG_ROOT}/mingw32/bin/pkg-config.exe" PARENT_SCOPE) return() else() set(BREW_PACKAGE_NAME pkg-config) set(APT_PACKAGE_NAME pkg-config) - set(PATHS "/bin" "/usr/bin" "/usr/local/bin") + set(paths_to_search "/bin" "/usr/bin" "/usr/local/bin") endif() else() - message(FATAL "unknown tool ${VAR} -- unable to acquire.") + message(FATAL "unknown tool ${program} -- unable to acquire.") endif() macro(do_version_check) if(VERSION_CMD) vcpkg_execute_in_download_mode( - COMMAND ${${VAR}} ${VERSION_CMD} + COMMAND ${${program}} ${VERSION_CMD} WORKING_DIRECTORY ${VCPKG_ROOT_DIR} - OUTPUT_VARIABLE ${VAR}_VERSION_OUTPUT + OUTPUT_VARIABLE ${program}_VERSION_OUTPUT ) - string(STRIP "${${VAR}_VERSION_OUTPUT}" ${VAR}_VERSION_OUTPUT) + string(STRIP "${${program}_VERSION_OUTPUT}" ${program}_VERSION_OUTPUT) #TODO: REGEX MATCH case for more complex cases! - if(NOT ${VAR}_VERSION_OUTPUT VERSION_GREATER_EQUAL ${VAR}_VERSION) - message(STATUS "Found ${PROGNAME}('${${VAR}_VERSION_OUTPUT}') but at least version ${${VAR}_VERSION} is required! Trying to use internal version if possible!") - unset(${VAR}) - set(${VAR} "${VAR}-NOTFOUND" CACHE INTERNAL "") + if(NOT ${program}_VERSION_OUTPUT VERSION_GREATER_EQUAL ${program}_VERSION) + message(STATUS "Found ${program_name}('${${program}_VERSION_OUTPUT}') but at least version ${${program}_VERSION} is required! Trying to use internal version if possible!") + unset(${program}) + set(${program} "${program}-NOTFOUND" CACHE INTERNAL "") else() - message(STATUS "Found external ${PROGNAME}('${${VAR}_VERSION_OUTPUT}').") + message(STATUS "Found external ${program_name}('${${program}_VERSION_OUTPUT}').") endif() endif() endmacro() macro(do_find) - if(NOT DEFINED REQUIRED_INTERPRETER) - find_program(${VAR} ${PROGNAME} PATHS ${PATHS} NO_DEFAULT_PATH) - if(NOT ${VAR}) - find_program(${VAR} ${PROGNAME}) - if(${VAR} AND NOT ${VAR}_VERSION_CHECKED) + if(NOT "${interpreter}" STREQUAL "") + find_program(${program} ${program_name} PATHS ${paths_to_search} NO_DEFAULT_PATH) + if(NOT ${program}) + find_program(${program} ${program_name}) + if(${program} AND NOT ${program}_VERSION_CHECKED) do_version_check() - set(${VAR}_VERSION_CHECKED ON) - elseif(${VAR}_VERSION_CHECKED) - message(FATAL_ERROR "Unable to find ${PROGNAME} with min version of ${${VAR}_VERSION}") + set(${program}_VERSION_CHECKED ON) + elseif(${program}_VERSION_CHECKED) + message(FATAL_ERROR "Unable to find ${program_name} with min version of ${${program}_VERSION}") endif() endif() else() - vcpkg_find_acquire_program(${REQUIRED_INTERPRETER}) - find_file(SCRIPT_${VAR} NAMES ${SCRIPTNAME} PATHS ${PATHS} NO_DEFAULT_PATH) - if(NOT SCRIPT_${VAR}) - find_file(SCRIPT_${VAR} NAMES ${SCRIPTNAME}) - if(SCRIPT_${VAR} AND NOT ${VAR}_VERSION_CHECKED) - set(${VAR} ${${REQUIRED_INTERPRETER}} ${SCRIPT_${VAR}}) + vcpkg_find_acquire_program(${interpreter}) + find_file(SCRIPT_${program} NAMES ${SCRIPTNAME} PATHS ${paths_to_search} NO_DEFAULT_PATH) + if(NOT SCRIPT_${program}) + find_file(SCRIPT_${program} NAMES ${SCRIPTNAME}) + if(SCRIPT_${program} AND NOT ${program}_VERSION_CHECKED) + set(${program} ${${interpreter}} ${SCRIPT_${program}}) do_version_check() - set(${VAR}_VERSION_CHECKED ON) - if(NOT ${VAR}) - unset(SCRIPT_${VAR} CACHE) + set(${program}_VERSION_CHECKED ON) + if(NOT ${program}) + unset(SCRIPT_${program} CACHE) endif() - elseif(${VAR}_VERSION_CHECKED) - message(FATAL_ERROR "Unable to find ${PROGNAME} with min version of ${${VAR}_VERSION}") + elseif(${program}_VERSION_CHECKED) + message(FATAL_ERROR "Unable to find ${program_name} with min version of ${${program}_VERSION}") endif() endif() - if(SCRIPT_${VAR}) - set(${VAR} ${${REQUIRED_INTERPRETER}} ${SCRIPT_${VAR}}) + if(SCRIPT_${program}) + set(${program} ${${interpreter}} ${SCRIPT_${program}}) endif() endif() endmacro() - if(NOT DEFINED PROG_PATH_SUBDIR) - set(PROG_PATH_SUBDIR "${DOWNLOADS}/tools/${PROGNAME}/${SUBDIR}") + if("${program_name}" STREQUAL "") + message(FATAL_ERROR "Internal error: failed to initialize program_name for program ${program}") endif() - if(DEFINED SUBDIR) - list(APPEND PATHS ${PROG_PATH_SUBDIR}) + + set(full_subdirectory "${DOWNLOADS}/tools/${program_name}/${tool_subdirectory}") + if(NOT "${tool_subdirectory}" STREQUAL "") + list(APPEND paths_to_search ${full_subdirectory}) endif() - if("${PROG_PATH_SUBDIR}" MATCHES [[^(.*)[/\\]$]]) - # remove trailing slash, which may turn into a trailing `\` which CMake _does not like_ - set(PROG_PATH_SUBDIR "${CMAKE_MATCH_1}") + if("${full_subdirectory}" MATCHES [[^(.*)[/\\]+$]]) + # remove trailing slashes, which may turn into a trailing `\` which CMake _does not like_ + set(full_subdirectory "${CMAKE_MATCH_1}") endif() do_find() - if(NOT ${VAR}) - if(NOT CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows" AND NOT _vfa_SUPPORTED) + if(NOT ${program}) + if(NOT VCPKG_HOST_IS_WINDOWS AND NOT supported_on_unix) set(EXAMPLE ".") - if(DEFINED BREW_PACKAGE_NAME AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") + if(NOT "${BREW_PACKAGE_NAME}" STREQUAL "" AND VCPKG_HOST_IS_OSX) set(EXAMPLE ":\n brew install ${BREW_PACKAGE_NAME}") - elseif(DEFINED APT_PACKAGE_NAME AND CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") + elseif(NOT "${APT_PACKAGE_NAME}" STREQUAL "" AND VCPKG_HOST_IS_LINUX) set(EXAMPLE ":\n sudo apt-get install ${APT_PACKAGE_NAME}") endif() - message(FATAL_ERROR "Could not find ${PROGNAME}. Please install it via your package manager${EXAMPLE}") + message(FATAL_ERROR "Could not find ${program_name}. Please install it via your package manager${EXAMPLE}") endif() - if(DEFINED SOURCEFORGE_ARGS) + if(NOT "${SOURCEFORGE_ARGS}" STREQUAL "") # Locally change editable to suppress re-extraction each time set(_VCPKG_EDITABLE 1) vcpkg_from_sourceforge(OUT_SOURCE_PATH SFPATH ${SOURCEFORGE_ARGS}) @@ -554,19 +554,19 @@ function(vcpkg_find_acquire_program VAR) FILENAME ${ARCHIVE} ) - file(MAKE_DIRECTORY ${PROG_PATH_SUBDIR}) - if(DEFINED NOEXTRACT) - if(DEFINED _vfa_RENAME) - file(INSTALL ${ARCHIVE_PATH} DESTINATION ${PROG_PATH_SUBDIR} RENAME ${_vfa_RENAME} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + file(MAKE_DIRECTORY ${full_subdirectory}) + if(raw_executable) + if(NOT "${rename_binary_to}" STREQUAL "") + file(INSTALL ${ARCHIVE_PATH} DESTINATION ${full_subdirectory} RENAME ${rename_binary_to} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) else() - file(COPY ${ARCHIVE_PATH} DESTINATION ${PROG_PATH_SUBDIR} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + file(COPY ${ARCHIVE_PATH} DESTINATION ${full_subdirectory} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) endif() else() get_filename_component(ARCHIVE_EXTENSION ${ARCHIVE} LAST_EXT) string(TOLOWER "${ARCHIVE_EXTENSION}" ARCHIVE_EXTENSION) if(ARCHIVE_EXTENSION STREQUAL ".msi") file(TO_NATIVE_PATH "${ARCHIVE_PATH}" ARCHIVE_NATIVE_PATH) - file(TO_NATIVE_PATH "${PROG_PATH_SUBDIR}" DESTINATION_NATIVE_PATH) + file(TO_NATIVE_PATH "${full_subdirectory}" DESTINATION_NATIVE_PATH) vcpkg_execute_in_download_mode( COMMAND msiexec /a ${ARCHIVE_NATIVE_PATH} /qn TARGETDIR=${DESTINATION_NATIVE_PATH} WORKING_DIRECTORY ${DOWNLOADS} @@ -574,32 +574,32 @@ function(vcpkg_find_acquire_program VAR) elseif("${ARCHIVE_PATH}" MATCHES ".7z.exe$") vcpkg_find_acquire_program(7Z) vcpkg_execute_in_download_mode( - COMMAND ${7Z} x "${ARCHIVE_PATH}" "-o${PROG_PATH_SUBDIR}" -y -bso0 -bsp0 - WORKING_DIRECTORY ${PROG_PATH_SUBDIR} + COMMAND ${7Z} x "${ARCHIVE_PATH}" "-o${full_subdirectory}" -y -bso0 -bsp0 + WORKING_DIRECTORY ${full_subdirectory} ) else() vcpkg_execute_in_download_mode( COMMAND ${CMAKE_COMMAND} -E tar xzf ${ARCHIVE_PATH} - WORKING_DIRECTORY ${PROG_PATH_SUBDIR} + WORKING_DIRECTORY ${full_subdirectory} ) endif() endif() endif() - if(DEFINED POST_INSTALL_COMMAND) + if(NOT "${post_install_command}" STREQUAL "") vcpkg_execute_required_process( ALLOW_IN_DOWNLOAD_MODE - COMMAND ${POST_INSTALL_COMMAND} - WORKING_DIRECTORY ${PROG_PATH_SUBDIR} - LOGNAME ${VAR}-tool-post-install + COMMAND ${post_install_command} + WORKING_DIRECTORY ${full_subdirectory} + LOGNAME ${program}-tool-post-install ) endif() - unset(${VAR} CACHE) + unset(${program} CACHE) do_find() - if(NOT ${VAR}) - message(FATAL_ERROR "Unable to find ${VAR}") + if(NOT ${program}) + message(FATAL_ERROR "Unable to find ${program}") endif() endif() - set(${VAR} "${${VAR}}" PARENT_SCOPE) + set(${program} "${${program}}" PARENT_SCOPE) endfunction() From 304a423674b841e78824bfdc007c3c02eccc792f Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Tue, 2 Nov 2021 11:25:38 -0700 Subject: [PATCH 03/17] rename and move do_find/do_version_check --- .../cmake/vcpkg_find_acquire_program.cmake | 117 +++++++++--------- 1 file changed, 59 insertions(+), 58 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 637ebca2a67da8..d496840862c2e2 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -47,6 +47,59 @@ Note that msys2 has a dedicated helper function: [`vcpkg_acquire_msys`](vcpkg_ac * [qt5](https://github.com/Microsoft/vcpkg/blob/master/ports/qt5/portfile.cmake) #]===] +macro(z_vcpkg_find_acquire_program_version_check) + if(VERSION_CMD) + vcpkg_execute_in_download_mode( + COMMAND ${${program}} ${VERSION_CMD} + WORKING_DIRECTORY ${VCPKG_ROOT_DIR} + OUTPUT_VARIABLE ${program}_VERSION_OUTPUT + ) + string(STRIP "${${program}_VERSION_OUTPUT}" ${program}_VERSION_OUTPUT) + #TODO: REGEX MATCH case for more complex cases! + if(NOT ${program}_VERSION_OUTPUT VERSION_GREATER_EQUAL ${program}_VERSION) + message(STATUS "Found ${program_name}('${${program}_VERSION_OUTPUT}') but at least version ${${program}_VERSION} is required! Trying to use internal version if possible!") + unset(${program}) + set(${program} "${program}-NOTFOUND" CACHE INTERNAL "") + else() + message(STATUS "Found external ${program_name}('${${program}_VERSION_OUTPUT}').") + endif() + endif() +endmacro() + +macro(z_vcpkg_find_acquire_program_find) + if(NOT "${interpreter}" STREQUAL "") + find_program(${program} ${program_name} PATHS ${paths_to_search} NO_DEFAULT_PATH) + if(NOT ${program}) + find_program(${program} ${program_name}) + if(${program} AND NOT ${program}_VERSION_CHECKED) + z_vcpkg_find_acquire_program_version_check() + set(${program}_VERSION_CHECKED ON) + elseif(${program}_VERSION_CHECKED) + message(FATAL_ERROR "Unable to find ${program_name} with min version of ${${program}_VERSION}") + endif() + endif() + else() + vcpkg_find_acquire_program(${interpreter}) + find_file(SCRIPT_${program} NAMES ${SCRIPTNAME} PATHS ${paths_to_search} NO_DEFAULT_PATH) + if(NOT SCRIPT_${program}) + find_file(SCRIPT_${program} NAMES ${SCRIPTNAME}) + if(SCRIPT_${program} AND NOT ${program}_VERSION_CHECKED) + set(${program} ${${interpreter}} ${SCRIPT_${program}}) + z_vcpkg_find_acquire_program_version_check() + set(${program}_VERSION_CHECKED ON) + if(NOT ${program}) + unset(SCRIPT_${program} CACHE) + endif() + elseif(${program}_VERSION_CHECKED) + message(FATAL_ERROR "Unable to find ${program_name} with min version of ${${program}_VERSION}") + endif() + endif() + if(SCRIPT_${program}) + set(${program} ${${interpreter}} ${SCRIPT_${program}}) + endif() + endif() +endmacro() + function(vcpkg_find_acquire_program program) if("${${program}}") return() @@ -60,6 +113,7 @@ function(vcpkg_find_acquire_program program) set(supported_on_unix "") set(post_install_command "") set(paths_to_search "") + set(version_command "") if(program MATCHES "PERL") set(program_name perl) @@ -237,7 +291,7 @@ function(vcpkg_find_acquire_program program) set(paths_to_search "${DOWNLOADS}/tools/ninja-${NINJA_VERSION}-linux") set(HASH 93e802e9c17fb59636cddde4bad1ddaadad624f4ecfee00d5c78790330a4e9d433180e795718cda27da57215ce643c3929cf72c85337ee019d868c56f2deeef3) endif() - set(VERSION_CMD --version) + set(version_command --version) elseif(program MATCHES "NUGET") set(program_name nuget) set(tool_subdirectory "5.11.0") @@ -264,7 +318,7 @@ function(vcpkg_find_acquire_program program) #set(ARCHIVE "meson-${MESON_VERSION}.tar.gz") set(HASH 18a012a45274dbb4582e99fd69d920f38831e788d9860f9553c64847bedb1c2010ae0b5c0ef4a4350c03f5e0f95aaa0395378e1208109b59640c1a70b1e202d2) set(supported_on_unix ON) - set(VERSION_CMD --version) + set(version_command --version) elseif(program MATCHES "FLEX" OR program MATCHES "BISON") if(CMAKE_HOST_WIN32) set(SOURCEFORGE_ARGS @@ -438,7 +492,7 @@ function(vcpkg_find_acquire_program program) set(tool_subdirectory "openbsd") set(URL "https://raw.githubusercontent.com/jgilje/pkg-config-openbsd/master/pkg-config") set(HASH b7ec9017b445e00ae1377e36e774cf3f5194ab262595840b449832707d11e443a102675f66d8b7e8b2e2f28cebd6e256835507b1e0c69644cc9febab8285080b) - set(VERSION_CMD --version) + set(version_command --version) elseif(CMAKE_HOST_WIN32) if(NOT EXISTS "${PKGCONFIG}") set(VERSION 0.29.2-2) @@ -464,59 +518,6 @@ function(vcpkg_find_acquire_program program) message(FATAL "unknown tool ${program} -- unable to acquire.") endif() - macro(do_version_check) - if(VERSION_CMD) - vcpkg_execute_in_download_mode( - COMMAND ${${program}} ${VERSION_CMD} - WORKING_DIRECTORY ${VCPKG_ROOT_DIR} - OUTPUT_VARIABLE ${program}_VERSION_OUTPUT - ) - string(STRIP "${${program}_VERSION_OUTPUT}" ${program}_VERSION_OUTPUT) - #TODO: REGEX MATCH case for more complex cases! - if(NOT ${program}_VERSION_OUTPUT VERSION_GREATER_EQUAL ${program}_VERSION) - message(STATUS "Found ${program_name}('${${program}_VERSION_OUTPUT}') but at least version ${${program}_VERSION} is required! Trying to use internal version if possible!") - unset(${program}) - set(${program} "${program}-NOTFOUND" CACHE INTERNAL "") - else() - message(STATUS "Found external ${program_name}('${${program}_VERSION_OUTPUT}').") - endif() - endif() - endmacro() - - macro(do_find) - if(NOT "${interpreter}" STREQUAL "") - find_program(${program} ${program_name} PATHS ${paths_to_search} NO_DEFAULT_PATH) - if(NOT ${program}) - find_program(${program} ${program_name}) - if(${program} AND NOT ${program}_VERSION_CHECKED) - do_version_check() - set(${program}_VERSION_CHECKED ON) - elseif(${program}_VERSION_CHECKED) - message(FATAL_ERROR "Unable to find ${program_name} with min version of ${${program}_VERSION}") - endif() - endif() - else() - vcpkg_find_acquire_program(${interpreter}) - find_file(SCRIPT_${program} NAMES ${SCRIPTNAME} PATHS ${paths_to_search} NO_DEFAULT_PATH) - if(NOT SCRIPT_${program}) - find_file(SCRIPT_${program} NAMES ${SCRIPTNAME}) - if(SCRIPT_${program} AND NOT ${program}_VERSION_CHECKED) - set(${program} ${${interpreter}} ${SCRIPT_${program}}) - do_version_check() - set(${program}_VERSION_CHECKED ON) - if(NOT ${program}) - unset(SCRIPT_${program} CACHE) - endif() - elseif(${program}_VERSION_CHECKED) - message(FATAL_ERROR "Unable to find ${program_name} with min version of ${${program}_VERSION}") - endif() - endif() - if(SCRIPT_${program}) - set(${program} ${${interpreter}} ${SCRIPT_${program}}) - endif() - endif() - endmacro() - if("${program_name}" STREQUAL "") message(FATAL_ERROR "Internal error: failed to initialize program_name for program ${program}") endif() @@ -530,7 +531,7 @@ function(vcpkg_find_acquire_program program) set(full_subdirectory "${CMAKE_MATCH_1}") endif() - do_find() + z_vcpkg_find_acquire_program_find() if(NOT ${program}) if(NOT VCPKG_HOST_IS_WINDOWS AND NOT supported_on_unix) set(EXAMPLE ".") @@ -595,7 +596,7 @@ function(vcpkg_find_acquire_program program) ) endif() unset(${program} CACHE) - do_find() + z_vcpkg_find_acquire_program_find() if(NOT ${program}) message(FATAL_ERROR "Unable to find ${program}") endif() From 3492e1febcf7f5b95f7ee576bb7fe227b43b7588 Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Tue, 2 Nov 2021 11:42:12 -0700 Subject: [PATCH 04/17] change ${program}_VERSION -> program_version --- .../cmake/vcpkg_find_acquire_program.cmake | 205 +++++++++--------- 1 file changed, 103 insertions(+), 102 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index d496840862c2e2..a0ccd7c975b47a 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -52,16 +52,16 @@ macro(z_vcpkg_find_acquire_program_version_check) vcpkg_execute_in_download_mode( COMMAND ${${program}} ${VERSION_CMD} WORKING_DIRECTORY ${VCPKG_ROOT_DIR} - OUTPUT_VARIABLE ${program}_VERSION_OUTPUT + OUTPUT_VARIABLE program_version_output ) - string(STRIP "${${program}_VERSION_OUTPUT}" ${program}_VERSION_OUTPUT) + string(STRIP "${program_version_output}" program_version_output) #TODO: REGEX MATCH case for more complex cases! - if(NOT ${program}_VERSION_OUTPUT VERSION_GREATER_EQUAL ${program}_VERSION) - message(STATUS "Found ${program_name}('${${program}_VERSION_OUTPUT}') but at least version ${${program}_VERSION} is required! Trying to use internal version if possible!") + if(NOT program_version_output VERSION_GREATER_EQUAL program_version) + message(STATUS "Found ${program_name}('${program_version_output}') but at least version ${program_version} is required! Trying to use internal version if possible!") unset(${program}) set(${program} "${program}-NOTFOUND" CACHE INTERNAL "") else() - message(STATUS "Found external ${program_name}('${${program}_VERSION_OUTPUT}').") + message(STATUS "Found external ${program_name}('${program_version_output}').") endif() endif() endmacro() @@ -71,11 +71,11 @@ macro(z_vcpkg_find_acquire_program_find) find_program(${program} ${program_name} PATHS ${paths_to_search} NO_DEFAULT_PATH) if(NOT ${program}) find_program(${program} ${program_name}) - if(${program} AND NOT ${program}_VERSION_CHECKED) + if(${program} AND NOT program_version_checked) z_vcpkg_find_acquire_program_version_check() - set(${program}_VERSION_CHECKED ON) - elseif(${program}_VERSION_CHECKED) - message(FATAL_ERROR "Unable to find ${program_name} with min version of ${${program}_VERSION}") + set(program_version_checked ON) + elseif(program_version_checked) + message(FATAL_ERROR "Unable to find ${program_name} with min version of ${program_version}") endif() endif() else() @@ -83,15 +83,15 @@ macro(z_vcpkg_find_acquire_program_find) find_file(SCRIPT_${program} NAMES ${SCRIPTNAME} PATHS ${paths_to_search} NO_DEFAULT_PATH) if(NOT SCRIPT_${program}) find_file(SCRIPT_${program} NAMES ${SCRIPTNAME}) - if(SCRIPT_${program} AND NOT ${program}_VERSION_CHECKED) + if(SCRIPT_${program} AND NOT program_version_checked) set(${program} ${${interpreter}} ${SCRIPT_${program}}) z_vcpkg_find_acquire_program_version_check() - set(${program}_VERSION_CHECKED ON) + set(program_version_checked ON) if(NOT ${program}) unset(SCRIPT_${program} CACHE) endif() - elseif(${program}_VERSION_CHECKED) - message(FATAL_ERROR "Unable to find ${program_name} with min version of ${${program}_VERSION}") + elseif(program_version_checked) + message(FATAL_ERROR "Unable to find ${program_name} with min version of ${program_version}") endif() endif() if(SCRIPT_${program}) @@ -107,6 +107,7 @@ function(vcpkg_find_acquire_program program) set(raw_executable "ON") set(program_name "") + set(program_version "") set(rename_binary_to "") set(tool_subdirectory "") set(interpreter "") @@ -117,47 +118,47 @@ function(vcpkg_find_acquire_program program) if(program MATCHES "PERL") set(program_name perl) - set(PERL_VERSION 5.32.1.1) - set(tool_subdirectory ${PERL_VERSION}) + set(program_version 5.32.1.1) + set(tool_subdirectory ${program_version}) set(paths_to_search ${DOWNLOADS}/tools/perl/${tool_subdirectory}/perl/bin) set(BREW_PACKAGE_NAME "perl") set(APT_PACKAGE_NAME "perl") set(URL - "https://strawberryperl.com/download/${PERL_VERSION}/strawberry-perl-${PERL_VERSION}-32bit.zip" + "https://strawberryperl.com/download/${program_version}/strawberry-perl-${program_version}-32bit.zip" ) - set(ARCHIVE "strawberry-perl-${PERL_VERSION}-32bit.zip") + set(ARCHIVE "strawberry-perl-${program_version}-32bit.zip") set(HASH 936381254fea2e596db6a16c23b08ced25c4081fda484e1b8c4356755016e4b956bd00f3d2ee651d5f41a7695e9998f6c1ac3f4a237212b9c55aca8c5fea14e9) elseif(program MATCHES "NASM") set(program_name nasm) - set(NASM_VERSION 2.15.05) - set(paths_to_search ${DOWNLOADS}/tools/nasm/nasm-${NASM_VERSION}) + set(program_version 2.15.05) + set(paths_to_search ${DOWNLOADS}/tools/nasm/nasm-${program_version}) set(BREW_PACKAGE_NAME "nasm") set(APT_PACKAGE_NAME "nasm") set(URL - "https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VERSION}/win32/nasm-${NASM_VERSION}-win32.zip" - "https://fossies.org/windows/misc/nasm-${NASM_VERSION}-win32.zip" + "https://www.nasm.us/pub/nasm/releasebuilds/${program_version}/win32/nasm-${program_version}-win32.zip" + "https://fossies.org/windows/misc/nasm-${program_version}-win32.zip" ) - set(ARCHIVE "nasm-${NASM_VERSION}-win32.zip") + set(ARCHIVE "nasm-${program_version}-win32.zip") set(HASH 9412b8caa07e15eac8f500f6f8fab9f038d95dc25e0124b08a80645607cf5761225f98546b52eac7b894420d64f26c3cbf22c19cd286bbe583f7c964256c97ed) elseif(program MATCHES "YASM") set(program_name yasm) - set(YASM_VERSION 1.3.0.6.g1962) + set(program_version 1.3.0.6.g1962) set(tool_subdirectory 1.3.0.6) set(BREW_PACKAGE_NAME "yasm") set(APT_PACKAGE_NAME "yasm") - set(URL "https://www.tortall.net/projects/yasm/snapshots/v${YASM_VERSION}/yasm-${YASM_VERSION}.exe") - set(ARCHIVE "yasm-${YASM_VERSION}.exe") + set(URL "https://www.tortall.net/projects/yasm/snapshots/v${program_version}/yasm-${program_version}.exe") + set(ARCHIVE "yasm-${program_version}.exe") set(rename_binary_to "yasm.exe") set(raw_executable ON) set(HASH c1945669d983b632a10c5ff31e86d6ecbff143c3d8b2c433c0d3d18f84356d2b351f71ac05fd44e5403651b00c31db0d14615d7f9a6ecce5750438d37105c55b) elseif(program MATCHES "GIT") set(program_name git) if(CMAKE_HOST_WIN32) - set(GIT_BASE_VERSION 2.32.0) - set(GIT_VERSION 2.32.0.2) - set(tool_subdirectory "git-${GIT_VERSION}-2-windows") - set(URL "https://github.com/git-for-windows/git/releases/download/v${GIT_BASE_VERSION}.windows.2/PortableGit-${GIT_VERSION}-32-bit.7z.exe") - set(ARCHIVE "PortableGit-${GIT_VERSION}-32-bit.7z.exe") + set(base_version 2.32.0) + set(program_version 2.32.0.2) + set(tool_subdirectory "git-${program_version}-2-windows") + set(URL "https://github.com/git-for-windows/git/releases/download/v${base_version}.windows.2/PortableGit-${program_version}-32-bit.7z.exe") + set(ARCHIVE "PortableGit-${program_version}-32-bit.7z.exe") set(HASH 867d8534972cbaf7a4224e25a14d484f8d17ef186f8d79e9a758afb90cf69541375cb7615a39702311f4809cb8371ef85c2b1a15bfffe9e48f0e597ac011b348) set(paths_to_search "${DOWNLOADS}/tools/${tool_subdirectory}/mingw32/bin" @@ -172,21 +173,21 @@ function(vcpkg_find_acquire_program program) set(CIPD_DOWNLOAD_GN "https://chrome-infra-packages.appspot.com/dl/gn/gn") if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") set(supported_on_unix ON) - set(GN_VERSION "xus7xtaPhpv5vCmKFOnsBVoB-PKmhZvRsSTjbQAuF0MC") + set(program_version "xus7xtaPhpv5vCmKFOnsBVoB-PKmhZvRsSTjbQAuF0MC") set(GN_PLATFORM "linux-amd64") set(HASH "871e75d7f3597b74fb99e36bb41fe5a9f8ce8a4d9f167f4729fc6e444807a59f35ec8aca70c2274a99c79d70a1108272be1ad991678a8ceb39e30f77abb13135") elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") set(supported_on_unix ON) - set(GN_VERSION "qhxILDNcJ2H44HfHmfiU-XIY3E_SIXvFqLd2wvbIgOoC") + set(program_version "qhxILDNcJ2H44HfHmfiU-XIY3E_SIXvFqLd2wvbIgOoC") set(GN_PLATFORM "mac-amd64") set(HASH "03ee64cb15bae7fceb412900d470601090bce147cfd45eb9b46683ac1a5dca848465a5d74c55a47df7f0e334d708151249a6d37bb021de74dd48b97ed4a07937") else() - set(GN_VERSION "qUkAhy9J0P7c5racy-9wB6AHNK_btS18im8S06_ehhwC") + set(program_version "qUkAhy9J0P7c5racy-9wB6AHNK_btS18im8S06_ehhwC") set(GN_PLATFORM "windows-amd64") set(HASH "263e02bd79eee0cb7b664831b7898565c5656a046328d8f187ef7ae2a4d766991d477b190c9b425fcc960ab76f381cd3e396afb85cba7408ca9e74eb32c175db") endif() - set(tool_subdirectory "${GN_VERSION}") - set(URL "${CIPD_DOWNLOAD_GN}/${GN_PLATFORM}/+/${GN_VERSION}") + set(tool_subdirectory "${program_version}") + set(URL "${CIPD_DOWNLOAD_GN}/${GN_PLATFORM}/+/${program_version}") set(ARCHIVE "gn-${GN_PLATFORM}.zip") elseif(program MATCHES "GO") set(program_name go) @@ -200,16 +201,16 @@ function(vcpkg_find_acquire_program program) elseif(program MATCHES "PYTHON3") if(CMAKE_HOST_WIN32) set(program_name python) - set(PYTHON_VERSION 3.10.0) + set(program_version 3.10.0) if (VCPKG_TARGET_ARCHITECTURE STREQUAL x86) - set(tool_subdirectory "python-${PYTHON_VERSION}-x86") - set(URL "https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}-embed-win32.zip") - set(ARCHIVE "python-${PYTHON_VERSION}-embed-win32.zip") + set(tool_subdirectory "python-${program_version}-x86") + set(URL "https://www.python.org/ftp/python/${program_version}/python-${program_version}-embed-win32.zip") + set(ARCHIVE "python-${program_version}-embed-win32.zip") set(HASH 0b007bfa02cdd48b3c260986493fa124a6b9d794da6eba2b4fad0d779fd655e9ae4e16daf5f02ff5b30a17abcfc1499bc6bee394c0f8abe933f2d4fe702af3cd) else() - set(tool_subdirectory "python-${PYTHON_VERSION}-x64") - set(URL "https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}-embed-amd64.zip") - set(ARCHIVE "python-${PYTHON_VERSION}-embed-amd64.zip") + set(tool_subdirectory "python-${program_version}-x64") + set(URL "https://www.python.org/ftp/python/${program_version}/python-${program_version}-embed-amd64.zip") + set(ARCHIVE "python-${program_version}-embed-amd64.zip") set(HASH 23d81d007698383d8dc088da532dcb86c6ceca7eb78ba5688fc2e18ee7f33f53a5632282873762293b8164556dfb15870f8ffb7abd368faba0a3d8d5d5bc6297) endif() set(paths_to_search ${DOWNLOADS}/tools/python/${tool_subdirectory}) @@ -222,16 +223,16 @@ function(vcpkg_find_acquire_program program) elseif(program MATCHES "PYTHON2") if(CMAKE_HOST_WIN32) set(program_name python) - set(PYTHON_VERSION 2.7.18) + set(program_version 2.7.18) if (VCPKG_TARGET_ARCHITECTURE STREQUAL x86) - set(tool_subdirectory "python-${PYTHON_VERSION}-x86") - set(URL "https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}.msi") - set(ARCHIVE "python-${PYTHON_VERSION}.msi") + set(tool_subdirectory "python-${program_version}-x86") + set(URL "https://www.python.org/ftp/python/${program_version}/python-${program_version}.msi") + set(ARCHIVE "python-${program_version}.msi") set(HASH 2c112733c777ddbf189b0a54047a9d5851ebce0564cc38b9687d79ce6c7a09006109dbad8627fb1a60c3ad55e261db850d9dfa454af0533b460b2afc316fe115) else() - set(tool_subdirectory "python-${PYTHON_VERSION}-x64") - set(URL "https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}.amd64.msi") - set(ARCHIVE "python-${PYTHON_VERSION}.amd64.msi") + set(tool_subdirectory "python-${program_version}-x64") + set(URL "https://www.python.org/ftp/python/${program_version}/python-${program_version}.amd64.msi") + set(ARCHIVE "python-${program_version}.amd64.msi") set(HASH 6a81a413b80fd39893e7444fd47efa455d240cbb77a456c9d12f7cf64962b38c08cfa244cd9c50a65947c40f936c6c8c5782f7236d7b92445ab3dd01e82af23e) endif() set(paths_to_search ${DOWNLOADS}/tools/python/${tool_subdirectory}) @@ -245,10 +246,10 @@ function(vcpkg_find_acquire_program program) endif() elseif(program MATCHES "RUBY") set(program_name "ruby") - set(RUBY_VERSION 2.7.4-1) - set(paths_to_search ${DOWNLOADS}/tools/ruby/rubyinstaller-${RUBY_VERSION}-x86/bin) - set(URL https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-${RUBY_VERSION}/rubyinstaller-${RUBY_VERSION}-x86.7z) - set(ARCHIVE rubyinstaller-${RUBY_VERSION}-x86.7z) + set(program_version 2.7.4-1) + set(paths_to_search ${DOWNLOADS}/tools/ruby/rubyinstaller-${program_version}-x86/bin) + set(URL https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-${program_version}/rubyinstaller-${program_version}-x86.7z) + set(ARCHIVE rubyinstaller-${program_version}-x86.7z) set(HASH 4bf459c987b407bdda328c52d95060bf6ad48fc3e5ed5f64d4b205c5b4153c7a00cb6f9da6c0bcd5f2e001e9dc3dda0b72269ec4afdeffd658b93c085cd1d859) elseif(program MATCHES "JOM") set(program_name jom) @@ -268,27 +269,27 @@ function(vcpkg_find_acquire_program program) set(HASH f73b04e2d9f29d4393fde572dcf3c3f0f6fa27e747e5df292294ab7536ae24c239bf917689d71eb10cc49f6b9a4ace26d7c122ee887d93cc935f268c404e9067) elseif(program MATCHES "NINJA") set(program_name ninja) - set(NINJA_VERSION 1.10.2) + set(program_version 1.10.2) set(supported_on_unix ON) if(CMAKE_HOST_WIN32) - set(ARCHIVE "ninja-win-${NINJA_VERSION}.zip") - set(tool_subdirectory "${NINJA_VERSION}-windows") - set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-win.zip") + set(ARCHIVE "ninja-win-${program_version}.zip") + set(tool_subdirectory "${program_version}-windows") + set(URL "https://github.com/ninja-build/ninja/releases/download/v${program_version}/ninja-win.zip") set(HASH 6004140d92e86afbb17b49c49037ccd0786ce238f340f7d0e62b4b0c29ed0d6ad0bab11feda2094ae849c387d70d63504393714ed0a1f4d3a1f155af7a4f1ba3) elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") - set(ARCHIVE "ninja-mac-${NINJA_VERSION}.zip") - set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-mac.zip") - set(tool_subdirectory "${NINJA_VERSION}-osx") - set(paths_to_search "${DOWNLOADS}/tools/ninja-${NINJA_VERSION}-osx") + set(ARCHIVE "ninja-mac-${program_version}.zip") + set(URL "https://github.com/ninja-build/ninja/releases/download/v${program_version}/ninja-mac.zip") + set(tool_subdirectory "${program_version}-osx") + set(paths_to_search "${DOWNLOADS}/tools/ninja-${program_version}-osx") set(HASH bcd12f6a3337591306d1b99a7a25a6933779ba68db79f17c1d3087d7b6308d245daac08df99087ff6be8dc7dd0dcdbb3a50839a144745fa719502b3a7a07260b) elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "FreeBSD") set(paths_to_search "${DOWNLOADS}/tools/${tool_subdirectory}-freebsd") set(supported_on_unix OFF) else() - set(ARCHIVE "ninja-linux-${NINJA_VERSION}.zip") - set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-linux.zip") - set(tool_subdirectory "${NINJA_VERSION}-linux") - set(paths_to_search "${DOWNLOADS}/tools/ninja-${NINJA_VERSION}-linux") + set(ARCHIVE "ninja-linux-${program_version}.zip") + set(URL "https://github.com/ninja-build/ninja/releases/download/v${program_version}/ninja-linux.zip") + set(tool_subdirectory "${program_version}-linux") + set(paths_to_search "${DOWNLOADS}/tools/ninja-${program_version}-linux") set(HASH 93e802e9c17fb59636cddde4bad1ddaadad624f4ecfee00d5c78790330a4e9d433180e795718cda27da57215ce643c3929cf72c85337ee019d868c56f2deeef3) endif() set(version_command --version) @@ -303,7 +304,7 @@ function(vcpkg_find_acquire_program program) set(raw_executable ON) set(HASH 06a337c9404dec392709834ef2cdbdce611e104b510ef40201849595d46d242151749aef65bc2d7ce5ade9ebfda83b64c03ce14c8f35ca9957a17a8c02b8c4b7) elseif(program MATCHES "MESON") - set(MESON_VERSION 0.58.1) + set(program_version 0.58.1) set(program_name meson) set(interpreter PYTHON3) set(APT_PACKAGE_NAME "meson") @@ -313,9 +314,9 @@ function(vcpkg_find_acquire_program program) set(paths_to_search ${DOWNLOADS}/tools/meson/meson-${REF}) set(URL "https://github.com/mesonbuild/meson/archive/${REF}.tar.gz") set(ARCHIVE "meson-${REF}.tar.gz") - #set(paths_to_search ${DOWNLOADS}/tools/meson/meson-${MESON_VERSION}) - #set(URL "https://github.com/mesonbuild/meson/releases/download/${MESON_VERSION}/meson-${MESON_VERSION}.tar.gz") - #set(ARCHIVE "meson-${MESON_VERSION}.tar.gz") + #set(paths_to_search ${DOWNLOADS}/tools/meson/meson-${program_version}) + #set(URL "https://github.com/mesonbuild/meson/releases/download/${program_version}/meson-${program_version}.tar.gz") + #set(ARCHIVE "meson-${program_version}.tar.gz") set(HASH 18a012a45274dbb4582e99fd69d920f38831e788d9860f9553c64847bedb1c2010ae0b5c0ef4a4350c03f5e0f95aaa0395378e1208109b59640c1a70b1e202d2) set(supported_on_unix ON) set(version_command --version) @@ -352,7 +353,7 @@ function(vcpkg_find_acquire_program program) elseif(program MATCHES "CLANG") set(program_name clang) set(tool_subdirectory "clang-12.0.0") - set(LLVM_VERSION 12.0.0) + set(program_version 12.0.0) if(CMAKE_HOST_WIN32) set(paths_to_search # Support LLVM in Visual Studio 2019 @@ -370,12 +371,12 @@ function(vcpkg_find_acquire_program program) endif() if(HOST_ARCH_ MATCHES "64") - set(URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/LLVM-${LLVM_VERSION}-win64.exe") - set(ARCHIVE "LLVM-${LLVM_VERSION}-win64.7z.exe") + set(URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${program_version}/LLVM-${program_version}-win64.exe") + set(ARCHIVE "LLVM-${program_version}-win64.7z.exe") set(HASH 67a9b54abad5143fa5f79f0cfc184be1394c9fc894fa9cee709943cb6ccbde8f0ea6003d8fcc20eccf035631abe4009cc0f694ac84e7879331cebba8125e4c7f) else() - set(URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${LLVM_VERSION}/LLVM-${LLVM_VERSION}-win32.exe") - set(ARCHIVE "LLVM-${LLVM_VERSION}-win32.7z.exe") + set(URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${program_version}/LLVM-${program_version}-win32.exe") + set(ARCHIVE "LLVM-${program_version}-win32.7z.exe") set(HASH 92fa5252fd08c1414ee6d71e2544cd2c44872124c47225f8d98b3af711d20e699f2888bc30642dfd00e005013da1607a593674fb4878951cc434694f9a119199) endif() endif() @@ -383,10 +384,10 @@ function(vcpkg_find_acquire_program program) set(APT_PACKAGE_NAME "clang") elseif(program MATCHES "GPERF") set(program_name gperf) - set(GPERF_VERSION 3.0.1) + set(program_version 3.0.1) set(paths_to_search ${DOWNLOADS}/tools/gperf/bin) - set(URL "https://sourceforge.net/projects/gnuwin32/files/gperf/${GPERF_VERSION}/gperf-${GPERF_VERSION}-bin.zip/download") - set(ARCHIVE "gperf-${GPERF_VERSION}-bin.zip") + set(URL "https://sourceforge.net/projects/gnuwin32/files/gperf/${program_version}/gperf-${program_version}-bin.zip/download") + set(ARCHIVE "gperf-${program_version}-bin.zip") set(HASH 3f2d3418304390ecd729b85f65240a9e4d204b218345f82ea466ca3d7467789f43d0d2129fcffc18eaad3513f49963e79775b10cc223979540fa2e502fe7d4d9) elseif(program MATCHES "GASPREPROCESSOR") set(raw_executable true) @@ -408,26 +409,26 @@ function(vcpkg_find_acquire_program program) set(HASH 74f0fa29b5991ca655e34a9d1000d47d4272e071113fada86727ee943d913177ae96dc3d435eaf494d2158f37560cd4c2c5274176946ebdb17bf2354ced1c516) elseif(program MATCHES "SCONS") set(program_name scons) - set(SCONS_VERSION 4.1.0) - set(tool_subdirectory ${SCONS_VERSION}) + set(program_version 4.1.0) + set(tool_subdirectory ${program_version}) set(interpreter PYTHON2) set(SCRIPTNAME "scons.py") - set(URL "https://sourceforge.net/projects/scons/files/scons-local-${SCONS_VERSION}.zip/download") - set(ARCHIVE "scons-local-${SCONS_VERSION}.zip") + set(URL "https://sourceforge.net/projects/scons/files/scons-local-${program_version}.zip/download") + set(ARCHIVE "scons-local-${program_version}.zip") set(HASH b173176ce8aca25039c64fcc68ec1b9ad31e03a926fd545e7631b3f9b374d914adffc593f505e3e7e2867b0ffe85e8deb0b39afe314edf05d02974ce5db1badb) elseif(program MATCHES "SWIG") - set(SWIG_VERSION 4.0.2) + set(program_version 4.0.2) set(program_name swig) if(CMAKE_HOST_WIN32) set(SOURCEFORGE_ARGS REPO swig/swigwin - REF swigwin-${SWIG_VERSION} - FILENAME "swigwin-${SWIG_VERSION}.zip" + REF swigwin-${program_version} + FILENAME "swigwin-${program_version}.zip" SHA512 b8f105f9b9db6acc1f6e3741990915b533cd1bc206eb9645fd6836457fd30789b7229d2e3219d8e35f2390605ade0fbca493ae162ec3b4bc4e428b57155db03d NO_REMOVE_ONE_LEVEL WORKING_DIRECTORY "${DOWNLOADS}/tools/swig" ) - set(tool_subdirectory b8f105f9b9-f0518bc3b7/swigwin-${SWIG_VERSION}) + set(tool_subdirectory b8f105f9b9-f0518bc3b7/swigwin-${program_version}) else() set(APT_PACKAGE_NAME "swig") set(BREW_PACKAGE_NAME "swig") @@ -435,11 +436,11 @@ function(vcpkg_find_acquire_program program) elseif(program MATCHES "DOXYGEN") set(program_name doxygen) - set(DOXYGEN_VERSION 1.9.1) + set(program_version 1.9.1) set(SOURCEFORGE_ARGS REPO doxygen - REF rel-${DOXYGEN_VERSION} - FILENAME "doxygen-${DOXYGEN_VERSION}.windows.bin.zip" + REF rel-${program_version} + FILENAME "doxygen-${program_version}.windows.bin.zip" SHA512 c3eeb6b9fa4eab70fb6b0864fbbf94fb8050f3fee38d117cf470921a80e3569cc1c8b0272604d6731e05f01790cfaa70e159bec5d0882fc4f2d8ae4a5d52a21b NO_REMOVE_ONE_LEVEL WORKING_DIRECTORY "${DOWNLOADS}/tools/doxygen" @@ -447,34 +448,34 @@ function(vcpkg_find_acquire_program program) set(tool_subdirectory c3eeb6b9fa-76d69c6db5) elseif(program MATCHES "BAZEL") set(program_name bazel) - set(BAZEL_VERSION 4.1.0) + set(program_version 4.1.0) set(rename_binary_to "bazel") if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") set(supported_on_unix ON) - set(tool_subdirectory ${BAZEL_VERSION}-linux) - set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${tool_subdirectory}-x86_64") + set(tool_subdirectory ${program_version}-linux) + set(URL "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-x86_64") set(ARCHIVE "bazel-${tool_subdirectory}-x86_64") set(raw_executable ON) set(HASH 50aa0894dbeedb9189a56f17baa8cecfa55c5f9c1f93a61b9ab5e10984754a400884fc9802b4979f536778e15f813a72807396b4b47694e4c05eadb841361c69) elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") set(supported_on_unix ON) - set(tool_subdirectory ${BAZEL_VERSION}-darwin) - set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${tool_subdirectory}-x86_64") + set(tool_subdirectory ${program_version}-darwin) + set(URL "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-x86_64") set(ARCHIVE "bazel-${tool_subdirectory}-x86_64") set(raw_executable ON) set(HASH 3500560c9d49d37a1ead2d2777d673c6f1874582883e141ecd5b3991005b1b6b8aab5f255c187133d771497c2a956f5c1e0dfad04dc453525634537e65b649af) else() - set(tool_subdirectory ${BAZEL_VERSION}-windows) - set(URL "https://github.com/bazelbuild/bazel/releases/download/${BAZEL_VERSION}/bazel-${tool_subdirectory}-x86_64.zip") + set(tool_subdirectory ${program_version}-windows) + set(URL "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-x86_64.zip") set(ARCHIVE "bazel-${tool_subdirectory}-x86_64.zip") set(HASH 3954ab54b465d62eef397767dac7ce21d06ac8ea3e1571d0e7b1f0ea8b5c2cf44eea5d252b85a63a1e1a08dbe9a219783cc23c2888673c35e2df03edfdc9e5a7) endif() elseif(program MATCHES "ARIA2") set(program_name aria2c) - set(ARIA2_VERSION 1.35.0) - set(paths_to_search ${DOWNLOADS}/tools/aria2c/aria2-${ARIA2_VERSION}-win-32bit-build1) - set(URL "https://github.com/aria2/aria2/releases/download/release-${ARIA2_VERSION}/aria2-${ARIA2_VERSION}-win-32bit-build1.zip") - set(ARCHIVE "aria2-${ARIA2_VERSION}-win-32bit-build1.zip") + set(program_version 1.35.0) + set(paths_to_search ${DOWNLOADS}/tools/aria2c/aria2-${program_version}-win-32bit-build1) + set(URL "https://github.com/aria2/aria2/releases/download/release-${program_version}/aria2-${program_version}-win-32bit-build1.zip") + set(ARCHIVE "aria2-${program_version}-win-32bit-build1.zip") set(HASH 933537cad820b1cecf43a9eeca7e1b241dd7b1c902ee942441a166f2c38845f16046321efbdfa2f83c7e9fc50c7ecc5da6fd00e0c6e2124c07d3b783aa5092a4) elseif(program MATCHES "PKGCONFIG") set(program_name pkg-config) @@ -486,7 +487,7 @@ function(vcpkg_find_acquire_program program) # As of 6.8, the OpenBSD specific pkg-config doesn't support {pcfiledir} set(supported_on_unix ON) set(rename_binary_to "pkg-config") - set(PKGCONFIG_VERSION 0.29.2.1) + set(program_version 0.29.2.1) set(raw_executable ON) set(ARCHIVE "pkg-config.openbsd") set(tool_subdirectory "openbsd") @@ -496,14 +497,14 @@ function(vcpkg_find_acquire_program program) elseif(CMAKE_HOST_WIN32) if(NOT EXISTS "${PKGCONFIG}") set(VERSION 0.29.2-2) - set(LIBWINPTHREAD_VERSION git-8.0.0.5906.c9a21571-1) + set(program_version git-8.0.0.5906.c9a21571-1) vcpkg_acquire_msys( PKGCONFIG_ROOT NO_DEFAULT_PACKAGES DIRECT_PACKAGES "https://repo.msys2.org/mingw/i686/mingw-w64-i686-pkg-config-${VERSION}-any.pkg.tar.zst" 54f8dad3b1a36a4515db47825a3214fbd2bd82f604aec72e7fb8d79068095fda3c836fb2296acd308522d6e12ce15f69e0c26dcf4eb0681fd105d057d912cdb7 - "https://repo.msys2.org/mingw/i686/mingw-w64-i686-libwinpthread-${LIBWINPTHREAD_VERSION}-any.pkg.tar.zst" + "https://repo.msys2.org/mingw/i686/mingw-w64-i686-libwinpthread-${program_version}-any.pkg.tar.zst" 2c3d9e6b2eee6a4c16fd69ddfadb6e2dc7f31156627d85845c523ac85e5c585d4cfa978659b1fe2ec823d44ef57bc2b92a6127618ff1a8d7505458b794f3f01c ) endif() From 5081ec8dcf1bb081209aa6c53ff6fa095544a7bd Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Tue, 2 Nov 2021 14:38:22 -0700 Subject: [PATCH 05/17] fix bugs, turn version_check into a function --- scripts/cmake/vcpkg_find_acquire_program.cmake | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index a0ccd7c975b47a..d5637982e1a12a 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -47,10 +47,10 @@ Note that msys2 has a dedicated helper function: [`vcpkg_acquire_msys`](vcpkg_ac * [qt5](https://github.com/Microsoft/vcpkg/blob/master/ports/qt5/portfile.cmake) #]===] -macro(z_vcpkg_find_acquire_program_version_check) - if(VERSION_CMD) +function(z_vcpkg_find_acquire_program_version_check) + if(version_command) vcpkg_execute_in_download_mode( - COMMAND ${${program}} ${VERSION_CMD} + COMMAND ${${program}} ${version_command} WORKING_DIRECTORY ${VCPKG_ROOT_DIR} OUTPUT_VARIABLE program_version_output ) @@ -58,16 +58,16 @@ macro(z_vcpkg_find_acquire_program_version_check) #TODO: REGEX MATCH case for more complex cases! if(NOT program_version_output VERSION_GREATER_EQUAL program_version) message(STATUS "Found ${program_name}('${program_version_output}') but at least version ${program_version} is required! Trying to use internal version if possible!") - unset(${program}) - set(${program} "${program}-NOTFOUND" CACHE INTERNAL "") + unset("${program}" PARENT_SCOPE) + set("${program}" "${program}-NOTFOUND" CACHE INTERNAL "") else() message(STATUS "Found external ${program_name}('${program_version_output}').") endif() endif() -endmacro() +endfunction() macro(z_vcpkg_find_acquire_program_find) - if(NOT "${interpreter}" STREQUAL "") + if("${interpreter}" STREQUAL "") find_program(${program} ${program_name} PATHS ${paths_to_search} NO_DEFAULT_PATH) if(NOT ${program}) find_program(${program} ${program_name}) @@ -105,7 +105,7 @@ function(vcpkg_find_acquire_program program) return() endif() - set(raw_executable "ON") + set(raw_executable "OFF") set(program_name "") set(program_version "") set(rename_binary_to "") From afca759e5db0e060cec2c5a44d2e9582d3718f7c Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Wed, 3 Nov 2021 12:39:56 -0700 Subject: [PATCH 06/17] split vcpkg_find_acquire_program_find into two --- .../cmake/vcpkg_find_acquire_program.cmake | 112 +++++++++++------- 1 file changed, 67 insertions(+), 45 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index d5637982e1a12a..16dfc59a513318 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -47,58 +47,77 @@ Note that msys2 has a dedicated helper function: [`vcpkg_acquire_msys`](vcpkg_ac * [qt5](https://github.com/Microsoft/vcpkg/blob/master/ports/qt5/portfile.cmake) #]===] -function(z_vcpkg_find_acquire_program_version_check) - if(version_command) - vcpkg_execute_in_download_mode( - COMMAND ${${program}} ${version_command} - WORKING_DIRECTORY ${VCPKG_ROOT_DIR} - OUTPUT_VARIABLE program_version_output - ) - string(STRIP "${program_version_output}" program_version_output) - #TODO: REGEX MATCH case for more complex cases! - if(NOT program_version_output VERSION_GREATER_EQUAL program_version) - message(STATUS "Found ${program_name}('${program_version_output}') but at least version ${program_version} is required! Trying to use internal version if possible!") - unset("${program}" PARENT_SCOPE) - set("${program}" "${program}-NOTFOUND" CACHE INTERNAL "") - else() - message(STATUS "Found external ${program_name}('${program_version_output}').") - endif() +function(z_vcpkg_find_acquire_program_version_check out_var) + cmake_parse_arguments(PARSE_ARGV 2 arg + "" + "MIN_VERSION;PROGRAM_NAME" + "COMMAND" + ) + vcpkg_execute_in_download_mode( + COMMAND ${arg_COMMAND} + WORKING_DIRECTORY "${VCPKG_ROOT_DIR}" + OUTPUT_VARIABLE program_version_output + ) + string(STRIP "${program_version_output}" program_version_output) + #TODO: REGEX MATCH case for more complex cases! + if(NOT "${program_version_output}" VERSION_GREATER_EQUAL "${arg_MIN_VERSION}") + message(STATUS "Found ${arg_PROGRAM_NAME}('${program_version_output}') but at least version ${arg_MIN_VERSION} is required! Trying to use internal version if possible!") + set("${out_var}" OFF PARENT_SCOPE) + else() + message(STATUS "Found external ${arg_PROGRAM_NAME}('${program_version_output}').") + set("${out_var}" ON PARENT_SCOPE) endif() endfunction() -macro(z_vcpkg_find_acquire_program_find) +function(z_vcpkg_find_acquire_program_find_external) + if("${version_command}" STREQUAL "") + return() # can't check for the version being good + endif() + if("${interpreter}" STREQUAL "") - find_program(${program} ${program_name} PATHS ${paths_to_search} NO_DEFAULT_PATH) - if(NOT ${program}) - find_program(${program} ${program_name}) - if(${program} AND NOT program_version_checked) - z_vcpkg_find_acquire_program_version_check() - set(program_version_checked ON) - elseif(program_version_checked) - message(FATAL_ERROR "Unable to find ${program_name} with min version of ${program_version}") - endif() + find_program(${program} ${program_name}) + if(${program}) + z_vcpkg_find_acquire_program_version_check(version_is_good + COMMAND ${${program}} ${version_command} + MIN_VERSION "${program_version}" + PROGRAM_NAME "${program_name}" + ) endif() else() - vcpkg_find_acquire_program(${interpreter}) - find_file(SCRIPT_${program} NAMES ${SCRIPTNAME} PATHS ${paths_to_search} NO_DEFAULT_PATH) - if(NOT SCRIPT_${program}) - find_file(SCRIPT_${program} NAMES ${SCRIPTNAME}) - if(SCRIPT_${program} AND NOT program_version_checked) - set(${program} ${${interpreter}} ${SCRIPT_${program}}) - z_vcpkg_find_acquire_program_version_check() - set(program_version_checked ON) - if(NOT ${program}) - unset(SCRIPT_${program} CACHE) - endif() - elseif(program_version_checked) - message(FATAL_ERROR "Unable to find ${program_name} with min version of ${program_version}") - endif() - endif() + find_file(SCRIPT_${program} NAMES ${SCRIPTNAME}) if(SCRIPT_${program}) - set(${program} ${${interpreter}} ${SCRIPT_${program}}) + vcpkg_list(SET program_tmp ${${interpreter}} ${SCRIPT_${program}}) + set("${program}" "${program_tmp}" CACHE INTERNAL "") + z_vcpkg_find_acquire_program_version_check(version_is_good + COMMAND ${${program}} ${version_command} + MIN_VERSION "${program_version}" + PROGRAM_NAME "${program_name}" + ) + endif() + + if(NOT version_is_good) + unset("${program}" PARENT_SCOPE) + set("${program}" "${program}-NOTFOUND" CACHE INTERNAL "") + endif() +endfunction() + +function(z_vcpkg_find_acquire_program_find_internal) + if("${interpreter}" STREQUAL "") + find_program(${program} + ${program_name} + PATHS ${paths_to_search} + NO_DEFAULT_PATH) + else() + vcpkg_find_acquire_program("${interpreter}") + find_file(SCRIPT_${program} + NAMES ${SCRIPTNAME} + PATHS ${paths_to_search} + NO_DEFAULT_PATH) + if(SCRIPT_${program}) + set("${program}" ${${interpreter}} ${SCRIPT_${program}} CACHE INTERNAL "") endif() endif() -endmacro() +endfunction() function(vcpkg_find_acquire_program program) if("${${program}}") @@ -532,7 +551,10 @@ function(vcpkg_find_acquire_program program) set(full_subdirectory "${CMAKE_MATCH_1}") endif() - z_vcpkg_find_acquire_program_find() + z_vcpkg_find_acquire_program_find_internal() + if(NOT ${program}) + z_vcpkg_find_acquire_program_find_external() + endif() if(NOT ${program}) if(NOT VCPKG_HOST_IS_WINDOWS AND NOT supported_on_unix) set(EXAMPLE ".") @@ -597,7 +619,7 @@ function(vcpkg_find_acquire_program program) ) endif() unset(${program} CACHE) - z_vcpkg_find_acquire_program_find() + z_vcpkg_find_acquire_program_find_internal() if(NOT ${program}) message(FATAL_ERROR "Unable to find ${program}") endif() From 4f2c899649b9f734b04c45afc0d797c8060cc662 Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Wed, 3 Nov 2021 12:48:20 -0700 Subject: [PATCH 07/17] rename more vars --- .../cmake/vcpkg_find_acquire_program.cmake | 257 +++++++++--------- 1 file changed, 131 insertions(+), 126 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 16dfc59a513318..dc93b45a268b11 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -127,6 +127,9 @@ function(vcpkg_find_acquire_program program) set(raw_executable "OFF") set(program_name "") set(program_version "") + set(download_urls "") + set(download_filename "") + set(download_sha512 "") set(rename_binary_to "") set(tool_subdirectory "") set(interpreter "") @@ -134,57 +137,59 @@ function(vcpkg_find_acquire_program program) set(post_install_command "") set(paths_to_search "") set(version_command "") + set(brew_package_name "") + set(apt_package_name "") if(program MATCHES "PERL") set(program_name perl) set(program_version 5.32.1.1) set(tool_subdirectory ${program_version}) set(paths_to_search ${DOWNLOADS}/tools/perl/${tool_subdirectory}/perl/bin) - set(BREW_PACKAGE_NAME "perl") - set(APT_PACKAGE_NAME "perl") - set(URL + set(brew_package_name "perl") + set(apt_package_name "perl") + set(download_urls "https://strawberryperl.com/download/${program_version}/strawberry-perl-${program_version}-32bit.zip" ) - set(ARCHIVE "strawberry-perl-${program_version}-32bit.zip") - set(HASH 936381254fea2e596db6a16c23b08ced25c4081fda484e1b8c4356755016e4b956bd00f3d2ee651d5f41a7695e9998f6c1ac3f4a237212b9c55aca8c5fea14e9) + set(download_filename "strawberry-perl-${program_version}-32bit.zip") + set(download_sha512 936381254fea2e596db6a16c23b08ced25c4081fda484e1b8c4356755016e4b956bd00f3d2ee651d5f41a7695e9998f6c1ac3f4a237212b9c55aca8c5fea14e9) elseif(program MATCHES "NASM") set(program_name nasm) set(program_version 2.15.05) set(paths_to_search ${DOWNLOADS}/tools/nasm/nasm-${program_version}) - set(BREW_PACKAGE_NAME "nasm") - set(APT_PACKAGE_NAME "nasm") - set(URL + set(brew_package_name "nasm") + set(apt_package_name "nasm") + set(download_urls "https://www.nasm.us/pub/nasm/releasebuilds/${program_version}/win32/nasm-${program_version}-win32.zip" "https://fossies.org/windows/misc/nasm-${program_version}-win32.zip" ) - set(ARCHIVE "nasm-${program_version}-win32.zip") - set(HASH 9412b8caa07e15eac8f500f6f8fab9f038d95dc25e0124b08a80645607cf5761225f98546b52eac7b894420d64f26c3cbf22c19cd286bbe583f7c964256c97ed) + set(download_filename "nasm-${program_version}-win32.zip") + set(download_sha512 9412b8caa07e15eac8f500f6f8fab9f038d95dc25e0124b08a80645607cf5761225f98546b52eac7b894420d64f26c3cbf22c19cd286bbe583f7c964256c97ed) elseif(program MATCHES "YASM") set(program_name yasm) set(program_version 1.3.0.6.g1962) set(tool_subdirectory 1.3.0.6) - set(BREW_PACKAGE_NAME "yasm") - set(APT_PACKAGE_NAME "yasm") - set(URL "https://www.tortall.net/projects/yasm/snapshots/v${program_version}/yasm-${program_version}.exe") - set(ARCHIVE "yasm-${program_version}.exe") + set(brew_package_name "yasm") + set(apt_package_name "yasm") + set(download_urls "https://www.tortall.net/projects/yasm/snapshots/v${program_version}/yasm-${program_version}.exe") + set(download_filename "yasm-${program_version}.exe") set(rename_binary_to "yasm.exe") set(raw_executable ON) - set(HASH c1945669d983b632a10c5ff31e86d6ecbff143c3d8b2c433c0d3d18f84356d2b351f71ac05fd44e5403651b00c31db0d14615d7f9a6ecce5750438d37105c55b) + set(download_sha512 c1945669d983b632a10c5ff31e86d6ecbff143c3d8b2c433c0d3d18f84356d2b351f71ac05fd44e5403651b00c31db0d14615d7f9a6ecce5750438d37105c55b) elseif(program MATCHES "GIT") set(program_name git) if(CMAKE_HOST_WIN32) set(base_version 2.32.0) set(program_version 2.32.0.2) set(tool_subdirectory "git-${program_version}-2-windows") - set(URL "https://github.com/git-for-windows/git/releases/download/v${base_version}.windows.2/PortableGit-${program_version}-32-bit.7z.exe") - set(ARCHIVE "PortableGit-${program_version}-32-bit.7z.exe") - set(HASH 867d8534972cbaf7a4224e25a14d484f8d17ef186f8d79e9a758afb90cf69541375cb7615a39702311f4809cb8371ef85c2b1a15bfffe9e48f0e597ac011b348) + set(download_urls "https://github.com/git-for-windows/git/releases/download/v${base_version}.windows.2/PortableGit-${program_version}-32-bit.7z.exe") + set(download_filename "PortableGit-${program_version}-32-bit.7z.exe") + set(download_sha512 867d8534972cbaf7a4224e25a14d484f8d17ef186f8d79e9a758afb90cf69541375cb7615a39702311f4809cb8371ef85c2b1a15bfffe9e48f0e597ac011b348) set(paths_to_search "${DOWNLOADS}/tools/${tool_subdirectory}/mingw32/bin" "${DOWNLOADS}/tools/git/${tool_subdirectory}/mingw32/bin") else() - set(BREW_PACKAGE_NAME "git") - set(APT_PACKAGE_NAME "git") + set(brew_package_name "git") + set(apt_package_name "git") endif() elseif(program MATCHES "GN") set(program_name gn) @@ -194,50 +199,50 @@ function(vcpkg_find_acquire_program program) set(supported_on_unix ON) set(program_version "xus7xtaPhpv5vCmKFOnsBVoB-PKmhZvRsSTjbQAuF0MC") set(GN_PLATFORM "linux-amd64") - set(HASH "871e75d7f3597b74fb99e36bb41fe5a9f8ce8a4d9f167f4729fc6e444807a59f35ec8aca70c2274a99c79d70a1108272be1ad991678a8ceb39e30f77abb13135") + set(download_sha512 "871e75d7f3597b74fb99e36bb41fe5a9f8ce8a4d9f167f4729fc6e444807a59f35ec8aca70c2274a99c79d70a1108272be1ad991678a8ceb39e30f77abb13135") elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") set(supported_on_unix ON) set(program_version "qhxILDNcJ2H44HfHmfiU-XIY3E_SIXvFqLd2wvbIgOoC") set(GN_PLATFORM "mac-amd64") - set(HASH "03ee64cb15bae7fceb412900d470601090bce147cfd45eb9b46683ac1a5dca848465a5d74c55a47df7f0e334d708151249a6d37bb021de74dd48b97ed4a07937") + set(download_sha512 "03ee64cb15bae7fceb412900d470601090bce147cfd45eb9b46683ac1a5dca848465a5d74c55a47df7f0e334d708151249a6d37bb021de74dd48b97ed4a07937") else() set(program_version "qUkAhy9J0P7c5racy-9wB6AHNK_btS18im8S06_ehhwC") set(GN_PLATFORM "windows-amd64") - set(HASH "263e02bd79eee0cb7b664831b7898565c5656a046328d8f187ef7ae2a4d766991d477b190c9b425fcc960ab76f381cd3e396afb85cba7408ca9e74eb32c175db") + set(download_sha512 "263e02bd79eee0cb7b664831b7898565c5656a046328d8f187ef7ae2a4d766991d477b190c9b425fcc960ab76f381cd3e396afb85cba7408ca9e74eb32c175db") endif() set(tool_subdirectory "${program_version}") - set(URL "${CIPD_DOWNLOAD_GN}/${GN_PLATFORM}/+/${program_version}") - set(ARCHIVE "gn-${GN_PLATFORM}.zip") + set(download_urls "${CIPD_DOWNLOAD_GN}/${GN_PLATFORM}/+/${program_version}") + set(download_filename "gn-${GN_PLATFORM}.zip") elseif(program MATCHES "GO") set(program_name go) set(tool_subdirectory 1.16.6.windows-386) set(paths_to_search ${DOWNLOADS}/tools/go/${tool_subdirectory}/go/bin) - set(BREW_PACKAGE_NAME "go") - set(APT_PACKAGE_NAME "golang-go") - set(URL "https://dl.google.com/go/go${tool_subdirectory}.zip") - set(ARCHIVE "go${tool_subdirectory}.zip") - set(HASH 2a1e539ed628c0cca5935d24d22cf3a7165f5c80e12a4003ac184deae6a6d0aa31f582f3e8257b0730adfc09aeec3a0e62f4732e658c312d5382170bcd8c94d8) + set(brew_package_name "go") + set(apt_package_name "golang-go") + set(download_urls "https://dl.google.com/go/go${tool_subdirectory}.zip") + set(download_filename "go${tool_subdirectory}.zip") + set(download_sha512 2a1e539ed628c0cca5935d24d22cf3a7165f5c80e12a4003ac184deae6a6d0aa31f582f3e8257b0730adfc09aeec3a0e62f4732e658c312d5382170bcd8c94d8) elseif(program MATCHES "PYTHON3") if(CMAKE_HOST_WIN32) set(program_name python) set(program_version 3.10.0) if (VCPKG_TARGET_ARCHITECTURE STREQUAL x86) set(tool_subdirectory "python-${program_version}-x86") - set(URL "https://www.python.org/ftp/python/${program_version}/python-${program_version}-embed-win32.zip") - set(ARCHIVE "python-${program_version}-embed-win32.zip") - set(HASH 0b007bfa02cdd48b3c260986493fa124a6b9d794da6eba2b4fad0d779fd655e9ae4e16daf5f02ff5b30a17abcfc1499bc6bee394c0f8abe933f2d4fe702af3cd) + set(download_urls "https://www.python.org/ftp/python/${program_version}/python-${program_version}-embed-win32.zip") + set(download_filename "python-${program_version}-embed-win32.zip") + set(download_sha512 0b007bfa02cdd48b3c260986493fa124a6b9d794da6eba2b4fad0d779fd655e9ae4e16daf5f02ff5b30a17abcfc1499bc6bee394c0f8abe933f2d4fe702af3cd) else() set(tool_subdirectory "python-${program_version}-x64") - set(URL "https://www.python.org/ftp/python/${program_version}/python-${program_version}-embed-amd64.zip") - set(ARCHIVE "python-${program_version}-embed-amd64.zip") - set(HASH 23d81d007698383d8dc088da532dcb86c6ceca7eb78ba5688fc2e18ee7f33f53a5632282873762293b8164556dfb15870f8ffb7abd368faba0a3d8d5d5bc6297) + set(download_urls "https://www.python.org/ftp/python/${program_version}/python-${program_version}-embed-amd64.zip") + set(download_filename "python-${program_version}-embed-amd64.zip") + set(download_sha512 23d81d007698383d8dc088da532dcb86c6ceca7eb78ba5688fc2e18ee7f33f53a5632282873762293b8164556dfb15870f8ffb7abd368faba0a3d8d5d5bc6297) endif() set(paths_to_search ${DOWNLOADS}/tools/python/${tool_subdirectory}) set(post_install_command ${CMAKE_COMMAND} -E rm python310._pth) else() set(program_name python3) - set(BREW_PACKAGE_NAME "python") - set(APT_PACKAGE_NAME "python3") + set(brew_package_name "python") + set(apt_package_name "python3") endif() elseif(program MATCHES "PYTHON2") if(CMAKE_HOST_WIN32) @@ -245,98 +250,98 @@ function(vcpkg_find_acquire_program program) set(program_version 2.7.18) if (VCPKG_TARGET_ARCHITECTURE STREQUAL x86) set(tool_subdirectory "python-${program_version}-x86") - set(URL "https://www.python.org/ftp/python/${program_version}/python-${program_version}.msi") - set(ARCHIVE "python-${program_version}.msi") - set(HASH 2c112733c777ddbf189b0a54047a9d5851ebce0564cc38b9687d79ce6c7a09006109dbad8627fb1a60c3ad55e261db850d9dfa454af0533b460b2afc316fe115) + set(download_urls "https://www.python.org/ftp/python/${program_version}/python-${program_version}.msi") + set(download_filename "python-${program_version}.msi") + set(download_sha512 2c112733c777ddbf189b0a54047a9d5851ebce0564cc38b9687d79ce6c7a09006109dbad8627fb1a60c3ad55e261db850d9dfa454af0533b460b2afc316fe115) else() set(tool_subdirectory "python-${program_version}-x64") - set(URL "https://www.python.org/ftp/python/${program_version}/python-${program_version}.amd64.msi") - set(ARCHIVE "python-${program_version}.amd64.msi") - set(HASH 6a81a413b80fd39893e7444fd47efa455d240cbb77a456c9d12f7cf64962b38c08cfa244cd9c50a65947c40f936c6c8c5782f7236d7b92445ab3dd01e82af23e) + set(download_urls "https://www.python.org/ftp/python/${program_version}/python-${program_version}.amd64.msi") + set(download_filename "python-${program_version}.amd64.msi") + set(download_sha512 6a81a413b80fd39893e7444fd47efa455d240cbb77a456c9d12f7cf64962b38c08cfa244cd9c50a65947c40f936c6c8c5782f7236d7b92445ab3dd01e82af23e) endif() set(paths_to_search ${DOWNLOADS}/tools/python/${tool_subdirectory}) elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") # macOS includes Python 2.7 built-in as `python` set(program_name python) - set(BREW_PACKAGE_NAME "python2") + set(brew_package_name "python2") else() set(program_name python2) - set(APT_PACKAGE_NAME "python") + set(apt_package_name "python") endif() elseif(program MATCHES "RUBY") set(program_name "ruby") set(program_version 2.7.4-1) set(paths_to_search ${DOWNLOADS}/tools/ruby/rubyinstaller-${program_version}-x86/bin) - set(URL https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-${program_version}/rubyinstaller-${program_version}-x86.7z) - set(ARCHIVE rubyinstaller-${program_version}-x86.7z) - set(HASH 4bf459c987b407bdda328c52d95060bf6ad48fc3e5ed5f64d4b205c5b4153c7a00cb6f9da6c0bcd5f2e001e9dc3dda0b72269ec4afdeffd658b93c085cd1d859) + set(download_urls https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-${program_version}/rubyinstaller-${program_version}-x86.7z) + set(download_filename rubyinstaller-${program_version}-x86.7z) + set(download_sha512 4bf459c987b407bdda328c52d95060bf6ad48fc3e5ed5f64d4b205c5b4153c7a00cb6f9da6c0bcd5f2e001e9dc3dda0b72269ec4afdeffd658b93c085cd1d859) elseif(program MATCHES "JOM") set(program_name jom) set(tool_subdirectory "jom-1.1.3") set(paths_to_search ${DOWNLOADS}/tools/jom/${tool_subdirectory}) - set(URL + set(download_urls "https://download.qt.io/official_releases/jom/jom_1_1_3.zip" "https://mirrors.ocf.berkeley.edu/qt/official_releases/jom/jom_1_1_3.zip" ) - set(ARCHIVE "jom_1_1_3.zip") - set(HASH 5b158ead86be4eb3a6780928d9163f8562372f30bde051d8c281d81027b766119a6e9241166b91de0aa6146836cea77e5121290e62e31b7a959407840fc57b33) + set(download_filename "jom_1_1_3.zip") + set(download_sha512 5b158ead86be4eb3a6780928d9163f8562372f30bde051d8c281d81027b766119a6e9241166b91de0aa6146836cea77e5121290e62e31b7a959407840fc57b33) elseif(program MATCHES "7Z") set(program_name 7z) set(paths_to_search "${DOWNLOADS}/tools/7z/Files/7-Zip") - set(URL "https://7-zip.org/a/7z1900.msi") - set(ARCHIVE "7z1900.msi") - set(HASH f73b04e2d9f29d4393fde572dcf3c3f0f6fa27e747e5df292294ab7536ae24c239bf917689d71eb10cc49f6b9a4ace26d7c122ee887d93cc935f268c404e9067) + set(download_urls "https://7-zip.org/a/7z1900.msi") + set(download_filename "7z1900.msi") + set(download_sha512 f73b04e2d9f29d4393fde572dcf3c3f0f6fa27e747e5df292294ab7536ae24c239bf917689d71eb10cc49f6b9a4ace26d7c122ee887d93cc935f268c404e9067) elseif(program MATCHES "NINJA") set(program_name ninja) set(program_version 1.10.2) set(supported_on_unix ON) if(CMAKE_HOST_WIN32) - set(ARCHIVE "ninja-win-${program_version}.zip") + set(download_filename "ninja-win-${program_version}.zip") set(tool_subdirectory "${program_version}-windows") - set(URL "https://github.com/ninja-build/ninja/releases/download/v${program_version}/ninja-win.zip") - set(HASH 6004140d92e86afbb17b49c49037ccd0786ce238f340f7d0e62b4b0c29ed0d6ad0bab11feda2094ae849c387d70d63504393714ed0a1f4d3a1f155af7a4f1ba3) + set(download_urls "https://github.com/ninja-build/ninja/releases/download/v${program_version}/ninja-win.zip") + set(download_sha512 6004140d92e86afbb17b49c49037ccd0786ce238f340f7d0e62b4b0c29ed0d6ad0bab11feda2094ae849c387d70d63504393714ed0a1f4d3a1f155af7a4f1ba3) elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") - set(ARCHIVE "ninja-mac-${program_version}.zip") - set(URL "https://github.com/ninja-build/ninja/releases/download/v${program_version}/ninja-mac.zip") + set(download_filename "ninja-mac-${program_version}.zip") + set(download_urls "https://github.com/ninja-build/ninja/releases/download/v${program_version}/ninja-mac.zip") set(tool_subdirectory "${program_version}-osx") set(paths_to_search "${DOWNLOADS}/tools/ninja-${program_version}-osx") - set(HASH bcd12f6a3337591306d1b99a7a25a6933779ba68db79f17c1d3087d7b6308d245daac08df99087ff6be8dc7dd0dcdbb3a50839a144745fa719502b3a7a07260b) + set(download_sha512 bcd12f6a3337591306d1b99a7a25a6933779ba68db79f17c1d3087d7b6308d245daac08df99087ff6be8dc7dd0dcdbb3a50839a144745fa719502b3a7a07260b) elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "FreeBSD") set(paths_to_search "${DOWNLOADS}/tools/${tool_subdirectory}-freebsd") set(supported_on_unix OFF) else() - set(ARCHIVE "ninja-linux-${program_version}.zip") - set(URL "https://github.com/ninja-build/ninja/releases/download/v${program_version}/ninja-linux.zip") + set(download_filename "ninja-linux-${program_version}.zip") + set(download_urls "https://github.com/ninja-build/ninja/releases/download/v${program_version}/ninja-linux.zip") set(tool_subdirectory "${program_version}-linux") set(paths_to_search "${DOWNLOADS}/tools/ninja-${program_version}-linux") - set(HASH 93e802e9c17fb59636cddde4bad1ddaadad624f4ecfee00d5c78790330a4e9d433180e795718cda27da57215ce643c3929cf72c85337ee019d868c56f2deeef3) + set(download_sha512 93e802e9c17fb59636cddde4bad1ddaadad624f4ecfee00d5c78790330a4e9d433180e795718cda27da57215ce643c3929cf72c85337ee019d868c56f2deeef3) endif() set(version_command --version) elseif(program MATCHES "NUGET") set(program_name nuget) set(tool_subdirectory "5.11.0") set(paths_to_search "${DOWNLOADS}/tools/nuget-${tool_subdirectory}-windows") - set(BREW_PACKAGE_NAME "nuget") - set(URL "https://dist.nuget.org/win-x86-commandline/v5.11.0/nuget.exe") + set(brew_package_name "nuget") + set(download_urls "https://dist.nuget.org/win-x86-commandline/v5.11.0/nuget.exe") set(rename_binary_to "nuget.exe") - set(ARCHIVE "nuget.5.11.0.exe") + set(download_filename "nuget.5.11.0.exe") set(raw_executable ON) - set(HASH 06a337c9404dec392709834ef2cdbdce611e104b510ef40201849595d46d242151749aef65bc2d7ce5ade9ebfda83b64c03ce14c8f35ca9957a17a8c02b8c4b7) + set(download_sha512 06a337c9404dec392709834ef2cdbdce611e104b510ef40201849595d46d242151749aef65bc2d7ce5ade9ebfda83b64c03ce14c8f35ca9957a17a8c02b8c4b7) elseif(program MATCHES "MESON") set(program_version 0.58.1) set(program_name meson) set(interpreter PYTHON3) - set(APT_PACKAGE_NAME "meson") - set(BREW_PACKAGE_NAME "meson") + set(apt_package_name "meson") + set(brew_package_name "meson") set(SCRIPTNAME meson meson.py) set(REF aeda7f249c4a5dbbecc52e44f382246a2377b5b0) set(paths_to_search ${DOWNLOADS}/tools/meson/meson-${REF}) - set(URL "https://github.com/mesonbuild/meson/archive/${REF}.tar.gz") - set(ARCHIVE "meson-${REF}.tar.gz") + set(download_urls "https://github.com/mesonbuild/meson/archive/${REF}.tar.gz") + set(download_filename "meson-${REF}.tar.gz") #set(paths_to_search ${DOWNLOADS}/tools/meson/meson-${program_version}) - #set(URL "https://github.com/mesonbuild/meson/releases/download/${program_version}/meson-${program_version}.tar.gz") - #set(ARCHIVE "meson-${program_version}.tar.gz") - set(HASH 18a012a45274dbb4582e99fd69d920f38831e788d9860f9553c64847bedb1c2010ae0b5c0ef4a4350c03f5e0f95aaa0395378e1208109b59640c1a70b1e202d2) + #set(download_urls "https://github.com/mesonbuild/meson/releases/download/${program_version}/meson-${program_version}.tar.gz") + #set(download_filename "meson-${program_version}.tar.gz") + set(download_sha512 18a012a45274dbb4582e99fd69d920f38831e788d9860f9553c64847bedb1c2010ae0b5c0ef4a4350c03f5e0f95aaa0395378e1208109b59640c1a70b1e202d2) set(supported_on_unix ON) set(version_command --version) elseif(program MATCHES "FLEX" OR program MATCHES "BISON") @@ -359,12 +364,12 @@ function(vcpkg_find_acquire_program program) endif() elseif(program MATCHES "FLEX") set(program_name flex) - set(APT_PACKAGE_NAME flex) - set(BREW_PACKAGE_NAME flex) + set(apt_package_name flex) + set(brew_package_name flex) else() set(program_name bison) - set(APT_PACKAGE_NAME bison) - set(BREW_PACKAGE_NAME bison) + set(apt_package_name bison) + set(brew_package_name bison) if (APPLE) set(paths_to_search /usr/local/opt/bison/bin) endif() @@ -390,24 +395,24 @@ function(vcpkg_find_acquire_program program) endif() if(HOST_ARCH_ MATCHES "64") - set(URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${program_version}/LLVM-${program_version}-win64.exe") - set(ARCHIVE "LLVM-${program_version}-win64.7z.exe") - set(HASH 67a9b54abad5143fa5f79f0cfc184be1394c9fc894fa9cee709943cb6ccbde8f0ea6003d8fcc20eccf035631abe4009cc0f694ac84e7879331cebba8125e4c7f) + set(download_urls "https://github.com/llvm/llvm-project/releases/download/llvmorg-${program_version}/LLVM-${program_version}-win64.exe") + set(download_filename "LLVM-${program_version}-win64.7z.exe") + set(download_sha512 67a9b54abad5143fa5f79f0cfc184be1394c9fc894fa9cee709943cb6ccbde8f0ea6003d8fcc20eccf035631abe4009cc0f694ac84e7879331cebba8125e4c7f) else() - set(URL "https://github.com/llvm/llvm-project/releases/download/llvmorg-${program_version}/LLVM-${program_version}-win32.exe") - set(ARCHIVE "LLVM-${program_version}-win32.7z.exe") - set(HASH 92fa5252fd08c1414ee6d71e2544cd2c44872124c47225f8d98b3af711d20e699f2888bc30642dfd00e005013da1607a593674fb4878951cc434694f9a119199) + set(download_urls "https://github.com/llvm/llvm-project/releases/download/llvmorg-${program_version}/LLVM-${program_version}-win32.exe") + set(download_filename "LLVM-${program_version}-win32.7z.exe") + set(download_sha512 92fa5252fd08c1414ee6d71e2544cd2c44872124c47225f8d98b3af711d20e699f2888bc30642dfd00e005013da1607a593674fb4878951cc434694f9a119199) endif() endif() - set(BREW_PACKAGE_NAME "llvm") - set(APT_PACKAGE_NAME "clang") + set(brew_package_name "llvm") + set(apt_package_name "clang") elseif(program MATCHES "GPERF") set(program_name gperf) set(program_version 3.0.1) set(paths_to_search ${DOWNLOADS}/tools/gperf/bin) - set(URL "https://sourceforge.net/projects/gnuwin32/files/gperf/${program_version}/gperf-${program_version}-bin.zip/download") - set(ARCHIVE "gperf-${program_version}-bin.zip") - set(HASH 3f2d3418304390ecd729b85f65240a9e4d204b218345f82ea466ca3d7467789f43d0d2129fcffc18eaad3513f49963e79775b10cc223979540fa2e502fe7d4d9) + set(download_urls "https://sourceforge.net/projects/gnuwin32/files/gperf/${program_version}/gperf-${program_version}-bin.zip/download") + set(download_filename "gperf-${program_version}-bin.zip") + set(download_sha512 3f2d3418304390ecd729b85f65240a9e4d204b218345f82ea466ca3d7467789f43d0d2129fcffc18eaad3513f49963e79775b10cc223979540fa2e502fe7d4d9) elseif(program MATCHES "GASPREPROCESSOR") set(raw_executable true) set(program_name gas-preprocessor) @@ -416,25 +421,25 @@ function(vcpkg_find_acquire_program program) set(SCRIPTNAME "gas-preprocessor.pl") set(paths_to_search ${DOWNLOADS}/tools/gas-preprocessor/${tool_subdirectory}) set(rename_binary_to "gas-preprocessor.pl") - set(URL "https://raw.githubusercontent.com/FFmpeg/gas-preprocessor/4daa611556a0558dfe537b4f7ad80f7e50a079c1/gas-preprocessor.pl") - set(ARCHIVE "gas-preprocessor-${tool_subdirectory}.pl") - set(HASH 2737ba3c1cf85faeb1fbfe015f7bad170f43a857a50a1b3d81fa93ba325d481f73f271c5a886ff8b7eef206662e19f0e9ef24861dfc608b67b8ea8a2062dc061) + set(download_urls "https://raw.githubusercontent.com/FFmpeg/gas-preprocessor/4daa611556a0558dfe537b4f7ad80f7e50a079c1/gas-preprocessor.pl") + set(download_filename "gas-preprocessor-${tool_subdirectory}.pl") + set(download_sha512 2737ba3c1cf85faeb1fbfe015f7bad170f43a857a50a1b3d81fa93ba325d481f73f271c5a886ff8b7eef206662e19f0e9ef24861dfc608b67b8ea8a2062dc061) elseif(program MATCHES "DARK") set(program_name dark) set(tool_subdirectory "wix311-binaries") set(paths_to_search ${DOWNLOADS}/tools/dark/${tool_subdirectory}) - set(URL "https://github.com/wixtoolset/wix3/releases/download/wix311rtm/wix311-binaries.zip") - set(ARCHIVE "wix311-binaries.zip") - set(HASH 74f0fa29b5991ca655e34a9d1000d47d4272e071113fada86727ee943d913177ae96dc3d435eaf494d2158f37560cd4c2c5274176946ebdb17bf2354ced1c516) + set(download_urls "https://github.com/wixtoolset/wix3/releases/download/wix311rtm/wix311-binaries.zip") + set(download_filename "wix311-binaries.zip") + set(download_sha512 74f0fa29b5991ca655e34a9d1000d47d4272e071113fada86727ee943d913177ae96dc3d435eaf494d2158f37560cd4c2c5274176946ebdb17bf2354ced1c516) elseif(program MATCHES "SCONS") set(program_name scons) set(program_version 4.1.0) set(tool_subdirectory ${program_version}) set(interpreter PYTHON2) set(SCRIPTNAME "scons.py") - set(URL "https://sourceforge.net/projects/scons/files/scons-local-${program_version}.zip/download") - set(ARCHIVE "scons-local-${program_version}.zip") - set(HASH b173176ce8aca25039c64fcc68ec1b9ad31e03a926fd545e7631b3f9b374d914adffc593f505e3e7e2867b0ffe85e8deb0b39afe314edf05d02974ce5db1badb) + set(download_urls "https://sourceforge.net/projects/scons/files/scons-local-${program_version}.zip/download") + set(download_filename "scons-local-${program_version}.zip") + set(download_sha512 b173176ce8aca25039c64fcc68ec1b9ad31e03a926fd545e7631b3f9b374d914adffc593f505e3e7e2867b0ffe85e8deb0b39afe314edf05d02974ce5db1badb) elseif(program MATCHES "SWIG") set(program_version 4.0.2) set(program_name swig) @@ -449,8 +454,8 @@ function(vcpkg_find_acquire_program program) ) set(tool_subdirectory b8f105f9b9-f0518bc3b7/swigwin-${program_version}) else() - set(APT_PACKAGE_NAME "swig") - set(BREW_PACKAGE_NAME "swig") + set(apt_package_name "swig") + set(brew_package_name "swig") endif() elseif(program MATCHES "DOXYGEN") @@ -472,30 +477,30 @@ function(vcpkg_find_acquire_program program) if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") set(supported_on_unix ON) set(tool_subdirectory ${program_version}-linux) - set(URL "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-x86_64") - set(ARCHIVE "bazel-${tool_subdirectory}-x86_64") + set(download_urls "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-x86_64") + set(download_filename "bazel-${tool_subdirectory}-x86_64") set(raw_executable ON) - set(HASH 50aa0894dbeedb9189a56f17baa8cecfa55c5f9c1f93a61b9ab5e10984754a400884fc9802b4979f536778e15f813a72807396b4b47694e4c05eadb841361c69) + set(download_sha512 50aa0894dbeedb9189a56f17baa8cecfa55c5f9c1f93a61b9ab5e10984754a400884fc9802b4979f536778e15f813a72807396b4b47694e4c05eadb841361c69) elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") set(supported_on_unix ON) set(tool_subdirectory ${program_version}-darwin) - set(URL "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-x86_64") - set(ARCHIVE "bazel-${tool_subdirectory}-x86_64") + set(download_urls "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-x86_64") + set(download_filename "bazel-${tool_subdirectory}-x86_64") set(raw_executable ON) - set(HASH 3500560c9d49d37a1ead2d2777d673c6f1874582883e141ecd5b3991005b1b6b8aab5f255c187133d771497c2a956f5c1e0dfad04dc453525634537e65b649af) + set(download_sha512 3500560c9d49d37a1ead2d2777d673c6f1874582883e141ecd5b3991005b1b6b8aab5f255c187133d771497c2a956f5c1e0dfad04dc453525634537e65b649af) else() set(tool_subdirectory ${program_version}-windows) - set(URL "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-x86_64.zip") - set(ARCHIVE "bazel-${tool_subdirectory}-x86_64.zip") - set(HASH 3954ab54b465d62eef397767dac7ce21d06ac8ea3e1571d0e7b1f0ea8b5c2cf44eea5d252b85a63a1e1a08dbe9a219783cc23c2888673c35e2df03edfdc9e5a7) + set(download_urls "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-x86_64.zip") + set(download_filename "bazel-${tool_subdirectory}-x86_64.zip") + set(download_sha512 3954ab54b465d62eef397767dac7ce21d06ac8ea3e1571d0e7b1f0ea8b5c2cf44eea5d252b85a63a1e1a08dbe9a219783cc23c2888673c35e2df03edfdc9e5a7) endif() elseif(program MATCHES "ARIA2") set(program_name aria2c) set(program_version 1.35.0) set(paths_to_search ${DOWNLOADS}/tools/aria2c/aria2-${program_version}-win-32bit-build1) - set(URL "https://github.com/aria2/aria2/releases/download/release-${program_version}/aria2-${program_version}-win-32bit-build1.zip") - set(ARCHIVE "aria2-${program_version}-win-32bit-build1.zip") - set(HASH 933537cad820b1cecf43a9eeca7e1b241dd7b1c902ee942441a166f2c38845f16046321efbdfa2f83c7e9fc50c7ecc5da6fd00e0c6e2124c07d3b783aa5092a4) + set(download_urls "https://github.com/aria2/aria2/releases/download/release-${program_version}/aria2-${program_version}-win-32bit-build1.zip") + set(download_filename "aria2-${program_version}-win-32bit-build1.zip") + set(download_sha512 933537cad820b1cecf43a9eeca7e1b241dd7b1c902ee942441a166f2c38845f16046321efbdfa2f83c7e9fc50c7ecc5da6fd00e0c6e2124c07d3b783aa5092a4) elseif(program MATCHES "PKGCONFIG") set(program_name pkg-config) if(ENV{PKG_CONFIG}) @@ -508,10 +513,10 @@ function(vcpkg_find_acquire_program program) set(rename_binary_to "pkg-config") set(program_version 0.29.2.1) set(raw_executable ON) - set(ARCHIVE "pkg-config.openbsd") + set(download_filename "pkg-config.openbsd") set(tool_subdirectory "openbsd") - set(URL "https://raw.githubusercontent.com/jgilje/pkg-config-openbsd/master/pkg-config") - set(HASH b7ec9017b445e00ae1377e36e774cf3f5194ab262595840b449832707d11e443a102675f66d8b7e8b2e2f28cebd6e256835507b1e0c69644cc9febab8285080b) + set(download_urls "https://raw.githubusercontent.com/jgilje/pkg-config-openbsd/master/pkg-config") + set(download_sha512 b7ec9017b445e00ae1377e36e774cf3f5194ab262595840b449832707d11e443a102675f66d8b7e8b2e2f28cebd6e256835507b1e0c69644cc9febab8285080b) set(version_command --version) elseif(CMAKE_HOST_WIN32) if(NOT EXISTS "${PKGCONFIG}") @@ -530,8 +535,8 @@ function(vcpkg_find_acquire_program program) set(${program} "${PKGCONFIG_ROOT}/mingw32/bin/pkg-config.exe" PARENT_SCOPE) return() else() - set(BREW_PACKAGE_NAME pkg-config) - set(APT_PACKAGE_NAME pkg-config) + set(brew_package_name pkg-config) + set(apt_package_name pkg-config) set(paths_to_search "/bin" "/usr/bin" "/usr/local/bin") endif() else() @@ -558,10 +563,10 @@ function(vcpkg_find_acquire_program program) if(NOT ${program}) if(NOT VCPKG_HOST_IS_WINDOWS AND NOT supported_on_unix) set(EXAMPLE ".") - if(NOT "${BREW_PACKAGE_NAME}" STREQUAL "" AND VCPKG_HOST_IS_OSX) - set(EXAMPLE ":\n brew install ${BREW_PACKAGE_NAME}") - elseif(NOT "${APT_PACKAGE_NAME}" STREQUAL "" AND VCPKG_HOST_IS_LINUX) - set(EXAMPLE ":\n sudo apt-get install ${APT_PACKAGE_NAME}") + if(NOT "${brew_package_name}" STREQUAL "" AND VCPKG_HOST_IS_OSX) + set(EXAMPLE ":\n brew install ${brew_package_name}") + elseif(NOT "${apt_package_name}" STREQUAL "" AND VCPKG_HOST_IS_LINUX) + set(EXAMPLE ":\n sudo apt-get install ${apt_package_name}") endif() message(FATAL_ERROR "Could not find ${program_name}. Please install it via your package manager${EXAMPLE}") endif() @@ -573,9 +578,9 @@ function(vcpkg_find_acquire_program program) unset(_VCPKG_EDITABLE) else() vcpkg_download_distfile(ARCHIVE_PATH - URLS ${URL} - SHA512 ${HASH} - FILENAME ${ARCHIVE} + URLS ${download_urls} + SHA512 ${download_sha512} + FILENAME ${download_filename} ) file(MAKE_DIRECTORY ${full_subdirectory}) @@ -586,7 +591,7 @@ function(vcpkg_find_acquire_program program) file(COPY ${ARCHIVE_PATH} DESTINATION ${full_subdirectory} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) endif() else() - get_filename_component(ARCHIVE_EXTENSION ${ARCHIVE} LAST_EXT) + get_filename_component(ARCHIVE_EXTENSION ${download_filename} LAST_EXT) string(TOLOWER "${ARCHIVE_EXTENSION}" ARCHIVE_EXTENSION) if(ARCHIVE_EXTENSION STREQUAL ".msi") file(TO_NATIVE_PATH "${ARCHIVE_PATH}" ARCHIVE_NATIVE_PATH) From f2d06ea4d8f66bf5f46b5bdf6264b119846b5ddb Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Wed, 3 Nov 2021 13:19:06 -0700 Subject: [PATCH 08/17] oops, minor bug --- scripts/cmake/vcpkg_find_acquire_program.cmake | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index dc93b45a268b11..04ba9f9f420515 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -48,7 +48,7 @@ Note that msys2 has a dedicated helper function: [`vcpkg_acquire_msys`](vcpkg_ac #]===] function(z_vcpkg_find_acquire_program_version_check out_var) - cmake_parse_arguments(PARSE_ARGV 2 arg + cmake_parse_arguments(PARSE_ARGV 1 arg "" "MIN_VERSION;PROGRAM_NAME" "COMMAND" @@ -89,10 +89,11 @@ function(z_vcpkg_find_acquire_program_find_external) vcpkg_list(SET program_tmp ${${interpreter}} ${SCRIPT_${program}}) set("${program}" "${program_tmp}" CACHE INTERNAL "") z_vcpkg_find_acquire_program_version_check(version_is_good - COMMAND ${${program}} ${version_command} + COMMAND ${program_tmp} ${version_command} MIN_VERSION "${program_version}" PROGRAM_NAME "${program_name}" ) + endif() endif() if(NOT version_is_good) From 53608302b8eb404b20e3be94208882139d939e17 Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Wed, 3 Nov 2021 14:57:50 -0700 Subject: [PATCH 09/17] okay I hate this but it's necessary to have the same behavior --- .../cmake/vcpkg_find_acquire_program.cmake | 26 +++++++------------ 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 04ba9f9f420515..372c545f51de2c 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -70,32 +70,26 @@ function(z_vcpkg_find_acquire_program_version_check out_var) endfunction() function(z_vcpkg_find_acquire_program_find_external) - if("${version_command}" STREQUAL "") - return() # can't check for the version being good - endif() - if("${interpreter}" STREQUAL "") find_program(${program} ${program_name}) - if(${program}) - z_vcpkg_find_acquire_program_version_check(version_is_good - COMMAND ${${program}} ${version_command} - MIN_VERSION "${program_version}" - PROGRAM_NAME "${program_name}" - ) - endif() else() find_file(SCRIPT_${program} NAMES ${SCRIPTNAME}) if(SCRIPT_${program}) vcpkg_list(SET program_tmp ${${interpreter}} ${SCRIPT_${program}}) set("${program}" "${program_tmp}" CACHE INTERNAL "") - z_vcpkg_find_acquire_program_version_check(version_is_good - COMMAND ${program_tmp} ${version_command} - MIN_VERSION "${program_version}" - PROGRAM_NAME "${program_name}" - ) endif() endif() + if("${version_command}" STREQUAL "") + set(version_is_good ON) # can't check for the version being good, so assume it is + else() + z_vcpkg_find_acquire_program_version_check(version_is_good + COMMAND ${${program}} ${version_command} + MIN_VERSION "${program_version}" + PROGRAM_NAME "${program_name}" + ) + endif() + if(NOT version_is_good) unset("${program}" PARENT_SCOPE) set("${program}" "${program}-NOTFOUND" CACHE INTERNAL "") From 20519cc040888963dda0be1ba2c0c20d4c672a85 Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Wed, 3 Nov 2021 17:36:23 -0700 Subject: [PATCH 10/17] add more quotes, switch MATCHES -> STREQUAL --- .../cmake/vcpkg_find_acquire_program.cmake | 85 ++++++++++--------- 1 file changed, 43 insertions(+), 42 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 372c545f51de2c..ea81661e723abc 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -71,10 +71,10 @@ endfunction() function(z_vcpkg_find_acquire_program_find_external) if("${interpreter}" STREQUAL "") - find_program(${program} ${program_name}) + find_program("${program}" "${program_name}") else() - find_file(SCRIPT_${program} NAMES ${SCRIPTNAME}) - if(SCRIPT_${program}) + find_file("SCRIPT_${program}" NAMES "${SCRIPTNAME}") + if("${SCRIPT_${program}}") vcpkg_list(SET program_tmp ${${interpreter}} ${SCRIPT_${program}}) set("${program}" "${program_tmp}" CACHE INTERNAL "") endif() @@ -98,14 +98,14 @@ endfunction() function(z_vcpkg_find_acquire_program_find_internal) if("${interpreter}" STREQUAL "") - find_program(${program} - ${program_name} + find_program("${program}" + "${program_name}" PATHS ${paths_to_search} NO_DEFAULT_PATH) else() vcpkg_find_acquire_program("${interpreter}") - find_file(SCRIPT_${program} - NAMES ${SCRIPTNAME} + find_file("SCRIPT_${program}" + NAMES "${SCRIPTNAME}" PATHS ${paths_to_search} NO_DEFAULT_PATH) if(SCRIPT_${program}) @@ -135,7 +135,7 @@ function(vcpkg_find_acquire_program program) set(brew_package_name "") set(apt_package_name "") - if(program MATCHES "PERL") + if(program STREQUAL "PERL") set(program_name perl) set(program_version 5.32.1.1) set(tool_subdirectory ${program_version}) @@ -147,7 +147,7 @@ function(vcpkg_find_acquire_program program) ) set(download_filename "strawberry-perl-${program_version}-32bit.zip") set(download_sha512 936381254fea2e596db6a16c23b08ced25c4081fda484e1b8c4356755016e4b956bd00f3d2ee651d5f41a7695e9998f6c1ac3f4a237212b9c55aca8c5fea14e9) - elseif(program MATCHES "NASM") + elseif(program STREQUAL "NASM") set(program_name nasm) set(program_version 2.15.05) set(paths_to_search ${DOWNLOADS}/tools/nasm/nasm-${program_version}) @@ -159,7 +159,7 @@ function(vcpkg_find_acquire_program program) ) set(download_filename "nasm-${program_version}-win32.zip") set(download_sha512 9412b8caa07e15eac8f500f6f8fab9f038d95dc25e0124b08a80645607cf5761225f98546b52eac7b894420d64f26c3cbf22c19cd286bbe583f7c964256c97ed) - elseif(program MATCHES "YASM") + elseif(program STREQUAL "YASM") set(program_name yasm) set(program_version 1.3.0.6.g1962) set(tool_subdirectory 1.3.0.6) @@ -170,7 +170,7 @@ function(vcpkg_find_acquire_program program) set(rename_binary_to "yasm.exe") set(raw_executable ON) set(download_sha512 c1945669d983b632a10c5ff31e86d6ecbff143c3d8b2c433c0d3d18f84356d2b351f71ac05fd44e5403651b00c31db0d14615d7f9a6ecce5750438d37105c55b) - elseif(program MATCHES "GIT") + elseif(program STREQUAL "GIT") set(program_name git) if(CMAKE_HOST_WIN32) set(base_version 2.32.0) @@ -186,7 +186,7 @@ function(vcpkg_find_acquire_program program) set(brew_package_name "git") set(apt_package_name "git") endif() - elseif(program MATCHES "GN") + elseif(program STREQUAL "GN") set(program_name gn) set(rename_binary_to "gn") set(CIPD_DOWNLOAD_GN "https://chrome-infra-packages.appspot.com/dl/gn/gn") @@ -208,7 +208,7 @@ function(vcpkg_find_acquire_program program) set(tool_subdirectory "${program_version}") set(download_urls "${CIPD_DOWNLOAD_GN}/${GN_PLATFORM}/+/${program_version}") set(download_filename "gn-${GN_PLATFORM}.zip") - elseif(program MATCHES "GO") + elseif(program STREQUAL "GO") set(program_name go) set(tool_subdirectory 1.16.6.windows-386) set(paths_to_search ${DOWNLOADS}/tools/go/${tool_subdirectory}/go/bin) @@ -217,7 +217,7 @@ function(vcpkg_find_acquire_program program) set(download_urls "https://dl.google.com/go/go${tool_subdirectory}.zip") set(download_filename "go${tool_subdirectory}.zip") set(download_sha512 2a1e539ed628c0cca5935d24d22cf3a7165f5c80e12a4003ac184deae6a6d0aa31f582f3e8257b0730adfc09aeec3a0e62f4732e658c312d5382170bcd8c94d8) - elseif(program MATCHES "PYTHON3") + elseif(program STREQUAL "PYTHON3") if(CMAKE_HOST_WIN32) set(program_name python) set(program_version 3.10.0) @@ -239,7 +239,7 @@ function(vcpkg_find_acquire_program program) set(brew_package_name "python") set(apt_package_name "python3") endif() - elseif(program MATCHES "PYTHON2") + elseif(program STREQUAL "PYTHON2") if(CMAKE_HOST_WIN32) set(program_name python) set(program_version 2.7.18) @@ -263,14 +263,14 @@ function(vcpkg_find_acquire_program program) set(program_name python2) set(apt_package_name "python") endif() - elseif(program MATCHES "RUBY") + elseif(program STREQUAL "RUBY") set(program_name "ruby") set(program_version 2.7.4-1) set(paths_to_search ${DOWNLOADS}/tools/ruby/rubyinstaller-${program_version}-x86/bin) set(download_urls https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-${program_version}/rubyinstaller-${program_version}-x86.7z) set(download_filename rubyinstaller-${program_version}-x86.7z) set(download_sha512 4bf459c987b407bdda328c52d95060bf6ad48fc3e5ed5f64d4b205c5b4153c7a00cb6f9da6c0bcd5f2e001e9dc3dda0b72269ec4afdeffd658b93c085cd1d859) - elseif(program MATCHES "JOM") + elseif(program STREQUAL "JOM") set(program_name jom) set(tool_subdirectory "jom-1.1.3") set(paths_to_search ${DOWNLOADS}/tools/jom/${tool_subdirectory}) @@ -280,13 +280,13 @@ function(vcpkg_find_acquire_program program) ) set(download_filename "jom_1_1_3.zip") set(download_sha512 5b158ead86be4eb3a6780928d9163f8562372f30bde051d8c281d81027b766119a6e9241166b91de0aa6146836cea77e5121290e62e31b7a959407840fc57b33) - elseif(program MATCHES "7Z") + elseif(program STREQUAL "7Z") set(program_name 7z) set(paths_to_search "${DOWNLOADS}/tools/7z/Files/7-Zip") set(download_urls "https://7-zip.org/a/7z1900.msi") set(download_filename "7z1900.msi") set(download_sha512 f73b04e2d9f29d4393fde572dcf3c3f0f6fa27e747e5df292294ab7536ae24c239bf917689d71eb10cc49f6b9a4ace26d7c122ee887d93cc935f268c404e9067) - elseif(program MATCHES "NINJA") + elseif(program STREQUAL "NINJA") set(program_name ninja) set(program_version 1.10.2) set(supported_on_unix ON) @@ -312,7 +312,7 @@ function(vcpkg_find_acquire_program program) set(download_sha512 93e802e9c17fb59636cddde4bad1ddaadad624f4ecfee00d5c78790330a4e9d433180e795718cda27da57215ce643c3929cf72c85337ee019d868c56f2deeef3) endif() set(version_command --version) - elseif(program MATCHES "NUGET") + elseif(program STREQUAL "NUGET") set(program_name nuget) set(tool_subdirectory "5.11.0") set(paths_to_search "${DOWNLOADS}/tools/nuget-${tool_subdirectory}-windows") @@ -322,7 +322,7 @@ function(vcpkg_find_acquire_program program) set(download_filename "nuget.5.11.0.exe") set(raw_executable ON) set(download_sha512 06a337c9404dec392709834ef2cdbdce611e104b510ef40201849595d46d242151749aef65bc2d7ce5ade9ebfda83b64c03ce14c8f35ca9957a17a8c02b8c4b7) - elseif(program MATCHES "MESON") + elseif(program STREQUAL "MESON") set(program_version 0.58.1) set(program_name meson) set(interpreter PYTHON3) @@ -339,7 +339,7 @@ function(vcpkg_find_acquire_program program) set(download_sha512 18a012a45274dbb4582e99fd69d920f38831e788d9860f9553c64847bedb1c2010ae0b5c0ef4a4350c03f5e0f95aaa0395378e1208109b59640c1a70b1e202d2) set(supported_on_unix ON) set(version_command --version) - elseif(program MATCHES "FLEX" OR program MATCHES "BISON") + elseif(program STREQUAL "FLEX" OR program STREQUAL "BISON") if(CMAKE_HOST_WIN32) set(SOURCEFORGE_ARGS REPO winflexbison @@ -348,7 +348,7 @@ function(vcpkg_find_acquire_program program) NO_REMOVE_ONE_LEVEL WORKING_DIRECTORY "${DOWNLOADS}/tools/winflexbison" ) - if(program MATCHES "FLEX") + if(program STREQUAL "FLEX") set(program_name win_flex) else() set(program_name win_bison) @@ -357,7 +357,7 @@ function(vcpkg_find_acquire_program program) if(NOT EXISTS "${paths_to_search}/data/m4sugar/m4sugar.m4") file(REMOVE_RECURSE "${paths_to_search}") endif() - elseif(program MATCHES "FLEX") + elseif(program STREQUAL "FLEX") set(program_name flex) set(apt_package_name flex) set(brew_package_name flex) @@ -369,7 +369,7 @@ function(vcpkg_find_acquire_program program) set(paths_to_search /usr/local/opt/bison/bin) endif() endif() - elseif(program MATCHES "CLANG") + elseif(program STREQUAL "CLANG") set(program_name clang) set(tool_subdirectory "clang-12.0.0") set(program_version 12.0.0) @@ -401,14 +401,14 @@ function(vcpkg_find_acquire_program program) endif() set(brew_package_name "llvm") set(apt_package_name "clang") - elseif(program MATCHES "GPERF") + elseif(program STREQUAL "GPERF") set(program_name gperf) set(program_version 3.0.1) set(paths_to_search ${DOWNLOADS}/tools/gperf/bin) set(download_urls "https://sourceforge.net/projects/gnuwin32/files/gperf/${program_version}/gperf-${program_version}-bin.zip/download") set(download_filename "gperf-${program_version}-bin.zip") set(download_sha512 3f2d3418304390ecd729b85f65240a9e4d204b218345f82ea466ca3d7467789f43d0d2129fcffc18eaad3513f49963e79775b10cc223979540fa2e502fe7d4d9) - elseif(program MATCHES "GASPREPROCESSOR") + elseif(program STREQUAL "GASPREPROCESSOR") set(raw_executable true) set(program_name gas-preprocessor) set(tool_subdirectory "4daa6115") @@ -419,14 +419,14 @@ function(vcpkg_find_acquire_program program) set(download_urls "https://raw.githubusercontent.com/FFmpeg/gas-preprocessor/4daa611556a0558dfe537b4f7ad80f7e50a079c1/gas-preprocessor.pl") set(download_filename "gas-preprocessor-${tool_subdirectory}.pl") set(download_sha512 2737ba3c1cf85faeb1fbfe015f7bad170f43a857a50a1b3d81fa93ba325d481f73f271c5a886ff8b7eef206662e19f0e9ef24861dfc608b67b8ea8a2062dc061) - elseif(program MATCHES "DARK") + elseif(program STREQUAL "DARK") set(program_name dark) set(tool_subdirectory "wix311-binaries") set(paths_to_search ${DOWNLOADS}/tools/dark/${tool_subdirectory}) set(download_urls "https://github.com/wixtoolset/wix3/releases/download/wix311rtm/wix311-binaries.zip") set(download_filename "wix311-binaries.zip") set(download_sha512 74f0fa29b5991ca655e34a9d1000d47d4272e071113fada86727ee943d913177ae96dc3d435eaf494d2158f37560cd4c2c5274176946ebdb17bf2354ced1c516) - elseif(program MATCHES "SCONS") + elseif(program STREQUAL "SCONS") set(program_name scons) set(program_version 4.1.0) set(tool_subdirectory ${program_version}) @@ -435,7 +435,7 @@ function(vcpkg_find_acquire_program program) set(download_urls "https://sourceforge.net/projects/scons/files/scons-local-${program_version}.zip/download") set(download_filename "scons-local-${program_version}.zip") set(download_sha512 b173176ce8aca25039c64fcc68ec1b9ad31e03a926fd545e7631b3f9b374d914adffc593f505e3e7e2867b0ffe85e8deb0b39afe314edf05d02974ce5db1badb) - elseif(program MATCHES "SWIG") + elseif(program STREQUAL "SWIG") set(program_version 4.0.2) set(program_name swig) if(CMAKE_HOST_WIN32) @@ -453,7 +453,7 @@ function(vcpkg_find_acquire_program program) set(brew_package_name "swig") endif() - elseif(program MATCHES "DOXYGEN") + elseif(program STREQUAL "DOXYGEN") set(program_name doxygen) set(program_version 1.9.1) set(SOURCEFORGE_ARGS @@ -465,7 +465,7 @@ function(vcpkg_find_acquire_program program) WORKING_DIRECTORY "${DOWNLOADS}/tools/doxygen" ) set(tool_subdirectory c3eeb6b9fa-76d69c6db5) - elseif(program MATCHES "BAZEL") + elseif(program STREQUAL "BAZEL") set(program_name bazel) set(program_version 4.1.0) set(rename_binary_to "bazel") @@ -489,14 +489,14 @@ function(vcpkg_find_acquire_program program) set(download_filename "bazel-${tool_subdirectory}-x86_64.zip") set(download_sha512 3954ab54b465d62eef397767dac7ce21d06ac8ea3e1571d0e7b1f0ea8b5c2cf44eea5d252b85a63a1e1a08dbe9a219783cc23c2888673c35e2df03edfdc9e5a7) endif() - elseif(program MATCHES "ARIA2") + elseif(program STREQUAL "ARIA2") set(program_name aria2c) set(program_version 1.35.0) set(paths_to_search ${DOWNLOADS}/tools/aria2c/aria2-${program_version}-win-32bit-build1) set(download_urls "https://github.com/aria2/aria2/releases/download/release-${program_version}/aria2-${program_version}-win-32bit-build1.zip") set(download_filename "aria2-${program_version}-win-32bit-build1.zip") set(download_sha512 933537cad820b1cecf43a9eeca7e1b241dd7b1c902ee942441a166f2c38845f16046321efbdfa2f83c7e9fc50c7ecc5da6fd00e0c6e2124c07d3b783aa5092a4) - elseif(program MATCHES "PKGCONFIG") + elseif(program STREQUAL "PKGCONFIG") set(program_name pkg-config) if(ENV{PKG_CONFIG}) debug_message(STATUS "PKG_CONFIG found in ENV! Using $ENV{PKG_CONFIG}") @@ -527,7 +527,8 @@ function(vcpkg_find_acquire_program program) 2c3d9e6b2eee6a4c16fd69ddfadb6e2dc7f31156627d85845c523ac85e5c585d4cfa978659b1fe2ec823d44ef57bc2b92a6127618ff1a8d7505458b794f3f01c ) endif() - set(${program} "${PKGCONFIG_ROOT}/mingw32/bin/pkg-config.exe" PARENT_SCOPE) + set("${program}" "${PKGCONFIG_ROOT}/mingw32/bin/pkg-config.exe" CACHE INTERNAL "") + set("${program}" "${${program}}" PARENT_SCOPE) return() else() set(brew_package_name pkg-config) @@ -552,10 +553,10 @@ function(vcpkg_find_acquire_program program) endif() z_vcpkg_find_acquire_program_find_internal() - if(NOT ${program}) + if(NOT "${${program}}") z_vcpkg_find_acquire_program_find_external() endif() - if(NOT ${program}) + if(NOT "${${program}}") if(NOT VCPKG_HOST_IS_WINDOWS AND NOT supported_on_unix) set(EXAMPLE ".") if(NOT "${brew_package_name}" STREQUAL "" AND VCPKG_HOST_IS_OSX) @@ -595,7 +596,7 @@ function(vcpkg_find_acquire_program program) COMMAND msiexec /a ${ARCHIVE_NATIVE_PATH} /qn TARGETDIR=${DESTINATION_NATIVE_PATH} WORKING_DIRECTORY ${DOWNLOADS} ) - elseif("${ARCHIVE_PATH}" MATCHES ".7z.exe$") + elseif("${ARCHIVE_PATH}" MATCHES [[\.7z\.exe$]]) vcpkg_find_acquire_program(7Z) vcpkg_execute_in_download_mode( COMMAND ${7Z} x "${ARCHIVE_PATH}" "-o${full_subdirectory}" -y -bso0 -bsp0 @@ -615,15 +616,15 @@ function(vcpkg_find_acquire_program program) ALLOW_IN_DOWNLOAD_MODE COMMAND ${post_install_command} WORKING_DIRECTORY ${full_subdirectory} - LOGNAME ${program}-tool-post-install + LOGNAME "${program}-tool-post-install" ) endif() - unset(${program} CACHE) + unset("${program}" CACHE) z_vcpkg_find_acquire_program_find_internal() - if(NOT ${program}) + if(NOT "${${program}}") message(FATAL_ERROR "Unable to find ${program}") endif() endif() - set(${program} "${${program}}" PARENT_SCOPE) + set("${program}" "${${program}}" PARENT_SCOPE) endfunction() From c868f15538889633cef315cc86ac705cb5966b05 Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Wed, 3 Nov 2021 18:39:31 -0700 Subject: [PATCH 11/17] ah, apparently that doesn't work --- scripts/cmake/vcpkg_find_acquire_program.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index ea81661e723abc..d92adbb3221432 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -115,7 +115,7 @@ function(z_vcpkg_find_acquire_program_find_internal) endfunction() function(vcpkg_find_acquire_program program) - if("${${program}}") + if(${program}) return() endif() @@ -553,10 +553,10 @@ function(vcpkg_find_acquire_program program) endif() z_vcpkg_find_acquire_program_find_internal() - if(NOT "${${program}}") + if(NOT ${program}) z_vcpkg_find_acquire_program_find_external() endif() - if(NOT "${${program}}") + if(NOT ${program}) if(NOT VCPKG_HOST_IS_WINDOWS AND NOT supported_on_unix) set(EXAMPLE ".") if(NOT "${brew_package_name}" STREQUAL "" AND VCPKG_HOST_IS_OSX) @@ -621,7 +621,7 @@ function(vcpkg_find_acquire_program program) endif() unset("${program}" CACHE) z_vcpkg_find_acquire_program_find_internal() - if(NOT "${${program}}") + if(NOT ${program}) message(FATAL_ERROR "Unable to find ${program}") endif() endif() From 6ed3cb95f777eefbc959e29da15685dcdd906156 Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Thu, 4 Nov 2021 12:57:25 -0700 Subject: [PATCH 12/17] oops, extra "" make some changes to names too --- .../cmake/vcpkg_find_acquire_program.cmake | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index d92adbb3221432..4fde95b26cc904 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -71,9 +71,9 @@ endfunction() function(z_vcpkg_find_acquire_program_find_external) if("${interpreter}" STREQUAL "") - find_program("${program}" "${program_name}") + find_program("${program}" NAMES ${search_names}) else() - find_file("SCRIPT_${program}" NAMES "${SCRIPTNAME}") + find_file("SCRIPT_${program}" NAMES ${search_names}) if("${SCRIPT_${program}}") vcpkg_list(SET program_tmp ${${interpreter}} ${SCRIPT_${program}}) set("${program}" "${program_tmp}" CACHE INTERNAL "") @@ -98,14 +98,14 @@ endfunction() function(z_vcpkg_find_acquire_program_find_internal) if("${interpreter}" STREQUAL "") - find_program("${program}" - "${program_name}" + find_program(${program} + NAMES ${search_names} PATHS ${paths_to_search} NO_DEFAULT_PATH) else() vcpkg_find_acquire_program("${interpreter}") - find_file("SCRIPT_${program}" - NAMES "${SCRIPTNAME}" + find_file(SCRIPT_${program} + NAMES ${search_names} PATHS ${paths_to_search} NO_DEFAULT_PATH) if(SCRIPT_${program}) @@ -325,14 +325,14 @@ function(vcpkg_find_acquire_program program) elseif(program STREQUAL "MESON") set(program_version 0.58.1) set(program_name meson) + set(search_names meson meson.py) set(interpreter PYTHON3) set(apt_package_name "meson") set(brew_package_name "meson") - set(SCRIPTNAME meson meson.py) - set(REF aeda7f249c4a5dbbecc52e44f382246a2377b5b0) - set(paths_to_search ${DOWNLOADS}/tools/meson/meson-${REF}) - set(download_urls "https://github.com/mesonbuild/meson/archive/${REF}.tar.gz") - set(download_filename "meson-${REF}.tar.gz") + set(ref aeda7f249c4a5dbbecc52e44f382246a2377b5b0) + set(paths_to_search "${DOWNLOADS}/tools/meson/meson-${ref}") + set(download_urls "https://github.com/mesonbuild/meson/archive/${ref}.tar.gz") + set(download_filename "meson-${ref}.tar.gz") #set(paths_to_search ${DOWNLOADS}/tools/meson/meson-${program_version}) #set(download_urls "https://github.com/mesonbuild/meson/releases/download/${program_version}/meson-${program_version}.tar.gz") #set(download_filename "meson-${program_version}.tar.gz") @@ -413,7 +413,7 @@ function(vcpkg_find_acquire_program program) set(program_name gas-preprocessor) set(tool_subdirectory "4daa6115") set(interpreter PERL) - set(SCRIPTNAME "gas-preprocessor.pl") + set(search_names "gas-preprocessor.pl") set(paths_to_search ${DOWNLOADS}/tools/gas-preprocessor/${tool_subdirectory}) set(rename_binary_to "gas-preprocessor.pl") set(download_urls "https://raw.githubusercontent.com/FFmpeg/gas-preprocessor/4daa611556a0558dfe537b4f7ad80f7e50a079c1/gas-preprocessor.pl") @@ -431,7 +431,7 @@ function(vcpkg_find_acquire_program program) set(program_version 4.1.0) set(tool_subdirectory ${program_version}) set(interpreter PYTHON2) - set(SCRIPTNAME "scons.py") + set(search_names "scons.py") set(download_urls "https://sourceforge.net/projects/scons/files/scons-local-${program_version}.zip/download") set(download_filename "scons-local-${program_version}.zip") set(download_sha512 b173176ce8aca25039c64fcc68ec1b9ad31e03a926fd545e7631b3f9b374d914adffc593f505e3e7e2867b0ffe85e8deb0b39afe314edf05d02974ce5db1badb) @@ -552,6 +552,10 @@ function(vcpkg_find_acquire_program program) set(full_subdirectory "${CMAKE_MATCH_1}") endif() + if("${search_names}" STREQUAL "") + set(search_names "${program_name}") + endif() + z_vcpkg_find_acquire_program_find_internal() if(NOT ${program}) z_vcpkg_find_acquire_program_find_external() From 553a5bafb3dcd8f8f68b4406854e757ae546abd4 Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Thu, 4 Nov 2021 13:01:18 -0700 Subject: [PATCH 13/17] docs regenerate --- docs/maintainers/vcpkg_find_acquire_program.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/maintainers/vcpkg_find_acquire_program.md b/docs/maintainers/vcpkg_find_acquire_program.md index fe23d4e5dbb79d..1e8a9b8bb8578c 100644 --- a/docs/maintainers/vcpkg_find_acquire_program.md +++ b/docs/maintainers/vcpkg_find_acquire_program.md @@ -6,10 +6,10 @@ Download or find a well-known tool. ## Usage ```cmake -vcpkg_find_acquire_program() +vcpkg_find_acquire_program() ``` ## Parameters -### VAR +### program 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 From 2a5c7f44738a1b1ea47e10f178430979d8499f7a Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Thu, 4 Nov 2021 16:38:36 -0700 Subject: [PATCH 14/17] aaaagh --- scripts/cmake/vcpkg_find_acquire_program.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 4fde95b26cc904..190f9302987103 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -122,6 +122,7 @@ function(vcpkg_find_acquire_program program) set(raw_executable "OFF") set(program_name "") set(program_version "") + set(search_names "") set(download_urls "") set(download_filename "") set(download_sha512 "") From e1ff5fb8366fcc9c752fe8dddee665fb1f518e29 Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Fri, 5 Nov 2021 11:30:57 -0700 Subject: [PATCH 15/17] final changes - remove implicit parameters from internal funcs --- .../cmake/vcpkg_find_acquire_program.cmake | 63 +++++++++++++------ 1 file changed, 44 insertions(+), 19 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 190f9302987103..ed544b93ecca0b 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -69,12 +69,18 @@ function(z_vcpkg_find_acquire_program_version_check out_var) endif() endfunction() -function(z_vcpkg_find_acquire_program_find_external) - if("${interpreter}" STREQUAL "") - find_program("${program}" NAMES ${search_names}) +function(z_vcpkg_find_acquire_program_find_external program) + cmake_parse_arguments(PARSE_ARGV 1 arg + "" + "INTERPRETER;MIN_VERSION;PROGRAM_NAME" + "NAMES;VERSION_COMMAND" + ) + + if("${arg_INTERPRETER}" STREQUAL "") + find_program("${program}" NAMES ${arg_NAMES}) else() - find_file("SCRIPT_${program}" NAMES ${search_names}) - if("${SCRIPT_${program}}") + find_file(SCRIPT_${program} NAMES ${arg_NAMES}) + if(SCRIPT_${program}) vcpkg_list(SET program_tmp ${${interpreter}} ${SCRIPT_${program}}) set("${program}" "${program_tmp}" CACHE INTERNAL "") endif() @@ -84,9 +90,9 @@ function(z_vcpkg_find_acquire_program_find_external) set(version_is_good ON) # can't check for the version being good, so assume it is else() z_vcpkg_find_acquire_program_version_check(version_is_good - COMMAND ${${program}} ${version_command} - MIN_VERSION "${program_version}" - PROGRAM_NAME "${program_name}" + COMMAND ${${program}} ${arg_VERSION_COMMAND} + MIN_VERSION "${arg_MIN_VERSION}" + PROGRAM_NAME "${arg_PROGRAM_NAME}" ) endif() @@ -96,20 +102,25 @@ function(z_vcpkg_find_acquire_program_find_external) endif() endfunction() -function(z_vcpkg_find_acquire_program_find_internal) - if("${interpreter}" STREQUAL "") +function(z_vcpkg_find_acquire_program_find_internal program) + cmake_parse_arguments(PARSE_ARGV 1 arg + "" + "INTERPRETER" + "NAMES;PATHS" + ) + if("${arg_INTERPRETER}" STREQUAL "") find_program(${program} - NAMES ${search_names} - PATHS ${paths_to_search} + NAMES ${arg_NAMES} + PATHS ${arg_PATHS} NO_DEFAULT_PATH) else() - vcpkg_find_acquire_program("${interpreter}") + vcpkg_find_acquire_program("${arg_INTERPRETER}") find_file(SCRIPT_${program} - NAMES ${search_names} - PATHS ${paths_to_search} + NAMES ${arg_NAMES} + PATHS ${arg_PATHS} NO_DEFAULT_PATH) if(SCRIPT_${program}) - set("${program}" ${${interpreter}} ${SCRIPT_${program}} CACHE INTERNAL "") + set("${program}" ${${arg_INTERPRETER}} ${SCRIPT_${program}} CACHE INTERNAL "") endif() endif() endfunction() @@ -557,9 +568,19 @@ function(vcpkg_find_acquire_program program) set(search_names "${program_name}") endif() - z_vcpkg_find_acquire_program_find_internal() + z_vcpkg_find_acquire_program_find_internal("${program}" + INTERPRETER "${interpreter}" + PATHS ${paths_to_search} + NAMES ${search_names} + ) if(NOT ${program}) - z_vcpkg_find_acquire_program_find_external() + z_vcpkg_find_acquire_program_find_external("${program}" + PROGRAM_NAME "${program_name}" + MIN_VERSION "${program_version}" + INTERPRETER "${interpreter}" + NAMES ${search_names} + VERSION_COMMAND ${version_command} + ) endif() if(NOT ${program}) if(NOT VCPKG_HOST_IS_WINDOWS AND NOT supported_on_unix) @@ -625,7 +646,11 @@ function(vcpkg_find_acquire_program program) ) endif() unset("${program}" CACHE) - z_vcpkg_find_acquire_program_find_internal() + z_vcpkg_find_acquire_program_find_internal("${program}" + INTERPRETER "${interpreter}" + PATHS ${paths_to_search} + NAMES ${search_names} + ) if(NOT ${program}) message(FATAL_ERROR "Unable to find ${program}") endif() From 248069adc5d3d6889bbc5989a777922517a337f2 Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Fri, 5 Nov 2021 15:30:07 -0700 Subject: [PATCH 16/17] final changes --- .../cmake/vcpkg_find_acquire_program.cmake | 134 ++++++++++-------- 1 file changed, 74 insertions(+), 60 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index ed544b93ecca0b..76ec731ce3e505 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -144,6 +144,7 @@ function(vcpkg_find_acquire_program program) set(post_install_command "") set(paths_to_search "") set(version_command "") + vcpkg_list(SET sourceforge_args) set(brew_package_name "") set(apt_package_name "") @@ -162,7 +163,7 @@ function(vcpkg_find_acquire_program program) elseif(program STREQUAL "NASM") set(program_name nasm) set(program_version 2.15.05) - set(paths_to_search ${DOWNLOADS}/tools/nasm/nasm-${program_version}) + set(paths_to_search "${DOWNLOADS}/tools/nasm/nasm-${program_version}") set(brew_package_name "nasm") set(apt_package_name "nasm") set(download_urls @@ -201,25 +202,25 @@ function(vcpkg_find_acquire_program program) elseif(program STREQUAL "GN") set(program_name gn) set(rename_binary_to "gn") - set(CIPD_DOWNLOAD_GN "https://chrome-infra-packages.appspot.com/dl/gn/gn") + set(cipd_download_gn "https://chrome-infra-packages.appspot.com/dl/gn/gn") if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") set(supported_on_unix ON) set(program_version "xus7xtaPhpv5vCmKFOnsBVoB-PKmhZvRsSTjbQAuF0MC") - set(GN_PLATFORM "linux-amd64") + set(gn_platform "linux-amd64") set(download_sha512 "871e75d7f3597b74fb99e36bb41fe5a9f8ce8a4d9f167f4729fc6e444807a59f35ec8aca70c2274a99c79d70a1108272be1ad991678a8ceb39e30f77abb13135") elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") set(supported_on_unix ON) set(program_version "qhxILDNcJ2H44HfHmfiU-XIY3E_SIXvFqLd2wvbIgOoC") - set(GN_PLATFORM "mac-amd64") + set(gn_platform "mac-amd64") set(download_sha512 "03ee64cb15bae7fceb412900d470601090bce147cfd45eb9b46683ac1a5dca848465a5d74c55a47df7f0e334d708151249a6d37bb021de74dd48b97ed4a07937") else() set(program_version "qUkAhy9J0P7c5racy-9wB6AHNK_btS18im8S06_ehhwC") - set(GN_PLATFORM "windows-amd64") + set(gn_platform "windows-amd64") set(download_sha512 "263e02bd79eee0cb7b664831b7898565c5656a046328d8f187ef7ae2a4d766991d477b190c9b425fcc960ab76f381cd3e396afb85cba7408ca9e74eb32c175db") endif() set(tool_subdirectory "${program_version}") - set(download_urls "${CIPD_DOWNLOAD_GN}/${GN_PLATFORM}/+/${program_version}") - set(download_filename "gn-${GN_PLATFORM}.zip") + set(download_urls "${cipd_download_gn}/${gn_platform}/+/${program_version}") + set(download_filename "gn-${gn_platform}.zip") elseif(program STREQUAL "GO") set(program_name go) set(tool_subdirectory 1.16.6.windows-386) @@ -233,7 +234,7 @@ function(vcpkg_find_acquire_program program) if(CMAKE_HOST_WIN32) set(program_name python) set(program_version 3.10.0) - if (VCPKG_TARGET_ARCHITECTURE STREQUAL x86) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") set(tool_subdirectory "python-${program_version}-x86") set(download_urls "https://www.python.org/ftp/python/${program_version}/python-${program_version}-embed-win32.zip") set(download_filename "python-${program_version}-embed-win32.zip") @@ -244,8 +245,8 @@ function(vcpkg_find_acquire_program program) set(download_filename "python-${program_version}-embed-amd64.zip") set(download_sha512 23d81d007698383d8dc088da532dcb86c6ceca7eb78ba5688fc2e18ee7f33f53a5632282873762293b8164556dfb15870f8ffb7abd368faba0a3d8d5d5bc6297) endif() - set(paths_to_search ${DOWNLOADS}/tools/python/${tool_subdirectory}) - set(post_install_command ${CMAKE_COMMAND} -E rm python310._pth) + set(paths_to_search "${DOWNLOADS}/tools/python/${tool_subdirectory}") + vcpkg_list(SET post_install_command "${CMAKE_COMMAND}" -E rm python310._pth) else() set(program_name python3) set(brew_package_name "python") @@ -266,7 +267,7 @@ function(vcpkg_find_acquire_program program) set(download_filename "python-${program_version}.amd64.msi") set(download_sha512 6a81a413b80fd39893e7444fd47efa455d240cbb77a456c9d12f7cf64962b38c08cfa244cd9c50a65947c40f936c6c8c5782f7236d7b92445ab3dd01e82af23e) endif() - set(paths_to_search ${DOWNLOADS}/tools/python/${tool_subdirectory}) + set(paths_to_search "${DOWNLOADS}/tools/python/${tool_subdirectory}") elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") # macOS includes Python 2.7 built-in as `python` set(program_name python) @@ -278,14 +279,14 @@ function(vcpkg_find_acquire_program program) elseif(program STREQUAL "RUBY") set(program_name "ruby") set(program_version 2.7.4-1) - set(paths_to_search ${DOWNLOADS}/tools/ruby/rubyinstaller-${program_version}-x86/bin) - set(download_urls https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-${program_version}/rubyinstaller-${program_version}-x86.7z) - set(download_filename rubyinstaller-${program_version}-x86.7z) + set(paths_to_search "${DOWNLOADS}/tools/ruby/rubyinstaller-${program_version}-x86/bin") + set(download_urls "https://github.com/oneclick/rubyinstaller2/releases/download/RubyInstaller-${program_version}/rubyinstaller-${program_version}-x86.7z") + set(download_filename "rubyinstaller-${program_version}-x86.7z") set(download_sha512 4bf459c987b407bdda328c52d95060bf6ad48fc3e5ed5f64d4b205c5b4153c7a00cb6f9da6c0bcd5f2e001e9dc3dda0b72269ec4afdeffd658b93c085cd1d859) elseif(program STREQUAL "JOM") set(program_name jom) set(tool_subdirectory "jom-1.1.3") - set(paths_to_search ${DOWNLOADS}/tools/jom/${tool_subdirectory}) + set(paths_to_search "${DOWNLOADS}/tools/jom/${tool_subdirectory}") set(download_urls "https://download.qt.io/official_releases/jom/jom_1_1_3.zip" "https://mirrors.ocf.berkeley.edu/qt/official_releases/jom/jom_1_1_3.zip" @@ -353,7 +354,7 @@ function(vcpkg_find_acquire_program program) set(version_command --version) elseif(program STREQUAL "FLEX" OR program STREQUAL "BISON") if(CMAKE_HOST_WIN32) - set(SOURCEFORGE_ARGS + vcpkg_list(SET sourceforge_args REPO winflexbison FILENAME winflexbison-2.5.16.zip SHA512 0a14154bff5d998feb23903c46961528f8ccb4464375d5384db8c4a7d230c0c599da9b68e7a32f3217a0a0735742242eaf3769cb4f03e00931af8640250e9123 @@ -396,12 +397,12 @@ function(vcpkg_find_acquire_program program) "${DOWNLOADS}/tools/clang/${tool_subdirectory}/bin") if(DEFINED ENV{PROCESSOR_ARCHITEW6432}) - set(HOST_ARCH_ $ENV{PROCESSOR_ARCHITEW6432}) + set(host_arch "$ENV{PROCESSOR_ARCHITEW6432}") else() - set(HOST_ARCH_ $ENV{PROCESSOR_ARCHITECTURE}) + set(host_arch "$ENV{PROCESSOR_ARCHITECTURE}") endif() - if(HOST_ARCH_ MATCHES "64") + if(host_arch MATCHES "64") set(download_urls "https://github.com/llvm/llvm-project/releases/download/llvmorg-${program_version}/LLVM-${program_version}-win64.exe") set(download_filename "LLVM-${program_version}-win64.7z.exe") set(download_sha512 67a9b54abad5143fa5f79f0cfc184be1394c9fc894fa9cee709943cb6ccbde8f0ea6003d8fcc20eccf035631abe4009cc0f694ac84e7879331cebba8125e4c7f) @@ -416,7 +417,7 @@ function(vcpkg_find_acquire_program program) elseif(program STREQUAL "GPERF") set(program_name gperf) set(program_version 3.0.1) - set(paths_to_search ${DOWNLOADS}/tools/gperf/bin) + set(paths_to_search "${DOWNLOADS}/tools/gperf/bin") set(download_urls "https://sourceforge.net/projects/gnuwin32/files/gperf/${program_version}/gperf-${program_version}-bin.zip/download") set(download_filename "gperf-${program_version}-bin.zip") set(download_sha512 3f2d3418304390ecd729b85f65240a9e4d204b218345f82ea466ca3d7467789f43d0d2129fcffc18eaad3513f49963e79775b10cc223979540fa2e502fe7d4d9) @@ -426,7 +427,7 @@ function(vcpkg_find_acquire_program program) set(tool_subdirectory "4daa6115") set(interpreter PERL) set(search_names "gas-preprocessor.pl") - set(paths_to_search ${DOWNLOADS}/tools/gas-preprocessor/${tool_subdirectory}) + set(paths_to_search "${DOWNLOADS}/tools/gas-preprocessor/${tool_subdirectory}") set(rename_binary_to "gas-preprocessor.pl") set(download_urls "https://raw.githubusercontent.com/FFmpeg/gas-preprocessor/4daa611556a0558dfe537b4f7ad80f7e50a079c1/gas-preprocessor.pl") set(download_filename "gas-preprocessor-${tool_subdirectory}.pl") @@ -434,14 +435,14 @@ function(vcpkg_find_acquire_program program) elseif(program STREQUAL "DARK") set(program_name dark) set(tool_subdirectory "wix311-binaries") - set(paths_to_search ${DOWNLOADS}/tools/dark/${tool_subdirectory}) + set(paths_to_search "${DOWNLOADS}/tools/dark/${tool_subdirectory}") set(download_urls "https://github.com/wixtoolset/wix3/releases/download/wix311rtm/wix311-binaries.zip") set(download_filename "wix311-binaries.zip") set(download_sha512 74f0fa29b5991ca655e34a9d1000d47d4272e071113fada86727ee943d913177ae96dc3d435eaf494d2158f37560cd4c2c5274176946ebdb17bf2354ced1c516) elseif(program STREQUAL "SCONS") set(program_name scons) set(program_version 4.1.0) - set(tool_subdirectory ${program_version}) + set(tool_subdirectory "${program_version}") set(interpreter PYTHON2) set(search_names "scons.py") set(download_urls "https://sourceforge.net/projects/scons/files/scons-local-${program_version}.zip/download") @@ -451,15 +452,15 @@ function(vcpkg_find_acquire_program program) set(program_version 4.0.2) set(program_name swig) if(CMAKE_HOST_WIN32) - set(SOURCEFORGE_ARGS + vcpkg_list(SET sourceforge_args REPO swig/swigwin - REF swigwin-${program_version} + REF "swigwin-${program_version}" FILENAME "swigwin-${program_version}.zip" SHA512 b8f105f9b9db6acc1f6e3741990915b533cd1bc206eb9645fd6836457fd30789b7229d2e3219d8e35f2390605ade0fbca493ae162ec3b4bc4e428b57155db03d NO_REMOVE_ONE_LEVEL WORKING_DIRECTORY "${DOWNLOADS}/tools/swig" ) - set(tool_subdirectory b8f105f9b9-f0518bc3b7/swigwin-${program_version}) + set(tool_subdirectory "b8f105f9b9-f0518bc3b7/swigwin-${program_version}") else() set(apt_package_name "swig") set(brew_package_name "swig") @@ -468,9 +469,9 @@ function(vcpkg_find_acquire_program program) elseif(program STREQUAL "DOXYGEN") set(program_name doxygen) set(program_version 1.9.1) - set(SOURCEFORGE_ARGS + vcpkg_list(SET sourceforge_args REPO doxygen - REF rel-${program_version} + REF "rel-${program_version}" FILENAME "doxygen-${program_version}.windows.bin.zip" SHA512 c3eeb6b9fa4eab70fb6b0864fbbf94fb8050f3fee38d117cf470921a80e3569cc1c8b0272604d6731e05f01790cfaa70e159bec5d0882fc4f2d8ae4a5d52a21b NO_REMOVE_ONE_LEVEL @@ -483,20 +484,20 @@ function(vcpkg_find_acquire_program program) set(rename_binary_to "bazel") if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") set(supported_on_unix ON) - set(tool_subdirectory ${program_version}-linux) + set(tool_subdirectory "${program_version}-linux") set(download_urls "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-x86_64") set(download_filename "bazel-${tool_subdirectory}-x86_64") set(raw_executable ON) set(download_sha512 50aa0894dbeedb9189a56f17baa8cecfa55c5f9c1f93a61b9ab5e10984754a400884fc9802b4979f536778e15f813a72807396b4b47694e4c05eadb841361c69) elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") set(supported_on_unix ON) - set(tool_subdirectory ${program_version}-darwin) + set(tool_subdirectory "${program_version}-darwin") set(download_urls "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-x86_64") set(download_filename "bazel-${tool_subdirectory}-x86_64") set(raw_executable ON) set(download_sha512 3500560c9d49d37a1ead2d2777d673c6f1874582883e141ecd5b3991005b1b6b8aab5f255c187133d771497c2a956f5c1e0dfad04dc453525634537e65b649af) else() - set(tool_subdirectory ${program_version}-windows) + set(tool_subdirectory "${program_version}-windows") set(download_urls "https://github.com/bazelbuild/bazel/releases/download/${program_version}/bazel-${tool_subdirectory}-x86_64.zip") set(download_filename "bazel-${tool_subdirectory}-x86_64.zip") set(download_sha512 3954ab54b465d62eef397767dac7ce21d06ac8ea3e1571d0e7b1f0ea8b5c2cf44eea5d252b85a63a1e1a08dbe9a219783cc23c2888673c35e2df03edfdc9e5a7) @@ -504,15 +505,16 @@ function(vcpkg_find_acquire_program program) elseif(program STREQUAL "ARIA2") set(program_name aria2c) set(program_version 1.35.0) - set(paths_to_search ${DOWNLOADS}/tools/aria2c/aria2-${program_version}-win-32bit-build1) + set(paths_to_search "${DOWNLOADS}/tools/aria2c/aria2-${program_version}-win-32bit-build1") set(download_urls "https://github.com/aria2/aria2/releases/download/release-${program_version}/aria2-${program_version}-win-32bit-build1.zip") set(download_filename "aria2-${program_version}-win-32bit-build1.zip") set(download_sha512 933537cad820b1cecf43a9eeca7e1b241dd7b1c902ee942441a166f2c38845f16046321efbdfa2f83c7e9fc50c7ecc5da6fd00e0c6e2124c07d3b783aa5092a4) elseif(program STREQUAL "PKGCONFIG") set(program_name pkg-config) - if(ENV{PKG_CONFIG}) + if(DEFINED ENV{PKG_CONFIG}) debug_message(STATUS "PKG_CONFIG found in ENV! Using $ENV{PKG_CONFIG}") - set(PKGCONFIG $ENV{PKG_CONFIG} PARENT_SCOPE) + set(PKGCONFIG "$ENV{PKG_CONFIG}" CACHE INTERNAL "") + set(PKGCONFIG "${PKGCONFIG}" PARENT_SCOPE) return() elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "OpenBSD") # As of 6.8, the OpenBSD specific pkg-config doesn't support {pcfiledir} @@ -584,54 +586,66 @@ function(vcpkg_find_acquire_program program) endif() if(NOT ${program}) if(NOT VCPKG_HOST_IS_WINDOWS AND NOT supported_on_unix) - set(EXAMPLE ".") + set(example ".") if(NOT "${brew_package_name}" STREQUAL "" AND VCPKG_HOST_IS_OSX) - set(EXAMPLE ":\n brew install ${brew_package_name}") + set(example ":\n brew install ${brew_package_name}") elseif(NOT "${apt_package_name}" STREQUAL "" AND VCPKG_HOST_IS_LINUX) - set(EXAMPLE ":\n sudo apt-get install ${apt_package_name}") + set(example ":\n sudo apt-get install ${apt_package_name}") endif() - message(FATAL_ERROR "Could not find ${program_name}. Please install it via your package manager${EXAMPLE}") + message(FATAL_ERROR "Could not find ${program_name}. Please install it via your package manager${example}") endif() - if(NOT "${SOURCEFORGE_ARGS}" STREQUAL "") + if(NOT "${sourceforge_args}" STREQUAL "") # Locally change editable to suppress re-extraction each time set(_VCPKG_EDITABLE 1) - vcpkg_from_sourceforge(OUT_SOURCE_PATH SFPATH ${SOURCEFORGE_ARGS}) + vcpkg_from_sourceforge(OUT_SOURCE_PATH SFPATH ${sourceforge_args}) unset(_VCPKG_EDITABLE) else() - vcpkg_download_distfile(ARCHIVE_PATH + vcpkg_download_distfile(archive_path URLS ${download_urls} - SHA512 ${download_sha512} - FILENAME ${download_filename} + SHA512 "${download_sha512}" + FILENAME "${download_filename}" ) - file(MAKE_DIRECTORY ${full_subdirectory}) + file(MAKE_DIRECTORY "${full_subdirectory}") if(raw_executable) + vcpkg_list(SET rename_binary_param) if(NOT "${rename_binary_to}" STREQUAL "") - file(INSTALL ${ARCHIVE_PATH} DESTINATION ${full_subdirectory} RENAME ${rename_binary_to} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) - else() - file(COPY ${ARCHIVE_PATH} DESTINATION ${full_subdirectory} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) + vcpkg_list(SET rename_binary_param RENAME "${rename_binary_to}") endif() + file(COPY "${archive_path}" + DESTINATION "${full_subdirectory}" + ${rename_binary_param} + FILE_PERMISSIONS + OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE + ) else() - get_filename_component(ARCHIVE_EXTENSION ${download_filename} LAST_EXT) - string(TOLOWER "${ARCHIVE_EXTENSION}" ARCHIVE_EXTENSION) - if(ARCHIVE_EXTENSION STREQUAL ".msi") - file(TO_NATIVE_PATH "${ARCHIVE_PATH}" ARCHIVE_NATIVE_PATH) - file(TO_NATIVE_PATH "${full_subdirectory}" DESTINATION_NATIVE_PATH) + cmake_path(GET download_filename EXTENSION archive_extension) + string(TOLOWER "${archive_extension}" archive_extension) + if("${archive_extension}" MATCHES [[\.msi$]]) + cmake_path(NATIVE_PATH archive_path archive_native_path) + cmake_path(NATIVE_PATH full_subdirectory destination_native_path) vcpkg_execute_in_download_mode( - COMMAND msiexec /a ${ARCHIVE_NATIVE_PATH} /qn TARGETDIR=${DESTINATION_NATIVE_PATH} - WORKING_DIRECTORY ${DOWNLOADS} + COMMAND msiexec + /a "${archive_native_path}" + /qn "TARGETDIR=${destination_native_path}" + WORKING_DIRECTORY "${DOWNLOADS}" ) - elseif("${ARCHIVE_PATH}" MATCHES [[\.7z\.exe$]]) + elseif("${archive_extension}" MATCHES [[\.7z\.exe$]]) vcpkg_find_acquire_program(7Z) vcpkg_execute_in_download_mode( - COMMAND ${7Z} x "${ARCHIVE_PATH}" "-o${full_subdirectory}" -y -bso0 -bsp0 - WORKING_DIRECTORY ${full_subdirectory} + COMMAND ${7Z} x + "${archive_path}" + "-o${full_subdirectory}" + -y -bso0 -bsp0 + WORKING_DIRECTORY "${full_subdirectory}" ) else() vcpkg_execute_in_download_mode( - COMMAND ${CMAKE_COMMAND} -E tar xzf ${ARCHIVE_PATH} - WORKING_DIRECTORY ${full_subdirectory} + COMMAND "${CMAKE_COMMAND}" -E tar xzf "${archive_path}" + WORKING_DIRECTORY "${full_subdirectory}" ) endif() endif() @@ -641,7 +655,7 @@ function(vcpkg_find_acquire_program program) vcpkg_execute_required_process( ALLOW_IN_DOWNLOAD_MODE COMMAND ${post_install_command} - WORKING_DIRECTORY ${full_subdirectory} + WORKING_DIRECTORY "${full_subdirectory}" LOGNAME "${program}-tool-post-install" ) endif() From 45423fd4f6c66ee3d9dc1e4184742db59caf51bc Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Fri, 5 Nov 2021 19:06:49 -0700 Subject: [PATCH 17/17] auugh COPY doesn't allow RENAME --- .../cmake/vcpkg_find_acquire_program.cmake | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index 76ec731ce3e505..89f03fc286f64a 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -609,18 +609,24 @@ function(vcpkg_find_acquire_program program) file(MAKE_DIRECTORY "${full_subdirectory}") if(raw_executable) - vcpkg_list(SET rename_binary_param) if(NOT "${rename_binary_to}" STREQUAL "") - vcpkg_list(SET rename_binary_param RENAME "${rename_binary_to}") + file(INSTALL "${archive_path}" + DESTINATION "${full_subdirectory}" + RENAME "${rename_binary_to}" + FILE_PERMISSIONS + OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE + ) + else() + file(COPY "${archive_path}" + DESTINATION "${full_subdirectory}" + FILE_PERMISSIONS + OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE + ) endif() - file(COPY "${archive_path}" - DESTINATION "${full_subdirectory}" - ${rename_binary_param} - FILE_PERMISSIONS - OWNER_READ OWNER_WRITE OWNER_EXECUTE - GROUP_READ GROUP_EXECUTE - WORLD_READ WORLD_EXECUTE - ) else() cmake_path(GET download_filename EXTENSION archive_extension) string(TOLOWER "${archive_extension}" archive_extension)