Add [SPDX][1] licensing/copyright tags to the `get_cpm.cmake` script,
so that anybody that copies the `get_cpm.cmake` script into their repo
(following the instructions in the README.md)
will automatically comply with CPM's MIT license.
[1]: https://spdx.dev/
* add CMake version as workflow matrix parameter
* change system test behaviour based on specified CMake version
* use explicit version strings
* set CMake version for both test steps
* exclude windows-2022, cmake 3.16 combination
Repositions the "Adding CPM" section higher in the Readme to increase incentive to try it out and make it easier to find for updating CPM in existing projects.
* add system property for cpm_add_subdirectory
* add test case for system property
* lock CMake version in test workflow
* refactor to make SYSTEM an extra config option and update tests
* remove old comment change
* use consistent CMake version and extension for all workflows
* make warning more specific and try to trigger on windows
* another attempt to trigger warning on MSVC
* update readme
* simplify test case and use git tag
* add SYSTEM option to .cmake-format
* forward system arg for source overrides
* enable system implicitly for the single argument syntax
* Use SYSTEM option for FetchContent and add_subdirectory (#441)
* Use SYSTEM option for FetchContent and add_subdirectory
* Add SYSTEM option to syntax and doku
* Update CPM.cmake
* Update .cmake-format
---------
Co-authored-by: Lars Melchior <TheLartians@users.noreply.github.com>
---------
Co-authored-by: Claus Klein <claus.klein@arcormail.de>
* Optimized multi-threading.
* Remove old multi-threading implementation.
* Release files instead of removing.
* Lock before choosing to check cache or download.
* Unlock directly after verifying directory exists.
* Add file locking to support parallel runs.
* Fixed formatting.
* Prevent double locking file.
* Fix SegFault from test 2.
* Remove unnecessary debugging messages.
* Lock the package directory rather than the cache directory.
Only synchronize if CPM_SOURCE_CACHE is defined.
* Lock the version specific cache entry rather than the package specific entry.
* Remove unnecessary arguments in conditional statements.
* Change back to locking entire cache directory.
* Only check CPM_HAS_CACHE_LOCK.
* Lock on a per-package basis rather than the entire cache.
* Clean up the locked file.
* Unlock then remove to fix Windows.
* Specify use of cmake.lock as the lock file.
* - Changed CPM_HAS_CACHE_LOCK to ${CPM_ARGS_NAME}_CPM_HAS_CACHE_LOCK.
- Removed redundant variable initialization.
* Add unit test.
* Actually test if resulting git cache is clean in unit test.
* - Added comments
- Fixed formatting
- Removed unnecessary imports
* convert parallelism test to integration test
* remove comment
* - Removed now unnecessary variable.
- Only delete file instead of unlocking it then deleting it.
* Forgot to change variable name.
* Add similar changes to the missed section.
* Fixed formatting.
* Unlock the file, but do not delete it.
* Only unlock the file if it exists.
* Changed cache.cmake test to ignore non-directory entries.
* Integration test lib make_project:
* keyword args
* 'name' arg to allow multiple projects from the same test
* - Moved checks to function.
- Fixed small grammatical errors.
* - Fix formatting
* Switch to snake case.
---------
Co-authored-by: Lars Melchior <TheLartians@users.noreply.github.com>
Co-authored-by: Lars Melchior <lars.melchior@gmail.com>
Co-authored-by: Borislav Stanimirov <b.stanimirov@abv.bg>
* get_cpm: Recover from failed download
If the download fails during the cmake config step
an empty `CPM_<version>.cmake` file is created.
So far the script only checks the files existence,
so there is no second try until the empty file is deleted manually.
This adds a check if the file is empty
and resumes the download on next config if it is.
* More descriptive function name
* Small helper function for logging :
This PR add an helper function only when `message(STATUS ...)` as the other are `backtracing` and adding the helper function add on stack.
It should fix#328#342 with a few line of code.
* Formatting
* Instead of spdlog's bundled fmt re-use it from CPM.cmake
* Add comment about re-using fmt for spdlog
* Update examples/spdlog/CMakeLists.txt
Co-authored-by: Lars Melchior <TheLartians@users.noreply.github.com>
* run cmake-format
* disable cmake-format around code block
Co-authored-by: Lars Melchior <TheLartians@users.noreply.github.com>
* Expand absolute path later in get_cpm.cmake
Supports expanding tildes in the environment.
* Apply cmake-format to get_cpm.cmake
* Use .cmake-format file
* Timestamps for URL downloads match the download time
By enabling CMake policy 135 we ensure that extracted files
timestamp match that of the download time, instead of when the
archive is created. This makes sure that if the URL changes to
an older version we still rebuild everything as the timestamp
stays newer.
* Introduce CPM_SET_RECOMMENDED_CMAKE_POLICIES
Enabling CPM_SET_RECOMMENDED_CMAKE_POLICIES will establish defaults
for all CMake policies so that both CPM and added projects
operate inline with CPM recommended best practices.
* Fix style issues found by ci
* Update README.md
Co-authored-by: Lars Melchior <TheLartians@users.noreply.github.com>
* Update cmake/CPM.cmake
Co-authored-by: Lars Melchior <TheLartians@users.noreply.github.com>
* Set policies when CPM.cmake is included
* CPM_SET_RECOMMENDED_CMAKE_POLICIES default is ON
* Correct failing CI tests
* CPM.cmake always sets policies to on
Co-authored-by: Lars Melchior <TheLartians@users.noreply.github.com>
* CPM_DIRECTORY always stores absolute non symlink paths
When CPM is brought into a project via downloading it will be placed
in the build directory. When the build directory is a symlink the
CPM_DIRECTORY value will hold the symlink value. This means that
trying to run CMake via the real build directory will cause CPM
to fail since it considers the current CMAKE_CURRENT_LIST_DIR
to be different and will early exit.
This resolves the issue be always getting CMake to resolve symlinks
before comparing paths for CPM_DIRECTORY.
* Refactor logic based on PR review
* Fixed: Deleted SOURCE_DIR directory would abort just after git stash save --quiet;--include-untracked
* Fixed: Review comments
* Added: Integration test for deleted SOURCE_DIR with FetchContent
* Fixed: Review comments
* Fixed: Review comments
Klogg used to vendor all external dependencies, and now we switched to CPM, and this makes using local dependencies and packaging much easier. Thanks for all you effort!
* Override FetchContent paramers, fixes#281
* add check to verify that dependency is cached
* update test comment
* rename test file and class
* update test indentation
* Add per project CPM_DOWNLOAD controls
Introduces support for `CPM_<PACKAGE>_DOWNLOAD` variable ( and env )
which allows finer grained control.
* Address PR feedback on API names