1. 11 Feb, 2021 5 commits
  2. 10 Feb, 2021 2 commits
  3. 09 Feb, 2021 2 commits
  4. 08 Feb, 2021 7 commits
  5. 07 Feb, 2021 1 commit
  6. 05 Feb, 2021 1 commit
    • Craig Scott's avatar
      FindGit: Cache the version more effectively · c99dfd7b
      Craig Scott authored
      In 315a200f (FindGit: Cache the GIT_EXECUTABLE version for the
      current run, 2021-01-20), the GIT_VERSION_STRING was meant to be
      cached after the first time it was computed for a given GIT_EXECUTABLE
      location. That logic assumed GIT_VERSION_STRING would be visible in
      the current scope, but it might not be. The global property alone is
      enough to check whether the version has been determined previously,
      so don't switch the logic based on whether GIT_VERSION_STRING is
      defined or not.
      Relates: #21703
  7. 04 Feb, 2021 3 commits
    • Craig Scott's avatar
      FetchContent: Invoke steps directly and avoid a separate sub-build · 17e5516e
      Craig Scott authored
      The cost of setting up and executing a separate sub-build to do the
      download, update and patch steps required for FetchContent population
      can be significant with some platforms and CMake generators. Avoid the
      sub-build altogether by invoking the step scripts directly.
      Previously, if no generator was set (e.g. population was being done in
      script mode), a generator needed to be available on the default PATH.
      Since we no longer use a sub-build, this restriction is also now gone.
      Fixes: #21703
    • Craig Scott's avatar
      ExternalProject: Refactor pre-configure steps to support no-target uses · 4f3d1abb
      Craig Scott authored
      The mkdir, download, update and patch steps are used by
      FetchContent during the configure phase of the main build. Because
      these steps need a target, this has so far required a sub-build to be
      set up. The changes here factor out the preparation of the scripts
      from the creation of the targets, allowing future work to leverage these
      steps without a sub-build (see #21703).
      As part of the refactoring, some rationalisation of the stamp files,
      repository info files and script names was done to make things more
      consistent between download methods and step implementations.
      Every download method now records its own specific repository info
      in a file and that file is a dependency of the download step. The source
      directory is also written to that file, so if the SOURCE_DIR changes, the
      download will be retriggered (the existing implementation fails in this
      scenario). Each download method now also has just one driver script
      that implements the whole step (it may pull in other scripts to do its
      task though). The patch step gained support for USES_TERMINAL as
      a result of generalising the implementation for custom commands.
      Fixes: #21748
    • Robert Maynard's avatar
      CMakeDetermineCompilerABI: Parse library arch from versioned paths · 657fc3a9
      Robert Maynard authored and Brad King's avatar Brad King committed
      Teach CMake how to extract `CMAKE_<LANG>_LIBRARY_ARCHITECTURE` from
      versioned paths such as `/usr/lib/gcc/x86_64-linux-gnu/9`. These kind of
      paths are generated by NVHPC compilers.
  8. 03 Feb, 2021 3 commits
  9. 01 Feb, 2021 1 commit
  10. 29 Jan, 2021 1 commit
    • Craig Scott's avatar
      ExternalProject: Avoid scanning docs for keywords, use include_guard() · 23aab9ec
      Craig Scott authored
      The previous implementation was scanning the documentation in
      the file at runtime to determine the set of supported keywords for
      each public function. This was fragile, made it difficult to restructure
      the documentation and was sometimes observable in runtime
      performance measurements. Change to a more conventional
      approach where supported keywords are explicitly listed in the
      The internal _ExternalProject_SELF variable is no longer needed.
      CMake now provides CMAKE_CURRENT_FUNCTION_LIST_DIR which
      can be used for the same purpose and avoids having to set a
      variable when the module is read. This also removes the
      requirement that the module must be included by the current or a
      parent scope. It is now enough that the module has been included
      once somewhere before calling any of its functions. 
      The above changes combined mean that the module can now use
      include_guard() and avoid having to re-parse the very long file every
  11. 28 Jan, 2021 9 commits
  12. 27 Jan, 2021 4 commits
  13. 26 Jan, 2021 1 commit