1. 24 Feb, 2021 2 commits
  2. 23 Feb, 2021 1 commit
    • Brad King's avatar
      Tests: Update for upstream ninja change to write status on stderr · d33c2c93
      Brad King authored
      Upstream ninja commit `ad3d29fb53` (Put builder output through status
      interface) from ninja PR 1899 changed the status output from stdout to
      stderr.  In particular, `ninja: no work to do` is now printed on stderr.
      Update our RunCMake tests to accept this difference.
      A few RunCMake test cases check for `ninja: no work to do`.  For those,
      move the message to stdout using `RunCMake_TEST_OUTPUT_MERGE`.  The rest
      of the test cases do not care about the message, so remove it from the
      actual stderr content before comparing against that expected.
  3. 22 Feb, 2021 6 commits
    • Brad King's avatar
      Tests: Suppress failures on macOS arm64 due to separate Xcode signing phase · 1c15eb39
      Brad King authored
      Some tests fail because Xcode runs `POST_BUILD` commands before signing
      the binaries they run.  Tell the linker to perform ad-hoc codesign even
      though Xcode normally tells it not to.
      Other tests fail because `install_name_tool` does not revise ad-hoc
      signatures without the codesign `linker-signed` flag.  Add that flag
      ourselves where needed by our tests.
      For now these changes help our test suite pass so we can use it to cover
      everything else.  Both of these cases may need further investigation to
      update CMake to help projects in general.
      Issue: #21845, #21854
    • Brad King's avatar
    • Brad King's avatar
      Tests: Remove explicit no-signing marks from BundleTest · 8b22d9b3
      Brad King authored
      These were added by commit e29a92f5 (Xcode: Make BundleTests
      compatible with Xcode 11, 2019-09-01, v3.16.0-rc1~158^2).  The
      real problem is that the `.app` is constructed with text files
      under the `.app/Contents/MacOS/` folder.  Move those, and drop
      the special no-signing configuration.
    • Brad King's avatar
    • Daan De Meyer's avatar
      Tests: Fix ExternalProject CONFIGURE_HANDLED_BY_BUILD on 1s filesystems · 74fe16a2
      Daan De Meyer authored
      Following commit 7155e358 (ExternalProject: Add CONFIGURE_HANDLED_BY_BUILD
      option, 2020-12-16, v3.20.0-rc1~168^2), modify the CONFIGURE_HANDLED_BY_BUILD
      test to sleep 1.125 seconds to make sure the file timestamp is always
      updated regardless of the resolution of the underlying filesystem.
      Fixes: #21830
    • Craig Scott's avatar
      FetchContent: Don't update timestamps if files don't change · b0da6712
      Craig Scott authored
      The refactoring in 17e5516e (FetchContent: Invoke steps directly and
      avoid a separate sub-build, 2021-01-29) uses a different way of writing
      out the step scripts and updating time stamps when steps are executed.
      That inadvertently always wrote out the scripts for custom commands,
      even when the contents didn't change. This caused their timestamp to
      always be updated, resulting in those steps always being seen as
      out-of-date and needing to be re-executed.
      The way timestamps were checked to determine whether to re-execute
      a step also did not adequately account for file systems which only have
      second-resolution timestamps. The IS_NEWER_THAN if condition also
      returns true when timestamps are the same, so one needs to use the
      negative form to get a true "is newer than" test.
      ExternalProject is not susceptible to this problem because it uses
      file(GENERATE) to write out the script files and that only updates the file's
      timestamp if the contents change. It also mostly leaves timestamp
      checking to the build tool.
  4. 19 Feb, 2021 1 commit
  5. 18 Feb, 2021 1 commit
  6. 17 Feb, 2021 1 commit
    • Craig Scott's avatar
      FetchContent: Restore patch command support · bd876f38
      Craig Scott authored
      The refactoring in 17e5516e (FetchContent: Invoke steps directly and
      avoid a separate sub-build, 2021-01-29) contained a typo which resulted
      in any PATCH_COMMAND being ignored. Fix the typo and add a test case
      that would have caught the regression.
  7. 15 Feb, 2021 1 commit
    • Raul Tambre's avatar
      Tests: Fake home directory even if not set · 905d6639
      Raul Tambre authored
      In some cases ENV{HOME} might not be set, e.g. when run through a systemd
      service without User set.
      We should still to fake HOME in such cases as some tests (e.g. FindPackageTest)
      rely on it. We need only avoid setting ENV{CTEST_REAL_HOME} in such cases. Its
      possible absence seems to already be handled by tests.
  8. 11 Feb, 2021 1 commit
  9. 10 Feb, 2021 1 commit
    • Brad King's avatar
      Add deprecation warnings for policies CMP0081 and below · 58ea0d12
      Brad King authored
      The OLD behaviors of all policies are deprecated, but only by
      documentation.  Add an explicit deprecation diagnostic for policies
      introduced in CMake 3.13 and below to encourage projects to port
      away from setting policies to OLD.
  10. 09 Feb, 2021 1 commit
  11. 08 Feb, 2021 1 commit
    • Craig Scott's avatar
      IOS_INSTALL_COMBINED: Support Xcode 12 (command line only) · 0110aa01
      Craig Scott authored
      Xcode 12 doesn't allow nested builds within the same build directory.
      That means we can no longer do an install by building the install target
      when IOS_INSTALL_COMBINED is true. We can, however, still do an install
      by running the cmake_install.cmake script or executing cmake --install,
      since there is no outer build and therefore the associated SDK can be
      built as a sub-build.
      The non-build methods previously didn't work when
      IOS_INSTALL_COMBINED was true because the generated install script
      and the CMakeIOSInstallCombined script both made certain assumptions
      that relied on being part of a build. Those assumptions are now
      removed. A side-effect of this work is that cpack now also works from the
      command line when IOS_INSTALL_COMBINED is true.
      Relates: #21282
      Fixes: #20023
  12. 07 Feb, 2021 1 commit
  13. 05 Feb, 2021 2 commits
  14. 04 Feb, 2021 8 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
      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.
    • Sam Freed's avatar
    • Sam Freed's avatar
      Tests: Update RunCMake/CommandLine BuildDir · 69a5cf23
      Sam Freed authored
    • Sam Freed's avatar
      Tests: Add test preset tests · b500935b
      Sam Freed authored
    • Sam Freed's avatar
      Tests: Add build preset tests · 74a86566
      Sam Freed authored
    • Sam Freed's avatar
      Tests: Factor out RunCMake.CMakePresets schema validation · 56751c83
      Sam Freed authored
      Make it available to similar tests.  Also fix whitespace
      in generated error message.
  15. 03 Feb, 2021 4 commits
  16. 02 Feb, 2021 5 commits
  17. 01 Feb, 2021 2 commits
  18. 31 Jan, 2021 1 commit