aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAlexander Neumann <30894796+Neumann-A@users.noreply.github.com>2020-08-16 21:07:17 +0200
committerGitHub <noreply@github.com>2020-08-16 12:07:17 -0700
commit8800ba999a2b17e5f169a44641c2b6fd0f908f4d (patch)
tree1c390d02160cc65b898f83947d835a558b839397 /scripts
parent74ab3aae01243119be2c2cb5edb0c187c76002f6 (diff)
downloadvcpkg-8800ba999a2b17e5f169a44641c2b6fd0f908f4d.tar.gz
vcpkg-8800ba999a2b17e5f169a44641c2b6fd0f908f4d.zip
[vcpkg_find_acquire_program] add version check for ninja (#12895)
* [vcpkg_find_acquire_program] add version check for ninja * Change VERSION to NINJA_VERSION * Missed VERSION change * some more corrections * add missing PACKAGES parameter * add osx hash Co-authored-by: Wolfgang Stöggl <c72578@yahoo.de> * Remove apt/brew package names Co-authored-by: ras0219 <533828+ras0219@users.noreply.github.com> * move supported around and disable it for freebsd * fix small command hickup which does not matter for ninja Co-authored-by: Wolfgang Stöggl <c72578@yahoo.de> Co-authored-by: ras0219 <533828+ras0219@users.noreply.github.com>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/cmake/vcpkg_find_acquire_program.cmake53
-rw-r--r--scripts/cmake/vcpkg_find_fortran.cmake2
2 files changed, 46 insertions, 9 deletions
diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake
index 8b006990a..7f1f419cd 100644
--- a/scripts/cmake/vcpkg_find_acquire_program.cmake
+++ b/scripts/cmake/vcpkg_find_acquire_program.cmake
@@ -205,22 +205,30 @@ function(vcpkg_find_acquire_program VAR)
set(HASH f73b04e2d9f29d4393fde572dcf3c3f0f6fa27e747e5df292294ab7536ae24c239bf917689d71eb10cc49f6b9a4ace26d7c122ee887d93cc935f268c404e9067)
elseif(VAR MATCHES "NINJA")
set(PROGNAME ninja)
- set(SUBDIR "ninja-1.10.0")
+ set(NINJA_VERSION 1.10.0)
+ set(SUBDIR "ninja-${NINJA_VERSION}")
+ set(_vfa_SUPPORTED ON)
if(CMAKE_HOST_WIN32)
+ set(ARCHIVE "ninja-win-${NINJA_VERSION}.zip")
set(PATHS "${DOWNLOADS}/tools/${SUBDIR}-windows")
list(APPEND PATHS "${DOWNLOADS}/tools/ninja/${SUBDIR}")
+ set(URL "https://github.com/ninja-build/ninja/releases/download/v${NINJA_VERSION}/ninja-win.zip")
+ set(HASH a196e243c53daa1df9d287af658d6d38d6b830b614f2d5704e8c88ffc61f179a533ae71cdb6d0d383d1559d65dacccbaaab270fb2a33aa211e5dba42ff046f97)
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(PATHS "${DOWNLOADS}/tools/${SUBDIR}-osx")
+ set(HASH 619a1924067a0b30fc5f8887f868d3ee5481838d2f0f158d031f7614a2a10b95a73d4a56b658d5d560283ebf809e2e536b968c6c01ff0108075c3f393f5780ba)
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(PATHS "${DOWNLOADS}/tools/${SUBDIR}-linux")
+ set(HASH ffb179ab8ea315167fcc99a8f13286e1363590185b18cf819cc73e09f2a7553790e9dc45fd1ccd0bd1d2dbf543aee3f6c0951cf9ce453a7168ffd2ac873cdd29)
endif()
- set(BREW_PACKAGE_NAME "ninja")
- set(APT_PACKAGE_NAME "ninja-build")
- set(URL "https://github.com/ninja-build/ninja/releases/download/v1.10.0/ninja-win.zip")
- set(ARCHIVE "ninja-win-1.10.0.zip")
- set(HASH a196e243c53daa1df9d287af658d6d38d6b830b614f2d5704e8c88ffc61f179a533ae71cdb6d0d383d1559d65dacccbaaab270fb2a33aa211e5dba42ff046f97)
+ set(VERSION_CMD --version)
elseif(VAR MATCHES "NUGET")
set(PROGNAME nuget)
set(SUBDIR "5.5.1")
@@ -379,10 +387,36 @@ function(vcpkg_find_acquire_program VAR)
message(FATAL "unknown tool ${VAR} -- unable to acquire.")
endif()
+ macro(do_version_check)
+ if(VERSION_CMD)
+ _execute_process(
+ COMMAND ${${VAR}} ${VERSION_CMD}
+ WORKING_DIRECTORY ${DOWNLOADS}
+ 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!")
+ 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)
- find_program(${VAR} ${PROGNAME})
+ 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} ${SCRIPTNAME} PATHS ${PATHS} NO_DEFAULT_PATH)
@@ -456,8 +490,11 @@ function(vcpkg_find_acquire_program VAR)
LOGNAME ${VAR}-tool-post-install
)
endif()
-
+ unset(${VAR} CACHE)
do_find()
+ if(NOT ${VAR})
+ message(FATAL_ERROR "Unable to find ${VAR}")
+ endif()
endif()
set(${VAR} "${${VAR}}" PARENT_SCOPE)
diff --git a/scripts/cmake/vcpkg_find_fortran.cmake b/scripts/cmake/vcpkg_find_fortran.cmake
index e6be2722e..daf63ce72 100644
--- a/scripts/cmake/vcpkg_find_fortran.cmake
+++ b/scripts/cmake/vcpkg_find_fortran.cmake
@@ -35,7 +35,7 @@ function(vcpkg_find_fortran additional_cmake_args_out)
else()
message(FATAL_ERROR "Unknown architecture '${VCPKG_TARGET_ARCHITECTURE}' for MinGW Fortran build!")
endif()
- vcpkg_acquire_msys(MSYS_ROOT "mingw-w64-${MSYS_TARGET}-gcc-fortran")
+ vcpkg_acquire_msys(MSYS_ROOT PACKAGES "mingw-w64-${MSYS_TARGET}-gcc-fortran")
set(MINGW_BIN "${MSYS_ROOT}/${MINGW_PATH}/bin")
vcpkg_add_to_path(PREPEND "${MINGW_BIN}")
list(APPEND ARGS_OUT -DCMAKE_GNUtoMS=ON