summaryrefslogtreecommitdiffstats
path: root/Source/Checks
Commit message (Collapse)AuthorAgeFilesLines
* Extend C++17 feature checks to require std::optionalBrad King2019-08-231-1/+4
|
* Merge topic 'cxx-checks-warning-match'Brad King2019-03-081-1/+1
|\ | | | | | | | | | | | | 4ca5a815f2 C++ feature checks: Match warnings more strictly Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !3075
| * C++ feature checks: Match warnings more strictlyBrad King2019-03-071-1/+1
| | | | | | | | | | | | | | | | Require the word "warning" to appear at the start of a line, after whitespace, or after a `:`. This is the same that CTest launchers use to match warnings. It avoids matching "warning" inside file paths. Fixes: #19019
| * Extend C++17/C++14 feature checks to cover more standard library APIsMathieu Garaud2019-02-272-2/+18
| | | | | | | | | | | | | | Make sure `std::cbegin`, `std::cend`, and `std::size` work in C++17 or C++14 mode before choosing the corresponding standard level for compiling CMake itself. This helps in cases that the compiler is using a standard library too old to support the full standard level chosen.
* | Extend C++17/C++14 feature checks to cover more standard library APIsMathieu Garaud2019-02-272-2/+18
| | | | | | | | | | | | | | Make sure `std::cbegin`, `std::cend`, and `std::size` work in C++17 or C++14 mode before choosing the corresponding standard level for compiling CMake itself. This helps in cases that the compiler is using a standard library too old to support the full standard level chosen.
* | Avoid compiling CMake itself as C++17 with Clang's MSVC ABIZsolt Parragi2019-02-111-0/+13
|/ | | | | | GUID functions in ATL cause compilation errors with this compiler. Add the offending case to our check for C++17 support so that it is not used by default when it does not work.
* C++ feature checks: Filter out libstdc++ sprintf warningsBrad King2018-11-201-0/+2
| | | | | | | | | | | On OpenBSD linking to `libstdc++` with GCC 6.4 always warns: warning: sprintf() is often misused, please use snprintf() These do not affect the availability of C++ features we're checking, so filter them out. Fixes: #18602
* Extend C++17/C++14 feature checks to require unique_ptrBrad King2018-08-014-4/+9
| | | | | | | | When testing compiler modes higher than C++11 for constructs we need, include a check for using `unique_ptr` in that mode. The PGI 18.4 compiler in some environments supports `unique_ptr` in C++11 mode but is broken for C++14 and C++17. Check that `unique_ptr` works in these modes before using one.
* C++ feature checks: Ignore Xcode warningsGregor Jasny2018-06-191-0/+2
|
* Fix misc. typosluz.paz2018-06-041-1/+1
| | | | Found via `codespell` and `grep`
* Revise C++ coding style using clang-format-6.0Kitware Robot2018-06-011-4/+4
| | | | | | | | | | | | Run the `clang-format.bash` script to update all our C and C++ code to a new style defined by `.clang-format`. Use `clang-format` version 6.0. * If you reached this commit for a line in `git blame`, re-run the blame operation starting at the parent of this commit to see older history for the content. * See the parent commit for instructions to rebase a change across this style transition commit.
* Merge topic 'cxx-checks-tolerate-more-warnings'Brad King2018-04-301-0/+3
|\ | | | | | | | | | | | | 2254b72061 C++ feature checks: Filter out warnings caused by local configuration Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !2019
| * C++ feature checks: Filter out warnings caused by local configurationBrad King2018-04-301-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | In some environments the linker produces warnings like warning: directory not found for option warning: object file compiled with -mlong-branch ... These do not affect the availability of C++ features we're checking, so filter them out. Fixes: #17850, #17947
* | ccmake: Check for curses more robustly before enablingBrad King2018-03-213-0/+81
|/ | | | | | | | | | Compute a default for `BUILD_CursesDialog` by building a small test project that uses curses. Disable `ccmake` by default if it fails, and do not search for Curses as part of the main build. This avoids creating FindCurses cache entries when we are not considering ccmake. If `BUILD_CursesDialog` is enabled (e.g. by the user) then warn if curses cannot be found.
* Compile CMake as C++17 if supported by the compilerBrad King2017-12-222-0/+43
| | | | | | | | | | Add a check that a simple source file can compile as C++17 that uses some of the features we need. Do this only when hosted by CMake 3.8 or above because those versions are aware of C++17. Check for unordered_map as we do in bootstrap since commit 375eca7881 (bootstrap: Check support for unordered_map from compiler mode, 2017-11-30). Also maintain the existing C++14 cstdio check.
* Generalize check for C++14 constructsBrad King2017-12-223-33/+36
| | | | | | The check for C++14 and cstdio is a special case of the more general problem of checking that the compiler's C++14 mode supports everything we need. Rename the checks accordingly.
* Simplify CM_FALLTHROUGH implementationBrad King2017-11-304-40/+0
| | | | | | | Use the macro now provided by KWSys instead of using `try_compile` checks. It will no longer consider the `__attribute__((fallthrough))` variant, but compilers that don't have one of the modern attributes shouldn't warn about not using one anyway.
* Use C++11 '= delete' instead of CM_EQ_DELETEBrad King2017-09-282-15/+0
| | | | | We now require C++11 support including `= delete`. Drop use of the old compatibility macro.
* Remove checks for auto_ptr that we no longer needBrad King2017-09-272-19/+0
| | | | We no longer use `auto_ptr` at all, so drop the checks for it.
* C++ feature checks: Filter out warnings caused by user flagsBrad King2017-09-191-0/+2
| | | | | | Filter out `-Winvalid-command-line-argument` warnings from Clang (that can be caused by user-specified flags) so that they do not break our checks for C++ feature availability.
* C++ feature checks: Prepare for multiple check output filtersBrad King2017-09-191-1/+2
|
* Drop now-unused definition of CM_OVERRIDEBrad King2017-09-152-25/+0
|
* Use C++11 nullptrDaniel Pfeifer2017-08-242-15/+0
|
* Merge topic 'cxx11-unordered'Daniel Pfeifer2017-08-233-16/+0
|\ | | | | | | | | | | | | cbcfb79f Use C++11 unordered containers Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !1174
| * Use C++11 unordered containersDaniel Pfeifer2017-08-223-16/+0
| |
* | Fix CM_FALLTHROUGH with -Wunused-parameterBrad King2017-08-223-3/+3
|/ | | | | Fix the test code that we `try_compile` to avoid unused parameter warnings that cause the check to fail.
* C++ feature checks: Improve exclusion of "0 Warning(s)"Brad King2017-06-081-1/+3
| | | | | | | | Simply matching "0 Warning" may match "10 Warning(s)". Instead remove the entire ` 0 Warning(s)` content from the MSBuild output before searching it for warnings. Issue: #16942
* C++ feature checks: Do not match "0 Warning(s)" as a warningWalter Gray2017-06-061-1/+1
| | | | | | | | | The change in commit v3.9.0-rc1~6^2~1 (C++ feature checks: check output for '[Ww]arning', 2017-06-03) accidentally matches `0 Warning(s)` in the output and always thinks a warning exists, thus failing all checks in Visual Studio builds. Fixes: #16942
* Provide and use CM_FALLTHROUGHDaniel Pfeifer2017-06-034-0/+40
|
* C++ feature checks: check output for '[Ww]arning'Daniel Pfeifer2017-06-031-1/+1
|
* Check C++ features even without CMAKE_CXX_STANDARD for CMake itselfBrad King2017-05-191-13/+16
| | | | | | When using `CMake_NO_CXX_STANDARD` a user may still provide `-std=c++11` or similar flags in `CMAKE_CXX_FLAGS`, so we should still check for the available C++ features.
* cmConfigure: provide macros CM_EQ_DELETE and CM_DISABLE_COPYDaniel Pfeifer2017-04-222-0/+15
|
* Add a feature check to test availability of auto_ptrDaniel Pfeifer2016-09-262-0/+19
|
* Check for availability of unique_ptr and make_unique when building CMakeBrad King2016-09-163-0/+17
| | | | Some code paths may find these useful if available.
* CM_OVERRIDE: fix feature test for clangDaniel Pfeifer2016-06-291-0/+2
| | | | | | | | Clang refuses to default initialize an instance of a class that does not have a default constructor. Fix the check by adding default constructors. Don't use brace initialization like it is proposed in the error message. We want to test the override support independent from the support for brace initialization.
* cxx features: add check for nullptrDaniel Pfeifer2016-06-272-0/+15
|
* CM_OVERRIDE: mark destructor overridden in the feature test.Daniel Pfeifer2016-06-271-0/+2
| | | | | | | | | | | | This is important for two reasons: 1. A compiler might warn about a class that has a virtual member function but no virtual destructor. We don't want to treat the feature as incomplete in this case. 2. MSVC10 supports the override identifier except on destructors. In this case, the feature really is incomplete and we want to detect it as such.
* cxx features: add check for overrideDaniel Pfeifer2016-06-272-0/+21
|
* Use <unordered_set> where availableDaniel Pfeifer2016-06-272-0/+8
|
* Make C++ feature checks extensibleDaniel Pfeifer2016-06-273-25/+36
| | | | | | Turn the feature check for cxx11_unordered_map into a function such that we can use it for other features as well. Drop the 11 suffix, as we may want to check features from other standards.
* Revise C++ coding style using clang-formatKitware Robot2016-05-163-3/+10
| | | | | | | | | | | | | Run the `Utilities/Scripts/clang-format.bash` script to update all our C++ code to a new style defined by `.clang-format`. Use `clang-format` version 3.8. * If you reached this commit for a line in `git blame`, re-run the blame operation starting at the parent of this commit to see older history for the content. * See the parent commit for instructions to rebase a change across this style transition commit.
* Avoid using C11 to build CMake if _Thread_local support is brokenRaphael Kubo da Costa2015-09-152-0/+35
| | | | | | | | | | | | | | | | | Support for C11's _Thread_local was introduced in GCC in the 4.9 series, even though we make the C11 compiler flags available in CMake with GCC >= 4.6. FreeBSD's runetype.h uses _Thread_local, which causes CMake's own build to fail when using GCC < 4.9 and -std=gnu11: /usr/include/runetype.h:92:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'const' extern _Thread_local const _RuneLocale *_ThreadRuneLocale; Add a test for _Thread_local support and only build CMake itself with C11 support if it works. Bug: http://www.cmake.org/Bug/view.php?id=15741
* Use std::unordered_map instead of hash_map where available.Stephen Kelly2015-05-182-0/+31
|
* Avoid using C++14 to build CMake if cstdio breaksBrad King2015-05-082-0/+35
The GNU 4.8 standard library's cstdio header is not aware that C++14 honors C11's removal of "gets" from stdio.h and results in an error: /.../include/c++/4.8/cstdio:120:11: error: no member named 'gets' in the global namespace Detect this problematic case and default to using C++11 instead of C++14 for building CMake itself.