Since 3.19, CMake generates a deprecation warning when using a minimum
version less than 2.8.12. This eliminates those warnings generated
during tests, which are typically hidden from the user and developer but
are being generated nonetheless.
The ExternalProject module cannot be implemented in the Xcode "new build
system" without using CMP0114's NEW behavior. When configuring for that
build system, warn if the policy is not set to NEW and use NEW behavior
anyway.
The purpose of the `update` step is to run an update on each build
(subject to `UPDATE_DISCONNECTED`). This is done for version-controlled
source directories. We should do it for a custom `UPDATE_COMMAND` too.
In particular, when `UPDATE_DISCONNECTED` is used we expect the
`skip-update` step to exist.
This prepares the numberous tests that occur in the ExternalProjectUpdate
test. The tests were passing previously because a fresh build was not performed.
Tests are added for UPDATE_COMMAND to ensure it is working properly. Testing
infrastructure is added along with tests for Git, but tests for other version
control systems could easily be added in the future.